60806040526001600e60006101000a81548160ff0219169083151502179055506001601060006101000a81548160ff0219169083151502179055503480156200004757600080fd5b506040518060400160405280600e81526020017f5065707369204d69632044726f700000000000000000000000000000000000008152506040518060400160405280600c81526020017f50455053494d494344524f5000000000000000000000000000000000000000008152508160009080519060200190620000cc92919062000218565b508060019080519060200190620000e592919062000218565b50505062000108620000fc6200014a60201b60201c565b6200015260201b60201c565b6001600c60006101000a81548161ffff021916908361ffff1602179055506033600c60026101000a81548161ffff021916908361ffff1602179055506200032d565b600033905090565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8280546200022690620002c8565b90600052602060002090601f0160209004810192826200024a576000855562000296565b82601f106200026557805160ff191683800117855562000296565b8280016001018555821562000296579182015b828111156200029557825182559160200191906001019062000278565b5b509050620002a59190620002a9565b5090565b5b80821115620002c4576000816000905550600101620002aa565b5090565b60006002820490506001821680620002e157607f821691505b60208210811415620002f857620002f7620002fe565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b614655806200033d6000396000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c806355f804b31161010f57806395d89b41116100a2578063b88d4fde11610071578063b88d4fde14610532578063c87b56dd1461054e578063e985e9c51461057e578063f2fde38b146105ae576101e5565b806395d89b41146104e4578063a22cb46514610502578063a9ccbf901461051e578063b66a0e5d14610528576101e5565b8063715018a6116100de578063715018a6146104825780637501f7411461048c5780637cb64759146104aa5780638da5cb5b146104c6576101e5565b806355f804b3146103ea57806357fee975146104065780636352211e1461042257806370a0823114610452576101e5565b806323b872dd1161018757806342842e0e1161015657806342842e0e1461038a5780634b3e9a23146103a65780634f6ccce7146103b057806355367ba9146103e0576101e5565b806323b872dd1461030257806329fa5cd51461031e5780632eb4a7ab1461033c5780632f745c591461035a576101e5565b8063095ea7b3116101c3578063095ea7b3146102685780630a398b88146102845780630c9536f2146102b457806318160ddd146102e4576101e5565b806301ffc9a7146101ea57806306fdde031461021a578063081812fc14610238575b600080fd5b61020460048036038101906101ff91906130c3565b6105ca565b60405161021191906136c9565b60405180910390f35b610222610644565b60405161022f91906136ff565b60405180910390f35b610252600480360381019061024d9190613156565b6106d6565b60405161025f9190613662565b60405180910390f35b610282600480360381019061027d9190612fce565b61075b565b005b61029e60048036038101906102999190612e63565b610873565b6040516102ab91906136c9565b60405180910390f35b6102ce60048036038101906102c99190613046565b610893565b6040516102db9190613a41565b60405180910390f35b6102ec610bd7565b6040516102f99190613a41565b60405180910390f35b61031c60048036038101906103179190612ec8565b610be4565b005b610326610c44565b60405161033391906136c9565b60405180910390f35b610344610c57565b60405161035191906136e4565b60405180910390f35b610374600480360381019061036f9190612fce565b610c5d565b6040516103819190613a41565b60405180910390f35b6103a4600480360381019061039f9190612ec8565b610d02565b005b6103ae610d22565b005b6103ca60048036038101906103c59190613156565b610dbb565b6040516103d79190613a41565b60405180910390f35b6103e8610e52565b005b61040460048036038101906103ff9190613115565b610eeb565b005b610420600480360381019061041b919061300a565b610f81565b005b61043c60048036038101906104379190613156565b6110d3565b6040516104499190613662565b60405180910390f35b61046c60048036038101906104679190612e63565b611185565b6040516104799190613a41565b60405180910390f35b61048a61123d565b005b6104946112c5565b6040516104a19190613a41565b60405180910390f35b6104c460048036038101906104bf919061309a565b6112cb565b005b6104ce611351565b6040516104db9190613662565b60405180910390f35b6104ec61137b565b6040516104f991906136ff565b60405180910390f35b61051c60048036038101906105179190612f92565b61140d565b005b61052661158e565b005b610530611627565b005b61054c60048036038101906105479190612f17565b6116c0565b005b61056860048036038101906105639190613156565b611722565b60405161057591906136ff565b60405180910390f35b61059860048036038101906105939190612e8c565b6117c9565b6040516105a591906136c9565b60405180910390f35b6105c860048036038101906105c39190612e63565b61185d565b005b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061063d575061063c82611955565b5b9050919050565b60606000805461065390613d20565b80601f016020809104026020016040519081016040528092919081815260200182805461067f90613d20565b80156106cc5780601f106106a1576101008083540402835291602001916106cc565b820191906000526020600020905b8154815290600101906020018083116106af57829003601f168201915b5050505050905090565b60006106e182611a37565b610720576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071790613901565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610766826110d3565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156107d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107ce906139a1565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166107f6611aa3565b73ffffffffffffffffffffffffffffffffffffffff16148061082557506108248161081f611aa3565b6117c9565b5b610864576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085b90613861565b60405180910390fd5b61086e8383611aab565b505050565b600b6020528060005260406000206000915054906101000a900460ff1681565b6000600e60009054906101000a900460ff16156109695781336040516020016108bc91906135f7565b6040516020818303038152906040528051906020012014610912576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610909906139c1565b60405180910390fd5b610929600d548385611b649092919063ffffffff16565b610968576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161095f90613841565b60405180910390fd5b5b60011515601060009054906101000a900460ff161515146109bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109b6906138c1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610a2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2690613a21565b60405180910390fd5b60001515600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514610ac2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab990613981565b60405180910390fd5b610765600c60029054906101000a900461ffff1661ffff161115610b1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1290613721565b60405180910390fd5b610b6233600c600281819054906101000a900461ffff1680929190610b3f90613d83565b91906101000a81548161ffff021916908361ffff16021790555061ffff16611c40565b6001600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600c60029054906101000a900461ffff1661ffff16905092915050565b6000600880549050905090565b610bf5610bef611aa3565b82611c5e565b610c34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2b906139e1565b60405180910390fd5b610c3f838383611d3c565b505050565b600e60009054906101000a900460ff1681565b600d5481565b6000610c6883611185565b8210610ca9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca090613741565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b610d1d838383604051806020016040528060008152506116c0565b505050565b610d2a611aa3565b73ffffffffffffffffffffffffffffffffffffffff16610d48611351565b73ffffffffffffffffffffffffffffffffffffffff1614610d9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9590613921565b60405180910390fd5b6000600e60006101000a81548160ff021916908315150217905550565b6000610dc5610bd7565b8210610e06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dfd90613a01565b60405180910390fd5b60088281548110610e40577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001549050919050565b610e5a611aa3565b73ffffffffffffffffffffffffffffffffffffffff16610e78611351565b73ffffffffffffffffffffffffffffffffffffffff1614610ece576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec590613921565b60405180910390fd5b6000601060006101000a81548160ff021916908315150217905550565b610ef3611aa3565b73ffffffffffffffffffffffffffffffffffffffff16610f11611351565b73ffffffffffffffffffffffffffffffffffffffff1614610f67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5e90613921565b60405180910390fd5b80600f9080519060200190610f7d929190612bc7565b5050565b610f89611aa3565b73ffffffffffffffffffffffffffffffffffffffff16610fa7611351565b73ffffffffffffffffffffffffffffffffffffffff1614610ffd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff490613921565b60405180910390fd5b60338160ff16600c60009054906101000a900461ffff1661101e9190613b52565b61ffff161115611063576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105a90613821565b60405180910390fd5b60005b8160ff168160ff1610156110ce576110bb83600c600081819054906101000a900461ffff168092919061109890613d83565b91906101000a81548161ffff021916908361ffff16021790555061ffff16611c40565b80806110c690613df7565b915050611066565b505050565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561117c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611173906138a1565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156111f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ed90613881565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611245611aa3565b73ffffffffffffffffffffffffffffffffffffffff16611263611351565b73ffffffffffffffffffffffffffffffffffffffff16146112b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b090613921565b60405180910390fd5b6112c36000611f98565b565b61076581565b6112d3611aa3565b73ffffffffffffffffffffffffffffffffffffffff166112f1611351565b73ffffffffffffffffffffffffffffffffffffffff1614611347576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133e90613921565b60405180910390fd5b80600d8190555050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606001805461138a90613d20565b80601f01602080910402602001604051908101604052809291908181526020018280546113b690613d20565b80156114035780601f106113d857610100808354040283529160200191611403565b820191906000526020600020905b8154815290600101906020018083116113e657829003601f168201915b5050505050905090565b611415611aa3565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611483576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147a906137e1565b60405180910390fd5b8060056000611490611aa3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff1661153d611aa3565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161158291906136c9565b60405180910390a35050565b611596611aa3565b73ffffffffffffffffffffffffffffffffffffffff166115b4611351565b73ffffffffffffffffffffffffffffffffffffffff161461160a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160190613921565b60405180910390fd5b6001600e60006101000a81548160ff021916908315150217905550565b61162f611aa3565b73ffffffffffffffffffffffffffffffffffffffff1661164d611351565b73ffffffffffffffffffffffffffffffffffffffff16146116a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169a90613921565b60405180910390fd5b6001601060006101000a81548160ff021916908315150217905550565b6116d16116cb611aa3565b83611c5e565b611710576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611707906139e1565b60405180910390fd5b61171c8484848461205e565b50505050565b606061172d82611a37565b61176c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176390613961565b60405180910390fd5b60006117766120ba565b9050600081511161179657604051806020016040528060008152506117c1565b806117a08461214c565b6040516020016117b192919061363e565b6040516020818303038152906040525b915050919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611865611aa3565b73ffffffffffffffffffffffffffffffffffffffff16611883611351565b73ffffffffffffffffffffffffffffffffffffffff16146118d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d090613921565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611949576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194090613781565b60405180910390fd5b61195281611f98565b50565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611a2057507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80611a305750611a2f826122f9565b5b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16611b1e836110d3565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008082905060005b8551811015611c32576000868281518110611bb1577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101519050808311611bf2578281604051602001611bd5929190613612565b604051602081830303815290604052805190602001209250611c1e565b8083604051602001611c05929190613612565b6040516020818303038152906040528051906020012092505b508080611c2a90613dae565b915050611b6d565b508381149150509392505050565b611c5a828260405180602001604052806000815250612363565b5050565b6000611c6982611a37565b611ca8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9f90613801565b60405180910390fd5b6000611cb3836110d3565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611d2257508373ffffffffffffffffffffffffffffffffffffffff16611d0a846106d6565b73ffffffffffffffffffffffffffffffffffffffff16145b80611d335750611d3281856117c9565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16611d5c826110d3565b73ffffffffffffffffffffffffffffffffffffffff1614611db2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611da990613941565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611e22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e19906137c1565b60405180910390fd5b611e2d8383836123be565b611e38600082611aab565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611e889190613c11565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611edf9190613b8a565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b612069848484611d3c565b612075848484846124d2565b6120b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120ab90613761565b60405180910390fd5b50505050565b6060600f80546120c990613d20565b80601f01602080910402602001604051908101604052809291908181526020018280546120f590613d20565b80156121425780601f1061211757610100808354040283529160200191612142565b820191906000526020600020905b81548152906001019060200180831161212557829003601f168201915b5050505050905090565b60606000821415612194576040518060400160405280600181526020017f300000000000000000000000000000000000000000000000000000000000000081525090506122f4565b600082905060005b600082146121c65780806121af90613dae565b915050600a826121bf9190613be0565b915061219c565b60008167ffffffffffffffff811115612208577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f19166020018201604052801561223a5781602001600182028036833780820191505090505b5090505b600085146122ed576001826122539190613c11565b9150600a856122629190613e4f565b603061226e9190613b8a565b60f81b8183815181106122aa577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856122e69190613be0565b945061223e565b8093505050505b919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b61236d8383612669565b61237a60008484846124d2565b6123b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123b090613761565b60405180910390fd5b505050565b6123c9838383612837565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561240c576124078161283c565b61244b565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461244a576124498382612885565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561248e57612489816129f2565b6124cd565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146124cc576124cb8282612b35565b5b5b505050565b60006124f38473ffffffffffffffffffffffffffffffffffffffff16612bb4565b1561265c578373ffffffffffffffffffffffffffffffffffffffff1663150b7a0261251c611aa3565b8786866040518563ffffffff1660e01b815260040161253e949392919061367d565b602060405180830381600087803b15801561255857600080fd5b505af192505050801561258957506040513d601f19601f8201168201806040525081019061258691906130ec565b60015b61260c573d80600081146125b9576040519150601f19603f3d011682016040523d82523d6000602084013e6125be565b606091505b50600081511415612604576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125fb90613761565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612661565b600190505b949350505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156126d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126d0906138e1565b60405180910390fd5b6126e281611a37565b15612722576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612719906137a1565b60405180910390fd5b61272e600083836123be565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461277e9190613b8a565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b505050565b6008805490506009600083815260200190815260200160002081905550600881908060018154018082558091505060019003906000526020600020016000909190919091505550565b6000600161289284611185565b61289c9190613c11565b9050600060076000848152602001908152602001600020549050818114612981576000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816007600083815260200190815260200160002081905550505b6007600084815260200190815260200160002060009055600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b60006001600880549050612a069190613c11565b9050600060096000848152602001908152602001600020549050600060088381548110612a5c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020015490508060088381548110612aa4577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020018190555081600960008381526020019081526020016000208190555060096000858152602001908152602001600020600090556008805480612b19577f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6001900381819060005260206000200160009055905550505050565b6000612b4083611185565b905081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806007600084815260200190815260200160002081905550505050565b600080823b905060008111915050919050565b828054612bd390613d20565b90600052602060002090601f016020900481019282612bf55760008555612c3c565b82601f10612c0e57805160ff1916838001178555612c3c565b82800160010185558215612c3c579182015b82811115612c3b578251825591602001919060010190612c20565b5b509050612c499190612c4d565b5090565b5b80821115612c66576000816000905550600101612c4e565b5090565b6000612c7d612c7884613a81565b613a5c565b90508083825260208201905082856020860282011115612c9c57600080fd5b60005b85811015612ccc5781612cb28882612da6565b845260208401935060208301925050600181019050612c9f565b5050509392505050565b6000612ce9612ce484613aad565b613a5c565b905082815260208101848484011115612d0157600080fd5b612d0c848285613cde565b509392505050565b6000612d27612d2284613ade565b613a5c565b905082815260208101848484011115612d3f57600080fd5b612d4a848285613cde565b509392505050565b600081359050612d6181614595565b92915050565b600082601f830112612d7857600080fd5b8135612d88848260208601612c6a565b91505092915050565b600081359050612da0816145ac565b92915050565b600081359050612db5816145c3565b92915050565b600081359050612dca816145da565b92915050565b600081519050612ddf816145da565b92915050565b600082601f830112612df657600080fd5b8135612e06848260208601612cd6565b91505092915050565b600082601f830112612e2057600080fd5b8135612e30848260208601612d14565b91505092915050565b600081359050612e48816145f1565b92915050565b600081359050612e5d81614608565b92915050565b600060208284031215612e7557600080fd5b6000612e8384828501612d52565b91505092915050565b60008060408385031215612e9f57600080fd5b6000612ead85828601612d52565b9250506020612ebe85828601612d52565b9150509250929050565b600080600060608486031215612edd57600080fd5b6000612eeb86828701612d52565b9350506020612efc86828701612d52565b9250506040612f0d86828701612e39565b9150509250925092565b60008060008060808587031215612f2d57600080fd5b6000612f3b87828801612d52565b9450506020612f4c87828801612d52565b9350506040612f5d87828801612e39565b925050606085013567ffffffffffffffff811115612f7a57600080fd5b612f8687828801612de5565b91505092959194509250565b60008060408385031215612fa557600080fd5b6000612fb385828601612d52565b9250506020612fc485828601612d91565b9150509250929050565b60008060408385031215612fe157600080fd5b6000612fef85828601612d52565b925050602061300085828601612e39565b9150509250929050565b6000806040838503121561301d57600080fd5b600061302b85828601612d52565b925050602061303c85828601612e4e565b9150509250929050565b6000806040838503121561305957600080fd5b600083013567ffffffffffffffff81111561307357600080fd5b61307f85828601612d67565b925050602061309085828601612da6565b9150509250929050565b6000602082840312156130ac57600080fd5b60006130ba84828501612da6565b91505092915050565b6000602082840312156130d557600080fd5b60006130e384828501612dbb565b91505092915050565b6000602082840312156130fe57600080fd5b600061310c84828501612dd0565b91505092915050565b60006020828403121561312757600080fd5b600082013567ffffffffffffffff81111561314157600080fd5b61314d84828501612e0f565b91505092915050565b60006020828403121561316857600080fd5b600061317684828501612e39565b91505092915050565b61318881613c45565b82525050565b61319f61319a82613c45565b613e21565b82525050565b6131ae81613c57565b82525050565b6131bd81613c63565b82525050565b6131d46131cf82613c63565b613e33565b82525050565b60006131e582613b0f565b6131ef8185613b25565b93506131ff818560208601613ced565b61320881613f3c565b840191505092915050565b600061321e82613b1a565b6132288185613b36565b9350613238818560208601613ced565b61324181613f3c565b840191505092915050565b600061325782613b1a565b6132618185613b47565b9350613271818560208601613ced565b80840191505092915050565b600061328a601283613b36565b915061329582613f5a565b602082019050919050565b60006132ad602b83613b36565b91506132b882613f83565b604082019050919050565b60006132d0603283613b36565b91506132db82613fd2565b604082019050919050565b60006132f3602683613b36565b91506132fe82614021565b604082019050919050565b6000613316601c83613b36565b915061332182614070565b602082019050919050565b6000613339602483613b36565b915061334482614099565b604082019050919050565b600061335c601983613b36565b9150613367826140e8565b602082019050919050565b600061337f602c83613b36565b915061338a82614111565b604082019050919050565b60006133a2600c83613b36565b91506133ad82614160565b602082019050919050565b60006133c5601783613b36565b91506133d082614189565b602082019050919050565b60006133e8603883613b36565b91506133f3826141b2565b604082019050919050565b600061340b602a83613b36565b915061341682614201565b604082019050919050565b600061342e602983613b36565b915061343982614250565b604082019050919050565b6000613451601283613b36565b915061345c8261429f565b602082019050919050565b6000613474602083613b36565b915061347f826142c8565b602082019050919050565b6000613497602c83613b36565b91506134a2826142f1565b604082019050919050565b60006134ba602083613b36565b91506134c582614340565b602082019050919050565b60006134dd602983613b36565b91506134e882614369565b604082019050919050565b6000613500602f83613b36565b915061350b826143b8565b604082019050919050565b6000613523601483613b36565b915061352e82614407565b602082019050919050565b6000613546602183613b36565b915061355182614430565b604082019050919050565b6000613569602783613b36565b91506135748261447f565b604082019050919050565b600061358c603183613b36565b9150613597826144ce565b604082019050919050565b60006135af602c83613b36565b91506135ba8261451d565b604082019050919050565b60006135d2601d83613b36565b91506135dd8261456c565b602082019050919050565b6135f181613cc7565b82525050565b6000613603828461318e565b60148201915081905092915050565b600061361e82856131c3565b60208201915061362e82846131c3565b6020820191508190509392505050565b600061364a828561324c565b9150613656828461324c565b91508190509392505050565b6000602082019050613677600083018461317f565b92915050565b6000608082019050613692600083018761317f565b61369f602083018661317f565b6136ac60408301856135e8565b81810360608301526136be81846131da565b905095945050505050565b60006020820190506136de60008301846131a5565b92915050565b60006020820190506136f960008301846131b4565b92915050565b600060208201905081810360008301526137198184613213565b905092915050565b6000602082019050818103600083015261373a8161327d565b9050919050565b6000602082019050818103600083015261375a816132a0565b9050919050565b6000602082019050818103600083015261377a816132c3565b9050919050565b6000602082019050818103600083015261379a816132e6565b9050919050565b600060208201905081810360008301526137ba81613309565b9050919050565b600060208201905081810360008301526137da8161332c565b9050919050565b600060208201905081810360008301526137fa8161334f565b9050919050565b6000602082019050818103600083015261381a81613372565b9050919050565b6000602082019050818103600083015261383a81613395565b9050919050565b6000602082019050818103600083015261385a816133b8565b9050919050565b6000602082019050818103600083015261387a816133db565b9050919050565b6000602082019050818103600083015261389a816133fe565b9050919050565b600060208201905081810360008301526138ba81613421565b9050919050565b600060208201905081810360008301526138da81613444565b9050919050565b600060208201905081810360008301526138fa81613467565b9050919050565b6000602082019050818103600083015261391a8161348a565b9050919050565b6000602082019050818103600083015261393a816134ad565b9050919050565b6000602082019050818103600083015261395a816134d0565b9050919050565b6000602082019050818103600083015261397a816134f3565b9050919050565b6000602082019050818103600083015261399a81613516565b9050919050565b600060208201905081810360008301526139ba81613539565b9050919050565b600060208201905081810360008301526139da8161355c565b9050919050565b600060208201905081810360008301526139fa8161357f565b9050919050565b60006020820190508181036000830152613a1a816135a2565b9050919050565b60006020820190508181036000830152613a3a816135c5565b9050919050565b6000602082019050613a5660008301846135e8565b92915050565b6000613a66613a77565b9050613a728282613d52565b919050565b6000604051905090565b600067ffffffffffffffff821115613a9c57613a9b613f0d565b5b602082029050602081019050919050565b600067ffffffffffffffff821115613ac857613ac7613f0d565b5b613ad182613f3c565b9050602081019050919050565b600067ffffffffffffffff821115613af957613af8613f0d565b5b613b0282613f3c565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b6000613b5d82613c99565b9150613b6883613c99565b92508261ffff03821115613b7f57613b7e613e80565b5b828201905092915050565b6000613b9582613cc7565b9150613ba083613cc7565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613bd557613bd4613e80565b5b828201905092915050565b6000613beb82613cc7565b9150613bf683613cc7565b925082613c0657613c05613eaf565b5b828204905092915050565b6000613c1c82613cc7565b9150613c2783613cc7565b925082821015613c3a57613c39613e80565b5b828203905092915050565b6000613c5082613ca7565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600061ffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b82818337600083830152505050565b60005b83811015613d0b578082015181840152602081019050613cf0565b83811115613d1a576000848401525b50505050565b60006002820490506001821680613d3857607f821691505b60208210811415613d4c57613d4b613ede565b5b50919050565b613d5b82613f3c565b810181811067ffffffffffffffff82111715613d7a57613d79613f0d565b5b80604052505050565b6000613d8e82613c99565b915061ffff821415613da357613da2613e80565b5b600182019050919050565b6000613db982613cc7565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613dec57613deb613e80565b5b600182019050919050565b6000613e0282613cd1565b915060ff821415613e1657613e15613e80565b5b600182019050919050565b6000613e2c82613e3d565b9050919050565b6000819050919050565b6000613e4882613f4d565b9050919050565b6000613e5a82613cc7565b9150613e6583613cc7565b925082613e7557613e74613eaf565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b60008160601b9050919050565b7f4d696e74206c696d697420726561636865640000000000000000000000000000600082015250565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4f7574206f662073746f636b0000000000000000000000000000000000000000600082015250565b7f596f7520617265206e6f7420696e20746865206c697374000000000000000000600082015250565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b7f5468652073616c65206973207061757365640000000000000000000000000000600082015250565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960008201527f73206e6f74206f776e0000000000000000000000000000000000000000000000602082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b7f4164647265737320616c72656164792075736564000000000000000000000000600082015250565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b7f54686973206c65616620646f6573206e6f742062656c6f6e6720746f2074686560008201527f2073656e64657200000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b7f5075626c69632061646472657373206973206e6f7420636f7272656374000000600082015250565b61459e81613c45565b81146145a957600080fd5b50565b6145b581613c57565b81146145c057600080fd5b50565b6145cc81613c63565b81146145d757600080fd5b50565b6145e381613c6d565b81146145ee57600080fd5b50565b6145fa81613cc7565b811461460557600080fd5b50565b61461181613cd1565b811461461c57600080fd5b5056fea2646970667358221220f1772543c64e338fa1053b09875ae754f79309214ac293eeb2c087ba8099548064736f6c63430008030033