60806040526040518060400160405280600581526020017f2e6a736f6e0000000000000000000000000000000000000000000000000000008152506002908161004891906105cc565b50348015610054575f80fd5b50604051613cad380380613cad833981810160405281019061007691906107bb565b82828261009561008a61010060201b60201c565b61010760201b60201c565b82600590816100a491906105cc565b5081600690816100b491906105cc565b506100c36101c860201b60201c565b60038190555080600190816100d891906105cc565b505050506100f86100ed61010060201b60201c565b6101cc60201b60201c565b505050610965565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f90565b6101e081600b61022660201b90919060201c565b8073ffffffffffffffffffffffffffffffffffffffff167f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f660405160405180910390a250565b61023682826102d060201b60201c565b15610276576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161026d906108b9565b60405180910390fd5b6001825f015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361033f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161033690610947565b60405180910390fd5b825f015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061040d57607f821691505b6020821081036104205761041f6103c9565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026104827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610447565b61048c8683610447565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f6104d06104cb6104c6846104a4565b6104ad565b6104a4565b9050919050565b5f819050919050565b6104e9836104b6565b6104fd6104f5826104d7565b848454610453565b825550505050565b5f90565b610511610505565b61051c8184846104e0565b505050565b5b8181101561053f576105345f82610509565b600181019050610522565b5050565b601f8211156105845761055581610426565b61055e84610438565b8101602085101561056d578190505b61058161057985610438565b830182610521565b50505b505050565b5f82821c905092915050565b5f6105a45f1984600802610589565b1980831691505092915050565b5f6105bc8383610595565b9150826002028217905092915050565b6105d582610392565b67ffffffffffffffff8111156105ee576105ed61039c565b5b6105f882546103f6565b610603828285610543565b5f60209050601f831160018114610634575f8415610622578287015190505b61062c85826105b1565b865550610693565b601f19841661064286610426565b5f5b8281101561066957848901518255600182019150602085019450602081019050610644565b868310156106865784890151610682601f891682610595565b8355505b6001600288020188555050505b505050505050565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b6106cd826106b4565b810181811067ffffffffffffffff821117156106ec576106eb61039c565b5b80604052505050565b5f6106fe61069b565b905061070a82826106c4565b919050565b5f67ffffffffffffffff8211156107295761072861039c565b5b610732826106b4565b9050602081019050919050565b8281835e5f83830152505050565b5f61075f61075a8461070f565b6106f5565b90508281526020810184848401111561077b5761077a6106b0565b5b61078684828561073f565b509392505050565b5f82601f8301126107a2576107a16106ac565b5b81516107b284826020860161074d565b91505092915050565b5f805f606084860312156107d2576107d16106a4565b5b5f84015167ffffffffffffffff8111156107ef576107ee6106a8565b5b6107fb8682870161078e565b935050602084015167ffffffffffffffff81111561081c5761081b6106a8565b5b6108288682870161078e565b925050604084015167ffffffffffffffff811115610849576108486106a8565b5b6108558682870161078e565b9150509250925092565b5f82825260208201905092915050565b7f526f6c65733a206163636f756e7420616c72656164792068617320726f6c65005f82015250565b5f6108a3601f8361085f565b91506108ae8261086f565b602082019050919050565b5f6020820190508181035f8301526108d081610897565b9050919050565b7f526f6c65733a206163636f756e7420697320746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61093160228361085f565b915061093c826108d7565b604082019050919050565b5f6020820190508181035f83015261095e81610925565b9050919050565b61333b806109725f395ff3fe608060405234801561000f575f80fd5b5060043610610140575f3560e01c80638da5cb5b116100b6578063a22cb4651161007a578063a22cb4651461034c578063aa271e1a14610368578063b88d4fde14610398578063c87b56dd146103b4578063e985e9c5146103e4578063f2fde38b1461041457610140565b80638da5cb5b146102ce57806395d89b41146102ec578063983b2d561461030a5780639865027514610326578063a0bcfc7f1461033057610140565b806323b872dd1161010857806323b872dd146101fc57806340c10f191461021857806342842e0e146102485780636352211e1461026457806370a0823114610294578063715018a6146102c457610140565b806301ffc9a71461014457806306fdde0314610174578063081812fc14610192578063095ea7b3146101c257806318160ddd146101de575b5f80fd5b61015e60048036038101906101599190612367565b610430565b60405161016b91906123ac565b60405180910390f35b61017c610511565b6040516101899190612435565b60405180910390f35b6101ac60048036038101906101a79190612488565b6105a1565b6040516101b991906124f2565b60405180910390f35b6101dc60048036038101906101d79190612535565b610619565b005b6101e6610722565b6040516101f39190612582565b60405180910390f35b6102166004803603810190610211919061259b565b610738565b005b610232600480360381019061022d9190612535565b610748565b60405161023f91906123ac565b60405180910390f35b610262600480360381019061025d919061259b565b6107f0565b005b61027e60048036038101906102799190612488565b61080f565b60405161028b91906124f2565b60405180910390f35b6102ae60048036038101906102a991906125eb565b610823565b6040516102bb9190612582565b60405180910390f35b6102cc6108ed565b005b6102d6610974565b6040516102e391906124f2565b60405180910390f35b6102f461099b565b6040516103019190612435565b60405180910390f35b610324600480360381019061031f91906125eb565b610a2b565b005b61032e610a86565b005b61034a60048036038101906103459190612742565b610a98565b005b610366600480360381019061036191906127b3565b610b27565b005b610382600480360381019061037d91906125eb565b610c99565b60405161038f91906123ac565b60405180910390f35b6103b260048036038101906103ad919061288f565b610cb5565b005b6103ce60048036038101906103c99190612488565b610d31565b6040516103db9190612435565b60405180910390f35b6103fe60048036038101906103f9919061290f565b610e59565b60405161040b91906123ac565b60405180910390f35b61042e600480360381019061042991906125eb565b610ee7565b005b5f7f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806104fa57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061050a575061050982610fdd565b5b9050919050565b6060600580546105209061297a565b80601f016020809104026020016040519081016040528092919081815260200182805461054c9061297a565b80156105975780601f1061056e57610100808354040283529160200191610597565b820191905f5260205f20905b81548152906001019060200180831161057a57829003601f168201915b5050505050905090565b5f6105ab82611046565b6105e1576040517fcf4700e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60095f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b5f6106238261080f565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361068a576040517f943f7b8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166106a9611090565b73ffffffffffffffffffffffffffffffffffffffff16141580156106db57506106d9816106d4611090565b610e59565b155b15610712576040517fcfb3b94200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61071d838383611097565b505050565b5f61072b611146565b6004546003540303905090565b61074383838361114a565b505050565b5f610759610754611090565b610c99565b610798576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078f90612a1a565b60405180910390fd5b6107a28383611614565b818373ffffffffffffffffffffffffffffffffffffffff167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d412139688560405160405180910390a36001905092915050565b61080a83838360405180602001604052805f815250610cb5565b505050565b5f61081982611631565b5f01519050919050565b5f8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610889576040517f8f4eb60400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f015f9054906101000a900467ffffffffffffffff1667ffffffffffffffff169050919050565b6108f5611090565b73ffffffffffffffffffffffffffffffffffffffff16610913610974565b73ffffffffffffffffffffffffffffffffffffffff1614610969576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096090612a82565b60405180910390fd5b6109725f6118ae565b565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600680546109aa9061297a565b80601f01602080910402602001604051908101604052809291908181526020018280546109d69061297a565b8015610a215780601f106109f857610100808354040283529160200191610a21565b820191905f5260205f20905b815481529060010190602001808311610a0457829003601f168201915b5050505050905090565b610a3b610a36611090565b610c99565b610a7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7190612a1a565b60405180910390fd5b610a838161196f565b50565b610a96610a91611090565b6119c9565b565b610aa0611090565b73ffffffffffffffffffffffffffffffffffffffff16610abe610974565b73ffffffffffffffffffffffffffffffffffffffff1614610b14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0b90612a82565b60405180910390fd5b8060019081610b239190612c3d565b5050565b610b2f611090565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610b93576040517fb06307db00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600a5f610b9f611090565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16610c48611090565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051610c8d91906123ac565b60405180910390a35050565b5f610cae82600b611a2390919063ffffffff16565b9050919050565b610cc084848461114a565b610cdf8373ffffffffffffffffffffffffffffffffffffffff16611ae5565b8015610cf45750610cf284848484611b07565b155b15610d2b576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b6060610d3c82611046565b610d7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7290612d7c565b60405180910390fd5b5f60018054610d899061297a565b80601f0160208091040260200160405190810160405280929190818152602001828054610db59061297a565b8015610e005780601f10610dd757610100808354040283529160200191610e00565b820191905f5260205f20905b815481529060010190602001808311610de357829003601f168201915b505050505090505f815111610e235760405180602001604052805f815250610e51565b80610e2d84611c52565b6002604051602001610e4193929190612e54565b6040516020818303038152906040525b915050919050565b5f600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b610eef611090565b73ffffffffffffffffffffffffffffffffffffffff16610f0d610974565b73ffffffffffffffffffffffffffffffffffffffff1614610f63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5a90612a82565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610fd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc890612ef4565b60405180910390fd5b610fda816118ae565b50565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f81611050611146565b1115801561105f575060035482105b8015611089575060075f8381526020019081526020015f205f01601c9054906101000a900460ff16155b9050919050565b5f33905090565b8260095f8481526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b5f90565b5f61115482611631565b90505f815f015173ffffffffffffffffffffffffffffffffffffffff16611179611090565b73ffffffffffffffffffffffffffffffffffffffff1614806111ab57506111aa825f01516111a5611090565b610e59565b5b806111f057506111b9611090565b73ffffffffffffffffffffffffffffffffffffffff166111d8846105a1565b73ffffffffffffffffffffffffffffffffffffffff16145b905080611229576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16825f015173ffffffffffffffffffffffffffffffffffffffff1614611291576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036112f6576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113038585856001611dab565b6113115f84845f0151611097565b600160085f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f015f8282829054906101000a900467ffffffffffffffff160392506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550600160085f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f015f8282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508360075f8581526020019081526020015f205f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055504260075f8581526020019081526020015f205f0160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505f6001840190505f73ffffffffffffffffffffffffffffffffffffffff1660075f8381526020019081526020015f205f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036115a4576003548110156115a357825f015160075f8381526020019081526020015f205f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550826020015160075f8381526020019081526020015f205f0160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505b5b50828473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461160d8585856001611db1565b5050505050565b61162d828260405180602001604052805f815250611db7565b5050565b6116396122c1565b5f82905080611646611146565b11158015611655575060035481105b15611877575f60075f8381526020019081526020015f206040518060600160405290815f82015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020015f820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020015f8201601c9054906101000a900460ff16151515158152505090508060400151611875575f73ffffffffffffffffffffffffffffffffffffffff16815f015173ffffffffffffffffffffffffffffffffffffffff16146117615780925050506118a9565b5b6001156118745781806001900392505060075f8381526020019081526020015f206040518060600160405290815f82015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020015f820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020015f8201601c9054906101000a900460ff16151515158152505090505f73ffffffffffffffffffffffffffffffffffffffff16815f015173ffffffffffffffffffffffffffffffffffffffff161461186f5780925050506118a9565b611762565b5b505b6040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b61198381600b611dc990919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f660405160405180910390a250565b6119dd81600b611e6d90919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669260405160405180910390a250565b5f8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611a92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8990612f82565b60405180910390fd5b825f015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b5f808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b5f8373ffffffffffffffffffffffffffffffffffffffff1663150b7a02611b2c611090565b8786866040518563ffffffff1660e01b8152600401611b4e9493929190612ff2565b6020604051808303815f875af1925050508015611b8957506040513d601f19601f82011682018060405250810190611b869190613050565b60015b611bff573d805f8114611bb7576040519150601f19603f3d011682016040523d82523d5f602084013e611bbc565b606091505b505f815103611bf7576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050949350505050565b60605f8203611c98576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050611da6565b5f8290505f5b5f8214611cc7578080611cb0906130a8565b915050600a82611cc0919061311c565b9150611c9e565b5f8167ffffffffffffffff811115611ce257611ce161261e565b5b6040519080825280601f01601f191660200182016040528015611d145781602001600182028036833780820191505090505b5090505b5f8514611d9f57600182611d2c919061314c565b9150600a85611d3b919061317f565b6030611d4791906131af565b60f81b818381518110611d5d57611d5c6131e2565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a905350600a85611d98919061311c565b9450611d18565b8093505050505b919050565b50505050565b50505050565b611dc48383836001611f0f565b505050565b611dd38282611a23565b15611e13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e0a90613259565b60405180910390fd5b6001825f015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b611e778282611a23565b611eb6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ead906132e7565b60405180910390fd5b5f825f015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f60035490505f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603611f7a576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8403611fb3576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611fbf5f868387611dab565b8360085f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f015f8282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508360085f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f0160088282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508460075f8381526020019081526020015f205f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055504260075f8381526020019081526020015f205f0160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505f8190505f858201905083801561217957506121788773ffffffffffffffffffffffffffffffffffffffff16611ae5565b5b1561223b575b818773ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46121ec5f888480600101955088611b07565b612222576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80820361217f578260035414612236575f80fd5b6122a5565b5b818060010192508773ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a480820361223c575b8160038190555050506122ba5f868387611db1565b5050505050565b60405180606001604052805f73ffffffffffffffffffffffffffffffffffffffff1681526020015f67ffffffffffffffff1681526020015f151581525090565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61234681612312565b8114612350575f80fd5b50565b5f813590506123618161233d565b92915050565b5f6020828403121561237c5761237b61230a565b5b5f61238984828501612353565b91505092915050565b5f8115159050919050565b6123a681612392565b82525050565b5f6020820190506123bf5f83018461239d565b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f612407826123c5565b61241181856123cf565b93506124218185602086016123df565b61242a816123ed565b840191505092915050565b5f6020820190508181035f83015261244d81846123fd565b905092915050565b5f819050919050565b61246781612455565b8114612471575f80fd5b50565b5f813590506124828161245e565b92915050565b5f6020828403121561249d5761249c61230a565b5b5f6124aa84828501612474565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6124dc826124b3565b9050919050565b6124ec816124d2565b82525050565b5f6020820190506125055f8301846124e3565b92915050565b612514816124d2565b811461251e575f80fd5b50565b5f8135905061252f8161250b565b92915050565b5f806040838503121561254b5761254a61230a565b5b5f61255885828601612521565b925050602061256985828601612474565b9150509250929050565b61257c81612455565b82525050565b5f6020820190506125955f830184612573565b92915050565b5f805f606084860312156125b2576125b161230a565b5b5f6125bf86828701612521565b93505060206125d086828701612521565b92505060406125e186828701612474565b9150509250925092565b5f60208284031215612600576125ff61230a565b5b5f61260d84828501612521565b91505092915050565b5f80fd5b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612654826123ed565b810181811067ffffffffffffffff821117156126735761267261261e565b5b80604052505050565b5f612685612301565b9050612691828261264b565b919050565b5f67ffffffffffffffff8211156126b0576126af61261e565b5b6126b9826123ed565b9050602081019050919050565b828183375f83830152505050565b5f6126e66126e184612696565b61267c565b9050828152602081018484840111156127025761270161261a565b5b61270d8482856126c6565b509392505050565b5f82601f83011261272957612728612616565b5b81356127398482602086016126d4565b91505092915050565b5f602082840312156127575761275661230a565b5b5f82013567ffffffffffffffff8111156127745761277361230e565b5b61278084828501612715565b91505092915050565b61279281612392565b811461279c575f80fd5b50565b5f813590506127ad81612789565b92915050565b5f80604083850312156127c9576127c861230a565b5b5f6127d685828601612521565b92505060206127e78582860161279f565b9150509250929050565b5f67ffffffffffffffff82111561280b5761280a61261e565b5b612814826123ed565b9050602081019050919050565b5f61283361282e846127f1565b61267c565b90508281526020810184848401111561284f5761284e61261a565b5b61285a8482856126c6565b509392505050565b5f82601f83011261287657612875612616565b5b8135612886848260208601612821565b91505092915050565b5f805f80608085870312156128a7576128a661230a565b5b5f6128b487828801612521565b94505060206128c587828801612521565b93505060406128d687828801612474565b925050606085013567ffffffffffffffff8111156128f7576128f661230e565b5b61290387828801612862565b91505092959194509250565b5f80604083850312156129255761292461230a565b5b5f61293285828601612521565b925050602061294385828601612521565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061299157607f821691505b6020821081036129a4576129a361294d565b5b50919050565b7f4d696e746572526f6c653a2063616c6c657220646f6573206e6f7420686176655f8201527f20746865204d696e74657220726f6c6500000000000000000000000000000000602082015250565b5f612a046030836123cf565b9150612a0f826129aa565b604082019050919050565b5f6020820190508181035f830152612a31816129f8565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612a6c6020836123cf565b9150612a7782612a38565b602082019050919050565b5f6020820190508181035f830152612a9981612a60565b9050919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302612afc7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82612ac1565b612b068683612ac1565b95508019841693508086168417925050509392505050565b5f819050919050565b5f612b41612b3c612b3784612455565b612b1e565b612455565b9050919050565b5f819050919050565b612b5a83612b27565b612b6e612b6682612b48565b848454612acd565b825550505050565b5f90565b612b82612b76565b612b8d818484612b51565b505050565b5b81811015612bb057612ba55f82612b7a565b600181019050612b93565b5050565b601f821115612bf557612bc681612aa0565b612bcf84612ab2565b81016020851015612bde578190505b612bf2612bea85612ab2565b830182612b92565b50505b505050565b5f82821c905092915050565b5f612c155f1984600802612bfa565b1980831691505092915050565b5f612c2d8383612c06565b9150826002028217905092915050565b612c46826123c5565b67ffffffffffffffff811115612c5f57612c5e61261e565b5b612c69825461297a565b612c74828285612bb4565b5f60209050601f831160018114612ca5575f8415612c93578287015190505b612c9d8582612c22565b865550612d04565b601f198416612cb386612aa0565b5f5b82811015612cda57848901518255600182019150602085019450602081019050612cb5565b86831015612cf75784890151612cf3601f891682612c06565b8355505b6001600288020188555050505b505050505050565b7f4d6f6465726e20506f6b657220436c75623a2055524920717565727920666f725f8201527f206e6f6e6578697374656e7420746f6b656e0000000000000000000000000000602082015250565b5f612d666032836123cf565b9150612d7182612d0c565b604082019050919050565b5f6020820190508181035f830152612d9381612d5a565b9050919050565b5f81905092915050565b5f612dae826123c5565b612db88185612d9a565b9350612dc88185602086016123df565b80840191505092915050565b5f8154612de08161297a565b612dea8186612d9a565b9450600182165f8114612e045760018114612e1957612e4b565b60ff1983168652811515820286019350612e4b565b612e2285612aa0565b5f5b83811015612e4357815481890152600182019150602081019050612e24565b838801955050505b50505092915050565b5f612e5f8286612da4565b9150612e6b8285612da4565b9150612e778284612dd4565b9150819050949350505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f612ede6026836123cf565b9150612ee982612e84565b604082019050919050565b5f6020820190508181035f830152612f0b81612ed2565b9050919050565b7f526f6c65733a206163636f756e7420697320746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612f6c6022836123cf565b9150612f7782612f12565b604082019050919050565b5f6020820190508181035f830152612f9981612f60565b9050919050565b5f81519050919050565b5f82825260208201905092915050565b5f612fc482612fa0565b612fce8185612faa565b9350612fde8185602086016123df565b612fe7816123ed565b840191505092915050565b5f6080820190506130055f8301876124e3565b61301260208301866124e3565b61301f6040830185612573565b81810360608301526130318184612fba565b905095945050505050565b5f8151905061304a8161233d565b92915050565b5f602082840312156130655761306461230a565b5b5f6130728482850161303c565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6130b282612455565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036130e4576130e361307b565b5b600182019050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61312682612455565b915061313183612455565b925082613141576131406130ef565b5b828204905092915050565b5f61315682612455565b915061316183612455565b92508282039050818111156131795761317861307b565b5b92915050565b5f61318982612455565b915061319483612455565b9250826131a4576131a36130ef565b5b828206905092915050565b5f6131b982612455565b91506131c483612455565b92508282019050808211156131dc576131db61307b565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f526f6c65733a206163636f756e7420616c72656164792068617320726f6c65005f82015250565b5f613243601f836123cf565b915061324e8261320f565b602082019050919050565b5f6020820190508181035f83015261327081613237565b9050919050565b7f526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c5f8201527f6500000000000000000000000000000000000000000000000000000000000000602082015250565b5f6132d16021836123cf565b91506132dc82613277565b604082019050919050565b5f6020820190508181035f8301526132fe816132c5565b905091905056fea26469706673582212207a5bd8164ba0be1c7d770c476cdca5ca962f7b49ba2ea35236daeaa5789e877764736f6c634300081a0033000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000007536f667474696b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000025354000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002b68747470733a2f2f736f6c616e612d636f6c6c656374696f6e2e73332e616d617a6f6e6177732e636f6d2f000000000000000000000000000000000000000000