{ "name": "ProposalContract", "structs": { "DonationBoxKey": [ { "name": "proposal_id", "type": "uint64" }, { "name": "donor", "type": "address" } ], "FutureFund": [ { "name": "primary", "type": "address" }, { "name": "backup", "type": "address" }, { "name": "unlock_time", "type": "uint64" }, { "name": "amount", "type": "uint64" }, { "name": "claimed", "type": "bool" } ], "Proposal": [ { "name": "name", "type": "string" }, { "name": "title", "type": "string" }, { "name": "description", "type": "string" }, { "name": "category", "type": "string" }, { "name": "amount_required", "type": "uint64" }, { "name": "created_by", "type": "address" }, { "name": "amount_raised", "type": "uint64" }, { "name": "milestones", "type": "(string,uint64,string,uint64,uint64,uint64,bool,uint64,uint64)[]" }, { "name": "no_of_donations", "type": "uint64" }, { "name": "no_of_unique_donors", "type": "uint64" }, { "name": "current_milestone", "type": "uint64" }, { "name": "created_at", "type": "uint64" } ] }, "methods": [ { "name": "create_proposal", "args": [ { "type": "string", "name": "name" }, { "type": "string", "name": "title" }, { "type": "string", "name": "description" }, { "type": "string", "name": "category" }, { "type": "uint64", "name": "amount_required" }, { "type": "(string,uint64)[]", "name": "milestones" }, { "type": "pay", "name": "payment" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "donate_proposal", "args": [ { "type": "uint64", "name": "proposal_id" }, { "type": "pay", "name": "payment" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "submit_proof", "args": [ { "type": "uint64", "name": "proposal_id" }, { "type": "string", "name": "proof_link" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "vote_milestone", "args": [ { "type": "uint64", "name": "proposal_id" }, { "type": "bool", "name": "vote" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "claim_milestone", "args": [ { "type": "uint64", "name": "proposal_id" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "refund_if_inactive", "args": [ { "type": "uint64", "name": "proposal_id" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "fund_future_self", "args": [ { "type": "address", "name": "primary" }, { "type": "address", "name": "backup" }, { "type": "uint64", "name": "unlock_time" }, { "type": "pay", "name": "payment" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "claim_future_self", "args": [ { "type": "uint64", "name": "fund_id" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} } ], "arcs": [ 22, 28 ], "networks": {}, "state": { "schema": { "global": { "ints": 0, "bytes": 2 }, "local": { "ints": 0, "bytes": 0 } }, "keys": { "global": { "no_of_proposals": { "keyType": "AVMString", "valueType": "uint64", "key": "bm9PZlByb3Bvc2Fscw==" }, "no_of_future_funds": { "keyType": "AVMString", "valueType": "uint64", "key": "bm9PZkZ1dHVyZUZ1bmRz" } }, "local": {}, "box": {} }, "maps": { "global": {}, "local": {}, "box": { "proposals": { "keyType": "uint64", "valueType": "Proposal", "prefix": "cHJvcG9zYWxz" }, "milestoneVotes": { "keyType": "uint64", "valueType": "address[]", "prefix": "bWlsZXN0b25lVm90ZXNf" }, "donations": { "keyType": "DonationBoxKey", "valueType": "uint64", "prefix": "ZG9uYXRpb25z" }, "futureFunds": { "keyType": "uint64", "valueType": "FutureFund", "prefix": "ZnV0dXJlRnVuZF8=" } } } }, "bareActions": { "create": [ "NoOp" ], "call": [] }, "sourceInfo": { "approval": { "sourceInfo": [ { "pc": [ 1174 ], "errorMessage": "All milestones already completed" }, { "pc": [ 2137 ], "errorMessage": "Already claimed" }, { "pc": [ 823 ], "errorMessage": "Amount required must be greater than 0" }, { "pc": [ 830 ], "errorMessage": "At least one milestone is required" }, { "pc": [ 1485 ], "errorMessage": "Creator cannot vote" }, { "pc": [ 2118 ], "errorMessage": "Fund does not exist" }, { "pc": [ 2069 ], "errorMessage": "Funding must be from caller" }, { "pc": [ 1014 ], "errorMessage": "Goal already reached" }, { "pc": [ 1143 ], "errorMessage": "Goal not reached yet" }, { "pc": [ 714, 743, 1006, 1010, 1126, 1134, 1139, 1214, 1411, 1465, 1479, 1715, 1793, 1934, 2147, 2158 ], "errorMessage": "Index access is out of bounds" }, { "pc": [ 834 ], "errorMessage": "Maximum of 5 milestones allowed" }, { "pc": [ 1790 ], "errorMessage": "Milestone already claimed" }, { "pc": [ 1778 ], "errorMessage": "Milestone not approved" }, { "pc": [ 2061 ], "errorMessage": "Must fund with positive amount" }, { "pc": [ 650 ], "errorMessage": "Must pay exactly 2 Algos to create a proposal" }, { "pc": [ 2168 ], "errorMessage": "Not authorized" }, { "pc": [ 192, 207, 238, 253, 268, 286, 304, 329 ], "errorMessage": "OnCompletion is not NoOp" }, { "pc": [ 1132 ], "errorMessage": "Only creator can submit proof" }, { "pc": [ 666 ], "errorMessage": "Payment must be from the proposal creator" }, { "pc": [ 658, 1034 ], "errorMessage": "Payment must be sent to the contract address" }, { "pc": [ 2055 ], "errorMessage": "Payment must go to contract" }, { "pc": [ 1502, 1754 ], "errorMessage": "Proof is not submitted yet" }, { "pc": [ 1760 ], "errorMessage": "Proof not submitted yet" }, { "pc": [ 855 ], "errorMessage": "Proposal description cannot be empty" }, { "pc": [ 998, 1118, 1367, 1672, 1888 ], "errorMessage": "Proposal doesn't exist" }, { "pc": [ 841 ], "errorMessage": "Proposal name cannot be empty" }, { "pc": [ 848 ], "errorMessage": "Proposal title cannot be empty" }, { "pc": [ 1539 ], "errorMessage": "Should have donated more than 1 Algo to vote" }, { "pc": [ 2146 ], "errorMessage": "Too early to claim" }, { "pc": [ 818 ], "errorMessage": "Total milestone amount must equal the required amount" }, { "pc": [ 1510 ], "errorMessage": "Voting period has ended" }, { "pc": [ 1767 ], "errorMessage": "Voting period not ended yet" }, { "pc": [ 1469 ], "errorMessage": "You have already voted for this milestone" }, { "pc": [ 1524, 1973 ], "errorMessage": "You have not donated to this proposal" }, { "pc": [ 374 ], "errorMessage": "can only call when creating" }, { "pc": [ 195, 210, 241, 256, 271, 289, 307, 332 ], "errorMessage": "can only call when not creating" }, { "pc": [ 1094, 1526, 1978 ], "errorMessage": "check self.donations entry exists" }, { "pc": [ 2124 ], "errorMessage": "check self.futureFunds entry exists" }, { "pc": [ 1438 ], "errorMessage": "check self.milestoneVotes entry exists" }, { "pc": [ 2074 ], "errorMessage": "check self.no_of_future_funds exists" }, { "pc": [ 671, 976 ], "errorMessage": "check self.no_of_proposals exists" }, { "pc": [ 1004, 1124, 1373, 1609, 1675, 1823, 1864, 1894 ], "errorMessage": "check self.proposals entry exists" }, { "pc": [ 229, 320, 360 ], "errorMessage": "transaction type is pay" } ], "pcOffsetMethod": "none" }, "clear": { "sourceInfo": [], "pcOffsetMethod": "none" } }, "source": { "approval": "I3ByYWdtYSB2ZXJzaW9uIDEwCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBzbWFydF9jb250cmFjdHMuZmYuY29udHJhY3QuUHJvcG9zYWxDb250cmFjdC5fX2FsZ29weV9lbnRyeXBvaW50X3dpdGhfaW5pdCgpIC0+IHVpbnQ2NDoKbWFpbjoKICAgIGludGNibG9jayAxIDAgMiA1NiAyODgKICAgIGJ5dGVjYmxvY2sgMHgwMDAwMDAwMDAwMDAwMDAwIDB4MDAwMCAweDAwICJwcm9wb3NhbHMiICJub09mUHJvcG9zYWxzIiAibm9PZkZ1dHVyZUZ1bmRzIiAweDAwMDIgIm1pbGVzdG9uZVZvdGVzXyIgImRvbmF0aW9ucyIgImZ1dHVyZUZ1bmRfIgogICAgdHhuIEFwcGxpY2F0aW9uSUQKICAgIGJueiBtYWluX2FmdGVyX2lmX2Vsc2VAMgogICAgLy8gc21hcnRfY29udHJhY3RzL2ZmL2NvbnRyYWN0LnB5OjU1LTU2CiAgICAvLyAjIENyb3dkZnVuZGluZyBzdGF0ZQogICAgLy8gc2VsZi5ub19vZl9wcm9wb3NhbHMgPSBHbG9iYWxTdGF0ZShVSW50NjQoMCksIGtleT0ibm9PZlByb3Bvc2FscyIpCiAgICBieXRlYyA0IC8vICJub09mUHJvcG9zYWxzIgogICAgYnl0ZWNfMCAvLyAweDAwMDAwMDAwMDAwMDAwMDAKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyBzbWFydF9jb250cmFjdHMvZmYvY29udHJhY3QucHk6NjEtNjIKICAgIC8vICMgRnV0dXJlIHNlbGYgc3RhdGUKICAgIC8vIHNlbGYubm9fb2ZfZnV0dXJlX2Z1bmRzID0gR2xvYmFsU3RhdGUoVUludDY0KDApLCBrZXk9Im5vT2ZGdXR1cmVGdW5kcyIpCiAgICBieXRlYyA1IC8vICJub09mRnV0dXJlRnVuZHMiCiAgICBieXRlY18wIC8vIDB4MDAwMDAwMDAwMDAwMDAwMAogICAgYXBwX2dsb2JhbF9wdXQKCm1haW5fYWZ0ZXJfaWZfZWxzZUAyOgogICAgLy8gc21hcnRfY29udHJhY3RzL2ZmL2NvbnRyYWN0LnB5OjUyLTUzCiAgICAvLyAjIC0tLS0tLS0tLS0tLS0tLS0tLSBDb250cmFjdCAtLS0tLS0tLS0tLS0tLS0tLS0KICAgIC8vIGNsYXNzIFByb3Bvc2FsQ29udHJhY3QoQVJDNENvbnRyYWN0KToKICAgIHR4biBOdW1BcHBBcmdzCiAgICBieiBtYWluX2JhcmVfcm91dGluZ0AxMwogICAgcHVzaGJ5dGVzcyAweDZhNTAxZTU4IDB4ODc2NzU1ZDAgMHg1NTZmODJjMyAweDhjNTA3ZjE4IDB4Mjc5NGQ5NjMgMHhlNjQwNTlkMSAweGU5MTI4MjI2IDB4MjY2OTU2NzcgLy8gbWV0aG9kICJjcmVhdGVfcHJvcG9zYWwoc3RyaW5nLHN0cmluZyxzdHJpbmcsc3RyaW5nLHVpbnQ2NCwoc3RyaW5nLHVpbnQ2NClbXSxwYXkpdm9pZCIsIG1ldGhvZCAiZG9uYXRlX3Byb3Bvc2FsKHVpbnQ2NCxwYXkpdm9pZCIsIG1ldGhvZCAic3VibWl0X3Byb29mKHVpbnQ2NCxzdHJpbmcpdm9pZCIsIG1ldGhvZCAidm90ZV9taWxlc3RvbmUodWludDY0LGJvb2wpdm9pZCIsIG1ldGhvZCAiY2xhaW1fbWlsZXN0b25lKHVpbnQ2NCl2b2lkIiwgbWV0aG9kICJyZWZ1bmRfaWZfaW5hY3RpdmUodWludDY0KXZvaWQiLCBtZXRob2QgImZ1bmRfZnV0dXJlX3NlbGYoYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCxwYXkpdm9pZCIsIG1ldGhvZCAiY2xhaW1fZnV0dXJlX3NlbGYodWludDY0KXZvaWQiCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAwCiAgICBtYXRjaCBtYWluX2NyZWF0ZV9wcm9wb3NhbF9yb3V0ZUA1IG1haW5fZG9uYXRlX3Byb3Bvc2FsX3JvdXRlQDYgbWFpbl9zdWJtaXRfcHJvb2Zfcm91dGVANyBtYWluX3ZvdGVfbWlsZXN0b25lX3JvdXRlQDggbWFpbl9jbGFpbV9taWxlc3RvbmVfcm91dGVAOSBtYWluX3JlZnVuZF9pZl9pbmFjdGl2ZV9yb3V0ZUAxMCBtYWluX2Z1bmRfZnV0dXJlX3NlbGZfcm91dGVAMTEgbWFpbl9jbGFpbV9mdXR1cmVfc2VsZl9yb3V0ZUAxMgoKbWFpbl9hZnRlcl9pZl9lbHNlQDE1OgogICAgLy8gc21hcnRfY29udHJhY3RzL2ZmL2NvbnRyYWN0LnB5OjUyLTUzCiAgICAvLyAjIC0tLS0tLS0tLS0tLS0tLS0tLSBDb250cmFjdCAtLS0tLS0tLS0tLS0tLS0tLS0KICAgIC8vIGNsYXNzIFByb3Bvc2FsQ29udHJhY3QoQVJDNENvbnRyYWN0KToKICAgIGludGNfMSAvLyAwCiAgICByZXR1cm4KCm1haW5fY2xhaW1fZnV0dXJlX3NlbGZfcm91dGVAMTI6CiAgICAvLyBzbWFydF9jb250cmFjdHMvZmYvY29udHJhY3QucHk6Mjg2CiAgICAvLyBAYWJpbWV0aG9kKCkKICAgIHR4biBPbkNvbXBsZXRpb24KICAgICEKICAgIGFzc2VydCAvLyBPbkNvbXBsZXRpb24gaXMgbm90IE5vT3AKICAgIHR4biBBcHBsaWNhdGlvbklECiAgICBhc3NlcnQgLy8gY2FuIG9ubHkgY2FsbCB3aGVuIG5vdCBjcmVhdGluZwogICAgLy8gc21hcnRfY29udHJhY3RzL2ZmL2NvbnRyYWN0LnB5OjUyLTUzCiAgICAvLyAjIC0tLS0tLS0tLS0tLS0tLS0tLSBDb250cmFjdCAtLS0tLS0tLS0tLS0tLS0tLS0KICAgIC8vIGNsYXNzIFByb3Bvc2FsQ29udHJhY3QoQVJDNENvbnRyYWN0KToKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9mZi9jb250cmFjdC5weToyODYKICAgIC8vIEBhYmltZXRob2QoKQogICAgY2FsbHN1YiBjbGFpbV9mdXR1cmVfc2VsZgogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgoKbWFpbl9mdW5kX2Z1dHVyZV9zZWxmX3JvdXRlQDExOgogICAgLy8gc21hcnRfY29udHJhY3RzL2ZmL2NvbnRyYWN0LnB5OjI2Mi0yNjMKICAgIC8vICMgLS0tLS0tLS0tLS0tLS0tLS0tIEZ1dHVyZSBTZWxmIE1ldGhvZHMgLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAvLyBAYWJpbWV0aG9kKCkKICAgIHR4biBPbkNvbXBsZXRpb24KICAgICEKICAgIGFzc2VydCAvLyBPbkNvbXBsZXRpb24gaXMgbm90IE5vT3AKICAgIHR4biBBcHBsaWNhdGlvbklECiAgICBhc3NlcnQgLy8gY2FuIG9ubHkgY2FsbCB3aGVuIG5vdCBjcmVhdGluZwogICAgLy8gc21hcnRfY29udHJhY3RzL2ZmL2NvbnRyYWN0LnB5OjUyLTUzCiAgICAvLyAjIC0tLS0tLS0tLS0tLS0tLS0tLSBDb250cmFjdCAtLS0tLS0tLS0tLS0tLS0tLS0KICAgIC8vIGNsYXNzIFByb3Bvc2FsQ29udHJhY3QoQVJDNENvbnRyYWN0KToKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDIKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDMKICAgIHR4biBHcm91cEluZGV4CiAgICBpbnRjXzAgLy8gMQogICAgLQogICAgZHVwCiAgICBndHhucyBUeXBlRW51bQogICAgaW50Y18wIC8vIHBheQogICAgPT0KICAgIGFzc2VydCAvLyB0cmFuc2FjdGlvbiB0eXBlIGlzIHBheQogICAgLy8gc21hcnRfY29udHJhY3RzL2ZmL2NvbnRyYWN0LnB5OjI2Mi0yNjMKICAgIC8vICMgLS0tLS0tLS0tLS0tLS0tLS0tIEZ1dHVyZSBTZWxmIE1ldGhvZHMgLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAvLyBAYWJpbWV0aG9kKCkKICAgIGNhbGxzdWIgZnVuZF9mdXR1cmVfc2VsZgogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgoKbWFpbl9yZWZ1bmRfaWZfaW5hY3RpdmVfcm91dGVAMTA6CiAgICAvLyBzbWFydF9jb250cmFjdHMvZmYvY29udHJhY3QucHk6MjM4CiAgICAvLyBAYWJpbWV0aG9kKCkKICAgIHR4biBPbkNvbXBsZXRpb24KICAgICEKICAgIGFzc2VydCAvLyBPbkNvbXBsZXRpb24gaXMgbm90IE5vT3AKICAgIHR4biBBcHBsaWNhdGlvbklECiAgICBhc3NlcnQgLy8gY2FuIG9ubHkgY2FsbCB3aGVuIG5vdCBjcmVhdGluZwogICAgLy8gc21hcnRfY29udHJhY3RzL2ZmL2NvbnRyYWN0LnB5OjUyLTUzCiAgICAvLyAjIC0tLS0tLS0tLS0tLS0tLS0tLSBDb250cmFjdCAtLS0tLS0tLS0tLS0tLS0tLS0KICAgIC8vIGNsYXNzIFByb3Bvc2FsQ29udHJhY3QoQVJDNENvbnRyYWN0KToKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9mZi9jb250cmFjdC5weToyMzgKICAgIC8vIEBhYmltZXRob2QoKQogICAgY2FsbHN1YiByZWZ1bmRfaWZfaW5hY3RpdmUKICAgIGludGNfMCAvLyAxCiAgICByZXR1cm4KCm1haW5fY2xhaW1fbWlsZXN0b25lX3JvdXRlQDk6CiAgICAvLyBzbWFydF9jb250cmFjdHMvZmYvY29udHJhY3QucHk6MjEzCiAgICAvLyBAYWJpbWV0aG9kKCkKICAgIHR4biBPbkNvbXBsZXRpb24KICAgICEKICAgIGFzc2VydCAvLyBPbkNvbXBsZXRpb24gaXMgbm90IE5vT3AKICAgIHR4biBBcHBsaWNhdGlvbklECiAgICBhc3NlcnQgLy8gY2FuIG9ubHkgY2FsbCB3aGVuIG5vdCBjcmVhdGluZwogICAgLy8gc21hcnRfY29udHJhY3RzL2ZmL2NvbnRyYWN0LnB5OjUyLTUzCiAgICAvLyAjIC0tLS0tLS0tLS0tLS0tLS0tLSBDb250cmFjdCAtLS0tLS0tLS0tLS0tLS0tLS0KICAgIC8vIGNsYXNzIFByb3Bvc2FsQ29udHJhY3QoQVJDNENvbnRyYWN0KToKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9mZi9jb250cmFjdC5weToyMTMKICAgIC8vIEBhYmltZXRob2QoKQogICAgY2FsbHN1YiBjbGFpbV9taWxlc3RvbmUKICAgIGludGNfMCAvLyAxCiAgICByZXR1cm4KCm1haW5fdm90ZV9taWxlc3RvbmVfcm91dGVAODoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9mZi9jb250cmFjdC5weToxODAKICAgIC8vIEBhYmltZXRob2QoKQogICAgdHhuIE9uQ29tcGxldGlvbgogICAgIQogICAgYXNzZXJ0IC8vIE9uQ29tcGxldGlvbiBpcyBub3QgTm9PcAogICAgdHhuIEFwcGxpY2F0aW9uSUQKICAgIGFzc2VydCAvLyBjYW4gb25seSBjYWxsIHdoZW4gbm90IGNyZWF0aW5nCiAgICAvLyBzbWFydF9jb250cmFjdHMvZmYvY29udHJhY3QucHk6NTItNTMKICAgIC8vICMgLS0tLS0tLS0tLS0tLS0tLS0tIENvbnRyYWN0IC0tLS0tLS0tLS0tLS0tLS0tLQogICAgLy8gY2xhc3MgUHJvcG9zYWxDb250cmFjdChBUkM0Q29udHJhY3QpOgogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgogICAgLy8gc21hcnRfY29udHJhY3RzL2ZmL2NvbnRyYWN0LnB5OjE4MAogICAgLy8gQGFiaW1ldGhvZCgpCiAgICBjYWxsc3ViIHZvdGVfbWlsZXN0b25lCiAgICBpbnRjXzAgLy8gMQogICAgcmV0dXJuCgptYWluX3N1Ym1pdF9wcm9vZl9yb3V0ZUA3OgogICAgLy8gc21hcnRfY29udHJhY3RzL2ZmL2NvbnRyYWN0LnB5OjE1MQogICAgLy8gQGFiaW1ldGhvZCgpCiAgICB0eG4gT25Db21wbGV0aW9uCiAgICAhCiAgICBhc3NlcnQgLy8gT25Db21wbGV0aW9uIGlzIG5vdCBOb09wCiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgYXNzZXJ0IC8vIGNhbiBvbmx5IGNhbGwgd2hlbiBub3QgY3JlYXRpbmcKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9mZi9jb250cmFjdC5weTo1Mi01MwogICAgLy8gIyAtLS0tLS0tLS0tLS0tLS0tLS0gQ29udHJhY3QgLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAvLyBjbGFzcyBQcm9wb3NhbENvbnRyYWN0KEFSQzRDb250cmFjdCk6CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAyCiAgICAvLyBzbWFydF9jb250cmFjdHMvZmYvY29udHJhY3QucHk6MTUxCiAgICAvLyBAYWJpbWV0aG9kKCkKICAgIGNhbGxzdWIgc3VibWl0X3Byb29mCiAgICBpbnRjXzAgLy8gMQogICAgcmV0dXJuCgptYWluX2RvbmF0ZV9wcm9wb3NhbF9yb3V0ZUA2OgogICAgLy8gc21hcnRfY29udHJhY3RzL2ZmL2NvbnRyYWN0LnB5OjEyOQogICAgLy8gQGFiaW1ldGhvZCgpCiAgICB0eG4gT25Db21wbGV0aW9uCiAgICAhCiAgICBhc3NlcnQgLy8gT25Db21wbGV0aW9uIGlzIG5vdCBOb09wCiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgYXNzZXJ0IC8vIGNhbiBvbmx5IGNhbGwgd2hlbiBub3QgY3JlYXRpbmcKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9mZi9jb250cmFjdC5weTo1Mi01MwogICAgLy8gIyAtLS0tLS0tLS0tLS0tLS0tLS0gQ29udHJhY3QgLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAvLyBjbGFzcyBQcm9wb3NhbENvbnRyYWN0KEFSQzRDb250cmFjdCk6CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICB0eG4gR3JvdXBJbmRleAogICAgaW50Y18wIC8vIDEKICAgIC0KICAgIGR1cAogICAgZ3R4bnMgVHlwZUVudW0KICAgIGludGNfMCAvLyBwYXkKICAgID09CiAgICBhc3NlcnQgLy8gdHJhbnNhY3Rpb24gdHlwZSBpcyBwYXkKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9mZi9jb250cmFjdC5weToxMjkKICAgIC8vIEBhYmltZXRob2QoKQogICAgY2FsbHN1YiBkb25hdGVfcHJvcG9zYWwKICAgIGludGNfMCAvLyAxCiAgICByZXR1cm4KCm1haW5fY3JlYXRlX3Byb3Bvc2FsX3JvdXRlQDU6CiAgICAvLyBzbWFydF9jb250cmFjdHMvZmYvY29udHJhY3QucHk6NjYtNjcKICAgIC8vICMgLS0tLS0tLS0tLS0tLS0tLS0tIENyb3dkZnVuZGluZyBNZXRob2RzIC0tLS0tLS0tLS0tLS0tLS0tLQogICAgLy8gQGFiaW1ldGhvZCgpCiAgICB0eG4gT25Db21wbGV0aW9uCiAgICAhCiAgICBhc3NlcnQgLy8gT25Db21wbGV0aW9uIGlzIG5vdCBOb09wCiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgYXNzZXJ0IC8vIGNhbiBvbmx5IGNhbGwgd2hlbiBub3QgY3JlYXRpbmcKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9mZi9jb250cmFjdC5weTo1Mi01MwogICAgLy8gIyAtLS0tLS0tLS0tLS0tLS0tLS0gQ29udHJhY3QgLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAvLyBjbGFzcyBQcm9wb3NhbENvbnRyYWN0KEFSQzRDb250cmFjdCk6CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAyCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAzCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyA0CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyA1CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyA2CiAgICB0eG4gR3JvdXBJbmRleAogICAgaW50Y18wIC8vIDEKICAgIC0KICAgIGR1cAogICAgZ3R4bnMgVHlwZUVudW0KICAgIGludGNfMCAvLyBwYXkKICAgID09CiAgICBhc3NlcnQgLy8gdHJhbnNhY3Rpb24gdHlwZSBpcyBwYXkKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9mZi9jb250cmFjdC5weTo2Ni02NwogICAgLy8gIyAtLS0tLS0tLS0tLS0tLS0tLS0gQ3Jvd2RmdW5kaW5nIE1ldGhvZHMgLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAvLyBAYWJpbWV0aG9kKCkKICAgIGNhbGxzdWIgY3JlYXRlX3Byb3Bvc2FsCiAgICBpbnRjXzAgLy8gMQogICAgcmV0dXJuCgptYWluX2JhcmVfcm91dGluZ0AxMzoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9mZi9jb250cmFjdC5weTo1Mi01MwogICAgLy8gIyAtLS0tLS0tLS0tLS0tLS0tLS0gQ29udHJhY3QgLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAvLyBjbGFzcyBQcm9wb3NhbENvbnRyYWN0KEFSQzRDb250cmFjdCk6CiAgICB0eG4gT25Db21wbGV0aW9uCiAgICBibnogbWFpbl9hZnRlcl9pZl9lbHNlQDE1CiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgIQogICAgYXNzZXJ0IC8vIGNhbiBvbmx5IGNhbGwgd2hlbiBjcmVhdGluZwogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgoKCi8vIF9wdXlhX2xpYi5hcmM0LmR5bmFtaWNfYXJyYXlfY29uY2F0X2R5bmFtaWNfZWxlbWVudChhcnJheV9pdGVtc19jb3VudDogdWludDY0LCBhcnJheV9oZWFkX2FuZF90YWlsOiBieXRlcywgbmV3X2l0ZW1zX2NvdW50OiB1aW50NjQsIG5ld19oZWFkX2FuZF90YWlsOiBieXRlcykgLT4gYnl0ZXM6CmR5bmFtaWNfYXJyYXlfY29uY2F0X2R5bmFtaWNfZWxlbWVudDoKICAgIHByb3RvIDQgMQogICAgcHVzaGJ5dGVzICIiCiAgICBkdXAKICAgIGZyYW1lX2RpZyAtMgogICAgaW50Y18yIC8vIDIKICAgICoKICAgIGZyYW1lX2RpZyAtNAogICAgaW50Y18yIC8vIDIKICAgICoKICAgIGludGNfMSAvLyAwCgpkeW5hbWljX2FycmF5X2NvbmNhdF9keW5hbWljX2VsZW1lbnRfZm9yX2hlYWRlckAxOgogICAgZnJhbWVfZGlnIDQKICAgIGZyYW1lX2RpZyAzCiAgICA8CiAgICBieiBkeW5hbWljX2FycmF5X2NvbmNhdF9keW5hbWljX2VsZW1lbnRfYWZ0ZXJfZm9yQDQKICAgIGZyYW1lX2RpZyAtMwogICAgZnJhbWVfZGlnIDQKICAgIGR1cAogICAgY292ZXIgMgogICAgZXh0cmFjdF91aW50MTYKICAgIGZyYW1lX2RpZyAyCiAgICArCiAgICBpdG9iCiAgICBleHRyYWN0IDYgMgogICAgZnJhbWVfZGlnIDEKICAgIHN3YXAKICAgIGNvbmNhdAogICAgZnJhbWVfYnVyeSAxCiAgICBpbnRjXzIgLy8gMgogICAgKwogICAgZnJhbWVfYnVyeSA0CiAgICBiIGR5bmFtaWNfYXJyYXlfY29uY2F0X2R5bmFtaWNfZWxlbWVudF9mb3JfaGVhZGVyQDEKCmR5bmFtaWNfYXJyYXlfY29uY2F0X2R5bmFtaWNfZWxlbWVudF9hZnRlcl9mb3JANDoKICAgIGZyYW1lX2RpZyAtMwogICAgbGVuCiAgICBmcmFtZV9idXJ5IDAKICAgIGludGNfMSAvLyAwCiAgICBmcmFtZV9idXJ5IDQKCmR5bmFtaWNfYXJyYXlfY29uY2F0X2R5bmFtaWNfZWxlbWVudF9mb3JfaGVhZGVyQDU6CiAgICBmcmFtZV9kaWcgNAogICAgZnJhbWVfZGlnIDIKICAgIDwKICAgIGJ6IGR5bmFtaWNfYXJyYXlfY29uY2F0X2R5bmFtaWNfZWxlbWVudF9hZnRlcl9mb3JAOAogICAgZnJhbWVfZGlnIC0xCiAgICBmcmFtZV9kaWcgNAogICAgZHVwCiAgICBjb3ZlciAyCiAgICBleHRyYWN0X3VpbnQxNgogICAgZnJhbWVfZGlnIDAKICAgICsKICAgIGl0b2IKICAgIGV4dHJhY3QgNiAyCiAgICBmcmFtZV9kaWcgMQogICAgc3dhcAogICAgY29uY2F0CiAgICBmcmFtZV9idXJ5IDEKICAgIGludGNfMiAvLyAyCiAgICArCiAgICBmcmFtZV9idXJ5IDQKICAgIGIgZHluYW1pY19hcnJheV9jb25jYXRfZHluYW1pY19lbGVtZW50X2Zvcl9oZWFkZXJANQoKZHluYW1pY19hcnJheV9jb25jYXRfZHluYW1pY19lbGVtZW50X2FmdGVyX2ZvckA4OgogICAgZnJhbWVfZGlnIC00CiAgICBmcmFtZV9kaWcgLTIKICAgICsKICAgIGl0b2IKICAgIGV4dHJhY3QgNiAyCiAgICBmcmFtZV9kaWcgMQogICAgY29uY2F0CiAgICBmcmFtZV9kaWcgLTMKICAgIGZyYW1lX2RpZyAzCiAgICBmcmFtZV9kaWcgMAogICAgc3Vic3RyaW5nMwogICAgY29uY2F0CiAgICBmcmFtZV9kaWcgLTEKICAgIGxlbgogICAgZnJhbWVfZGlnIC0xCiAgICBmcmFtZV9kaWcgMgogICAgdW5jb3ZlciAyCiAgICBzdWJzdHJpbmczCiAgICBjb25jYXQKICAgIGZyYW1lX2J1cnkgMAogICAgcmV0c3ViCgoKLy8gX3B1eWFfbGliLmFyYzQuZHluYW1pY19hcnJheV9yZXBsYWNlX2R5bmFtaWNfZWxlbWVudChzb3VyY2U6IGJ5dGVzLCBuZXdfaXRlbTogYnl0ZXMsIGluZGV4OiB1aW50NjQpIC0+IGJ5dGVzOgpkeW5hbWljX2FycmF5X3JlcGxhY2VfZHluYW1pY19lbGVtZW50OgogICAgcHJvdG8gMyAxCiAgICBmcmFtZV9kaWcgLTMKICAgIHN1YnN0cmluZyAwIDIKICAgIGR1cAogICAgYnRvaQogICAgZnJhbWVfZGlnIC0zCiAgICBleHRyYWN0IDIgMAogICAgZnJhbWVfZGlnIC0xCiAgICBpbnRjXzIgLy8gMgogICAgKgogICAgZGlnIDEKICAgIHN3YXAKICAgIGV4dHJhY3RfdWludDE2CiAgICBmcmFtZV9kaWcgLTEKICAgIGludGNfMCAvLyAxCiAgICArCiAgICBpbnRjXzIgLy8gMgogICAgKgogICAgZHVwCiAgICBjb3ZlciA0CiAgICBkaWcgMgogICAgc3dhcAogICAgZXh0cmFjdF91aW50MTYKICAgIGRpZyAyCiAgICBsZW4KICAgIGRpZyA0CiAgICBmcmFtZV9kaWcgLTEKICAgIC0KICAgIGludGNfMCAvLyAxCiAgICAtCiAgICBkaWcgMQogICAgdW5jb3ZlciAzCiAgICB1bmNvdmVyIDIKICAgIHNlbGVjdAogICAgZHVwCiAgICBkaWcgMwogICAgLQogICAgY292ZXIgNQogICAgZnJhbWVfZGlnIC0yCiAgICBsZW4KICAgIGNvdmVyIDUKICAgIGRpZyAzCiAgICBpbnRjXzEgLy8gMAogICAgdW5jb3ZlciA0CiAgICBzdWJzdHJpbmczCiAgICBmcmFtZV9kaWcgLTIKICAgIGNvbmNhdAogICAgdW5jb3ZlciAzCiAgICB1bmNvdmVyIDIKICAgIHVuY292ZXIgMwogICAgc3Vic3RyaW5nMwogICAgY29uY2F0CiAgICBzd2FwCiAgICBpbnRjXzIgLy8gMgogICAgKgoKZHluYW1pY19hcnJheV9yZXBsYWNlX2R5bmFtaWNfZWxlbWVudF9mb3JfaGVhZGVyQDI6CiAgICBmcmFtZV9kaWcgMQogICAgZnJhbWVfZGlnIDUKICAgIDwKICAgIGJ6IGR5bmFtaWNfYXJyYXlfcmVwbGFjZV9keW5hbWljX2VsZW1lbnRfYWZ0ZXJfZm9yQDUKICAgIGZyYW1lX2RpZyA0CiAgICBkdXAKICAgIGZyYW1lX2RpZyAxCiAgICBkdXAKICAgIGNvdmVyIDMKICAgIGV4dHJhY3RfdWludDE2CiAgICBmcmFtZV9kaWcgMwogICAgKwogICAgZnJhbWVfZGlnIDIKICAgIC0KICAgIGl0b2IKICAgIGV4dHJhY3QgNiAyCiAgICBkaWcgMgogICAgc3dhcAogICAgcmVwbGFjZTMKICAgIGZyYW1lX2J1cnkgNAogICAgaW50Y18yIC8vIDIKICAgICsKICAgIGZyYW1lX2J1cnkgMQogICAgYiBkeW5hbWljX2FycmF5X3JlcGxhY2VfZHluYW1pY19lbGVtZW50X2Zvcl9oZWFkZXJAMgoKZHluYW1pY19hcnJheV9yZXBsYWNlX2R5bmFtaWNfZWxlbWVudF9hZnRlcl9mb3JANToKICAgIGZyYW1lX2RpZyAwCiAgICBmcmFtZV9kaWcgNAogICAgY29uY2F0CiAgICBmcmFtZV9idXJ5IDAKICAgIHJldHN1YgoKCi8vIHNtYXJ0X2NvbnRyYWN0cy5mZi5jb250cmFjdC5Qcm9wb3NhbENvbnRyYWN0LmNyZWF0ZV9wcm9wb3NhbChuYW1lOiBieXRlcywgdGl0bGU6IGJ5dGVzLCBkZXNjcmlwdGlvbjogYnl0ZXMsIGNhdGVnb3J5OiBieXRlcywgYW1vdW50X3JlcXVpcmVkOiBieXRlcywgbWlsZXN0b25lczogYnl0ZXMsIHBheW1lbnQ6IHVpbnQ2NCkgLT4gdm9pZDoKY3JlYXRlX3Byb3Bvc2FsOgogICAgLy8gc21hcnRfY29udHJhY3RzL2ZmL2NvbnRyYWN0LnB5OjY2LTc3CiAgICAvLyAjIC0tLS0tLS0tLS0tLS0tLS0tLSBDcm93ZGZ1bmRpbmcgTWV0aG9kcyAtLS0tLS0tLS0tLS0tLS0tLS0KICAgIC8vIEBhYmltZXRob2QoKQogICAgLy8gZGVmIGNyZWF0ZV9wcm9wb3NhbCgKICAgIC8vICAgICBzZWxmLAogICAgLy8gICAgIG5hbWU6IFN0cmluZywKICAgIC8vICAgICB0aXRsZTogU3RyaW5nLAogICAgLy8gICAgIGRlc2NyaXB0aW9uOiBTdHJpbmcsCiAgICAvLyAgICAgY2F0ZWdvcnk6IFN0cmluZywKICAgIC8vICAgICBhbW91bnRfcmVxdWlyZWQ6IFVJbnQ2NCwKICAgIC8vICAgICBtaWxlc3RvbmVzOiBEeW5hbWljQXJyYXlbTWlsZXN0b25lSW5wdXRdLAogICAgLy8gICAgIHBheW1lbnQ6IGd0eG4uUGF5bWVudFRyYW5zYWN0aW9uCiAgICAvLyApIC0+IE5vbmU6CiAgICBwcm90byA3IDAKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9mZi9jb250cmFjdC5weTo3OAogICAgLy8gYXNzZXJ0IHBheW1lbnQuYW1vdW50ID09IDJfMDAwXzAwMCwgIk11c3QgcGF5IGV4YWN0bHkgMiBBbGdvcyB0byBjcmVhdGUgYSBwcm9wb3NhbCIKICAgIGZyYW1lX2RpZyAtMQogICAgZ3R4bnMgQW1vdW50CiAgICBwdXNoaW50IDIwMDAwMDAgLy8gMjAwMDAwMAogICAgPT0KICAgIGFzc2VydCAvLyBNdXN0IHBheSBleGFjdGx5IDIgQWxnb3MgdG8gY3JlYXRlIGEgcHJvcG9zYWwKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9mZi9jb250cmFjdC5weTo3OQogICAgLy8gYXNzZXJ0IHBheW1lbnQucmVjZWl2ZXIgPT0gR2xvYmFsLmN1cnJlbnRfYXBwbGljYXRpb25fYWRkcmVzcywgIlBheW1lbnQgbXVzdCBiZSBzZW50IHRvIHRoZSBjb250cmFjdCBhZGRyZXNzIgogICAgZnJhbWVfZGlnIC0xCiAgICBndHhucyBSZWNlaXZlcgogICAgZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKICAgID09CiAgICBhc3NlcnQgLy8gUGF5bWVudCBtdXN0IGJlIHNlbnQgdG8gdGhlIGNvbnRyYWN0IGFkZHJlc3MKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9mZi9jb250cmFjdC5weTo4MAogICAgLy8gYXNzZXJ0IHBheW1lbnQuc2VuZGVyID09IFR4bi5zZW5kZXIsICJQYXltZW50IG11c3QgYmUgZnJvbSB0aGUgcHJvcG9zYWwgY3JlYXRvciIKICAgIGZyYW1lX2RpZyAtMQogICAgZ3R4bnMgU2VuZGVyCiAgICB0eG4gU2VuZGVyCiAgICA9PQogICAgYXNzZXJ0IC8vIFBheW1lbnQgbXVzdCBiZSBmcm9tIHRoZSBwcm9wb3NhbCBjcmVhdG9yCiAgICAvLyBzbWFydF9jb250cmFjdHMvZmYvY29udHJhY3QucHk6ODIKICAgIC8vIGlkeCA9IHNlbGYubm9fb2ZfcHJvcG9zYWxzLnZhbHVlCiAgICBpbnRjXzEgLy8gMAogICAgYnl0ZWMgNCAvLyAibm9PZlByb3Bvc2FscyIKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi5ub19vZl9wcm9wb3NhbHMgZXhpc3RzCiAgICAvLyBzbWFydF9jb250cmFjdHMvZmYvY29udHJhY3QucHk6ODMKICAgIC8vIGZpbmFsX21pbGVzdG9uZXMgPSBEeW5hbWljQXJyYXlbTWlsZXN0b25lXSgpCiAgICBieXRlY18xIC8vIDB4MDAwMAogICAgLy8gc21hcnRfY29udHJhY3RzL2ZmL2NvbnRyYWN0LnB5Ojg0CiAgICAvLyBtaWxlc3RvbmVzX3RvdGFsID0gTmF0aXZlVUludDY0KDApCiAgICBpbnRjXzEgLy8gMAogICAgLy8gc21hcnRfY29udHJhY3RzL2ZmL2NvbnRyYWN0LnB5Ojg2CiAgICAvLyBmb3IgaW5kZXggaW4gdXJhbmdlKG1pbGVzdG9uZXMubGVuZ3RoKToKICAgIGZyYW1lX2RpZyAtMgogICAgaW50Y18xIC8vIDAKICAgIGV4dHJhY3RfdWludDE2CiAgICBpbnRjXzEgLy8gMAoKY3JlYXRlX3Byb3Bvc2FsX2Zvcl9oZWFkZXJAMToKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9mZi9jb250cmFjdC5weTo4NgogICAgLy8gZm9yIGluZGV4IGluIHVyYW5nZShtaWxlc3RvbmVzLmxlbmd0aCk6CiAgICBmcmFtZV9kaWcgNAogICAgZnJhbWVfZGlnIDMKICAgIDwKICAgIGJ6IGNyZWF0ZV9wcm9wb3NhbF9hZnRlcl9mb3JANAogICAgLy8gc21hcnRfY29udHJhY3RzL2ZmL2NvbnRyYWN0LnB5Ojg3CiAgICAvLyBtaWxlc3RvbmUgPSBtaWxlc3RvbmVzW2luZGV4XS5jb3B5KCkKICAgIGZyYW1lX2RpZyAtMgogICAgZXh0cmFjdCAyIDAKICAgIGZyYW1lX2RpZyA0CiAgICBkdXAKICAgIGNvdmVyIDIKICAgIGludGNfMiAvLyAyCiAgICAqCiAgICBkaWcgMQogICAgc3dhcAogICAgZXh0cmFjdF91aW50MTYKICAgIHVuY292ZXIgMgogICAgaW50Y18wIC8vIDEKICAgICsKICAgIGR1cAogICAgZnJhbWVfYnVyeSA0CiAgICBmcmFtZV9kaWcgMwogICAgZGlnIDEKICAgIC0gLy8gb24gZXJyb3I6IEluZGV4IGFjY2VzcyBpcyBvdXQgb2YgYm91bmRzCiAgICBkaWcgMwogICAgbGVuCiAgICB1bmNvdmVyIDIKICAgIGludGNfMiAvLyAyCiAgICAqCiAgICBkaWcgNAogICAgc3dhcAogICAgZXh0cmFjdF91aW50MTYKICAgIHVuY292ZXIgMgogICAgc2VsZWN0CiAgICBzdWJzdHJpbmczCiAgICAvLyBzbWFydF9jb250cmFjdHMvZmYvY29udHJhY3QucHk6ODkKICAgIC8vIG5hbWU9bWlsZXN0b25lLm5hbWUsCiAgICBkdXAKICAgIGludGNfMSAvLyAwCiAgICBleHRyYWN0X3VpbnQxNgogICAgZGlnIDEKICAgIGxlbgogICAgZGlnIDIKICAgIGNvdmVyIDIKICAgIHN1YnN0cmluZzMKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9mZi9jb250cmFjdC5weTo5MAogICAgLy8gYW1vdW50PW1pbGVzdG9uZS5hbW91bnQsCiAgICBkaWcgMQogICAgZXh0cmFjdCAyIDggLy8gb24gZXJyb3I6IEluZGV4IGFjY2VzcyBpcyBvdXQgb2YgYm91bmRzCiAgICAvLyBzbWFydF9jb250cmFjdHMvZmYvY29udHJhY3QucHk6ODgtOTgKICAgIC8vIGZpbmFsX21pbGVzdG9uZXMuYXBwZW5kKE1pbGVzdG9uZSgKICAgIC8vICAgICBuYW1lPW1pbGVzdG9uZS5uYW1lLAogICAgLy8gICAgIGFtb3VudD1taWxlc3RvbmUuYW1vdW50LAogICAgLy8gICAgIHByb29mX2xpbms9U3RyaW5nKCIiKSwKICAgIC8vICAgICB2b3Rlc19mb3I9VUludDY0KDApLAogICAgLy8gICAgIHZvdGVzX2FnYWluc3Q9VUludDY0KDApLAogICAgLy8gICAgIHRvdGFsX3ZvdGVycz1VSW50NjQoMCksCiAgICAvLyAgICAgY2xhaW1lZD1Cb29sKEZhbHNlKSwKICAgIC8vICAgICBwcm9vZl9zdWJtaXR0ZWRfdGltZT1VSW50NjQoMCksCiAgICAvLyAgICAgdm90aW5nX2VuZF90aW1lPVVJbnQ2NCgwKQogICAgLy8gKSkKICAgIGRpZyAxCiAgICBsZW4KICAgIHB1c2hpbnQgNTMgLy8gNTMKICAgICsKICAgIHB1c2hieXRlcyAweDAwMzUKICAgIHVuY292ZXIgMgogICAgY29uY2F0CiAgICBzd2FwCiAgICBpdG9iCiAgICBleHRyYWN0IDYgMgogICAgY29uY2F0CiAgICAvLyBzbWFydF9jb250cmFjdHMvZmYvY29udHJhY3QucHk6OTIKICAgIC8vIHZvdGVzX2Zvcj1VSW50NjQoMCksCiAgICBieXRlY18wIC8vIDB4MDAwMDAwMDAwMDAwMDAwMAogICAgLy8gc21hcnRfY29udHJhY3RzL2ZmL2NvbnRyYWN0LnB5Ojg4LTk4CiAgICAvLyBmaW5hbF9taWxlc3RvbmVzLmFwcGVuZChNaWxlc3RvbmUoCiAgICAvLyAgICAgbmFtZT1taWxlc3RvbmUubmFtZSwKICAgIC8vICAgICBhbW91bnQ9bWlsZXN0b25lLmFtb3VudCwKICAgIC8vICAgICBwcm9vZl9saW5rPVN0cmluZygiIiksCiAgICAvLyAgICAgdm90ZXNfZm9yPVVJbnQ2NCgwKSwKICAgIC8vICAgICB2b3Rlc19hZ2FpbnN0PVVJbnQ2NCgwKSwKICAgIC8vICAgICB0b3RhbF92b3RlcnM9VUludDY0KDApLAogICAgLy8gICAgIGNsYWltZWQ9Qm9vbChGYWxzZSksCiAgICAvLyAgICAgcHJvb2Zfc3VibWl0dGVkX3RpbWU9VUludDY0KDApLAogICAgLy8gICAgIHZvdGluZ19lbmRfdGltZT1VSW50NjQoMCkKICAgIC8vICkpCiAgICBjb25jYXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9mZi9jb250cmFjdC5weTo5MwogICAgLy8gdm90ZXNfYWdhaW5zdD1VSW50NjQoMCksCiAgICBieXRlY18wIC8vIDB4MDAwMDAwMDAwMDAwMDAwMAogICAgLy8gc21hcnRfY29udHJhY3RzL2ZmL2NvbnRyYWN0LnB5Ojg4LTk4CiAgICAvLyBmaW5hbF9taWxlc3RvbmVzLmFwcGVuZChNaWxlc3RvbmUoCiAgICAvLyAgICAgbmFtZT1taWxlc3RvbmUubmFtZSwKICAgIC8vICAgICBhbW91bnQ9bWlsZXN0b25lLmFtb3VudCwKICAgIC8vICAgICBwcm9vZl9saW5rPVN0cmluZygiIiksCiAgICAvLyAgICAgdm90ZXNfZm9yPVVJbnQ2NCgwKSwKICAgIC8vICAgICB2b3Rlc19hZ2FpbnN0PVVJbnQ2NCgwKSwKICAgIC8vICAgICB0b3RhbF92b3RlcnM9VUludDY0KDApLAogICAgLy8gICAgIGNsYWltZWQ9Qm9vbChGYWxzZSksCiAgICAvLyAgICAgcHJvb2Zfc3VibWl0dGVkX3RpbWU9VUludDY0KDApLAogICAgLy8gICAgIHZvdGluZ19lbmRfdGltZT1VSW50NjQoMCkKICAgIC8vICkpCiAgICBjb25jYXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9mZi9jb250cmFjdC5weTo5NAogICAgLy8gdG90YWxfdm90ZXJzPVVJbnQ2NCgwKSwKICAgIGJ5dGVjXzAgLy8gMHgwMDAwMDAwMDAwMDAwMDAwCiAgICAvLyBzbWFydF9jb250cmFjdHMvZmYvY29udHJhY3QucHk6ODgtOTgKICAgIC8vIGZpbmFsX21pbGVzdG9uZXMuYXBwZW5kKE1pbGVzdG9uZSgKICAgIC8vICAgICBuYW1lPW1pbGVzdG9uZS5uYW1lLAogICAgLy8gICAgIGFtb3VudD1taWxlc3RvbmUuYW1vdW50LAogICAgLy8gICAgIHByb29mX2xpbms9U3RyaW5nKCIiKSwKICAgIC8vICAgICB2b3Rlc19mb3I9VUludDY0KDApLAogICAgLy8gICAgIHZvdGVzX2FnYWluc3Q9VUludDY0KDApLAogICAgLy8gICAgIHRvdGFsX3ZvdGVycz1VSW50NjQoMCksCiAgICAvLyAgICAgY2xhaW1lZD1Cb29sKEZhbHNlKSwKICAgIC8vICAgICBwcm9vZl9zdWJtaXR0ZWRfdGltZT1VSW50NjQoMCksCiAgICAvLyAgICAgdm90aW5nX2VuZF90aW1lPVVJbnQ2NCgwKQogICAgLy8gKSkKICAgIGNvbmNhdAogICAgLy8gc21hcnRfY29udHJhY3RzL2ZmL2NvbnRyYWN0LnB5Ojk1CiAgICAvLyBjbGFpbWVkPUJvb2woRmFsc2UpLAogICAgYnl0ZWNfMiAvLyAweDAwCiAgICAvLyBzbWFydF9jb250cmFjdHMvZmYvY29udHJhY3QucHk6ODgtOTgKICAgIC8vIGZpbmFsX21pbGVzdG9uZXMuYXBwZW5kKE1pbGVzdG9uZSgKICAgIC8vICAgICBuYW1lPW1pbGVzdG9uZS5uYW1lLAogICAgLy8gICAgIGFtb3VudD1taWxlc3RvbmUuYW1vdW50LAogICAgLy8gICAgIHByb29mX2xpbms9U3RyaW5nKCIiKSwKICAgIC8vICAgICB2b3Rlc19mb3I9VUludDY0KDApLAogICAgLy8gICAgIHZvdGVzX2FnYWluc3Q9VUludDY0KDApLAogICAgLy8gICAgIHRvdGFsX3ZvdGVycz1VSW50NjQoMCksCiAgICAvLyAgICAgY2xhaW1lZD1Cb29sKEZhbHNlKSwKICAgIC8vICAgICBwcm9vZl9zdWJtaXR0ZWRfdGltZT1VSW50NjQoMCksCiAgICAvLyAgICAgdm90aW5nX2VuZF90aW1lPVVJbnQ2NCgwKQogICAgLy8gKSkKICAgIGNvbmNhdAogICAgLy8gc21hcnRfY29udHJhY3RzL2ZmL2NvbnRyYWN0LnB5Ojk2CiAgICAvLyBwcm9vZl9zdWJtaXR0ZWRfdGltZT1VSW50NjQoMCksCiAgICBieXRlY18wIC8vIDB4MDAwMDAwMDAwMDAwMDAwMAogICAgLy8gc21hcnRfY29udHJhY3RzL2ZmL2NvbnRyYWN0LnB5Ojg4LTk4CiAgICAvLyBmaW5hbF9taWxlc3RvbmVzLmFwcGVuZChNaWxlc3RvbmUoCiAgICAvLyAgICAgbmFtZT1taWxlc3RvbmUubmFtZSwKICAgIC8vICAgICBhbW91bnQ9bWlsZXN0b25lLmFtb3VudCwKICAgIC8vICAgICBwcm9vZl9saW5rPVN0cmluZygiIiksCiAgICAvLyAgICAgdm90ZXNfZm9yPVVJbnQ2NCgwKSwKICAgIC8vICAgICB2b3Rlc19hZ2FpbnN0PVVJbnQ2NCgwKSwKICAgIC8vICAgICB0b3RhbF92b3RlcnM9VUludDY0KDApLAogICAgLy8gICAgIGNsYWltZWQ9Qm9vbChGYWxzZSksCiAgICAvLyAgICAgcHJvb2Zfc3VibWl0dGVkX3RpbWU9VUludDY0KDApLAogICAgLy8gICAgIHZvdGluZ19lbmRfdGltZT1VSW50NjQoMCkKICAgIC8vICkpCiAgICBjb25jYXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9mZi9jb250cmFjdC5weTo5NwogICAgLy8gdm90aW5nX2VuZF90aW1lPVVJbnQ2NCgwKQogICAgYnl0ZWNfMCAvLyAweDAwMDAwMDAwMDAwMDAwMDAKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9mZi9jb250cmFjdC5weTo4OC05OAogICAgLy8gZmluYWxfbWlsZXN0b25lcy5hcHBlbmQoTWlsZXN0b25lKAogICAgLy8gICAgIG5hbWU9bWlsZXN0b25lLm5hbWUsCiAgICAvLyAgICAgYW1vdW50PW1pbGVzdG9uZS5hbW91bnQsCiAgICAvLyAgICAgcHJvb2ZfbGluaz1TdHJpbmcoIiIpLAogICAgLy8gICAgIHZvdGVzX2Zvcj1VSW50NjQoMCksCiAgICAvLyAgICAgdm90ZXNfYWdhaW5zdD1VSW50NjQoMCksCiAgICAvLyAgICAgdG90YWxfdm90ZXJzPVVJbnQ2NCgwKSwKICAgIC8vICAgICBjbGFpbWVkPUJvb2woRmFsc2UpLAogICAgLy8gICAgIHByb29mX3N1Ym1pdHRlZF90aW1lPVVJbnQ2NCgwKSwKICAgIC8vICAgICB2b3RpbmdfZW5kX3RpbWU9VUludDY0KDApCiAgICAvLyApKQogICAgY29uY2F0CiAgICBzd2FwCiAgICBjb25jYXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9mZi9jb250cmFjdC5weTo5MQogICAgLy8gcHJvb2ZfbGluaz1TdHJpbmcoIiIpLAogICAgYnl0ZWNfMSAvLyAweDAwMDAKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9mZi9jb250cmFjdC5weTo4OC05OAogICAgLy8gZmluYWxfbWlsZXN0b25lcy5hcHBlbmQoTWlsZXN0b25lKAogICAgLy8gICAgIG5hbWU9bWlsZXN0b25lLm5hbWUsCiAgICAvLyAgICAgYW1vdW50PW1pbGVzdG9uZS5hbW91bnQsCiAgICAvLyAgICAgcHJvb2ZfbGluaz1TdHJpbmcoIiIpLAogICAgLy8gICAgIHZvdGVzX2Zvcj1VSW50NjQoMCksCiAgICAvLyAgICAgdm90ZXNfYWdhaW5zdD1VSW50NjQoMCksCiAgICAvLyAgICAgdG90YWxfdm90ZXJzPVVJbnQ2NCgwKSwKICAgIC8vICAgICBjbGFpbWVkPUJvb2woRmFsc2UpLAogICAgLy8gICAgIHByb29mX3N1Ym1pdHRlZF90aW1lPVVJbnQ2NCgwKSwKICAgIC8vICAgICB2b3RpbmdfZW5kX3RpbWU9VUludDY0KDApCiAgICAvLyApKQogICAgY29uY2F0CiAgICBieXRlYyA2IC8vIDB4MDAwMgogICAgc3dhcAogICAgY29uY2F0CiAgICBmcmFtZV9kaWcgMQogICAgZHVwCiAgICBpbnRjXzEgLy8gMAogICAgZXh0cmFjdF91aW50MTYKICAgIHN3YXAKICAgIGV4dHJhY3QgMiAwCiAgICBpbnRjXzAgLy8gMQogICAgdW5jb3ZlciAzCiAgICBjYWxsc3ViIGR5bmFtaWNfYXJyYXlfY29uY2F0X2R5bmFtaWNfZWxlbWVudAogICAgZnJhbWVfYnVyeSAxCiAgICAvLyBzbWFydF9jb250cmFjdHMvZmYvY29udHJhY3QucHk6OTkKICAgIC8vIG1pbGVzdG9uZXNfdG90YWwgPSBtaWxlc3RvbmVzX3RvdGFsICsgbWlsZXN0b25lLmFtb3VudC5uYXRpdmUKICAgIGludGNfMiAvLyAyCiAgICBleHRyYWN0X3VpbnQ2NAogICAgZnJhbWVfZGlnIDIKICAgICsKICAgIGZyYW1lX2J1cnkgMgogICAgYiBjcmVhdGVfcHJvcG9zYWxfZm9yX2hlYWRlckAxCgpjcmVhdGVfcHJvcG9zYWxfYWZ0ZXJfZm9yQDQ6CiAgICAvLyBzbWFydF9jb250cmFjdHMvZmYvY29udHJhY3QucHk6MTAxCiAgICAvLyBhc3NlcnQgYW1vdW50X3JlcXVpcmVkID09IG1pbGVzdG9uZXNfdG90YWwsICJUb3RhbCBtaWxlc3RvbmUgYW1vdW50IG11c3QgZXF1YWwgdGhlIHJlcXVpcmVkIGFtb3VudCIKICAgIGZyYW1lX2RpZyAyCiAgICBpdG9iCiAgICBmcmFtZV9kaWcgLTMKICAgIGI9PQogICAgYXNzZXJ0IC8vIFRvdGFsIG1pbGVzdG9uZSBhbW91bnQgbXVzdCBlcXVhbCB0aGUgcmVxdWlyZWQgYW1vdW50CiAgICAvLyBzbWFydF9jb250cmFjdHMvZmYvY29udHJhY3QucHk6MTAyCiAgICAvLyBhc3NlcnQgYW1vdW50X3JlcXVpcmVkID4gMCwgIkFtb3VudCByZXF1aXJlZCBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAwIgogICAgZnJhbWVfZGlnIC0zCiAgICBieXRlY18wIC8vIDB4MDAwMDAwMDAwMDAwMDAwMAogICAgYj4KICAgIGFzc2VydCAvLyBBbW91bnQgcmVxdWlyZWQgbXVzdCBiZSBncmVhdGVyIHRoYW4gMAogICAgLy8gc21hcnRfY29udHJhY3RzL2ZmL2NvbnRyYWN0LnB5OjEwMwogICAgLy8gYXNzZXJ0IGZpbmFsX21pbGVzdG9uZXMubGVuZ3RoID4gMCwgIkF0IGxlYXN0IG9uZSBtaWxlc3RvbmUgaXMgcmVxdWlyZWQiCiAgICBmcmFtZV9kaWcgMQogICAgZHVwCiAgICBpbnRjXzEgLy8gMAogICAgZXh0cmFjdF91aW50MTYKICAgIGR1cAogICAgYXNzZXJ0IC8vIEF0IGxlYXN0IG9uZSBtaWxlc3RvbmUgaXMgcmVxdWlyZWQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9mZi9jb250cmFjdC5weToxMDQKICAgIC8vIGFzc2VydCBmaW5hbF9taWxlc3RvbmVzLmxlbmd0aCA8PSA1LCAiTWF4aW11bSBvZiA1IG1pbGVzdG9uZXMgYWxsb3dlZCIKICAgIHB1c2hpbnQgNSAvLyA1CiAgICA8PQogICAgYXNzZXJ0IC8vIE1heGltdW0gb2YgNSBtaWxlc3RvbmVzIGFsbG93ZWQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9mZi9jb250cmFjdC5weToxMDUKICAgIC8vIGFzc2VydCBuYW1lLm5hdGl2ZS5ieXRlcy5sZW5ndGggPiAwLCAiUHJvcG9zYWwgbmFtZSBjYW5ub3QgYmUgZW1wdHkiCiAgICBmcmFtZV9kaWcgLTcKICAgIGV4dHJhY3QgMiAwCiAgICBsZW4KICAgIGFzc2VydCAvLyBQcm9wb3NhbCBuYW1lIGNhbm5vdCBiZSBlbXB0eQogICAgLy8gc21hcnRfY29udHJhY3RzL2ZmL2NvbnRyYWN0LnB5OjEwNgogICAgLy8gYXNzZXJ0IHRpdGxlLm5hdGl2ZS5ieXRlcy5sZW5ndGggPiAwLCAiUHJvcG9zYWwgdGl0bGUgY2Fubm90IGJlIGVtcHR5IgogICAgZnJhbWVfZGlnIC02CiAgICBleHRyYWN0IDIgMAogICAgbGVuCiAgICBhc3NlcnQgLy8gUHJvcG9zYWwgdGl0bGUgY2Fubm90IGJlIGVtcHR5CiAgICAvLyBzbWFydF9jb250cmFjdHMvZmYvY29udHJhY3QucHk6MTA3CiAgICAvLyBhc3NlcnQgZGVzY3JpcHRpb24ubmF0aXZlLmJ5dGVzLmxlbmd0aCA+IDAsICJQcm9wb3NhbCBkZXNjcmlwdGlvbiBjYW5ub3QgYmUgZW1wdHkiCiAgICBmcmFtZV9kaWcgLTUKICAgIGV4dHJhY3QgMiAwCiAgICBsZW4KICAgIGFzc2VydCAvLyBQcm9wb3NhbCBkZXNjcmlwdGlvbiBjYW5ub3QgYmUgZW1wdHkKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9mZi9jb250cmFjdC5weToxMTUKICAgIC8vIGNyZWF0ZWRfYnk9QWRkcmVzcyhUeG4uc2VuZGVyKSwKICAgIHR4biBTZW5kZXIKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9mZi9jb250cmFjdC5weToxMjEKICAgIC8vIGNyZWF0ZWRfYXQ9VUludDY0KEdsb2JhbC5sYXRlc3RfdGltZXN0YW1wKQogICAgZ2xvYmFsIExhdGVzdFRpbWVzdGFtcAogICAgaXRvYgogICAgLy8gc21hcnRfY29udHJhY3RzL2ZmL2NvbnRyYWN0LnB5OjEwOS0xMjIKICAgIC8vIG5ld19wcm9wb3NhbCA9IFByb3Bvc2FsKAogICAgLy8gICAgIG5hbWU9bmFtZSwKICAgIC8vICAgICB0aXRsZT10aXRsZSwKICAgIC8vICAgICBkZXNjcmlwdGlvbj1kZXNjcmlwdGlvbiwKICAgIC8vICAgICBjYXRlZ29yeT1jYXRlZ29yeSwKICAgIC8vICAgICBhbW91bnRfcmVxdWlyZWQ9YW1vdW50X3JlcXVpcmVkLAogICAgLy8gICAgIGNyZWF0ZWRfYnk9QWRkcmVzcyhUeG4uc2VuZGVyKSwKICAgIC8vICAgICBhbW91bnRfcmFpc2VkPVVJbnQ2NCgwKSwKICAgIC8vICAgICBub19vZl9kb25hdGlvbnM9VUludDY0KDApLAogICAgLy8gICAgIG5vX29mX3VuaXF1ZV9kb25vcnM9VUludDY0KDApLAogICAgLy8gICAgIG1pbGVzdG9uZXM9ZmluYWxfbWlsZXN0b25lcy5jb3B5KCksCiAgICAvLyAgICAgY3VycmVudF9taWxlc3RvbmU9VUludDY0KDApLAogICAgLy8gICAgIGNyZWF0ZWRfYXQ9VUludDY0KEdsb2JhbC5sYXRlc3RfdGltZXN0YW1wKQogICAgLy8gKQogICAgZnJhbWVfZGlnIC03CiAgICBsZW4KICAgIHB1c2hpbnQgOTAgLy8gOTAKICAgICsKICAgIGR1cAogICAgaXRvYgogICAgZXh0cmFjdCA2IDIKICAgIHB1c2hieXRlcyAweDAwNWEKICAgIHN3YXAKICAgIGNvbmNhdAogICAgZnJhbWVfZGlnIC02CiAgICBsZW4KICAgIHVuY292ZXIgMgogICAgKwogICAgZHVwCiAgICBpdG9iCiAgICBleHRyYWN0IDYgMgogICAgdW5jb3ZlciAyCiAgICBzd2FwCiAgICBjb25jYXQKICAgIGZyYW1lX2RpZyAtNQogICAgbGVuCiAgICB1bmNvdmVyIDIKICAgICsKICAgIGR1cAogICAgaXRvYgogICAgZXh0cmFjdCA2IDIKICAgIHVuY292ZXIgMgogICAgc3dhcAogICAgY29uY2F0CiAgICBmcmFtZV9kaWcgLTQKICAgIGxlbgogICAgdW5jb3ZlciAyCiAgICArCiAgICBzd2FwCiAgICBmcmFtZV9kaWcgLTMKICAgIGNvbmNhdAogICAgdW5jb3ZlciAzCiAgICBjb25jYXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9mZi9jb250cmFjdC5weToxMTYKICAgIC8vIGFtb3VudF9yYWlzZWQ9VUludDY0KDApLAogICAgYnl0ZWNfMCAvLyAweDAwMDAwMDAwMDAwMDAwMDAKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9mZi9jb250cmFjdC5weToxMDktMTIyCiAgICAvLyBuZXdfcHJvcG9zYWwgPSBQcm9wb3NhbCgKICAgIC8vICAgICBuYW1lPW5hbWUsCiAgICAvLyAgICAgdGl0bGU9dGl0bGUsCiAgICAvLyAgICAgZGVzY3JpcHRpb249ZGVzY3JpcHRpb24sCiAgICAvLyAgICAgY2F0ZWdvcnk9Y2F0ZWdvcnksCiAgICAvLyAgICAgYW1vdW50X3JlcXVpcmVkPWFtb3VudF9yZXF1aXJlZCwKICAgIC8vICAgICBjcmVhdGVkX2J5PUFkZHJlc3MoVHhuLnNlbmRlciksCiAgICAvLyAgICAgYW1vdW50X3JhaXNlZD1VSW50NjQoMCksCiAgICAvLyAgICAgbm9fb2ZfZG9uYXRpb25zPVVJbnQ2NCgwKSwKICAgIC8vICAgICBub19vZl91bmlxdWVfZG9ub3JzPVVJbnQ2NCgwKSwKICAgIC8vICAgICBtaWxlc3RvbmVzPWZpbmFsX21pbGVzdG9uZXMuY29weSgpLAogICAgLy8gICAgIGN1cnJlbnRfbWlsZXN0b25lPVVJbnQ2NCgwKSwKICAgIC8vICAgICBjcmVhdGVkX2F0PVVJbnQ2NChHbG9iYWwubGF0ZXN0X3RpbWVzdGFtcCkKICAgIC8vICkKICAgIGNvbmNhdAogICAgc3dhcAogICAgaXRvYgogICAgZXh0cmFjdCA2IDIKICAgIGNvbmNhdAogICAgLy8gc21hcnRfY29udHJhY3RzL2ZmL2NvbnRyYWN0LnB5OjExNwogICAgLy8gbm9fb2ZfZG9uYXRpb25zPVVJbnQ2NCgwKSwKICAgIGJ5dGVjXzAgLy8gMHgwMDAwMDAwMDAwMDAwMDAwCiAgICAvLyBzbWFydF9jb250cmFjdHMvZmYvY29udHJhY3QucHk6MTA5LTEyMgogICAgLy8gbmV3X3Byb3Bvc2FsID0gUHJvcG9zYWwoCiAgICAvLyAgICAgbmFtZT1uYW1lLAogICAgLy8gICAgIHRpdGxlPXRpdGxlLAogICAgLy8gICAgIGRlc2NyaXB0aW9uPWRlc2NyaXB0aW9uLAogICAgLy8gICAgIGNhdGVnb3J5PWNhdGVnb3J5LAogICAgLy8gICAgIGFtb3VudF9yZXF1aXJlZD1hbW91bnRfcmVxdWlyZWQsCiAgICAvLyAgICAgY3JlYXRlZF9ieT1BZGRyZXNzKFR4bi5zZW5kZXIpLAogICAgLy8gICAgIGFtb3VudF9yYWlzZWQ9VUludDY0KDApLAogICAgLy8gICAgIG5vX29mX2RvbmF0aW9ucz1VSW50NjQoMCksCiAgICAvLyAgICAgbm9fb2ZfdW5pcXVlX2Rvbm9ycz1VSW50NjQoMCksCiAgICAvLyAgICAgbWlsZXN0b25lcz1maW5hbF9taWxlc3RvbmVzLmNvcHkoKSwKICAgIC8vICAgICBjdXJyZW50X21pbGVzdG9uZT1VSW50NjQoMCksCiAgICAvLyAgICAgY3JlYXRlZF9hdD1VSW50NjQoR2xvYmFsLmxhdGVzdF90aW1lc3RhbXApCiAgICAvLyApCiAgICBjb25jYXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9mZi9jb250cmFjdC5weToxMTgKICAgIC8vIG5vX29mX3VuaXF1ZV9kb25vcnM9VUludDY0KDApLAogICAgYnl0ZWNfMCAvLyAweDAwMDAwMDAwMDAwMDAwMDAKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9mZi9jb250cmFjdC5weToxMDktMTIyCiAgICAvLyBuZXdfcHJvcG9zYWwgPSBQcm9wb3NhbCgKICAgIC8vICAgICBuYW1lPW5hbWUsCiAgICAvLyAgICAgdGl0bGU9dGl0bGUsCiAgICAvLyAgICAgZGVzY3JpcHRpb249ZGVzY3JpcHRpb24sCiAgICAvLyAgICAgY2F0ZWdvcnk9Y2F0ZWdvcnksCiAgICAvLyAgICAgYW1vdW50X3JlcXVpcmVkPWFtb3VudF9yZXF1aXJlZCwKICAgIC8vICAgICBjcmVhdGVkX2J5PUFkZHJlc3MoVHhuLnNlbmRlciksCiAgICAvLyAgICAgYW1vdW50X3JhaXNlZD1VSW50NjQoMCksCiAgICAvLyAgICAgbm9fb2ZfZG9uYXRpb25zPVVJbnQ2NCgwKSwKICAgIC8vICAgICBub19vZl91bmlxdWVfZG9ub3JzPVVJbnQ2NCgwKSwKICAgIC8vICAgICBtaWxlc3RvbmVzPWZpbmFsX21pbGVzdG9uZXMuY29weSgpLAogICAgLy8gICAgIGN1cnJlbnRfbWlsZXN0b25lPVVJbnQ2NCgwKSwKICAgIC8vICAgICBjcmVhdGVkX2F0PVVJbnQ2NChHbG9iYWwubGF0ZXN0X3RpbWVzdGFtcCkKICAgIC8vICkKICAgIGNvbmNhdAogICAgLy8gc21hcnRfY29udHJhY3RzL2ZmL2NvbnRyYWN0LnB5OjEyMAogICAgLy8gY3VycmVudF9taWxlc3RvbmU9VUludDY0KDApLAogICAgYnl0ZWNfMCAvLyAweDAwMDAwMDAwMDAwMDAwMDAKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9mZi9jb250cmFjdC5weToxMDktMTIyCiAgICAvLyBuZXdfcHJvcG9zYWwgPSBQcm9wb3NhbCgKICAgIC8vICAgICBuYW1lPW5hbWUsCiAgICAvLyAgICAgdGl0bGU9dGl0bGUsCiAgICAvLyAgICAgZGVzY3JpcHRpb249ZGVzY3JpcHRpb24sCiAgICAvLyAgICAgY2F0ZWdvcnk9Y2F0ZWdvcnksCiAgICAvLyAgICAgYW1vdW50X3JlcXVpcmVkPWFtb3VudF9yZXF1aXJlZCwKICAgIC8vICAgICBjcmVhdGVkX2J5PUFkZHJlc3MoVHhuLnNlbmRlciksCiAgICAvLyAgICAgYW1vdW50X3JhaXNlZD1VSW50NjQoMCksCiAgICAvLyAgICAgbm9fb2ZfZG9uYXRpb25zPVVJbnQ2NCgwKSwKICAgIC8vICAgICBub19vZl91bmlxdWVfZG9ub3JzPVVJbnQ2NCgwKSwKICAgIC8vICAgICBtaWxlc3RvbmVzPWZpbmFsX21pbGVzdG9uZXMuY29weSgpLAogICAgLy8gICAgIGN1cnJlbnRfbWlsZXN0b25lPVVJbnQ2NCgwKSwKICAgIC8vICAgICBjcmVhdGVkX2F0PVVJbnQ2NChHbG9iYWwubGF0ZXN0X3RpbWVzdGFtcCkKICAgIC8vICkKICAgIGNvbmNhdAogICAgc3dhcAogICAgY29uY2F0CiAgICBmcmFtZV9kaWcgLTcKICAgIGNvbmNhdAogICAgZnJhbWVfZGlnIC02CiAgICBjb25jYXQKICAgIGZyYW1lX2RpZyAtNQogICAgY29uY2F0CiAgICBmcmFtZV9kaWcgLTQKICAgIGNvbmNhdAogICAgc3dhcAogICAgY29uY2F0CiAgICAvLyBzbWFydF9jb250cmFjdHMvZmYvY29udHJhY3QucHk6MTI0CiAgICAvLyBzZWxmLnByb3Bvc2Fsc1tpZHhdID0gbmV3X3Byb3Bvc2FsLmNvcHkoKQogICAgYnl0ZWNfMyAvLyAicHJvcG9zYWxzIgogICAgZnJhbWVfZGlnIDAKICAgIGR1cAogICAgY292ZXIgMwogICAgY29uY2F0CiAgICBkdXAKICAgIGJveF9kZWwKICAgIHBvcAogICAgc3dhcAogICAgYm94X3B1dAogICAgLy8gc21hcnRfY29udHJhY3RzL2ZmL2NvbnRyYWN0LnB5OjEyNQogICAgLy8gc2VsZi5taWxlc3RvbmVWb3Rlc1tpZHhdID0gRHluYW1pY0FycmF5W0FkZHJlc3NdKCkKICAgIGJ5dGVjIDcgLy8gIm1pbGVzdG9uZVZvdGVzXyIKICAgIHN3YXAKICAgIGNvbmNhdAogICAgZHVwCiAgICBib3hfZGVsCiAgICBwb3AKICAgIGJ5dGVjXzEgLy8gMHgwMDAwCiAgICBib3hfcHV0CiAgICAvLyBzbWFydF9jb250cmFjdHMvZmYvY29udHJhY3QucHk6MTI2CiAgICAvLyBzZWxmLm5vX29mX3Byb3Bvc2Fscy52YWx1ZSA9IFVJbnQ2NChzZWxmLm5vX29mX3Byb3Bvc2Fscy52YWx1ZS5uYXRpdmUgKyAxKQogICAgaW50Y18xIC8vIDAKICAgIGJ5dGVjIDQgLy8gIm5vT2ZQcm9wb3NhbHMiCiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgYXNzZXJ0IC8vIGNoZWNrIHNlbGYubm9fb2ZfcHJvcG9zYWxzIGV4aXN0cwogICAgYnRvaQogICAgaW50Y18wIC8vIDEKICAgICsKICAgIGl0b2IKICAgIGJ5dGVjIDQgLy8gIm5vT2ZQcm9wb3NhbHMiCiAgICBzd2FwCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgcmV0c3ViCgoKLy8gc21hcnRfY29udHJhY3RzLmZmLmNvbnRyYWN0LlByb3Bvc2FsQ29udHJhY3QuZG9uYXRlX3Byb3Bvc2FsKHByb3Bvc2FsX2lkOiBieXRlcywgcGF5bWVudDogdWludDY0KSAtPiB2b2lkOgpkb25hdGVfcHJvcG9zYWw6CiAgICAvLyBzbWFydF9jb250cmFjdHMvZmYvY29udHJhY3QucHk6MTI5LTEzMAogICAgLy8gQGFiaW1ldGhvZCgpCiAgICAvLyBkZWYgZG9uYXRlX3Byb3Bvc2FsKHNlbGYsIHByb3Bvc2FsX2lkOiBVSW50NjQsIHBheW1lbnQ6IGd0eG4uUGF5bWVudFRyYW5zYWN0aW9uKSAtPiBOb25lOgogICAgcHJvdG8gMiAwCiAgICAvLyBzbWFydF9jb250cmFjdHMvZmYvY29udHJhY3QucHk6MTMxCiAgICAvLyBhc3NlcnQgcHJvcG9zYWxfaWQgaW4gc2VsZi5wcm9wb3NhbHMsICJQcm9wb3NhbCBkb2Vzbid0IGV4aXN0IgogICAgYnl0ZWNfMyAvLyAicHJvcG9zYWxzIgogICAgZnJhbWVfZGlnIC0yCiAgICBjb25jYXQKICAgIGR1cG4gMgogICAgYm94X2xlbgogICAgYnVyeSAxCiAgICBhc3NlcnQgLy8gUHJvcG9zYWwgZG9lc24ndCBleGlzdAogICAgLy8gc21hcnRfY29udHJhY3RzL2ZmL2NvbnRyYWN0LnB5OjEzMgogICAgLy8gcHJvcCA9IHNlbGYucHJvcG9zYWxzW3Byb3Bvc2FsX2lkXS5jb3B5KCkKICAgIGJveF9nZXQKICAgIHN3YXAKICAgIGR1cAogICAgdW5jb3ZlciAyCiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi5wcm9wb3NhbHMgZW50cnkgZXhpc3RzCiAgICAvLyBzbWFydF9jb250cmFjdHMvZmYvY29udHJhY3QucHk6MTMzCiAgICAvLyBhc3NlcnQgcHJvcC5hbW91bnRfcmFpc2VkIDwgcHJvcC5hbW91bnRfcmVxdWlyZWQsICJHb2FsIGFscmVhZHkgcmVhY2hlZCIKICAgIGR1cAogICAgZXh0cmFjdCA0OCA4IC8vIG9uIGVycm9yOiBJbmRleCBhY2Nlc3MgaXMgb3V0IG9mIGJvdW5kcwogICAgc3dhcAogICAgZXh0cmFjdCA4IDggLy8gb24gZXJyb3I6IEluZGV4IGFjY2VzcyBpcyBvdXQgb2YgYm91bmRzCiAgICBiPAogICAgYXNzZXJ0IC8vIEdvYWwgYWxyZWFkeSByZWFjaGVkCiAgICAvLyBzbWFydF9jb250cmFjdHMvZmYvY29udHJhY3QucHk6MTM1CiAgICAvLyBhbW91bnQgPSBwYXltZW50LmFtb3VudAogICAgZnJhbWVfZGlnIC0xCiAgICBndHhucyBBbW91bnQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9mZi9jb250cmFjdC5weToxMzYKICAgIC8vIGRvbm9yID0gcGF5bWVudC5zZW5kZXIKICAgIGZyYW1lX2RpZyAtMQogICAgZ3R4bnMgU2VuZGVyCiAgICAvLyBzbWFydF9jb250cmFjdHMvZmYvY29udHJhY3QucHk6MTM3CiAgICAvLyBkb25hdGlvbl9ib3hfa2V5ID0gRG9uYXRpb25Cb3hLZXkocHJvcG9zYWxfaWQ9cHJvcG9zYWxfaWQsIGRvbm9yPUFkZHJlc3MoZG9ub3IpKQogICAgZnJhbWVfZGlnIC0yCiAgICBzd2FwCiAgICBjb25jYXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9mZi9jb250cmFjdC5weToxMzgKICAgIC8vIGFzc2VydCBwYXltZW50LnJlY2VpdmVyID09IEdsb2JhbC5jdXJyZW50X2FwcGxpY2F0aW9uX2FkZHJlc3MsICJQYXltZW50IG11c3QgYmUgc2VudCB0byB0aGUgY29udHJhY3QgYWRkcmVzcyIKICAgIGZyYW1lX2RpZyAtMQogICAgZ3R4bnMgUmVjZWl2ZXIKICAgIGdsb2JhbCBDdXJyZW50QXBwbGljYXRpb25BZGRyZXNzCiAgICA9PQogICAgYXNzZXJ0IC8vIFBheW1lbnQgbXVzdCBiZSBzZW50IHRvIHRoZSBjb250cmFjdCBhZGRyZXNzCiAgICAvLyBzbWFydF9jb250cmFjdHMvZmYvY29udHJhY3QucHk6MTQwCiAgICAvLyBpZiBkb25hdGlvbl9ib3hfa2V5IG5vdCBpbiBzZWxmLmRvbmF0aW9uczoKICAgIGJ5dGVjIDggLy8gImRvbmF0aW9ucyIKICAgIHN3YXAKICAgIGNvbmNhdAogICAgZHVwCiAgICBib3hfbGVuCiAgICBidXJ5IDEKICAgIGJueiBkb25hdGVfcHJvcG9zYWxfZWxzZV9ib2R5QDIKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9mZi9jb250cmFjdC5weToxNDEKICAgIC8vIHByb3Aubm9fb2ZfdW5pcXVlX2Rvbm9ycyA9IFVJbnQ2NChwcm9wLm5vX29mX3VuaXF1ZV9kb25vcnMubmF0aXZlICsgMSkKICAgIGZyYW1lX2RpZyAxCiAgICBkdXAKICAgIHB1c2hpbnQgNjYgLy8gNjYKICAgIGV4dHJhY3RfdWludDY0CiAgICBpbnRjXzAgLy8gMQogICAgKwogICAgaXRvYgogICAgcmVwbGFjZTIgNjYKICAgIGZyYW1lX2J1cnkgMQogICAgLy8gc21hcnRfY29udHJhY3RzL2ZmL2NvbnRyYWN0LnB5OjE0MgogICAgLy8gc2VsZi5kb25hdGlvbnNbZG9uYXRpb25fYm94X2tleV0gPSBVSW50NjQoYW1vdW50KQogICAgZnJhbWVfZGlnIDIKICAgIGl0b2IKICAgIGJveF9wdXQKCmRvbmF0ZV9wcm9wb3NhbF9hZnRlcl9pZl9lbHNlQDM6CiAgICAvLyBzbWFydF9jb250cmFjdHMvZmYvY29udHJhY3QucHk6MTQ2CiAgICAvLyBwcm9wLm5vX29mX2RvbmF0aW9ucyA9IFVJbnQ2NChwcm9wLm5vX29mX2RvbmF0aW9ucy5uYXRpdmUgKyAxKQogICAgZnJhbWVfZGlnIDEKICAgIGR1cAogICAgcHVzaGludCA1OCAvLyA1OAogICAgZXh0cmFjdF91aW50NjQKICAgIGludGNfMCAvLyAxCiAgICArCiAgICBpdG9iCiAgICByZXBsYWNlMiA1OAogICAgLy8gc21hcnRfY29udHJhY3RzL2ZmL2NvbnRyYWN0LnB5OjE0NwogICAgLy8gcHJvcC5hbW91bnRfcmFpc2VkID0gVUludDY0KHByb3AuYW1vdW50X3JhaXNlZC5uYXRpdmUgKyBhbW91bnQpCiAgICBkdXAKICAgIHB1c2hpbnQgNDggLy8gNDgKICAgIGV4dHJhY3RfdWludDY0CiAgICBmcmFtZV9kaWcgMgogICAgKwogICAgaXRvYgogICAgcmVwbGFjZTIgNDgKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9mZi9jb250cmFjdC5weToxNDgKICAgIC8vIHNlbGYucHJvcG9zYWxzW3Byb3Bvc2FsX2lkXSA9IHByb3AuY29weSgpCiAgICBmcmFtZV9kaWcgMAogICAgZHVwCiAgICBib3hfZGVsCiAgICBwb3AKICAgIHN3YXAKICAgIGJveF9wdXQKICAgIHJldHN1YgoKZG9uYXRlX3Byb3Bvc2FsX2Vsc2VfYm9keUAyOgogICAgLy8gc21hcnRfY29udHJhY3RzL2ZmL2NvbnRyYWN0LnB5OjE0NAogICAgLy8gc2VsZi5kb25hdGlvbnNbZG9uYXRpb25fYm94X2tleV0gPSBVSW50NjQoc2VsZi5kb25hdGlvbnNbZG9uYXRpb25fYm94X2tleV0ubmF0aXZlICsgYW1vdW50KQogICAgZHVwCiAgICBib3hfZ2V0CiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi5kb25hdGlvbnMgZW50cnkgZXhpc3RzCiAgICBidG9pCiAgICBmcmFtZV9kaWcgMgogICAgKwogICAgaXRvYgogICAgYm94X3B1dAogICAgYiBkb25hdGVfcHJvcG9zYWxfYWZ0ZXJfaWZfZWxzZUAzCgoKLy8gc21hcnRfY29udHJhY3RzLmZmLmNvbnRyYWN0LlByb3Bvc2FsQ29udHJhY3Quc3VibWl0X3Byb29mKHByb3Bvc2FsX2lkOiBieXRlcywgcHJvb2ZfbGluazogYnl0ZXMpIC0+IHZvaWQ6CnN1Ym1pdF9wcm9vZjoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9mZi9jb250cmFjdC5weToxNTEtMTUyCiAgICAvLyBAYWJpbWV0aG9kKCkKICAgIC8vIGRlZiBzdWJtaXRfcHJvb2Yoc2VsZiwgcHJvcG9zYWxfaWQ6IFVJbnQ2NCwgcHJvb2ZfbGluazogU3RyaW5nKSAtPiBOb25lOgogICAgcHJvdG8gMiAwCiAgICBwdXNoYnl0ZXMgIiIKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9mZi9jb250cmFjdC5weToxNTMKICAgIC8vIGFzc2VydCBwcm9wb3NhbF9pZCBpbiBzZWxmLnByb3Bvc2FscywgIlByb3Bvc2FsIGRvZXNuJ3QgZXhpc3QiCiAgICBieXRlY18zIC8vICJwcm9wb3NhbHMiCiAgICBmcmFtZV9kaWcgLTIKICAgIGNvbmNhdAogICAgZHVwbiAyCiAgICBib3hfbGVuCiAgICBidXJ5IDEKICAgIGFzc2VydCAvLyBQcm9wb3NhbCBkb2Vzbid0IGV4aXN0CiAgICAvLyBzbWFydF9jb250cmFjdHMvZmYvY29udHJhY3QucHk6MTU0CiAgICAvLyBwcm9wID0gc2VsZi5wcm9wb3NhbHNbcHJvcG9zYWxfaWRdLmNvcHkoKQogICAgYm94X2dldAogICAgc3dhcAogICAgZHVwCiAgICB1bmNvdmVyIDIKICAgIGFzc2VydCAvLyBjaGVjayBzZWxmLnByb3Bvc2FscyBlbnRyeSBleGlzdHMKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9mZi9jb250cmFjdC5weToxNTUKICAgIC8vIGFzc2VydCBwcm9wLmNyZWF0ZWRfYnkgPT0gQWRkcmVzcyhUeG4uc2VuZGVyKSwgIk9ubHkgY3JlYXRvciBjYW4gc3VibWl0IHByb29mIgogICAgZHVwCiAgICBleHRyYWN0IDE2IDMyIC8vIG9uIGVycm9yOiBJbmRleCBhY2Nlc3MgaXMgb3V0IG9mIGJvdW5kcwogICAgdHhuIFNlbmRlcgogICAgPT0KICAgIGFzc2VydCAvLyBPbmx5IGNyZWF0b3IgY2FuIHN1Ym1pdCBwcm9vZgogICAgLy8gc21hcnRfY29udHJhY3RzL2ZmL2NvbnRyYWN0LnB5OjE1NgogICAgLy8gYXNzZXJ0IHByb3AuYW1vdW50X3JhaXNlZCA+PSBwcm9wLmFtb3VudF9yZXF1aXJlZCwgIkdvYWwgbm90IHJlYWNoZWQgeWV0IgogICAgZHVwCiAgICBleHRyYWN0IDQ4IDggLy8gb24gZXJyb3I6IEluZGV4IGFjY2VzcyBpcyBvdXQgb2YgYm91bmRzCiAgICBkaWcgMQogICAgZXh0cmFjdCA4IDggLy8gb24gZXJyb3I6IEluZGV4IGFjY2VzcyBpcyBvdXQgb2YgYm91bmRzCiAgICBiPj0KICAgIGFzc2VydCAvLyBHb2FsIG5vdCByZWFjaGVkIHlldAogICAgLy8gc21hcnRfY29udHJhY3RzL2ZmL2NvbnRyYWN0LnB5OjE1NwogICAgLy8gYXNzZXJ0IHByb3AuY3VycmVudF9taWxlc3RvbmUubmF0aXZlIDwgcHJvcC5taWxlc3RvbmVzLmxlbmd0aCwgIkFsbCBtaWxlc3RvbmVzIGFscmVhZHkgY29tcGxldGVkIgogICAgZHVwCiAgICBwdXNoaW50IDc0IC8vIDc0CiAgICBleHRyYWN0X3VpbnQ2NAogICAgZHVwCiAgICB1bmNvdmVyIDIKICAgIGR1cAogICAgaW50Y18zIC8vIDU2CiAgICBleHRyYWN0X3VpbnQxNgogICAgZHVwCiAgICBjb3ZlciAyCiAgICBjb3ZlciAzCiAgICBkdXAKICAgIGxlbgogICAgc3dhcAogICAgY292ZXIgMgogICAgc3Vic3RyaW5nMwogICAgZHVwCiAgICBjb3ZlciAyCiAgICBpbnRjXzEgLy8gMAogICAgZXh0cmFjdF91aW50MTYKICAgIGR1cAogICAgY292ZXIgMgogICAgPAogICAgYXNzZXJ0IC8vIEFsbCBtaWxlc3RvbmVzIGFscmVhZHkgY29tcGxldGVkCiAgICAvLyBzbWFydF9jb250cmFjdHMvZmYvY29udHJhY3QucHk6MTU5CiAgICAvLyBjdXJyZW50X3RpbWUgPSBHbG9iYWwubGF0ZXN0X3RpbWVzdGFtcAogICAgZ2xvYmFsIExhdGVzdFRpbWVzdGFtcAogICAgLy8gc21hcnRfY29udHJhY3RzL2ZmL2NvbnRyYWN0LnB5OjE2MAogICAgLy8gbmV3X21pbGVzdG9uZXMgPSBEeW5hbWljQXJyYXlbTWlsZXN0b25lXSgpCiAgICBieXRlY18xIC8vIDB4MDAwMAogICAgLy8gc21hcnRfY29udHJhY3RzL2ZmL2NvbnRyYWN0LnB5OjE2MQogICAgLy8gZm9yIGlkeCBpbiB1cmFuZ2UocHJvcC5taWxlc3RvbmVzLmxlbmd0aCk6CiAgICBpbnRjXzEgLy8gMAoKc3VibWl0X3Byb29mX2Zvcl9oZWFkZXJAMToKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9mZi9jb250cmFjdC5weToxNjEKICAgIC8vIGZvciBpZHggaW4gdXJhbmdlKHByb3AubWlsZXN0b25lcy5sZW5ndGgpOgogICAgZnJhbWVfZGlnIDkKICAgIGZyYW1lX2RpZyA2CiAgICA8CiAgICBieiBzdWJtaXRfcHJvb2ZfYWZ0ZXJfZm9yQDcKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9mZi9jb250cmFjdC5weToxNjIKICAgIC8vIG1pbGVzdG9uZSA9IHByb3AubWlsZXN0b25lc1tpZHhdLmNvcHkoKQogICAgZnJhbWVfZGlnIDUKICAgIGV4dHJhY3QgMiAwCiAgICBmcmFtZV9kaWcgOQogICAgZHVwCiAgICBjb3ZlciAyCiAgICBpbnRjXzIgLy8gMgogICAgKgogICAgZGlnIDEKICAgIHN3YXAKICAgIGV4dHJhY3RfdWludDE2CiAgICBkaWcgMgogICAgaW50Y18wIC8vIDEKICAgICsKICAgIGR1cAogICAgZnJhbWVfYnVyeSAwCiAgICBmcmFtZV9kaWcgNgogICAgZGlnIDEKICAgIC0gLy8gb24gZXJyb3I6IEluZGV4IGFjY2VzcyBpcyBvdXQgb2YgYm91bmRzCiAgICBkaWcgMwogICAgbGVuCiAgICB1bmNvdmVyIDIKICAgIGludGNfMiAvLyAyCiAgICAqCiAgICBkaWcgNAogICAgc3dhcAogICAgZXh0cmFjdF91aW50MTYKICAgIHVuY292ZXIgMgogICAgc2VsZWN0CiAgICBzdWJzdHJpbmczCiAgICBzd2FwCiAgICAvLyBzbWFydF9jb250cmFjdHMvZmYvY29udHJhY3QucHk6MTYzCiAgICAvLyBpZiBpZHggPT0gcHJvcC5jdXJyZW50X21pbGVzdG9uZS5uYXRpdmU6CiAgICBmcmFtZV9kaWcgMwogICAgPT0KICAgIGJ6IHN1Ym1pdF9wcm9vZl9lbHNlX2JvZHlANAogICAgLy8gc21hcnRfY29udHJhY3RzL2ZmL2NvbnRyYWN0LnB5OjE2NAogICAgLy8gbWlsZXN0b25lLnByb29mX2xpbmsgPSBwcm9vZl9saW5rCiAgICBkdXAKICAgIHB1c2hpbnQgMTAgLy8gMTAKICAgIGV4dHJhY3RfdWludDE2CiAgICBpbnRjXzEgLy8gMAogICAgc3dhcAogICAgZXh0cmFjdDMKICAgIGZyYW1lX2RpZyAtMQogICAgY29uY2F0CiAgICAvLyBzbWFydF9jb250cmFjdHMvZmYvY29udHJhY3QucHk6MTY1CiAgICAvLyBtaWxlc3RvbmUucHJvb2Zfc3VibWl0dGVkX3RpbWUgPSBVSW50NjQoY3VycmVudF90aW1lKQogICAgZnJhbWVfZGlnIDcKICAgIGR1cAogICAgY292ZXIgMgogICAgaXRvYgogICAgcmVwbGFjZTIgMzcKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9mZi9jb250cmFjdC5weToxNjYKICAgIC8vIG1pbGVzdG9uZS52b3RpbmdfZW5kX3RpbWUgPSBVSW50NjQoY3VycmVudF90aW1lICsgdm90aW5nX3RpbWUpCiAgICBzd2FwCiAgICBwdXNoaW50IDE4MCAvLyAxODAKICAgICsKICAgIGl0b2IKICAgIHJlcGxhY2UyIDQ1CiAgICAvLyBzbWFydF9jb250cmFjdHMvZmYvY29udHJhY3QucHk6MTY3CiAgICAvLyBtaWxlc3RvbmUuY2xhaW1lZCA9IEJvb2woRmFsc2UpCiAgICBpbnRjIDQgLy8gMjg4CiAgICBpbnRjXzEgLy8gMAogICAgc2V0Yml0CiAgICAvLyBzbWFydF9jb250cmFjdHMvZmYvY29udHJhY3QucHk6MTY4CiAgICAvLyBtaWxlc3RvbmUudm90ZXNfZm9yID0gVUludDY0KDApCiAgICBieXRlY18wIC8vIDB4MDAwMDAwMDAwMDAwMDAwMAogICAgcmVwbGFjZTIgMTIKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9mZi9jb250cmFjdC5weToxNjkKICAgIC8vIG1pbGVzdG9uZS52b3Rlc19hZ2FpbnN0ID0gVUludDY0KDApCiAgICBieXRlY18wIC8vIDB4MDAwMDAwMDAwMDAwMDAwMAogICAgcmVwbGFjZTIgMjAKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9mZi9jb250cmFjdC5weToxNzAKICAgIC8vIG1pbGVzdG9uZS50b3RhbF92b3RlcnMgPSBVSW50NjQoMCkKICAgIGJ5dGVjXzAgLy8gMHgwMDAwMDAwMDAwMDAwMDAwCiAgICByZXBsYWNlMiAyOAogICAgLy8gc21hcnRfY29udHJhY3RzL2ZmL2NvbnRyYWN0LnB5OjE3MQogICAgLy8gbmV3X21pbGVzdG9uZXMuYXBwZW5kKG1pbGVzdG9uZS5jb3B5KCkpCiAgICBieXRlYyA2IC8vIDB4MDAwMgogICAgc3dhcAogICAgY29uY2F0CiAgICBmcmFtZV9kaWcgOAogICAgZHVwCiAgICBpbnRjXzEgLy8gMAogICAgZXh0cmFjdF91aW50MTYKICAgIHN3YXAKICAgIGV4dHJhY3QgMiAwCiAgICBpbnRjXzAgLy8gMQogICAgdW5jb3ZlciAzCiAgICBjYWxsc3ViIGR5bmFtaWNfYXJyYXlfY29uY2F0X2R5bmFtaWNfZWxlbWVudAogICAgZnJhbWVfYnVyeSA4CgpzdWJtaXRfcHJvb2ZfYWZ0ZXJfaWZfZWxzZUA1OgogICAgZnJhbWVfZGlnIDAKICAgIGZyYW1lX2J1cnkgOQogICAgYiBzdWJtaXRfcHJvb2ZfZm9yX2hlYWRlckAxCgpzdWJtaXRfcHJvb2ZfZWxzZV9ib2R5QDQ6CiAgICAvLyBzbWFydF9jb250cmFjdHMvZmYvY29udHJhY3QucHk6MTczCiAgICAvLyBuZXdfbWlsZXN0b25lcy5hcHBlbmQobWlsZXN0b25lLmNvcHkoKSkKICAgIGJ5dGVjIDYgLy8gMHgwMDAyCiAgICBzd2FwCiAgICBjb25jYXQKICAgIGZyYW1lX2RpZyA4CiAgICBkdXAKICAgIGludGNfMSAvLyAwCiAgICBleHRyYWN0X3VpbnQxNgogICAgc3dhcAogICAgZXh0cmFjdCAyIDAKICAgIGludGNfMCAvLyAxCiAgICB1bmNvdmVyIDMKICAgIGNhbGxzdWIgZHluYW1pY19hcnJheV9jb25jYXRfZHluYW1pY19lbGVtZW50CiAgICBmcmFtZV9idXJ5IDgKICAgIGIgc3VibWl0X3Byb29mX2FmdGVyX2lmX2Vsc2VANQoKc3VibWl0X3Byb29mX2FmdGVyX2ZvckA3OgogICAgLy8gc21hcnRfY29udHJhY3RzL2ZmL2NvbnRyYWN0LnB5OjE3NQogICAgLy8gcHJvcC5taWxlc3RvbmVzID0gbmV3X21pbGVzdG9uZXMuY29weSgpCiAgICBmcmFtZV9kaWcgMgogICAgaW50Y18xIC8vIDAKICAgIGZyYW1lX2RpZyA0CiAgICBleHRyYWN0MwogICAgZnJhbWVfZGlnIDgKICAgIGNvbmNhdAogICAgLy8gc21hcnRfY29udHJhY3RzL2ZmL2NvbnRyYWN0LnB5OjE3NgogICAgLy8gc2VsZi5wcm9wb3NhbHNbcHJvcG9zYWxfaWRdID0gcHJvcC5jb3B5KCkKICAgIGZyYW1lX2RpZyAxCiAgICBkdXAKICAgIGJveF9kZWwKICAgIHBvcAogICAgc3dhcAogICAgYm94X3B1dAogICAgLy8gc21hcnRfY29udHJhY3RzL2ZmL2NvbnRyYWN0LnB5OjE3NwogICAgLy8gc2VsZi5taWxlc3RvbmVWb3Rlc1twcm9wb3NhbF9pZF0gPSBEeW5hbWljQXJyYXlbQWRkcmVzc10oKQogICAgYnl0ZWMgNyAvLyAibWlsZXN0b25lVm90ZXNfIgogICAgZnJhbWVfZGlnIC0yCiAgICBjb25jYXQKICAgIGR1cAogICAgYm94X2RlbAogICAgcG9wCiAgICBieXRlY18xIC8vIDB4MDAwMAogICAgYm94X3B1dAogICAgcmV0c3ViCgoKLy8gc21hcnRfY29udHJhY3RzLmZmLmNvbnRyYWN0LlByb3Bvc2FsQ29udHJhY3Qudm90ZV9taWxlc3RvbmUocHJvcG9zYWxfaWQ6IGJ5dGVzLCB2b3RlOiBieXRlcykgLT4gdm9pZDoKdm90ZV9taWxlc3RvbmU6CiAgICAvLyBzbWFydF9jb250cmFjdHMvZmYvY29udHJhY3QucHk6MTgwLTE4MQogICAgLy8gQGFiaW1ldGhvZCgpCiAgICAvLyBkZWYgdm90ZV9taWxlc3RvbmUoc2VsZiwgcHJvcG9zYWxfaWQ6IFVJbnQ2NCwgdm90ZTogQm9vbCkgLT4gTm9uZToKICAgIHByb3RvIDIgMAogICAgLy8gc21hcnRfY29udHJhY3RzL2ZmL2NvbnRyYWN0LnB5OjE4MgogICAgLy8gYXNzZXJ0IHByb3Bvc2FsX2lkIGluIHNlbGYucHJvcG9zYWxzLCAiUHJvcG9zYWwgZG9lc24ndCBleGlzdCIKICAgIGJ5dGVjXzMgLy8gInByb3Bvc2FscyIKICAgIGZyYW1lX2RpZyAtMgogICAgY29uY2F0CiAgICBkdXBuIDIKICAgIGJveF9sZW4KICAgIGJ1cnkgMQogICAgYXNzZXJ0IC8vIFByb3Bvc2FsIGRvZXNuJ3QgZXhpc3QKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9mZi9jb250cmFjdC5weToxODMKICAgIC8vIHByb3AgPSBzZWxmLnByb3Bvc2Fsc1twcm9wb3NhbF9pZF0uY29weSgpCiAgICBib3hfZ2V0CiAgICBzd2FwCiAgICBkdXAKICAgIHVuY292ZXIgMgogICAgYXNzZXJ0IC8vIGNoZWNrIHNlbGYucHJvcG9zYWxzIGVudHJ5IGV4aXN0cwogICAgLy8gc21hcnRfY29udHJhY3RzL2ZmL2NvbnRyYWN0LnB5OjE4NAogICAgLy8gbWlsZXN0b25lID0gcHJvcC5taWxlc3RvbmVzW3Byb3AuY3VycmVudF9taWxlc3RvbmUubmF0aXZlXS5jb3B5KCkKICAgIGR1cAogICAgcHVzaGludCA3NCAvLyA3NAogICAgZXh0cmFjdF91aW50NjQKICAgIGR1cAogICAgdW5jb3ZlciAyCiAgICBkdXAKICAgIGludGNfMyAvLyA1NgogICAgZXh0cmFjdF91aW50MTYKICAgIGRpZyAxCiAgICBsZW4KICAgIHN1YnN0cmluZzMKICAgIGR1cAogICAgZXh0cmFjdCAyIDAKICAgIGRpZyAyCiAgICBpbnRjXzIgLy8gMgogICAgKgogICAgZGlnIDEKICAgIHN3YXAKICAgIGV4dHJhY3RfdWludDE2CiAgICB1bmNvdmVyIDIKICAgIGludGNfMSAvLyAwCiAgICBleHRyYWN0X3VpbnQxNgogICAgdW5jb3ZlciAzCiAgICBpbnRjXzAgLy8gMQogICAgKwogICAgc3dhcAogICAgZGlnIDEKICAgIC0gLy8gb24gZXJyb3I6IEluZGV4IGFjY2VzcyBpcyBvdXQgb2YgYm91bmRzCiAgICBkaWcgMwogICAgbGVuCiAgICB1bmNvdmVyIDIKICAgIGludGNfMiAvLyAyCiAgICAqCiAgICBkaWcgNAogICAgc3dhcAogICAgZXh0cmFjdF91aW50MTYKICAgIHVuY292ZXIgMgogICAgc2VsZWN0CiAgICBzdWJzdHJpbmczCiAgICAvLyBzbWFydF9jb250cmFjdHMvZmYvY29udHJhY3QucHk6MTg2CiAgICAvLyBtaWxlc3RvbmVfdm90ZXMgPSBzZWxmLm1pbGVzdG9uZVZvdGVzW3Byb3Bvc2FsX2lkXS5jb3B5KCkKICAgIGJ5dGVjIDcgLy8gIm1pbGVzdG9uZVZvdGVzXyIKICAgIGZyYW1lX2RpZyAtMgogICAgY29uY2F0CiAgICBkdXAKICAgIGJveF9nZXQKICAgIHN3YXAKICAgIGR1cAogICAgdW5jb3ZlciAyCiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi5taWxlc3RvbmVWb3RlcyBlbnRyeSBleGlzdHMKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9mZi9jb250cmFjdC5weToxODcKICAgIC8vIGZvciBhZGRyIGluIG1pbGVzdG9uZV92b3RlczoKICAgIGludGNfMSAvLyAwCiAgICBleHRyYWN0X3VpbnQxNgogICAgaW50Y18xIC8vIDAKCnZvdGVfbWlsZXN0b25lX2Zvcl9oZWFkZXJAMToKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9mZi9jb250cmFjdC5weToxODcKICAgIC8vIGZvciBhZGRyIGluIG1pbGVzdG9uZV92b3RlczoKICAgIGZyYW1lX2RpZyA3CiAgICBmcmFtZV9kaWcgNgogICAgPAogICAgYnogdm90ZV9taWxlc3RvbmVfYWZ0ZXJfZm9yQDQKICAgIGZyYW1lX2RpZyA1CiAgICBleHRyYWN0IDIgMAogICAgZnJhbWVfZGlnIDcKICAgIGR1cAogICAgY292ZXIgMgogICAgcHVzaGludCAzMiAvLyAzMgogICAgKgogICAgcHVzaGludCAzMiAvLyAzMgogICAgZXh0cmFjdDMgLy8gb24gZXJyb3I6IEluZGV4IGFjY2VzcyBpcyBvdXQgb2YgYm91bmRzCiAgICAvLyBzbWFydF9jb250cmFjdHMvZmYvY29udHJhY3QucHk6MTg4CiAgICAvLyBhc3NlcnQgYWRkci5uYXRpdmUgIT0gVHhuLnNlbmRlciwgIllvdSBoYXZlIGFscmVhZHkgdm90ZWQgZm9yIHRoaXMgbWlsZXN0b25lIgogICAgdHhuIFNlbmRlcgogICAgIT0KICAgIGFzc2VydCAvLyBZb3UgaGF2ZSBhbHJlYWR5IHZvdGVkIGZvciB0aGlzIG1pbGVzdG9uZQogICAgaW50Y18wIC8vIDEKICAgICsKICAgIGZyYW1lX2J1cnkgNwogICAgYiB2b3RlX21pbGVzdG9uZV9mb3JfaGVhZGVyQDEKCnZvdGVfbWlsZXN0b25lX2FmdGVyX2ZvckA0OgogICAgLy8gc21hcnRfY29udHJhY3RzL2ZmL2NvbnRyYWN0LnB5OjE5MAogICAgLy8gYXNzZXJ0IHByb3AuY3JlYXRlZF9ieS5uYXRpdmUgIT0gVHhuLnNlbmRlciwgIkNyZWF0b3IgY2Fubm90IHZvdGUiCiAgICBmcmFtZV9kaWcgMQogICAgZXh0cmFjdCAxNiAzMiAvLyBvbiBlcnJvcjogSW5kZXggYWNjZXNzIGlzIG91dCBvZiBib3VuZHMKICAgIHR4biBTZW5kZXIKICAgICE9CiAgICBhc3NlcnQgLy8gQ3JlYXRvciBjYW5ub3Qgdm90ZQogICAgLy8gc21hcnRfY29udHJhY3RzL2ZmL2NvbnRyYWN0LnB5OjE5MQogICAgLy8gYXNzZXJ0IG1pbGVzdG9uZS5wcm9vZl9saW5rICE9ICIiLCAiUHJvb2YgaXMgbm90IHN1Ym1pdHRlZCB5ZXQiCiAgICBmcmFtZV9kaWcgMwogICAgZHVwCiAgICBwdXNoaW50IDEwIC8vIDEwCiAgICBleHRyYWN0X3VpbnQxNgogICAgZGlnIDEKICAgIGxlbgogICAgZGlnIDIKICAgIGNvdmVyIDIKICAgIHN1YnN0cmluZzMKICAgIGJ5dGVjXzEgLy8gMHgwMDAwCiAgICAhPQogICAgYXNzZXJ0IC8vIFByb29mIGlzIG5vdCBzdWJtaXR0ZWQgeWV0CiAgICAvLyBzbWFydF9jb250cmFjdHMvZmYvY29udHJhY3QucHk6MTkzCiAgICAvLyBjdXJyZW50X3RpbWUgPSBHbG9iYWwubGF0ZXN0X3RpbWVzdGFtcAogICAgZ2xvYmFsIExhdGVzdFRpbWVzdGFtcAogICAgLy8gc21hcnRfY29udHJhY3RzL2ZmL2NvbnRyYWN0LnB5OjE5NAogICAgLy8gYXNzZXJ0IG1pbGVzdG9uZS52b3RpbmdfZW5kX3RpbWUubmF0aXZlID4gY3VycmVudF90aW1lLCAiVm90aW5nIHBlcmlvZCBoYXMgZW5kZWQiCiAgICBzd2FwCiAgICBwdXNoaW50IDQ1IC8vIDQ1CiAgICBleHRyYWN0X3VpbnQ2NAogICAgPAogICAgYXNzZXJ0IC8vIFZvdGluZyBwZXJpb2QgaGFzIGVuZGVkCiAgICAvLyBzbWFydF9jb250cmFjdHMvZmYvY29udHJhY3QucHk6MTk2CiAgICAvLyBkb25hdG9yX2JveF9rZXkgPSBEb25hdGlvbkJveEtleShwcm9wb3NhbF9pZD1wcm9wb3NhbF9pZCwgZG9ub3I9QWRkcmVzcyhUeG4uc2VuZGVyKSkKICAgIGZyYW1lX2RpZyAtMgogICAgdHhuIFNlbmRlcgogICAgY29uY2F0CiAgICAvLyBzbWFydF9jb250cmFjdHMvZmYvY29udHJhY3QucHk6MTk3CiAgICAvLyBhc3NlcnQgZG9uYXRvcl9ib3hfa2V5IGluIHNlbGYuZG9uYXRpb25zLCAiWW91IGhhdmUgbm90IGRvbmF0ZWQgdG8gdGhpcyBwcm9wb3NhbCIKICAgIGJ5dGVjIDggLy8gImRvbmF0aW9ucyIKICAgIHN3YXAKICAgIGNvbmNhdAogICAgZHVwCiAgICBib3hfbGVuCiAgICBidXJ5IDEKICAgIGFzc2VydCAvLyBZb3UgaGF2ZSBub3QgZG9uYXRlZCB0byB0aGlzIHByb3Bvc2FsCiAgICAvLyBzbWFydF9jb250cmFjdHMvZmYvY29udHJhY3QucHk6MTk4CiAgICAvLyBhbW91bnRfZG9uYXRlZCA9IHNlbGYuZG9uYXRpb25zW2RvbmF0b3JfYm94X2tleV0KICAgIGJveF9nZXQKICAgIGFzc2VydCAvLyBjaGVjayBzZWxmLmRvbmF0aW9ucyBlbnRyeSBleGlzdHMKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9mZi9jb250cmFjdC5weToxOTkKICAgIC8vIGFzc2VydCBhbW91bnRfZG9uYXRlZCA+PSAxXzAwMF8wMDAsICJTaG91bGQgaGF2ZSBkb25hdGVkIG1vcmUgdGhhbiAxIEFsZ28gdG8gdm90ZSIKICAgIGR1cAogICAgcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDBmNDI0MAogICAgYj49CiAgICBhc3NlcnQgLy8gU2hvdWxkIGhhdmUgZG9uYXRlZCBtb3JlIHRoYW4gMSBBbGdvIHRvIHZvdGUKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9mZi9jb250cmFjdC5weToyMDEKICAgIC8vIHdlaWdodCA9IG9wLnNxcnQoYW1vdW50X2RvbmF0ZWQubmF0aXZlIC8vIE5hdGl2ZVVJbnQ2NCgxXzAwMF8wMDApKQogICAgYnRvaQogICAgcHVzaGludCAxMDAwMDAwIC8vIDEwMDAwMDAKICAgIC8KICAgIHNxcnQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9mZi9jb250cmFjdC5weToyMDIKICAgIC8vIGlmIHZvdGU6CiAgICBmcmFtZV9kaWcgLTEKICAgIGJ5dGVjXzIgLy8gMHgwMAogICAgIT0KICAgIGJ6IHZvdGVfbWlsZXN0b25lX2Vsc2VfYm9keUA2CiAgICAvLyBzbWFydF9jb250cmFjdHMvZmYvY29udHJhY3QucHk6MjAzCiAgICAvLyBtaWxlc3RvbmUudm90ZXNfZm9yID0gVUludDY0KG1pbGVzdG9uZS52b3Rlc19mb3IubmF0aXZlICsgd2VpZ2h0KQogICAgZnJhbWVfZGlnIDMKICAgIGR1cAogICAgcHVzaGludCAxMiAvLyAxMgogICAgZXh0cmFjdF91aW50NjQKICAgIHVuY292ZXIgMgogICAgKwogICAgaXRvYgogICAgcmVwbGFjZTIgMTIKICAgIGZyYW1lX2J1cnkgMwoKdm90ZV9taWxlc3RvbmVfYWZ0ZXJfaWZfZWxzZUA3OgogICAgLy8gc21hcnRfY29udHJhY3RzL2ZmL2NvbnRyYWN0LnB5OjIwNwogICAgLy8gbWlsZXN0b25lLnRvdGFsX3ZvdGVycyA9IFVJbnQ2NChtaWxlc3RvbmUudG90YWxfdm90ZXJzLm5hdGl2ZSArIDEpCiAgICBmcmFtZV9kaWcgMwogICAgZHVwCiAgICBwdXNoaW50IDI4IC8vIDI4CiAgICBleHRyYWN0X3VpbnQ2NAogICAgaW50Y18wIC8vIDEKICAgICsKICAgIGl0b2IKICAgIHJlcGxhY2UyIDI4CiAgICAvLyBzbWFydF9jb250cmFjdHMvZmYvY29udHJhY3QucHk6MjA4CiAgICAvLyBtaWxlc3RvbmVfdm90ZXMuYXBwZW5kKEFkZHJlc3MoVHhuLnNlbmRlcikpCiAgICBmcmFtZV9kaWcgNQogICAgZXh0cmFjdCAyIDAKICAgIHR4biBTZW5kZXIKICAgIGNvbmNhdAogICAgZHVwCiAgICBsZW4KICAgIHB1c2hpbnQgMzIgLy8gMzIKICAgIC8KICAgIGl0b2IKICAgIGV4dHJhY3QgNiAyCiAgICBzd2FwCiAgICBjb25jYXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9mZi9jb250cmFjdC5weToyMDkKICAgIC8vIHNlbGYubWlsZXN0b25lVm90ZXNbcHJvcG9zYWxfaWRdID0gbWlsZXN0b25lX3ZvdGVzLmNvcHkoKQogICAgZnJhbWVfZGlnIDQKICAgIGR1cAogICAgYm94X2RlbAogICAgcG9wCiAgICBzd2FwCiAgICBib3hfcHV0CiAgICAvLyBzbWFydF9jb250cmFjdHMvZmYvY29udHJhY3QucHk6MjEwCiAgICAvLyBzZWxmLnByb3Bvc2Fsc1twcm9wb3NhbF9pZF0ubWlsZXN0b25lc1twcm9wLmN1cnJlbnRfbWlsZXN0b25lLm5hdGl2ZV0gPSBtaWxlc3RvbmUuY29weSgpCiAgICBmcmFtZV9kaWcgMAogICAgZHVwCiAgICBib3hfZ2V0CiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi5wcm9wb3NhbHMgZW50cnkgZXhpc3RzCiAgICBkdXAKICAgIGludGNfMyAvLyA1NgogICAgZXh0cmFjdF91aW50MTYKICAgIGRpZyAxCiAgICBsZW4KICAgIGRpZyAyCiAgICBkaWcgMgogICAgdW5jb3ZlciAyCiAgICBzdWJzdHJpbmczCiAgICB1bmNvdmVyIDQKICAgIGZyYW1lX2RpZyAyCiAgICBjYWxsc3ViIGR5bmFtaWNfYXJyYXlfcmVwbGFjZV9keW5hbWljX2VsZW1lbnQKICAgIHVuY292ZXIgMgogICAgaW50Y18xIC8vIDAKICAgIHVuY292ZXIgMwogICAgZXh0cmFjdDMKICAgIHN3YXAKICAgIGNvbmNhdAogICAgZGlnIDEKICAgIGJveF9kZWwKICAgIHBvcAogICAgYm94X3B1dAogICAgcmV0c3ViCgp2b3RlX21pbGVzdG9uZV9lbHNlX2JvZHlANjoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9mZi9jb250cmFjdC5weToyMDUKICAgIC8vIG1pbGVzdG9uZS52b3Rlc19hZ2FpbnN0ID0gVUludDY0KG1pbGVzdG9uZS52b3Rlc19hZ2FpbnN0Lm5hdGl2ZSArIHdlaWdodCkKICAgIGZyYW1lX2RpZyAzCiAgICBkdXAKICAgIHB1c2hpbnQgMjAgLy8gMjAKICAgIGV4dHJhY3RfdWludDY0CiAgICB1bmNvdmVyIDIKICAgICsKICAgIGl0b2IKICAgIHJlcGxhY2UyIDIwCiAgICBmcmFtZV9idXJ5IDMKICAgIGIgdm90ZV9taWxlc3RvbmVfYWZ0ZXJfaWZfZWxzZUA3CgoKLy8gc21hcnRfY29udHJhY3RzLmZmLmNvbnRyYWN0LlByb3Bvc2FsQ29udHJhY3QuY2xhaW1fbWlsZXN0b25lKHByb3Bvc2FsX2lkOiBieXRlcykgLT4gdm9pZDoKY2xhaW1fbWlsZXN0b25lOgogICAgLy8gc21hcnRfY29udHJhY3RzL2ZmL2NvbnRyYWN0LnB5OjIxMy0yMTQKICAgIC8vIEBhYmltZXRob2QoKQogICAgLy8gZGVmIGNsYWltX21pbGVzdG9uZShzZWxmLCBwcm9wb3NhbF9pZDogVUludDY0KSAtPiBOb25lOgogICAgcHJvdG8gMSAwCiAgICAvLyBzbWFydF9jb250cmFjdHMvZmYvY29udHJhY3QucHk6MjE1CiAgICAvLyBhc3NlcnQgcHJvcG9zYWxfaWQgaW4gc2VsZi5wcm9wb3NhbHMsICJQcm9wb3NhbCBkb2Vzbid0IGV4aXN0IgogICAgYnl0ZWNfMyAvLyAicHJvcG9zYWxzIgogICAgZnJhbWVfZGlnIC0xCiAgICBjb25jYXQKICAgIGR1cAogICAgYm94X2xlbgogICAgYnVyeSAxCiAgICBhc3NlcnQgLy8gUHJvcG9zYWwgZG9lc24ndCBleGlzdAogICAgLy8gc21hcnRfY29udHJhY3RzL2ZmL2NvbnRyYWN0LnB5OjIxNgogICAgLy8gcHJvcCA9IHNlbGYucHJvcG9zYWxzW3Byb3Bvc2FsX2lkXS5jb3B5KCkKICAgIGR1cAogICAgYm94X2dldAogICAgYXNzZXJ0IC8vIGNoZWNrIHNlbGYucHJvcG9zYWxzIGVudHJ5IGV4aXN0cwogICAgLy8gc21hcnRfY29udHJhY3RzL2ZmL2NvbnRyYWN0LnB5OjIxNwogICAgLy8gbWlsZXN0b25lID0gcHJvcC5taWxlc3RvbmVzW3Byb3AuY3VycmVudF9taWxlc3RvbmUubmF0aXZlXS5jb3B5KCkKICAgIGR1cAogICAgcHVzaGludCA3NCAvLyA3NAogICAgZXh0cmFjdF91aW50NjQKICAgIGRpZyAxCiAgICBpbnRjXzMgLy8gNTYKICAgIGV4dHJhY3RfdWludDE2CiAgICBkaWcgMgogICAgbGVuCiAgICBkaWcgMwogICAgY292ZXIgMgogICAgc3Vic3RyaW5nMwogICAgZHVwCiAgICBleHRyYWN0IDIgMAogICAgZGlnIDIKICAgIGludGNfMiAvLyAyCiAgICAqCiAgICBkaWcgMQogICAgc3dhcAogICAgZXh0cmFjdF91aW50MTYKICAgIHVuY292ZXIgMgogICAgaW50Y18xIC8vIDAKICAgIGV4dHJhY3RfdWludDE2CiAgICBkaWcgMwogICAgaW50Y18wIC8vIDEKICAgICsKICAgIHN3YXAKICAgIGRpZyAxCiAgICAtIC8vIG9uIGVycm9yOiBJbmRleCBhY2Nlc3MgaXMgb3V0IG9mIGJvdW5kcwogICAgZGlnIDMKICAgIGxlbgogICAgZGlnIDIKICAgIGludGNfMiAvLyAyCiAgICAqCiAgICBkaWcgNQogICAgc3dhcAogICAgZXh0cmFjdF91aW50MTYKICAgIHVuY292ZXIgMgogICAgc2VsZWN0CiAgICB1bmNvdmVyIDMKICAgIHVuY292ZXIgMwogICAgdW5jb3ZlciAyCiAgICBzdWJzdHJpbmczCiAgICAvLyBzbWFydF9jb250cmFjdHMvZmYvY29udHJhY3QucHk6MjE5CiAgICAvLyBjdXJyZW50X3RpbWUgPSBHbG9iYWwubGF0ZXN0X3RpbWVzdGFtcAogICAgZ2xvYmFsIExhdGVzdFRpbWVzdGFtcAogICAgLy8gc21hcnRfY29udHJhY3RzL2ZmL2NvbnRyYWN0LnB5OjIyMAogICAgLy8gYXNzZXJ0IG1pbGVzdG9uZS5wcm9vZl9saW5rICE9ICIiLCAiUHJvb2YgaXMgbm90IHN1Ym1pdHRlZCB5ZXQiCiAgICBkaWcgMQogICAgcHVzaGludCAxMCAvLyAxMAogICAgZXh0cmFjdF91aW50MTYKICAgIGRpZyAyCiAgICBsZW4KICAgIGRpZyAzCiAgICBjb3ZlciAyCiAgICBzdWJzdHJpbmczCiAgICBieXRlY18xIC8vIDB4MDAwMAogICAgIT0KICAgIGFzc2VydCAvLyBQcm9vZiBpcyBub3Qgc3VibWl0dGVkIHlldAogICAgLy8gc21hcnRfY29udHJhY3RzL2ZmL2NvbnRyYWN0LnB5OjIyMQogICAgLy8gYXNzZXJ0IG1pbGVzdG9uZS5wcm9vZl9zdWJtaXR0ZWRfdGltZS5uYXRpdmUgIT0gMCwgIlByb29mIG5vdCBzdWJtaXR0ZWQgeWV0IgogICAgZGlnIDEKICAgIHB1c2hpbnQgMzcgLy8gMzcKICAgIGV4dHJhY3RfdWludDY0CiAgICBhc3NlcnQgLy8gUHJvb2Ygbm90IHN1Ym1pdHRlZCB5ZXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9mZi9jb250cmFjdC5weToyMjIKICAgIC8vIGFzc2VydCBjdXJyZW50X3RpbWUgPiBtaWxlc3RvbmUudm90aW5nX2VuZF90aW1lLm5hdGl2ZSwgIlZvdGluZyBwZXJpb2Qgbm90IGVuZGVkIHlldCIKICAgIGRpZyAxCiAgICBwdXNoaW50IDQ1IC8vIDQ1CiAgICBleHRyYWN0X3VpbnQ2NAogICAgPgogICAgYXNzZXJ0IC8vIFZvdGluZyBwZXJpb2Qgbm90IGVuZGVkIHlldAogICAgLy8gc21hcnRfY29udHJhY3RzL2ZmL2NvbnRyYWN0LnB5OjIyMwogICAgLy8gYXNzZXJ0IG1pbGVzdG9uZS52b3Rlc19mb3IubmF0aXZlID4gbWlsZXN0b25lLnZvdGVzX2FnYWluc3QubmF0aXZlLCAiTWlsZXN0b25lIG5vdCBhcHByb3ZlZCIKICAgIGR1cAogICAgcHVzaGludCAxMiAvLyAxMgogICAgZXh0cmFjdF91aW50NjQKICAgIGRpZyAxCiAgICBwdXNoaW50IDIwIC8vIDIwCiAgICBleHRyYWN0X3VpbnQ2NAogICAgPgogICAgYXNzZXJ0IC8vIE1pbGVzdG9uZSBub3QgYXBwcm92ZWQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9mZi9jb250cmFjdC5weToyMjQKICAgIC8vIGFzc2VydCBub3QgbWlsZXN0b25lLmNsYWltZWQsICJNaWxlc3RvbmUgYWxyZWFkeSBjbGFpbWVkIgogICAgZHVwCiAgICBpbnRjIDQgLy8gMjg4CiAgICBnZXRiaXQKICAgIGJ5dGVjXzIgLy8gMHgwMAogICAgaW50Y18xIC8vIDAKICAgIHVuY292ZXIgMgogICAgc2V0Yml0CiAgICBieXRlY18yIC8vIDB4MDAKICAgID09CiAgICBhc3NlcnQgLy8gTWlsZXN0b25lIGFscmVhZHkgY2xhaW1lZAogICAgLy8gc21hcnRfY29udHJhY3RzL2ZmL2NvbnRyYWN0LnB5OjIyNgogICAgLy8gY3JlYXRvciA9IHByb3AuY3JlYXRlZF9ieS5uYXRpdmUKICAgIHVuY292ZXIgMwogICAgZXh0cmFjdCAxNiAzMiAvLyBvbiBlcnJvcjogSW5kZXggYWNjZXNzIGlzIG91dCBvZiBib3VuZHMKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9mZi9jb250cmFjdC5weToyMjctMjMxCiAgICAvLyBpdHhuLlBheW1lbnQoCiAgICAvLyAgICAgc2VuZGVyPUdsb2JhbC5jdXJyZW50X2FwcGxpY2F0aW9uX2FkZHJlc3MsCiAgICAvLyAgICAgcmVjZWl2ZXI9Y3JlYXRvciwKICAgIC8vICAgICBhbW91bnQ9bWlsZXN0b25lLmFtb3VudC5uYXRpdmUKICAgIC8vICkuc3VibWl0KCkKICAgIGl0eG5fYmVnaW4KICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9mZi9jb250cmFjdC5weToyMjgKICAgIC8vIHNlbmRlcj1HbG9iYWwuY3VycmVudF9hcHBsaWNhdGlvbl9hZGRyZXNzLAogICAgZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9mZi9jb250cmFjdC5weToyMzAKICAgIC8vIGFtb3VudD1taWxlc3RvbmUuYW1vdW50Lm5hdGl2ZQogICAgZGlnIDIKICAgIGludGNfMiAvLyAyCiAgICBleHRyYWN0X3VpbnQ2NAogICAgaXR4bl9maWVsZCBBbW91bnQKICAgIGl0eG5fZmllbGQgU2VuZGVyCiAgICBpdHhuX2ZpZWxkIFJlY2VpdmVyCiAgICAvLyBzbWFydF9jb250cmFjdHMvZmYvY29udHJhY3QucHk6MjI3CiAgICAvLyBpdHhuLlBheW1lbnQoCiAgICBpbnRjXzAgLy8gcGF5CiAgICBpdHhuX2ZpZWxkIFR5cGVFbnVtCiAgICBpbnRjXzEgLy8gMAogICAgaXR4bl9maWVsZCBGZWUKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9mZi9jb250cmFjdC5weToyMjctMjMxCiAgICAvLyBpdHhuLlBheW1lbnQoCiAgICAvLyAgICAgc2VuZGVyPUdsb2JhbC5jdXJyZW50X2FwcGxpY2F0aW9uX2FkZHJlc3MsCiAgICAvLyAgICAgcmVjZWl2ZXI9Y3JlYXRvciwKICAgIC8vICAgICBhbW91bnQ9bWlsZXN0b25lLmFtb3VudC5uYXRpdmUKICAgIC8vICkuc3VibWl0KCkKICAgIGl0eG5fc3VibWl0CiAgICAvLyBzbWFydF9jb250cmFjdHMvZmYvY29udHJhY3QucHk6MjMzCiAgICAvLyBtaWxlc3RvbmUuY2xhaW1lZCA9IEJvb2woVHJ1ZSkKICAgIGludGMgNCAvLyAyODgKICAgIGludGNfMCAvLyAxCiAgICBzZXRiaXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9mZi9jb250cmFjdC5weToyMzQKICAgIC8vIHNlbGYucHJvcG9zYWxzW3Byb3Bvc2FsX2lkXS5taWxlc3RvbmVzW3Byb3AuY3VycmVudF9taWxlc3RvbmUubmF0aXZlXSA9IG1pbGVzdG9uZS5jb3B5KCkKICAgIGRpZyAzCiAgICBib3hfZ2V0CiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi5wcm9wb3NhbHMgZW50cnkgZXhpc3RzCiAgICBkdXAKICAgIGludGNfMyAvLyA1NgogICAgZXh0cmFjdF91aW50MTYKICAgIGRpZyAxCiAgICBsZW4KICAgIGRpZyAyCiAgICBkaWcgMgogICAgdW5jb3ZlciAyCiAgICBzdWJzdHJpbmczCiAgICB1bmNvdmVyIDMKICAgIHVuY292ZXIgNQogICAgY2FsbHN1YiBkeW5hbWljX2FycmF5X3JlcGxhY2VfZHluYW1pY19lbGVtZW50CiAgICB1bmNvdmVyIDIKICAgIGludGNfMSAvLyAwCiAgICB1bmNvdmVyIDMKICAgIGV4dHJhY3QzCiAgICBzd2FwCiAgICBjb25jYXQKICAgIGRpZyAyCiAgICBib3hfZGVsCiAgICBwb3AKICAgIGRpZyAyCiAgICBzd2FwCiAgICBib3hfcHV0CiAgICAvLyBzbWFydF9jb250cmFjdHMvZmYvY29udHJhY3QucHk6MjM1CiAgICAvLyBzZWxmLnByb3Bvc2Fsc1twcm9wb3NhbF9pZF0uY3VycmVudF9taWxlc3RvbmUgPSBVSW50NjQocHJvcC5jdXJyZW50X21pbGVzdG9uZS5uYXRpdmUgKyAxKQogICAgaXRvYgogICAgZGlnIDEKICAgIGJveF9nZXQKICAgIGFzc2VydCAvLyBjaGVjayBzZWxmLnByb3Bvc2FscyBlbnRyeSBleGlzdHMKICAgIHN3YXAKICAgIHJlcGxhY2UyIDc0CiAgICBkaWcgMQogICAgYm94X2RlbAogICAgcG9wCiAgICBib3hfcHV0CiAgICByZXRzdWIKCgovLyBzbWFydF9jb250cmFjdHMuZmYuY29udHJhY3QuUHJvcG9zYWxDb250cmFjdC5yZWZ1bmRfaWZfaW5hY3RpdmUocHJvcG9zYWxfaWQ6IGJ5dGVzKSAtPiB2b2lkOgpyZWZ1bmRfaWZfaW5hY3RpdmU6CiAgICAvLyBzbWFydF9jb250cmFjdHMvZmYvY29udHJhY3QucHk6MjM4LTIzOQogICAgLy8gQGFiaW1ldGhvZCgpCiAgICAvLyBkZWYgcmVmdW5kX2lmX2luYWN0aXZlKHNlbGYsIHByb3Bvc2FsX2lkOiBVSW50NjQpIC0+IE5vbmU6CiAgICBwcm90byAxIDAKICAgIHB1c2hieXRlcyAiIgogICAgZHVwCiAgICAvLyBzbWFydF9jb250cmFjdHMvZmYvY29udHJhY3QucHk6MjQwCiAgICAvLyBhc3NlcnQgcHJvcG9zYWxfaWQgaW4gc2VsZi5wcm9wb3NhbHMsICJQcm9wb3NhbCBkb2Vzbid0IGV4aXN0IgogICAgYnl0ZWNfMyAvLyAicHJvcG9zYWxzIgogICAgZnJhbWVfZGlnIC0xCiAgICBjb25jYXQKICAgIGR1cAogICAgYm94X2xlbgogICAgYnVyeSAxCiAgICBhc3NlcnQgLy8gUHJvcG9zYWwgZG9lc24ndCBleGlzdAogICAgLy8gc21hcnRfY29udHJhY3RzL2ZmL2NvbnRyYWN0LnB5OjI0MQogICAgLy8gcHJvcCA9IHNlbGYucHJvcG9zYWxzW3Byb3Bvc2FsX2lkXS5jb3B5KCkKICAgIGJveF9nZXQKICAgIHN3YXAKICAgIGR1cAogICAgdW5jb3ZlciAyCiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi5wcm9wb3NhbHMgZW50cnkgZXhpc3RzCiAgICAvLyBzbWFydF9jb250cmFjdHMvZmYvY29udHJhY3QucHk6MjQyCiAgICAvLyBjdXJyZW50X21pbGVzdG9uZSA9IHByb3AubWlsZXN0b25lc1twcm9wLmN1cnJlbnRfbWlsZXN0b25lLm5hdGl2ZV0uY29weSgpCiAgICBkdXAKICAgIHB1c2hpbnQgNzQgLy8gNzQKICAgIGV4dHJhY3RfdWludDY0CiAgICBkaWcgMQogICAgaW50Y18zIC8vIDU2CiAgICBleHRyYWN0X3VpbnQxNgogICAgZGlnIDIKICAgIGxlbgogICAgdW5jb3ZlciAzCiAgICBjb3ZlciAyCiAgICBzdWJzdHJpbmczCiAgICBkdXAKICAgIGV4dHJhY3QgMiAwCiAgICBkaWcgMgogICAgaW50Y18yIC8vIDIKICAgICoKICAgIGRpZyAxCiAgICBzd2FwCiAgICBleHRyYWN0X3VpbnQxNgogICAgdW5jb3ZlciAyCiAgICBpbnRjXzEgLy8gMAogICAgZXh0cmFjdF91aW50MTYKICAgIHVuY292ZXIgMwogICAgaW50Y18wIC8vIDEKICAgICsKICAgIHN3YXAKICAgIGRpZyAxCiAgICAtIC8vIG9uIGVycm9yOiBJbmRleCBhY2Nlc3MgaXMgb3V0IG9mIGJvdW5kcwogICAgZGlnIDMKICAgIGxlbgogICAgdW5jb3ZlciAyCiAgICBpbnRjXzIgLy8gMgogICAgKgogICAgZGlnIDQKICAgIHN3YXAKICAgIGV4dHJhY3RfdWludDE2CiAgICB1bmNvdmVyIDIKICAgIHNlbGVjdAogICAgc3Vic3RyaW5nMwogICAgLy8gc21hcnRfY29udHJhY3RzL2ZmL2NvbnRyYWN0LnB5OjI0MwogICAgLy8gY3VycmVudF90aW1lID0gR2xvYmFsLmxhdGVzdF90aW1lc3RhbXAKICAgIGdsb2JhbCBMYXRlc3RUaW1lc3RhbXAKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9mZi9jb250cmFjdC5weToyNDQKICAgIC8vIHRpbWVfZGlmZmVyZW5jZSA9IGN1cnJlbnRfdGltZSAtIGN1cnJlbnRfbWlsZXN0b25lLnByb29mX3N1Ym1pdHRlZF90aW1lLm5hdGl2ZQogICAgc3dhcAogICAgcHVzaGludCAzNyAvLyAzNwogICAgZXh0cmFjdF91aW50NjQKICAgIC0KICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9mZi9jb250cmFjdC5weToyNDYKICAgIC8vIGRvbmF0b3JfYm94X2tleSA9IERvbmF0aW9uQm94S2V5KHByb3Bvc2FsX2lkPXByb3Bvc2FsX2lkLCBkb25vcj1BZGRyZXNzKFR4bi5zZW5kZXIpKQogICAgZnJhbWVfZGlnIC0xCiAgICB0eG4gU2VuZGVyCiAgICBjb25jYXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9mZi9jb250cmFjdC5weToyNDcKICAgIC8vIGFzc2VydCBkb25hdG9yX2JveF9rZXkgaW4gc2VsZi5kb25hdGlvbnMsICJZb3UgaGF2ZSBub3QgZG9uYXRlZCB0byB0aGlzIHByb3Bvc2FsIgogICAgYnl0ZWMgOCAvLyAiZG9uYXRpb25zIgogICAgc3dhcAogICAgY29uY2F0CiAgICBkdXAKICAgIGNvdmVyIDIKICAgIGR1cAogICAgYm94X2xlbgogICAgYnVyeSAxCiAgICBhc3NlcnQgLy8gWW91IGhhdmUgbm90IGRvbmF0ZWQgdG8gdGhpcyBwcm9wb3NhbAogICAgLy8gc21hcnRfY29udHJhY3RzL2ZmL2NvbnRyYWN0LnB5OjI0OAogICAgLy8gYW1vdW50X2RvbmF0ZWQgPSBzZWxmLmRvbmF0aW9uc1tkb25hdG9yX2JveF9rZXldCiAgICBib3hfZ2V0CiAgICBzd2FwCiAgICBjb3ZlciAyCiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi5kb25hdGlvbnMgZW50cnkgZXhpc3RzCiAgICAvLyBzbWFydF9jb250cmFjdHMvZmYvY29udHJhY3QucHk6MjUwCiAgICAvLyBpZiB0aW1lX2RpZmZlcmVuY2UgPiBleHBpcmF0aW9uX3RpbWU6CiAgICBwdXNoaW50IDI0MCAvLyAyNDAKICAgID4KICAgIGJ6IHJlZnVuZF9pZl9pbmFjdGl2ZV9hZnRlcl9pZl9lbHNlQDUKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9mZi9jb250cmFjdC5weToyNTEKICAgIC8vIHJlbWFpbmluZ19hbW91bnQgPSBwcm9wLmFtb3VudF9yZXF1aXJlZC5uYXRpdmUgLSBwcm9wLmFtb3VudF9yYWlzZWQubmF0aXZlCiAgICBmcmFtZV9kaWcgMgogICAgZHVwCiAgICBwdXNoaW50IDggLy8gOAogICAgZXh0cmFjdF91aW50NjQKICAgIHN3YXAKICAgIHB1c2hpbnQgNDggLy8gNDgKICAgIGV4dHJhY3RfdWludDY0CiAgICBkdXAKICAgIGZyYW1lX2J1cnkgMQogICAgLQogICAgZnJhbWVfYnVyeSAwCiAgICAvLyBzbWFydF9jb250cmFjdHMvZmYvY29udHJhY3QucHk6MjUyCiAgICAvLyBpZiBhbW91bnRfZG9uYXRlZCA+IDA6CiAgICBmcmFtZV9kaWcgNAogICAgYnl0ZWNfMCAvLyAweDAwMDAwMDAwMDAwMDAwMDAKICAgIGI+CiAgICBieiByZWZ1bmRfaWZfaW5hY3RpdmVfYWZ0ZXJfaWZfZWxzZUA1CiAgICAvLyBzbWFydF9jb250cmFjdHMvZmYvY29udHJhY3QucHk6MjUzCiAgICAvLyByZWZ1bmRfYW1vdW50ID0gVUludDY0KHJlbWFpbmluZ19hbW91bnQgKiBhbW91bnRfZG9uYXRlZC5uYXRpdmUgLy8gcHJvcC5hbW91bnRfcmFpc2VkLm5hdGl2ZSkKICAgIGZyYW1lX2RpZyA0CiAgICBidG9pCiAgICBmcmFtZV9kaWcgMAogICAgKgogICAgZnJhbWVfZGlnIDEKICAgIC8KICAgIGl0b2IKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9mZi9jb250cmFjdC5weToyNTQtMjU4CiAgICAvLyBpdHhuLlBheW1lbnQoCiAgICAvLyAgICAgc2VuZGVyPUdsb2JhbC5jdXJyZW50X2FwcGxpY2F0aW9uX2FkZHJlc3MsCiAgICAvLyAgICAgcmVjZWl2ZXI9VHhuLnNlbmRlciwKICAgIC8vICAgICBhbW91bnQ9cmVmdW5kX2Ftb3VudC5uYXRpdmUKICAgIC8vICkuc3VibWl0KCkKICAgIGl0eG5fYmVnaW4KICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9mZi9jb250cmFjdC5weToyNTUKICAgIC8vIHNlbmRlcj1HbG9iYWwuY3VycmVudF9hcHBsaWNhdGlvbl9hZGRyZXNzLAogICAgZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9mZi9jb250cmFjdC5weToyNTYKICAgIC8vIHJlY2VpdmVyPVR4bi5zZW5kZXIsCiAgICB0eG4gU2VuZGVyCiAgICAvLyBzbWFydF9jb250cmFjdHMvZmYvY29udHJhY3QucHk6MjU3CiAgICAvLyBhbW91bnQ9cmVmdW5kX2Ftb3VudC5uYXRpdmUKICAgIHVuY292ZXIgMgogICAgYnRvaQogICAgaXR4bl9maWVsZCBBbW91bnQKICAgIGl0eG5fZmllbGQgUmVjZWl2ZXIKICAgIGl0eG5fZmllbGQgU2VuZGVyCiAgICAvLyBzbWFydF9jb250cmFjdHMvZmYvY29udHJhY3QucHk6MjU0CiAgICAvLyBpdHhuLlBheW1lbnQoCiAgICBpbnRjXzAgLy8gcGF5CiAgICBpdHhuX2ZpZWxkIFR5cGVFbnVtCiAgICBpbnRjXzEgLy8gMAogICAgaXR4bl9maWVsZCBGZWUKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9mZi9jb250cmFjdC5weToyNTQtMjU4CiAgICAvLyBpdHhuLlBheW1lbnQoCiAgICAvLyAgICAgc2VuZGVyPUdsb2JhbC5jdXJyZW50X2FwcGxpY2F0aW9uX2FkZHJlc3MsCiAgICAvLyAgICAgcmVjZWl2ZXI9VHhuLnNlbmRlciwKICAgIC8vICAgICBhbW91bnQ9cmVmdW5kX2Ftb3VudC5uYXRpdmUKICAgIC8vICkuc3VibWl0KCkKICAgIGl0eG5fc3VibWl0CiAgICAvLyBzbWFydF9jb250cmFjdHMvZmYvY29udHJhY3QucHk6MjU5CiAgICAvLyBzZWxmLmRvbmF0aW9uc1tkb25hdG9yX2JveF9rZXldID0gVUludDY0KDApCiAgICBmcmFtZV9kaWcgMwogICAgYnl0ZWNfMCAvLyAweDAwMDAwMDAwMDAwMDAwMDAKICAgIGJveF9wdXQKCnJlZnVuZF9pZl9pbmFjdGl2ZV9hZnRlcl9pZl9lbHNlQDU6CiAgICByZXRzdWIKCgovLyBzbWFydF9jb250cmFjdHMuZmYuY29udHJhY3QuUHJvcG9zYWxDb250cmFjdC5mdW5kX2Z1dHVyZV9zZWxmKHByaW1hcnk6IGJ5dGVzLCBiYWNrdXA6IGJ5dGVzLCB1bmxvY2tfdGltZTogYnl0ZXMsIHBheW1lbnQ6IHVpbnQ2NCkgLT4gdm9pZDoKZnVuZF9mdXR1cmVfc2VsZjoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9mZi9jb250cmFjdC5weToyNjItMjcwCiAgICAvLyAjIC0tLS0tLS0tLS0tLS0tLS0tLSBGdXR1cmUgU2VsZiBNZXRob2RzIC0tLS0tLS0tLS0tLS0tLS0tLQogICAgLy8gQGFiaW1ldGhvZCgpCiAgICAvLyBkZWYgZnVuZF9mdXR1cmVfc2VsZigKICAgIC8vICAgICBzZWxmLAogICAgLy8gICAgIHByaW1hcnk6IEFkZHJlc3MsCiAgICAvLyAgICAgYmFja3VwOiBBZGRyZXNzLAogICAgLy8gICAgIHVubG9ja190aW1lOiBVSW50NjQsCiAgICAvLyAgICAgcGF5bWVudDogZ3R4bi5QYXltZW50VHJhbnNhY3Rpb24KICAgIC8vICkgLT4gTm9uZToKICAgIHByb3RvIDQgMAogICAgLy8gc21hcnRfY29udHJhY3RzL2ZmL2NvbnRyYWN0LnB5OjI3MQogICAgLy8gYXNzZXJ0IHBheW1lbnQucmVjZWl2ZXIgPT0gR2xvYmFsLmN1cnJlbnRfYXBwbGljYXRpb25fYWRkcmVzcywgIlBheW1lbnQgbXVzdCBnbyB0byBjb250cmFjdCIKICAgIGZyYW1lX2RpZyAtMQogICAgZ3R4bnMgUmVjZWl2ZXIKICAgIGdsb2JhbCBDdXJyZW50QXBwbGljYXRpb25BZGRyZXNzCiAgICA9PQogICAgYXNzZXJ0IC8vIFBheW1lbnQgbXVzdCBnbyB0byBjb250cmFjdAogICAgLy8gc21hcnRfY29udHJhY3RzL2ZmL2NvbnRyYWN0LnB5OjI3MgogICAgLy8gYXNzZXJ0IHBheW1lbnQuYW1vdW50ID4gMCwgIk11c3QgZnVuZCB3aXRoIHBvc2l0aXZlIGFtb3VudCIKICAgIGZyYW1lX2RpZyAtMQogICAgZ3R4bnMgQW1vdW50CiAgICBkdXAKICAgIGFzc2VydCAvLyBNdXN0IGZ1bmQgd2l0aCBwb3NpdGl2ZSBhbW91bnQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9mZi9jb250cmFjdC5weToyNzMKICAgIC8vIGFzc2VydCBwYXltZW50LnNlbmRlciA9PSBUeG4uc2VuZGVyLCAiRnVuZGluZyBtdXN0IGJlIGZyb20gY2FsbGVyIgogICAgZnJhbWVfZGlnIC0xCiAgICBndHhucyBTZW5kZXIKICAgIHR4biBTZW5kZXIKICAgID09CiAgICBhc3NlcnQgLy8gRnVuZGluZyBtdXN0IGJlIGZyb20gY2FsbGVyCiAgICAvLyBzbWFydF9jb250cmFjdHMvZmYvY29udHJhY3QucHk6Mjc1CiAgICAvLyBpZHggPSBzZWxmLm5vX29mX2Z1dHVyZV9mdW5kcy52YWx1ZQogICAgaW50Y18xIC8vIDAKICAgIGJ5dGVjIDUgLy8gIm5vT2ZGdXR1cmVGdW5kcyIKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi5ub19vZl9mdXR1cmVfZnVuZHMgZXhpc3RzCiAgICAvLyBzbWFydF9jb250cmFjdHMvZmYvY29udHJhY3QucHk6MjgwCiAgICAvLyBhbW91bnQ9VUludDY0KHBheW1lbnQuYW1vdW50KSwKICAgIHN3YXAKICAgIGl0b2IKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9mZi9jb250cmFjdC5weToyNzYtMjgyCiAgICAvLyBzZWxmLmZ1dHVyZUZ1bmRzW2lkeF0gPSBGdXR1cmVGdW5kKAogICAgLy8gICAgIHByaW1hcnk9cHJpbWFyeSwKICAgIC8vICAgICBiYWNrdXA9YmFja3VwLAogICAgLy8gICAgIHVubG9ja190aW1lPXVubG9ja190aW1lLAogICAgLy8gICAgIGFtb3VudD1VSW50NjQocGF5bWVudC5hbW91bnQpLAogICAgLy8gICAgIGNsYWltZWQ9Qm9vbChGYWxzZSkKICAgIC8vICkKICAgIGZyYW1lX2RpZyAtNAogICAgZnJhbWVfZGlnIC0zCiAgICBjb25jYXQKICAgIGZyYW1lX2RpZyAtMgogICAgY29uY2F0CiAgICBzd2FwCiAgICBjb25jYXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9mZi9jb250cmFjdC5weToyODEKICAgIC8vIGNsYWltZWQ9Qm9vbChGYWxzZSkKICAgIGJ5dGVjXzIgLy8gMHgwMAogICAgLy8gc21hcnRfY29udHJhY3RzL2ZmL2NvbnRyYWN0LnB5OjI3Ni0yODIKICAgIC8vIHNlbGYuZnV0dXJlRnVuZHNbaWR4XSA9IEZ1dHVyZUZ1bmQoCiAgICAvLyAgICAgcHJpbWFyeT1wcmltYXJ5LAogICAgLy8gICAgIGJhY2t1cD1iYWNrdXAsCiAgICAvLyAgICAgdW5sb2NrX3RpbWU9dW5sb2NrX3RpbWUsCiAgICAvLyAgICAgYW1vdW50PVVJbnQ2NChwYXltZW50LmFtb3VudCksCiAgICAvLyAgICAgY2xhaW1lZD1Cb29sKEZhbHNlKQogICAgLy8gKQogICAgY29uY2F0CiAgICAvLyBzbWFydF9jb250cmFjdHMvZmYvY29udHJhY3QucHk6Mjc2CiAgICAvLyBzZWxmLmZ1dHVyZUZ1bmRzW2lkeF0gPSBGdXR1cmVGdW5kKAogICAgYnl0ZWMgOSAvLyAiZnV0dXJlRnVuZF8iCiAgICBkaWcgMgogICAgY29uY2F0CiAgICAvLyBzbWFydF9jb250cmFjdHMvZmYvY29udHJhY3QucHk6Mjc2LTI4MgogICAgLy8gc2VsZi5mdXR1cmVGdW5kc1tpZHhdID0gRnV0dXJlRnVuZCgKICAgIC8vICAgICBwcmltYXJ5PXByaW1hcnksCiAgICAvLyAgICAgYmFja3VwPWJhY2t1cCwKICAgIC8vICAgICB1bmxvY2tfdGltZT11bmxvY2tfdGltZSwKICAgIC8vICAgICBhbW91bnQ9VUludDY0KHBheW1lbnQuYW1vdW50KSwKICAgIC8vICAgICBjbGFpbWVkPUJvb2woRmFsc2UpCiAgICAvLyApCiAgICBzd2FwCiAgICBib3hfcHV0CiAgICAvLyBzbWFydF9jb250cmFjdHMvZmYvY29udHJhY3QucHk6MjgzCiAgICAvLyBzZWxmLm5vX29mX2Z1dHVyZV9mdW5kcy52YWx1ZSA9IFVJbnQ2NChpZHgubmF0aXZlICsgMSkKICAgIGJ0b2kKICAgIGludGNfMCAvLyAxCiAgICArCiAgICBpdG9iCiAgICBieXRlYyA1IC8vICJub09mRnV0dXJlRnVuZHMiCiAgICBzd2FwCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgcmV0c3ViCgoKLy8gc21hcnRfY29udHJhY3RzLmZmLmNvbnRyYWN0LlByb3Bvc2FsQ29udHJhY3QuY2xhaW1fZnV0dXJlX3NlbGYoZnVuZF9pZDogYnl0ZXMpIC0+IHZvaWQ6CmNsYWltX2Z1dHVyZV9zZWxmOgogICAgLy8gc21hcnRfY29udHJhY3RzL2ZmL2NvbnRyYWN0LnB5OjI4Ni0yODcKICAgIC8vIEBhYmltZXRob2QoKQogICAgLy8gZGVmIGNsYWltX2Z1dHVyZV9zZWxmKHNlbGYsIGZ1bmRfaWQ6IFVJbnQ2NCkgLT4gTm9uZToKICAgIHByb3RvIDEgMAogICAgLy8gc21hcnRfY29udHJhY3RzL2ZmL2NvbnRyYWN0LnB5OjI4OAogICAgLy8gYXNzZXJ0IGZ1bmRfaWQgaW4gc2VsZi5mdXR1cmVGdW5kcywgIkZ1bmQgZG9lcyBub3QgZXhpc3QiCiAgICBieXRlYyA5IC8vICJmdXR1cmVGdW5kXyIKICAgIGZyYW1lX2RpZyAtMQogICAgY29uY2F0CiAgICBkdXBuIDIKICAgIGJveF9sZW4KICAgIGJ1cnkgMQogICAgYXNzZXJ0IC8vIEZ1bmQgZG9lcyBub3QgZXhpc3QKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9mZi9jb250cmFjdC5weToyODkKICAgIC8vIGZ1bmQgPSBzZWxmLmZ1dHVyZUZ1bmRzW2Z1bmRfaWRdLmNvcHkoKQogICAgYm94X2dldAogICAgc3dhcAogICAgZHVwCiAgICB1bmNvdmVyIDIKICAgIGFzc2VydCAvLyBjaGVjayBzZWxmLmZ1dHVyZUZ1bmRzIGVudHJ5IGV4aXN0cwogICAgLy8gc21hcnRfY29udHJhY3RzL2ZmL2NvbnRyYWN0LnB5OjI5MQogICAgLy8gYXNzZXJ0IG5vdCBmdW5kLmNsYWltZWQsICJBbHJlYWR5IGNsYWltZWQiCiAgICBkdXAKICAgIHB1c2hpbnQgNjQwIC8vIDY0MAogICAgZ2V0Yml0CiAgICBieXRlY18yIC8vIDB4MDAKICAgIGludGNfMSAvLyAwCiAgICB1bmNvdmVyIDIKICAgIHNldGJpdAogICAgYnl0ZWNfMiAvLyAweDAwCiAgICA9PQogICAgYXNzZXJ0IC8vIEFscmVhZHkgY2xhaW1lZAogICAgLy8gc21hcnRfY29udHJhY3RzL2ZmL2NvbnRyYWN0LnB5OjI5MgogICAgLy8gYXNzZXJ0IEdsb2JhbC5sYXRlc3RfdGltZXN0YW1wID49IGZ1bmQudW5sb2NrX3RpbWUubmF0aXZlLCAiVG9vIGVhcmx5IHRvIGNsYWltIgogICAgZ2xvYmFsIExhdGVzdFRpbWVzdGFtcAogICAgZGlnIDEKICAgIHB1c2hpbnQgNjQgLy8gNjQKICAgIGV4dHJhY3RfdWludDY0CiAgICA+PQogICAgYXNzZXJ0IC8vIFRvbyBlYXJseSB0byBjbGFpbQogICAgLy8gc21hcnRfY29udHJhY3RzL2ZmL2NvbnRyYWN0LnB5OjI5MwogICAgLy8gYXNzZXJ0IFR4bi5zZW5kZXIgPT0gZnVuZC5wcmltYXJ5IG9yIFR4bi5zZW5kZXIgPT0gZnVuZC5iYWNrdXAsICJOb3QgYXV0aG9yaXplZCIKICAgIGV4dHJhY3QgMCAzMiAvLyBvbiBlcnJvcjogSW5kZXggYWNjZXNzIGlzIG91dCBvZiBib3VuZHMKICAgIHR4biBTZW5kZXIKICAgID09CiAgICBibnogY2xhaW1fZnV0dXJlX3NlbGZfYm9vbF90cnVlQDIKICAgIGZyYW1lX2RpZyAxCiAgICBleHRyYWN0IDMyIDMyIC8vIG9uIGVycm9yOiBJbmRleCBhY2Nlc3MgaXMgb3V0IG9mIGJvdW5kcwogICAgdHhuIFNlbmRlcgogICAgPT0KICAgIGJ6IGNsYWltX2Z1dHVyZV9zZWxmX2Jvb2xfZmFsc2VAMwoKY2xhaW1fZnV0dXJlX3NlbGZfYm9vbF90cnVlQDI6CiAgICBpbnRjXzAgLy8gMQoKY2xhaW1fZnV0dXJlX3NlbGZfYm9vbF9tZXJnZUA0OgogICAgLy8gc21hcnRfY29udHJhY3RzL2ZmL2NvbnRyYWN0LnB5OjI5MwogICAgLy8gYXNzZXJ0IFR4bi5zZW5kZXIgPT0gZnVuZC5wcmltYXJ5IG9yIFR4bi5zZW5kZXIgPT0gZnVuZC5iYWNrdXAsICJOb3QgYXV0aG9yaXplZCIKICAgIGFzc2VydCAvLyBOb3QgYXV0aG9yaXplZAogICAgLy8gc21hcnRfY29udHJhY3RzL2ZmL2NvbnRyYWN0LnB5OjI5NS0yOTkKICAgIC8vIGl0eG4uUGF5bWVudCgKICAgIC8vICAgICBzZW5kZXI9R2xvYmFsLmN1cnJlbnRfYXBwbGljYXRpb25fYWRkcmVzcywKICAgIC8vICAgICByZWNlaXZlcj1UeG4uc2VuZGVyLAogICAgLy8gICAgIGFtb3VudD1mdW5kLmFtb3VudC5uYXRpdmUKICAgIC8vICkuc3VibWl0KCkKICAgIGl0eG5fYmVnaW4KICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9mZi9jb250cmFjdC5weToyOTYKICAgIC8vIHNlbmRlcj1HbG9iYWwuY3VycmVudF9hcHBsaWNhdGlvbl9hZGRyZXNzLAogICAgZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9mZi9jb250cmFjdC5weToyOTcKICAgIC8vIHJlY2VpdmVyPVR4bi5zZW5kZXIsCiAgICB0eG4gU2VuZGVyCiAgICAvLyBzbWFydF9jb250cmFjdHMvZmYvY29udHJhY3QucHk6Mjk4CiAgICAvLyBhbW91bnQ9ZnVuZC5hbW91bnQubmF0aXZlCiAgICBmcmFtZV9kaWcgMQogICAgZHVwCiAgICBjb3ZlciAzCiAgICBwdXNoaW50IDcyIC8vIDcyCiAgICBleHRyYWN0X3VpbnQ2NAogICAgaXR4bl9maWVsZCBBbW91bnQKICAgIGl0eG5fZmllbGQgUmVjZWl2ZXIKICAgIGl0eG5fZmllbGQgU2VuZGVyCiAgICAvLyBzbWFydF9jb250cmFjdHMvZmYvY29udHJhY3QucHk6Mjk1CiAgICAvLyBpdHhuLlBheW1lbnQoCiAgICBpbnRjXzAgLy8gcGF5CiAgICBpdHhuX2ZpZWxkIFR5cGVFbnVtCiAgICBpbnRjXzEgLy8gMAogICAgaXR4bl9maWVsZCBGZWUKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9mZi9jb250cmFjdC5weToyOTUtMjk5CiAgICAvLyBpdHhuLlBheW1lbnQoCiAgICAvLyAgICAgc2VuZGVyPUdsb2JhbC5jdXJyZW50X2FwcGxpY2F0aW9uX2FkZHJlc3MsCiAgICAvLyAgICAgcmVjZWl2ZXI9VHhuLnNlbmRlciwKICAgIC8vICAgICBhbW91bnQ9ZnVuZC5hbW91bnQubmF0aXZlCiAgICAvLyApLnN1Ym1pdCgpCiAgICBpdHhuX3N1Ym1pdAogICAgLy8gc21hcnRfY29udHJhY3RzL2ZmL2NvbnRyYWN0LnB5OjMwMQogICAgLy8gZnVuZC5jbGFpbWVkID0gQm9vbChUcnVlKQogICAgcHVzaGludCA2NDAgLy8gNjQwCiAgICBpbnRjXzAgLy8gMQogICAgc2V0Yml0CiAgICAvLyBzbWFydF9jb250cmFjdHMvZmYvY29udHJhY3QucHk6MzAyCiAgICAvLyBzZWxmLmZ1dHVyZUZ1bmRzW2Z1bmRfaWRdID0gZnVuZC5jb3B5KCkKICAgIGZyYW1lX2RpZyAwCiAgICBzd2FwCiAgICBib3hfcHV0CiAgICByZXRzdWIKCmNsYWltX2Z1dHVyZV9zZWxmX2Jvb2xfZmFsc2VAMzoKICAgIGludGNfMSAvLyAwCiAgICBiIGNsYWltX2Z1dHVyZV9zZWxmX2Jvb2xfbWVyZ2VANAo=", "clear": "I3ByYWdtYSB2ZXJzaW9uIDEwCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBhbGdvcHkuYXJjNC5BUkM0Q29udHJhY3QuY2xlYXJfc3RhdGVfcHJvZ3JhbSgpIC0+IHVpbnQ2NDoKbWFpbjoKICAgIHB1c2hpbnQgMSAvLyAxCiAgICByZXR1cm4K" }, "byteCode": { "approval": "CiAFAQACOKACJgoIAAAAAAAAAAACAAABAAlwcm9wb3NhbHMNbm9PZlByb3Bvc2Fscw9ub09mRnV0dXJlRnVuZHMCAAIPbWlsZXN0b25lVm90ZXNfCWRvbmF0aW9ucwtmdXR1cmVGdW5kXzEYQAAIJwQoZycFKGcxG0EA8oIIBGpQHlgEh2dV0ARVb4LDBIxQfxgEJ5TZYwTmQFnRBOkSgiYEJmlWdzYaAI4IAIsAcgBgAE4APwAwABEAAiNDMRkURDEYRDYaAYgHbyJDMRkURDEYRDYaATYaAjYaAzEWIglJOBAiEkSIBxQiQzEZFEQxGEQ2GgGIBloiQzEZFEQxGEQ2GgGIBXYiQzEZFEQxGEQ2GgE2GgKIBDIiQzEZFEQxGEQ2GgE2GgKIAyUiQzEZFEQxGEQ2GgExFiIJSTgQIhJEiAKWIkMxGRREMRhENhoBNhoCNhoDNhoENhoFNhoGMRYiCUk4ECISRIgBEiJDMRlA/0gxGBREIkOKBAGAAEmL/iQLi/wkCyOLBIsDDEEAHIv9iwRJTgJZiwIIFlcGAosBTFCMASQIjARC/9yL/RWMACOMBIsEiwIMQQAci/+LBElOAlmLAAgWVwYCiwFMUIwBJAiMBEL/3Iv8i/4IFlcGAosBUIv9iwOLAFJQi/8Vi/+LAk8CUlCMAImKAwGL/VEAAkkXi/1XAgCL/yQLSwFMWYv/IggkC0lOBEsCTFlLAhVLBIv/CSIJSwFPA08CTUlLAwlOBYv+FU4FSwMjTwRSi/5QTwNPAk8DUlBMJAuLAYsFDEEAIIsESYsBSU4DWYsDCIsCCRZXBgJLAkxdjAQkCIwBQv/YiwCLBFCMAImKBwCL/zgIgYCJehJEi/84BzIKEkSL/zgAMQASRCMnBGVEKSOL/iNZI4sEiwMMQQB9i/5XAgCLBElOAiQLSwFMWU8CIghJjASLA0sBCUsDFU8CJAtLBExZTwJNUkkjWUsBFUsCTgJSSwFXAghLARWBNQiAAgA1TwJQTBZXBgJQKFAoUChQKlAoUChQTFApUCcGTFCLAUkjWUxXAgAiTwOI/lmMASRbiwIIjAJC/3uLAhaL/ahEi/0opUSLAUkjWUlEgQUORIv5VwIAFUSL+lcCABVEi/tXAgAVRDEAMgcWi/kVgVoISRZXBgKAAgBaTFCL+hVPAghJFlcGAk8CTFCL+xVPAghJFlcGAk8CTFCL/BVPAghMi/1QTwNQKFBMFlcGAlAoUChQKFBMUIv5UIv6UIv7UIv8UExQK4sASU4DUEm8SEy/JwdMUEm8SCm/IycEZUQXIggWJwRMZ4mKAgAri/5QRwK9RQFEvkxJTwJESVcwCExXCAikRIv/OAiL/zgAi/5MUIv/OAcyChJEJwhMUEm9RQFAAC6LAUmBQlsiCBZcQowBiwIWv4sBSYE6WyIIFlw6SYEwW4sCCBZcMIsASbxITL+JSb5EF4sCCBa/Qv/XigIAgAAri/5QRwK9RQFEvkxJTwJESVcQIDEAEkRJVzAISwFXCAinREmBSltJTwJJJVlJTgJOA0kVTE4CUklOAiNZSU4CDEQyBykjiwmLBgxBAI2LBVcCAIsJSU4CJAtLAUxZSwIiCEmMAIsGSwEJSwMVTwIkC0sETFlPAk1STIsDEkEAQ0mBClkjTFiL/1CLB0lOAhZcJUyBtAEIFlwtIQQjVChcDChcFChcHCcGTFCLCEkjWUxXAgAiTwOI/GqMCIsAjAlC/4MnBkxQiwhJI1lMVwIAIk8DiPxOjAhC/+GLAiOLBFiLCFCLAUm8SEy/JweL/lBJvEgpv4mKAgAri/5QRwK9RQFEvkxJTwJESYFKW0lPAkklWUsBFVJJVwIASwIkC0sBTFlPAiNZTwMiCExLAQlLAxVPAiQLSwRMWU8CTVInB4v+UEm+TElPAkQjWSOLB4sGDEEAG4sFVwIAiwdJTgKBIAuBIFgxABNEIgiMB0L/3YsBVxAgMQATRIsDSYEKWUsBFUsCTgJSKRNEMgdMgS1bDESL/jEAUCcITFBJvUUBRL5ESYAIAAAAAAAPQkCnRBeBwIQ9CpKL/yoTQQBaiwNJgQxbTwIIFlwMjAOLA0mBHFsiCBZcHIsFVwIAMQBQSRWBIAoWVwYCTFCLBEm8SEy/iwBJvkRJJVlLARVLAksCTwJSTwSLAoj7nE8CI08DWExQSwG8SL+JiwNJgRRbTwIIFlwUjANC/6OKAQAri/9QSb1FAURJvkRJgUpbSwElWUsCFUsDTgJSSVcCAEsCJAtLAUxZTwIjWUsDIghMSwEJSwMVSwIkC0sFTFlPAk1PA08DTwJSMgdLAYEKWUsCFUsDTgJSKRNESwGBJVtESwGBLVsNREmBDFtLAYEUWw1ESSEEUyojTwJUKhJETwNXECCxMgpLAiRbsgiyALIHIrIQI7IBsyEEIlRLA75ESSVZSwEVSwJLAk8CUk8DTwWI+sZPAiNPA1hMUEsCvEhLAky/FksBvkRMXEpLAbxIv4mKAQCAAEkri/9QSb1FAUS+TElPAkRJgUpbSwElWUsCFU8DTgJSSVcCAEsCJAtLAUxZTwIjWU8DIghMSwEJSwMVTwIkC0sETFlPAk1SMgdMgSVbCYv/MQBQJwhMUElOAkm9RQFEvkxOAkSB8AENQQA6iwJJgQhbTIEwW0mMAQmMAIsEKKVBACOLBBeLAAuLAQoWsTIKMQBPAheyCLIHsgAishAjsgGziwMov4mKBACL/zgHMgoSRIv/OAhJRIv/OAAxABJEIycFZURMFov8i/1Qi/5QTFAqUCcJSwJQTL8XIggWJwVMZ4mKAQAnCYv/UEcCvUUBRL5MSU8CREmBgAVTKiNPAlQqEkQyB0sBgUBbD0RXACAxABJAAAuLAVcgIDEAEkEAJiJEsTIKMQCLAUlOA4FIW7IIsgeyACKyECOyAbOBgAUiVIsATL+JI0L/1w==", "clear": "CoEBQw==" }, "compilerInfo": { "compiler": "puya", "compilerVersion": { "major": 4, "minor": 7, "patch": 0 } }, "events": [], "templateVariables": {} }