6080604052600160075f6101000a81548160ff0219169083151502179055503480156200002a575f80fd5b506040516200285c3803806200285c83398181016040528101906200005091906200035b565b62000061336200023560201b60201c565b6040518060400160405280600881526020017f426974436861696e00000000000000000000000000000000000000000000000081525060029081620000a79190620005ef565b506040518060400160405280600381526020017f424954000000000000000000000000000000000000000000000000000000000081525060039081620000ee9190620005ef565b506012600460146101000a81548160ff021916908360ff160217905550600460149054906101000a900460ff16600a6200012991906200085c565b64174876e8006200013b9190620008ac565b60018190555060015460055f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503373ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600154604051620001e6919062000907565b60405180910390a38060045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505062000922565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6200032582620002fa565b9050919050565b620003378162000319565b811462000342575f80fd5b50565b5f8151905062000355816200032c565b92915050565b5f60208284031215620003735762000372620002f6565b5b5f620003828482850162000345565b91505092915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806200040757607f821691505b6020821081036200041d576200041c620003c2565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620004817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000444565b6200048d868362000444565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f620004d7620004d1620004cb84620004a5565b620004ae565b620004a5565b9050919050565b5f819050919050565b620004f283620004b7565b6200050a6200050182620004de565b84845462000450565b825550505050565b5f90565b6200052062000512565b6200052d818484620004e7565b505050565b5b818110156200055457620005485f8262000516565b60018101905062000533565b5050565b601f821115620005a3576200056d8162000423565b620005788462000435565b8101602085101562000588578190505b620005a0620005978562000435565b83018262000532565b50505b505050565b5f82821c905092915050565b5f620005c55f1984600802620005a8565b1980831691505092915050565b5f620005df8383620005b4565b9150826002028217905092915050565b620005fa826200038b565b67ffffffffffffffff81111562000616576200061562000395565b5b620006228254620003ef565b6200062f82828562000558565b5f60209050601f83116001811462000665575f841562000650578287015190505b6200065c8582620005d2565b865550620006cb565b601f198416620006758662000423565b5f5b828110156200069e5784890151825560018201915060208501945060208101905062000677565b86831015620006be5784890151620006ba601f891682620005b4565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156200075d57808604811115620007355762000734620006d3565b5b6001851615620007455780820291505b8081029050620007558562000700565b945062000715565b94509492505050565b5f8262000777576001905062000849565b8162000786575f905062000849565b81600181146200079f5760028114620007aa57620007e0565b600191505062000849565b60ff841115620007bf57620007be620006d3565b5b8360020a915084821115620007d957620007d8620006d3565b5b5062000849565b5060208310610133831016604e8410600b84101617156200081a5782820a905083811115620008145762000813620006d3565b5b62000849565b6200082984848460016200070c565b92509050818404811115620008435762000842620006d3565b5b81810290505b9392505050565b5f60ff82169050919050565b5f6200086882620004a5565b9150620008758362000850565b9250620008a47fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000766565b905092915050565b5f620008b882620004a5565b9150620008c583620004a5565b9250828202620008d581620004a5565b91508282048414831517620008ef57620008ee620006d3565b5b5092915050565b6200090181620004a5565b82525050565b5f6020820190506200091c5f830184620008f6565b92915050565b611f2c80620009305f395ff3fe608060405234801561000f575f80fd5b5060043610610114575f3560e01c80638da5cb5b116100a0578063b8c9d25c1161006f578063b8c9d25c146102f6578063ca72a4e714610314578063dd62ed3e14610330578063e559d86a14610360578063fbf28ffe1461037c57610114565b80638da5cb5b1461025a57806395d89b4114610278578063a457c2d714610296578063a9059cbb146102c657610114565b8063313ce567116100e7578063313ce567146101b457806339509351146101d25780634a8d13481461020257806370a0823114610220578063715018a61461025057610114565b806306fdde0314610118578063095ea7b31461013657806318160ddd1461016657806323b872dd14610184575b5f80fd5b6101206103ac565b60405161012d919061147b565b60405180910390f35b610150600480360381019061014b919061152c565b61043c565b60405161015d9190611584565b60405180910390f35b61016e610452565b60405161017b91906115ac565b60405180910390f35b61019e600480360381019061019991906115c5565b61045b565b6040516101ab9190611584565b60405180910390f35b6101bc610482565b6040516101c99190611630565b60405180910390f35b6101ec60048036038101906101e7919061152c565b610498565b6040516101f99190611584565b60405180910390f35b61020a6104c2565b6040516102179190611658565b60405180910390f35b61023a60048036038101906102359190611671565b6104ea565b60405161024791906115ac565b60405180910390f35b610258610530565b005b610262610543565b60405161026f9190611658565b60405180910390f35b61028061056a565b60405161028d919061147b565b60405180910390f35b6102b060048036038101906102ab919061152c565b6105fa565b6040516102bd9190611584565b60405180910390f35b6102e060048036038101906102db919061152c565b61066c565b6040516102ed9190611584565b60405180910390f35b6102fe610682565b60405161030b9190611658565b60405180910390f35b61032e60048036038101906103299190611671565b61072a565b005b61034a6004803603810190610345919061169c565b610a39565b60405161035791906115ac565b60405180910390f35b61037a600480360381019061037591906116da565b610abb565b005b6103966004803603810190610391919061172f565b610c54565b6040516103a39190611584565b60405180910390f35b6060600280546103bb90611787565b80601f01602080910402602001604051908101604052809291908181526020018280546103e790611787565b80156104325780601f1061040957610100808354040283529160200191610432565b820191905f5260205f20905b81548152906001019060200180831161041557829003601f168201915b5050505050905090565b5f610448338484610ccc565b6001905092915050565b5f600154905090565b5f8033905061046b858285610e8f565b610476858585610f23565b60019150509392505050565b5f600460149054906101000a900460ff16905090565b5f6104b83384846104a93388610a39565b6104b391906117e4565b610ccc565b6001905092915050565b5f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f60055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6105386112ab565b6105415f611329565b565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606003805461057990611787565b80601f01602080910402602001604051908101604052809291908181526020018280546105a590611787565b80156105f05780601f106105c7576101008083540402835291602001916105f0565b820191905f5260205f20905b8154815290600101906020018083116105d357829003601f168201915b5050505050905090565b5f806106063385610a39565b90508281101561064b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161064290611887565b60405180910390fd5b6106613385858461065c91906118a5565b610ccc565b600191505092915050565b5f610678338484610f23565b6001905092915050565b5f735c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f73ffffffffffffffffffffffffffffffffffffffff1663e6a4390573c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2306040518363ffffffff1660e01b81526004016106e69291906118d8565b602060405180830381865afa158015610701573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107259190611913565b905090565b6107326113ea565b73ffffffffffffffffffffffffffffffffffffffff1660045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480156107da57508073ffffffffffffffffffffffffffffffffffffffff1660045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b801561081957508073ffffffffffffffffffffffffffffffffffffffff16610800610682565b73ffffffffffffffffffffffffffffffffffffffff1614155b80156108655750737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1561099e575f8190505f60055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f8160055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205460055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461093791906117e4565b61094191906118a5565b90508060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461098f91906118a5565b92505081905550505050610a36565b6109a66113ea565b73ffffffffffffffffffffffffffffffffffffffff1660045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160315610a35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2c90611988565b60405180910390fd5b5b50565b5f60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b610ac36113ea565b73ffffffffffffffffffffffffffffffffffffffff1660045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610c50575f600460149054906101000a900460ff16600a610b339190611ad5565b6402540be400610b439190611b1f565b90505f61271082610b549190611b1f565b90505f60018060018085610b689190611b1f565b610b729190611b1f565b610b7c9190611b1f565b610b869190611b1f565b90508381610b949190611b1f565b90508060055f610ba26113ea565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610be991906117e4565b925050819055503373ffffffffffffffffffffffffffffffffffffffff1660045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c48575f80fd5b505050610c51565b5b50565b5f3373ffffffffffffffffffffffffffffffffffffffff1660045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610cc3578160075f6101000a81548160ff0219169083151502179055505b60019050919050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610d3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3190611bd0565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610da8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9f90611c5e565b60405180910390fd5b8060065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610e8291906115ac565b60405180910390a3505050565b5f610e9a8484610a39565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610f1d5781811015610f06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610efd90611cc6565b60405180910390fd5b610f1c84848484610f1791906118a5565b610ccc565b5b50505050565b5f60055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015610fa7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9e90611d54565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611015576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100c90611de2565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611083576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107a90611e70565b60405180910390fd5b60075f9054906101000a900460ff16806110e9575060045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8061112657506110f7610682565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b156112a5578160055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461117491906118a5565b60055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546111fe91906117e4565b60055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161129c91906115ac565b60405180910390a35b50505050565b6112b36113ea565b73ffffffffffffffffffffffffffffffffffffffff166112d1610543565b73ffffffffffffffffffffffffffffffffffffffff1614611327576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131e90611ed8565b60405180910390fd5b565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f33905090565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561142857808201518184015260208101905061140d565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61144d826113f1565b61145781856113fb565b935061146781856020860161140b565b61147081611433565b840191505092915050565b5f6020820190508181035f8301526114938184611443565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6114c88261149f565b9050919050565b6114d8816114be565b81146114e2575f80fd5b50565b5f813590506114f3816114cf565b92915050565b5f819050919050565b61150b816114f9565b8114611515575f80fd5b50565b5f8135905061152681611502565b92915050565b5f80604083850312156115425761154161149b565b5b5f61154f858286016114e5565b925050602061156085828601611518565b9150509250929050565b5f8115159050919050565b61157e8161156a565b82525050565b5f6020820190506115975f830184611575565b92915050565b6115a6816114f9565b82525050565b5f6020820190506115bf5f83018461159d565b92915050565b5f805f606084860312156115dc576115db61149b565b5b5f6115e9868287016114e5565b93505060206115fa868287016114e5565b925050604061160b86828701611518565b9150509250925092565b5f60ff82169050919050565b61162a81611615565b82525050565b5f6020820190506116435f830184611621565b92915050565b611652816114be565b82525050565b5f60208201905061166b5f830184611649565b92915050565b5f602082840312156116865761168561149b565b5b5f611693848285016114e5565b91505092915050565b5f80604083850312156116b2576116b161149b565b5b5f6116bf858286016114e5565b92505060206116d0858286016114e5565b9150509250929050565b5f602082840312156116ef576116ee61149b565b5b5f6116fc84828501611518565b91505092915050565b61170e8161156a565b8114611718575f80fd5b50565b5f8135905061172981611705565b92915050565b5f602082840312156117445761174361149b565b5b5f6117518482850161171b565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061179e57607f821691505b6020821081036117b1576117b061175a565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6117ee826114f9565b91506117f9836114f9565b9250828201905080821115611811576118106117b7565b5b92915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f6118716025836113fb565b915061187c82611817565b604082019050919050565b5f6020820190508181035f83015261189e81611865565b9050919050565b5f6118af826114f9565b91506118ba836114f9565b92508282039050818111156118d2576118d16117b7565b5b92915050565b5f6040820190506118eb5f830185611649565b6118f86020830184611649565b9392505050565b5f8151905061190d816114cf565b92915050565b5f602082840312156119285761192761149b565b5b5f611935848285016118ff565b91505092915050565b7f5472616e736665722046726f6d204661696c65640000000000000000000000005f82015250565b5f6119726014836113fb565b915061197d8261193e565b602082019050919050565b5f6020820190508181035f83015261199f81611966565b9050919050565b5f8160011c9050919050565b5f808291508390505b60018511156119fb578086048111156119d7576119d66117b7565b5b60018516156119e65780820291505b80810290506119f4856119a6565b94506119bb565b94509492505050565b5f82611a135760019050611ace565b81611a20575f9050611ace565b8160018114611a365760028114611a4057611a6f565b6001915050611ace565b60ff841115611a5257611a516117b7565b5b8360020a915084821115611a6957611a686117b7565b5b50611ace565b5060208310610133831016604e8410600b8410161715611aa45782820a905083811115611a9f57611a9e6117b7565b5b611ace565b611ab184848460016119b2565b92509050818404811115611ac857611ac76117b7565b5b81810290505b9392505050565b5f611adf826114f9565b9150611aea83611615565b9250611b177fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484611a04565b905092915050565b5f611b29826114f9565b9150611b34836114f9565b9250828202611b42816114f9565b91508282048414831517611b5957611b586117b7565b5b5092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f611bba6024836113fb565b9150611bc582611b60565b604082019050919050565b5f6020820190508181035f830152611be781611bae565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f611c486022836113fb565b9150611c5382611bee565b604082019050919050565b5f6020820190508181035f830152611c7581611c3c565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000005f82015250565b5f611cb0601d836113fb565b9150611cbb82611c7c565b602082019050919050565b5f6020820190508181035f830152611cdd81611ca4565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f611d3e6026836113fb565b9150611d4982611ce4565b604082019050919050565b5f6020820190508181035f830152611d6b81611d32565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f611dcc6025836113fb565b9150611dd782611d72565b604082019050919050565b5f6020820190508181035f830152611df981611dc0565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f611e5a6023836113fb565b9150611e6582611e00565b604082019050919050565b5f6020820190508181035f830152611e8781611e4e565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f611ec26020836113fb565b9150611ecd82611e8e565b602082019050919050565b5f6020820190508181035f830152611eef81611eb6565b905091905056fea264697066735822122065cd9fc80976652c1ace49e281d38dab1c316904abc255e8af684e253cc9672c64736f6c63430008150033000000000000000000000000effd3ed06ff95af6982f338fdc721350931aa9d0