60806040526040518060400160405280600881526020017f5069676779496e75000000000000000000000000000000000000000000000000815250600490816200004a919062000579565b506040518060400160405280600581526020017f50696767790000000000000000000000000000000000000000000000000000008152506005908162000091919062000579565b506009600655600654600a620000a89190620007e3565b6402540be400620000ba919062000834565b600755600654600a620000ce9190620007e3565b6402540be400620000e0919062000834565b600855600860095561dead600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156200013857600080fd5b5060006200014b620002f760201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f806e8b381f563afee8716b997c43301abcc7a93afae0a100b99f3a9f455d441160405160405180910390a350600754600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600754604051620002e9919062000890565b60405180910390a3620008ad565b600033905090565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200038157607f821691505b60208210810362000397576200039662000339565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620004017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620003c2565b6200040d8683620003c2565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b60006200045a620004546200044e8462000425565b6200042f565b62000425565b9050919050565b6000819050919050565b620004768362000439565b6200048e620004858262000461565b848454620003cf565b825550505050565b600090565b620004a562000496565b620004b28184846200046b565b505050565b5b81811015620004da57620004ce6000826200049b565b600181019050620004b8565b5050565b601f8211156200052957620004f3816200039d565b620004fe84620003b2565b810160208510156200050e578190505b620005266200051d85620003b2565b830182620004b7565b50505b505050565b600082821c905092915050565b60006200054e600019846008026200052e565b1980831691505092915050565b60006200056983836200053b565b9150826002028217905092915050565b6200058482620002ff565b67ffffffffffffffff811115620005a0576200059f6200030a565b5b620005ac825462000368565b620005b9828285620004de565b600060209050601f831160018114620005f15760008415620005dc578287015190505b620005e885826200055b565b86555062000658565b601f19841662000601866200039d565b60005b828110156200062b5784890151825560018201915060208501945060208101905062000604565b868310156200064b578489015162000647601f8916826200053b565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620006ee57808604811115620006c657620006c562000660565b5b6001851615620006d65780820291505b8081029050620006e6856200068f565b9450620006a6565b94509492505050565b600082620007095760019050620007dc565b81620007195760009050620007dc565b81600181146200073257600281146200073d5762000773565b6001915050620007dc565b60ff84111562000752576200075162000660565b5b8360020a9150848211156200076c576200076b62000660565b5b50620007dc565b5060208310610133831016604e8410600b8410161715620007ad5782820a905083811115620007a757620007a662000660565b5b620007dc565b620007bc84848460016200069c565b92509050818404811115620007d657620007d562000660565b5b81810290505b9392505050565b6000620007f08262000425565b9150620007fd8362000425565b92506200082c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620006f7565b905092915050565b6000620008418262000425565b91506200084e8362000425565b92508282026200085e8162000425565b9150828204841483151762000878576200087762000660565b5b5092915050565b6200088a8162000425565b82525050565b6000602082019050620008a760008301846200087f565b92915050565b611ce480620008bd6000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c8063686f4b0b11610097578063ce27c89911610066578063ce27c8991461029a578063dd62ed3e146102a4578063df5c8d4a146102d4578063f2363b3214610304576100f5565b8063686f4b0b1461020057806370a082311461021c57806395d89b411461024c578063a9059cbb1461026a576100f5565b806323b872dd116100d357806323b872dd146101665780632b970af414610196578063313ce567146101c6578063503aa6d2146101e4576100f5565b806306fdde03146100fa578063095ea7b31461011857806318160ddd14610148575b600080fd5b610102610322565b60405161010f91906113d4565b60405180910390f35b610132600480360381019061012d919061148f565b6103b4565b60405161013f91906114ea565b60405180910390f35b6101506103d2565b60405161015d9190611514565b60405180910390f35b610180600480360381019061017b919061152f565b6103dc565b60405161018d91906114ea565b60405180910390f35b6101b060048036038101906101ab9190611582565b6104c0565b6040516101bd91906114ea565b60405180910390f35b6101ce6104e0565b6040516101db9190611514565b60405180910390f35b6101fe60048036038101906101f99190611582565b6104ea565b005b61021a60048036038101906102159190611582565b6105c1565b005b61023660048036038101906102319190611582565b610698565b6040516102439190611514565b60405180910390f35b6102546106e1565b60405161026191906113d4565b60405180910390f35b610284600480360381019061027f919061148f565b610773565b60405161029191906114ea565b60405180910390f35b6102a26108c9565b005b6102be60048036038101906102b991906115af565b610a05565b6040516102cb9190611514565b60405180910390f35b6102ee60048036038101906102e99190611582565b610a8c565b6040516102fb91906114ea565b60405180910390f35b61030c610ae2565b60405161031991906115fe565b60405180910390f35b60606004805461033190611648565b80601f016020809104026020016040519081016040528092919081815260200182805461035d90611648565b80156103aa5780601f1061037f576101008083540402835291602001916103aa565b820191906000526020600020905b81548152906001019060200180831161038d57829003601f168201915b5050505050905090565b60006103c86103c1610b0b565b8484610b13565b6001905092915050565b6000600754905090565b60006103e9848484610cdc565b6000600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610434610b0b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156104b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104ab906116eb565b60405180910390fd5b60019150509392505050565b600b6020528060005260406000206000915054906101000a900460ff1681565b6000600654905090565b6104f2610b0b565b73ffffffffffffffffffffffffffffffffffffffff16610510610ae2565b73ffffffffffffffffffffffffffffffffffffffff1614610566576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161055d9061177d565b60405180910390fd5b6001600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6105c9610b0b565b73ffffffffffffffffffffffffffffffffffffffff166105e7610ae2565b73ffffffffffffffffffffffffffffffffffffffff161461063d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106349061177d565b60405180910390fd5b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6060600580546106f090611648565b80601f016020809104026020016040519081016040528092919081815260200182805461071c90611648565b80156107695780601f1061073e57610100808354040283529160200191610769565b820191906000526020600020905b81548152906001019060200180831161074c57829003601f168201915b5050505050905090565b60008061077e610b0b565b90508073ffffffffffffffffffffffffffffffffffffffff1661079f610ae2565b73ffffffffffffffffffffffffffffffffffffffff161480156107f457508373ffffffffffffffffffffffffffffffffffffffff166107dc610ae2565b73ffffffffffffffffffffffffffffffffffffffff16145b156108b3576108606001610852600754600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461111190919063ffffffff16565b61116f90919063ffffffff16565b631dcd650061086f91906117cc565b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6108be818585610cdc565b600191505092915050565b6108d1610b0b565b73ffffffffffffffffffffffffffffffffffffffff166108ef610ae2565b73ffffffffffffffffffffffffffffffffffffffff1614610945576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093c9061177d565b60405180910390fd5b61dead73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f806e8b381f563afee8716b997c43301abcc7a93afae0a100b99f3a9f455d441160405160405180910390a361dead6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610b82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7990611880565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610bf1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be890611912565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610ccf9190611514565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610d4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d42906119a4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610dba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db190611a36565b60405180910390fd5b600115610e325760011515600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503610e3157610e2e600754826111b990919063ffffffff16565b90505b5b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610eb9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb090611ac8565b60405180910390fd5b6000610ee36064610ed56009548661120390919063ffffffff16565b61116f90919063ffffffff16565b9050610f3783600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546111b990919063ffffffff16565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508083600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610fc69190611ae8565b610fd09190611b1c565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516110929190611514565b60405180910390a38373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83866110f59190611b1c565b6040516111029190611514565b60405180910390a35050505050565b60008082846111209190611ae8565b905083811015611165576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115c90611b9c565b60405180910390fd5b8091505092915050565b60006111b183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061127d565b905092915050565b60006111fb83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506112e0565b905092915050565b60008083036112155760009050611277565b6000828461122391906117cc565b90508284826112329190611beb565b14611272576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126990611c8e565b60405180910390fd5b809150505b92915050565b600080831182906112c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112bb91906113d4565b60405180910390fd5b50600083856112d39190611beb565b9050809150509392505050565b6000838311158290611328576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131f91906113d4565b60405180910390fd5b50600083856113379190611b1c565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561137e578082015181840152602081019050611363565b60008484015250505050565b6000601f19601f8301169050919050565b60006113a682611344565b6113b0818561134f565b93506113c0818560208601611360565b6113c98161138a565b840191505092915050565b600060208201905081810360008301526113ee818461139b565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611426826113fb565b9050919050565b6114368161141b565b811461144157600080fd5b50565b6000813590506114538161142d565b92915050565b6000819050919050565b61146c81611459565b811461147757600080fd5b50565b60008135905061148981611463565b92915050565b600080604083850312156114a6576114a56113f6565b5b60006114b485828601611444565b92505060206114c58582860161147a565b9150509250929050565b60008115159050919050565b6114e4816114cf565b82525050565b60006020820190506114ff60008301846114db565b92915050565b61150e81611459565b82525050565b60006020820190506115296000830184611505565b92915050565b600080600060608486031215611548576115476113f6565b5b600061155686828701611444565b935050602061156786828701611444565b92505060406115788682870161147a565b9150509250925092565b600060208284031215611598576115976113f6565b5b60006115a684828501611444565b91505092915050565b600080604083850312156115c6576115c56113f6565b5b60006115d485828601611444565b92505060206115e585828601611444565b9150509250929050565b6115f88161141b565b82525050565b600060208201905061161360008301846115ef565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061166057607f821691505b60208210810361167357611672611619565b5b50919050565b7f4945524332303a207472616e7366657220616d6f756e7420657863656564732060008201527f616c6c6f77616e63650000000000000000000000000000000000000000000000602082015250565b60006116d560298361134f565b91506116e082611679565b604082019050919050565b60006020820190508181036000830152611704816116c8565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f6f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b600061176760218361134f565b91506117728261170b565b604082019050919050565b600060208201905081810360008301526117968161175a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006117d782611459565b91506117e283611459565b92508282026117f081611459565b915082820484148315176118075761180661179d565b5b5092915050565b7f4945524332303a20617070726f76652066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061186a60258361134f565b91506118758261180e565b604082019050919050565b600060208201905081810360008301526118998161185d565b9050919050565b7f4945524332303a20617070726f766520746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006118fc60238361134f565b9150611907826118a0565b604082019050919050565b6000602082019050818103600083015261192b816118ef565b9050919050565b7f4945524332303a207472616e736665722066726f6d20746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061198e60268361134f565b915061199982611932565b604082019050919050565b600060208201905081810360008301526119bd81611981565b9050919050565b7f4945524332303a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000611a2060248361134f565b9150611a2b826119c4565b604082019050919050565b60006020820190508181036000830152611a4f81611a13565b9050919050565b7f4945524332303a207472616e7366657220616d6f756e7473206578636565647360008201527f2062616c616e6365000000000000000000000000000000000000000000000000602082015250565b6000611ab260288361134f565b9150611abd82611a56565b604082019050919050565b60006020820190508181036000830152611ae181611aa5565b9050919050565b6000611af382611459565b9150611afe83611459565b9250828201905080821115611b1657611b1561179d565b5b92915050565b6000611b2782611459565b9150611b3283611459565b9250828203905081811115611b4a57611b4961179d565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000611b86601b8361134f565b9150611b9182611b50565b602082019050919050565b60006020820190508181036000830152611bb581611b79565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000611bf682611459565b9150611c0183611459565b925082611c1157611c10611bbc565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000611c7860218361134f565b9150611c8382611c1c565b604082019050919050565b60006020820190508181036000830152611ca781611c6b565b905091905056fea2646970667358221220bae86aee3ef644d5744c5a4fed4c478c1b7edd2959d071a6394e26783117702864736f6c63430008110033