gASVAQABAAAAAACMDmRvY3V0aWxzLm5vZGVzlIwIZG9jdW1lbnSUk5QpgZR9lCiMCXJhd3NvdXJjZZSMAJSMCGNoaWxkcmVulF2UKGgAjAZ0YXJnZXSUk5QpgZR9lChoBWgGaAddlIwKYXR0cmlidXRlc5R9lCiMA2lkc5RdlIw4bW9kdWxlLWV0aGVyZXVtLm11aXJfZ2xhY2llci52bS5pbnN0cnVjdGlvbnMuZW52aXJvbm1lbnSUYYwHY2xhc3Nlc5RdlIwFbmFtZXOUXZSMCGR1cG5hbWVzlF2UjAhiYWNrcmVmc5RdlIwFaXNtb2SUiHWMB3RhZ25hbWWUaAmMBnNvdXJjZZSMeS9ob21lL3J1bm5lci93b3JrL2V4ZWN1dGlvbi1zcGVjcy9leGVjdXRpb24tc3BlY3MvZG9jL2F1dG9hcGkvZXRoZXJldW0vbXVpcl9nbGFjaWVyL3ZtL2luc3RydWN0aW9ucy9lbnZpcm9ubWVudC9pbmRleC5yc3SUjARsaW5llEsBjAZwYXJlbnSUaAOMCV9kb2N1bWVudJRoA3VijA9zcGhpbnguYWRkbm9kZXOUjAVpbmRleJSTlCmBlH2UKGgFaAZoB12UaA59lChoEF2UaBNdlGgVXZRoF12UaBldlIwHZW50cmllc5RdlCiMBHBhaXKUjDltb2R1bGU7IGV0aGVyZXVtLm11aXJfZ2xhY2llci52bS5pbnN0cnVjdGlvbnMuZW52aXJvbm1lbnSUaBJoBk50lGF1aBxoI2gdaB5oH0sCaCBoA2ghaAN1YmgAjAdzZWN0aW9ulJOUKYGUfZQoaAVoBmgHXZQoaACMBXRpdGxllJOUKYGUfZQoaAWMOUV0aGVyZXVtIFZpcnR1YWwgTWFjaGluZSAoRVZNKSBFbnZpcm9ubWVudGFsIEluc3RydWN0aW9uc5RoB12UaACMBFRleHSUk5SMOUV0aGVyZXVtIFZpcnR1YWwgTWFjaGluZSAoRVZNKSBFbnZpcm9ubWVudGFsIEluc3RydWN0aW9uc5SFlIGUfZQoaAVoBmggaDpoIWgDaB2MXC9ob21lL3J1bm5lci93b3JrL2V4ZWN1dGlvbi1zcGVjcy9leGVjdXRpb24tc3BlY3MvLnRveC9kb2NzL3N0YWdlMF9vdXQvYXV0b2FwaS8gPT4gZG9jL2Rp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YW5jZSBvZiB0aGUgZ2l2ZW4gYWNjb3VudCBvbnRvIHRoZSBzdGFjay4KCm9yaWdpbgoKUHVzaGVzIHRoZSBhZGRyZXNzIG9mIHRoZSBvcmlnaW5hbCB0cmFuc2FjdGlvbiBzZW5kZXIgdG8gdGhlIHN0YWNrLgoKY2FsbGVyCgpQdXNoZXMgdGhlIGFkZHJlc3Mgb2YgdGhlIGNhbGxlciBvbnRvIHRoZSBzdGFjay4KCmNhbGx2YWx1ZQoKUHVzaCB0aGUgdmFsdWUgKGluIHdlaSkgc2VudCB3aXRoIHRoZSBjYWxsIG9udG8gdGhlIHN0YWNrLgoKY2FsbGRhdGFsb2FkCgpQdXNoIGEgd29yZCAoMzIgYnl0ZXMpIG9mIHRoZSBpbnB1dCBkYXRhIGJlbG9uZ2luZyB0byB0aGUgY3VycmVudAoKY2FsbGRhdGFzaXplCgpQdXNoIHRoZSBzaXplIG9mIGlucHV0IGRhdGEgaW4gY3VycmVudCBlbnZpcm9ubWVudCBvbnRvIHRoZSBzdGFjay4KCmNhbGxkYXRhY29weQoKQ29weSBhIHBvcnRpb24gb2YgdGhlIGlucHV0IGRhdGEgaW4gY3VycmVudCBlbnZpcm9ubWVudCB0byBtZW1vcnkuCgpjb2Rlc2l6ZQoKUHVzaCB0aGUgc2l6ZSBvZiBjb2RlIHJ1bm5pbmcgaW4gY3VycmVudCBlbnZpcm9ubWVudCBvbnRvIHRoZSBzdGFjay4KCmNvZGVjb3B5CgpDb3B5IGEgcG9ydGlvbiBvZiB0aGUgY29kZSBpbiBjdXJyZW50IGVudmlyb25tZW50IHRvIG1lbW9yeS4KCmdhc3ByaWNlCgpQdXNoIHRoZSBnYXMgcHJpY2UgdXNlZCBpbiBjdXJyZW50IGVudmlyb25tZW50IG9udG8gdGhlIHN0YWNrLgoKZXh0Y29kZXNpemUKClB1c2ggdGhlIGNvZGUgc2l6ZSBvZiBhIGdpdmVuIGFjY291bnQgb250byB0aGUgc3RhY2suCgpleHRjb2RlY29weQoKQ29weSBhIHBvcnRpb24gb2YgYW4gYWNjb3VudCdzIGNvZGUgdG8gbWVtb3J5LgoKcmV0dXJuZGF0YXNpemUKClB1c2hlcyB0aGUgc2l6ZSBvZiB0aGUgcmV0dXJuIGRhdGEgYnVmZmVyIG9udG8gdGhlIHN0YWNrLgoKcmV0dXJuZGF0YWNvcHkKCkNvcGllcyBkYXRhIGZyb20gdGhlIHJldHVybiBkYXRhIGJ1ZmZlciBjb2RlIHRvIG1lbW9yeQoKZXh0Y29kZWhhc2gKClJldHVybnMgdGhlIGtlY2NhazI1NiBoYXNoIG9mIGEgY29udHJhY3TigJlzIGJ5dGVjb2RlCgpzZWxmX2JhbGFuY2UKClB1c2hlcyB0aGUgYmFsYW5jZSBvZiB0aGUgY3VycmVudCBhZGRyZXNzIHRvIHRoZSBzdGFjay6UaAddlGgAjAV0YWJsZZSTlCmBlH2UKGgFaAZoB12UaACMBnRncm91cJSTlCmBlH2UKGgFaAZoB12UKGgAjAdjb2xzcGVjlJOUKYGUfZQoaAVoBmgHXZRoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UjAhjb2x3aWR0aJRLCnVoHGrJAwAAaB1OaB9OaCBqxgMAAHViasoDAAApgZR9lChoBWgGaAddlGgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZSMCGNvbHdpZHRolEtadWgcaskDAABoHU5oH05oIGrGAwAAdWJoAIwFdGJvZHmUk5QpgZR9lChoBWgGaAddlChoAIwDcm93lJOUKYGUfZQoaAVoBmgHXZQoaACMBWVudHJ5lJOUKYGUfZQoaAVoBmgHXZRoaSmBlH2UKGgFjEo6b2JqOmBhZGRyZXNzIDxldGhlcmV1bS5tdWlyX2dsYWNpZXIudm0uaW5zdHJ1Y3Rpb25zLmVudmlyb25tZW50LmFkZHJlc3M+YJRoB12UaG4pgZR9lChoBWgGaAddlGgAjAdsaXRlcmFslJOUKYGUfZQoaAVq8AMAAGgHXZRoP4wHYWRkcmVzc5SFlIGUfZQoaAVoBmggavcDAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UKIwEeHJlZpSMAnB5lIwGcHktb2JqlGVoFV2UaBddlGgZXZR1aBxq9QMAAGgdTmgfTmggavIDAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UjAhpbnRlcm5hbJSIjAVyZWZpZJSMOWV0aGVyZXVtLm11aXJfZ2xhY2llci52bS5pbnN0cnVjdGlvbnMuZW52aXJvbm1lbnQuYWRkcmVzc5SMCHJlZnRpdGxllIw5ZXRoZXJldW0ubXVpcl9nbGFjaWVyLnZtLmluc3RydWN0aW9ucy5lbnZpcm9ubWVudC5hZGRyZXNzlHVoHGhtaB1OaB9OaCBq7gMAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoaGgdjIovaG9tZS9ydW5uZXIvd29yay9leGVjdXRpb24tc3BlY3MvZXhlY3V0aW9uLXNwZWNzL2RvYy9hdXRvYXBpL2V0aGVyZXVtL211aXJfZ2xhY2llci92bS9pbnN0cnVjdGlvbnMvZW52aXJvbm1lbnQvaW5kZXgucnN0OjQ3OjxhdXRvc3VtbWFyeT6UaB9LAWggausDAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaukDAABoHU5oH05oIGrmAwAAdWJq6gMAACmBlH2UKGgFaAZoB12UaGkpgZR9lChoBYxBUHVzaGVzIHRoZSBhZGRyZXNzIG9mIHRoZSBjdXJyZW50IGV4ZWN1dGluZyBhY2NvdW50IHRvIHRoZSBzdGFjay6UaAddlGg/jEFQdXNoZXMgdGhlIGFkZHJlc3Mgb2YgdGhlIGN1cnJlbnQgZXhlY3V0aW5nIGFjY291bnQgdG8gdGhlIHN0YWNrLpSFlIGUfZQoaAVoBmggaiIEAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaGhoHYyKL2hvbWUvcnVubmVyL3dvcmsvZXhlY3V0aW9uLXNwZWNzL2V4ZWN1dGlvbi1zcGVjcy9kb2MvYXV0b2FwaS9ldGhlcmV1bS9tdWlyX2dsYWNpZXIvdm0vaW5zdHJ1Y3Rpb25zL2Vudmlyb25tZW50L2luZGV4LnJzdDo0Nzo8YXV0b3N1bW1hcnk+lGgfSwFoIGofBAAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGrpAwAAaB1OaB9OaCBq5gMAAHViZWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxq5AMAAGgdTmgfTmggauEDAAB1YmrlAwAAKYGUfZQoaAVoBmgHXZQoauoDAAApgZR9lChoBWgGaAddlGhpKYGUfZQoaAWMSjpvYmo6YGJhbGFuY2UgPGV0aGVyZXVtLm11aXJfZ2xhY2llci52bS5pbnN0cnVjdGlvbnMuZW52aXJvbm1lbnQuYmFsYW5jZT5glGgHXZRobimBlH2UKGgFaAZoB12UavYDAAApgZR9lChoBWpFBAAAaAddlGg/jAdiYWxhbmNllIWUgZR9lChoBWgGaCBqSgQAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZQoagEEAACMAnB5lIwGcHktb2JqlGVoFV2UaBddlGgZXZR1aBxq9QMAAGgdTmgfTmggakcEAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UjAhpbnRlcm5hbJSIjAVyZWZpZJSMOWV0aGVyZXVtLm11aXJfZ2xhY2llci52bS5pbnN0cnVjdGlvbnMuZW52aXJvbm1lbnQuYmFsYW5jZZSMCHJlZnRpdGxllIw5ZXRoZXJldW0ubXVpcl9nbGFjaWVyLnZtLmluc3RydWN0aW9ucy5lbnZpcm9ubWVudC5iYWxhbmNllHVoHGhtaB1OaB9OaCBqQwQAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoaGgdjIovaG9tZS9ydW5uZXIvd29yay9leGVjdXRpb24tc3BlY3MvZXhlY3V0aW9uLXNwZWNzL2RvYy9hdXRvYXBpL2V0aGVyZXVtL211aXJfZ2xhY2llci92bS9pbnN0cnVjdGlvbnMvZW52aXJvbm1lbnQvaW5kZXgucnN0OjQ3OjxhdXRvc3VtbWFyeT6UaB9LAWggakAEAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaukDAABoHU5oH05oIGo9BAAAdWJq6gMAACmBlH2UKGgFaAZoB12UaGkpgZR9lChoBYw3UHVzaGVzIHRoZSBiYWxhbmNlIG9mIHRoZSBnaXZlbiBhY2NvdW50IG9udG8gdGhlIHN0YWNrLpRoB12UaD+MN1B1c2hlcyB0aGUgYmFsYW5jZSBvZiB0aGUgZ2l2ZW4gYWNjb3VudCBvbnRvIHRoZSBzdGFjay6UhZSBlH2UKGgFaAZoIGp0BAAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhoaB2Mii9ob21lL3J1bm5lci93b3JrL2V4ZWN1dGlvbi1zcGVjcy9leGVjdXRpb24tc3BlY3MvZG9j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cmV1bS5tdWlyX2dsYWNpZXIudm0uaW5zdHJ1Y3Rpb25zLmVudmlyb25tZW50LmNhbGxlcpR1aBxobWgdTmgfTmggaucEAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaGhoHYyKL2hvbWUvcnVubmVyL3dvcmsvZXhlY3V0aW9uLXNwZWNzL2V4ZWN1dGlvbi1zcGVjcy9kb2MvYXV0b2FwaS9ldGhlcmV1bS9tdWlyX2dsYWNpZXIvdm0vaW5zdHJ1Y3Rpb25zL2Vudmlyb25tZW50L2luZGV4LnJzdDo0Nzo8YXV0b3N1bW1hcnk+lGgfSwFoIGrkBAAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGrpAwAAaB1OaB9OaCBq4QQAAHViauoDAAApgZR9lChoBWgGaAddlGhpKYGUfZQoaAWMMFB1c2hlcyB0aGUgYWRkcmVzcyBvZiB0aGUgY2FsbGVyIG9udG8gdGhlIHN0YWNrLpRoB12UaD+MMFB1c2hlcyB0aGUgYWRkcmVzcyBvZiB0aGUgY2FsbGVyIG9udG8gdGhlIHN0YWNrLpSFlIGUfZQoaAVoBmggahgFAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaGhoHYyKL2hvbWUvcnVubmVyL3dvcmsvZXhlY3V0aW9uLXNwZWNzL2V4ZWN1dGlvbi1zcGVjcy9kb2MvYXV0b2FwaS9ldGhlcmV1bS9tdWlyX2dsYWNpZXIvdm0vaW5zdHJ1Y3Rpb25zL2Vudmlyb25tZW50L2luZGV4LnJzdDo0Nzo8YXV0b3N1bW1hcnk+lGgfSwFoIGoVBQAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGrpAwAAaB1OaB9OaCBq4QQAAHViZWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxq5AMAAGgdTmgfTmggauEDAAB1YmrlAwAAKYGUfZQoaAVoBmgHXZQoauoDAAApgZR9lChoBWgGaAddlGhpKYGUfZQoaAWMTjpvYmo6YGNhbGx2YWx1ZSA8ZXRoZXJldW0ubXVpcl9nbGFjaWVyLnZtLmluc3RydWN0aW9ucy5lbnZpcm9ubWVudC5jYWxsdmFsdWU+YJRoB12UaG4pgZR9lChoBWgGaAddlGr2AwAAKYGUfZQoaAVqOwUAAGgHXZRoP4wJY2FsbHZhbHVllIWUgZR9lChoBWgGaCBqQAUAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZQoagEEAACMAnB5lIwGcHktb2JqlGVoFV2UaBddlGgZXZR1aBxq9QMAAGgdTmgfTmggaj0FAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UjAhpbnRlcm5hbJSIjAVyZWZpZJSMO2V0aGVyZXVtLm11aXJfZ2xhY2llci52bS5pbnN0cnVjdGlvbnMuZW52aXJvbm1lbnQuY2FsbHZhbHVllIwIcmVmdGl0bGWUjDtldGhlcmV1bS5tdWlyX2dsYWNpZXIudm0uaW5zdHJ1Y3Rpb25zLmVudmlyb25tZW50LmNhbGx2YWx1ZZR1aBxobWgdTmgfTmggajkFAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaGhoHYyKL2hvbWUvcnVubmVyL3dvcmsvZXhlY3V0aW9uLXNwZWNzL2V4ZWN1dGlvbi1zcGVjcy9kb2MvYXV0b2FwaS9ldGhlcmV1bS9tdWlyX2dsYWNpZXIvdm0vaW5zdHJ1Y3Rpb25zL2Vudmlyb25tZW50L2luZGV4LnJzdDo0Nzo8YXV0b3N1bW1hcnk+lGgfSwFoIGo2BQAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGrpAwAAaB1OaB9OaCBqMwUAAHViauoDAAApgZR9lChoBWgGaAddlGhpKYGUfZQoaAWMOlB1c2ggdGhlIHZhbHVlIChpbiB3ZWkpIHNlbnQgd2l0aCB0aGUgY2FsbCBvbnRvIHRoZSBzdGFjay6UaAddlGg/jDpQdXNoIHRoZSB2YWx1ZSAoaW4gd2VpKSBzZW50IHdpdGggdGhlIGNhbGwgb250byB0aGUgc3RhY2sulIWUgZR9lChoBWgGaCBqagUAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoaGgdjIovaG9tZS9ydW5uZXIvd29yay9leGVjdXRpb24tc3BlY3MvZXhlY3V0aW9uLXNwZWNzL2RvYy9hdXRvYXBpL2V0aGVyZXVtL211aXJfZ2xhY2llci92bS9p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cmVmdGl0bGWUjD5ldGhlcmV1bS5tdWlyX2dsYWNpZXIudm0uaW5zdHJ1Y3Rpb25zLmVudmlyb25tZW50LmNhbGxkYXRhc2l6ZZR1aBxobWgdTmgfTmggat0FAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaGhoHYyKL2hvbWUvcnVubmVyL3dvcmsvZXhlY3V0aW9uLXNwZWNzL2V4ZWN1dGlvbi1zcGVjcy9kb2MvYXV0b2FwaS9ldGhlcmV1bS9tdWlyX2dsYWNpZXIvdm0vaW5zdHJ1Y3Rpb25zL2Vudmlyb25tZW50L2luZGV4LnJzdDo0Nzo8YXV0b3N1bW1hcnk+lGgfSwFoIGraBQAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGrpAwAAaB1OaB9OaCBq1wUAAHViauoDAAApgZR9lChoBWgGaAddlGhpKYGUfZQoaAWMQlB1c2ggdGhlIHNpemUgb2YgaW5wdXQgZGF0YSBpbiBjdXJyZW50IGVudmlyb25tZW50IG9udG8gdGhlIHN0YWNrLpRoB12UaD+MQlB1c2ggdGhlIHNpemUgb2YgaW5wdXQgZGF0YSBpbiBjdXJyZW50IGVudmlyb25tZW50IG9udG8gdGhlIHN0YWNrLpSFlIGUfZQoaAVoBmggag4GAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaGhoHYyKL2hvbWUvcnVubmVyL3dvcmsvZXhlY3V0aW9uLXNwZWNzL2V4ZWN1dGlvbi1zcGVjcy9kb2MvYXV0b2FwaS9ldGhlcmV1bS9tdWlyX2dsYWNpZXIvdm0vaW5zdHJ1Y3Rpb25zL2Vudmlyb25tZW50L2luZGV4LnJzdDo0Nzo8YXV0b3N1bW1hcnk+lGgfSwFoIGoLBgAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGrpAwAAaB1OaB9OaCBq1wUAAHViZWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxq5AMAAGgdTmgfTmggauEDAAB1YmrlAwAAKYGUfZQoaAVoBmgHXZQoauoDAAApgZR9lChoBWgGaAddlGhpKYGUfZQoaAWMVDpvYmo6YGNhbGxkYXRhY29weSA8ZXRoZXJldW0ubXVpcl9nbGFjaWVyLnZtLmluc3RydWN0aW9ucy5lbnZpcm9ubWVudC5jYWxsZGF0YWNvcHk+YJRoB12UaG4pgZR9lChoBWgGaAddlGr2AwAAKYGUfZQoaAVqMQYAAGgHXZRoP4wMY2FsbGRhdGFjb3B5lIWUgZR9lChoBWgGaCBqNgYAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZQoagEEAACMAnB5lIwGcHktb2JqlGVoFV2UaBddlGgZXZR1aBxq9QMAAGgdTmgfTmggajMGAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UjAhpbnRlcm5hbJSIjAVyZWZpZJSMPmV0aGVyZXVtLm11aXJfZ2xhY2llci52bS5pbnN0cnVjdGlvbnMuZW52aXJvbm1lbnQuY2FsbGRhdGFjb3B5lIwIcmVmdGl0bGWUjD5ldGhlcmV1bS5tdWlyX2dsYWNpZXIudm0uaW5zdHJ1Y3Rpb25zLmVudmlyb25tZW50LmNhbGxkYXRhY29weZR1aBxobWgdTmgfTmggai8GAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaGhoHYyKL2hvbWUvcnVubmVyL3dvcmsvZXhlY3V0aW9uLXNwZWNzL2V4ZWN1dGlvbi1zcGVjcy9kb2MvYXV0b2FwaS9ldGhlcmV1bS9tdWlyX2dsYWNpZXIvdm0vaW5zdHJ1Y3Rpb25zL2Vudmlyb25tZW50L2luZGV4LnJzdDo0Nzo8YXV0b3N1bW1hcnk+lGgfSwFoIGosBgAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGrpAwAAaB1OaB9OaCBqKQYAAHViauoDAAApgZR9lChoBWgGaAddlGhpKYGUfZQoaAWMQkNvcHkgYSBwb3J0aW9uIG9mIHRoZSBpbnB1dCBkYXRhIGluIGN1cnJlbnQgZW52aXJvbm1lbnQgdG8gbWVtb3J5LpRoB12UaD+MQkNvcHkgYSBwb3J0aW9uIG9mIHRoZSBpbnB1dCBkYXRhIGluIGN1cnJlbnQgZW52aXJvbm1lbnQgdG8gbWVtb3J5LpSFlIGUfZQoaAVoBmggamAGAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaGhoHYyKL2hvbWUvcnVubmVyL3dvcmsvZXhlY3V0aW9uLXNwZWNzL2V4ZWN1dGlvbi1zcGVjcy9kb2MvYXV0b2FwaS9ldGhlcmV1bS9tdWlyX2dsYWNpZXIvdm0vaW5zdHJ1Y3Rpb25zL2Vudmlyb25tZW50L2luZGV4LnJzdDo0Nzo8YXV0b3N1bW1hcnk+lGgfSwFoIGpdBgAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGrpAwAAaB1OaB9OaCBqKQYAAHViZWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxq5AMAAGgdTmgfTmggauEDAAB1YmrlAwAAKYGUfZQoaAVoBmgHXZQoauoDAAApgZR9lChoBWgGaAddlGhpKYGUfZQoaAWMTDpvYmo6YGNvZGVzaXplIDxldGhlcmV1bS5tdWlyX2dsYWNpZXIudm0uaW5zdHJ1Y3Rpb25zLmVudmlyb25tZW50LmNvZGVzaXplPmCUaAddlGhuKYGUfZQoaAVoBmgHXZRq9gMAACmBlH2UKGgFaoMGAABoB12UaD+MCGNvZGVzaXpllIWUgZR9lChoBWgGaCBqiAYAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZQoagEEAACMAnB5lIwGcHktb2JqlGVoFV2UaBddlGgZXZR1aBxq9QMAAGgdTmgfTmggaoUGAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UjAhpbnRlcm5hbJSIjAVyZWZpZJSMOmV0aGVyZXVtLm11aXJfZ2xhY2llci52bS5pbnN0cnVjdGlvbnMuZW52aXJvbm1lbnQuY29kZXNpemWUjAhyZWZ0aXRsZZSMOmV0aGVyZXVtLm11aXJfZ2xhY2llci52bS5pbnN0cnVjdGlvbnMuZW52aXJvbm1lbnQuY29kZXNpemWUdWgcaG1oHU5oH05oIGqBBgAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhoaB2Mii9ob21lL3J1bm5lci93b3JrL2V4ZWN1dGlvbi1zcGVjcy9leGVjdXRpb24tc3BlY3MvZG9jL2F1dG9hcGkvZXRoZXJldW0vbXVpcl9nbGFjaWVyL3ZtL2luc3RydWN0aW9ucy9lbnZpcm9ubWVudC9pbmRleC5yc3Q6NDc6PGF1dG9zdW1tYXJ5PpRoH0sBaCBqfgYAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxq6QMAAGgdTmgfTmggansGAAB1YmrqAwAAKYGUfZQoaAVoBmgHXZRoaSmBlH2UKGgFjERQdXNoIHRoZSBzaXplIG9mIGNvZGUgcnVubmluZyBpbiBjdXJyZW50IGVudmlyb25tZW50IG9udG8gdGhlIHN0YWNrLpRoB12UaD+MRFB1c2ggdGhlIHNpemUgb2YgY29kZSBydW5uaW5nIGluIGN1cnJlbnQgZW52aXJvbm1lbnQgb250byB0aGUgc3RhY2sulIWUgZR9lChoBWgGaCBqsgYAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoaGgdjIovaG9tZS9ydW5uZXIvd29yay9leGVjdXRpb24tc3BlY3MvZXhlY3V0aW9uLXNwZWNzL2RvYy9hdXRvYXBpL2V0aGVyZXVtL211aXJfZ2xhY2llci92bS9pbnN0cnVjdGlvbnMvZW52aXJvbm1lbnQvaW5kZXgucnN0OjQ3OjxhdXRvc3VtbWFyeT6UaB9LAWggaq8GAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaukDAABoHU5oH05oIGp7BgAAdWJlaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGrkAwAAaB1OaB9OaCBq4QMAAHViauUDAAApgZR9lChoBWgGaAddlChq6gMAACmBlH2UKGgFaAZoB12UaGkpgZR9lChoBYxMOm9iajpgY29kZWNvcHkgPGV0aGVyZXVtLm11aXJfZ2xhY2llci52bS5pbnN0cnVjdGlvbnMuZW52aXJvbm1lbnQuY29kZWNvcHk+YJRoB12UaG4pgZR9lChoBWgGaAddlGr2AwAAKYGUfZQoaAVq1QYAAGgHXZRoP4wIY29kZWNvcHmUhZSBlH2UKGgFaAZoIGraBgAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlChqAQQAAIwCcHmUjAZweS1vYmqUZWgVXZRoF12UaBldlHVoHGr1AwAAaB1OaB9OaCBq1wYAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZSMCGludGVybmFslIiMBXJlZmlklIw6ZXRoZXJldW0ubXVpcl9nbGFjaWVyLnZtLmluc3RydWN0aW9ucy5lbnZpcm9ubWVudC5jb2RlY29weZSMCHJlZnRpdGxllIw6ZXRoZXJldW0ubXVpcl9nbGFjaWVyLnZtLmluc3RydWN0aW9ucy5lbnZpcm9ubWVudC5jb2RlY29weZR1aBxobWgdTmgfTmggatMGAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaGhoHYyKL2hvbWUvcnVubmVyL3dvcmsvZXhlY3V0aW9uLXNwZWNzL2V4ZWN1dGlvbi1zcGVjcy9kb2MvYXV0b2FwaS9ldGhlcmV1bS9tdWlyX2dsYWNpZXIvdm0vaW5zdHJ1Y3Rpb25zL2Vudmlyb25tZW50L2luZGV4LnJzdDo0Nzo8YXV0b3N1bW1hcnk+lGgfSwFoIGrQBgAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGrpAwAAaB1OaB9OaCBqzQYAAHViauoDAAApgZR9lChoBWgGaAddlGhpKYGUfZQoaAWMPENvcHkgYSBwb3J0aW9uIG9mIHRoZSBjb2RlIGluIGN1cnJlbnQgZW52aXJvbm1lbnQgdG8gbWVtb3J5LpRoB12UaD+MPENvcHkgYSBwb3J0aW9uIG9mIHRoZSBjb2RlIGluIGN1cnJlbnQgZW52aXJvbm1lbnQgdG8gbWVtb3J5LpSFlIGUfZQoaAVoBmggagQHAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaGhoHYyKL2hvbWUvcnVubmVyL3dvcmsvZXhlY3V0aW9uLXNwZWNzL2V4ZWN1dGlvbi1zcGVjcy9kb2MvYXV0b2FwaS9ldGhlcmV1bS9tdWlyX2dsYWNpZXIvdm0vaW5zdHJ1Y3Rpb25zL2Vudmlyb25tZW50L2luZGV4LnJzdDo0Nzo8YXV0b3N1bW1hcnk+lGgfSwFoIGoBBwAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGrpAwAAaB1OaB9OaCBqzQYAAHViZWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxq5AMAAGgdTmgfTmggauEDAAB1YmrlAwAAKYGUfZQoaAVoBmgHXZQoauoDAAApgZR9lChoBWgGaAddlGhpKYGUfZQoaAWMTDpvYmo6YGdhc3ByaWNlIDxldGhlcmV1bS5tdWlyX2dsYWNpZXIudm0uaW5zdHJ1Y3Rpb25zLmVudmlyb25tZW50Lmdhc3ByaWNlPmCUaAddlGhuKYGUfZQoaAVoBmgHXZRq9gMAACmBlH2UKGgFaicHAABoB12UaD+MCGdhc3ByaWNllIWUgZR9lChoBWgGaCBqLAcAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZQoagEEAACMAnB5lIwGcHktb2JqlGVoFV2UaBddlGgZXZR1aBxq9QMAAGgdTmgfTmggaikHAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UjAhpbnRlcm5hbJSIjAVyZWZpZJSMOmV0aGVyZXVtLm11aXJfZ2xhY2llci52bS5pbnN0cnVjdGlvbnMuZW52aXJvbm1lbnQuZ2FzcHJpY2WUjAhyZWZ0aXRsZZSMOmV0aGVyZXVtLm11aXJfZ2xhY2llci52bS5pbnN0cnVjdGlvbnMuZW52aXJvbm1lbnQuZ2FzcHJpY2WUdWgcaG1oHU5oH05oIGolBwAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhoaB2Mii9ob21lL3J1bm5lci93b3JrL2V4ZWN1dGlvbi1zcGVjcy9leGVjdXRpb24tc3BlY3MvZG9jL2F1dG9hcGkvZXRoZXJldW0vbXVpcl9nbGFjaWVyL3ZtL2luc3RydWN0aW9ucy9lbnZpcm9ubWVudC9pbmRleC5yc3Q6NDc6PGF1dG9zdW1tYXJ5PpRoH0sBaCBqIgcAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxq6QMAAGgdTmgfTmggah8HAAB1YmrqAwAAKYGUfZQoaAVoBmgHXZRoaSmBlH2UKGgFjD5QdXNoIHRoZSBnYXMgcHJpY2UgdXNlZCBpbiBjdXJyZW50IGVudmlyb25tZW50IG9udG8gdGhlIHN0YWNrLpRoB12UaD+MPlB1c2ggdGhlIGdhcyBwcmljZSB1c2VkIGluIGN1cnJlbnQgZW52aXJvbm1lbnQgb250byB0aGUgc3RhY2sulIWUgZR9lChoBWgGaCBqVgcAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoaGgdjIovaG9tZS9ydW5uZXIvd29yay9leGVjdXRpb24tc3BlY3MvZXhlY3V0aW9uLXNwZWNzL2RvYy9hdXRvYXBpL2V0aGVyZXVtL211aXJfZ2xhY2llci92bS9pbnN0cnVjdGlvbnMvZW52aXJvbm1lbnQvaW5kZXgucnN0OjQ3OjxhdXRvc3VtbWFyeT6UaB9LAWggalMHAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaukDAABoHU5oH05oIGofBwAAdWJlaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGrkAwAAaB1OaB9OaCBq4QMAAHViauUDAAApgZR9lChoBWgGaAddlChq6gMAACmBlH2UKGgFaAZoB12UaGkpgZR9lChoBYxSOm9iajpgZXh0Y29kZXNpemUgPGV0aGVyZXVtLm11aXJfZ2xhY2llci52bS5pbnN0cnVjdGlvbnMuZW52aXJvbm1lbnQuZXh0Y29kZXNpemU+YJRoB12UaG4pgZR9lChoBWgGaAddlGr2AwAAKYGUfZQoaAVqeQcAAGgHXZRoP4wLZXh0Y29kZXNpemWUhZSBlH2UKGgFaAZoIGp+BwAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlChqAQQAAIwCcHmUjAZweS1vYmqUZWgVXZRoF12UaBldlHVoHGr1AwAAaB1OaB9OaCBqewcAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZSMCGludGVybmFslIiMBXJlZmlklIw9ZXRoZXJldW0ubXVpcl9nbGFjaWVyLnZtLmluc3RydWN0aW9ucy5lbnZpcm9ubWVudC5leHRjb2Rlc2l6ZZSMCHJlZnRpdGxllIw9ZXRoZXJldW0ubXVpcl9nbGFjaWVyLnZtLmluc3RydWN0aW9ucy5lbnZpcm9ubWVudC5leHRjb2Rlc2l6ZZR1aBxobWgdTmgfTmggancHAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaGhoHYyKL2hvbWUvcnVubmVyL3dvcmsvZXhlY3V0aW9uLXNwZWNzL2V4ZWN1dGlvbi1zcGVjcy9kb2MvYXV0b2FwaS9ldGhlcmV1bS9tdWlyX2dsYWNpZXIvdm0vaW5zdHJ1Y3Rpb25zL2Vudmlyb25tZW50L2luZGV4LnJzdDo0Nzo8YXV0b3N1bW1hcnk+lGgfSwFoIGp0BwAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGrpAwAAaB1OaB9OaCBqcQcAAHViauoDAAApgZR9lChoBWgGaAddlGhpKYGUfZQoaAWMNVB1c2ggdGhlIGNvZGUgc2l6ZSBvZiBhIGdpdmVuIGFjY291bnQgb250byB0aGUgc3RhY2sulGgHXZRoP4w1UHVzaCB0aGUgY29kZSBzaXplIG9mIGEgZ2l2ZW4gYWNjb3VudCBvbnRvIHRoZSBzdGFjay6UhZSBlH2UKGgFaAZoIGqoBwAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhoaB2Mii9ob21lL3J1bm5lci93b3JrL2V4ZWN1dGlvbi1zcGVjcy9leGVjdXRpb24tc3BlY3MvZG9jL2F1dG9hcGkvZXRoZXJldW0vbXVpcl9nbGFjaWVyL3ZtL2luc3RydWN0aW9ucy9lbnZpcm9ubWVudC9pbmRleC5yc3Q6NDc6PGF1dG9zdW1tYXJ5PpRoH0sBaCBqpQcAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxq6QMAAGgdTmgfTmgganEHAAB1YmVoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcauQDAABoHU5oH05oIGrhAwAAdWJq5QMAACmBlH2UKGgFaAZoB12UKGrqAwAAKYGUfZQoaAVoBmgHXZRoaSmBlH2UKGgFjFI6b2JqOmBleHRjb2RlY29weSA8ZXRoZXJldW0ubXVpcl9nbGFjaWVyLnZtLmluc3RydWN0aW9ucy5lbnZpcm9ubWVudC5leHRjb2RlY29weT5glGgHXZRobimBlH2UKGgFaAZoB12UavYDAAApgZR9lChoBWrLBwAAaAddlGg/jAtleHRjb2RlY29weZSFlIGUfZQoaAVoBmggatAHAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UKGoBBAAAjAJweZSMBnB5LW9iapRlaBVdlGgXXZRoGV2UdWgcavUDAABoHU5oH05oIGrNBwAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlIwIaW50ZXJuYWyUiIwFcmVmaWSUjD1ldGhlcmV1bS5tdWlyX2dsYWNpZXIudm0uaW5zdHJ1Y3Rpb25zLmVudmlyb25tZW50LmV4dGNvZGVjb3B5lIwIcmVmdGl0bGWUjD1ldGhlcmV1bS5tdWlyX2dsYWNpZXIudm0uaW5zdHJ1Y3Rpb25zLmVudmlyb25tZW50LmV4dGNvZGVjb3B5lHVoHGhtaB1OaB9OaCBqyQcAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoaGgdjIovaG9tZS9ydW5uZXIvd29yay9leGVjdXRpb24tc3BlY3MvZXhlY3V0aW9uLXNwZWNzL2RvYy9hdXRvYXBpL2V0aGVyZXVtL211aXJfZ2xhY2llci92bS9pbnN0cnVjdGlvbnMvZW52aXJvbm1lbnQvaW5kZXgucnN0OjQ3OjxhdXRvc3VtbWFyeT6UaB9LAWggasYHAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaukDAABoHU5oH05oIGrDBwAAdWJq6gMAACmBlH2UKGgFaAZoB12UaGkpgZR9lChoBYwuQ29weSBhIHBvcnRpb24gb2YgYW4gYWNjb3VudCdzIGNvZGUgdG8gbWVtb3J5LpRoB12UaD+MMENvcHkgYSBwb3J0aW9uIG9mIGFuIGFjY291bnTigJlzIGNvZGUgdG8gbWVtb3J5LpSFlIGUfZQoaAVoBmggavoHAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaGhoHYyKL2hvbWUvcnVubmVyL3dvcmsvZXhlY3V0aW9uLXNwZWNzL2V4ZWN1dGlvbi1zcGVjcy9kb2MvYXV0b2FwaS9ldGhlcmV1bS9tdWlyX2dsYWNpZXIvdm0vaW5zdHJ1Y3Rpb25zL2Vudmlyb25tZW50L2luZGV4LnJzdDo0Nzo8YXV0b3N1bW1hcnk+lGgfSwFoIGr3BwAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGrpAwAAaB1OaB9OaCBqwwcAAHViZWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxq5AMAAGgdTmgfTmggauEDAAB1YmrlAwAAKYGUfZQoaAVoBmgHXZQoauoDAAApgZR9lChoBWgGaAddlGhpKYGUfZQoaAWMWDpvYmo6YHJldHVybmRhdGFzaXplIDxldGhlcmV1bS5tdWlyX2dsYWNpZXIudm0uaW5zdHJ1Y3Rpb25zLmVudmlyb25tZW50LnJldHVybmRhdGFzaXplPmCUaAddlGhuKYGUfZQoaAVoBmgHXZRq9gMAACmBlH2UKGgFah0IAABoB12UaD+MDnJldHVybmRhdGFzaXpllIWUgZR9lChoBWgGaCBqIggAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZQoagEEAACMAnB5lIwGcHktb2JqlGVoFV2UaBddlGgZXZR1aBxq9QMAAGgdTmgfTmggah8IAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UjAhpbnRlcm5hbJSIjAVyZWZpZJSMQGV0aGVyZXVtLm11aXJfZ2xhY2llci52bS5pbnN0cnVjdGlvbnMuZW52aXJvbm1lbnQucmV0dXJuZGF0YXNpemWUjAhyZWZ0aXRsZZSMQGV0aGVyZXVtLm11aXJfZ2xhY2llci52bS5pbnN0cnVjdGlvbnMuZW52aXJvbm1lbnQucmV0dXJuZGF0YXNpemWUdWgcaG1oHU5oH05oIGobCAAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhoaB2Mii9ob21lL3J1bm5lci93b3JrL2V4ZWN1dGlvbi1zcGVjcy9leGVjdXRpb24tc3BlY3MvZG9jL2F1dG9hcGkvZXRoZXJldW0vbXVpcl9nbGFjaWVyL3ZtL2luc3RydWN0aW9ucy9lbnZpcm9ubWVudC9pbmRleC5yc3Q6NDc6PGF1dG9zdW1tYXJ5PpRoH0sBaCBqGAgAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxq6QMAAGgdTmgfTmggahUIAAB1YmrqAwAAKYGUfZQoaAVoBmgHXZRoaSmBlH2UKGgFjDlQdXNoZXMgdGhlIHNpemUgb2YgdGhlIHJldHVybiBkYXRhIGJ1ZmZlciBvbnRvIHRoZSBzdGFjay6UaAddlGg/jDlQdXNoZXMgdGhlIHNpemUgb2YgdGhlIHJldHVybiBkYXRhIGJ1ZmZlciBvbnRvIHRoZSBzdGFjay6UhZSBlH2UKGgFaAZoIGpMCAAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhoaB2Mii9ob21lL3J1bm5lci93b3JrL2V4ZWN1dGlvbi1zcGVjcy9leGVjdXRpb24tc3BlY3MvZG9jL2F1dG9hcGkvZXRoZXJldW0vbXVpcl9nbGFjaWVyL3ZtL2luc3RydWN0aW9ucy9lbnZpcm9ubWVudC9pbmRleC5yc3Q6NDc6PGF1dG9zdW1tYXJ5PpRoH0sBaCBqSQgAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxq6QMAAGgdTmgfTmggahUIAAB1YmVoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcauQDAABoHU5oH05oIGrhAwAAdWJq5QMAACmBlH2UKGgFaAZoB12UKGrqAwAAKYGUfZQoaAVoBmgHXZRoaSmBlH2UKGgFjFg6b2JqOmByZXR1cm5kYXRhY29weSA8ZXRoZXJldW0ubXVpcl9nbGFjaWVyLnZtLmluc3RydWN0aW9ucy5lbnZpcm9ubWVudC5yZXR1cm5kYXRhY29weT5glGgHXZRobimBlH2UKGgFaAZoB12UavYDAAApgZR9lChoBWpvCAAAaAddlGg/jA5yZXR1cm5kYXRhY29weZSFlIGUfZQoaAVoBmgganQIAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UKGoBBAAAjAJweZSMBnB5LW9iapRlaBVdlGgXXZRoGV2UdWgcavUDAABoHU5oH05oIGpxCAAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlIwIaW50ZXJuYWyUiIwFcmVmaWSUjEBldGhlcmV1bS5tdWlyX2dsYWNpZXIudm0uaW5zdHJ1Y3Rpb25zLmVudmlyb25tZW50LnJldHVybmRhdGFjb3B5lIwIcmVmdGl0bGWUjEBldGhlcmV1bS5tdWlyX2dsYWNpZXIudm0uaW5zdHJ1Y3Rpb25zLmVudmlyb25tZW50LnJldHVybmRhdGFjb3B5lHVoHGhtaB1OaB9OaCBqbQgAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoaGgdjIovaG9tZS9ydW5uZXIvd29yay9leGVjdXRpb24tc3BlY3MvZXhlY3V0aW9uLXNwZWNzL2RvYy9hdXRvYXBpL2V0aGVyZXVtL211aXJfZ2xhY2llci92bS9pbnN0cnVjdGlvbnMvZW52aXJvbm1lbnQvaW5kZXgucnN0OjQ3OjxhdXRvc3VtbWFyeT6UaB9LAWggamoIAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaukDAABoHU5oH05oIGpnCAAAdWJq6gMAACmBlH2UKGgFaAZoB12UaGkpgZR9lChoBYw2Q29waWVzIGRhdGEgZnJvbSB0aGUgcmV0dXJuIGRhdGEgYnVmZmVyIGNvZGUgdG8gbWVtb3J5lGgHXZRoP4w2Q29waWVzIGRhdGEgZnJvbSB0aGUgcmV0dXJuIGRhdGEgYnVmZmVyIGNvZGUgdG8gbWVtb3J5lIWUgZR9lChoBWgGaCBqnggAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoaGgdjIovaG9tZS9ydW5uZXIvd29yay9leGVjdXRpb24tc3BlY3MvZXhlY3V0aW9uLXNwZWNzL2RvYy9hdXRvYXBpL2V0aGVyZXVtL211aXJfZ2xhY2llci92bS9pbnN0cnVjdGlvbnMvZW52aXJvbm1lbnQvaW5kZXgucnN0OjQ3OjxhdXRvc3VtbWFyeT6UaB9LAWggapsIAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaukDAABoHU5oH05oIGpnCAAAdWJlaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGrkAwAAaB1OaB9OaCBq4QMAAHViauUDAAApgZR9lChoBWgGaAddlChq6gMAACmBlH2UKGgFaAZoB12UaGkpgZR9lChoBYxSOm9iajpgZXh0Y29kZWhhc2ggPGV0aGVyZXVtLm11aXJfZ2xhY2llci52bS5pbnN0cnVjdGlvbnMuZW52aXJvbm1lbnQuZXh0Y29kZWhhc2g+YJRoB12UaG4pgZR9lChoBWgGaAddlGr2AwAAKYGUfZQoaAVqwQgAAGgHXZRoP4wLZXh0Y29kZWhhc2iUhZSBlH2UKGgFaAZoIGrGCAAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlChqAQQAAIwCcHmUjAZweS1vYmqUZWgVXZRoF12UaBldlHVoHGr1AwAAaB1OaB9OaCBqwwgAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZSMCGludGVybmFslIiMBXJlZmlklIw9ZXRoZXJldW0ubXVpcl9nbGFjaWVyLnZtLmluc3RydWN0aW9ucy5lbnZpcm9ubWVudC5leHRjb2RlaGFzaJSMCHJlZnRpdGxllIw9ZXRoZXJldW0ubXVpcl9nbGFjaWVyLnZtLmluc3RydWN0aW9ucy5lbnZpcm9ubWVudC5leHRjb2RlaGFzaJR1aBxobWgdTmgfTmggar8IAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaGhoHYyKL2hvbWUvcnVubmVyL3dvcmsvZXhlY3V0aW9uLXNwZWNzL2V4ZWN1dGlvbi1zcGVjcy9kb2MvYXV0b2FwaS9ldGhlcmV1bS9tdWlyX2dsYWNpZXIvdm0vaW5zdHJ1Y3Rpb25zL2Vudmlyb25tZW50L2luZGV4LnJzdDo0Nzo8YXV0b3N1bW1hcnk+lGgfSwFoIGq8CAAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGrpAwAAaB1OaB9OaCBquQgAAHViauoDAAApgZR9lChoBWgGaAddlGhpKYGUfZQoaAWMNVJldHVybnMgdGhlIGtlY2NhazI1NiBoYXNoIG9mIGEgY29udHJhY3TigJlzIGJ5dGVjb2RllGgHXZRoP4w1UmV0dXJucyB0aGUga2VjY2FrMjU2IGhhc2ggb2YgYSBjb250cmFjdOKAmXMgYnl0ZWNvZGWUhZSBlH2UKGgFaAZoIGrwCAAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhoaB2Mii9ob21lL3J1bm5lci93b3JrL2V4ZWN1dGlvbi1zcGVjcy9leGVjdXRpb24tc3BlY3MvZG9jL2F1dG9hcGkvZXRoZXJldW0vbXVpcl9nbGFjaWVyL3ZtL2luc3RydWN0aW9ucy9lbnZpcm9ubWVudC9pbmRleC5yc3Q6NDc6PGF1dG9zdW1tYXJ5PpRoH0sBaCBq7QgAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxq6QMAAGgdTmgfTmggarkIAAB1YmVoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcauQDAABoHU5oH05oIGrhAwAAdWJq5QMAACmBlH2UKGgF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H05oIGoOCgAAdWJlaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGoMCgAAaB1oHmgfTmggarQJAAB1YmVoDn2UKGgQXZRoE12UKGoCCgAAjAhmdW5jdGlvbpRlaBVdlGgXXZRoGV2UjAZkb21haW6UagIKAACMB29ianR5cGWUanoKAACMCGRlc2N0eXBllGp6CgAAjAdub2luZGV4lIl1aBxqsgkAAGgdTmgfTmggapYJAAB1YmgAjA1saXRlcmFsX2Jsb2NrlJOUKYGUfZQoaAWM2WRlZiBhZGRyZXNzKGV2bTogRXZtKSAtPiBOb25lOgogICAgIyBTVEFDSwogICAgcGFzcwoKICAgICMgR0FTCiAgICBjaGFyZ2VfZ2FzKGV2bSwgR0FTX0JBU0UpCgogICAgIyBPUEVSQVRJT04KICAgIHB1c2goZXZtLnN0YWNrLCBVMjU2LmZyb21fYmVfYnl0ZXMoZXZtLm1lc3NhZ2UuY3VycmVudF90YXJnZXQpKQoKICAgICMgUFJPR1JBTSBDT1VOVEVSCiAgICBldm0ucGMgKz0gMQqUaAddlGg/jNlkZWYgYWRkcmVzcyhldm06IEV2bSkgLT4gTm9uZToKICAgICMgU1RBQ0sKICAgIHBhc3MKCiAgICAjIEdBUwogICAgY2hhcmdlX2dhcyhldm0sIEdBU19CQVNFKQoKICAgICMgT1BFUkFUSU9OCiAgICBwdXNoKGV2bS5zdGFjaywgVTI1Ni5mcm9tX2JlX2J5dGVzKGV2bS5tZXNzYWdlLmN1cnJlbnRfdGFyZ2V0KSkKCiAgICAjIFBST0dSQU0gQ09VTlRFUgogICAgZXZtLnBjICs9IDEKlIWUgZR9lChoBWgGaCBqhAoAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZSMBnNvdXJjZZSMai9ob21lL3J1bm5lci93b3JrL2V4ZWN1dGlvbi1zcGVjcy9leGVjdXRpb24tc3BlY3Mvc3JjL2V0aGVyZXVtL211aXJfZ2xhY2llci92bS9pbnN0cnVjdGlvbnMvZW52aXJvbm1lbnQucHmUjAl4bWw6c3BhY2WUaoADAACMBWZvcmNllImMCGxhbmd1YWdllIwGcHl0aG9ulIwOaGlnaGxpZ2h0X2FyZ3OUfZSMC2xpbmVub3N0YXJ0lEsBc4wHbGluZW5vc5SJdWgcaoIKAABoHWgeaB9LQWggapYJAAB1YmVoDn2UKGgQXZRqDAEAAGFoE12UaBVdlIwHYWRkcmVzc5RhaBddlGgZXZR1aBxoM2gdaB5oH0s0aCBqhQkAAGghaAN1Ymg0KYGUfZQoaAVoBmgHXZQoaDkpgZR9lChoBYwHYmFsYW5jZZRoB12UaD+MB2JhbGFuY2WUhZSBlH2UKGgFaAZoIGqmCgAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGg4aB1oHmgfS0ZoIGqjCgAAaCFoA3ViaCQpgZR9lChoBWgGaAddlGgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZSMB2VudHJpZXOUXZR1aBxoI2gdaERoH0sAaCBqowoAAGghaAN1YmqzCQAAKYGUfZQoaAVoBmgHXZQoargJAAApgZR9lChoBYwMYmFsYW5jZShldm0plGgHXZQoar4JAAApgZR9lChoBYwHYmFsYW5jZZRoB12UaD+MB2JhbGFuY2WUhZSBlH2UKGgFaAZoIGrGCgAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlChqygkAAGrLCQAAaswJAABqzQkAAGVoFV2UaBddlGgZXZSMCXhtbDpzcGFjZZRqgAMAAHVoHGq9CQAAaB1oHmgfTmggasIKAAB1YmrTCQAAKYGUfZQoaAWMA2V2bZRoB12UatkJAAApgZR9lChoBYwDZXZtlGgHXZRq3wkAACmBlH2UKGgFaAZoB12UaD+MA2V2bZSFlIGUfZQoaAVoBmggat0KAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UauoJAABhaBVdlGgXXZRoGV2UdWgcat4JAABoHU5oH05oIGrZCgAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlIwJeG1sOnNwYWNllGqAAwAAdWgcatgJAABoHU5oH05oIGrVCgAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlIwJeG1sOnNwYWNllGqAAwAAdWgcatIJAABoHWgeaB9OaCBqwgoAAHViZWgOfZQoaBBdlIw5ZXRoZXJldW0ubXVpcl9nbGFjaWVyLnZtLmluc3RydWN0aW9ucy5lbnZpcm9ubWVudC5iYWxhbmNllGFoE12UKGoACgAAagEKAACMAnB5lGoDCgAAagQKAABlaBVdlGgXXZRoGV2UjAZtb2R1bGWUagkKAACMBWNsYXNzlGgGjAhmdWxsbmFtZZRqyAoAAHVoHGq3CQAAaB1oHmgfS0loIGq/CgAAdWJqDQoAACmBlH2UKGgFaAZoB12UKGhpKYGUfZQoaAWMN1B1c2hlcyB0aGUgYmFsYW5jZSBvZiB0aGUgZ2l2ZW4gYWNjb3VudCBvbnRvIHRoZSBzdGFjay6UaAddlGg/jDdQdXNoZXMgdGhlIGJhbGFuY2Ugb2YgdGhlIGdpdmVuIGFjY291bnQgb250byB0aGUgc3RhY2sulIWUgZR9lChoBWgGaCBqBgsAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoaGgdaB5oH0tMaCBqAwsAAHViaiAKAAApgZR9lChoBWgGaAddlGolCgAAKYGUfZQoaAVoBmgHXZQoaioKAAApgZR9lChoBYwKUGFyYW1ldGVyc5RoB12UaD+MClBhcmFtZXRlcnOUhZSBlH2UKGgFaAZoIGoaCwAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGopCgAAaB1oHmgfSwBoIGoXCwAAdWJqOgoAACmBlH2UKGgFaAZoB12UaGkpgZR9lChoBYwdZXZtIC0tIFRoZSBjdXJyZW50IEVWTSBmcmFtZS6UaAddlChqQwoAACmBlH2UKGgFjANldm2UaAddlGg/jANldm2UhZSBlH2UKGgFaAZoIGovCwAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlIwLcmVmc3BlY2lmaWOUiIwJcHk6bW9kdWxllGoJCgAAjAhweTpjbGFzc5ROdWgcakIKAABoHU5oH05oIGorCwAAdWJoP4wbIOKAkyBUaGUgY3VycmVudCBFVk0gZnJhbWUulIWUgZR9lChoBWgGaCBqKwsAAGghaANoHWhEaB9LAHViZWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoaGgdTmgfTmggaigLAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcajkKAABoHU5oH05oIGoXCwAAdWJlaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGokCgAAaB1OaB9OaCBqFAsAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxqHwoAAGgdTmgfTmggagMLAAB1YmVoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcagwKAABoHWgeaB9OaCBqvwoAAHViZWgOfZQoaBBdlGgTXZQoavwKAACMCGZ1bmN0aW9ulGVoFV2UaBddlGgZXZSMBmRvbWFpbpRq/AoAAIwHb2JqdHlwZZRqZQsAAIwIZGVzY3R5cGWUamULAACMB25vaW5kZXiUiXVoHGqyCQAAaB1oRGgfSwBoIGqjCgAAaCFoA3ViaoMKAAApgZR9lChoBVhbAQAAZGVmIGJhbGFuY2UoZXZtOiBFdm0pIC0+IE5vbmU6CiAgICAjIFNUQUNLCiAgICBhZGRyZXNzID0gdG9fYWRkcmVzcyhwb3AoZXZtLnN0YWNrKSkKCiAgICAjIEdBUwogICAgY2hhcmdlX2dhcyhldm0sIEdBU19CQUxBTkNFKQoKICAgICMgT1BFUkFUSU9OCiAgICAjIE5vbi1leGlzdGVudCBhY2NvdW50cyBkZWZhdWx0IHRvIEVNUFRZX0FDQ09VTlQsIHdoaWNoIGhhcyBiYWxhbmNlIDAuCiAgICBiYWxhbmNlID0gZ2V0X2FjY291bnQoZXZtLmVudi5zdGF0ZSwgYWRkcmVzcykuYmFsYW5jZQoKICAgIHB1c2goZXZtLnN0YWNrLCBiYWxhbmNlKQoKICAgICMgUFJPR1JBTSBDT1VOVEVSCiAgICBldm0ucGMgKz0gMQqUaAddlChoP4xjZGVmIGJhbGFuY2UoZXZtOiBFdm0pIC0+IE5vbmU6CiAgICAjIFNUQUNLCiAgICBhZGRyZXNzID0gdG9fYWRkcmVzcyhwb3AoZXZtLnN0YWNrKSkKCiAgICAjIEdBUwogICAglIWUgZR9lChoBWgGaCBqbQsAAGghaANoHWhEaB9LAHViat8JAAApgZR9lChoBWgGaAddlGg/jC5pZiBhZGRyZXNzIGluIGV2bS5hY2Nlc3NlZF9hZGRyZXNzZXM6CiAgICAgICAglIWUgZR9lChoBWgGaCBqdQsAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZSMDGNoYW5nZS1hZGRlZJRhaBVdlGgXXZRoGV2UdWgcat4JAABoIGptCwAAaCFoA2gdaERoH0sAdWJoP4wQY2hhcmdlX2dhcyhldm0sIJSFlIGUfZQoaAVoBmggam0LAABoIWgDaB1oRGgfSwB1YmrfCQAAKYGUfZQoaAVoBmgHXZRoP4wMR0FTX0JBTEFOQ0UplIWUgZR9lChoBWgGaCBqhwsAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZSMD2NoYW5nZS1yZXBsYWNlZJRhaBVdlGgXXZRoGV2UdWgcat4JAABoIGptCwAAaCFoA2gdaERoH0sAdWJq3wkAACmBlH2UKGgFaAZoB12UaD+Md0dBU19XQVJNX0FDQ0VTUykKICAgIGVsc2U6CiAgICAgICAgZXZtLmFjY2Vzc2VkX2FkZHJlc3Nlcy5hZGQoYWRkcmVzcykKICAgICAgICBjaGFyZ2VfZ2FzKGV2bSwgR0FTX0NPTERfQUNDT1VOVF9BQ0NFU1MplIWUgZR9lChoBWgGaCBqlQsAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZSMEmNoYW5nZS1yZXBsYWNlbWVudJRhaBVdlGgXXZRoGV2UdWgcat4JAABoIGptCwAAaCFoA2gdaERoH0sAdWJoP4zcCgogICAgIyBPUEVSQVRJT04KICAgICMgTm9uLWV4aXN0ZW50IGFjY291bnRzIGRlZmF1bHQgdG8gRU1QVFlfQUNDT1VOVCwgd2hpY2ggaGFzIGJhbGFuY2UgMC4KICAgIGJhbGFuY2UgPSBnZXRfYWNjb3VudChldm0uZW52LnN0YXRlLCBhZGRyZXNzKS5iYWxhbmNlCgogICAgcHVzaChldm0uc3RhY2ssIGJhbGFuY2UpCgogICAgIyBQUk9HUkFNIENPVU5URVIKICAgIGV2bS5wYyArPSAxCpSFlIGUfZQoaAVoBmggam0LAABoIWgDaB1oRGgfSwB1YmVoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UjAZzb3VyY2WUjGovaG9tZS9ydW5uZXIvd29yay9leGVjdXRpb24tc3BlY3MvZXhlY3V0aW9uLXNwZWNzL3NyYy9ldGhlcmV1bS9tdWlyX2dsYWNpZXIvdm0vaW5zdHJ1Y3Rpb25zL2Vudmlyb25tZW50LnB5lIwJeG1sOnNwYWNllGqAAwAAjAVmb3JjZZSJjAhsYW5ndWFnZZSMBnB5dGhvbpSMDmhpZ2hsaWdodF9hcmdzlH2UapoKAABLAXOMB2xpbmVub3OUiXVoHGqCCgAAaB1oHmgfS1NoIGqjCgAAaCFoA3ViZWgOfZQoaBBdlGouAQAAYWgTXZRoFV2UjAdiYWxhbmNllGFoF12UaBldlHVoHGgzaB1oHmgfS0ZoIGqFCQAAaCFoA3ViaDQpgZR9lChoBWgGaAddlChoOSmBlH2UKGgFjAZvcmlnaW6UaAddlGg/jAZvcmlnaW6UhZSBlH2UKGgFaAZoIGrACwAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGg4aB1oHmgfS1hoIGq9CwAAdWJoJCmBlH2UKGgFaAZoB12UaA59lChoEF2UaBNdlGgVXZRoF12UaBldlIwHZW50cmllc5RdlHVoHGgjaB1OaB9OaCBqvQsAAHViarMJAAApgZR9lChoBWgGaAddlChquAkAACmBlH2UKGgFjAtvcmlnaW4oZXZtKZRoB12UKGq+CQAAKYGUfZQoaAWMBm9yaWdpbpRoB12UaD+MBm9yaWdpbpSFlIGUfZQoaAVoBmggauALAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UKGrKCQAAassJAABqzAkAAGrNCQAAZWgVXZRoF12UaBldlIwJeG1sOnNwYWNllGqAAwAAdWgcar0JAABoHWgeaB9OaCBq3AsAAHViatMJAAApgZR9lChoBYwDZXZtlGgHXZRq2QkAACmBlH2UKGgFjANldm2UaAddlGrfCQAAKYGUfZQoaAVoBmgHXZRoP4wDZXZtlIWUgZR9lChoBWgGaCBq9wsAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZRq6gkAAGFoFV2UaBddlGgZXZR1aBxq3gkAAGgdTmgfTmggavMLAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UjAl4bWw6c3BhY2WUaoADAAB1aBxq2AkAAGgdTmgfTmggau8LAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UjAl4bWw6c3BhY2WUaoADAAB1aBxq0gkAAGgdaB5oH05oIGrcCwAAdWJlaA59lChoEF2UjDhldGhlcmV1bS5tdWlyX2dsYWNpZXIudm0uaW5zdHJ1Y3Rpb25zLmVudmlyb25tZW50Lm9yaWdpbpRhaBNdlChqAAoAAGoBCgAAjAJweZRqAwoAAGoECgAAZWgVXZRoF12UaBldlIwGbW9kdWxllGoJCgAAjAVjbGFzc5RoBowIZnVsbG5hbWWUauILAAB1aBxqtwkAAGgdaB5oH0tbaCBq2QsAAHViag0KAAApgZR9lChoBWgGaAddlChoaSmBlH2UKGgFjGpQdXNoZXMgdGhlIGFkZHJlc3Mgb2YgdGhlIG9yaWdpbmFsIHRyYW5zYWN0aW9uIHNlbmRlciB0byB0aGUgc3RhY2suClRoZSBvcmlnaW4gYWRkcmVzcyBjYW4gb25seSBiZSBhbiBFT0EulGgHXZRoP4xqUHVzaGVzIHRoZSBhZGRyZXNzIG9mIHRoZSBvcmlnaW5hbCB0cmFuc2FjdGlvbiBzZW5kZXIgdG8gdGhlIHN0YWNrLgpUaGUgb3JpZ2luIGFkZHJlc3MgY2FuIG9ubHkgYmUgYW4gRU9BLpSFlIGUfZQoaAVoBmggaiAMAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaGhoHWgeaB9LXmggah0MAAB1YmogCgAAKYGUfZQoaAVoBmgHXZRqJQoAACmBlH2UKGgFaAZoB12UKGoqCgAAKYGUfZQoaAWMClBhcmFtZXRlcnOUaAddlGg/jApQYXJhbWV0ZXJzlIWUgZR9lChoBWgGaCBqNAwAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxqKQoAAGgdaB5oH0sAaCBqMQwAAHViajoKAAApgZR9lChoBWgGaAddlGhpKYGUfZQoaAWMHWV2bSAtLSBUaGUgY3VycmVudCBFVk0gZnJhbWUulGgHXZQoakMKAAApgZR9lChoBYwDZXZtlGgHXZRoP4wDZXZtlIWUgZR9lChoBWgGaCBqSQwAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZSMC3JlZnNwZWNpZmljlIiMCXB5Om1vZHVsZZRqCQoAAIwIcHk6Y2xhc3OUTnVoHGpCCgAAaB1OaB9OaCBqRQwAAHViaD+MGyDigJMgVGhlIGN1cnJlbnQgRVZNIGZyYW1lLpSFlIGUfZQoaAVoBmggakUMAABoIWgDaB1oRGgfSwB1YmVoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaGhoHU5oH05oIGpCDAAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGo5CgAAaB1OaB9OaCBqMQwAAHViZWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxqJAoAAGgdTmgfTmggai4MAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcah8KAABoHU5oH05oIGodDAAAdWJlaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGoMCgAAaB1oHmgfTmggatkLAAB1YmVoDn2UKGgQXZRoE12UKGoWDAAAjAhmdW5jdGlvbpRlaBVdlGgXXZRoGV2UjAZkb21haW6UahYMAACMB29ianR5cGWUan8MAACMCGRlc2N0eXBllGp/DAAAjAdub2luZGV4lIl1aBxqsgkAAGgdTmgfTmggar0LAAB1YmqDCgAAKYGUfZQoaAWMzGRlZiBvcmlnaW4oZXZtOiBFdm0pIC0+IE5vbmU6CiAgICAjIFNUQUNLCiAgICBwYXNzCgogICAgIyBHQVMKICAgIGNoYXJnZV9nYXMoZXZtLCBHQVNfQkFTRSkKCiAgICAjIE9QRVJBVElPTgogICAgcHVzaChldm0uc3RhY2ssIFUyNTYuZnJvbV9iZV9ieXRlcyhldm0uZW52Lm9yaWdpbikpCgogICAgIyBQUk9HUkFNIENPVU5URVIKICAgIGV2bS5wYyArPSAxCpRoB12UaD+MzGRlZiBvcmlnaW4oZXZtOiBFdm0pIC0+IE5vbmU6CiAgICAjIFNUQUNLCiAgICBwYXNzCgogICAgIyBHQVMKICAgIGNoYXJnZV9nYXMoZXZtLCBHQVNfQkFTRSkKCiAgICAjIE9QRVJBVElPTgogICAgcHVzaChldm0uc3RhY2ssIFUyNTYuZnJvbV9iZV9ieXRlcyhldm0uZW52Lm9yaWdpbikpCgogICAgIyBQUk9HUkFNIENPVU5URVIKICAgIGV2bS5wYyArPSAxCpSFlIGUfZQoaAVoBmggaocMAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UjAZzb3VyY2WUjGovaG9tZS9ydW5uZXIvd29yay9leGVjdXRpb24tc3BlY3MvZXhlY3V0aW9uLXNwZWNzL3NyYy9ldGhlcmV1bS9tdWlyX2dsYWNpZXIvdm0vaW5zdHJ1Y3Rpb25zL2Vudmlyb25tZW50LnB5lIwJeG1sOnNwYWNllGqAAwAAjAVmb3JjZZSJjAhsYW5ndWFnZZSMBnB5dGhvbpSMDmhpZ2hsaWdodF9hcmdzlH2UapoKAABLAXOMB2xpbmVub3OUiXVoHGqCCgAAaB1oHmgfS2ZoIGq9CwAAdWJlaA59lChoEF2UalABAABhaBNdlGgVXZSMBm9yaWdpbpRhaBddlGgZXZR1aBxoM2gdaB5oH0tYaCBqhQkAAGghaAN1Ymg0KYGUfZQoaAVoBmgHXZQoaDkpgZR9lChoBYwGY2FsbGVylGgHXZRoP4wGY2FsbGVylIWUgZR9lChoBWgGaCBqqAwAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoOGgdaB5oH0traCBqpQwAAHViaCQpgZR9lChoBWgGaAddlGgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZSMB2VudHJpZXOUXZR1aBxoI2gdTmgfTmggaqUMAAB1YmqzCQAAKYGUfZQoaAVoBmgHXZQoargJAAApgZR9lChoBYwLY2FsbGVyKGV2bSmUaAddlChqvgkAACmBlH2UKGgFjAZjYWxsZXKUaAddlGg/jAZjYWxsZXKUhZSBlH2UKGgFaAZoIGrIDAAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlChqygkAAGrLCQAAaswJAABqzQkAAGVoFV2UaBddlGgZXZSMCXhtbDpzcGFjZZRqgAMAAHVoHGq9CQAAaB1oHmgfTmggasQMAAB1YmrTCQAAKYGUfZQoaAWMA2V2bZRoB12UatkJAAApgZR9lChoBYwDZXZtlGgHXZRq3wkAACmBlH2UKGgFaAZoB12UaD+MA2V2bZSFlIGUfZQoaAVoBmggat8MAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UauoJAABhaBVdlGgXXZRoGV2UdWgcat4JAABoHU5oH05oIGrbDAAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlIwJeG1sOnNwYWNllGqAAwAAdWgcatgJAABoHU5oH05oIGrXDAAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlIwJeG1sOnNwYWNllGqAAwAAdWgcatIJAABoHWgeaB9OaCBqxAwAAHViZWgOfZQoaBBdlIw4ZXRoZXJldW0ubXVpcl9nbGFjaWVyLnZtLmluc3RydWN0aW9ucy5lbnZpcm9ubWVudC5jYWxsZXKUYWgTXZQoagAKAABqAQoAAIwCcHmUagMKAABqBAoAAGVoFV2UaBddlGgZXZSMBm1vZHVsZZRqCQoAAIwFY2xhc3OUaAaMCGZ1bGxuYW1llGrKDAAAdWgcarcJAABoHWgeaB9LbmggasEMAAB1YmoNCgAAKYGUfZQoaAVoBmgHXZQoaGkpgZR9lChoBYwwUHVzaGVzIHRoZSBhZGRyZXNzIG9mIHRoZSBjYWxsZXIgb250byB0aGUgc3RhY2sulGgHXZRoP4wwUHVzaGVzIHRoZSBhZGRyZXNzIG9mIHRoZSBjYWxsZXIgb250byB0aGUgc3RhY2sulIWUgZR9lChoBWgGaCBqCA0AAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoaGgdaB5oH0txaCBqBQ0AAHViaiAKAAApgZR9lChoBWgGaAddlGolCgAAKYGUfZQoaAVoBmgHXZQoaioKAAApgZR9lChoBYwKUGFyYW1ldGVyc5RoB12UaD+MClBhcmFtZXRlcnOUhZSBlH2UKGgFaAZoIGocDQAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGopCgAAaB1oHmgfSwBoIGoZDQAAdWJqOgoAACmBlH2UKGgFaAZoB12UaGkpgZR9lChoBYwdZXZtIC0tIFRoZSBjdXJyZW50IEVWTSBmcmFtZS6UaAddlChqQwoAACmBlH2UKGgFjANldm2UaAddlGg/jANldm2UhZSBlH2UKGgFaAZoIGoxDQAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlIwLcmVmc3BlY2lmaWOUiIwJcHk6bW9kdWxllGoJCgAAjAhweTpjbGFzc5ROdWgcakIKAABoHU5oH05oIGotDQAAdWJoP4wbIOKAkyBUaGUgY3VycmVudCBFVk0gZnJhbWUulIWUgZR9lChoBWgGaCBqLQ0AAGghaANoHWhEaB9LAHViZWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoaGgdTmgfTmggaioNAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcajkKAABoHU5oH05oIGoZDQAAdWJlaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGokCgAAaB1OaB9OaCBqFg0AAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxqHwoAAGgdTmgfTmggagUNAAB1YmVoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcagwKAABoHWgeaB9OaCBqwQwAAHViZWgOfZQoaBBdlGgTXZQoav4MAACMCGZ1bmN0aW9ulGVoFV2UaBddlGgZXZSMBmRvbWFpbpRq/gwAAIwHb2JqdHlwZZRqZw0AAIwIZGVzY3R5cGWUamcNAACMB25vaW5kZXiUiXVoHGqyCQAAaB1OaB9OaCBqpQwAAHViaoMKAAApgZR9lChoBYzQZGVmIGNhbGxlcihldm06IEV2bSkgLT4gTm9uZToKICAgICMgU1RBQ0sKICAgIHBhc3MKCiAgICAjIEdBUwogICAgY2hhcmdlX2dhcyhldm0sIEdBU19CQVNFKQoKICAgICMgT1BFUkFUSU9OCiAgICBwdXNoKGV2bS5zdGFjaywgVTI1Ni5mcm9tX2JlX2J5dGVzKGV2bS5tZXNzYWdlLmNhbGxlcikpCgogICAgIyBQUk9HUkFNIENPVU5URVIKICAgIGV2bS5wYyArPSAxCpRoB12UaD+M0GRlZiBjYWxsZXIoZXZtOiBFdm0pIC0+IE5vbmU6CiAgICAjIFNUQUNLCiAgICBwYXNzCgogICAgIyBHQVMKICAgIGNoYXJnZV9nYXMoZXZtLCBHQVNfQkFTRSkKCiAgICAjIE9QRVJBVElPTgogICAgcHVzaChldm0uc3RhY2ssIFUyNTYuZnJvbV9iZV9ieXRlcyhldm0ubWVzc2FnZS5jYWxsZXIpKQoKICAgICMgUFJPR1JBTSBDT1VOVEVSCiAgICBldm0ucGMgKz0gMQqUhZSBlH2UKGgFaAZoIGpvDQAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlIwGc291cmNllIxqL2hvbWUvcnVubmVyL3dvcmsvZXhlY3V0aW9uLXNwZWNzL2V4ZWN1dGlvbi1zcGVjcy9zcmMvZXRoZXJldW0vbXVpcl9nbGFjaWVyL3ZtL2luc3RydWN0aW9ucy9lbnZpcm9ubWVudC5weZSMCXhtbDpzcGFjZZRqgAMAAIwFZm9yY2WUiYwIbGFuZ3VhZ2WUjAZweXRob26UjA5oaWdobGlnaHRfYXJnc5R9lGqaCgAASwFzjAdsaW5lbm9zlIl1aBxqggoAAGgdaB5oH0t4aCBqpQwAAHViZWgOfZQoaBBdlGpyAQAAYWgTXZRoFV2UjAZjYWxsZXKUYWgXXZRoGV2UdWgcaDNoHWgeaB9La2ggaoUJAABoIWgDdWJoNCmBlH2UKGgFaAZoB12UKGg5KYGUfZQoaAWMCWNhbGx2YWx1ZZRoB12UaD+MCWNhbGx2YWx1ZZSFlIGUfZQoaAVoBmggapANAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaDhoHWgeaB9LfWggao0NAAB1YmgkKYGUfZQoaAVoBmgHXZRoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UjAdlbnRyaWVzlF2UdWgcaCNoHU5oH05oIGqNDQAAdWJqswkAACmBlH2UKGgFaAZoB12UKGq4CQAAKYGUfZQoaAWMDmNhbGx2YWx1ZShldm0plGgHXZQoar4JAAApgZR9lChoBYwJY2FsbHZhbHVllGgHXZRoP4wJY2FsbHZhbHVllIWUgZR9lChoBWgGaCBqsA0AAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZQoasoJAABqywkAAGrMCQAAas0JAABlaBVdlGgXXZRoGV2UjAl4bWw6c3BhY2WUaoADAAB1aBxqvQkAAGgdaB5oH05oIGqsDQAAdWJq0wkAACmBlH2UKGgFjANldm2UaAddlGrZCQAAKYGUfZQoaAWMA2V2bZRoB12Uat8JAAApgZR9lChoBWgGaAddlGg/jANldm2UhZSBlH2UKGgFaAZoIGrHDQAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlGrqCQAAYWgVXZRoF12UaBldlHVoHGreCQAAaB1OaB9OaCBqww0AAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZSMCXhtbDpzcGFjZZRqgAMAAHVoHGrYCQAAaB1OaB9OaCBqvw0AAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZSMCXhtbDpzcGFjZZRqgAMAAHVoHGrSCQAAaB1oHmgfTmggaqwNAAB1YmVoDn2UKGgQXZSMO2V0aGVyZXVtLm11aXJfZ2xhY2llci52bS5pbnN0cnVjdGlvbnMuZW52aXJvbm1lbnQuY2FsbHZhbHVllGFoE12UKGoACgAAagEKAACMAnB5lGoDCgAAagQKAABlaBVdlGgXXZRoGV2UjAZtb2R1bGWUagkKAACMBWNsYXNzlGgGjAhmdWxsbmFtZZRqsg0AAHVoHGq3CQAAaB1oHmgfS4BoIGqpDQAAdWJqDQoAACmBlH2UKGgFaAZoB12UKGhpKYGUfZQoaAWMOlB1c2ggdGhlIHZhbHVlIChpbiB3ZWkpIHNlbnQgd2l0aCB0aGUgY2FsbCBvbnRvIHRoZSBzdGFjay6UaAddlGg/jDpQdXNoIHRoZSB2YWx1ZSAoaW4gd2VpKSBzZW50IHdpdGggdGhlIGNhbGwgb250byB0aGUgc3RhY2sulIWUgZR9lChoBWgGaCBq8A0AAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoaGgdaB5oH0uDaCBq7Q0AAHViaiAKAAApgZR9lChoBWgGaAddlGolCgAAKYGUfZQoaAVoBmgHXZQoaioKAAApgZR9lChoBYwKUGFyYW1ldGVyc5RoB12UaD+MClBhcmFtZXRlcnOUhZSBlH2UKGgFaAZoIGoEDgAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGopCgAAaB1oHmgfSwBoIGoBDgAAdWJqOgoAACmBlH2UKGgFaAZoB12UaGkpgZR9lChoBYwdZXZtIC0tIFRoZSBjdXJyZW50IEVWTSBmcmFtZS6UaAddlChqQwoAACmBlH2UKGgFjANldm2UaAddlGg/jANldm2UhZSBlH2UKGgFaAZoIGoZDgAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlIwLcmVmc3BlY2lmaWOUiIwJcHk6bW9kdWxllGoJCgAAjAhweTpjbGFzc5ROdWgcakIKAABoHU5oH05oIGoVDgAAdWJoP4wbIOKAkyBUaGUgY3VycmVudCBFVk0gZnJhbWUulIWUgZR9lChoBWgGaCBqFQ4AAGghaANoHWhEaB9LAHViZWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoaGgdTmgfTmggahIOAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcajkKAABoHU5oH05oIGoBDgAAdWJlaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGokCgAAaB1OaB9OaCBq/g0AAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxqHwoAAGgdTmgfTmggau0NAAB1YmVoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcagwKAABoHWgeaB9OaCBqqQ0AAHViZWgOfZQoaBBdlGgTXZQoauYNAACMCGZ1bmN0aW9ulGVoFV2UaBddlGgZXZSMBmRvbWFpbpRq5g0AAIwHb2JqdHlwZZRqTw4AAIwIZGVzY3R5cGWUak8OAACMB25vaW5kZXiUiXVoHGqyCQAAaB1OaB9OaCBqjQ0AAHViaoMKAAApgZR9lChoBYy+ZGVmIGNhbGx2YWx1ZShldm06IEV2bSkgLT4gTm9uZToKICAgICMgU1RBQ0sKICAgIHBhc3MKCiAgICAjIEdBUwogICAgY2hhcmdlX2dhcyhldm0sIEdBU19CQVNFKQoKICAgICMgT1BFUkFUSU9OCiAgICBwdXNoKGV2bS5zdGFjaywgZXZtLm1lc3NhZ2UudmFsdWUpCgogICAgIyBQUk9HUkFNIENPVU5URVIKICAgIGV2bS5wYyArPSAxCpRoB12UaD+MvmRlZiBjYWxsdmFsdWUoZXZtOiBFdm0pIC0+IE5vbmU6CiAgICAjIFNUQUNLCiAgICBwYXNzCgogICAgIyBHQVMKICAgIGNoYXJnZV9nYXMoZXZtLCBHQVNfQkFTRSkKCiAgICAjIE9QRVJBVElPTgogICAgcHVzaChldm0uc3RhY2ssIGV2bS5tZXNzYWdlLnZhbHVlKQoKICAgICMgUFJPR1JBTSBDT1VOVEVSCiAgICBldm0ucGMgKz0gMQqUhZSBlH2UKGgFaAZoIGpXDgAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlIwGc291cmNllIxqL2hvbWUvcnVubmVyL3dvcmsvZXhlY3V0aW9uLXNwZWNzL2V4ZWN1dGlvbi1zcGVjcy9zcmMvZXRoZXJldW0vbXVpcl9nbGFjaWVyL3ZtL2luc3RydWN0aW9ucy9lbnZpcm9ubWVudC5weZSMCXhtbDpzcGFjZZRqgAMAAIwFZm9yY2WUiYwIbGFuZ3VhZ2WUjAZweXRob26UjA5oaWdobGlnaHRfYXJnc5R9lGqaCgAASwFzjAdsaW5lbm9zlIl1aBxqggoAAGgdaB5oH0uKaCBqjQ0AAHViZWgOfZQoaBBdlGqUAQAAYWgTXZRoFV2UjAljYWxsdmFsdWWUYWgXXZRoGV2UdWgcaDNoHWgeaB9LfWggaoUJAABoIWgDdWJoNCmBlH2UKGgFaAZoB12UKGg5KYGUfZQoaAWMDGNhbGxkYXRhbG9hZJRoB12UaD+MDGNhbGxkYXRhbG9hZJSFlIGUfZQoaAVoBmggangOAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaDhoHWgeaB9Lj2gganUOAAB1YmgkKYGUfZQoaAVoBmgHXZRoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UjAdlbnRyaWVzlF2UdWgcaCNoHU5oH05oIGp1DgAAdWJqswkAACmBlH2UKGgFaAZoB12UKGq4CQAAKYGUfZQoaAWMEWNhbGxkYXRhbG9hZChldm0plGgHXZQoar4JAAApgZR9lChoBYwMY2FsbGRhdGFsb2FklGgHXZRoP4wMY2FsbGRhdGFsb2FklIWUgZR9lChoBWgGaCBqmA4AAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZQoasoJAABqywkAAGrMCQAAas0JAABlaBVdlGgXXZRoGV2UjAl4bWw6c3BhY2WUaoADAAB1aBxqvQkAAGgdaB5oH05oIGqUDgAAdWJq0wkAACmBlH2UKGgFjANldm2UaAddlGrZCQAAKYGUfZQoaAWMA2V2bZRoB12Uat8JAAApgZR9lChoBWgGaAddlGg/jANldm2UhZSBlH2UKGgFaAZoIGqvDgAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlGrqCQAAYWgVXZRoF12UaBldlHVoHGreCQAAaB1OaB9OaCBqqw4AAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZSMCXhtbDpzcGFjZZRqgAMAAHVoHGrYCQAAaB1OaB9OaCBqpw4AAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZSMCXhtbDpzcGFjZZRqgAMAAHVoHGrSCQAAaB1oHmgfTmggapQOAAB1YmVoDn2UKGgQXZSMPmV0aGVyZXVtLm11aXJfZ2xhY2llci52bS5pbnN0cnVjdGlvbnMuZW52aXJvbm1lbnQuY2FsbGRhdGFsb2FklGFoE12UKGoACgAAagEKAACMAnB5lGoDCgAAagQKAABlaBVdlGgXXZRoGV2UjAZtb2R1bGWUagkKAACMBWNsYXNzlGgGjAhmdWxsbmFtZZRqmg4AAHVoHGq3CQAAaB1oHmgfS5JoIGqRDgAAdWJqDQoAACmBlH2UKGgFaAZoB12UKGhpKYGUfZQoaAWMXVB1c2ggYSB3b3JkICgzMiBieXRlcykgb2YgdGhlIGlucHV0IGRhdGEgYmVsb25naW5nIHRvIHRoZSBjdXJyZW50CmVudmlyb25tZW50IG9udG8gdGhlIHN0YWNrLpRoB12UaD+MXVB1c2ggYSB3b3JkICgzMiBieXRlcykgb2YgdGhlIGlucHV0IGRhdGEgYmVsb25naW5nIHRvIHRoZSBjdXJyZW50CmVudmlyb25tZW50IG9udG8gdGhlIHN0YWNrLpSFlIGUfZQoaAVoBmggatgOAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaGhoHWgeaB9LlWggatUOAAB1YmogCgAAKYGUfZQoaAVoBmgHXZRqJQoAACmBlH2UKGgFaAZoB12UKGoqCgAAKYGUfZQoaAWMClBhcmFtZXRlcnOUaAddlGg/jApQYXJhbWV0ZXJzlIWUgZR9lChoBWgGaCBq7A4AAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxqKQoAAGgdaB5oH0sAaCBq6Q4AAHViajoKAAApgZR9lChoBWgGaAddlGhpKYGUfZQoaAWMHWV2bSAtLSBUaGUgY3VycmVudCBFVk0gZnJhbWUulGgHXZQoakMKAAApgZR9lChoBYwDZXZtlGgHXZRoP4wDZXZtlIWUgZR9lChoBWgGaCBqAQ8AAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZSMC3JlZnNwZWNpZmljlIiMCXB5Om1vZHVsZZRqCQoAAIwIcHk6Y2xhc3OUTnVoHGpCCgAAaB1OaB9OaCBq/Q4AAHViaD+MGyDigJMgVGhlIGN1cnJlbnQgRVZNIGZyYW1lLpSFlIGUfZQoaAVoBmggav0OAABoIWgDaB1oRGgfSwB1YmVoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaGhoHU5oH05oIGr6DgAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGo5CgAAaB1OaB9OaCBq6Q4AAHViZWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxqJAoAAGgdTmgfTmggauYOAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcah8KAABoHU5oH05oIGrVDgAAdWJlaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGoMCgAAaB1oHmgfTmggapEOAAB1YmVoDn2UKGgQXZRoE12UKGrODgAAjAhmdW5jdGlvbpRlaBVdlGgXXZRoGV2UjAZkb21haW6Uas4OAACMB29ianR5cGWUajcPAACMCGRlc2N0eXBllGo3DwAAjAdub2luZGV4lIl1aBxqsgkAAGgdTmgfTmgganUOAAB1YmqDCgAAKYGUfZQoaAVYJwEAAGRlZiBjYWxsZGF0YWxvYWQoZXZtOiBFdm0pIC0+IE5vbmU6CiAgICAjIFNUQUNLCiAgICBzdGFydF9pbmRleCA9IHBvcChldm0uc3RhY2spCgogICAgIyBHQVMKICAgIGNoYXJnZV9nYXMoZXZtLCBHQVNfVkVSWV9MT1cpCgogICAgIyBPUEVSQVRJT04KICAgIHZhbHVlID0gYnVmZmVyX3JlYWQoZXZtLm1lc3NhZ2UuZGF0YSwgc3RhcnRfaW5kZXgsIFUyNTYoMzIpKQoKICAgIHB1c2goZXZtLnN0YWNrLCBVMjU2LmZyb21fYmVfYnl0ZXModmFsdWUpKQoKICAgICMgUFJPR1JBTSBDT1VOVEVSCiAgICBldm0ucGMgKz0gMQqUaAddlGg/WCcBAABkZWYgY2FsbGRhdGFsb2FkKGV2bTogRXZtKSAtPiBOb25lOgogICAgIyBTVEFDSwogICAgc3RhcnRfaW5kZXggPSBwb3AoZXZtLnN0YWNrKQoKICAgICMgR0FTCiAgICBjaGFyZ2VfZ2FzKGV2bSwgR0FTX1ZFUllfTE9XKQoKICAgICMgT1BFUkFUSU9OCiAgICB2YWx1ZSA9IGJ1ZmZlcl9yZWFkKGV2bS5tZXNzYWdlLmRhdGEsIHN0YXJ0X2luZGV4LCBVMjU2KDMyKSkKCiAgICBwdXNoKGV2bS5zdGFjaywgVTI1Ni5mcm9tX2JlX2J5dGVzKHZhbHVlKSkKCiAgICAjIFBST0dSQU0gQ09VTlRFUgogICAgZXZtLnBjICs9IDEKlIWUgZR9lChoBWgGaCBqPw8AAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZSMBnNvdXJjZZSMai9ob21lL3J1bm5lci93b3JrL2V4ZWN1dGlvbi1zcGVjcy9leGVjdXRpb24tc3BlY3Mvc3JjL2V0aGVyZXVtL211aXJfZ2xhY2llci92bS9pbnN0cnVjdGlvbnMvZW52aXJvbm1lbnQucHmUjAl4bWw6c3BhY2WUaoADAACMBWZvcmNllImMCGxhbmd1YWdllIwGcHl0aG9ulIwOaGlnaGxpZ2h0X2FyZ3OUfZRqmgoAAEsBc4wHbGluZW5vc5SJdWgcaoIKAABoHWgeaB9LnWgganUOAAB1YmVoDn2UKGgQXZRqtgEAAGFoE12UaBVdlIwMY2FsbGRhdGFsb2FklGFoF12UaBldlHVoHGgzaB1oHmgfS49oIGqFCQAAaCFoA3ViaDQpgZR9lChoBWgGaAddlChoOSmBlH2UKGgFjAxjYWxsZGF0YXNpemWUaAddlGg/jAxjYWxsZGF0YXNpemWUhZSBlH2UKGgFaAZoIGpgDwAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGg4aB1oHmgfS6JoIGpdDwAAdWJoJCmBlH2UKGgFaAZoB12UaA59lChoEF2UaBNdlGgVXZRoF12UaBldlIwHZW50cmllc5RdlHVoHGgjaB1OaB9OaCBqXQ8AAHViarMJAAApgZR9lChoBWgGaAddlChquAkAACmBlH2UKGgFjBFjYWxsZGF0YXNpemUoZXZtKZRoB12UKGq+CQAAKYGUfZQoaAWMDGNhbGxkYXRhc2l6ZZRoB12UaD+MDGNhbGxkYXRhc2l6ZZSFlIGUfZQoaAVoBmggaoAPAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UKGrKCQAAassJAABqzAkAAGrNCQAAZWgVXZRoF12UaBldlIwJeG1sOnNwYWNllGqAAwAAdWgcar0JAABoHWgeaB9OaCBqfA8AAHViatMJAAApgZR9lChoBYwDZXZtlGgHXZRq2QkAACmBlH2UKGgFjANldm2UaAddlGrfCQAAKYGUfZQoaAVoBmgHXZRoP4wDZXZtlIWUgZR9lChoBWgGaCBqlw8AAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZRq6gkAAGFoFV2UaBddlGgZXZR1aBxq3gkAAGgdTmgfTmggapMPAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UjAl4bWw6c3BhY2WUaoADAAB1aBxq2AkAAGgdTmgfTmggao8PAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UjAl4bWw6c3BhY2WUaoADAAB1aBxq0gkAAGgdaB5oH05oIGp8DwAAdWJlaA59lChoEF2UjD5ldGhlcmV1bS5tdWlyX2dsYWNpZXIudm0uaW5zdHJ1Y3Rpb25zLmVudmlyb25tZW50LmNhbGxkYXRhc2l6ZZRhaBNdlChqAAoAAGoBCgAAjAJweZRqAwoAAGoECgAAZWgVXZRoF12UaBldlIwGbW9kdWxllGoJCgAAjAVjbGFzc5RoBowIZnVsbG5hbWWUaoIPAAB1aBxqtwkAAGgdaB5oH0ulaCBqeQ8AAHViag0KAAApgZR9lChoBWgGaAddlChoaSmBlH2UKGgFjEJQdXNoIHRoZSBzaXplIG9mIGlucHV0IGRhdGEgaW4gY3VycmVudCBlbnZpcm9ubWVudCBvbnRvIHRoZSBzdGFjay6UaAddlGg/jEJQdXNoIHRoZSBzaXplIG9mIGlucHV0IGRhdGEgaW4gY3VycmVudCBlbnZpcm9ubWVudCBvbnRvIHRoZSBzdGFjay6UhZSBlH2UKGgFaAZoIGrADwAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhoaB1oHmgfS6hoIGq9DwAAdWJqIAoAACmBlH2UKGgFaAZoB12UaiUKAAApgZR9lChoBWgGaAddlChqKgoAACmBlH2UKGgFjApQYXJhbWV0ZXJzlGgHXZRoP4wKUGFyYW1ldGVyc5SFlIGUfZQoaAVoBmggatQPAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaikKAABoHWgeaB9LAGggatEPAAB1Ymo6CgAAKYGUfZQoaAVoBmgHXZRoaSmBlH2UKGgFjB1ldm0gLS0gVGhlIGN1cnJlbnQgRVZNIGZyYW1lLpRoB12UKGpDCgAAKYGUfZQoaAWMA2V2bZRoB12UaD+MA2V2bZSFlIGUfZQoaAVoBmggaukPAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UjAtyZWZzcGVjaWZpY5SIjAlweTptb2R1bGWUagkKAACMCHB5OmNsYXNzlE51aBxqQgoAAGgdTmgfTmggauUPAAB1Ymg/jBsg4oCTIFRoZSBjdXJyZW50IEVWTSBmcmFtZS6UhZSBlH2UKGgFaAZoIGrlDwAAaCFoA2gdaERoH0sAdWJlaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhoaB1OaB9OaCBq4g8AAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxqOQoAAGgdTmgfTmggatEPAAB1YmVoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaiQKAABoHU5oH05oIGrODwAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGofCgAAaB1OaB9OaCBqvQ8AAHViZWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxqDAoAAGgdaB5oH05oIGp5DwAAdWJlaA59lChoEF2UaBNdlChqtg8AAIwIZnVuY3Rpb26UZWgVXZRoF12UaBldlIwGZG9tYWlulGq2DwAAjAdvYmp0eXBllGofEAAAjAhkZXNjdHlwZZRqHxAAAIwHbm9pbmRleJSJdWgcarIJAABoHU5oH05oIGpdDwAAdWJqgwoAACmBlH2UKGgFjMtkZWYgY2FsbGRhdGFzaXplKGV2bTogRXZtKSAtPiBOb25lOgogICAgIyBTVEFDSwogICAgcGFzcwoKICAgICMgR0FTCiAgICBjaGFyZ2VfZ2FzKGV2bSwgR0FTX0JBU0UpCgogICAgIyBPUEVSQVRJT04KICAgIHB1c2goZXZtLnN0YWNrLCBVMjU2KGxlbihldm0ubWVzc2FnZS5kYXRhKSkpCgogICAgIyBQUk9HUkFNIENPVU5URVIKICAgIGV2bS5wYyArPSAxCpRoB12UaD+My2RlZiBjYWxsZGF0YXNpemUoZXZtOiBFdm0pIC0+IE5vbmU6CiAgICAjIFNUQUNLCiAgICBwYXNzCgogICAgIyBHQVMKICAgIGNoYXJnZV9nYXMoZXZtLCBHQVNfQkFTRSkKCiAgICAjIE9QRVJBVElPTgogICAgcHVzaChldm0uc3RhY2ssIFUyNTYobGVuKGV2bS5tZXNzYWdlLmRhdGEpKSkKCiAgICAjIFBST0dSQU0gQ09VTlRFUgogICAgZXZtLnBjICs9IDEKlIWUgZR9lChoBWgGaCBqJxAAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZSMBnNvdXJjZZSMai9ob21lL3J1bm5lci93b3JrL2V4ZWN1dGlvbi1zcGVjcy9leGVjdXRpb24tc3BlY3Mvc3JjL2V0aGVyZXVtL211aXJfZ2xhY2llci92bS9pbnN0cnVjdGlvbnMvZW52aXJvbm1lbnQucHmUjAl4bWw6c3BhY2WUaoADAACMBWZvcmNllImMCGxhbmd1YWdllIwGcHl0aG9ulIwOaGlnaGxpZ2h0X2FyZ3OUfZRqmgoAAEsBc4wHbGluZW5vc5SJdWgcaoIKAABoHWgeaB9Lr2ggal0PAAB1YmVoDn2UKGgQXZRq2AEAAGFoE12UaBVdlIwMY2FsbGRhdGFzaXpllGFoF12UaBldlHVoHGgzaB1oHmgfS6JoIGqFCQAAaCFoA3ViaDQpgZR9lChoBWgGaAddlChoOSmBlH2UKGgFjAxjYWxsZGF0YWNvcHmUaAddlGg/jAxjYWxsZGF0YWNvcHmUhZSBlH2UKGgFaAZoIGpIEAAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGg4aB1oHmgfS7RoIGpFEAAAdWJoJCmBlH2UKGgFaAZoB12UaA59lChoEF2UaBNdlGgVXZRoF12UaBldlIwHZW50cmllc5RdlHVoHGgjaB1OaB9OaCBqRRAAAHViarMJAAApgZR9lChoBWgGaAddlChquAkAACmBlH2UKGgFjBFjYWxsZGF0YWNvcHkoZXZtKZRoB12UKGq+CQAAKYGUfZQoaAWMDGNhbGxkYXRhY29weZRoB12UaD+MDGNhbGxkYXRhY29weZSFlIGUfZQoaAVoBmggamgQAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UKGrKCQAAassJAABqzAkAAGrNCQAAZWgVXZRoF12UaBldlIwJeG1sOnNwYWNllGqAAwAAdWgcar0JAABoHWgeaB9OaCBqZBAAAHViatMJAAApgZR9lChoBYwDZXZtlGgHXZRq2QkAACmBlH2UKGgFjANldm2UaAddlGrfCQAAKYGUfZQoaAVoBmgHXZRoP4wDZXZtlIWUgZR9lChoBWgGaCBqfxAAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZRq6gkAAGFoFV2UaBddlGgZXZR1aBxq3gkAAGgdTmgfTmggansQAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UjAl4bWw6c3BhY2WUaoADAAB1aBxq2AkAAGgdTmgfTmggancQAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UjAl4bWw6c3BhY2WUaoADAAB1aBxq0gkAAGgdaB5oH05oIGpkEAAAdWJlaA59lChoEF2UjD5ldGhlcmV1bS5tdWlyX2dsYWNpZXIudm0uaW5zdHJ1Y3Rpb25zLmVudmlyb25tZW50LmNhbGxkYXRhY29weZRhaBNdlChqAAoAAGoBCgAAjAJweZRqAwoAAGoECgAAZWgVXZRoF12UaBldlIwGbW9kdWxllGoJCgAAjAVjbGFzc5RoBowIZnVsbG5hbWWUamoQAAB1aBxqtwkAAGgdaB5oH0u3aCBqYRAAAHViag0KAAApgZR9lChoBWgGaAddlChoaSmBlH2UKGgFjEJDb3B5IGEgcG9ydGlvbiBvZiB0aGUgaW5wdXQgZGF0YSBpbiBjdXJyZW50IGVudmlyb25tZW50IHRvIG1lbW9yeS6UaAddlGg/jEJDb3B5IGEgcG9ydGlvbiBvZiB0aGUgaW5wdXQgZGF0YSBpbiBjdXJyZW50IGVudmlyb25tZW50IHRvIG1lbW9yeS6UhZSBlH2UKGgFaAZoIGqoEAAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhoaB1oHmgfS7poIGqlEAAAdWJoaSmBlH2UKGgFjFxUaGlzIHdpbGwgYWxzbyBleHBhbmQgdGhlIG1lbW9yeSwgaW4gY2FzZSB0aGF0IHRoZSBtZW1vcnkgaXMgaW5zdWZmaWNpZW50CnRvIHN0b3JlIHRoZSBkYXRhLpRoB12UaD+MXFRoaXMgd2lsbCBhbHNvIGV4cGFuZCB0aGUgbWVtb3J5LCBpbiBjYXNlIHRoYXQgdGhlIG1lbW9yeSBpcyBpbnN1ZmZpY2llbnQKdG8gc3RvcmUgdGhlIGRhdGEulIWUgZR9lChoBWgGaCBqthAAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoaGgdaB5oH0u8aCBqpRAAAHViaiAKAAApgZR9lChoBWgGaAddlGolCgAAKYGUfZQoaAVoBmgHXZQoaioKAAApgZR9lChoBYwKUGFyYW1ldGVyc5RoB12UaD+MClBhcmFtZXRlcnOUhZSBlH2UKGgFaAZoIGrKEAAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGopCgAAaB1oHmgfSwBoIGrHEAAAdWJqOgoAACmBlH2UKGgFaAZoB12UaGkpgZR9lChoBYwdZXZtIC0tIFRoZSBjdXJyZW50IEVWTSBmcmFtZS6UaAddlChqQwoAACmBlH2UKGgFjANldm2UaAddlGg/jANldm2UhZSBlH2UKGgFaAZoIGrfEAAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlIwLcmVmc3BlY2lmaWOUiIwJcHk6bW9kdWxllGoJCgAAjAhweTpjbGFzc5ROdWgcakIKAABoHU5oH05oIGrbEAAAdWJoP4wbIOKAkyBUaGUgY3VycmVudCBFVk0gZnJhbWUulIWUgZR9lChoBWgGaCBq2xAAAGghaANoHWhEaB9LAHViZWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoaGgdTmgfTmggatgQAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcajkKAABoHU5oH05oIGrHEAAAdWJlaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGokCgAAaB1OaB9OaCBqxBAAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxqHwoAAGgdTmgfTmggaqUQAAB1YmVoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcagwKAABoHWgeaB9OaCBqYRAAAHViZWgOfZQoaBBdlGgTXZQoap4QAACMCGZ1bmN0aW9ulGVoFV2UaBddlGgZXZSMBmRvbWFpbpRqnhAAAIwHb2JqdHlwZZRqFREAAIwIZGVzY3R5cGWUahURAACMB25vaW5kZXiUiXVoHGqyCQAAaB1OaB9OaCBqRRAAAHViaoMKAAApgZR9lChoBViCAgAAZGVmIGNhbGxkYXRhY29weShldm06IEV2bSkgLT4gTm9uZToKICAgICMgU1RBQ0sKICAgIG1lbW9yeV9zdGFydF9pbmRleCA9IHBvcChldm0uc3RhY2spCiAgICBkYXRhX3N0YXJ0X2luZGV4ID0gcG9wKGV2bS5zdGFjaykKICAgIHNpemUgPSBwb3AoZXZtLnN0YWNrKQoKICAgICMgR0FTCiAgICB3b3JkcyA9IGNlaWwzMihVaW50KHNpemUpKSAvLyAzMgogICAgY29weV9nYXNfY29zdCA9IEdBU19DT1BZICogd29yZHMKICAgIGV4dGVuZF9tZW1vcnkgPSBjYWxjdWxhdGVfZ2FzX2V4dGVuZF9tZW1vcnkoCiAgICAgICAgZXZtLm1lbW9yeSwgWyhtZW1vcnlfc3RhcnRfaW5kZXgsIHNpemUpXQogICAgKQogICAgY2hhcmdlX2dhcyhldm0sIEdBU19WRVJZX0xPVyArIGNvcHlfZ2FzX2Nvc3QgKyBleHRlbmRfbWVtb3J5LmNvc3QpCgogICAgIyBPUEVSQVRJT04KICAgIGV2bS5tZW1vcnkgKz0gYiJceDAwIiAqIGV4dGVuZF9tZW1vcnkuZXhwYW5kX2J5CiAgICB2YWx1ZSA9IGJ1ZmZlcl9yZWFkKGV2bS5tZXNzYWdlLmRhdGEsIGRhdGFfc3RhcnRfaW5kZXgsIHNpemUpCiAgICBtZW1vcnlfd3JpdGUoZXZtLm1lbW9yeSwgbWVtb3J5X3N0YXJ0X2luZGV4LCB2YWx1ZSkKCiAgICAjIFBST0dSQU0gQ09VTlRFUgogICAgZXZtLnBjICs9IDEKlGgHXZRoP1iCAgAAZGVmIGNhbGxkYXRhY29weShldm06IEV2bSkgLT4gTm9uZToKICAgICMgU1RBQ0sKICAgIG1lbW9yeV9zdGFydF9pbmRleCA9IHBvcChldm0uc3RhY2spCiAgICBkYXRhX3N0YXJ0X2luZGV4ID0gcG9wKGV2bS5zdGFjaykKICAgIHNpemUgPSBwb3AoZXZtLnN0YWNrKQoKICAgICMgR0FTCiAgICB3b3JkcyA9IGNlaWwzMihVaW50KHNpemUpKSAvLyAzMgogICAgY29weV9nYXNfY29zdCA9IEdBU19DT1BZICogd29yZHMKICAgIGV4dGVuZF9tZW1vcnkgPSBjYWxjdWxhdGVfZ2FzX2V4dGVuZF9tZW1vcnkoCiAgICAgICAgZXZtLm1lbW9yeSwgWyhtZW1vcnlfc3RhcnRfaW5kZXgsIHNpemUpXQogICAgKQogICAgY2hhcmdlX2dhcyhldm0sIEdBU19WRVJZX0xPVyArIGNvcHlfZ2FzX2Nvc3QgKyBleHRlbmRfbWVtb3J5LmNvc3QpCgogICAgIyBPUEVSQVRJT04KICAgIGV2bS5tZW1vcnkgKz0gYiJceDAwIiAqIGV4dGVuZF9tZW1vcnkuZXhwYW5kX2J5CiAgICB2YWx1ZSA9IGJ1ZmZlcl9yZWFkKGV2bS5tZXNzYWdlLmRhdGEsIGRhdGFfc3RhcnRfaW5kZXgsIHNpemUpCiAgICBtZW1vcnlfd3JpdGUoZXZtLm1lbW9yeSwgbWVtb3J5X3N0YXJ0X2luZGV4LCB2YWx1ZSkKCiAgICAjIFBST0dSQU0gQ09VTlRFUgogICAgZXZtLnBjICs9IDEKlIWUgZR9lChoBWgGaCBqHREAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZSMBnNvdXJjZZSMai9ob21lL3J1bm5lci93b3JrL2V4ZWN1dGlvbi1zcGVjcy9leGVjdXRpb24tc3BlY3Mvc3JjL2V0aGVyZXVtL211aXJfZ2xhY2ll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ZSkpIC8vIDMyCiAgICBjb3B5X2dhc19jb3N0ID0gR0FTX0NPUFkgKiB3b3JkcwogICAgZXh0ZW5kX21lbW9yeSA9IGNhbGN1bGF0ZV9nYXNfZXh0ZW5kX21lbW9yeSgKICAgICAgICBldm0ubWVtb3J5LCBbKG1lbW9yeV9zdGFydF9pbmRleCwgc2l6ZSldCiAgICApCiAgICBjaGFyZ2VfZ2FzKGV2bSwgR0FTX1ZFUllfTE9XICsgY29weV9nYXNfY29zdCArIGV4dGVuZF9tZW1vcnkuY29zdCkKCiAgICAjIE9QRVJBVElPTgogICAgZXZtLm1lbW9yeSArPSBiIlx4MDAiICogZXh0ZW5kX21lbW9yeS5leHBhbmRfYnkKICAgIHZhbHVlID0gYnVmZmVyX3JlYWQoZXZtLmNvZGUsIGNvZGVfc3RhcnRfaW5kZXgsIHNpemUpCiAgICBtZW1vcnlfd3JpdGUoZXZtLm1lbW9yeSwgbWVtb3J5X3N0YXJ0X2luZGV4LCB2YWx1ZSkKCiAgICAjIFBST0dSQU0gQ09VTlRFUgogICAgZXZtLnBjICs9IDEKlGgHXZRoP1h2AgAAZGVmIGNvZGVjb3B5KGV2bTogRXZtKSAtPiBOb25lOgogICAgIyBTVEFDSwogICAgbWVtb3J5X3N0YXJ0X2luZGV4ID0gcG9wKGV2bS5zdGFjaykKICAgIGNvZGVfc3RhcnRfaW5kZXggPSBwb3AoZXZtLnN0YWNrKQogICAgc2l6ZSA9IHBvcChldm0uc3RhY2spCgogICAgIyBHQVMKICAgIHdvcmRzID0gY2VpbDMyKFVpbnQoc2l6ZSkpIC8vIDMyCiAgICBjb3B5X2dhc19jb3N0ID0gR0FTX0NPUFkgKiB3b3JkcwogICAgZXh0ZW5kX21lbW9yeSA9IGNhbGN1bGF0ZV9nYXNfZXh0ZW5kX21lbW9yeSgKICAgICAgICBldm0ubWVtb3J5LCBbKG1lbW9yeV9zdGFydF9pbmRleCwgc2l6ZSldCiAgICApCiAgICBjaGFyZ2VfZ2FzKGV2bSwgR0FTX1ZFUllfTE9XICsgY29weV9nYXNfY29zdCArIGV4dGVuZF9tZW1vcnkuY29zdCkKCiAgICAjIE9QRVJBVElPTgogICAgZXZtLm1lbW9yeSArPSBi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cHkoZXZtOiBFdm0pIC0+IE5vbmU6CiAgICAjIFNUQUNLCiAgICBhZGRyZXNzID0gdG9fYWRkcmVzcyhwb3AoZXZtLnN0YWNrKSkKICAgIG1lbW9yeV9zdGFydF9pbmRleCA9IHBvcChldm0uc3RhY2spCiAgICBjb2RlX3N0YXJ0X2luZGV4ID0gcG9wKGV2bS5zdGFjaykKICAgIHNpemUgPSBwb3AoZXZtLnN0YWNrKQoKICAgICMgR0FTCiAgICB3b3JkcyA9IGNlaWwzMihVaW50KHNpemUpKSAvLyAzMgogICAgY29weV9nYXNfY29zdCA9IEdBU19DT1BZICogd29yZHMKICAgIGV4dGVuZF9tZW1vcnkgPSBjYWxjdWxhdGVfZ2FzX2V4dGVuZF9tZW1vcnkoCiAgICAgICAgZXZtLm1lbW9yeSwgWyhtZW1vcnlfc3RhcnRfaW5kZXgsIHNpemUpXQogICAgKQogICAgY2hhcmdlX2dhcyhldm0sIEdBU19FWFRFUk5BTCArIGNvcHlfZ2FzX2Nvc3QgKyBleHRlbmRfbWVtb3J5LmNvc3QpCgogICAgIyBPUEVSQVRJT04KICAgIGV2bS5tZW1vcnkgKz0gYiJceDAwIiAqIGV4dGVuZF9tZW1vcnkuZXhwYW5kX2J5CiAgICBjb2RlID0gZ2V0X2FjY291bnQoZXZtLmVudi5zdGF0ZSwgYWRkcmVzcykuY29kZQogICAgdmFsdWUgPSBidWZmZXJfcmVhZChjb2RlLCBjb2RlX3N0YXJ0X2luZGV4LCBzaXplKQogICAgbWVtb3J5X3dyaXRlKGV2bS5tZW1vcnksIG1lbW9yeV9zdGFydF9pbmRleCwgdmFsdWUpCgogICAgIyBQUk9HUkFNIENPVU5URVIKICAgIGV2bS5wYyArPSAxCpRoB12UKGg/WIEBAABkZWYgZXh0Y29kZWNvcHkoZXZtOiBFdm0pIC0+IE5vbmU6CiAgICAjIFNUQUNLCiAgICBhZGRyZXNzID0gdG9fYWRkcmVzcyhwb3AoZXZtLnN0YWNrKSkKICAgIG1lbW9yeV9zdGFydF9pbmRleCA9IHBvcChldm0uc3RhY2spCiAgICBjb2RlX3N0YXJ0X2luZGV4ID0gcG9wKGV2bS5zdGFjaykKICAgIHNpemUgPSBwb3AoZXZtLnN0YWNrKQoKICAgICMgR0FTCiAgICB3b3JkcyA9IGNlaWwzMihVaW50KHNpemUpKSAvLyAzMgogICAgY29weV9nYXNfY29zdCA9IEdBU19DT1BZICogd29yZHMKICAgIGV4dGVuZF9tZW1vcnkgPSBjYWxjdWxhdGVfZ2FzX2V4dGVuZF9tZW1vcnkoCiAgICAgICAgZXZtLm1lbW9yeSwgWyhtZW1vcnlfc3RhcnRfaW5kZXgsIHNpemUpXQogICAgKQogICAglIWUgZR9lChoBWgGaCBq5RUAAGghaANoHWhEaB9LAHViat8JAAApgZR9lChoBWgGaAddlGg/jC5pZiBhZGRyZXNzIGluIGV2bS5hY2Nlc3NlZF9hZGRyZXNzZXM6CiAgICAgICAglIWUgZR9lChoBWgGaCBq7RUAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZSMDGNoYW5nZS1hZGRlZJRhaBVdlGgXXZRoGV2UdWgcat4JAABoIGrlFQAAaCFoA2gdaERoH0sAdWJoP4wQY2hhcmdlX2dhcyhldm0sIJSFlIGUfZQoaAVoBmggauUVAABoIWgDaB1oRGgfSwB1YmrfCQAAKYGUfZQoaAVoBmgHXZRoP4wMR0FTX0VYVEVSTkFMlIWUgZR9lChoBWgGaCBq/xUAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZSMD2NoYW5nZS1yZXBsYWNlZJRhaBVdlGgXXZRoGV2UdWgcat4JAABoIGrlFQAAaCFoA2gdaERoH0sAdWJq3wkAACmBlH2UKGgFaAZoB12UaD+MD0dBU19XQVJNX0FDQ0VTU5SFlIGUfZQoaAVoBmggag0WAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UjBJjaGFuZ2UtcmVwbGFjZW1lbnSUYWgVXZRoF12UaBldlHVoHGreCQAAaCBq5RUAAGghaANoHWhEaB9LAHViaD+MLCArIGNvcHlfZ2FzX2Nvc3QgKyBleHRlbmRfbWVtb3J5LmNvc3QpCgogICAglIWUgZR9lChoBWgGaCBq5RUAAGghaANoHWhEaB9LAHViat8JAAApgZR9lChoBWgGaAddlGg/jKNlbHNlOgogICAgICAgIGV2bS5hY2Nlc3NlZF9hZGRyZXNzZXMuYWRkKGFkZHJlc3MpCiAgICAgICAgY2hhcmdlX2dhcygKICAgICAgICAgICAgZXZtLCBHQVNfQ09MRF9BQ0NPVU5UX0FDQ0VTUyArIGNvcHlfZ2FzX2Nvc3QgKyBleHRlbmRfbWVtb3J5LmNvc3QKICAgICAgICApCgogICAglIWUgZR9lChoBWgGaCBqHxYAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZSMDGNoYW5nZS1hZGRlZJRhaBVdlGgXXZRoGV2UdWgcat4JAABoIGrlFQAAaCFoA2gdaERoH0sAdWJoP1gJAQAAIyBPUEVSQVRJT04KICAgIGV2bS5tZW1vcnkgKz0gYiJceDAwIiAqIGV4dGVuZF9tZW1vcnkuZXhwYW5kX2J5CiAgICBjb2RlID0gZ2V0X2FjY291bnQoZXZtLmVudi5zdGF0ZSwgYWRkcmVzcykuY29kZQogICAgdmFsdWUgPSBidWZmZXJfcmVhZChjb2RlLCBjb2RlX3N0YXJ0X2luZGV4LCBzaXplKQogICAgbWVtb3J5X3dyaXRlKGV2bS5tZW1vcnksIG1lbW9yeV9zdGFydF9pbmRleCwgdmFsdWUpCgogICAgIyBQUk9HUkFNIENPVU5URVIKICAgIGV2bS5wYyArPSAxCpSFlIGUfZQoaAVoBmggauUVAABoIWgDaB1oRGgfSwB1YmVoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UjAZzb3VyY2WUjGovaG9tZS9ydW5uZXIvd29yay9leGVjdXRpb24tc3BlY3MvZXhlY3V0aW9uLXNwZWNzL3NyYy9ldGhlcmV1bS9tdWlyX2dsYWNpZXIvdm0vaW5zdHJ1Y3Rpb25zL2Vudmlyb25tZW50LnB5lIwJeG1sOnNwYWNllGqAAwAAjAVmb3JjZZSJjAhsYW5ndWFnZZSMBnB5dGhvbpSMDmhpZ2hsaWdodF9hcmdzlH2UapoKAABLAXOMB2xpbmVub3OUiXVoHGqCCgAAaB1oHmgfTSEBaCBqGxUAAGghaAN1YmVoDn2UKGgQXZRqpAIAAGFoE12UaBVdlIwLZXh0Y29kZWNvcHmUYWgXXZRoGV2UdWgcaDNoHWgeaB9NFAFoIGqFCQAAaCFoA3ViaDQpgZR9lChoBWgGaAddlChoOSmBlH2UKGgFjA5yZXR1cm5k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HU5oH05oIGqgFwAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGofCgAAaB1OaB9OaCBqjxcAAHViZWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxqDAoAAGgdaB5oH05oIGpLFwAAdWJlaA59lChoEF2UaBNdlChqiBcAAIwIZnVuY3Rpb26UZWgVXZRoF12UaBldlIwGZG9tYWlulGqIFwAAjAdvYmp0eXBllGrxFwAAjAhkZXNjdHlwZZRq8RcAAIwHbm9pbmRleJSJdWgcarIJAABoHU5oH05oIGovFwAAdWJqgwoAACmBlH2UKGgFWD0DAABkZWYgcmV0dXJuZGF0YWNvcHkoZXZtOiBFdm0pIC0+IE5vbmU6CiAgICAjIFNUQUNLCiAgICBtZW1vcnlfc3RhcnRfaW5kZXggPSBwb3AoZXZtLnN0YWNrKQogICAgcmV0dXJuX2RhdGFfc3RhcnRfcG9zaXRpb24gPSBwb3AoZXZtLnN0YWNrKQogICAgc2l6ZSA9IHBvcChldm0uc3RhY2spCgogICAgIyBHQVMKICAgIHdvcmRzID0gY2VpbDMyKFVpbnQoc2l6ZSkpIC8vIDMyCiAgICBjb3B5X2dhc19jb3N0ID0gR0FTX1JFVFVSTl9EQVRBX0NPUFkgKiB3b3JkcwogICAgZXh0ZW5kX21lbW9yeSA9IGNhbGN1bGF0ZV9nYXNfZXh0ZW5kX21lbW9yeSgKICAgICAgICBldm0ubWVtb3J5LCBbKG1lbW9yeV9zdGFydF9pbmRleCwgc2l6ZSldCiAgICApCiAgICBjaGFyZ2VfZ2FzKGV2bSwgR0FTX1ZFUllfTE9XICsgY29weV9nYXNfY29zdCArIGV4dGVuZF9tZW1vcnkuY29zdCkKCiAgICAjIE9QRVJBVElPTgogICAgZW5zdXJlKAogICAgICAgIFVpbnQocmV0dXJuX2RhdGFfc3RhcnRfcG9zaXRpb24pICsgVWludChzaXplKSA8PSBsZW4oZXZtLnJldHVybl9kYXRhKSwKICAgICAgICBPdXRPZkJvdW5kc1JlYWQsCiAgICApCgogICAgZXZtLm1lbW9yeSArPSBiIlx4MDAiICogZXh0ZW5kX21lbW9yeS5leHBhbmRfYnkKICAgIHZhbHVlID0gZXZtLnJldHVybl9kYXRhWwogICAgICAgIHJldHVybl9kYXRhX3N0YXJ0X3Bvc2l0aW9uIDogcmV0dXJuX2RhdGFfc3RhcnRfcG9zaXRpb24gKyBzaXplCiAgICBdCiAgICBtZW1vcnlfd3JpdGUoZXZtLm1lbW9yeSwgbWVtb3J5X3N0YXJ0X2luZGV4LCB2YWx1ZSkKCiAgICAjIFBST0dSQU0gQ09VTlRFUgogICAgZXZtLnBjICs9IDEKlGgHXZRoP1g9AwAAZGVmIHJldHVybmRhdGFjb3B5KGV2bTogRXZtKSAtPiBOb25lOgogICAgIyBTVEFDSwogICAgbWVtb3J5X3N0YXJ0X2luZGV4ID0gcG9wKGV2bS5zdGFjaykKICAgIHJldHVybl9kYXRhX3N0YXJ0X3Bvc2l0aW9uID0gcG9wKGV2bS5zdGFjaykKICAgIHNpemUgPSBwb3AoZXZtLnN0YWNrKQoKICAgICMgR0FTCiAgICB3b3JkcyA9IGNlaWwzMihVaW50KHNpemUpKSAvLyAzMgogICAgY29weV9nYXNfY29zdCA9IEdBU19SRVRVUk5fREFUQV9DT1BZICogd29yZHMKICAgIGV4dGVuZF9tZW1vcnkgPSBjYWxjdWxhdGVfZ2FzX2V4dGVuZF9tZW1vcnkoCiAgICAgICAgZXZtLm1lbW9yeSwgWyhtZW1vcnlfc3RhcnRfaW5kZXgsIHNpemUpXQogICAgKQogICAgY2hhcmdlX2dhcyhldm0sIEdBU19WRVJZX0xPVyArIGNvcHlfZ2FzX2Nvc3QgKyBleHRlbmRfbWVtb3J5LmNvc3QpCgogICAgIyBPUEVSQVRJT04KICAgIGVuc3VyZSgKICAgICAgICBVaW50KHJldHVybl9kYXRhX3N0YXJ0X3Bvc2l0aW9uKSArIFVpbnQoc2l6ZSkgPD0gbGVuKGV2bS5yZXR1cm5fZGF0YSksCiAgICAgICAgT3V0T2ZCb3VuZHNSZWFkLAogICAgKQoKICAgIGV2bS5tZW1vcnkgKz0gYiJceDAwIiAqIGV4dGVuZF9tZW1vcnkuZXhwYW5kX2J5CiAgICB2YWx1ZSA9IGV2bS5yZXR1cm5fZGF0YVsKICAgICAgICByZXR1cm5fZGF0YV9zdGFydF9wb3NpdGlvbiA6IHJldHVybl9kYXRh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aAZoB12UaD+MDkdBU19DT0RFX0hBU0gplIWUgZR9lChoBWgGaCBqsxgAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZSMD2NoYW5nZS1yZXBsYWNlZJRhaBVdlGgXXZRoGV2UdWgcat4JAABoIGqZGAAAaCFoA2gdaERoH0sAdWJq3wkAACmBlH2UKGgFaAZoB12UaD+Md0dBU19XQVJNX0FDQ0VTUykKICAgIGVsc2U6CiAgICAgICAgZXZtLmFjY2Vzc2VkX2FkZHJlc3Nlcy5hZGQoYWRkcmVzcykKICAgICAgICBjaGFyZ2VfZ2FzKGV2bSwgR0FTX0NPTERfQUNDT1VOVF9BQ0NFU1MplIWUgZR9lChoBWgGaCBqwRgAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZSMEmNoYW5nZS1yZXBsYWNlbWVudJRhaBVdlGgXXZRoGV2UdWgcat4JAABoIGqZGAAAaCFoA2gdaERoH0sAdWJoP1gQAQAACgogICAgIyBPUEVSQVRJT04KICAgIGFjY291bnQgPSBnZXRfYWNjb3VudChldm0uZW52LnN0YXRlLCBhZGRyZXNzKQoKICAgIGlmIGFjY291bnQgPT0gRU1QVFlfQUNDT1VOVDoKICAgICAgICBjb2RlaGFzaCA9IFUyNTYoMCkKICAgIGVsc2U6CiAgICAgICAgY29kZWhhc2ggPSBVMjU2LmZyb21fYmVfYnl0ZXMoa2VjY2FrMjU2KGFjY291bnQuY29kZSkpCgogICAgcHVzaChldm0uc3RhY2ssIGNvZGVoYXNoKQoKICAgICMgUFJPR1JBTSBDT1VOVEVSCiAgICBldm0ucGMgKz0gMQqUhZSBlH2UKGgFaAZoIGqZGAAAaCFoA2gdaERoH0sAdWJlaA59lChoEF2UaBNdlGgVXZRoF12UaBldlIwGc291cmNllIxqL2hvbWUvcnVubmVyL3dvcmsvZXhlY3V0aW9uLXNwZWNzL2V4ZWN1dGlvbi1zcGVjcy9zcmMvZXRoZXJldW0vbXVpcl9nbGFjaWVyL3ZtL2luc3RydWN0aW9ucy9lbnZpcm9ubWVudC5weZSMCXhtbDpzcGFjZZRqgAMAAIwFZm9yY2WUiYwIbGFuZ3VhZ2WUjAZweXRob26UjA5oaWdobGlnaHRfYXJn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di5zdGF0ZSwgZXZtLm1lc3NhZ2UuY3VycmVudF90YXJnZXQpLmJhbGFuY2UKCiAgICBwdXNoKGV2bS5zdGFjaywgYmFsYW5jZSkKCiAgICAjIFBST0dSQU0gQ09VTlRFUgogICAgZXZtLnBjICs9IDEKlIWUgZR9lChoBWgGaCBqsxkAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZSMBnNvdXJjZZSMai9ob21lL3J1bm5lci93b3JrL2V4ZWN1dGlvbi1zcGVjcy9leGVjdXRpb24tc3BlY3Mvc3JjL2V0aGVyZXVtL211aXJfZ2xhY2llci92bS9pbnN0cnVjdGlvbnMvZW52aXJvbm1lbnQucHmUjAl4bWw6c3BhY2WUaoADAACMBWZvcmNllImMCGxhbmd1YWdllIwGcHl0aG9ulIwOaGlnaGxpZ2h0X2FyZ3OUfZRqmgoAAEsBc4wHbGluZW5vc5SJdWgcaoIKAABoHWgeaB9NaAFoIGrpGAAAdWJlaA59lChoEF2UaiwDAABhaBNdlGgVXZSMDHNlbGZfYmFsYW5jZZRhaBddlGgZXZR1aBxoM2gdaB5oH01bAWggaoUJAABoIWgDdWJlaA59lChoEF2UaO1haBNdlGgVXZSMDm1vZHVsZSBkZXRhaWxzlGFoF12UaBldlHVoHGgzaB1oHmgfSzFoIGg1aCFoA3ViZWgOfZQoaBBdlIw3ZXRoZXJldW0tdmlydHVhbC1tYWNoaW5lLWV2bS1lbnZpcm9ubWVudGFsLWluc3RydWN0aW9uc5RhaBNdlGgVXZSMOWV0aGVyZXVtIHZpcnR1YWwgbWFjaGluZSAoZXZtKSBlbnZpcm9ubWVudGFsIGluc3RydWN0aW9uc5RhaBddlGgZXZR1aBxoM2gdaB5oH0sEaCBoA2ghaAN1YmVoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UjAZzb3VyY2WUaER1aBxoAYwOY3VycmVudF9zb3VyY2WUaESMDGN1cnJlbnRfbGluZZRLAIwIc2V0dGluZ3OUjBFkb2N1dGlscy5mcm9udGVuZJSMBlZhbHVlc5STlCmBlH2UKIwMcmVwb3J0X2xldmVslEsCjApoYWx0X2xldmVslEsEjBFleGl0X3N0YXR1c19sZXZlbJRLBYwFZGVidWeUTowOd2FybmluZ19zdHJlYW2UTowJdHJhY2ViYWNrlE6MD291dHB1dF9lbmNvZGluZ5SMBXV0Zi04lIwdb3V0cHV0X2VuY29kaW5nX2Vycm9yX2hhbmRsZXKUjBF4bWxjaGFycmVmcmVwbGFjZZSMDmVycm9yX2VuY29kaW5nlIwFdXRmLTiUjBxlcnJvcl9lbmNvZGluZ19lcnJvcl9oYW5kbGVylIwQYmFja3NsYXNocmVwbGFjZZSME3JlY29yZF9kZXBlbmRlbmNpZXOUjA5kb2N1dGlscy51dGlsc5SMDkRlcGVuZGVuY3lMaXN0lJOUKYGUfZQojARsaXN0lF2UjARmaWxllE51YowGY29uZmlnlE6MDWR1bXBfc2V0dGluZ3OUTowOZHVtcF9pbnRlcm5hbHOUTowPZHVtcF90cmFuc2Zvcm1zlE6MD2R1bXBfcHNldWRvX3htbJROjBBleHBvc2VfaW50ZXJuYWxzlE6MDnN0cmljdF92aXNpdG9ylE6MD19kaXNhYmxlX2NvbmZpZ5ROjAdfc291cmNllE6MDF9kZXN0aW5hdGlvbpSMSGRvYy9kaWZmcy9tdWlyX2dsYWNpZXJfYmVybGluL3ZtL2luc3RydWN0aW9ucy9lbnZpcm9ubWVudC9pbmRleC5waWNrbGU2NJSMDV9jb25maWdfZmlsZXOUXZSMEWxpbmVfbGVuZ3RoX2xpbWl0lE0QJ4wJdGFiX3dpZHRolEsIjBBzeW50YXhfaGlnaGxpZ2h0lIwEbG9uZ5SMDHNtYXJ0X3F1b3Rlc5SJjBNzbWFydHF1b3Rlc19sb2NhbGVzlE6MHWNoYXJhY3Rlcl9sZXZlbF9pbmxpbmVfbWFya3VwlImMBndyaXRlcpSMA3htbJSMGWNvbXBhcmVfc2VjdGlvbnNfYnlfbmFtZXOUSwGMDGR1bXBfcnN0ZGlmZpROjAVfYm90aJR9lChoOE6MCWdlbmVyYXRvcpROjAlkYXRlc3RhbXCUTowLc291cmNlX2xpbmuUTowKc291cmNlX3VybJROjA10b2NfYmFja2xpbmtzlGrpAwAAjBJmb290bm90ZV9iYWNrbGlua3OUSwGMDXNlY3RudW1feGZvcm2USwGMDmRvY3RpdGxlX3hmb3JtlEsBjA1kb2NpbmZvX3hmb3JtlEsBjBJzZWN0c3VidGl0bGVfeGZvcm2USwCMDnN0cmlwX2NvbW1lbnRzlE6MDmlucHV0X2VuY29kaW5nlE6MHGlucHV0X2VuY29kaW5nX2Vycm9yX2hhbmRsZXKUjAZzdHJpY3SUjA1sYW5ndWFnZV9jb2RllIwCZW6UjA5wZXBfcmVmZXJlbmNlc5ROjAxwZXBfYmFzZV91cmyUjB9odHRwOi8vd3d3LnB5dGhvbi5vcmcvZGV2L3BlcHMvlIwVcGVwX2ZpbGVfdXJsX3RlbXBsYXRllIwIcGVwLSUwNGSUjA5yZmNfcmVmZXJlbmNlc5ROjAxyZmNfYmFzZV91cmyUjBtodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC+UjB10cmltX2Zvb3Rub3RlX3JlZmVyZW5jZV9zcGFjZZROjBZmaWxlX2luc2VydGlvbl9lbmFibGVklEsBjAtyYXdfZW5hYmxlZJRLAYwOYXV0b19pZF9wcmVmaXiUjAJpZJSMCWlkX3ByZWZpeJRoBowbc3RyaXBfZWxlbWVudHNfd2l0aF9jbGFzc2VzlE6MDXN0cmlwX2NsYXNzZXOUTnWMBGJvdGiUfZSMCl9vcHRpb25zVG+UjAVfYm90aJSMC19vbGRfc291cmNllIxPL2hvbWUvcnVubmVyL3dvcmsvZXhlY3V0aW9uLXNwZWNzL2V4ZWN1dGlvbi1zcGVjcy8udG94L2RvY3Mvc3RhZ2UwX291dC9hdXRvYXBpL5SMC19uZXdfc291cmNllIwJZG9jL2RpZmZzlGouGgAAai8aAACMFmlnbm9yZV9pbl9zZWN0aW9uX25hbWWUXZQojARtdWlylIwHZ2xhY2llcpSMBmJlcmxpbpRldWKMCHJlcG9ydGVylE6MEGluZGlyZWN0X3RhcmdldHOUXZSMEXN1YnN0aXR1dGlvbl9kZWZzlH2UjBJzdWJzdGl0dXRpb25fbmFtZXOUfZSMCHJlZm5hbWVzlH2UjAZyZWZpZHOUfZSMB25hbWVpZHOUfZSMCW5hbWV0eXBlc5R9lGgQfZSMDWZvb3Rub3RlX3JlZnOUfZSMDWNpdGF0aW9uX3JlZnOUfZSMDWF1dG9mb290bm90ZXOUXZSMEWF1dG9mb290bm90ZV9yZWZzlF2UjBBzeW1ib2xfZm9vdG5vdGVzlF2UjBRzeW1ib2xfZm9vdG5vdGVfcmVmc5RdlIwJZm9vdG5vdGVzlF2UjAljaXRhdGlvbnOUXZSMEmF1dG9mb290bm90ZV9zdGFydJRLAYwVc3ltYm9sX2Zvb3Rub3RlX3N0YXJ0lEsAjAppZF9jb3VudGVylIwLY29sbGVjdGlvbnOUjAdDb3VudGVylJOUfZSFlFKUjA5wYXJzZV9tZXNzYWdlc5RdlIwSdHJhbnNmb3JtX21lc3NhZ2VzlF2UjAt0cmFuc2Zvcm1lcpROjAtpbmNsdWRlX2xvZ5RdlIwKZGVjb3JhdGlvbpROaCFoA3ViLg==