6080604052600160065f6101000a81548160ff0219169083151502179055506014600755601460085560026009556002600a556005600b556014600c556005600d555f600e556009600a62000055919062000628565b6301312d0062000066919062000678565b600f556009600a62000079919062000628565b6301312d006200008a919062000678565b6010556009600a6200009d919062000628565b62989680620000ad919062000678565b6011556009600a620000c0919062000628565b6301312d00620000d1919062000678565b6012555f60135f6101000a81548160ff0219169083151502179055505f601460156101000a81548160ff0219169083151502179055505f601460166101000a81548160ff0219169083151502179055503480156200012d575f80fd5b505f6200013f6200046860201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350620001eb6200046860201b60201c565b600660016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a6200023b919062000628565b633b9aca006200024c919062000678565b60015f6200025f6200046860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160035f620002b16200046f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550620003dc6200046860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009600a6200043a919062000628565b633b9aca006200044b919062000678565b6040516200045a9190620006d3565b60405180910390a3620006ee565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156200052057808604811115620004f857620004f762000496565b5b6001851615620005085780820291505b80810290506200051885620004c3565b9450620004d8565b94509492505050565b5f826200053a57600190506200060c565b8162000549575f90506200060c565b81600181146200056257600281146200056d57620005a3565b60019150506200060c565b60ff84111562000582576200058162000496565b5b8360020a9150848211156200059c576200059b62000496565b5b506200060c565b5060208310610133831016604e8410600b8410161715620005dd5782820a905083811115620005d757620005d662000496565b5b6200060c565b620005ec8484846001620004cf565b9250905081840481111562000606576200060562000496565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f620006348262000613565b915062000641836200061c565b9250620006707fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000529565b905092915050565b5f620006848262000613565b9150620006918362000613565b9250828202620006a18162000613565b91508282048414831517620006bb57620006ba62000496565b5b5092915050565b620006cd8162000613565b82525050565b5f602082019050620006e85f830184620006c2565b92915050565b6138e680620006fc5f395ff3fe60806040526004361061019f575f3560e01c80638da5cb5b116100eb578063c9567bf911610089578063dd62ed3e11610063578063dd62ed3e14610562578063ec1f3f631461059e578063f4293890146105c6578063fbc18b6c146105dc576101a6565b8063c9567bf91461050e578063d34628cc14610524578063dbb859c81461054c576101a6565b8063a1780c18116100c5578063a1780c1814610468578063a9059cbb1461047e578063bf474bed146104ba578063c876d0b9146104e4576101a6565b80638da5cb5b146103ea5780638f9a55c01461041457806395d89b411461043e576101a6565b806331c2d8471161015857806370a082311161013257806370a0823114610344578063715018a6146103805780637d1db4a514610396578063802f3caf146103c0576101a6565b806331c2d847146102ca5780633bbac579146102f25780635e4ae81b1461032e576101a6565b806306fdde03146101aa578063095ea7b3146101d45780630faee56f1461021057806318160ddd1461023a57806323b872dd14610264578063313ce567146102a0576101a6565b366101a657005b5f80fd5b3480156101b5575f80fd5b506101be610604565b6040516101cb91906127de565b60405180910390f35b3480156101df575f80fd5b506101fa60048036038101906101f5919061289c565b610641565b60405161020791906128f4565b60405180910390f35b34801561021b575f80fd5b5061022461065e565b604051610231919061291c565b60405180910390f35b348015610245575f80fd5b5061024e610664565b60405161025b919061291c565b60405180910390f35b34801561026f575f80fd5b5061028a60048036038101906102859190612935565b610687565b60405161029791906128f4565b60405180910390f35b3480156102ab575f80fd5b506102b461075b565b6040516102c191906129a0565b60405180910390f35b3480156102d5575f80fd5b506102f060048036038101906102eb9190612af9565b610763565b005b3480156102fd575f80fd5b5061031860048036038101906103139190612b40565b610887565b60405161032591906128f4565b60405180910390f35b348015610339575f80fd5b506103426108d9565b005b34801561034f575f80fd5b5061036a60048036038101906103659190612b40565b610a3b565b604051610377919061291c565b60405180910390f35b34801561038b575f80fd5b50610394610a81565b005b3480156103a1575f80fd5b506103aa610bcf565b6040516103b7919061291c565b60405180910390f35b3480156103cb575f80fd5b506103d4610bd5565b6040516103e191906128f4565b60405180910390f35b3480156103f5575f80fd5b506103fe610be7565b60405161040b9190612b7a565b60405180910390f35b34801561041f575f80fd5b50610428610c0e565b604051610435919061291c565b60405180910390f35b348015610449575f80fd5b50610452610c14565b60405161045f91906127de565b60405180910390f35b348015610473575f80fd5b5061047c610c51565b005b348015610489575f80fd5b506104a4600480360381019061049f919061289c565b610ce9565b6040516104b191906128f4565b60405180910390f35b3480156104c5575f80fd5b506104ce610d06565b6040516104db919061291c565b60405180910390f35b3480156104ef575f80fd5b506104f8610d0c565b60405161050591906128f4565b60405180910390f35b348015610519575f80fd5b50610522610d1e565b005b34801561052f575f80fd5b5061054a60048036038101906105459190612af9565b611243565b005b348015610557575f80fd5b50610560611368565b005b34801561056d575f80fd5b5061058860048036038101906105839190612b93565b611450565b604051610595919061291c565b60405180910390f35b3480156105a9575f80fd5b506105c460048036038101906105bf9190612bd1565b6114d2565b005b3480156105d1575f80fd5b506105da611593565b005b3480156105e7575f80fd5b5061060260048036038101906105fd9190612bd1565b611637565b005b60606040518060400160405280600881526020017f42617365646f6765000000000000000000000000000000000000000000000000815250905090565b5f61065461064d6116e4565b84846116eb565b6001905092915050565b60125481565b5f6009600a6106739190612d58565b633b9aca006106829190612da2565b905090565b5f6106938484846118ae565b6107508461069f6116e4565b61074b856040518060600160405280602881526020016138896028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6107026116e4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461223c9092919063ffffffff16565b6116eb565b600190509392505050565b5f6009905090565b61076b6116e4565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107ee90612e2d565b60405180910390fd5b5f5b8151811015610883575f60045f84848151811061081957610818612e4b565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550808061087b90612e78565b9150506107f9565b5050565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b6108e16116e4565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461096d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096490612e2d565b60405180910390fd5b6009600a61097b9190612d58565b633b9aca0061098a9190612da2565b600f819055506009600a61099e9190612d58565b633b9aca006109ad9190612da2565b6010819055505f60065f6101000a81548160ff0219169083151502179055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a6109fb9190612d58565b633b9aca00610a0a9190612da2565b604051610a17919061291c565b60405180910390a1600160135f6101000a81548160ff021916908315150217905550565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610a896116e4565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0c90612e2d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600f5481565b60135f9054906101000a900460ff1681565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60105481565b60606040518060400160405280600481526020017f424f474500000000000000000000000000000000000000000000000000000000815250905090565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c926116e4565b73ffffffffffffffffffffffffffffffffffffffff1614610cb1575f80fd5b5f610cbb30610a3b565b90505f811115610ccf57610cce8161229e565b5b5f4790505f811115610ce557610ce48161250c565b5b5050565b5f610cfc610cf56116e4565b84846118ae565b6001905092915050565b60115481565b60065f9054906101000a900460ff1681565b610d266116e4565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610db2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da990612e2d565b60405180910390fd5b60148054906101000a900460ff1615610e00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610df790612f09565b60405180910390fd5b734752ba5dbc23f44d87826276bf6fd6b1c372ad24601360016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610e9e30601360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a610e8a9190612d58565b633b9aca00610e999190612da2565b6116eb565b601360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f09573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f2d9190612f3b565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630601360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fb4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fd89190612f3b565b6040518363ffffffff1660e01b8152600401610ff5929190612f66565b6020604051808303815f875af1158015611011573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110359190612f3b565b60145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306110bd30610a3b565b5f806110c7610be7565b426040518863ffffffff1660e01b81526004016110e996959493929190612fcf565b60606040518083038185885af1158015611105573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061112a9190613042565b50505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016111cb929190613092565b6020604051808303815f875af11580156111e7573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061120b91906130e3565b506001601460166101000a81548160ff02191690831515021790555060016014806101000a81548160ff021916908315150217905550565b61124b6116e4565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ce90612e2d565b60405180910390fd5b5f5b815181101561136457600160045f8484815181106112fa576112f9612e4b565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550808061135c90612e78565b9150506112d9565b5050565b5f47116113aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a190613158565b60405180910390fd5b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166113eb6116e4565b73ffffffffffffffffffffffffffffffffffffffff161461140a575f80fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f1935050505015801561144d573d5f803e3d5ffd5b50565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6114da6116e4565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611566576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155d90612e2d565b60405180910390fd5b600954811115801561157a5750600a548111155b611582575f80fd5b8060098190555080600a8190555050565b61159b6116e4565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611627576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161e90612e2d565b60405180910390fd5b5f4790506116348161250c565b50565b61163f6116e4565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c290612e2d565b60405180910390fd5b80600a81905550806008819055506001600d8190555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611759576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611750906131e6565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036117c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117be90613274565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516118a1919061291c565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361191c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191390613302565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361198a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198190613390565b60405180910390fd5b5f81116119cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c39061341e565b60405180910390fd5b5f6119d5610be7565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611a435750611a13610be7565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611f8c57611a8c6064611a7e60135f9054906101000a900460ff16611a6b57600754611a6f565b6009545b8561257590919063ffffffff16565b6125ec90919063ffffffff16565b905060065f9054906101000a900460ff1615611c1557601360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611b4d575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611c14574360055f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410611bd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bc8906134d2565b60405180910390fd5b4360055f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611cbf5750601360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611d12575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611dcc57600f54821115611d5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d539061353a565b60405180910390fd5b60105482611d6985610a3b565b611d739190613558565b1115611db4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dab906135d5565b60405180910390fd5b600e5f815480929190611dc690612e78565b91905055505b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611e5457503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611ea057611e9d6064611e8f60135f9054906101000a900460ff16611e7c57600854611e80565b600a545b8561257590919063ffffffff16565b6125ec90919063ffffffff16565b90505b5f611eaa30610a3b565b9050601460159054906101000a900460ff16158015611f15575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015611f2d5750601460169054906101000a900460ff165b8015611f3a575060115481115b8015611f495750600d54600e54115b15611f8a57611f6b611f6684611f6184601254612635565b612635565b61229e565b5f47905066b1a2bc2ec50000811115611f8857611f874761250c565b5b505b505b5f81111561208b57611fe48160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461264d90919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612082919061291c565b60405180910390a35b6120db8260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546126aa90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061217e61213282846126aa90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461264d90919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61222184866126aa90919063ffffffff16565b60405161222e919061291c565b60405180910390a350505050565b5f838311158290612283576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227a91906127de565b60405180910390fd5b505f838561229191906135f3565b9050809150509392505050565b6001601460156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff8111156122d5576122d46129bd565b5b6040519080825280602002602001820160405280156123035781602001602082028036833780820191505090505b50905030815f8151811061231a57612319612e4b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123bf573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123e39190612f3b565b816001815181106123f7576123f6612e4b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061245e30601360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846116eb565b601360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016124c19594939291906136dd565b5f604051808303815f87803b1580156124d8575f80fd5b505af11580156124ea573d5f803e3d5ffd5b50505050505f601460156101000a81548160ff02191690831515021790555050565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612571573d5f803e3d5ffd5b5050565b5f808303612585575f90506125e6565b5f82846125929190612da2565b90508284826125a19190613762565b146125e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125d890613802565b60405180910390fd5b809150505b92915050565b5f61262d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506126f3565b905092915050565b5f8183116126435782612645565b815b905092915050565b5f80828461265b9190613558565b9050838110156126a0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126979061386a565b60405180910390fd5b8091505092915050565b5f6126eb83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061223c565b905092915050565b5f8083118290612739576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161273091906127de565b60405180910390fd5b505f83856127479190613762565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561278b578082015181840152602081019050612770565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6127b082612754565b6127ba818561275e565b93506127ca81856020860161276e565b6127d381612796565b840191505092915050565b5f6020820190508181035f8301526127f681846127a6565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6128388261280f565b9050919050565b6128488161282e565b8114612852575f80fd5b50565b5f813590506128638161283f565b92915050565b5f819050919050565b61287b81612869565b8114612885575f80fd5b50565b5f8135905061289681612872565b92915050565b5f80604083850312156128b2576128b1612807565b5b5f6128bf85828601612855565b92505060206128d085828601612888565b9150509250929050565b5f8115159050919050565b6128ee816128da565b82525050565b5f6020820190506129075f8301846128e5565b92915050565b61291681612869565b82525050565b5f60208201905061292f5f83018461290d565b92915050565b5f805f6060848603121561294c5761294b612807565b5b5f61295986828701612855565b935050602061296a86828701612855565b925050604061297b86828701612888565b9150509250925092565b5f60ff82169050919050565b61299a81612985565b82525050565b5f6020820190506129b35f830184612991565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6129f382612796565b810181811067ffffffffffffffff82111715612a1257612a116129bd565b5b80604052505050565b5f612a246127fe565b9050612a3082826129ea565b919050565b5f67ffffffffffffffff821115612a4f57612a4e6129bd565b5b602082029050602081019050919050565b5f80fd5b5f612a76612a7184612a35565b612a1b565b90508083825260208201905060208402830185811115612a9957612a98612a60565b5b835b81811015612ac25780612aae8882612855565b845260208401935050602081019050612a9b565b5050509392505050565b5f82601f830112612ae057612adf6129b9565b5b8135612af0848260208601612a64565b91505092915050565b5f60208284031215612b0e57612b0d612807565b5b5f82013567ffffffffffffffff811115612b2b57612b2a61280b565b5b612b3784828501612acc565b91505092915050565b5f60208284031215612b5557612b54612807565b5b5f612b6284828501612855565b91505092915050565b612b748161282e565b82525050565b5f602082019050612b8d5f830184612b6b565b92915050565b5f8060408385031215612ba957612ba8612807565b5b5f612bb685828601612855565b9250506020612bc785828601612855565b9150509250929050565b5f60208284031215612be657612be5612807565b5b5f612bf384828501612888565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115612c7e57808604811115612c5a57612c59612bfc565b5b6001851615612c695780820291505b8081029050612c7785612c29565b9450612c3e565b94509492505050565b5f82612c965760019050612d51565b81612ca3575f9050612d51565b8160018114612cb95760028114612cc357612cf2565b6001915050612d51565b60ff841115612cd557612cd4612bfc565b5b8360020a915084821115612cec57612ceb612bfc565b5b50612d51565b5060208310610133831016604e8410600b8410161715612d275782820a905083811115612d2257612d21612bfc565b5b612d51565b612d348484846001612c35565b92509050818404811115612d4b57612d4a612bfc565b5b81810290505b9392505050565b5f612d6282612869565b9150612d6d83612985565b9250612d9a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612c87565b905092915050565b5f612dac82612869565b9150612db783612869565b9250828202612dc581612869565b91508282048414831517612ddc57612ddb612bfc565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612e1760208361275e565b9150612e2282612de3565b602082019050919050565b5f6020820190508181035f830152612e4481612e0b565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f612e8282612869565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612eb457612eb3612bfc565b5b600182019050919050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f612ef360178361275e565b9150612efe82612ebf565b602082019050919050565b5f6020820190508181035f830152612f2081612ee7565b9050919050565b5f81519050612f358161283f565b92915050565b5f60208284031215612f5057612f4f612807565b5b5f612f5d84828501612f27565b91505092915050565b5f604082019050612f795f830185612b6b565b612f866020830184612b6b565b9392505050565b5f819050919050565b5f819050919050565b5f612fb9612fb4612faf84612f8d565b612f96565b612869565b9050919050565b612fc981612f9f565b82525050565b5f60c082019050612fe25f830189612b6b565b612fef602083018861290d565b612ffc6040830187612fc0565b6130096060830186612fc0565b6130166080830185612b6b565b61302360a083018461290d565b979650505050505050565b5f8151905061303c81612872565b92915050565b5f805f6060848603121561305957613058612807565b5b5f6130668682870161302e565b93505060206130778682870161302e565b92505060406130888682870161302e565b9150509250925092565b5f6040820190506130a55f830185612b6b565b6130b2602083018461290d565b9392505050565b6130c2816128da565b81146130cc575f80fd5b50565b5f815190506130dd816130b9565b92915050565b5f602082840312156130f8576130f7612807565b5b5f613105848285016130cf565b91505092915050565b7f546f6b656e3a206e6f2045544820746f20636c656172000000000000000000005f82015250565b5f61314260168361275e565b915061314d8261310e565b602082019050919050565b5f6020820190508181035f83015261316f81613136565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6131d060248361275e565b91506131db82613176565b604082019050919050565b5f6020820190508181035f8301526131fd816131c4565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61325e60228361275e565b915061326982613204565b604082019050919050565b5f6020820190508181035f83015261328b81613252565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6132ec60258361275e565b91506132f782613292565b604082019050919050565b5f6020820190508181035f830152613319816132e0565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f61337a60238361275e565b915061338582613320565b604082019050919050565b5f6020820190508181035f8301526133a78161336e565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f61340860298361275e565b9150613413826133ae565b604082019050919050565b5f6020820190508181035f830152613435816133fc565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c5f8201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b5f6134bc60498361275e565b91506134c78261343c565b606082019050919050565b5f6020820190508181035f8301526134e9816134b0565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f61352460198361275e565b915061352f826134f0565b602082019050919050565b5f6020820190508181035f83015261355181613518565b9050919050565b5f61356282612869565b915061356d83612869565b925082820190508082111561358557613584612bfc565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f6135bf601a8361275e565b91506135ca8261358b565b602082019050919050565b5f6020820190508181035f8301526135ec816135b3565b9050919050565b5f6135fd82612869565b915061360883612869565b92508282039050818111156136205761361f612bfc565b5b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6136588161282e565b82525050565b5f613669838361364f565b60208301905092915050565b5f602082019050919050565b5f61368b82613626565b6136958185613630565b93506136a083613640565b805f5b838110156136d05781516136b7888261365e565b97506136c283613675565b9250506001810190506136a3565b5085935050505092915050565b5f60a0820190506136f05f83018861290d565b6136fd6020830187612fc0565b818103604083015261370f8186613681565b905061371e6060830185612b6b565b61372b608083018461290d565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61376c82612869565b915061377783612869565b92508261378757613786613735565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6137ec60218361275e565b91506137f782613792565b604082019050919050565b5f6020820190508181035f830152613819816137e0565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613854601b8361275e565b915061385f82613820565b602082019050919050565b5f6020820190508181035f83015261388181613848565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220454aba3ff02d3649bdf31e41eaf5952f6d20072b7a6801e4c6563d8e5c843a9f64736f6c63430008150033