gASVAQABAAAAAACMDmRvY3V0aWxzLm5vZGVzlIwIZG9jdW1lbnSUk5QpgZR9lCiMCXJhd3NvdXJjZZSMAJSMCGNoaWxkcmVulF2UKGgAjAZ0YXJnZXSUk5QpgZR9lChoBWgGaAddlIwKYXR0cmlidXRlc5R9lCiMA2lkc5RdlIwdbW9kdWxlLWV0aGVyZXVtLmRhb19mb3JrLnNwZWOUYYwHY2xhc3Nlc5RdlIwFbmFtZXOUXZSMCGR1cG5hbWVzlF2UjAhiYWNrcmVmc5RdlIwFaXNtb2SUiHWMB3RhZ25hbWWUaAmMBnNvdXJjZZSMXi9ob21lL3J1bm5lci93b3JrL2V4ZWN1dGlvbi1zcGVjcy9leGVjdXRpb24tc3BlY3MvZG9jL2F1dG9hcGkvZXRoZXJldW0vZGFvX2Zvcmsvc3BlYy9pbmRleC5yc3SUjARsaW5llEsBjAZwYXJlbnSUaAOMCV9kb2N1bWVudJRoA3VijA9zcGhpbnguYWRkbm9kZXOUjAVpbmRleJSTlCmBlH2UKGgFaAZoB12UaA59lChoEF2UaBNdlGgVXZRoF12UaBldlIwHZW50cmllc5RdlCiMBHBhaXKUjB5tb2R1bGU7IGV0aGVyZXVtLmRhb19mb3JrLnNwZWOUaBJoBk50lGF1aBxoI2gdaB5oH0sCaCBoA2ghaAN1YmgKKYGUfZQoaAWMDS4uIF9kYW8tZm9yazqUaAddlGgOfZQoaBBdlGgTXZSMDmNoYW5nZS1yZW1vdmVklGFoFV2UaBddlGgZXZSMBXJlZmlklIwIZGFvLWZvcmuUdWgcaAloHWgeaB9LA2ggaANoIWgDdWJoAIwHc2VjdGlvbpSTlCmBlH2UKGgFaAZoB12UKGgAjAV0aXRsZZSTlCmBlH2UKGgFjBZFdGhlcmV1bSBTcGVjaWZpY2F0aW9ulGgHXZRoAIwEVGV4dJSTlIwWRXRoZXJldW0gU3BlY2lmaWNhdGlvbpSFlIGUfZQoaAVoBmggaEdoIWgDaB2MXC9ob21lL3J1bm5lci93b3JrL2V4ZWN1dGlvbi1zcGVjcy9leGVjdXRpb24tc3BlY3MvLnRveC9kb2NzL3N0YWdlMF9vdXQvYXV0b2FwaS8gPT4gZG9jL2RpZmZzlGgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2U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cGx5IGEgYmxvY2sgdG8gYW4gZXhpc3RpbmcgYmxvY2sgY2hhaW4uCgp2YWxpZGF0ZV9oZWFkZXIKClZlcmlmaWVzIGEgYmxvY2sgaGVhZGVyLgoKZ2VuZXJhdGVfaGVhZGVyX2hhc2hfZm9yX3BvdwoKR2VuZXJhdGUgcmxwIGhhc2ggb2YgdGhlIGhlYWRlciB3aGljaCBpcyB0byBiZSB1c2VkIGZvciBQcm9vZi1vZi1Xb3JrCgp2YWxpZGF0ZV9wcm9vZl9vZl93b3JrCgpWYWxpZGF0ZXMgdGhlIFByb29mIG9mIFdvcmsgY29uc3RyYWludHMuCgphcHBseV9ib2R5CgpFeGVjdXRlcyBhIGJsb2NrLgoKdmFsaWRhdGVfb21tZXJzCgpWYWxpZGF0ZXMgdGhlIG9tbWVycyBtZW50aW9uZWQgaW4gdGhlIGJsb2NrLgoKcGF5X3Jld2FyZHMKClBheSByZXdhcmRzIHRvIHRoZSBibG9jayBtaW5lciBhcyB3ZWxsIGFzIHRoZSBvbW1lcnMgbWluZXJzLgoKcHJvY2Vzc190cmFuc2FjdGlvbgoKRXhlY3V0ZSBhIHRyYW5zYWN0aW9uIGFnYWluc3QgdGhlIHByb3ZpZGVkIGVudmlyb25tZW50LgoKdmFsaWRhdGVfdHJhbnNhY3Rpb24KClZlcmlmaWVzIGEgdHJhbnNhY3Rpb24uCgpjYWxjdWxhdGVfaW50cmluc2ljX2Nvc3QKCkNhbGN1bGF0ZXMgdGhlIGdhcyB0aGF0IGlzIGNoYXJnZWQgYmVmb3JlIGV4ZWN1dGlvbiBpcyBzdGFydGVkLgoKcmVjb3Zlcl9zZW5kZXIKCkV4dHJhY3RzIHRoZSBzZW5kZXIgYWRkcmVzcyBmcm9tIGEgdHJhbnNhY3Rpb24uCgpzaWduaW5nX2hhc2gKCkNvbXB1dGUgdGhlIGhhc2ggb2YgYSB0cmFuc2FjdGlvbiB1c2VkIGluIHRoZSBzaWduYXR1cmUuCgpjb21wdXRlX2hlYWRlcl9oYXNoCgpDb21wdXRlcyB0aGUgaGFzaCBvZiBhIGJsb2NrIGhlYWRlci4KCmNoZWNrX2dhc19saW1pdAoKVmFsaWRhdGVzIHRoZSBnYXMgbGltaXQgZm9yIGEgYmxvY2suCgpjYWxjdWxhdGVfYmxv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YW9fZm9yay5zcGVjLnZhbGlkYXRlX3RyYW5zYWN0aW9ulIwIcmVmdGl0bGWUjCtldGhlcmV1bS5kYW9fZm9yay5zcGVjLnZhbGlkYXRlX3RyYW5zYWN0aW9ulHVoHGh6aB1OaB9OaCBqCgkAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxodWgdjG8vaG9tZS9ydW5uZXIvd29yay9leGVjdXRpb24tc3BlY3MvZXhlY3V0aW9uLXNwZWNzL2RvYy9hdXRvYXBpL2V0aGVyZXVtL2Rhb19mb3JrL3NwZWMvaW5kZXgucnN0OjU3OjxhdXRvc3VtbWFyeT6UaB9LAWggagcJAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcagYFAABoHU5oH05oIGoECQAAdWJqBwUAACmBlH2UKGgFaAZoB12UaHYpgZR9lChoBYwXVmVyaWZpZXMgYSB0cmFuc2FjdGlvbi6UaAddlGhMjBdWZXJpZmllcyBhIHRyYW5zYWN0aW9uLpSFlIGUfZQoaAVoBmggajsJAABoIWgDaB1oUWgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaHVoHYxvL2hvbWUvcnVubmVyL3dvcmsvZXhlY3V0aW9uLXNwZWNzL2V4ZWN1dGlvbi1zcGVjcy9kb2MvYXV0b2FwaS9ldGhlcmV1bS9kYW9fZm9yay9zcGVjL2luZGV4LnJzdDo1Nzo8YXV0b3N1bW1hcnk+lGgfSwFoIGo4CQAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGoGBQAAaB1OaB9OaCBqBAkAAHViZWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxqAQUAAGgdTmgfTmggarkFAAB1YmoCBQAAKYGUfZQoaAVoBmgHXZQoagcFAAApgZR9lChoBWgGaAddlGh2KYGUfZQoaAWMUTpvYmo6YGNhbGN1bGF0ZV9pbnRyaW5zaWNfY29zdCA8ZXRoZXJldW0uZGFvX2Zvcmsuc3BlYy5jYWxjdWxhdGVfaW50cmluc2ljX2Nvc3Q+YJRoB12UaHspgZR9lChoBWgGaAddlGoTBQAAKYGUfZQoaAVqXgkAAGgHXZRoTIwYY2FsY3VsYXRlX2ludHJpbnNpY19jb3N0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b3JrIG9jY3VyZWQgYXMgYSByZXN1bHQgb2YgdGhlIGAyMDE2IERBTyBIYWNrcwo8aHR0cHM6Ly93d3cuZ2VtaW5pLmNvbS9jcnlwdG9wZWRpYS90aGUtZGFvLWhhY2stbWFrZXJkYW8+YF8gaW4gd2hpY2ggYW4KdW5rbm93biBlbnRpdHkgbWFuYWdlZCB0byBkcmFpbiBtb3JlIHRoYW4gMy42IG1pbGxpb24gZXRoZXIgY2F1c2luZyB0aGUKcHJpY2Ugb2YgZXRoZXIgdG8gZHJvcCBieSBuZWFybHkgMzUlLiBUaGlzIGZvcmsgd2FzIHRoZSBzb2x1dGlvbiB0byB0aGUKaGFja3MgYW5kIG1hbnVhbGx5IHJlc2V0IHRoZSBhZmZlY3RlZCBwYXJ0aWVzJyBhY2NvdW50cyB0byB0aGVpciBzdGF0ZQpwcmlvciB0byB0aGUgYXR0YWNrLiBUaGlzIGZvcmsgZXNzZW50aWFsbHkgcmV3cm90ZSB0aGUgaGlzdG9yeSBvZiB0aGUKRXRoZXJldW0gbmV0d29yay6UaAddlChoTIwoVGhlIERBTy1Gb3JrIG9jY3VyZWQgYXMgYSByZXN1bHQgb2YgdGhlIJSFlIGUfZQoaAVoBmggaiESAABoIWgDaB1oUWgfSwB1Ymh7KYGUfZQoaAWMTGAyMDE2IERBTyBIYWNrcwo8aHR0cHM6Ly93d3cuZ2VtaW5pLmNvbS9jcnlwdG9wZWRpYS90aGUtZGFvLWhhY2stbWFrZXJkYW8+YF+UaAddlGhMjA4yMDE2IERBTyBIYWNrc5SFlIGUfZQoaAVoBmggaikSAABoIWgDaB1oUWgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UjARuYW1llIwOMjAxNiBEQU8gSGFja3OUjAZyZWZ1cmmUjDhodHRwczovL3d3dy5nZW1pbmkuY29tL2NyeXB0b3BlZGlhL3RoZS1kYW8taGFjay1tYWtlcmRhb5R1aBxoemgdTmgfTmggaiESAAB1YmgKKYGUfZQoaAWMOwo8aHR0cHM6Ly93d3cuZ2VtaW5pLmNvbS9jcnlwdG9wZWRpYS90aGUtZGFvLWhhY2stbWFrZXJkYW8+lGgHXZRoDn2UKGgQXZSMCWRhby1oYWNrc5RhaBNdlGgVXZSMDjIwMTYgZGFvIGhhY2tzlGFoF12UaBldlIwGcmVmdXJplGo6EgAAdWgcaAloHU5oH05oIGohEgAAdWJoTFg9AQAAIGluIHdoaWNoIGFuCnVua25vd24gZW50aXR5IG1hbmFnZWQgdG8gZHJhaW4gbW9yZSB0aGFuIDMuNiBtaWxsaW9uIGV0aGVyIGNhdXNpbmcgdGhlCnByaWNlIG9mIGV0aGVyIHRvIGRyb3AgYnkgbmVhcmx5IDM1JS4gVGhpcyBmb3JrIHdhcyB0aGUgc29sdXRpb24gdG8gdGhlCmhhY2tzIGFuZCBtYW51YWxseSByZXNldCB0aGUgYWZmZWN0ZWQgcGFydGllc+KAmSBhY2NvdW50cyB0byB0aGVpciBzdGF0ZQpwcmlvciB0byB0aGUgYXR0YWNrLiBUaGlzIGZvcmsgZXNzZW50aWFsbHkgcmV3cm90ZSB0aGUgaGlzdG9yeSBvZiB0aGUKRXRoZXJldW0gbmV0d29yay6UhZSBlH2UKGgFaAZoIGohEgAAaCFoA2gdaFFoH0sAdWJlaA59lChoEF2UaBNdlIwOY2hhbmdlLXJlbW92ZWSUYWgVXZRoF12UaBldlHVoHGh1aB1oHmgfS7xoIGq3EQAAaCFoA3ViaACMCmZpZWxkX2xpc3SUk5QpgZR9lChoBWgGaAddlChoAIwFZmllbGSUk5QpgZR9lChoBWgGaAddlChoAIwKZmllbGRfbmFtZZSTlCmBlH2UKGgFjApQYXJhbWV0ZXJzlGgHXZRoTIwKUGFyYW1ldGVyc5SFlIGUfZQoaAVoBmggal8SAABoIWgDaB1oUWgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcal0SAABoHWgeaB9LAGggaloSAAB1YmgAjApmaWVsZF9ib2R5lJOUKYGUfZQoaAVoBmgHXZRodimBlH2UKGgFjCNvbGQgLS0gUHJldmlvdXMgYmxvY2sgY2hhaW4gb2JqZWN0LpRoB12UKGgijA5saXRlcmFsX3N0cm9uZ5STlCmBlH2UKGgFjANvbGSUaAddlGhMjANvbGSUhZSBlH2UKGgFaAZoIGp4EgAAaCFoA2gdaFFoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlIwLcmVmc3BlY2lmaWOUiIwJcHk6bW9kdWxllGqzDQAAjAhweTpjbGFzc5ROdWgcanYSAABoHU5oH05oIGpyEgAAdWJoTIwhIOKAkyBQcmV2aW91cyBibG9jayBjaGFpbiBvYmplY3QulIWUgZR9lChoBWgGaCBqchIAAGghaANoHWhRaB9LAHViZWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxodWgdTmgfTmggam8SAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcam0SAABoHU5oH05oIGpaEgAAdWJlaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGpYEgAAaB1OaB9OaCBqVRIAAHVialkSAAApgZR9lChoBWgGaAddlChqXhIAACmBlH2UKGgFjAdSZXR1cm5zlGgHXZRoTIwHUmV0dXJuc5SFlIGUfZQoaAVoBmggaqISAABoIWgDaB1oUWgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcal0SAABoHWgeaB9LAGggap8SAAB1YmpuEgAAKYGUfZQoaAVoBmgHXZRodimBlH2UKGgFjDZuZXcgLS0gVXBncmFkZWQgYmxvY2sgY2hhaW4gb2JqZWN0IGZvciB0aGlzIGhhcmQgZm9yay6UaAddlChoAIwGc3Ryb25nlJOUKYGUfZQoaAWMByoqbmV3KiqUaAddlGhMjANuZXeUhZSBlH2UKGgFaAZoIGq5EgAAaCFoA2gdaFFoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGq3EgAAaB1OaB9OaCBqsxIAAHViaEyMNCDigJMgVXBncmFkZWQgYmxvY2sgY2hhaW4gb2JqZWN0IGZvciB0aGlzIGhhcmQgZm9yay6UhZSBlH2UKGgFaAZoIGqzEgAAaCFoA2gdaFFoH0sAdWJlaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGh1aB1OaB9OaCBqsBIAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxqbRIAAGgdTmgfTmggap8SAAB1YmVoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcalgSAABoHU5oH05oIGpVEgAAdWJqWRIAACmBlH2UKGgFaAZoB12UKGpeEgAAKYGUfZQoaAWMC1JldHVybiB0eXBllGgHXZRoTIwLUmV0dXJuIHR5cGWUhZSBlH2UKGgFaAZoIGrgEgAAaCFoA2gdaFFoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGpdEgAAaB1oHmgfSwBoIGrdEgAAdWJqbhIAACmBlH2UKGgFaAZoB12UaHYpgZR9lChoBYwKQmxvY2tDaGFpbpRoB12UavwFAAApgZR9lChoBYwMYEJsb2NrQ2hhaW5glGgHXZRoTIwKQmxvY2tDaGFpbpSFlIGUfZQoaAVoBmggavUSAABoIWgDaB1oUWgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcavsFAABoHU5oH05oIGrxEgAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGh1aB1OaB9OaCBq7hIAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxqbRIAAGgdTmgfTmggat0SAAB1YmVoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcalgSAABoHU5oH05oIGpVEgAAdWJlaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGpTEgAAaB1oUWgfSwBoIGq3EQAAaCFoA3ViZWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxqtg0AAGgdaB5oH0sAaCBqbhEAAGghaAN1YmVoDn2UKGgQXZRoE12UKGqwEQAAjAhmdW5jdGlvbpRlaBVdlGgXXZRoGV2UjAZkb21haW6UarARAACMB29ianR5cGWUaiQTAACMCGRlc2N0eXBllGokEwAAjAdub2luZGV4lIl1aBxqiA0AAGgdaFFoH0sAaCBqUhEAAGghaAN1YmrNDQAAKYGUfZQoaAWM12RlZiBhcHBseV9mb3JrKG9sZDogQmxvY2tDaGFpbikgLT4gQmxvY2tDaGFpbjoKICAgIGZvciBhZGRyZXNzIGluIERBT19BQ0NPVU5UUzoKICAgICAgICBiYWxhbmNlID0gZ2V0X2FjY291bnQob2xkLnN0YXRlLCBhZGRyZXNzKS5iYWxhbmNlCiAgICAgICAgbW92ZV9ldGhlcihvbGQuc3RhdGUsIGFkZHJlc3MsIERBT19SRUNPVkVSWSwgYmFsYW5jZSkKICAgIHJldHVybiBvbGQKlGgHXZQoaEyMM2RlZiBhcHBseV9mb3JrKG9sZDogQmxvY2tDaGFpbikgLT4gQmxvY2tDaGFpbjoKICAgIJSFlIGUfZQoaAVoBmggaiwTAABoIWgDaB1oUWgfSwB1Ymo5EAAAKYGUfZQoaAVoBmgHXZRoTIyZZm9yIGFkZHJlc3MgaW4gREFPX0FDQ09VTlRTOgogICAgICAgIGJhbGFuY2UgPSBnZXRfYWNjb3VudChvbGQuc3RhdGUsIGFkZHJlc3MpLmJhbGFuY2UKICAgICAgICBtb3ZlX2V0aGVyKG9sZC5zdGF0ZSwgYWRkcmVzcywgREFPX1JFQ09WRVJZLCBiYWxhbmNlKQogICAglIWUgZR9lChoBWgGaCBqNBMAAGghaANoHWhRaB9LAHViYWgOfZQoaBBdlGgTXZSMDmNoYW5nZS1yZW1vdmVklGFoFV2UaBddlGgZXZR1aBxqOBAAAGggaiwTAABoIWgDaB1oUWgfSwB1YmhMjAtyZXR1cm4gb2xkCpSFlIGUfZQoaAVoBmggaiwTAABoIWgDaB1oUWgfSwB1YmVoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UjAZzb3VyY2WUjE8vaG9tZS9ydW5uZXIvd29yay9leGVjdXRpb24tc3BlY3MvZXhlY3V0aW9uLXNwZWNzL3NyYy9ldGhlcmV1bS9kYW9fZm9yay9zcGVjLnB5lIwJeG1sOnNwYWNllGqdBAAAjAVmb3JjZZSJjAhsYW5ndWFnZZSMBnB5dGhvbpSMDmhpZ2hsaWdodF9hcmdzlH2UauQNAABLAXOMB2xpbmVub3OUiXVoHGrMDQAAaB1oHmgfS8xoIGpSEQAAaCFoA3ViZWgOfZQoaBBdlGopAgAAYWgTXZRoFV2UjAphcHBseV9mb3JrlGFoF12UaBldlHVoHGhAaB1oHmgfS7BoIGpXDQAAaCFoA3ViaEEpgZR9lChoBWgGaAddlChoRimBlH2UKGgFjBlnZXRfbGFzdF8yNTZfYmxvY2tfaGFzaGVzlGgHXZRoTIwZZ2V0X2xhc3RfMjU2X2Jsb2NrX2hhc2hlc5SFlIGUfZQoaAVoBmggal8TAABoIWgDaB1oUWgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaEVoHWgeaB9L0WggalwTAAB1YmgkKYGUfZQoaAVoBmgHXZRoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UjAdlbnRyaWVzlF2UdWgcaCNoHU5oH05oIGpcEwAAdWJqiQ0AACmBlH2UKGgFaAZoB12UKGqODQAAKYGUfZQoaAWMIGdldF9sYXN0XzI1Nl9ibG9ja19oYXNoZXMoY2hhaW4plGgHXZQoapQNAAApgZR9lChoBYwZZ2V0X2xhc3RfMjU2X2Jsb2NrX2hhc2hlc5RoB12UaEyMGWdldF9sYXN0XzI1Nl9ibG9ja19oYXNoZXOUhZSBlH2UKGgFaAZoIGp/EwAAaCFoA2gdaFFoH0sAdWJhaA59lChoEF2UaBNdlChqnw0AAGqgDQAAaqENAABqog0AAGVoFV2UaBddlGgZXZSMCXhtbDpzcGFjZZRqnQQAAHVoHGqTDQAAaB1oHmgfTmggansTAAB1YmqFEQAAKYGUfZQoaAWMBWNoYWlulGgHXZRqixEAACmBlH2UKGgFjAVjaGFpbpRoB12UajkQAAApgZR9lChoBWgGaAddlGhMjAVjaGFpbpSFlIGUfZQoaAVoBmggapYTAABoIWgDaB1oUWgfSwB1YmFoDn2UKGgQXZRoE12UapoRAABhaBVdlGgXXZRoGV2UdWgcajgQAABoHU5oH05oIGqSEwAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlIwJeG1sOnNwYWNllGqdBAAAdWgcaooRAABoHU5oH05oIGqOEwAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlIwJeG1sOnNwYWNllGqdBAAAdWgcaoQRAABoHWgeaB9OaCBqexMAAHViZWgOfZQoaBBdlIwwZXRoZXJldW0uZGFvX2Zvcmsuc3BlYy5nZXRfbGFzdF8yNTZfYmxvY2tfaGFzaGVzlGFoE12UKGqqDQAAaqsNAACMAnB5lGqtDQAAaq4NAABlaBVdlGgXXZRoGV2UjAZtb2R1bGWUarMNAACMBWNsYXNzlGgGjAhmdWxsbmFtZZRqgRMAAHVoHGqNDQAAaB1oHmgfS9RoIGp4EwAAdWJqtw0AACmBlH2UKGgFaAZoB12UKGh2KYGUfZQoaAWMWU9idGFpbiB0aGUgbGlzdCBvZiBoYXNoZXMgb2YgdGhlIHByZXZpb3VzIDI1NiBibG9ja3MgaW4gb3JkZXIgb2YKaW5jcmVhc2luZyBibG9jayBudW1iZXIulGgHXZRoTIxZT2J0YWluIHRoZSBsaXN0IG9mIGhhc2hlcyBvZiB0aGUgcHJldmlvdXMgMjU2IGJsb2NrcyBpbiBvcmRlciBvZgppbmNyZWFzaW5nIGJsb2NrIG51bWJlci6UhZSBlH2UKGgFaAZoIGq/EwAAaCFoA2gdaFFoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGh1aB1oHmgfS9doIGq8EwAAdWJodimBlH2UKGgFjD9UaGlzIGZ1bmN0aW9uIHdpbGwgcmV0dXJuIGxlc3MgaGFzaGVzIGZvciB0aGUgZmlyc3QgMjU2IGJsb2Nrcy6UaAddlGhMjD9UaGlzIGZ1bmN0aW9uIHdpbGwgcmV0dXJuIGxlc3MgaGFzaGVzIGZvciB0aGUgZmlyc3QgMjU2IGJsb2Nrcy6UhZSBlH2UKGgFaAZoIGrNEwAAaCFoA2gdaFFoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGh1aB1oHmgfS9poIGq8EwAAdWJodimBlH2UKGgFjHBUaGUgYGBCTE9DS0hBU0hgYCBvcGNvZGUgbmVlZHMgdG8gYWNjZXNzIHRoZSBsYXRlc3QgaGFzaGVzIG9uIHRoZSBjaGFpbiwKdGhlcmVmb3JlIHRoaXMgZnVuY3Rpb24gcmV0cmlldmVzIHRoZW0ulGgHXZQoaEyMBFRoZSCUhZSBlH2UKGgFaAZoIGrbEwAAaCFoA2gdaFFoH0sAdWJqEwUAACmBlH2UKGgFjA1gYEJMT0NLSEFTSGBglGgHXZRoTIwJQkxPQ0tIQVNIlIWUgZR9lChoBWgGaCBq4xMAAGghaANoHWhRaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxqEgUAAGgdTmgfTmggatsTAAB1YmhMjF8gb3Bjb2RlIG5lZWRzIHRvIGFjY2VzcyB0aGUgbGF0ZXN0IGhhc2hlcyBvbiB0aGUgY2hhaW4sCnRoZXJlZm9yZSB0aGlzIGZ1bmN0aW9uIHJldHJpZXZlcyB0aGVtLpSFlIGUfZQoaAVoBmggatsTAABoIWgDaB1oUWgfSwB1YmVoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaHVoHWgeaB9L3GggarwTAAB1YmpUEgAAKYGUfZQoaAVoBmgHXZQoalkSAAApgZR9lChoBWgGaAddlChqXhIAACmBlH2UKGgFjApQYXJhbWV0ZXJzlGgHXZRoTIwKUGFyYW1ldGVyc5SFlIGUfZQoaAVoBmggagEUAABoIWgDaB1oUWgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcal0SAABoHWgeaB9LAGggav4TAAB1YmpuEgAAKYGUfZQoaAVoBmgHXZRodimBlH2UKGgFjCNjaGFpbiAtLSBIaXN0b3J5IGFuZCBjdXJyZW50IHN0YXRlLpRoB12UKGp3EgAAKYGUfZQoaAWMBWNoYWlulGgHXZRoTIwFY2hhaW6UhZSBlH2UKGgFaAZoIGoWFAAAaCFoA2gdaFFoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlIwLcmVmc3BlY2lmaWOUiIwJcHk6bW9kdWxllGqzDQAAjAhweTpjbGFzc5ROdWgcanYSAABoHU5oH05oIGoSFAAAdWJoTIwfIOKAkyBIaXN0b3J5IGFuZCBjdXJyZW50IHN0YXRlLpSFlIGUfZQoaAVoBmggahIUAABoIWgDaB1oUWgfSwB1YmVoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaHVoHU5oH05oIGoPFAAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGptEgAAaB1OaB9OaCBq/hMAAHViZWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxqWBIAAGgdTmgfTmggavsTAAB1YmpZEgAAKYGUfZQoaAVoBmgHXZQoal4SAAApgZR9lChoBYwHUmV0dXJuc5RoB12UaEyMB1JldHVybnOUhZSBlH2UKGgFaAZoIGpAFAAAaCFoA2gdaFFoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGpdEgAAaB1oHmgfSwBoIGo9FAAAdWJqbhIAACmBlH2UKGgFaAZoB12UaHYpgZR9lChoBYxbcmVjZW50X2Jsb2NrX2hhc2hlcyAtLSBIYXNoZXMgb2YgdGhlIHJlY2VudCAyNTYgYmxvY2tzIGluIG9yZGVyIG9mIGluY3JlYXNpbmcgYmxvY2sgbnVtYmVyLpRoB12UKGq4EgAAKYGUfZQoaAWMFyoqcmVjZW50X2Jsb2NrX2hhc2hlcyoqlGgHXZRoTIwTcmVjZW50X2Jsb2NrX2hhc2hlc5SFlIGUfZQoaAVoBmggalUUAABoIWgDaB1oUWgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcarcSAABoHU5oH05oIGpRFAAAdWJoTIxJIOKAkyBIYXNoZXMgb2YgdGhlIHJlY2VudCAyNTYgYmxvY2tzIGluIG9yZGVyIG9mIGluY3JlYXNpbmcgYmxvY2sgbnVtYmVyLpSFlIGUfZQoaAVoBmggalEUAABoIWgDaB1oUWgfSwB1YmVoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaHVoHU5oH05oIGpOFAAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGptEgAAaB1OaB9OaCBqPRQAAHViZWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxqWBIAAGgdTmgfTmggavsTAAB1YmpZEgAAKYGUfZQoaAVoBmgHXZQoal4SAAApgZR9lChoBYwLUmV0dXJuIHR5cGWUaAddlGhMjAtSZXR1cm4gdHlwZZSFlIGUfZQoaAVoBmgganwUAABoIWgDaB1oUWgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcal0SAABoHWgeaB9LAGggankUAAB1YmpuEgAAKYGUfZQoaAVoBmgHXZRodimBlH2UKGgFjAxMaXN0W0hhc2gzMl2UaAddlGr8BQAAKYGUfZQoaAWMDmBMaXN0W0hhc2gzMl1glGgHXZRoTIwMTGlzdFtIYXNoMzJdlIWUgZR9lChoBWgGaCBqkRQAAGghaANoHWhRaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxq+wUAAGgdTmgfTmggao0UAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaHVoHU5oH05oIGqKFAAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGptEgAAaB1OaB9OaCBqeRQAAHViZWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxqWBIAAGgdTmgfTmggavsTAAB1YmVoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcalMSAABoHU5oH05oIGq8EwAAdWJlaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGq2DQAAaB1oHmgfTmggangTAAB1YmVoDn2UKGgQXZRoE12UKGq1EwAAjAhmdW5jdGlvbpRlaBVdlGgXXZRoGV2UjAZkb21haW6UarUTAACMB29ianR5cGWUasAUAACMCGRlc2N0eXBllGrAFAAAjAdub2luZGV4lIl1aBxqiA0AAGgdTmgfTmggalwTAAB1YmrNDQAAKYGUfZQoaAVY3wIAAGRlZiBnZXRfbGFzdF8yNTZfYmxvY2tfaGFzaGVzKGNoYWluOiBCbG9ja0NoYWluKSAtPiBMaXN0W0hhc2gzMl06CiAgICByZWNlbnRfYmxvY2tzID0gY2hhaW4uYmxvY2tzWy0yNTU6XQogICAgIyBUT0RPOiBUaGlzIGZ1bmN0aW9uIGhhcyBub3QgYmVlbiB0ZXN0ZWQgcmlnb3JvdXNseQogICAgaWYgbGVuKHJlY2VudF9ibG9ja3MpID09IDA6CiAgICAgICAgcmV0dXJuIFtdCgogICAgcmVjZW50X2Jsb2NrX2hhc2hlcyA9IFtdCgogICAgZm9yIGJsb2NrIGluIHJlY2VudF9ibG9ja3M6CiAgICAgICAgcHJldl9ibG9ja19oYXNoID0gYmxvY2suaGVhZGVyLnBhcmVudF9oYXNoCiAgICAgICAgcmVjZW50X2Jsb2NrX2hhc2hlcy5hcHBlbmQocHJldl9ibG9ja19oYXNoKQoKICAgICMgV2UgYXJlIGNvbXB1dGluZyB0aGUgaGFzaCBvbmx5IGZvciB0aGUgbW9zdCByZWNlbnQgYmxvY2sgYW5kIG5vdCBmb3IKICAgICMgdGhlIHJlc3Qgb2YgdGhlIGJsb2NrcyBhcyB0aGV5IGhhdmUgc3VjY2Vzc29ycyB3aGljaCBoYXZlIHRoZSBoYXNoIG9mCiAgICAjIHRoZSBjdXJyZW50IGJsb2NrIGFzIHBhcmVudCBoYXNoLgogICAgbW9zdF9yZWNlbnRfYmxvY2tfaGFzaCA9IGtlY2NhazI1NihybHAuZW5jb2RlKHJlY2VudF9ibG9ja3NbLTFdLmhlYWRlcikpCiAgICByZWNlbnRfYmxvY2tfaGFzaGVzLmFwcGVuZChtb3N0X3JlY2VudF9ibG9ja19oYXNoKQoKICAgIHJldHVybiByZWNlbnRfYmxvY2tfaGFzaGVzCpRoB12UaExY3wIAAGRlZiBnZXRfbGFzdF8yNTZfYmxvY2tfaGFzaGVzKGNoYWluOiBCbG9ja0NoYWluKSAtPiBMaXN0W0hhc2gzMl06CiAgICByZWNlbnRfYmxvY2tzID0gY2hhaW4uYmxvY2tzWy0yNTU6XQogICAgIyBUT0RPOiBUaGlzIGZ1bmN0aW9uIGhhcyBub3QgYmVlbiB0ZXN0ZWQgcmlnb3JvdXNseQogICAgaWYgbGVuKHJlY2VudF9ibG9ja3MpID09IDA6CiAgICAgICAgcmV0dXJuIFtdCgogICAgcmVjZW50X2Jsb2NrX2hhc2hlcyA9IFtdCgogICAgZm9yIGJsb2NrIGluIHJlY2VudF9ibG9ja3M6CiAgICAgICAgcHJldl9ibG9ja19oYXNoID0gYmxvY2suaGVhZGVyLnBhcmVudF9oYXNoCiAgICAgICAgcmVjZW50X2Jsb2NrX2hhc2hlcy5hcHBlbmQocHJldl9ibG9ja19oYXNoKQoKICAgICMgV2UgYXJlIGNvbXB1dGluZyB0aGUgaGFzaCBvbmx5IGZvciB0aGUgbW9zdCByZWNlbnQgYmxvY2sgYW5kIG5vdCBmb3IKICAgICMgdGhlIHJlc3Qgb2YgdGhlIGJsb2NrcyBhcyB0aGV5IGhhdmUgc3VjY2Vzc29ycyB3aGljaCBoYXZlIHRoZSBoYXNoIG9mCiAgICAjIHRoZSBjdXJyZW50IGJsb2NrIGFzIHBhcmVudCBoYXNoLgogICAgbW9zdF9yZWNlbnRfYmxvY2tfaGFzaCA9IGtlY2NhazI1NihybHAuZW5jb2RlKHJlY2VudF9ibG9ja3NbLTFdLmhlYWRlcikpCiAgICByZWNlbnRfYmxvY2tfaGFzaGVzLmFwcGVuZChtb3N0X3JlY2VudF9ibG9ja19oYXNoKQoKICAgIHJldHVybiByZWNlbnRfYmxvY2tfaGFzaGVzCpSFlIGUfZQoaAVoBmggasgUAABoIWgDaB1oUWgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UjAZzb3VyY2WUjE8vaG9tZS9ydW5uZXIvd29yay9leGVjdXRpb24tc3BlY3MvZXhlY3V0aW9uLXNwZWNzL3NyYy9ldGhlcmV1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cGFyZW50IGJsb2NrLiBUaGUKaW5mb3JtYXRpb24gaW4gdGhlIGJsb2NrJ3MgaGVhZGVyIG11c3QgYWxzbyBtYXRjaCB0aGUgY29ycmVzcG9uZGluZwppbmZvcm1hdGlvbiBpbiB0aGUgYmxvY2sulGgHXZRoTFg1AQAAQWxsIHBhcnRzIG9mIHRoZSBibG9ja+KAmXMgY29udGVudHMgbmVlZCB0byBiZSB2ZXJpZmllZCBiZWZvcmUgYmVpbmcgYWRkZWQKdG8gdGhlIGNoYWluLiBCbG9ja3MgYXJlIHZlcmlmaWVkIGJ5IGVuc3VyaW5nIHRoYXQgdGhlIGNvbnRlbnRzIG9mIHRoZQpibG9jayBtYWtlIGxvZ2ljYWwgc2Vuc2Ugd2l0aCB0aGUgY29udGVudHMgb2YgdGhlIHBhcmVudCBibG9jay4gVGhlCmluZm9ybWF0aW9uIGluIHRoZSBibG9ja+KAmXMgaGVhZGVyIG11c3QgYWxzbyBtYXRjaCB0aGUgY29ycmVzcG9uZGluZwppbmZvcm1hdGlvbiBpbiB0aGUgYmxvY2sulIWUgZR9lChoBWgGaCBqbxUAAGghaANoHWhRaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxodWgdaB5oH0v0aCBqXhUAAHViaHYpgZR9lChoBYz8VG8gaW1wbGVtZW50IEV0aGVyZXVtLCBpbiB0aGVvcnkgY2xpZW50cyBhcmUgb25seSByZXF1aXJlZCB0byBzdG9yZSB0aGUKbW9zdCByZWNlbnQgMjU1IGJsb2NrcyBvZiB0aGUgY2hhaW4gc2luY2UgYXMgZmFyIGFzIGV4ZWN1dGlvbiBpcwpjb25jZXJuZWQsIG9ubHkgdGhvc2UgYmxvY2tzIGFyZSBhY2Nlc3NlZC4gUHJhY3RpY2FsbHksIGhvd2V2ZXIsIGNsaWVudHMKc2hvdWxkIHN0b3JlIG1vcmUgYmxvY2tzIHRvIGhhbmRsZSByZW9yZ3MulGgHXZRoTIz8VG8gaW1wbGVtZW50IEV0aGVyZXVtLCBpbiB0aGVvcnkgY2xpZW50cyBhcmUgb25seSByZXF1aXJlZCB0byBzdG9yZSB0aGUKbW9zdCByZWNlbnQgMjU1IGJsb2NrcyBvZiB0aGUgY2hhaW4gc2luY2Ug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OgogICAgcGFyZW50X2hlYWRlciA9IGNoYWluLmJsb2Nrc1stMV0uaGVhZGVyCiAgICB2YWxpZGF0ZV9oZWFkZXIoYmxvY2suaGVhZGVyLCBwYXJlbnRfaGVhZGVyKQogICAgdmFsaWRhdGVfb21tZXJzKGJsb2NrLm9tbWVycywgYmxvY2suaGVhZGVyLCBjaGFpbikKICAgICgKICAgICAgICBnYXNfdXNlZCwKICAgICAgICB0cmFuc2FjdGlvbnNfcm9vdCwKICAgICAgICByZWNlaXB0X3Jvb3QsCiAgICAgICAgYmxvY2tfbG9nc19ibG9vbSwKICAgICAgICBzdGF0ZSwKICAgICkgPSBhcHBseV9ib2R5KAogICAgICAgIGNoYWluLnN0YXRlLAogICAgICAgIGdldF9sYXN0XzI1Nl9ibG9ja19oYXNoZXMoY2hhaW4pLAogICAgICAgIGJsb2NrLmhlYWRlci5jb2luYmFzZSwKICAgICAgICBibG9jay5oZWFkZXIubnVtYmVyLAogICAgICAgIGJsb2NrLmhlYWRlci5nYXNfbGltaXQsCiAgICAgICAgYmxvY2suaGVhZGVyLnRpbWVzdGFtcCwKICAgICAgICBibG9jay5oZWFkZXIuZGlmZmljdWx0eSwKICAgICAgICBibG9jay50cmFuc2FjdGlvbnMsCiAgICAgICAgYmxvY2sub21tZXJzLAogICAgKQogICAgZW5zdXJlKGdhc191c2VkID09IGJsb2NrLmhlYWRlci5nYXNfdXNlZCwgSW52YWxpZEJsb2NrKQogICAgZW5zdXJlKHRyYW5zYWN0aW9uc19yb290ID09IGJsb2NrLmhlYWRlci50cmFuc2FjdGlvbnNfcm9vdCwgSW52YWxpZEJsb2NrKQogICAgZW5zdXJlKHN0YXRlX3Jvb3Qoc3RhdGUpID09IGJsb2NrLmhlYWRlci5zdGF0ZV9yb290LCBJbnZhbGlkQmxvY2spCiAgICBlbnN1cmUocmVjZWlwdF9yb290ID09IGJsb2NrLmhlYWRlci5yZWNlaXB0X3Jvb3QsIEludmFsaWRCbG9jaykKICAgIGVuc3VyZShibG9ja19sb2dzX2Jsb29tID09IGJsb2NrLmhlYWRlci5ibG9vbSwgSW52YWxpZEJsb2NrKQoKICAgIGNoYWluLmJsb2Nrcy5hcHBlbmQoYmxvY2spCiAgICBpZiBsZW4oY2hhaW4uYmxvY2tzKSA+IDI1NToKICAgICAgICAjIFJlYWwgY2xpZW50cyBoYXZlIHRvIHN0b3JlIG1vcmUgYmxvY2tzIHRvIGRlYWwgd2l0aCByZW9yZ3MsIGJ1dCB0aGUKICAgICAgICAjIHByb3RvY29sIG9ubHkgcmVxdWlyZXMgdGhlIGxhc3QgMjU1CiAgICAgICAgY2hhaW4uYmxvY2tzID0gY2hhaW4uYmxvY2tzWy0yNTU6XQqUaAddlGhMWKoEAABkZWYgc3RhdGVfdHJhbnNpdGlvbihjaGFpbjogQmxvY2tDaGFpbiwgYmxvY2s6IEJsb2NrKSAtPiBOb25lOgogICAgcGFyZW50X2hlYWRlciA9IGNoYWluLmJsb2Nrc1stMV0uaGVhZGVyCiAgICB2YWxpZGF0ZV9oZWFkZXIoYmxvY2suaGVhZGVyLCBwYXJlbnRfaGVhZGVyKQogICAgdmFsaWRhdGVfb21tZXJzKGJsb2NrLm9tbWVycywgYmxvY2suaGVhZGVyLCBjaGFpbikKICAgICgKICAgICAgICBnYXNfdXNlZCwKICAgICAgICB0cmFuc2FjdGlvbnNfcm9vdCwKICAgICAgICByZWNlaXB0X3Jvb3QsCiAgICAgICAgYmxvY2tfbG9nc19ibG9vbSwKICAgICAgICBzdGF0ZSwKICAgICkgPSBhcHBseV9ib2R5KAogICAgICAgIGNoYWluLnN0YXRlLAogICAgICAgIGdldF9sYXN0XzI1Nl9ibG9ja19oYXNoZXMoY2hhaW4pLAogICAgICAgIGJsb2NrLmhlYWRlci5jb2luYmFzZSwKICAgICAgICBibG9jay5oZWFkZXIubnVtYmVyLAogICAgICAgIGJsb2NrLmhlYWRlci5nYXNfbGltaXQsCiAgICAgICAgYmxvY2suaGVhZGVyLnRpbWVzdGFtcCwKICAgICAgICBibG9jay5oZWFkZXIuZGlmZmljdWx0eSwKICAgICAgICBibG9jay50cmFuc2FjdGlvbnMsCiAgICAgICAgYmxvY2sub21tZXJzLAogICAgKQogICAgZW5zdXJlKGdhc191c2VkID09IGJsb2NrLmhlYWRlci5nYXNfdXNlZCwgSW52YWxpZEJsb2NrKQogICAgZW5zdXJlKHRyYW5zYWN0aW9uc19yb290ID09IGJsb2NrLmhlYWRlci50cmFuc2FjdGlvbnNfcm9vdCwgSW52YWxpZEJsb2NrKQogICAgZW5zdXJlKHN0YXRlX3Jvb3Qoc3RhdGUpID09IGJsb2NrLmhlYWRlci5zdGF0ZV9yb290LCBJbnZhbGlkQmxvY2spCiAgICBlbnN1cmUocmVjZWlwdF9yb290ID09IGJsb2NrLmhlYWRlci5yZWNlaXB0X3Jvb3QsIEludmFsaWRCbG9jaykKICAgIGVuc3VyZShibG9ja19sb2dzX2Jsb29tID09IGJsb2NrLmhlYWRlci5ibG9vbSwgSW52YWxpZEJsb2NrKQoKICAgIGNoYWluLmJsb2Nrcy5hcHBlbmQoYmxvY2spCiAgICBpZiBsZW4oY2hhaW4uYmxvY2tzKSA+IDI1NToKICAgICAgICAjIFJlYWwgY2xpZW50cyBoYXZlIHRvIHN0b3JlIG1vcmUgYmxvY2tzIHRvIGRlYWwgd2l0aCByZW9yZ3MsIGJ1dCB0aGUKICAgICAgICAjIHByb3RvY29sIG9ubHkgcmVxdWlyZXMgdGhlIGxhc3QgMjU1CiAgICAgICAgY2hhaW4uYmxvY2tzID0gY2hhaW4uYmxvY2tzWy0yNTU6XQqUhZSBlH2UKGgFaAZoIGowFgAAaCFoA2gdaFFoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlIwGc291cmNllIxPL2hvbWUvcnVubmVyL3dvcmsvZXhlY3V0aW9uLXNwZWNzL2V4ZWN1dGlvbi1zcGVjcy9zcmMvZXRoZXJldW0vZGFvX2Zvcmsvc3BlYy5weZSMCXhtbDpzcGFjZZRqnQQAAIwFZm9yY2WUiYwIbGFuZ3VhZ2WUjAZweXRob26UjA5oaWdobGlnaHRfYXJnc5R9lGrkDQAASwFzjAdsaW5lbm9zlIl1aBxqzA0AAGgdaB5oH00FAWggauYUAAB1YmVoDn2UKGgQXZRqbQIAAGFoE12UaBVdlIwQc3RhdGVfdHJhbnNpdGlvbpRhaBddlGgZXZR1aBxoQGgdaB5oH0vsaCBqVw0AAGghaAN1YmhBKYGUfZQoaAVoBmgHXZQoaEYpgZR9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aBVdlGgXXZRoGV2UdWgcalgSAABoHU5oH05oIGr5FgAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGpTEgAAaB1OaB9OaCBqxhYAAHViZWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxqtg0AAGgdaB5oH05oIGpqFgAAdWJlaA59lChoEF2UaBNdlChqvxYAAIwIZnVuY3Rpb26UZWgVXZRoF12UaBldlIwGZG9tYWlulGq/FgAAjAdvYmp0eXBllGqEFwAAjAhkZXNjdHlwZZRqhBcAAIwHbm9pbmRleJSJdWgcaogNAABoHWhRaB9LAGggak4WAABoIWgDdWJqzQ0AACmBlH2UKGgFWLcDAABkZWYgdmFsaWRhdGVfaGVhZGVyKGhlYWRlcjogSGVhZGVyLCBwYXJlbnRfaGVhZGVyOiBIZWFkZXIpIC0+IE5vbmU6CiAgICBlbnN1cmUoaGVhZGVyLnRpbWVzdGFtcCA+IHBhcmVudF9oZWFkZXIudGltZXN0YW1wLCBJbnZhbGlkQmxvY2spCiAgICBlbnN1cmUoaGVhZGVyLm51bWJlciA9PSBwYXJlbnRfaGVhZGVyLm51bWJlciArIDEsIEludmFsaWRCbG9jaykKICAgIGVuc3VyZSgKICAgICAgICBjaGVja19nYXNfbGltaXQoaGVhZGVyLmdhc19saW1pdCwgcGFyZW50X2hlYWRlci5nYXNfbGltaXQpLAogICAgICAgIEludmFsaWRCbG9jaywKICAgICkKICAgIGVuc3VyZShsZW4oaGVhZGVyLmV4dHJhX2RhdGEpIDw9IDMyLCBJbnZhbGlkQmxvY2spCgogICAgYmxvY2tfZGlmZmljdWx0eSA9IGNhbGN1bGF0ZV9ibG9ja19kaWZmaWN1bHR5KAogICAgICAgIGhlYWRlci5udW1iZXIsCiAgICAgICAgaGVhZGVyLnRpbWVzdGFtcCwKICAgICAgICBwYXJlbnRfaGVhZGVyLnRpbWVzdGFtcCwKICAgICAgICBwYXJlbnRfaGVhZGVyLmRpZmZpY3VsdHksCiAgICApCiAgICBlbnN1cmUoaGVhZGVyLmRpZmZpY3VsdHkgPT0gYmxvY2tfZGlmZmljdWx0eSwgSW52YWxpZEJsb2NrKQoKICAgIGJsb2NrX3BhcmVudF9oYXNoID0ga2VjY2FrMjU2KHJscC5lbmNvZGUocGFyZW50X2hlYWRlcikpCiAgICBlbnN1cmUoaGVhZGVyLnBhcmVudF9oYXNoID09IGJsb2NrX3BhcmVudF9oYXNoLCBJbnZhbGlkQmxvY2spCgogICAgaWYgKAogICAgICAgIGhlYWRlci5udW1iZXIgPj0gTUFJTk5FVF9GT1JLX0JMT0NLCiAgICAgICAgYW5kIGhlYWRlci5udW1iZXIgPCBNQUlOTkVUX0ZPUktfQkxPQ0sgKyAxMAogICAgKToKICAgICAgICBlbnN1cmUoaGVhZGVyLmV4dHJhX2RhdGEgPT0gYiJkYW8taGFyZC1mb3JrIiwgSW52YWxpZEJsb2NrKQoKICAgIHZhbGlkYXRlX3Byb29mX29mX3dvcmsoaGVhZGVyKQqUaAddlChoTFjjAgAAZGVmIHZhbGlkYXRlX2hlYWRlcihoZWFkZXI6IEhlYWRlciwgcGFyZW50X2hlYWRlcjogSGVhZGVyKSAtPiBOb25lOgogICAgZW5zdXJlKGhlYWRlci50aW1lc3RhbXAgPiBwYXJlbnRfaGVhZGVyLnRpbWVzdGFtcCwgSW52YWxpZEJsb2NrKQogICAgZW5zdXJlKGhlYWRlci5udW1iZXIgPT0gcGFyZW50X2hlYWRlci5udW1iZXIgKyAxLCBJbnZhbGlkQmxvY2spCiAgICBlbnN1cmUoCiAgICAgICAgY2hlY2tfZ2FzX2xpbWl0KGhlYWRlci5nYXNfbGltaXQsIHBhcmVudF9oZWFkZXIuZ2FzX2xpbWl0KSwKICAgICAgICBJbnZhbGlkQmxvY2ssCiAgICApCiAgICBlbnN1cmUobGVuKGhlYWRlci5leHRyYV9kYXRhKSA8PSAzMiwgSW52YWxpZEJsb2NrKQoKICAgIGJsb2NrX2RpZmZpY3VsdHkgPSBjYWxjdWxhdGVfYmxvY2tfZGlmZmljdWx0eSgKICAgICAgICBoZWFkZXIubnVtYmVyLAogICAgICAgIGhlYWRlci50aW1lc3RhbXAsCiAgICAgICAgcGFyZW50X2hlYWRlci50aW1lc3RhbXAsCiAgICAgICAgcGFyZW50X2hlYWRlci5kaWZmaWN1bHR5LAogICAgKQogICAgZW5zdXJlKGhlYWRlci5kaWZmaWN1bHR5ID09IGJsb2NrX2RpZmZpY3VsdHksIEludmFsaWRCbG9jaykKCiAgICBibG9ja19wYXJlbnRfaGFzaCA9IGtlY2NhazI1NihybHAuZW5jb2RlKHBhcmVudF9oZWFkZXIpKQogICAgZW5zdXJlKGhlYWRlci5wYXJlbnRfaGFzaCA9PSBibG9ja19wYXJlbnRfaGFzaCwgSW52YWxpZEJsb2NrKQoKICAgIJSFlIGUfZQoaAVoBmggaowXAABoIWgDaB1oUWgfSwB1Ymo5EAAAKYGUfZQoaAVoBmgHXZRoTIy1aWYgKAogICAgICAgIGhlYWRlci5udW1iZXIgPj0gTUFJTk5FVF9GT1JLX0JMT0NLCiAgICAgICAgYW5kIGhlYWRlci5udW1iZXIgPCBNQUlOTkVUX0ZPUktfQkxPQ0sgKyAxMAogICAgKToKICAgICAgICBlbnN1cmUoaGVhZGVyLmV4dHJhX2RhdGEgPT0gYiJkYW8taGFyZC1mb3JrIiwgSW52YWxpZEJsb2NrKQoKICAgIJSFlIGUfZQoaAVoBmggapQXAABoIWgDaB1oUWgfSwB1YmFoDn2UKGgQXZRoE12UjA5jaGFuZ2UtcmVtb3ZlZJRhaBVdlGgXXZRoGV2UdWgcajgQAABoIGqMFwAAaCFoA2gdaFFoH0sAdWJoTIwfdmFsaWRhdGVfcHJvb2Zfb2Zfd29yayhoZWFkZXIpCpSFlIGUfZQoaAVoBmggaowXAABoIWgDaB1oUWgfSwB1YmVoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UjAZzb3VyY2WUjE8vaG9tZS9ydW5uZXIvd29yay9leGVjdXRpb24tc3BlY3MvZXhlY3V0aW9uLXNwZWNzL3NyYy9ldGhlcmV1bS9kYW9fZm9yay9zcGVjLnB5lIwJeG1sOnNwYWNllGqdBAAAjAVmb3JjZZSJjAhsYW5ndWFnZZSMBnB5dGhvbpSMDmhpZ2hsaWdodF9hcmdzlH2UauQNAABLAXOMB2xpbmVub3OUiXVoHGrMDQAAaB1oHmgfTR8BaCBqThYAAGghaAN1YmVoDn2UKGgQXZRqjwIAAGFoE12UaBVdlIwPdmFsaWRhdGVfaGVhZGVylGFoF12UaBldlHVoHGhAaB1oHmgfTQoBaCBqVw0AAGgh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lGgZXZR1aBxqUxIAAGgdTmgfTmggahwYAAB1YmVoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcarYNAABoHWgeaB9OaCBq2BcAAHViZWgOfZQoaBBdlGgTXZQoahUYAACMCGZ1bmN0aW9ulGVoFV2UaBddlGgZXZSMBmRvbWFpbpRqFRgAAIwHb2JqdHlwZZRqVhkAAIwIZGVzY3R5cGWUalYZAACMB25vaW5kZXiUiXVoHGqIDQAAaB1OaB9OaCBqvBcAAHVias0NAAApgZR9lChoBVgDAgAAZGVmIGdlbmVyYXRlX2hlYWRlcl9oYXNoX2Zvcl9wb3coaGVhZGVyOiBIZWFkZXIpIC0+IEhhc2gzMjoKICAgIGhlYWRlcl9kYXRhX3dpdGhvdXRfcG93X2FydGVmYWN0cyA9IFsKICAgICAgICBoZWFkZXIucGFyZW50X2hhc2gsCiAgICAgICAgaGVhZGVyLm9tbWVyc19oYXNoLAogICAgICAgIGhlYWRlci5jb2luYmFzZSwKICAgICAgICBoZWFkZXIuc3RhdGVfcm9vdCwKICAgICAgICBoZWFkZXIudHJhbnNhY3Rpb25zX3Jvb3QsCiAgICAgICAgaGVhZGVyLnJlY2VpcHRfcm9vdCwKICAgICAgICBoZWFkZXIuYmxvb20sCiAgICAgICAgaGVhZGVyLmRpZmZpY3VsdHksCiAgICAgICAgaGVhZGVyLm51bWJlciwKICAgICAgICBoZWFkZXIuZ2FzX2xpbWl0LAogICAgICAgIGhlYWRlci5nYXNfdXNlZCwKICAgICAgICBoZWFkZXIudGltZXN0YW1wLAogICAgICAgIGhlYWRlci5leHRyYV9kYXRhLAogICAgXQoKICAgIHJldHVybiBybHAucmxwX2hhc2goaGVhZGVyX2RhdGFfd2l0aG91dF9wb3dfYXJ0ZWZhY3RzKQqUaAddlGhMWAMCAABkZWYgZ2VuZXJhdGVfaGVhZGVyX2hhc2hfZm9yX3BvdyhoZWFkZXI6IEhlYWRlcikgLT4gSGFzaDMyOgogICAgaGVhZGVyX2RhdGFfd2l0aG91dF9wb3dfYXJ0ZWZhY3RzID0gWwogICAgICAgIGhlYWRlci5wYXJlbnRfaGFzaCwKICAgICAgICBoZWFkZXIub21tZXJzX2hhc2gsCiAgICAgICAgaGVhZGVyLmNvaW5iYXNlLAogICAgICAgIGhlYWRlci5zdGF0ZV9yb290LAogICAgICAgIGhlYWRlci50cmFuc2FjdGlvbnNfcm9vdCwKICAgICAgICBoZWFkZXIucmVjZWlwdF9yb290LAogICAgICAgIGhlYWRlci5ibG9vbSwKICAgICAgICBoZWFkZXIuZGlmZmljdWx0eSwKICAgICAgICBoZWFkZXIubnVtYmVyLAogICAgICAgIGhlYWRlci5nYXNfbGltaXQsCiAgICAgICAgaGVhZGVyLmdhc191c2VkLAogICAgICAgIGhlYWRlci50aW1lc3RhbXAsCiAgICAgICAgaGVhZGVyLmV4dHJhX2RhdGEsCiAgICBdCgogICAgcmV0dXJuIHJscC5ybHBfaGFzaChoZWFkZXJfZGF0YV93aXRob3V0X3Bvd19hcnRlZmFjdHMpCpSFlIGUfZQoaAVoBmggal4ZAABoIWgDaB1oUWgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UjAZzb3VyY2WUjE8vaG9tZS9ydW5uZXIvd29yay9leGVjdXRpb24tc3BlY3MvZXhlY3V0aW9uLXNwZWNzL3NyYy9ldGhlcmV1bS9kYW9fZm9yay9zcGVjLnB5lIwJeG1sOnNwYWNllGqdBAAAjAVmb3JjZZSJjAhsYW5ndWFnZZSMBnB5dGhvbpSMDmhpZ2hsaWdodF9hcmdzlH2UauQNAABLAXOMB2xpbmVub3OUiXVoHGrMDQAAaB1oHmgfTT0BaCBqvBcAAHViZWgOfZQoaBBdlGqxAgAAYWgTXZRoFV2UjBxnZW5lcmF0ZV9oZWFkZXJfaGFzaF9mb3JfcG93lGFoF12UaBldlHVoHGhAaB1oHmgfTSQBaCBqVw0AAGghaAN1YmhBKYGUfZQoaAVoBmgHXZQoaEYpgZR9lChoBYwWdmFsaWRhdGVfcHJvb2Zfb2Zfd29ya5RoB12UaEyMFnZhbGlkYXRlX3Byb29mX29mX3dvcmuUhZSBlH2UKGgFaAZoIGp/GQAAaCFoA2gdaFFoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhFaB1oHmgfTUIBaCBqfBkAAHViaCQpgZR9lChoBWgGaAddlGgOfZQoaBBd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eXRlcyhyZXN1bHQpIDw9IChVMjU2X0NFSUxfVkFMVUUgLy8gaGVhZGVyLmRpZmZpY3VsdHkpLAogICAgICAgIEludmFsaWRCbG9jaywKICAgICkKlGgHXZRoTFg2AgAAZGVmIHZhbGlkYXRlX3Byb29mX29mX3dvcmsoaGVhZGVyOiBIZWFkZXIpIC0+IE5vbmU6CiAgICBoZWFkZXJfaGFzaCA9IGdlbmVyYXRlX2hlYWRlcl9oYXNoX2Zvcl9wb3coaGVhZGVyKQogICAgIyBUT0RPOiBNZW1vaXplIHRoaXMgc29tZXdoZXJlIGFuZCByZWFkIGZyb20gdGhhdCBkYXRhIGluc3RlYWQgb2YKICAgICMgY2FsY3VsYXRpbmcgY2FjaGUgZm9yIGV2ZXJ5IGJsb2NrIHZhbGlkYXRpb24uCiAgICBjYWNoZSA9IGdlbmVyYXRlX2NhY2hlKGhlYWRlci5udW1iZXIpCiAgICBtaXhfZGlnZXN0LCByZXN1bHQgPSBoYXNoaW1vdG9fbGlnaHQoCiAgICAgICAgaGVhZGVyX2hhc2gsIGhlYWRlci5ub25jZSwgY2FjaGUsIGRhdGFzZXRfc2l6ZShoZWFkZXIubnVtYmVyKQogICAgKQoKICAgIGVuc3VyZShtaXhfZGlnZXN0ID09IGhlYWRlci5taXhfZGlnZXN0LCBJbnZhbGlkQmxvY2spCiAgICBlbnN1cmUoCiAgICAgICAgVWludC5mcm9tX2JlX2J5dGVzKHJlc3VsdCkgPD0gKFUyNTZfQ0VJTF9WQUxVRSAvLyBoZWFkZXIuZGlmZmljdWx0eSksCiAgICAgICAgSW52YWxpZEJsb2NrLAogICAgKQqUhZSBlH2UKGgFaAZoIGqKGgAAaCFoA2gdaFFoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlIwGc291cmNllIxPL2hvbWUvcnVubmVyL3dvcmsvZXhlY3V0aW9uLXNwZWNzL2V4ZWN1dGlvbi1zcGVjcy9zcmMvZXRoZXJldW0vZGFvX2Zvcmsvc3BlYy5weZSMCXhtbDpzcGFjZZRqnQQAAIwFZm9yY2WUiYwIbGFuZ3VhZ2WUjAZweXRob26UjA5oaWdobGlnaHRfYXJnc5R9lGrkDQAASwFzjAdsaW5lbm9zlIl1aBxq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IFR1cGxlW0xvZywgLi4uXSA9ICgpCgogICAgZm9yIGksIHR4IGluIGVudW1lcmF0ZSh0cmFuc2FjdGlvbnMpOgogICAgICAgIHRyaWVfc2V0KHRyYW5zYWN0aW9uc190cmllLCBybHAuZW5jb2RlKFVpbnQoaSkpLCB0eCkKCiAgICAgICAgZW5zdXJlKHR4LmdhcyA8PSBnYXNfYXZhaWxhYmxlLCBJbnZhbGlkQmxvY2spCiAgICAgICAgc2VuZGVyX2FkZHJlc3MgPSByZWNvdmVyX3NlbmRlcih0eCkKCiAgICAgICAgZW52ID0gdm0uRW52aXJvbm1lbnQoCiAgICAgICAgICAgIGNhbGxlcj1zZW5kZXJfYWRkcmVzcywKICAgICAgICAgICAgb3JpZ2luPXNlbmRlcl9hZGRyZXNzLAogICAgICAgICAgICBibG9ja19oYXNoZXM9YmxvY2tfaGFzaGVzLAogICAgICAgICAgICBjb2luYmFzZT1jb2luYmFzZSwKICAgICAgICAgICAgbnVtYmVyPWJsb2NrX251bWJlciwKICAgICAgICAgICAgZ2FzX2xpbWl0PWJsb2NrX2dhc19saW1pdCwKICAgICAgICAgICAgZ2FzX3ByaWNlPXR4Lmdhc19wcmljZSwKICAgICAgICAgICAgdGltZT1ibG9ja190aW1lLAogICAgICAgICAgICBkaWZmaWN1bHR5PWJsb2NrX2RpZmZpY3VsdHksCiAgICAgICAgICAgIHN0YXRlPXN0YXRlLAogICAgICAgICkKCiAgICAgICAgZ2FzX3VzZWQsIGxvZ3MgPSBwcm9jZXNzX3RyYW5zYWN0aW9uKGVudiwgdHgpCiAgICAgICAgZ2FzX2F2YWlsYWJsZSAtPSBnYXNfdXNlZAoKICAgICAgICB0cmllX3NldCgKICAgICAgICAgICAgcmVjZWlwdHNfdHJpZSwKICAgICAgICAgICAgcmxwLmVuY29kZShVaW50KGkpKSwKICAgICAgICAgICAgUmVjZWlwdCgKICAgICAgICAgICAgICAgIHBvc3Rfc3RhdGU9c3RhdGVfcm9vdChzdGF0ZSksCiAgICAgICAgICAgICAgICBjdW11bGF0aXZlX2dhc191c2VkPShibG9ja19nYXNfbGltaXQgLSBnYXNfYXZhaWxhYmxlKSwKICAgICAgICAgICAgICAgIGJsb29tPWxvZ3NfYmxvb20obG9ncyksCiAgICAgICAgICAgICAgICBsb2dzPWxvZ3MsCiAgICAgICAgICAgICksCiAgICAgICAgKQogICAgICAgIGJsb2NrX2xvZ3MgKz0gbG9ncwoKICAgIHBheV9yZXdhcmRzKHN0YXRlLCBibG9ja19udW1iZXIsIGNvaW5iYXNlLCBvbW1lcnMpCgogICAgZ2FzX3JlbWFpbmluZyA9IGJsb2NrX2dhc19saW1pdCAtIGdhc19hdmFpbGFibGUKCiAgICBibG9ja19sb2dzX2Jsb29tID0gbG9nc19ibG9vbShibG9ja19sb2dzKQoKICAgIHJldHVybiAoCiAgICAgICAgZ2FzX3JlbWFpbmluZywKICAgICAgICByb290KHRyYW5zYWN0aW9uc190cmllKSwKICAgICAgICByb290KHJlY2VpcHRzX3RyaWUpLAogICAgICAgIGJsb2NrX2xvZ3NfYmxvb20sCiAgICAgICAgc3RhdGUsCiAgICApCpRoB12UaExYcAcAAGRlZiBhcHBseV9ib2R5KAogICAgc3RhdGU6IFN0YXRlLAogICAgYmxvY2tfaGFzaGVzOiBMaXN0W0hhc2gzMl0sCiAgICBjb2luYmFzZTogQWRkcmVzcywKICAgIGJsb2NrX251bWJlcjogVWludCwKICAgIGJsb2NrX2dhc19saW1pdDogVWludCwKICAgIGJsb2NrX3RpbWU6IFUyNTYsCiAgICBibG9ja19kaWZmaWN1bHR5OiBVaW50LAogICAgdHJhbnNhY3Rpb25zOiBUdXBsZVtUcmFuc2FjdGlvbiwgLi4uXSwKICAgIG9tbWVyczogVHVwbGVbSGVhZGVyLCAuLi5dLAopIC0+IFR1cGxlW1VpbnQsIFJvb3QsIFJvb3QsIEJsb29tLCBTdGF0ZV06CiAgICBnYXNfYXZhaWxhYmxlID0gYmxvY2tfZ2FzX2xpbWl0CiAgICB0cmFuc2FjdGlvbnNfdHJpZTogVHJpZVtCeXRlcywgT3B0aW9uYWxbVHJhbnNhY3Rpb25dXSA9IFRyaWUoCiAgICAgICAgc2VjdXJlZD1GYWxzZSwgZGVmYXVsdD1Ob25lCiAgICApCiAgICByZWNlaXB0c190cmllOiBUcmllW0J5dGVzLCBPcHRpb25hbFtSZWNlaXB0XV0gPSBUcmllKAogICAgICAgIHNlY3VyZWQ9RmFsc2UsIGRlZmF1bHQ9Tm9uZQogICAgKQogICAgYmxvY2tfbG9nczogVHVwbGVbTG9nLCAuLi5dID0gKCkKCiAgICBmb3IgaSwgdHggaW4gZW51bWVyYXRlKHRyYW5zYWN0aW9ucyk6CiAgICAgICAgdHJpZV9zZXQodHJhbnNhY3Rpb25zX3RyaWUsIHJscC5lbmNvZGUoVWludChpKSksIHR4KQoKICAgICAgICBlbnN1cmUodHguZ2FzIDw9IGdhc19hdmFpbGFibGUsIEludmFsaWRCbG9jaykKICAgICAgICBzZW5kZXJfYWRkcmVzcyA9IHJlY292ZXJfc2VuZGVyKHR4KQoKICAgICAgICBlbnYgPSB2bS5FbnZpcm9ubWVudCgKICAgICAgICAgICAgY2FsbGVyPXNlbmRlcl9hZGRyZXNzLAogICAgICAgICAgICBvcmlnaW49c2VuZGVyX2FkZHJlc3MsCiAgICAgICAgICAgIGJsb2NrX2hhc2hlcz1ibG9ja19oYXNoZXMsCiAgICAgICAgICAgIGNvaW5iYXNlPWNvaW5iYXNlLAogICAgICAgICAgICBudW1iZXI9YmxvY2tfbnVtYmVyLAogICAgICAgICAgICBnYXNfbGltaXQ9YmxvY2tfZ2FzX2xpbWl0LAogICAgICAgICAgICBnYXNfcHJpY2U9dHguZ2FzX3ByaWNlLAogICAgICAgICAgICB0aW1lPWJsb2NrX3RpbWUsCiAgICAgICAgICAgIGRpZmZpY3VsdHk9YmxvY2tfZGlmZmljdWx0eSwKICAgICAgICAgICAgc3RhdGU9c3RhdGUsCiAgICAgICAgKQoKICAgICAgICBnYXNfdXNlZCwgbG9ncyA9IHByb2Nlc3NfdHJhbnNhY3Rpb24oZW52LCB0eCkKICAgICAgICBnYXNfYXZhaWxhYmxlIC09IGdhc191c2VkCgogICAgICAgIHRyaWVfc2V0KAogICAgICAgICAgICByZWNlaXB0c190cmllLAogICAgICAgICAgICBybHAuZW5jb2RlKFVpbnQoaSkpLAogICAgICAgICAgICBSZWNlaXB0KAogICAgICAgICAgICAgICAgcG9zdF9zdGF0ZT1zdGF0ZV9yb290KHN0YXRlKSwKICAgICAgICAgICAgICAgIGN1bXVsYXRpdmVfZ2FzX3VzZWQ9KGJsb2NrX2dhc19saW1pdCAtIGdhc19hdmFpbGFibGUpLAogICAgICAgICAgICAgICAgYmxvb209bG9nc19ibG9vbShsb2dzKSwKICAgICAgICAgICAgICAgIGxvZ3M9bG9ncywKICAgICAgICAgICAgKSwKICAgICAgICApCiAgICAgICAgYmxvY2tfbG9ncyArPSBsb2dzCgogICAgcGF5X3Jld2FyZHMoc3RhdGUsIGJsb2NrX251bWJlciwgY29pbmJhc2UsIG9tbWVycykKCiAgICBnYXNfcmVtYWluaW5nID0gYmxvY2tfZ2FzX2xpbWl0IC0gZ2FzX2F2YWlsYWJsZQoKICAgIGJsb2NrX2xvZ3NfYmxvb20gPSBsb2dzX2Jsb29tKGJsb2NrX2xvZ3MpCgogICAgcmV0dXJuICgKICAgICAgICBnYXNfcmVtYWluaW5nLAogICAgICAgIHJvb3QodHJhbnNhY3Rpb25zX3RyaWUpLAogICAgICAgIHJvb3QocmVjZWlwdHNfdHJpZSksCiAgICAgICAgYmxvY2tfbG9nc19ibG9vbSwKICAgICAgICBzdGF0ZSwKICAgICkKlIWUgZR9lChoBWgGaCBq2x4AAGghaANoHWhRaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZSMBnNvdXJjZZSMTy9ob21lL3J1bm5lci93b3JrL2V4ZWN1dGlvbi1zcGVjcy9leGVjdXRpb24tc3BlY3Mvc3JjL2V0aGVyZXVtL2Rhb19mb3JrL3NwZWMucHmUjAl4bWw6c3BhY2WUap0EAACMBWZvcmNllImMCGxhbmd1YWdllIwGcHl0aG9ulIwOaGlnaGxpZ2h0X2FyZ3OUfZRq5A0AAEsBc4wHbGluZW5vc5SJdWgcaswNAABoHWgeaB9NfwFoIGqoGgAAdWJlaA59lChoEF2UavUCAABhaBNdlGgVXZSMCmFwcGx5X2JvZHmUYWgXXZRoGV2UdWgcaEBoHWgeaB9NWgFoIGpXDQAAaCFoA3ViaEEpgZR9lChoBWgGaAdd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aAVYAQkAAGRlZiB2YWxpZGF0ZV9vbW1lcnMoCiAgICBvbW1lcnM6IFR1cGxlW0hlYWRlciwgLi4uXSwgYmxvY2tfaGVhZGVyOiBIZWFkZXIsIGNoYWluOiBCbG9ja0NoYWluCikgLT4gTm9uZToKICAgIGJsb2NrX2hhc2ggPSBybHAucmxwX2hhc2goYmxvY2tfaGVhZGVyKQoKICAgIGVuc3VyZShybHAucmxwX2hhc2gob21tZXJzKSA9PSBibG9ja19oZWFkZXIub21tZXJzX2hhc2gsIEludmFsaWRCbG9jaykKCiAgICBpZiBsZW4ob21tZXJzKSA9PSAwOgogICAgICAgICMgTm90aGluZyB0byB2YWxpZGF0ZQogICAgICAgIHJldHVybgoKICAgICMgQ2hlY2sgdGhhdCBlYWNoIG9tbWVyIHNhdGlzZmllcyB0aGUgY29uc3RyYWludHMgb2YgYSBoZWFkZXIKICAgIGZvciBvbW1lciBpbiBvbW1lcnM6CiAgICAgICAgZW5zdXJlKDEgPD0gb21tZXIubnVtYmVyIDwgYmxvY2tfaGVhZGVyLm51bWJlciwgSW52YWxpZEJsb2NrKQogICAgICAgIG9tbWVyX3BhcmVudF9oZWFkZXIgPSBjaGFpbi5ibG9ja3NbCiAgICAgICAgICAgIC0oYmxvY2tfaGVhZGVyLm51bWJlciAtIG9tbWVyLm51bWJlcikgLSAxCiAgICAgICAgXS5oZWFkZXIKICAgICAgICB2YWxpZGF0ZV9oZWFkZXIob21tZXIsIG9tbWVyX3BhcmVudF9oZWFkZXIpCgogICAgIyBDaGVjayB0aGF0IHRoZXJlIGNhbiBiZSBvbmx5IGF0IG1vc3QgMiBvbW1lcnMgZm9yIGEgYmxvY2suCiAgICBlbnN1cmUobGVuKG9tbWVycykgPD0gMiwgSW52YWxpZEJsb2NrKQoKICAgIG9tbWVyc19oYXNoZXMgPSBbcmxwLnJscF9oYXNoKG9tbWVyKSBmb3Igb21tZXIgaW4gb21tZXJzXQogICAgIyBDaGVjayB0aGF0IHRoZXJlIGFyZSBubyBkdXBsaWNhdGVzIGluIHRoZSBvbW1lcnMgb2YgY3VycmVudCBibG9jawogICAgZW5zdXJlKGxlbihvbW1lcnNfaGFzaGVzKSA9PSBsZW4oc2V0KG9tbWVyc19oYXNoZXMpKSwgSW52YWxpZEJsb2NrKQoKICAgIHJlY2VudF9jYW5vbmljYWxfYmxvY2tzID0gY2hhaW4uYmxvY2tzWy0oTUFYX09NTUVSX0RFUFRIICsgMSkgOl0KICAgIHJlY2VudF9jYW5vbmljYWxfYmxvY2tfaGFzaGVzID0gewogICAgICAgIHJscC5ybHBfaGFzaChibG9jay5oZWFkZXIpIGZvciBibG9jayBpbiByZWNlbnRfY2Fub25pY2FsX2Jsb2NrcwogICAgfQogICAgcmVjZW50X29tbWVyc19oYXNoZXM6IFNldFtIYXNoMzJdID0gc2V0KCkKICAgIGZvciBibG9jayBpbiByZWNlbnRfY2Fub25pY2FsX2Jsb2NrczoKICAgICAgICByZWNlbnRfb21tZXJzX2hhc2hlcyA9IHJlY2VudF9vbW1lcnNfaGFzaGVzLnVuaW9uKAogICAgICAgICAgICB7cmxwLnJscF9oYXNoKG9tbWVyKSBmb3Igb21tZXIgaW4gYmxvY2sub21tZXJzfQogICAgICAgICkKCiAgICBmb3Igb21tZXJfaW5kZXgsIG9tbWVyIGluIGVudW1lcmF0ZShvbW1lcnMpOgogICAgICAgIG9tbWVyX2hhc2ggPSBvbW1lcnNfaGFzaGVzW29tbWVyX2luZGV4XQogICAgICAgICMgVGhlIGN1cnJlbnQgYmxvY2sgc2hvdWxkbid0IGJlIHRoZSBvbW1lcgogICAgICAgIGVuc3VyZShvbW1lcl9oYXNoICE9IGJsb2NrX2hhc2gsIEludmFsaWRCbG9jaykKCiAgICAgICAgIyBPbW1lciBzaG91bGRuJ3QgYmUgb25lIG9mIHRoZSByZWNlbnQgY2Fub25pY2FsIGJsb2NrcwogICAgICAgIGVuc3VyZShvbW1lcl9oYXNoIG5vdCBpbiByZWNlbnRfY2Fub25pY2FsX2Jsb2NrX2hhc2hlcywgSW52YWxpZEJsb2NrKQoKICAgICAgICAjIE9tbWVyIHNob3VsZG4ndCBiZSBvbmUgb2YgdGhlIHVuY2xlcyBtZW50aW9uZWQgaW4gdGhlIHJlY2VudAogICAgICAgICMgY2Fub25pY2FsIGJsb2NrcwogICAgICAgIGVuc3VyZShvbW1lcl9oYXNoIG5vdCBpbiByZWNlbnRfb21tZXJzX2hhc2hlcywgSW52YWxpZEJsb2NrKQoKICAgICAgICAjIE9tbWVyIGFnZSB3aXRoIHJlc3BlY3QgdG8gdGhlIGN1cnJlbnQgYmxvY2suIEZvciBleGFtcGxlLCBhbiBhZ2Ugb2YKICAgICAgICAjIDEgaW5kaWNhdGVzIHRoYXQgdGhlIG9tbWVyIGlzIGEgc2libGluZyBvZiBwcmV2aW91cyBibG9jay4KICAgICAgICBvbW1lcl9hZ2UgPSBibG9ja19oZWFkZXIubnVtYmVyIC0gb21tZXIubnVtYmVyCiAgICAgICAgZW5zdXJlKDEgPD0gb21tZXJfYWdlIDw9IE1BWF9PTU1FUl9ERVBUSCwgSW52YWxpZEJsb2NrKQoKICAgICAgICBlbnN1cmUoCiAgICAgICAgICAgIG9tbWVyLnBhcmVudF9oYXNoIGluIHJlY2VudF9jYW5vbmljYWxfYmxvY2tfaGFzaGVzLCBJbnZhbGlkQmxvY2sKICAgICAgICApCiAgICAgICAgZW5zdXJlKG9tbWVyLnBhcmVudF9oYXNoICE9IGJsb2NrX2hlYWRlci5wYXJlbnRfaGFzaCwgSW52YWxpZEJsb2NrKQqUaAddlGhMWAEJAABkZWYgdmFsaWRhdGVfb21tZXJzKAogICAgb21tZXJzOiBUdXBsZVtIZWFkZXIsIC4uLl0sIGJsb2NrX2hlYWRlcjogSGVhZGVyLCBjaGFpbjogQmxvY2tDaGFpbgopIC0+IE5vbmU6CiAgICBibG9ja19oYXNoID0gcmxwLnJscF9oYXNoKGJsb2NrX2hlYWRlcikKCiAgICBlbnN1cmUocmxwLnJscF9oYXNoKG9tbWVycykgPT0gYmxvY2tfaGVhZGVyLm9tbWVyc19oYXNoLCBJbnZhbGlkQmxvY2spCgogICAgaWYgbGVuKG9tbWVycykgPT0gMDoKICAgICAgICAjIE5vdGhpbmcgdG8gdmFsaWRhdGUKICAgICAgICByZXR1cm4KCiAgICAjIENoZWNrIHRoYXQgZWFjaCBvbW1lciBzYXRpc2ZpZXMgdGhlIGNvbnN0cmFpbnRzIG9mIGEgaGVhZGVyCiAgICBmb3Igb21tZXIgaW4gb21tZXJzOgogICAgICAgIGVuc3VyZSgxIDw9IG9tbWVyLm51bWJlciA8IGJsb2NrX2hlYWRlci5udW1iZXIsIEludmFsaWRCbG9jaykKICAgICAgICBvbW1lcl9wYXJlbnRfaGVhZGVyID0gY2hhaW4uYmxvY2tzWwogICAgICAgICAgICAtKGJsb2NrX2hlYWRlci5udW1iZXIgLSBvbW1lci5udW1iZXIpIC0gMQogICAgICAgIF0uaGVhZGVyCiAgICAgICAgdmFsaWRhdGVfaGVhZGVyKG9tbWVyLCBvbW1lcl9wYXJlbnRfaGVhZGVyKQoKICAgICMgQ2hlY2sgdGhhdCB0aGVyZSBjYW4gYmUgb25seSBhdCBtb3N0IDIgb21tZXJzIGZvciBhIGJsb2NrLgogICAgZW5zdXJlKGxlbihvbW1lcnMpIDw9IDIsIEludmFsaWRCbG9jaykKCiAgICBvbW1lcnNfaGFzaGVzID0gW3JscC5ybHBfaGFzaChvbW1lcikgZm9yIG9tbWVyIGluIG9tbWVyc10KICAgICMgQ2hlY2sgdGhhdCB0aGVyZSBhcmUgbm8gZHVwbGljYXRlcyBpbiB0aGUgb21tZXJzIG9mIGN1cnJlbnQgYmxvY2sKICAgIGVuc3VyZShsZW4ob21tZXJzX2hhc2hlcykgPT0gbGVuKHNldChvbW1lcnNfaGFzaGVzKSksIEludmFsaWRCbG9jaykKCiAgICByZWNlbnRfY2Fub25pY2FsX2Jsb2NrcyA9IGNoYWluLmJsb2Nrc1stKE1BWF9PTU1FUl9ERVBUSCArIDEpIDpdCiAgICByZWNlbnRfY2Fub25pY2FsX2Jsb2NrX2hhc2hlcyA9IHsKICAgICAgICBybHAucmxwX2hhc2goYmxvY2suaGVhZGVyKSBmb3IgYmxvY2sgaW4gcmVjZW50X2Nhbm9uaWNhbF9ibG9ja3MKICAgIH0KICAgIHJlY2VudF9vbW1lcnNfaGFzaGVzOiBTZXRbSGFzaDMyXSA9IHNldCgpCiAgICBmb3IgYmxvY2sgaW4gcmVjZW50X2Nhbm9uaWNhbF9ibG9ja3M6CiAgICAgICAgcmVjZW50X29tbWVyc19oYXNoZXMgPSByZWNlbnRfb21tZXJzX2hhc2hlcy51bmlvbigKICAgICAgICAgICAge3JscC5ybHBfaGFzaChvbW1lcikgZm9yIG9tbWVyIGluIGJsb2NrLm9tbWVyc30KICAgICAgICApCgogICAgZm9yIG9tbWVyX2luZGV4LCBvbW1lciBpbiBlbnVtZXJhdGUob21tZXJzKToKICAgICAgICBvbW1lcl9oYXNoID0gb21tZXJzX2hhc2hlc1tvbW1lcl9pbmRleF0KICAgICAgICAjIFRoZSBjdXJyZW50IGJsb2NrIHNob3VsZG4ndCBiZSB0aGUgb21tZXIKICAgICAgICBlbnN1cmUob21tZXJfaGFzaCAhPSBibG9ja19oYXNoLCBJbnZhbGlkQmxvY2spCgogICAgICAgICMgT21tZXIgc2hvdWxkbid0IGJlIG9uZSBvZiB0aGUgcmVjZW50IGNhbm9uaWNhbCBibG9ja3MKICAgICAgICBlbnN1cmUob21tZXJfaGFzaCBub3QgaW4gcmVjZW50X2Nhbm9uaWNhbF9ibG9ja19oYXNoZXMsIEludmFsaWRCbG9jaykKCiAgICAgICAgIyBPbW1lciBzaG91bGRuJ3QgYmUgb25lIG9mIHRoZSB1bmNsZXMgbWVudGlvbmVkIGluIHRoZSByZWNlbnQKICAgICAgICAjIGNhbm9uaWNhbCBibG9ja3MKICAgICAgICBlbnN1cmUob21tZXJfaGFzaCBub3QgaW4gcmVjZW50X29tbWVyc19oYXNoZXMsIEludmFsaWRCbG9jaykKCiAgICAgICAgIyBPbW1lciBhZ2Ugd2l0aCByZXNwZWN0IHRvIHRoZSBjdXJyZW50IGJsb2NrLiBGb3IgZXhhbXBsZSwgYW4gYWdlIG9mCiAgICAgICAgIyAxIGluZGljYXRlcyB0aGF0IHRoZSBvbW1lciBpcyBhIHNpYmxpbmcgb2YgcHJldmlvdXMgYmxvY2suCiAgICAgICAgb21tZXJfYWdlID0gYmxvY2tfaGVhZGVyLm51bWJlciAtIG9tbWVyLm51bWJlcgogICAgICAgIGVuc3VyZSgxIDw9IG9tbWVyX2FnZSA8PSBNQVhfT01NRVJfREVQVEgsIEludmFsaWRCbG9jaykKCiAgICAgICAgZW5zdXJlKAogICAgICAgICAgICBvbW1lci5wYXJlbnRfaGFzaCBpbiBy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IGJsb2NrIGJ1dCB3YXMgbWluZWQgYXQgdGhlIHNhbWUgdGltZS4gQWx0aG91Z2ggbm90IGFsbCBibG9ja3MKdGhhdCBhcmUgbWluZWQgYXJlIGFkZGVkIHRvIHRoZSBjYW5vbmljYWwgY2hhaW4sIG1pbmVycyBhcmUgc3RpbGwgcGFpZCBhCnJld2FyZCBmb3IgdGhlaXIgZWZmb3J0cy4gVGhpcyByZXdhcmQgaXMgY2FsbGVkIGFuIG9tbWVyIHJld2FyZCBhbmQgaXMKY2FsY3VsYXRlZCBiYXNlZCBvbiB0aGUgbnVtYmVyIGFzc29jaWF0ZWQgd2l0aCB0aGUgb21tZXIgYmxvY2sgdGhhdCB0aGV5Cm1pbmVkLpRoB12UKGhMjFJUaGUgbWluZXIgb2YgdGhlIGNhbm9uaWNhbCBibG9jayBpcyByZXdhcmRlZCB3aXRoIHRoZSBwcmVkZXRlcm1pbmVkCmJsb2NrIHJld2FyZCwglIWUgZR9lChoBWgGaCBqSCEAAGghaANoHWhRaB9LAHViahMFAAApgZR9lChoBYwQYGBCTE9DS19SRVdBUkRgYJRoB12UaEyMDEJMT0NLX1JFV0FSRJSFlIGUfZQoaAVoBmggalAhAABoIWgDaB1oUWgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcahIFAABoHU5oH05oIGpIIQAAdWJoTFgzAgAALCBwbHVzIGEgdmFyaWFibGUgYXdhcmQgYmFzZWQgb2ZmIG9mIHRoZQpudW1iZXIgb2Ygb21tZXIgYmxvY2tzIHRoYXQgd2VyZSBtaW5lZCBhcm91bmQgdGhlIHNhbWUgdGltZSwgYW5kIGluY2x1ZGVkCmluIHRoZSBjYW5vbmljYWwgYmxvY2vigJlzIGhlYWRlci4gQW4gb21tZXIgYmxvY2sgaXMgYSBibG9jayB0aGF0IHdhc27igJl0CmFkZGVkIHRvIHRoZSBjYW5vbmljYWwgYmxvY2tjaGFpbiBiZWNhdXNlIGl0IHdhc27igJl0IHZhbGlkYXRlZCBhcyBmYXN0IGFzCnRoZSBhY2NlcHRlZCBibG9jayBidXQgd2FzIG1pbmVkIGF0IHRoZSBzYW1lIHRpbWUuIEFsdGhvdWdoIG5vdCBhbGwgYmxvY2tzCnRoYXQgYXJl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IG9tbWVyczogVHVwbGVbSGVhZGVyLCAuLi5dLAopIC0+IE5vbmU6CiAgICBtaW5lcl9yZXdhcmQgPSBCTE9DS19SRVdBUkQgKyAobGVuKG9tbWVycykgKiAoQkxPQ0tfUkVXQVJEIC8vIDMyKSkKICAgIGNyZWF0ZV9ldGhlcihzdGF0ZSwgY29pbmJhc2UsIG1pbmVyX3Jld2FyZCkKCiAgICBmb3Igb21tZXIgaW4gb21tZXJzOgogICAgICAgICMgT21tZXIgYWdlIHdpdGggcmVzcGVjdCB0byB0aGUgY3VycmVudCBibG9jay4KICAgICAgICBvbW1lcl9hZ2UgPSBVMjU2KGJsb2NrX251bWJlciAtIG9tbWVyLm51bWJlcikKICAgICAgICBvbW1lcl9taW5lcl9yZXdhcmQgPSAoKDggLSBvbW1lcl9hZ2UpICogQkxPQ0tfUkVXQVJEKSAvLyA4CiAgICAgICAgY3JlYXRlX2V0aGVyKHN0YXRlLCBvbW1lci5jb2luYmFzZSwgb21tZXJfbWluZXJfcmV3YXJkKQqUaAddlGhMWP4BAABkZWYgcGF5X3Jld2FyZHMoCiAgICBzdGF0ZTogU3RhdGUsCiAgICBibG9ja19udW1iZXI6IFVpbnQsCiAgICBjb2luYmFzZTogQWRkcmVzcywKICAgIG9tbWVyczogVHVwbGVbSGVhZGVyLCAuLi5dLAopIC0+IE5vbmU6CiAgICBtaW5lcl9yZXdhcmQgPSBCTE9DS19SRVdBUkQgKyAobGVuKG9tbWVycykgKiAoQkxPQ0tfUkVXQVJEIC8vIDMyKSkKICAgIGNyZWF0ZV9ldGhlcihzdGF0ZSwgY29pbmJhc2UsIG1pbmVyX3Jld2FyZCkKCiAgICBmb3Igb21tZXIgaW4gb21tZXJzOgogICAgICAgICMgT21tZXIgYWdlIHdpdGggcmVzcGVjdCB0byB0aGUgY3VycmVudCBibG9jay4KICAgICAgICBvbW1lcl9hZ2UgPSBVMjU2KGJsb2NrX251bWJlciAtIG9tbWVyLm51bWJlcikKICAgICAgICBvbW1lcl9taW5lcl9yZXdhcmQgPSAoKDggLSBvbW1lcl9hZ2UpICogQkxPQ0tfUkVXQVJEKSAvLyA4CiAgICAgICAgY3JlYXRlX2V0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IHRoZSBhY3Rpb25zIG5lZWRlZCB0byBleGVjdXRlIGEgdHJhbnNhY3Rpb24uCkl0IGRlY3JlbWVudHMgdGhlIHNlbmRlcidzIGFjY291bnQgYWZ0ZXIgY2FsY3VsYXRpbmcgdGhlIGdhcyBmZWUgYW5kCnJlZnVuZHMgdGhlbSB0aGUgcHJvcGVyIGFtb3VudCBhZnRlciBleGVjdXRpb24uIENhbGxpbmcgY29udHJhY3RzLApkZXBsb3lpbmcgY29kZSwgYW5kIGluY3JlbWVudGluZyBub25jZXMgYXJlIGFsbCBleGFtcGxlcyBvZiBhY3Rpb25zIHRoYXQKaGFwcGVuIHdpdGhpbiB0aGlzIGZ1bmN0aW9uIG9yIGZyb20gYSBjYWxsIG1hZGUgd2l0aGluIHRoaXMgZnVuY3Rpb24ulGgHXZRoTFhdAQAAVGhpcyBmdW5jdGlvbiBwcm9jZXNzZXMgdGhlIGFjdGlvbnMgbmVlZGVkIHRvIGV4ZWN1dGUgYSB0cmFuc2FjdGlvbi4KSXQgZGVjcmVtZW50cyB0aGUgc2VuZGVy4oCZcyBhY2NvdW50IGFmdGVyIGNhbGN1bGF0aW5nIHRoZSBnYXMgZmVlIGFuZApyZWZ1bmRzIHRoZW0gdGhlIHByb3BlciBhbW91bnQgYWZ0ZXIgZXhlY3V0aW9uLiBDYWxsaW5nIGNvbnRyYWN0cywKZGVwbG95aW5nIGNvZGUsIGFuZCBpbmNyZW1lbnRpbmcgbm9uY2VzIGFyZSBhbGwgZXhhbXBsZXMgb2YgYWN0aW9ucyB0aGF0CmhhcHBlbiB3aXRoaW4gdGhpcyBmdW5jdGlvbiBvciBmcm9tIGEgY2FsbCBtYWRlIHdpdGhpbiB0aGlzIGZ1bmN0aW9uLpSFlIGUfZQoaAVoBmggavIiAABoIWgDaB1oUWgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaHVoHWgeaB9NyQFoIGrhIgAAdWJodimBlH2UKGgFjFJBY2NvdW50cyB0aGF0IGFyZSBtYXJrZWQgZm9yIGRlbGV0aW9uIGFyZSBwcm9jZXNzZWQgYW5kIGRlc3Ryb3llZCBhZnRlcgpleGVjdXRpb24ulGgHXZRoTIxSQWNjb3VudHMgdGhhdCBhcmUgbWFya2VkIGZvciBk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IEludmFsaWRCbG9jaykKICAgIGVuc3VyZShzZW5kZXJfYWNjb3VudC5iYWxhbmNlID49IGdhc19mZWUgKyB0eC52YWx1ZSwgSW52YWxpZEJsb2NrKQogICAgZW5zdXJlKHNlbmRlcl9hY2NvdW50LmNvZGUgPT0gYnl0ZWFycmF5KCksIEludmFsaWRCbG9jaykKCiAgICBnYXMgPSB0eC5nYXMgLSBjYWxjdWxhdGVfaW50cmluc2ljX2Nvc3QodHgpCiAgICBpbmNyZW1lbnRfbm9uY2UoZW52LnN0YXRlLCBzZW5kZXIpCiAgICBzZW5kZXJfYmFsYW5jZV9hZnRlcl9nYXNfZmVlID0gc2VuZGVyX2FjY291bnQuYmFsYW5jZSAtIGdhc19mZWUKICAgIHNldF9hY2NvdW50X2JhbGFuY2UoZW52LnN0YXRlLCBzZW5kZXIsIHNlbmRlcl9iYWxhbmNlX2FmdGVyX2dhc19mZWUpCgogICAgbWVzc2FnZSA9IHByZXBhcmVfbWVzc2FnZSgKICAgICAgICBzZW5kZXIsCiAgICAgICAgdHgudG8sCiAgICAgICAgdHgudmFsdWUsCiAgICAgICAgdHguZGF0YSwKICAgICAgICBnYXMsCiAgICAgICAgZW52LAogICAgKQoKICAgIG91dHB1dCA9IHByb2Nlc3NfbWVzc2FnZV9jYWxsKG1lc3NhZ2UsIGVudikKCiAgICBnYXNfdXNlZCA9IHR4LmdhcyAtIG91dHB1dC5nYXNfbGVmdAogICAgZ2FzX3JlZnVuZCA9IG1pbihnYXNfdXNlZCAvLyAyLCBvdXRwdXQucmVmdW5kX2NvdW50ZXIpCiAgICBnYXNfcmVmdW5kX2Ftb3VudCA9IChvdXRwdXQuZ2FzX2xlZnQgKyBnYXNfcmVmdW5kKSAqIHR4Lmdhc19wcmljZQogICAgdHJhbnNhY3Rpb25fZmVlID0gKHR4LmdhcyAtIG91dHB1dC5nYXNfbGVmdCAtIGdhc19yZWZ1bmQpICogdHguZ2FzX3ByaWNlCiAgICB0b3RhbF9nYXNfdXNlZCA9IGdhc191c2VkIC0gZ2FzX3JlZnVuZAoKICAgICMgcmVmdW5kIGdhcwogICAgc2VuZGVyX2JhbGFuY2VfYWZ0ZXJfcmVmdW5kID0gKAogICAgICAgIGdldF9hY2NvdW50KGVudi5zdGF0ZSwgc2VuZGVyKS5iYWxhbmNlICsgZ2FzX3JlZnVuZF9hbW91bnQKICAgICkKICAgIHNldF9hY2NvdW50X2JhbGFuY2UoZW52LnN0YXRlLCBzZW5kZXIsIHNlbmRlcl9iYWxhbmNlX2FmdGVyX3JlZnVuZCkKCiAgICAjIHRyYW5zZmVyIG1pbmVyIGZlZXMKICAgIGNvaW5iYXNlX2JhbGFuY2VfYWZ0ZXJfbWluaW5nX2ZlZSA9ICgKICAgICAgICBnZXRfYWNjb3VudChlbnYuc3RhdGUsIGVudi5jb2luYmFzZSkuYmFsYW5jZSArIHRyYW5zYWN0aW9uX2ZlZQogICAgKQogICAgc2V0X2FjY291bnRfYmFsYW5jZSgKICAgICAgICBlbnYuc3RhdGUsIGVudi5jb2luYmFzZSwgY29pbmJhc2VfYmFsYW5jZV9hZnRlcl9taW5pbmdfZmVlCiAgICApCgogICAgZm9yIGFkZHJlc3MgaW4gb3V0cHV0LmFjY291bnRzX3RvX2RlbGV0ZToKICAgICAgICBkZXN0cm95X2FjY291bnQoZW52LnN0YXRlLCBhZGRyZXNzKQoKICAgIHJldHVybiB0b3RhbF9nYXNfdXNlZCwgb3V0cHV0LmxvZ3MKlGgHXZRoTFjABgAAZGVmIHByb2Nlc3NfdHJhbnNhY3Rpb24oCiAgICBlbnY6IHZtLkVudmlyb25tZW50LCB0eDogVHJhbnNhY3Rpb24KKSAtPiBUdXBsZVtVMjU2LCBUdXBsZVtMb2csIC4uLl1dOgogICAgZW5zdXJlKHZhbGlkYXRlX3RyYW5zYWN0aW9uKHR4KSwgSW52YWxpZEJsb2NrKQoKICAgIHNlbmRlciA9IGVudi5vcmlnaW4KICAgIHNlbmRlcl9hY2NvdW50ID0gZ2V0X2FjY291bnQoZW52LnN0YXRlLCBzZW5kZXIpCiAgICBnYXNfZmVlID0gdHguZ2FzICogdHguZ2FzX3ByaWNlCiAgICBlbnN1cmUoc2VuZGVyX2FjY291bnQubm9uY2UgPT0gdHgubm9uY2UsIEludmFsaWRCbG9jaykKICAgIGVuc3VyZShzZW5kZXJfYWNjb3VudC5iYWxhbmNlID49IGdhc19mZWUgKyB0eC52YWx1ZSwgSW52YWxpZEJsb2NrKQogICAgZW5zdXJlKHNlbmRlcl9hY2NvdW50LmNvZGUgPT0gYnl0ZWFycmF5KCksIEludmFsaWRCbG9jaykKCiAgICBnYXMgPSB0eC5nYXMgLSBjYWxjdWxhdGVfaW50cmluc2ljX2Nvc3QodHgpCiAgICBpbmNyZW1lbnRfbm9uY2UoZW52LnN0YXRlLCBzZW5kZXIpCiAgICBzZW5kZXJfYmFsYW5jZV9hZnRlcl9nYXNfZmVlID0gc2VuZGVyX2FjY291bnQuYmFsYW5jZSAtIGdhc19mZWUKICAgIHNldF9hY2NvdW50X2JhbGFuY2UoZW52LnN0YXRlLCBzZW5kZXIsIHNlbmRlcl9iYWxhbmNlX2FmdGVyX2dhc19mZWUpCgogICAgbWVzc2FnZSA9IHByZXBhcmVfbWVzc2FnZSgKICAgICAgICBzZW5kZXIsCiAgICAgICAgdHgudG8sCiAgICAgICAgdHgudmFsdWUsCiAgICAgICAgdHguZGF0YSwKICAgICAgICBnYXMsCiAgICAgICAgZW52LAogICAgKQoKICAgIG91dHB1dCA9IHByb2Nlc3NfbWVzc2FnZV9jYWxsKG1lc3NhZ2UsIGVudikKCiAgICBnYXNfdXNlZCA9IHR4LmdhcyAtIG91dHB1dC5nYXNfbGVmdAogICAgZ2FzX3JlZnVuZCA9IG1pbihnYXNfdXNlZCAvLyAyLCBvdXRwdXQucmVmdW5kX2NvdW50ZXIpCiAgICBnYXNfcmVmdW5kX2Ftb3VudCA9IChvdXRwdXQuZ2FzX2xlZnQgKyBnYXNfcmVmdW5kKSAqIHR4Lmdhc19wcmljZQogICAgdHJhbnNhY3Rpb25fZmVlID0gKHR4LmdhcyAtIG91dHB1dC5nYXNfbGVmdCAtIGdhc19yZWZ1bmQpICogdHguZ2FzX3ByaWNlCiAgICB0b3RhbF9nYXNfdXNlZCA9IGdhc191c2VkIC0gZ2FzX3JlZnVuZAoKICAgICMgcmVmdW5kIGdhcwogICAgc2VuZGVyX2JhbGFuY2VfYWZ0ZXJfcmVmdW5kID0gKAogICAgICAgIGdldF9hY2NvdW50KGVudi5zdGF0ZSwgc2VuZGVyKS5iYWxhbmNlICsgZ2FzX3JlZnVuZF9hbW91bnQKICAgICkKICAgIHNldF9hY2NvdW50X2JhbGFuY2UoZW52LnN0YXRlLCBzZW5kZXIsIHNlbmRlcl9iYWxhbmNlX2FmdGVyX3JlZnVuZCkKCiAgICAjIHRyYW5zZmVyIG1pbmVyIGZlZXMKICAgIGNvaW5iYXNlX2JhbGFuY2VfYWZ0ZXJfbWluaW5nX2ZlZSA9ICgKICAgICAgICBnZXRfYWNjb3VudChlbnYuc3RhdGUsIGVudi5jb2luYmFzZSkuYmFsYW5jZSArIHRyYW5zYWN0aW9uX2ZlZQogICAgKQogICAgc2V0X2FjY291bnRfYmFsYW5jZSgKICAgICAgICBlbnYuc3RhdGUsIGVudi5jb2luYmFzZSwgY29pbmJhc2VfYmFsYW5jZV9hZnRlcl9taW5pbmdfZmVlCiAgICApCgogICAgZm9yIGFkZHJlc3MgaW4gb3V0cHV0LmFjY291bnRzX3RvX2RlbGV0ZToKICAgICAgICBkZXN0cm95X2FjY291bnQoZW52LnN0YXRlLCBhZGRyZXNzKQoKICAgIHJldHVybiB0b3RhbF9nYXNfdXNlZCwgb3V0cHV0LmxvZ3MKlIWUgZR9lChoBWgGaCBqQyQAAGghaANoHWhRaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZSMBnNvdXJjZZSMTy9ob21lL3J1bm5lci93b3JrL2V4ZWN1dGlvbi1zcGVjcy9leGVjdXRpb24tc3BlY3Mvc3JjL2V0aGVyZXVtL2Rhb19mb3JrL3NwZWMucHmUjAl4bWw6c3BhY2WUap0EAACMBWZvcmNllImMCGxhbmd1YWdllIwGcHl0aG9ulIwOaGlnaGxpZ2h0X2FyZ3OUfZRq5A0AAEsBc4wHbGluZW5vc5SJdWgcaswNAABoHWgeaB9N2wFoIGppIgAAdWJlaA59lChoEF2UalsDAABhaBNdlGgVXZSME3Byb2Nlc3NfdHJhbnNhY3Rpb26UYWgXXZRoGV2UdWgcaEBoHWgeaB9NwQFoIGpXDQAAaCFoA3ViaEEpgZR9lChoBWgGaAddlChoRimBlH2UKGgFjBR2YWxpZGF0ZV90cmFuc2FjdGlvbpRoB12UaEyMFHZhbGlkYXRlX3RyYW5zYWN0aW9ulIWUgZR9lChoBWgGaCBqZCQAAGghaANoHWhRaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoRWgdaB5oH03gAWggamEkAAB1YmgkKYGUfZQoaAVoBmgHXZRoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UjAdlbnRyaWVzlF2UdWgcaCNoHU5oH05oIGphJAAAdWJqiQ0AACmBlH2UKGgFaAZoB12UKGqODQAAKYGUfZQoaAWMGHZhbGlkYXRlX3RyYW5zYWN0aW9uKHR4KZRoB12UKGqUDQAAKYGUfZQoaAWMFHZhbGlkYXRlX3RyYW5zYWN0aW9ulGgHXZRoTIwUdmFsaWRhdGVfdHJhbnNhY3Rpb26UhZSBlH2UKGgFaAZoIGqEJAAAaCFoA2gdaFFoH0sAdWJhaA59lChoEF2UaBNdlChqnw0AAGqgDQAAaqENAABqog0AAGVoFV2UaBddlGgZXZSMCXhtbDpzcGFjZZRqnQQAAHVoHGqTDQAAaB1oHmgfTmggaoAkAAB1YmqFEQAAKYGUfZQoaAWMAnR4lGgHXZRqixEAACmBlH2UKGgFjAJ0eJRoB12UajkQAAApgZR9lChoBWgGaAddlGhMjAJ0eJSFlIGUfZQoaAVoBmggapskAABoIWgDaB1oUWgfSwB1YmFoDn2UKGgQXZRoE12UapoRAABhaBVdlGgXXZRoGV2UdWgcajgQAABoHU5oH05oIGqXJAAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlIwJeG1sOnNwYWNllGqdBAAAdWgcaooRAABoHU5oH05oIGqTJAAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlIwJeG1sOnNwYWNllGqdBAAAdWgcaoQRAABoHWgeaB9OaCBqgCQAAHViZWgOfZQoaBBdlIwrZXRoZXJldW0uZGFvX2Zvcmsuc3BlYy52YWxpZGF0ZV90cmFuc2FjdGlvbpRhaBNdlChqqg0AAGqrDQAAjAJweZRqrQ0AAGquDQAAZWgVXZRoF12UaBldlIwGbW9kdWxllGqzDQAAjAVjbGFzc5RoBowIZnVsbG5hbWWUaoYkAAB1aBxqjQ0AAGgdaB5oH03jAWggan0kAAB1Ymq3DQAAKYGUfZQoaAVoBmgHXZQoaHYpgZR9lChoBYwXVmVyaWZpZXMgYSB0cmFuc2FjdGlvbi6UaAddlGhMjBdWZXJpZmllcyBhIHRyYW5zYWN0aW9uLpSFlIGUfZQoaAVoBmggasQkAABoIWgDaB1oUWgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaHVoHWgeaB9N5gFoIGrBJAAAdWJodimBlH2UKGgFjM5UaGUgZ2FzIGluIGEgdHJhbnNhY3Rpb24gZ2V0cyB1c2VkIHRvIHBheSBmb3IgdGhlIGludHJpbnNpYyBjb3N0IG9mCm9wZXJhdGlvbnMsIHRoZXJlZm9yZSBpZiB0aGVyZSBpcyBpbnN1ZmZpY2llbnQgZ2FzIHRoZW4gaXQgd291bGQgbm90CmJlIHBvc3NpYmxlIHRvIGV4ZWN1dGUgYSB0cmFuc2FjdGlvbiBhbmQgaXQgd2lsbCBiZSBkZWNsYXJlZCBpbnZhbGlkLpRoB12UaEyMzlRoZSBnYXMgaW4gYSB0cmFuc2FjdGlvbiBnZXRzIHVzZWQgdG8gcGF5IGZvciB0aGUgaW50cmluc2ljIGNvc3Qgb2YKb3BlcmF0aW9ucywgdGhlcmVmb3JlIGlmIHRoZXJlIGlzIGluc3VmZmljaWVudCBnYXMgdGhlbiBpdCB3b3VsZCBub3QKYmUgcG9zc2libGUgdG8gZXhlY3V0ZSBhIHRyYW5zYWN0aW9uIGFuZCBpdCB3aWxsIGJlIGRlY2xhcmVkIGludmFsaWQulIWUgZR9lChoBWgGaCBq0iQAAGghaANoHWhRaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UlT63AAAAAAAAaBddlGgZXZR1aBxodWgdaB5oH03oAWggasEkAAB1Ymh2KYGUfZQoaAVYoQEAAEFkZGl0aW9uYWxseSwgdGhlIG5vbmNlIG9mIGEgdHJhbnNhY3Rpb24gbXVzdCBub3QgZXF1YWwgb3IgZXhjZWVkIHRoZQpsaW1pdCBkZWZpbmVkIGluIGBFSVAtMjY4MSA8aHR0cHM6Ly9laXBzLmV0aGVyZXVtLm9yZy9FSVBTL2VpcC0yNjgxPmBfLgpJbiBwcmFjdGljZSwgZGVmaW5pbmcgdGhlIGxpbWl0IGFzIGBgMioqNjQtMWBgIGhhcyBubyBpbXBhY3QgYmVjYXVzZQpzZW5kaW5nIGBgMioqNjQtMWBgIHRyYW5zYWN0aW9ucyBpcyBpbXByb2JhYmxlLiBJdCdzIG5vdCBzdHJpY3RseQppbXBvc3NpYmxlIHRob3VnaCwgYGAyKio2NC0xYGAgdHJhbnNhY3Rpb25zIGlzIHRoZSBlbnRpcmUgY2FwYWNpdHkgb2YgdGhlCkV0aGVyZXVtIGJsb2NrY2hhaW4gYXQgMjAyMiBnYXMgbGltaXRzIGZvciBhIGxpdHRsZSBvdmVyIDIyIHllYXJzLpRoB12UKGhMjFdBZGRpdGlvbmFsbHksIHRoZSBub25jZSBvZiBhIHRyYW5zYWN0aW9uIG11c3Qgbm90IGVxdWFsIG9yIGV4Y2VlZCB0aGUKbGltaXQgZGVmaW5lZCBpbiCUhZSBlH2UKGgFaAZoIGrgJAAAaCFoA2gdaFFoH0sAdWJoeymBlH2UKGgFjDVgRUlQLTI2ODEgPGh0dHBzOi8vZWlwcy5ldGhlcmV1bS5vcmcvRUlQUy9laXAtMjY4MT5gX5RoB12UaEyMCEVJUC0yNjgxlIWUgZR9lChoBWgGaCBq6CQAAGghaANoHWhRaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZSMBG5hbWWUjAhFSVAtMjY4MZSMBnJlZnVyaZSMJ2h0dHBzOi8vZWlwcy5ldGhlcmV1bS5vcmcvRUlQUy9laXAtMjY4MZR1aBxoemgdTmgfTmggauAkAAB1YmgKKYGUfZQoaAWMKiA8aHR0cHM6Ly9laXBzLmV0aGVyZXVtLm9yZy9FSVBTL2VpcC0yNjgxPpRoB12UaA59lChoEF2UjAhlaXAtMjY4MZRhaBNdlGgVXZSMCGVpcC0yNjgxlGFoF12UaBldlIwGcmVmdXJplGr5JAAAdWgcaAloHU5oH05oIGrgJAAAdWJoTIwlLgpJbiBwcmFjdGljZSwgZGVmaW5pbmcgdGhlIGxpbWl0IGFzIJSFlIGUfZQoaAVoBmggauAkAABoIWgDaB1oUWgfSwB1YmoTBQAAKYGUfZQoaAWMC2BgMioqNjQtMWBglGgHXZRoTIwHMioqNjQtMZSFlIGUfZQoaAVoBmggagslAABoIWgDaB1oUWgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcahIFAABoHU5oH05oIGrgJAAAdWJoTIwfIGhhcyBubyBpbXBhY3QgYmVjYXVzZQpzZW5kaW5nIJSFlIGUfZQoaAVoBmggauAkAABoIWgDaB1oUWgfSwB1YmoTBQAAKYGUfZQoaAWMC2BgMioqNjQtMWBglGgHXZRoTIwHMioqNjQtMZSFlIGUfZQoaAVoBmggah0lAABoIWgDaB1oUWgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcahIFAABoHU5oH05oIGrgJAAAdWJoTIxEIHRyYW5zYWN0aW9ucyBpcyBpbXByb2JhYmxlLiBJdOKAmXMgbm90IHN0cmljdGx5CmltcG9zc2libGUgdGhvdWdoLCCUhZSBlH2UKGgFaAZoIGrgJAAAaCFoA2gdaFFoH0sAdWJqEwUAACmBlH2UKGgFjAtgYDIqKjY0LTFgYJRoB12UaEyMBzIqKjY0LTGUhZSBlH2UKGgFaAZoIGovJQAAaCFoA2gdaFFoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGoSBQAAaB1OaB9OaCBq4CQAAHViaEyMbiB0cmFuc2FjdGlvbnMgaXMgdGhlIGVudGlyZSBjYXBhY2l0eSBvZiB0aGUKRXRoZXJldW0gYmxvY2tjaGFpbiBhdCAyMDIyIGdhcyBsaW1pdHMgZm9yIGEgbGl0dGxlIG92ZXIgMjIgeWVhcnMulIWUgZR9lChoBWgGaCBq4CQAAGghaANoHWhRaB9LAHViZWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxodWgdaB5oH03sAWggasEkAAB1YmpUEgAAKYGUfZQoaAVoBmgHXZQoalkSAAApgZR9lChoBWgGaAddlChqXhIAACmBlH2UKGgFjApQYXJhbWV0ZXJzlGgHXZRoTIwKUGFyYW1ldGVyc5SFlIGUfZQoaAVoBmggak0lAABoIWgDaB1oUWgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcal0SAABoHWgeaB9LAGggakolAAB1YmpuEgAAKYGUfZQoaAVoBmgHXZRodimBlH2UKGgFjB50eCAtLSBUcmFuc2FjdGlvbiB0byB2YWxpZGF0ZS6UaAddlChqdxIAACmBlH2UKGgFjAJ0eJRoB12UaEyMAnR4lIWUgZR9lChoBWgGaCBqYiUAAGghaANoHWhRaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZSMC3JlZnNwZWNpZmljlIiMCXB5Om1vZHVsZZRqsw0AAIwIcHk6Y2xhc3OUTnVoHGp2EgAAaB1OaB9OaCBqXiUAAHViaEyMHSDigJMgVHJhbnNhY3Rpb24gdG8gdmFsaWRhdGUulIWUgZR9lChoBWgGaCBqXiUAAGghaANoHWhRaB9LAHViZWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxodWgdTmgfTmggalslAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcam0SAABoHU5oH05oIGpKJQAAdWJlaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGpYEgAAaB1OaB9OaCBqRyUAAHVialkSAAApgZR9lChoBWgGaAddlChqXhIAACmBlH2UKGgFjAdSZXR1cm5zlGgHXZRoTIwHUmV0dXJuc5SFlIGUfZQoaAVoBmggaowlAABoIWgDaB1oUWgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcal0SAABoHWgeaB9LAGggaoklAAB1YmpuEgAAKYGUfZQoaAVoBmgHXZRodimBlH2UKGgFjEh2ZXJpZmllZCAtLSBUcnVlIGlmIHRoZSB0cmFuc2FjdGlvbiBjYW4gYmUgZXhlY3V0ZWQsIG9yIEZhbHNlIG90aGVyd2lzZS6UaAddlChquBIAACmBlH2UKGgFjAwqKnZlcmlmaWVkKiqUaAddlGhMjAh2ZXJpZmllZJSFlIGUfZQoaAVoBmggaqElAABoIWgDaB1oUWgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcarcSAABoHU5oH05oIGqdJQAAdWJoTIxBIOKAkyBUcnVlIGlmIHRoZSB0cmFuc2FjdGlvbiBjYW4gYmUgZXhlY3V0ZWQsIG9yIEZhbHNlIG90aGVyd2lzZS6UhZSBlH2UKGgFaAZoIGqdJQAAaCFoA2gdaFFoH0sAdWJlaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGh1aB1OaB9OaCBqmiUAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxqbRIAAGgdTmgfTmggaoklAAB1YmVoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcalgSAABoHU5oH05oIGpHJQAAdWJqWRIAACmBlH2UKGgFaAZoB12UKGpeEgAAKYGUfZQoaAWMC1JldHVybiB0eXBllGgHXZRoTIwLUmV0dXJuIHR5cGWUhZSBlH2UKGgFaAZoIGrIJQAAaCFoA2gdaFFoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGpdEgAAaB1oHmgfSwBoIGrFJQAAdWJqbhIAACmBlH2UKGgFaAZoB12UaHYpgZR9lChoBYwEYm9vbJRoB12UavwFAAApgZR9lChoBYwGYGJvb2xglGgHXZRoTIwEYm9vbJSFlIGUfZQoaAVoBmggat0lAABoIWgDaB1oUWgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcavsFAABoHU5oH05oIGrZJQAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGh1aB1OaB9OaCBq1iUAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxqbRIAAGgdTmgfTmggasUlAAB1YmVoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcalgSAABoHU5oH05oIGpHJQAAdWJlaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGpTEgAAaB1OaB9OaCBqwSQAAHViZWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxqtg0AAGgdaB5oH05oIGp9JAAAdWJlaA59lChoEF2UaBNdlChquiQAAIwIZnVuY3Rpb26UZWgVXZRoF12UaBldlIwGZG9tYWlulGq6JAAAjAdvYmp0eXBllGoMJgAAjAhkZXNjdHlwZZRqDCYAAIwHbm9pbmRleJSJdWgcaogNAABoHU5oH05oIGphJAAAdWJqzQ0AACmBlH2UKGgFjH5kZWYgdmFsaWRhdGVfdHJhbnNhY3Rpb24odHg6IFRyYW5zYWN0aW9uKSAtPiBib29sOgogICAgcmV0dXJuIGNhbGN1bGF0ZV9pbnRyaW5zaWNfY29zdCh0eCkgPD0gdHguZ2FzIGFuZCB0eC5ub25jZSA8IDIqKjY0IC0gMQqUaAddlGhMjH5kZWYgdmFsaWRhdGVfdHJhbnNhY3Rpb24odHg6IFRyYW5zYWN0aW9uKSAtPiBib29sOgogICAgcmV0dXJuIGNhbGN1bGF0ZV9pbnRyaW5zaWNfY29zdCh0eCkgPD0gdHguZ2FzIGFuZCB0eC5ub25jZSA8IDIqKjY0IC0gMQqUhZSBlH2UKGgFaAZoIGoUJgAAaCFoA2gdaFFoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlIwGc291cmNllIxPL2hvbWUvcnVubmVyL3dvcmsvZXhlY3V0aW9uLXNwZWNzL2V4ZWN1dGlvbi1zcGVjcy9zcmMvZXRoZXJldW0vZGFvX2Zvcmsvc3BlYy5weZSMCXhtbDpzcGFjZZRqnQQAAIwFZm9yY2WUiYwIbGFuZ3VhZ2WUjAZweXRob26UjA5oaWdobGlnaHRfYXJnc5R9lGrkDQAASwFzjAdsaW5lbm9zlIl1aBxqzA0AAGgdaB5oH037AWggamEkAAB1YmVoDn2UKGgQXZRqfQMAAGFoE12UaBVdlIwUdmFsaWRhdGVfdHJhbnNhY3Rpb26UYWgXXZRoGV2UdWgcaEBoHWgeaB9N4AFoIGpXDQAAaCFoA3ViaEEpgZR9lChoBWgGaAddlChoRimBlH2UKGgFjBhjYWxjdWxhdGVfaW50cmluc2ljX2Nvc3SUaAddlGhMjBhjYWxjdWxhdGVfaW50cmluc2ljX2Nvc3SUhZSBlH2UKGgFaAZoIGo1JgAAaCFoA2gdaFFoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhFaB1oHmgfTQACaCBqMiYAAHViaCQpgZR9lChoBWgGaAddlGgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZSMB2VudHJpZXOUXZR1aBxoI2gdTmgfTmggajImAAB1YmqJDQAAKYGUfZQoaAVoBmgHXZQoao4NAAApgZR9lChoBYwcY2FsY3VsYXRlX2ludHJpbnNpY19jb3N0KHR4KZRoB12UKGqUDQAAKYGUfZQoaAWMGGNhbGN1bGF0ZV9pbnRyaW5zaWNfY29zdJRoB12UaEyMGGNhbGN1bGF0ZV9pbnRyaW5zaWNfY29zdJSFlIGUfZQoaAVoBmggalUmAABoIWgDaB1oUWgfSwB1YmFoDn2UKGgQXZRoE12UKGqfDQAAaqANAABqoQ0AAGqiDQAAZWgVXZRoF12UaBldlIwJeG1sOnNwYWNllGqdBAAAdWgcapMNAABoHWgeaB9OaCBqUSYAAHViaoURAAApgZR9lChoBYwCdHiUaAddlGqLEQAAKYGUfZQoaAWMAnR4lGgHXZRqORAAACmBlH2UKGgFaAZoB12UaEyMAnR4lIWUgZR9lChoBWgGaCBqbCYAAGghaANoHWhRaB9LAHViYWgOfZQoaBBdlGgTXZRqmhEAAGFoFV2UaBddlGgZXZR1aBxqOBAAAGgdTmgfTmggamgmAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UjAl4bWw6c3BhY2WUap0EAAB1aBxqihEAAGgdTmgfTmggamQmAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UjAl4bWw6c3BhY2WUap0EAAB1aBxqhBEAAGgdaB5oH05oIGpRJgAAdWJlaA59lChoEF2UjC9ldGhlcmV1bS5kYW9fZm9yay5zcGVjLmNhbGN1bGF0ZV9pbnRyaW5zaWNfY29zdJRhaBNdlChqqg0AAGqrDQAAjAJweZRqrQ0AAGquDQAAZWgVXZRoF12UaBldlIwGbW9kdWxllGqzDQAAjAVjbGFzc5RoBowIZnVsbG5hbWWUalcmAAB1aBxqjQ0AAGgdaB5oH00DAmggak4mAAB1Ymq3DQAAKYGUfZQoaAVoBmgHXZQoaHYpgZR9lChoBYw/Q2FsY3VsYXRlcyB0aGUgZ2FzIHRoYXQgaXMgY2hhcmdlZCBiZWZvcmUgZXhlY3V0aW9uIGlzIHN0YXJ0ZWQulGgHXZRoTIw/Q2FsY3VsYXRlcyB0aGUgZ2FzIHRoYXQgaXMgY2hhcmdlZCBiZWZvcmUgZXhlY3V0aW9uIGlzIHN0YXJ0ZWQulIWUgZR9lChoBWgGaCBqlSYAAGghaANoHWhRaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxodWgdaB5oH00GAmggapImAAB1Ymh2KYGUfZQoaAVYEQIAAFRoZSBpbnRyaW5zaWMgY29zdCBvZiB0aGUgdHJhbnNhY3Rpb24gaXMgY2hhcmdlZCBiZWZvcmUgZXhlY3V0aW9uIGhhcwpiZWd1bi4gRnVuY3Rpb25zL29wZXJhdGlvbnMgaW4gdGhlIEVWTSBjb3N0IG1vbmV5IHRvIGV4ZWN1dGUgc28gdGhpcwppbnRyaW5zaWMgY29zdCBpcyBmb3IgdGhlIG9wZXJhdGlvbnMgdGhhdCBuZWVkIHRvIGJlIHBhaWQgZm9yIGFzIHBhcnQgb2YKdGhlIHRyYW5zYWN0aW9uLiBEYXRhIHRyYW5zZmVyLCBmb3IgZXhhbXBsZSwgaXMgcGFydCBvZiB0aGlzIGludHJpbnNpYwpjb3N0LiBJdCBjb3N0cyBldGhlciB0byBzZW5kIGRhdGEgb3ZlciB0aGUgd2lyZSBhbmQgdGhhdCBldGhlciBpcwphY2NvdW50ZWQgZm9yIGluIHRoZSBpbnRyaW5zaWMgY29zdCBjYWxjdWxhdGVkIGluIHRoaXMgZnVuY3Rpb24uIFRoaXMKaW50cmluc2ljIGNvc3QgbXVzdCBiZSBjYWxjdWxhdGVkIGFuZCBwYWlkIGZvciBiZWZvcmUgZXhlY3V0aW9uIGluIG9yZGVyCmZvciBhbGwgb3BlcmF0aW9ucyB0byBiZSBpbXBsZW1lbnRlZC6UaAddlGhMWBECAABUaGUgaW50cmluc2ljIGNvc3Qgb2YgdGhlIHRyYW5zYWN0aW9uIGlzIGNoYXJnZWQgYmVmb3JlIGV4ZWN1dGlvbiBoYXMKYmVndW4uIEZ1bmN0aW9ucy9vcGVyYXRpb25zIGluIHRoZSBFVk0gY29zdCBtb25leSB0byBleGVjdXRlIHNvIHRoaXMKaW50cmluc2ljIGNvc3QgaXMgZm9yIHRoZSBvcGVyYXRpb25zIHRoYXQgbmVlZCB0byBiZSBwYWlkIGZvciBhcyBwYXJ0IG9mCnRoZSB0cmFuc2FjdGlvbi4gRGF0YSB0cmFuc2ZlciwgZm9yIGV4YW1wbGUsIGlzIHBhcnQgb2YgdGhpcyBpbnRyaW5zaWMKY29zdC4gSXQgY29zdHMgZXRoZXIgdG8gc2VuZCBkYXRhIG92ZXIgdGhlIHdpcmUgYW5kIHRoYXQgZXRoZXIgaXMKYWNjb3VudGVkIGZvciBpbiB0aGUgaW50cmluc2ljIGNvc3QgY2FsY3VsYXRlZCBpbiB0aGlzIGZ1bmN0aW9uLiBUaGlzCmludHJpbnNpYyBjb3N0IG11c3QgYmUgY2FsY3VsYXRlZCBhbmQgcGFpZCBmb3IgYmVmb3JlIGV4ZWN1dGlvbiBpbiBvcmRlcgpmb3IgYWxsIG9wZXJhdGlvbnMgdG8gYmUgaW1wbGVtZW50ZWQulIWUgZR9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lH2UKGgFjBtgZXRoZXJldW0uZXRoX3R5cGVzLkhhc2gzMmCUaAddlGhMjBlldGhlcmV1bS5ldGhfdHlwZXMuSGFzaDMylIWUgZR9lChoBWgGaCBqUSoAAGghaANoHWhRaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxq+wUAAGgdTmgfTmggak0qAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaHVoHU5oH05oIGpKKgAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGptEgAAaB1OaB9OaCBqOSoAAHViZWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxqWBIAAGgdTmgfTmggarspAAB1YmVoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcalMSAABoHU5oH05oIGqcKQAAdWJlaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGq2DQAAaB1oHmgfTmggalgpAAB1YmVoDn2UKGgQXZRoE12UKGqVKQAAjAhmdW5jdGlvbpRlaBVdlGgXXZRoGV2UjAZkb21haW6UapUpAACMB29ianR5cGWUaoAqAACMCGRlc2N0eXBllGqAKgAAjAdub2luZGV4lIl1aBxqiA0AAGgdTmgfTmggajwpAAB1YmrNDQAAKYGUfZQoaAVYHQEAAGRlZiBzaWduaW5nX2hhc2godHg6IFRyYW5zYWN0aW9uKSAtPiBIYXNoMzI6CiAgICByZXR1cm4ga2VjY2FrMjU2KAogICAgICAgIHJscC5lbmNvZGUoCiAgICAgICAgICAgICgKICAgICAgICAgICAgICAgIHR4Lm5vbmNlLAogICAgICAgICAgICAgICAgdHguZ2FzX3ByaWNlLAogICAgICAgICAgICAgICAgdHguZ2FzLAogICAgICAgICAgICAgICAgdHgudG8sCiAgICAgICAgICAgICAgICB0eC52YWx1ZSwKICAgICAgICAgICAgICAgIHR4LmRhdGEsCiAgICAgICAgICAgICkKICAgICAgICApCiAgICApCpRoB12UaExYHQEAAGRlZiBzaWduaW5nX2hhc2godHg6IFRyYW5zYWN0aW9uKSAtPiBIYXNoMzI6CiAgICByZXR1cm4ga2VjY2FrMjU2KAog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bXBsZXRlbHkgdW5pcXVlIG91dHB1dCBmb3IgYSBzaW5nbGUgaW5wdXQuClNvIGFuIGlucHV0IGNvcnJlc3BvbmRzIHRvIG9uZSB1bmlxdWUgaGFzaCB0aGF0IGNhbiBiZSB1c2VkIHRvIGlkZW50aWZ5CnRoZSBpbnB1dCBleGFjdGx5LpSFlIGUfZQoaAVoBmggaiUrAABoIWgDaB1oUWgfSwB1YmVoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaHVoHWgeaB9NXQJoIGoGKwAAdWJodimBlH2UKGgFWCgCAABQcmlvciB0byB1c2luZyB0aGUgYGBrZWNjYWsyNTZgYCBoYXNoIGZ1bmN0aW9uLCB0aGUgaGVhZGVyIG11c3QgYmUKZW5jb2RlZCB1c2luZyB0aGUgUmVjdXJzaXZlLUxlbmd0aCBQcmVmaXguIFNlZSA6cmVmOmBybHBgLgpSTFAgZW5jb2RpbmcgdGhlIGhlYWRlciBjb252ZXJ0cyBpdCBpbnRvIGEgc3BhY2UtZWZmaWNpZW50IGZvcm1hdCB0aGF0CmFsbG93cyBmb3IgZWFzeSB0cmFuc2ZlciBvZiBkYXRhIGJldHdlZW4gbm9kZXMuIFRoZSBwdXJwb3NlIG9mIFJMUCBpcyB0bwplbmNvZGUgYXJiaXRyYXJpbHkgbmVzdGVkIGFycmF5cyBvZiBiaW5hcnkgZGF0YSwgYW5kIFJMUCBpcyB0aGUgcHJpbWFyeQplbmNvZGluZyBtZXRob2QgdXNlZCB0byBzZXJpYWxpemUgb2JqZWN0cyBpbiBFdGhlcmV1bSdzIGV4ZWN1dGlvbiBsYXllci4KVGhlIG9ubHkgcHVycG9zZSBvZiBSTFAgaXMgdG8gZW5jb2RlIHN0cnVjdHVyZTsgZW5jb2Rpbmcgc3BlY2lmaWMgZGF0YQp0eXBlcyAoZS5nLiBzdHJpbmdzLCBmbG9hdHMpIGlzIGxlZnQgdXAgdG8gaGlnaGVyLW9yZGVyIHByb3RvY29scy6UaAddlChoTIwTUHJpb3IgdG8gdXNpbmcgdGhlIJSFlIGUfZQoaAVoBmggakErAABoIWgDaB1oUWgfSwB1YmoTBQAAKYGUfZQoaAWMDWBga2VjY2FrMjU2YGCUaAddlGhMjAlrZWNjYWsyNTaUhZSBlH2UKGgF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dXJuIEZhbHNlCiAgICBpZiBnYXNfbGltaXQgPD0gcGFyZW50X2dhc19saW1pdCAtIG1heF9hZGp1c3RtZW50X2RlbHRhOgogICAgICAgIHJldHVybiBGYWxzZQogICAgaWYgZ2FzX2xpbWl0IDwgR0FTX0xJTUlUX01JTklNVU06CiAgICAgICAgcmV0dXJuIEZhbHNlCgogICAgcmV0dXJuIFRydWUKlGgHXZRoTFiBAQAAZGVmIGNoZWNrX2dhc19saW1pdChnYXNfbGltaXQ6IFVpbnQsIHBhcmVudF9nYXNfbGltaXQ6IFVpbnQpIC0+IGJvb2w6CiAgICBtYXhfYWRqdXN0bWVudF9kZWx0YSA9IHBhcmVudF9nYXNfbGltaXQgLy8gR0FTX0xJTUlUX0FESlVTVE1FTlRfRkFDVE9SCiAgICBpZiBnYXNfbGltaXQgPj0gcGFyZW50X2dhc19saW1pdCArIG1heF9hZGp1c3RtZW50X2RlbHRhOgogICAgICAgIHJldHVybiBGYWxzZQogICAgaWYgZ2FzX2xpbWl0IDw9IHBhcmVudF9nYXNfbGltaXQgLSBtYXhfYWRqdXN0bWVudF9kZWx0YToKICAgICAgICByZXR1cm4gRmFsc2UKICAgIGlmIGdhc19saW1pdCA8IEdBU19MSU1JVF9NSU5JTVVNOgogICAgICAgIHJldHVybiBGYWxzZQoKICAgIHJldHVybiBUcnVlCpSFlIGUfZQoaAVoBmgganYuAABoIWgDaB1oUWgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UjAZzb3VyY2WUjE8vaG9tZS9ydW5uZXIvd29yay9leGVjdXRpb24tc3BlY3MvZXhlY3V0aW9uLXNwZWNzL3NyYy9ldGhlcmV1bS9kYW9fZm9yay9zcGVjLnB5lIwJeG1sOnNwYWNllGqdBAAAjAVmb3JjZZSJjAhsYW5ndWFnZZSMBnB5dGhvbpSMDmhpZ2hsaWdodF9hcmdzlH2UauQNAABLAXOMB2xpbmVub3OUiXVoHGrMDQAAaB1oHmgfTZUCaCBqbCwAAHViZWgOfZQoaBBdlGonBAAAYWgTXZRoFV2UjA9jaGVja19nYXNfbGltaXSUYWgXXZRoGV2UdWgcaEBoHWgeaB9NeQJoIGpXDQAAaCFoA3ViaEEpgZR9lChoBWgGaAddlChoRimBlH2UKGgFjBpjYWxjdWxhdGVfYmxvY2tfZGlmZmljdWx0eZRoB12UaEyMGmNhbGN1bGF0ZV9ibG9ja19kaWZmaWN1bHR5lIWUgZR9lChoBWgGaCBqly4AAGghaANoHWhRaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoRWgdaB5oH02aAmggapQuAAB1YmgkKYGUfZQoaAVoBmgHXZRoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UjAdlbnRyaWVzlF2UdWgcaCNoHU5oH05oIGqULgAAdWJqiQ0AACmBlH2UKGgFaAZoB12UKGqODQAAKYGUfZQoaAWMXmNhbGN1bGF0ZV9ibG9ja19kaWZmaWN1bHR5KGJsb2NrX251bWJlciwgYmxvY2tfdGltZXN0YW1wLCBwYXJlbnRfdGltZXN0YW1wLCBwYXJlbnRfZGlmZmljdWx0eSmUaAddlChqlA0AACmBlH2UKGgFjBpjYWxjdWxhdGVfYmxvY2tfZGlmZmljdWx0eZRoB12UaEyMGmNhbGN1bGF0ZV9ibG9ja19kaWZmaWN1bHR5lIWUgZR9lChoBWgGaCBqty4AAGghaANoHWhRaB9LAHViYWgOfZQoaBBdlGgTXZQoap8NAABqoA0AAGqhDQAAaqINAABlaBVdlGgXXZRoGV2UjAl4bWw6c3BhY2WUap0EAAB1aBxqkw0AAGgdaB5oH05oIGqzLgAAdWJqhREAACmBlH2UKGgFjEJibG9ja19udW1iZXIsIGJsb2NrX3RpbWVzdGFtcCwgcGFyZW50X3RpbWVzdGFtcCwgcGFyZW50X2RpZmZpY3VsdHmUaAddlChqixEAACmBlH2UKGgFjAxibG9ja19udW1iZXKUaAddlGo5EAAAKYGUfZQoaAVoBmgHXZRoTIwMYmxvY2tfbnVtYmVylIWUgZR9lChoBWgGaCBqzi4AAGghaANoHWhRaB9LAHViYWgOfZQoaBBdlGgTXZRqmhEAAGFoFV2UaBddlGgZXZR1aBxqOBAAAGgdTmgfTmggasouAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UjAl4bWw6c3BhY2WUap0EAAB1aBxqihEAAGgdTmgfTmggasYuAAB1YmqLEQAAKYGUfZQoaAWMD2Jsb2NrX3RpbWVzdGFtcJRoB12UajkQAAApgZR9lChoBWgGaAddlGhMjA9ibG9ja190aW1lc3RhbXCUhZSBlH2UKGgFaAZoIGrmLgAAaCFoA2gdaFFoH0sAdWJhaA59lChoEF2UaBNdlGqaEQAAYWgVXZRoF12UaBldlHVoHGo4EAAAaB1OaB9OaCBq4i4AAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZSMCXhtbDpzcGFjZZRqnQQAAHVoHGqKEQAAaB1OaB9OaCBqxi4AAHViaosRAAApgZR9lChoBYwQcGFyZW50X3RpbWVzdGFtcJRoB12UajkQAAApgZR9lChoBWgGaAddlGhMjBBwYXJlbnRfdGltZXN0YW1wlIWUgZR9lChoBWgGaCBq/i4AAGghaANoHWhRaB9LAHViYWgOfZQoaBBdlGgTXZRqmhEAAGFoFV2UaBddlGgZXZR1aBxqOBAAAGgdTmgfTmggavouAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UjAl4bWw6c3BhY2WUap0EAAB1aBxqihEAAGgdTmgfTmggasYuAAB1YmqLEQAAKYGUfZQoaAWMEXBhcmVudF9kaWZmaWN1bHR5lGgHXZRqORAAACmBlH2UKGgFaAZoB12UaEyMEXBhcmVudF9kaWZmaWN1bHR5lIWUgZR9lChoBWgGaCBqFi8AAGghaANoHWhRaB9LAHViYWgOfZQoaBBdlGgTXZRqmhEAAGFoFV2UaBddlGgZXZR1aBxqOBAAAGgdTmgfTmggahIvAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UjAl4bWw6c3BhY2WUap0EAAB1aBxqihEAAGgdTmgfTmggasYuAAB1YmVoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UjAl4bWw6c3BhY2WUap0EAAB1aBxqhBEAAGgdaB5oH05oIGqzLgAAdWJlaA59lChoEF2UjDFldGhlcmV1bS5kYW9fZm9yay5zcGVjLmNhbGN1bGF0ZV9ibG9ja19kaWZmaWN1bHR5lGFoE12UKGqqDQAAaqsNAACMAnB5lGqtDQAAaq4NAABlaBVdlGgXXZRoGV2UjAZtb2R1bGWUarMNAACMBWNsYXNzlGgGjAhmdWxsbmFtZZRquS4AAHVoHGqNDQAAaB1oHmgfTZ0CaCBqsC4AAHViarcNAAApgZR9lChoBWgGaAddlChodimBlH2UKGgFjEJDb21wdXRlcyBkaWZmaWN1bHR5IG9mIGEgYmxvY2sgdXNpbmcgaXRzIGhlYWRlciBhbmQgcGFyZW50IGhlYWRlci6UaAddlGhMjEJDb21wdXRlcyBkaWZmaWN1bHR5IG9mIGEgYmxvY2sgdXNpbmcgaXRzIGhlYWRlciBhbmQgcGFyZW50IGhlYWRlci6UhZSBlH2UKGgFaAZoIGo/LwAAaCFoA2gdaFFoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGh1aB1oHmgfTaACaCBqPC8AAHViaHYpgZR9lChoBViDAgAAVGhlIGRpZmZpY3VsdHkgaXMgZGV0ZXJtaW5lZCBieSB0aGUgdGltZSB0aGUgYmxvY2sgd2FzIGNyZWF0ZWQgYWZ0ZXIgaXRzCnBhcmVudC4gVGhlIGBgb2Zmc2V0YGAgaXMgY2FsY3VsYXRlZCB1c2luZyB0aGUgcGFyZW50IGJsb2NrJ3MgZGlmZmljdWx0eSwKYGBwYXJlbnRfZGlmZmljdWx0eWBgLCBhbmQgdGhlIHRpbWVzdGFtcCBiZXR3ZWVuIGJsb2Nrcy4gVGhpcyBvZmZzZXQgaXMKdGhlbiBhZGRlZCB0byB0aGUgcGFyZW50IGRpZmZpY3VsdHkgYW5kIGlzIHN0b3JlZCBhcyB0aGUgYGBkaWZmaWN1bHR5YGAKdmFyaWFibGUuIElmIHRoZSB0aW1lIGJldHdlZW4gdGhlIGJsb2NrIGFuZCBpdHMgcGFyZW50IGlzIHRvbyBzaG9ydCwgdGhlCm9mZnNldCB3aWxsIHJlc3VsdCBpbiBhIHBvc2l0aXZlIG51bWJlciB0aHVzIG1ha2luZyB0aGUgc3VtIG9mCmBgcGFyZW50X2RpZmZpY3VsdHlgYCBhbmQgYGBvZmZzZXRgYCB0byBiZSBhIGdyZWF0ZXIgdmFsdWUgaW4gb3JkZXIgdG8KYXZvaWQgbWFzcyBmb3JraW5nLiBCdXQsIGlmIHRoZSB0aW1lIGlzIGxvbmcgZW5vdWdoLCB0aGVuIHRoZSBvZmZzZXQKcmVzdWx0cyBpbiBhIG5lZ2F0aXZlIHZhbHVlIG1ha2luZyB0aGUgYmxvY2sgbGVz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cHJpb3IgdG8gYmxvY2sgMjAwMDAwIHdlIHByZXRlbmQgaXQgZXhpc3RlZCBmcm9tCiAgICAjIGdlbmVzaXMuCiAgICAjIFNlZSBodHRwczovL2dpdGh1Yi5jb20vZXRoZXJldW0vZ28tZXRoZXJldW0vcHVsbC8xNTg4CiAgICBudW1fYm9tYl9wZXJpb2RzID0gKGludChibG9ja19udW1iZXIpIC8vIDEwMDAwMCkgLSAyCiAgICBpZiBudW1fYm9tYl9wZXJpb2RzID49IDA6CiAgICAgICAgZGlmZmljdWx0eSArPSAyKipudW1fYm9tYl9wZXJpb2RzCgogICAgIyBTb21lIGNsaWVudHMgcmFpc2UgdGhlIGRpZmZpY3VsdHkgdG8gYE1JTklNVU1fRElGRklDVUxUWWAgcHJpb3IgdG8gYWRkaW5nCiAgICAjIHRoZSBib21iLiBUaGlzIGJ1ZyBkb2VzIG5vdCBtYXR0ZXIgYmVjYXVzZSB0aGUgZGlmZmljdWx0eSBpcyBhbHdheXMgbXVjaAogICAgIyBncmVhdGVyIHRoYW4gYE1JTklNVU1fRElGRklDVUxUWWAgb24gTWFpbm5ldC4KICAgIHJldHVybiBVaW50KG1heChkaWZmaWN1bHR5LCBNSU5JTVVNX0RJRkZJQ1VMVFkpKQqUaAddlGhMWA4EAABkZWYgY2FsY3VsYXRlX2Jsb2NrX2RpZmZpY3VsdHkoCiAgICBibG9ja19udW1iZXI6IFVpbnQsCiAgICBibG9ja190aW1lc3RhbXA6IFUyNTYsCiAgICBwYXJlbnRfdGltZXN0YW1wOiBVMjU2LAogICAgcGFyZW50X2RpZmZpY3VsdHk6IFVpbnQsCikgLT4gVWludDoKICAgIG9mZnNldCA9ICgKICAgICAgICBpbnQocGFyZW50X2RpZmZpY3VsdHkpCiAgICAgICAgLy8gMjA0OAogICAgICAgICogbWF4KDEgLSBpbnQoYmxvY2tfdGltZXN0YW1wIC0gcGFyZW50X3RpbWVzdGFtcCkgLy8gMTAsIC05OSkKICAgICkKICAgIGRpZmZpY3VsdHkgPSBpbnQocGFyZW50X2RpZmZpY3VsdHkpICsgb2Zmc2V0CiAgICAjIEhpc3RvcmljYWwgTm90ZTogVGhlIGRpZmZpY3VsdHkgYm9tYiB3YXMgbm90IHByZXNlbnQgaW4gRXRoZXJldW0gYXQgdGhlCiAgICAjIHN0YXJ0IG9mIEZyb250aWVyLCBidXQgd2FzIGFkZGVkIHNob3J0bHkgYWZ0ZXIgbGF1bmNoLiBIb3dldmVyIHNpbmNlIHRoZQogICAgIyBib21iIGhhcyBubyBlZmZlY3QgcHJpb3IgdG8gYmxvY2sgMjAwMDAwIHdlIHByZXRlbmQgaXQgZXhpc3RlZCBmcm9tCiAgICAjIGdlbmVzaXMuCiAgICAjIFNlZSBodHRwczovL2dpdGh1Yi5jb20vZXRoZXJldW0vZ28tZXRoZXJldW0vcHVsbC8xNTg4CiAgICBudW1fYm9tYl9wZXJpb2RzID0gKGludChibG9ja19udW1iZXIpIC8vIDEwMDAwMCkgLSAyCiAgICBpZiBudW1fYm9tYl9wZXJpb2RzID49IDA6CiAgICAgICAgZGlmZmljdWx0eSArPSAyKipudW1fYm9tYl9wZXJpb2RzCgogICAgIyBTb21lIGNsaWVudHMgcmFpc2UgdGhlIGRpZmZpY3VsdHkgdG8gYE1JTklNVU1fRElGRklDVUxUWWAgcHJpb3IgdG8gYWRkaW5nCiAgICAjIHRoZSBib21iLiBUaGlzIGJ1ZyBkb2VzIG5vdCBtYXR0ZXIgYmVjYXVzZSB0aGUgZGlmZmljdWx0eSBpcyBhbHdheXMgbXVjaAogICAgIyBncmVhdGVyIHRoYW4gYE1JTklNVU1fRElGRklDVUxUWWAgb24gTWFpbm5ldC4KICAgIHJldHVybiBVaW50KG1heChkaWZmaWN1bHR5LCBNSU5JTVVNX0RJRkZJQ1VMVFkpKQqUhZSBlH2UKGgFaAZoIGosMQAAaCFoA2gdaFFoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlIwGc291cmNllIxPL2hvbWUvcnVubmVyL3dvcmsvZXhlY3V0aW9uLXNwZWNzL2V4ZWN1dGlvbi1zcGVjcy9zcmMvZXRoZXJldW0vZGFvX2Zvcmsvc3BlYy5weZSMCXhtbDpzcGFjZZRqnQQAAIwFZm9yY2WUiYwIbGFuZ3VhZ2WUjAZweXRob26UjA5oaWdobGlnaHRfYXJnc5R9lGrkDQAASwFzjAdsaW5lbm9zlIl1aBxqzA0AAGgdaB5oH02+AmggapQuAAB1YmVoDn2UKGgQXZRqSQQAAGFoE12UaBVdlIwaY2FsY3VsYXRlX2Jsb2NrX2RpZmZpY3VsdHmUYWgXXZRoGV2UdWgcaEBoHWgeaB9NmgJoIGpXDQAAaCFoA3ViZWgOfZQoaBBdlGo+AQAAYWgTXZRoFV2UjA5tb2R1bGUgZGV0YWlsc5RhaBddlGgZXZR1aBxoQGgdaB5oH0tHaCBoQmghaAN1YmVoDn2UKGgQXZQojBZldGhlcmV1bS1zcGVjaWZpY2F0aW9ulGg/ZWgTXZRoFV2UKIwWZXRoZXJldW0gc3BlY2lmaWNhdGlvbpSMCGRhby1mb3JrlGVoF12UaBldlHVoHGhAaB1oHmgfSwZoIGgDaCFoA3ViZWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZSMBnNvdXJjZZRoUXVoHGgBjA5jdXJyZW50X3NvdXJjZZRoUYwMY3VycmVudF9saW5llEsAjAhzZXR0aW5nc5SMEWRvY3V0aWxzLmZyb250ZW5klIwGVmFsdWVzlJOUKYGUfZQojAxyZXBvcnRfbGV2ZWyUSwKMCmhhbHRfbGV2ZWyUSwSMEWV4aXRfc3RhdHVzX2xldmVslEsFjAVkZWJ1Z5ROjA53YXJuaW5nX3N0cmVhbZROjAl0cmFjZWJhY2uUTowPb3V0cHV0X2VuY29kaW5nlIwFdXRmLTiUjB1vdXRwdXRfZW5jb2RpbmdfZXJyb3JfaGFuZGxlcpSMEXhtbGNoYXJyZWZyZXBsYWNllIwOZXJyb3JfZW5jb2RpbmeUjAV1dGYtOJSMHGVycm9yX2VuY29kaW5nX2Vycm9yX2hhbmRsZXKUjBBiYWNrc2xhc2hyZXBsYWNllIwTcmVjb3JkX2RlcGVuZGVuY2llc5SMDmRvY3V0aWxzLnV0aWxzlIwORGVwZW5kZW5jeUxpc3SUk5QpgZR9lCiMBGxpc3SUXZSMBGZpbGWUTnVijAZjb25maWeUTowNZHVtcF9zZXR0aW5nc5ROjA5kdW1wX2ludGVybmFsc5ROjA9kdW1wX3RyYW5zZm9ybXOUTowPZHVtcF9wc2V1ZG9feG1slE6MEGV4cG9zZV9pbnRlcm5hbHOUTowOc3RyaWN0X3Zpc2l0b3KUTowPX2Rpc2FibGVfY29uZmlnlE6MB19zb3VyY2WUTowMX2Rlc3RpbmF0aW9ulIw4ZG9jL2RpZmZzL2Rhb19mb3JrX3RhbmdlcmluZV93aGlzdGxlL3NwZWMvaW5kZXgucGlja2xlNjSUjA1fY29uZmlnX2ZpbGVzlF2UjBFsaW5lX2xlbmd0aF9saW1pdJRNECeMCXRhYl93aWR0aJRLCIwQc3ludGF4X2hpZ2hsaWdodJSMBGxvbmeUjAxzbWFydF9xdW90ZXOUiYwTc21hcnRxdW90ZXNfbG9jYWxlc5ROjB1jaGFyYWN0ZXJfbGV2ZWxfaW5saW5lX21hcmt1cJSJjAZ3cml0ZXKUjAN4bWyUjBljb21wYXJlX3NlY3Rpb25zX2J5X25hbWVzlEsBjAxkdW1wX3JzdGRpZmaUTowFX2JvdGiUfZQoaEVOjAlnZW5lcmF0b3KUTowJZGF0ZXN0YW1wlE6MC3NvdXJjZV9saW5rlE6MCnNvdXJjZV91cmyUTowNdG9jX2JhY2tsaW5rc5RqBgUAAIwSZm9vdG5vdGVfYmFja2xpbmtzlEsBjA1zZWN0bnVtX3hmb3JtlEsBjA5kb2N0aXRsZV94Zm9ybZRLAYwNZG9jaW5mb194Zm9ybZRLAYwSc2VjdHN1YnRpdGxlX3hmb3JtlEsAjA5zdHJpcF9jb21tZW50c5ROjA5pbnB1dF9lbmNvZGluZ5ROjBxpbnB1dF9lbmNvZGluZ19lcnJvcl9oYW5kbGVylIwGc3RyaWN0lIwNbGFuZ3VhZ2VfY29kZZSMAmVulIwOcGVwX3JlZmVyZW5jZXOUTowMcGVwX2Jhc2VfdXJslIwfaHR0cDovL3d3dy5weXRob24ub3JnL2Rldi9wZXBzL5SMFXBlcF9maWxlX3VybF90ZW1wbGF0ZZSMCHBlcC0lMDRklIwOcmZjX3JlZmVyZW5jZXOUTowMcmZjX2Jhc2VfdXJslIwbaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvlIwddHJpbV9mb290bm90ZV9yZWZlcmVuY2Vfc3BhY2WUTowWZmlsZV9pbnNlcnRpb25fZW5hYmxlZJRLAYwLcmF3X2VuYWJsZWSUSwGMDmF1dG9faWRfcHJlZml4lIwCaWSUjAlpZF9wcmVmaXiUaAaMG3N0cmlwX2VsZW1lbnRzX3dpdGhfY2xhc3Nlc5ROjA1zdHJpcF9jbGFzc2VzlE51jARib3RolH2UjApfb3B0aW9uc1RvlIwFX2JvdGiUjAtfb2xkX3NvdXJjZZSMTy9ob21lL3J1bm5lci93b3JrL2V4ZWN1dGlvbi1zcGVjcy9leGVjdXRpb24tc3BlY3MvLnRveC9kb2NzL3N0YWdlMF9vdXQvYXV0b2FwaS+UjAtfbmV3X3NvdXJjZZSMCWRvYy9kaWZmc5RqqDEAAGqpMQAAjBZpZ25vcmVfaW5fc2VjdGlvbl9uYW1llF2UKIwDZGFvlIwEZm9ya5SMCXRhbmdlcmluZZSMB3doaXN0bGWUZXVijAhyZXBvcnRlcpROjBBpbmRpcmVjdF90YXJnZXRzlF2UjBFzdWJzdGl0dXRpb25fZGVmc5R9lIwSc3Vic3RpdHV0aW9uX25hbWVzlH2UjAhyZWZuYW1lc5R9lIwGcmVmaWRzlH2UjAduYW1laWRzlH2UjAluYW1ldHlwZXOUfZRoEH2UjA1mb290bm90ZV9yZWZzlH2UjA1jaXRhdGlvbl9yZWZzlH2UjA1hdXRvZm9vdG5vdGVzlF2UjBFhdXRvZm9vdG5vdGVfcmVmc5RdlIwQc3ltYm9sX2Zvb3Rub3Rlc5RdlIwUc3ltYm9sX2Zvb3Rub3RlX3JlZnOUXZSMCWZvb3Rub3Rlc5RdlIwJY2l0YXRpb25zlF2UjBJhdXRvZm9vdG5vdGVfc3RhcnSUSwGMFXN5bWJvbF9mb290bm90ZV9zdGFydJRLAIwKaWRfY291bnRlcpSMC2NvbGxlY3Rpb25zlIwHQ291bnRlcpSTlH2UhZRSlIwOcGFyc2VfbWVzc2FnZXOUXZSMEnRyYW5zZm9ybV9tZXNzYWdlc5RdlIwLdHJhbnNmb3JtZXKUTowLaW5jbHVkZV9sb2eUXZSMCmRlY29yYXRpb26UTmghaAN1Yi4=