Little help please: Make viewport scroll with keypress
-
@d-healey In the keypresscallback
-
@ulrik Yeah that's what I'm doing in my animation.
You can see in the code I only add one or subtract one, never three.
-
@d-healey Yeah, I know but...
HiseSnippet 1683.3ocsX0uTabCD+NfKM1sIsoSe.T8z+3bvXtiuSHD9vPR7jPhGLkzNdXRE2I6SCmkbuSFhaF5zGj9vzGo7FztRmtOLwjPoM7G9jVse7aWsZ0JZEw8Hww7HCyRGNZ.wv7qrZOhIBZDfoLil6ZXdWq8wwBRDJgzNiFfiiI9FllS+TIAyRyXn968atCNDy7H4jLLNhS8Huf1mJxo1ZqmSCCeB1mbHseAtWZqldbVCdHeHfmosbLFf8NE2i7RrjsorLLu0d9TAOps.KHwFlyrC2eT6.94rD9OhFSOIjHm3ZzFTTB4mvC8kHVR0nQ.MzuUpeGa.ZoUdTX5jnv2YsO0mlQOOZ7MpEP4RTLdXN03va5wfmaQ34T.dS.RlEfzLIP5dVs8hnCD4qHwyWZ0jAaNcwPXuHTR30XpUKY0fCbvD06iOk7jHXRlD1q33TCA+Tc8xkgPer.cvqd8ad1dMe5yNDsAZw0Vu.41s1twd.0UyXNjB+rApSklBRejakZnjQKjMZwrQKkMZ4rQqjMZ0rQqkM5AYibcxGlaE2by3laG2bC4tbkiyv5Y3HzQTx4C3QBW.zoQkdDQCd+AbFLwtRFGUpt9DDbgOofKTo5XlTumgYjvq1pEYRJew408wBbcJ3Owf7xH9kVOl.ZHfP6EH.OWxP8PBqmH.cejcgsyYy2DqhlqvD.uWVgsfzcwA7gBJiX2cHySP4L6dUK+txkjdEFfhHfFK8iWv8vg6vGx7iskIRJFhv9zgwE3xtxI7HeRzApEjNYoxk5xiP1TfKm0QTziRXN2e09Ar1ryVsbIv1YFuCj2R+HNXsLC+ZpuHvFHjyIjTTBrdIZWjcJaGgCGRrqh1XCDErUoR8jwgjZQ14NgDWIDqTU5CkHgwjKydxm35mSEAaGNH.WPAmzKU7ZEb2.9YPAVosQahbq6fdHxo9JIVPhzd06BULOPFjI9GP7DXVuPhMtlNPW8Z3Qu653UKncqqxhcvcbNtFB2wE9cY4fEOFF8tF7HFIpM82HOTCIHfmH7C63VCAaWxeO9Bk1unb4qeDSPdq3RwrK4cEhYqJgOn74mGoJAvfaNzoMR8jlPlmi0gpxF5U2OBe91gzdLh+g.m1R1qgT9KjY45j3zvAGm5J+dgiy79JgjtBHkVsWcQ4KlzIpmSF0JBJa2.GFdBbqV9oJxYPMfrSVLx4JWqvQGsqJ8K49qh+59jXkE.MHiAU7fvGbZZ3fJ5SJSJU3wHGUtcpQlat0k.VkDi9j51GtGqRgygrg8apKKcEGbKeE33Q4xNGxcLHM6rJHk3pYAiu+ChFZbnnFmRMkeURlZIu.Huk3amd.Ap+FyCI0GDAE3Fi+KjEjle9R+LeHBpK0iKPBNJhHFFwPhngD4pElt9j2m2mOLl7o1joSNroqcdld+eerHnd2PNORuuLBMeVX3YpB9Pr79nhgbomfz+UtzGTfAknnjYalHYGk8NFN9Lm634XdgTuSI9IgZoFGOZeVZnKaohQacZUgsoHx.40JIqB6Fx3WZ.BwYujKHuhYqBRkunL5xK0s6DWSdiZDOLjDMwkkcXF8wDzFREOgDUKIrmwHz1038xYc08xUrUSujK3KvHm0jQEuZ.gcUMfZn6J.56aJMp.VEpt99VcWeD+zNLLn9x19x5TwPA7h8ba7uVIKbYk79MM9wl6BYNxdQ0vCf7.RjfJiFl6RNCZrOoyzRV6RhOUvGnvutqFCyu3Z6AuM2vOdqQ4S1cqyk2dmQ3uh1JoQmLJ+RvVPsJX6eGbzgAP5JCBp4J3G1Rh9LDc6DDcGqBmZUf4tEoLFdLLFUbx33AU.O25OmJgkA3HvXErZQOEJLvOOs7..zu1Z6vPTNAiBxU9Zu4cEwu+3W+uG+TkHLL+cqjNpuS4jF70eWT+cI82k0eWQ+cU820zeef9qqS5fTM5lpR2Tc5lpT2kMfZpu.ZrEx6lBKuituJ.cKK4Euv6I+f2JAuRi6OLDKF+oax2qpW.pAL16kjuIhESEiJdF3+s2yccg38rZQEdASFiSMALJKY7Y.i5WAeGq851E58KGfyX8je5yySdMRdtQO3VuHJjPa8xg8aCM84Q.qyfikxZvlxyX54Nx4xHPaByWM4ug+zK5JmapWzMcQi9XHY+MdIkGkuy91JJ.lXp+ECkr1WNGkUT0xxotiQe3I+uwyS59yAEvmrLKbCjYwafLKcCjY4afLqbCjY0afLq8QkQ9eaY6gBd+jiC.gV6otWxzbOFFxrTYgF+C.LVjD7
that's why I commented on it :)
-
@ulrik But it works in my snippet without returning true...
-
@d-healey ok
-
@ulrik I'll have a glass of whatever you're having :clinking_beer_mugs:
-
@d-healey You should always return true in a keyPressCB, Chris recommendations :)
Or troubles are knocking at the door... -
@ustk Aha well that's different, in that case I shall do it.
-
@d-healey Is there a particular reason you aren't actually using a child panel paradigm here? (even if not relevant to the problem described)
-
@d-healey the first and most simplistic way is this:
HiseSnippet 1741.3ocsXstTabCEdWfMM1sIsoSe.T8zerNXb7x8DBgKFRhm.AOXJoY7vjJ1U1qFVK4tqLD2LoSeP5CSee5exaP6QR6MC1ITZC+vqtbt7c9zQGIQyPtKIJhGZXV3ng8IFlekUqgLgeceLkYzXGCy6ZsONRPBQ5g1dXebTDwyvzb5mIGvrvLFp+9vFaiCvLWR1PFFGyotj8n8nhrQat4KnAAOE6QNh1KmzKtYCWNqNOfO.vyzV0L5icOC2k7RrTrorLLu0tdTAOrk.KHQFlyrM2aXKe9ELs7GSinmFPjcbLZAFRO7S4AdRDKG0ntOMvqYRbGY.VoYFKLslE9Nq8odzzwyXiuQMAJSi77g4TiBuoGAdN4gWsbvaLPxLGjlQCo6Y0xMj1WjMiDOeoUCFr3zACzddnnk0Xp+pfUcNHASTsG9LxSCgNoZXubsZUPvOkWqXQf5iDnCO3Uu44613YO+Hz5nEVcsbC2p4V02EFckTgCnvOqiZWpgfzC4TpBR2Z9zVKj1ZwzVKk1Z4zVqj1Z0zVOLskSsrlYdwIyMNY9wIyQNKU5jTrdNNDcLkbQednvA.cBqzkHpy60myfN1kRknT40Fihy+IUb9RkGwkwqYXFIXxdMuPR8y2upGVfqRg3IBzWx3WZ9HBXAeBsqu.hbo.UCHrtBez8Q14VNmMaQrLZtbcFAudzNcdtxXf2FwO.j0SXKUOknxONXoqfslvNGwg7ABJiX2Y.yUP4L6tkK9thEjNDC9Q3Sij1YOtKNXa9.lWjsLmTIPH1iNHJmT1kNkG5QBOTMgjuJTrPGdHxlBRUaMDE8XsvYTWLk.yM6rkKV.7cpyaCaAneDtpRpieE0S3aCCjIIjeU.7dAZGjchXGiCFP.RZ80QTvWEJzUxC5xZ1YAgDW5AKUVFCEHAQjKKt9ST0KnB+sB56iyYfS6lndkbgqO+bnVsz2nMPNUqgdDpV0k0dPhztU6.EeOTRxDuCItBLqa.wFWIlnKeMhn2cchp4iCqI4w1310NoBB21A9cIYiENAZ8t57PFIrE8WIOJFR.gqU9QscpffkK4um7dk0eewhWeFSPdq3Rb1khtbb1JR3CF+AO.oplvfCghSaj1IIgLKGqMUkMzspWH9hsBncYDui.IskhWAohWHyxolNngMQ0pph64OIM5KEP5HfTZ0Z06KJiwqri5EjgMCgS.piCBNENfLaWE4bnbR5NKF4BUnkaqSbnJiK45qR9pdjHkG.KH4fRt.8A6lFzuT7NkwkJ7DTMUtchSlat0j.VkDi9j11CNRrTt8grA8ZDWgaBabKNAb73LcmC4LBjlcVEjzgZJY78WgMhwgZznjQSjWljgf+fvfGDbbyQlPqiqOjPS7jzpjAJVHjHFDxPhvAj0F+R397AQjO05Gc7LRbYwyiWZ2GK7q1IfyCio7gnGjFgoEruOJOapKYdkZFHsAz81PqQakeNA1QLmynoMtAT2yHdZ1SRQiRfmmm8FGOoK2kx7gj9xSJzyBY+JdqHr4qU8COXu818vhTV.bFBJgsxVRnduUQZAxiOP84QuFhEXPfHrycd3bN53N6nK0QmmCcaxinRa9Z3DTo9ffPhyD9KE.b1K4BxALak2AMPWdpNcF6bxaAHwNIbrSKuUb3GSQaHm+TRXEcRPpfvUEG89mVS99m4udrq9RI4DjyZvnhC5SXS5RyFw2jAtq5TwnBDUnto52FeSUhWBUaP8jWUMk4MT.O+6DL9Waj4urQ9vFF+Xicf7Y48migG.49jPAUxFl6PNGdLh91zEr1gDclf2Wg+3ahYX9EW6H3sYN9IaNLqyNadg7ZBoC7mgapubV5H+r+l5T2swgG4CahX.olYfeXSI5SQzs0H5NV4pgn.ycyOxH3wvXX9NihGTN7bq+XJsH8wgfyx407QJTlheQRwJ.nes0VAAnrALxoWwq8h2D3ue+W9uyepBWFl+lk9U.2on9QIweWH96hweWJ96xweWI96pweeX7WmZIMRrnShIcRroShQcVx.pvuGT7Ax6lBKuLPOEAcKK4I7vafux66fWVx8FDfEi9bS4arim.pALxa7juiiAEtFleOv+auA85Bw6Y0jJb8GOFmZLXTVx3y.Fie49cr1sSG3RlY.bFqm9Seddltg9cMcgyfCoPBs0KGzqEb6RWB3cFrsTVC1TtGKteMYeICzhv7Tc9a3u3Icj8MimzIYRidXHY+Mt5xix+2.2VMBfIl5eKRAq8k8QoEUsrpUslQOpG8MttxveNn.930Y9afNKbCzYwafNKcCzY4afNqbCzY0OpNx+CQaMPv6o2N.CzbW04Rll6xvPlkJKz3e.sU1ehB
Now the slowly shifting position isn't particularly nice visually speaking
It would be better if it can stick to the bottom when going down and oppositely when going up... -
@ustk said in Little help please: Make viewport scroll with keypress:
@d-healey Is there a particular reason you aren't actually using a child panel paradigm here? (even if not relevant to the problem described)
What I'm doing isn't dynamic so a child panel has no advantage for me and would just be more complicated.
-
@ustk said in Little help please: Make viewport scroll with keypress:
@d-healey the first and most simplistic way is this:
Now the slowly shifting position isn't particularly nice visually speaking
It would be better if it can stick to the bottom when going down and oppositely when going up...Yeah that implementation I already had :)
-
@d-healey I was sure you came to this too :)
-
@d-healey A bit better but it's not ideal
HiseSnippet 2001.3ocsXstaabbEdWYuFgLwoIE4AXJQ9wxHRpckrjbrrikDkTrPjrIDUUZfff6ncGRNvKmgc2gTV0PEEnuF4G4gn+u8EnuK8Mn8blYuQJJYUgF9Ctyky0u4bNykNwx.VRhL1xtxwWNhYY+YNcuTnFzd.kKr1eGK6O24PZhhESLCs8kinIIrPKa6G783.1Udnk92+9kaSinh.VwPVVmH4ArC3C4phQ6r4Ovih1iFxNlOrD0OYy8Cjh1xH4Xvddfim0HZv6n8Yulhjsfik8i1MjqjwcUTEKwx9gaKCur6.4EBC8mvS3mGwvN9VcAAYFdOYTHZw3nVsGviB6j42IVfT5TfBOvfBekyg7Pd93EnwWnmfTvQY7vdgoMuGLk44W177JYdywjrKYROzXReoS2fX9HUwLn87oN6KfEmdT.1KaJFZsV34elSaIPgP0ZH8cr8hgN4b3tlmWCB7W8MpVEf9DE4n27iu8U6t+2+piIufrxS2nzvc6rU6cgQWOm3HN72KHmVaeEaHwuVCho0x4sVIu0SxasZdq0xasddqml25aya46UzrPK9EpwuPO9EJxe0ZmkaqSnwjS3rKFIiU9fQmgJ8Yp1xgijBniasbJpUei4v3xeTFWtV8oTY5ZFUvhtYsVlHj+x8aERUzVbveR.9QDel4SXfDFv38Gn.OGInUDSzWMf7MD2RKmKVrHVmzrTGvdgeyJyNPDu5H4XEWvb6MVDn3Rga+5U+P0JniQAqQMfmftxAx.Zz1xwhvDWLVRSPLMjONoDUt0NWFGxhOROA5mUpVomLl3xAp71fvIO2PbgKm5JvbKtX8pU.cmq7SgPW9s3iMxU7OxCUCbgAJnDhKp.ZuBuGwMirSnQiYt0Iu3EDNnqJU5i3fobjagSf1kYvZ0QenBKJgMK4lOIstfqFrUznAzRB379Yr2nj6NPNApwh5l7RheKOxyHdsVynAzR62pGTz7HDjYgGwBTTQ+HlKsQJPW+N3Qe3t3UKm5V2jFOkdp2YMHzS8g+WEarxYPqOzVFKXwc4+Y1yRMI.vML+rS8aPfkK7+ytRK8qpV8tiXJ16UyfYy3ckvr0QyGD9RKQzUADvlGogMnbxBHKhwNkqiF52JLldwVQ79BV3w.ktH4MHZ+Ehr78LNMj630R62KeVt2WKh0SAgz50pqph930xn9A1kchgJ2soQQmCarUjUwl.kAxyrDrKztVoTmTWE8Kb8USeqPVhVCfDPLnV..eP1z3Q0RyTlWnv2Q7zw1YJoYyMPCVGDS9nxND1JqVo7Pw3g6mVY5FRbqdC1wyK3sIweJSZwE0ljwUyAie20PiT6POZR1nYziAYD3G3FxnnS5L0DFdBF.AzrPDVQDnZkXlZbrfnhGy1X9KgGJGmv9Xqe74iHokEmjtzdHUMnUuHoLNExujrTtG9Jc4b.l9FRYzzTx7Z0LHFAX58RCGmp0yYPFQS+oCaBh3AuiEZPODhlF.mTF8lGNYJ2ki7wrQ3NElYgn+qL6m.YecaezaN3fcOBZWreXHuWOi2A18TvaY2tYwV0kGGkLWDA6HQxv9hEXd360KAQ3lQjIliZoiv1KRRuU0szMoN.sAGYBLYGYBG02OggGAvw6HJIwqoOIQRtfwfjVVHrsTDMtOC26CPLjB7LWvBBoVhBP8ZYVWj7heB2yCbT2qYoKUZO75aP.C3bFv.PcDdN5LYnjiPY3CkltKxfdNDd.TmJiLoLRlfRIlMjNx0apyOzDJWiFZCspfMaA.VCIEfk9rGSAOvQPPQBDdU04rZEwhGg6YcNHz5efjlwQwsww52MgQA+4bnuZCxUWmetXxAnHBZPBaPlTHB2I.yA3Roant0bY23lbwgbA3OhCouuAANhitK9E6aR.fHILAHEpADJSySybV1BRapkncwYEpJCPl2ubySJdsTwdivUGHCLPlcpd8l6b3wJwz.V7bmFulU7swnKTL9bVbImWSHb2iouPiyMeglx22JvbJ2RDJE6K3p2LhItoagYkdzX3xOKjZU.oJ8Ue9soW8gElE5YwCw69jGIZoM7xW7z5+Ygr7rB4q1z52u+NPgV7BYolGXxiXwJNhF16vl.2t0b8rJN6vRdGjons+zi1aY+I2YO38EJ9617xhN6r4E34WyG3eFuo4z94i7GGrooJ31z3iG.0YD.nVHfudyoxPwI9a+hnyvM9W+Czsl0TerSo5jZq7yKOxTFpk0kk6LsgRJYnO5mWvPxHZLnrRZsLD.arJuHa6UvC9MNaEEQJFvpDeUuyqp2.v9W+SY.qicCaKqLa0w9uCyd6.pdKVK6+hi4dlOtp4ZuoeWI86SR+tZ520R+td52ml98aS+56k0HSh9YhzOSl9YB0eUK3rHG.kqg.wEn3wVGpAlG4fmE0x55ufvW3bnLbbDUM8CZfuhS5DP7wTuh.9RABHt4xxuxy+2dki6pI9kNc3pfAy2FWXN1HVC4WAaL8sgdryt85AWGpv.enyd+gecdHHKyMv6CmVLlCAxNud7vtv8fBXf1EP5HVT1FysR66g8QDnKSDp67efeoS5i8sSmzOaRqgTHX+sAl5k3qO8I5Q.aRne3sJNGh8I4UYcb7Z4YMjGxeaP.59MgJ5ymmkuG7rx8fmmbO3Y06AOqcO3Y86AOO8V4AeCxsFqjCMoCv.c1UuQks8tBJDYoiBs9uPuhOje
I have another idea in mind
It would be a bit like this solution but indexing the Y position only betweenvisibleItemsInt
andlist.length-visibleItemsInt
instead of moving it continuously...
It's not easy to explain but I'll try tomorrow if I have the time -
@ustk Thank you for the help!
-
@d-healey I'd like to have a look at the C++ behind a viewport list as it might be useful
EDIT: some interesting stuff in
juce_Viewport.cpp
-
@d-healey cheers!
-
@d-healey I had to try this once more
HiseSnippet 1810.3ocsXstbaabEFP1vIjItMtS+Q+4FNIy.ZQQSHYI4XEGqq1VS7ENhp1siFMtq.VRri.2EAXIkY7nN8AIOL8onOG4MH8rW.vRJJaE0Z9Ch8x4x24aOmE6htY7PRdNOyws1gSRINteoWuILQ7NwXJyY+ccb+Kd4gY7jDJa.JEyHIHLKBMN0Y6Io37bRjiq6MdpTZ2Z2zQ86We713DLKjTMjiyq4zPxyoCohpQ6t4ORSRdBNhbHcnkz2ey8C4rc3I7Q.xtgWGmTb3o3AjWhkhsfmi6s1KhJ3Y8DXAI2w8layilzKleFSK+qo4zSRHxNAN8.CoG9I7jHIhki5rSLMIpaACj6.VoaEebCMe7m8dAMhVNdEu7UpIPUZXyGtKLM7twTvKvFdcrf2bfjqEjtoFR2wqWXFMUTMiDOeg29LAIqOFncannk0Yg+Scuc3fDLQ6g3SIOIC5Tpg+Zc5zBA+0bi50ApOWfN3Uu4sOau8e5yND8HzJOXCqg60cqc1CFc8RgSnveOBcTi8EjgnfFsP5VKW1ZkxV2ur0pksVqr05ksdPYquqrUPmplUdInxMAU9InxQAq133RrNFmgdMkbVJOSD.ftfUFPD6vGlxYPG+FkRzn4FyQwk+nJtbilS4RyZlrB5x8psPR8s62NBKvsoP7jC5KY7YlOm.VHlPGDKfHWJP6DBafHFcWju0x4hUKhMQKY0Av6rFrKjtKNfORPYD+9iXgBJm4OnY82WulLpv.TDwzbYb7bdHNYa9HVTtuLQRIPFNhNJ2RJ+FmvyhHYGnlPFj0pWqOOC4SAo5rAhh9dsvUwqINf4Vbwl0qA9tz4GA4szOP.1pzwugFIh8gApjDRJpAduFsOxuPrWiSFQ7ahdziPTvW0pMPxC58h7qBBItzC1noLFpQRxIyJt9Qd6ynh3sRRiwVF3jAEp2xJbi4iIYJeidLJncGzCQcZul1CRjNnceXGyCjjLI5.Rn.yFjP7wsLDcyqPD89qRTsrIrtLOdD9nNG2BgOJ.9eUYiUNFZ89c3YLRVO5OSdnAR.gqU9gGEzBAKWx+O9bk0Oud8qNiIHuSLCmMSzYwYqKgOX76cOjZK.F7lCSZizNEIjU4XGQUYCCZGkgOaqD5.FI5PPReo3sPp3ExrB5nCZnvoSaUbu7wkQeiDReAjRqVqNu94yqh5GIS5lAaauCNI4D3sZUUUjwvd.kUVLxYpPypzwDppJlbfgBiQZkZGQxUtALio9HDmSPMBAtDJsFk13gx0xBatzRaX2EJ35.T2rd7B0eKE.TaiFJcOIifOciYcTD7FtocEXL+h1KFzD8sWVsssQOWFgxT3Rq70WfELwoZz7hQKjWkbolJLFxWIQ95rAIwNNMF.U496RS9L0llJl0HxjYEwuwXnaWdNURx+8FMk64T.oB8gjBv5E0fRKkmvEVqfkBduO.MTnWJnnR+6cU7zjBoAbEr3TDgQhgTlb0XhQ2OhYUZfeGnwjON.jqUSP+fh3VTMgb4rh.yuHA1RY8kzQpscLAgUxIX0qj8nrlEIOYDwnLFRjMhrw7qCeAeTN4iUDV711YVrLuaarIA+EXQb69IbdlobbRw5qMgcWj8BsDoHyu50tvK.PZCo68XslGo72wPM3RAxrYIYoEKLgFdJIRWRHs3zUEiKxDJmxppPxW52cUVNkQRku1WOaME8UvOHN6kbA4ULeEGU+75nYmpe+4Nm7.Ox6QPxl6zxK.j8gTzmMZ3IjrVZVuTP3TwSeTauK+n112DHTe9KKA4r8YTwqRIrK69ANlCsAGKeACp.QEpCk+mLGJmDUjk5PijmJuLo0QAb6qD4761HKOqQ90G67W2eWHwQdUAC7.HmRxDTIa3tKYLbuK8EGp4sKI+TAOUgeygNcb+rqbD7tJG+CaNopytadl7vUkC7uy1TeNzxQ9GwapuF413rCigrUFPpUF3a1Th9RD84ZDcaOqhVEX9C1iLEdbblX2YZ7frvys9kEzhjhy.mY4U6HE1WfeVwtC.P+idakjfpFvwRu5W4EuKg+9W+z+67mZGBG2+om9BO2tt99WlmqXddeyyUMOWy7bcyyGXd9clmAcJZTXwfBSFTXyfBiFrpCrk5yg6c.4cKfkGgZnhftkm7bQv08uvUYgKQyiFkfESeyZ4mSvLArGvTWmUdkUFrm+D6Zf+ucc6qJDuiWW4wulOFWXNXTtkwm.LZ9HE21au98gilWAva58j+1mluHgi91fCfW5kQgDZuWNZXO3L4gDv6LnrTtGrqrFyzuirujA5QXQpN+F7yLYfruqYxfhIcFhgj82Fp2dT9YP9b0H.lXpu.TMuWH6iJ2T0yqS6NNCoQz2FFJC+kfMvmuNKeMzYkqgN2+ZnypWCcV6Zny5WCcdvGTG4GCaqQB9Pc4.LP28TuWx0cOFFxrTYgN+WHabxOA
-
@ulrik That's a nice solution, not quite the same as the viewport but better than the previous solution Ustk and I had.
-
@d-healey nah, you're right, this one is more like the Hise VP
and scrolling doesn't execute the panels callback until you press "return"HiseSnippet 2195.3ocsXszbiabDFPRXiAc13014PpJWlvJoJvURTDRqjVKEEQIsRdU4U6xRTl1oToZKPfgjiEH.JfgRKyVZ+Aja4dNja4RNja4Z9GjSop7aHmx0bINcOyfG7kVYU17.w7ne708zcOOZDG5RSRBi0zMOaXDUS+GazbX.u2A8bXAZG+LM8GZzvIf5eBMXPqFZ6OLxIIg5ooqO+mijnatfl32+Y28c7cBbo4Coo0Jj4ReAqOimOZi5eAy2+HGO5Yr9En9I0O1ML3fP+vA.bl2nlVji6kNcouzAIaNCM8GbnGiGF2j6voIZ5Kren2vl8BuNPReKVBqsOE6Xq0DDjb3iB88PDiipcPOluWiTyNQCjRibmv7RmvO03DlGKa7bmwiDSPx4nn+PetQg27i.O6hvqVA3MEHoW.RKHgzGazzMlEwymAwyGZbb.mF2wAb6EghjVs4t9mXbPHPQ.uZemKoGECcx3vZiZ0Vh.+UY6Rk.WeBmb5q9pW+7CO9ye9YjcHq8zsKLbyF6cvgvnalQrOC9aGx4kOlS6SrKuDQ1Z0rVqk05IYsVOq0FYs1Lq0SyZ8YYsrqk2LWK14pwNWO14Jxd8xWjg0qbhIsZ.nM0czkxOHreTX.zwpbqFkqrcAREg7yjZwrHCkDsp54vcpx.cl.rfdksUSjPAp6QYc6wAXgyT0mFzk2i7XhUAe8h4d3JjkKzISEfjZ.Ag7SCGvYATqNCBb4rv.qtUJ81RlqrBhZGP87drDDtuHz0we+vAAdIV3BrYISjjXGO1fjBzYUtcXrGM9TwDkkT1ILlXw.ppsMgQ90RhysRkQ.ys3hUJYB52LU8mCQTraw5VJSweEyi2yBFHmRX4xDztIqCwJkrVN9CnVUH6rCgA5xzrK5KjUIrxMBDWxAKWAsASpeBcbxkeRpdMi2aO+ndNEDP6toruTAysW3UzXgtI6RrqVirEoV0MjZ.QZ2pcfZYmhtYp2oTWtSPWepkyRJGck6fE816hUspxrlkFO247ZWrDw4ba3+0wFqcAz5sGDFGPiax9czsTPBb3Rl25b6kHvxE9+E2Hj9MkJc28Xb5a3i4yFy5J3y1DgOH7UVgHRNCfZ5pvFTNoAj4wXmyDQCcq5E6b8d9rtATuy.JsPxWhHrWHxxtlzngrlZUE18pWjY8k8oc3PHsXs5lR2LR5zWPG1HFpjdfiueaXil7Tpv1eiHoBAW.8ZgEUHiQYgaKIPkOuyrxQvzoDv841ifBtpGMQTaFTjJ0w0IgRJ6BtYHqaPT4svk4T8t7xaWrKjKVC7pEPkTMKaCd4xkEz1Nl5b41iKXOXanQEMvrUZ6EsqP9UjLHOgP.P6DQk7KLT+vD5QgtCRrpLM5io7AwAEnOI0ukpQIah4b6AwvTOkjVYEyDXSTJA7Sg99jnvDF5sv4Z0HWPPaQX3UL50MTz7aSyRRgyMn6GS9xL5ewDKjpkgaAlhohoQXAXqhoz4tRnTYkbDNNpfLrrhRjwYLcE7V42NUsp5ZhhFX72UQXvmzY7bwNMJ+nnhL3FJD4lNOjr.rkVCSIlgYhYBeJTOGkTlXa03VHdDwl3GxmF.VoXrVJgQ.kBFVIWcoyOLcNXqE6EGMHRE0bjOKJhEzkDAmYzb4Y7SP7iSEaeV.lFLT5QpTTyhocdCL8vwADtBNj7aDNsEELhiNy0NTJKKsvJiHCkAUH4Fj36QVr.oLd7JEL8Sv7Ee1kTvSSIOmAQYsZXNMS+6HzwU5E+dB5nrFwMXJ1wQliJKXP3wCnaOVg5SBGjPmrJM8J3rXY0oSO80XUgUEouRUu6DGdupc7CCikrWEWZmH37wjhUvQrRT+JYNwQCHRAI6sqRSaQV1F2tC8Tx4c8YtWR8j0ZPQMZ4lqRilylpXQQvCIS6e6zJFciozgUBBDZR4jXzLTUOEoCoEPYAPeJI0CRBCZ0.OfKPnka5oaWRZBBGqOdFRBl.eXPWf0ptPV.Wbss3W09afCeH..GsCwfStJoJtN6XhhEhyp0Ba.DIDnz.kGJETC2IVpHKawsVtAL6Yefd44XD1WFvJXyo9L4Y8ccaOyZFpzmI8eBVuUWHLYRnOsZTLtbktLOabqtZwzgdQ0IPeAn7xPN8Un+FTZoaJQFepNcl5bJo4it5oLsZQX1LZELneaZbQSFIDt15n2E1X12Et3U0ckNkBDFFbb.i+pHZvrt.ulxSB2addEpfVbwsl+D0slodsfHunvXtFCtf7BFsZnIPr54Gp+r+2+ZWsw49go24F86BF+QxGCYDdgeOpt1cTye5DCaOtv9Y009xieFThAeH.ksA1aDMlyPWo9ynWwboxmEvz3YzjKgzEM84xBizz+f2u4+lbM5UeXdmWV+Z7lYYC72iqKuAa1HD+5xpK66DeVOntV.rTjKfeY8QxxwI9m+0eeMzCi1SFF+v2mS9MEeIogE6LJBIEP3C9iyIIIB1wNfWPcBiFxkBuNMiBv7GYrGbDy7AxuvEJqu8Oq82PYkd2Pbr28t28k3XINWQON.uAAEDt9bZSZYeGBAlwhwehWe1lpZ4occX6wWvRDnPrwkl9Wa.IcbhcIwmUkeVS94IxOqK+rg7ylxOOU94yjerqo9pji8pZcfvQ7xj4vsVcG7xY8EF9CLvaboMw5++8u7yewe3e7u2Uax205QFmD5Mv2gO5yrgusnZBPHi71V36WE.BeXw2d76s2d6tBwO1nAdotoiw4lBFgr4eHvn5EKenwgc5.aHmCvELN5q+g44I0jOBUW3zTwLHx03kC52DRObof1CfLWrduNlGp5WC6idflz.OQmuE9olzF6qqlzNcRs9NPIlW6JqphuI5GHFAvTf34fMMNA6SxJeZXTqZMs9LO1qccQyeYXyhoyyp2CdV6dvyStG7r98fmMtG7r48fmmdq7fuL9dC3g8koCv.MNTrMlt9gANPjkHJT6+Cb8kmSJ