diff --git a/new-clone/HEAD b/new-clone/HEAD new file mode 100644 index 000000000..b870d8262 --- /dev/null +++ b/new-clone/HEAD @@ -0,0 +1 @@ +ref: refs/heads/main diff --git a/new-clone/config b/new-clone/config new file mode 100644 index 000000000..76819aa95 --- /dev/null +++ b/new-clone/config @@ -0,0 +1,10 @@ +[core] + repositoryformatversion = 0 + filemode = true + bare = true + ignorecase = true + precomposeunicode = true +[remote "origin"] + url = https://github.com/SuJingnan/agents.git + fetch = +refs/*:refs/* + mirror = true diff --git a/new-clone/description b/new-clone/description new file mode 100644 index 000000000..498b267a8 --- /dev/null +++ b/new-clone/description @@ -0,0 +1 @@ +Unnamed repository; edit this file 'description' to name the repository. diff --git a/new-clone/filter-repo/already_ran b/new-clone/filter-repo/already_ran new file mode 100644 index 000000000..0a905e479 --- /dev/null +++ b/new-clone/filter-repo/already_ran @@ -0,0 +1 @@ +This file exists to allow you to filter again without --force. diff --git a/new-clone/filter-repo/commit-map b/new-clone/filter-repo/commit-map new file mode 100644 index 000000000..a81d18077 --- /dev/null +++ b/new-clone/filter-repo/commit-map @@ -0,0 +1,658 @@ +old new +e21544a35285a2bb1204c5f1d805b3423a62108b e21544a35285a2bb1204c5f1d805b3423a62108b +4aa72fa8c3074e095f35cc10a61a860514223ba8 4aa72fa8c3074e095f35cc10a61a860514223ba8 +92b9befcb614b29f0cb1bc9711862fa279d7c0f9 92b9befcb614b29f0cb1bc9711862fa279d7c0f9 +b57144576da769e00492d13b10512dae413d082e b57144576da769e00492d13b10512dae413d082e +4291e97f499ae13004220098c5196da033d56b5f 4291e97f499ae13004220098c5196da033d56b5f +e670b93e276ba1d246c0566cfadfdb548163c4fb e670b93e276ba1d246c0566cfadfdb548163c4fb +cf54ae9534a8d5614cbb3c42098500b5d1757dc0 cf54ae9534a8d5614cbb3c42098500b5d1757dc0 +0441cf2a8fb355e42478a3d23e203741ca41c07b 0441cf2a8fb355e42478a3d23e203741ca41c07b +e7bccbdacf97a1df78e5b41209400320f6421b59 e7bccbdacf97a1df78e5b41209400320f6421b59 +a44fddf38f488b103ca11e75b0686d744ff68c19 a44fddf38f488b103ca11e75b0686d744ff68c19 +1ad2626cab87029b3bded7ffba62fa379057fee6 1ad2626cab87029b3bded7ffba62fa379057fee6 +06870752016fd36d04800b625d525a2203e54eae 06870752016fd36d04800b625d525a2203e54eae +85169372bb42decad8debd59377bda7f57e6c3ce 85169372bb42decad8debd59377bda7f57e6c3ce +4ea228d9d19a579ad079ed187b153c950dffc3a5 4ea228d9d19a579ad079ed187b153c950dffc3a5 +d9d541775bcabb0f54fa5b51499e4de043404cf3 d9d541775bcabb0f54fa5b51499e4de043404cf3 +0f02bd8c1d18b83d462fa26c953265ca17a887f6 0f02bd8c1d18b83d462fa26c953265ca17a887f6 +b2b36692b103515802cfc8bde29969b777beafd0 b2b36692b103515802cfc8bde29969b777beafd0 +567687cfe7a53626ab21a51b08d6a0ce00f444fc 567687cfe7a53626ab21a51b08d6a0ce00f444fc +fb4d0c394e7553c943512da772fda5f7847e035b fb4d0c394e7553c943512da772fda5f7847e035b +658ba316ab378e3820ba55c942984ec23534042b 658ba316ab378e3820ba55c942984ec23534042b +8ad9e33bd446011ccf81eb81a976d87cdf96466c 8ad9e33bd446011ccf81eb81a976d87cdf96466c +afe8c26cde75ff09b1db3bc8184b8acc879a666b afe8c26cde75ff09b1db3bc8184b8acc879a666b +9a8a3b809bf70cd6b8a05596ba9f422d35fe6b6e 9a8a3b809bf70cd6b8a05596ba9f422d35fe6b6e +8169131acdfeab80acb923132e1583d2e7e94dc9 8169131acdfeab80acb923132e1583d2e7e94dc9 +5e0fa68366c574125f535d268484504824c077bb 5e0fa68366c574125f535d268484504824c077bb +6b163daed4ef6e100474f05c14f934f2f7f8a6bb 6b163daed4ef6e100474f05c14f934f2f7f8a6bb +f55c00556fe6fbfccaacf9f1540984ccc00d865d f55c00556fe6fbfccaacf9f1540984ccc00d865d +753bf4f624cc90b349eabc136f05c0a9c6c600dd 753bf4f624cc90b349eabc136f05c0a9c6c600dd +b9407596a19982089e2c73f12838a3c4761ccaf2 b9407596a19982089e2c73f12838a3c4761ccaf2 +63ee210f5b875a62f39c9b4d290f6e43913a7c50 63ee210f5b875a62f39c9b4d290f6e43913a7c50 +b11f3e766c10c8abff348de55aa20d86044f8743 b11f3e766c10c8abff348de55aa20d86044f8743 +65948804a843e43b53258ff52124be73270315b6 65948804a843e43b53258ff52124be73270315b6 +803948a6ddc706513d976ef97c1fad4384f4a970 803948a6ddc706513d976ef97c1fad4384f4a970 +997c4244e70dcea28312a2a2de45d39b314e9104 997c4244e70dcea28312a2a2de45d39b314e9104 +ffd9dd68f884f00afccdb0bbf49d2c978e105521 ffd9dd68f884f00afccdb0bbf49d2c978e105521 +4cc8c8ce817a8ff35ee75273fc522c9d619d2d6f 4cc8c8ce817a8ff35ee75273fc522c9d619d2d6f +7dc510c7222bc81b629028bd2c980b1c9ef76743 7dc510c7222bc81b629028bd2c980b1c9ef76743 +23e9c2b1897be10df142b49452fa283299a21a82 23e9c2b1897be10df142b49452fa283299a21a82 +670b7f8b10382fde5e199581023c455c906371c9 670b7f8b10382fde5e199581023c455c906371c9 +737bc6b6539dd0e333c33352a6914747c2c48a26 737bc6b6539dd0e333c33352a6914747c2c48a26 +4650db3afef764c381f2ac112e908adedc58b052 4650db3afef764c381f2ac112e908adedc58b052 +977ea6c59deb97671c3e22b7db46ba950a93f22d 977ea6c59deb97671c3e22b7db46ba950a93f22d +26e161ac0e985361f630f455638c0fa3bf3a1d9a 26e161ac0e985361f630f455638c0fa3bf3a1d9a +167a7d5d1f8c528880df068df91dafe88ea2aafc 167a7d5d1f8c528880df068df91dafe88ea2aafc +667ade5597fe3addbde258527700046cc18db286 667ade5597fe3addbde258527700046cc18db286 +56da6f14a4278025ab371220aa0684a6ef537355 56da6f14a4278025ab371220aa0684a6ef537355 +bfe5693ca7aeaeac93de508c2240b87992f52984 bfe5693ca7aeaeac93de508c2240b87992f52984 +af0e8241c00a964032984c48c701d785079d199a af0e8241c00a964032984c48c701d785079d199a +40af8141f947d396b1c83884116d19a4cc15b132 40af8141f947d396b1c83884116d19a4cc15b132 +5790657a0a3565a5380f506550dd122431aaaf98 5790657a0a3565a5380f506550dd122431aaaf98 +11c885922edd43a923e9960647f4da385de9c5de 11c885922edd43a923e9960647f4da385de9c5de +f7f45b8107520648ed04732ea48e0fcef9d7cdd0 f7f45b8107520648ed04732ea48e0fcef9d7cdd0 +5aea243cc58d4c4d2a0e74af9b59e078e101c70f 5aea243cc58d4c4d2a0e74af9b59e078e101c70f +a3a282fffbf5a6ee3f253ae63d6a05ebacc76d67 a3a282fffbf5a6ee3f253ae63d6a05ebacc76d67 +c2b2cf1db3d08d017ea815e0594988d436cbec31 c2b2cf1db3d08d017ea815e0594988d436cbec31 +2c2d74cf4ab59b69dc078bc4b1c4f8203ca5a078 2c2d74cf4ab59b69dc078bc4b1c4f8203ca5a078 +e6e3640d3c7c66bee2bf81d4983c4074f4d8e011 e6e3640d3c7c66bee2bf81d4983c4074f4d8e011 +197a308c59b84d5a1fb9ea9d2a897138479dbb01 197a308c59b84d5a1fb9ea9d2a897138479dbb01 +902c401be977800712166cd4f19b655092314e3a 902c401be977800712166cd4f19b655092314e3a +ca787e91775b51f9d126d158cdf9fb9a2a571657 ca787e91775b51f9d126d158cdf9fb9a2a571657 +1329cbb99a8e33f71f21a5ffa21b771df3f1a2f6 1329cbb99a8e33f71f21a5ffa21b771df3f1a2f6 +5a706d1bede79530129a5037e78a272498a80a75 5a706d1bede79530129a5037e78a272498a80a75 +da63f7d7d2228c6dcd055dbf0b9a5a603bac493b da63f7d7d2228c6dcd055dbf0b9a5a603bac493b +99659273bcae5e3d2fed45055ca3116a47d9c08d 99659273bcae5e3d2fed45055ca3116a47d9c08d +7fe124d3d60e9ffa4d5d79a0867ef2173b46bdee 7fe124d3d60e9ffa4d5d79a0867ef2173b46bdee +0dba72caf93573b7aa79f6fe8c6cf1c98d603862 0dba72caf93573b7aa79f6fe8c6cf1c98d603862 +dc93f581bd6d3c27766b6acbb3890f06d4d3fe99 dc93f581bd6d3c27766b6acbb3890f06d4d3fe99 +672fe52fd5c6bfb4d6bca26216d2d7de0e8c9680 672fe52fd5c6bfb4d6bca26216d2d7de0e8c9680 +8ba1f9b628b6efcb80dd5eb0be66fa7f35c52021 8ba1f9b628b6efcb80dd5eb0be66fa7f35c52021 +10b2eb22454baf98466ab50f669a29b0b67c5c28 10b2eb22454baf98466ab50f669a29b0b67c5c28 +2b1b0b342a309bc51aa1f8cc2777f241fe42340b 2b1b0b342a309bc51aa1f8cc2777f241fe42340b +0dde0a2158125bdcf34fbf57e46cc85b2906fadb 0dde0a2158125bdcf34fbf57e46cc85b2906fadb +ad2e4cf5fdc3c49f1460086d57cb693f1fe0396f ad2e4cf5fdc3c49f1460086d57cb693f1fe0396f +61ac4ec7159f4d2012153ec8c79ff262cd461e5a 61ac4ec7159f4d2012153ec8c79ff262cd461e5a +6ba4fd5db214b4608d97e7a6e3d926fadeedb1f9 6ba4fd5db214b4608d97e7a6e3d926fadeedb1f9 +eaf1e3ec703294866e8b3530f313d9ad39e803c5 eaf1e3ec703294866e8b3530f313d9ad39e803c5 +91d77553a96f13629bbe85db3b7df2e95ef9a0cd 91d77553a96f13629bbe85db3b7df2e95ef9a0cd +4067fa09099051923706da8301483f7c275422d5 4067fa09099051923706da8301483f7c275422d5 +3795feca2ad618bb8ba08fef52b76815b0f7eb34 3795feca2ad618bb8ba08fef52b76815b0f7eb34 +2328b56f5dc3b70df1a77cc29c8619b966ee258c 2328b56f5dc3b70df1a77cc29c8619b966ee258c +0db4760376ea83d7338ea4a043400ae87a06285b 0db4760376ea83d7338ea4a043400ae87a06285b +579841d337dfee4d911729c0d86d0b7471bcfc9e 579841d337dfee4d911729c0d86d0b7471bcfc9e +2f895d647488223f5d8a6e0adb1dbbfc58517510 2f895d647488223f5d8a6e0adb1dbbfc58517510 +fb98132e1397090e155cb434855a8857865a6d97 fb98132e1397090e155cb434855a8857865a6d97 +2af38ffda393288a6eee21125b6412f4ea20e90c 2af38ffda393288a6eee21125b6412f4ea20e90c +357becdcc71e029d2a74adf289ffb9738b17f406 357becdcc71e029d2a74adf289ffb9738b17f406 +ed6d76d5ebd8e2653800e665e1c717fcaadae0a3 ed6d76d5ebd8e2653800e665e1c717fcaadae0a3 +bd6eb19bf417d862accc03a930a14f5a92fc27f9 bd6eb19bf417d862accc03a930a14f5a92fc27f9 +2ff9c8f54d828c7f9a5181e0b192df3d97f4f0a9 2ff9c8f54d828c7f9a5181e0b192df3d97f4f0a9 +fe7a39388941b131868104906acfd41ea1cad130 fe7a39388941b131868104906acfd41ea1cad130 +065a336ed18c19d2dbb61f9fc13f57996d880099 065a336ed18c19d2dbb61f9fc13f57996d880099 +7b2590b5dc0964b4f93a960d4a0f7d6614ea538b 7b2590b5dc0964b4f93a960d4a0f7d6614ea538b +f37baf029f0b17a9f373234063e69ccab9faca2e f37baf029f0b17a9f373234063e69ccab9faca2e +96788748c0420792b08679a2ad75d3c94011c86f 96788748c0420792b08679a2ad75d3c94011c86f +3896bec8fdebc8194bee0ce4a20841d5e97e573a 3896bec8fdebc8194bee0ce4a20841d5e97e573a +1cb0a8a54562acb9ec7b0e7a0c12964f02294a68 1cb0a8a54562acb9ec7b0e7a0c12964f02294a68 +f098989c1e80e690ec4cfc2935f52466642a9831 f098989c1e80e690ec4cfc2935f52466642a9831 +a2a192c970840682452585b66717920f9564dba2 a2a192c970840682452585b66717920f9564dba2 +38aa33a5b6b994811911025707b8e51c4c24dd5f 38aa33a5b6b994811911025707b8e51c4c24dd5f +b46348dcd8193acc432c2fdf537495b8231083b7 b46348dcd8193acc432c2fdf537495b8231083b7 +a885b0a9d0cbe13fd027428944558887bb2280a5 a885b0a9d0cbe13fd027428944558887bb2280a5 +485a722d76d0655033292bab3d836af3744d0d4b 485a722d76d0655033292bab3d836af3744d0d4b +f484a8e0ea4a2909275dacf2fdd6b213bf4b2690 f484a8e0ea4a2909275dacf2fdd6b213bf4b2690 +8b853bf34387c5b6f9dfe1135fee49ca8e334cc1 8b853bf34387c5b6f9dfe1135fee49ca8e334cc1 +9ab8c36cb41930ba019a33298c7cc2fa0adb644b 9ab8c36cb41930ba019a33298c7cc2fa0adb644b +46975ac99bbe49baabf97c55b8cf155d23a0d39d 46975ac99bbe49baabf97c55b8cf155d23a0d39d +1c73abc7cebd1f700aa5878995105c7345998d02 1c73abc7cebd1f700aa5878995105c7345998d02 +14303b140474a4ad132fb4209459f27b3da0cf38 14303b140474a4ad132fb4209459f27b3da0cf38 +a5df495ecae1e1b7f8b2657cb069dce96308e852 a5df495ecae1e1b7f8b2657cb069dce96308e852 +b87a86e5bf714f3fd13fea6d300fd1452c871513 b87a86e5bf714f3fd13fea6d300fd1452c871513 +2112dfa30fd5dff21885423de474038d59fca211 2112dfa30fd5dff21885423de474038d59fca211 +2d4d358c5df408a19fdb46b817c53e2d2c2527a0 2d4d358c5df408a19fdb46b817c53e2d2c2527a0 +7bd5e146249f3b2ddee3a761eb54864824c8ab30 7bd5e146249f3b2ddee3a761eb54864824c8ab30 +eadfe26a2fd27080ba10e9cbef17ae34888db4a5 eadfe26a2fd27080ba10e9cbef17ae34888db4a5 +9591b088c8a3f358d1a848d584abb43659f2bb1e 9591b088c8a3f358d1a848d584abb43659f2bb1e +da20eac46bf8c19cfea2463fa80ed4979a6cbc8f da20eac46bf8c19cfea2463fa80ed4979a6cbc8f +865b4c8571516dd39662cdb2a107a7692ae4a9f0 865b4c8571516dd39662cdb2a107a7692ae4a9f0 +b3fc1a57d0a8021e51b784e127ba15ac960bfbcb b3fc1a57d0a8021e51b784e127ba15ac960bfbcb +5bfc3c02cb0f994d2be00ea0ca4d7a532adb2cce 5bfc3c02cb0f994d2be00ea0ca4d7a532adb2cce +359cf1458e8fdafb81de0b2a0e8f7124a7c6e732 359cf1458e8fdafb81de0b2a0e8f7124a7c6e732 +ba06461b5cdd1733f4311b7c8004693f038791ac ba06461b5cdd1733f4311b7c8004693f038791ac +730a15a7a3874b0039acea5003b0a1a282020bcc 730a15a7a3874b0039acea5003b0a1a282020bcc +282ae8aa74ab94563101defdf98e6108ed5c0a98 282ae8aa74ab94563101defdf98e6108ed5c0a98 +7399378d33f9ff53202e0aee709caf3bfde295bf 7399378d33f9ff53202e0aee709caf3bfde295bf +20a07a77f80d539683acc022da84774de87d0972 20a07a77f80d539683acc022da84774de87d0972 +fb08d8d9e6237ecbed9623216a00fd4cd67abafc fb08d8d9e6237ecbed9623216a00fd4cd67abafc +b9cd18c8bfbc8e2a821f9ea36266af2d23c3b14e b9cd18c8bfbc8e2a821f9ea36266af2d23c3b14e +1b7ddecba80d025fe8a6967274c216c785b38c28 1b7ddecba80d025fe8a6967274c216c785b38c28 +be8abbf02365d851cc21ec41f0e2838e79da13c5 be8abbf02365d851cc21ec41f0e2838e79da13c5 +94f042b7e3f6598515941b6f1f33aa48f2cd446c 94f042b7e3f6598515941b6f1f33aa48f2cd446c +21e148ed374c4bb890c4ccca1b0f6fcc01e3dc92 21e148ed374c4bb890c4ccca1b0f6fcc01e3dc92 +b78a1f0d8d46675210fef8fd8064c73bfa3892d2 b78a1f0d8d46675210fef8fd8064c73bfa3892d2 +8b32ae4375540c81d1a37076209febe82cc99646 8b32ae4375540c81d1a37076209febe82cc99646 +b222f593b9b3799550a012a786113a41f6635d35 b222f593b9b3799550a012a786113a41f6635d35 +02f276f110ede2102be201d99cd400c8ab0fdd59 02f276f110ede2102be201d99cd400c8ab0fdd59 +30f6cd78c5c59daafe933beb5b8cd8b3580a9fca 30f6cd78c5c59daafe933beb5b8cd8b3580a9fca +6c2b9bc0bebf7614f8f61c4abd8a31de52ee6746 6c2b9bc0bebf7614f8f61c4abd8a31de52ee6746 +9df4e39247acdceef88ec78a6704e34929316a38 9df4e39247acdceef88ec78a6704e34929316a38 +78e8969b17181adf11c1ff55add626b6bdff936f 78e8969b17181adf11c1ff55add626b6bdff936f +0b0711b35bfd62c4e42ebb8de0cbfb9907a5426d 0b0711b35bfd62c4e42ebb8de0cbfb9907a5426d +eca94fff7f1db71a4162e28340d3079c2b41c6dc eca94fff7f1db71a4162e28340d3079c2b41c6dc +6d85b889d6d3b1b6603ea330fd9a9a43a923d1c7 6d85b889d6d3b1b6603ea330fd9a9a43a923d1c7 +c6bfbd283010f67caa7345a6945c2dea1db2fbb8 c6bfbd283010f67caa7345a6945c2dea1db2fbb8 +c6c93f3de712e3ba4f7d36e00cfe3f67794b1586 c6c93f3de712e3ba4f7d36e00cfe3f67794b1586 +0210b4a0c507c66b7f9031bfc9759336c7c2d255 0210b4a0c507c66b7f9031bfc9759336c7c2d255 +efeec2ac8cd01eec2682f5535baa51fac03ea3ce efeec2ac8cd01eec2682f5535baa51fac03ea3ce +c730d3e419d0b8d16d1197e6fdc553ed61e4b539 c730d3e419d0b8d16d1197e6fdc553ed61e4b539 +72f2abbc6e7299b4ff8700bd1729619f77c01b2f 72f2abbc6e7299b4ff8700bd1729619f77c01b2f +f62dffd8be1bacacb08d6e575ca6644588278b0d f62dffd8be1bacacb08d6e575ca6644588278b0d +5a2c0bbeb7209b350b50003181041a3a88a925dd 5a2c0bbeb7209b350b50003181041a3a88a925dd +1a91b70627f444c12eb35eec493352ba67aa1eb0 1a91b70627f444c12eb35eec493352ba67aa1eb0 +f797ecd3dce85905aed70357b330c6d6fdd9565a f797ecd3dce85905aed70357b330c6d6fdd9565a +4b7a4a0b67b0be9ecba128faea7155791fa14f44 4b7a4a0b67b0be9ecba128faea7155791fa14f44 +a3e66cafa4c91ec8d59a3622fc07272bb5ecd12a a3e66cafa4c91ec8d59a3622fc07272bb5ecd12a +2e1582acb3db782a9d6cc90aa34d599b94cb4f25 2e1582acb3db782a9d6cc90aa34d599b94cb4f25 +2500ff9f1c39e80905bc362639f80a11c385cc88 2500ff9f1c39e80905bc362639f80a11c385cc88 +11dcd977acd4bed28eeb3e6f30948129b7d1a95c 11dcd977acd4bed28eeb3e6f30948129b7d1a95c +9a6173bed40e72ecbc5289e88586c22efdeabefd 9a6173bed40e72ecbc5289e88586c22efdeabefd +fe4221a9a23db08d1862ce96cba55757f0177fd9 fe4221a9a23db08d1862ce96cba55757f0177fd9 +70f65a0060dfe5a3fff80815b80f32bbe5b10cc5 70f65a0060dfe5a3fff80815b80f32bbe5b10cc5 +0e8fa230286528fda0965b893a41bbde767a7027 0e8fa230286528fda0965b893a41bbde767a7027 +f20f53f6cb024c0d278662e85ba1a6709accd508 f20f53f6cb024c0d278662e85ba1a6709accd508 +d7c050425874c3b83995a1689da033ed18ed1d28 d7c050425874c3b83995a1689da033ed18ed1d28 +4dd6cc995dc8d00053a443bac5488249b051b21a 4dd6cc995dc8d00053a443bac5488249b051b21a +013c068d7195eacdab37e664dcd2b188fe364a26 013c068d7195eacdab37e664dcd2b188fe364a26 +9ed577b5104ec410bf99aa666f85f2208a555f71 9ed577b5104ec410bf99aa666f85f2208a555f71 +4bacd1528dfbb1e4acccbc12a923f2b4844d653b 4bacd1528dfbb1e4acccbc12a923f2b4844d653b +6b63273cf0b4fa3969a738ba911bbafec469d5d3 6b63273cf0b4fa3969a738ba911bbafec469d5d3 +2dff03de4c9d56d5119f003efa5f9bd3bde3160c 2dff03de4c9d56d5119f003efa5f9bd3bde3160c +00a25871a626933ce5b1ead028fcef2769045ac1 00a25871a626933ce5b1ead028fcef2769045ac1 +854c4b0bb07b113648760b533ba0c9b1de0aa0d7 854c4b0bb07b113648760b533ba0c9b1de0aa0d7 +feb6dbb2459e434def21a1db0dafc598f2693bb8 feb6dbb2459e434def21a1db0dafc598f2693bb8 +f22d2b471b1a10f45f709e495f74df2d55b96ee8 f22d2b471b1a10f45f709e495f74df2d55b96ee8 +fd1c15c2ebd183a62f129d8cb7a07c49f130eb33 fd1c15c2ebd183a62f129d8cb7a07c49f130eb33 +98d1f3cc6d5ce4dd2128ecbe3aa378e87a0db147 98d1f3cc6d5ce4dd2128ecbe3aa378e87a0db147 +6ca14a078008797d1c3bad73fb6722c21d415d2b 6ca14a078008797d1c3bad73fb6722c21d415d2b +ee019bb9846f191d582fee52b1984389866391ca ee019bb9846f191d582fee52b1984389866391ca +a96ee01de102ce4faac694d0649596c4d2aca814 a96ee01de102ce4faac694d0649596c4d2aca814 +4bc33ab0b383f1f94e6adc0f6f41f29d240ddce5 4bc33ab0b383f1f94e6adc0f6f41f29d240ddce5 +a68fd988a5adefdf098c5ce8e7e7517bd80f06e2 a68fd988a5adefdf098c5ce8e7e7517bd80f06e2 +2c0fe82495e5137832bb23da0b39534c99cff881 2c0fe82495e5137832bb23da0b39534c99cff881 +2263b6fef3704c347c15cd687aaa5847baac87bc 2263b6fef3704c347c15cd687aaa5847baac87bc +c36ac17d79c154d11fc438ff6cdbf79e0d5dfff4 c36ac17d79c154d11fc438ff6cdbf79e0d5dfff4 +91dccbcfcf38f082d329718ba860f9e587babb86 91dccbcfcf38f082d329718ba860f9e587babb86 +e007e479c7370e0c132583581358b5c1bdacbd5f e007e479c7370e0c132583581358b5c1bdacbd5f +4b807c7f7edfe6ce41e3dca61bd167f449d26c19 4b807c7f7edfe6ce41e3dca61bd167f449d26c19 +4b936f565981ce6b26e0d3c747f0e02a89fa50a4 4b936f565981ce6b26e0d3c747f0e02a89fa50a4 +ac716470d14775c91cbada157cc792e4e749767d ac716470d14775c91cbada157cc792e4e749767d +758101cc92dc36f4c2276d8583e7ed0eca1a272c 758101cc92dc36f4c2276d8583e7ed0eca1a272c +f36e3ce87d8b95747de79814f7b003df257baebf f36e3ce87d8b95747de79814f7b003df257baebf +de9c2e2f2a6980194a7b61ed72efa49a0fc73c73 de9c2e2f2a6980194a7b61ed72efa49a0fc73c73 +5dc43ce45a5baa4574b6dc34eb4346f85e42625e 5dc43ce45a5baa4574b6dc34eb4346f85e42625e +29ab7f7e54734e7c089d9c5c8bb53972c5d369b5 29ab7f7e54734e7c089d9c5c8bb53972c5d369b5 +70a0532f038a8ca3302eca6df4a7b56cc9badb16 70a0532f038a8ca3302eca6df4a7b56cc9badb16 +0b03145a547fab319b074d68b89016f2c83deb15 0b03145a547fab319b074d68b89016f2c83deb15 +2082fc9ba5215388683871f4f92452a8a8704ba8 2082fc9ba5215388683871f4f92452a8a8704ba8 +138c0432e60f2a624dc0498dbbbf0f94dc64170b 138c0432e60f2a624dc0498dbbbf0f94dc64170b +91d7df6a55e16f2385b8a773bfcf75ef1bcecd79 91d7df6a55e16f2385b8a773bfcf75ef1bcecd79 +7ea286c568442090341c506a59e3f521202779dd 7ea286c568442090341c506a59e3f521202779dd +3ef272fb07b39f19ccfce3355db449130303323f 3ef272fb07b39f19ccfce3355db449130303323f +af4bf29082e1594944aac45e5b29d92d97ec8e30 af4bf29082e1594944aac45e5b29d92d97ec8e30 +7f4095270bec1dbd707f5941e399e6a033668b9d 7f4095270bec1dbd707f5941e399e6a033668b9d +3f89f723e6d6f56066148813edb1b743e5997a40 3f89f723e6d6f56066148813edb1b743e5997a40 +0e189ecba3c3681c8128af2018297cd7e1e6fedd 0e189ecba3c3681c8128af2018297cd7e1e6fedd +a0bdc561f88f54f0e3f29729d7b6d34de00d4b48 a0bdc561f88f54f0e3f29729d7b6d34de00d4b48 +3a1c4b51e8a1e93557249e4f001ea2feca3acdb7 3a1c4b51e8a1e93557249e4f001ea2feca3acdb7 +5bd732dc6d1bfc07e85d8c4c7dd3c95edaac6421 5bd732dc6d1bfc07e85d8c4c7dd3c95edaac6421 +901a65c2cdb118177f0002b215b75b948b35d5ce 901a65c2cdb118177f0002b215b75b948b35d5ce +1a47d3dbeabfbfeb22eec83e03b878596bfd6216 1a47d3dbeabfbfeb22eec83e03b878596bfd6216 +dfb709121871c30f7327e01f5094a93befcf5b7c dfb709121871c30f7327e01f5094a93befcf5b7c +72f886b058cf48aa230e60a5bfa66fac8d5bf1e2 72f886b058cf48aa230e60a5bfa66fac8d5bf1e2 +de9f73f972c97bd53509d86ae978105192286dce de9f73f972c97bd53509d86ae978105192286dce +e87d6ff9ff151054f6dfaecee9655a72752affba e87d6ff9ff151054f6dfaecee9655a72752affba +e7c6a12f9b7e85d102d99b3a8265f7b93c9debd3 e7c6a12f9b7e85d102d99b3a8265f7b93c9debd3 +07862cf4dffb5d966d1dfc504686c5dd932b3367 07862cf4dffb5d966d1dfc504686c5dd932b3367 +1ec5b1e1d8e4b24693e991e5c729b9cb7166df90 1ec5b1e1d8e4b24693e991e5c729b9cb7166df90 +0059a3efb8e8f14b8c48c239431d1677b03a8baa 0059a3efb8e8f14b8c48c239431d1677b03a8baa +3eaa6bf4fe75bf90038c5c59f23cfc0e96388b88 3eaa6bf4fe75bf90038c5c59f23cfc0e96388b88 +88256f71fa13653e9f893824cb23c69fdeb22cfc 88256f71fa13653e9f893824cb23c69fdeb22cfc +15d9b2d218f9047a187985041d7b058a64953203 15d9b2d218f9047a187985041d7b058a64953203 +184f4c035015f923ad831b7944204de46965d145 184f4c035015f923ad831b7944204de46965d145 +8ca40b16151acf1cb3d4edef700e2f5398a38275 8ca40b16151acf1cb3d4edef700e2f5398a38275 +9714f4469d998600a057f7aa183107740327d42a 9714f4469d998600a057f7aa183107740327d42a +e82aa3759e597e22f3bec345e21fa413584d12af e82aa3759e597e22f3bec345e21fa413584d12af +0d7c2c75d4837d6a936a5e77de57545bfebfb882 0d7c2c75d4837d6a936a5e77de57545bfebfb882 +b91a94b77da0f3a1442ee3167e3b13bd13d0aeb8 b91a94b77da0f3a1442ee3167e3b13bd13d0aeb8 +014498b96da0ca572a1d0f5e0df60ab0b0e79841 014498b96da0ca572a1d0f5e0df60ab0b0e79841 +788751d767d41ab3fb8caa25c9d7d4593c59d93d 788751d767d41ab3fb8caa25c9d7d4593c59d93d +67b83b5293f38025d1ec28abb5a3f37b3145909a 67b83b5293f38025d1ec28abb5a3f37b3145909a +3da5a5532c257a56dd9dab10aa5350a8786bf27d 3da5a5532c257a56dd9dab10aa5350a8786bf27d +0f569ee00369b984d3c9d64ef386b1bdf6902809 0f569ee00369b984d3c9d64ef386b1bdf6902809 +7de8c618f4e9ecda1725518adda09cc82729fb94 7de8c618f4e9ecda1725518adda09cc82729fb94 +11043cfeb1b04407c6b18016c0bdb1f3d5f6dd1f 11043cfeb1b04407c6b18016c0bdb1f3d5f6dd1f +4bf56b747468a3bf54ed3f2003b38acc436e9941 4bf56b747468a3bf54ed3f2003b38acc436e9941 +57ba62ed0a7651920f3c3c7bd48b10931c0ac067 57ba62ed0a7651920f3c3c7bd48b10931c0ac067 +37c5c7e9d789f26ae042565bb00cfd21d7e1e185 37c5c7e9d789f26ae042565bb00cfd21d7e1e185 +597055a1752e25801d40d8bb8ba62a7e9e5440f5 597055a1752e25801d40d8bb8ba62a7e9e5440f5 +883486a379f8a72e785cb0faea07b7a9dfb79302 883486a379f8a72e785cb0faea07b7a9dfb79302 +602619a014af0644d8f99d8e7bfc06c784443600 602619a014af0644d8f99d8e7bfc06c784443600 +2db5e086f949e3d85796eedb1ba41637ca2438c2 2db5e086f949e3d85796eedb1ba41637ca2438c2 +d610a33c2bd1b2e9193ed6c709f45d4081e25fc9 d610a33c2bd1b2e9193ed6c709f45d4081e25fc9 +14b750a35ab8a5166b73a5552d214a2cfc17dad6 14b750a35ab8a5166b73a5552d214a2cfc17dad6 +7bcf2034e2c0c937ee99358be1f54f545638a26d 7bcf2034e2c0c937ee99358be1f54f545638a26d +edc7169ac7a26fa0bcbaf5a1a048342a3dc9ea70 edc7169ac7a26fa0bcbaf5a1a048342a3dc9ea70 +dd98488144e73402b2091c59075a6d5f8600517d dd98488144e73402b2091c59075a6d5f8600517d +681661bcc2fafc2fc2d9d886950ce5480d8268e7 681661bcc2fafc2fc2d9d886950ce5480d8268e7 +df42e13740941ed1702157e76bf301badc713917 df42e13740941ed1702157e76bf301badc713917 +83819c2a0cdd3517169883a53598ee7cc893d0ec 83819c2a0cdd3517169883a53598ee7cc893d0ec +d92702b8a514633e78dc22d9d84e6a8a601dc7fa d92702b8a514633e78dc22d9d84e6a8a601dc7fa +1e19e3a705e71387ad5ab5d5fc05448788a8ec65 1e19e3a705e71387ad5ab5d5fc05448788a8ec65 +1898879e1ff7e86d5e92c40b5d47f5f125a0cf80 1898879e1ff7e86d5e92c40b5d47f5f125a0cf80 +5dca6d0cb1147127f8862c7bb82bb14b5e575144 5dca6d0cb1147127f8862c7bb82bb14b5e575144 +c9060de5f3abc70f36ec7edcd1d8a7f1b9cf6c0e c9060de5f3abc70f36ec7edcd1d8a7f1b9cf6c0e +96d5322981f09a3abf033a04cd64e5650f8bfc13 96d5322981f09a3abf033a04cd64e5650f8bfc13 +bbd0c8cd87f0588c7177e19aef8de8339913d045 bbd0c8cd87f0588c7177e19aef8de8339913d045 +76cbb59d62c36440f2b397c74e111e6bcf387f2f 76cbb59d62c36440f2b397c74e111e6bcf387f2f +0d193ebee9bfdd5166e5653c959f3cbce80f2945 0d193ebee9bfdd5166e5653c959f3cbce80f2945 +489bcd5786301afc8f0db58b977a9fcd0345f213 489bcd5786301afc8f0db58b977a9fcd0345f213 +2a22aa9af8e4830fe55cc7b7350e60fd58b832e1 2a22aa9af8e4830fe55cc7b7350e60fd58b832e1 +35fd8bfd2245308305649354a82419f595e7f94d 35fd8bfd2245308305649354a82419f595e7f94d +0264f7d3fabc031ff504733783783033332b5d7d 0264f7d3fabc031ff504733783783033332b5d7d +b8c43d39edcb9b9169767f2592d60ee095dedecd b8c43d39edcb9b9169767f2592d60ee095dedecd +336ad59f31a6f24539a9f47863454f2f856eed15 336ad59f31a6f24539a9f47863454f2f856eed15 +adad12ee63772e72f73e2aa9973bcdd147f29af2 adad12ee63772e72f73e2aa9973bcdd147f29af2 +9a039be0d05813e7c96e47a4a5c9a005f32218e8 9a039be0d05813e7c96e47a4a5c9a005f32218e8 +90dfa00a470af2dfe5a60adb1cab108361ad9f6d 90dfa00a470af2dfe5a60adb1cab108361ad9f6d +9a18f9eed9c621d3199bf28bde4e834b7ca2c476 9a18f9eed9c621d3199bf28bde4e834b7ca2c476 +701c8a396f923f87fe86df0caa4c2cf2156e31e9 701c8a396f923f87fe86df0caa4c2cf2156e31e9 +974d62204c9216002c227a2d8b478d5e915ce836 974d62204c9216002c227a2d8b478d5e915ce836 +b5d444d7cc066fc123e1fd5b7bce96d43a2ec532 b5d444d7cc066fc123e1fd5b7bce96d43a2ec532 +5cbc063fd94c37ccb4ccc7c3c19a746988d968a0 5cbc063fd94c37ccb4ccc7c3c19a746988d968a0 +7c7f1f8182d6babfac33c0c01c0563fc6c9c9d2b 7c7f1f8182d6babfac33c0c01c0563fc6c9c9d2b +42fc59b9a9b8badab3b75c438c13962e92e224a1 42fc59b9a9b8badab3b75c438c13962e92e224a1 +5e76ebca6afae175328474bcbe31c52197d22323 5e76ebca6afae175328474bcbe31c52197d22323 +f18d36b6220fbd38cbe1faa8f5731db02c184bcf f18d36b6220fbd38cbe1faa8f5731db02c184bcf +2c43c175c9411457331f3a62757acfce41dd57d0 2c43c175c9411457331f3a62757acfce41dd57d0 +778ab80ee6f87f0f805334825fbc54b917432db1 778ab80ee6f87f0f805334825fbc54b917432db1 +92e8d789ffc634bedfa750513709bf025db9ee84 92e8d789ffc634bedfa750513709bf025db9ee84 +1bbbd6f77c5f531cab58a2602a790464cb3ff4ac 1bbbd6f77c5f531cab58a2602a790464cb3ff4ac +2c079df152a7b37b56804895456f5d4d25f8faec 2c079df152a7b37b56804895456f5d4d25f8faec +64514ea56c72f413fd06fd562429b5b4bb01b90d 64514ea56c72f413fd06fd562429b5b4bb01b90d +7660e81a0f07d7e47f42cfc75f9f29d280c05ddf 7660e81a0f07d7e47f42cfc75f9f29d280c05ddf +569ad493ecb9e5cfee7374c89881d3f4ee5d0fdc 569ad493ecb9e5cfee7374c89881d3f4ee5d0fdc +0b1e3c329a60a7840a9743bec8b57c21efb4f876 0b1e3c329a60a7840a9743bec8b57c21efb4f876 +42c322040214d14252112fc38abf264e05c2e6fc 42c322040214d14252112fc38abf264e05c2e6fc +304a01977a3c67abe5b1ea103ddaf46761f9627d 304a01977a3c67abe5b1ea103ddaf46761f9627d +e013a4f1f4c03d39d0db86b004976ed31f8e5314 e013a4f1f4c03d39d0db86b004976ed31f8e5314 +b2e4b9aebc580ec380b22ba227345169eeea91a6 b2e4b9aebc580ec380b22ba227345169eeea91a6 +f275a8d34d629b3aa1560cb074e812806b34111d f275a8d34d629b3aa1560cb074e812806b34111d +fa699195c4f00e98c87936839d6552627936a29f fa699195c4f00e98c87936839d6552627936a29f +c93e69995e80817226fb19c4aa159fa4dabd11be c93e69995e80817226fb19c4aa159fa4dabd11be +c13e1cf47dd3573aab8c1c74cb660317e0ebd4a1 c13e1cf47dd3573aab8c1c74cb660317e0ebd4a1 +0ea4b34f7cfddbbcfc42ae47b0c488d641f617eb 0ea4b34f7cfddbbcfc42ae47b0c488d641f617eb +3bfed60fc45e2650c54ccac2a0bdfd097bc274e9 3bfed60fc45e2650c54ccac2a0bdfd097bc274e9 +949d15b005f9e87bb3f17ec9c7338fea635ec4ef 949d15b005f9e87bb3f17ec9c7338fea635ec4ef +650c4eda3fde7258d0c3841478a69e9727f4e363 650c4eda3fde7258d0c3841478a69e9727f4e363 +2202c408f0880ff10e3f84295f639a8e054c451e 2202c408f0880ff10e3f84295f639a8e054c451e +487e48bc65477eb9d5a2af74659eaa58a2a93fec 487e48bc65477eb9d5a2af74659eaa58a2a93fec +a7a7f5d059620917568f0fa62c4d39be54ff0eef a7a7f5d059620917568f0fa62c4d39be54ff0eef +c517fb8ca1fe091e2b640abfff9f73a69299ff7e c517fb8ca1fe091e2b640abfff9f73a69299ff7e +87a3aae015dfbdc917d7f06ac286d06fb22451db 87a3aae015dfbdc917d7f06ac286d06fb22451db +810ab6660e51a2e46d9107ce99d73e2adc8678fa 810ab6660e51a2e46d9107ce99d73e2adc8678fa +5129f279ae63f75be6510942bfd5212b0687db54 5129f279ae63f75be6510942bfd5212b0687db54 +27b9aac5f70c449f436418167dd8ffa50fd71f11 27b9aac5f70c449f436418167dd8ffa50fd71f11 +bf3063babcd1d42b2e9b36bed0b7532720a84c30 bf3063babcd1d42b2e9b36bed0b7532720a84c30 +304c5d733045a529dbde53e5c584e6cec12f99fb 304c5d733045a529dbde53e5c584e6cec12f99fb +2a5e049ed3846a5234697bb6fed98e4909056be4 2a5e049ed3846a5234697bb6fed98e4909056be4 +479fdddf69e8f7c726b7d64fc53e06347128c0de 479fdddf69e8f7c726b7d64fc53e06347128c0de +770ce2b14d3d1f335f04d7c33bbf2ed2047d539b 770ce2b14d3d1f335f04d7c33bbf2ed2047d539b +d43c6af741765e91768167b906310e7a83630890 d43c6af741765e91768167b906310e7a83630890 +84544f2b33bab2dccd8c51af073c15e5e198b161 84544f2b33bab2dccd8c51af073c15e5e198b161 +349776471c977287b2d0db08e52887fdcc0c58f8 349776471c977287b2d0db08e52887fdcc0c58f8 +b3d4653a318da962ff8a78cee90cf432ee0631c6 b3d4653a318da962ff8a78cee90cf432ee0631c6 +f924247aba17823c64785544cc30c9dcd70e7cf3 f924247aba17823c64785544cc30c9dcd70e7cf3 +8d2b8d99fd1c1b1291f3f62f006b549aba156d17 8d2b8d99fd1c1b1291f3f62f006b549aba156d17 +5a32cd64cae3589b517df0e31fb1c3724fe03365 5a32cd64cae3589b517df0e31fb1c3724fe03365 +e993947ab734083beabf31b87bae6da7e8b57848 e993947ab734083beabf31b87bae6da7e8b57848 +9b045fbb4118818beafe94274e19a9172ca937ca 9b045fbb4118818beafe94274e19a9172ca937ca +0e7b685e2fee9e56c885fd23a4a3eaf50d1c26fd 0e7b685e2fee9e56c885fd23a4a3eaf50d1c26fd +bb4b4623a5357c4ed1895bcc6df41ae5a6d0216d bb4b4623a5357c4ed1895bcc6df41ae5a6d0216d +437442dfe5f288700d2729ba3f8e938be09cb3d5 437442dfe5f288700d2729ba3f8e938be09cb3d5 +87c2df748bfa4acf9a8492333319360eac382e4b 87c2df748bfa4acf9a8492333319360eac382e4b +6c99f8e7b6f914c23c2d296f11efe7e253fd8fbf 6c99f8e7b6f914c23c2d296f11efe7e253fd8fbf +5f31794a777536add037ef0b8c08205489471c5b 5f31794a777536add037ef0b8c08205489471c5b +87f7813d22a5c65b1c806105ee483ff6543c5848 87f7813d22a5c65b1c806105ee483ff6543c5848 +bfd1d3a4d9640b033a4d27a1893da05aa55a925b bfd1d3a4d9640b033a4d27a1893da05aa55a925b +ae60c50adb0dcce16d14f46b531aa66f8c299d1a ae60c50adb0dcce16d14f46b531aa66f8c299d1a +3231b933907210e253b8aba3208fdd776ef1fce6 3231b933907210e253b8aba3208fdd776ef1fce6 +aecea5c8fb137deb0eee58d345dddf095d33bb78 aecea5c8fb137deb0eee58d345dddf095d33bb78 +3e3b251bf0d00ddb4cce21ef4961856141d8fd45 3e3b251bf0d00ddb4cce21ef4961856141d8fd45 +a376728063871cacc505afdf43ee9cf11105210d a376728063871cacc505afdf43ee9cf11105210d +54bdfa2ffec562fb21f64ae5cab50215fab2097a 54bdfa2ffec562fb21f64ae5cab50215fab2097a +b49dff40ae528d0f540755110c1798dcab92800a b49dff40ae528d0f540755110c1798dcab92800a +d8f6b13908471521b1079505f891fad01fc0744e d8f6b13908471521b1079505f891fad01fc0744e +ab40700124d4c2f110b2c53f9361040473a2a941 ab40700124d4c2f110b2c53f9361040473a2a941 +59a6d957a1d8eb8d2451f78901a48d470d1e9761 59a6d957a1d8eb8d2451f78901a48d470d1e9761 +9617db200ed333de245d2abbc44a0a82f1babcdf 9617db200ed333de245d2abbc44a0a82f1babcdf +fbed4c13b242020303ac8599bffb1437ded1f821 fbed4c13b242020303ac8599bffb1437ded1f821 +0997d8eb2341a1069dfc3bb16c1c0ad45cb0c532 0997d8eb2341a1069dfc3bb16c1c0ad45cb0c532 +695a69bd520facf97e3ddb7e531ffd4bbbb6e149 695a69bd520facf97e3ddb7e531ffd4bbbb6e149 +8fe47a8406fd5a3c7f93e26c05109dccbc0f3098 8fe47a8406fd5a3c7f93e26c05109dccbc0f3098 +f77768e5485594f3742422bf3181788ebfaff134 f77768e5485594f3742422bf3181788ebfaff134 +b1058e39d341db80b7b0c1943e2ce8622cab87bc b1058e39d341db80b7b0c1943e2ce8622cab87bc +a00f5f63d69c7d8bc37b61a599e55834ae096435 a00f5f63d69c7d8bc37b61a599e55834ae096435 +97a5c02059f93836623ae75d2db0e8aedcfe5b12 97a5c02059f93836623ae75d2db0e8aedcfe5b12 +f414d3757bd0cda1a9593300f26aca53d2e15b27 f414d3757bd0cda1a9593300f26aca53d2e15b27 +725d334bf8def56d309bc2c86ee0f3be3ddfe7b5 725d334bf8def56d309bc2c86ee0f3be3ddfe7b5 +b6fea09119b623d5dbab09357c68219570be074e b6fea09119b623d5dbab09357c68219570be074e +c1b707d7bfadae5343ba4a0265f4bfd1c69da6a5 c1b707d7bfadae5343ba4a0265f4bfd1c69da6a5 +20a55531b9a7e8721d8393d671c7aa5dbdf3c665 20a55531b9a7e8721d8393d671c7aa5dbdf3c665 +4a1197fcebf79febe84199d89f2ca9178f986b3c 4a1197fcebf79febe84199d89f2ca9178f986b3c +43f69198288b8e8ce7a4c4d95d1982853d965e0c 43f69198288b8e8ce7a4c4d95d1982853d965e0c +d3e0e0b09682e7c767a186f1715c9ba84729a5ba d3e0e0b09682e7c767a186f1715c9ba84729a5ba +74bb63d414f5ba6db739d5d63ca44ad07d833c81 74bb63d414f5ba6db739d5d63ca44ad07d833c81 +6655a192ae2641ef4708dd96ccb3059579d1a75b 6655a192ae2641ef4708dd96ccb3059579d1a75b +fffbaa2d9d0676b0beb0628903ce8fbdee2e2406 fffbaa2d9d0676b0beb0628903ce8fbdee2e2406 +143db8400a0154391118da9e9d4540dca863de77 143db8400a0154391118da9e9d4540dca863de77 +df399eb38e60ffd29d79169a7c72058864d2c4d6 df399eb38e60ffd29d79169a7c72058864d2c4d6 +0e93742a425e5c8491b6ad295eb5366c44addd4c 0e93742a425e5c8491b6ad295eb5366c44addd4c +7b191344ff69bfd7d5afc1d7186261b296d44584 7b191344ff69bfd7d5afc1d7186261b296d44584 +36723f36f8b7e82a12d0ccf3f08ab2261443097d 36723f36f8b7e82a12d0ccf3f08ab2261443097d +31afadfcdb7a49e6389c79f6a98ae8699fa22d77 31afadfcdb7a49e6389c79f6a98ae8699fa22d77 +59e2b3181f87c6cc6737799cbd6805c291c3504f 59e2b3181f87c6cc6737799cbd6805c291c3504f +beaa25eb827e3ece5f3aeeb3a8015dfa8db9e82c beaa25eb827e3ece5f3aeeb3a8015dfa8db9e82c +446aa59dc5fd363769f43396f72f1b7bfea52679 446aa59dc5fd363769f43396f72f1b7bfea52679 +000031f7bb6905b655ebcb6a582738b4d19110f5 000031f7bb6905b655ebcb6a582738b4d19110f5 +1bb8e0ade76d2d28851d856c23df9921a593aa7d 1bb8e0ade76d2d28851d856c23df9921a593aa7d +7db4230c5adb25d50cd6ac57992356598cba605a 7db4230c5adb25d50cd6ac57992356598cba605a +b2d74cecf8572bfa2abc7cc9fd9c9ad1a2a5bc64 b2d74cecf8572bfa2abc7cc9fd9c9ad1a2a5bc64 +d31100b6f68ab6e7f05d56d6d4b4e499cd03028a d31100b6f68ab6e7f05d56d6d4b4e499cd03028a +741552e8bdecf09ffde51116d6a91590412b2496 741552e8bdecf09ffde51116d6a91590412b2496 +02ef42d5ccb61f292b14e351fda87ad6a153e94f 02ef42d5ccb61f292b14e351fda87ad6a153e94f +79034def32bbc3742aae8fef5c688cac4397e4da 79034def32bbc3742aae8fef5c688cac4397e4da +55122bf81cabc229f7046415fae38880e519657f 55122bf81cabc229f7046415fae38880e519657f +7f490cf4413c45aa1c996f3d09d07eccf250458e 7f490cf4413c45aa1c996f3d09d07eccf250458e +9209ccdfd472bf2a0db3e2f8e48633e72667d7ef 9209ccdfd472bf2a0db3e2f8e48633e72667d7ef +68f26e3dd2a41460bb85cec23a77aa4a754c23ac 68f26e3dd2a41460bb85cec23a77aa4a754c23ac +9e522f526fe7eb16fe667d3a362efc4ef30c0789 9e522f526fe7eb16fe667d3a362efc4ef30c0789 +da0c46129ebceeb0e5d8c2671e5db69e33b7ce65 da0c46129ebceeb0e5d8c2671e5db69e33b7ce65 +185d48121ad7f9029914873fe62255ec4635eb76 185d48121ad7f9029914873fe62255ec4635eb76 +f4c53504b3ed93c98f8f8126dc6664644d410476 f4c53504b3ed93c98f8f8126dc6664644d410476 +b8c8eb9ed1d29fb7073f1359199acc37295d580a b8c8eb9ed1d29fb7073f1359199acc37295d580a +d1bf9c7086cab0dd08835d3753fc48ea822581f0 d1bf9c7086cab0dd08835d3753fc48ea822581f0 +b3b6d2e3d44434262cb919226b723f0e2afa8ea6 b3b6d2e3d44434262cb919226b723f0e2afa8ea6 +c25cc76c93b21c7100c7e51ab780afd180c8b4a3 c25cc76c93b21c7100c7e51ab780afd180c8b4a3 +abe059f1aa95e136ef2bf804726d51b0e7ddf5f6 abe059f1aa95e136ef2bf804726d51b0e7ddf5f6 +4097a004bb02aa4f1e8b72cfaad989e8b0bf2f4e 4097a004bb02aa4f1e8b72cfaad989e8b0bf2f4e +c225b73235142b1158282fc50efcae30b0970e56 c225b73235142b1158282fc50efcae30b0970e56 +7d551d17c2d04b7a0886b5e6587f13ab52a2146d 7d551d17c2d04b7a0886b5e6587f13ab52a2146d +589aad1bee8d25aae7f7d7d8c065ddff94458524 589aad1bee8d25aae7f7d7d8c065ddff94458524 +39d8e46e871231b601824c14286955af1e51f17f 39d8e46e871231b601824c14286955af1e51f17f +8f356c802a462e32aa884691d36f3085dc15d398 8f356c802a462e32aa884691d36f3085dc15d398 +20a1cf4d8d0772ff9e701a73f2523b14eab25248 20a1cf4d8d0772ff9e701a73f2523b14eab25248 +1e37f54b930c0c4ea64a60729e456958a79cf491 1e37f54b930c0c4ea64a60729e456958a79cf491 +c8af779480e07943fe14b0f05776dc88d882389b c8af779480e07943fe14b0f05776dc88d882389b +934ad824513eb59e7691d5ffbf98319db079bce4 934ad824513eb59e7691d5ffbf98319db079bce4 +7376092c3d1e87adcb3a91ff16c25d90fb40ba9c 7376092c3d1e87adcb3a91ff16c25d90fb40ba9c +f6d3404c166beefecb9c8b3d9400c5ee73edc6c2 f6d3404c166beefecb9c8b3d9400c5ee73edc6c2 +be19a5243e5e75619fb03f842bb8317ec0c38297 be19a5243e5e75619fb03f842bb8317ec0c38297 +3240a3d5d16e4d8b235d4568469ecaf656f314b2 3240a3d5d16e4d8b235d4568469ecaf656f314b2 +d213b1dd97c52100f506c8c556c375b725c79fd3 d213b1dd97c52100f506c8c556c375b725c79fd3 +f199cfa8f9cf13d7b6772e860086adf26d3bdc84 f199cfa8f9cf13d7b6772e860086adf26d3bdc84 +f6b70ce870530b9443a3a8a992ce800f5fe6e38f f6b70ce870530b9443a3a8a992ce800f5fe6e38f +67fdf9cd4803b7aa1900aaf80b6c01851d53d912 67fdf9cd4803b7aa1900aaf80b6c01851d53d912 +035f57e4aa2315936f9198786d31cf6ed4f1158c 035f57e4aa2315936f9198786d31cf6ed4f1158c +77a13b1f0fc03ec9743ed6bc3e102f1d1f808274 77a13b1f0fc03ec9743ed6bc3e102f1d1f808274 +5d90c7b75ba65f097b90bd15963151e3ac201022 5d90c7b75ba65f097b90bd15963151e3ac201022 +a34799d61f787b3fb3646a132bcd9803343ee238 a34799d61f787b3fb3646a132bcd9803343ee238 +33d6caa413001ed7d49593a4e90c36480a638a46 33d6caa413001ed7d49593a4e90c36480a638a46 +ce704c3db1cfdb3ec907030c0297baa6990b144a ce704c3db1cfdb3ec907030c0297baa6990b144a +81880b8388104a6cf4b814e55f42643222a8cd2e 81880b8388104a6cf4b814e55f42643222a8cd2e +2d98c17362920480670457172a62e3960e6756f4 2d98c17362920480670457172a62e3960e6756f4 +9969864aeb71b28d98c94d1c4406fe005236f3e2 9969864aeb71b28d98c94d1c4406fe005236f3e2 +5c0742b1bd1a9170c3629b6915cfcd04f90949c7 5c0742b1bd1a9170c3629b6915cfcd04f90949c7 +903ec17539737fcc4df334fbcf7e95e61058f3e6 903ec17539737fcc4df334fbcf7e95e61058f3e6 +762f5a8f58c5bbc947908aee9d1fc4bd576dc21f 762f5a8f58c5bbc947908aee9d1fc4bd576dc21f +f547158ef228b34e88b3ee227fc7decab0142a69 f547158ef228b34e88b3ee227fc7decab0142a69 +36324ab54159bd4cc7efb34e1a58ecf07242b5ac 36324ab54159bd4cc7efb34e1a58ecf07242b5ac +86025859344ce199cddce2c23065496519ed56e2 86025859344ce199cddce2c23065496519ed56e2 +b33036ece8a8f55c935944f58850589a8ce9de12 b33036ece8a8f55c935944f58850589a8ce9de12 +8769248256c78c95ad2032e1bbf88c1aa16bb7af 8769248256c78c95ad2032e1bbf88c1aa16bb7af +075caad33d9086e9f0d8501e63c7f6e3cf0c9e93 075caad33d9086e9f0d8501e63c7f6e3cf0c9e93 +c60b7df90c7ebbadc764752dffa35666f71d2af7 c60b7df90c7ebbadc764752dffa35666f71d2af7 +b52194423f39ea67b744ad84b0ba1132863243b9 b52194423f39ea67b744ad84b0ba1132863243b9 +d16d309a32968dc471d6eb4777594e1ba067970c d16d309a32968dc471d6eb4777594e1ba067970c +ecc67574eb6cf588f0ae5a54c8f8e10af8c7e167 ecc67574eb6cf588f0ae5a54c8f8e10af8c7e167 +e772001fd1528f766d5e7f05e4da2674228d96b0 e772001fd1528f766d5e7f05e4da2674228d96b0 +1581fd3c63680d500a3ec9f5b1a8a2d233ee5004 1581fd3c63680d500a3ec9f5b1a8a2d233ee5004 +992880b15aa7cb4578c066a5f835b639eb635ef6 992880b15aa7cb4578c066a5f835b639eb635ef6 +d887586d461eda64756d9c2dd7aa1299ec4cdbf8 d887586d461eda64756d9c2dd7aa1299ec4cdbf8 +c3216ab24e2a7f7f079ea72b3d6c48d60dc5cc84 c3216ab24e2a7f7f079ea72b3d6c48d60dc5cc84 +31a09ba90e8c3af14c10414707ca24f9b0169c40 31a09ba90e8c3af14c10414707ca24f9b0169c40 +617341ea798d91b4c32212ff9cecd9ff379ab4d3 617341ea798d91b4c32212ff9cecd9ff379ab4d3 +850768bcaea5024277fc69f8bc502cfc64bcc776 850768bcaea5024277fc69f8bc502cfc64bcc776 +49d8cc5de6025367c2fe3a81116081f2787eb338 49d8cc5de6025367c2fe3a81116081f2787eb338 +56cac51e5662c6f87ebbe6c69ec1efe1781a16bf 56cac51e5662c6f87ebbe6c69ec1efe1781a16bf +f2f32dad33e1d650bc019fd839a9635ead1e88b5 f2f32dad33e1d650bc019fd839a9635ead1e88b5 +612cd49fc66326d819d81d6b0450eb82843af6c0 612cd49fc66326d819d81d6b0450eb82843af6c0 +f5106b266571e5f027bd7868460133c201aa0567 f5106b266571e5f027bd7868460133c201aa0567 +930262e1a0b659f9ccce7e195c4483726e3f5f3f 930262e1a0b659f9ccce7e195c4483726e3f5f3f +d7e78b7bedbe38305ddc5559104f54d67913a718 d7e78b7bedbe38305ddc5559104f54d67913a718 +bb751bb4507999a43ed601356204885a221fac4d bb751bb4507999a43ed601356204885a221fac4d +b8ede607bbc78090310946044893d4c227d84931 b8ede607bbc78090310946044893d4c227d84931 +6ee61a132651c3b7ea925ae446f486bd641f6caf 6ee61a132651c3b7ea925ae446f486bd641f6caf +834cc1d00856fbf5e14f1a5f7904ea41655daab8 834cc1d00856fbf5e14f1a5f7904ea41655daab8 +35396b6068c31f9e21e3d9841e402ace3e134a9b 35396b6068c31f9e21e3d9841e402ace3e134a9b +425a9d23e9df2ea56984c861ad6751b322225b4c 425a9d23e9df2ea56984c861ad6751b322225b4c +0a925d1a7d97d05d8040456c1d165166e0632500 0a925d1a7d97d05d8040456c1d165166e0632500 +02ae4bffff61887c069caa02a290b62409a586bb 02ae4bffff61887c069caa02a290b62409a586bb +c1a91783521e5fd69652662c70e21cb61b1bbe0b c1a91783521e5fd69652662c70e21cb61b1bbe0b +0518dccb341915141f31f9e9e02c022c9895733c 0518dccb341915141f31f9e9e02c022c9895733c +566d2fb3022f1d6d9496753f3644591667823230 566d2fb3022f1d6d9496753f3644591667823230 +36428ceec87da9257138fcfa3695407474fc8c1d 36428ceec87da9257138fcfa3695407474fc8c1d +8c157815f72ac5083727def7c7523b269096d336 8c157815f72ac5083727def7c7523b269096d336 +79b17ab1ec89feb9d1767d025fbff251f5a6d584 79b17ab1ec89feb9d1767d025fbff251f5a6d584 +7161e0c379a7b078a810489563f32bc20ad674bf 7161e0c379a7b078a810489563f32bc20ad674bf +845c8e4249ed427f83a194d76f8aca731c4b45e1 845c8e4249ed427f83a194d76f8aca731c4b45e1 +6dccc1e2cd2e563add46153241c8ca9f5401d510 6dccc1e2cd2e563add46153241c8ca9f5401d510 +bf28bf87654fd33167c74bfe5d6a54d8d7de7c67 bf28bf87654fd33167c74bfe5d6a54d8d7de7c67 +6b1648258fa3f8ea31f2df28051d8c74ce7cb453 6b1648258fa3f8ea31f2df28051d8c74ce7cb453 +dc31a803214b8ba54b0f8cd31cb1f6603bc93a53 dc31a803214b8ba54b0f8cd31cb1f6603bc93a53 +3c797195168997c2f09c3c4aaa2735ad4833736f 3c797195168997c2f09c3c4aaa2735ad4833736f +c1d4fcfe96944f34d23ec7ad9fbf12f0bf7161ed c1d4fcfe96944f34d23ec7ad9fbf12f0bf7161ed +7032aa6a67170e7e3efdd2b2aafbe433311ffe0f 7032aa6a67170e7e3efdd2b2aafbe433311ffe0f +b5fc563caf72408671ae2c62b1252f0876c8f1db b5fc563caf72408671ae2c62b1252f0876c8f1db +e03631cff73524b965bc16c42833a38ae52881b9 e03631cff73524b965bc16c42833a38ae52881b9 +1db9a9518fb3ef8bf1dd35f5e7f8d669af620df9 1db9a9518fb3ef8bf1dd35f5e7f8d669af620df9 +e666de6db7e0ad0614f9a0b18c5f773bb84a9822 e666de6db7e0ad0614f9a0b18c5f773bb84a9822 +9ca1cfabdfc0c6a18d1d71c6e5bdef49874a82a6 9ca1cfabdfc0c6a18d1d71c6e5bdef49874a82a6 +e2aba417163fb620bb584f5d2338712220f3466a e2aba417163fb620bb584f5d2338712220f3466a +a254206d7a847d4f7ca3172b56d3c142554e3f0d a254206d7a847d4f7ca3172b56d3c142554e3f0d +63286f6e6fe97b9b167529beae5d51cbe1e65d5f 63286f6e6fe97b9b167529beae5d51cbe1e65d5f +354989a0c352d94c368fc802a9d248e87a939b31 354989a0c352d94c368fc802a9d248e87a939b31 +f22150e2a5e8c92888f6322629bb03100d270720 f22150e2a5e8c92888f6322629bb03100d270720 +965a23b783883e305eac4a3c771dea96ba9feef2 965a23b783883e305eac4a3c771dea96ba9feef2 +d51efc3a6c2808094e8906876549cec02091b843 d51efc3a6c2808094e8906876549cec02091b843 +f0608d9a9e57a04ab0a122f3f56233a81909c24c f0608d9a9e57a04ab0a122f3f56233a81909c24c +5d39f79f77776cff77f9687550a9e41de928cbfb 5d39f79f77776cff77f9687550a9e41de928cbfb +0a52eca106ea309d368b74af7d62f9dd5b829435 0a52eca106ea309d368b74af7d62f9dd5b829435 +8263e244bbe3fa0abf6e2b5638ed8e401abec06f 8263e244bbe3fa0abf6e2b5638ed8e401abec06f +0ee08b1575228a5b4b589636f2cd8632210cb10d 0ee08b1575228a5b4b589636f2cd8632210cb10d +acac65bb7bfeacbad4a20490c60e491bcae7e279 acac65bb7bfeacbad4a20490c60e491bcae7e279 +987c0c0c125b768db0b688919ee04b837196d6ee 987c0c0c125b768db0b688919ee04b837196d6ee +f14dfc3832ac09dfb7a65858574d343a2d273114 f14dfc3832ac09dfb7a65858574d343a2d273114 +08ffde1ccaa624a3945e2e49d1104c0720ed6150 08ffde1ccaa624a3945e2e49d1104c0720ed6150 +2844176ff8448fc76e412598f1603f770f7e0b32 2844176ff8448fc76e412598f1603f770f7e0b32 +e8377717edcade64473995eccc1f0d876307e1bb e8377717edcade64473995eccc1f0d876307e1bb +e13ad2b00e642d693b45eeb0a8ed7ccac56d891a e13ad2b00e642d693b45eeb0a8ed7ccac56d891a +77b5b46505a53d200157312e6e6430a4020f19b4 77b5b46505a53d200157312e6e6430a4020f19b4 +75244bde3a1a565dda9b7e3b6f119e8c10bc163c 75244bde3a1a565dda9b7e3b6f119e8c10bc163c +6706c4df2478257bfef21f78f590fc13654f5446 6706c4df2478257bfef21f78f590fc13654f5446 +d1893f12f2e9200db57576591db639ac9364abee d1893f12f2e9200db57576591db639ac9364abee +1f7c4d97cb46d5fe9c86083859b29201bbc09ea2 1f7c4d97cb46d5fe9c86083859b29201bbc09ea2 +ac9a24a2bdb1aad9d09cd897b1cd00279e047eb2 ac9a24a2bdb1aad9d09cd897b1cd00279e047eb2 +29116b021d12aff7d46a8754e53b7fc730861b1f 29116b021d12aff7d46a8754e53b7fc730861b1f +81f25ff273bd18709afa663cb378f173d1db9544 81f25ff273bd18709afa663cb378f173d1db9544 +a3d0cde4c4622829c4855990a7468967c9e68d2f a3d0cde4c4622829c4855990a7468967c9e68d2f +1a3bf2f197ebde9f942068b3833410c22421677f 1a3bf2f197ebde9f942068b3833410c22421677f +5f293f3eaae87488cd96ea7ceb63c128ad6a1bea 5f293f3eaae87488cd96ea7ceb63c128ad6a1bea +8c69c3fca8eccd739b2efb82cba9fa36e44a5321 8c69c3fca8eccd739b2efb82cba9fa36e44a5321 +96a82ef12e40485a4b01bf482a5d2c84586c1ca6 96a82ef12e40485a4b01bf482a5d2c84586c1ca6 +421c8c711ab72e52075ae2320848c5fdc28f3b9c 421c8c711ab72e52075ae2320848c5fdc28f3b9c +53e305cc93c5069c1ed3ecd2b9e2929328eabecf 53e305cc93c5069c1ed3ecd2b9e2929328eabecf +f5ed02142b17a779476ccf5b6a5bf7ede0e61d66 f5ed02142b17a779476ccf5b6a5bf7ede0e61d66 +229ffedb728162feb11a6c52315229f7fc9521e1 229ffedb728162feb11a6c52315229f7fc9521e1 +c0f5e8f478a397f2f0aa1da6e08edf090f96f528 c0f5e8f478a397f2f0aa1da6e08edf090f96f528 +af24b2dff4a30924f68f3aec8f43489310af6332 af24b2dff4a30924f68f3aec8f43489310af6332 +c74887f5ccfda69c1698a4d603caad6cb1b3ee32 c74887f5ccfda69c1698a4d603caad6cb1b3ee32 +224639e7a7d9d31e28db9dab1c79f72dd43d293a 224639e7a7d9d31e28db9dab1c79f72dd43d293a +9d7f5834d0dd5e7f6b247790e14fa8d570387fde 9d7f5834d0dd5e7f6b247790e14fa8d570387fde +354b75b3dbd52af5d6edb15c94eabdb47c1ee44a 354b75b3dbd52af5d6edb15c94eabdb47c1ee44a +4f5090e0c1b85f07a92ded04631bb4a6f1d45227 4f5090e0c1b85f07a92ded04631bb4a6f1d45227 +fef0e470dd3af71ed23a46b68e10a9023a7e99f1 fef0e470dd3af71ed23a46b68e10a9023a7e99f1 +9b1f4f3e29e16f9314fa6a078f027963cc790ab9 9b1f4f3e29e16f9314fa6a078f027963cc790ab9 +bf56dd2cf89bead43258349cac561b8a4108d0df bf56dd2cf89bead43258349cac561b8a4108d0df +fde1ce4bea011c2688b7c0b4c3d2a710e9cda444 fde1ce4bea011c2688b7c0b4c3d2a710e9cda444 +47100d5b75d35772f77d816f971852dfb7092e8b 47100d5b75d35772f77d816f971852dfb7092e8b +8a9581e8872348a97295609a7639bd9c1335575b 8a9581e8872348a97295609a7639bd9c1335575b +c8928bab56024b48e3cfff6ed18fec062ce82218 c8928bab56024b48e3cfff6ed18fec062ce82218 +d6ac95a818ec5c2a363fe269d07854ced090aed1 d6ac95a818ec5c2a363fe269d07854ced090aed1 +d1fa3b7e41116c4e60754366ec1888797a611518 d1fa3b7e41116c4e60754366ec1888797a611518 +73da851dd6803ce45d8124ce30b3713c9ba9dd32 73da851dd6803ce45d8124ce30b3713c9ba9dd32 +f483feda46450b5f3a0ad572dd2fbd662e24f197 f483feda46450b5f3a0ad572dd2fbd662e24f197 +e98e3b1a00ad6772448025e3612181e0726a5cb2 e98e3b1a00ad6772448025e3612181e0726a5cb2 +6dfc92bd06f51bb8b9c130841080ddbb297dd502 6dfc92bd06f51bb8b9c130841080ddbb297dd502 +bca16afe34fcbd77c14608e5355ecaf11b51b48c bca16afe34fcbd77c14608e5355ecaf11b51b48c +8841c32479a81b1b8f8929e67fcf895a5d7de133 8841c32479a81b1b8f8929e67fcf895a5d7de133 +00a60982ed984d85f1af410337f34e81123178b8 00a60982ed984d85f1af410337f34e81123178b8 +c0a56c3e0764f9807455f796e0a1ddada9a62a51 c0a56c3e0764f9807455f796e0a1ddada9a62a51 +e640e59b09b6e4bde67bc44d04b5d18bdcf19694 e640e59b09b6e4bde67bc44d04b5d18bdcf19694 +3488600dab230b70d71ba356b55877ab9e4643be 3488600dab230b70d71ba356b55877ab9e4643be +6c9679dd00e9a5f172f0c0514a614c6d213ba7e0 6c9679dd00e9a5f172f0c0514a614c6d213ba7e0 +418ebee56ecce5f8d6668df364d67d98e335bcb0 418ebee56ecce5f8d6668df364d67d98e335bcb0 +0614b127e30930d78b24231b2edf5f0ec11a8415 0614b127e30930d78b24231b2edf5f0ec11a8415 +12c1a24d19c7ce3dd403891854389cca1a526525 12c1a24d19c7ce3dd403891854389cca1a526525 +65b64b7025312a736bd042305fcbb1d8bbd5ab1d 65b64b7025312a736bd042305fcbb1d8bbd5ab1d +f56b78c0d97c02cc2966898a1ef1aa25a7127f91 f56b78c0d97c02cc2966898a1ef1aa25a7127f91 +4a5ec9489bb8379ff56ba86732aae732ce4fd88b 4a5ec9489bb8379ff56ba86732aae732ce4fd88b +2728f536341e4fa8b1544bfa48f65463a841a4f4 2728f536341e4fa8b1544bfa48f65463a841a4f4 +ac6aa66ff3257325cf561eae4911475fa54aa63f ac6aa66ff3257325cf561eae4911475fa54aa63f +f92c8af6e4f04290797b7c9edc6939e09de079fe f92c8af6e4f04290797b7c9edc6939e09de079fe +db1ba763e8a02e33c2711d5a14ac345d76c66d7d db1ba763e8a02e33c2711d5a14ac345d76c66d7d +fb64f732fa39b0c4f64074c70dd1b12e653a71c6 fb64f732fa39b0c4f64074c70dd1b12e653a71c6 +703b5d767254cf334cf7a8b4acdedcad33570e12 703b5d767254cf334cf7a8b4acdedcad33570e12 +b06c3a909e3d0db571495f78e21d6c883bc64a58 b06c3a909e3d0db571495f78e21d6c883bc64a58 +f1625e706fe5240a43d2668c2994efee4ab61569 f1625e706fe5240a43d2668c2994efee4ab61569 +c2f99c91d750b35a847ef8a141608fb222143867 c2f99c91d750b35a847ef8a141608fb222143867 +32897120542751a2dedfbae2534f25d0874e161d 32897120542751a2dedfbae2534f25d0874e161d +6a6205692dc313bf2794476dda3cfd36d9033451 6a6205692dc313bf2794476dda3cfd36d9033451 +02d93caf6b9a57742f56743a6d8bf16fef1fc8c2 02d93caf6b9a57742f56743a6d8bf16fef1fc8c2 +b9a9e84418bd9b4468305dcdc692c0b0cb2f3d75 b9a9e84418bd9b4468305dcdc692c0b0cb2f3d75 +512a26fc823a233bad1f0fc18d316943ef21a7fb 512a26fc823a233bad1f0fc18d316943ef21a7fb +c165e5c38ce7d8789973c1b47d40d0471b57da06 c165e5c38ce7d8789973c1b47d40d0471b57da06 +c96e0556a7293f3d4d163736d766d147db8bb2e2 c96e0556a7293f3d4d163736d766d147db8bb2e2 +cf2b1da3f85d3e6af5c4d9b0cc075e256bca83b3 cf2b1da3f85d3e6af5c4d9b0cc075e256bca83b3 +7c1d9b5010d6ab1da40440794f2dcad2c45d0c58 7c1d9b5010d6ab1da40440794f2dcad2c45d0c58 +81aa812bfe7997c3c758a7a0c57424fcb7541fad 81aa812bfe7997c3c758a7a0c57424fcb7541fad +85f566a7300649a7c551ace78f15dced99bfa028 85f566a7300649a7c551ace78f15dced99bfa028 +c0d8c73efe9882540a8e85a23c2eede61f8854ff c0d8c73efe9882540a8e85a23c2eede61f8854ff +9cc1e73210809f0432a3a8fdddeef23daa742847 9cc1e73210809f0432a3a8fdddeef23daa742847 +018921254e244c587829c0def01ace8d6e9ecf34 018921254e244c587829c0def01ace8d6e9ecf34 +c97137abf01e9723c0b155ea11223a66230664c2 c97137abf01e9723c0b155ea11223a66230664c2 +3ed9f4fbb0154e1b79cd22d1cf601a544297bdfd 3ed9f4fbb0154e1b79cd22d1cf601a544297bdfd +aa4ef40e7e1c5194709ffce813f540fcc3d8744c aa4ef40e7e1c5194709ffce813f540fcc3d8744c +f1da3c38e14c840a2ab28e46d4dc0179a99db7df f1da3c38e14c840a2ab28e46d4dc0179a99db7df +6f7dcd771a723182ebc561436406ea6963907cb9 6f7dcd771a723182ebc561436406ea6963907cb9 +257051921387ac382dc3c4abd0311a7897eccda9 257051921387ac382dc3c4abd0311a7897eccda9 +4e1e54ee31781d1deedf3ae72ee5a9a5051364f5 4e1e54ee31781d1deedf3ae72ee5a9a5051364f5 +90494374af6881b5962e02d9c7580b9ab6ddec88 90494374af6881b5962e02d9c7580b9ab6ddec88 +cac48722f360ed161f608d04cd232fa3db942f8c cac48722f360ed161f608d04cd232fa3db942f8c +6468c82012ad31fff9fd6d69addbd241c0a69298 6468c82012ad31fff9fd6d69addbd241c0a69298 +291645ebb1a3f192593816de8b186c7885ce22a0 291645ebb1a3f192593816de8b186c7885ce22a0 +7fc548eb9bc18cd494ef92dfa93560c4ce1520e6 7fc548eb9bc18cd494ef92dfa93560c4ce1520e6 +cc93f4ded7fa7edaeecdfbbbd4ad540b37fe9ce3 cc93f4ded7fa7edaeecdfbbbd4ad540b37fe9ce3 +5f13f07da7490bec6ce0eb6c0061b1fdba85119c 5f13f07da7490bec6ce0eb6c0061b1fdba85119c +acf15d0e75fcfe809cb734f7273f0455469e7b79 acf15d0e75fcfe809cb734f7273f0455469e7b79 +ca020b01d21a1b98bec3ed4cf7b55f573f707c54 ca020b01d21a1b98bec3ed4cf7b55f573f707c54 +a8ee9af0c0d5f5679bd98d25f0343fe0e17d4036 a8ee9af0c0d5f5679bd98d25f0343fe0e17d4036 +69884c4bc3661eb358f0dedc875893ba589145cd 69884c4bc3661eb358f0dedc875893ba589145cd +b44d700634815356527373eb96e698882e7e7543 b44d700634815356527373eb96e698882e7e7543 +b8ecbbfc649f2795fe1f315da3c2aa27b2fb4017 b8ecbbfc649f2795fe1f315da3c2aa27b2fb4017 +f0766662c80f7666d27976ba1bcee017cf5b8f5c f0766662c80f7666d27976ba1bcee017cf5b8f5c +b74495ef87e8cd0ed5105bd21962f2a349fb73c9 b74495ef87e8cd0ed5105bd21962f2a349fb73c9 +c4da08f95142a15a46d129e7b5ab60e52c21c9f6 c4da08f95142a15a46d129e7b5ab60e52c21c9f6 +c033e8d2832fcff34ebb8f0ac456afa911fdc7e7 c033e8d2832fcff34ebb8f0ac456afa911fdc7e7 +80e115b11eb5840749c03be555adbc39dfbddc77 80e115b11eb5840749c03be555adbc39dfbddc77 +4138dd26c79e44ba23f44961f06608af121c2209 4138dd26c79e44ba23f44961f06608af121c2209 +04a3a95640e9c0c6c18d3983e5551a1158f2647a 04a3a95640e9c0c6c18d3983e5551a1158f2647a +adc7e12911edc94da15d5ec46f158371cd4a5bf3 adc7e12911edc94da15d5ec46f158371cd4a5bf3 +b30f89049dedf944880a6b600d8917d6577630b1 b30f89049dedf944880a6b600d8917d6577630b1 +c8b3ec40df2139dc44aead489344a08695decd46 c8b3ec40df2139dc44aead489344a08695decd46 +575b02ebfbe060fb77ccd42186f6bc345f325cef 575b02ebfbe060fb77ccd42186f6bc345f325cef +a9f293db44e81d9c389e34846cb0103c5922e453 a9f293db44e81d9c389e34846cb0103c5922e453 +d84b26eff926646d9b9be82d830320960b746c05 d84b26eff926646d9b9be82d830320960b746c05 +f3bfc91a5515582c67a42042e952e41e29b5dde6 f3bfc91a5515582c67a42042e952e41e29b5dde6 +612751015dbda3a1b4dd6ee3ccc7012cfa7e44ed 612751015dbda3a1b4dd6ee3ccc7012cfa7e44ed +9db96e63399a9d4244c435feb85ce3a623d3cb08 9db96e63399a9d4244c435feb85ce3a623d3cb08 +0bcd5d46d514d8dceacb29ab230cab7b59c7aec2 0bcd5d46d514d8dceacb29ab230cab7b59c7aec2 +4dfd9125beffa046f48aad894d665eab8f9415fe 4dfd9125beffa046f48aad894d665eab8f9415fe +3313950af79c35972732a151cf6078b566bcfd39 3313950af79c35972732a151cf6078b566bcfd39 +cb7b28ac25a70f54e47377bd27c8768f665a8b08 cb7b28ac25a70f54e47377bd27c8768f665a8b08 +8f563a8a28ddd2c6771c46743081a8b321bc0760 8f563a8a28ddd2c6771c46743081a8b321bc0760 +c7e0ab1fec449a8cd22829c2db183b503c991440 c7e0ab1fec449a8cd22829c2db183b503c991440 +0fc41266feb37bc752c1d616a9ba9ed1f06b472f 0fc41266feb37bc752c1d616a9ba9ed1f06b472f +de2b183a340170e1fe5eb2ea7bd0b8fa167fbbf0 de2b183a340170e1fe5eb2ea7bd0b8fa167fbbf0 +d7138d5a9400b71d65877d58dc0812d353ef038b d7138d5a9400b71d65877d58dc0812d353ef038b +645eed8147ef14adc6d0f17dac7540b6c5c48934 645eed8147ef14adc6d0f17dac7540b6c5c48934 +9d47cb2b42b934a445f49c0d750e4da95351ba34 9d47cb2b42b934a445f49c0d750e4da95351ba34 +cc08d5859502b8141bbeff6ca463f133ab62e238 cc08d5859502b8141bbeff6ca463f133ab62e238 +7c707a923710b16975dc6736558359e6edc1aa53 7c707a923710b16975dc6736558359e6edc1aa53 +16a7ef15ad8915fd27226020367b5d84cd3b4111 16a7ef15ad8915fd27226020367b5d84cd3b4111 +98a79eac277d60427fe982729906a43f1e6dd3ed 98a79eac277d60427fe982729906a43f1e6dd3ed +4989e773bafaa59d30d1c2b1c82511cd2be884cb 4989e773bafaa59d30d1c2b1c82511cd2be884cb +42390ca7d81e3e2a3303d21b549ef08a24801bd4 42390ca7d81e3e2a3303d21b549ef08a24801bd4 +abe0835757f15f052b74861a32655611675e0db3 abe0835757f15f052b74861a32655611675e0db3 +602ee8469cf56b42837756d54d9a1b64d54798b1 602ee8469cf56b42837756d54d9a1b64d54798b1 +e76bed17f37119d1532af9159a2263345b644bbd e76bed17f37119d1532af9159a2263345b644bbd +09548c5fe8fb2504254c7d0b4d6565bc490e2d9a 09548c5fe8fb2504254c7d0b4d6565bc490e2d9a +a9e4611426048b2b293a3ad00b0075216f27918c a9e4611426048b2b293a3ad00b0075216f27918c +acfb04cbe65ac86f9bc58f95ab0e4ee6b5ac9c44 acfb04cbe65ac86f9bc58f95ab0e4ee6b5ac9c44 +0ce783d5be103354c1d5ee72b6569e4fef932d3c 0ce783d5be103354c1d5ee72b6569e4fef932d3c +4b6875b8033c67e03a689e1a258c28dcb9aa4ae5 4b6875b8033c67e03a689e1a258c28dcb9aa4ae5 +808a536654b6fe0d2d2dd903dd3159cf646821e0 808a536654b6fe0d2d2dd903dd3159cf646821e0 +2cd35e1c0551d7942fc8f034f36f4397dbc0d479 2cd35e1c0551d7942fc8f034f36f4397dbc0d479 +97d90c8328d6aa2581ea06a228a6fb796455a294 97d90c8328d6aa2581ea06a228a6fb796455a294 +436203eb43cccf964f57230c9db8ab0d34f90ece 436203eb43cccf964f57230c9db8ab0d34f90ece +d767b116b0df953b71d62cafffb85a4017d3dbc2 d767b116b0df953b71d62cafffb85a4017d3dbc2 +2bc1808a324e8fc906f4f007a4f1375c7517cecf 2bc1808a324e8fc906f4f007a4f1375c7517cecf +846db01c912ee532951d84c9fb880892aa096e1a 846db01c912ee532951d84c9fb880892aa096e1a +918efd2d70d5849810b9e7a7ac71a13850ed8be8 918efd2d70d5849810b9e7a7ac71a13850ed8be8 +c073c200dcccf5012425009b487a677c4c513360 c073c200dcccf5012425009b487a677c4c513360 +8268af7ce57b764b0ad99c37b1ea47b945c5c192 8268af7ce57b764b0ad99c37b1ea47b945c5c192 +c72a51e00dd80003b46f3292b63d4d1d569e0c30 c72a51e00dd80003b46f3292b63d4d1d569e0c30 +d5d2a25a22c9713645eca37103a6d32b43db9175 d5d2a25a22c9713645eca37103a6d32b43db9175 +ebc73721e24b4459137fd2faf3ad8c9813f34371 ebc73721e24b4459137fd2faf3ad8c9813f34371 +1f311cc42db2b10a8375a4d28f935bc185aef89b 1f311cc42db2b10a8375a4d28f935bc185aef89b +c9a80581e8c13d489314ba8f0dca39c92af7da74 c9a80581e8c13d489314ba8f0dca39c92af7da74 +5b68a8168f22d9ee906b7679cd6f6e07026a359f 5b68a8168f22d9ee906b7679cd6f6e07026a359f +e3264c6831af7422aca123d96b30c5a7562e3244 e3264c6831af7422aca123d96b30c5a7562e3244 +9cd6d98786b7a4f405d62317742d670d5f92d6a9 9cd6d98786b7a4f405d62317742d670d5f92d6a9 +00af73df46d366a419d91ea3d93067a38617cb43 00af73df46d366a419d91ea3d93067a38617cb43 +31f7ba79bccb6bf8f08b61764295ba39f68f3f6d 31f7ba79bccb6bf8f08b61764295ba39f68f3f6d +b739782b0688d0c348baada89c639aa901469ba4 b739782b0688d0c348baada89c639aa901469ba4 +54ad3a327d123d0e99ad61d11fa2cb0335e7ea8d 54ad3a327d123d0e99ad61d11fa2cb0335e7ea8d +bb9b7240aefd89026158924c3914861d192aef37 bb9b7240aefd89026158924c3914861d192aef37 +39e982614ba3373a4668d15a8409a48b045f2a70 39e982614ba3373a4668d15a8409a48b045f2a70 +c9aaecb60adedae53a32bf1d39f23413b832a2ba c9aaecb60adedae53a32bf1d39f23413b832a2ba +ca759254babd152edb3e5ab42726b3f1ce4106b6 ca759254babd152edb3e5ab42726b3f1ce4106b6 +024b502b0dc8291a2ae26df566aa4f5da27991fc 024b502b0dc8291a2ae26df566aa4f5da27991fc +38999bd27f7895842277ef45fb2899ff7dfb6541 38999bd27f7895842277ef45fb2899ff7dfb6541 +3fd86b3902c6546cb9851e84ae9b332bf6b06685 3fd86b3902c6546cb9851e84ae9b332bf6b06685 +6bb72551d329c74d5529b0e153a89a92f09747c8 6bb72551d329c74d5529b0e153a89a92f09747c8 +d0ce65a4452f4ff81fc53745e0ed3ee90f1aa0fa d0ce65a4452f4ff81fc53745e0ed3ee90f1aa0fa +c8716a25e526edd7dadae00762a05eaf122df87c c8716a25e526edd7dadae00762a05eaf122df87c +7a5eab01a495ae669d1f0075bd2e65c210b5fca0 7a5eab01a495ae669d1f0075bd2e65c210b5fca0 +8b6165ad6b41cd586bc10f85100d389d43dd3939 8b6165ad6b41cd586bc10f85100d389d43dd3939 +66bf889eb475631634500d8dfd20e16f3a13c43f 66bf889eb475631634500d8dfd20e16f3a13c43f diff --git a/new-clone/filter-repo/ref-map b/new-clone/filter-repo/ref-map new file mode 100644 index 000000000..11300f579 --- /dev/null +++ b/new-clone/filter-repo/ref-map @@ -0,0 +1,2 @@ +old new ref +66bf889eb475631634500d8dfd20e16f3a13c43f 66bf889eb475631634500d8dfd20e16f3a13c43f refs/heads/main diff --git a/new-clone/filter-repo/suboptimal-issues b/new-clone/filter-repo/suboptimal-issues new file mode 100644 index 000000000..e197be768 --- /dev/null +++ b/new-clone/filter-repo/suboptimal-issues @@ -0,0 +1,5 @@ +The following commits were filtered out, but referenced in another +commit message. The reference to the now-nonexistent commit hash +(or a substring thereof) was left as-is in any commit messages: + b'41898282' + diff --git a/new-clone/hooks/applypatch-msg.sample b/new-clone/hooks/applypatch-msg.sample new file mode 100755 index 000000000..a5d7b84a6 --- /dev/null +++ b/new-clone/hooks/applypatch-msg.sample @@ -0,0 +1,15 @@ +#!/bin/sh +# +# An example hook script to check the commit log message taken by +# applypatch from an e-mail message. +# +# The hook should exit with non-zero status after issuing an +# appropriate message if it wants to stop the commit. The hook is +# allowed to edit the commit message file. +# +# To enable this hook, rename this file to "applypatch-msg". + +. git-sh-setup +commitmsg="$(git rev-parse --git-path hooks/commit-msg)" +test -x "$commitmsg" && exec "$commitmsg" ${1+"$@"} +: diff --git a/new-clone/hooks/commit-msg.sample b/new-clone/hooks/commit-msg.sample new file mode 100755 index 000000000..b58d1184a --- /dev/null +++ b/new-clone/hooks/commit-msg.sample @@ -0,0 +1,24 @@ +#!/bin/sh +# +# An example hook script to check the commit log message. +# Called by "git commit" with one argument, the name of the file +# that has the commit message. The hook should exit with non-zero +# status after issuing an appropriate message if it wants to stop the +# commit. The hook is allowed to edit the commit message file. +# +# To enable this hook, rename this file to "commit-msg". + +# Uncomment the below to add a Signed-off-by line to the message. +# Doing this in a hook is a bad idea in general, but the prepare-commit-msg +# hook is more suited to it. +# +# SOB=$(git var GIT_AUTHOR_IDENT | sed -n 's/^\(.*>\).*$/Signed-off-by: \1/p') +# grep -qs "^$SOB" "$1" || echo "$SOB" >> "$1" + +# This example catches duplicate Signed-off-by lines. + +test "" = "$(grep '^Signed-off-by: ' "$1" | + sort | uniq -c | sed -e '/^[ ]*1[ ]/d')" || { + echo >&2 Duplicate Signed-off-by lines. + exit 1 +} diff --git a/new-clone/hooks/fsmonitor-watchman.sample b/new-clone/hooks/fsmonitor-watchman.sample new file mode 100755 index 000000000..23e856f5d --- /dev/null +++ b/new-clone/hooks/fsmonitor-watchman.sample @@ -0,0 +1,174 @@ +#!/usr/bin/perl + +use strict; +use warnings; +use IPC::Open2; + +# An example hook script to integrate Watchman +# (https://facebook.github.io/watchman/) with git to speed up detecting +# new and modified files. +# +# The hook is passed a version (currently 2) and last update token +# formatted as a string and outputs to stdout a new update token and +# all files that have been modified since the update token. Paths must +# be relative to the root of the working tree and separated by a single NUL. +# +# To enable this hook, rename this file to "query-watchman" and set +# 'git config core.fsmonitor .git/hooks/query-watchman' +# +my ($version, $last_update_token) = @ARGV; + +# Uncomment for debugging +# print STDERR "$0 $version $last_update_token\n"; + +# Check the hook interface version +if ($version ne 2) { + die "Unsupported query-fsmonitor hook version '$version'.\n" . + "Falling back to scanning...\n"; +} + +my $git_work_tree = get_working_dir(); + +my $retry = 1; + +my $json_pkg; +eval { + require JSON::XS; + $json_pkg = "JSON::XS"; + 1; +} or do { + require JSON::PP; + $json_pkg = "JSON::PP"; +}; + +launch_watchman(); + +sub launch_watchman { + my $o = watchman_query(); + if (is_work_tree_watched($o)) { + output_result($o->{clock}, @{$o->{files}}); + } +} + +sub output_result { + my ($clockid, @files) = @_; + + # Uncomment for debugging watchman output + # open (my $fh, ">", ".git/watchman-output.out"); + # binmode $fh, ":utf8"; + # print $fh "$clockid\n@files\n"; + # close $fh; + + binmode STDOUT, ":utf8"; + print $clockid; + print "\0"; + local $, = "\0"; + print @files; +} + +sub watchman_clock { + my $response = qx/watchman clock "$git_work_tree"/; + die "Failed to get clock id on '$git_work_tree'.\n" . + "Falling back to scanning...\n" if $? != 0; + + return $json_pkg->new->utf8->decode($response); +} + +sub watchman_query { + my $pid = open2(\*CHLD_OUT, \*CHLD_IN, 'watchman -j --no-pretty') + or die "open2() failed: $!\n" . + "Falling back to scanning...\n"; + + # In the query expression below we're asking for names of files that + # changed since $last_update_token but not from the .git folder. + # + # To accomplish this, we're using the "since" generator to use the + # recency index to select candidate nodes and "fields" to limit the + # output to file names only. Then we're using the "expression" term to + # further constrain the results. + my $last_update_line = ""; + if (substr($last_update_token, 0, 1) eq "c") { + $last_update_token = "\"$last_update_token\""; + $last_update_line = qq[\n"since": $last_update_token,]; + } + my $query = <<" END"; + ["query", "$git_work_tree", {$last_update_line + "fields": ["name"], + "expression": ["not", ["dirname", ".git"]] + }] + END + + # Uncomment for debugging the watchman query + # open (my $fh, ">", ".git/watchman-query.json"); + # print $fh $query; + # close $fh; + + print CHLD_IN $query; + close CHLD_IN; + my $response = do {local $/; }; + + # Uncomment for debugging the watch response + # open ($fh, ">", ".git/watchman-response.json"); + # print $fh $response; + # close $fh; + + die "Watchman: command returned no output.\n" . + "Falling back to scanning...\n" if $response eq ""; + die "Watchman: command returned invalid output: $response\n" . + "Falling back to scanning...\n" unless $response =~ /^\{/; + + return $json_pkg->new->utf8->decode($response); +} + +sub is_work_tree_watched { + my ($output) = @_; + my $error = $output->{error}; + if ($retry > 0 and $error and $error =~ m/unable to resolve root .* directory (.*) is not watched/) { + $retry--; + my $response = qx/watchman watch "$git_work_tree"/; + die "Failed to make watchman watch '$git_work_tree'.\n" . + "Falling back to scanning...\n" if $? != 0; + $output = $json_pkg->new->utf8->decode($response); + $error = $output->{error}; + die "Watchman: $error.\n" . + "Falling back to scanning...\n" if $error; + + # Uncomment for debugging watchman output + # open (my $fh, ">", ".git/watchman-output.out"); + # close $fh; + + # Watchman will always return all files on the first query so + # return the fast "everything is dirty" flag to git and do the + # Watchman query just to get it over with now so we won't pay + # the cost in git to look up each individual file. + my $o = watchman_clock(); + $error = $output->{error}; + + die "Watchman: $error.\n" . + "Falling back to scanning...\n" if $error; + + output_result($o->{clock}, ("/")); + $last_update_token = $o->{clock}; + + eval { launch_watchman() }; + return 0; + } + + die "Watchman: $error.\n" . + "Falling back to scanning...\n" if $error; + + return 1; +} + +sub get_working_dir { + my $working_dir; + if ($^O =~ 'msys' || $^O =~ 'cygwin') { + $working_dir = Win32::GetCwd(); + $working_dir =~ tr/\\/\//; + } else { + require Cwd; + $working_dir = Cwd::cwd(); + } + + return $working_dir; +} diff --git a/new-clone/hooks/post-update.sample b/new-clone/hooks/post-update.sample new file mode 100755 index 000000000..ec17ec193 --- /dev/null +++ b/new-clone/hooks/post-update.sample @@ -0,0 +1,8 @@ +#!/bin/sh +# +# An example hook script to prepare a packed repository for use over +# dumb transports. +# +# To enable this hook, rename this file to "post-update". + +exec git update-server-info diff --git a/new-clone/hooks/pre-applypatch.sample b/new-clone/hooks/pre-applypatch.sample new file mode 100755 index 000000000..4142082bc --- /dev/null +++ b/new-clone/hooks/pre-applypatch.sample @@ -0,0 +1,14 @@ +#!/bin/sh +# +# An example hook script to verify what is about to be committed +# by applypatch from an e-mail message. +# +# The hook should exit with non-zero status after issuing an +# appropriate message if it wants to stop the commit. +# +# To enable this hook, rename this file to "pre-applypatch". + +. git-sh-setup +precommit="$(git rev-parse --git-path hooks/pre-commit)" +test -x "$precommit" && exec "$precommit" ${1+"$@"} +: diff --git a/new-clone/hooks/pre-commit.sample b/new-clone/hooks/pre-commit.sample new file mode 100755 index 000000000..e144712c8 --- /dev/null +++ b/new-clone/hooks/pre-commit.sample @@ -0,0 +1,49 @@ +#!/bin/sh +# +# An example hook script to verify what is about to be committed. +# Called by "git commit" with no arguments. The hook should +# exit with non-zero status after issuing an appropriate message if +# it wants to stop the commit. +# +# To enable this hook, rename this file to "pre-commit". + +if git rev-parse --verify HEAD >/dev/null 2>&1 +then + against=HEAD +else + # Initial commit: diff against an empty tree object + against=$(git hash-object -t tree /dev/null) +fi + +# If you want to allow non-ASCII filenames set this variable to true. +allownonascii=$(git config --type=bool hooks.allownonascii) + +# Redirect output to stderr. +exec 1>&2 + +# Cross platform projects tend to avoid non-ASCII filenames; prevent +# them from being added to the repository. We exploit the fact that the +# printable range starts at the space character and ends with tilde. +if [ "$allownonascii" != "true" ] && + # Note that the use of brackets around a tr range is ok here, (it's + # even required, for portability to Solaris 10's /usr/bin/tr), since + # the square bracket bytes happen to fall in the designated range. + test $(git diff --cached --name-only --diff-filter=A -z $against | + LC_ALL=C tr -d '[ -~]\0' | wc -c) != 0 +then + cat <<\EOF +Error: Attempt to add a non-ASCII file name. + +This can cause problems if you want to work with people on other platforms. + +To be portable it is advisable to rename the file. + +If you know what you are doing you can disable this check using: + + git config hooks.allownonascii true +EOF + exit 1 +fi + +# If there are whitespace errors, print the offending file names and fail. +exec git diff-index --check --cached $against -- diff --git a/new-clone/hooks/pre-merge-commit.sample b/new-clone/hooks/pre-merge-commit.sample new file mode 100755 index 000000000..399eab192 --- /dev/null +++ b/new-clone/hooks/pre-merge-commit.sample @@ -0,0 +1,13 @@ +#!/bin/sh +# +# An example hook script to verify what is about to be committed. +# Called by "git merge" with no arguments. The hook should +# exit with non-zero status after issuing an appropriate message to +# stderr if it wants to stop the merge commit. +# +# To enable this hook, rename this file to "pre-merge-commit". + +. git-sh-setup +test -x "$GIT_DIR/hooks/pre-commit" && + exec "$GIT_DIR/hooks/pre-commit" +: diff --git a/new-clone/hooks/pre-push.sample b/new-clone/hooks/pre-push.sample new file mode 100755 index 000000000..4ce688d32 --- /dev/null +++ b/new-clone/hooks/pre-push.sample @@ -0,0 +1,53 @@ +#!/bin/sh + +# An example hook script to verify what is about to be pushed. Called by "git +# push" after it has checked the remote status, but before anything has been +# pushed. If this script exits with a non-zero status nothing will be pushed. +# +# This hook is called with the following parameters: +# +# $1 -- Name of the remote to which the push is being done +# $2 -- URL to which the push is being done +# +# If pushing without using a named remote those arguments will be equal. +# +# Information about the commits which are being pushed is supplied as lines to +# the standard input in the form: +# +# +# +# This sample shows how to prevent push of commits where the log message starts +# with "WIP" (work in progress). + +remote="$1" +url="$2" + +zero=$(git hash-object --stdin &2 "Found WIP commit in $local_ref, not pushing" + exit 1 + fi + fi +done + +exit 0 diff --git a/new-clone/hooks/pre-rebase.sample b/new-clone/hooks/pre-rebase.sample new file mode 100755 index 000000000..6cbef5c37 --- /dev/null +++ b/new-clone/hooks/pre-rebase.sample @@ -0,0 +1,169 @@ +#!/bin/sh +# +# Copyright (c) 2006, 2008 Junio C Hamano +# +# The "pre-rebase" hook is run just before "git rebase" starts doing +# its job, and can prevent the command from running by exiting with +# non-zero status. +# +# The hook is called with the following parameters: +# +# $1 -- the upstream the series was forked from. +# $2 -- the branch being rebased (or empty when rebasing the current branch). +# +# This sample shows how to prevent topic branches that are already +# merged to 'next' branch from getting rebased, because allowing it +# would result in rebasing already published history. + +publish=next +basebranch="$1" +if test "$#" = 2 +then + topic="refs/heads/$2" +else + topic=`git symbolic-ref HEAD` || + exit 0 ;# we do not interrupt rebasing detached HEAD +fi + +case "$topic" in +refs/heads/??/*) + ;; +*) + exit 0 ;# we do not interrupt others. + ;; +esac + +# Now we are dealing with a topic branch being rebased +# on top of master. Is it OK to rebase it? + +# Does the topic really exist? +git show-ref -q "$topic" || { + echo >&2 "No such branch $topic" + exit 1 +} + +# Is topic fully merged to master? +not_in_master=`git rev-list --pretty=oneline ^master "$topic"` +if test -z "$not_in_master" +then + echo >&2 "$topic is fully merged to master; better remove it." + exit 1 ;# we could allow it, but there is no point. +fi + +# Is topic ever merged to next? If so you should not be rebasing it. +only_next_1=`git rev-list ^master "^$topic" ${publish} | sort` +only_next_2=`git rev-list ^master ${publish} | sort` +if test "$only_next_1" = "$only_next_2" +then + not_in_topic=`git rev-list "^$topic" master` + if test -z "$not_in_topic" + then + echo >&2 "$topic is already up to date with master" + exit 1 ;# we could allow it, but there is no point. + else + exit 0 + fi +else + not_in_next=`git rev-list --pretty=oneline ^${publish} "$topic"` + /usr/bin/perl -e ' + my $topic = $ARGV[0]; + my $msg = "* $topic has commits already merged to public branch:\n"; + my (%not_in_next) = map { + /^([0-9a-f]+) /; + ($1 => 1); + } split(/\n/, $ARGV[1]); + for my $elem (map { + /^([0-9a-f]+) (.*)$/; + [$1 => $2]; + } split(/\n/, $ARGV[2])) { + if (!exists $not_in_next{$elem->[0]}) { + if ($msg) { + print STDERR $msg; + undef $msg; + } + print STDERR " $elem->[1]\n"; + } + } + ' "$topic" "$not_in_next" "$not_in_master" + exit 1 +fi + +<<\DOC_END + +This sample hook safeguards topic branches that have been +published from being rewound. + +The workflow assumed here is: + + * Once a topic branch forks from "master", "master" is never + merged into it again (either directly or indirectly). + + * Once a topic branch is fully cooked and merged into "master", + it is deleted. If you need to build on top of it to correct + earlier mistakes, a new topic branch is created by forking at + the tip of the "master". This is not strictly necessary, but + it makes it easier to keep your history simple. + + * Whenever you need to test or publish your changes to topic + branches, merge them into "next" branch. + +The script, being an example, hardcodes the publish branch name +to be "next", but it is trivial to make it configurable via +$GIT_DIR/config mechanism. + +With this workflow, you would want to know: + +(1) ... if a topic branch has ever been merged to "next". Young + topic branches can have stupid mistakes you would rather + clean up before publishing, and things that have not been + merged into other branches can be easily rebased without + affecting other people. But once it is published, you would + not want to rewind it. + +(2) ... if a topic branch has been fully merged to "master". + Then you can delete it. More importantly, you should not + build on top of it -- other people may already want to + change things related to the topic as patches against your + "master", so if you need further changes, it is better to + fork the topic (perhaps with the same name) afresh from the + tip of "master". + +Let's look at this example: + + o---o---o---o---o---o---o---o---o---o "next" + / / / / + / a---a---b A / / + / / / / + / / c---c---c---c B / + / / / \ / + / / / b---b C \ / + / / / / \ / + ---o---o---o---o---o---o---o---o---o---o---o "master" + + +A, B and C are topic branches. + + * A has one fix since it was merged up to "next". + + * B has finished. It has been fully merged up to "master" and "next", + and is ready to be deleted. + + * C has not merged to "next" at all. + +We would want to allow C to be rebased, refuse A, and encourage +B to be deleted. + +To compute (1): + + git rev-list ^master ^topic next + git rev-list ^master next + + if these match, topic has not merged in next at all. + +To compute (2): + + git rev-list master..topic + + if this is empty, it is fully merged to "master". + +DOC_END diff --git a/new-clone/hooks/pre-receive.sample b/new-clone/hooks/pre-receive.sample new file mode 100755 index 000000000..a1fd29ec1 --- /dev/null +++ b/new-clone/hooks/pre-receive.sample @@ -0,0 +1,24 @@ +#!/bin/sh +# +# An example hook script to make use of push options. +# The example simply echoes all push options that start with 'echoback=' +# and rejects all pushes when the "reject" push option is used. +# +# To enable this hook, rename this file to "pre-receive". + +if test -n "$GIT_PUSH_OPTION_COUNT" +then + i=0 + while test "$i" -lt "$GIT_PUSH_OPTION_COUNT" + do + eval "value=\$GIT_PUSH_OPTION_$i" + case "$value" in + echoback=*) + echo "echo from the pre-receive-hook: ${value#*=}" >&2 + ;; + reject) + exit 1 + esac + i=$((i + 1)) + done +fi diff --git a/new-clone/hooks/prepare-commit-msg.sample b/new-clone/hooks/prepare-commit-msg.sample new file mode 100755 index 000000000..10fa14c5a --- /dev/null +++ b/new-clone/hooks/prepare-commit-msg.sample @@ -0,0 +1,42 @@ +#!/bin/sh +# +# An example hook script to prepare the commit log message. +# Called by "git commit" with the name of the file that has the +# commit message, followed by the description of the commit +# message's source. The hook's purpose is to edit the commit +# message file. If the hook fails with a non-zero status, +# the commit is aborted. +# +# To enable this hook, rename this file to "prepare-commit-msg". + +# This hook includes three examples. The first one removes the +# "# Please enter the commit message..." help message. +# +# The second includes the output of "git diff --name-status -r" +# into the message, just before the "git status" output. It is +# commented because it doesn't cope with --amend or with squashed +# commits. +# +# The third example adds a Signed-off-by line to the message, that can +# still be edited. This is rarely a good idea. + +COMMIT_MSG_FILE=$1 +COMMIT_SOURCE=$2 +SHA1=$3 + +/usr/bin/perl -i.bak -ne 'print unless(m/^. Please enter the commit message/..m/^#$/)' "$COMMIT_MSG_FILE" + +# case "$COMMIT_SOURCE,$SHA1" in +# ,|template,) +# /usr/bin/perl -i.bak -pe ' +# print "\n" . `git diff --cached --name-status -r` +# if /^#/ && $first++ == 0' "$COMMIT_MSG_FILE" ;; +# *) ;; +# esac + +# SOB=$(git var GIT_COMMITTER_IDENT | sed -n 's/^\(.*>\).*$/Signed-off-by: \1/p') +# git interpret-trailers --in-place --trailer "$SOB" "$COMMIT_MSG_FILE" +# if test -z "$COMMIT_SOURCE" +# then +# /usr/bin/perl -i.bak -pe 'print "\n" if !$first_line++' "$COMMIT_MSG_FILE" +# fi diff --git a/new-clone/hooks/push-to-checkout.sample b/new-clone/hooks/push-to-checkout.sample new file mode 100755 index 000000000..af5a0c001 --- /dev/null +++ b/new-clone/hooks/push-to-checkout.sample @@ -0,0 +1,78 @@ +#!/bin/sh + +# An example hook script to update a checked-out tree on a git push. +# +# This hook is invoked by git-receive-pack(1) when it reacts to git +# push and updates reference(s) in its repository, and when the push +# tries to update the branch that is currently checked out and the +# receive.denyCurrentBranch configuration variable is set to +# updateInstead. +# +# By default, such a push is refused if the working tree and the index +# of the remote repository has any difference from the currently +# checked out commit; when both the working tree and the index match +# the current commit, they are updated to match the newly pushed tip +# of the branch. This hook is to be used to override the default +# behaviour; however the code below reimplements the default behaviour +# as a starting point for convenient modification. +# +# The hook receives the commit with which the tip of the current +# branch is going to be updated: +commit=$1 + +# It can exit with a non-zero status to refuse the push (when it does +# so, it must not modify the index or the working tree). +die () { + echo >&2 "$*" + exit 1 +} + +# Or it can make any necessary changes to the working tree and to the +# index to bring them to the desired state when the tip of the current +# branch is updated to the new commit, and exit with a zero status. +# +# For example, the hook can simply run git read-tree -u -m HEAD "$1" +# in order to emulate git fetch that is run in the reverse direction +# with git push, as the two-tree form of git read-tree -u -m is +# essentially the same as git switch or git checkout that switches +# branches while keeping the local changes in the working tree that do +# not interfere with the difference between the branches. + +# The below is a more-or-less exact translation to shell of the C code +# for the default behaviour for git's push-to-checkout hook defined in +# the push_to_deploy() function in builtin/receive-pack.c. +# +# Note that the hook will be executed from the repository directory, +# not from the working tree, so if you want to perform operations on +# the working tree, you will have to adapt your code accordingly, e.g. +# by adding "cd .." or using relative paths. + +if ! git update-index -q --ignore-submodules --refresh +then + die "Up-to-date check failed" +fi + +if ! git diff-files --quiet --ignore-submodules -- +then + die "Working directory has unstaged changes" +fi + +# This is a rough translation of: +# +# head_has_history() ? "HEAD" : EMPTY_TREE_SHA1_HEX +if git cat-file -e HEAD 2>/dev/null +then + head=HEAD +else + head=$(git hash-object -t tree --stdin &2 + echo " (if you want, you could supply GIT_DIR then run" >&2 + echo " $0 )" >&2 + exit 1 +fi + +if [ -z "$refname" -o -z "$oldrev" -o -z "$newrev" ]; then + echo "usage: $0 " >&2 + exit 1 +fi + +# --- Config +allowunannotated=$(git config --type=bool hooks.allowunannotated) +allowdeletebranch=$(git config --type=bool hooks.allowdeletebranch) +denycreatebranch=$(git config --type=bool hooks.denycreatebranch) +allowdeletetag=$(git config --type=bool hooks.allowdeletetag) +allowmodifytag=$(git config --type=bool hooks.allowmodifytag) + +# check for no description +projectdesc=$(sed -e '1q' "$GIT_DIR/description") +case "$projectdesc" in +"Unnamed repository"* | "") + echo "*** Project description file hasn't been set" >&2 + exit 1 + ;; +esac + +# --- Check types +# if $newrev is 0000...0000, it's a commit to delete a ref. +zero=$(git hash-object --stdin &2 + echo "*** Use 'git tag [ -a | -s ]' for tags you want to propagate." >&2 + exit 1 + fi + ;; + refs/tags/*,delete) + # delete tag + if [ "$allowdeletetag" != "true" ]; then + echo "*** Deleting a tag is not allowed in this repository" >&2 + exit 1 + fi + ;; + refs/tags/*,tag) + # annotated tag + if [ "$allowmodifytag" != "true" ] && git rev-parse $refname > /dev/null 2>&1 + then + echo "*** Tag '$refname' already exists." >&2 + echo "*** Modifying a tag is not allowed in this repository." >&2 + exit 1 + fi + ;; + refs/heads/*,commit) + # branch + if [ "$oldrev" = "$zero" -a "$denycreatebranch" = "true" ]; then + echo "*** Creating a branch is not allowed in this repository" >&2 + exit 1 + fi + ;; + refs/heads/*,delete) + # delete branch + if [ "$allowdeletebranch" != "true" ]; then + echo "*** Deleting a branch is not allowed in this repository" >&2 + exit 1 + fi + ;; + refs/remotes/*,commit) + # tracking branch + ;; + refs/remotes/*,delete) + # delete tracking branch + if [ "$allowdeletebranch" != "true" ]; then + echo "*** Deleting a tracking branch is not allowed in this repository" >&2 + exit 1 + fi + ;; + *) + # Anything else (is there anything else?) + echo "*** Update hook: unknown type of update to ref $refname of type $newrev_type" >&2 + exit 1 + ;; +esac + +# --- Finished +exit 0 diff --git a/new-clone/info/exclude b/new-clone/info/exclude new file mode 100644 index 000000000..a5196d1be --- /dev/null +++ b/new-clone/info/exclude @@ -0,0 +1,6 @@ +# git ls-files --others --exclude-from=.git/info/exclude +# Lines that start with '#' are comments. +# For a project mostly in C, the following would be a good set of +# exclude patterns (uncomment them if you want to use them): +# *.[oa] +# *~ diff --git a/new-clone/info/refs b/new-clone/info/refs new file mode 100644 index 000000000..2587f83a4 --- /dev/null +++ b/new-clone/info/refs @@ -0,0 +1 @@ +66bf889eb475631634500d8dfd20e16f3a13c43f refs/heads/main diff --git a/new-clone/objects/info/commit-graph b/new-clone/objects/info/commit-graph new file mode 100644 index 000000000..c8e09f632 Binary files /dev/null and b/new-clone/objects/info/commit-graph differ diff --git a/new-clone/objects/info/packs b/new-clone/objects/info/packs new file mode 100644 index 000000000..637a4e03f --- /dev/null +++ b/new-clone/objects/info/packs @@ -0,0 +1,2 @@ +P pack-d6d9d5d444e02ca50fe0788213eabb26eac422c6.pack + diff --git a/new-clone/objects/pack/pack-d6d9d5d444e02ca50fe0788213eabb26eac422c6.bitmap b/new-clone/objects/pack/pack-d6d9d5d444e02ca50fe0788213eabb26eac422c6.bitmap new file mode 100644 index 000000000..03a87f7c2 Binary files /dev/null and b/new-clone/objects/pack/pack-d6d9d5d444e02ca50fe0788213eabb26eac422c6.bitmap differ diff --git a/new-clone/objects/pack/pack-d6d9d5d444e02ca50fe0788213eabb26eac422c6.idx b/new-clone/objects/pack/pack-d6d9d5d444e02ca50fe0788213eabb26eac422c6.idx new file mode 100644 index 000000000..c60fb5c04 Binary files /dev/null and b/new-clone/objects/pack/pack-d6d9d5d444e02ca50fe0788213eabb26eac422c6.idx differ diff --git a/new-clone/objects/pack/pack-d6d9d5d444e02ca50fe0788213eabb26eac422c6.pack b/new-clone/objects/pack/pack-d6d9d5d444e02ca50fe0788213eabb26eac422c6.pack new file mode 100644 index 000000000..249a6e136 Binary files /dev/null and b/new-clone/objects/pack/pack-d6d9d5d444e02ca50fe0788213eabb26eac422c6.pack differ diff --git a/new-clone/packed-refs b/new-clone/packed-refs new file mode 100644 index 000000000..ea944b281 --- /dev/null +++ b/new-clone/packed-refs @@ -0,0 +1,2 @@ +# pack-refs with: peeled fully-peeled sorted +66bf889eb475631634500d8dfd20e16f3a13c43f refs/heads/main