Centos-kernel-stream-9/include/linux/iosys-map.h

517 lines
17 KiB
C
Raw Permalink Normal View History

dma-buf-map: Rename to iosys-map Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2043115 Upstream Status: v5.18-rc1 Conflicts: drivers/gpu/drm/etnaviv/etnaviv_drv.h drivers/gpu/drm/msm/msm_drv.h drivers/media/common/videobuf2/videobuf2-dma-contig.c commit 7938f4218168ae9fc4bdddb15976f9ebbae41999 Author: Lucas De Marchi <lucas.demarchi@intel.com> AuthorDate: Fri Feb 4 09:05:41 2022 -0800 Commit: Lucas De Marchi <lucas.demarchi@intel.com> CommitDate: Mon Feb 7 16:35:35 2022 -0800 Rename struct dma_buf_map to struct iosys_map and corresponding APIs. Over time dma-buf-map grew up to more functionality than the one used by dma-buf: in fact it's just a shim layer to abstract system memory, that can be accessed via regular load and store, from IO memory that needs to be acessed via arch helpers. The idea is to extend this API so it can fulfill other needs, internal to a single driver. Example: in the i915 driver it's desired to share the implementation for integrated graphics, which uses mostly system memory, with discrete graphics, which may need to access IO memory. The conversion was mostly done with the following semantic patch: @r1@ @@ - struct dma_buf_map + struct iosys_map @r2@ @@ ( - DMA_BUF_MAP_INIT_VADDR + IOSYS_MAP_INIT_VADDR | - dma_buf_map_set_vaddr + iosys_map_set_vaddr | - dma_buf_map_set_vaddr_iomem + iosys_map_set_vaddr_iomem | - dma_buf_map_is_equal + iosys_map_is_equal | - dma_buf_map_is_null + iosys_map_is_null | - dma_buf_map_is_set + iosys_map_is_set | - dma_buf_map_clear + iosys_map_clear | - dma_buf_map_memcpy_to + iosys_map_memcpy_to | - dma_buf_map_incr + iosys_map_incr ) @@ @@ - #include <linux/dma-buf-map.h> + #include <linux/iosys-map.h> Then some files had their includes adjusted and some comments were update to remove mentions to dma-buf-map. Since this is not specific to dma-buf anymore, move the documentation to the "Bus-Independent Device Accesses" section. v2: - Squash patches v3: - Fix wrong removal of dma-buf.h from MAINTAINERS - Move documentation from dma-buf.rst to device-io.rst v4: - Change documentation title and level Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com> Acked-by: Christian König <christian.koenig@amd.com> Acked-by: Sumit Semwal <sumit.semwal@linaro.org> Acked-by: Thomas Zimmermann <tzimmermann@suse.de> Link: https://patchwork.freedesktop.org/patch/msgid/20220204170541.829227-1-lucas.demarchi@intel.com Signed-off-by: Karol Herbst <kherbst@redhat.com>
2022-03-29 14:15:44 +00:00
/* SPDX-License-Identifier: GPL-2.0-only */
/*
* Pointer abstraction for IO/system memory
*/
#ifndef __IOSYS_MAP_H__
#define __IOSYS_MAP_H__
Merge DRM changes from upstream v5.19..v6.0 NOTE: This commit does not compile due to missing RHEL-specific fix-ups, which are split out into separate Git commits following this one. If git bisect selected this commit, run "git bisect skip" and try again. Repeat this until it selects a commit which compiles. This commit was generated using: rhdrm-merge-drm v6.0 2115876 Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2115876 Conflicts: drivers/gpu/drm/hyperv/hyperv_drm_drv.c drivers/gpu/drm/mgag200/mgag200_mode.c Conflict resolution: Commit list: commit d10f7117aa43b0b0d1c4b878afafb6d151da441d commit 115fcf5899f7e0b0d3358a22a8cd76b1398642ee commit d8cb49d203556707ff4c3aa05032c4fc7c3ff1a2 commit 9d72b7e2d2ce3746950929a2c54171d183ea89f2 commit 94afc5382669c3a201c5817c47b57a879b6dabce commit aba5825439d7691343aa562dfeaf6616455bcb01 commit a9ec4fd004b84c26207a8cae41662c501c8a284b commit 537d9ed2f6c1dbfe8465365c2f74a855ffad5e6a commit ed3173077d3fa6fd085960aa6347ec30f532bf31 commit b07debc2a8ce7324c85479a28d145eaa05382286 commit 4ce08703a8c4be77b060aefd14eda272f50a45e4 commit 9975af040a04ba9aef33f3ef1ca4e8f04c7223dd commit dfc0312596561ac462308fae32130a0c580b7ac1 commit 37852141965d467a4ae118139b6eee266e7d953c commit 2af243444f9100639451b11d311982279e00cc16 commit 49a62a2923e523e5359219ed54d643c60f3374f8 commit 705bec3eca9b712fe006b7e4d6b4cd4dc6b57d36 commit 8db73897698ccb4eb70ab103245372569ff5a5ec commit 58304630b830a1c27457ce2e3a0912555b43d03e commit 6ff1c19f5f28dbc396462032dcbfdb8b64795415 commit d792ec62ae1260df2e54dc41103aad3b19bad948 commit a5c89f7c43c12c592a882a0ec2a15e9df0011e80 commit 315241d2d9102a90f71bd6c9e7dd06a1c831a184 commit a7b516bd981f11feb0c9f5ee3d149855d48cb2c8 commit 6f67930af78f10ac7a1a9ba81ec606a9bd07749f commit 56ca3117f77a23a8b24e73e458bc85c11e5dea31 commit e6c2db2be986158afb9991d9fa8a38fe65a88516 commit 91875c22a31be0bdf91d7ec651bb6b083b35ac37 commit 69ed3dd6be9cf5d75252940b9a927dff4bab7860 commit 09708b6d82ef473de91c49d90f35e38b0db463f5 commit 222ff6db8a0dcb86f2bb65fc8656aec635a737a6 commit 218076abbcd647de46635d21331a34b814f90906 commit 922abe4d19bd21b38298f3902674774b92a49293 commit b6411373d3954c8fe4617c27f90f773108b0ab03 commit efd01cd3c27636bc4840057a03839e54abaf11dc commit eb86f645ab9b90c47de7ebe229feae7ac999421b commit b15a7357a84f091fde8ce35bf2fd494150ad4bd0 commit 1b93ff4d0679190e8812cd0d0b3aebfcba1ed883 commit e9794c88cd6cf4be4a79188916a75539751f532c commit 3507932390bbfcf7c69dff9843f1c9da6ed4b861 commit 23dd74db02d75579d8d4eb0b88c7ad119e782269 commit b499914eb83765a27e3b43f216e9d1bdf4265418 commit 6c01aa13894fa0049ea8c96c271318ca353a77f1 commit 429e1fc1b2c257f35b6a1318eb3a1ffb80bc6640 commit e090532246fe17609b08ba0a862428867426dc95 commit 9d67edba730c4663eb7d87771123c3fb86ba606d commit 4de23dca7ec8dfb191ea80fbfe3f008d4ed52346 commit 6cd96877c7da6bc3a28ef0bcb3bc7470f4dd9aa6 commit 93d9e0453e2bb599e0bcced1b914f9b4010180a1 commit 69f8afdb45e7775840693bce42da79d9c22c2e83 commit 500d7135c924024ed2e5e62b03dd9b3b6257fa10 commit 8caaf7ad659da9b757781d5f08ce0bf98801931e commit 1a1a5a315ee805bec457fd214250c088efadb50b commit ad5f74f3420183052532a220edd9a37aba92724a commit 047de3f17a8321065c32ee3f6272a6dba16d6bcf commit 5e3f1e7729ec7a99e145e9d8ed58963d86cdfb98 commit 708d19d9f362766147cab79eccae60912c6d3068 commit aebeb02dfccb61d6930112aede2db3db5b8e974e commit ef83e1198f9f7d7db0031c839bb1112cfee45b42 commit 7ecc3cc8a7b39f08eee9aea7b718187583342a70 commit 3064debaf55e1bc8f191871ca5f82697ef4c0951 commit c48a363016349352dac7e66cd1e823f73bff1fc4 commit d2addf89c5abf4024574d42000313175c6e074fc commit d7fd32ecce914686756dedf586c8573e71f975a4 commit 3080c21a043abc83e56da9bb5942eb3f4b92c90e commit 303760aa914b7f5ac9602dbb4b471a2ad52eeb3e commit 21c47196aec3a93f913a7515e1e7b30e6c54d6c6 commit 18fb42db05a0b93ab5dd5eab5315e50eaa3ca620 commit 945ae909aa76f55ac8c9e95feb3683512d39134a commit be982415fc2e953ad49e59b204f2d0e64953eb5f commit ab1747ccf052976465db7c5a7e1301a50f290db0 commit e4ccf9a777d30d60c60f729b1d5c9bc9e3ea46e3 commit 22a27e0532d06968afc265a3b91fbdc5a773169a commit e42192b4c345a807d8df034f178d5846e1c97ad1 commit a2f9790dcffe2dd0b363607fd215e5b81a0de57a commit 40f71f5b239291357dbee3dc1c6ace83a373f44e commit dd0f4470a849d07081a2036f89d2c41264383985 commit f0d080ff429129b16332f17a906ad2123d9c6317 commit 084c7a7c7a0a0cab35d959e1b14d45a0c6221f49 commit a77f7c89e62c6dfe405a64995812746f27adc510 commit 7428bfbdb7c4dc7323e6b6f0e327c3587e479e16 commit 67d87fac86dd4a04cc62dc0eddfb7c74ace4666d commit 874d98eed71ae678ab364d4c16060955b8b245ae commit 2c54f87cf2fb99826ded617fd0484e688ecfe882 commit 45aa2336fa6dbfa73d9081f75a4b813e747a55aa commit bba4b6470b02c2d9a5074a40cff7246d3356f460 commit 027034511c6a1e3ea96122f7626b89b6d339ed49 commit 3176d0925027727ec37e388e9363f124c2c52ae9 commit 0c057877cbdf261efa7874474f48c715cd6401ba commit 5e87b2e5171621ff00ec197c9af15bc3aa405b6b commit bbded689680f0f2e65d4a57d0dfa654671052d56 commit c7b2dee4308b74391734ac675e66e6856a077f77 commit d9ba1b4cbb2989c919198832f4ebd6eb8ba94da0 commit d0edd3c1a7e859a5899c26e2906e80f4ac798fa9 commit ca10b9d60f8c9556720bad8b1ec7d522e353a01d commit de5db71e4c8c35ed5e92006e3064ce9230881ece commit b6415bd7386bcf9d2e0d6ee1d4ef4186e7a87b24 commit b959eb4f5b7ea49b47e95c9047d33d1b1cf81057 commit 0facdaa249c4e97346bc0b49c893e4a1d336b7dd commit c3e57159dea473e9e138d32d08c48f3103294050 commit 057a6a1936e79c0bc9c86537fb9886ed39cd078a commit d6774b8c3c5813aa541c9148f641d3d8d4b296d2 commit c577b2f43e80d707870a74de0fd726c51b206956 commit a24191b1c4ad05fc578ea5ea01652c09b71da86d commit a9ad5822366c5065e6a65fe5ff5090295ba98986 commit d158367c31f0f87567d2e8a0955287dc005d40e5 commit 8f6de23184452793e60945a26ac40db435d7798d commit 9e97c46f832d4669b4e52cde5ad0bd43423504eb commit a77c2af0994e24ee36c7ffb6dc852770bdf06fb1 commit 5913ab941d6ea782e841234c76958c6872ea752d commit d50f74790bbba662d1438dbc03be6616c52c0722 commit 16f1456466c269ecda32b88c3f8fdd76f8ec370c commit b279df242972ae816a75cf1cc732af836f999100 commit 8219f11fdaf56593a719e1d72fa582673560315a commit 69340e529a064da4807622395e967aa2b5eba1c5 commit 475e2b970cc372f49e9d3e4bbead8b4874299d31 commit e180a7b218487065efd9a3f05eac5de7de128e19 commit 315a8d00ac74c59a688a1a88c0ed97a7791d1c91 commit a50794f26f52c66cb793d5d392f5f19bc2962cdd commit 451374eef622fca6f00eeeda89aaccb45a30a149 commit 1ade30812abfdd1c161a155fd54b0dd594c217ee commit 230fb39ff7e07bd0324c87acf08dd2c9b0bbcea8 commit 962bd34bb457f6353f333ce234c3fd34cad1c00a commit 411d44d754739a371999412606b28af1d72a210b commit 7f73b371710edaee1f40d834096c07c62e51b184 commit f159b1b22c8a2d3d7c1fa877fafc8aacff0deeba commit 746b9c62cc8614fa59c23f3332682b5e9e1d801c commit 1c89b4b718168aa6cf136a984b474d663e4203b7 commit a8d6e127254c48d895c4f6e973ec998fd4a0eff3 commit 4f093a527b0b8f9d3059a4e8376e582fd14cf09e commit 4a2a13a57b605994ee44e5c2cd7b9efc49901404 commit e7c254d75d16b75abf1958095fd34e2ecdc0d645 commit 69ef4a192bba0d76216198ec6d5fe82375337903 commit 9602efab9f8652ef39dc2789edcd26c3d1d3f901 commit e91eec9128c2ad9eab9cf9d7c17f8034b6a86c4c commit 9d8d5a39173244a1394cf84a93447be6f82b361d commit 3d6c72b7fdd2429ca1d4d690618bf65050380b48 commit b409db082da6b76ad2b759a1a48d9402eee4b942 commit fdbec9ff669d83bf863ca7e657af6a9e4c949565 commit 39921e5f00f5a98ff9cb3229937ca339e8d9c9c6 commit 85a040bc9049dd168d5e79a1fa9d2da87e6e52dc commit ee421bb4cb9535f44015634baad833dcc98c9062 commit 5f38c3fb55ce3814b4353320d7a205068a420e48 commit 39c28cdfb719f0e306b447f0827dfd712f81858b commit 0d662350928e6787d29ab205e47e5aa6f1f792f9 commit c1de02bbeca58894c805b3d45c2da4bf30cfc5d9 commit 0b4c48f3e315d172e4cc06e10f2c8ba180788baf commit 08c59dde71b73a0ac94e3ed2d431345b01f20485 commit 67d935b4713988d0a41097439c0c2d74f240b204 commit fa373eb2190115ef2c3597f89c12350d0a250eb0 commit 4cd79f614b501e496ee8e4181d528c0cc1cb4e18 commit 8ec5c0006c50cb1909c0de0fad137909c1218990 commit 2ba5b683260e13d8f2c43bc594d5ae15ec7f7a04 commit 670c87fd169518eb4f15030c63f6c1b4ddf18bfb commit 1ff72d434b40d221e2583fab5e1203031d05c059 commit 649eb3828fb22e829e222ebd83f4e11dc503a565 commit 9ad6f181ad9a19a26bda73a7b199df44ccfcdaba commit 39b1bc4b5bcccac781267bb826b035fbb99c8b9d commit 991dcb89caeb1b9bf714b382e23d3f6d8016e744 commit 61922beba36adea8702fe8069b309c806f6608af commit 6b03816f869529393b37d03e5d75b68f7365a7a4 commit e4f21d1436519fec3e181082c8e1c3fb00ec08a7 commit 1a3b1ea111c44d9dce9f70ba032531a223395a15 commit d63ddca7c58132257fd01e3a4feca41b3bac3089 commit 8ae664907916eba9a9d56296bed684c27318a872 commit d32e8ed918ba7384fda9055ebb31b89b3eadb517 commit fb289464f695f9d913479b4ebae9e39b057f8531 commit 1eb31338994889ac34c4f841e5d54bf10111741b commit e41388d508a50ddb2be5c2676f1992353ca2f155 commit a4f263f46961b1229b10ca3a98f0be618a9d47ac commit a67664860f7833015a683ea295f7c79ac2901332 commit 837c72b23a57e15dd363d5f3f3f268c49c128740 commit edd34368c4c3b45b1386b15f78b2229420f8c6d4 commit b981cc333ff06cb23c7968007965e79c80f5df97 commit e31372492904415e425430402453a192e2c6519f commit 16e214d4aef2d600ef94e845530a28ce795b8fcc commit 26be7cd8aacdd3f0429834e78e3166286779f083 commit 6a735552f44d7a29a9e629cdc3b5c3ac2b4021e6 commit 9d15dd1bb3e7de4dd31a225977813dda2748253e commit 69d6bf5c3754ffc491896632438417d1cedc2c68 commit 91776af1d8deb8f36cbec6bf2bf24b661b2b5cbb commit 9180c30cd61aa0b2f0eb4791c8e490c8c5abc54c commit 420a07b841d03f6a436d8c06571c69aa5c783897 commit 4fde3f5d8805caba40cce2268c540d8a37403c6b commit 51ab3b85000d214b75899875d5745935e06020e5 commit 822e5ae701af2964c5808b6ade1d6f3b1eaec967 commit 75bd0d5e4eadb9ce3e9b6fb71971b6e87c38799e commit 60b02a09598f87972a15bb181b9a62b8a8ee682a commit 89fcdf4305996f869eb39eb8f14a989e9a289611 commit 586294c3c1860ac991d3a241159c0edf974b68e4 commit 8e75e8f573e1ff4a0c93c3be1554d2bfd5ae6029 commit 67090801489d0a4c80c121494b749e1e97573447 commit 50759c13735dab06805eff0e8161d33216d6f5a3 commit c3fbcf60bc74b630967f291f47f0d9d0de6fcea7 commit c2fdb424d32204faf5be29d55f0086b611c94e38 commit 3cf050762534cc268a02793ec00240f81c6e2229 commit c518a775a843413786d3db8b5cab084597730a5a commit ade1fc91eb99614c7155fec762ad5761bb470e06 commit 14374e3eee1b02dbf162e1dd75b789373f07ef43 commit 435c249008cba04ed6a7975e9411f3b934620204 commit 0c5064fa8d5a02dc2dcc6c674a0ad1bbaf79efda commit 01357a5a45ed8eb9543183f5c9c6713ae60fc1f3 commit 8f61973718485f3e89bc4f408f929048b7b47c83 commit 245a4a7b531cffb41233a716497c25b06835cf4b commit ec8d985ff26f29d53d9ebff04973e96572fd0285 commit a0ab5abced550ddeefddb06055ed60779a54eb79 commit 0aa93f54f4341a40b05ec2ac242109e78661d7aa commit 92a020747d6c9e2efe8168a4a444576581bba636 commit 6cb07d20317c77494fa4de572887e3dcdbf98b6d commit 0e5397d8c9fe2a2e4fcc8d98cba4a12511a03267 commit 3951270abfd229e3e17c991942cd111b66454f97 commit 3d140a3d8816082f9732d6fccb81dc18823e03b3 commit aa71f9870efea70b38b17c3d2af870530fcd02e3 commit 58ae532ee875783503428610ac0f5d80e73009a7 commit f2206df8ec862073995f5d27f0f55f698843a9b8 commit 4f543d664cec7e9b490bca55f57151afe6f5cf47 commit a9bfcb56a2ef265092a4cfcd4b9c58ddff4d3649 commit 8b449f1c44d1f921240da6a3e7fc4030966abbff commit ce581ae142e24deb27905840fb720fee9b38d7a4 commit 04514c14678e760e17e3cd44c553ade1bf3bef06 commit fba99b1ab7bde41c1eb00431df37b9237be3681e commit 2db7d421cc5ca86bdcf57f2634f6eefdf349f998 commit 6e939738da208bcc0e4dc794519e18cad85bca73 commit a9b20eb6f7da7794f8ffbce0ab9c709cb1ed71aa commit 700034566d6844b3a67f4b6c3a728d9c0c8d93af commit 5a18db2e92a3556ccacc92c031db6e6a7f2b34dc commit 01ece65132e2980ece4eca91105dfc9eed504881 commit 04477e5e1e6ced4573d9bd5271572ba633a260ab commit ba1677f76b9a510d88efdc7a1416b2e778f125bc commit 368eb57a1676cef35f8303bc23f95d2ac35b7255 commit 544ef14031d0bc9223727fa8d39cd54f0fad7244 commit 147a09072c84b32746fb70139963a92c7d90e07a commit 0cc3ae930c8b2a086b802a8c7b915fd28b57c780 commit a57ebfc0b4da16a3f36bfebb158198aab3e340f8 commit e9ca4e9ea6e208feae82f72607818ac8e15115f4 commit 935a3c66eb9b66426d4be9b54666c77dbe7c32eb commit aa2bdc4843f5871e6c68fbec5e10c0dbaf10ff91 commit 4cfd16659641067f618cdd3589eda42eb2943399 commit bc3c5e0809ae9faa039baf75547e8ee46ec124ef commit b87d39019651c9cae169396cf5ae525393084490 commit 5ac342ef84d7dccd1ba43f5fa2dc10a6feda91e2 commit b729cfee705a56c6204647ac486107a1f814af36 commit 3800b1710946f7db3cb3a29cb2e218cf5df999d0 commit 50e156bd8a9d0910ac4bae5fcff00ddb798db967 commit 10e619f1f31cf126885b3e0ac43a8de9744467fb commit c441d28945fb113220d48d6c86ebc0b090a2b677 commit e8971a790370e805281dd650ec936a9b66435220 commit b43edc504ddd8902d1f697364049b0c0b89de6e2 commit 6352cd451ddbb506ce061868a9e5465d294d4857 commit f7dad0daf2c2368f72828b0729799f01bdcee33b commit a820190204aef0739aa3a067d00273d117f9367c commit b8b64595d6a1ccd5cdf56c528e921332d1366b22 commit ab9d97d6f9f1bb5de83411581dc6cdf425a83a15 commit f74e78ca90bd21b47746b90c439709007681f44c commit d5fe83d26dae59c5b52105075e8950dea8ce7c19 commit 66f54992981444cb418f31018e190d15c92d3599 commit e309434ac56774c86e79a50980e8611ce7cc31a3 commit faf26f2b12e1e03956f7e628183e422d94713e4b commit 2f6247dad2c56cfe2df3c6e00586ead5ee905b46 commit b801d8ad1b516a951535241c9cf60cac8f9a5c2b commit 79b470e5ee83e979f8ff465efa8b7ced160bcae7 commit 4f29f9cf092b2d331ba2081566be3272962b7f96 commit ac2e555e0a7fe571d46f7dcb1529b4bee00095d6 commit 0efd4374f6b41650863947a7528d45e8ad0f7ae0 commit 58efeea32d5e32fa340c7ee3f52d5f986b240e39 commit dda4fb85e433f761eedaed0005a2bc20d705d504 commit 265280b99822e5562eb431b102f2ba773c7b2a0a commit 235c67634230b0f9ad8c0185272fed36c892b1c4 commit d3dfceb58de5f897640cdd424f6c2538d9514367 commit 3b1229741eda70116e0163affdda377484a788ae commit 577359ca178262a64236cc96299714dbff21e9c7 commit 85b0cc35efab0cbc78c083d4506250bea6a755ad commit 49401d3a5c86f5ead12ea7cbe98031edb512b13a commit 543036a2de71f14f8ad566c858e5e9ff61736a86 commit e42ce1366ae806ba2c1f884997703be68df428f4 commit 3dc35cf8789ac93d656f255539f9b37c5051ebf6 commit 2cb6915dcf70a2bf7ee10fcf3f56b083beec1086 commit 542a0f2ef9ea2ccfadf2b8a3b53368c61fc97a0f commit a839a73b18157fe30eb4acd2a1f1ffdb890762ff commit 9761843250f1367043ae2a483461af287aecc879 commit e06c5f59ffe1006f1c6f533113b72ad48a6d4564 commit b3f2c796634613bca511266b37084560f36b67c1 commit 6a640b95b061fe340214ebd4638974b8b6f08efe commit cbd3e8440e2e6a4d83479235c9bf278b89360946 commit 1908a07cffdfc7c57ba5116418c3f2b5ef05e0f6 commit 218987fdead218ae0e714cd9059bc9fc480220f9 commit 9fe5d08fc8230adb64128986ee4af267a54e56dd commit 16600b7d66367482dc8526f8bc3a30b32aaef329 commit d57716702deac8e0ec440739eb4cd6eb0872ddd4 commit 10c4ad3ae025dd0e343a09d2ea4b0e71f8d10797 commit 8763e4c1a0e6710dccb8fccba96fcd6caaa50cae commit 7101ab97e3b00ec1c68d09826bb0521d17783673 commit 80d46fff373775fdea9917a7d13f6fb6fa5147ad commit cb12d72b426caa7594890c62df69fe4b83c96e58 commit 72b5f23ccb0aee46029476cbb072074384aef591 commit 3ccb9ea9976022034d8fffd8d929d6e70a24e0c6 commit 2388a778bdacad0c936dbb01048362864847f8ad commit 9d6b2041761ff6d5a33941919c8b5a805ecbed6c commit 1d6c363330834fa534c1c7ee01620ff134aade1f commit be77243327d962a87bcf03615bae12d73efb9b7c commit ac1ac694f7173a0fbb0b60ab0f26226dd334479a commit 2cfe34e18970d26bff73c63f16c76dae22138d19 commit 2267a195e28cc438cb45936c4562f958502d4038 commit da1db031cd30fefc99d1c82211d3c24b73857bbe commit 3378aed7e2ec7212889116335a2120a6e35c80ce commit 7a09f61f8e842dd027afa1ce8be8bd86062c8a7b commit 4c1b3d0803aef6d39913f1e9d2cfe2c1ccce18e8 commit e87b92c6af537843daf7da9235e622988bae7eae commit b5a0168e1406176cf98487833b7468a1ea5872d3 commit 452e9214431f1f6385bb20fdf6e1b5692947071f commit 49f594995a9255ff734f79c1fc22bd06119ebe8f commit 6ea843e01bce520cf5dea86bc30c5133e0d0822d commit e127306d433ff99f29d1b083c6b3aa128bbd9c5e commit 0c9ed6044c5d08562d38d56e94279badef39e4c7 commit 327f79d7a1d2dcc10aeda05983c4d1532dd0830a commit 214d72f62978c28fe27d22d0d498d04493e9ce86 commit 80fb7a409c64ef304e4040320e87dbb2f10968ca commit b6a93844145395068574cbbfaf3aea91d1f24f1a commit 405bb9eea36a02798631e8409f1182705699d092 commit 3e80a5b068a5fedc69ada30ba1a2d1e0b76dfc25 commit d8e4fb9112e88d8d87ffbc38fa511e7118042d4f commit 8b67e738ca17fb52a275b1cc0191dfce0e9cd7a5 commit 83eb5385b4f021c2674b1d78675bfd10443cdf74 commit be1a63daffdd152ba4c7b71ab9fec2e39259b42b commit 1d742694571655e49e11ea8f391bcafaf0f5ee74 commit b3d0c0f2dfbe610ae5ac6b2d70dd450645dce3cb commit 1da5dab029c08e178784a0750203365ea7c3b4f4 commit 3a6dce778de7c120a37983d80b6ccc8c2c4ff6ec commit aa303964bc349914de8e1d3ff7b517581839d01b commit 6d1044a070b2eef0be45f3b99274a6cebee25053 commit 651d7ee63f338b82d18273c30e9ea804ae174342 commit 3d8785f6c04a953868384db455bb2fdd0b22c11c commit b07d1d73b09ef40e91ace51a2e167391676a8175 commit 4c7631800e6bf0eced08dd7b4f793fcd972f597d commit a35806b36ea44724b21f7f110b38b5941fc9c393 commit 65657d98754c581ad66b56680d3c9ed679890071 commit 32c453f18dccd93a27d6f026ca690167c8cc9639 commit 6cc5c77300afbb285c4f41e04f3435ae3c484c40 commit c7eac19eda0a82f0c1dd9455012754445772fd09 commit c2a050c5e07faf9ed2fa1daa1eb642d9da4a879d commit e61a048eabf9d1245f86e67ec4787d2f10e5a1e0 commit 65e7a17499e15771339d85eaa1ba686ad2fe342c commit 381b590c307f29d0990c4b99ae3a2e02aff2a5b9 commit 1b0da5a3e90d3920f6967e4303fdeaaec6f62208 commit 7cc191ee7621b7145c6cc9c18a4e1929bb5f136e commit 84de5c2e92dccb2bcfd5ff68af44960b808fe6bb commit 453b0016a054df0f442fda8a145b97a33816cab9 commit 031ac4e419dfd8f099a0adba31f7f735013eb628 commit b94b02d72e2b979a32addc8f5099fcf1f6ce9e7b commit d1b08baf93352bb3c88d637055dc21187a456646 commit 136f614931a2bb73616b292cf542da3a18daefd5 commit ea64228d26fee9b766bc9615e92a319da5ef94ef commit fae7d186403ee5a9375ec75938e0de99718e066a commit 73f54d5d968264148ef81941d9dc07e35025a120 commit 85397f6bc4ff13a6bc5259facb8ebebb1986d666 commit ce19021fd99ab2c915f2b44b0df39bef75f11d18 commit d45e32c9d98ce7c22a4bafe69cee58165b59533b commit b62d943e9686e791dd39f8bde302fc27446cdca9 commit b9a577a407d99638522ba6a0fc4fb360aacc01d0 commit 21e74bf99596d91411b6b51340c05ff92a7a4a01 commit 98da4b99a0525c222dab7cd8e73153eaea062dc3 commit d1e40d8e4b4df3f705c7898b264b2cfb60bdafc4 commit da1efdb2a3e8593a9428c81a531bfd8a0c3dd66e commit dfa687bffc8a4a21ed929c7dececf01b8f1f52ee commit 34b68c17e9895ba66fc809224b0122a2eed7aa40 commit 330c1b3180b0d79fef7c05331647f3695661b79e commit 38353a5e3da0b26fab9eeff13a482b135512d9c0 commit aec23025ebc86b770beb9dab6610b671e63d36a2 commit 4464bd825dd56c2f900038c5922408d70aab01fc commit 165ab7b4319d8ecbb689f3d68f0cd6bda4d82b1c commit 77361ed89a8b03c7e121f4b8c517d7be93ccd8df commit 2d017189e2b39cf2fae63984215385401b77ea83 commit 0c56705d8aae9696348cc320b71d531ede001b79 commit e5309d7f66105011e0597fd55ff2ef7f636f52c6 commit d8791dc7f941f3dc78ef2c6aa71d7c752d5b529e commit 8246370341e8e816ad22aaf8d8bfca850339ce0a commit 874714feff3128dc691fc309ee8b9d479f541aa6 commit a0b9e4531b2eaf066a1ccb2986f4d2f9efa6c313 commit d4965c53b95d7533dfc2309d2fc25838bd33220e commit 6b6d12b6ff204cc224cd2369bda2b0580a80a5b3 commit d445dd7b39c56a66872386a3ce0c8a862e59be46 commit 9d001360b47b792a475250bf7ef2bcfbd17ba09f commit 44961f6ebce9a7dccb2ec3dca312c5dbf85920e5 commit 6bad4ff84cb57f548d42a41091159b750eed9ef9 commit 6651875ad7796ed3cd84b3bafb3885d05bb543ff commit f9f4daf15398c3aa0aa2dcd05ed4ea2544bcc62c commit 2ff6a14b20298db0763772b62cd4fb030e6d7f75 commit c6e3806705d679edf135dff5d540a278fc406f15 commit 81298056a78c5163b216f17d17c43736e7069961 commit ab9db127ee03487785509f960e7b5b91cdb6b92d commit eb20cf30c57c37ed05f44966dfabc2c34bf46cab commit 5821a0bbb4c39960975d29d6b58ae290088db0ed commit f09d2b0bdd78ffd38227426fb2ceab7ebd141391 commit f06d1d66d54c223e4f0f73393d94afd88105b6f3 commit 24b8b74eb2eb578fee046c70681000f61afa5680 commit 7f35680ada234ce00828b8ea841ba7ca1e00ff52 commit c5cb0002d14b6f7aabaf7d67d0515fe70aea7167 commit 17f65658c8adce6233f9e53be59d399af6180059 commit 20e10881a043af63f2962a9e6bca64661225b383 commit 594740497e998d30477ab26093bfb81c28cd3ff1 commit faa406f4233ecbd781554ae0a850e56f53003d2e commit 68e355c00f2d58ba0426cf9a4d9df77077493018 commit 61243c173cd26fc8c6bea74d6d47a37ab520dacc commit 143fee0ccc97284e6ece1cf86b7d50721b522448 commit 0dc662318d36e060268751fbd3309660acd3c5aa commit c55300ad4a1814bac9191a4d2c7b0d74273aec7c commit 6fbfc3a23c98bdcda679161c4f4e31368008af8a commit 08a2fd23c6c21e5ef24248a9c1b09e929655eb3b commit 136788cc74cbd9fabc2922b77bfdd38a53eb7155 commit 87d6b28e4a753f4a0572a695fcee094510dc6519 commit 284498206f31e655fb61b1e08d0506dccbffe55f commit c4d7738c9efc81a4f0364da1e673ab1b1cf91735 commit feb54650bae25f2a2adfc493e3e254e7c27a3fba commit 0f28cca87e9afc22280c44d378d2a6e249933977 commit cac3bfcaedbf4d5c93cabaa7882f243099afb8ab commit 4e2d10443580d934188f226f48eda7d650711e03 commit 0381ac3ca2e727d4dfb7264d9416a8ba6bb6c18b commit 851dd8625320fb626b6ab6399b2402fd84abcdfb commit cde83d47482e2578432f9ce029748f4f0d029e9e commit bb50bba9c6c741f5e359f009dde3b25f12a84e3d commit 6f73d6762694c3e91c49e6708077a0de2a75f2f5 commit 62f8f5c3bfc2968461b0a74f0e393325bec16c69 commit 1b3aa89550a2ce4f4af41e11162c5cc0b0b07b4f commit d7053e631e891698f7532712066014ca140c8ff3 commit da4d45b7da937dfbeb918b87c66a5bf9a3079ed8 commit 26c763875e0c15921a0480e008e2be07665e7f56 commit 8728df26dd24a63b24e4e5a6c847172add2fa149 commit 9e68c3841390c43521d4fde6c51e91fcb2d4131f commit 5b644783396b2150eeccb9a079498cad5dff3c42 commit 64f6516e60b0bbe6abfc9f1d9f1999012e0f11a6 commit c11256f82ec82216f69dafee75b3d854d92392d1 commit 6aed665f9d8368ae1e962f44339150884bb47f5b commit bd63f11f4c3c46afec07d821f74736161ff6e526 commit 430ac054e5ea172a880e07da494f65f0b80d8fb8 commit d9c1452c0f07c2e0766a6cf3921eca182e26fdf3 commit 20f038d074d4fa52e88a36bebf25e81c88d7e6fd commit 9e9fa6a9198b767b00f48160800128e83a038f9f commit c24968734abfed81c8f93dc5f44a7b7a9aecadfa commit f17c655cfb99796918d96ae25261db2640407d01 commit e0d7371b46c7b47cdf5391717292033365801437 commit efeeaefe9be56e8ae5e5b4e9ff6d2275ec977ec5 commit 5c57c099f442acab13129c9e15ad2a0c31151c98 commit 9cc4853e4781bf0dd0f35355dc92d97c9da02f5d commit ce19bbe46fcfb88e75a6c7f691df4753a72daa81 commit 7aade9ceeb88d8ca674141d2c245f0107032afb1 commit 4c59b571fce6cedefc1c8e5158f7548f05c05ed6 commit ab9a0b1f3661157d144fb744f3a197563e8e0ff4 commit 25a2b22e4148b1ac91960e13f4f5de020ed04d05 commit 2f83658ffc8c259f05e79dc632e34b26bb8b75c5 commit b5fd0cf3ea377a7332721df8a8c8e7715f93c8d4 commit cf727044144d47c3e8482b9a7775bd3f04a87341 commit 247c7b0dac3cf1141b8bf5520adf2fac1a797aa9 commit e3c60b4ef42d4db5b8d1434fa1741abd7f2fc850 commit 5d6ec040ab44d23953a2efebfe02e41337952be7 commit 7fc83cd079bba8b96b0f46e31f26c8f31c814146 commit 7d188c521d9ec3650136e9b9c81c61b22a544ab3 commit fc801750b197d0f00c09e01e59a7dcd240fddcb5 commit 930e7cba1190a3251fcb01c8523ea9aed89d9a51 commit 4af48f1d1d0a6f050ffcfe83e939c9455d51267f commit 1db4b5264819a8e3aa62e38287bf1da2e1dc8894 commit 5c57cbc390b166950c2e6c2f0c4edaeb0f47e97d commit d8609fd1e0742ba3ad2e51bba9dd489dd03d8599 commit 56426faa1492289ff794620c4ed8c1847a420d0a commit 254a8d0c0071255eb19a81a32ff8d5a0beef1e34 commit fc8adb13d844b44c147b4dced292c74a1ab5cb25 commit 16bd48dc2b3b08d8b3160182b42e51eb2c274706 commit eb6b94db2f4a585d4a9b8e503d7377d2a23c1104 commit c750c4ce1ad69d3df68359abce70ee3d0064c97a commit 24f6fe3226c6f9f1b8406311a96b59c6e650b707 commit 16490922a95f4f67eb9d918f94a4f5b5bdc9eb80 commit f4e3a12bf2d1983b8f352b7719794c52be7e0990 commit fc67615f4ecc3b66bd458840927272aa131eface commit 11a8d095d86854bbc8697525f2c543de36bf5804 commit d9307f27efa531f034862bccf2985c5fa22c4b80 commit 407d63b3af881d17c39f16cdd8416adb0e4658bc commit 6537f79a2aae65748d402d6c46e79d9e473d42a9 commit 019fd800cf4a4514bbb502a52d376b01f02cc347 commit 9f1c8677724a0e6a6ac7a74d2b0192a584df859d commit 623411c293d180ed51f1c3b5753c5acf2c2a4077 commit 97708335b04df3eef0e650b0601cdf6c5ab16dcd commit c9ae7b866f32043d23a34d00a5e6e8d86d2cf10e commit 9affc1b87ecba31458567359b5a28b0b08920a24 commit 72aeb6ee0c78fafc476c02d1b19b5b38defcb57f commit 438eac25d033a1701d839bad16c6ad78f683a293 commit f2a5002541d0698509d4f3adfbfcc55a9c1e2dd1 commit 5089c4a8ebea3c3ad9eedf038dad7098ebc06131 commit d52ea3dc65a9d504afa7a03ff24e17866670bdac commit 526e6ca5d1d5fd22c79033cf5a8eb07d98a11274 commit ea937ad6e925994b94d17555e4c2f2f9a99234e1 commit 1f474c8742fd53a048cc8cc4b20e20b2614397eb commit d6aa8424bcac64b2608452589c9a09984251c01c commit d11737f26ffeae88350b835caa37c7449da22550 commit 272308add589bd46ddb5899685e25fc9f6a58b1e commit 1a65327a84db5b9081a51ccb1c562083f59bfcec commit 9731dd4cadc53251ef80b3655c8d841fed52fa3d commit c443514a7d6d648bc497efbe502e2a49738b94de commit b840b64bc8ed3fc46f6d6aa7f97c43862a33bea5 commit 71be4b16d39ac8b25a8a04eda66cb65581e1a03c commit a141d2083b462505727e14d98db5fc3cd43d59c6 commit f51d22b0d04aa33e94d663fb63aa61e4da168523 commit 5f034aef8479ac80e8732958dcb66b8eda650659 commit 85ee819fd08eff7617c186775fd958e6258216db commit f69e98a91a01fd7c5755dd710e94a17d6e9f583f commit a34136a3b3526369e1b3e678590e3760e7653f0f commit c2fbe663ec4f991832d67f936d3941f781884156 commit 2bbb54bbacd674c692306351d1be5a9b5e61a1e4 commit 28fdd0c32daf9a50a606530d54784fcfa29d88b7 commit 9a4c9de4838fd8ccfcfcfdcd7bd472dddd11f264 commit 3de58f22f544ec9c692993fb1f3bc77163d3d5d8 commit ebfb15262af3bec6c3cc263ce04164e44eea4b30 commit ac31a24d9188a9599dfbce7664cb11e6292873a5 commit ac78fa502afa539cce3a285e50d7fefaf4d2115e commit ba8b460445f8d19d530646729c29319c278dbb38 commit 68ad7f90c790a178f47ef08408d97a81cbb71b37 commit 914da384ae9a77079314f07022c18063c7e77778 commit 4e1db0119c64fd81509005a961790d263e99b21b commit 2595fe04a44d8ac7a56db27dbd1c54698d97fc0b commit 869968225718ec7d77c418e2f6be996206d0428e commit c78783f3227f41053e9a44f536d13f05383b875a commit 8d2ba05b099aedfcece0326a5bbb2e7cc33261ae commit c435f61d0eb334dc8367164a125aea45d9dd9508 commit 3f49f7591e7150c502aa8d04354941ec2394153f commit abf0ba5a34eae0d7359228f4319a6659676fbd0a commit 0f95ee9a0c579ebed0309657f6918673927189f2 commit 1556c3b4c7ed2c8f17f200d53897251fc68b7377 commit c0c87382c1a6985cd12a49a62a893361e5fd1b8f commit eb2983c09f4e053f2c3362763f5e1073b5e4cd7d commit 04770b082e2a207804c633fbfd5efec28cbc5673 commit d6346ae0779ef9a41562f5357ac28aa6a69b1c81 commit b8fec4400923eb91f995d7dbe97411b8991ea559 commit 651d4a0fc4c5c6a2d20c95ef814f0d4381f71d55 commit bf9719f8c89addcf1947ce2b29cea29ea9d8f875 commit 0256ea13d169e9ef00ef1b1c9df395b1d6bad6f6 commit 5c9016b2ddb375662aff802d25c96f5483a4e024 commit a50cc4955623685402ed6deeffad7df93591a416 commit 7a710a8bc909313951eb9252d8419924c771d7c2 commit d36bdd77b9e6aa7f5cb7b0f11ebbab8e5febf10b commit 8ee53c702f23d511b7f635a4eabbb85384149f8c commit e4a8864f74e9e9e4a7eb93952a4cfa35c165c930 commit 45c64ecf97ee370bbdbd8eed7aed9c8ff5d1b0dd commit 88436dec47a89d944e834e27d83a5dfd49d032cd commit f0978e92c2f7e9a38fa05d30a3e901d16a30698a commit 109406c92f971e739af04b278ef75dd0fee68a40 commit 781c336a6caa67c68fe3a25b108d1dc38b0e7cc0 commit df17ff62b626554c6048bf435a87c5fe1981e8a8 commit 3e29d3b318533ad031396a40322e0ae1aaece943 commit ac1b49be7fa8cddcc194ce66aa453e2b2cff5831 commit 319ff09312934b08b532e605042dd59f41b74458 commit c5dc92006d50fb55a916755206cbac1022373134 commit e7858254f9af9ad4f1570d781666e3af4c298a88 commit 3fe6c7f53eaa62e3700d8ae076e9c42a1d855242 commit 2ef6efa79fecd5e3457b324155d35524d95f2b6b commit d5929835080a60f9119d024fa42f315913942f76 commit 2b1333b80885b896807ffb6ccf4bc21d29aa65e0 commit 2c7676b6b1f57713f55e738f803ecaf91dfc399f commit 47fa33cc54615161ec5192389e55f3b95274f56f commit 6434cf630086eea2d091f122f5802582a05d9d1c commit b708b36afd5b5f32f7cd49b3bd4ab524698c3627 commit 93e163a9e0392aca7d720491100d810bfc3112b0 commit 1ec17c26bc06289d368e2523c0e95b5038c6eeb5 commit 96988a526c97cfbe6664e637640dca9406b0b928 commit 1039fb60463cfeb1fa39c6c48b5c3afcf5b89948 commit 3818715f62b42b5c0bcf456ded3f59ed3908cd6f commit e60c4354840b2fe8e1c4df3fdc5c17039824ff96 commit 89fc846675537f9f6ef62271e9d60556c873d65e commit 993a87917c2af59efb0ee1ce43c878ca8790ba1c commit 03e22ba090aa42dc029c25dbd58fa4b941c87ec3 commit 805245071240ae480503af29c7e31d2d7ff5c7f8 commit 255490f9150da7c6dabe468f3a877b92fd0f02c1 commit 720cf96d8fecde29b72e1101f8a567a0ce99594f commit 90bb087f66745ca48f6f5e43df99a1212d89e712 commit 7c1e1c5e0eb66bcbbedde92eb2bd988016cf2716 commit f16a716621a6edf4eef2ba1409594f5c780ea09b commit fb84efa28a48e30b87fa1122e8aab8016c7347cd commit 5e41b01a780893507a0508f16b9c4fa7f7a48557 commit 3fa214eea43a07c239bba54426399d7d175d0454 commit 47bef230225b8d295255d88e130edc0b45ddbaf0 commit c0398df2a195fa21122e566f54c1f78aad22ec47 commit a960e35ac0111b793dd07f3ce6dc3e1981f91679 commit db9b4ffbfa82201fd7e18f6e434469f3648a8bcb commit a64af136771a7c50818fdc23ad4ce140ed7b66c8 commit 15b9ca1641f0c3cd74885280331e9172c62a125e commit 841d742f094e00e514627bde65d7822e98fb3e4c commit 2327b13d6c4758926e57b5b6c3094302ae3b5e9b commit 3b5765df375c90d46316822131acdd5cfb1c5869 commit f5aa7d46b0eec280ac022664f3e8b6bc9f4ee099 commit fc98eb494c4be6aed076c1ad21d46d5950415ca0 commit e1b7234b4a3f5fa716a84b081cd0d0245674f761 commit e21c3adc6fba27a5dfe3fa5e83d947ad56cb27ee commit 87a3451e346be3f9a5d8943ae094888044314631 commit 7c021558929f7c80ed07e83a91d0905c31e8cd9a commit 4ed49c954e35559cb4a34ba049a15f54ec7fccf6 commit bb4f196b47b6554ba89f02ec60246f0c643a4bf8 commit e751e4be1eec4d427d91583f31ce56ccb5286a27 commit b3e73cbf17a95a85e3a943d7500e9e477d6ab9c3 commit 1f43b8903f3aae4a26a603c36f6d5dd25d6edb51 commit f7ba887f606b1895dabf718547cf7397924f0d3a commit 6626c5a4ea2ef1bba3e02f75f797523e168fe28e commit 8748de873fedf4d55bdd99bbb738ee7ddf329792 commit 51c45e450fc8529495bc85c2d8e309816cdcf959 commit 1320d6c7b0deb7219701a55397e93e6c73d00366 commit 262236b4f5a7d2fe31ed31d34669a9ea4f1c3272 commit 0081bc072837b66587904e6988aea1e0845b0294 commit 5d763a9955f0fbf2681a2f1fa87c416056bd0c89 commit 4dd905fd9429626937107ca13770aa836c8a7e6e commit 10a36226157035e84aaa58e1699a32b3de2755af commit 052eaf6af846e59073a842e9b9517ba9d3f76d4a commit 84a8b3908285d007db49532fd4b51d4b183d1242 commit 4d31819a3746b1f33a915546a4b1aa19374d1544 commit ec457f8378901d673b841e81d289b0165286db7f commit f04d275d94e164d24516c32437c988a323018f63 commit 06f2f7772dc7ff2e3734e654cb2d0b588076860d commit 3ab55e3a1ebc22c1e0b7c72261a8c9fe78a3a09a commit 4b33b5ffcf68de3a43e7dddc91c5dc86e6ed8587 commit f173fbe5b042e1c87593e3b06e85cae0094dd867 commit 98dd398aa3e021896adb7f2b1d0f6b2d3784610c commit f18368b686a86477a79bc240a3a1c655d88a2348 commit 95133f41b090b09ba9163b4469cda1d5ee230cd3 commit 2b96b036a6a5767b84f87edc2c0a1c70c91ebac0 commit 6bad8e4a0ec8a950d10d91cb1846f3ef3e1f4ae0 commit a3e731260b9325e2e87baf54f07619c6cb83931b commit 0bbd1c7de319ca5a08359e5fc901a0317bf5c0d6 commit 20cb72174ddcc86596286784416adb947195e45c commit 990cad0e4a9df4202cd482c192608caf6408e4b3 commit a30e8c13e7affd6fe379c6bf213133b0f917d1bf commit 074efb5cadcb3c9e40d536a730318bfab3384cad commit 04e6931a76e592e66e1014ffe4d13303ccac5d8b commit a3a885878e74d3d81e4742f8dd84faa27c8863ad commit 32e8ab05ed81c995b92f12b590c12ef951ca1129 commit 3e838f7ccf64b0e33a2f6d1c66158cc5ab04c86f commit aeb73c608c5b7fa6fad6d98694323e7629e93cce commit 2d7a1ef85d013699ef60068a9f37ab56ffb33c32 commit 2b2db1f9dbfbc61116fec83a51d16fd0cf49b61b commit dc597268225b2e39bca0bc0c5394e3e6266be2e3 commit 43af2220b3302bc04d72bdf07970ebc0fc46155b commit 83a3439ddb28e15afa66f52650cf3c1486ae6515 commit efb4fd107cfd9748f777a4e9015d803d3c9db68b commit cb4b7a23ff85740ed9e0a3aa4c3c0195654a89d5 commit 163d4cd26a18db7db68a98b4d1ca95d542ca72af commit fd6ae969cfa2b12c6082eb83bdfa648b15d9b3c7 commit c85c623ab406188da7969180e53c4b61e8a982e0 commit eec53143b7fe1ccaace434e03b5959c9117bf9c5 commit 14d6a086f6b91238873d3363f840a91b3aa062de commit 7482a65664c16cc88eb84d2b545a1fed887378a1 commit 7cd6bb82ad96fda0021421fed8750a522dff2aa0 commit dc6934d5ae007ad53c88c3e0b9685160a39ba896 commit 62a4ddcb79e073465f21c5cf84d80a2f22820c39 commit afd5cb3907eaf43e4ca88c162b92143551f0323e commit d976521a995a817007ae3f471ac22b93b1bd39f7 commit 0dc987b699ce4266450d407d6d79d41eab88c5d0 commit 009a3a52791f31c57d755a73f6bc66fbdd8bd76c commit f4f9b827d76d2fa23c2a2359b4e9fb417deec61a commit ab8529b0cdb271d9b222cbbddb2641f3fca5df8f commit 543faf57ee0ef6feb1ef60122c0abb9097083ded commit ceb180361e3851007547c55035cd1de03f108f75 commit f12d07d6e9f22bbe65d158de1435ec515acfb50a commit 64e06652e348f0725368853688d3c15784549fd2 commit 9ce07d94c9f80e1b33f5f6bc2c5a27f6cc56a6dc commit e0a9f1fe206a66c3507ff8b7da56f9d1d1dbb9c4 commit 7ac20b3a6a6bf1181a6f9d76c4d36b2395ae8922 commit 876271118aa41097d035c84f99648746b4a125f3 commit 373269ae6f90bbbe945abde4c0811a991a27901a commit 421f5410965dbc65b7bf7d2b2323203920ad370c commit 3d313f09f31490cec9d5251b59adeb6542c944cc commit fa3dab48defe1ae2f5a5fb56df5f5931fb3e45c8 commit 508f748b03949143ccda614b900e3f7d842251e5 commit ff83e6e7ab042e1f6f4345be1837d08c41b0a49d commit e77a541f5dea0a2ff9d6a40dcda9b284e1e736fe commit a957995618a8afe3efa2b5746c0a954bbd450882 commit 10a9035c36d00586ad4bdb838f8800be951db8d2 commit 50ef0cacc43c5b01d5d1d65f08af33513b07e2c7 commit f64e6e0b6afe047cb0d34a5369597fe0d188e94d commit 5027605aedec363b3209c17d382efe5e29211594 commit 7fc494f9cf8ec7497d4aab26a3b19deceab0fe31 commit 366e817e83e4d795fe3f6e7379bfe79d49cac89b commit 805ada63ba0567b15d10d40419bcc5e6f0b461e6 commit 232b95ba4e83ca0a77f19fc772ccc6581051e5cc commit 5e8034364c22050b8564060e79947d094a65d45e commit d54cda74a9a27d6a18c6b670f7299114272a5e50 commit f9bbc1c8449a51a049a1d6d436eb973b00b6cd7a commit d3a453416270f5c7f1bf409597d702a2230e5a6c commit e9fcc60ddd29994a8b2a276ee9b454d7cd449194 commit 803481d869a4c49337c9ae40197c668e365a6fcd commit 8c56d5105747189c86e6df975257580acb2dd223 commit d9e74da2f1fc42926c6ace1bc47a700f88ada696 commit c974f755372bceda2c3cdc31b4b27dd772172203 commit 91c2cbf9b6a6779ee428955fb202ae66c750aaaf commit db475c11cd592d626749c9ccd98f12c05f29ed88 commit 103f06fd478106fbc2394030599db5c852b7fa32 commit 9126ef85f2b8654060929c5b6a876376702d1017 commit 25ba9429e0f40d3b725781e70d2d6b9ce47a0df4 commit 831463667b5f4f1e5bce9c3b94e9e794d2bc8923 commit 2a9e9daf75231c2f577209af5ec62aecdf7ca7af commit b00de0e237da32793dce221119c3120b8276f4ec commit e5d6eeead88e40282cb6dff38f8effd6341561b1 commit 5171660cbb14f3359e8a8bf7523afb0789fe1bcd commit 7283f862bd991c8657e9bf1c02db772fcf018f13 commit ae25885bdf59fde40726863c57fd20e4a0642183 commit d6b9af1097fefa7e6509a4b2f03af45f9eaddae9 commit dc2cdd17d1fe25c8d25c306a90cfc9ff17a7ca4f commit 016a14beac6d407c9a51f0b92d1e586a00bfc345 commit 138c2fca6f408f397ea8fbbbf33203f244d96e01 commit 84509eede6203bc5ab43ce0361a6ae17e2a17152 commit 8f456104915f0f991a2ce059a640b0a6f807e2cd commit 8524bb67145d8a2b495fabcd4b5643010ea43353 commit 7d8097073caa334ed6187a964645335324231e01 commit 3cdcdc34f35eb4616f7e5954cbdcd3390da8eae4 commit 04155815dbb8320ecd17dd54e85c9a5ae5d63bb9 commit 12d74553726675b5c991251f349422a24c575e56 commit c92df6aa397b5a37cf06004a219b4fdf26234dd6 commit 5ba584ec1101cd63081ba7c228849acef962f6b9 commit d5a680548eddca0e2e01fb84b85c1f7687355e21 commit 2e25ae522164e8586520ef20bddbb41c97b0057a commit e97f91e8d39f8f5cff071d847c2d192904e35d0b commit 95be40c875fc848d99f231e77b341e7ab5d8125d commit f7fb92cd2e39357f14846d69ae0e1d8692371f82 commit 46a3b1125308f8f90a065eeecfafd2a96b01a36c commit 7307e91bfcd0e3f123aab01b30557f93923b6d73 commit bcb9aa45d5a0e11ef91245330c53cde214d15e8d commit 59bcdb564b3bac3e86cc274e5dec05d4647ce47f commit 0667429ce68e0b08f9f1fec8fd0b1f57228f605e commit 58eaa6b3fb636072a4f19e6b6c76bbf564e95b95 commit c83375699fc648f94787d00bc615e370cf8f5fa2 commit 9569ff1a188fe48b46eb1ac2ae4543c271e0d4c2 commit 882d90310f04f3f90753653b8787fb4d309fbbdf commit 01cf387b1c7f60527c91627528370f463bcb84f3 commit d7f0c8aff01340c2bed48f1e712a7f17c31b3db9 commit 1d3182006cf6eea26d0cd752f8042c3cae43139b commit ca0cb8959f7b84742c3dd612f5b044788cddfcc7 commit fe4e9ff9873758ad07e6f7b3088ae3a9dd3ff1b3 commit 5c4904ac34b76eb58abc15a52603ee59bf8be85d commit dd70748eda3f63217d5284f48651239a9721245e commit 9e225fb9e636b31b97e9d35324c2f9e43ee0aab4 commit 45ecaea738830b9d521c93520c8f201359dcbd95 commit 9ae55f030dc523fc4dc6069557e4a887ea815453 commit 1c4dae3e4639540fb567e570cc56a3c292afb6fe commit 8c07f33ea096a1d25fcefa4e904ce50aa2358876 commit 94dfc73e7cf4a31da66b8843f0b9283ddd6b8381 commit 8587f3732b37a39de205d8c42f5448dbe6aa6b55 commit 1796c0255bae9d3d4528b8b3916182b2bc4e1e71 commit 50ca65b44e50e66e370f34e83a1d04a41bbffb70 commit 5bdaaf4fbf85d47d08f76f41108d8d3bbdf15f1c commit 9db35bb349a0ef32184ab68f79cc36026be4585d commit a06968563775181690125091f470a8655742dcbf commit 79398d24da4c9294285bdedf67018ff09fe97bdc commit 0b58162e1207db5052d1fadd5a16eeb90720d765 commit d193b12b2fa6dc316e3ee8871b4ec05992bcb7b1 commit 7bb97c5a39ecebc8ff5db1491fe4e7a8129f93d5 commit 70f1fcbc83582419fd753701c5abe674e05db785 commit 01752681f1ee5febc9dd2da23f5dc0289ea125a6 commit 2639d3e44f9c15b3f29f79943ed58f769faeaef2 commit 46d44516aa6e142fd70287e829e3bbad0d2ed35b commit 7268f0a9e842c52fa73b9f5afc1bebcf9f7d48b7 commit ff15cea338d2c78e0086d55c8a9dd637a5dd3ccc commit c5cb2cdf23ceefd9ef319d6c0d6ac294dfe356b6 commit 5f278dbd540b7548bc5193552e6d478255c14c2d commit 6fb5ee7cec06266a29f25ecc01a23b9d107f64e1 commit 6e9c65f71eddef88f14b7210bbf30e6ce2409b87 commit 02b16fbc56e97b295239c83e43f186c191e42dd3 commit a819451eda6df8f8445f9c7b093b86c4d1919b62 commit f999b37eefd7f1d59bece1d94fa0dbee2f2d62d6 commit 6aa145bc943d34bf05f2bc24ea3aa36d70470f1d commit b71c0aaab9ef1054155a075cf5e8a1db7b37ca5f commit 964893d3caff6bc39f6cf5cb7d90fd78a810c535 commit 3d1ab66e043f2a143e4d93242de7710a9c98c829 commit 89f4b4c53a7c12d2feec0ecaa15b0493b2bd61e6 commit 18e3c1d5d4cf6bd30cf1f1bc10ffac7a05a6719d commit b1dee9527e654207c0980023fadabdd12d3dba80 commit e61f294c7e8da94bb1c9d66f2cdcebfa2dc535a2 commit 0f36d074aeb51a20508a65861d1518dbc231a1fc commit 87a7d5350c67aca513dc0a80f696d5583430d594 commit 3019a8d7c1891ceea55820ee0f7bb36192181aa4 commit 90d5fd317c745a80019ed7f12a1933ce6116e0e4 commit 6a4a1f6054318cd3590562668798304b4351ef36 commit cff35798fad565b5f8bbf4ef84ac698270dcaf64 commit 7d4705b33cb84bfbba04de153d4f5e83041ac393 commit adc0e6ab0df390907228abb76c6bf82382089af1 commit cf6067290034b9ebbe4c39733b1a4acc94876c26 commit 395ece6f14124c2245e4b7fe74932514f999faa1 commit d7cfea332cca483ccd3970ed4de73ed892643e51 commit 163a5a58437062ce4dbef2aab6de4d784043bcf5 commit e0f1e65b836c42741288a367eab565167a408b59 commit acac270d09828edda2d530d255ee75ceb87583ec commit c7f21978fa6aafaf7ad37155c7d3a217dc3d16b0 commit 46ae2af9a8aa168cbad69f21bb1426771339ac9a commit 414e9f520e897818302a6b1729aa2dad8cc928ca commit 3db7f894549a54dd6f8dfb7fe213ede83249bb94 commit 971e4a9781742aaad1587e25fd5582b2dd595ef8 commit 0d8928a94ba18205cc7b41793af333e6731e9d76 commit 071ebbb0d4826ce7c47953b955a522f503dcedfb commit 202804b9705ce26788c443a54aec47eae20f4596 commit 780f97cec866e1ec6967c66c2a1f68b8aa1e3f23 commit c5da61cf5bab30059f22ea368702c445ee87171a commit f929217499cf54a30be995aae65e9951ba079c90 commit c6a3d73592ae20f2f6306f823aa5121c83c88223 commit 3f4309cbdc8496373875cfce67d7b5dba87c3ccb commit 141f733bb3abb000d3949c3b2f119751fe93b0c0 commit be4e366602303615cecb7636075bb18b0d3cc33d commit 1dbd07e088673dbf0e10f4bcfa17f971fd870195 commit 525e93f6317a08a03cc42847b3e075c92a382c99 commit d42a738e5ae5a73212a83414648a4fae524117f3 commit 71b1669ea9bd962d419aac41bc179e09e504327f commit 938d2fd17d173d0489b1bc96b87a1dd93954dc28 commit 11f01dcf3b32d01982d99df4492feef4332cf0b3 commit bfe53be268afd2248d1e28b4520361693c1c0fce commit efeb3caf4341357a7f4745c0da643b13200f0b9f commit eb1c535f0d69e3ec7679d4d714bb2a9765ceda69 commit 5cd561688b3e8a248fdbb37a1b10801b06736865 commit 3b05c960788439dbb47d0e62335f23869696b079 commit 8618b8489ba6ecc025be033d0fa87c0db53f5211 commit a913bde810fc464da6f12f3f19f3483034cc7e16 commit 3461b040a90d723c93c9d1c7c11e3464f5cadc0e commit 170a41e9bc07618d164f11b5154b449e9c24973b commit a6cc3c72aa0e8fb10b695c1a0c4ef07a66b3c2b0 commit e33c267ab70de4249d22d7eab1cc7d68a889bac2 commit 1926a6b75954fc1a8b44d10bd0c67db957b78cf7 commit 21779cc21c732c5eff8ea1624be6590450baa30f commit 1981c35bf7533d70f295b184bbb638d280fe2f36 commit 207d2073c648614dabcb06863d990f0c2a32c4e9 commit 73289afe03619bac585b69f563d0bb9a52e67722 commit 72bd9ea389c70ac948f48d20c0e4ae70c0153940 commit a204f9743b6808ca658c1bacedb34bf4c7e6f800 commit cfb979f71736361ec564d47d0a41f07e09983e32 commit 4bdb9d6501763e83bacbf26846754c567773a1fb commit cbe07c982dbd206defa10ba539e046767179edb3 commit 26093ce14b75bb0c4f0088abf2e11c351abc18c3 commit e0e146d5567317d6ba7d0169bed55d1d9ea05a61 commit e72f03f4bdc4f3a251343cf343bce28c28cbac2a commit 85f4bc0c333ceed24cbc9f69a2a77fab1ae3d4d1 commit 90f33674a0756a6f0907b8f6350cec3f7be4032c commit 64a30aaf0b0d9dcd52af526652937c1350a948dc commit 88ef4c5bb36bf60b317b74d8652c7766c9272a7e commit 2b2b3a751b29a09942a15bc0c4fed940b7ce1857 commit 740ccea3d36732346387ce882c50a7e4c3599316 commit 15360d7fc35b6b0f46240659a129c9255345a41d commit 7e053bab30e3a97bb681cec207a87413a024fc22 commit bbb6e5ae7ccfed7be06b5e8f99602100d4251d5f commit 00fa7f031dd4b885175da390e24cb02f6a45977e commit 48e03843f99857a561f25fb8e583c9a7dee5b81f commit a5eeb70de411ef8b1cf5d97806ed6769b84be872 commit 97ca308925a50aa80711ccfaf814fa3898374862 commit 82a562ab5f0a918ef905c29c759b4f0c788754d3 commit e73b386e75586f28b9b58641938ae0feb340bca0 commit 6366b00346c0fe8ae95d91eed3dd2d04f77729e7 commit 0147064588253b9c07766bd6292a6159475c2790 commit fff7eb56b376cadc58af14df286009086cc4d80f commit b3859b16d27fa58f99ad6221ea427dac7d751e70 commit 7c50a3e99a2eab5b3a9f273ea9e40ce919a3a3e2 commit bc19909f19fdc8253d720d11c948935786fbfa08 commit 0c7ea6f824345ffbb3b4ef880c7c56170365bc1e commit 1daf740137275aa56858ea1cd194eb3c1f6da5a0 commit 22676bc500c27d987a0b42cbe162aebf783f1c38 commit 8a077d9caa3a274de36ee2fe7b608041f5690343 commit 4984dcdc1f78529a0c699c1931971b7bc5e32a04 commit f64f3a72835fc63069a87c2811b61c9a73033c72 commit e9a7d236eaaeb1cdfe20e583e2e1899b26d7469c commit 9a714dcf1039d1142a1c3ad81db09d2706230e00 commit 8bc3812d0b33c214c365fff5dfb65397ad6aaf19 commit c1127df9515ca781940927deffc5ae657ed73a5f commit 09de5cd2c170b19e04e37439a712da52a0535015 commit 3b779044c81754f094ee88afe431d839e3a74aa0 commit b278b738c3be4f383796d09ef8fb6e49fee2091f commit 7acd7ab0297a37e44df928378f53d4260b25fd2b commit 427a60c1c30e1c0e9d0800a63df51985aaf3a26a commit 81990c3c07905af1e316f048a1ff456b2be224ad commit 068ab0cdc1a97628f7007b568adadc2a1fb08384 commit a00a3cef25a969bef8cce011c34b76071756dd05 commit 3e211f23aa1e1a3223edb64c4bc25cae28a1e3ae commit c3c483391bb23e9bb8d8a51e54fefcf508b1cce3 commit edadd6fc28b24dd5806dafc4b38633494ff423e6 commit eb08accdd8d966e4027f8ba52f43faffa3e6dcbd commit 61e419f651a65ebe01658b46bfc317896cac0eda commit fd3bc691fc7b4e553f49bc79f86b515ce2638141 commit 2e02ceb73ff87193618a21c2fe165632f52b9b9d commit 89e2b4373ae5215f5c5d1b7726549950daa77018 commit fc25fd602b1e101a45650475a8d2f00d7bb8e971 commit e660916b7f4dd3f17e5f28707213b66c1553d83b commit aa1965973cc734bd61294b675ac9763cddcac0ed commit dfb02eb6bdf84697dbadd69a7df12db612ce4ed0 commit a57e7345cac12ccdf883f9825523470850166635 commit 47a4fb46797016228198e63a7aa679841f80889c commit 90f5514bcc1a40de3391da552984717fb83b16f8 commit 819da60d77c9f0ec9f069cb27952501562a2e17a commit d8b599bf625d1d818fdbb322a272fd2a5ea32e38 commit ca1dc50fd5cfd7420faa46183f84bc203fae156a commit f24d1d45084155c59a135506a37bc4db10703fe6 commit 3d9c653cf635849d0c24a1ab17c2752a19f4ded8 commit b94a1a207de5e06a55b5a8259073fd8d1637f093 commit 027c38b4121e7d9ae43b2fa21b35582d1aef2a05 commit fce7bf30d3309ea325a7ec452456f8f7c079f622 commit 7d261c50d9c1adb70f6ac2e26edbc64c774c21ca commit 371409df9236bd1abedc143e76fdd7080cba3ba3 commit 1f374171fd345aaad9fcb30ac3acd255b5cd2076 commit f72fc9bd226979c272d6f829a3c60c3d9e8dc969 commit b83c9e3dd5b5dabc507e79c3f03e700a20b2a4ee commit 30ef0808e61850ec9dd105fe0a21f7f9a7c69324 commit 34ce1a6a29db41d5d4bffbab0872b1e1876cb4b8 commit 75072128d704576c39b3ec36b2cb84af316d88d2 commit 9da2902609f7519c48eda84f953f72fee53f2b71 commit cc3cb791f19ad0c4f951f38c98aa513b042ab329 commit 11d526f1972f486aa222fdfba751d2f0249c002a commit bdd0d7e290e0e4c8f7545fff89770abbd22bd51a commit 8c96e566d95aaad910a54aa0b21b7753eb615a00 commit 2fec539112e89255b6a47f566e21d99937fada7b commit ca437b45ac6d4baac348303920dae0fdee68e937 commit c59d73d43fce92e79eddc047e1961054f1284384 commit 9a92732f040ae3aeac017d0e80501cad1127a13d commit dbeb232726871352fc3e688ff5b02897f8cb0dc7 commit bcf9b296627c6b832abd388b5364262853430262 commit 7835303982d11ed700ce6bc530303272bfa8562f commit 5531786537e4fcd82a221b0bd01ce375942b3854 commit 9a23fcf79dc647627b3780284a156cc6e7bbd7c4 commit c028d66e6ec471fc24f70204768f43594a6a8b4a commit 872642edaf4228040473349ae0ee872264fa67f7 commit 35ba8850b673050b71b17c1421079031f4fda319 commit bc99f1209f19fefa3ee11e77464ccfae541f4291 commit 344feb7ccf764756937cfd74fa4ac5caba069c99 commit 6db5e0c8692e590734a7ec7455365d9cbaa15ef1 commit b45b4f880fb660c4bd4794a2ca3950c4570e12c6 commit 737dad0b5d609f464cae73292de646d3d016ec73 commit 88c775bbebc9c5b080d3cbbdef73a31eaead9e5b commit b7580e669ca0d624b122455058aa6fe62c0fef44 commit ac9257f0f50871b7459dac48a5c11bc7b2094245 commit 636774860a6240dcb148f9a08d333a697f3c74f3 commit 14eb72ff580de169212bfc5222499febd312a252 commit 8a076bbcc1278c6256c57915bc193890a6432c6d commit 90bb21cb692ead906738d314f3dcdc432aaee015 commit 149f6d1a6035a7aa6595ac6eeb9c8f566b2103cd commit 9dfc3ee1b0f22d9415c9b7c316447d47d4a702d1 commit 922e7ee31defe461d8638f1277f0c8215c0707e6 commit e2facd575fdf13b718f6c833ed546467a3e6e3ba commit 59a1e9ed1b406b1ae7cbbc612ce00d459987d028 commit 80fb575678b488b920cd9100939b60d480101907 commit 50e8ca0b675add8eb0e95938448a4a0f9fb0b6dd commit 33da97894758737895e90c909f16786052680ef4 commit 1ea7fe77c0db843d8e5f96ff8535dfc941e88694 commit c877bed82e1017c102c137d432933ccbba92c119 commit e23a5e14aa278858c2e3d81ec34e83aa9a4177c5 commit d9e019bb396fc9448b104a6f4cdb7acf8af02854 commit 911dd554a129081f056417a30054f24ef6818e3d commit c4feba47aad55aca90d9a2b104c0345ca6f93712 commit 61c1f340bc809a1ca1e3c8794207a91cde1a7c78 commit 4ddf8d7dedb881c6638850f1b74ff1f9967c89b7 commit 6d7291843ec5008a9ff1c011d342679fa9bfe4b9 commit 0196cc65f91710e30d45cea78d75fd616d705002 commit 66ff4e4ed471fdfa9ae4c49a0abcf5d5043ca65e commit 097d56cdcd77639bce7e205adaa22b6f5e7d93a6 commit 40184ece92ebc5adfdba84554bffb60ef0e37029 commit 7ba01b504c16ae64a8faa5f5ee9a809d424cdf0e commit ea0b20d3bd96f9ce2a1e9d886175411c05dcb179 commit 89ed996b888faaf11c69bb4cbc19f21475c9050e commit 9306b2b2dfce6931241ef804783692cee526599c commit 57b9f3384c64e37bbdad7f127625ac3733d11e5c commit 017860c909b03fa687d29a1ca46390ba9a007b2a commit c4e85551198ea894ac29da1a81becfde65c11f78 commit 236124d1167bcc539432b4f6fc19ce1fa015e2ad commit a84e43b81e45b3da19e51e1e9426ba9e4d0fd1bc commit c0ff84cb58faff9fdb8d955c6e1e07fd75d88c16 commit 58e969b60db0f5ca9abf0a8df28086efd601f38c commit f1549c09c520877be211d483d3c6f4e7f77d2588 commit 0fe6906203d02d050e86b3398219df7bd9e8fe47 commit b7320117b3d36fd6fe542bdac5f7af0a83bea23a commit 2d7a1f71837c0922645143cc270b5a4834595544 commit 86ef6eae0820aa5393983c38c1c5ff9510ca9118 commit af019bef6d6fda044c8db232c97d6be2fb64c741 commit 1f969d28cdbf99c28eb08ef0a0017713d6909347 commit 78486da8ceb2d5d833a69fd695bb9f5a941b73f6 commit 3d4de925356177dad0fb5869d1ea537cfa033009 commit 15c735e7990fdabb466a3341b6b2dfefd987127e commit 76611a84f235126f3258fbe4a25d85ab326ad6bd commit e5028e9fd3bc7c6b916568e5218f5fca5f0d0a75 commit 2a93292fb7860b51550d1222c151de1a9fdc15da commit 652284d6db17f3c7810495fda059efdd84b61fde commit ff613f7ba7105b17dbf251ca298d1de9124a9875 commit 0a94608f0f7de9b1135ffea3546afe68eafef57f commit 84900aeecefb281964c0ba23111be4809477124e commit cb50813998b5aed924323b1b46471e8c60b26692 commit 1e866f1fe528bc0158cdcd589053753032bdb52c commit 3fb0fdd7758d3b850db82899f532dc71f6909c02 commit 43195162fbf54b2cc35efe295d2ed072d2bd4048 commit a0d10c437c1c9859d24a16b90abf85120603b4ff commit a5e4a53818ad585416a214b894fdf568443d5293 commit a91d1a17cd341548fd9535e33c331a2756acdfae commit 17cd10a44a8962860ff4ba351b2a290e752dbbde commit f5ba14043621f4afdf3ad5f92ee2d8dbebbe4340 commit cc79950bf0904f58e651747c17987270f1931c29 commit 8955ff11f56e1596e9f80ff6fa8c48e53047654c commit 806b52287a96bf5812a6be008d24add3f18952cc commit d5c6909e74606870bb59b962200cf75eb25d6d0b commit 3cffeffe051a961417bc26f2053bced4cff83119 commit 41529d79ce1655bd7463c01d9813d0abb6fb08a4 commit 5439c41a80c00e993d18d1cd4407a6a82b35d963 commit ee7b62e127c8cc6db24f83e5e116357649f6e41f commit cc35e75273fcf4fb4f12f9d8fd979be7aa808041 commit e850f6b13a85b451411bb74a526bc08706129e8c commit b7be3ae759160aa3355ebeb0583f67fb9bda4dae commit 4fa05a67b558d2cb3acd2bb299b91220d405ca5e commit 7d09c7606346db9a48b62b4e02454a6b8f323043 commit ca0367ca5d9216644b41f86348d6661f8d9e32d8 commit 53c26181950ddc3c8ace3c0939c89e9c4d8deeb9 commit c96cfaf8fc02d4bb70727dfa7ce7841a3cff9be2 commit 60693e3a38903e39e4fac0a9849b698fc36228bd commit 891ce1c9623f36194587d02774ac3d8c30c3ca72 commit 3890f749c590a5a33f0034362be3304b69ae6d65 commit 6f2c8d5f16594a13295d153245e0bb8166db7ac9 commit 29a249d72d31cde3cd24d43354b40019efdb48b1 commit c9eb2d427c1c428e4f4e29f1e635b9a83236c015 commit 868941b14441282ba08761b770fc6cad69d5bdb7 commit c83dee9b639469b6563a281f39deb99311f16bc4 commit 0b15205c7325dc20b7da0068307670d222d66949 commit f6a3f66063ca39e7ee5fcee59e889c5ec4de9dc0 commit 75510fac07cdde23c9217c8299b6cd64c689fb2b commit e4b1edf48fa37cf4f5ca403e384731fe28d13691 commit 604d3a3f0dca0ef0ab0322f5e7af8c70c5ddb6d4 commit 748262eb400e809aa13e3485f4983c3db3d0ebb3 commit 49062ee374f7a47443dac7e255bd419861de5b43 commit 4c33e5179ff1a09cdfba38fa4fd260ae6735d3bb commit 912db6a58738e8be502838eb6a88f207ba356cd7 commit 98a90f1f0fdd112b85b16ef6ceee69f319ab9311 commit 958afce98c2c86732483458c03540d3c6ef45254 commit 3876a8b5e241081b2a519f848a65c00d8e6cd124 commit 606ee059f85a9aabb0242cbc72852572a3c40432 commit 133dc89c640f965c2736e70d8dec0699d763850d commit 2d04559e0660cf503d4e46cfbd7421d0b6156aa1 commit 50fe04d46aab77cf8fc3d48fbc38d872d181a849 commit f746556aa9724d740c44861db0ac005ae50e1332 commit 75a9ad8c1b7960794c16182fd90852918ecdc0a6 commit 9c913f38032e873758d1b13fce720a0c2cbbfcb7 commit 5877b7ddbc2502a7ddbc07970cf5c15972c22de4 commit a53bc32182d7a2a934ca994239396fba21161c8e commit 4528c18605654bea022d294c9ba2e93600d05a94 commit ce4b4657ff18925c315855aa290e93c5fa652d96 commit 5df79aeb6e0890d6f5fd6e12c7ad238a1617b210 commit 86bd6706c404ea703c11071d8b600d46bb98873c commit dc2b9c70ebca8e5661d33a15ed2b99d4510e90be commit 40835624efcde7f984cb859035b95b5a526d1a9f commit fb3e8ed0438347c63650850c011c99deb59d7e62 commit 615dc75fa6a7fc6cf029b01cdfc9d4b78919e71c commit 8a9899c95d1cd709d441960ca325c6c8184978bb commit 0bf95a1ebd48866ad1438454061782d4d47765f7 commit 044b5cb9e8bfe4f006546fd98148e95489a6e803 commit aec4706b0e70e0cab2d0650b63cf2ddc1b154352 commit c8a58ce18ca36b62749e326411176554462a5e2c commit 8b076fa7c5befd1d3e1d892ae466f5334e4c6c99 commit 25f7cde8bad9fe5943851d3d602e9fddb7977961 commit 5d945cbcd4b16a29d6470a80dfb19738f9a4319f commit cb6b81b21bd9cf09d72b7fe711be1b55001eb166 commit 417c1c1963549e9a48b83ada59d90258e38c6594 commit e8f90717ed3b58e81c480b3aa38e641c0da5a456 commit 2c9e8c01109fb65a63b6830adeb5d7c79ccf26d6 commit 473683a03495a5ed9c75a02c7497f32d6cf92c7a commit e6c64182ed946f1cb65799de9ee75f8bcc42b2c6 commit 074293dd9f61f11898f1f6e01f1560fd4c474025 commit a983d263186996002ecafc72f9a0dc5a3a2bfd6f commit 44b0c964201e1e2fbfcdab4472f9260048befbaa commit 557f9100c74cfa033488563240f567466613cefa commit d3e19f76121178420c3efc9688adfd5a448996e0 commit 4f5a17b221cc48d66cce13fe1531ca8fc99078b9 commit 1cccdfe21eb6b8dd4371378b4b61223eb37f1ef7 commit 54c3e9493cd502d63ff3643fa70b5f98b3201846 commit 869618c3440227f848ff9ac55aa64d523a60476e commit fbcc38811fcb47335899a3776b4fd5670db4e228 commit 4686177f7d2140cdd9d031702c2b53ac4c89340a commit 7b5b0d196c2e6cad87cb1e3ce285c7885f2bd796 commit 660f46e16c4b8a34978012a9f10a32a16db3e98f commit f3cd57e499e6904b7e356d11bd33d617341b3f24 commit 869b10ac8d2300327f554d83f4dbab041bf27d49 commit 4d37fd51b4440cf6a02942c0a169ee18a902fb5b commit c19a23fadd279f433424b4d6436fe4ab0020e20c commit 37edc99979b717312e60cf3463ab756f5a3d6de6 commit f4b4e41a2e05270cd90c5817ab514ace95555874 commit 26749aa8d1261bd6f2db9d019276d4277dde7df8 commit 041a11095abdd52b38f1ea1355357ecd2b66c0e2 commit af14e7c2fc9b60af70b410a7dace116eaa5e4e65 commit 465576ca481caa9cf18550652efdc6b103701c68 commit f7bacd97af853a9bba9bb8d1baa12f997e60122f commit 792a0cdde34d417bc2c8266d8015c5fd58d44a0d commit 8813381a62e1f1703f8fbeccc5fa4fcc988be882 commit ccc4200cfb2518fea042b16f090962b07314439b commit 25e751642a38204da189e0e239055702caeb461c commit 34a65beccdea16a12d862e94d004ccf00de8cb3b commit de0246ee9fc95f1072a0d26ec4025a3545f159b8 commit 25dfc8fab47fb0d7231154e07e20b5fc0221f96e commit 326f0672153e0ff5b19f0ff9d6b5f75a64a9c2b5 commit 42c7de9622b2ec64f7c15c336b75f8933ea7545c commit 2207efdd8388bd300a0051b1775705d890abd306 commit 44998fbdcdc39253cb10293c3c27dabc040ad7e8 commit 34a1b0f90e33b00b431d6e8636b787111c6c29d5 commit 8f5bb69dd453666ff949079443ebce24381e163c commit 4cef2269318cdf5beb70c257f7aaba267f2157ae commit 0339530d8879cbd560cd3d3de5138dc797744274 commit 5b4ee98713c7b42e270835fea08c3b6977b48e7e commit a4f8f294fe99a678ce0a50d649732440c41742b7 commit 4e14e0fc9f0e47d9d3d39b6f92724f2038ee6e25 commit f7907f6db81ca08f4f8bd9245b8fecd49bc82f6e commit 197485c695430ab03d9f4a96aab4d4f76787f7c9 commit 352b25a770712a954b1def1b8c6429b0825ee0b3 commit 9a1dadb6d33173427b6f6c89ab1ddd0eca636afb commit 39a6f3fe98ff03baab364acfec69a6f9803ce22c commit ca0273ab447853c014983951e2183991f8dbc7b9 commit 1a3408259bfd5a383b3c7aa7c309c9fb81e35ce0 commit ddd0fa1f47edd794736e70d165341a5c4ff78e47 commit 5085e0361f5a3675fc0d0919f7b69aded453ceb7 commit 77299956e8867a4cc19c5fd41b797c5152aad1dd commit 1c05d9e53d2cfad1f99d9087a8ad24da4ebc0905 commit 0593ad215359d51514c1e6c81ce28ea598efed6b commit 74097f9fd2f5ebdae04fcba59da345386415cbf3 commit 7acc487ab57e076c823b2b7559aa9e3997962ca2 commit bac4b41d917a1d999308bb1e779f8c3b39c19f67 commit c3b3f9ba25e6cbe59673505fbc5fff6c4cda0ef7 commit 3c3abac60117cfd09460980d9a14c253b37f7b00 commit 86e4863e67a9bd1e257f162f3d740ebb61206c91 commit 9dd4545f65679042273a93054ec3bb665ecf7366 commit 44abdd1646e1fbfb781972c0bffc90b4eb3e87b3 commit 34a255e67615995f729254307a0581c143e03752 commit 3616d49da5dab635c4bb0eeb183b61df72cd0757 commit 4c5aa594928f97593502a66d5a9075f5f5dd064b commit 8de297dc046c180651c0500f8611663ae1c3828a commit 44584b417a698bfaac0c2577e7cc4015ea7359ce commit 2ce0b2186c057a54a4d980b296bd1659d0091716 commit 319568d75f5f91cd4f362b26e65af2a4437c64bf commit a7cefb0b40dcfdafedc54a3ba659327d0336956d commit eb54e014367e1700fa5b94e4c788520081a70661 commit 4a21ab548a7ac19b15aba9aa8df39972ed82f4ad commit f46e3f28f89b893685ec9204405677dac410d8ad commit 72bb503097e79113503dc6d1d49c4063ef97970a commit ee4a26b4ea029aeed749c6560ed9eba224337b04 commit a4f1b04216023ff0f4cd89328b59ee6890248130 commit 6a7379f196230cfa35335ec627e0c0e08da6a8b8 commit 05674cc9ea97079ad7c819628e3e56b046c2f497 commit bdf4473394deffc94c16c0502e73f2daabbdc1d0 commit 40b31e5355ba8c4f7e58f1c458bbe46763dca541 commit cb849b4dc73d414149fea96330cdf96a82919fc9 commit 1c5a2fa97b91d37375f4fc8aeb37c9456c93c828 commit 0d60f2b47d8312d6a88454a373990579624edbde commit 5ade1b951dec63a81b23c2ff75c5b4c191977620 commit b5e924bd7cce823e604f9b7834fac846a910331c commit 1f5dcb7365e4e0a8a6fca44352218ccc6f41a8b9 commit 81f776b670a0eb17bf9cfbfd2df32f66a34bc453 commit 4074f96d0f2db2fcbd8e223aebe60ca445b8aeae commit e216431b63aef8b7d9cf6e59aea39582d48b1808 commit 6290ba4c1656ce2374996b2ed11c3997ebbc4af5 commit 493af96d61b1361a44d016057e0fc6e5d4c92fc7 commit ffccfdbab1056954fd400d2864a1c1b38915c143 commit 3facca7489be2d42c6256350dae72c342a47d7e5 commit b1babe8623f91a71a5acc34eb323c718e0413b74 commit c13423c63f73ee2f9807fdb2a3a7e647421a8114 commit d58715704c5c7d82d7194540780fb335ab337da0 commit 1b54a0121dba12af268fb75c413feabdb9f573d4 commit 7786fb366e598e984ee9307616b0c72979bd191c commit 412dfcf34e0695fa1714ad422b2a5d0ed1406437 commit 0407b33fadcd7a5d31ba3c473cef95b2b418d8c4 commit 92fba5d3c8f5b757c4e3fdc89afe76a8f6c4da68 commit 168c02994399f2714bc6c73f85b7ce4d827f97aa commit acbe9ecfb7fb14db868ddbeda8f43e623026316b commit 3517e6b6fee05b6259ca21741cbe5d7bf68aa672 commit 1c6aab75ece7c1d450e4561cb2263403eeb7ae2f commit 79c453af55d9f1e85b906211ea4051364d28dcb4 commit 9a4514fbffda6083d9f7fba4882142686783cfe4 commit 7bcf89eed48f3fba8d0e2c19236e7dc547b6e037 commit 889fcbe949bdd8470931a90b91f273ca18c510c1 commit 95983aea80038539ebc70e41e73e9bb4eabd1a92 commit 32dd9236698bcd2ffdb69954b167a851fd50182a commit a6fd8f936402c3bcc5ac6aed9cca8e73b5ca08f7 commit 1b255f1ccc883256e23db279ea164273ea0f7462 commit dfc4005f8c172eea359f9db08c3b2b0ff0153699 commit ee8b1ef9a6b089abf7a9c7d094b6e93fa05f15b9 commit 2bc7ea71a73747a77e7f83bc085b0d2393235410 commit aa316247c726d96f0bc205413c54ab49622ca737 commit 8585732baa40455fbae9575d0c8316f4b0cf68f5 commit 1f83db6be37c53f6d395a41ee2602e3280ee60c2 commit 79b2c54f19110235041d8f1250e3c3694047a902 commit 4959e609de1ed4199f33124a88a4c9ab95f5cd9a commit 5640cb8921c9aff1270557482237e06af00c388b commit 8b3120dfc192a4c61f73a0798755713ba2d3eb8a commit 3f5a3881f1e26aa5e3ae34e34e439edce291ef5a commit fcac1ac7f1e3fb877aad51c134ff2776bd24f9d6 commit ed63b7cf2d6ebc01a765be31630c3e4a64f7f095 commit 84e2fd649482435c3e12d9099784976ce8bea1e2 commit 203dc777865621b0c7f8f5b19ec18e572730278c commit 05381583a1d0c38cd2c4907ee93ec624250b8912 commit 980e09e8b74c26baa32f0d65d272ecb1401606c9 commit afb185008d40930895a7f7465a9661afeac0b84b commit e3b2bbb33e26d0a0327f878782632ec35cf96a72 commit 9ced2e492ba9436524a2beed27df730042cbcc3e commit fbad6c418e1e63a29c83e8b56a3636915406a9b7 commit 292956cfd9d38835f95021445525b35502837ff7 commit 64f857b5479a7ce2eaa56bef5f459da5542ad90d commit 931fa55b2fac18f226622a95e42bc968bb852cd8 commit 4557489e0370ac0e9f1f5f100f300e9278be0733 commit 1422ca01be6a816ec5a445a6fdce00342adcc5f8 commit 1be3188a6dda544dd4d78503eba5f5a77462b348 commit 66bd94debe4aca171bd0220de7af3feee6542d8a commit e3b0079be8f0a2ccb533f7e38757b27ab6b6018c commit 06ac561fb0edf868f7b292fb4a3c8ffbbb1e14bb commit f9af3c16bfe19d145cf0588afa06d7f1070cbe2d commit 3d2af401cf851be0bf2d4d89af6f120819b786a7 commit 0dc204bc3f199de0a0924f3d5f7c26295e5c012e commit b2065fb21d9a789b14f737ea90facedabadeb8a4 commit 53bd83dfff8618d4a1affa171288b895add40476 commit 7c8e4a257246399c4f1ff43a06fc53ec53423754 commit 2182cb7029e9c5cc4b63d1c5682f62ebb65cc952 commit 674b9e08a02903fef75beadca0df490348d8f560 commit e22ec18750be01298763b10f7056ec8edfbf064f commit 6fdd2077ec03f4b34d127a1713ca19248539d6e0 commit 736f7308d3e6201322142d98abe4e9af33a429f7 commit 4ac77cce84a4afa3b76fe7c763aa3e754cdac422 commit cbe93a234bcce489be319e678dbf167b7a5f915a commit 1c0a90364859c17d57a7f08d6209b73e7e1142cd commit 47231d5e396a94e869b877bb1a0dcd526d91ac6e commit 0da0def7705dff7ee938662ea06f90770cb6f9fc commit ed67f7292b99f5d3876fa02dd51a43f46986c61c commit 1f3dfde4fba4f4b7822c389b9c994089a4ab588b commit e1c42213f3f9b24200d4b60da806303dbeae5a4d commit 1ff186ff32997049a6d263031819517eab4e93aa commit c10100a416c16b598bf5155e759307b34dac0d7d commit dcfe584b00f1d6dcbeeb769b939f53a3c4f04143 commit b834fc94c102eef751ff741aa0d9b814d0a81af1 commit a16161a869d5633d7d9a825a2546b68953e3a6f0 commit 492af34c9f67ef864319d0db930c8518a04b1937 commit 2605e60c82604508f60dbf427b82cd48154d88ee commit 7e8a3ca972adfc89609718c931577a86c494967b commit 64f991590ff4410041a70ee7ec2db079bc953929 commit 541846502f4fe826cd7c16e4784695ac90736585 commit e05d5b9c5bbea80313d8f58c3a80a18839b25480 commit e2b542100719a93f8cdf6d90185410d38a57a4c1 commit f00654007fe1c154dafbdc1f5953c132e8c27c38 commit a782e866497217f22c5d9014cbb7be8549151376 commit b44f2fd87919b5ae6e1756d4c7ba2cbba22238e1 commit 54d91b55c7f3f9f2c86e0b6be4501433b32ddc89 commit c20ee5749a3f688d9bab83a3b09b75587153ff13 commit 798cd57cd5f871452461746032cf6ee50b0fd69a commit f0a892f599c46af673e47418c47c15e69a7b67f4 commit 6614a3c3164a5df2b54abb0b3559f51041cf705b commit a9cf69d0e7f2051cca1c08ed9b34fe79da951ee9 commit 668c3c237f5ddc2889879b08f26d2374231f3287 commit 1d239c1eb873c7d6c6cbc80d68330c939fd86136 commit 9cae5b3189eb9cd12a9c3f6e8afda2d81958640b commit 232d150fa15606e96c0e01e5c7a2d4e03f621787 commit db100e28fdf026a1fc10657c5170bb1e65663805 commit 180abeb2c5032704787151135b6a38c6b71295a6 commit e5a95c83ed1492c0f442b448b20c90c8faaf702b commit 59eda6ce824e95b98c45628fe6c0adb9130c6df2 commit 2826d447fbd60e6a05e53d5f918bceb8c04e315c commit 9d50bff40e3e366886ec37299fc317edf84be0c9 commit cf4b7387c0a842d64bdd7c353e6d3298174a7740 commit df4aaf015775221dde8a51ee09edb919981f091e commit 2939deac1fa220bc82b89235f146df1d9b52e876 commit 37bc31f0e7da4fbad4664e64d906ae7b9009e550 commit efcc970605a4e365151db247361bb013f5c84922 commit 0ee7cc803ae52b60f268fdf2eba79b9fc1162747 commit 968d40986f004b463f057fce612996556b753c9e commit 5822b8acb869caac72c3ddf149d463177aa28fd4 commit 41ead3e0cdc03d64b7da2dcb1fd70ebb7164228b commit c83b9d60299317a2c15550dd506c864cd01a3e5e commit f59966779deac642541c3f7d772a3bf5972727ed commit aec208eecfb833b05597bbc28696fb1ab62f732c commit 1ac354beecfd58e769fb5373d6b2ac87bce9e1e4 commit 4a0a2cf4c03ba49a4c2596c49c7daa719917d509 commit b2f6c73561fbccee404b441a5c2d0b4fefaae817 commit 0a83bb35d8a6ff3d18c2772afe616780c23293a6 commit 616699d77b3813c24bf46090e722da227bd56cbf commit 08ebadfcd8c8c1cc7a14a7581db8331147b85fbb commit 8df436d5ccdf7f441becb8e8156c8ca9c4276e8c commit fb1a140b7bd19c474a41fb2df8a845e8eba328fa commit 64234eabb8f38ac2bf77dd23140887d81acaabe2 commit 1ff77beac87682c22f99e5cf32614909c65b4a36 commit 89390c4982b77c159e3b8a0be4a04552ef0971a0 commit 4c3861f587400db00801810eb8034c7b480e21dd commit 67c79599eea167dd5e08314b8c26f2dfa717753a commit 0af167f92838f34e594e49a6c8cbaca45548e030 commit 2de09ce41f484cbcc65e518905dae73da67ad35c commit 0cd34ce82b0a9ce503d35a51bff47ba3b6715557 commit 9bd110ab06e93fd01938dedd8b6015940418f0fb commit 9c580e8f6cd6524d4e2c3490c440110526f7ddd6 commit 615fc50207fa27453ba7f5fa1abd60a01a498136 commit 0591183699fceeafb4c4141072d47775de83ecfb commit 86678d46272021c88638881c63d427dd10d665d6 commit dd07556324ece81f0d2be756508903d53e331e9e commit 6396679a1f2db0c63721b841f1a5617d6282a4b1 commit 89b008222c2bf21e50219725caed31590edfd9d1 commit f173c7405224002fc32b64cf1679c4d888c493eb commit 2051160546826cf312f15bde534038582b90f844 commit 764a1e6e0272f377f145fc84b547d61e12724233 commit 84ef99c728079dfd21d6bc70b4c3e4af20602b3c commit f0068dd0effd5972046b69b23f99c43251e82d0e commit b2a93490201300a749ad261b5c5d05cb50179c44 commit 30456ffa65469d1d2e5e1da05017e6728d24c11c commit 9f5171ce733a694bd0211952687704c7a5bf32b9 commit 8da536d5e114ad1da6028c7505f048ded2e421c6 commit 352e683b72e79dbd46cbde528eb91e228e88267a commit b7ffeb4a1b5bce1a7495636d21f1704bd7ff01d3 commit 4e64b529c5b04e7944b41de554ee686ecab00744 commit c4c10a68e82b8a03df234ee744acabcc648df270 commit bea9a56afbc4b5a41ea579b8b0dc5e189b439504 commit cb9c7ab1b3ddc2702379dd9639df0c2230453c2e commit dc0a096bcc1d659ae93f836099c6b0312d2ccaaf commit 5afb76522a0af0513b6dc01f84128a73206b051b commit 541d54e40f1672dea6514ad64d54d61ed952648e commit acc96ae0d12783e9781428b17e34fd662a904f0a commit a6250bdb6c4677ee77d699b338e077b900f94c0c commit ad2feebd71ff80532dff75756d1103f056358614 commit 2bba782002c5dab6ca8d608b778b386fb912adff commit 36fa1cb56ac5189c78dacbbb14d452d0c44b86c0 commit 7ce2aa6d7fe121e243e1c8a8093911fecdf1c88e commit 0e66978ebeb44f96ff4d26b2a83dc88a2bf887a6 commit e16c2b8250262bc0bc531299e2c30641cee14221 commit dca452041552a5a5a6aab3ebda32565fad003eb4 commit 0f761f5768b842fe483141bc59db5b4d66bcaf07 commit f1f63cbb705dc38826369496c6fc12c1b8db1324 commit 1b586595df6d04c27088ef348b8202204ce26d45 commit 0a2d922a5618377cdf8fa476351362733ef55342 commit 4bac1c846eff8042dd59ddecd0a43f3b9de5fd23 commit b4ddb27d1dc7349fc882dbb7702bd2628fe27af6 commit ea8793f214ce1e4db205390c0241955f7ff6f383 commit c02895577b834a6148f6d9d0006a6f196511cc79 commit c8007d362c0150aef34323702e7fa996fa0cfd8d commit 8172cebac588c3c5e238d02be30914fbbc5b1234 commit 73c49a624a8db1ec38b138741203d9d7c76eedd7 commit cede849e9e2755084798236735d045298f9d9979 commit adcd15dc47dadfb176a14fa74af5b0cb0f659f2d commit 7e4a77de08f655e159e6355bdfbea73be71fab88 commit 8e78c7c4fe29f7ab8f87634c5f4dedc66107e66b commit e48e6a131d34de54ce6852149e4c97c2208f45cc commit 7d50b92d588d1e7bdcf38f523200b7b113b46c14 commit fa0bbd3be91dd46f4e56e5cf1fb6e8c2837c649c commit 5a0918b4cb90a90fc8d8bfd9b0f81efe6651951f commit e0df49b3045180fdd23dc27193344a767cf68fe1 commit 84435d1d912140958213beda37c708ec3072b5e1 commit 04fb918bf421b299feaee1006e82921d7d381f18 commit 5c1943820156e9a120faba320a72578578a69ab8 commit c7dafdfa90f708b6e4630abf824ba388a3947400 commit 373008bfc9cdb0f050258947fa5a095f0657e1bc commit d83a348b172dd7f9f10f049b3fd7e44cf4d2ed8a commit e98459c06e3d45c2229b097f7b8cdd412357fa2f commit dd49c07f3ab67e8d7ae7b8231b88a746c668b4e8 commit 19f7b8334484d6b610c8eb527c3f56cb42bc8bf1 commit 31ec699ac5d8d17c4f696888708bb6b2567dfcd4 commit c65c71ae85095f94aae32d86aa78811318bf6a90 commit 5544a7b5a07480192eb5fd3536462faed2c21528 commit ca01eba4e5b6b50144a62d7704763c41b68a0de9 commit 1af9add1f1512b10d9ce44ec7137612bc81ff069 commit bf7f7efbe051a59e9d0710cd26ea05f7ebc411a2 commit 385bf5a856c196d5997ce4111a23df7e1b679c17 commit fbe43dcd1aad7dbcee1cffdbe6c3e1d62c85f76a commit e42dfa66d59240afbdd8d4b47b87486db39504aa commit de8341ee3ce7316883e836a2c4e9bf01ab651e0f commit bbca24d0a3c11193bafb9e174f89f52a379006e3 commit 085292c3d78015412b752ee1ca4c7725fd2bf2fc commit cf36ae3e5802716617b9e4d902a31048240396b0 commit 8ae4be56dd0c2b851e7edc0f1d5cd441f88481c0 commit 2ae6ab9d82cdd0f7381639ee31e31de45519df4c commit b1fb6b87ed55ced458b322ea10cf0d0ab151e01b commit ea2aa97ca37a9044ade001aef71dbc06318e8d44 commit 54cd4cde7c1edb869603073167cabab0b760fff6 commit 43ef9db423bdce1df504d4d10e25092d427f04e3 commit 9d705d7741ae70764f3d6d87e67fad3b5c30ffd0 commit f5994da72ba124a3d0463672fdfbec073e3bb72f commit c351938350ab9b5e978dede2c321da43de7eb70c commit 06671734881af2bcf7f453661b5f8616e32bb3fc commit 2035590f3d40f227eac453d0c36b5eae85c1cf08 commit f461950fdc374a3ada5a63c669d997de4600dffe commit 16b3d851c0146123507fe864fdd97411ded51147 commit 233f56745be446b289edac2ba8184c09365c005e commit b75ef35bb57791a5d675699ed4a40c870d1da12f commit 220e979bd906015b74eb485e16464ee5abbd3c9b commit 6b04ce966a738ecdd9294c9593e48513c0dc90aa commit 8d905254162965c8e6be697d82c7dbf5d08f574d commit de2228c04150df8632ad22ee490de2ed579f64e8 commit 607f41768a1ef9c7721866b00fbdeeea5359bc07 commit 13393f65b77445d8b0f99c7b605cc9ccc936586f commit 868e8e5156a1f8d92ca83fdbac6fd52798650792 commit 6067c82c576af13a6b1c892b42ac4a189aced8ee commit a3f7c10a269d5b77dd5822ade822643ced3057f0 commit ad3b0b99113783f697579c7b09285916019865ea commit 2037769f995e45d3a368fb74983954b3ed8da178 commit 16c01544e30a4b4cf5f3eaacf7a4c19a3622b597 commit 4e3464badbeebb3528c457aefe91413f8a9070b6 commit 00047c3d967d7ef8adf8bac3c3579294a3bc0bb1 commit da1acbb12b33cbc651d8a7e956d254f1acc5034f commit 894c9c540f8315007a4752320e2399bc2e0c46b7 commit ee8086dbc1585d9f4020a19447388246a5cff5c8 commit 61251b2cffea8c1811bbd2dbef175b65f64aaa86 commit b8983d42524f10ac6bf35bbce6a7cc8e45f61e04 commit 064d491f73464f5c9cf56ac24f55118f6f4c54c2 commit 100d0ae82b5c240a4dc17486698e67bf116bd598 commit 58091b4958008ef69899e5404f8f031c36b35fbf commit e79a7417072265a85a36775e4e0f798154d39808 commit 4595a25443447b9542b2a5ee7961eb290e94b496 commit e5e6886f4d7e34b6539abddb591d515271caa634 commit 875c6d2711f6c97e58c52288b4231f3072711d61 commit 2c4e19f873f4a389c2a557a84909cf4b78d3525a commit 51fbbe8a3f8b9dd128fa98f6ea36058dfa3f36de commit 458ec0c8f35963626ccd51c3d50b752de5f1b9d4 commit 919bef7a106ade2bda73681bbc2f3678198f44fc commit 0211c2a0ea600e25db3044daaeff4fe41c3ed6d9 commit c8fea9273fd1be308668496badfcbd55183e0dd3 commit 47e04eed84bb07cc5b54462752a4bc7286ab8197 commit 507fd7c400032b126747a5ae8cca2816d73f009a commit d1b4a51a4ca8954f30cf4671b25c4f8637c45600 commit 3c93603d9568c7c4b20ff1712ddc60e997d78df7 commit 3e834a17a22cb8e9169c0b018d1a2df126977db3 commit 6783e6bbc2457dbed351fb0d2477aa6060a7d32b commit 4fd7f14b56b2e727dd66a62e217e57015da4e9fd commit 94a82c9e3dffb88182a4ed0464dc0266ad0d7b45 commit 595091c6ba35ba48c1f8186116bbbae2b208dce6 commit d0629cea1f97acc5e8d95ca2a42ddc72ed4ffa3b commit d7e7546886eebf626569e38ff06d0a67b8b82757 commit b023053592646b1da9477b0b598f2cdd5d3f89d8 commit 2640174f4a139502f603f7bedf3a7011db714e1d commit b97e914552c3fcea71ce03f899e285f2178ec38b commit 6ffc967c36b42f864955cb2c5e8b3fded0baa918 commit f5b9c1ffabce5f4acbeabd3a03fd57b3970a13fe commit d6f84bab48745ea68814d596eb476a9c11ce76ae commit 7b471c32e4cbfdd7a673b79321f6a26abecbf33b commit 910ab9eee0f61a243126d70e932e1301b5437583 commit 39c84b8e929dbd4f63be7e04bf1a2bcd92b44177 commit a54569b1f9721be11ca5b2c8a8bb3c652ebf576c commit a71f3950c803cb18080746aaa8b66af122f32841 commit c1dd5d29aceed251daf98cacd22817f38f76f94b commit bfe632f6d0a1371784dd9a11fa5a9aa2dbf53bf1 commit c7943bb324e503baeeba3df2bc5ca8a377111bfa commit 8409fe92d88c332923130149fe209d1c882b286e commit d91c411c744b55e860fbafc9a499f4f22d64c762 commit edca5a2c373db61efa959307c13ed9156b1c14d9 commit e1cab970574c001d83e59ca8388c474a57a1afb6 commit 672d6ca758651f0ec12cd0d59787067a5bde1c96 commit 151e0e0fdb4d6365305598af3b9072d44e896ef0 commit 992db92b07736ec98432a97b61c37dfe7bd06dd9 commit bbcbd63231cbd1405ff8e987870b02abc6a4d669 commit cbfac7fa491651c57926c99edeb7495c6c1aeac2 commit ae0448bc88b7827babda73edfe587ccc222baccc commit d832db12af4a057582011a590f60f32853680dd4 commit aac4cec1ec45d72bd03eaf3fd772c5a609f5ed26 commit e3d3fd1cea22ada5a06284d7bbb6cd5794d8545a commit 8f7115c1923cd11146525f1615beb29018001964 commit 63e37a79f7bd939314997e29c2f5a9f0ef184281 commit b6f25c3b94f2aadbf5cbef954db4073614943d74 commit 235fdbc32d559db21e580f85035c59372704f09e commit b34c1d538951e1c3a6d5e585e4a95e78d8733064 commit 2edb79a5fb303dff577d6a0c7d571c3bab1d1455 commit 0785691f5711a8f210bb15a5177c2999ebd3702e commit 08b812985996924c0ccf79d54a31fc9757c0a6ca commit aee5ae7c8492eaca2be20d202887c9c716ffc86f commit d654f60898d56ffda461ef4ffd7bbe15159feb8d commit 8787f6fab41380189865f5751c0f15b0c298b923 commit e839a756012b6cad7a4eeb67b0598ac3f349f863 commit 7c6fb61a400bf3218c6504cb2d48858f98822c9d commit 6c20490663553cd7e07d8de8af482012329ab9d6 commit 66f99628eb24409cb8feb5061f78283c8b65f820 commit df2c6e0c95ca22db5d6bea7e8169841c95426f8d commit 36de13fdb04abef3ee03ade5129ab146de63983b commit 8c5708d3da37b8c7c3c22c7e945b9a76a7c9539b commit 86875d558b91cb46f43be112799c06ecce60ec1e commit 42ff33e63b83d0fd40985ccbb50ff54e320a3bd5 commit 58d97c99c99f4559072a5410ec0135271e24e95d commit 269aad0919c7aedffc18dcf46393a1bec457af0a commit f9c182056b8ff7402a46c39c34d5c91133fdf9a4 commit 18aefea7fc71759a2405bc65eae057ffda3c429c commit af2f2a256e048f1b83605eaae49948e4a6811ac1 commit ea45405d704e20826a899380c19ec163336f42ab commit 82c4018479fba63db8db7c7fbfd9e4afba95603a commit 0b15b1ec8b74bd5c9a4e4cbadab82c0657832799 commit 6acc6196a7320b3d2a391925c4c884fc07f0b3df commit 1bb8df66920a5549db2be92c23ab81fd06992e5d commit ceb756004a30239c3a50dc237313e234b667077e commit 3601d620f22e37740cf73f8278eabf9f2aa19eb7 commit d978c51f8d1f4314c84cf50291156862a4c34fc8 commit c4be0ac987f21e12e7ad23bc480e826d8c30de20 commit a3fef74b1d48d89d4d911fcd7c2630d0eb6a0012 commit 37934d4118e22bceb80141804391975078f31734 commit 21485d3da659b66c37d99071623af83ee1c6733d commit 41012d715d5d7b9751ae84b8fb255e404ac9c5d0 commit dc1d85cb790f2091eea074cee24a704b2d6c4a06 commit e3163bc8ffdfdb405e10530b140135b2ee487f89 commit a8671493d2074950553da3cf07d1be43185ef6c6 commit 0af4ed0c329ebb4cef95fda4fcdbfcdea0255442 commit 87d9862b25483242a30bf45420cd8e7e1872a4be commit 25100377a21ad40dae8be5a3ed361b87acec1479 commit 5763d7f29652f94bdfc9dab87888f79ba6bb6c34 commit a7c48a0ab87ae52c087d663e83e56b8225ac4cce commit 5415bec18c69d3aaa7d4e3b170c8b8c6bb24a823 commit d8a79c03054911c375a2252627a429c9bc4615b6 commit 5ce8f7444f8fbb5adee644590c0e4e1890ab004c commit d119888b09bd567e07c6b93a07f175df88857e02 commit 37a0bad677a76e51c5e9e53f5d9f8f4f3e77912f commit 88d4cea24049de0fa073462b24ab471ecd685d8a commit 16c6077f2eea3c8321782d2fb0a6790532cd8c03 commit b261509952bc19d1012cf732f853659be6ebc61e commit cb0eca01ad9756e853efec3301203c2b5b45aa9f commit 29956d0fded036a570bd8e7d4ea4b1a1730307d2 commit 52bb21499cf54fa65b56d97cd0d68579c90207dd commit 65fbfb02c2734cacffec5e3f492e1b4f1dabcf98 commit 056fb8cfbe213f6eb5e987a806583986a4ae8328 commit 72002056f771a025a2e6b4578aeb538799cb9ba2 commit 20c6168b3c8aadef7d2853c925d99eb546bd5e1c commit dcc2527df918edfe297c5074ccc1f05eae361ca6 commit f528fa3989c53d4cf2ee22d306eb1a96ed0010e6 commit 29a1c581a5d873046302aa22c4a05124c5faefab commit 193b6a1934cc2e258e463e94fe3e94382c0bf458 commit dd4bc65c5bdf17ce8e74f91bca5e41b368b0e32b commit 88bab90f7a8aef3732a57cf33bf0ae121de8c7af commit abbc7a3dafb91b9d4ec56b70ec9a7520f8e13334 commit faed5d0182480556cddb8343d9bad968387848f4 commit f525ed19437d376736bed64ee7bc4afee82f2ba9 commit 387df878fdcf63ce497109c4e1eb805a7df9043f commit 3b38b65ed076fa93f1b0d5fb97c55a9bf692cc49 commit da73a94fa282f78d485bd0aab36c8ac15b6f792c commit 6dd1de12e1243f2013e4fabf31e99e63b1a860d0 commit 051ad2788d35ca07aec8402542e5d38429f2426a commit cc62d98bd56d45de4531844ca23913a15136c05b commit 6ef7d362123ecb5bf6d163bb9c7fd6ba2d8c968c commit 7516777434570833469252c16e5fd7d8f73c45be commit 3c480531a4b1652561fd16824c16be8b8a3ba8f1 commit b9caeadf5cb89566412b94b14a1583419aeba45e commit a9b4700279f21c5c1a3425630dea86d338ab13b2 commit 91ef6cfd30bf75763f41e7a4bc119883fe190606 commit 664883ddde67971d59764f2dda855183ecf8bc46 commit 783d446749c09eb34178cb8600a9a93d3b99e35d commit b6d1c39bc637fe4879d610e6687b1d4224c4b2fb commit dd37fba90e72a48998d9f0eb5497088ea2b02ad1 commit ec669ef2e2cf277f3e73d842bb3bda1c3ea2ea73 commit 85096a73f4dc223b5848e41ce40afc5ee913079e commit 1ec5c0e1289c70c8e7dd93a988d945ad5bc3f4b1 commit 391ce355e72bd5713afc85ec5acc955294499dcf commit 8dd2e87dbd49ba0b6afc1dd22a5930d797cf423f commit a28acf7091babf4248b042326946cee7736f796a commit 2d3907c152611a0d65efe54b93972320dcce1565 commit b3e45b18e5c40f1f7e5f6383953343f96f963b13 commit 11e38360cc15e2d5995449d19030b13a67d73cb3 commit 3b7329cf5a767c1be38352d43066012e220ad43c commit 7738be973fc4e2ba22154fafd3a5d7b9666f9abf commit 83ca5fb40e758e0a0257bf4e3a1148dd52c6d0f2 commit a3aded135e84a581ba567c30ecddff47c8b6cfcf commit 541540b9045c2665d6736a77c776ac81d4225eec commit 153a97b4e3de713c05b6bd42d734a2f9eeaf7968 commit 91462afa42e6b8c5a148a44482c893f1800c513d commit 6643b3836f3908c4f77883b2fae72451e85cf3ca commit af81a9201e0112e9c4ca7258e32cd28baf19f31a commit 2f3f958602721c7915ddb1f2a0e8dc5031bc0151 commit 90df15124526176ff03c246362c196a047c8a39a commit bcecb6524881c54ded92f14a6cf2406d5c439637 commit c1c3f41ffb1bd262e40d68938af68c6ab53a41f8 commit b33139ee15352043123b81b32ca1a6a84340eb5d commit 04fa38cce6e02be4362cd889780d58ec275c4d26 commit 0fd85e89b5bf18447e56099a010ee5be5dc9f2b0 commit 414208e48963fdb136240d7f59c15e627832d288 Omitted-fix: 14773bfa70e6 ("mm: shrinkers: fix double kfree on shrinker name") Omitted-fix: 20529e260ff2 ("Revert "drm/amdgpu: fix start calculation in amdgpu_vram_mgr_new"") Omitted-fix: 3024d95a4c52 ("bpf: Partially revert flexible-array member replacement") Omitted-fix: 3915f8bddefd ("drm: xlnx: add <linux/io.h> for readl/writel") Omitted-fix: 395d10ae4d29 ("drm/xlnx: Fix build failure due to missing include") Omitted-fix: 3f61631d47f1 ("take care to handle NULL ->proc_lseek()") Omitted-fix: 5e6723ef3fda ("drm/lcdif: Consistently use plain timings") Omitted-fix: 71c627c0a87a ("drm/lcdif: Clean up debug prints and comments") Omitted-fix: d395fb1999ab ("Revert "drm/amdgpu: move internal vram_mgr function into the C file"") Omitted-fix: ea19684afb54 ("drm/i915/display: consider DG2_RC_CCS_CC when migrating buffers") Omitted-fix: f423fa1bc9fe ("drm/i915/gvt: Add missing vfio_unregister_group_dev() call") Omitted-fix: fcfd3e5fb2f0 ("drm/lcdif: Clean up headers") Signed-off-by: Karol Herbst <kherbst@redhat.com>
2022-11-02 15:48:10 +00:00
#include <linux/compiler_types.h>
dma-buf-map: Rename to iosys-map Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2043115 Upstream Status: v5.18-rc1 Conflicts: drivers/gpu/drm/etnaviv/etnaviv_drv.h drivers/gpu/drm/msm/msm_drv.h drivers/media/common/videobuf2/videobuf2-dma-contig.c commit 7938f4218168ae9fc4bdddb15976f9ebbae41999 Author: Lucas De Marchi <lucas.demarchi@intel.com> AuthorDate: Fri Feb 4 09:05:41 2022 -0800 Commit: Lucas De Marchi <lucas.demarchi@intel.com> CommitDate: Mon Feb 7 16:35:35 2022 -0800 Rename struct dma_buf_map to struct iosys_map and corresponding APIs. Over time dma-buf-map grew up to more functionality than the one used by dma-buf: in fact it's just a shim layer to abstract system memory, that can be accessed via regular load and store, from IO memory that needs to be acessed via arch helpers. The idea is to extend this API so it can fulfill other needs, internal to a single driver. Example: in the i915 driver it's desired to share the implementation for integrated graphics, which uses mostly system memory, with discrete graphics, which may need to access IO memory. The conversion was mostly done with the following semantic patch: @r1@ @@ - struct dma_buf_map + struct iosys_map @r2@ @@ ( - DMA_BUF_MAP_INIT_VADDR + IOSYS_MAP_INIT_VADDR | - dma_buf_map_set_vaddr + iosys_map_set_vaddr | - dma_buf_map_set_vaddr_iomem + iosys_map_set_vaddr_iomem | - dma_buf_map_is_equal + iosys_map_is_equal | - dma_buf_map_is_null + iosys_map_is_null | - dma_buf_map_is_set + iosys_map_is_set | - dma_buf_map_clear + iosys_map_clear | - dma_buf_map_memcpy_to + iosys_map_memcpy_to | - dma_buf_map_incr + iosys_map_incr ) @@ @@ - #include <linux/dma-buf-map.h> + #include <linux/iosys-map.h> Then some files had their includes adjusted and some comments were update to remove mentions to dma-buf-map. Since this is not specific to dma-buf anymore, move the documentation to the "Bus-Independent Device Accesses" section. v2: - Squash patches v3: - Fix wrong removal of dma-buf.h from MAINTAINERS - Move documentation from dma-buf.rst to device-io.rst v4: - Change documentation title and level Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com> Acked-by: Christian König <christian.koenig@amd.com> Acked-by: Sumit Semwal <sumit.semwal@linaro.org> Acked-by: Thomas Zimmermann <tzimmermann@suse.de> Link: https://patchwork.freedesktop.org/patch/msgid/20220204170541.829227-1-lucas.demarchi@intel.com Signed-off-by: Karol Herbst <kherbst@redhat.com>
2022-03-29 14:15:44 +00:00
#include <linux/io.h>
#include <linux/string.h>
/**
* DOC: overview
*
* When accessing a memory region, depending on its location, users may have to
* access it with I/O operations or memory load/store operations. For example,
* copying to system memory could be done with memcpy(), copying to I/O memory
* would be done with memcpy_toio().
*
* .. code-block:: c
*
* void *vaddr = ...; // pointer to system memory
* memcpy(vaddr, src, len);
*
* void *vaddr_iomem = ...; // pointer to I/O memory
Merge DRM changes from upstream v5.19..v6.0 NOTE: This commit does not compile due to missing RHEL-specific fix-ups, which are split out into separate Git commits following this one. If git bisect selected this commit, run "git bisect skip" and try again. Repeat this until it selects a commit which compiles. This commit was generated using: rhdrm-merge-drm v6.0 2115876 Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2115876 Conflicts: drivers/gpu/drm/hyperv/hyperv_drm_drv.c drivers/gpu/drm/mgag200/mgag200_mode.c Conflict resolution: Commit list: commit d10f7117aa43b0b0d1c4b878afafb6d151da441d commit 115fcf5899f7e0b0d3358a22a8cd76b1398642ee commit d8cb49d203556707ff4c3aa05032c4fc7c3ff1a2 commit 9d72b7e2d2ce3746950929a2c54171d183ea89f2 commit 94afc5382669c3a201c5817c47b57a879b6dabce commit aba5825439d7691343aa562dfeaf6616455bcb01 commit a9ec4fd004b84c26207a8cae41662c501c8a284b commit 537d9ed2f6c1dbfe8465365c2f74a855ffad5e6a commit ed3173077d3fa6fd085960aa6347ec30f532bf31 commit b07debc2a8ce7324c85479a28d145eaa05382286 commit 4ce08703a8c4be77b060aefd14eda272f50a45e4 commit 9975af040a04ba9aef33f3ef1ca4e8f04c7223dd commit dfc0312596561ac462308fae32130a0c580b7ac1 commit 37852141965d467a4ae118139b6eee266e7d953c commit 2af243444f9100639451b11d311982279e00cc16 commit 49a62a2923e523e5359219ed54d643c60f3374f8 commit 705bec3eca9b712fe006b7e4d6b4cd4dc6b57d36 commit 8db73897698ccb4eb70ab103245372569ff5a5ec commit 58304630b830a1c27457ce2e3a0912555b43d03e commit 6ff1c19f5f28dbc396462032dcbfdb8b64795415 commit d792ec62ae1260df2e54dc41103aad3b19bad948 commit a5c89f7c43c12c592a882a0ec2a15e9df0011e80 commit 315241d2d9102a90f71bd6c9e7dd06a1c831a184 commit a7b516bd981f11feb0c9f5ee3d149855d48cb2c8 commit 6f67930af78f10ac7a1a9ba81ec606a9bd07749f commit 56ca3117f77a23a8b24e73e458bc85c11e5dea31 commit e6c2db2be986158afb9991d9fa8a38fe65a88516 commit 91875c22a31be0bdf91d7ec651bb6b083b35ac37 commit 69ed3dd6be9cf5d75252940b9a927dff4bab7860 commit 09708b6d82ef473de91c49d90f35e38b0db463f5 commit 222ff6db8a0dcb86f2bb65fc8656aec635a737a6 commit 218076abbcd647de46635d21331a34b814f90906 commit 922abe4d19bd21b38298f3902674774b92a49293 commit b6411373d3954c8fe4617c27f90f773108b0ab03 commit efd01cd3c27636bc4840057a03839e54abaf11dc commit eb86f645ab9b90c47de7ebe229feae7ac999421b commit b15a7357a84f091fde8ce35bf2fd494150ad4bd0 commit 1b93ff4d0679190e8812cd0d0b3aebfcba1ed883 commit e9794c88cd6cf4be4a79188916a75539751f532c commit 3507932390bbfcf7c69dff9843f1c9da6ed4b861 commit 23dd74db02d75579d8d4eb0b88c7ad119e782269 commit b499914eb83765a27e3b43f216e9d1bdf4265418 commit 6c01aa13894fa0049ea8c96c271318ca353a77f1 commit 429e1fc1b2c257f35b6a1318eb3a1ffb80bc6640 commit e090532246fe17609b08ba0a862428867426dc95 commit 9d67edba730c4663eb7d87771123c3fb86ba606d commit 4de23dca7ec8dfb191ea80fbfe3f008d4ed52346 commit 6cd96877c7da6bc3a28ef0bcb3bc7470f4dd9aa6 commit 93d9e0453e2bb599e0bcced1b914f9b4010180a1 commit 69f8afdb45e7775840693bce42da79d9c22c2e83 commit 500d7135c924024ed2e5e62b03dd9b3b6257fa10 commit 8caaf7ad659da9b757781d5f08ce0bf98801931e commit 1a1a5a315ee805bec457fd214250c088efadb50b commit ad5f74f3420183052532a220edd9a37aba92724a commit 047de3f17a8321065c32ee3f6272a6dba16d6bcf commit 5e3f1e7729ec7a99e145e9d8ed58963d86cdfb98 commit 708d19d9f362766147cab79eccae60912c6d3068 commit aebeb02dfccb61d6930112aede2db3db5b8e974e commit ef83e1198f9f7d7db0031c839bb1112cfee45b42 commit 7ecc3cc8a7b39f08eee9aea7b718187583342a70 commit 3064debaf55e1bc8f191871ca5f82697ef4c0951 commit c48a363016349352dac7e66cd1e823f73bff1fc4 commit d2addf89c5abf4024574d42000313175c6e074fc commit d7fd32ecce914686756dedf586c8573e71f975a4 commit 3080c21a043abc83e56da9bb5942eb3f4b92c90e commit 303760aa914b7f5ac9602dbb4b471a2ad52eeb3e commit 21c47196aec3a93f913a7515e1e7b30e6c54d6c6 commit 18fb42db05a0b93ab5dd5eab5315e50eaa3ca620 commit 945ae909aa76f55ac8c9e95feb3683512d39134a commit be982415fc2e953ad49e59b204f2d0e64953eb5f commit ab1747ccf052976465db7c5a7e1301a50f290db0 commit e4ccf9a777d30d60c60f729b1d5c9bc9e3ea46e3 commit 22a27e0532d06968afc265a3b91fbdc5a773169a commit e42192b4c345a807d8df034f178d5846e1c97ad1 commit a2f9790dcffe2dd0b363607fd215e5b81a0de57a commit 40f71f5b239291357dbee3dc1c6ace83a373f44e commit dd0f4470a849d07081a2036f89d2c41264383985 commit f0d080ff429129b16332f17a906ad2123d9c6317 commit 084c7a7c7a0a0cab35d959e1b14d45a0c6221f49 commit a77f7c89e62c6dfe405a64995812746f27adc510 commit 7428bfbdb7c4dc7323e6b6f0e327c3587e479e16 commit 67d87fac86dd4a04cc62dc0eddfb7c74ace4666d commit 874d98eed71ae678ab364d4c16060955b8b245ae commit 2c54f87cf2fb99826ded617fd0484e688ecfe882 commit 45aa2336fa6dbfa73d9081f75a4b813e747a55aa commit bba4b6470b02c2d9a5074a40cff7246d3356f460 commit 027034511c6a1e3ea96122f7626b89b6d339ed49 commit 3176d0925027727ec37e388e9363f124c2c52ae9 commit 0c057877cbdf261efa7874474f48c715cd6401ba commit 5e87b2e5171621ff00ec197c9af15bc3aa405b6b commit bbded689680f0f2e65d4a57d0dfa654671052d56 commit c7b2dee4308b74391734ac675e66e6856a077f77 commit d9ba1b4cbb2989c919198832f4ebd6eb8ba94da0 commit d0edd3c1a7e859a5899c26e2906e80f4ac798fa9 commit ca10b9d60f8c9556720bad8b1ec7d522e353a01d commit de5db71e4c8c35ed5e92006e3064ce9230881ece commit b6415bd7386bcf9d2e0d6ee1d4ef4186e7a87b24 commit b959eb4f5b7ea49b47e95c9047d33d1b1cf81057 commit 0facdaa249c4e97346bc0b49c893e4a1d336b7dd commit c3e57159dea473e9e138d32d08c48f3103294050 commit 057a6a1936e79c0bc9c86537fb9886ed39cd078a commit d6774b8c3c5813aa541c9148f641d3d8d4b296d2 commit c577b2f43e80d707870a74de0fd726c51b206956 commit a24191b1c4ad05fc578ea5ea01652c09b71da86d commit a9ad5822366c5065e6a65fe5ff5090295ba98986 commit d158367c31f0f87567d2e8a0955287dc005d40e5 commit 8f6de23184452793e60945a26ac40db435d7798d commit 9e97c46f832d4669b4e52cde5ad0bd43423504eb commit a77c2af0994e24ee36c7ffb6dc852770bdf06fb1 commit 5913ab941d6ea782e841234c76958c6872ea752d commit d50f74790bbba662d1438dbc03be6616c52c0722 commit 16f1456466c269ecda32b88c3f8fdd76f8ec370c commit b279df242972ae816a75cf1cc732af836f999100 commit 8219f11fdaf56593a719e1d72fa582673560315a commit 69340e529a064da4807622395e967aa2b5eba1c5 commit 475e2b970cc372f49e9d3e4bbead8b4874299d31 commit e180a7b218487065efd9a3f05eac5de7de128e19 commit 315a8d00ac74c59a688a1a88c0ed97a7791d1c91 commit a50794f26f52c66cb793d5d392f5f19bc2962cdd commit 451374eef622fca6f00eeeda89aaccb45a30a149 commit 1ade30812abfdd1c161a155fd54b0dd594c217ee commit 230fb39ff7e07bd0324c87acf08dd2c9b0bbcea8 commit 962bd34bb457f6353f333ce234c3fd34cad1c00a commit 411d44d754739a371999412606b28af1d72a210b commit 7f73b371710edaee1f40d834096c07c62e51b184 commit f159b1b22c8a2d3d7c1fa877fafc8aacff0deeba commit 746b9c62cc8614fa59c23f3332682b5e9e1d801c commit 1c89b4b718168aa6cf136a984b474d663e4203b7 commit a8d6e127254c48d895c4f6e973ec998fd4a0eff3 commit 4f093a527b0b8f9d3059a4e8376e582fd14cf09e commit 4a2a13a57b605994ee44e5c2cd7b9efc49901404 commit e7c254d75d16b75abf1958095fd34e2ecdc0d645 commit 69ef4a192bba0d76216198ec6d5fe82375337903 commit 9602efab9f8652ef39dc2789edcd26c3d1d3f901 commit e91eec9128c2ad9eab9cf9d7c17f8034b6a86c4c commit 9d8d5a39173244a1394cf84a93447be6f82b361d commit 3d6c72b7fdd2429ca1d4d690618bf65050380b48 commit b409db082da6b76ad2b759a1a48d9402eee4b942 commit fdbec9ff669d83bf863ca7e657af6a9e4c949565 commit 39921e5f00f5a98ff9cb3229937ca339e8d9c9c6 commit 85a040bc9049dd168d5e79a1fa9d2da87e6e52dc commit ee421bb4cb9535f44015634baad833dcc98c9062 commit 5f38c3fb55ce3814b4353320d7a205068a420e48 commit 39c28cdfb719f0e306b447f0827dfd712f81858b commit 0d662350928e6787d29ab205e47e5aa6f1f792f9 commit c1de02bbeca58894c805b3d45c2da4bf30cfc5d9 commit 0b4c48f3e315d172e4cc06e10f2c8ba180788baf commit 08c59dde71b73a0ac94e3ed2d431345b01f20485 commit 67d935b4713988d0a41097439c0c2d74f240b204 commit fa373eb2190115ef2c3597f89c12350d0a250eb0 commit 4cd79f614b501e496ee8e4181d528c0cc1cb4e18 commit 8ec5c0006c50cb1909c0de0fad137909c1218990 commit 2ba5b683260e13d8f2c43bc594d5ae15ec7f7a04 commit 670c87fd169518eb4f15030c63f6c1b4ddf18bfb commit 1ff72d434b40d221e2583fab5e1203031d05c059 commit 649eb3828fb22e829e222ebd83f4e11dc503a565 commit 9ad6f181ad9a19a26bda73a7b199df44ccfcdaba commit 39b1bc4b5bcccac781267bb826b035fbb99c8b9d commit 991dcb89caeb1b9bf714b382e23d3f6d8016e744 commit 61922beba36adea8702fe8069b309c806f6608af commit 6b03816f869529393b37d03e5d75b68f7365a7a4 commit e4f21d1436519fec3e181082c8e1c3fb00ec08a7 commit 1a3b1ea111c44d9dce9f70ba032531a223395a15 commit d63ddca7c58132257fd01e3a4feca41b3bac3089 commit 8ae664907916eba9a9d56296bed684c27318a872 commit d32e8ed918ba7384fda9055ebb31b89b3eadb517 commit fb289464f695f9d913479b4ebae9e39b057f8531 commit 1eb31338994889ac34c4f841e5d54bf10111741b commit e41388d508a50ddb2be5c2676f1992353ca2f155 commit a4f263f46961b1229b10ca3a98f0be618a9d47ac commit a67664860f7833015a683ea295f7c79ac2901332 commit 837c72b23a57e15dd363d5f3f3f268c49c128740 commit edd34368c4c3b45b1386b15f78b2229420f8c6d4 commit b981cc333ff06cb23c7968007965e79c80f5df97 commit e31372492904415e425430402453a192e2c6519f commit 16e214d4aef2d600ef94e845530a28ce795b8fcc commit 26be7cd8aacdd3f0429834e78e3166286779f083 commit 6a735552f44d7a29a9e629cdc3b5c3ac2b4021e6 commit 9d15dd1bb3e7de4dd31a225977813dda2748253e commit 69d6bf5c3754ffc491896632438417d1cedc2c68 commit 91776af1d8deb8f36cbec6bf2bf24b661b2b5cbb commit 9180c30cd61aa0b2f0eb4791c8e490c8c5abc54c commit 420a07b841d03f6a436d8c06571c69aa5c783897 commit 4fde3f5d8805caba40cce2268c540d8a37403c6b commit 51ab3b85000d214b75899875d5745935e06020e5 commit 822e5ae701af2964c5808b6ade1d6f3b1eaec967 commit 75bd0d5e4eadb9ce3e9b6fb71971b6e87c38799e commit 60b02a09598f87972a15bb181b9a62b8a8ee682a commit 89fcdf4305996f869eb39eb8f14a989e9a289611 commit 586294c3c1860ac991d3a241159c0edf974b68e4 commit 8e75e8f573e1ff4a0c93c3be1554d2bfd5ae6029 commit 67090801489d0a4c80c121494b749e1e97573447 commit 50759c13735dab06805eff0e8161d33216d6f5a3 commit c3fbcf60bc74b630967f291f47f0d9d0de6fcea7 commit c2fdb424d32204faf5be29d55f0086b611c94e38 commit 3cf050762534cc268a02793ec00240f81c6e2229 commit c518a775a843413786d3db8b5cab084597730a5a commit ade1fc91eb99614c7155fec762ad5761bb470e06 commit 14374e3eee1b02dbf162e1dd75b789373f07ef43 commit 435c249008cba04ed6a7975e9411f3b934620204 commit 0c5064fa8d5a02dc2dcc6c674a0ad1bbaf79efda commit 01357a5a45ed8eb9543183f5c9c6713ae60fc1f3 commit 8f61973718485f3e89bc4f408f929048b7b47c83 commit 245a4a7b531cffb41233a716497c25b06835cf4b commit ec8d985ff26f29d53d9ebff04973e96572fd0285 commit a0ab5abced550ddeefddb06055ed60779a54eb79 commit 0aa93f54f4341a40b05ec2ac242109e78661d7aa commit 92a020747d6c9e2efe8168a4a444576581bba636 commit 6cb07d20317c77494fa4de572887e3dcdbf98b6d commit 0e5397d8c9fe2a2e4fcc8d98cba4a12511a03267 commit 3951270abfd229e3e17c991942cd111b66454f97 commit 3d140a3d8816082f9732d6fccb81dc18823e03b3 commit aa71f9870efea70b38b17c3d2af870530fcd02e3 commit 58ae532ee875783503428610ac0f5d80e73009a7 commit f2206df8ec862073995f5d27f0f55f698843a9b8 commit 4f543d664cec7e9b490bca55f57151afe6f5cf47 commit a9bfcb56a2ef265092a4cfcd4b9c58ddff4d3649 commit 8b449f1c44d1f921240da6a3e7fc4030966abbff commit ce581ae142e24deb27905840fb720fee9b38d7a4 commit 04514c14678e760e17e3cd44c553ade1bf3bef06 commit fba99b1ab7bde41c1eb00431df37b9237be3681e commit 2db7d421cc5ca86bdcf57f2634f6eefdf349f998 commit 6e939738da208bcc0e4dc794519e18cad85bca73 commit a9b20eb6f7da7794f8ffbce0ab9c709cb1ed71aa commit 700034566d6844b3a67f4b6c3a728d9c0c8d93af commit 5a18db2e92a3556ccacc92c031db6e6a7f2b34dc commit 01ece65132e2980ece4eca91105dfc9eed504881 commit 04477e5e1e6ced4573d9bd5271572ba633a260ab commit ba1677f76b9a510d88efdc7a1416b2e778f125bc commit 368eb57a1676cef35f8303bc23f95d2ac35b7255 commit 544ef14031d0bc9223727fa8d39cd54f0fad7244 commit 147a09072c84b32746fb70139963a92c7d90e07a commit 0cc3ae930c8b2a086b802a8c7b915fd28b57c780 commit a57ebfc0b4da16a3f36bfebb158198aab3e340f8 commit e9ca4e9ea6e208feae82f72607818ac8e15115f4 commit 935a3c66eb9b66426d4be9b54666c77dbe7c32eb commit aa2bdc4843f5871e6c68fbec5e10c0dbaf10ff91 commit 4cfd16659641067f618cdd3589eda42eb2943399 commit bc3c5e0809ae9faa039baf75547e8ee46ec124ef commit b87d39019651c9cae169396cf5ae525393084490 commit 5ac342ef84d7dccd1ba43f5fa2dc10a6feda91e2 commit b729cfee705a56c6204647ac486107a1f814af36 commit 3800b1710946f7db3cb3a29cb2e218cf5df999d0 commit 50e156bd8a9d0910ac4bae5fcff00ddb798db967 commit 10e619f1f31cf126885b3e0ac43a8de9744467fb commit c441d28945fb113220d48d6c86ebc0b090a2b677 commit e8971a790370e805281dd650ec936a9b66435220 commit b43edc504ddd8902d1f697364049b0c0b89de6e2 commit 6352cd451ddbb506ce061868a9e5465d294d4857 commit f7dad0daf2c2368f72828b0729799f01bdcee33b commit a820190204aef0739aa3a067d00273d117f9367c commit b8b64595d6a1ccd5cdf56c528e921332d1366b22 commit ab9d97d6f9f1bb5de83411581dc6cdf425a83a15 commit f74e78ca90bd21b47746b90c439709007681f44c commit d5fe83d26dae59c5b52105075e8950dea8ce7c19 commit 66f54992981444cb418f31018e190d15c92d3599 commit e309434ac56774c86e79a50980e8611ce7cc31a3 commit faf26f2b12e1e03956f7e628183e422d94713e4b commit 2f6247dad2c56cfe2df3c6e00586ead5ee905b46 commit b801d8ad1b516a951535241c9cf60cac8f9a5c2b commit 79b470e5ee83e979f8ff465efa8b7ced160bcae7 commit 4f29f9cf092b2d331ba2081566be3272962b7f96 commit ac2e555e0a7fe571d46f7dcb1529b4bee00095d6 commit 0efd4374f6b41650863947a7528d45e8ad0f7ae0 commit 58efeea32d5e32fa340c7ee3f52d5f986b240e39 commit dda4fb85e433f761eedaed0005a2bc20d705d504 commit 265280b99822e5562eb431b102f2ba773c7b2a0a commit 235c67634230b0f9ad8c0185272fed36c892b1c4 commit d3dfceb58de5f897640cdd424f6c2538d9514367 commit 3b1229741eda70116e0163affdda377484a788ae commit 577359ca178262a64236cc96299714dbff21e9c7 commit 85b0cc35efab0cbc78c083d4506250bea6a755ad commit 49401d3a5c86f5ead12ea7cbe98031edb512b13a commit 543036a2de71f14f8ad566c858e5e9ff61736a86 commit e42ce1366ae806ba2c1f884997703be68df428f4 commit 3dc35cf8789ac93d656f255539f9b37c5051ebf6 commit 2cb6915dcf70a2bf7ee10fcf3f56b083beec1086 commit 542a0f2ef9ea2ccfadf2b8a3b53368c61fc97a0f commit a839a73b18157fe30eb4acd2a1f1ffdb890762ff commit 9761843250f1367043ae2a483461af287aecc879 commit e06c5f59ffe1006f1c6f533113b72ad48a6d4564 commit b3f2c796634613bca511266b37084560f36b67c1 commit 6a640b95b061fe340214ebd4638974b8b6f08efe commit cbd3e8440e2e6a4d83479235c9bf278b89360946 commit 1908a07cffdfc7c57ba5116418c3f2b5ef05e0f6 commit 218987fdead218ae0e714cd9059bc9fc480220f9 commit 9fe5d08fc8230adb64128986ee4af267a54e56dd commit 16600b7d66367482dc8526f8bc3a30b32aaef329 commit d57716702deac8e0ec440739eb4cd6eb0872ddd4 commit 10c4ad3ae025dd0e343a09d2ea4b0e71f8d10797 commit 8763e4c1a0e6710dccb8fccba96fcd6caaa50cae commit 7101ab97e3b00ec1c68d09826bb0521d17783673 commit 80d46fff373775fdea9917a7d13f6fb6fa5147ad commit cb12d72b426caa7594890c62df69fe4b83c96e58 commit 72b5f23ccb0aee46029476cbb072074384aef591 commit 3ccb9ea9976022034d8fffd8d929d6e70a24e0c6 commit 2388a778bdacad0c936dbb01048362864847f8ad commit 9d6b2041761ff6d5a33941919c8b5a805ecbed6c commit 1d6c363330834fa534c1c7ee01620ff134aade1f commit be77243327d962a87bcf03615bae12d73efb9b7c commit ac1ac694f7173a0fbb0b60ab0f26226dd334479a commit 2cfe34e18970d26bff73c63f16c76dae22138d19 commit 2267a195e28cc438cb45936c4562f958502d4038 commit da1db031cd30fefc99d1c82211d3c24b73857bbe commit 3378aed7e2ec7212889116335a2120a6e35c80ce commit 7a09f61f8e842dd027afa1ce8be8bd86062c8a7b commit 4c1b3d0803aef6d39913f1e9d2cfe2c1ccce18e8 commit e87b92c6af537843daf7da9235e622988bae7eae commit b5a0168e1406176cf98487833b7468a1ea5872d3 commit 452e9214431f1f6385bb20fdf6e1b5692947071f commit 49f594995a9255ff734f79c1fc22bd06119ebe8f commit 6ea843e01bce520cf5dea86bc30c5133e0d0822d commit e127306d433ff99f29d1b083c6b3aa128bbd9c5e commit 0c9ed6044c5d08562d38d56e94279badef39e4c7 commit 327f79d7a1d2dcc10aeda05983c4d1532dd0830a commit 214d72f62978c28fe27d22d0d498d04493e9ce86 commit 80fb7a409c64ef304e4040320e87dbb2f10968ca commit b6a93844145395068574cbbfaf3aea91d1f24f1a commit 405bb9eea36a02798631e8409f1182705699d092 commit 3e80a5b068a5fedc69ada30ba1a2d1e0b76dfc25 commit d8e4fb9112e88d8d87ffbc38fa511e7118042d4f commit 8b67e738ca17fb52a275b1cc0191dfce0e9cd7a5 commit 83eb5385b4f021c2674b1d78675bfd10443cdf74 commit be1a63daffdd152ba4c7b71ab9fec2e39259b42b commit 1d742694571655e49e11ea8f391bcafaf0f5ee74 commit b3d0c0f2dfbe610ae5ac6b2d70dd450645dce3cb commit 1da5dab029c08e178784a0750203365ea7c3b4f4 commit 3a6dce778de7c120a37983d80b6ccc8c2c4ff6ec commit aa303964bc349914de8e1d3ff7b517581839d01b commit 6d1044a070b2eef0be45f3b99274a6cebee25053 commit 651d7ee63f338b82d18273c30e9ea804ae174342 commit 3d8785f6c04a953868384db455bb2fdd0b22c11c commit b07d1d73b09ef40e91ace51a2e167391676a8175 commit 4c7631800e6bf0eced08dd7b4f793fcd972f597d commit a35806b36ea44724b21f7f110b38b5941fc9c393 commit 65657d98754c581ad66b56680d3c9ed679890071 commit 32c453f18dccd93a27d6f026ca690167c8cc9639 commit 6cc5c77300afbb285c4f41e04f3435ae3c484c40 commit c7eac19eda0a82f0c1dd9455012754445772fd09 commit c2a050c5e07faf9ed2fa1daa1eb642d9da4a879d commit e61a048eabf9d1245f86e67ec4787d2f10e5a1e0 commit 65e7a17499e15771339d85eaa1ba686ad2fe342c commit 381b590c307f29d0990c4b99ae3a2e02aff2a5b9 commit 1b0da5a3e90d3920f6967e4303fdeaaec6f62208 commit 7cc191ee7621b7145c6cc9c18a4e1929bb5f136e commit 84de5c2e92dccb2bcfd5ff68af44960b808fe6bb commit 453b0016a054df0f442fda8a145b97a33816cab9 commit 031ac4e419dfd8f099a0adba31f7f735013eb628 commit b94b02d72e2b979a32addc8f5099fcf1f6ce9e7b commit d1b08baf93352bb3c88d637055dc21187a456646 commit 136f614931a2bb73616b292cf542da3a18daefd5 commit ea64228d26fee9b766bc9615e92a319da5ef94ef commit fae7d186403ee5a9375ec75938e0de99718e066a commit 73f54d5d968264148ef81941d9dc07e35025a120 commit 85397f6bc4ff13a6bc5259facb8ebebb1986d666 commit ce19021fd99ab2c915f2b44b0df39bef75f11d18 commit d45e32c9d98ce7c22a4bafe69cee58165b59533b commit b62d943e9686e791dd39f8bde302fc27446cdca9 commit b9a577a407d99638522ba6a0fc4fb360aacc01d0 commit 21e74bf99596d91411b6b51340c05ff92a7a4a01 commit 98da4b99a0525c222dab7cd8e73153eaea062dc3 commit d1e40d8e4b4df3f705c7898b264b2cfb60bdafc4 commit da1efdb2a3e8593a9428c81a531bfd8a0c3dd66e commit dfa687bffc8a4a21ed929c7dececf01b8f1f52ee commit 34b68c17e9895ba66fc809224b0122a2eed7aa40 commit 330c1b3180b0d79fef7c05331647f3695661b79e commit 38353a5e3da0b26fab9eeff13a482b135512d9c0 commit aec23025ebc86b770beb9dab6610b671e63d36a2 commit 4464bd825dd56c2f900038c5922408d70aab01fc commit 165ab7b4319d8ecbb689f3d68f0cd6bda4d82b1c commit 77361ed89a8b03c7e121f4b8c517d7be93ccd8df commit 2d017189e2b39cf2fae63984215385401b77ea83 commit 0c56705d8aae9696348cc320b71d531ede001b79 commit e5309d7f66105011e0597fd55ff2ef7f636f52c6 commit d8791dc7f941f3dc78ef2c6aa71d7c752d5b529e commit 8246370341e8e816ad22aaf8d8bfca850339ce0a commit 874714feff3128dc691fc309ee8b9d479f541aa6 commit a0b9e4531b2eaf066a1ccb2986f4d2f9efa6c313 commit d4965c53b95d7533dfc2309d2fc25838bd33220e commit 6b6d12b6ff204cc224cd2369bda2b0580a80a5b3 commit d445dd7b39c56a66872386a3ce0c8a862e59be46 commit 9d001360b47b792a475250bf7ef2bcfbd17ba09f commit 44961f6ebce9a7dccb2ec3dca312c5dbf85920e5 commit 6bad4ff84cb57f548d42a41091159b750eed9ef9 commit 6651875ad7796ed3cd84b3bafb3885d05bb543ff commit f9f4daf15398c3aa0aa2dcd05ed4ea2544bcc62c commit 2ff6a14b20298db0763772b62cd4fb030e6d7f75 commit c6e3806705d679edf135dff5d540a278fc406f15 commit 81298056a78c5163b216f17d17c43736e7069961 commit ab9db127ee03487785509f960e7b5b91cdb6b92d commit eb20cf30c57c37ed05f44966dfabc2c34bf46cab commit 5821a0bbb4c39960975d29d6b58ae290088db0ed commit f09d2b0bdd78ffd38227426fb2ceab7ebd141391 commit f06d1d66d54c223e4f0f73393d94afd88105b6f3 commit 24b8b74eb2eb578fee046c70681000f61afa5680 commit 7f35680ada234ce00828b8ea841ba7ca1e00ff52 commit c5cb0002d14b6f7aabaf7d67d0515fe70aea7167 commit 17f65658c8adce6233f9e53be59d399af6180059 commit 20e10881a043af63f2962a9e6bca64661225b383 commit 594740497e998d30477ab26093bfb81c28cd3ff1 commit faa406f4233ecbd781554ae0a850e56f53003d2e commit 68e355c00f2d58ba0426cf9a4d9df77077493018 commit 61243c173cd26fc8c6bea74d6d47a37ab520dacc commit 143fee0ccc97284e6ece1cf86b7d50721b522448 commit 0dc662318d36e060268751fbd3309660acd3c5aa commit c55300ad4a1814bac9191a4d2c7b0d74273aec7c commit 6fbfc3a23c98bdcda679161c4f4e31368008af8a commit 08a2fd23c6c21e5ef24248a9c1b09e929655eb3b commit 136788cc74cbd9fabc2922b77bfdd38a53eb7155 commit 87d6b28e4a753f4a0572a695fcee094510dc6519 commit 284498206f31e655fb61b1e08d0506dccbffe55f commit c4d7738c9efc81a4f0364da1e673ab1b1cf91735 commit feb54650bae25f2a2adfc493e3e254e7c27a3fba commit 0f28cca87e9afc22280c44d378d2a6e249933977 commit cac3bfcaedbf4d5c93cabaa7882f243099afb8ab commit 4e2d10443580d934188f226f48eda7d650711e03 commit 0381ac3ca2e727d4dfb7264d9416a8ba6bb6c18b commit 851dd8625320fb626b6ab6399b2402fd84abcdfb commit cde83d47482e2578432f9ce029748f4f0d029e9e commit bb50bba9c6c741f5e359f009dde3b25f12a84e3d commit 6f73d6762694c3e91c49e6708077a0de2a75f2f5 commit 62f8f5c3bfc2968461b0a74f0e393325bec16c69 commit 1b3aa89550a2ce4f4af41e11162c5cc0b0b07b4f commit d7053e631e891698f7532712066014ca140c8ff3 commit da4d45b7da937dfbeb918b87c66a5bf9a3079ed8 commit 26c763875e0c15921a0480e008e2be07665e7f56 commit 8728df26dd24a63b24e4e5a6c847172add2fa149 commit 9e68c3841390c43521d4fde6c51e91fcb2d4131f commit 5b644783396b2150eeccb9a079498cad5dff3c42 commit 64f6516e60b0bbe6abfc9f1d9f1999012e0f11a6 commit c11256f82ec82216f69dafee75b3d854d92392d1 commit 6aed665f9d8368ae1e962f44339150884bb47f5b commit bd63f11f4c3c46afec07d821f74736161ff6e526 commit 430ac054e5ea172a880e07da494f65f0b80d8fb8 commit d9c1452c0f07c2e0766a6cf3921eca182e26fdf3 commit 20f038d074d4fa52e88a36bebf25e81c88d7e6fd commit 9e9fa6a9198b767b00f48160800128e83a038f9f commit c24968734abfed81c8f93dc5f44a7b7a9aecadfa commit f17c655cfb99796918d96ae25261db2640407d01 commit e0d7371b46c7b47cdf5391717292033365801437 commit efeeaefe9be56e8ae5e5b4e9ff6d2275ec977ec5 commit 5c57c099f442acab13129c9e15ad2a0c31151c98 commit 9cc4853e4781bf0dd0f35355dc92d97c9da02f5d commit ce19bbe46fcfb88e75a6c7f691df4753a72daa81 commit 7aade9ceeb88d8ca674141d2c245f0107032afb1 commit 4c59b571fce6cedefc1c8e5158f7548f05c05ed6 commit ab9a0b1f3661157d144fb744f3a197563e8e0ff4 commit 25a2b22e4148b1ac91960e13f4f5de020ed04d05 commit 2f83658ffc8c259f05e79dc632e34b26bb8b75c5 commit b5fd0cf3ea377a7332721df8a8c8e7715f93c8d4 commit cf727044144d47c3e8482b9a7775bd3f04a87341 commit 247c7b0dac3cf1141b8bf5520adf2fac1a797aa9 commit e3c60b4ef42d4db5b8d1434fa1741abd7f2fc850 commit 5d6ec040ab44d23953a2efebfe02e41337952be7 commit 7fc83cd079bba8b96b0f46e31f26c8f31c814146 commit 7d188c521d9ec3650136e9b9c81c61b22a544ab3 commit fc801750b197d0f00c09e01e59a7dcd240fddcb5 commit 930e7cba1190a3251fcb01c8523ea9aed89d9a51 commit 4af48f1d1d0a6f050ffcfe83e939c9455d51267f commit 1db4b5264819a8e3aa62e38287bf1da2e1dc8894 commit 5c57cbc390b166950c2e6c2f0c4edaeb0f47e97d commit d8609fd1e0742ba3ad2e51bba9dd489dd03d8599 commit 56426faa1492289ff794620c4ed8c1847a420d0a commit 254a8d0c0071255eb19a81a32ff8d5a0beef1e34 commit fc8adb13d844b44c147b4dced292c74a1ab5cb25 commit 16bd48dc2b3b08d8b3160182b42e51eb2c274706 commit eb6b94db2f4a585d4a9b8e503d7377d2a23c1104 commit c750c4ce1ad69d3df68359abce70ee3d0064c97a commit 24f6fe3226c6f9f1b8406311a96b59c6e650b707 commit 16490922a95f4f67eb9d918f94a4f5b5bdc9eb80 commit f4e3a12bf2d1983b8f352b7719794c52be7e0990 commit fc67615f4ecc3b66bd458840927272aa131eface commit 11a8d095d86854bbc8697525f2c543de36bf5804 commit d9307f27efa531f034862bccf2985c5fa22c4b80 commit 407d63b3af881d17c39f16cdd8416adb0e4658bc commit 6537f79a2aae65748d402d6c46e79d9e473d42a9 commit 019fd800cf4a4514bbb502a52d376b01f02cc347 commit 9f1c8677724a0e6a6ac7a74d2b0192a584df859d commit 623411c293d180ed51f1c3b5753c5acf2c2a4077 commit 97708335b04df3eef0e650b0601cdf6c5ab16dcd commit c9ae7b866f32043d23a34d00a5e6e8d86d2cf10e commit 9affc1b87ecba31458567359b5a28b0b08920a24 commit 72aeb6ee0c78fafc476c02d1b19b5b38defcb57f commit 438eac25d033a1701d839bad16c6ad78f683a293 commit f2a5002541d0698509d4f3adfbfcc55a9c1e2dd1 commit 5089c4a8ebea3c3ad9eedf038dad7098ebc06131 commit d52ea3dc65a9d504afa7a03ff24e17866670bdac commit 526e6ca5d1d5fd22c79033cf5a8eb07d98a11274 commit ea937ad6e925994b94d17555e4c2f2f9a99234e1 commit 1f474c8742fd53a048cc8cc4b20e20b2614397eb commit d6aa8424bcac64b2608452589c9a09984251c01c commit d11737f26ffeae88350b835caa37c7449da22550 commit 272308add589bd46ddb5899685e25fc9f6a58b1e commit 1a65327a84db5b9081a51ccb1c562083f59bfcec commit 9731dd4cadc53251ef80b3655c8d841fed52fa3d commit c443514a7d6d648bc497efbe502e2a49738b94de commit b840b64bc8ed3fc46f6d6aa7f97c43862a33bea5 commit 71be4b16d39ac8b25a8a04eda66cb65581e1a03c commit a141d2083b462505727e14d98db5fc3cd43d59c6 commit f51d22b0d04aa33e94d663fb63aa61e4da168523 commit 5f034aef8479ac80e8732958dcb66b8eda650659 commit 85ee819fd08eff7617c186775fd958e6258216db commit f69e98a91a01fd7c5755dd710e94a17d6e9f583f commit a34136a3b3526369e1b3e678590e3760e7653f0f commit c2fbe663ec4f991832d67f936d3941f781884156 commit 2bbb54bbacd674c692306351d1be5a9b5e61a1e4 commit 28fdd0c32daf9a50a606530d54784fcfa29d88b7 commit 9a4c9de4838fd8ccfcfcfdcd7bd472dddd11f264 commit 3de58f22f544ec9c692993fb1f3bc77163d3d5d8 commit ebfb15262af3bec6c3cc263ce04164e44eea4b30 commit ac31a24d9188a9599dfbce7664cb11e6292873a5 commit ac78fa502afa539cce3a285e50d7fefaf4d2115e commit ba8b460445f8d19d530646729c29319c278dbb38 commit 68ad7f90c790a178f47ef08408d97a81cbb71b37 commit 914da384ae9a77079314f07022c18063c7e77778 commit 4e1db0119c64fd81509005a961790d263e99b21b commit 2595fe04a44d8ac7a56db27dbd1c54698d97fc0b commit 869968225718ec7d77c418e2f6be996206d0428e commit c78783f3227f41053e9a44f536d13f05383b875a commit 8d2ba05b099aedfcece0326a5bbb2e7cc33261ae commit c435f61d0eb334dc8367164a125aea45d9dd9508 commit 3f49f7591e7150c502aa8d04354941ec2394153f commit abf0ba5a34eae0d7359228f4319a6659676fbd0a commit 0f95ee9a0c579ebed0309657f6918673927189f2 commit 1556c3b4c7ed2c8f17f200d53897251fc68b7377 commit c0c87382c1a6985cd12a49a62a893361e5fd1b8f commit eb2983c09f4e053f2c3362763f5e1073b5e4cd7d commit 04770b082e2a207804c633fbfd5efec28cbc5673 commit d6346ae0779ef9a41562f5357ac28aa6a69b1c81 commit b8fec4400923eb91f995d7dbe97411b8991ea559 commit 651d4a0fc4c5c6a2d20c95ef814f0d4381f71d55 commit bf9719f8c89addcf1947ce2b29cea29ea9d8f875 commit 0256ea13d169e9ef00ef1b1c9df395b1d6bad6f6 commit 5c9016b2ddb375662aff802d25c96f5483a4e024 commit a50cc4955623685402ed6deeffad7df93591a416 commit 7a710a8bc909313951eb9252d8419924c771d7c2 commit d36bdd77b9e6aa7f5cb7b0f11ebbab8e5febf10b commit 8ee53c702f23d511b7f635a4eabbb85384149f8c commit e4a8864f74e9e9e4a7eb93952a4cfa35c165c930 commit 45c64ecf97ee370bbdbd8eed7aed9c8ff5d1b0dd commit 88436dec47a89d944e834e27d83a5dfd49d032cd commit f0978e92c2f7e9a38fa05d30a3e901d16a30698a commit 109406c92f971e739af04b278ef75dd0fee68a40 commit 781c336a6caa67c68fe3a25b108d1dc38b0e7cc0 commit df17ff62b626554c6048bf435a87c5fe1981e8a8 commit 3e29d3b318533ad031396a40322e0ae1aaece943 commit ac1b49be7fa8cddcc194ce66aa453e2b2cff5831 commit 319ff09312934b08b532e605042dd59f41b74458 commit c5dc92006d50fb55a916755206cbac1022373134 commit e7858254f9af9ad4f1570d781666e3af4c298a88 commit 3fe6c7f53eaa62e3700d8ae076e9c42a1d855242 commit 2ef6efa79fecd5e3457b324155d35524d95f2b6b commit d5929835080a60f9119d024fa42f315913942f76 commit 2b1333b80885b896807ffb6ccf4bc21d29aa65e0 commit 2c7676b6b1f57713f55e738f803ecaf91dfc399f commit 47fa33cc54615161ec5192389e55f3b95274f56f commit 6434cf630086eea2d091f122f5802582a05d9d1c commit b708b36afd5b5f32f7cd49b3bd4ab524698c3627 commit 93e163a9e0392aca7d720491100d810bfc3112b0 commit 1ec17c26bc06289d368e2523c0e95b5038c6eeb5 commit 96988a526c97cfbe6664e637640dca9406b0b928 commit 1039fb60463cfeb1fa39c6c48b5c3afcf5b89948 commit 3818715f62b42b5c0bcf456ded3f59ed3908cd6f commit e60c4354840b2fe8e1c4df3fdc5c17039824ff96 commit 89fc846675537f9f6ef62271e9d60556c873d65e commit 993a87917c2af59efb0ee1ce43c878ca8790ba1c commit 03e22ba090aa42dc029c25dbd58fa4b941c87ec3 commit 805245071240ae480503af29c7e31d2d7ff5c7f8 commit 255490f9150da7c6dabe468f3a877b92fd0f02c1 commit 720cf96d8fecde29b72e1101f8a567a0ce99594f commit 90bb087f66745ca48f6f5e43df99a1212d89e712 commit 7c1e1c5e0eb66bcbbedde92eb2bd988016cf2716 commit f16a716621a6edf4eef2ba1409594f5c780ea09b commit fb84efa28a48e30b87fa1122e8aab8016c7347cd commit 5e41b01a780893507a0508f16b9c4fa7f7a48557 commit 3fa214eea43a07c239bba54426399d7d175d0454 commit 47bef230225b8d295255d88e130edc0b45ddbaf0 commit c0398df2a195fa21122e566f54c1f78aad22ec47 commit a960e35ac0111b793dd07f3ce6dc3e1981f91679 commit db9b4ffbfa82201fd7e18f6e434469f3648a8bcb commit a64af136771a7c50818fdc23ad4ce140ed7b66c8 commit 15b9ca1641f0c3cd74885280331e9172c62a125e commit 841d742f094e00e514627bde65d7822e98fb3e4c commit 2327b13d6c4758926e57b5b6c3094302ae3b5e9b commit 3b5765df375c90d46316822131acdd5cfb1c5869 commit f5aa7d46b0eec280ac022664f3e8b6bc9f4ee099 commit fc98eb494c4be6aed076c1ad21d46d5950415ca0 commit e1b7234b4a3f5fa716a84b081cd0d0245674f761 commit e21c3adc6fba27a5dfe3fa5e83d947ad56cb27ee commit 87a3451e346be3f9a5d8943ae094888044314631 commit 7c021558929f7c80ed07e83a91d0905c31e8cd9a commit 4ed49c954e35559cb4a34ba049a15f54ec7fccf6 commit bb4f196b47b6554ba89f02ec60246f0c643a4bf8 commit e751e4be1eec4d427d91583f31ce56ccb5286a27 commit b3e73cbf17a95a85e3a943d7500e9e477d6ab9c3 commit 1f43b8903f3aae4a26a603c36f6d5dd25d6edb51 commit f7ba887f606b1895dabf718547cf7397924f0d3a commit 6626c5a4ea2ef1bba3e02f75f797523e168fe28e commit 8748de873fedf4d55bdd99bbb738ee7ddf329792 commit 51c45e450fc8529495bc85c2d8e309816cdcf959 commit 1320d6c7b0deb7219701a55397e93e6c73d00366 commit 262236b4f5a7d2fe31ed31d34669a9ea4f1c3272 commit 0081bc072837b66587904e6988aea1e0845b0294 commit 5d763a9955f0fbf2681a2f1fa87c416056bd0c89 commit 4dd905fd9429626937107ca13770aa836c8a7e6e commit 10a36226157035e84aaa58e1699a32b3de2755af commit 052eaf6af846e59073a842e9b9517ba9d3f76d4a commit 84a8b3908285d007db49532fd4b51d4b183d1242 commit 4d31819a3746b1f33a915546a4b1aa19374d1544 commit ec457f8378901d673b841e81d289b0165286db7f commit f04d275d94e164d24516c32437c988a323018f63 commit 06f2f7772dc7ff2e3734e654cb2d0b588076860d commit 3ab55e3a1ebc22c1e0b7c72261a8c9fe78a3a09a commit 4b33b5ffcf68de3a43e7dddc91c5dc86e6ed8587 commit f173fbe5b042e1c87593e3b06e85cae0094dd867 commit 98dd398aa3e021896adb7f2b1d0f6b2d3784610c commit f18368b686a86477a79bc240a3a1c655d88a2348 commit 95133f41b090b09ba9163b4469cda1d5ee230cd3 commit 2b96b036a6a5767b84f87edc2c0a1c70c91ebac0 commit 6bad8e4a0ec8a950d10d91cb1846f3ef3e1f4ae0 commit a3e731260b9325e2e87baf54f07619c6cb83931b commit 0bbd1c7de319ca5a08359e5fc901a0317bf5c0d6 commit 20cb72174ddcc86596286784416adb947195e45c commit 990cad0e4a9df4202cd482c192608caf6408e4b3 commit a30e8c13e7affd6fe379c6bf213133b0f917d1bf commit 074efb5cadcb3c9e40d536a730318bfab3384cad commit 04e6931a76e592e66e1014ffe4d13303ccac5d8b commit a3a885878e74d3d81e4742f8dd84faa27c8863ad commit 32e8ab05ed81c995b92f12b590c12ef951ca1129 commit 3e838f7ccf64b0e33a2f6d1c66158cc5ab04c86f commit aeb73c608c5b7fa6fad6d98694323e7629e93cce commit 2d7a1ef85d013699ef60068a9f37ab56ffb33c32 commit 2b2db1f9dbfbc61116fec83a51d16fd0cf49b61b commit dc597268225b2e39bca0bc0c5394e3e6266be2e3 commit 43af2220b3302bc04d72bdf07970ebc0fc46155b commit 83a3439ddb28e15afa66f52650cf3c1486ae6515 commit efb4fd107cfd9748f777a4e9015d803d3c9db68b commit cb4b7a23ff85740ed9e0a3aa4c3c0195654a89d5 commit 163d4cd26a18db7db68a98b4d1ca95d542ca72af commit fd6ae969cfa2b12c6082eb83bdfa648b15d9b3c7 commit c85c623ab406188da7969180e53c4b61e8a982e0 commit eec53143b7fe1ccaace434e03b5959c9117bf9c5 commit 14d6a086f6b91238873d3363f840a91b3aa062de commit 7482a65664c16cc88eb84d2b545a1fed887378a1 commit 7cd6bb82ad96fda0021421fed8750a522dff2aa0 commit dc6934d5ae007ad53c88c3e0b9685160a39ba896 commit 62a4ddcb79e073465f21c5cf84d80a2f22820c39 commit afd5cb3907eaf43e4ca88c162b92143551f0323e commit d976521a995a817007ae3f471ac22b93b1bd39f7 commit 0dc987b699ce4266450d407d6d79d41eab88c5d0 commit 009a3a52791f31c57d755a73f6bc66fbdd8bd76c commit f4f9b827d76d2fa23c2a2359b4e9fb417deec61a commit ab8529b0cdb271d9b222cbbddb2641f3fca5df8f commit 543faf57ee0ef6feb1ef60122c0abb9097083ded commit ceb180361e3851007547c55035cd1de03f108f75 commit f12d07d6e9f22bbe65d158de1435ec515acfb50a commit 64e06652e348f0725368853688d3c15784549fd2 commit 9ce07d94c9f80e1b33f5f6bc2c5a27f6cc56a6dc commit e0a9f1fe206a66c3507ff8b7da56f9d1d1dbb9c4 commit 7ac20b3a6a6bf1181a6f9d76c4d36b2395ae8922 commit 876271118aa41097d035c84f99648746b4a125f3 commit 373269ae6f90bbbe945abde4c0811a991a27901a commit 421f5410965dbc65b7bf7d2b2323203920ad370c commit 3d313f09f31490cec9d5251b59adeb6542c944cc commit fa3dab48defe1ae2f5a5fb56df5f5931fb3e45c8 commit 508f748b03949143ccda614b900e3f7d842251e5 commit ff83e6e7ab042e1f6f4345be1837d08c41b0a49d commit e77a541f5dea0a2ff9d6a40dcda9b284e1e736fe commit a957995618a8afe3efa2b5746c0a954bbd450882 commit 10a9035c36d00586ad4bdb838f8800be951db8d2 commit 50ef0cacc43c5b01d5d1d65f08af33513b07e2c7 commit f64e6e0b6afe047cb0d34a5369597fe0d188e94d commit 5027605aedec363b3209c17d382efe5e29211594 commit 7fc494f9cf8ec7497d4aab26a3b19deceab0fe31 commit 366e817e83e4d795fe3f6e7379bfe79d49cac89b commit 805ada63ba0567b15d10d40419bcc5e6f0b461e6 commit 232b95ba4e83ca0a77f19fc772ccc6581051e5cc commit 5e8034364c22050b8564060e79947d094a65d45e commit d54cda74a9a27d6a18c6b670f7299114272a5e50 commit f9bbc1c8449a51a049a1d6d436eb973b00b6cd7a commit d3a453416270f5c7f1bf409597d702a2230e5a6c commit e9fcc60ddd29994a8b2a276ee9b454d7cd449194 commit 803481d869a4c49337c9ae40197c668e365a6fcd commit 8c56d5105747189c86e6df975257580acb2dd223 commit d9e74da2f1fc42926c6ace1bc47a700f88ada696 commit c974f755372bceda2c3cdc31b4b27dd772172203 commit 91c2cbf9b6a6779ee428955fb202ae66c750aaaf commit db475c11cd592d626749c9ccd98f12c05f29ed88 commit 103f06fd478106fbc2394030599db5c852b7fa32 commit 9126ef85f2b8654060929c5b6a876376702d1017 commit 25ba9429e0f40d3b725781e70d2d6b9ce47a0df4 commit 831463667b5f4f1e5bce9c3b94e9e794d2bc8923 commit 2a9e9daf75231c2f577209af5ec62aecdf7ca7af commit b00de0e237da32793dce221119c3120b8276f4ec commit e5d6eeead88e40282cb6dff38f8effd6341561b1 commit 5171660cbb14f3359e8a8bf7523afb0789fe1bcd commit 7283f862bd991c8657e9bf1c02db772fcf018f13 commit ae25885bdf59fde40726863c57fd20e4a0642183 commit d6b9af1097fefa7e6509a4b2f03af45f9eaddae9 commit dc2cdd17d1fe25c8d25c306a90cfc9ff17a7ca4f commit 016a14beac6d407c9a51f0b92d1e586a00bfc345 commit 138c2fca6f408f397ea8fbbbf33203f244d96e01 commit 84509eede6203bc5ab43ce0361a6ae17e2a17152 commit 8f456104915f0f991a2ce059a640b0a6f807e2cd commit 8524bb67145d8a2b495fabcd4b5643010ea43353 commit 7d8097073caa334ed6187a964645335324231e01 commit 3cdcdc34f35eb4616f7e5954cbdcd3390da8eae4 commit 04155815dbb8320ecd17dd54e85c9a5ae5d63bb9 commit 12d74553726675b5c991251f349422a24c575e56 commit c92df6aa397b5a37cf06004a219b4fdf26234dd6 commit 5ba584ec1101cd63081ba7c228849acef962f6b9 commit d5a680548eddca0e2e01fb84b85c1f7687355e21 commit 2e25ae522164e8586520ef20bddbb41c97b0057a commit e97f91e8d39f8f5cff071d847c2d192904e35d0b commit 95be40c875fc848d99f231e77b341e7ab5d8125d commit f7fb92cd2e39357f14846d69ae0e1d8692371f82 commit 46a3b1125308f8f90a065eeecfafd2a96b01a36c commit 7307e91bfcd0e3f123aab01b30557f93923b6d73 commit bcb9aa45d5a0e11ef91245330c53cde214d15e8d commit 59bcdb564b3bac3e86cc274e5dec05d4647ce47f commit 0667429ce68e0b08f9f1fec8fd0b1f57228f605e commit 58eaa6b3fb636072a4f19e6b6c76bbf564e95b95 commit c83375699fc648f94787d00bc615e370cf8f5fa2 commit 9569ff1a188fe48b46eb1ac2ae4543c271e0d4c2 commit 882d90310f04f3f90753653b8787fb4d309fbbdf commit 01cf387b1c7f60527c91627528370f463bcb84f3 commit d7f0c8aff01340c2bed48f1e712a7f17c31b3db9 commit 1d3182006cf6eea26d0cd752f8042c3cae43139b commit ca0cb8959f7b84742c3dd612f5b044788cddfcc7 commit fe4e9ff9873758ad07e6f7b3088ae3a9dd3ff1b3 commit 5c4904ac34b76eb58abc15a52603ee59bf8be85d commit dd70748eda3f63217d5284f48651239a9721245e commit 9e225fb9e636b31b97e9d35324c2f9e43ee0aab4 commit 45ecaea738830b9d521c93520c8f201359dcbd95 commit 9ae55f030dc523fc4dc6069557e4a887ea815453 commit 1c4dae3e4639540fb567e570cc56a3c292afb6fe commit 8c07f33ea096a1d25fcefa4e904ce50aa2358876 commit 94dfc73e7cf4a31da66b8843f0b9283ddd6b8381 commit 8587f3732b37a39de205d8c42f5448dbe6aa6b55 commit 1796c0255bae9d3d4528b8b3916182b2bc4e1e71 commit 50ca65b44e50e66e370f34e83a1d04a41bbffb70 commit 5bdaaf4fbf85d47d08f76f41108d8d3bbdf15f1c commit 9db35bb349a0ef32184ab68f79cc36026be4585d commit a06968563775181690125091f470a8655742dcbf commit 79398d24da4c9294285bdedf67018ff09fe97bdc commit 0b58162e1207db5052d1fadd5a16eeb90720d765 commit d193b12b2fa6dc316e3ee8871b4ec05992bcb7b1 commit 7bb97c5a39ecebc8ff5db1491fe4e7a8129f93d5 commit 70f1fcbc83582419fd753701c5abe674e05db785 commit 01752681f1ee5febc9dd2da23f5dc0289ea125a6 commit 2639d3e44f9c15b3f29f79943ed58f769faeaef2 commit 46d44516aa6e142fd70287e829e3bbad0d2ed35b commit 7268f0a9e842c52fa73b9f5afc1bebcf9f7d48b7 commit ff15cea338d2c78e0086d55c8a9dd637a5dd3ccc commit c5cb2cdf23ceefd9ef319d6c0d6ac294dfe356b6 commit 5f278dbd540b7548bc5193552e6d478255c14c2d commit 6fb5ee7cec06266a29f25ecc01a23b9d107f64e1 commit 6e9c65f71eddef88f14b7210bbf30e6ce2409b87 commit 02b16fbc56e97b295239c83e43f186c191e42dd3 commit a819451eda6df8f8445f9c7b093b86c4d1919b62 commit f999b37eefd7f1d59bece1d94fa0dbee2f2d62d6 commit 6aa145bc943d34bf05f2bc24ea3aa36d70470f1d commit b71c0aaab9ef1054155a075cf5e8a1db7b37ca5f commit 964893d3caff6bc39f6cf5cb7d90fd78a810c535 commit 3d1ab66e043f2a143e4d93242de7710a9c98c829 commit 89f4b4c53a7c12d2feec0ecaa15b0493b2bd61e6 commit 18e3c1d5d4cf6bd30cf1f1bc10ffac7a05a6719d commit b1dee9527e654207c0980023fadabdd12d3dba80 commit e61f294c7e8da94bb1c9d66f2cdcebfa2dc535a2 commit 0f36d074aeb51a20508a65861d1518dbc231a1fc commit 87a7d5350c67aca513dc0a80f696d5583430d594 commit 3019a8d7c1891ceea55820ee0f7bb36192181aa4 commit 90d5fd317c745a80019ed7f12a1933ce6116e0e4 commit 6a4a1f6054318cd3590562668798304b4351ef36 commit cff35798fad565b5f8bbf4ef84ac698270dcaf64 commit 7d4705b33cb84bfbba04de153d4f5e83041ac393 commit adc0e6ab0df390907228abb76c6bf82382089af1 commit cf6067290034b9ebbe4c39733b1a4acc94876c26 commit 395ece6f14124c2245e4b7fe74932514f999faa1 commit d7cfea332cca483ccd3970ed4de73ed892643e51 commit 163a5a58437062ce4dbef2aab6de4d784043bcf5 commit e0f1e65b836c42741288a367eab565167a408b59 commit acac270d09828edda2d530d255ee75ceb87583ec commit c7f21978fa6aafaf7ad37155c7d3a217dc3d16b0 commit 46ae2af9a8aa168cbad69f21bb1426771339ac9a commit 414e9f520e897818302a6b1729aa2dad8cc928ca commit 3db7f894549a54dd6f8dfb7fe213ede83249bb94 commit 971e4a9781742aaad1587e25fd5582b2dd595ef8 commit 0d8928a94ba18205cc7b41793af333e6731e9d76 commit 071ebbb0d4826ce7c47953b955a522f503dcedfb commit 202804b9705ce26788c443a54aec47eae20f4596 commit 780f97cec866e1ec6967c66c2a1f68b8aa1e3f23 commit c5da61cf5bab30059f22ea368702c445ee87171a commit f929217499cf54a30be995aae65e9951ba079c90 commit c6a3d73592ae20f2f6306f823aa5121c83c88223 commit 3f4309cbdc8496373875cfce67d7b5dba87c3ccb commit 141f733bb3abb000d3949c3b2f119751fe93b0c0 commit be4e366602303615cecb7636075bb18b0d3cc33d commit 1dbd07e088673dbf0e10f4bcfa17f971fd870195 commit 525e93f6317a08a03cc42847b3e075c92a382c99 commit d42a738e5ae5a73212a83414648a4fae524117f3 commit 71b1669ea9bd962d419aac41bc179e09e504327f commit 938d2fd17d173d0489b1bc96b87a1dd93954dc28 commit 11f01dcf3b32d01982d99df4492feef4332cf0b3 commit bfe53be268afd2248d1e28b4520361693c1c0fce commit efeb3caf4341357a7f4745c0da643b13200f0b9f commit eb1c535f0d69e3ec7679d4d714bb2a9765ceda69 commit 5cd561688b3e8a248fdbb37a1b10801b06736865 commit 3b05c960788439dbb47d0e62335f23869696b079 commit 8618b8489ba6ecc025be033d0fa87c0db53f5211 commit a913bde810fc464da6f12f3f19f3483034cc7e16 commit 3461b040a90d723c93c9d1c7c11e3464f5cadc0e commit 170a41e9bc07618d164f11b5154b449e9c24973b commit a6cc3c72aa0e8fb10b695c1a0c4ef07a66b3c2b0 commit e33c267ab70de4249d22d7eab1cc7d68a889bac2 commit 1926a6b75954fc1a8b44d10bd0c67db957b78cf7 commit 21779cc21c732c5eff8ea1624be6590450baa30f commit 1981c35bf7533d70f295b184bbb638d280fe2f36 commit 207d2073c648614dabcb06863d990f0c2a32c4e9 commit 73289afe03619bac585b69f563d0bb9a52e67722 commit 72bd9ea389c70ac948f48d20c0e4ae70c0153940 commit a204f9743b6808ca658c1bacedb34bf4c7e6f800 commit cfb979f71736361ec564d47d0a41f07e09983e32 commit 4bdb9d6501763e83bacbf26846754c567773a1fb commit cbe07c982dbd206defa10ba539e046767179edb3 commit 26093ce14b75bb0c4f0088abf2e11c351abc18c3 commit e0e146d5567317d6ba7d0169bed55d1d9ea05a61 commit e72f03f4bdc4f3a251343cf343bce28c28cbac2a commit 85f4bc0c333ceed24cbc9f69a2a77fab1ae3d4d1 commit 90f33674a0756a6f0907b8f6350cec3f7be4032c commit 64a30aaf0b0d9dcd52af526652937c1350a948dc commit 88ef4c5bb36bf60b317b74d8652c7766c9272a7e commit 2b2b3a751b29a09942a15bc0c4fed940b7ce1857 commit 740ccea3d36732346387ce882c50a7e4c3599316 commit 15360d7fc35b6b0f46240659a129c9255345a41d commit 7e053bab30e3a97bb681cec207a87413a024fc22 commit bbb6e5ae7ccfed7be06b5e8f99602100d4251d5f commit 00fa7f031dd4b885175da390e24cb02f6a45977e commit 48e03843f99857a561f25fb8e583c9a7dee5b81f commit a5eeb70de411ef8b1cf5d97806ed6769b84be872 commit 97ca308925a50aa80711ccfaf814fa3898374862 commit 82a562ab5f0a918ef905c29c759b4f0c788754d3 commit e73b386e75586f28b9b58641938ae0feb340bca0 commit 6366b00346c0fe8ae95d91eed3dd2d04f77729e7 commit 0147064588253b9c07766bd6292a6159475c2790 commit fff7eb56b376cadc58af14df286009086cc4d80f commit b3859b16d27fa58f99ad6221ea427dac7d751e70 commit 7c50a3e99a2eab5b3a9f273ea9e40ce919a3a3e2 commit bc19909f19fdc8253d720d11c948935786fbfa08 commit 0c7ea6f824345ffbb3b4ef880c7c56170365bc1e commit 1daf740137275aa56858ea1cd194eb3c1f6da5a0 commit 22676bc500c27d987a0b42cbe162aebf783f1c38 commit 8a077d9caa3a274de36ee2fe7b608041f5690343 commit 4984dcdc1f78529a0c699c1931971b7bc5e32a04 commit f64f3a72835fc63069a87c2811b61c9a73033c72 commit e9a7d236eaaeb1cdfe20e583e2e1899b26d7469c commit 9a714dcf1039d1142a1c3ad81db09d2706230e00 commit 8bc3812d0b33c214c365fff5dfb65397ad6aaf19 commit c1127df9515ca781940927deffc5ae657ed73a5f commit 09de5cd2c170b19e04e37439a712da52a0535015 commit 3b779044c81754f094ee88afe431d839e3a74aa0 commit b278b738c3be4f383796d09ef8fb6e49fee2091f commit 7acd7ab0297a37e44df928378f53d4260b25fd2b commit 427a60c1c30e1c0e9d0800a63df51985aaf3a26a commit 81990c3c07905af1e316f048a1ff456b2be224ad commit 068ab0cdc1a97628f7007b568adadc2a1fb08384 commit a00a3cef25a969bef8cce011c34b76071756dd05 commit 3e211f23aa1e1a3223edb64c4bc25cae28a1e3ae commit c3c483391bb23e9bb8d8a51e54fefcf508b1cce3 commit edadd6fc28b24dd5806dafc4b38633494ff423e6 commit eb08accdd8d966e4027f8ba52f43faffa3e6dcbd commit 61e419f651a65ebe01658b46bfc317896cac0eda commit fd3bc691fc7b4e553f49bc79f86b515ce2638141 commit 2e02ceb73ff87193618a21c2fe165632f52b9b9d commit 89e2b4373ae5215f5c5d1b7726549950daa77018 commit fc25fd602b1e101a45650475a8d2f00d7bb8e971 commit e660916b7f4dd3f17e5f28707213b66c1553d83b commit aa1965973cc734bd61294b675ac9763cddcac0ed commit dfb02eb6bdf84697dbadd69a7df12db612ce4ed0 commit a57e7345cac12ccdf883f9825523470850166635 commit 47a4fb46797016228198e63a7aa679841f80889c commit 90f5514bcc1a40de3391da552984717fb83b16f8 commit 819da60d77c9f0ec9f069cb27952501562a2e17a commit d8b599bf625d1d818fdbb322a272fd2a5ea32e38 commit ca1dc50fd5cfd7420faa46183f84bc203fae156a commit f24d1d45084155c59a135506a37bc4db10703fe6 commit 3d9c653cf635849d0c24a1ab17c2752a19f4ded8 commit b94a1a207de5e06a55b5a8259073fd8d1637f093 commit 027c38b4121e7d9ae43b2fa21b35582d1aef2a05 commit fce7bf30d3309ea325a7ec452456f8f7c079f622 commit 7d261c50d9c1adb70f6ac2e26edbc64c774c21ca commit 371409df9236bd1abedc143e76fdd7080cba3ba3 commit 1f374171fd345aaad9fcb30ac3acd255b5cd2076 commit f72fc9bd226979c272d6f829a3c60c3d9e8dc969 commit b83c9e3dd5b5dabc507e79c3f03e700a20b2a4ee commit 30ef0808e61850ec9dd105fe0a21f7f9a7c69324 commit 34ce1a6a29db41d5d4bffbab0872b1e1876cb4b8 commit 75072128d704576c39b3ec36b2cb84af316d88d2 commit 9da2902609f7519c48eda84f953f72fee53f2b71 commit cc3cb791f19ad0c4f951f38c98aa513b042ab329 commit 11d526f1972f486aa222fdfba751d2f0249c002a commit bdd0d7e290e0e4c8f7545fff89770abbd22bd51a commit 8c96e566d95aaad910a54aa0b21b7753eb615a00 commit 2fec539112e89255b6a47f566e21d99937fada7b commit ca437b45ac6d4baac348303920dae0fdee68e937 commit c59d73d43fce92e79eddc047e1961054f1284384 commit 9a92732f040ae3aeac017d0e80501cad1127a13d commit dbeb232726871352fc3e688ff5b02897f8cb0dc7 commit bcf9b296627c6b832abd388b5364262853430262 commit 7835303982d11ed700ce6bc530303272bfa8562f commit 5531786537e4fcd82a221b0bd01ce375942b3854 commit 9a23fcf79dc647627b3780284a156cc6e7bbd7c4 commit c028d66e6ec471fc24f70204768f43594a6a8b4a commit 872642edaf4228040473349ae0ee872264fa67f7 commit 35ba8850b673050b71b17c1421079031f4fda319 commit bc99f1209f19fefa3ee11e77464ccfae541f4291 commit 344feb7ccf764756937cfd74fa4ac5caba069c99 commit 6db5e0c8692e590734a7ec7455365d9cbaa15ef1 commit b45b4f880fb660c4bd4794a2ca3950c4570e12c6 commit 737dad0b5d609f464cae73292de646d3d016ec73 commit 88c775bbebc9c5b080d3cbbdef73a31eaead9e5b commit b7580e669ca0d624b122455058aa6fe62c0fef44 commit ac9257f0f50871b7459dac48a5c11bc7b2094245 commit 636774860a6240dcb148f9a08d333a697f3c74f3 commit 14eb72ff580de169212bfc5222499febd312a252 commit 8a076bbcc1278c6256c57915bc193890a6432c6d commit 90bb21cb692ead906738d314f3dcdc432aaee015 commit 149f6d1a6035a7aa6595ac6eeb9c8f566b2103cd commit 9dfc3ee1b0f22d9415c9b7c316447d47d4a702d1 commit 922e7ee31defe461d8638f1277f0c8215c0707e6 commit e2facd575fdf13b718f6c833ed546467a3e6e3ba commit 59a1e9ed1b406b1ae7cbbc612ce00d459987d028 commit 80fb575678b488b920cd9100939b60d480101907 commit 50e8ca0b675add8eb0e95938448a4a0f9fb0b6dd commit 33da97894758737895e90c909f16786052680ef4 commit 1ea7fe77c0db843d8e5f96ff8535dfc941e88694 commit c877bed82e1017c102c137d432933ccbba92c119 commit e23a5e14aa278858c2e3d81ec34e83aa9a4177c5 commit d9e019bb396fc9448b104a6f4cdb7acf8af02854 commit 911dd554a129081f056417a30054f24ef6818e3d commit c4feba47aad55aca90d9a2b104c0345ca6f93712 commit 61c1f340bc809a1ca1e3c8794207a91cde1a7c78 commit 4ddf8d7dedb881c6638850f1b74ff1f9967c89b7 commit 6d7291843ec5008a9ff1c011d342679fa9bfe4b9 commit 0196cc65f91710e30d45cea78d75fd616d705002 commit 66ff4e4ed471fdfa9ae4c49a0abcf5d5043ca65e commit 097d56cdcd77639bce7e205adaa22b6f5e7d93a6 commit 40184ece92ebc5adfdba84554bffb60ef0e37029 commit 7ba01b504c16ae64a8faa5f5ee9a809d424cdf0e commit ea0b20d3bd96f9ce2a1e9d886175411c05dcb179 commit 89ed996b888faaf11c69bb4cbc19f21475c9050e commit 9306b2b2dfce6931241ef804783692cee526599c commit 57b9f3384c64e37bbdad7f127625ac3733d11e5c commit 017860c909b03fa687d29a1ca46390ba9a007b2a commit c4e85551198ea894ac29da1a81becfde65c11f78 commit 236124d1167bcc539432b4f6fc19ce1fa015e2ad commit a84e43b81e45b3da19e51e1e9426ba9e4d0fd1bc commit c0ff84cb58faff9fdb8d955c6e1e07fd75d88c16 commit 58e969b60db0f5ca9abf0a8df28086efd601f38c commit f1549c09c520877be211d483d3c6f4e7f77d2588 commit 0fe6906203d02d050e86b3398219df7bd9e8fe47 commit b7320117b3d36fd6fe542bdac5f7af0a83bea23a commit 2d7a1f71837c0922645143cc270b5a4834595544 commit 86ef6eae0820aa5393983c38c1c5ff9510ca9118 commit af019bef6d6fda044c8db232c97d6be2fb64c741 commit 1f969d28cdbf99c28eb08ef0a0017713d6909347 commit 78486da8ceb2d5d833a69fd695bb9f5a941b73f6 commit 3d4de925356177dad0fb5869d1ea537cfa033009 commit 15c735e7990fdabb466a3341b6b2dfefd987127e commit 76611a84f235126f3258fbe4a25d85ab326ad6bd commit e5028e9fd3bc7c6b916568e5218f5fca5f0d0a75 commit 2a93292fb7860b51550d1222c151de1a9fdc15da commit 652284d6db17f3c7810495fda059efdd84b61fde commit ff613f7ba7105b17dbf251ca298d1de9124a9875 commit 0a94608f0f7de9b1135ffea3546afe68eafef57f commit 84900aeecefb281964c0ba23111be4809477124e commit cb50813998b5aed924323b1b46471e8c60b26692 commit 1e866f1fe528bc0158cdcd589053753032bdb52c commit 3fb0fdd7758d3b850db82899f532dc71f6909c02 commit 43195162fbf54b2cc35efe295d2ed072d2bd4048 commit a0d10c437c1c9859d24a16b90abf85120603b4ff commit a5e4a53818ad585416a214b894fdf568443d5293 commit a91d1a17cd341548fd9535e33c331a2756acdfae commit 17cd10a44a8962860ff4ba351b2a290e752dbbde commit f5ba14043621f4afdf3ad5f92ee2d8dbebbe4340 commit cc79950bf0904f58e651747c17987270f1931c29 commit 8955ff11f56e1596e9f80ff6fa8c48e53047654c commit 806b52287a96bf5812a6be008d24add3f18952cc commit d5c6909e74606870bb59b962200cf75eb25d6d0b commit 3cffeffe051a961417bc26f2053bced4cff83119 commit 41529d79ce1655bd7463c01d9813d0abb6fb08a4 commit 5439c41a80c00e993d18d1cd4407a6a82b35d963 commit ee7b62e127c8cc6db24f83e5e116357649f6e41f commit cc35e75273fcf4fb4f12f9d8fd979be7aa808041 commit e850f6b13a85b451411bb74a526bc08706129e8c commit b7be3ae759160aa3355ebeb0583f67fb9bda4dae commit 4fa05a67b558d2cb3acd2bb299b91220d405ca5e commit 7d09c7606346db9a48b62b4e02454a6b8f323043 commit ca0367ca5d9216644b41f86348d6661f8d9e32d8 commit 53c26181950ddc3c8ace3c0939c89e9c4d8deeb9 commit c96cfaf8fc02d4bb70727dfa7ce7841a3cff9be2 commit 60693e3a38903e39e4fac0a9849b698fc36228bd commit 891ce1c9623f36194587d02774ac3d8c30c3ca72 commit 3890f749c590a5a33f0034362be3304b69ae6d65 commit 6f2c8d5f16594a13295d153245e0bb8166db7ac9 commit 29a249d72d31cde3cd24d43354b40019efdb48b1 commit c9eb2d427c1c428e4f4e29f1e635b9a83236c015 commit 868941b14441282ba08761b770fc6cad69d5bdb7 commit c83dee9b639469b6563a281f39deb99311f16bc4 commit 0b15205c7325dc20b7da0068307670d222d66949 commit f6a3f66063ca39e7ee5fcee59e889c5ec4de9dc0 commit 75510fac07cdde23c9217c8299b6cd64c689fb2b commit e4b1edf48fa37cf4f5ca403e384731fe28d13691 commit 604d3a3f0dca0ef0ab0322f5e7af8c70c5ddb6d4 commit 748262eb400e809aa13e3485f4983c3db3d0ebb3 commit 49062ee374f7a47443dac7e255bd419861de5b43 commit 4c33e5179ff1a09cdfba38fa4fd260ae6735d3bb commit 912db6a58738e8be502838eb6a88f207ba356cd7 commit 98a90f1f0fdd112b85b16ef6ceee69f319ab9311 commit 958afce98c2c86732483458c03540d3c6ef45254 commit 3876a8b5e241081b2a519f848a65c00d8e6cd124 commit 606ee059f85a9aabb0242cbc72852572a3c40432 commit 133dc89c640f965c2736e70d8dec0699d763850d commit 2d04559e0660cf503d4e46cfbd7421d0b6156aa1 commit 50fe04d46aab77cf8fc3d48fbc38d872d181a849 commit f746556aa9724d740c44861db0ac005ae50e1332 commit 75a9ad8c1b7960794c16182fd90852918ecdc0a6 commit 9c913f38032e873758d1b13fce720a0c2cbbfcb7 commit 5877b7ddbc2502a7ddbc07970cf5c15972c22de4 commit a53bc32182d7a2a934ca994239396fba21161c8e commit 4528c18605654bea022d294c9ba2e93600d05a94 commit ce4b4657ff18925c315855aa290e93c5fa652d96 commit 5df79aeb6e0890d6f5fd6e12c7ad238a1617b210 commit 86bd6706c404ea703c11071d8b600d46bb98873c commit dc2b9c70ebca8e5661d33a15ed2b99d4510e90be commit 40835624efcde7f984cb859035b95b5a526d1a9f commit fb3e8ed0438347c63650850c011c99deb59d7e62 commit 615dc75fa6a7fc6cf029b01cdfc9d4b78919e71c commit 8a9899c95d1cd709d441960ca325c6c8184978bb commit 0bf95a1ebd48866ad1438454061782d4d47765f7 commit 044b5cb9e8bfe4f006546fd98148e95489a6e803 commit aec4706b0e70e0cab2d0650b63cf2ddc1b154352 commit c8a58ce18ca36b62749e326411176554462a5e2c commit 8b076fa7c5befd1d3e1d892ae466f5334e4c6c99 commit 25f7cde8bad9fe5943851d3d602e9fddb7977961 commit 5d945cbcd4b16a29d6470a80dfb19738f9a4319f commit cb6b81b21bd9cf09d72b7fe711be1b55001eb166 commit 417c1c1963549e9a48b83ada59d90258e38c6594 commit e8f90717ed3b58e81c480b3aa38e641c0da5a456 commit 2c9e8c01109fb65a63b6830adeb5d7c79ccf26d6 commit 473683a03495a5ed9c75a02c7497f32d6cf92c7a commit e6c64182ed946f1cb65799de9ee75f8bcc42b2c6 commit 074293dd9f61f11898f1f6e01f1560fd4c474025 commit a983d263186996002ecafc72f9a0dc5a3a2bfd6f commit 44b0c964201e1e2fbfcdab4472f9260048befbaa commit 557f9100c74cfa033488563240f567466613cefa commit d3e19f76121178420c3efc9688adfd5a448996e0 commit 4f5a17b221cc48d66cce13fe1531ca8fc99078b9 commit 1cccdfe21eb6b8dd4371378b4b61223eb37f1ef7 commit 54c3e9493cd502d63ff3643fa70b5f98b3201846 commit 869618c3440227f848ff9ac55aa64d523a60476e commit fbcc38811fcb47335899a3776b4fd5670db4e228 commit 4686177f7d2140cdd9d031702c2b53ac4c89340a commit 7b5b0d196c2e6cad87cb1e3ce285c7885f2bd796 commit 660f46e16c4b8a34978012a9f10a32a16db3e98f commit f3cd57e499e6904b7e356d11bd33d617341b3f24 commit 869b10ac8d2300327f554d83f4dbab041bf27d49 commit 4d37fd51b4440cf6a02942c0a169ee18a902fb5b commit c19a23fadd279f433424b4d6436fe4ab0020e20c commit 37edc99979b717312e60cf3463ab756f5a3d6de6 commit f4b4e41a2e05270cd90c5817ab514ace95555874 commit 26749aa8d1261bd6f2db9d019276d4277dde7df8 commit 041a11095abdd52b38f1ea1355357ecd2b66c0e2 commit af14e7c2fc9b60af70b410a7dace116eaa5e4e65 commit 465576ca481caa9cf18550652efdc6b103701c68 commit f7bacd97af853a9bba9bb8d1baa12f997e60122f commit 792a0cdde34d417bc2c8266d8015c5fd58d44a0d commit 8813381a62e1f1703f8fbeccc5fa4fcc988be882 commit ccc4200cfb2518fea042b16f090962b07314439b commit 25e751642a38204da189e0e239055702caeb461c commit 34a65beccdea16a12d862e94d004ccf00de8cb3b commit de0246ee9fc95f1072a0d26ec4025a3545f159b8 commit 25dfc8fab47fb0d7231154e07e20b5fc0221f96e commit 326f0672153e0ff5b19f0ff9d6b5f75a64a9c2b5 commit 42c7de9622b2ec64f7c15c336b75f8933ea7545c commit 2207efdd8388bd300a0051b1775705d890abd306 commit 44998fbdcdc39253cb10293c3c27dabc040ad7e8 commit 34a1b0f90e33b00b431d6e8636b787111c6c29d5 commit 8f5bb69dd453666ff949079443ebce24381e163c commit 4cef2269318cdf5beb70c257f7aaba267f2157ae commit 0339530d8879cbd560cd3d3de5138dc797744274 commit 5b4ee98713c7b42e270835fea08c3b6977b48e7e commit a4f8f294fe99a678ce0a50d649732440c41742b7 commit 4e14e0fc9f0e47d9d3d39b6f92724f2038ee6e25 commit f7907f6db81ca08f4f8bd9245b8fecd49bc82f6e commit 197485c695430ab03d9f4a96aab4d4f76787f7c9 commit 352b25a770712a954b1def1b8c6429b0825ee0b3 commit 9a1dadb6d33173427b6f6c89ab1ddd0eca636afb commit 39a6f3fe98ff03baab364acfec69a6f9803ce22c commit ca0273ab447853c014983951e2183991f8dbc7b9 commit 1a3408259bfd5a383b3c7aa7c309c9fb81e35ce0 commit ddd0fa1f47edd794736e70d165341a5c4ff78e47 commit 5085e0361f5a3675fc0d0919f7b69aded453ceb7 commit 77299956e8867a4cc19c5fd41b797c5152aad1dd commit 1c05d9e53d2cfad1f99d9087a8ad24da4ebc0905 commit 0593ad215359d51514c1e6c81ce28ea598efed6b commit 74097f9fd2f5ebdae04fcba59da345386415cbf3 commit 7acc487ab57e076c823b2b7559aa9e3997962ca2 commit bac4b41d917a1d999308bb1e779f8c3b39c19f67 commit c3b3f9ba25e6cbe59673505fbc5fff6c4cda0ef7 commit 3c3abac60117cfd09460980d9a14c253b37f7b00 commit 86e4863e67a9bd1e257f162f3d740ebb61206c91 commit 9dd4545f65679042273a93054ec3bb665ecf7366 commit 44abdd1646e1fbfb781972c0bffc90b4eb3e87b3 commit 34a255e67615995f729254307a0581c143e03752 commit 3616d49da5dab635c4bb0eeb183b61df72cd0757 commit 4c5aa594928f97593502a66d5a9075f5f5dd064b commit 8de297dc046c180651c0500f8611663ae1c3828a commit 44584b417a698bfaac0c2577e7cc4015ea7359ce commit 2ce0b2186c057a54a4d980b296bd1659d0091716 commit 319568d75f5f91cd4f362b26e65af2a4437c64bf commit a7cefb0b40dcfdafedc54a3ba659327d0336956d commit eb54e014367e1700fa5b94e4c788520081a70661 commit 4a21ab548a7ac19b15aba9aa8df39972ed82f4ad commit f46e3f28f89b893685ec9204405677dac410d8ad commit 72bb503097e79113503dc6d1d49c4063ef97970a commit ee4a26b4ea029aeed749c6560ed9eba224337b04 commit a4f1b04216023ff0f4cd89328b59ee6890248130 commit 6a7379f196230cfa35335ec627e0c0e08da6a8b8 commit 05674cc9ea97079ad7c819628e3e56b046c2f497 commit bdf4473394deffc94c16c0502e73f2daabbdc1d0 commit 40b31e5355ba8c4f7e58f1c458bbe46763dca541 commit cb849b4dc73d414149fea96330cdf96a82919fc9 commit 1c5a2fa97b91d37375f4fc8aeb37c9456c93c828 commit 0d60f2b47d8312d6a88454a373990579624edbde commit 5ade1b951dec63a81b23c2ff75c5b4c191977620 commit b5e924bd7cce823e604f9b7834fac846a910331c commit 1f5dcb7365e4e0a8a6fca44352218ccc6f41a8b9 commit 81f776b670a0eb17bf9cfbfd2df32f66a34bc453 commit 4074f96d0f2db2fcbd8e223aebe60ca445b8aeae commit e216431b63aef8b7d9cf6e59aea39582d48b1808 commit 6290ba4c1656ce2374996b2ed11c3997ebbc4af5 commit 493af96d61b1361a44d016057e0fc6e5d4c92fc7 commit ffccfdbab1056954fd400d2864a1c1b38915c143 commit 3facca7489be2d42c6256350dae72c342a47d7e5 commit b1babe8623f91a71a5acc34eb323c718e0413b74 commit c13423c63f73ee2f9807fdb2a3a7e647421a8114 commit d58715704c5c7d82d7194540780fb335ab337da0 commit 1b54a0121dba12af268fb75c413feabdb9f573d4 commit 7786fb366e598e984ee9307616b0c72979bd191c commit 412dfcf34e0695fa1714ad422b2a5d0ed1406437 commit 0407b33fadcd7a5d31ba3c473cef95b2b418d8c4 commit 92fba5d3c8f5b757c4e3fdc89afe76a8f6c4da68 commit 168c02994399f2714bc6c73f85b7ce4d827f97aa commit acbe9ecfb7fb14db868ddbeda8f43e623026316b commit 3517e6b6fee05b6259ca21741cbe5d7bf68aa672 commit 1c6aab75ece7c1d450e4561cb2263403eeb7ae2f commit 79c453af55d9f1e85b906211ea4051364d28dcb4 commit 9a4514fbffda6083d9f7fba4882142686783cfe4 commit 7bcf89eed48f3fba8d0e2c19236e7dc547b6e037 commit 889fcbe949bdd8470931a90b91f273ca18c510c1 commit 95983aea80038539ebc70e41e73e9bb4eabd1a92 commit 32dd9236698bcd2ffdb69954b167a851fd50182a commit a6fd8f936402c3bcc5ac6aed9cca8e73b5ca08f7 commit 1b255f1ccc883256e23db279ea164273ea0f7462 commit dfc4005f8c172eea359f9db08c3b2b0ff0153699 commit ee8b1ef9a6b089abf7a9c7d094b6e93fa05f15b9 commit 2bc7ea71a73747a77e7f83bc085b0d2393235410 commit aa316247c726d96f0bc205413c54ab49622ca737 commit 8585732baa40455fbae9575d0c8316f4b0cf68f5 commit 1f83db6be37c53f6d395a41ee2602e3280ee60c2 commit 79b2c54f19110235041d8f1250e3c3694047a902 commit 4959e609de1ed4199f33124a88a4c9ab95f5cd9a commit 5640cb8921c9aff1270557482237e06af00c388b commit 8b3120dfc192a4c61f73a0798755713ba2d3eb8a commit 3f5a3881f1e26aa5e3ae34e34e439edce291ef5a commit fcac1ac7f1e3fb877aad51c134ff2776bd24f9d6 commit ed63b7cf2d6ebc01a765be31630c3e4a64f7f095 commit 84e2fd649482435c3e12d9099784976ce8bea1e2 commit 203dc777865621b0c7f8f5b19ec18e572730278c commit 05381583a1d0c38cd2c4907ee93ec624250b8912 commit 980e09e8b74c26baa32f0d65d272ecb1401606c9 commit afb185008d40930895a7f7465a9661afeac0b84b commit e3b2bbb33e26d0a0327f878782632ec35cf96a72 commit 9ced2e492ba9436524a2beed27df730042cbcc3e commit fbad6c418e1e63a29c83e8b56a3636915406a9b7 commit 292956cfd9d38835f95021445525b35502837ff7 commit 64f857b5479a7ce2eaa56bef5f459da5542ad90d commit 931fa55b2fac18f226622a95e42bc968bb852cd8 commit 4557489e0370ac0e9f1f5f100f300e9278be0733 commit 1422ca01be6a816ec5a445a6fdce00342adcc5f8 commit 1be3188a6dda544dd4d78503eba5f5a77462b348 commit 66bd94debe4aca171bd0220de7af3feee6542d8a commit e3b0079be8f0a2ccb533f7e38757b27ab6b6018c commit 06ac561fb0edf868f7b292fb4a3c8ffbbb1e14bb commit f9af3c16bfe19d145cf0588afa06d7f1070cbe2d commit 3d2af401cf851be0bf2d4d89af6f120819b786a7 commit 0dc204bc3f199de0a0924f3d5f7c26295e5c012e commit b2065fb21d9a789b14f737ea90facedabadeb8a4 commit 53bd83dfff8618d4a1affa171288b895add40476 commit 7c8e4a257246399c4f1ff43a06fc53ec53423754 commit 2182cb7029e9c5cc4b63d1c5682f62ebb65cc952 commit 674b9e08a02903fef75beadca0df490348d8f560 commit e22ec18750be01298763b10f7056ec8edfbf064f commit 6fdd2077ec03f4b34d127a1713ca19248539d6e0 commit 736f7308d3e6201322142d98abe4e9af33a429f7 commit 4ac77cce84a4afa3b76fe7c763aa3e754cdac422 commit cbe93a234bcce489be319e678dbf167b7a5f915a commit 1c0a90364859c17d57a7f08d6209b73e7e1142cd commit 47231d5e396a94e869b877bb1a0dcd526d91ac6e commit 0da0def7705dff7ee938662ea06f90770cb6f9fc commit ed67f7292b99f5d3876fa02dd51a43f46986c61c commit 1f3dfde4fba4f4b7822c389b9c994089a4ab588b commit e1c42213f3f9b24200d4b60da806303dbeae5a4d commit 1ff186ff32997049a6d263031819517eab4e93aa commit c10100a416c16b598bf5155e759307b34dac0d7d commit dcfe584b00f1d6dcbeeb769b939f53a3c4f04143 commit b834fc94c102eef751ff741aa0d9b814d0a81af1 commit a16161a869d5633d7d9a825a2546b68953e3a6f0 commit 492af34c9f67ef864319d0db930c8518a04b1937 commit 2605e60c82604508f60dbf427b82cd48154d88ee commit 7e8a3ca972adfc89609718c931577a86c494967b commit 64f991590ff4410041a70ee7ec2db079bc953929 commit 541846502f4fe826cd7c16e4784695ac90736585 commit e05d5b9c5bbea80313d8f58c3a80a18839b25480 commit e2b542100719a93f8cdf6d90185410d38a57a4c1 commit f00654007fe1c154dafbdc1f5953c132e8c27c38 commit a782e866497217f22c5d9014cbb7be8549151376 commit b44f2fd87919b5ae6e1756d4c7ba2cbba22238e1 commit 54d91b55c7f3f9f2c86e0b6be4501433b32ddc89 commit c20ee5749a3f688d9bab83a3b09b75587153ff13 commit 798cd57cd5f871452461746032cf6ee50b0fd69a commit f0a892f599c46af673e47418c47c15e69a7b67f4 commit 6614a3c3164a5df2b54abb0b3559f51041cf705b commit a9cf69d0e7f2051cca1c08ed9b34fe79da951ee9 commit 668c3c237f5ddc2889879b08f26d2374231f3287 commit 1d239c1eb873c7d6c6cbc80d68330c939fd86136 commit 9cae5b3189eb9cd12a9c3f6e8afda2d81958640b commit 232d150fa15606e96c0e01e5c7a2d4e03f621787 commit db100e28fdf026a1fc10657c5170bb1e65663805 commit 180abeb2c5032704787151135b6a38c6b71295a6 commit e5a95c83ed1492c0f442b448b20c90c8faaf702b commit 59eda6ce824e95b98c45628fe6c0adb9130c6df2 commit 2826d447fbd60e6a05e53d5f918bceb8c04e315c commit 9d50bff40e3e366886ec37299fc317edf84be0c9 commit cf4b7387c0a842d64bdd7c353e6d3298174a7740 commit df4aaf015775221dde8a51ee09edb919981f091e commit 2939deac1fa220bc82b89235f146df1d9b52e876 commit 37bc31f0e7da4fbad4664e64d906ae7b9009e550 commit efcc970605a4e365151db247361bb013f5c84922 commit 0ee7cc803ae52b60f268fdf2eba79b9fc1162747 commit 968d40986f004b463f057fce612996556b753c9e commit 5822b8acb869caac72c3ddf149d463177aa28fd4 commit 41ead3e0cdc03d64b7da2dcb1fd70ebb7164228b commit c83b9d60299317a2c15550dd506c864cd01a3e5e commit f59966779deac642541c3f7d772a3bf5972727ed commit aec208eecfb833b05597bbc28696fb1ab62f732c commit 1ac354beecfd58e769fb5373d6b2ac87bce9e1e4 commit 4a0a2cf4c03ba49a4c2596c49c7daa719917d509 commit b2f6c73561fbccee404b441a5c2d0b4fefaae817 commit 0a83bb35d8a6ff3d18c2772afe616780c23293a6 commit 616699d77b3813c24bf46090e722da227bd56cbf commit 08ebadfcd8c8c1cc7a14a7581db8331147b85fbb commit 8df436d5ccdf7f441becb8e8156c8ca9c4276e8c commit fb1a140b7bd19c474a41fb2df8a845e8eba328fa commit 64234eabb8f38ac2bf77dd23140887d81acaabe2 commit 1ff77beac87682c22f99e5cf32614909c65b4a36 commit 89390c4982b77c159e3b8a0be4a04552ef0971a0 commit 4c3861f587400db00801810eb8034c7b480e21dd commit 67c79599eea167dd5e08314b8c26f2dfa717753a commit 0af167f92838f34e594e49a6c8cbaca45548e030 commit 2de09ce41f484cbcc65e518905dae73da67ad35c commit 0cd34ce82b0a9ce503d35a51bff47ba3b6715557 commit 9bd110ab06e93fd01938dedd8b6015940418f0fb commit 9c580e8f6cd6524d4e2c3490c440110526f7ddd6 commit 615fc50207fa27453ba7f5fa1abd60a01a498136 commit 0591183699fceeafb4c4141072d47775de83ecfb commit 86678d46272021c88638881c63d427dd10d665d6 commit dd07556324ece81f0d2be756508903d53e331e9e commit 6396679a1f2db0c63721b841f1a5617d6282a4b1 commit 89b008222c2bf21e50219725caed31590edfd9d1 commit f173c7405224002fc32b64cf1679c4d888c493eb commit 2051160546826cf312f15bde534038582b90f844 commit 764a1e6e0272f377f145fc84b547d61e12724233 commit 84ef99c728079dfd21d6bc70b4c3e4af20602b3c commit f0068dd0effd5972046b69b23f99c43251e82d0e commit b2a93490201300a749ad261b5c5d05cb50179c44 commit 30456ffa65469d1d2e5e1da05017e6728d24c11c commit 9f5171ce733a694bd0211952687704c7a5bf32b9 commit 8da536d5e114ad1da6028c7505f048ded2e421c6 commit 352e683b72e79dbd46cbde528eb91e228e88267a commit b7ffeb4a1b5bce1a7495636d21f1704bd7ff01d3 commit 4e64b529c5b04e7944b41de554ee686ecab00744 commit c4c10a68e82b8a03df234ee744acabcc648df270 commit bea9a56afbc4b5a41ea579b8b0dc5e189b439504 commit cb9c7ab1b3ddc2702379dd9639df0c2230453c2e commit dc0a096bcc1d659ae93f836099c6b0312d2ccaaf commit 5afb76522a0af0513b6dc01f84128a73206b051b commit 541d54e40f1672dea6514ad64d54d61ed952648e commit acc96ae0d12783e9781428b17e34fd662a904f0a commit a6250bdb6c4677ee77d699b338e077b900f94c0c commit ad2feebd71ff80532dff75756d1103f056358614 commit 2bba782002c5dab6ca8d608b778b386fb912adff commit 36fa1cb56ac5189c78dacbbb14d452d0c44b86c0 commit 7ce2aa6d7fe121e243e1c8a8093911fecdf1c88e commit 0e66978ebeb44f96ff4d26b2a83dc88a2bf887a6 commit e16c2b8250262bc0bc531299e2c30641cee14221 commit dca452041552a5a5a6aab3ebda32565fad003eb4 commit 0f761f5768b842fe483141bc59db5b4d66bcaf07 commit f1f63cbb705dc38826369496c6fc12c1b8db1324 commit 1b586595df6d04c27088ef348b8202204ce26d45 commit 0a2d922a5618377cdf8fa476351362733ef55342 commit 4bac1c846eff8042dd59ddecd0a43f3b9de5fd23 commit b4ddb27d1dc7349fc882dbb7702bd2628fe27af6 commit ea8793f214ce1e4db205390c0241955f7ff6f383 commit c02895577b834a6148f6d9d0006a6f196511cc79 commit c8007d362c0150aef34323702e7fa996fa0cfd8d commit 8172cebac588c3c5e238d02be30914fbbc5b1234 commit 73c49a624a8db1ec38b138741203d9d7c76eedd7 commit cede849e9e2755084798236735d045298f9d9979 commit adcd15dc47dadfb176a14fa74af5b0cb0f659f2d commit 7e4a77de08f655e159e6355bdfbea73be71fab88 commit 8e78c7c4fe29f7ab8f87634c5f4dedc66107e66b commit e48e6a131d34de54ce6852149e4c97c2208f45cc commit 7d50b92d588d1e7bdcf38f523200b7b113b46c14 commit fa0bbd3be91dd46f4e56e5cf1fb6e8c2837c649c commit 5a0918b4cb90a90fc8d8bfd9b0f81efe6651951f commit e0df49b3045180fdd23dc27193344a767cf68fe1 commit 84435d1d912140958213beda37c708ec3072b5e1 commit 04fb918bf421b299feaee1006e82921d7d381f18 commit 5c1943820156e9a120faba320a72578578a69ab8 commit c7dafdfa90f708b6e4630abf824ba388a3947400 commit 373008bfc9cdb0f050258947fa5a095f0657e1bc commit d83a348b172dd7f9f10f049b3fd7e44cf4d2ed8a commit e98459c06e3d45c2229b097f7b8cdd412357fa2f commit dd49c07f3ab67e8d7ae7b8231b88a746c668b4e8 commit 19f7b8334484d6b610c8eb527c3f56cb42bc8bf1 commit 31ec699ac5d8d17c4f696888708bb6b2567dfcd4 commit c65c71ae85095f94aae32d86aa78811318bf6a90 commit 5544a7b5a07480192eb5fd3536462faed2c21528 commit ca01eba4e5b6b50144a62d7704763c41b68a0de9 commit 1af9add1f1512b10d9ce44ec7137612bc81ff069 commit bf7f7efbe051a59e9d0710cd26ea05f7ebc411a2 commit 385bf5a856c196d5997ce4111a23df7e1b679c17 commit fbe43dcd1aad7dbcee1cffdbe6c3e1d62c85f76a commit e42dfa66d59240afbdd8d4b47b87486db39504aa commit de8341ee3ce7316883e836a2c4e9bf01ab651e0f commit bbca24d0a3c11193bafb9e174f89f52a379006e3 commit 085292c3d78015412b752ee1ca4c7725fd2bf2fc commit cf36ae3e5802716617b9e4d902a31048240396b0 commit 8ae4be56dd0c2b851e7edc0f1d5cd441f88481c0 commit 2ae6ab9d82cdd0f7381639ee31e31de45519df4c commit b1fb6b87ed55ced458b322ea10cf0d0ab151e01b commit ea2aa97ca37a9044ade001aef71dbc06318e8d44 commit 54cd4cde7c1edb869603073167cabab0b760fff6 commit 43ef9db423bdce1df504d4d10e25092d427f04e3 commit 9d705d7741ae70764f3d6d87e67fad3b5c30ffd0 commit f5994da72ba124a3d0463672fdfbec073e3bb72f commit c351938350ab9b5e978dede2c321da43de7eb70c commit 06671734881af2bcf7f453661b5f8616e32bb3fc commit 2035590f3d40f227eac453d0c36b5eae85c1cf08 commit f461950fdc374a3ada5a63c669d997de4600dffe commit 16b3d851c0146123507fe864fdd97411ded51147 commit 233f56745be446b289edac2ba8184c09365c005e commit b75ef35bb57791a5d675699ed4a40c870d1da12f commit 220e979bd906015b74eb485e16464ee5abbd3c9b commit 6b04ce966a738ecdd9294c9593e48513c0dc90aa commit 8d905254162965c8e6be697d82c7dbf5d08f574d commit de2228c04150df8632ad22ee490de2ed579f64e8 commit 607f41768a1ef9c7721866b00fbdeeea5359bc07 commit 13393f65b77445d8b0f99c7b605cc9ccc936586f commit 868e8e5156a1f8d92ca83fdbac6fd52798650792 commit 6067c82c576af13a6b1c892b42ac4a189aced8ee commit a3f7c10a269d5b77dd5822ade822643ced3057f0 commit ad3b0b99113783f697579c7b09285916019865ea commit 2037769f995e45d3a368fb74983954b3ed8da178 commit 16c01544e30a4b4cf5f3eaacf7a4c19a3622b597 commit 4e3464badbeebb3528c457aefe91413f8a9070b6 commit 00047c3d967d7ef8adf8bac3c3579294a3bc0bb1 commit da1acbb12b33cbc651d8a7e956d254f1acc5034f commit 894c9c540f8315007a4752320e2399bc2e0c46b7 commit ee8086dbc1585d9f4020a19447388246a5cff5c8 commit 61251b2cffea8c1811bbd2dbef175b65f64aaa86 commit b8983d42524f10ac6bf35bbce6a7cc8e45f61e04 commit 064d491f73464f5c9cf56ac24f55118f6f4c54c2 commit 100d0ae82b5c240a4dc17486698e67bf116bd598 commit 58091b4958008ef69899e5404f8f031c36b35fbf commit e79a7417072265a85a36775e4e0f798154d39808 commit 4595a25443447b9542b2a5ee7961eb290e94b496 commit e5e6886f4d7e34b6539abddb591d515271caa634 commit 875c6d2711f6c97e58c52288b4231f3072711d61 commit 2c4e19f873f4a389c2a557a84909cf4b78d3525a commit 51fbbe8a3f8b9dd128fa98f6ea36058dfa3f36de commit 458ec0c8f35963626ccd51c3d50b752de5f1b9d4 commit 919bef7a106ade2bda73681bbc2f3678198f44fc commit 0211c2a0ea600e25db3044daaeff4fe41c3ed6d9 commit c8fea9273fd1be308668496badfcbd55183e0dd3 commit 47e04eed84bb07cc5b54462752a4bc7286ab8197 commit 507fd7c400032b126747a5ae8cca2816d73f009a commit d1b4a51a4ca8954f30cf4671b25c4f8637c45600 commit 3c93603d9568c7c4b20ff1712ddc60e997d78df7 commit 3e834a17a22cb8e9169c0b018d1a2df126977db3 commit 6783e6bbc2457dbed351fb0d2477aa6060a7d32b commit 4fd7f14b56b2e727dd66a62e217e57015da4e9fd commit 94a82c9e3dffb88182a4ed0464dc0266ad0d7b45 commit 595091c6ba35ba48c1f8186116bbbae2b208dce6 commit d0629cea1f97acc5e8d95ca2a42ddc72ed4ffa3b commit d7e7546886eebf626569e38ff06d0a67b8b82757 commit b023053592646b1da9477b0b598f2cdd5d3f89d8 commit 2640174f4a139502f603f7bedf3a7011db714e1d commit b97e914552c3fcea71ce03f899e285f2178ec38b commit 6ffc967c36b42f864955cb2c5e8b3fded0baa918 commit f5b9c1ffabce5f4acbeabd3a03fd57b3970a13fe commit d6f84bab48745ea68814d596eb476a9c11ce76ae commit 7b471c32e4cbfdd7a673b79321f6a26abecbf33b commit 910ab9eee0f61a243126d70e932e1301b5437583 commit 39c84b8e929dbd4f63be7e04bf1a2bcd92b44177 commit a54569b1f9721be11ca5b2c8a8bb3c652ebf576c commit a71f3950c803cb18080746aaa8b66af122f32841 commit c1dd5d29aceed251daf98cacd22817f38f76f94b commit bfe632f6d0a1371784dd9a11fa5a9aa2dbf53bf1 commit c7943bb324e503baeeba3df2bc5ca8a377111bfa commit 8409fe92d88c332923130149fe209d1c882b286e commit d91c411c744b55e860fbafc9a499f4f22d64c762 commit edca5a2c373db61efa959307c13ed9156b1c14d9 commit e1cab970574c001d83e59ca8388c474a57a1afb6 commit 672d6ca758651f0ec12cd0d59787067a5bde1c96 commit 151e0e0fdb4d6365305598af3b9072d44e896ef0 commit 992db92b07736ec98432a97b61c37dfe7bd06dd9 commit bbcbd63231cbd1405ff8e987870b02abc6a4d669 commit cbfac7fa491651c57926c99edeb7495c6c1aeac2 commit ae0448bc88b7827babda73edfe587ccc222baccc commit d832db12af4a057582011a590f60f32853680dd4 commit aac4cec1ec45d72bd03eaf3fd772c5a609f5ed26 commit e3d3fd1cea22ada5a06284d7bbb6cd5794d8545a commit 8f7115c1923cd11146525f1615beb29018001964 commit 63e37a79f7bd939314997e29c2f5a9f0ef184281 commit b6f25c3b94f2aadbf5cbef954db4073614943d74 commit 235fdbc32d559db21e580f85035c59372704f09e commit b34c1d538951e1c3a6d5e585e4a95e78d8733064 commit 2edb79a5fb303dff577d6a0c7d571c3bab1d1455 commit 0785691f5711a8f210bb15a5177c2999ebd3702e commit 08b812985996924c0ccf79d54a31fc9757c0a6ca commit aee5ae7c8492eaca2be20d202887c9c716ffc86f commit d654f60898d56ffda461ef4ffd7bbe15159feb8d commit 8787f6fab41380189865f5751c0f15b0c298b923 commit e839a756012b6cad7a4eeb67b0598ac3f349f863 commit 7c6fb61a400bf3218c6504cb2d48858f98822c9d commit 6c20490663553cd7e07d8de8af482012329ab9d6 commit 66f99628eb24409cb8feb5061f78283c8b65f820 commit df2c6e0c95ca22db5d6bea7e8169841c95426f8d commit 36de13fdb04abef3ee03ade5129ab146de63983b commit 8c5708d3da37b8c7c3c22c7e945b9a76a7c9539b commit 86875d558b91cb46f43be112799c06ecce60ec1e commit 42ff33e63b83d0fd40985ccbb50ff54e320a3bd5 commit 58d97c99c99f4559072a5410ec0135271e24e95d commit 269aad0919c7aedffc18dcf46393a1bec457af0a commit f9c182056b8ff7402a46c39c34d5c91133fdf9a4 commit 18aefea7fc71759a2405bc65eae057ffda3c429c commit af2f2a256e048f1b83605eaae49948e4a6811ac1 commit ea45405d704e20826a899380c19ec163336f42ab commit 82c4018479fba63db8db7c7fbfd9e4afba95603a commit 0b15b1ec8b74bd5c9a4e4cbadab82c0657832799 commit 6acc6196a7320b3d2a391925c4c884fc07f0b3df commit 1bb8df66920a5549db2be92c23ab81fd06992e5d commit ceb756004a30239c3a50dc237313e234b667077e commit 3601d620f22e37740cf73f8278eabf9f2aa19eb7 commit d978c51f8d1f4314c84cf50291156862a4c34fc8 commit c4be0ac987f21e12e7ad23bc480e826d8c30de20 commit a3fef74b1d48d89d4d911fcd7c2630d0eb6a0012 commit 37934d4118e22bceb80141804391975078f31734 commit 21485d3da659b66c37d99071623af83ee1c6733d commit 41012d715d5d7b9751ae84b8fb255e404ac9c5d0 commit dc1d85cb790f2091eea074cee24a704b2d6c4a06 commit e3163bc8ffdfdb405e10530b140135b2ee487f89 commit a8671493d2074950553da3cf07d1be43185ef6c6 commit 0af4ed0c329ebb4cef95fda4fcdbfcdea0255442 commit 87d9862b25483242a30bf45420cd8e7e1872a4be commit 25100377a21ad40dae8be5a3ed361b87acec1479 commit 5763d7f29652f94bdfc9dab87888f79ba6bb6c34 commit a7c48a0ab87ae52c087d663e83e56b8225ac4cce commit 5415bec18c69d3aaa7d4e3b170c8b8c6bb24a823 commit d8a79c03054911c375a2252627a429c9bc4615b6 commit 5ce8f7444f8fbb5adee644590c0e4e1890ab004c commit d119888b09bd567e07c6b93a07f175df88857e02 commit 37a0bad677a76e51c5e9e53f5d9f8f4f3e77912f commit 88d4cea24049de0fa073462b24ab471ecd685d8a commit 16c6077f2eea3c8321782d2fb0a6790532cd8c03 commit b261509952bc19d1012cf732f853659be6ebc61e commit cb0eca01ad9756e853efec3301203c2b5b45aa9f commit 29956d0fded036a570bd8e7d4ea4b1a1730307d2 commit 52bb21499cf54fa65b56d97cd0d68579c90207dd commit 65fbfb02c2734cacffec5e3f492e1b4f1dabcf98 commit 056fb8cfbe213f6eb5e987a806583986a4ae8328 commit 72002056f771a025a2e6b4578aeb538799cb9ba2 commit 20c6168b3c8aadef7d2853c925d99eb546bd5e1c commit dcc2527df918edfe297c5074ccc1f05eae361ca6 commit f528fa3989c53d4cf2ee22d306eb1a96ed0010e6 commit 29a1c581a5d873046302aa22c4a05124c5faefab commit 193b6a1934cc2e258e463e94fe3e94382c0bf458 commit dd4bc65c5bdf17ce8e74f91bca5e41b368b0e32b commit 88bab90f7a8aef3732a57cf33bf0ae121de8c7af commit abbc7a3dafb91b9d4ec56b70ec9a7520f8e13334 commit faed5d0182480556cddb8343d9bad968387848f4 commit f525ed19437d376736bed64ee7bc4afee82f2ba9 commit 387df878fdcf63ce497109c4e1eb805a7df9043f commit 3b38b65ed076fa93f1b0d5fb97c55a9bf692cc49 commit da73a94fa282f78d485bd0aab36c8ac15b6f792c commit 6dd1de12e1243f2013e4fabf31e99e63b1a860d0 commit 051ad2788d35ca07aec8402542e5d38429f2426a commit cc62d98bd56d45de4531844ca23913a15136c05b commit 6ef7d362123ecb5bf6d163bb9c7fd6ba2d8c968c commit 7516777434570833469252c16e5fd7d8f73c45be commit 3c480531a4b1652561fd16824c16be8b8a3ba8f1 commit b9caeadf5cb89566412b94b14a1583419aeba45e commit a9b4700279f21c5c1a3425630dea86d338ab13b2 commit 91ef6cfd30bf75763f41e7a4bc119883fe190606 commit 664883ddde67971d59764f2dda855183ecf8bc46 commit 783d446749c09eb34178cb8600a9a93d3b99e35d commit b6d1c39bc637fe4879d610e6687b1d4224c4b2fb commit dd37fba90e72a48998d9f0eb5497088ea2b02ad1 commit ec669ef2e2cf277f3e73d842bb3bda1c3ea2ea73 commit 85096a73f4dc223b5848e41ce40afc5ee913079e commit 1ec5c0e1289c70c8e7dd93a988d945ad5bc3f4b1 commit 391ce355e72bd5713afc85ec5acc955294499dcf commit 8dd2e87dbd49ba0b6afc1dd22a5930d797cf423f commit a28acf7091babf4248b042326946cee7736f796a commit 2d3907c152611a0d65efe54b93972320dcce1565 commit b3e45b18e5c40f1f7e5f6383953343f96f963b13 commit 11e38360cc15e2d5995449d19030b13a67d73cb3 commit 3b7329cf5a767c1be38352d43066012e220ad43c commit 7738be973fc4e2ba22154fafd3a5d7b9666f9abf commit 83ca5fb40e758e0a0257bf4e3a1148dd52c6d0f2 commit a3aded135e84a581ba567c30ecddff47c8b6cfcf commit 541540b9045c2665d6736a77c776ac81d4225eec commit 153a97b4e3de713c05b6bd42d734a2f9eeaf7968 commit 91462afa42e6b8c5a148a44482c893f1800c513d commit 6643b3836f3908c4f77883b2fae72451e85cf3ca commit af81a9201e0112e9c4ca7258e32cd28baf19f31a commit 2f3f958602721c7915ddb1f2a0e8dc5031bc0151 commit 90df15124526176ff03c246362c196a047c8a39a commit bcecb6524881c54ded92f14a6cf2406d5c439637 commit c1c3f41ffb1bd262e40d68938af68c6ab53a41f8 commit b33139ee15352043123b81b32ca1a6a84340eb5d commit 04fa38cce6e02be4362cd889780d58ec275c4d26 commit 0fd85e89b5bf18447e56099a010ee5be5dc9f2b0 commit 414208e48963fdb136240d7f59c15e627832d288 Omitted-fix: 14773bfa70e6 ("mm: shrinkers: fix double kfree on shrinker name") Omitted-fix: 20529e260ff2 ("Revert "drm/amdgpu: fix start calculation in amdgpu_vram_mgr_new"") Omitted-fix: 3024d95a4c52 ("bpf: Partially revert flexible-array member replacement") Omitted-fix: 3915f8bddefd ("drm: xlnx: add <linux/io.h> for readl/writel") Omitted-fix: 395d10ae4d29 ("drm/xlnx: Fix build failure due to missing include") Omitted-fix: 3f61631d47f1 ("take care to handle NULL ->proc_lseek()") Omitted-fix: 5e6723ef3fda ("drm/lcdif: Consistently use plain timings") Omitted-fix: 71c627c0a87a ("drm/lcdif: Clean up debug prints and comments") Omitted-fix: d395fb1999ab ("Revert "drm/amdgpu: move internal vram_mgr function into the C file"") Omitted-fix: ea19684afb54 ("drm/i915/display: consider DG2_RC_CCS_CC when migrating buffers") Omitted-fix: f423fa1bc9fe ("drm/i915/gvt: Add missing vfio_unregister_group_dev() call") Omitted-fix: fcfd3e5fb2f0 ("drm/lcdif: Clean up headers") Signed-off-by: Karol Herbst <kherbst@redhat.com>
2022-11-02 15:48:10 +00:00
* memcpy_toio(vaddr_iomem, src, len);
dma-buf-map: Rename to iosys-map Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2043115 Upstream Status: v5.18-rc1 Conflicts: drivers/gpu/drm/etnaviv/etnaviv_drv.h drivers/gpu/drm/msm/msm_drv.h drivers/media/common/videobuf2/videobuf2-dma-contig.c commit 7938f4218168ae9fc4bdddb15976f9ebbae41999 Author: Lucas De Marchi <lucas.demarchi@intel.com> AuthorDate: Fri Feb 4 09:05:41 2022 -0800 Commit: Lucas De Marchi <lucas.demarchi@intel.com> CommitDate: Mon Feb 7 16:35:35 2022 -0800 Rename struct dma_buf_map to struct iosys_map and corresponding APIs. Over time dma-buf-map grew up to more functionality than the one used by dma-buf: in fact it's just a shim layer to abstract system memory, that can be accessed via regular load and store, from IO memory that needs to be acessed via arch helpers. The idea is to extend this API so it can fulfill other needs, internal to a single driver. Example: in the i915 driver it's desired to share the implementation for integrated graphics, which uses mostly system memory, with discrete graphics, which may need to access IO memory. The conversion was mostly done with the following semantic patch: @r1@ @@ - struct dma_buf_map + struct iosys_map @r2@ @@ ( - DMA_BUF_MAP_INIT_VADDR + IOSYS_MAP_INIT_VADDR | - dma_buf_map_set_vaddr + iosys_map_set_vaddr | - dma_buf_map_set_vaddr_iomem + iosys_map_set_vaddr_iomem | - dma_buf_map_is_equal + iosys_map_is_equal | - dma_buf_map_is_null + iosys_map_is_null | - dma_buf_map_is_set + iosys_map_is_set | - dma_buf_map_clear + iosys_map_clear | - dma_buf_map_memcpy_to + iosys_map_memcpy_to | - dma_buf_map_incr + iosys_map_incr ) @@ @@ - #include <linux/dma-buf-map.h> + #include <linux/iosys-map.h> Then some files had their includes adjusted and some comments were update to remove mentions to dma-buf-map. Since this is not specific to dma-buf anymore, move the documentation to the "Bus-Independent Device Accesses" section. v2: - Squash patches v3: - Fix wrong removal of dma-buf.h from MAINTAINERS - Move documentation from dma-buf.rst to device-io.rst v4: - Change documentation title and level Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com> Acked-by: Christian König <christian.koenig@amd.com> Acked-by: Sumit Semwal <sumit.semwal@linaro.org> Acked-by: Thomas Zimmermann <tzimmermann@suse.de> Link: https://patchwork.freedesktop.org/patch/msgid/20220204170541.829227-1-lucas.demarchi@intel.com Signed-off-by: Karol Herbst <kherbst@redhat.com>
2022-03-29 14:15:44 +00:00
*
* The user of such pointer may not have information about the mapping of that
* region or may want to have a single code path to handle operations on that
* buffer, regardless if it's located in system or IO memory. The type
* :c:type:`struct iosys_map <iosys_map>` and its helpers abstract that so the
* buffer can be passed around to other drivers or have separate duties inside
* the same driver for allocation, read and write operations.
*
* Open-coding access to :c:type:`struct iosys_map <iosys_map>` is considered
* bad style. Rather then accessing its fields directly, use one of the provided
* helper functions, or implement your own. For example, instances of
* :c:type:`struct iosys_map <iosys_map>` can be initialized statically with
* IOSYS_MAP_INIT_VADDR(), or at runtime with iosys_map_set_vaddr(). These
* helpers will set an address in system memory.
*
* .. code-block:: c
*
* struct iosys_map map = IOSYS_MAP_INIT_VADDR(0xdeadbeaf);
*
* iosys_map_set_vaddr(&map, 0xdeadbeaf);
*
* To set an address in I/O memory, use IOSYS_MAP_INIT_VADDR_IOMEM() or
* iosys_map_set_vaddr_iomem().
dma-buf-map: Rename to iosys-map Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2043115 Upstream Status: v5.18-rc1 Conflicts: drivers/gpu/drm/etnaviv/etnaviv_drv.h drivers/gpu/drm/msm/msm_drv.h drivers/media/common/videobuf2/videobuf2-dma-contig.c commit 7938f4218168ae9fc4bdddb15976f9ebbae41999 Author: Lucas De Marchi <lucas.demarchi@intel.com> AuthorDate: Fri Feb 4 09:05:41 2022 -0800 Commit: Lucas De Marchi <lucas.demarchi@intel.com> CommitDate: Mon Feb 7 16:35:35 2022 -0800 Rename struct dma_buf_map to struct iosys_map and corresponding APIs. Over time dma-buf-map grew up to more functionality than the one used by dma-buf: in fact it's just a shim layer to abstract system memory, that can be accessed via regular load and store, from IO memory that needs to be acessed via arch helpers. The idea is to extend this API so it can fulfill other needs, internal to a single driver. Example: in the i915 driver it's desired to share the implementation for integrated graphics, which uses mostly system memory, with discrete graphics, which may need to access IO memory. The conversion was mostly done with the following semantic patch: @r1@ @@ - struct dma_buf_map + struct iosys_map @r2@ @@ ( - DMA_BUF_MAP_INIT_VADDR + IOSYS_MAP_INIT_VADDR | - dma_buf_map_set_vaddr + iosys_map_set_vaddr | - dma_buf_map_set_vaddr_iomem + iosys_map_set_vaddr_iomem | - dma_buf_map_is_equal + iosys_map_is_equal | - dma_buf_map_is_null + iosys_map_is_null | - dma_buf_map_is_set + iosys_map_is_set | - dma_buf_map_clear + iosys_map_clear | - dma_buf_map_memcpy_to + iosys_map_memcpy_to | - dma_buf_map_incr + iosys_map_incr ) @@ @@ - #include <linux/dma-buf-map.h> + #include <linux/iosys-map.h> Then some files had their includes adjusted and some comments were update to remove mentions to dma-buf-map. Since this is not specific to dma-buf anymore, move the documentation to the "Bus-Independent Device Accesses" section. v2: - Squash patches v3: - Fix wrong removal of dma-buf.h from MAINTAINERS - Move documentation from dma-buf.rst to device-io.rst v4: - Change documentation title and level Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com> Acked-by: Christian König <christian.koenig@amd.com> Acked-by: Sumit Semwal <sumit.semwal@linaro.org> Acked-by: Thomas Zimmermann <tzimmermann@suse.de> Link: https://patchwork.freedesktop.org/patch/msgid/20220204170541.829227-1-lucas.demarchi@intel.com Signed-off-by: Karol Herbst <kherbst@redhat.com>
2022-03-29 14:15:44 +00:00
*
* .. code-block:: c
*
* struct iosys_map map = IOSYS_MAP_INIT_VADDR_IOMEM(0xdeadbeaf);
*
dma-buf-map: Rename to iosys-map Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2043115 Upstream Status: v5.18-rc1 Conflicts: drivers/gpu/drm/etnaviv/etnaviv_drv.h drivers/gpu/drm/msm/msm_drv.h drivers/media/common/videobuf2/videobuf2-dma-contig.c commit 7938f4218168ae9fc4bdddb15976f9ebbae41999 Author: Lucas De Marchi <lucas.demarchi@intel.com> AuthorDate: Fri Feb 4 09:05:41 2022 -0800 Commit: Lucas De Marchi <lucas.demarchi@intel.com> CommitDate: Mon Feb 7 16:35:35 2022 -0800 Rename struct dma_buf_map to struct iosys_map and corresponding APIs. Over time dma-buf-map grew up to more functionality than the one used by dma-buf: in fact it's just a shim layer to abstract system memory, that can be accessed via regular load and store, from IO memory that needs to be acessed via arch helpers. The idea is to extend this API so it can fulfill other needs, internal to a single driver. Example: in the i915 driver it's desired to share the implementation for integrated graphics, which uses mostly system memory, with discrete graphics, which may need to access IO memory. The conversion was mostly done with the following semantic patch: @r1@ @@ - struct dma_buf_map + struct iosys_map @r2@ @@ ( - DMA_BUF_MAP_INIT_VADDR + IOSYS_MAP_INIT_VADDR | - dma_buf_map_set_vaddr + iosys_map_set_vaddr | - dma_buf_map_set_vaddr_iomem + iosys_map_set_vaddr_iomem | - dma_buf_map_is_equal + iosys_map_is_equal | - dma_buf_map_is_null + iosys_map_is_null | - dma_buf_map_is_set + iosys_map_is_set | - dma_buf_map_clear + iosys_map_clear | - dma_buf_map_memcpy_to + iosys_map_memcpy_to | - dma_buf_map_incr + iosys_map_incr ) @@ @@ - #include <linux/dma-buf-map.h> + #include <linux/iosys-map.h> Then some files had their includes adjusted and some comments were update to remove mentions to dma-buf-map. Since this is not specific to dma-buf anymore, move the documentation to the "Bus-Independent Device Accesses" section. v2: - Squash patches v3: - Fix wrong removal of dma-buf.h from MAINTAINERS - Move documentation from dma-buf.rst to device-io.rst v4: - Change documentation title and level Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com> Acked-by: Christian König <christian.koenig@amd.com> Acked-by: Sumit Semwal <sumit.semwal@linaro.org> Acked-by: Thomas Zimmermann <tzimmermann@suse.de> Link: https://patchwork.freedesktop.org/patch/msgid/20220204170541.829227-1-lucas.demarchi@intel.com Signed-off-by: Karol Herbst <kherbst@redhat.com>
2022-03-29 14:15:44 +00:00
* iosys_map_set_vaddr_iomem(&map, 0xdeadbeaf);
*
* Instances of struct iosys_map do not have to be cleaned up, but
* can be cleared to NULL with iosys_map_clear(). Cleared mappings
* always refer to system memory.
*
* .. code-block:: c
*
* iosys_map_clear(&map);
*
* Test if a mapping is valid with either iosys_map_is_set() or
* iosys_map_is_null().
*
* .. code-block:: c
*
* if (iosys_map_is_set(&map) != iosys_map_is_null(&map))
* // always true
*
* Instances of :c:type:`struct iosys_map <iosys_map>` can be compared for
* equality with iosys_map_is_equal(). Mappings that point to different memory
* spaces, system or I/O, are never equal. That's even true if both spaces are
* located in the same address space, both mappings contain the same address
* value, or both mappings refer to NULL.
*
* .. code-block:: c
*
* struct iosys_map sys_map; // refers to system memory
* struct iosys_map io_map; // refers to I/O memory
*
* if (iosys_map_is_equal(&sys_map, &io_map))
* // always false
*
* A set up instance of struct iosys_map can be used to access or manipulate the
* buffer memory. Depending on the location of the memory, the provided helpers
* will pick the correct operations. Data can be copied into the memory with
* iosys_map_memcpy_to(). The address can be manipulated with iosys_map_incr().
*
* .. code-block:: c
*
* const void *src = ...; // source buffer
* size_t len = ...; // length of src
*
* iosys_map_memcpy_to(&map, src, len);
* iosys_map_incr(&map, len); // go to first byte after the memcpy
*/
/**
* struct iosys_map - Pointer to IO/system memory
* @vaddr_iomem: The buffer's address if in I/O memory
* @vaddr: The buffer's address if in system memory
* @is_iomem: True if the buffer is located in I/O memory, or false
* otherwise.
*/
struct iosys_map {
union {
void __iomem *vaddr_iomem;
void *vaddr;
};
bool is_iomem;
};
/**
* IOSYS_MAP_INIT_VADDR - Initializes struct iosys_map to an address in system memory
* @vaddr_: A system-memory address
*/
#define IOSYS_MAP_INIT_VADDR(vaddr_) \
{ \
.vaddr = (vaddr_), \
.is_iomem = false, \
}
/**
* IOSYS_MAP_INIT_VADDR_IOMEM - Initializes struct iosys_map to an address in I/O memory
* @vaddr_iomem_: An I/O-memory address
*/
#define IOSYS_MAP_INIT_VADDR_IOMEM(vaddr_iomem_) \
{ \
.vaddr_iomem = (vaddr_iomem_), \
.is_iomem = true, \
}
iosys-map: Add a few more helpers Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2043115 Upstream Status: v5.18-rc1 commit e62f25e8b3cdd29224c27938addba817aedd4b54 Author: Lucas De Marchi <lucas.demarchi@intel.com> AuthorDate: Wed Feb 16 09:41:33 2022 -0800 Commit: Lucas De Marchi <lucas.demarchi@intel.com> CommitDate: Sat Feb 19 19:23:53 2022 -0800 First the simplest ones: - iosys_map_memset(): when abstracting system and I/O memory, just like the memcpy() use case, memset() also has dedicated functions to be called for using IO memory. - iosys_map_memcpy_from(): we may need to copy data from I/O memory, not only to. In certain situations it's useful to be able to read or write to an offset that is calculated by having the memory layout given by a struct declaration. Usually we are going to read/write a u8, u16, u32 or u64. As a pre-requisite for the implementation, add iosys_map_memcpy_from() to be the equivalent of iosys_map_memcpy_to(), but in the other direction. Then add 2 pairs of macros: - iosys_map_rd() / iosys_map_wr() - iosys_map_rd_field() / iosys_map_wr_field() The first pair takes the C-type and offset to read/write. The second pair uses a struct describing the layout of the mapping in order to calculate the offset and size being read/written. We could use readb, readw, readl, readq and the write* counterparts, however due to alignment issues this may not work on all architectures. If alignment needs to be checked to call the right function, it's not possible to decide at compile-time which function to call: so just leave the decision to the memcpy function that will do exactly that. Finally, in order to use the above macros with a map derived from another, add another initializer: IOSYS_MAP_INIT_OFFSET(). v2: - Rework IOSYS_MAP_INIT_OFFSET() so it doesn't rely on aliasing rules within the union - Add offset to both iosys_map_rd_field() and iosys_map_wr_field() to allow the struct itself to be at an offset from the mapping - Add documentation to iosys_map_rd_field() with example and expected memory layout v3: - Drop kernel.h include as it's not needed anymore Cc: Sumit Semwal <sumit.semwal@linaro.org> Cc: Christian König <christian.koenig@amd.com> Cc: Thomas Zimmermann <tzimmermann@suse.de> Cc: Mauro Carvalho Chehab <mchehab@kernel.org> Cc: dri-devel@lists.freedesktop.org Cc: linux-kernel@vger.kernel.org Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com> Reviewed-by: Mauro Carvalho Chehab <mchehab@kernel.org> Reviewed-by: Matt Atwood <matthew.s.atwood@intel.com> Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de> Link: https://patchwork.freedesktop.org/patch/msgid/20220216174147.3073235-3-lucas.demarchi@intel.com Signed-off-by: Karol Herbst <kherbst@redhat.com>
2022-03-29 14:21:07 +00:00
/**
* IOSYS_MAP_INIT_OFFSET - Initializes struct iosys_map from another iosys_map
* @map_: The dma-buf mapping structure to copy from
* @offset_: Offset to add to the other mapping
*
* Initializes a new iosys_map struct based on another passed as argument. It
* does a shallow copy of the struct so it's possible to update the back storage
* without changing where the original map points to. It is the equivalent of
* doing:
*
* .. code-block:: c
*
* iosys_map map = other_map;
* iosys_map_incr(&map, &offset);
*
* Example usage:
*
* .. code-block:: c
*
* void foo(struct device *dev, struct iosys_map *base_map)
* {
* ...
* struct iosys_map map = IOSYS_MAP_INIT_OFFSET(base_map, FIELD_OFFSET);
* ...
* }
*
* The advantage of using the initializer over just increasing the offset with
* iosys_map_incr() like above is that the new map will always point to the
* right place of the buffer during its scope. It reduces the risk of updating
* the wrong part of the buffer and having no compiler warning about that. If
* the assignment to IOSYS_MAP_INIT_OFFSET() is forgotten, the compiler can warn
* about the use of uninitialized variable.
*/
#define IOSYS_MAP_INIT_OFFSET(map_, offset_) ({ \
struct iosys_map copy = *map_; \
iosys_map_incr(&copy, offset_); \
copy; \
})
dma-buf-map: Rename to iosys-map Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2043115 Upstream Status: v5.18-rc1 Conflicts: drivers/gpu/drm/etnaviv/etnaviv_drv.h drivers/gpu/drm/msm/msm_drv.h drivers/media/common/videobuf2/videobuf2-dma-contig.c commit 7938f4218168ae9fc4bdddb15976f9ebbae41999 Author: Lucas De Marchi <lucas.demarchi@intel.com> AuthorDate: Fri Feb 4 09:05:41 2022 -0800 Commit: Lucas De Marchi <lucas.demarchi@intel.com> CommitDate: Mon Feb 7 16:35:35 2022 -0800 Rename struct dma_buf_map to struct iosys_map and corresponding APIs. Over time dma-buf-map grew up to more functionality than the one used by dma-buf: in fact it's just a shim layer to abstract system memory, that can be accessed via regular load and store, from IO memory that needs to be acessed via arch helpers. The idea is to extend this API so it can fulfill other needs, internal to a single driver. Example: in the i915 driver it's desired to share the implementation for integrated graphics, which uses mostly system memory, with discrete graphics, which may need to access IO memory. The conversion was mostly done with the following semantic patch: @r1@ @@ - struct dma_buf_map + struct iosys_map @r2@ @@ ( - DMA_BUF_MAP_INIT_VADDR + IOSYS_MAP_INIT_VADDR | - dma_buf_map_set_vaddr + iosys_map_set_vaddr | - dma_buf_map_set_vaddr_iomem + iosys_map_set_vaddr_iomem | - dma_buf_map_is_equal + iosys_map_is_equal | - dma_buf_map_is_null + iosys_map_is_null | - dma_buf_map_is_set + iosys_map_is_set | - dma_buf_map_clear + iosys_map_clear | - dma_buf_map_memcpy_to + iosys_map_memcpy_to | - dma_buf_map_incr + iosys_map_incr ) @@ @@ - #include <linux/dma-buf-map.h> + #include <linux/iosys-map.h> Then some files had their includes adjusted and some comments were update to remove mentions to dma-buf-map. Since this is not specific to dma-buf anymore, move the documentation to the "Bus-Independent Device Accesses" section. v2: - Squash patches v3: - Fix wrong removal of dma-buf.h from MAINTAINERS - Move documentation from dma-buf.rst to device-io.rst v4: - Change documentation title and level Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com> Acked-by: Christian König <christian.koenig@amd.com> Acked-by: Sumit Semwal <sumit.semwal@linaro.org> Acked-by: Thomas Zimmermann <tzimmermann@suse.de> Link: https://patchwork.freedesktop.org/patch/msgid/20220204170541.829227-1-lucas.demarchi@intel.com Signed-off-by: Karol Herbst <kherbst@redhat.com>
2022-03-29 14:15:44 +00:00
/**
* iosys_map_set_vaddr - Sets a iosys mapping structure to an address in system memory
* @map: The iosys_map structure
* @vaddr: A system-memory address
*
* Sets the address and clears the I/O-memory flag.
*/
static inline void iosys_map_set_vaddr(struct iosys_map *map, void *vaddr)
{
map->vaddr = vaddr;
map->is_iomem = false;
}
/**
* iosys_map_set_vaddr_iomem - Sets a iosys mapping structure to an address in I/O memory
* @map: The iosys_map structure
* @vaddr_iomem: An I/O-memory address
*
* Sets the address and the I/O-memory flag.
*/
static inline void iosys_map_set_vaddr_iomem(struct iosys_map *map,
void __iomem *vaddr_iomem)
{
map->vaddr_iomem = vaddr_iomem;
map->is_iomem = true;
}
/**
* iosys_map_is_equal - Compares two iosys mapping structures for equality
* @lhs: The iosys_map structure
* @rhs: A iosys_map structure to compare with
*
* Two iosys mapping structures are equal if they both refer to the same type of memory
* and to the same address within that memory.
*
* Returns:
* True is both structures are equal, or false otherwise.
*/
static inline bool iosys_map_is_equal(const struct iosys_map *lhs,
const struct iosys_map *rhs)
{
if (lhs->is_iomem != rhs->is_iomem)
return false;
else if (lhs->is_iomem)
return lhs->vaddr_iomem == rhs->vaddr_iomem;
else
return lhs->vaddr == rhs->vaddr;
}
/**
* iosys_map_is_null - Tests for a iosys mapping to be NULL
* @map: The iosys_map structure
*
* Depending on the state of struct iosys_map.is_iomem, tests if the
* mapping is NULL.
*
* Returns:
* True if the mapping is NULL, or false otherwise.
*/
static inline bool iosys_map_is_null(const struct iosys_map *map)
{
if (map->is_iomem)
return !map->vaddr_iomem;
return !map->vaddr;
}
/**
* iosys_map_is_set - Tests if the iosys mapping has been set
* @map: The iosys_map structure
*
* Depending on the state of struct iosys_map.is_iomem, tests if the
* mapping has been set.
*
* Returns:
* True if the mapping is been set, or false otherwise.
*/
static inline bool iosys_map_is_set(const struct iosys_map *map)
{
return !iosys_map_is_null(map);
}
/**
* iosys_map_clear - Clears a iosys mapping structure
* @map: The iosys_map structure
*
* Clears all fields to zero, including struct iosys_map.is_iomem, so
* mapping structures that were set to point to I/O memory are reset for
* system memory. Pointers are cleared to NULL. This is the default.
*/
static inline void iosys_map_clear(struct iosys_map *map)
{
if (map->is_iomem) {
map->vaddr_iomem = NULL;
map->is_iomem = false;
} else {
map->vaddr = NULL;
}
}
/**
* iosys_map_memcpy_to - Memcpy into offset of iosys_map
dma-buf-map: Rename to iosys-map Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2043115 Upstream Status: v5.18-rc1 Conflicts: drivers/gpu/drm/etnaviv/etnaviv_drv.h drivers/gpu/drm/msm/msm_drv.h drivers/media/common/videobuf2/videobuf2-dma-contig.c commit 7938f4218168ae9fc4bdddb15976f9ebbae41999 Author: Lucas De Marchi <lucas.demarchi@intel.com> AuthorDate: Fri Feb 4 09:05:41 2022 -0800 Commit: Lucas De Marchi <lucas.demarchi@intel.com> CommitDate: Mon Feb 7 16:35:35 2022 -0800 Rename struct dma_buf_map to struct iosys_map and corresponding APIs. Over time dma-buf-map grew up to more functionality than the one used by dma-buf: in fact it's just a shim layer to abstract system memory, that can be accessed via regular load and store, from IO memory that needs to be acessed via arch helpers. The idea is to extend this API so it can fulfill other needs, internal to a single driver. Example: in the i915 driver it's desired to share the implementation for integrated graphics, which uses mostly system memory, with discrete graphics, which may need to access IO memory. The conversion was mostly done with the following semantic patch: @r1@ @@ - struct dma_buf_map + struct iosys_map @r2@ @@ ( - DMA_BUF_MAP_INIT_VADDR + IOSYS_MAP_INIT_VADDR | - dma_buf_map_set_vaddr + iosys_map_set_vaddr | - dma_buf_map_set_vaddr_iomem + iosys_map_set_vaddr_iomem | - dma_buf_map_is_equal + iosys_map_is_equal | - dma_buf_map_is_null + iosys_map_is_null | - dma_buf_map_is_set + iosys_map_is_set | - dma_buf_map_clear + iosys_map_clear | - dma_buf_map_memcpy_to + iosys_map_memcpy_to | - dma_buf_map_incr + iosys_map_incr ) @@ @@ - #include <linux/dma-buf-map.h> + #include <linux/iosys-map.h> Then some files had their includes adjusted and some comments were update to remove mentions to dma-buf-map. Since this is not specific to dma-buf anymore, move the documentation to the "Bus-Independent Device Accesses" section. v2: - Squash patches v3: - Fix wrong removal of dma-buf.h from MAINTAINERS - Move documentation from dma-buf.rst to device-io.rst v4: - Change documentation title and level Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com> Acked-by: Christian König <christian.koenig@amd.com> Acked-by: Sumit Semwal <sumit.semwal@linaro.org> Acked-by: Thomas Zimmermann <tzimmermann@suse.de> Link: https://patchwork.freedesktop.org/patch/msgid/20220204170541.829227-1-lucas.demarchi@intel.com Signed-off-by: Karol Herbst <kherbst@redhat.com>
2022-03-29 14:15:44 +00:00
* @dst: The iosys_map structure
* @dst_offset: The offset from which to copy
dma-buf-map: Rename to iosys-map Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2043115 Upstream Status: v5.18-rc1 Conflicts: drivers/gpu/drm/etnaviv/etnaviv_drv.h drivers/gpu/drm/msm/msm_drv.h drivers/media/common/videobuf2/videobuf2-dma-contig.c commit 7938f4218168ae9fc4bdddb15976f9ebbae41999 Author: Lucas De Marchi <lucas.demarchi@intel.com> AuthorDate: Fri Feb 4 09:05:41 2022 -0800 Commit: Lucas De Marchi <lucas.demarchi@intel.com> CommitDate: Mon Feb 7 16:35:35 2022 -0800 Rename struct dma_buf_map to struct iosys_map and corresponding APIs. Over time dma-buf-map grew up to more functionality than the one used by dma-buf: in fact it's just a shim layer to abstract system memory, that can be accessed via regular load and store, from IO memory that needs to be acessed via arch helpers. The idea is to extend this API so it can fulfill other needs, internal to a single driver. Example: in the i915 driver it's desired to share the implementation for integrated graphics, which uses mostly system memory, with discrete graphics, which may need to access IO memory. The conversion was mostly done with the following semantic patch: @r1@ @@ - struct dma_buf_map + struct iosys_map @r2@ @@ ( - DMA_BUF_MAP_INIT_VADDR + IOSYS_MAP_INIT_VADDR | - dma_buf_map_set_vaddr + iosys_map_set_vaddr | - dma_buf_map_set_vaddr_iomem + iosys_map_set_vaddr_iomem | - dma_buf_map_is_equal + iosys_map_is_equal | - dma_buf_map_is_null + iosys_map_is_null | - dma_buf_map_is_set + iosys_map_is_set | - dma_buf_map_clear + iosys_map_clear | - dma_buf_map_memcpy_to + iosys_map_memcpy_to | - dma_buf_map_incr + iosys_map_incr ) @@ @@ - #include <linux/dma-buf-map.h> + #include <linux/iosys-map.h> Then some files had their includes adjusted and some comments were update to remove mentions to dma-buf-map. Since this is not specific to dma-buf anymore, move the documentation to the "Bus-Independent Device Accesses" section. v2: - Squash patches v3: - Fix wrong removal of dma-buf.h from MAINTAINERS - Move documentation from dma-buf.rst to device-io.rst v4: - Change documentation title and level Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com> Acked-by: Christian König <christian.koenig@amd.com> Acked-by: Sumit Semwal <sumit.semwal@linaro.org> Acked-by: Thomas Zimmermann <tzimmermann@suse.de> Link: https://patchwork.freedesktop.org/patch/msgid/20220204170541.829227-1-lucas.demarchi@intel.com Signed-off-by: Karol Herbst <kherbst@redhat.com>
2022-03-29 14:15:44 +00:00
* @src: The source buffer
* @len: The number of byte in src
*
* Copies data into a iosys_map with an offset. The source buffer is in
* system memory. Depending on the buffer's location, the helper picks the
* correct method of accessing the memory.
dma-buf-map: Rename to iosys-map Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2043115 Upstream Status: v5.18-rc1 Conflicts: drivers/gpu/drm/etnaviv/etnaviv_drv.h drivers/gpu/drm/msm/msm_drv.h drivers/media/common/videobuf2/videobuf2-dma-contig.c commit 7938f4218168ae9fc4bdddb15976f9ebbae41999 Author: Lucas De Marchi <lucas.demarchi@intel.com> AuthorDate: Fri Feb 4 09:05:41 2022 -0800 Commit: Lucas De Marchi <lucas.demarchi@intel.com> CommitDate: Mon Feb 7 16:35:35 2022 -0800 Rename struct dma_buf_map to struct iosys_map and corresponding APIs. Over time dma-buf-map grew up to more functionality than the one used by dma-buf: in fact it's just a shim layer to abstract system memory, that can be accessed via regular load and store, from IO memory that needs to be acessed via arch helpers. The idea is to extend this API so it can fulfill other needs, internal to a single driver. Example: in the i915 driver it's desired to share the implementation for integrated graphics, which uses mostly system memory, with discrete graphics, which may need to access IO memory. The conversion was mostly done with the following semantic patch: @r1@ @@ - struct dma_buf_map + struct iosys_map @r2@ @@ ( - DMA_BUF_MAP_INIT_VADDR + IOSYS_MAP_INIT_VADDR | - dma_buf_map_set_vaddr + iosys_map_set_vaddr | - dma_buf_map_set_vaddr_iomem + iosys_map_set_vaddr_iomem | - dma_buf_map_is_equal + iosys_map_is_equal | - dma_buf_map_is_null + iosys_map_is_null | - dma_buf_map_is_set + iosys_map_is_set | - dma_buf_map_clear + iosys_map_clear | - dma_buf_map_memcpy_to + iosys_map_memcpy_to | - dma_buf_map_incr + iosys_map_incr ) @@ @@ - #include <linux/dma-buf-map.h> + #include <linux/iosys-map.h> Then some files had their includes adjusted and some comments were update to remove mentions to dma-buf-map. Since this is not specific to dma-buf anymore, move the documentation to the "Bus-Independent Device Accesses" section. v2: - Squash patches v3: - Fix wrong removal of dma-buf.h from MAINTAINERS - Move documentation from dma-buf.rst to device-io.rst v4: - Change documentation title and level Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com> Acked-by: Christian König <christian.koenig@amd.com> Acked-by: Sumit Semwal <sumit.semwal@linaro.org> Acked-by: Thomas Zimmermann <tzimmermann@suse.de> Link: https://patchwork.freedesktop.org/patch/msgid/20220204170541.829227-1-lucas.demarchi@intel.com Signed-off-by: Karol Herbst <kherbst@redhat.com>
2022-03-29 14:15:44 +00:00
*/
static inline void iosys_map_memcpy_to(struct iosys_map *dst, size_t dst_offset,
const void *src, size_t len)
dma-buf-map: Rename to iosys-map Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2043115 Upstream Status: v5.18-rc1 Conflicts: drivers/gpu/drm/etnaviv/etnaviv_drv.h drivers/gpu/drm/msm/msm_drv.h drivers/media/common/videobuf2/videobuf2-dma-contig.c commit 7938f4218168ae9fc4bdddb15976f9ebbae41999 Author: Lucas De Marchi <lucas.demarchi@intel.com> AuthorDate: Fri Feb 4 09:05:41 2022 -0800 Commit: Lucas De Marchi <lucas.demarchi@intel.com> CommitDate: Mon Feb 7 16:35:35 2022 -0800 Rename struct dma_buf_map to struct iosys_map and corresponding APIs. Over time dma-buf-map grew up to more functionality than the one used by dma-buf: in fact it's just a shim layer to abstract system memory, that can be accessed via regular load and store, from IO memory that needs to be acessed via arch helpers. The idea is to extend this API so it can fulfill other needs, internal to a single driver. Example: in the i915 driver it's desired to share the implementation for integrated graphics, which uses mostly system memory, with discrete graphics, which may need to access IO memory. The conversion was mostly done with the following semantic patch: @r1@ @@ - struct dma_buf_map + struct iosys_map @r2@ @@ ( - DMA_BUF_MAP_INIT_VADDR + IOSYS_MAP_INIT_VADDR | - dma_buf_map_set_vaddr + iosys_map_set_vaddr | - dma_buf_map_set_vaddr_iomem + iosys_map_set_vaddr_iomem | - dma_buf_map_is_equal + iosys_map_is_equal | - dma_buf_map_is_null + iosys_map_is_null | - dma_buf_map_is_set + iosys_map_is_set | - dma_buf_map_clear + iosys_map_clear | - dma_buf_map_memcpy_to + iosys_map_memcpy_to | - dma_buf_map_incr + iosys_map_incr ) @@ @@ - #include <linux/dma-buf-map.h> + #include <linux/iosys-map.h> Then some files had their includes adjusted and some comments were update to remove mentions to dma-buf-map. Since this is not specific to dma-buf anymore, move the documentation to the "Bus-Independent Device Accesses" section. v2: - Squash patches v3: - Fix wrong removal of dma-buf.h from MAINTAINERS - Move documentation from dma-buf.rst to device-io.rst v4: - Change documentation title and level Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com> Acked-by: Christian König <christian.koenig@amd.com> Acked-by: Sumit Semwal <sumit.semwal@linaro.org> Acked-by: Thomas Zimmermann <tzimmermann@suse.de> Link: https://patchwork.freedesktop.org/patch/msgid/20220204170541.829227-1-lucas.demarchi@intel.com Signed-off-by: Karol Herbst <kherbst@redhat.com>
2022-03-29 14:15:44 +00:00
{
if (dst->is_iomem)
memcpy_toio(dst->vaddr_iomem + dst_offset, src, len);
dma-buf-map: Rename to iosys-map Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2043115 Upstream Status: v5.18-rc1 Conflicts: drivers/gpu/drm/etnaviv/etnaviv_drv.h drivers/gpu/drm/msm/msm_drv.h drivers/media/common/videobuf2/videobuf2-dma-contig.c commit 7938f4218168ae9fc4bdddb15976f9ebbae41999 Author: Lucas De Marchi <lucas.demarchi@intel.com> AuthorDate: Fri Feb 4 09:05:41 2022 -0800 Commit: Lucas De Marchi <lucas.demarchi@intel.com> CommitDate: Mon Feb 7 16:35:35 2022 -0800 Rename struct dma_buf_map to struct iosys_map and corresponding APIs. Over time dma-buf-map grew up to more functionality than the one used by dma-buf: in fact it's just a shim layer to abstract system memory, that can be accessed via regular load and store, from IO memory that needs to be acessed via arch helpers. The idea is to extend this API so it can fulfill other needs, internal to a single driver. Example: in the i915 driver it's desired to share the implementation for integrated graphics, which uses mostly system memory, with discrete graphics, which may need to access IO memory. The conversion was mostly done with the following semantic patch: @r1@ @@ - struct dma_buf_map + struct iosys_map @r2@ @@ ( - DMA_BUF_MAP_INIT_VADDR + IOSYS_MAP_INIT_VADDR | - dma_buf_map_set_vaddr + iosys_map_set_vaddr | - dma_buf_map_set_vaddr_iomem + iosys_map_set_vaddr_iomem | - dma_buf_map_is_equal + iosys_map_is_equal | - dma_buf_map_is_null + iosys_map_is_null | - dma_buf_map_is_set + iosys_map_is_set | - dma_buf_map_clear + iosys_map_clear | - dma_buf_map_memcpy_to + iosys_map_memcpy_to | - dma_buf_map_incr + iosys_map_incr ) @@ @@ - #include <linux/dma-buf-map.h> + #include <linux/iosys-map.h> Then some files had their includes adjusted and some comments were update to remove mentions to dma-buf-map. Since this is not specific to dma-buf anymore, move the documentation to the "Bus-Independent Device Accesses" section. v2: - Squash patches v3: - Fix wrong removal of dma-buf.h from MAINTAINERS - Move documentation from dma-buf.rst to device-io.rst v4: - Change documentation title and level Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com> Acked-by: Christian König <christian.koenig@amd.com> Acked-by: Sumit Semwal <sumit.semwal@linaro.org> Acked-by: Thomas Zimmermann <tzimmermann@suse.de> Link: https://patchwork.freedesktop.org/patch/msgid/20220204170541.829227-1-lucas.demarchi@intel.com Signed-off-by: Karol Herbst <kherbst@redhat.com>
2022-03-29 14:15:44 +00:00
else
memcpy(dst->vaddr + dst_offset, src, len);
dma-buf-map: Rename to iosys-map Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2043115 Upstream Status: v5.18-rc1 Conflicts: drivers/gpu/drm/etnaviv/etnaviv_drv.h drivers/gpu/drm/msm/msm_drv.h drivers/media/common/videobuf2/videobuf2-dma-contig.c commit 7938f4218168ae9fc4bdddb15976f9ebbae41999 Author: Lucas De Marchi <lucas.demarchi@intel.com> AuthorDate: Fri Feb 4 09:05:41 2022 -0800 Commit: Lucas De Marchi <lucas.demarchi@intel.com> CommitDate: Mon Feb 7 16:35:35 2022 -0800 Rename struct dma_buf_map to struct iosys_map and corresponding APIs. Over time dma-buf-map grew up to more functionality than the one used by dma-buf: in fact it's just a shim layer to abstract system memory, that can be accessed via regular load and store, from IO memory that needs to be acessed via arch helpers. The idea is to extend this API so it can fulfill other needs, internal to a single driver. Example: in the i915 driver it's desired to share the implementation for integrated graphics, which uses mostly system memory, with discrete graphics, which may need to access IO memory. The conversion was mostly done with the following semantic patch: @r1@ @@ - struct dma_buf_map + struct iosys_map @r2@ @@ ( - DMA_BUF_MAP_INIT_VADDR + IOSYS_MAP_INIT_VADDR | - dma_buf_map_set_vaddr + iosys_map_set_vaddr | - dma_buf_map_set_vaddr_iomem + iosys_map_set_vaddr_iomem | - dma_buf_map_is_equal + iosys_map_is_equal | - dma_buf_map_is_null + iosys_map_is_null | - dma_buf_map_is_set + iosys_map_is_set | - dma_buf_map_clear + iosys_map_clear | - dma_buf_map_memcpy_to + iosys_map_memcpy_to | - dma_buf_map_incr + iosys_map_incr ) @@ @@ - #include <linux/dma-buf-map.h> + #include <linux/iosys-map.h> Then some files had their includes adjusted and some comments were update to remove mentions to dma-buf-map. Since this is not specific to dma-buf anymore, move the documentation to the "Bus-Independent Device Accesses" section. v2: - Squash patches v3: - Fix wrong removal of dma-buf.h from MAINTAINERS - Move documentation from dma-buf.rst to device-io.rst v4: - Change documentation title and level Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com> Acked-by: Christian König <christian.koenig@amd.com> Acked-by: Sumit Semwal <sumit.semwal@linaro.org> Acked-by: Thomas Zimmermann <tzimmermann@suse.de> Link: https://patchwork.freedesktop.org/patch/msgid/20220204170541.829227-1-lucas.demarchi@intel.com Signed-off-by: Karol Herbst <kherbst@redhat.com>
2022-03-29 14:15:44 +00:00
}
iosys-map: Add a few more helpers Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2043115 Upstream Status: v5.18-rc1 commit e62f25e8b3cdd29224c27938addba817aedd4b54 Author: Lucas De Marchi <lucas.demarchi@intel.com> AuthorDate: Wed Feb 16 09:41:33 2022 -0800 Commit: Lucas De Marchi <lucas.demarchi@intel.com> CommitDate: Sat Feb 19 19:23:53 2022 -0800 First the simplest ones: - iosys_map_memset(): when abstracting system and I/O memory, just like the memcpy() use case, memset() also has dedicated functions to be called for using IO memory. - iosys_map_memcpy_from(): we may need to copy data from I/O memory, not only to. In certain situations it's useful to be able to read or write to an offset that is calculated by having the memory layout given by a struct declaration. Usually we are going to read/write a u8, u16, u32 or u64. As a pre-requisite for the implementation, add iosys_map_memcpy_from() to be the equivalent of iosys_map_memcpy_to(), but in the other direction. Then add 2 pairs of macros: - iosys_map_rd() / iosys_map_wr() - iosys_map_rd_field() / iosys_map_wr_field() The first pair takes the C-type and offset to read/write. The second pair uses a struct describing the layout of the mapping in order to calculate the offset and size being read/written. We could use readb, readw, readl, readq and the write* counterparts, however due to alignment issues this may not work on all architectures. If alignment needs to be checked to call the right function, it's not possible to decide at compile-time which function to call: so just leave the decision to the memcpy function that will do exactly that. Finally, in order to use the above macros with a map derived from another, add another initializer: IOSYS_MAP_INIT_OFFSET(). v2: - Rework IOSYS_MAP_INIT_OFFSET() so it doesn't rely on aliasing rules within the union - Add offset to both iosys_map_rd_field() and iosys_map_wr_field() to allow the struct itself to be at an offset from the mapping - Add documentation to iosys_map_rd_field() with example and expected memory layout v3: - Drop kernel.h include as it's not needed anymore Cc: Sumit Semwal <sumit.semwal@linaro.org> Cc: Christian König <christian.koenig@amd.com> Cc: Thomas Zimmermann <tzimmermann@suse.de> Cc: Mauro Carvalho Chehab <mchehab@kernel.org> Cc: dri-devel@lists.freedesktop.org Cc: linux-kernel@vger.kernel.org Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com> Reviewed-by: Mauro Carvalho Chehab <mchehab@kernel.org> Reviewed-by: Matt Atwood <matthew.s.atwood@intel.com> Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de> Link: https://patchwork.freedesktop.org/patch/msgid/20220216174147.3073235-3-lucas.demarchi@intel.com Signed-off-by: Karol Herbst <kherbst@redhat.com>
2022-03-29 14:21:07 +00:00
/**
* iosys_map_memcpy_from - Memcpy from iosys_map into system memory
* @dst: Destination in system memory
* @src: The iosys_map structure
* @src_offset: The offset from which to copy
* @len: The number of byte in src
*
* Copies data from a iosys_map with an offset. The dest buffer is in
* system memory. Depending on the mapping location, the helper picks the
* correct method of accessing the memory.
*/
static inline void iosys_map_memcpy_from(void *dst, const struct iosys_map *src,
size_t src_offset, size_t len)
{
if (src->is_iomem)
memcpy_fromio(dst, src->vaddr_iomem + src_offset, len);
else
memcpy(dst, src->vaddr + src_offset, len);
}
dma-buf-map: Rename to iosys-map Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2043115 Upstream Status: v5.18-rc1 Conflicts: drivers/gpu/drm/etnaviv/etnaviv_drv.h drivers/gpu/drm/msm/msm_drv.h drivers/media/common/videobuf2/videobuf2-dma-contig.c commit 7938f4218168ae9fc4bdddb15976f9ebbae41999 Author: Lucas De Marchi <lucas.demarchi@intel.com> AuthorDate: Fri Feb 4 09:05:41 2022 -0800 Commit: Lucas De Marchi <lucas.demarchi@intel.com> CommitDate: Mon Feb 7 16:35:35 2022 -0800 Rename struct dma_buf_map to struct iosys_map and corresponding APIs. Over time dma-buf-map grew up to more functionality than the one used by dma-buf: in fact it's just a shim layer to abstract system memory, that can be accessed via regular load and store, from IO memory that needs to be acessed via arch helpers. The idea is to extend this API so it can fulfill other needs, internal to a single driver. Example: in the i915 driver it's desired to share the implementation for integrated graphics, which uses mostly system memory, with discrete graphics, which may need to access IO memory. The conversion was mostly done with the following semantic patch: @r1@ @@ - struct dma_buf_map + struct iosys_map @r2@ @@ ( - DMA_BUF_MAP_INIT_VADDR + IOSYS_MAP_INIT_VADDR | - dma_buf_map_set_vaddr + iosys_map_set_vaddr | - dma_buf_map_set_vaddr_iomem + iosys_map_set_vaddr_iomem | - dma_buf_map_is_equal + iosys_map_is_equal | - dma_buf_map_is_null + iosys_map_is_null | - dma_buf_map_is_set + iosys_map_is_set | - dma_buf_map_clear + iosys_map_clear | - dma_buf_map_memcpy_to + iosys_map_memcpy_to | - dma_buf_map_incr + iosys_map_incr ) @@ @@ - #include <linux/dma-buf-map.h> + #include <linux/iosys-map.h> Then some files had their includes adjusted and some comments were update to remove mentions to dma-buf-map. Since this is not specific to dma-buf anymore, move the documentation to the "Bus-Independent Device Accesses" section. v2: - Squash patches v3: - Fix wrong removal of dma-buf.h from MAINTAINERS - Move documentation from dma-buf.rst to device-io.rst v4: - Change documentation title and level Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com> Acked-by: Christian König <christian.koenig@amd.com> Acked-by: Sumit Semwal <sumit.semwal@linaro.org> Acked-by: Thomas Zimmermann <tzimmermann@suse.de> Link: https://patchwork.freedesktop.org/patch/msgid/20220204170541.829227-1-lucas.demarchi@intel.com Signed-off-by: Karol Herbst <kherbst@redhat.com>
2022-03-29 14:15:44 +00:00
/**
* iosys_map_incr - Increments the address stored in a iosys mapping
* @map: The iosys_map structure
* @incr: The number of bytes to increment
*
* Increments the address stored in a iosys mapping. Depending on the
* buffer's location, the correct value will be updated.
*/
static inline void iosys_map_incr(struct iosys_map *map, size_t incr)
{
if (map->is_iomem)
map->vaddr_iomem += incr;
else
map->vaddr += incr;
}
iosys-map: Add a few more helpers Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2043115 Upstream Status: v5.18-rc1 commit e62f25e8b3cdd29224c27938addba817aedd4b54 Author: Lucas De Marchi <lucas.demarchi@intel.com> AuthorDate: Wed Feb 16 09:41:33 2022 -0800 Commit: Lucas De Marchi <lucas.demarchi@intel.com> CommitDate: Sat Feb 19 19:23:53 2022 -0800 First the simplest ones: - iosys_map_memset(): when abstracting system and I/O memory, just like the memcpy() use case, memset() also has dedicated functions to be called for using IO memory. - iosys_map_memcpy_from(): we may need to copy data from I/O memory, not only to. In certain situations it's useful to be able to read or write to an offset that is calculated by having the memory layout given by a struct declaration. Usually we are going to read/write a u8, u16, u32 or u64. As a pre-requisite for the implementation, add iosys_map_memcpy_from() to be the equivalent of iosys_map_memcpy_to(), but in the other direction. Then add 2 pairs of macros: - iosys_map_rd() / iosys_map_wr() - iosys_map_rd_field() / iosys_map_wr_field() The first pair takes the C-type and offset to read/write. The second pair uses a struct describing the layout of the mapping in order to calculate the offset and size being read/written. We could use readb, readw, readl, readq and the write* counterparts, however due to alignment issues this may not work on all architectures. If alignment needs to be checked to call the right function, it's not possible to decide at compile-time which function to call: so just leave the decision to the memcpy function that will do exactly that. Finally, in order to use the above macros with a map derived from another, add another initializer: IOSYS_MAP_INIT_OFFSET(). v2: - Rework IOSYS_MAP_INIT_OFFSET() so it doesn't rely on aliasing rules within the union - Add offset to both iosys_map_rd_field() and iosys_map_wr_field() to allow the struct itself to be at an offset from the mapping - Add documentation to iosys_map_rd_field() with example and expected memory layout v3: - Drop kernel.h include as it's not needed anymore Cc: Sumit Semwal <sumit.semwal@linaro.org> Cc: Christian König <christian.koenig@amd.com> Cc: Thomas Zimmermann <tzimmermann@suse.de> Cc: Mauro Carvalho Chehab <mchehab@kernel.org> Cc: dri-devel@lists.freedesktop.org Cc: linux-kernel@vger.kernel.org Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com> Reviewed-by: Mauro Carvalho Chehab <mchehab@kernel.org> Reviewed-by: Matt Atwood <matthew.s.atwood@intel.com> Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de> Link: https://patchwork.freedesktop.org/patch/msgid/20220216174147.3073235-3-lucas.demarchi@intel.com Signed-off-by: Karol Herbst <kherbst@redhat.com>
2022-03-29 14:21:07 +00:00
/**
* iosys_map_memset - Memset iosys_map
* @dst: The iosys_map structure
* @offset: Offset from dst where to start setting value
* @value: The value to set
* @len: The number of bytes to set in dst
*
* Set value in iosys_map. Depending on the buffer's location, the helper
* picks the correct method of accessing the memory.
*/
static inline void iosys_map_memset(struct iosys_map *dst, size_t offset,
int value, size_t len)
{
if (dst->is_iomem)
memset_io(dst->vaddr_iomem + offset, value, len);
else
memset(dst->vaddr + offset, value, len);
}
Merge DRM changes from upstream v5.19..v6.0 NOTE: This commit does not compile due to missing RHEL-specific fix-ups, which are split out into separate Git commits following this one. If git bisect selected this commit, run "git bisect skip" and try again. Repeat this until it selects a commit which compiles. This commit was generated using: rhdrm-merge-drm v6.0 2115876 Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2115876 Conflicts: drivers/gpu/drm/hyperv/hyperv_drm_drv.c drivers/gpu/drm/mgag200/mgag200_mode.c Conflict resolution: Commit list: commit d10f7117aa43b0b0d1c4b878afafb6d151da441d commit 115fcf5899f7e0b0d3358a22a8cd76b1398642ee commit d8cb49d203556707ff4c3aa05032c4fc7c3ff1a2 commit 9d72b7e2d2ce3746950929a2c54171d183ea89f2 commit 94afc5382669c3a201c5817c47b57a879b6dabce commit aba5825439d7691343aa562dfeaf6616455bcb01 commit a9ec4fd004b84c26207a8cae41662c501c8a284b commit 537d9ed2f6c1dbfe8465365c2f74a855ffad5e6a commit ed3173077d3fa6fd085960aa6347ec30f532bf31 commit b07debc2a8ce7324c85479a28d145eaa05382286 commit 4ce08703a8c4be77b060aefd14eda272f50a45e4 commit 9975af040a04ba9aef33f3ef1ca4e8f04c7223dd commit dfc0312596561ac462308fae32130a0c580b7ac1 commit 37852141965d467a4ae118139b6eee266e7d953c commit 2af243444f9100639451b11d311982279e00cc16 commit 49a62a2923e523e5359219ed54d643c60f3374f8 commit 705bec3eca9b712fe006b7e4d6b4cd4dc6b57d36 commit 8db73897698ccb4eb70ab103245372569ff5a5ec commit 58304630b830a1c27457ce2e3a0912555b43d03e commit 6ff1c19f5f28dbc396462032dcbfdb8b64795415 commit d792ec62ae1260df2e54dc41103aad3b19bad948 commit a5c89f7c43c12c592a882a0ec2a15e9df0011e80 commit 315241d2d9102a90f71bd6c9e7dd06a1c831a184 commit a7b516bd981f11feb0c9f5ee3d149855d48cb2c8 commit 6f67930af78f10ac7a1a9ba81ec606a9bd07749f commit 56ca3117f77a23a8b24e73e458bc85c11e5dea31 commit e6c2db2be986158afb9991d9fa8a38fe65a88516 commit 91875c22a31be0bdf91d7ec651bb6b083b35ac37 commit 69ed3dd6be9cf5d75252940b9a927dff4bab7860 commit 09708b6d82ef473de91c49d90f35e38b0db463f5 commit 222ff6db8a0dcb86f2bb65fc8656aec635a737a6 commit 218076abbcd647de46635d21331a34b814f90906 commit 922abe4d19bd21b38298f3902674774b92a49293 commit b6411373d3954c8fe4617c27f90f773108b0ab03 commit efd01cd3c27636bc4840057a03839e54abaf11dc commit eb86f645ab9b90c47de7ebe229feae7ac999421b commit b15a7357a84f091fde8ce35bf2fd494150ad4bd0 commit 1b93ff4d0679190e8812cd0d0b3aebfcba1ed883 commit e9794c88cd6cf4be4a79188916a75539751f532c commit 3507932390bbfcf7c69dff9843f1c9da6ed4b861 commit 23dd74db02d75579d8d4eb0b88c7ad119e782269 commit b499914eb83765a27e3b43f216e9d1bdf4265418 commit 6c01aa13894fa0049ea8c96c271318ca353a77f1 commit 429e1fc1b2c257f35b6a1318eb3a1ffb80bc6640 commit e090532246fe17609b08ba0a862428867426dc95 commit 9d67edba730c4663eb7d87771123c3fb86ba606d commit 4de23dca7ec8dfb191ea80fbfe3f008d4ed52346 commit 6cd96877c7da6bc3a28ef0bcb3bc7470f4dd9aa6 commit 93d9e0453e2bb599e0bcced1b914f9b4010180a1 commit 69f8afdb45e7775840693bce42da79d9c22c2e83 commit 500d7135c924024ed2e5e62b03dd9b3b6257fa10 commit 8caaf7ad659da9b757781d5f08ce0bf98801931e commit 1a1a5a315ee805bec457fd214250c088efadb50b commit ad5f74f3420183052532a220edd9a37aba92724a commit 047de3f17a8321065c32ee3f6272a6dba16d6bcf commit 5e3f1e7729ec7a99e145e9d8ed58963d86cdfb98 commit 708d19d9f362766147cab79eccae60912c6d3068 commit aebeb02dfccb61d6930112aede2db3db5b8e974e commit ef83e1198f9f7d7db0031c839bb1112cfee45b42 commit 7ecc3cc8a7b39f08eee9aea7b718187583342a70 commit 3064debaf55e1bc8f191871ca5f82697ef4c0951 commit c48a363016349352dac7e66cd1e823f73bff1fc4 commit d2addf89c5abf4024574d42000313175c6e074fc commit d7fd32ecce914686756dedf586c8573e71f975a4 commit 3080c21a043abc83e56da9bb5942eb3f4b92c90e commit 303760aa914b7f5ac9602dbb4b471a2ad52eeb3e commit 21c47196aec3a93f913a7515e1e7b30e6c54d6c6 commit 18fb42db05a0b93ab5dd5eab5315e50eaa3ca620 commit 945ae909aa76f55ac8c9e95feb3683512d39134a commit be982415fc2e953ad49e59b204f2d0e64953eb5f commit ab1747ccf052976465db7c5a7e1301a50f290db0 commit e4ccf9a777d30d60c60f729b1d5c9bc9e3ea46e3 commit 22a27e0532d06968afc265a3b91fbdc5a773169a commit e42192b4c345a807d8df034f178d5846e1c97ad1 commit a2f9790dcffe2dd0b363607fd215e5b81a0de57a commit 40f71f5b239291357dbee3dc1c6ace83a373f44e commit dd0f4470a849d07081a2036f89d2c41264383985 commit f0d080ff429129b16332f17a906ad2123d9c6317 commit 084c7a7c7a0a0cab35d959e1b14d45a0c6221f49 commit a77f7c89e62c6dfe405a64995812746f27adc510 commit 7428bfbdb7c4dc7323e6b6f0e327c3587e479e16 commit 67d87fac86dd4a04cc62dc0eddfb7c74ace4666d commit 874d98eed71ae678ab364d4c16060955b8b245ae commit 2c54f87cf2fb99826ded617fd0484e688ecfe882 commit 45aa2336fa6dbfa73d9081f75a4b813e747a55aa commit bba4b6470b02c2d9a5074a40cff7246d3356f460 commit 027034511c6a1e3ea96122f7626b89b6d339ed49 commit 3176d0925027727ec37e388e9363f124c2c52ae9 commit 0c057877cbdf261efa7874474f48c715cd6401ba commit 5e87b2e5171621ff00ec197c9af15bc3aa405b6b commit bbded689680f0f2e65d4a57d0dfa654671052d56 commit c7b2dee4308b74391734ac675e66e6856a077f77 commit d9ba1b4cbb2989c919198832f4ebd6eb8ba94da0 commit d0edd3c1a7e859a5899c26e2906e80f4ac798fa9 commit ca10b9d60f8c9556720bad8b1ec7d522e353a01d commit de5db71e4c8c35ed5e92006e3064ce9230881ece commit b6415bd7386bcf9d2e0d6ee1d4ef4186e7a87b24 commit b959eb4f5b7ea49b47e95c9047d33d1b1cf81057 commit 0facdaa249c4e97346bc0b49c893e4a1d336b7dd commit c3e57159dea473e9e138d32d08c48f3103294050 commit 057a6a1936e79c0bc9c86537fb9886ed39cd078a commit d6774b8c3c5813aa541c9148f641d3d8d4b296d2 commit c577b2f43e80d707870a74de0fd726c51b206956 commit a24191b1c4ad05fc578ea5ea01652c09b71da86d commit a9ad5822366c5065e6a65fe5ff5090295ba98986 commit d158367c31f0f87567d2e8a0955287dc005d40e5 commit 8f6de23184452793e60945a26ac40db435d7798d commit 9e97c46f832d4669b4e52cde5ad0bd43423504eb commit a77c2af0994e24ee36c7ffb6dc852770bdf06fb1 commit 5913ab941d6ea782e841234c76958c6872ea752d commit d50f74790bbba662d1438dbc03be6616c52c0722 commit 16f1456466c269ecda32b88c3f8fdd76f8ec370c commit b279df242972ae816a75cf1cc732af836f999100 commit 8219f11fdaf56593a719e1d72fa582673560315a commit 69340e529a064da4807622395e967aa2b5eba1c5 commit 475e2b970cc372f49e9d3e4bbead8b4874299d31 commit e180a7b218487065efd9a3f05eac5de7de128e19 commit 315a8d00ac74c59a688a1a88c0ed97a7791d1c91 commit a50794f26f52c66cb793d5d392f5f19bc2962cdd commit 451374eef622fca6f00eeeda89aaccb45a30a149 commit 1ade30812abfdd1c161a155fd54b0dd594c217ee commit 230fb39ff7e07bd0324c87acf08dd2c9b0bbcea8 commit 962bd34bb457f6353f333ce234c3fd34cad1c00a commit 411d44d754739a371999412606b28af1d72a210b commit 7f73b371710edaee1f40d834096c07c62e51b184 commit f159b1b22c8a2d3d7c1fa877fafc8aacff0deeba commit 746b9c62cc8614fa59c23f3332682b5e9e1d801c commit 1c89b4b718168aa6cf136a984b474d663e4203b7 commit a8d6e127254c48d895c4f6e973ec998fd4a0eff3 commit 4f093a527b0b8f9d3059a4e8376e582fd14cf09e commit 4a2a13a57b605994ee44e5c2cd7b9efc49901404 commit e7c254d75d16b75abf1958095fd34e2ecdc0d645 commit 69ef4a192bba0d76216198ec6d5fe82375337903 commit 9602efab9f8652ef39dc2789edcd26c3d1d3f901 commit e91eec9128c2ad9eab9cf9d7c17f8034b6a86c4c commit 9d8d5a39173244a1394cf84a93447be6f82b361d commit 3d6c72b7fdd2429ca1d4d690618bf65050380b48 commit b409db082da6b76ad2b759a1a48d9402eee4b942 commit fdbec9ff669d83bf863ca7e657af6a9e4c949565 commit 39921e5f00f5a98ff9cb3229937ca339e8d9c9c6 commit 85a040bc9049dd168d5e79a1fa9d2da87e6e52dc commit ee421bb4cb9535f44015634baad833dcc98c9062 commit 5f38c3fb55ce3814b4353320d7a205068a420e48 commit 39c28cdfb719f0e306b447f0827dfd712f81858b commit 0d662350928e6787d29ab205e47e5aa6f1f792f9 commit c1de02bbeca58894c805b3d45c2da4bf30cfc5d9 commit 0b4c48f3e315d172e4cc06e10f2c8ba180788baf commit 08c59dde71b73a0ac94e3ed2d431345b01f20485 commit 67d935b4713988d0a41097439c0c2d74f240b204 commit fa373eb2190115ef2c3597f89c12350d0a250eb0 commit 4cd79f614b501e496ee8e4181d528c0cc1cb4e18 commit 8ec5c0006c50cb1909c0de0fad137909c1218990 commit 2ba5b683260e13d8f2c43bc594d5ae15ec7f7a04 commit 670c87fd169518eb4f15030c63f6c1b4ddf18bfb commit 1ff72d434b40d221e2583fab5e1203031d05c059 commit 649eb3828fb22e829e222ebd83f4e11dc503a565 commit 9ad6f181ad9a19a26bda73a7b199df44ccfcdaba commit 39b1bc4b5bcccac781267bb826b035fbb99c8b9d commit 991dcb89caeb1b9bf714b382e23d3f6d8016e744 commit 61922beba36adea8702fe8069b309c806f6608af commit 6b03816f869529393b37d03e5d75b68f7365a7a4 commit e4f21d1436519fec3e181082c8e1c3fb00ec08a7 commit 1a3b1ea111c44d9dce9f70ba032531a223395a15 commit d63ddca7c58132257fd01e3a4feca41b3bac3089 commit 8ae664907916eba9a9d56296bed684c27318a872 commit d32e8ed918ba7384fda9055ebb31b89b3eadb517 commit fb289464f695f9d913479b4ebae9e39b057f8531 commit 1eb31338994889ac34c4f841e5d54bf10111741b commit e41388d508a50ddb2be5c2676f1992353ca2f155 commit a4f263f46961b1229b10ca3a98f0be618a9d47ac commit a67664860f7833015a683ea295f7c79ac2901332 commit 837c72b23a57e15dd363d5f3f3f268c49c128740 commit edd34368c4c3b45b1386b15f78b2229420f8c6d4 commit b981cc333ff06cb23c7968007965e79c80f5df97 commit e31372492904415e425430402453a192e2c6519f commit 16e214d4aef2d600ef94e845530a28ce795b8fcc commit 26be7cd8aacdd3f0429834e78e3166286779f083 commit 6a735552f44d7a29a9e629cdc3b5c3ac2b4021e6 commit 9d15dd1bb3e7de4dd31a225977813dda2748253e commit 69d6bf5c3754ffc491896632438417d1cedc2c68 commit 91776af1d8deb8f36cbec6bf2bf24b661b2b5cbb commit 9180c30cd61aa0b2f0eb4791c8e490c8c5abc54c commit 420a07b841d03f6a436d8c06571c69aa5c783897 commit 4fde3f5d8805caba40cce2268c540d8a37403c6b commit 51ab3b85000d214b75899875d5745935e06020e5 commit 822e5ae701af2964c5808b6ade1d6f3b1eaec967 commit 75bd0d5e4eadb9ce3e9b6fb71971b6e87c38799e commit 60b02a09598f87972a15bb181b9a62b8a8ee682a commit 89fcdf4305996f869eb39eb8f14a989e9a289611 commit 586294c3c1860ac991d3a241159c0edf974b68e4 commit 8e75e8f573e1ff4a0c93c3be1554d2bfd5ae6029 commit 67090801489d0a4c80c121494b749e1e97573447 commit 50759c13735dab06805eff0e8161d33216d6f5a3 commit c3fbcf60bc74b630967f291f47f0d9d0de6fcea7 commit c2fdb424d32204faf5be29d55f0086b611c94e38 commit 3cf050762534cc268a02793ec00240f81c6e2229 commit c518a775a843413786d3db8b5cab084597730a5a commit ade1fc91eb99614c7155fec762ad5761bb470e06 commit 14374e3eee1b02dbf162e1dd75b789373f07ef43 commit 435c249008cba04ed6a7975e9411f3b934620204 commit 0c5064fa8d5a02dc2dcc6c674a0ad1bbaf79efda commit 01357a5a45ed8eb9543183f5c9c6713ae60fc1f3 commit 8f61973718485f3e89bc4f408f929048b7b47c83 commit 245a4a7b531cffb41233a716497c25b06835cf4b commit ec8d985ff26f29d53d9ebff04973e96572fd0285 commit a0ab5abced550ddeefddb06055ed60779a54eb79 commit 0aa93f54f4341a40b05ec2ac242109e78661d7aa commit 92a020747d6c9e2efe8168a4a444576581bba636 commit 6cb07d20317c77494fa4de572887e3dcdbf98b6d commit 0e5397d8c9fe2a2e4fcc8d98cba4a12511a03267 commit 3951270abfd229e3e17c991942cd111b66454f97 commit 3d140a3d8816082f9732d6fccb81dc18823e03b3 commit aa71f9870efea70b38b17c3d2af870530fcd02e3 commit 58ae532ee875783503428610ac0f5d80e73009a7 commit f2206df8ec862073995f5d27f0f55f698843a9b8 commit 4f543d664cec7e9b490bca55f57151afe6f5cf47 commit a9bfcb56a2ef265092a4cfcd4b9c58ddff4d3649 commit 8b449f1c44d1f921240da6a3e7fc4030966abbff commit ce581ae142e24deb27905840fb720fee9b38d7a4 commit 04514c14678e760e17e3cd44c553ade1bf3bef06 commit fba99b1ab7bde41c1eb00431df37b9237be3681e commit 2db7d421cc5ca86bdcf57f2634f6eefdf349f998 commit 6e939738da208bcc0e4dc794519e18cad85bca73 commit a9b20eb6f7da7794f8ffbce0ab9c709cb1ed71aa commit 700034566d6844b3a67f4b6c3a728d9c0c8d93af commit 5a18db2e92a3556ccacc92c031db6e6a7f2b34dc commit 01ece65132e2980ece4eca91105dfc9eed504881 commit 04477e5e1e6ced4573d9bd5271572ba633a260ab commit ba1677f76b9a510d88efdc7a1416b2e778f125bc commit 368eb57a1676cef35f8303bc23f95d2ac35b7255 commit 544ef14031d0bc9223727fa8d39cd54f0fad7244 commit 147a09072c84b32746fb70139963a92c7d90e07a commit 0cc3ae930c8b2a086b802a8c7b915fd28b57c780 commit a57ebfc0b4da16a3f36bfebb158198aab3e340f8 commit e9ca4e9ea6e208feae82f72607818ac8e15115f4 commit 935a3c66eb9b66426d4be9b54666c77dbe7c32eb commit aa2bdc4843f5871e6c68fbec5e10c0dbaf10ff91 commit 4cfd16659641067f618cdd3589eda42eb2943399 commit bc3c5e0809ae9faa039baf75547e8ee46ec124ef commit b87d39019651c9cae169396cf5ae525393084490 commit 5ac342ef84d7dccd1ba43f5fa2dc10a6feda91e2 commit b729cfee705a56c6204647ac486107a1f814af36 commit 3800b1710946f7db3cb3a29cb2e218cf5df999d0 commit 50e156bd8a9d0910ac4bae5fcff00ddb798db967 commit 10e619f1f31cf126885b3e0ac43a8de9744467fb commit c441d28945fb113220d48d6c86ebc0b090a2b677 commit e8971a790370e805281dd650ec936a9b66435220 commit b43edc504ddd8902d1f697364049b0c0b89de6e2 commit 6352cd451ddbb506ce061868a9e5465d294d4857 commit f7dad0daf2c2368f72828b0729799f01bdcee33b commit a820190204aef0739aa3a067d00273d117f9367c commit b8b64595d6a1ccd5cdf56c528e921332d1366b22 commit ab9d97d6f9f1bb5de83411581dc6cdf425a83a15 commit f74e78ca90bd21b47746b90c439709007681f44c commit d5fe83d26dae59c5b52105075e8950dea8ce7c19 commit 66f54992981444cb418f31018e190d15c92d3599 commit e309434ac56774c86e79a50980e8611ce7cc31a3 commit faf26f2b12e1e03956f7e628183e422d94713e4b commit 2f6247dad2c56cfe2df3c6e00586ead5ee905b46 commit b801d8ad1b516a951535241c9cf60cac8f9a5c2b commit 79b470e5ee83e979f8ff465efa8b7ced160bcae7 commit 4f29f9cf092b2d331ba2081566be3272962b7f96 commit ac2e555e0a7fe571d46f7dcb1529b4bee00095d6 commit 0efd4374f6b41650863947a7528d45e8ad0f7ae0 commit 58efeea32d5e32fa340c7ee3f52d5f986b240e39 commit dda4fb85e433f761eedaed0005a2bc20d705d504 commit 265280b99822e5562eb431b102f2ba773c7b2a0a commit 235c67634230b0f9ad8c0185272fed36c892b1c4 commit d3dfceb58de5f897640cdd424f6c2538d9514367 commit 3b1229741eda70116e0163affdda377484a788ae commit 577359ca178262a64236cc96299714dbff21e9c7 commit 85b0cc35efab0cbc78c083d4506250bea6a755ad commit 49401d3a5c86f5ead12ea7cbe98031edb512b13a commit 543036a2de71f14f8ad566c858e5e9ff61736a86 commit e42ce1366ae806ba2c1f884997703be68df428f4 commit 3dc35cf8789ac93d656f255539f9b37c5051ebf6 commit 2cb6915dcf70a2bf7ee10fcf3f56b083beec1086 commit 542a0f2ef9ea2ccfadf2b8a3b53368c61fc97a0f commit a839a73b18157fe30eb4acd2a1f1ffdb890762ff commit 9761843250f1367043ae2a483461af287aecc879 commit e06c5f59ffe1006f1c6f533113b72ad48a6d4564 commit b3f2c796634613bca511266b37084560f36b67c1 commit 6a640b95b061fe340214ebd4638974b8b6f08efe commit cbd3e8440e2e6a4d83479235c9bf278b89360946 commit 1908a07cffdfc7c57ba5116418c3f2b5ef05e0f6 commit 218987fdead218ae0e714cd9059bc9fc480220f9 commit 9fe5d08fc8230adb64128986ee4af267a54e56dd commit 16600b7d66367482dc8526f8bc3a30b32aaef329 commit d57716702deac8e0ec440739eb4cd6eb0872ddd4 commit 10c4ad3ae025dd0e343a09d2ea4b0e71f8d10797 commit 8763e4c1a0e6710dccb8fccba96fcd6caaa50cae commit 7101ab97e3b00ec1c68d09826bb0521d17783673 commit 80d46fff373775fdea9917a7d13f6fb6fa5147ad commit cb12d72b426caa7594890c62df69fe4b83c96e58 commit 72b5f23ccb0aee46029476cbb072074384aef591 commit 3ccb9ea9976022034d8fffd8d929d6e70a24e0c6 commit 2388a778bdacad0c936dbb01048362864847f8ad commit 9d6b2041761ff6d5a33941919c8b5a805ecbed6c commit 1d6c363330834fa534c1c7ee01620ff134aade1f commit be77243327d962a87bcf03615bae12d73efb9b7c commit ac1ac694f7173a0fbb0b60ab0f26226dd334479a commit 2cfe34e18970d26bff73c63f16c76dae22138d19 commit 2267a195e28cc438cb45936c4562f958502d4038 commit da1db031cd30fefc99d1c82211d3c24b73857bbe commit 3378aed7e2ec7212889116335a2120a6e35c80ce commit 7a09f61f8e842dd027afa1ce8be8bd86062c8a7b commit 4c1b3d0803aef6d39913f1e9d2cfe2c1ccce18e8 commit e87b92c6af537843daf7da9235e622988bae7eae commit b5a0168e1406176cf98487833b7468a1ea5872d3 commit 452e9214431f1f6385bb20fdf6e1b5692947071f commit 49f594995a9255ff734f79c1fc22bd06119ebe8f commit 6ea843e01bce520cf5dea86bc30c5133e0d0822d commit e127306d433ff99f29d1b083c6b3aa128bbd9c5e commit 0c9ed6044c5d08562d38d56e94279badef39e4c7 commit 327f79d7a1d2dcc10aeda05983c4d1532dd0830a commit 214d72f62978c28fe27d22d0d498d04493e9ce86 commit 80fb7a409c64ef304e4040320e87dbb2f10968ca commit b6a93844145395068574cbbfaf3aea91d1f24f1a commit 405bb9eea36a02798631e8409f1182705699d092 commit 3e80a5b068a5fedc69ada30ba1a2d1e0b76dfc25 commit d8e4fb9112e88d8d87ffbc38fa511e7118042d4f commit 8b67e738ca17fb52a275b1cc0191dfce0e9cd7a5 commit 83eb5385b4f021c2674b1d78675bfd10443cdf74 commit be1a63daffdd152ba4c7b71ab9fec2e39259b42b commit 1d742694571655e49e11ea8f391bcafaf0f5ee74 commit b3d0c0f2dfbe610ae5ac6b2d70dd450645dce3cb commit 1da5dab029c08e178784a0750203365ea7c3b4f4 commit 3a6dce778de7c120a37983d80b6ccc8c2c4ff6ec commit aa303964bc349914de8e1d3ff7b517581839d01b commit 6d1044a070b2eef0be45f3b99274a6cebee25053 commit 651d7ee63f338b82d18273c30e9ea804ae174342 commit 3d8785f6c04a953868384db455bb2fdd0b22c11c commit b07d1d73b09ef40e91ace51a2e167391676a8175 commit 4c7631800e6bf0eced08dd7b4f793fcd972f597d commit a35806b36ea44724b21f7f110b38b5941fc9c393 commit 65657d98754c581ad66b56680d3c9ed679890071 commit 32c453f18dccd93a27d6f026ca690167c8cc9639 commit 6cc5c77300afbb285c4f41e04f3435ae3c484c40 commit c7eac19eda0a82f0c1dd9455012754445772fd09 commit c2a050c5e07faf9ed2fa1daa1eb642d9da4a879d commit e61a048eabf9d1245f86e67ec4787d2f10e5a1e0 commit 65e7a17499e15771339d85eaa1ba686ad2fe342c commit 381b590c307f29d0990c4b99ae3a2e02aff2a5b9 commit 1b0da5a3e90d3920f6967e4303fdeaaec6f62208 commit 7cc191ee7621b7145c6cc9c18a4e1929bb5f136e commit 84de5c2e92dccb2bcfd5ff68af44960b808fe6bb commit 453b0016a054df0f442fda8a145b97a33816cab9 commit 031ac4e419dfd8f099a0adba31f7f735013eb628 commit b94b02d72e2b979a32addc8f5099fcf1f6ce9e7b commit d1b08baf93352bb3c88d637055dc21187a456646 commit 136f614931a2bb73616b292cf542da3a18daefd5 commit ea64228d26fee9b766bc9615e92a319da5ef94ef commit fae7d186403ee5a9375ec75938e0de99718e066a commit 73f54d5d968264148ef81941d9dc07e35025a120 commit 85397f6bc4ff13a6bc5259facb8ebebb1986d666 commit ce19021fd99ab2c915f2b44b0df39bef75f11d18 commit d45e32c9d98ce7c22a4bafe69cee58165b59533b commit b62d943e9686e791dd39f8bde302fc27446cdca9 commit b9a577a407d99638522ba6a0fc4fb360aacc01d0 commit 21e74bf99596d91411b6b51340c05ff92a7a4a01 commit 98da4b99a0525c222dab7cd8e73153eaea062dc3 commit d1e40d8e4b4df3f705c7898b264b2cfb60bdafc4 commit da1efdb2a3e8593a9428c81a531bfd8a0c3dd66e commit dfa687bffc8a4a21ed929c7dececf01b8f1f52ee commit 34b68c17e9895ba66fc809224b0122a2eed7aa40 commit 330c1b3180b0d79fef7c05331647f3695661b79e commit 38353a5e3da0b26fab9eeff13a482b135512d9c0 commit aec23025ebc86b770beb9dab6610b671e63d36a2 commit 4464bd825dd56c2f900038c5922408d70aab01fc commit 165ab7b4319d8ecbb689f3d68f0cd6bda4d82b1c commit 77361ed89a8b03c7e121f4b8c517d7be93ccd8df commit 2d017189e2b39cf2fae63984215385401b77ea83 commit 0c56705d8aae9696348cc320b71d531ede001b79 commit e5309d7f66105011e0597fd55ff2ef7f636f52c6 commit d8791dc7f941f3dc78ef2c6aa71d7c752d5b529e commit 8246370341e8e816ad22aaf8d8bfca850339ce0a commit 874714feff3128dc691fc309ee8b9d479f541aa6 commit a0b9e4531b2eaf066a1ccb2986f4d2f9efa6c313 commit d4965c53b95d7533dfc2309d2fc25838bd33220e commit 6b6d12b6ff204cc224cd2369bda2b0580a80a5b3 commit d445dd7b39c56a66872386a3ce0c8a862e59be46 commit 9d001360b47b792a475250bf7ef2bcfbd17ba09f commit 44961f6ebce9a7dccb2ec3dca312c5dbf85920e5 commit 6bad4ff84cb57f548d42a41091159b750eed9ef9 commit 6651875ad7796ed3cd84b3bafb3885d05bb543ff commit f9f4daf15398c3aa0aa2dcd05ed4ea2544bcc62c commit 2ff6a14b20298db0763772b62cd4fb030e6d7f75 commit c6e3806705d679edf135dff5d540a278fc406f15 commit 81298056a78c5163b216f17d17c43736e7069961 commit ab9db127ee03487785509f960e7b5b91cdb6b92d commit eb20cf30c57c37ed05f44966dfabc2c34bf46cab commit 5821a0bbb4c39960975d29d6b58ae290088db0ed commit f09d2b0bdd78ffd38227426fb2ceab7ebd141391 commit f06d1d66d54c223e4f0f73393d94afd88105b6f3 commit 24b8b74eb2eb578fee046c70681000f61afa5680 commit 7f35680ada234ce00828b8ea841ba7ca1e00ff52 commit c5cb0002d14b6f7aabaf7d67d0515fe70aea7167 commit 17f65658c8adce6233f9e53be59d399af6180059 commit 20e10881a043af63f2962a9e6bca64661225b383 commit 594740497e998d30477ab26093bfb81c28cd3ff1 commit faa406f4233ecbd781554ae0a850e56f53003d2e commit 68e355c00f2d58ba0426cf9a4d9df77077493018 commit 61243c173cd26fc8c6bea74d6d47a37ab520dacc commit 143fee0ccc97284e6ece1cf86b7d50721b522448 commit 0dc662318d36e060268751fbd3309660acd3c5aa commit c55300ad4a1814bac9191a4d2c7b0d74273aec7c commit 6fbfc3a23c98bdcda679161c4f4e31368008af8a commit 08a2fd23c6c21e5ef24248a9c1b09e929655eb3b commit 136788cc74cbd9fabc2922b77bfdd38a53eb7155 commit 87d6b28e4a753f4a0572a695fcee094510dc6519 commit 284498206f31e655fb61b1e08d0506dccbffe55f commit c4d7738c9efc81a4f0364da1e673ab1b1cf91735 commit feb54650bae25f2a2adfc493e3e254e7c27a3fba commit 0f28cca87e9afc22280c44d378d2a6e249933977 commit cac3bfcaedbf4d5c93cabaa7882f243099afb8ab commit 4e2d10443580d934188f226f48eda7d650711e03 commit 0381ac3ca2e727d4dfb7264d9416a8ba6bb6c18b commit 851dd8625320fb626b6ab6399b2402fd84abcdfb commit cde83d47482e2578432f9ce029748f4f0d029e9e commit bb50bba9c6c741f5e359f009dde3b25f12a84e3d commit 6f73d6762694c3e91c49e6708077a0de2a75f2f5 commit 62f8f5c3bfc2968461b0a74f0e393325bec16c69 commit 1b3aa89550a2ce4f4af41e11162c5cc0b0b07b4f commit d7053e631e891698f7532712066014ca140c8ff3 commit da4d45b7da937dfbeb918b87c66a5bf9a3079ed8 commit 26c763875e0c15921a0480e008e2be07665e7f56 commit 8728df26dd24a63b24e4e5a6c847172add2fa149 commit 9e68c3841390c43521d4fde6c51e91fcb2d4131f commit 5b644783396b2150eeccb9a079498cad5dff3c42 commit 64f6516e60b0bbe6abfc9f1d9f1999012e0f11a6 commit c11256f82ec82216f69dafee75b3d854d92392d1 commit 6aed665f9d8368ae1e962f44339150884bb47f5b commit bd63f11f4c3c46afec07d821f74736161ff6e526 commit 430ac054e5ea172a880e07da494f65f0b80d8fb8 commit d9c1452c0f07c2e0766a6cf3921eca182e26fdf3 commit 20f038d074d4fa52e88a36bebf25e81c88d7e6fd commit 9e9fa6a9198b767b00f48160800128e83a038f9f commit c24968734abfed81c8f93dc5f44a7b7a9aecadfa commit f17c655cfb99796918d96ae25261db2640407d01 commit e0d7371b46c7b47cdf5391717292033365801437 commit efeeaefe9be56e8ae5e5b4e9ff6d2275ec977ec5 commit 5c57c099f442acab13129c9e15ad2a0c31151c98 commit 9cc4853e4781bf0dd0f35355dc92d97c9da02f5d commit ce19bbe46fcfb88e75a6c7f691df4753a72daa81 commit 7aade9ceeb88d8ca674141d2c245f0107032afb1 commit 4c59b571fce6cedefc1c8e5158f7548f05c05ed6 commit ab9a0b1f3661157d144fb744f3a197563e8e0ff4 commit 25a2b22e4148b1ac91960e13f4f5de020ed04d05 commit 2f83658ffc8c259f05e79dc632e34b26bb8b75c5 commit b5fd0cf3ea377a7332721df8a8c8e7715f93c8d4 commit cf727044144d47c3e8482b9a7775bd3f04a87341 commit 247c7b0dac3cf1141b8bf5520adf2fac1a797aa9 commit e3c60b4ef42d4db5b8d1434fa1741abd7f2fc850 commit 5d6ec040ab44d23953a2efebfe02e41337952be7 commit 7fc83cd079bba8b96b0f46e31f26c8f31c814146 commit 7d188c521d9ec3650136e9b9c81c61b22a544ab3 commit fc801750b197d0f00c09e01e59a7dcd240fddcb5 commit 930e7cba1190a3251fcb01c8523ea9aed89d9a51 commit 4af48f1d1d0a6f050ffcfe83e939c9455d51267f commit 1db4b5264819a8e3aa62e38287bf1da2e1dc8894 commit 5c57cbc390b166950c2e6c2f0c4edaeb0f47e97d commit d8609fd1e0742ba3ad2e51bba9dd489dd03d8599 commit 56426faa1492289ff794620c4ed8c1847a420d0a commit 254a8d0c0071255eb19a81a32ff8d5a0beef1e34 commit fc8adb13d844b44c147b4dced292c74a1ab5cb25 commit 16bd48dc2b3b08d8b3160182b42e51eb2c274706 commit eb6b94db2f4a585d4a9b8e503d7377d2a23c1104 commit c750c4ce1ad69d3df68359abce70ee3d0064c97a commit 24f6fe3226c6f9f1b8406311a96b59c6e650b707 commit 16490922a95f4f67eb9d918f94a4f5b5bdc9eb80 commit f4e3a12bf2d1983b8f352b7719794c52be7e0990 commit fc67615f4ecc3b66bd458840927272aa131eface commit 11a8d095d86854bbc8697525f2c543de36bf5804 commit d9307f27efa531f034862bccf2985c5fa22c4b80 commit 407d63b3af881d17c39f16cdd8416adb0e4658bc commit 6537f79a2aae65748d402d6c46e79d9e473d42a9 commit 019fd800cf4a4514bbb502a52d376b01f02cc347 commit 9f1c8677724a0e6a6ac7a74d2b0192a584df859d commit 623411c293d180ed51f1c3b5753c5acf2c2a4077 commit 97708335b04df3eef0e650b0601cdf6c5ab16dcd commit c9ae7b866f32043d23a34d00a5e6e8d86d2cf10e commit 9affc1b87ecba31458567359b5a28b0b08920a24 commit 72aeb6ee0c78fafc476c02d1b19b5b38defcb57f commit 438eac25d033a1701d839bad16c6ad78f683a293 commit f2a5002541d0698509d4f3adfbfcc55a9c1e2dd1 commit 5089c4a8ebea3c3ad9eedf038dad7098ebc06131 commit d52ea3dc65a9d504afa7a03ff24e17866670bdac commit 526e6ca5d1d5fd22c79033cf5a8eb07d98a11274 commit ea937ad6e925994b94d17555e4c2f2f9a99234e1 commit 1f474c8742fd53a048cc8cc4b20e20b2614397eb commit d6aa8424bcac64b2608452589c9a09984251c01c commit d11737f26ffeae88350b835caa37c7449da22550 commit 272308add589bd46ddb5899685e25fc9f6a58b1e commit 1a65327a84db5b9081a51ccb1c562083f59bfcec commit 9731dd4cadc53251ef80b3655c8d841fed52fa3d commit c443514a7d6d648bc497efbe502e2a49738b94de commit b840b64bc8ed3fc46f6d6aa7f97c43862a33bea5 commit 71be4b16d39ac8b25a8a04eda66cb65581e1a03c commit a141d2083b462505727e14d98db5fc3cd43d59c6 commit f51d22b0d04aa33e94d663fb63aa61e4da168523 commit 5f034aef8479ac80e8732958dcb66b8eda650659 commit 85ee819fd08eff7617c186775fd958e6258216db commit f69e98a91a01fd7c5755dd710e94a17d6e9f583f commit a34136a3b3526369e1b3e678590e3760e7653f0f commit c2fbe663ec4f991832d67f936d3941f781884156 commit 2bbb54bbacd674c692306351d1be5a9b5e61a1e4 commit 28fdd0c32daf9a50a606530d54784fcfa29d88b7 commit 9a4c9de4838fd8ccfcfcfdcd7bd472dddd11f264 commit 3de58f22f544ec9c692993fb1f3bc77163d3d5d8 commit ebfb15262af3bec6c3cc263ce04164e44eea4b30 commit ac31a24d9188a9599dfbce7664cb11e6292873a5 commit ac78fa502afa539cce3a285e50d7fefaf4d2115e commit ba8b460445f8d19d530646729c29319c278dbb38 commit 68ad7f90c790a178f47ef08408d97a81cbb71b37 commit 914da384ae9a77079314f07022c18063c7e77778 commit 4e1db0119c64fd81509005a961790d263e99b21b commit 2595fe04a44d8ac7a56db27dbd1c54698d97fc0b commit 869968225718ec7d77c418e2f6be996206d0428e commit c78783f3227f41053e9a44f536d13f05383b875a commit 8d2ba05b099aedfcece0326a5bbb2e7cc33261ae commit c435f61d0eb334dc8367164a125aea45d9dd9508 commit 3f49f7591e7150c502aa8d04354941ec2394153f commit abf0ba5a34eae0d7359228f4319a6659676fbd0a commit 0f95ee9a0c579ebed0309657f6918673927189f2 commit 1556c3b4c7ed2c8f17f200d53897251fc68b7377 commit c0c87382c1a6985cd12a49a62a893361e5fd1b8f commit eb2983c09f4e053f2c3362763f5e1073b5e4cd7d commit 04770b082e2a207804c633fbfd5efec28cbc5673 commit d6346ae0779ef9a41562f5357ac28aa6a69b1c81 commit b8fec4400923eb91f995d7dbe97411b8991ea559 commit 651d4a0fc4c5c6a2d20c95ef814f0d4381f71d55 commit bf9719f8c89addcf1947ce2b29cea29ea9d8f875 commit 0256ea13d169e9ef00ef1b1c9df395b1d6bad6f6 commit 5c9016b2ddb375662aff802d25c96f5483a4e024 commit a50cc4955623685402ed6deeffad7df93591a416 commit 7a710a8bc909313951eb9252d8419924c771d7c2 commit d36bdd77b9e6aa7f5cb7b0f11ebbab8e5febf10b commit 8ee53c702f23d511b7f635a4eabbb85384149f8c commit e4a8864f74e9e9e4a7eb93952a4cfa35c165c930 commit 45c64ecf97ee370bbdbd8eed7aed9c8ff5d1b0dd commit 88436dec47a89d944e834e27d83a5dfd49d032cd commit f0978e92c2f7e9a38fa05d30a3e901d16a30698a commit 109406c92f971e739af04b278ef75dd0fee68a40 commit 781c336a6caa67c68fe3a25b108d1dc38b0e7cc0 commit df17ff62b626554c6048bf435a87c5fe1981e8a8 commit 3e29d3b318533ad031396a40322e0ae1aaece943 commit ac1b49be7fa8cddcc194ce66aa453e2b2cff5831 commit 319ff09312934b08b532e605042dd59f41b74458 commit c5dc92006d50fb55a916755206cbac1022373134 commit e7858254f9af9ad4f1570d781666e3af4c298a88 commit 3fe6c7f53eaa62e3700d8ae076e9c42a1d855242 commit 2ef6efa79fecd5e3457b324155d35524d95f2b6b commit d5929835080a60f9119d024fa42f315913942f76 commit 2b1333b80885b896807ffb6ccf4bc21d29aa65e0 commit 2c7676b6b1f57713f55e738f803ecaf91dfc399f commit 47fa33cc54615161ec5192389e55f3b95274f56f commit 6434cf630086eea2d091f122f5802582a05d9d1c commit b708b36afd5b5f32f7cd49b3bd4ab524698c3627 commit 93e163a9e0392aca7d720491100d810bfc3112b0 commit 1ec17c26bc06289d368e2523c0e95b5038c6eeb5 commit 96988a526c97cfbe6664e637640dca9406b0b928 commit 1039fb60463cfeb1fa39c6c48b5c3afcf5b89948 commit 3818715f62b42b5c0bcf456ded3f59ed3908cd6f commit e60c4354840b2fe8e1c4df3fdc5c17039824ff96 commit 89fc846675537f9f6ef62271e9d60556c873d65e commit 993a87917c2af59efb0ee1ce43c878ca8790ba1c commit 03e22ba090aa42dc029c25dbd58fa4b941c87ec3 commit 805245071240ae480503af29c7e31d2d7ff5c7f8 commit 255490f9150da7c6dabe468f3a877b92fd0f02c1 commit 720cf96d8fecde29b72e1101f8a567a0ce99594f commit 90bb087f66745ca48f6f5e43df99a1212d89e712 commit 7c1e1c5e0eb66bcbbedde92eb2bd988016cf2716 commit f16a716621a6edf4eef2ba1409594f5c780ea09b commit fb84efa28a48e30b87fa1122e8aab8016c7347cd commit 5e41b01a780893507a0508f16b9c4fa7f7a48557 commit 3fa214eea43a07c239bba54426399d7d175d0454 commit 47bef230225b8d295255d88e130edc0b45ddbaf0 commit c0398df2a195fa21122e566f54c1f78aad22ec47 commit a960e35ac0111b793dd07f3ce6dc3e1981f91679 commit db9b4ffbfa82201fd7e18f6e434469f3648a8bcb commit a64af136771a7c50818fdc23ad4ce140ed7b66c8 commit 15b9ca1641f0c3cd74885280331e9172c62a125e commit 841d742f094e00e514627bde65d7822e98fb3e4c commit 2327b13d6c4758926e57b5b6c3094302ae3b5e9b commit 3b5765df375c90d46316822131acdd5cfb1c5869 commit f5aa7d46b0eec280ac022664f3e8b6bc9f4ee099 commit fc98eb494c4be6aed076c1ad21d46d5950415ca0 commit e1b7234b4a3f5fa716a84b081cd0d0245674f761 commit e21c3adc6fba27a5dfe3fa5e83d947ad56cb27ee commit 87a3451e346be3f9a5d8943ae094888044314631 commit 7c021558929f7c80ed07e83a91d0905c31e8cd9a commit 4ed49c954e35559cb4a34ba049a15f54ec7fccf6 commit bb4f196b47b6554ba89f02ec60246f0c643a4bf8 commit e751e4be1eec4d427d91583f31ce56ccb5286a27 commit b3e73cbf17a95a85e3a943d7500e9e477d6ab9c3 commit 1f43b8903f3aae4a26a603c36f6d5dd25d6edb51 commit f7ba887f606b1895dabf718547cf7397924f0d3a commit 6626c5a4ea2ef1bba3e02f75f797523e168fe28e commit 8748de873fedf4d55bdd99bbb738ee7ddf329792 commit 51c45e450fc8529495bc85c2d8e309816cdcf959 commit 1320d6c7b0deb7219701a55397e93e6c73d00366 commit 262236b4f5a7d2fe31ed31d34669a9ea4f1c3272 commit 0081bc072837b66587904e6988aea1e0845b0294 commit 5d763a9955f0fbf2681a2f1fa87c416056bd0c89 commit 4dd905fd9429626937107ca13770aa836c8a7e6e commit 10a36226157035e84aaa58e1699a32b3de2755af commit 052eaf6af846e59073a842e9b9517ba9d3f76d4a commit 84a8b3908285d007db49532fd4b51d4b183d1242 commit 4d31819a3746b1f33a915546a4b1aa19374d1544 commit ec457f8378901d673b841e81d289b0165286db7f commit f04d275d94e164d24516c32437c988a323018f63 commit 06f2f7772dc7ff2e3734e654cb2d0b588076860d commit 3ab55e3a1ebc22c1e0b7c72261a8c9fe78a3a09a commit 4b33b5ffcf68de3a43e7dddc91c5dc86e6ed8587 commit f173fbe5b042e1c87593e3b06e85cae0094dd867 commit 98dd398aa3e021896adb7f2b1d0f6b2d3784610c commit f18368b686a86477a79bc240a3a1c655d88a2348 commit 95133f41b090b09ba9163b4469cda1d5ee230cd3 commit 2b96b036a6a5767b84f87edc2c0a1c70c91ebac0 commit 6bad8e4a0ec8a950d10d91cb1846f3ef3e1f4ae0 commit a3e731260b9325e2e87baf54f07619c6cb83931b commit 0bbd1c7de319ca5a08359e5fc901a0317bf5c0d6 commit 20cb72174ddcc86596286784416adb947195e45c commit 990cad0e4a9df4202cd482c192608caf6408e4b3 commit a30e8c13e7affd6fe379c6bf213133b0f917d1bf commit 074efb5cadcb3c9e40d536a730318bfab3384cad commit 04e6931a76e592e66e1014ffe4d13303ccac5d8b commit a3a885878e74d3d81e4742f8dd84faa27c8863ad commit 32e8ab05ed81c995b92f12b590c12ef951ca1129 commit 3e838f7ccf64b0e33a2f6d1c66158cc5ab04c86f commit aeb73c608c5b7fa6fad6d98694323e7629e93cce commit 2d7a1ef85d013699ef60068a9f37ab56ffb33c32 commit 2b2db1f9dbfbc61116fec83a51d16fd0cf49b61b commit dc597268225b2e39bca0bc0c5394e3e6266be2e3 commit 43af2220b3302bc04d72bdf07970ebc0fc46155b commit 83a3439ddb28e15afa66f52650cf3c1486ae6515 commit efb4fd107cfd9748f777a4e9015d803d3c9db68b commit cb4b7a23ff85740ed9e0a3aa4c3c0195654a89d5 commit 163d4cd26a18db7db68a98b4d1ca95d542ca72af commit fd6ae969cfa2b12c6082eb83bdfa648b15d9b3c7 commit c85c623ab406188da7969180e53c4b61e8a982e0 commit eec53143b7fe1ccaace434e03b5959c9117bf9c5 commit 14d6a086f6b91238873d3363f840a91b3aa062de commit 7482a65664c16cc88eb84d2b545a1fed887378a1 commit 7cd6bb82ad96fda0021421fed8750a522dff2aa0 commit dc6934d5ae007ad53c88c3e0b9685160a39ba896 commit 62a4ddcb79e073465f21c5cf84d80a2f22820c39 commit afd5cb3907eaf43e4ca88c162b92143551f0323e commit d976521a995a817007ae3f471ac22b93b1bd39f7 commit 0dc987b699ce4266450d407d6d79d41eab88c5d0 commit 009a3a52791f31c57d755a73f6bc66fbdd8bd76c commit f4f9b827d76d2fa23c2a2359b4e9fb417deec61a commit ab8529b0cdb271d9b222cbbddb2641f3fca5df8f commit 543faf57ee0ef6feb1ef60122c0abb9097083ded commit ceb180361e3851007547c55035cd1de03f108f75 commit f12d07d6e9f22bbe65d158de1435ec515acfb50a commit 64e06652e348f0725368853688d3c15784549fd2 commit 9ce07d94c9f80e1b33f5f6bc2c5a27f6cc56a6dc commit e0a9f1fe206a66c3507ff8b7da56f9d1d1dbb9c4 commit 7ac20b3a6a6bf1181a6f9d76c4d36b2395ae8922 commit 876271118aa41097d035c84f99648746b4a125f3 commit 373269ae6f90bbbe945abde4c0811a991a27901a commit 421f5410965dbc65b7bf7d2b2323203920ad370c commit 3d313f09f31490cec9d5251b59adeb6542c944cc commit fa3dab48defe1ae2f5a5fb56df5f5931fb3e45c8 commit 508f748b03949143ccda614b900e3f7d842251e5 commit ff83e6e7ab042e1f6f4345be1837d08c41b0a49d commit e77a541f5dea0a2ff9d6a40dcda9b284e1e736fe commit a957995618a8afe3efa2b5746c0a954bbd450882 commit 10a9035c36d00586ad4bdb838f8800be951db8d2 commit 50ef0cacc43c5b01d5d1d65f08af33513b07e2c7 commit f64e6e0b6afe047cb0d34a5369597fe0d188e94d commit 5027605aedec363b3209c17d382efe5e29211594 commit 7fc494f9cf8ec7497d4aab26a3b19deceab0fe31 commit 366e817e83e4d795fe3f6e7379bfe79d49cac89b commit 805ada63ba0567b15d10d40419bcc5e6f0b461e6 commit 232b95ba4e83ca0a77f19fc772ccc6581051e5cc commit 5e8034364c22050b8564060e79947d094a65d45e commit d54cda74a9a27d6a18c6b670f7299114272a5e50 commit f9bbc1c8449a51a049a1d6d436eb973b00b6cd7a commit d3a453416270f5c7f1bf409597d702a2230e5a6c commit e9fcc60ddd29994a8b2a276ee9b454d7cd449194 commit 803481d869a4c49337c9ae40197c668e365a6fcd commit 8c56d5105747189c86e6df975257580acb2dd223 commit d9e74da2f1fc42926c6ace1bc47a700f88ada696 commit c974f755372bceda2c3cdc31b4b27dd772172203 commit 91c2cbf9b6a6779ee428955fb202ae66c750aaaf commit db475c11cd592d626749c9ccd98f12c05f29ed88 commit 103f06fd478106fbc2394030599db5c852b7fa32 commit 9126ef85f2b8654060929c5b6a876376702d1017 commit 25ba9429e0f40d3b725781e70d2d6b9ce47a0df4 commit 831463667b5f4f1e5bce9c3b94e9e794d2bc8923 commit 2a9e9daf75231c2f577209af5ec62aecdf7ca7af commit b00de0e237da32793dce221119c3120b8276f4ec commit e5d6eeead88e40282cb6dff38f8effd6341561b1 commit 5171660cbb14f3359e8a8bf7523afb0789fe1bcd commit 7283f862bd991c8657e9bf1c02db772fcf018f13 commit ae25885bdf59fde40726863c57fd20e4a0642183 commit d6b9af1097fefa7e6509a4b2f03af45f9eaddae9 commit dc2cdd17d1fe25c8d25c306a90cfc9ff17a7ca4f commit 016a14beac6d407c9a51f0b92d1e586a00bfc345 commit 138c2fca6f408f397ea8fbbbf33203f244d96e01 commit 84509eede6203bc5ab43ce0361a6ae17e2a17152 commit 8f456104915f0f991a2ce059a640b0a6f807e2cd commit 8524bb67145d8a2b495fabcd4b5643010ea43353 commit 7d8097073caa334ed6187a964645335324231e01 commit 3cdcdc34f35eb4616f7e5954cbdcd3390da8eae4 commit 04155815dbb8320ecd17dd54e85c9a5ae5d63bb9 commit 12d74553726675b5c991251f349422a24c575e56 commit c92df6aa397b5a37cf06004a219b4fdf26234dd6 commit 5ba584ec1101cd63081ba7c228849acef962f6b9 commit d5a680548eddca0e2e01fb84b85c1f7687355e21 commit 2e25ae522164e8586520ef20bddbb41c97b0057a commit e97f91e8d39f8f5cff071d847c2d192904e35d0b commit 95be40c875fc848d99f231e77b341e7ab5d8125d commit f7fb92cd2e39357f14846d69ae0e1d8692371f82 commit 46a3b1125308f8f90a065eeecfafd2a96b01a36c commit 7307e91bfcd0e3f123aab01b30557f93923b6d73 commit bcb9aa45d5a0e11ef91245330c53cde214d15e8d commit 59bcdb564b3bac3e86cc274e5dec05d4647ce47f commit 0667429ce68e0b08f9f1fec8fd0b1f57228f605e commit 58eaa6b3fb636072a4f19e6b6c76bbf564e95b95 commit c83375699fc648f94787d00bc615e370cf8f5fa2 commit 9569ff1a188fe48b46eb1ac2ae4543c271e0d4c2 commit 882d90310f04f3f90753653b8787fb4d309fbbdf commit 01cf387b1c7f60527c91627528370f463bcb84f3 commit d7f0c8aff01340c2bed48f1e712a7f17c31b3db9 commit 1d3182006cf6eea26d0cd752f8042c3cae43139b commit ca0cb8959f7b84742c3dd612f5b044788cddfcc7 commit fe4e9ff9873758ad07e6f7b3088ae3a9dd3ff1b3 commit 5c4904ac34b76eb58abc15a52603ee59bf8be85d commit dd70748eda3f63217d5284f48651239a9721245e commit 9e225fb9e636b31b97e9d35324c2f9e43ee0aab4 commit 45ecaea738830b9d521c93520c8f201359dcbd95 commit 9ae55f030dc523fc4dc6069557e4a887ea815453 commit 1c4dae3e4639540fb567e570cc56a3c292afb6fe commit 8c07f33ea096a1d25fcefa4e904ce50aa2358876 commit 94dfc73e7cf4a31da66b8843f0b9283ddd6b8381 commit 8587f3732b37a39de205d8c42f5448dbe6aa6b55 commit 1796c0255bae9d3d4528b8b3916182b2bc4e1e71 commit 50ca65b44e50e66e370f34e83a1d04a41bbffb70 commit 5bdaaf4fbf85d47d08f76f41108d8d3bbdf15f1c commit 9db35bb349a0ef32184ab68f79cc36026be4585d commit a06968563775181690125091f470a8655742dcbf commit 79398d24da4c9294285bdedf67018ff09fe97bdc commit 0b58162e1207db5052d1fadd5a16eeb90720d765 commit d193b12b2fa6dc316e3ee8871b4ec05992bcb7b1 commit 7bb97c5a39ecebc8ff5db1491fe4e7a8129f93d5 commit 70f1fcbc83582419fd753701c5abe674e05db785 commit 01752681f1ee5febc9dd2da23f5dc0289ea125a6 commit 2639d3e44f9c15b3f29f79943ed58f769faeaef2 commit 46d44516aa6e142fd70287e829e3bbad0d2ed35b commit 7268f0a9e842c52fa73b9f5afc1bebcf9f7d48b7 commit ff15cea338d2c78e0086d55c8a9dd637a5dd3ccc commit c5cb2cdf23ceefd9ef319d6c0d6ac294dfe356b6 commit 5f278dbd540b7548bc5193552e6d478255c14c2d commit 6fb5ee7cec06266a29f25ecc01a23b9d107f64e1 commit 6e9c65f71eddef88f14b7210bbf30e6ce2409b87 commit 02b16fbc56e97b295239c83e43f186c191e42dd3 commit a819451eda6df8f8445f9c7b093b86c4d1919b62 commit f999b37eefd7f1d59bece1d94fa0dbee2f2d62d6 commit 6aa145bc943d34bf05f2bc24ea3aa36d70470f1d commit b71c0aaab9ef1054155a075cf5e8a1db7b37ca5f commit 964893d3caff6bc39f6cf5cb7d90fd78a810c535 commit 3d1ab66e043f2a143e4d93242de7710a9c98c829 commit 89f4b4c53a7c12d2feec0ecaa15b0493b2bd61e6 commit 18e3c1d5d4cf6bd30cf1f1bc10ffac7a05a6719d commit b1dee9527e654207c0980023fadabdd12d3dba80 commit e61f294c7e8da94bb1c9d66f2cdcebfa2dc535a2 commit 0f36d074aeb51a20508a65861d1518dbc231a1fc commit 87a7d5350c67aca513dc0a80f696d5583430d594 commit 3019a8d7c1891ceea55820ee0f7bb36192181aa4 commit 90d5fd317c745a80019ed7f12a1933ce6116e0e4 commit 6a4a1f6054318cd3590562668798304b4351ef36 commit cff35798fad565b5f8bbf4ef84ac698270dcaf64 commit 7d4705b33cb84bfbba04de153d4f5e83041ac393 commit adc0e6ab0df390907228abb76c6bf82382089af1 commit cf6067290034b9ebbe4c39733b1a4acc94876c26 commit 395ece6f14124c2245e4b7fe74932514f999faa1 commit d7cfea332cca483ccd3970ed4de73ed892643e51 commit 163a5a58437062ce4dbef2aab6de4d784043bcf5 commit e0f1e65b836c42741288a367eab565167a408b59 commit acac270d09828edda2d530d255ee75ceb87583ec commit c7f21978fa6aafaf7ad37155c7d3a217dc3d16b0 commit 46ae2af9a8aa168cbad69f21bb1426771339ac9a commit 414e9f520e897818302a6b1729aa2dad8cc928ca commit 3db7f894549a54dd6f8dfb7fe213ede83249bb94 commit 971e4a9781742aaad1587e25fd5582b2dd595ef8 commit 0d8928a94ba18205cc7b41793af333e6731e9d76 commit 071ebbb0d4826ce7c47953b955a522f503dcedfb commit 202804b9705ce26788c443a54aec47eae20f4596 commit 780f97cec866e1ec6967c66c2a1f68b8aa1e3f23 commit c5da61cf5bab30059f22ea368702c445ee87171a commit f929217499cf54a30be995aae65e9951ba079c90 commit c6a3d73592ae20f2f6306f823aa5121c83c88223 commit 3f4309cbdc8496373875cfce67d7b5dba87c3ccb commit 141f733bb3abb000d3949c3b2f119751fe93b0c0 commit be4e366602303615cecb7636075bb18b0d3cc33d commit 1dbd07e088673dbf0e10f4bcfa17f971fd870195 commit 525e93f6317a08a03cc42847b3e075c92a382c99 commit d42a738e5ae5a73212a83414648a4fae524117f3 commit 71b1669ea9bd962d419aac41bc179e09e504327f commit 938d2fd17d173d0489b1bc96b87a1dd93954dc28 commit 11f01dcf3b32d01982d99df4492feef4332cf0b3 commit bfe53be268afd2248d1e28b4520361693c1c0fce commit efeb3caf4341357a7f4745c0da643b13200f0b9f commit eb1c535f0d69e3ec7679d4d714bb2a9765ceda69 commit 5cd561688b3e8a248fdbb37a1b10801b06736865 commit 3b05c960788439dbb47d0e62335f23869696b079 commit 8618b8489ba6ecc025be033d0fa87c0db53f5211 commit a913bde810fc464da6f12f3f19f3483034cc7e16 commit 3461b040a90d723c93c9d1c7c11e3464f5cadc0e commit 170a41e9bc07618d164f11b5154b449e9c24973b commit a6cc3c72aa0e8fb10b695c1a0c4ef07a66b3c2b0 commit e33c267ab70de4249d22d7eab1cc7d68a889bac2 commit 1926a6b75954fc1a8b44d10bd0c67db957b78cf7 commit 21779cc21c732c5eff8ea1624be6590450baa30f commit 1981c35bf7533d70f295b184bbb638d280fe2f36 commit 207d2073c648614dabcb06863d990f0c2a32c4e9 commit 73289afe03619bac585b69f563d0bb9a52e67722 commit 72bd9ea389c70ac948f48d20c0e4ae70c0153940 commit a204f9743b6808ca658c1bacedb34bf4c7e6f800 commit cfb979f71736361ec564d47d0a41f07e09983e32 commit 4bdb9d6501763e83bacbf26846754c567773a1fb commit cbe07c982dbd206defa10ba539e046767179edb3 commit 26093ce14b75bb0c4f0088abf2e11c351abc18c3 commit e0e146d5567317d6ba7d0169bed55d1d9ea05a61 commit e72f03f4bdc4f3a251343cf343bce28c28cbac2a commit 85f4bc0c333ceed24cbc9f69a2a77fab1ae3d4d1 commit 90f33674a0756a6f0907b8f6350cec3f7be4032c commit 64a30aaf0b0d9dcd52af526652937c1350a948dc commit 88ef4c5bb36bf60b317b74d8652c7766c9272a7e commit 2b2b3a751b29a09942a15bc0c4fed940b7ce1857 commit 740ccea3d36732346387ce882c50a7e4c3599316 commit 15360d7fc35b6b0f46240659a129c9255345a41d commit 7e053bab30e3a97bb681cec207a87413a024fc22 commit bbb6e5ae7ccfed7be06b5e8f99602100d4251d5f commit 00fa7f031dd4b885175da390e24cb02f6a45977e commit 48e03843f99857a561f25fb8e583c9a7dee5b81f commit a5eeb70de411ef8b1cf5d97806ed6769b84be872 commit 97ca308925a50aa80711ccfaf814fa3898374862 commit 82a562ab5f0a918ef905c29c759b4f0c788754d3 commit e73b386e75586f28b9b58641938ae0feb340bca0 commit 6366b00346c0fe8ae95d91eed3dd2d04f77729e7 commit 0147064588253b9c07766bd6292a6159475c2790 commit fff7eb56b376cadc58af14df286009086cc4d80f commit b3859b16d27fa58f99ad6221ea427dac7d751e70 commit 7c50a3e99a2eab5b3a9f273ea9e40ce919a3a3e2 commit bc19909f19fdc8253d720d11c948935786fbfa08 commit 0c7ea6f824345ffbb3b4ef880c7c56170365bc1e commit 1daf740137275aa56858ea1cd194eb3c1f6da5a0 commit 22676bc500c27d987a0b42cbe162aebf783f1c38 commit 8a077d9caa3a274de36ee2fe7b608041f5690343 commit 4984dcdc1f78529a0c699c1931971b7bc5e32a04 commit f64f3a72835fc63069a87c2811b61c9a73033c72 commit e9a7d236eaaeb1cdfe20e583e2e1899b26d7469c commit 9a714dcf1039d1142a1c3ad81db09d2706230e00 commit 8bc3812d0b33c214c365fff5dfb65397ad6aaf19 commit c1127df9515ca781940927deffc5ae657ed73a5f commit 09de5cd2c170b19e04e37439a712da52a0535015 commit 3b779044c81754f094ee88afe431d839e3a74aa0 commit b278b738c3be4f383796d09ef8fb6e49fee2091f commit 7acd7ab0297a37e44df928378f53d4260b25fd2b commit 427a60c1c30e1c0e9d0800a63df51985aaf3a26a commit 81990c3c07905af1e316f048a1ff456b2be224ad commit 068ab0cdc1a97628f7007b568adadc2a1fb08384 commit a00a3cef25a969bef8cce011c34b76071756dd05 commit 3e211f23aa1e1a3223edb64c4bc25cae28a1e3ae commit c3c483391bb23e9bb8d8a51e54fefcf508b1cce3 commit edadd6fc28b24dd5806dafc4b38633494ff423e6 commit eb08accdd8d966e4027f8ba52f43faffa3e6dcbd commit 61e419f651a65ebe01658b46bfc317896cac0eda commit fd3bc691fc7b4e553f49bc79f86b515ce2638141 commit 2e02ceb73ff87193618a21c2fe165632f52b9b9d commit 89e2b4373ae5215f5c5d1b7726549950daa77018 commit fc25fd602b1e101a45650475a8d2f00d7bb8e971 commit e660916b7f4dd3f17e5f28707213b66c1553d83b commit aa1965973cc734bd61294b675ac9763cddcac0ed commit dfb02eb6bdf84697dbadd69a7df12db612ce4ed0 commit a57e7345cac12ccdf883f9825523470850166635 commit 47a4fb46797016228198e63a7aa679841f80889c commit 90f5514bcc1a40de3391da552984717fb83b16f8 commit 819da60d77c9f0ec9f069cb27952501562a2e17a commit d8b599bf625d1d818fdbb322a272fd2a5ea32e38 commit ca1dc50fd5cfd7420faa46183f84bc203fae156a commit f24d1d45084155c59a135506a37bc4db10703fe6 commit 3d9c653cf635849d0c24a1ab17c2752a19f4ded8 commit b94a1a207de5e06a55b5a8259073fd8d1637f093 commit 027c38b4121e7d9ae43b2fa21b35582d1aef2a05 commit fce7bf30d3309ea325a7ec452456f8f7c079f622 commit 7d261c50d9c1adb70f6ac2e26edbc64c774c21ca commit 371409df9236bd1abedc143e76fdd7080cba3ba3 commit 1f374171fd345aaad9fcb30ac3acd255b5cd2076 commit f72fc9bd226979c272d6f829a3c60c3d9e8dc969 commit b83c9e3dd5b5dabc507e79c3f03e700a20b2a4ee commit 30ef0808e61850ec9dd105fe0a21f7f9a7c69324 commit 34ce1a6a29db41d5d4bffbab0872b1e1876cb4b8 commit 75072128d704576c39b3ec36b2cb84af316d88d2 commit 9da2902609f7519c48eda84f953f72fee53f2b71 commit cc3cb791f19ad0c4f951f38c98aa513b042ab329 commit 11d526f1972f486aa222fdfba751d2f0249c002a commit bdd0d7e290e0e4c8f7545fff89770abbd22bd51a commit 8c96e566d95aaad910a54aa0b21b7753eb615a00 commit 2fec539112e89255b6a47f566e21d99937fada7b commit ca437b45ac6d4baac348303920dae0fdee68e937 commit c59d73d43fce92e79eddc047e1961054f1284384 commit 9a92732f040ae3aeac017d0e80501cad1127a13d commit dbeb232726871352fc3e688ff5b02897f8cb0dc7 commit bcf9b296627c6b832abd388b5364262853430262 commit 7835303982d11ed700ce6bc530303272bfa8562f commit 5531786537e4fcd82a221b0bd01ce375942b3854 commit 9a23fcf79dc647627b3780284a156cc6e7bbd7c4 commit c028d66e6ec471fc24f70204768f43594a6a8b4a commit 872642edaf4228040473349ae0ee872264fa67f7 commit 35ba8850b673050b71b17c1421079031f4fda319 commit bc99f1209f19fefa3ee11e77464ccfae541f4291 commit 344feb7ccf764756937cfd74fa4ac5caba069c99 commit 6db5e0c8692e590734a7ec7455365d9cbaa15ef1 commit b45b4f880fb660c4bd4794a2ca3950c4570e12c6 commit 737dad0b5d609f464cae73292de646d3d016ec73 commit 88c775bbebc9c5b080d3cbbdef73a31eaead9e5b commit b7580e669ca0d624b122455058aa6fe62c0fef44 commit ac9257f0f50871b7459dac48a5c11bc7b2094245 commit 636774860a6240dcb148f9a08d333a697f3c74f3 commit 14eb72ff580de169212bfc5222499febd312a252 commit 8a076bbcc1278c6256c57915bc193890a6432c6d commit 90bb21cb692ead906738d314f3dcdc432aaee015 commit 149f6d1a6035a7aa6595ac6eeb9c8f566b2103cd commit 9dfc3ee1b0f22d9415c9b7c316447d47d4a702d1 commit 922e7ee31defe461d8638f1277f0c8215c0707e6 commit e2facd575fdf13b718f6c833ed546467a3e6e3ba commit 59a1e9ed1b406b1ae7cbbc612ce00d459987d028 commit 80fb575678b488b920cd9100939b60d480101907 commit 50e8ca0b675add8eb0e95938448a4a0f9fb0b6dd commit 33da97894758737895e90c909f16786052680ef4 commit 1ea7fe77c0db843d8e5f96ff8535dfc941e88694 commit c877bed82e1017c102c137d432933ccbba92c119 commit e23a5e14aa278858c2e3d81ec34e83aa9a4177c5 commit d9e019bb396fc9448b104a6f4cdb7acf8af02854 commit 911dd554a129081f056417a30054f24ef6818e3d commit c4feba47aad55aca90d9a2b104c0345ca6f93712 commit 61c1f340bc809a1ca1e3c8794207a91cde1a7c78 commit 4ddf8d7dedb881c6638850f1b74ff1f9967c89b7 commit 6d7291843ec5008a9ff1c011d342679fa9bfe4b9 commit 0196cc65f91710e30d45cea78d75fd616d705002 commit 66ff4e4ed471fdfa9ae4c49a0abcf5d5043ca65e commit 097d56cdcd77639bce7e205adaa22b6f5e7d93a6 commit 40184ece92ebc5adfdba84554bffb60ef0e37029 commit 7ba01b504c16ae64a8faa5f5ee9a809d424cdf0e commit ea0b20d3bd96f9ce2a1e9d886175411c05dcb179 commit 89ed996b888faaf11c69bb4cbc19f21475c9050e commit 9306b2b2dfce6931241ef804783692cee526599c commit 57b9f3384c64e37bbdad7f127625ac3733d11e5c commit 017860c909b03fa687d29a1ca46390ba9a007b2a commit c4e85551198ea894ac29da1a81becfde65c11f78 commit 236124d1167bcc539432b4f6fc19ce1fa015e2ad commit a84e43b81e45b3da19e51e1e9426ba9e4d0fd1bc commit c0ff84cb58faff9fdb8d955c6e1e07fd75d88c16 commit 58e969b60db0f5ca9abf0a8df28086efd601f38c commit f1549c09c520877be211d483d3c6f4e7f77d2588 commit 0fe6906203d02d050e86b3398219df7bd9e8fe47 commit b7320117b3d36fd6fe542bdac5f7af0a83bea23a commit 2d7a1f71837c0922645143cc270b5a4834595544 commit 86ef6eae0820aa5393983c38c1c5ff9510ca9118 commit af019bef6d6fda044c8db232c97d6be2fb64c741 commit 1f969d28cdbf99c28eb08ef0a0017713d6909347 commit 78486da8ceb2d5d833a69fd695bb9f5a941b73f6 commit 3d4de925356177dad0fb5869d1ea537cfa033009 commit 15c735e7990fdabb466a3341b6b2dfefd987127e commit 76611a84f235126f3258fbe4a25d85ab326ad6bd commit e5028e9fd3bc7c6b916568e5218f5fca5f0d0a75 commit 2a93292fb7860b51550d1222c151de1a9fdc15da commit 652284d6db17f3c7810495fda059efdd84b61fde commit ff613f7ba7105b17dbf251ca298d1de9124a9875 commit 0a94608f0f7de9b1135ffea3546afe68eafef57f commit 84900aeecefb281964c0ba23111be4809477124e commit cb50813998b5aed924323b1b46471e8c60b26692 commit 1e866f1fe528bc0158cdcd589053753032bdb52c commit 3fb0fdd7758d3b850db82899f532dc71f6909c02 commit 43195162fbf54b2cc35efe295d2ed072d2bd4048 commit a0d10c437c1c9859d24a16b90abf85120603b4ff commit a5e4a53818ad585416a214b894fdf568443d5293 commit a91d1a17cd341548fd9535e33c331a2756acdfae commit 17cd10a44a8962860ff4ba351b2a290e752dbbde commit f5ba14043621f4afdf3ad5f92ee2d8dbebbe4340 commit cc79950bf0904f58e651747c17987270f1931c29 commit 8955ff11f56e1596e9f80ff6fa8c48e53047654c commit 806b52287a96bf5812a6be008d24add3f18952cc commit d5c6909e74606870bb59b962200cf75eb25d6d0b commit 3cffeffe051a961417bc26f2053bced4cff83119 commit 41529d79ce1655bd7463c01d9813d0abb6fb08a4 commit 5439c41a80c00e993d18d1cd4407a6a82b35d963 commit ee7b62e127c8cc6db24f83e5e116357649f6e41f commit cc35e75273fcf4fb4f12f9d8fd979be7aa808041 commit e850f6b13a85b451411bb74a526bc08706129e8c commit b7be3ae759160aa3355ebeb0583f67fb9bda4dae commit 4fa05a67b558d2cb3acd2bb299b91220d405ca5e commit 7d09c7606346db9a48b62b4e02454a6b8f323043 commit ca0367ca5d9216644b41f86348d6661f8d9e32d8 commit 53c26181950ddc3c8ace3c0939c89e9c4d8deeb9 commit c96cfaf8fc02d4bb70727dfa7ce7841a3cff9be2 commit 60693e3a38903e39e4fac0a9849b698fc36228bd commit 891ce1c9623f36194587d02774ac3d8c30c3ca72 commit 3890f749c590a5a33f0034362be3304b69ae6d65 commit 6f2c8d5f16594a13295d153245e0bb8166db7ac9 commit 29a249d72d31cde3cd24d43354b40019efdb48b1 commit c9eb2d427c1c428e4f4e29f1e635b9a83236c015 commit 868941b14441282ba08761b770fc6cad69d5bdb7 commit c83dee9b639469b6563a281f39deb99311f16bc4 commit 0b15205c7325dc20b7da0068307670d222d66949 commit f6a3f66063ca39e7ee5fcee59e889c5ec4de9dc0 commit 75510fac07cdde23c9217c8299b6cd64c689fb2b commit e4b1edf48fa37cf4f5ca403e384731fe28d13691 commit 604d3a3f0dca0ef0ab0322f5e7af8c70c5ddb6d4 commit 748262eb400e809aa13e3485f4983c3db3d0ebb3 commit 49062ee374f7a47443dac7e255bd419861de5b43 commit 4c33e5179ff1a09cdfba38fa4fd260ae6735d3bb commit 912db6a58738e8be502838eb6a88f207ba356cd7 commit 98a90f1f0fdd112b85b16ef6ceee69f319ab9311 commit 958afce98c2c86732483458c03540d3c6ef45254 commit 3876a8b5e241081b2a519f848a65c00d8e6cd124 commit 606ee059f85a9aabb0242cbc72852572a3c40432 commit 133dc89c640f965c2736e70d8dec0699d763850d commit 2d04559e0660cf503d4e46cfbd7421d0b6156aa1 commit 50fe04d46aab77cf8fc3d48fbc38d872d181a849 commit f746556aa9724d740c44861db0ac005ae50e1332 commit 75a9ad8c1b7960794c16182fd90852918ecdc0a6 commit 9c913f38032e873758d1b13fce720a0c2cbbfcb7 commit 5877b7ddbc2502a7ddbc07970cf5c15972c22de4 commit a53bc32182d7a2a934ca994239396fba21161c8e commit 4528c18605654bea022d294c9ba2e93600d05a94 commit ce4b4657ff18925c315855aa290e93c5fa652d96 commit 5df79aeb6e0890d6f5fd6e12c7ad238a1617b210 commit 86bd6706c404ea703c11071d8b600d46bb98873c commit dc2b9c70ebca8e5661d33a15ed2b99d4510e90be commit 40835624efcde7f984cb859035b95b5a526d1a9f commit fb3e8ed0438347c63650850c011c99deb59d7e62 commit 615dc75fa6a7fc6cf029b01cdfc9d4b78919e71c commit 8a9899c95d1cd709d441960ca325c6c8184978bb commit 0bf95a1ebd48866ad1438454061782d4d47765f7 commit 044b5cb9e8bfe4f006546fd98148e95489a6e803 commit aec4706b0e70e0cab2d0650b63cf2ddc1b154352 commit c8a58ce18ca36b62749e326411176554462a5e2c commit 8b076fa7c5befd1d3e1d892ae466f5334e4c6c99 commit 25f7cde8bad9fe5943851d3d602e9fddb7977961 commit 5d945cbcd4b16a29d6470a80dfb19738f9a4319f commit cb6b81b21bd9cf09d72b7fe711be1b55001eb166 commit 417c1c1963549e9a48b83ada59d90258e38c6594 commit e8f90717ed3b58e81c480b3aa38e641c0da5a456 commit 2c9e8c01109fb65a63b6830adeb5d7c79ccf26d6 commit 473683a03495a5ed9c75a02c7497f32d6cf92c7a commit e6c64182ed946f1cb65799de9ee75f8bcc42b2c6 commit 074293dd9f61f11898f1f6e01f1560fd4c474025 commit a983d263186996002ecafc72f9a0dc5a3a2bfd6f commit 44b0c964201e1e2fbfcdab4472f9260048befbaa commit 557f9100c74cfa033488563240f567466613cefa commit d3e19f76121178420c3efc9688adfd5a448996e0 commit 4f5a17b221cc48d66cce13fe1531ca8fc99078b9 commit 1cccdfe21eb6b8dd4371378b4b61223eb37f1ef7 commit 54c3e9493cd502d63ff3643fa70b5f98b3201846 commit 869618c3440227f848ff9ac55aa64d523a60476e commit fbcc38811fcb47335899a3776b4fd5670db4e228 commit 4686177f7d2140cdd9d031702c2b53ac4c89340a commit 7b5b0d196c2e6cad87cb1e3ce285c7885f2bd796 commit 660f46e16c4b8a34978012a9f10a32a16db3e98f commit f3cd57e499e6904b7e356d11bd33d617341b3f24 commit 869b10ac8d2300327f554d83f4dbab041bf27d49 commit 4d37fd51b4440cf6a02942c0a169ee18a902fb5b commit c19a23fadd279f433424b4d6436fe4ab0020e20c commit 37edc99979b717312e60cf3463ab756f5a3d6de6 commit f4b4e41a2e05270cd90c5817ab514ace95555874 commit 26749aa8d1261bd6f2db9d019276d4277dde7df8 commit 041a11095abdd52b38f1ea1355357ecd2b66c0e2 commit af14e7c2fc9b60af70b410a7dace116eaa5e4e65 commit 465576ca481caa9cf18550652efdc6b103701c68 commit f7bacd97af853a9bba9bb8d1baa12f997e60122f commit 792a0cdde34d417bc2c8266d8015c5fd58d44a0d commit 8813381a62e1f1703f8fbeccc5fa4fcc988be882 commit ccc4200cfb2518fea042b16f090962b07314439b commit 25e751642a38204da189e0e239055702caeb461c commit 34a65beccdea16a12d862e94d004ccf00de8cb3b commit de0246ee9fc95f1072a0d26ec4025a3545f159b8 commit 25dfc8fab47fb0d7231154e07e20b5fc0221f96e commit 326f0672153e0ff5b19f0ff9d6b5f75a64a9c2b5 commit 42c7de9622b2ec64f7c15c336b75f8933ea7545c commit 2207efdd8388bd300a0051b1775705d890abd306 commit 44998fbdcdc39253cb10293c3c27dabc040ad7e8 commit 34a1b0f90e33b00b431d6e8636b787111c6c29d5 commit 8f5bb69dd453666ff949079443ebce24381e163c commit 4cef2269318cdf5beb70c257f7aaba267f2157ae commit 0339530d8879cbd560cd3d3de5138dc797744274 commit 5b4ee98713c7b42e270835fea08c3b6977b48e7e commit a4f8f294fe99a678ce0a50d649732440c41742b7 commit 4e14e0fc9f0e47d9d3d39b6f92724f2038ee6e25 commit f7907f6db81ca08f4f8bd9245b8fecd49bc82f6e commit 197485c695430ab03d9f4a96aab4d4f76787f7c9 commit 352b25a770712a954b1def1b8c6429b0825ee0b3 commit 9a1dadb6d33173427b6f6c89ab1ddd0eca636afb commit 39a6f3fe98ff03baab364acfec69a6f9803ce22c commit ca0273ab447853c014983951e2183991f8dbc7b9 commit 1a3408259bfd5a383b3c7aa7c309c9fb81e35ce0 commit ddd0fa1f47edd794736e70d165341a5c4ff78e47 commit 5085e0361f5a3675fc0d0919f7b69aded453ceb7 commit 77299956e8867a4cc19c5fd41b797c5152aad1dd commit 1c05d9e53d2cfad1f99d9087a8ad24da4ebc0905 commit 0593ad215359d51514c1e6c81ce28ea598efed6b commit 74097f9fd2f5ebdae04fcba59da345386415cbf3 commit 7acc487ab57e076c823b2b7559aa9e3997962ca2 commit bac4b41d917a1d999308bb1e779f8c3b39c19f67 commit c3b3f9ba25e6cbe59673505fbc5fff6c4cda0ef7 commit 3c3abac60117cfd09460980d9a14c253b37f7b00 commit 86e4863e67a9bd1e257f162f3d740ebb61206c91 commit 9dd4545f65679042273a93054ec3bb665ecf7366 commit 44abdd1646e1fbfb781972c0bffc90b4eb3e87b3 commit 34a255e67615995f729254307a0581c143e03752 commit 3616d49da5dab635c4bb0eeb183b61df72cd0757 commit 4c5aa594928f97593502a66d5a9075f5f5dd064b commit 8de297dc046c180651c0500f8611663ae1c3828a commit 44584b417a698bfaac0c2577e7cc4015ea7359ce commit 2ce0b2186c057a54a4d980b296bd1659d0091716 commit 319568d75f5f91cd4f362b26e65af2a4437c64bf commit a7cefb0b40dcfdafedc54a3ba659327d0336956d commit eb54e014367e1700fa5b94e4c788520081a70661 commit 4a21ab548a7ac19b15aba9aa8df39972ed82f4ad commit f46e3f28f89b893685ec9204405677dac410d8ad commit 72bb503097e79113503dc6d1d49c4063ef97970a commit ee4a26b4ea029aeed749c6560ed9eba224337b04 commit a4f1b04216023ff0f4cd89328b59ee6890248130 commit 6a7379f196230cfa35335ec627e0c0e08da6a8b8 commit 05674cc9ea97079ad7c819628e3e56b046c2f497 commit bdf4473394deffc94c16c0502e73f2daabbdc1d0 commit 40b31e5355ba8c4f7e58f1c458bbe46763dca541 commit cb849b4dc73d414149fea96330cdf96a82919fc9 commit 1c5a2fa97b91d37375f4fc8aeb37c9456c93c828 commit 0d60f2b47d8312d6a88454a373990579624edbde commit 5ade1b951dec63a81b23c2ff75c5b4c191977620 commit b5e924bd7cce823e604f9b7834fac846a910331c commit 1f5dcb7365e4e0a8a6fca44352218ccc6f41a8b9 commit 81f776b670a0eb17bf9cfbfd2df32f66a34bc453 commit 4074f96d0f2db2fcbd8e223aebe60ca445b8aeae commit e216431b63aef8b7d9cf6e59aea39582d48b1808 commit 6290ba4c1656ce2374996b2ed11c3997ebbc4af5 commit 493af96d61b1361a44d016057e0fc6e5d4c92fc7 commit ffccfdbab1056954fd400d2864a1c1b38915c143 commit 3facca7489be2d42c6256350dae72c342a47d7e5 commit b1babe8623f91a71a5acc34eb323c718e0413b74 commit c13423c63f73ee2f9807fdb2a3a7e647421a8114 commit d58715704c5c7d82d7194540780fb335ab337da0 commit 1b54a0121dba12af268fb75c413feabdb9f573d4 commit 7786fb366e598e984ee9307616b0c72979bd191c commit 412dfcf34e0695fa1714ad422b2a5d0ed1406437 commit 0407b33fadcd7a5d31ba3c473cef95b2b418d8c4 commit 92fba5d3c8f5b757c4e3fdc89afe76a8f6c4da68 commit 168c02994399f2714bc6c73f85b7ce4d827f97aa commit acbe9ecfb7fb14db868ddbeda8f43e623026316b commit 3517e6b6fee05b6259ca21741cbe5d7bf68aa672 commit 1c6aab75ece7c1d450e4561cb2263403eeb7ae2f commit 79c453af55d9f1e85b906211ea4051364d28dcb4 commit 9a4514fbffda6083d9f7fba4882142686783cfe4 commit 7bcf89eed48f3fba8d0e2c19236e7dc547b6e037 commit 889fcbe949bdd8470931a90b91f273ca18c510c1 commit 95983aea80038539ebc70e41e73e9bb4eabd1a92 commit 32dd9236698bcd2ffdb69954b167a851fd50182a commit a6fd8f936402c3bcc5ac6aed9cca8e73b5ca08f7 commit 1b255f1ccc883256e23db279ea164273ea0f7462 commit dfc4005f8c172eea359f9db08c3b2b0ff0153699 commit ee8b1ef9a6b089abf7a9c7d094b6e93fa05f15b9 commit 2bc7ea71a73747a77e7f83bc085b0d2393235410 commit aa316247c726d96f0bc205413c54ab49622ca737 commit 8585732baa40455fbae9575d0c8316f4b0cf68f5 commit 1f83db6be37c53f6d395a41ee2602e3280ee60c2 commit 79b2c54f19110235041d8f1250e3c3694047a902 commit 4959e609de1ed4199f33124a88a4c9ab95f5cd9a commit 5640cb8921c9aff1270557482237e06af00c388b commit 8b3120dfc192a4c61f73a0798755713ba2d3eb8a commit 3f5a3881f1e26aa5e3ae34e34e439edce291ef5a commit fcac1ac7f1e3fb877aad51c134ff2776bd24f9d6 commit ed63b7cf2d6ebc01a765be31630c3e4a64f7f095 commit 84e2fd649482435c3e12d9099784976ce8bea1e2 commit 203dc777865621b0c7f8f5b19ec18e572730278c commit 05381583a1d0c38cd2c4907ee93ec624250b8912 commit 980e09e8b74c26baa32f0d65d272ecb1401606c9 commit afb185008d40930895a7f7465a9661afeac0b84b commit e3b2bbb33e26d0a0327f878782632ec35cf96a72 commit 9ced2e492ba9436524a2beed27df730042cbcc3e commit fbad6c418e1e63a29c83e8b56a3636915406a9b7 commit 292956cfd9d38835f95021445525b35502837ff7 commit 64f857b5479a7ce2eaa56bef5f459da5542ad90d commit 931fa55b2fac18f226622a95e42bc968bb852cd8 commit 4557489e0370ac0e9f1f5f100f300e9278be0733 commit 1422ca01be6a816ec5a445a6fdce00342adcc5f8 commit 1be3188a6dda544dd4d78503eba5f5a77462b348 commit 66bd94debe4aca171bd0220de7af3feee6542d8a commit e3b0079be8f0a2ccb533f7e38757b27ab6b6018c commit 06ac561fb0edf868f7b292fb4a3c8ffbbb1e14bb commit f9af3c16bfe19d145cf0588afa06d7f1070cbe2d commit 3d2af401cf851be0bf2d4d89af6f120819b786a7 commit 0dc204bc3f199de0a0924f3d5f7c26295e5c012e commit b2065fb21d9a789b14f737ea90facedabadeb8a4 commit 53bd83dfff8618d4a1affa171288b895add40476 commit 7c8e4a257246399c4f1ff43a06fc53ec53423754 commit 2182cb7029e9c5cc4b63d1c5682f62ebb65cc952 commit 674b9e08a02903fef75beadca0df490348d8f560 commit e22ec18750be01298763b10f7056ec8edfbf064f commit 6fdd2077ec03f4b34d127a1713ca19248539d6e0 commit 736f7308d3e6201322142d98abe4e9af33a429f7 commit 4ac77cce84a4afa3b76fe7c763aa3e754cdac422 commit cbe93a234bcce489be319e678dbf167b7a5f915a commit 1c0a90364859c17d57a7f08d6209b73e7e1142cd commit 47231d5e396a94e869b877bb1a0dcd526d91ac6e commit 0da0def7705dff7ee938662ea06f90770cb6f9fc commit ed67f7292b99f5d3876fa02dd51a43f46986c61c commit 1f3dfde4fba4f4b7822c389b9c994089a4ab588b commit e1c42213f3f9b24200d4b60da806303dbeae5a4d commit 1ff186ff32997049a6d263031819517eab4e93aa commit c10100a416c16b598bf5155e759307b34dac0d7d commit dcfe584b00f1d6dcbeeb769b939f53a3c4f04143 commit b834fc94c102eef751ff741aa0d9b814d0a81af1 commit a16161a869d5633d7d9a825a2546b68953e3a6f0 commit 492af34c9f67ef864319d0db930c8518a04b1937 commit 2605e60c82604508f60dbf427b82cd48154d88ee commit 7e8a3ca972adfc89609718c931577a86c494967b commit 64f991590ff4410041a70ee7ec2db079bc953929 commit 541846502f4fe826cd7c16e4784695ac90736585 commit e05d5b9c5bbea80313d8f58c3a80a18839b25480 commit e2b542100719a93f8cdf6d90185410d38a57a4c1 commit f00654007fe1c154dafbdc1f5953c132e8c27c38 commit a782e866497217f22c5d9014cbb7be8549151376 commit b44f2fd87919b5ae6e1756d4c7ba2cbba22238e1 commit 54d91b55c7f3f9f2c86e0b6be4501433b32ddc89 commit c20ee5749a3f688d9bab83a3b09b75587153ff13 commit 798cd57cd5f871452461746032cf6ee50b0fd69a commit f0a892f599c46af673e47418c47c15e69a7b67f4 commit 6614a3c3164a5df2b54abb0b3559f51041cf705b commit a9cf69d0e7f2051cca1c08ed9b34fe79da951ee9 commit 668c3c237f5ddc2889879b08f26d2374231f3287 commit 1d239c1eb873c7d6c6cbc80d68330c939fd86136 commit 9cae5b3189eb9cd12a9c3f6e8afda2d81958640b commit 232d150fa15606e96c0e01e5c7a2d4e03f621787 commit db100e28fdf026a1fc10657c5170bb1e65663805 commit 180abeb2c5032704787151135b6a38c6b71295a6 commit e5a95c83ed1492c0f442b448b20c90c8faaf702b commit 59eda6ce824e95b98c45628fe6c0adb9130c6df2 commit 2826d447fbd60e6a05e53d5f918bceb8c04e315c commit 9d50bff40e3e366886ec37299fc317edf84be0c9 commit cf4b7387c0a842d64bdd7c353e6d3298174a7740 commit df4aaf015775221dde8a51ee09edb919981f091e commit 2939deac1fa220bc82b89235f146df1d9b52e876 commit 37bc31f0e7da4fbad4664e64d906ae7b9009e550 commit efcc970605a4e365151db247361bb013f5c84922 commit 0ee7cc803ae52b60f268fdf2eba79b9fc1162747 commit 968d40986f004b463f057fce612996556b753c9e commit 5822b8acb869caac72c3ddf149d463177aa28fd4 commit 41ead3e0cdc03d64b7da2dcb1fd70ebb7164228b commit c83b9d60299317a2c15550dd506c864cd01a3e5e commit f59966779deac642541c3f7d772a3bf5972727ed commit aec208eecfb833b05597bbc28696fb1ab62f732c commit 1ac354beecfd58e769fb5373d6b2ac87bce9e1e4 commit 4a0a2cf4c03ba49a4c2596c49c7daa719917d509 commit b2f6c73561fbccee404b441a5c2d0b4fefaae817 commit 0a83bb35d8a6ff3d18c2772afe616780c23293a6 commit 616699d77b3813c24bf46090e722da227bd56cbf commit 08ebadfcd8c8c1cc7a14a7581db8331147b85fbb commit 8df436d5ccdf7f441becb8e8156c8ca9c4276e8c commit fb1a140b7bd19c474a41fb2df8a845e8eba328fa commit 64234eabb8f38ac2bf77dd23140887d81acaabe2 commit 1ff77beac87682c22f99e5cf32614909c65b4a36 commit 89390c4982b77c159e3b8a0be4a04552ef0971a0 commit 4c3861f587400db00801810eb8034c7b480e21dd commit 67c79599eea167dd5e08314b8c26f2dfa717753a commit 0af167f92838f34e594e49a6c8cbaca45548e030 commit 2de09ce41f484cbcc65e518905dae73da67ad35c commit 0cd34ce82b0a9ce503d35a51bff47ba3b6715557 commit 9bd110ab06e93fd01938dedd8b6015940418f0fb commit 9c580e8f6cd6524d4e2c3490c440110526f7ddd6 commit 615fc50207fa27453ba7f5fa1abd60a01a498136 commit 0591183699fceeafb4c4141072d47775de83ecfb commit 86678d46272021c88638881c63d427dd10d665d6 commit dd07556324ece81f0d2be756508903d53e331e9e commit 6396679a1f2db0c63721b841f1a5617d6282a4b1 commit 89b008222c2bf21e50219725caed31590edfd9d1 commit f173c7405224002fc32b64cf1679c4d888c493eb commit 2051160546826cf312f15bde534038582b90f844 commit 764a1e6e0272f377f145fc84b547d61e12724233 commit 84ef99c728079dfd21d6bc70b4c3e4af20602b3c commit f0068dd0effd5972046b69b23f99c43251e82d0e commit b2a93490201300a749ad261b5c5d05cb50179c44 commit 30456ffa65469d1d2e5e1da05017e6728d24c11c commit 9f5171ce733a694bd0211952687704c7a5bf32b9 commit 8da536d5e114ad1da6028c7505f048ded2e421c6 commit 352e683b72e79dbd46cbde528eb91e228e88267a commit b7ffeb4a1b5bce1a7495636d21f1704bd7ff01d3 commit 4e64b529c5b04e7944b41de554ee686ecab00744 commit c4c10a68e82b8a03df234ee744acabcc648df270 commit bea9a56afbc4b5a41ea579b8b0dc5e189b439504 commit cb9c7ab1b3ddc2702379dd9639df0c2230453c2e commit dc0a096bcc1d659ae93f836099c6b0312d2ccaaf commit 5afb76522a0af0513b6dc01f84128a73206b051b commit 541d54e40f1672dea6514ad64d54d61ed952648e commit acc96ae0d12783e9781428b17e34fd662a904f0a commit a6250bdb6c4677ee77d699b338e077b900f94c0c commit ad2feebd71ff80532dff75756d1103f056358614 commit 2bba782002c5dab6ca8d608b778b386fb912adff commit 36fa1cb56ac5189c78dacbbb14d452d0c44b86c0 commit 7ce2aa6d7fe121e243e1c8a8093911fecdf1c88e commit 0e66978ebeb44f96ff4d26b2a83dc88a2bf887a6 commit e16c2b8250262bc0bc531299e2c30641cee14221 commit dca452041552a5a5a6aab3ebda32565fad003eb4 commit 0f761f5768b842fe483141bc59db5b4d66bcaf07 commit f1f63cbb705dc38826369496c6fc12c1b8db1324 commit 1b586595df6d04c27088ef348b8202204ce26d45 commit 0a2d922a5618377cdf8fa476351362733ef55342 commit 4bac1c846eff8042dd59ddecd0a43f3b9de5fd23 commit b4ddb27d1dc7349fc882dbb7702bd2628fe27af6 commit ea8793f214ce1e4db205390c0241955f7ff6f383 commit c02895577b834a6148f6d9d0006a6f196511cc79 commit c8007d362c0150aef34323702e7fa996fa0cfd8d commit 8172cebac588c3c5e238d02be30914fbbc5b1234 commit 73c49a624a8db1ec38b138741203d9d7c76eedd7 commit cede849e9e2755084798236735d045298f9d9979 commit adcd15dc47dadfb176a14fa74af5b0cb0f659f2d commit 7e4a77de08f655e159e6355bdfbea73be71fab88 commit 8e78c7c4fe29f7ab8f87634c5f4dedc66107e66b commit e48e6a131d34de54ce6852149e4c97c2208f45cc commit 7d50b92d588d1e7bdcf38f523200b7b113b46c14 commit fa0bbd3be91dd46f4e56e5cf1fb6e8c2837c649c commit 5a0918b4cb90a90fc8d8bfd9b0f81efe6651951f commit e0df49b3045180fdd23dc27193344a767cf68fe1 commit 84435d1d912140958213beda37c708ec3072b5e1 commit 04fb918bf421b299feaee1006e82921d7d381f18 commit 5c1943820156e9a120faba320a72578578a69ab8 commit c7dafdfa90f708b6e4630abf824ba388a3947400 commit 373008bfc9cdb0f050258947fa5a095f0657e1bc commit d83a348b172dd7f9f10f049b3fd7e44cf4d2ed8a commit e98459c06e3d45c2229b097f7b8cdd412357fa2f commit dd49c07f3ab67e8d7ae7b8231b88a746c668b4e8 commit 19f7b8334484d6b610c8eb527c3f56cb42bc8bf1 commit 31ec699ac5d8d17c4f696888708bb6b2567dfcd4 commit c65c71ae85095f94aae32d86aa78811318bf6a90 commit 5544a7b5a07480192eb5fd3536462faed2c21528 commit ca01eba4e5b6b50144a62d7704763c41b68a0de9 commit 1af9add1f1512b10d9ce44ec7137612bc81ff069 commit bf7f7efbe051a59e9d0710cd26ea05f7ebc411a2 commit 385bf5a856c196d5997ce4111a23df7e1b679c17 commit fbe43dcd1aad7dbcee1cffdbe6c3e1d62c85f76a commit e42dfa66d59240afbdd8d4b47b87486db39504aa commit de8341ee3ce7316883e836a2c4e9bf01ab651e0f commit bbca24d0a3c11193bafb9e174f89f52a379006e3 commit 085292c3d78015412b752ee1ca4c7725fd2bf2fc commit cf36ae3e5802716617b9e4d902a31048240396b0 commit 8ae4be56dd0c2b851e7edc0f1d5cd441f88481c0 commit 2ae6ab9d82cdd0f7381639ee31e31de45519df4c commit b1fb6b87ed55ced458b322ea10cf0d0ab151e01b commit ea2aa97ca37a9044ade001aef71dbc06318e8d44 commit 54cd4cde7c1edb869603073167cabab0b760fff6 commit 43ef9db423bdce1df504d4d10e25092d427f04e3 commit 9d705d7741ae70764f3d6d87e67fad3b5c30ffd0 commit f5994da72ba124a3d0463672fdfbec073e3bb72f commit c351938350ab9b5e978dede2c321da43de7eb70c commit 06671734881af2bcf7f453661b5f8616e32bb3fc commit 2035590f3d40f227eac453d0c36b5eae85c1cf08 commit f461950fdc374a3ada5a63c669d997de4600dffe commit 16b3d851c0146123507fe864fdd97411ded51147 commit 233f56745be446b289edac2ba8184c09365c005e commit b75ef35bb57791a5d675699ed4a40c870d1da12f commit 220e979bd906015b74eb485e16464ee5abbd3c9b commit 6b04ce966a738ecdd9294c9593e48513c0dc90aa commit 8d905254162965c8e6be697d82c7dbf5d08f574d commit de2228c04150df8632ad22ee490de2ed579f64e8 commit 607f41768a1ef9c7721866b00fbdeeea5359bc07 commit 13393f65b77445d8b0f99c7b605cc9ccc936586f commit 868e8e5156a1f8d92ca83fdbac6fd52798650792 commit 6067c82c576af13a6b1c892b42ac4a189aced8ee commit a3f7c10a269d5b77dd5822ade822643ced3057f0 commit ad3b0b99113783f697579c7b09285916019865ea commit 2037769f995e45d3a368fb74983954b3ed8da178 commit 16c01544e30a4b4cf5f3eaacf7a4c19a3622b597 commit 4e3464badbeebb3528c457aefe91413f8a9070b6 commit 00047c3d967d7ef8adf8bac3c3579294a3bc0bb1 commit da1acbb12b33cbc651d8a7e956d254f1acc5034f commit 894c9c540f8315007a4752320e2399bc2e0c46b7 commit ee8086dbc1585d9f4020a19447388246a5cff5c8 commit 61251b2cffea8c1811bbd2dbef175b65f64aaa86 commit b8983d42524f10ac6bf35bbce6a7cc8e45f61e04 commit 064d491f73464f5c9cf56ac24f55118f6f4c54c2 commit 100d0ae82b5c240a4dc17486698e67bf116bd598 commit 58091b4958008ef69899e5404f8f031c36b35fbf commit e79a7417072265a85a36775e4e0f798154d39808 commit 4595a25443447b9542b2a5ee7961eb290e94b496 commit e5e6886f4d7e34b6539abddb591d515271caa634 commit 875c6d2711f6c97e58c52288b4231f3072711d61 commit 2c4e19f873f4a389c2a557a84909cf4b78d3525a commit 51fbbe8a3f8b9dd128fa98f6ea36058dfa3f36de commit 458ec0c8f35963626ccd51c3d50b752de5f1b9d4 commit 919bef7a106ade2bda73681bbc2f3678198f44fc commit 0211c2a0ea600e25db3044daaeff4fe41c3ed6d9 commit c8fea9273fd1be308668496badfcbd55183e0dd3 commit 47e04eed84bb07cc5b54462752a4bc7286ab8197 commit 507fd7c400032b126747a5ae8cca2816d73f009a commit d1b4a51a4ca8954f30cf4671b25c4f8637c45600 commit 3c93603d9568c7c4b20ff1712ddc60e997d78df7 commit 3e834a17a22cb8e9169c0b018d1a2df126977db3 commit 6783e6bbc2457dbed351fb0d2477aa6060a7d32b commit 4fd7f14b56b2e727dd66a62e217e57015da4e9fd commit 94a82c9e3dffb88182a4ed0464dc0266ad0d7b45 commit 595091c6ba35ba48c1f8186116bbbae2b208dce6 commit d0629cea1f97acc5e8d95ca2a42ddc72ed4ffa3b commit d7e7546886eebf626569e38ff06d0a67b8b82757 commit b023053592646b1da9477b0b598f2cdd5d3f89d8 commit 2640174f4a139502f603f7bedf3a7011db714e1d commit b97e914552c3fcea71ce03f899e285f2178ec38b commit 6ffc967c36b42f864955cb2c5e8b3fded0baa918 commit f5b9c1ffabce5f4acbeabd3a03fd57b3970a13fe commit d6f84bab48745ea68814d596eb476a9c11ce76ae commit 7b471c32e4cbfdd7a673b79321f6a26abecbf33b commit 910ab9eee0f61a243126d70e932e1301b5437583 commit 39c84b8e929dbd4f63be7e04bf1a2bcd92b44177 commit a54569b1f9721be11ca5b2c8a8bb3c652ebf576c commit a71f3950c803cb18080746aaa8b66af122f32841 commit c1dd5d29aceed251daf98cacd22817f38f76f94b commit bfe632f6d0a1371784dd9a11fa5a9aa2dbf53bf1 commit c7943bb324e503baeeba3df2bc5ca8a377111bfa commit 8409fe92d88c332923130149fe209d1c882b286e commit d91c411c744b55e860fbafc9a499f4f22d64c762 commit edca5a2c373db61efa959307c13ed9156b1c14d9 commit e1cab970574c001d83e59ca8388c474a57a1afb6 commit 672d6ca758651f0ec12cd0d59787067a5bde1c96 commit 151e0e0fdb4d6365305598af3b9072d44e896ef0 commit 992db92b07736ec98432a97b61c37dfe7bd06dd9 commit bbcbd63231cbd1405ff8e987870b02abc6a4d669 commit cbfac7fa491651c57926c99edeb7495c6c1aeac2 commit ae0448bc88b7827babda73edfe587ccc222baccc commit d832db12af4a057582011a590f60f32853680dd4 commit aac4cec1ec45d72bd03eaf3fd772c5a609f5ed26 commit e3d3fd1cea22ada5a06284d7bbb6cd5794d8545a commit 8f7115c1923cd11146525f1615beb29018001964 commit 63e37a79f7bd939314997e29c2f5a9f0ef184281 commit b6f25c3b94f2aadbf5cbef954db4073614943d74 commit 235fdbc32d559db21e580f85035c59372704f09e commit b34c1d538951e1c3a6d5e585e4a95e78d8733064 commit 2edb79a5fb303dff577d6a0c7d571c3bab1d1455 commit 0785691f5711a8f210bb15a5177c2999ebd3702e commit 08b812985996924c0ccf79d54a31fc9757c0a6ca commit aee5ae7c8492eaca2be20d202887c9c716ffc86f commit d654f60898d56ffda461ef4ffd7bbe15159feb8d commit 8787f6fab41380189865f5751c0f15b0c298b923 commit e839a756012b6cad7a4eeb67b0598ac3f349f863 commit 7c6fb61a400bf3218c6504cb2d48858f98822c9d commit 6c20490663553cd7e07d8de8af482012329ab9d6 commit 66f99628eb24409cb8feb5061f78283c8b65f820 commit df2c6e0c95ca22db5d6bea7e8169841c95426f8d commit 36de13fdb04abef3ee03ade5129ab146de63983b commit 8c5708d3da37b8c7c3c22c7e945b9a76a7c9539b commit 86875d558b91cb46f43be112799c06ecce60ec1e commit 42ff33e63b83d0fd40985ccbb50ff54e320a3bd5 commit 58d97c99c99f4559072a5410ec0135271e24e95d commit 269aad0919c7aedffc18dcf46393a1bec457af0a commit f9c182056b8ff7402a46c39c34d5c91133fdf9a4 commit 18aefea7fc71759a2405bc65eae057ffda3c429c commit af2f2a256e048f1b83605eaae49948e4a6811ac1 commit ea45405d704e20826a899380c19ec163336f42ab commit 82c4018479fba63db8db7c7fbfd9e4afba95603a commit 0b15b1ec8b74bd5c9a4e4cbadab82c0657832799 commit 6acc6196a7320b3d2a391925c4c884fc07f0b3df commit 1bb8df66920a5549db2be92c23ab81fd06992e5d commit ceb756004a30239c3a50dc237313e234b667077e commit 3601d620f22e37740cf73f8278eabf9f2aa19eb7 commit d978c51f8d1f4314c84cf50291156862a4c34fc8 commit c4be0ac987f21e12e7ad23bc480e826d8c30de20 commit a3fef74b1d48d89d4d911fcd7c2630d0eb6a0012 commit 37934d4118e22bceb80141804391975078f31734 commit 21485d3da659b66c37d99071623af83ee1c6733d commit 41012d715d5d7b9751ae84b8fb255e404ac9c5d0 commit dc1d85cb790f2091eea074cee24a704b2d6c4a06 commit e3163bc8ffdfdb405e10530b140135b2ee487f89 commit a8671493d2074950553da3cf07d1be43185ef6c6 commit 0af4ed0c329ebb4cef95fda4fcdbfcdea0255442 commit 87d9862b25483242a30bf45420cd8e7e1872a4be commit 25100377a21ad40dae8be5a3ed361b87acec1479 commit 5763d7f29652f94bdfc9dab87888f79ba6bb6c34 commit a7c48a0ab87ae52c087d663e83e56b8225ac4cce commit 5415bec18c69d3aaa7d4e3b170c8b8c6bb24a823 commit d8a79c03054911c375a2252627a429c9bc4615b6 commit 5ce8f7444f8fbb5adee644590c0e4e1890ab004c commit d119888b09bd567e07c6b93a07f175df88857e02 commit 37a0bad677a76e51c5e9e53f5d9f8f4f3e77912f commit 88d4cea24049de0fa073462b24ab471ecd685d8a commit 16c6077f2eea3c8321782d2fb0a6790532cd8c03 commit b261509952bc19d1012cf732f853659be6ebc61e commit cb0eca01ad9756e853efec3301203c2b5b45aa9f commit 29956d0fded036a570bd8e7d4ea4b1a1730307d2 commit 52bb21499cf54fa65b56d97cd0d68579c90207dd commit 65fbfb02c2734cacffec5e3f492e1b4f1dabcf98 commit 056fb8cfbe213f6eb5e987a806583986a4ae8328 commit 72002056f771a025a2e6b4578aeb538799cb9ba2 commit 20c6168b3c8aadef7d2853c925d99eb546bd5e1c commit dcc2527df918edfe297c5074ccc1f05eae361ca6 commit f528fa3989c53d4cf2ee22d306eb1a96ed0010e6 commit 29a1c581a5d873046302aa22c4a05124c5faefab commit 193b6a1934cc2e258e463e94fe3e94382c0bf458 commit dd4bc65c5bdf17ce8e74f91bca5e41b368b0e32b commit 88bab90f7a8aef3732a57cf33bf0ae121de8c7af commit abbc7a3dafb91b9d4ec56b70ec9a7520f8e13334 commit faed5d0182480556cddb8343d9bad968387848f4 commit f525ed19437d376736bed64ee7bc4afee82f2ba9 commit 387df878fdcf63ce497109c4e1eb805a7df9043f commit 3b38b65ed076fa93f1b0d5fb97c55a9bf692cc49 commit da73a94fa282f78d485bd0aab36c8ac15b6f792c commit 6dd1de12e1243f2013e4fabf31e99e63b1a860d0 commit 051ad2788d35ca07aec8402542e5d38429f2426a commit cc62d98bd56d45de4531844ca23913a15136c05b commit 6ef7d362123ecb5bf6d163bb9c7fd6ba2d8c968c commit 7516777434570833469252c16e5fd7d8f73c45be commit 3c480531a4b1652561fd16824c16be8b8a3ba8f1 commit b9caeadf5cb89566412b94b14a1583419aeba45e commit a9b4700279f21c5c1a3425630dea86d338ab13b2 commit 91ef6cfd30bf75763f41e7a4bc119883fe190606 commit 664883ddde67971d59764f2dda855183ecf8bc46 commit 783d446749c09eb34178cb8600a9a93d3b99e35d commit b6d1c39bc637fe4879d610e6687b1d4224c4b2fb commit dd37fba90e72a48998d9f0eb5497088ea2b02ad1 commit ec669ef2e2cf277f3e73d842bb3bda1c3ea2ea73 commit 85096a73f4dc223b5848e41ce40afc5ee913079e commit 1ec5c0e1289c70c8e7dd93a988d945ad5bc3f4b1 commit 391ce355e72bd5713afc85ec5acc955294499dcf commit 8dd2e87dbd49ba0b6afc1dd22a5930d797cf423f commit a28acf7091babf4248b042326946cee7736f796a commit 2d3907c152611a0d65efe54b93972320dcce1565 commit b3e45b18e5c40f1f7e5f6383953343f96f963b13 commit 11e38360cc15e2d5995449d19030b13a67d73cb3 commit 3b7329cf5a767c1be38352d43066012e220ad43c commit 7738be973fc4e2ba22154fafd3a5d7b9666f9abf commit 83ca5fb40e758e0a0257bf4e3a1148dd52c6d0f2 commit a3aded135e84a581ba567c30ecddff47c8b6cfcf commit 541540b9045c2665d6736a77c776ac81d4225eec commit 153a97b4e3de713c05b6bd42d734a2f9eeaf7968 commit 91462afa42e6b8c5a148a44482c893f1800c513d commit 6643b3836f3908c4f77883b2fae72451e85cf3ca commit af81a9201e0112e9c4ca7258e32cd28baf19f31a commit 2f3f958602721c7915ddb1f2a0e8dc5031bc0151 commit 90df15124526176ff03c246362c196a047c8a39a commit bcecb6524881c54ded92f14a6cf2406d5c439637 commit c1c3f41ffb1bd262e40d68938af68c6ab53a41f8 commit b33139ee15352043123b81b32ca1a6a84340eb5d commit 04fa38cce6e02be4362cd889780d58ec275c4d26 commit 0fd85e89b5bf18447e56099a010ee5be5dc9f2b0 commit 414208e48963fdb136240d7f59c15e627832d288 Omitted-fix: 14773bfa70e6 ("mm: shrinkers: fix double kfree on shrinker name") Omitted-fix: 20529e260ff2 ("Revert "drm/amdgpu: fix start calculation in amdgpu_vram_mgr_new"") Omitted-fix: 3024d95a4c52 ("bpf: Partially revert flexible-array member replacement") Omitted-fix: 3915f8bddefd ("drm: xlnx: add <linux/io.h> for readl/writel") Omitted-fix: 395d10ae4d29 ("drm/xlnx: Fix build failure due to missing include") Omitted-fix: 3f61631d47f1 ("take care to handle NULL ->proc_lseek()") Omitted-fix: 5e6723ef3fda ("drm/lcdif: Consistently use plain timings") Omitted-fix: 71c627c0a87a ("drm/lcdif: Clean up debug prints and comments") Omitted-fix: d395fb1999ab ("Revert "drm/amdgpu: move internal vram_mgr function into the C file"") Omitted-fix: ea19684afb54 ("drm/i915/display: consider DG2_RC_CCS_CC when migrating buffers") Omitted-fix: f423fa1bc9fe ("drm/i915/gvt: Add missing vfio_unregister_group_dev() call") Omitted-fix: fcfd3e5fb2f0 ("drm/lcdif: Clean up headers") Signed-off-by: Karol Herbst <kherbst@redhat.com>
2022-11-02 15:48:10 +00:00
#ifdef CONFIG_64BIT
#define __iosys_map_rd_io_u64_case(val_, vaddr_iomem_) \
u64: val_ = readq(vaddr_iomem_)
#define __iosys_map_wr_io_u64_case(val_, vaddr_iomem_) \
u64: writeq(val_, vaddr_iomem_)
#else
#define __iosys_map_rd_io_u64_case(val_, vaddr_iomem_) \
u64: memcpy_fromio(&(val_), vaddr_iomem_, sizeof(u64))
#define __iosys_map_wr_io_u64_case(val_, vaddr_iomem_) \
u64: memcpy_toio(vaddr_iomem_, &(val_), sizeof(u64))
#endif
#define __iosys_map_rd_io(val__, vaddr_iomem__, type__) _Generic(val__, \
u8: val__ = readb(vaddr_iomem__), \
u16: val__ = readw(vaddr_iomem__), \
u32: val__ = readl(vaddr_iomem__), \
__iosys_map_rd_io_u64_case(val__, vaddr_iomem__))
#define __iosys_map_rd_sys(val__, vaddr__, type__) \
val__ = READ_ONCE(*(type__ *)(vaddr__))
#define __iosys_map_wr_io(val__, vaddr_iomem__, type__) _Generic(val__, \
u8: writeb(val__, vaddr_iomem__), \
u16: writew(val__, vaddr_iomem__), \
u32: writel(val__, vaddr_iomem__), \
__iosys_map_wr_io_u64_case(val__, vaddr_iomem__))
#define __iosys_map_wr_sys(val__, vaddr__, type__) \
WRITE_ONCE(*(type__ *)(vaddr__), val__)
iosys-map: Add a few more helpers Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2043115 Upstream Status: v5.18-rc1 commit e62f25e8b3cdd29224c27938addba817aedd4b54 Author: Lucas De Marchi <lucas.demarchi@intel.com> AuthorDate: Wed Feb 16 09:41:33 2022 -0800 Commit: Lucas De Marchi <lucas.demarchi@intel.com> CommitDate: Sat Feb 19 19:23:53 2022 -0800 First the simplest ones: - iosys_map_memset(): when abstracting system and I/O memory, just like the memcpy() use case, memset() also has dedicated functions to be called for using IO memory. - iosys_map_memcpy_from(): we may need to copy data from I/O memory, not only to. In certain situations it's useful to be able to read or write to an offset that is calculated by having the memory layout given by a struct declaration. Usually we are going to read/write a u8, u16, u32 or u64. As a pre-requisite for the implementation, add iosys_map_memcpy_from() to be the equivalent of iosys_map_memcpy_to(), but in the other direction. Then add 2 pairs of macros: - iosys_map_rd() / iosys_map_wr() - iosys_map_rd_field() / iosys_map_wr_field() The first pair takes the C-type and offset to read/write. The second pair uses a struct describing the layout of the mapping in order to calculate the offset and size being read/written. We could use readb, readw, readl, readq and the write* counterparts, however due to alignment issues this may not work on all architectures. If alignment needs to be checked to call the right function, it's not possible to decide at compile-time which function to call: so just leave the decision to the memcpy function that will do exactly that. Finally, in order to use the above macros with a map derived from another, add another initializer: IOSYS_MAP_INIT_OFFSET(). v2: - Rework IOSYS_MAP_INIT_OFFSET() so it doesn't rely on aliasing rules within the union - Add offset to both iosys_map_rd_field() and iosys_map_wr_field() to allow the struct itself to be at an offset from the mapping - Add documentation to iosys_map_rd_field() with example and expected memory layout v3: - Drop kernel.h include as it's not needed anymore Cc: Sumit Semwal <sumit.semwal@linaro.org> Cc: Christian König <christian.koenig@amd.com> Cc: Thomas Zimmermann <tzimmermann@suse.de> Cc: Mauro Carvalho Chehab <mchehab@kernel.org> Cc: dri-devel@lists.freedesktop.org Cc: linux-kernel@vger.kernel.org Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com> Reviewed-by: Mauro Carvalho Chehab <mchehab@kernel.org> Reviewed-by: Matt Atwood <matthew.s.atwood@intel.com> Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de> Link: https://patchwork.freedesktop.org/patch/msgid/20220216174147.3073235-3-lucas.demarchi@intel.com Signed-off-by: Karol Herbst <kherbst@redhat.com>
2022-03-29 14:21:07 +00:00
/**
* iosys_map_rd - Read a C-type value from the iosys_map
*
* @map__: The iosys_map structure
* @offset__: The offset from which to read
* @type__: Type of the value being read
*
Merge DRM changes from upstream v5.19..v6.0 NOTE: This commit does not compile due to missing RHEL-specific fix-ups, which are split out into separate Git commits following this one. If git bisect selected this commit, run "git bisect skip" and try again. Repeat this until it selects a commit which compiles. This commit was generated using: rhdrm-merge-drm v6.0 2115876 Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2115876 Conflicts: drivers/gpu/drm/hyperv/hyperv_drm_drv.c drivers/gpu/drm/mgag200/mgag200_mode.c Conflict resolution: Commit list: commit d10f7117aa43b0b0d1c4b878afafb6d151da441d commit 115fcf5899f7e0b0d3358a22a8cd76b1398642ee commit d8cb49d203556707ff4c3aa05032c4fc7c3ff1a2 commit 9d72b7e2d2ce3746950929a2c54171d183ea89f2 commit 94afc5382669c3a201c5817c47b57a879b6dabce commit aba5825439d7691343aa562dfeaf6616455bcb01 commit a9ec4fd004b84c26207a8cae41662c501c8a284b commit 537d9ed2f6c1dbfe8465365c2f74a855ffad5e6a commit ed3173077d3fa6fd085960aa6347ec30f532bf31 commit b07debc2a8ce7324c85479a28d145eaa05382286 commit 4ce08703a8c4be77b060aefd14eda272f50a45e4 commit 9975af040a04ba9aef33f3ef1ca4e8f04c7223dd commit dfc0312596561ac462308fae32130a0c580b7ac1 commit 37852141965d467a4ae118139b6eee266e7d953c commit 2af243444f9100639451b11d311982279e00cc16 commit 49a62a2923e523e5359219ed54d643c60f3374f8 commit 705bec3eca9b712fe006b7e4d6b4cd4dc6b57d36 commit 8db73897698ccb4eb70ab103245372569ff5a5ec commit 58304630b830a1c27457ce2e3a0912555b43d03e commit 6ff1c19f5f28dbc396462032dcbfdb8b64795415 commit d792ec62ae1260df2e54dc41103aad3b19bad948 commit a5c89f7c43c12c592a882a0ec2a15e9df0011e80 commit 315241d2d9102a90f71bd6c9e7dd06a1c831a184 commit a7b516bd981f11feb0c9f5ee3d149855d48cb2c8 commit 6f67930af78f10ac7a1a9ba81ec606a9bd07749f commit 56ca3117f77a23a8b24e73e458bc85c11e5dea31 commit e6c2db2be986158afb9991d9fa8a38fe65a88516 commit 91875c22a31be0bdf91d7ec651bb6b083b35ac37 commit 69ed3dd6be9cf5d75252940b9a927dff4bab7860 commit 09708b6d82ef473de91c49d90f35e38b0db463f5 commit 222ff6db8a0dcb86f2bb65fc8656aec635a737a6 commit 218076abbcd647de46635d21331a34b814f90906 commit 922abe4d19bd21b38298f3902674774b92a49293 commit b6411373d3954c8fe4617c27f90f773108b0ab03 commit efd01cd3c27636bc4840057a03839e54abaf11dc commit eb86f645ab9b90c47de7ebe229feae7ac999421b commit b15a7357a84f091fde8ce35bf2fd494150ad4bd0 commit 1b93ff4d0679190e8812cd0d0b3aebfcba1ed883 commit e9794c88cd6cf4be4a79188916a75539751f532c commit 3507932390bbfcf7c69dff9843f1c9da6ed4b861 commit 23dd74db02d75579d8d4eb0b88c7ad119e782269 commit b499914eb83765a27e3b43f216e9d1bdf4265418 commit 6c01aa13894fa0049ea8c96c271318ca353a77f1 commit 429e1fc1b2c257f35b6a1318eb3a1ffb80bc6640 commit e090532246fe17609b08ba0a862428867426dc95 commit 9d67edba730c4663eb7d87771123c3fb86ba606d commit 4de23dca7ec8dfb191ea80fbfe3f008d4ed52346 commit 6cd96877c7da6bc3a28ef0bcb3bc7470f4dd9aa6 commit 93d9e0453e2bb599e0bcced1b914f9b4010180a1 commit 69f8afdb45e7775840693bce42da79d9c22c2e83 commit 500d7135c924024ed2e5e62b03dd9b3b6257fa10 commit 8caaf7ad659da9b757781d5f08ce0bf98801931e commit 1a1a5a315ee805bec457fd214250c088efadb50b commit ad5f74f3420183052532a220edd9a37aba92724a commit 047de3f17a8321065c32ee3f6272a6dba16d6bcf commit 5e3f1e7729ec7a99e145e9d8ed58963d86cdfb98 commit 708d19d9f362766147cab79eccae60912c6d3068 commit aebeb02dfccb61d6930112aede2db3db5b8e974e commit ef83e1198f9f7d7db0031c839bb1112cfee45b42 commit 7ecc3cc8a7b39f08eee9aea7b718187583342a70 commit 3064debaf55e1bc8f191871ca5f82697ef4c0951 commit c48a363016349352dac7e66cd1e823f73bff1fc4 commit d2addf89c5abf4024574d42000313175c6e074fc commit d7fd32ecce914686756dedf586c8573e71f975a4 commit 3080c21a043abc83e56da9bb5942eb3f4b92c90e commit 303760aa914b7f5ac9602dbb4b471a2ad52eeb3e commit 21c47196aec3a93f913a7515e1e7b30e6c54d6c6 commit 18fb42db05a0b93ab5dd5eab5315e50eaa3ca620 commit 945ae909aa76f55ac8c9e95feb3683512d39134a commit be982415fc2e953ad49e59b204f2d0e64953eb5f commit ab1747ccf052976465db7c5a7e1301a50f290db0 commit e4ccf9a777d30d60c60f729b1d5c9bc9e3ea46e3 commit 22a27e0532d06968afc265a3b91fbdc5a773169a commit e42192b4c345a807d8df034f178d5846e1c97ad1 commit a2f9790dcffe2dd0b363607fd215e5b81a0de57a commit 40f71f5b239291357dbee3dc1c6ace83a373f44e commit dd0f4470a849d07081a2036f89d2c41264383985 commit f0d080ff429129b16332f17a906ad2123d9c6317 commit 084c7a7c7a0a0cab35d959e1b14d45a0c6221f49 commit a77f7c89e62c6dfe405a64995812746f27adc510 commit 7428bfbdb7c4dc7323e6b6f0e327c3587e479e16 commit 67d87fac86dd4a04cc62dc0eddfb7c74ace4666d commit 874d98eed71ae678ab364d4c16060955b8b245ae commit 2c54f87cf2fb99826ded617fd0484e688ecfe882 commit 45aa2336fa6dbfa73d9081f75a4b813e747a55aa commit bba4b6470b02c2d9a5074a40cff7246d3356f460 commit 027034511c6a1e3ea96122f7626b89b6d339ed49 commit 3176d0925027727ec37e388e9363f124c2c52ae9 commit 0c057877cbdf261efa7874474f48c715cd6401ba commit 5e87b2e5171621ff00ec197c9af15bc3aa405b6b commit bbded689680f0f2e65d4a57d0dfa654671052d56 commit c7b2dee4308b74391734ac675e66e6856a077f77 commit d9ba1b4cbb2989c919198832f4ebd6eb8ba94da0 commit d0edd3c1a7e859a5899c26e2906e80f4ac798fa9 commit ca10b9d60f8c9556720bad8b1ec7d522e353a01d commit de5db71e4c8c35ed5e92006e3064ce9230881ece commit b6415bd7386bcf9d2e0d6ee1d4ef4186e7a87b24 commit b959eb4f5b7ea49b47e95c9047d33d1b1cf81057 commit 0facdaa249c4e97346bc0b49c893e4a1d336b7dd commit c3e57159dea473e9e138d32d08c48f3103294050 commit 057a6a1936e79c0bc9c86537fb9886ed39cd078a commit d6774b8c3c5813aa541c9148f641d3d8d4b296d2 commit c577b2f43e80d707870a74de0fd726c51b206956 commit a24191b1c4ad05fc578ea5ea01652c09b71da86d commit a9ad5822366c5065e6a65fe5ff5090295ba98986 commit d158367c31f0f87567d2e8a0955287dc005d40e5 commit 8f6de23184452793e60945a26ac40db435d7798d commit 9e97c46f832d4669b4e52cde5ad0bd43423504eb commit a77c2af0994e24ee36c7ffb6dc852770bdf06fb1 commit 5913ab941d6ea782e841234c76958c6872ea752d commit d50f74790bbba662d1438dbc03be6616c52c0722 commit 16f1456466c269ecda32b88c3f8fdd76f8ec370c commit b279df242972ae816a75cf1cc732af836f999100 commit 8219f11fdaf56593a719e1d72fa582673560315a commit 69340e529a064da4807622395e967aa2b5eba1c5 commit 475e2b970cc372f49e9d3e4bbead8b4874299d31 commit e180a7b218487065efd9a3f05eac5de7de128e19 commit 315a8d00ac74c59a688a1a88c0ed97a7791d1c91 commit a50794f26f52c66cb793d5d392f5f19bc2962cdd commit 451374eef622fca6f00eeeda89aaccb45a30a149 commit 1ade30812abfdd1c161a155fd54b0dd594c217ee commit 230fb39ff7e07bd0324c87acf08dd2c9b0bbcea8 commit 962bd34bb457f6353f333ce234c3fd34cad1c00a commit 411d44d754739a371999412606b28af1d72a210b commit 7f73b371710edaee1f40d834096c07c62e51b184 commit f159b1b22c8a2d3d7c1fa877fafc8aacff0deeba commit 746b9c62cc8614fa59c23f3332682b5e9e1d801c commit 1c89b4b718168aa6cf136a984b474d663e4203b7 commit a8d6e127254c48d895c4f6e973ec998fd4a0eff3 commit 4f093a527b0b8f9d3059a4e8376e582fd14cf09e commit 4a2a13a57b605994ee44e5c2cd7b9efc49901404 commit e7c254d75d16b75abf1958095fd34e2ecdc0d645 commit 69ef4a192bba0d76216198ec6d5fe82375337903 commit 9602efab9f8652ef39dc2789edcd26c3d1d3f901 commit e91eec9128c2ad9eab9cf9d7c17f8034b6a86c4c commit 9d8d5a39173244a1394cf84a93447be6f82b361d commit 3d6c72b7fdd2429ca1d4d690618bf65050380b48 commit b409db082da6b76ad2b759a1a48d9402eee4b942 commit fdbec9ff669d83bf863ca7e657af6a9e4c949565 commit 39921e5f00f5a98ff9cb3229937ca339e8d9c9c6 commit 85a040bc9049dd168d5e79a1fa9d2da87e6e52dc commit ee421bb4cb9535f44015634baad833dcc98c9062 commit 5f38c3fb55ce3814b4353320d7a205068a420e48 commit 39c28cdfb719f0e306b447f0827dfd712f81858b commit 0d662350928e6787d29ab205e47e5aa6f1f792f9 commit c1de02bbeca58894c805b3d45c2da4bf30cfc5d9 commit 0b4c48f3e315d172e4cc06e10f2c8ba180788baf commit 08c59dde71b73a0ac94e3ed2d431345b01f20485 commit 67d935b4713988d0a41097439c0c2d74f240b204 commit fa373eb2190115ef2c3597f89c12350d0a250eb0 commit 4cd79f614b501e496ee8e4181d528c0cc1cb4e18 commit 8ec5c0006c50cb1909c0de0fad137909c1218990 commit 2ba5b683260e13d8f2c43bc594d5ae15ec7f7a04 commit 670c87fd169518eb4f15030c63f6c1b4ddf18bfb commit 1ff72d434b40d221e2583fab5e1203031d05c059 commit 649eb3828fb22e829e222ebd83f4e11dc503a565 commit 9ad6f181ad9a19a26bda73a7b199df44ccfcdaba commit 39b1bc4b5bcccac781267bb826b035fbb99c8b9d commit 991dcb89caeb1b9bf714b382e23d3f6d8016e744 commit 61922beba36adea8702fe8069b309c806f6608af commit 6b03816f869529393b37d03e5d75b68f7365a7a4 commit e4f21d1436519fec3e181082c8e1c3fb00ec08a7 commit 1a3b1ea111c44d9dce9f70ba032531a223395a15 commit d63ddca7c58132257fd01e3a4feca41b3bac3089 commit 8ae664907916eba9a9d56296bed684c27318a872 commit d32e8ed918ba7384fda9055ebb31b89b3eadb517 commit fb289464f695f9d913479b4ebae9e39b057f8531 commit 1eb31338994889ac34c4f841e5d54bf10111741b commit e41388d508a50ddb2be5c2676f1992353ca2f155 commit a4f263f46961b1229b10ca3a98f0be618a9d47ac commit a67664860f7833015a683ea295f7c79ac2901332 commit 837c72b23a57e15dd363d5f3f3f268c49c128740 commit edd34368c4c3b45b1386b15f78b2229420f8c6d4 commit b981cc333ff06cb23c7968007965e79c80f5df97 commit e31372492904415e425430402453a192e2c6519f commit 16e214d4aef2d600ef94e845530a28ce795b8fcc commit 26be7cd8aacdd3f0429834e78e3166286779f083 commit 6a735552f44d7a29a9e629cdc3b5c3ac2b4021e6 commit 9d15dd1bb3e7de4dd31a225977813dda2748253e commit 69d6bf5c3754ffc491896632438417d1cedc2c68 commit 91776af1d8deb8f36cbec6bf2bf24b661b2b5cbb commit 9180c30cd61aa0b2f0eb4791c8e490c8c5abc54c commit 420a07b841d03f6a436d8c06571c69aa5c783897 commit 4fde3f5d8805caba40cce2268c540d8a37403c6b commit 51ab3b85000d214b75899875d5745935e06020e5 commit 822e5ae701af2964c5808b6ade1d6f3b1eaec967 commit 75bd0d5e4eadb9ce3e9b6fb71971b6e87c38799e commit 60b02a09598f87972a15bb181b9a62b8a8ee682a commit 89fcdf4305996f869eb39eb8f14a989e9a289611 commit 586294c3c1860ac991d3a241159c0edf974b68e4 commit 8e75e8f573e1ff4a0c93c3be1554d2bfd5ae6029 commit 67090801489d0a4c80c121494b749e1e97573447 commit 50759c13735dab06805eff0e8161d33216d6f5a3 commit c3fbcf60bc74b630967f291f47f0d9d0de6fcea7 commit c2fdb424d32204faf5be29d55f0086b611c94e38 commit 3cf050762534cc268a02793ec00240f81c6e2229 commit c518a775a843413786d3db8b5cab084597730a5a commit ade1fc91eb99614c7155fec762ad5761bb470e06 commit 14374e3eee1b02dbf162e1dd75b789373f07ef43 commit 435c249008cba04ed6a7975e9411f3b934620204 commit 0c5064fa8d5a02dc2dcc6c674a0ad1bbaf79efda commit 01357a5a45ed8eb9543183f5c9c6713ae60fc1f3 commit 8f61973718485f3e89bc4f408f929048b7b47c83 commit 245a4a7b531cffb41233a716497c25b06835cf4b commit ec8d985ff26f29d53d9ebff04973e96572fd0285 commit a0ab5abced550ddeefddb06055ed60779a54eb79 commit 0aa93f54f4341a40b05ec2ac242109e78661d7aa commit 92a020747d6c9e2efe8168a4a444576581bba636 commit 6cb07d20317c77494fa4de572887e3dcdbf98b6d commit 0e5397d8c9fe2a2e4fcc8d98cba4a12511a03267 commit 3951270abfd229e3e17c991942cd111b66454f97 commit 3d140a3d8816082f9732d6fccb81dc18823e03b3 commit aa71f9870efea70b38b17c3d2af870530fcd02e3 commit 58ae532ee875783503428610ac0f5d80e73009a7 commit f2206df8ec862073995f5d27f0f55f698843a9b8 commit 4f543d664cec7e9b490bca55f57151afe6f5cf47 commit a9bfcb56a2ef265092a4cfcd4b9c58ddff4d3649 commit 8b449f1c44d1f921240da6a3e7fc4030966abbff commit ce581ae142e24deb27905840fb720fee9b38d7a4 commit 04514c14678e760e17e3cd44c553ade1bf3bef06 commit fba99b1ab7bde41c1eb00431df37b9237be3681e commit 2db7d421cc5ca86bdcf57f2634f6eefdf349f998 commit 6e939738da208bcc0e4dc794519e18cad85bca73 commit a9b20eb6f7da7794f8ffbce0ab9c709cb1ed71aa commit 700034566d6844b3a67f4b6c3a728d9c0c8d93af commit 5a18db2e92a3556ccacc92c031db6e6a7f2b34dc commit 01ece65132e2980ece4eca91105dfc9eed504881 commit 04477e5e1e6ced4573d9bd5271572ba633a260ab commit ba1677f76b9a510d88efdc7a1416b2e778f125bc commit 368eb57a1676cef35f8303bc23f95d2ac35b7255 commit 544ef14031d0bc9223727fa8d39cd54f0fad7244 commit 147a09072c84b32746fb70139963a92c7d90e07a commit 0cc3ae930c8b2a086b802a8c7b915fd28b57c780 commit a57ebfc0b4da16a3f36bfebb158198aab3e340f8 commit e9ca4e9ea6e208feae82f72607818ac8e15115f4 commit 935a3c66eb9b66426d4be9b54666c77dbe7c32eb commit aa2bdc4843f5871e6c68fbec5e10c0dbaf10ff91 commit 4cfd16659641067f618cdd3589eda42eb2943399 commit bc3c5e0809ae9faa039baf75547e8ee46ec124ef commit b87d39019651c9cae169396cf5ae525393084490 commit 5ac342ef84d7dccd1ba43f5fa2dc10a6feda91e2 commit b729cfee705a56c6204647ac486107a1f814af36 commit 3800b1710946f7db3cb3a29cb2e218cf5df999d0 commit 50e156bd8a9d0910ac4bae5fcff00ddb798db967 commit 10e619f1f31cf126885b3e0ac43a8de9744467fb commit c441d28945fb113220d48d6c86ebc0b090a2b677 commit e8971a790370e805281dd650ec936a9b66435220 commit b43edc504ddd8902d1f697364049b0c0b89de6e2 commit 6352cd451ddbb506ce061868a9e5465d294d4857 commit f7dad0daf2c2368f72828b0729799f01bdcee33b commit a820190204aef0739aa3a067d00273d117f9367c commit b8b64595d6a1ccd5cdf56c528e921332d1366b22 commit ab9d97d6f9f1bb5de83411581dc6cdf425a83a15 commit f74e78ca90bd21b47746b90c439709007681f44c commit d5fe83d26dae59c5b52105075e8950dea8ce7c19 commit 66f54992981444cb418f31018e190d15c92d3599 commit e309434ac56774c86e79a50980e8611ce7cc31a3 commit faf26f2b12e1e03956f7e628183e422d94713e4b commit 2f6247dad2c56cfe2df3c6e00586ead5ee905b46 commit b801d8ad1b516a951535241c9cf60cac8f9a5c2b commit 79b470e5ee83e979f8ff465efa8b7ced160bcae7 commit 4f29f9cf092b2d331ba2081566be3272962b7f96 commit ac2e555e0a7fe571d46f7dcb1529b4bee00095d6 commit 0efd4374f6b41650863947a7528d45e8ad0f7ae0 commit 58efeea32d5e32fa340c7ee3f52d5f986b240e39 commit dda4fb85e433f761eedaed0005a2bc20d705d504 commit 265280b99822e5562eb431b102f2ba773c7b2a0a commit 235c67634230b0f9ad8c0185272fed36c892b1c4 commit d3dfceb58de5f897640cdd424f6c2538d9514367 commit 3b1229741eda70116e0163affdda377484a788ae commit 577359ca178262a64236cc96299714dbff21e9c7 commit 85b0cc35efab0cbc78c083d4506250bea6a755ad commit 49401d3a5c86f5ead12ea7cbe98031edb512b13a commit 543036a2de71f14f8ad566c858e5e9ff61736a86 commit e42ce1366ae806ba2c1f884997703be68df428f4 commit 3dc35cf8789ac93d656f255539f9b37c5051ebf6 commit 2cb6915dcf70a2bf7ee10fcf3f56b083beec1086 commit 542a0f2ef9ea2ccfadf2b8a3b53368c61fc97a0f commit a839a73b18157fe30eb4acd2a1f1ffdb890762ff commit 9761843250f1367043ae2a483461af287aecc879 commit e06c5f59ffe1006f1c6f533113b72ad48a6d4564 commit b3f2c796634613bca511266b37084560f36b67c1 commit 6a640b95b061fe340214ebd4638974b8b6f08efe commit cbd3e8440e2e6a4d83479235c9bf278b89360946 commit 1908a07cffdfc7c57ba5116418c3f2b5ef05e0f6 commit 218987fdead218ae0e714cd9059bc9fc480220f9 commit 9fe5d08fc8230adb64128986ee4af267a54e56dd commit 16600b7d66367482dc8526f8bc3a30b32aaef329 commit d57716702deac8e0ec440739eb4cd6eb0872ddd4 commit 10c4ad3ae025dd0e343a09d2ea4b0e71f8d10797 commit 8763e4c1a0e6710dccb8fccba96fcd6caaa50cae commit 7101ab97e3b00ec1c68d09826bb0521d17783673 commit 80d46fff373775fdea9917a7d13f6fb6fa5147ad commit cb12d72b426caa7594890c62df69fe4b83c96e58 commit 72b5f23ccb0aee46029476cbb072074384aef591 commit 3ccb9ea9976022034d8fffd8d929d6e70a24e0c6 commit 2388a778bdacad0c936dbb01048362864847f8ad commit 9d6b2041761ff6d5a33941919c8b5a805ecbed6c commit 1d6c363330834fa534c1c7ee01620ff134aade1f commit be77243327d962a87bcf03615bae12d73efb9b7c commit ac1ac694f7173a0fbb0b60ab0f26226dd334479a commit 2cfe34e18970d26bff73c63f16c76dae22138d19 commit 2267a195e28cc438cb45936c4562f958502d4038 commit da1db031cd30fefc99d1c82211d3c24b73857bbe commit 3378aed7e2ec7212889116335a2120a6e35c80ce commit 7a09f61f8e842dd027afa1ce8be8bd86062c8a7b commit 4c1b3d0803aef6d39913f1e9d2cfe2c1ccce18e8 commit e87b92c6af537843daf7da9235e622988bae7eae commit b5a0168e1406176cf98487833b7468a1ea5872d3 commit 452e9214431f1f6385bb20fdf6e1b5692947071f commit 49f594995a9255ff734f79c1fc22bd06119ebe8f commit 6ea843e01bce520cf5dea86bc30c5133e0d0822d commit e127306d433ff99f29d1b083c6b3aa128bbd9c5e commit 0c9ed6044c5d08562d38d56e94279badef39e4c7 commit 327f79d7a1d2dcc10aeda05983c4d1532dd0830a commit 214d72f62978c28fe27d22d0d498d04493e9ce86 commit 80fb7a409c64ef304e4040320e87dbb2f10968ca commit b6a93844145395068574cbbfaf3aea91d1f24f1a commit 405bb9eea36a02798631e8409f1182705699d092 commit 3e80a5b068a5fedc69ada30ba1a2d1e0b76dfc25 commit d8e4fb9112e88d8d87ffbc38fa511e7118042d4f commit 8b67e738ca17fb52a275b1cc0191dfce0e9cd7a5 commit 83eb5385b4f021c2674b1d78675bfd10443cdf74 commit be1a63daffdd152ba4c7b71ab9fec2e39259b42b commit 1d742694571655e49e11ea8f391bcafaf0f5ee74 commit b3d0c0f2dfbe610ae5ac6b2d70dd450645dce3cb commit 1da5dab029c08e178784a0750203365ea7c3b4f4 commit 3a6dce778de7c120a37983d80b6ccc8c2c4ff6ec commit aa303964bc349914de8e1d3ff7b517581839d01b commit 6d1044a070b2eef0be45f3b99274a6cebee25053 commit 651d7ee63f338b82d18273c30e9ea804ae174342 commit 3d8785f6c04a953868384db455bb2fdd0b22c11c commit b07d1d73b09ef40e91ace51a2e167391676a8175 commit 4c7631800e6bf0eced08dd7b4f793fcd972f597d commit a35806b36ea44724b21f7f110b38b5941fc9c393 commit 65657d98754c581ad66b56680d3c9ed679890071 commit 32c453f18dccd93a27d6f026ca690167c8cc9639 commit 6cc5c77300afbb285c4f41e04f3435ae3c484c40 commit c7eac19eda0a82f0c1dd9455012754445772fd09 commit c2a050c5e07faf9ed2fa1daa1eb642d9da4a879d commit e61a048eabf9d1245f86e67ec4787d2f10e5a1e0 commit 65e7a17499e15771339d85eaa1ba686ad2fe342c commit 381b590c307f29d0990c4b99ae3a2e02aff2a5b9 commit 1b0da5a3e90d3920f6967e4303fdeaaec6f62208 commit 7cc191ee7621b7145c6cc9c18a4e1929bb5f136e commit 84de5c2e92dccb2bcfd5ff68af44960b808fe6bb commit 453b0016a054df0f442fda8a145b97a33816cab9 commit 031ac4e419dfd8f099a0adba31f7f735013eb628 commit b94b02d72e2b979a32addc8f5099fcf1f6ce9e7b commit d1b08baf93352bb3c88d637055dc21187a456646 commit 136f614931a2bb73616b292cf542da3a18daefd5 commit ea64228d26fee9b766bc9615e92a319da5ef94ef commit fae7d186403ee5a9375ec75938e0de99718e066a commit 73f54d5d968264148ef81941d9dc07e35025a120 commit 85397f6bc4ff13a6bc5259facb8ebebb1986d666 commit ce19021fd99ab2c915f2b44b0df39bef75f11d18 commit d45e32c9d98ce7c22a4bafe69cee58165b59533b commit b62d943e9686e791dd39f8bde302fc27446cdca9 commit b9a577a407d99638522ba6a0fc4fb360aacc01d0 commit 21e74bf99596d91411b6b51340c05ff92a7a4a01 commit 98da4b99a0525c222dab7cd8e73153eaea062dc3 commit d1e40d8e4b4df3f705c7898b264b2cfb60bdafc4 commit da1efdb2a3e8593a9428c81a531bfd8a0c3dd66e commit dfa687bffc8a4a21ed929c7dececf01b8f1f52ee commit 34b68c17e9895ba66fc809224b0122a2eed7aa40 commit 330c1b3180b0d79fef7c05331647f3695661b79e commit 38353a5e3da0b26fab9eeff13a482b135512d9c0 commit aec23025ebc86b770beb9dab6610b671e63d36a2 commit 4464bd825dd56c2f900038c5922408d70aab01fc commit 165ab7b4319d8ecbb689f3d68f0cd6bda4d82b1c commit 77361ed89a8b03c7e121f4b8c517d7be93ccd8df commit 2d017189e2b39cf2fae63984215385401b77ea83 commit 0c56705d8aae9696348cc320b71d531ede001b79 commit e5309d7f66105011e0597fd55ff2ef7f636f52c6 commit d8791dc7f941f3dc78ef2c6aa71d7c752d5b529e commit 8246370341e8e816ad22aaf8d8bfca850339ce0a commit 874714feff3128dc691fc309ee8b9d479f541aa6 commit a0b9e4531b2eaf066a1ccb2986f4d2f9efa6c313 commit d4965c53b95d7533dfc2309d2fc25838bd33220e commit 6b6d12b6ff204cc224cd2369bda2b0580a80a5b3 commit d445dd7b39c56a66872386a3ce0c8a862e59be46 commit 9d001360b47b792a475250bf7ef2bcfbd17ba09f commit 44961f6ebce9a7dccb2ec3dca312c5dbf85920e5 commit 6bad4ff84cb57f548d42a41091159b750eed9ef9 commit 6651875ad7796ed3cd84b3bafb3885d05bb543ff commit f9f4daf15398c3aa0aa2dcd05ed4ea2544bcc62c commit 2ff6a14b20298db0763772b62cd4fb030e6d7f75 commit c6e3806705d679edf135dff5d540a278fc406f15 commit 81298056a78c5163b216f17d17c43736e7069961 commit ab9db127ee03487785509f960e7b5b91cdb6b92d commit eb20cf30c57c37ed05f44966dfabc2c34bf46cab commit 5821a0bbb4c39960975d29d6b58ae290088db0ed commit f09d2b0bdd78ffd38227426fb2ceab7ebd141391 commit f06d1d66d54c223e4f0f73393d94afd88105b6f3 commit 24b8b74eb2eb578fee046c70681000f61afa5680 commit 7f35680ada234ce00828b8ea841ba7ca1e00ff52 commit c5cb0002d14b6f7aabaf7d67d0515fe70aea7167 commit 17f65658c8adce6233f9e53be59d399af6180059 commit 20e10881a043af63f2962a9e6bca64661225b383 commit 594740497e998d30477ab26093bfb81c28cd3ff1 commit faa406f4233ecbd781554ae0a850e56f53003d2e commit 68e355c00f2d58ba0426cf9a4d9df77077493018 commit 61243c173cd26fc8c6bea74d6d47a37ab520dacc commit 143fee0ccc97284e6ece1cf86b7d50721b522448 commit 0dc662318d36e060268751fbd3309660acd3c5aa commit c55300ad4a1814bac9191a4d2c7b0d74273aec7c commit 6fbfc3a23c98bdcda679161c4f4e31368008af8a commit 08a2fd23c6c21e5ef24248a9c1b09e929655eb3b commit 136788cc74cbd9fabc2922b77bfdd38a53eb7155 commit 87d6b28e4a753f4a0572a695fcee094510dc6519 commit 284498206f31e655fb61b1e08d0506dccbffe55f commit c4d7738c9efc81a4f0364da1e673ab1b1cf91735 commit feb54650bae25f2a2adfc493e3e254e7c27a3fba commit 0f28cca87e9afc22280c44d378d2a6e249933977 commit cac3bfcaedbf4d5c93cabaa7882f243099afb8ab commit 4e2d10443580d934188f226f48eda7d650711e03 commit 0381ac3ca2e727d4dfb7264d9416a8ba6bb6c18b commit 851dd8625320fb626b6ab6399b2402fd84abcdfb commit cde83d47482e2578432f9ce029748f4f0d029e9e commit bb50bba9c6c741f5e359f009dde3b25f12a84e3d commit 6f73d6762694c3e91c49e6708077a0de2a75f2f5 commit 62f8f5c3bfc2968461b0a74f0e393325bec16c69 commit 1b3aa89550a2ce4f4af41e11162c5cc0b0b07b4f commit d7053e631e891698f7532712066014ca140c8ff3 commit da4d45b7da937dfbeb918b87c66a5bf9a3079ed8 commit 26c763875e0c15921a0480e008e2be07665e7f56 commit 8728df26dd24a63b24e4e5a6c847172add2fa149 commit 9e68c3841390c43521d4fde6c51e91fcb2d4131f commit 5b644783396b2150eeccb9a079498cad5dff3c42 commit 64f6516e60b0bbe6abfc9f1d9f1999012e0f11a6 commit c11256f82ec82216f69dafee75b3d854d92392d1 commit 6aed665f9d8368ae1e962f44339150884bb47f5b commit bd63f11f4c3c46afec07d821f74736161ff6e526 commit 430ac054e5ea172a880e07da494f65f0b80d8fb8 commit d9c1452c0f07c2e0766a6cf3921eca182e26fdf3 commit 20f038d074d4fa52e88a36bebf25e81c88d7e6fd commit 9e9fa6a9198b767b00f48160800128e83a038f9f commit c24968734abfed81c8f93dc5f44a7b7a9aecadfa commit f17c655cfb99796918d96ae25261db2640407d01 commit e0d7371b46c7b47cdf5391717292033365801437 commit efeeaefe9be56e8ae5e5b4e9ff6d2275ec977ec5 commit 5c57c099f442acab13129c9e15ad2a0c31151c98 commit 9cc4853e4781bf0dd0f35355dc92d97c9da02f5d commit ce19bbe46fcfb88e75a6c7f691df4753a72daa81 commit 7aade9ceeb88d8ca674141d2c245f0107032afb1 commit 4c59b571fce6cedefc1c8e5158f7548f05c05ed6 commit ab9a0b1f3661157d144fb744f3a197563e8e0ff4 commit 25a2b22e4148b1ac91960e13f4f5de020ed04d05 commit 2f83658ffc8c259f05e79dc632e34b26bb8b75c5 commit b5fd0cf3ea377a7332721df8a8c8e7715f93c8d4 commit cf727044144d47c3e8482b9a7775bd3f04a87341 commit 247c7b0dac3cf1141b8bf5520adf2fac1a797aa9 commit e3c60b4ef42d4db5b8d1434fa1741abd7f2fc850 commit 5d6ec040ab44d23953a2efebfe02e41337952be7 commit 7fc83cd079bba8b96b0f46e31f26c8f31c814146 commit 7d188c521d9ec3650136e9b9c81c61b22a544ab3 commit fc801750b197d0f00c09e01e59a7dcd240fddcb5 commit 930e7cba1190a3251fcb01c8523ea9aed89d9a51 commit 4af48f1d1d0a6f050ffcfe83e939c9455d51267f commit 1db4b5264819a8e3aa62e38287bf1da2e1dc8894 commit 5c57cbc390b166950c2e6c2f0c4edaeb0f47e97d commit d8609fd1e0742ba3ad2e51bba9dd489dd03d8599 commit 56426faa1492289ff794620c4ed8c1847a420d0a commit 254a8d0c0071255eb19a81a32ff8d5a0beef1e34 commit fc8adb13d844b44c147b4dced292c74a1ab5cb25 commit 16bd48dc2b3b08d8b3160182b42e51eb2c274706 commit eb6b94db2f4a585d4a9b8e503d7377d2a23c1104 commit c750c4ce1ad69d3df68359abce70ee3d0064c97a commit 24f6fe3226c6f9f1b8406311a96b59c6e650b707 commit 16490922a95f4f67eb9d918f94a4f5b5bdc9eb80 commit f4e3a12bf2d1983b8f352b7719794c52be7e0990 commit fc67615f4ecc3b66bd458840927272aa131eface commit 11a8d095d86854bbc8697525f2c543de36bf5804 commit d9307f27efa531f034862bccf2985c5fa22c4b80 commit 407d63b3af881d17c39f16cdd8416adb0e4658bc commit 6537f79a2aae65748d402d6c46e79d9e473d42a9 commit 019fd800cf4a4514bbb502a52d376b01f02cc347 commit 9f1c8677724a0e6a6ac7a74d2b0192a584df859d commit 623411c293d180ed51f1c3b5753c5acf2c2a4077 commit 97708335b04df3eef0e650b0601cdf6c5ab16dcd commit c9ae7b866f32043d23a34d00a5e6e8d86d2cf10e commit 9affc1b87ecba31458567359b5a28b0b08920a24 commit 72aeb6ee0c78fafc476c02d1b19b5b38defcb57f commit 438eac25d033a1701d839bad16c6ad78f683a293 commit f2a5002541d0698509d4f3adfbfcc55a9c1e2dd1 commit 5089c4a8ebea3c3ad9eedf038dad7098ebc06131 commit d52ea3dc65a9d504afa7a03ff24e17866670bdac commit 526e6ca5d1d5fd22c79033cf5a8eb07d98a11274 commit ea937ad6e925994b94d17555e4c2f2f9a99234e1 commit 1f474c8742fd53a048cc8cc4b20e20b2614397eb commit d6aa8424bcac64b2608452589c9a09984251c01c commit d11737f26ffeae88350b835caa37c7449da22550 commit 272308add589bd46ddb5899685e25fc9f6a58b1e commit 1a65327a84db5b9081a51ccb1c562083f59bfcec commit 9731dd4cadc53251ef80b3655c8d841fed52fa3d commit c443514a7d6d648bc497efbe502e2a49738b94de commit b840b64bc8ed3fc46f6d6aa7f97c43862a33bea5 commit 71be4b16d39ac8b25a8a04eda66cb65581e1a03c commit a141d2083b462505727e14d98db5fc3cd43d59c6 commit f51d22b0d04aa33e94d663fb63aa61e4da168523 commit 5f034aef8479ac80e8732958dcb66b8eda650659 commit 85ee819fd08eff7617c186775fd958e6258216db commit f69e98a91a01fd7c5755dd710e94a17d6e9f583f commit a34136a3b3526369e1b3e678590e3760e7653f0f commit c2fbe663ec4f991832d67f936d3941f781884156 commit 2bbb54bbacd674c692306351d1be5a9b5e61a1e4 commit 28fdd0c32daf9a50a606530d54784fcfa29d88b7 commit 9a4c9de4838fd8ccfcfcfdcd7bd472dddd11f264 commit 3de58f22f544ec9c692993fb1f3bc77163d3d5d8 commit ebfb15262af3bec6c3cc263ce04164e44eea4b30 commit ac31a24d9188a9599dfbce7664cb11e6292873a5 commit ac78fa502afa539cce3a285e50d7fefaf4d2115e commit ba8b460445f8d19d530646729c29319c278dbb38 commit 68ad7f90c790a178f47ef08408d97a81cbb71b37 commit 914da384ae9a77079314f07022c18063c7e77778 commit 4e1db0119c64fd81509005a961790d263e99b21b commit 2595fe04a44d8ac7a56db27dbd1c54698d97fc0b commit 869968225718ec7d77c418e2f6be996206d0428e commit c78783f3227f41053e9a44f536d13f05383b875a commit 8d2ba05b099aedfcece0326a5bbb2e7cc33261ae commit c435f61d0eb334dc8367164a125aea45d9dd9508 commit 3f49f7591e7150c502aa8d04354941ec2394153f commit abf0ba5a34eae0d7359228f4319a6659676fbd0a commit 0f95ee9a0c579ebed0309657f6918673927189f2 commit 1556c3b4c7ed2c8f17f200d53897251fc68b7377 commit c0c87382c1a6985cd12a49a62a893361e5fd1b8f commit eb2983c09f4e053f2c3362763f5e1073b5e4cd7d commit 04770b082e2a207804c633fbfd5efec28cbc5673 commit d6346ae0779ef9a41562f5357ac28aa6a69b1c81 commit b8fec4400923eb91f995d7dbe97411b8991ea559 commit 651d4a0fc4c5c6a2d20c95ef814f0d4381f71d55 commit bf9719f8c89addcf1947ce2b29cea29ea9d8f875 commit 0256ea13d169e9ef00ef1b1c9df395b1d6bad6f6 commit 5c9016b2ddb375662aff802d25c96f5483a4e024 commit a50cc4955623685402ed6deeffad7df93591a416 commit 7a710a8bc909313951eb9252d8419924c771d7c2 commit d36bdd77b9e6aa7f5cb7b0f11ebbab8e5febf10b commit 8ee53c702f23d511b7f635a4eabbb85384149f8c commit e4a8864f74e9e9e4a7eb93952a4cfa35c165c930 commit 45c64ecf97ee370bbdbd8eed7aed9c8ff5d1b0dd commit 88436dec47a89d944e834e27d83a5dfd49d032cd commit f0978e92c2f7e9a38fa05d30a3e901d16a30698a commit 109406c92f971e739af04b278ef75dd0fee68a40 commit 781c336a6caa67c68fe3a25b108d1dc38b0e7cc0 commit df17ff62b626554c6048bf435a87c5fe1981e8a8 commit 3e29d3b318533ad031396a40322e0ae1aaece943 commit ac1b49be7fa8cddcc194ce66aa453e2b2cff5831 commit 319ff09312934b08b532e605042dd59f41b74458 commit c5dc92006d50fb55a916755206cbac1022373134 commit e7858254f9af9ad4f1570d781666e3af4c298a88 commit 3fe6c7f53eaa62e3700d8ae076e9c42a1d855242 commit 2ef6efa79fecd5e3457b324155d35524d95f2b6b commit d5929835080a60f9119d024fa42f315913942f76 commit 2b1333b80885b896807ffb6ccf4bc21d29aa65e0 commit 2c7676b6b1f57713f55e738f803ecaf91dfc399f commit 47fa33cc54615161ec5192389e55f3b95274f56f commit 6434cf630086eea2d091f122f5802582a05d9d1c commit b708b36afd5b5f32f7cd49b3bd4ab524698c3627 commit 93e163a9e0392aca7d720491100d810bfc3112b0 commit 1ec17c26bc06289d368e2523c0e95b5038c6eeb5 commit 96988a526c97cfbe6664e637640dca9406b0b928 commit 1039fb60463cfeb1fa39c6c48b5c3afcf5b89948 commit 3818715f62b42b5c0bcf456ded3f59ed3908cd6f commit e60c4354840b2fe8e1c4df3fdc5c17039824ff96 commit 89fc846675537f9f6ef62271e9d60556c873d65e commit 993a87917c2af59efb0ee1ce43c878ca8790ba1c commit 03e22ba090aa42dc029c25dbd58fa4b941c87ec3 commit 805245071240ae480503af29c7e31d2d7ff5c7f8 commit 255490f9150da7c6dabe468f3a877b92fd0f02c1 commit 720cf96d8fecde29b72e1101f8a567a0ce99594f commit 90bb087f66745ca48f6f5e43df99a1212d89e712 commit 7c1e1c5e0eb66bcbbedde92eb2bd988016cf2716 commit f16a716621a6edf4eef2ba1409594f5c780ea09b commit fb84efa28a48e30b87fa1122e8aab8016c7347cd commit 5e41b01a780893507a0508f16b9c4fa7f7a48557 commit 3fa214eea43a07c239bba54426399d7d175d0454 commit 47bef230225b8d295255d88e130edc0b45ddbaf0 commit c0398df2a195fa21122e566f54c1f78aad22ec47 commit a960e35ac0111b793dd07f3ce6dc3e1981f91679 commit db9b4ffbfa82201fd7e18f6e434469f3648a8bcb commit a64af136771a7c50818fdc23ad4ce140ed7b66c8 commit 15b9ca1641f0c3cd74885280331e9172c62a125e commit 841d742f094e00e514627bde65d7822e98fb3e4c commit 2327b13d6c4758926e57b5b6c3094302ae3b5e9b commit 3b5765df375c90d46316822131acdd5cfb1c5869 commit f5aa7d46b0eec280ac022664f3e8b6bc9f4ee099 commit fc98eb494c4be6aed076c1ad21d46d5950415ca0 commit e1b7234b4a3f5fa716a84b081cd0d0245674f761 commit e21c3adc6fba27a5dfe3fa5e83d947ad56cb27ee commit 87a3451e346be3f9a5d8943ae094888044314631 commit 7c021558929f7c80ed07e83a91d0905c31e8cd9a commit 4ed49c954e35559cb4a34ba049a15f54ec7fccf6 commit bb4f196b47b6554ba89f02ec60246f0c643a4bf8 commit e751e4be1eec4d427d91583f31ce56ccb5286a27 commit b3e73cbf17a95a85e3a943d7500e9e477d6ab9c3 commit 1f43b8903f3aae4a26a603c36f6d5dd25d6edb51 commit f7ba887f606b1895dabf718547cf7397924f0d3a commit 6626c5a4ea2ef1bba3e02f75f797523e168fe28e commit 8748de873fedf4d55bdd99bbb738ee7ddf329792 commit 51c45e450fc8529495bc85c2d8e309816cdcf959 commit 1320d6c7b0deb7219701a55397e93e6c73d00366 commit 262236b4f5a7d2fe31ed31d34669a9ea4f1c3272 commit 0081bc072837b66587904e6988aea1e0845b0294 commit 5d763a9955f0fbf2681a2f1fa87c416056bd0c89 commit 4dd905fd9429626937107ca13770aa836c8a7e6e commit 10a36226157035e84aaa58e1699a32b3de2755af commit 052eaf6af846e59073a842e9b9517ba9d3f76d4a commit 84a8b3908285d007db49532fd4b51d4b183d1242 commit 4d31819a3746b1f33a915546a4b1aa19374d1544 commit ec457f8378901d673b841e81d289b0165286db7f commit f04d275d94e164d24516c32437c988a323018f63 commit 06f2f7772dc7ff2e3734e654cb2d0b588076860d commit 3ab55e3a1ebc22c1e0b7c72261a8c9fe78a3a09a commit 4b33b5ffcf68de3a43e7dddc91c5dc86e6ed8587 commit f173fbe5b042e1c87593e3b06e85cae0094dd867 commit 98dd398aa3e021896adb7f2b1d0f6b2d3784610c commit f18368b686a86477a79bc240a3a1c655d88a2348 commit 95133f41b090b09ba9163b4469cda1d5ee230cd3 commit 2b96b036a6a5767b84f87edc2c0a1c70c91ebac0 commit 6bad8e4a0ec8a950d10d91cb1846f3ef3e1f4ae0 commit a3e731260b9325e2e87baf54f07619c6cb83931b commit 0bbd1c7de319ca5a08359e5fc901a0317bf5c0d6 commit 20cb72174ddcc86596286784416adb947195e45c commit 990cad0e4a9df4202cd482c192608caf6408e4b3 commit a30e8c13e7affd6fe379c6bf213133b0f917d1bf commit 074efb5cadcb3c9e40d536a730318bfab3384cad commit 04e6931a76e592e66e1014ffe4d13303ccac5d8b commit a3a885878e74d3d81e4742f8dd84faa27c8863ad commit 32e8ab05ed81c995b92f12b590c12ef951ca1129 commit 3e838f7ccf64b0e33a2f6d1c66158cc5ab04c86f commit aeb73c608c5b7fa6fad6d98694323e7629e93cce commit 2d7a1ef85d013699ef60068a9f37ab56ffb33c32 commit 2b2db1f9dbfbc61116fec83a51d16fd0cf49b61b commit dc597268225b2e39bca0bc0c5394e3e6266be2e3 commit 43af2220b3302bc04d72bdf07970ebc0fc46155b commit 83a3439ddb28e15afa66f52650cf3c1486ae6515 commit efb4fd107cfd9748f777a4e9015d803d3c9db68b commit cb4b7a23ff85740ed9e0a3aa4c3c0195654a89d5 commit 163d4cd26a18db7db68a98b4d1ca95d542ca72af commit fd6ae969cfa2b12c6082eb83bdfa648b15d9b3c7 commit c85c623ab406188da7969180e53c4b61e8a982e0 commit eec53143b7fe1ccaace434e03b5959c9117bf9c5 commit 14d6a086f6b91238873d3363f840a91b3aa062de commit 7482a65664c16cc88eb84d2b545a1fed887378a1 commit 7cd6bb82ad96fda0021421fed8750a522dff2aa0 commit dc6934d5ae007ad53c88c3e0b9685160a39ba896 commit 62a4ddcb79e073465f21c5cf84d80a2f22820c39 commit afd5cb3907eaf43e4ca88c162b92143551f0323e commit d976521a995a817007ae3f471ac22b93b1bd39f7 commit 0dc987b699ce4266450d407d6d79d41eab88c5d0 commit 009a3a52791f31c57d755a73f6bc66fbdd8bd76c commit f4f9b827d76d2fa23c2a2359b4e9fb417deec61a commit ab8529b0cdb271d9b222cbbddb2641f3fca5df8f commit 543faf57ee0ef6feb1ef60122c0abb9097083ded commit ceb180361e3851007547c55035cd1de03f108f75 commit f12d07d6e9f22bbe65d158de1435ec515acfb50a commit 64e06652e348f0725368853688d3c15784549fd2 commit 9ce07d94c9f80e1b33f5f6bc2c5a27f6cc56a6dc commit e0a9f1fe206a66c3507ff8b7da56f9d1d1dbb9c4 commit 7ac20b3a6a6bf1181a6f9d76c4d36b2395ae8922 commit 876271118aa41097d035c84f99648746b4a125f3 commit 373269ae6f90bbbe945abde4c0811a991a27901a commit 421f5410965dbc65b7bf7d2b2323203920ad370c commit 3d313f09f31490cec9d5251b59adeb6542c944cc commit fa3dab48defe1ae2f5a5fb56df5f5931fb3e45c8 commit 508f748b03949143ccda614b900e3f7d842251e5 commit ff83e6e7ab042e1f6f4345be1837d08c41b0a49d commit e77a541f5dea0a2ff9d6a40dcda9b284e1e736fe commit a957995618a8afe3efa2b5746c0a954bbd450882 commit 10a9035c36d00586ad4bdb838f8800be951db8d2 commit 50ef0cacc43c5b01d5d1d65f08af33513b07e2c7 commit f64e6e0b6afe047cb0d34a5369597fe0d188e94d commit 5027605aedec363b3209c17d382efe5e29211594 commit 7fc494f9cf8ec7497d4aab26a3b19deceab0fe31 commit 366e817e83e4d795fe3f6e7379bfe79d49cac89b commit 805ada63ba0567b15d10d40419bcc5e6f0b461e6 commit 232b95ba4e83ca0a77f19fc772ccc6581051e5cc commit 5e8034364c22050b8564060e79947d094a65d45e commit d54cda74a9a27d6a18c6b670f7299114272a5e50 commit f9bbc1c8449a51a049a1d6d436eb973b00b6cd7a commit d3a453416270f5c7f1bf409597d702a2230e5a6c commit e9fcc60ddd29994a8b2a276ee9b454d7cd449194 commit 803481d869a4c49337c9ae40197c668e365a6fcd commit 8c56d5105747189c86e6df975257580acb2dd223 commit d9e74da2f1fc42926c6ace1bc47a700f88ada696 commit c974f755372bceda2c3cdc31b4b27dd772172203 commit 91c2cbf9b6a6779ee428955fb202ae66c750aaaf commit db475c11cd592d626749c9ccd98f12c05f29ed88 commit 103f06fd478106fbc2394030599db5c852b7fa32 commit 9126ef85f2b8654060929c5b6a876376702d1017 commit 25ba9429e0f40d3b725781e70d2d6b9ce47a0df4 commit 831463667b5f4f1e5bce9c3b94e9e794d2bc8923 commit 2a9e9daf75231c2f577209af5ec62aecdf7ca7af commit b00de0e237da32793dce221119c3120b8276f4ec commit e5d6eeead88e40282cb6dff38f8effd6341561b1 commit 5171660cbb14f3359e8a8bf7523afb0789fe1bcd commit 7283f862bd991c8657e9bf1c02db772fcf018f13 commit ae25885bdf59fde40726863c57fd20e4a0642183 commit d6b9af1097fefa7e6509a4b2f03af45f9eaddae9 commit dc2cdd17d1fe25c8d25c306a90cfc9ff17a7ca4f commit 016a14beac6d407c9a51f0b92d1e586a00bfc345 commit 138c2fca6f408f397ea8fbbbf33203f244d96e01 commit 84509eede6203bc5ab43ce0361a6ae17e2a17152 commit 8f456104915f0f991a2ce059a640b0a6f807e2cd commit 8524bb67145d8a2b495fabcd4b5643010ea43353 commit 7d8097073caa334ed6187a964645335324231e01 commit 3cdcdc34f35eb4616f7e5954cbdcd3390da8eae4 commit 04155815dbb8320ecd17dd54e85c9a5ae5d63bb9 commit 12d74553726675b5c991251f349422a24c575e56 commit c92df6aa397b5a37cf06004a219b4fdf26234dd6 commit 5ba584ec1101cd63081ba7c228849acef962f6b9 commit d5a680548eddca0e2e01fb84b85c1f7687355e21 commit 2e25ae522164e8586520ef20bddbb41c97b0057a commit e97f91e8d39f8f5cff071d847c2d192904e35d0b commit 95be40c875fc848d99f231e77b341e7ab5d8125d commit f7fb92cd2e39357f14846d69ae0e1d8692371f82 commit 46a3b1125308f8f90a065eeecfafd2a96b01a36c commit 7307e91bfcd0e3f123aab01b30557f93923b6d73 commit bcb9aa45d5a0e11ef91245330c53cde214d15e8d commit 59bcdb564b3bac3e86cc274e5dec05d4647ce47f commit 0667429ce68e0b08f9f1fec8fd0b1f57228f605e commit 58eaa6b3fb636072a4f19e6b6c76bbf564e95b95 commit c83375699fc648f94787d00bc615e370cf8f5fa2 commit 9569ff1a188fe48b46eb1ac2ae4543c271e0d4c2 commit 882d90310f04f3f90753653b8787fb4d309fbbdf commit 01cf387b1c7f60527c91627528370f463bcb84f3 commit d7f0c8aff01340c2bed48f1e712a7f17c31b3db9 commit 1d3182006cf6eea26d0cd752f8042c3cae43139b commit ca0cb8959f7b84742c3dd612f5b044788cddfcc7 commit fe4e9ff9873758ad07e6f7b3088ae3a9dd3ff1b3 commit 5c4904ac34b76eb58abc15a52603ee59bf8be85d commit dd70748eda3f63217d5284f48651239a9721245e commit 9e225fb9e636b31b97e9d35324c2f9e43ee0aab4 commit 45ecaea738830b9d521c93520c8f201359dcbd95 commit 9ae55f030dc523fc4dc6069557e4a887ea815453 commit 1c4dae3e4639540fb567e570cc56a3c292afb6fe commit 8c07f33ea096a1d25fcefa4e904ce50aa2358876 commit 94dfc73e7cf4a31da66b8843f0b9283ddd6b8381 commit 8587f3732b37a39de205d8c42f5448dbe6aa6b55 commit 1796c0255bae9d3d4528b8b3916182b2bc4e1e71 commit 50ca65b44e50e66e370f34e83a1d04a41bbffb70 commit 5bdaaf4fbf85d47d08f76f41108d8d3bbdf15f1c commit 9db35bb349a0ef32184ab68f79cc36026be4585d commit a06968563775181690125091f470a8655742dcbf commit 79398d24da4c9294285bdedf67018ff09fe97bdc commit 0b58162e1207db5052d1fadd5a16eeb90720d765 commit d193b12b2fa6dc316e3ee8871b4ec05992bcb7b1 commit 7bb97c5a39ecebc8ff5db1491fe4e7a8129f93d5 commit 70f1fcbc83582419fd753701c5abe674e05db785 commit 01752681f1ee5febc9dd2da23f5dc0289ea125a6 commit 2639d3e44f9c15b3f29f79943ed58f769faeaef2 commit 46d44516aa6e142fd70287e829e3bbad0d2ed35b commit 7268f0a9e842c52fa73b9f5afc1bebcf9f7d48b7 commit ff15cea338d2c78e0086d55c8a9dd637a5dd3ccc commit c5cb2cdf23ceefd9ef319d6c0d6ac294dfe356b6 commit 5f278dbd540b7548bc5193552e6d478255c14c2d commit 6fb5ee7cec06266a29f25ecc01a23b9d107f64e1 commit 6e9c65f71eddef88f14b7210bbf30e6ce2409b87 commit 02b16fbc56e97b295239c83e43f186c191e42dd3 commit a819451eda6df8f8445f9c7b093b86c4d1919b62 commit f999b37eefd7f1d59bece1d94fa0dbee2f2d62d6 commit 6aa145bc943d34bf05f2bc24ea3aa36d70470f1d commit b71c0aaab9ef1054155a075cf5e8a1db7b37ca5f commit 964893d3caff6bc39f6cf5cb7d90fd78a810c535 commit 3d1ab66e043f2a143e4d93242de7710a9c98c829 commit 89f4b4c53a7c12d2feec0ecaa15b0493b2bd61e6 commit 18e3c1d5d4cf6bd30cf1f1bc10ffac7a05a6719d commit b1dee9527e654207c0980023fadabdd12d3dba80 commit e61f294c7e8da94bb1c9d66f2cdcebfa2dc535a2 commit 0f36d074aeb51a20508a65861d1518dbc231a1fc commit 87a7d5350c67aca513dc0a80f696d5583430d594 commit 3019a8d7c1891ceea55820ee0f7bb36192181aa4 commit 90d5fd317c745a80019ed7f12a1933ce6116e0e4 commit 6a4a1f6054318cd3590562668798304b4351ef36 commit cff35798fad565b5f8bbf4ef84ac698270dcaf64 commit 7d4705b33cb84bfbba04de153d4f5e83041ac393 commit adc0e6ab0df390907228abb76c6bf82382089af1 commit cf6067290034b9ebbe4c39733b1a4acc94876c26 commit 395ece6f14124c2245e4b7fe74932514f999faa1 commit d7cfea332cca483ccd3970ed4de73ed892643e51 commit 163a5a58437062ce4dbef2aab6de4d784043bcf5 commit e0f1e65b836c42741288a367eab565167a408b59 commit acac270d09828edda2d530d255ee75ceb87583ec commit c7f21978fa6aafaf7ad37155c7d3a217dc3d16b0 commit 46ae2af9a8aa168cbad69f21bb1426771339ac9a commit 414e9f520e897818302a6b1729aa2dad8cc928ca commit 3db7f894549a54dd6f8dfb7fe213ede83249bb94 commit 971e4a9781742aaad1587e25fd5582b2dd595ef8 commit 0d8928a94ba18205cc7b41793af333e6731e9d76 commit 071ebbb0d4826ce7c47953b955a522f503dcedfb commit 202804b9705ce26788c443a54aec47eae20f4596 commit 780f97cec866e1ec6967c66c2a1f68b8aa1e3f23 commit c5da61cf5bab30059f22ea368702c445ee87171a commit f929217499cf54a30be995aae65e9951ba079c90 commit c6a3d73592ae20f2f6306f823aa5121c83c88223 commit 3f4309cbdc8496373875cfce67d7b5dba87c3ccb commit 141f733bb3abb000d3949c3b2f119751fe93b0c0 commit be4e366602303615cecb7636075bb18b0d3cc33d commit 1dbd07e088673dbf0e10f4bcfa17f971fd870195 commit 525e93f6317a08a03cc42847b3e075c92a382c99 commit d42a738e5ae5a73212a83414648a4fae524117f3 commit 71b1669ea9bd962d419aac41bc179e09e504327f commit 938d2fd17d173d0489b1bc96b87a1dd93954dc28 commit 11f01dcf3b32d01982d99df4492feef4332cf0b3 commit bfe53be268afd2248d1e28b4520361693c1c0fce commit efeb3caf4341357a7f4745c0da643b13200f0b9f commit eb1c535f0d69e3ec7679d4d714bb2a9765ceda69 commit 5cd561688b3e8a248fdbb37a1b10801b06736865 commit 3b05c960788439dbb47d0e62335f23869696b079 commit 8618b8489ba6ecc025be033d0fa87c0db53f5211 commit a913bde810fc464da6f12f3f19f3483034cc7e16 commit 3461b040a90d723c93c9d1c7c11e3464f5cadc0e commit 170a41e9bc07618d164f11b5154b449e9c24973b commit a6cc3c72aa0e8fb10b695c1a0c4ef07a66b3c2b0 commit e33c267ab70de4249d22d7eab1cc7d68a889bac2 commit 1926a6b75954fc1a8b44d10bd0c67db957b78cf7 commit 21779cc21c732c5eff8ea1624be6590450baa30f commit 1981c35bf7533d70f295b184bbb638d280fe2f36 commit 207d2073c648614dabcb06863d990f0c2a32c4e9 commit 73289afe03619bac585b69f563d0bb9a52e67722 commit 72bd9ea389c70ac948f48d20c0e4ae70c0153940 commit a204f9743b6808ca658c1bacedb34bf4c7e6f800 commit cfb979f71736361ec564d47d0a41f07e09983e32 commit 4bdb9d6501763e83bacbf26846754c567773a1fb commit cbe07c982dbd206defa10ba539e046767179edb3 commit 26093ce14b75bb0c4f0088abf2e11c351abc18c3 commit e0e146d5567317d6ba7d0169bed55d1d9ea05a61 commit e72f03f4bdc4f3a251343cf343bce28c28cbac2a commit 85f4bc0c333ceed24cbc9f69a2a77fab1ae3d4d1 commit 90f33674a0756a6f0907b8f6350cec3f7be4032c commit 64a30aaf0b0d9dcd52af526652937c1350a948dc commit 88ef4c5bb36bf60b317b74d8652c7766c9272a7e commit 2b2b3a751b29a09942a15bc0c4fed940b7ce1857 commit 740ccea3d36732346387ce882c50a7e4c3599316 commit 15360d7fc35b6b0f46240659a129c9255345a41d commit 7e053bab30e3a97bb681cec207a87413a024fc22 commit bbb6e5ae7ccfed7be06b5e8f99602100d4251d5f commit 00fa7f031dd4b885175da390e24cb02f6a45977e commit 48e03843f99857a561f25fb8e583c9a7dee5b81f commit a5eeb70de411ef8b1cf5d97806ed6769b84be872 commit 97ca308925a50aa80711ccfaf814fa3898374862 commit 82a562ab5f0a918ef905c29c759b4f0c788754d3 commit e73b386e75586f28b9b58641938ae0feb340bca0 commit 6366b00346c0fe8ae95d91eed3dd2d04f77729e7 commit 0147064588253b9c07766bd6292a6159475c2790 commit fff7eb56b376cadc58af14df286009086cc4d80f commit b3859b16d27fa58f99ad6221ea427dac7d751e70 commit 7c50a3e99a2eab5b3a9f273ea9e40ce919a3a3e2 commit bc19909f19fdc8253d720d11c948935786fbfa08 commit 0c7ea6f824345ffbb3b4ef880c7c56170365bc1e commit 1daf740137275aa56858ea1cd194eb3c1f6da5a0 commit 22676bc500c27d987a0b42cbe162aebf783f1c38 commit 8a077d9caa3a274de36ee2fe7b608041f5690343 commit 4984dcdc1f78529a0c699c1931971b7bc5e32a04 commit f64f3a72835fc63069a87c2811b61c9a73033c72 commit e9a7d236eaaeb1cdfe20e583e2e1899b26d7469c commit 9a714dcf1039d1142a1c3ad81db09d2706230e00 commit 8bc3812d0b33c214c365fff5dfb65397ad6aaf19 commit c1127df9515ca781940927deffc5ae657ed73a5f commit 09de5cd2c170b19e04e37439a712da52a0535015 commit 3b779044c81754f094ee88afe431d839e3a74aa0 commit b278b738c3be4f383796d09ef8fb6e49fee2091f commit 7acd7ab0297a37e44df928378f53d4260b25fd2b commit 427a60c1c30e1c0e9d0800a63df51985aaf3a26a commit 81990c3c07905af1e316f048a1ff456b2be224ad commit 068ab0cdc1a97628f7007b568adadc2a1fb08384 commit a00a3cef25a969bef8cce011c34b76071756dd05 commit 3e211f23aa1e1a3223edb64c4bc25cae28a1e3ae commit c3c483391bb23e9bb8d8a51e54fefcf508b1cce3 commit edadd6fc28b24dd5806dafc4b38633494ff423e6 commit eb08accdd8d966e4027f8ba52f43faffa3e6dcbd commit 61e419f651a65ebe01658b46bfc317896cac0eda commit fd3bc691fc7b4e553f49bc79f86b515ce2638141 commit 2e02ceb73ff87193618a21c2fe165632f52b9b9d commit 89e2b4373ae5215f5c5d1b7726549950daa77018 commit fc25fd602b1e101a45650475a8d2f00d7bb8e971 commit e660916b7f4dd3f17e5f28707213b66c1553d83b commit aa1965973cc734bd61294b675ac9763cddcac0ed commit dfb02eb6bdf84697dbadd69a7df12db612ce4ed0 commit a57e7345cac12ccdf883f9825523470850166635 commit 47a4fb46797016228198e63a7aa679841f80889c commit 90f5514bcc1a40de3391da552984717fb83b16f8 commit 819da60d77c9f0ec9f069cb27952501562a2e17a commit d8b599bf625d1d818fdbb322a272fd2a5ea32e38 commit ca1dc50fd5cfd7420faa46183f84bc203fae156a commit f24d1d45084155c59a135506a37bc4db10703fe6 commit 3d9c653cf635849d0c24a1ab17c2752a19f4ded8 commit b94a1a207de5e06a55b5a8259073fd8d1637f093 commit 027c38b4121e7d9ae43b2fa21b35582d1aef2a05 commit fce7bf30d3309ea325a7ec452456f8f7c079f622 commit 7d261c50d9c1adb70f6ac2e26edbc64c774c21ca commit 371409df9236bd1abedc143e76fdd7080cba3ba3 commit 1f374171fd345aaad9fcb30ac3acd255b5cd2076 commit f72fc9bd226979c272d6f829a3c60c3d9e8dc969 commit b83c9e3dd5b5dabc507e79c3f03e700a20b2a4ee commit 30ef0808e61850ec9dd105fe0a21f7f9a7c69324 commit 34ce1a6a29db41d5d4bffbab0872b1e1876cb4b8 commit 75072128d704576c39b3ec36b2cb84af316d88d2 commit 9da2902609f7519c48eda84f953f72fee53f2b71 commit cc3cb791f19ad0c4f951f38c98aa513b042ab329 commit 11d526f1972f486aa222fdfba751d2f0249c002a commit bdd0d7e290e0e4c8f7545fff89770abbd22bd51a commit 8c96e566d95aaad910a54aa0b21b7753eb615a00 commit 2fec539112e89255b6a47f566e21d99937fada7b commit ca437b45ac6d4baac348303920dae0fdee68e937 commit c59d73d43fce92e79eddc047e1961054f1284384 commit 9a92732f040ae3aeac017d0e80501cad1127a13d commit dbeb232726871352fc3e688ff5b02897f8cb0dc7 commit bcf9b296627c6b832abd388b5364262853430262 commit 7835303982d11ed700ce6bc530303272bfa8562f commit 5531786537e4fcd82a221b0bd01ce375942b3854 commit 9a23fcf79dc647627b3780284a156cc6e7bbd7c4 commit c028d66e6ec471fc24f70204768f43594a6a8b4a commit 872642edaf4228040473349ae0ee872264fa67f7 commit 35ba8850b673050b71b17c1421079031f4fda319 commit bc99f1209f19fefa3ee11e77464ccfae541f4291 commit 344feb7ccf764756937cfd74fa4ac5caba069c99 commit 6db5e0c8692e590734a7ec7455365d9cbaa15ef1 commit b45b4f880fb660c4bd4794a2ca3950c4570e12c6 commit 737dad0b5d609f464cae73292de646d3d016ec73 commit 88c775bbebc9c5b080d3cbbdef73a31eaead9e5b commit b7580e669ca0d624b122455058aa6fe62c0fef44 commit ac9257f0f50871b7459dac48a5c11bc7b2094245 commit 636774860a6240dcb148f9a08d333a697f3c74f3 commit 14eb72ff580de169212bfc5222499febd312a252 commit 8a076bbcc1278c6256c57915bc193890a6432c6d commit 90bb21cb692ead906738d314f3dcdc432aaee015 commit 149f6d1a6035a7aa6595ac6eeb9c8f566b2103cd commit 9dfc3ee1b0f22d9415c9b7c316447d47d4a702d1 commit 922e7ee31defe461d8638f1277f0c8215c0707e6 commit e2facd575fdf13b718f6c833ed546467a3e6e3ba commit 59a1e9ed1b406b1ae7cbbc612ce00d459987d028 commit 80fb575678b488b920cd9100939b60d480101907 commit 50e8ca0b675add8eb0e95938448a4a0f9fb0b6dd commit 33da97894758737895e90c909f16786052680ef4 commit 1ea7fe77c0db843d8e5f96ff8535dfc941e88694 commit c877bed82e1017c102c137d432933ccbba92c119 commit e23a5e14aa278858c2e3d81ec34e83aa9a4177c5 commit d9e019bb396fc9448b104a6f4cdb7acf8af02854 commit 911dd554a129081f056417a30054f24ef6818e3d commit c4feba47aad55aca90d9a2b104c0345ca6f93712 commit 61c1f340bc809a1ca1e3c8794207a91cde1a7c78 commit 4ddf8d7dedb881c6638850f1b74ff1f9967c89b7 commit 6d7291843ec5008a9ff1c011d342679fa9bfe4b9 commit 0196cc65f91710e30d45cea78d75fd616d705002 commit 66ff4e4ed471fdfa9ae4c49a0abcf5d5043ca65e commit 097d56cdcd77639bce7e205adaa22b6f5e7d93a6 commit 40184ece92ebc5adfdba84554bffb60ef0e37029 commit 7ba01b504c16ae64a8faa5f5ee9a809d424cdf0e commit ea0b20d3bd96f9ce2a1e9d886175411c05dcb179 commit 89ed996b888faaf11c69bb4cbc19f21475c9050e commit 9306b2b2dfce6931241ef804783692cee526599c commit 57b9f3384c64e37bbdad7f127625ac3733d11e5c commit 017860c909b03fa687d29a1ca46390ba9a007b2a commit c4e85551198ea894ac29da1a81becfde65c11f78 commit 236124d1167bcc539432b4f6fc19ce1fa015e2ad commit a84e43b81e45b3da19e51e1e9426ba9e4d0fd1bc commit c0ff84cb58faff9fdb8d955c6e1e07fd75d88c16 commit 58e969b60db0f5ca9abf0a8df28086efd601f38c commit f1549c09c520877be211d483d3c6f4e7f77d2588 commit 0fe6906203d02d050e86b3398219df7bd9e8fe47 commit b7320117b3d36fd6fe542bdac5f7af0a83bea23a commit 2d7a1f71837c0922645143cc270b5a4834595544 commit 86ef6eae0820aa5393983c38c1c5ff9510ca9118 commit af019bef6d6fda044c8db232c97d6be2fb64c741 commit 1f969d28cdbf99c28eb08ef0a0017713d6909347 commit 78486da8ceb2d5d833a69fd695bb9f5a941b73f6 commit 3d4de925356177dad0fb5869d1ea537cfa033009 commit 15c735e7990fdabb466a3341b6b2dfefd987127e commit 76611a84f235126f3258fbe4a25d85ab326ad6bd commit e5028e9fd3bc7c6b916568e5218f5fca5f0d0a75 commit 2a93292fb7860b51550d1222c151de1a9fdc15da commit 652284d6db17f3c7810495fda059efdd84b61fde commit ff613f7ba7105b17dbf251ca298d1de9124a9875 commit 0a94608f0f7de9b1135ffea3546afe68eafef57f commit 84900aeecefb281964c0ba23111be4809477124e commit cb50813998b5aed924323b1b46471e8c60b26692 commit 1e866f1fe528bc0158cdcd589053753032bdb52c commit 3fb0fdd7758d3b850db82899f532dc71f6909c02 commit 43195162fbf54b2cc35efe295d2ed072d2bd4048 commit a0d10c437c1c9859d24a16b90abf85120603b4ff commit a5e4a53818ad585416a214b894fdf568443d5293 commit a91d1a17cd341548fd9535e33c331a2756acdfae commit 17cd10a44a8962860ff4ba351b2a290e752dbbde commit f5ba14043621f4afdf3ad5f92ee2d8dbebbe4340 commit cc79950bf0904f58e651747c17987270f1931c29 commit 8955ff11f56e1596e9f80ff6fa8c48e53047654c commit 806b52287a96bf5812a6be008d24add3f18952cc commit d5c6909e74606870bb59b962200cf75eb25d6d0b commit 3cffeffe051a961417bc26f2053bced4cff83119 commit 41529d79ce1655bd7463c01d9813d0abb6fb08a4 commit 5439c41a80c00e993d18d1cd4407a6a82b35d963 commit ee7b62e127c8cc6db24f83e5e116357649f6e41f commit cc35e75273fcf4fb4f12f9d8fd979be7aa808041 commit e850f6b13a85b451411bb74a526bc08706129e8c commit b7be3ae759160aa3355ebeb0583f67fb9bda4dae commit 4fa05a67b558d2cb3acd2bb299b91220d405ca5e commit 7d09c7606346db9a48b62b4e02454a6b8f323043 commit ca0367ca5d9216644b41f86348d6661f8d9e32d8 commit 53c26181950ddc3c8ace3c0939c89e9c4d8deeb9 commit c96cfaf8fc02d4bb70727dfa7ce7841a3cff9be2 commit 60693e3a38903e39e4fac0a9849b698fc36228bd commit 891ce1c9623f36194587d02774ac3d8c30c3ca72 commit 3890f749c590a5a33f0034362be3304b69ae6d65 commit 6f2c8d5f16594a13295d153245e0bb8166db7ac9 commit 29a249d72d31cde3cd24d43354b40019efdb48b1 commit c9eb2d427c1c428e4f4e29f1e635b9a83236c015 commit 868941b14441282ba08761b770fc6cad69d5bdb7 commit c83dee9b639469b6563a281f39deb99311f16bc4 commit 0b15205c7325dc20b7da0068307670d222d66949 commit f6a3f66063ca39e7ee5fcee59e889c5ec4de9dc0 commit 75510fac07cdde23c9217c8299b6cd64c689fb2b commit e4b1edf48fa37cf4f5ca403e384731fe28d13691 commit 604d3a3f0dca0ef0ab0322f5e7af8c70c5ddb6d4 commit 748262eb400e809aa13e3485f4983c3db3d0ebb3 commit 49062ee374f7a47443dac7e255bd419861de5b43 commit 4c33e5179ff1a09cdfba38fa4fd260ae6735d3bb commit 912db6a58738e8be502838eb6a88f207ba356cd7 commit 98a90f1f0fdd112b85b16ef6ceee69f319ab9311 commit 958afce98c2c86732483458c03540d3c6ef45254 commit 3876a8b5e241081b2a519f848a65c00d8e6cd124 commit 606ee059f85a9aabb0242cbc72852572a3c40432 commit 133dc89c640f965c2736e70d8dec0699d763850d commit 2d04559e0660cf503d4e46cfbd7421d0b6156aa1 commit 50fe04d46aab77cf8fc3d48fbc38d872d181a849 commit f746556aa9724d740c44861db0ac005ae50e1332 commit 75a9ad8c1b7960794c16182fd90852918ecdc0a6 commit 9c913f38032e873758d1b13fce720a0c2cbbfcb7 commit 5877b7ddbc2502a7ddbc07970cf5c15972c22de4 commit a53bc32182d7a2a934ca994239396fba21161c8e commit 4528c18605654bea022d294c9ba2e93600d05a94 commit ce4b4657ff18925c315855aa290e93c5fa652d96 commit 5df79aeb6e0890d6f5fd6e12c7ad238a1617b210 commit 86bd6706c404ea703c11071d8b600d46bb98873c commit dc2b9c70ebca8e5661d33a15ed2b99d4510e90be commit 40835624efcde7f984cb859035b95b5a526d1a9f commit fb3e8ed0438347c63650850c011c99deb59d7e62 commit 615dc75fa6a7fc6cf029b01cdfc9d4b78919e71c commit 8a9899c95d1cd709d441960ca325c6c8184978bb commit 0bf95a1ebd48866ad1438454061782d4d47765f7 commit 044b5cb9e8bfe4f006546fd98148e95489a6e803 commit aec4706b0e70e0cab2d0650b63cf2ddc1b154352 commit c8a58ce18ca36b62749e326411176554462a5e2c commit 8b076fa7c5befd1d3e1d892ae466f5334e4c6c99 commit 25f7cde8bad9fe5943851d3d602e9fddb7977961 commit 5d945cbcd4b16a29d6470a80dfb19738f9a4319f commit cb6b81b21bd9cf09d72b7fe711be1b55001eb166 commit 417c1c1963549e9a48b83ada59d90258e38c6594 commit e8f90717ed3b58e81c480b3aa38e641c0da5a456 commit 2c9e8c01109fb65a63b6830adeb5d7c79ccf26d6 commit 473683a03495a5ed9c75a02c7497f32d6cf92c7a commit e6c64182ed946f1cb65799de9ee75f8bcc42b2c6 commit 074293dd9f61f11898f1f6e01f1560fd4c474025 commit a983d263186996002ecafc72f9a0dc5a3a2bfd6f commit 44b0c964201e1e2fbfcdab4472f9260048befbaa commit 557f9100c74cfa033488563240f567466613cefa commit d3e19f76121178420c3efc9688adfd5a448996e0 commit 4f5a17b221cc48d66cce13fe1531ca8fc99078b9 commit 1cccdfe21eb6b8dd4371378b4b61223eb37f1ef7 commit 54c3e9493cd502d63ff3643fa70b5f98b3201846 commit 869618c3440227f848ff9ac55aa64d523a60476e commit fbcc38811fcb47335899a3776b4fd5670db4e228 commit 4686177f7d2140cdd9d031702c2b53ac4c89340a commit 7b5b0d196c2e6cad87cb1e3ce285c7885f2bd796 commit 660f46e16c4b8a34978012a9f10a32a16db3e98f commit f3cd57e499e6904b7e356d11bd33d617341b3f24 commit 869b10ac8d2300327f554d83f4dbab041bf27d49 commit 4d37fd51b4440cf6a02942c0a169ee18a902fb5b commit c19a23fadd279f433424b4d6436fe4ab0020e20c commit 37edc99979b717312e60cf3463ab756f5a3d6de6 commit f4b4e41a2e05270cd90c5817ab514ace95555874 commit 26749aa8d1261bd6f2db9d019276d4277dde7df8 commit 041a11095abdd52b38f1ea1355357ecd2b66c0e2 commit af14e7c2fc9b60af70b410a7dace116eaa5e4e65 commit 465576ca481caa9cf18550652efdc6b103701c68 commit f7bacd97af853a9bba9bb8d1baa12f997e60122f commit 792a0cdde34d417bc2c8266d8015c5fd58d44a0d commit 8813381a62e1f1703f8fbeccc5fa4fcc988be882 commit ccc4200cfb2518fea042b16f090962b07314439b commit 25e751642a38204da189e0e239055702caeb461c commit 34a65beccdea16a12d862e94d004ccf00de8cb3b commit de0246ee9fc95f1072a0d26ec4025a3545f159b8 commit 25dfc8fab47fb0d7231154e07e20b5fc0221f96e commit 326f0672153e0ff5b19f0ff9d6b5f75a64a9c2b5 commit 42c7de9622b2ec64f7c15c336b75f8933ea7545c commit 2207efdd8388bd300a0051b1775705d890abd306 commit 44998fbdcdc39253cb10293c3c27dabc040ad7e8 commit 34a1b0f90e33b00b431d6e8636b787111c6c29d5 commit 8f5bb69dd453666ff949079443ebce24381e163c commit 4cef2269318cdf5beb70c257f7aaba267f2157ae commit 0339530d8879cbd560cd3d3de5138dc797744274 commit 5b4ee98713c7b42e270835fea08c3b6977b48e7e commit a4f8f294fe99a678ce0a50d649732440c41742b7 commit 4e14e0fc9f0e47d9d3d39b6f92724f2038ee6e25 commit f7907f6db81ca08f4f8bd9245b8fecd49bc82f6e commit 197485c695430ab03d9f4a96aab4d4f76787f7c9 commit 352b25a770712a954b1def1b8c6429b0825ee0b3 commit 9a1dadb6d33173427b6f6c89ab1ddd0eca636afb commit 39a6f3fe98ff03baab364acfec69a6f9803ce22c commit ca0273ab447853c014983951e2183991f8dbc7b9 commit 1a3408259bfd5a383b3c7aa7c309c9fb81e35ce0 commit ddd0fa1f47edd794736e70d165341a5c4ff78e47 commit 5085e0361f5a3675fc0d0919f7b69aded453ceb7 commit 77299956e8867a4cc19c5fd41b797c5152aad1dd commit 1c05d9e53d2cfad1f99d9087a8ad24da4ebc0905 commit 0593ad215359d51514c1e6c81ce28ea598efed6b commit 74097f9fd2f5ebdae04fcba59da345386415cbf3 commit 7acc487ab57e076c823b2b7559aa9e3997962ca2 commit bac4b41d917a1d999308bb1e779f8c3b39c19f67 commit c3b3f9ba25e6cbe59673505fbc5fff6c4cda0ef7 commit 3c3abac60117cfd09460980d9a14c253b37f7b00 commit 86e4863e67a9bd1e257f162f3d740ebb61206c91 commit 9dd4545f65679042273a93054ec3bb665ecf7366 commit 44abdd1646e1fbfb781972c0bffc90b4eb3e87b3 commit 34a255e67615995f729254307a0581c143e03752 commit 3616d49da5dab635c4bb0eeb183b61df72cd0757 commit 4c5aa594928f97593502a66d5a9075f5f5dd064b commit 8de297dc046c180651c0500f8611663ae1c3828a commit 44584b417a698bfaac0c2577e7cc4015ea7359ce commit 2ce0b2186c057a54a4d980b296bd1659d0091716 commit 319568d75f5f91cd4f362b26e65af2a4437c64bf commit a7cefb0b40dcfdafedc54a3ba659327d0336956d commit eb54e014367e1700fa5b94e4c788520081a70661 commit 4a21ab548a7ac19b15aba9aa8df39972ed82f4ad commit f46e3f28f89b893685ec9204405677dac410d8ad commit 72bb503097e79113503dc6d1d49c4063ef97970a commit ee4a26b4ea029aeed749c6560ed9eba224337b04 commit a4f1b04216023ff0f4cd89328b59ee6890248130 commit 6a7379f196230cfa35335ec627e0c0e08da6a8b8 commit 05674cc9ea97079ad7c819628e3e56b046c2f497 commit bdf4473394deffc94c16c0502e73f2daabbdc1d0 commit 40b31e5355ba8c4f7e58f1c458bbe46763dca541 commit cb849b4dc73d414149fea96330cdf96a82919fc9 commit 1c5a2fa97b91d37375f4fc8aeb37c9456c93c828 commit 0d60f2b47d8312d6a88454a373990579624edbde commit 5ade1b951dec63a81b23c2ff75c5b4c191977620 commit b5e924bd7cce823e604f9b7834fac846a910331c commit 1f5dcb7365e4e0a8a6fca44352218ccc6f41a8b9 commit 81f776b670a0eb17bf9cfbfd2df32f66a34bc453 commit 4074f96d0f2db2fcbd8e223aebe60ca445b8aeae commit e216431b63aef8b7d9cf6e59aea39582d48b1808 commit 6290ba4c1656ce2374996b2ed11c3997ebbc4af5 commit 493af96d61b1361a44d016057e0fc6e5d4c92fc7 commit ffccfdbab1056954fd400d2864a1c1b38915c143 commit 3facca7489be2d42c6256350dae72c342a47d7e5 commit b1babe8623f91a71a5acc34eb323c718e0413b74 commit c13423c63f73ee2f9807fdb2a3a7e647421a8114 commit d58715704c5c7d82d7194540780fb335ab337da0 commit 1b54a0121dba12af268fb75c413feabdb9f573d4 commit 7786fb366e598e984ee9307616b0c72979bd191c commit 412dfcf34e0695fa1714ad422b2a5d0ed1406437 commit 0407b33fadcd7a5d31ba3c473cef95b2b418d8c4 commit 92fba5d3c8f5b757c4e3fdc89afe76a8f6c4da68 commit 168c02994399f2714bc6c73f85b7ce4d827f97aa commit acbe9ecfb7fb14db868ddbeda8f43e623026316b commit 3517e6b6fee05b6259ca21741cbe5d7bf68aa672 commit 1c6aab75ece7c1d450e4561cb2263403eeb7ae2f commit 79c453af55d9f1e85b906211ea4051364d28dcb4 commit 9a4514fbffda6083d9f7fba4882142686783cfe4 commit 7bcf89eed48f3fba8d0e2c19236e7dc547b6e037 commit 889fcbe949bdd8470931a90b91f273ca18c510c1 commit 95983aea80038539ebc70e41e73e9bb4eabd1a92 commit 32dd9236698bcd2ffdb69954b167a851fd50182a commit a6fd8f936402c3bcc5ac6aed9cca8e73b5ca08f7 commit 1b255f1ccc883256e23db279ea164273ea0f7462 commit dfc4005f8c172eea359f9db08c3b2b0ff0153699 commit ee8b1ef9a6b089abf7a9c7d094b6e93fa05f15b9 commit 2bc7ea71a73747a77e7f83bc085b0d2393235410 commit aa316247c726d96f0bc205413c54ab49622ca737 commit 8585732baa40455fbae9575d0c8316f4b0cf68f5 commit 1f83db6be37c53f6d395a41ee2602e3280ee60c2 commit 79b2c54f19110235041d8f1250e3c3694047a902 commit 4959e609de1ed4199f33124a88a4c9ab95f5cd9a commit 5640cb8921c9aff1270557482237e06af00c388b commit 8b3120dfc192a4c61f73a0798755713ba2d3eb8a commit 3f5a3881f1e26aa5e3ae34e34e439edce291ef5a commit fcac1ac7f1e3fb877aad51c134ff2776bd24f9d6 commit ed63b7cf2d6ebc01a765be31630c3e4a64f7f095 commit 84e2fd649482435c3e12d9099784976ce8bea1e2 commit 203dc777865621b0c7f8f5b19ec18e572730278c commit 05381583a1d0c38cd2c4907ee93ec624250b8912 commit 980e09e8b74c26baa32f0d65d272ecb1401606c9 commit afb185008d40930895a7f7465a9661afeac0b84b commit e3b2bbb33e26d0a0327f878782632ec35cf96a72 commit 9ced2e492ba9436524a2beed27df730042cbcc3e commit fbad6c418e1e63a29c83e8b56a3636915406a9b7 commit 292956cfd9d38835f95021445525b35502837ff7 commit 64f857b5479a7ce2eaa56bef5f459da5542ad90d commit 931fa55b2fac18f226622a95e42bc968bb852cd8 commit 4557489e0370ac0e9f1f5f100f300e9278be0733 commit 1422ca01be6a816ec5a445a6fdce00342adcc5f8 commit 1be3188a6dda544dd4d78503eba5f5a77462b348 commit 66bd94debe4aca171bd0220de7af3feee6542d8a commit e3b0079be8f0a2ccb533f7e38757b27ab6b6018c commit 06ac561fb0edf868f7b292fb4a3c8ffbbb1e14bb commit f9af3c16bfe19d145cf0588afa06d7f1070cbe2d commit 3d2af401cf851be0bf2d4d89af6f120819b786a7 commit 0dc204bc3f199de0a0924f3d5f7c26295e5c012e commit b2065fb21d9a789b14f737ea90facedabadeb8a4 commit 53bd83dfff8618d4a1affa171288b895add40476 commit 7c8e4a257246399c4f1ff43a06fc53ec53423754 commit 2182cb7029e9c5cc4b63d1c5682f62ebb65cc952 commit 674b9e08a02903fef75beadca0df490348d8f560 commit e22ec18750be01298763b10f7056ec8edfbf064f commit 6fdd2077ec03f4b34d127a1713ca19248539d6e0 commit 736f7308d3e6201322142d98abe4e9af33a429f7 commit 4ac77cce84a4afa3b76fe7c763aa3e754cdac422 commit cbe93a234bcce489be319e678dbf167b7a5f915a commit 1c0a90364859c17d57a7f08d6209b73e7e1142cd commit 47231d5e396a94e869b877bb1a0dcd526d91ac6e commit 0da0def7705dff7ee938662ea06f90770cb6f9fc commit ed67f7292b99f5d3876fa02dd51a43f46986c61c commit 1f3dfde4fba4f4b7822c389b9c994089a4ab588b commit e1c42213f3f9b24200d4b60da806303dbeae5a4d commit 1ff186ff32997049a6d263031819517eab4e93aa commit c10100a416c16b598bf5155e759307b34dac0d7d commit dcfe584b00f1d6dcbeeb769b939f53a3c4f04143 commit b834fc94c102eef751ff741aa0d9b814d0a81af1 commit a16161a869d5633d7d9a825a2546b68953e3a6f0 commit 492af34c9f67ef864319d0db930c8518a04b1937 commit 2605e60c82604508f60dbf427b82cd48154d88ee commit 7e8a3ca972adfc89609718c931577a86c494967b commit 64f991590ff4410041a70ee7ec2db079bc953929 commit 541846502f4fe826cd7c16e4784695ac90736585 commit e05d5b9c5bbea80313d8f58c3a80a18839b25480 commit e2b542100719a93f8cdf6d90185410d38a57a4c1 commit f00654007fe1c154dafbdc1f5953c132e8c27c38 commit a782e866497217f22c5d9014cbb7be8549151376 commit b44f2fd87919b5ae6e1756d4c7ba2cbba22238e1 commit 54d91b55c7f3f9f2c86e0b6be4501433b32ddc89 commit c20ee5749a3f688d9bab83a3b09b75587153ff13 commit 798cd57cd5f871452461746032cf6ee50b0fd69a commit f0a892f599c46af673e47418c47c15e69a7b67f4 commit 6614a3c3164a5df2b54abb0b3559f51041cf705b commit a9cf69d0e7f2051cca1c08ed9b34fe79da951ee9 commit 668c3c237f5ddc2889879b08f26d2374231f3287 commit 1d239c1eb873c7d6c6cbc80d68330c939fd86136 commit 9cae5b3189eb9cd12a9c3f6e8afda2d81958640b commit 232d150fa15606e96c0e01e5c7a2d4e03f621787 commit db100e28fdf026a1fc10657c5170bb1e65663805 commit 180abeb2c5032704787151135b6a38c6b71295a6 commit e5a95c83ed1492c0f442b448b20c90c8faaf702b commit 59eda6ce824e95b98c45628fe6c0adb9130c6df2 commit 2826d447fbd60e6a05e53d5f918bceb8c04e315c commit 9d50bff40e3e366886ec37299fc317edf84be0c9 commit cf4b7387c0a842d64bdd7c353e6d3298174a7740 commit df4aaf015775221dde8a51ee09edb919981f091e commit 2939deac1fa220bc82b89235f146df1d9b52e876 commit 37bc31f0e7da4fbad4664e64d906ae7b9009e550 commit efcc970605a4e365151db247361bb013f5c84922 commit 0ee7cc803ae52b60f268fdf2eba79b9fc1162747 commit 968d40986f004b463f057fce612996556b753c9e commit 5822b8acb869caac72c3ddf149d463177aa28fd4 commit 41ead3e0cdc03d64b7da2dcb1fd70ebb7164228b commit c83b9d60299317a2c15550dd506c864cd01a3e5e commit f59966779deac642541c3f7d772a3bf5972727ed commit aec208eecfb833b05597bbc28696fb1ab62f732c commit 1ac354beecfd58e769fb5373d6b2ac87bce9e1e4 commit 4a0a2cf4c03ba49a4c2596c49c7daa719917d509 commit b2f6c73561fbccee404b441a5c2d0b4fefaae817 commit 0a83bb35d8a6ff3d18c2772afe616780c23293a6 commit 616699d77b3813c24bf46090e722da227bd56cbf commit 08ebadfcd8c8c1cc7a14a7581db8331147b85fbb commit 8df436d5ccdf7f441becb8e8156c8ca9c4276e8c commit fb1a140b7bd19c474a41fb2df8a845e8eba328fa commit 64234eabb8f38ac2bf77dd23140887d81acaabe2 commit 1ff77beac87682c22f99e5cf32614909c65b4a36 commit 89390c4982b77c159e3b8a0be4a04552ef0971a0 commit 4c3861f587400db00801810eb8034c7b480e21dd commit 67c79599eea167dd5e08314b8c26f2dfa717753a commit 0af167f92838f34e594e49a6c8cbaca45548e030 commit 2de09ce41f484cbcc65e518905dae73da67ad35c commit 0cd34ce82b0a9ce503d35a51bff47ba3b6715557 commit 9bd110ab06e93fd01938dedd8b6015940418f0fb commit 9c580e8f6cd6524d4e2c3490c440110526f7ddd6 commit 615fc50207fa27453ba7f5fa1abd60a01a498136 commit 0591183699fceeafb4c4141072d47775de83ecfb commit 86678d46272021c88638881c63d427dd10d665d6 commit dd07556324ece81f0d2be756508903d53e331e9e commit 6396679a1f2db0c63721b841f1a5617d6282a4b1 commit 89b008222c2bf21e50219725caed31590edfd9d1 commit f173c7405224002fc32b64cf1679c4d888c493eb commit 2051160546826cf312f15bde534038582b90f844 commit 764a1e6e0272f377f145fc84b547d61e12724233 commit 84ef99c728079dfd21d6bc70b4c3e4af20602b3c commit f0068dd0effd5972046b69b23f99c43251e82d0e commit b2a93490201300a749ad261b5c5d05cb50179c44 commit 30456ffa65469d1d2e5e1da05017e6728d24c11c commit 9f5171ce733a694bd0211952687704c7a5bf32b9 commit 8da536d5e114ad1da6028c7505f048ded2e421c6 commit 352e683b72e79dbd46cbde528eb91e228e88267a commit b7ffeb4a1b5bce1a7495636d21f1704bd7ff01d3 commit 4e64b529c5b04e7944b41de554ee686ecab00744 commit c4c10a68e82b8a03df234ee744acabcc648df270 commit bea9a56afbc4b5a41ea579b8b0dc5e189b439504 commit cb9c7ab1b3ddc2702379dd9639df0c2230453c2e commit dc0a096bcc1d659ae93f836099c6b0312d2ccaaf commit 5afb76522a0af0513b6dc01f84128a73206b051b commit 541d54e40f1672dea6514ad64d54d61ed952648e commit acc96ae0d12783e9781428b17e34fd662a904f0a commit a6250bdb6c4677ee77d699b338e077b900f94c0c commit ad2feebd71ff80532dff75756d1103f056358614 commit 2bba782002c5dab6ca8d608b778b386fb912adff commit 36fa1cb56ac5189c78dacbbb14d452d0c44b86c0 commit 7ce2aa6d7fe121e243e1c8a8093911fecdf1c88e commit 0e66978ebeb44f96ff4d26b2a83dc88a2bf887a6 commit e16c2b8250262bc0bc531299e2c30641cee14221 commit dca452041552a5a5a6aab3ebda32565fad003eb4 commit 0f761f5768b842fe483141bc59db5b4d66bcaf07 commit f1f63cbb705dc38826369496c6fc12c1b8db1324 commit 1b586595df6d04c27088ef348b8202204ce26d45 commit 0a2d922a5618377cdf8fa476351362733ef55342 commit 4bac1c846eff8042dd59ddecd0a43f3b9de5fd23 commit b4ddb27d1dc7349fc882dbb7702bd2628fe27af6 commit ea8793f214ce1e4db205390c0241955f7ff6f383 commit c02895577b834a6148f6d9d0006a6f196511cc79 commit c8007d362c0150aef34323702e7fa996fa0cfd8d commit 8172cebac588c3c5e238d02be30914fbbc5b1234 commit 73c49a624a8db1ec38b138741203d9d7c76eedd7 commit cede849e9e2755084798236735d045298f9d9979 commit adcd15dc47dadfb176a14fa74af5b0cb0f659f2d commit 7e4a77de08f655e159e6355bdfbea73be71fab88 commit 8e78c7c4fe29f7ab8f87634c5f4dedc66107e66b commit e48e6a131d34de54ce6852149e4c97c2208f45cc commit 7d50b92d588d1e7bdcf38f523200b7b113b46c14 commit fa0bbd3be91dd46f4e56e5cf1fb6e8c2837c649c commit 5a0918b4cb90a90fc8d8bfd9b0f81efe6651951f commit e0df49b3045180fdd23dc27193344a767cf68fe1 commit 84435d1d912140958213beda37c708ec3072b5e1 commit 04fb918bf421b299feaee1006e82921d7d381f18 commit 5c1943820156e9a120faba320a72578578a69ab8 commit c7dafdfa90f708b6e4630abf824ba388a3947400 commit 373008bfc9cdb0f050258947fa5a095f0657e1bc commit d83a348b172dd7f9f10f049b3fd7e44cf4d2ed8a commit e98459c06e3d45c2229b097f7b8cdd412357fa2f commit dd49c07f3ab67e8d7ae7b8231b88a746c668b4e8 commit 19f7b8334484d6b610c8eb527c3f56cb42bc8bf1 commit 31ec699ac5d8d17c4f696888708bb6b2567dfcd4 commit c65c71ae85095f94aae32d86aa78811318bf6a90 commit 5544a7b5a07480192eb5fd3536462faed2c21528 commit ca01eba4e5b6b50144a62d7704763c41b68a0de9 commit 1af9add1f1512b10d9ce44ec7137612bc81ff069 commit bf7f7efbe051a59e9d0710cd26ea05f7ebc411a2 commit 385bf5a856c196d5997ce4111a23df7e1b679c17 commit fbe43dcd1aad7dbcee1cffdbe6c3e1d62c85f76a commit e42dfa66d59240afbdd8d4b47b87486db39504aa commit de8341ee3ce7316883e836a2c4e9bf01ab651e0f commit bbca24d0a3c11193bafb9e174f89f52a379006e3 commit 085292c3d78015412b752ee1ca4c7725fd2bf2fc commit cf36ae3e5802716617b9e4d902a31048240396b0 commit 8ae4be56dd0c2b851e7edc0f1d5cd441f88481c0 commit 2ae6ab9d82cdd0f7381639ee31e31de45519df4c commit b1fb6b87ed55ced458b322ea10cf0d0ab151e01b commit ea2aa97ca37a9044ade001aef71dbc06318e8d44 commit 54cd4cde7c1edb869603073167cabab0b760fff6 commit 43ef9db423bdce1df504d4d10e25092d427f04e3 commit 9d705d7741ae70764f3d6d87e67fad3b5c30ffd0 commit f5994da72ba124a3d0463672fdfbec073e3bb72f commit c351938350ab9b5e978dede2c321da43de7eb70c commit 06671734881af2bcf7f453661b5f8616e32bb3fc commit 2035590f3d40f227eac453d0c36b5eae85c1cf08 commit f461950fdc374a3ada5a63c669d997de4600dffe commit 16b3d851c0146123507fe864fdd97411ded51147 commit 233f56745be446b289edac2ba8184c09365c005e commit b75ef35bb57791a5d675699ed4a40c870d1da12f commit 220e979bd906015b74eb485e16464ee5abbd3c9b commit 6b04ce966a738ecdd9294c9593e48513c0dc90aa commit 8d905254162965c8e6be697d82c7dbf5d08f574d commit de2228c04150df8632ad22ee490de2ed579f64e8 commit 607f41768a1ef9c7721866b00fbdeeea5359bc07 commit 13393f65b77445d8b0f99c7b605cc9ccc936586f commit 868e8e5156a1f8d92ca83fdbac6fd52798650792 commit 6067c82c576af13a6b1c892b42ac4a189aced8ee commit a3f7c10a269d5b77dd5822ade822643ced3057f0 commit ad3b0b99113783f697579c7b09285916019865ea commit 2037769f995e45d3a368fb74983954b3ed8da178 commit 16c01544e30a4b4cf5f3eaacf7a4c19a3622b597 commit 4e3464badbeebb3528c457aefe91413f8a9070b6 commit 00047c3d967d7ef8adf8bac3c3579294a3bc0bb1 commit da1acbb12b33cbc651d8a7e956d254f1acc5034f commit 894c9c540f8315007a4752320e2399bc2e0c46b7 commit ee8086dbc1585d9f4020a19447388246a5cff5c8 commit 61251b2cffea8c1811bbd2dbef175b65f64aaa86 commit b8983d42524f10ac6bf35bbce6a7cc8e45f61e04 commit 064d491f73464f5c9cf56ac24f55118f6f4c54c2 commit 100d0ae82b5c240a4dc17486698e67bf116bd598 commit 58091b4958008ef69899e5404f8f031c36b35fbf commit e79a7417072265a85a36775e4e0f798154d39808 commit 4595a25443447b9542b2a5ee7961eb290e94b496 commit e5e6886f4d7e34b6539abddb591d515271caa634 commit 875c6d2711f6c97e58c52288b4231f3072711d61 commit 2c4e19f873f4a389c2a557a84909cf4b78d3525a commit 51fbbe8a3f8b9dd128fa98f6ea36058dfa3f36de commit 458ec0c8f35963626ccd51c3d50b752de5f1b9d4 commit 919bef7a106ade2bda73681bbc2f3678198f44fc commit 0211c2a0ea600e25db3044daaeff4fe41c3ed6d9 commit c8fea9273fd1be308668496badfcbd55183e0dd3 commit 47e04eed84bb07cc5b54462752a4bc7286ab8197 commit 507fd7c400032b126747a5ae8cca2816d73f009a commit d1b4a51a4ca8954f30cf4671b25c4f8637c45600 commit 3c93603d9568c7c4b20ff1712ddc60e997d78df7 commit 3e834a17a22cb8e9169c0b018d1a2df126977db3 commit 6783e6bbc2457dbed351fb0d2477aa6060a7d32b commit 4fd7f14b56b2e727dd66a62e217e57015da4e9fd commit 94a82c9e3dffb88182a4ed0464dc0266ad0d7b45 commit 595091c6ba35ba48c1f8186116bbbae2b208dce6 commit d0629cea1f97acc5e8d95ca2a42ddc72ed4ffa3b commit d7e7546886eebf626569e38ff06d0a67b8b82757 commit b023053592646b1da9477b0b598f2cdd5d3f89d8 commit 2640174f4a139502f603f7bedf3a7011db714e1d commit b97e914552c3fcea71ce03f899e285f2178ec38b commit 6ffc967c36b42f864955cb2c5e8b3fded0baa918 commit f5b9c1ffabce5f4acbeabd3a03fd57b3970a13fe commit d6f84bab48745ea68814d596eb476a9c11ce76ae commit 7b471c32e4cbfdd7a673b79321f6a26abecbf33b commit 910ab9eee0f61a243126d70e932e1301b5437583 commit 39c84b8e929dbd4f63be7e04bf1a2bcd92b44177 commit a54569b1f9721be11ca5b2c8a8bb3c652ebf576c commit a71f3950c803cb18080746aaa8b66af122f32841 commit c1dd5d29aceed251daf98cacd22817f38f76f94b commit bfe632f6d0a1371784dd9a11fa5a9aa2dbf53bf1 commit c7943bb324e503baeeba3df2bc5ca8a377111bfa commit 8409fe92d88c332923130149fe209d1c882b286e commit d91c411c744b55e860fbafc9a499f4f22d64c762 commit edca5a2c373db61efa959307c13ed9156b1c14d9 commit e1cab970574c001d83e59ca8388c474a57a1afb6 commit 672d6ca758651f0ec12cd0d59787067a5bde1c96 commit 151e0e0fdb4d6365305598af3b9072d44e896ef0 commit 992db92b07736ec98432a97b61c37dfe7bd06dd9 commit bbcbd63231cbd1405ff8e987870b02abc6a4d669 commit cbfac7fa491651c57926c99edeb7495c6c1aeac2 commit ae0448bc88b7827babda73edfe587ccc222baccc commit d832db12af4a057582011a590f60f32853680dd4 commit aac4cec1ec45d72bd03eaf3fd772c5a609f5ed26 commit e3d3fd1cea22ada5a06284d7bbb6cd5794d8545a commit 8f7115c1923cd11146525f1615beb29018001964 commit 63e37a79f7bd939314997e29c2f5a9f0ef184281 commit b6f25c3b94f2aadbf5cbef954db4073614943d74 commit 235fdbc32d559db21e580f85035c59372704f09e commit b34c1d538951e1c3a6d5e585e4a95e78d8733064 commit 2edb79a5fb303dff577d6a0c7d571c3bab1d1455 commit 0785691f5711a8f210bb15a5177c2999ebd3702e commit 08b812985996924c0ccf79d54a31fc9757c0a6ca commit aee5ae7c8492eaca2be20d202887c9c716ffc86f commit d654f60898d56ffda461ef4ffd7bbe15159feb8d commit 8787f6fab41380189865f5751c0f15b0c298b923 commit e839a756012b6cad7a4eeb67b0598ac3f349f863 commit 7c6fb61a400bf3218c6504cb2d48858f98822c9d commit 6c20490663553cd7e07d8de8af482012329ab9d6 commit 66f99628eb24409cb8feb5061f78283c8b65f820 commit df2c6e0c95ca22db5d6bea7e8169841c95426f8d commit 36de13fdb04abef3ee03ade5129ab146de63983b commit 8c5708d3da37b8c7c3c22c7e945b9a76a7c9539b commit 86875d558b91cb46f43be112799c06ecce60ec1e commit 42ff33e63b83d0fd40985ccbb50ff54e320a3bd5 commit 58d97c99c99f4559072a5410ec0135271e24e95d commit 269aad0919c7aedffc18dcf46393a1bec457af0a commit f9c182056b8ff7402a46c39c34d5c91133fdf9a4 commit 18aefea7fc71759a2405bc65eae057ffda3c429c commit af2f2a256e048f1b83605eaae49948e4a6811ac1 commit ea45405d704e20826a899380c19ec163336f42ab commit 82c4018479fba63db8db7c7fbfd9e4afba95603a commit 0b15b1ec8b74bd5c9a4e4cbadab82c0657832799 commit 6acc6196a7320b3d2a391925c4c884fc07f0b3df commit 1bb8df66920a5549db2be92c23ab81fd06992e5d commit ceb756004a30239c3a50dc237313e234b667077e commit 3601d620f22e37740cf73f8278eabf9f2aa19eb7 commit d978c51f8d1f4314c84cf50291156862a4c34fc8 commit c4be0ac987f21e12e7ad23bc480e826d8c30de20 commit a3fef74b1d48d89d4d911fcd7c2630d0eb6a0012 commit 37934d4118e22bceb80141804391975078f31734 commit 21485d3da659b66c37d99071623af83ee1c6733d commit 41012d715d5d7b9751ae84b8fb255e404ac9c5d0 commit dc1d85cb790f2091eea074cee24a704b2d6c4a06 commit e3163bc8ffdfdb405e10530b140135b2ee487f89 commit a8671493d2074950553da3cf07d1be43185ef6c6 commit 0af4ed0c329ebb4cef95fda4fcdbfcdea0255442 commit 87d9862b25483242a30bf45420cd8e7e1872a4be commit 25100377a21ad40dae8be5a3ed361b87acec1479 commit 5763d7f29652f94bdfc9dab87888f79ba6bb6c34 commit a7c48a0ab87ae52c087d663e83e56b8225ac4cce commit 5415bec18c69d3aaa7d4e3b170c8b8c6bb24a823 commit d8a79c03054911c375a2252627a429c9bc4615b6 commit 5ce8f7444f8fbb5adee644590c0e4e1890ab004c commit d119888b09bd567e07c6b93a07f175df88857e02 commit 37a0bad677a76e51c5e9e53f5d9f8f4f3e77912f commit 88d4cea24049de0fa073462b24ab471ecd685d8a commit 16c6077f2eea3c8321782d2fb0a6790532cd8c03 commit b261509952bc19d1012cf732f853659be6ebc61e commit cb0eca01ad9756e853efec3301203c2b5b45aa9f commit 29956d0fded036a570bd8e7d4ea4b1a1730307d2 commit 52bb21499cf54fa65b56d97cd0d68579c90207dd commit 65fbfb02c2734cacffec5e3f492e1b4f1dabcf98 commit 056fb8cfbe213f6eb5e987a806583986a4ae8328 commit 72002056f771a025a2e6b4578aeb538799cb9ba2 commit 20c6168b3c8aadef7d2853c925d99eb546bd5e1c commit dcc2527df918edfe297c5074ccc1f05eae361ca6 commit f528fa3989c53d4cf2ee22d306eb1a96ed0010e6 commit 29a1c581a5d873046302aa22c4a05124c5faefab commit 193b6a1934cc2e258e463e94fe3e94382c0bf458 commit dd4bc65c5bdf17ce8e74f91bca5e41b368b0e32b commit 88bab90f7a8aef3732a57cf33bf0ae121de8c7af commit abbc7a3dafb91b9d4ec56b70ec9a7520f8e13334 commit faed5d0182480556cddb8343d9bad968387848f4 commit f525ed19437d376736bed64ee7bc4afee82f2ba9 commit 387df878fdcf63ce497109c4e1eb805a7df9043f commit 3b38b65ed076fa93f1b0d5fb97c55a9bf692cc49 commit da73a94fa282f78d485bd0aab36c8ac15b6f792c commit 6dd1de12e1243f2013e4fabf31e99e63b1a860d0 commit 051ad2788d35ca07aec8402542e5d38429f2426a commit cc62d98bd56d45de4531844ca23913a15136c05b commit 6ef7d362123ecb5bf6d163bb9c7fd6ba2d8c968c commit 7516777434570833469252c16e5fd7d8f73c45be commit 3c480531a4b1652561fd16824c16be8b8a3ba8f1 commit b9caeadf5cb89566412b94b14a1583419aeba45e commit a9b4700279f21c5c1a3425630dea86d338ab13b2 commit 91ef6cfd30bf75763f41e7a4bc119883fe190606 commit 664883ddde67971d59764f2dda855183ecf8bc46 commit 783d446749c09eb34178cb8600a9a93d3b99e35d commit b6d1c39bc637fe4879d610e6687b1d4224c4b2fb commit dd37fba90e72a48998d9f0eb5497088ea2b02ad1 commit ec669ef2e2cf277f3e73d842bb3bda1c3ea2ea73 commit 85096a73f4dc223b5848e41ce40afc5ee913079e commit 1ec5c0e1289c70c8e7dd93a988d945ad5bc3f4b1 commit 391ce355e72bd5713afc85ec5acc955294499dcf commit 8dd2e87dbd49ba0b6afc1dd22a5930d797cf423f commit a28acf7091babf4248b042326946cee7736f796a commit 2d3907c152611a0d65efe54b93972320dcce1565 commit b3e45b18e5c40f1f7e5f6383953343f96f963b13 commit 11e38360cc15e2d5995449d19030b13a67d73cb3 commit 3b7329cf5a767c1be38352d43066012e220ad43c commit 7738be973fc4e2ba22154fafd3a5d7b9666f9abf commit 83ca5fb40e758e0a0257bf4e3a1148dd52c6d0f2 commit a3aded135e84a581ba567c30ecddff47c8b6cfcf commit 541540b9045c2665d6736a77c776ac81d4225eec commit 153a97b4e3de713c05b6bd42d734a2f9eeaf7968 commit 91462afa42e6b8c5a148a44482c893f1800c513d commit 6643b3836f3908c4f77883b2fae72451e85cf3ca commit af81a9201e0112e9c4ca7258e32cd28baf19f31a commit 2f3f958602721c7915ddb1f2a0e8dc5031bc0151 commit 90df15124526176ff03c246362c196a047c8a39a commit bcecb6524881c54ded92f14a6cf2406d5c439637 commit c1c3f41ffb1bd262e40d68938af68c6ab53a41f8 commit b33139ee15352043123b81b32ca1a6a84340eb5d commit 04fa38cce6e02be4362cd889780d58ec275c4d26 commit 0fd85e89b5bf18447e56099a010ee5be5dc9f2b0 commit 414208e48963fdb136240d7f59c15e627832d288 Omitted-fix: 14773bfa70e6 ("mm: shrinkers: fix double kfree on shrinker name") Omitted-fix: 20529e260ff2 ("Revert "drm/amdgpu: fix start calculation in amdgpu_vram_mgr_new"") Omitted-fix: 3024d95a4c52 ("bpf: Partially revert flexible-array member replacement") Omitted-fix: 3915f8bddefd ("drm: xlnx: add <linux/io.h> for readl/writel") Omitted-fix: 395d10ae4d29 ("drm/xlnx: Fix build failure due to missing include") Omitted-fix: 3f61631d47f1 ("take care to handle NULL ->proc_lseek()") Omitted-fix: 5e6723ef3fda ("drm/lcdif: Consistently use plain timings") Omitted-fix: 71c627c0a87a ("drm/lcdif: Clean up debug prints and comments") Omitted-fix: d395fb1999ab ("Revert "drm/amdgpu: move internal vram_mgr function into the C file"") Omitted-fix: ea19684afb54 ("drm/i915/display: consider DG2_RC_CCS_CC when migrating buffers") Omitted-fix: f423fa1bc9fe ("drm/i915/gvt: Add missing vfio_unregister_group_dev() call") Omitted-fix: fcfd3e5fb2f0 ("drm/lcdif: Clean up headers") Signed-off-by: Karol Herbst <kherbst@redhat.com>
2022-11-02 15:48:10 +00:00
* Read a C type value (u8, u16, u32 and u64) from iosys_map. For other types or
* if pointer may be unaligned (and problematic for the architecture supported),
* use iosys_map_memcpy_from().
iosys-map: Add a few more helpers Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2043115 Upstream Status: v5.18-rc1 commit e62f25e8b3cdd29224c27938addba817aedd4b54 Author: Lucas De Marchi <lucas.demarchi@intel.com> AuthorDate: Wed Feb 16 09:41:33 2022 -0800 Commit: Lucas De Marchi <lucas.demarchi@intel.com> CommitDate: Sat Feb 19 19:23:53 2022 -0800 First the simplest ones: - iosys_map_memset(): when abstracting system and I/O memory, just like the memcpy() use case, memset() also has dedicated functions to be called for using IO memory. - iosys_map_memcpy_from(): we may need to copy data from I/O memory, not only to. In certain situations it's useful to be able to read or write to an offset that is calculated by having the memory layout given by a struct declaration. Usually we are going to read/write a u8, u16, u32 or u64. As a pre-requisite for the implementation, add iosys_map_memcpy_from() to be the equivalent of iosys_map_memcpy_to(), but in the other direction. Then add 2 pairs of macros: - iosys_map_rd() / iosys_map_wr() - iosys_map_rd_field() / iosys_map_wr_field() The first pair takes the C-type and offset to read/write. The second pair uses a struct describing the layout of the mapping in order to calculate the offset and size being read/written. We could use readb, readw, readl, readq and the write* counterparts, however due to alignment issues this may not work on all architectures. If alignment needs to be checked to call the right function, it's not possible to decide at compile-time which function to call: so just leave the decision to the memcpy function that will do exactly that. Finally, in order to use the above macros with a map derived from another, add another initializer: IOSYS_MAP_INIT_OFFSET(). v2: - Rework IOSYS_MAP_INIT_OFFSET() so it doesn't rely on aliasing rules within the union - Add offset to both iosys_map_rd_field() and iosys_map_wr_field() to allow the struct itself to be at an offset from the mapping - Add documentation to iosys_map_rd_field() with example and expected memory layout v3: - Drop kernel.h include as it's not needed anymore Cc: Sumit Semwal <sumit.semwal@linaro.org> Cc: Christian König <christian.koenig@amd.com> Cc: Thomas Zimmermann <tzimmermann@suse.de> Cc: Mauro Carvalho Chehab <mchehab@kernel.org> Cc: dri-devel@lists.freedesktop.org Cc: linux-kernel@vger.kernel.org Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com> Reviewed-by: Mauro Carvalho Chehab <mchehab@kernel.org> Reviewed-by: Matt Atwood <matthew.s.atwood@intel.com> Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de> Link: https://patchwork.freedesktop.org/patch/msgid/20220216174147.3073235-3-lucas.demarchi@intel.com Signed-off-by: Karol Herbst <kherbst@redhat.com>
2022-03-29 14:21:07 +00:00
*
* Returns:
* The value read from the mapping.
*/
Merge DRM changes from upstream v5.19..v6.0 NOTE: This commit does not compile due to missing RHEL-specific fix-ups, which are split out into separate Git commits following this one. If git bisect selected this commit, run "git bisect skip" and try again. Repeat this until it selects a commit which compiles. This commit was generated using: rhdrm-merge-drm v6.0 2115876 Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2115876 Conflicts: drivers/gpu/drm/hyperv/hyperv_drm_drv.c drivers/gpu/drm/mgag200/mgag200_mode.c Conflict resolution: Commit list: commit d10f7117aa43b0b0d1c4b878afafb6d151da441d commit 115fcf5899f7e0b0d3358a22a8cd76b1398642ee commit d8cb49d203556707ff4c3aa05032c4fc7c3ff1a2 commit 9d72b7e2d2ce3746950929a2c54171d183ea89f2 commit 94afc5382669c3a201c5817c47b57a879b6dabce commit aba5825439d7691343aa562dfeaf6616455bcb01 commit a9ec4fd004b84c26207a8cae41662c501c8a284b commit 537d9ed2f6c1dbfe8465365c2f74a855ffad5e6a commit ed3173077d3fa6fd085960aa6347ec30f532bf31 commit b07debc2a8ce7324c85479a28d145eaa05382286 commit 4ce08703a8c4be77b060aefd14eda272f50a45e4 commit 9975af040a04ba9aef33f3ef1ca4e8f04c7223dd commit dfc0312596561ac462308fae32130a0c580b7ac1 commit 37852141965d467a4ae118139b6eee266e7d953c commit 2af243444f9100639451b11d311982279e00cc16 commit 49a62a2923e523e5359219ed54d643c60f3374f8 commit 705bec3eca9b712fe006b7e4d6b4cd4dc6b57d36 commit 8db73897698ccb4eb70ab103245372569ff5a5ec commit 58304630b830a1c27457ce2e3a0912555b43d03e commit 6ff1c19f5f28dbc396462032dcbfdb8b64795415 commit d792ec62ae1260df2e54dc41103aad3b19bad948 commit a5c89f7c43c12c592a882a0ec2a15e9df0011e80 commit 315241d2d9102a90f71bd6c9e7dd06a1c831a184 commit a7b516bd981f11feb0c9f5ee3d149855d48cb2c8 commit 6f67930af78f10ac7a1a9ba81ec606a9bd07749f commit 56ca3117f77a23a8b24e73e458bc85c11e5dea31 commit e6c2db2be986158afb9991d9fa8a38fe65a88516 commit 91875c22a31be0bdf91d7ec651bb6b083b35ac37 commit 69ed3dd6be9cf5d75252940b9a927dff4bab7860 commit 09708b6d82ef473de91c49d90f35e38b0db463f5 commit 222ff6db8a0dcb86f2bb65fc8656aec635a737a6 commit 218076abbcd647de46635d21331a34b814f90906 commit 922abe4d19bd21b38298f3902674774b92a49293 commit b6411373d3954c8fe4617c27f90f773108b0ab03 commit efd01cd3c27636bc4840057a03839e54abaf11dc commit eb86f645ab9b90c47de7ebe229feae7ac999421b commit b15a7357a84f091fde8ce35bf2fd494150ad4bd0 commit 1b93ff4d0679190e8812cd0d0b3aebfcba1ed883 commit e9794c88cd6cf4be4a79188916a75539751f532c commit 3507932390bbfcf7c69dff9843f1c9da6ed4b861 commit 23dd74db02d75579d8d4eb0b88c7ad119e782269 commit b499914eb83765a27e3b43f216e9d1bdf4265418 commit 6c01aa13894fa0049ea8c96c271318ca353a77f1 commit 429e1fc1b2c257f35b6a1318eb3a1ffb80bc6640 commit e090532246fe17609b08ba0a862428867426dc95 commit 9d67edba730c4663eb7d87771123c3fb86ba606d commit 4de23dca7ec8dfb191ea80fbfe3f008d4ed52346 commit 6cd96877c7da6bc3a28ef0bcb3bc7470f4dd9aa6 commit 93d9e0453e2bb599e0bcced1b914f9b4010180a1 commit 69f8afdb45e7775840693bce42da79d9c22c2e83 commit 500d7135c924024ed2e5e62b03dd9b3b6257fa10 commit 8caaf7ad659da9b757781d5f08ce0bf98801931e commit 1a1a5a315ee805bec457fd214250c088efadb50b commit ad5f74f3420183052532a220edd9a37aba92724a commit 047de3f17a8321065c32ee3f6272a6dba16d6bcf commit 5e3f1e7729ec7a99e145e9d8ed58963d86cdfb98 commit 708d19d9f362766147cab79eccae60912c6d3068 commit aebeb02dfccb61d6930112aede2db3db5b8e974e commit ef83e1198f9f7d7db0031c839bb1112cfee45b42 commit 7ecc3cc8a7b39f08eee9aea7b718187583342a70 commit 3064debaf55e1bc8f191871ca5f82697ef4c0951 commit c48a363016349352dac7e66cd1e823f73bff1fc4 commit d2addf89c5abf4024574d42000313175c6e074fc commit d7fd32ecce914686756dedf586c8573e71f975a4 commit 3080c21a043abc83e56da9bb5942eb3f4b92c90e commit 303760aa914b7f5ac9602dbb4b471a2ad52eeb3e commit 21c47196aec3a93f913a7515e1e7b30e6c54d6c6 commit 18fb42db05a0b93ab5dd5eab5315e50eaa3ca620 commit 945ae909aa76f55ac8c9e95feb3683512d39134a commit be982415fc2e953ad49e59b204f2d0e64953eb5f commit ab1747ccf052976465db7c5a7e1301a50f290db0 commit e4ccf9a777d30d60c60f729b1d5c9bc9e3ea46e3 commit 22a27e0532d06968afc265a3b91fbdc5a773169a commit e42192b4c345a807d8df034f178d5846e1c97ad1 commit a2f9790dcffe2dd0b363607fd215e5b81a0de57a commit 40f71f5b239291357dbee3dc1c6ace83a373f44e commit dd0f4470a849d07081a2036f89d2c41264383985 commit f0d080ff429129b16332f17a906ad2123d9c6317 commit 084c7a7c7a0a0cab35d959e1b14d45a0c6221f49 commit a77f7c89e62c6dfe405a64995812746f27adc510 commit 7428bfbdb7c4dc7323e6b6f0e327c3587e479e16 commit 67d87fac86dd4a04cc62dc0eddfb7c74ace4666d commit 874d98eed71ae678ab364d4c16060955b8b245ae commit 2c54f87cf2fb99826ded617fd0484e688ecfe882 commit 45aa2336fa6dbfa73d9081f75a4b813e747a55aa commit bba4b6470b02c2d9a5074a40cff7246d3356f460 commit 027034511c6a1e3ea96122f7626b89b6d339ed49 commit 3176d0925027727ec37e388e9363f124c2c52ae9 commit 0c057877cbdf261efa7874474f48c715cd6401ba commit 5e87b2e5171621ff00ec197c9af15bc3aa405b6b commit bbded689680f0f2e65d4a57d0dfa654671052d56 commit c7b2dee4308b74391734ac675e66e6856a077f77 commit d9ba1b4cbb2989c919198832f4ebd6eb8ba94da0 commit d0edd3c1a7e859a5899c26e2906e80f4ac798fa9 commit ca10b9d60f8c9556720bad8b1ec7d522e353a01d commit de5db71e4c8c35ed5e92006e3064ce9230881ece commit b6415bd7386bcf9d2e0d6ee1d4ef4186e7a87b24 commit b959eb4f5b7ea49b47e95c9047d33d1b1cf81057 commit 0facdaa249c4e97346bc0b49c893e4a1d336b7dd commit c3e57159dea473e9e138d32d08c48f3103294050 commit 057a6a1936e79c0bc9c86537fb9886ed39cd078a commit d6774b8c3c5813aa541c9148f641d3d8d4b296d2 commit c577b2f43e80d707870a74de0fd726c51b206956 commit a24191b1c4ad05fc578ea5ea01652c09b71da86d commit a9ad5822366c5065e6a65fe5ff5090295ba98986 commit d158367c31f0f87567d2e8a0955287dc005d40e5 commit 8f6de23184452793e60945a26ac40db435d7798d commit 9e97c46f832d4669b4e52cde5ad0bd43423504eb commit a77c2af0994e24ee36c7ffb6dc852770bdf06fb1 commit 5913ab941d6ea782e841234c76958c6872ea752d commit d50f74790bbba662d1438dbc03be6616c52c0722 commit 16f1456466c269ecda32b88c3f8fdd76f8ec370c commit b279df242972ae816a75cf1cc732af836f999100 commit 8219f11fdaf56593a719e1d72fa582673560315a commit 69340e529a064da4807622395e967aa2b5eba1c5 commit 475e2b970cc372f49e9d3e4bbead8b4874299d31 commit e180a7b218487065efd9a3f05eac5de7de128e19 commit 315a8d00ac74c59a688a1a88c0ed97a7791d1c91 commit a50794f26f52c66cb793d5d392f5f19bc2962cdd commit 451374eef622fca6f00eeeda89aaccb45a30a149 commit 1ade30812abfdd1c161a155fd54b0dd594c217ee commit 230fb39ff7e07bd0324c87acf08dd2c9b0bbcea8 commit 962bd34bb457f6353f333ce234c3fd34cad1c00a commit 411d44d754739a371999412606b28af1d72a210b commit 7f73b371710edaee1f40d834096c07c62e51b184 commit f159b1b22c8a2d3d7c1fa877fafc8aacff0deeba commit 746b9c62cc8614fa59c23f3332682b5e9e1d801c commit 1c89b4b718168aa6cf136a984b474d663e4203b7 commit a8d6e127254c48d895c4f6e973ec998fd4a0eff3 commit 4f093a527b0b8f9d3059a4e8376e582fd14cf09e commit 4a2a13a57b605994ee44e5c2cd7b9efc49901404 commit e7c254d75d16b75abf1958095fd34e2ecdc0d645 commit 69ef4a192bba0d76216198ec6d5fe82375337903 commit 9602efab9f8652ef39dc2789edcd26c3d1d3f901 commit e91eec9128c2ad9eab9cf9d7c17f8034b6a86c4c commit 9d8d5a39173244a1394cf84a93447be6f82b361d commit 3d6c72b7fdd2429ca1d4d690618bf65050380b48 commit b409db082da6b76ad2b759a1a48d9402eee4b942 commit fdbec9ff669d83bf863ca7e657af6a9e4c949565 commit 39921e5f00f5a98ff9cb3229937ca339e8d9c9c6 commit 85a040bc9049dd168d5e79a1fa9d2da87e6e52dc commit ee421bb4cb9535f44015634baad833dcc98c9062 commit 5f38c3fb55ce3814b4353320d7a205068a420e48 commit 39c28cdfb719f0e306b447f0827dfd712f81858b commit 0d662350928e6787d29ab205e47e5aa6f1f792f9 commit c1de02bbeca58894c805b3d45c2da4bf30cfc5d9 commit 0b4c48f3e315d172e4cc06e10f2c8ba180788baf commit 08c59dde71b73a0ac94e3ed2d431345b01f20485 commit 67d935b4713988d0a41097439c0c2d74f240b204 commit fa373eb2190115ef2c3597f89c12350d0a250eb0 commit 4cd79f614b501e496ee8e4181d528c0cc1cb4e18 commit 8ec5c0006c50cb1909c0de0fad137909c1218990 commit 2ba5b683260e13d8f2c43bc594d5ae15ec7f7a04 commit 670c87fd169518eb4f15030c63f6c1b4ddf18bfb commit 1ff72d434b40d221e2583fab5e1203031d05c059 commit 649eb3828fb22e829e222ebd83f4e11dc503a565 commit 9ad6f181ad9a19a26bda73a7b199df44ccfcdaba commit 39b1bc4b5bcccac781267bb826b035fbb99c8b9d commit 991dcb89caeb1b9bf714b382e23d3f6d8016e744 commit 61922beba36adea8702fe8069b309c806f6608af commit 6b03816f869529393b37d03e5d75b68f7365a7a4 commit e4f21d1436519fec3e181082c8e1c3fb00ec08a7 commit 1a3b1ea111c44d9dce9f70ba032531a223395a15 commit d63ddca7c58132257fd01e3a4feca41b3bac3089 commit 8ae664907916eba9a9d56296bed684c27318a872 commit d32e8ed918ba7384fda9055ebb31b89b3eadb517 commit fb289464f695f9d913479b4ebae9e39b057f8531 commit 1eb31338994889ac34c4f841e5d54bf10111741b commit e41388d508a50ddb2be5c2676f1992353ca2f155 commit a4f263f46961b1229b10ca3a98f0be618a9d47ac commit a67664860f7833015a683ea295f7c79ac2901332 commit 837c72b23a57e15dd363d5f3f3f268c49c128740 commit edd34368c4c3b45b1386b15f78b2229420f8c6d4 commit b981cc333ff06cb23c7968007965e79c80f5df97 commit e31372492904415e425430402453a192e2c6519f commit 16e214d4aef2d600ef94e845530a28ce795b8fcc commit 26be7cd8aacdd3f0429834e78e3166286779f083 commit 6a735552f44d7a29a9e629cdc3b5c3ac2b4021e6 commit 9d15dd1bb3e7de4dd31a225977813dda2748253e commit 69d6bf5c3754ffc491896632438417d1cedc2c68 commit 91776af1d8deb8f36cbec6bf2bf24b661b2b5cbb commit 9180c30cd61aa0b2f0eb4791c8e490c8c5abc54c commit 420a07b841d03f6a436d8c06571c69aa5c783897 commit 4fde3f5d8805caba40cce2268c540d8a37403c6b commit 51ab3b85000d214b75899875d5745935e06020e5 commit 822e5ae701af2964c5808b6ade1d6f3b1eaec967 commit 75bd0d5e4eadb9ce3e9b6fb71971b6e87c38799e commit 60b02a09598f87972a15bb181b9a62b8a8ee682a commit 89fcdf4305996f869eb39eb8f14a989e9a289611 commit 586294c3c1860ac991d3a241159c0edf974b68e4 commit 8e75e8f573e1ff4a0c93c3be1554d2bfd5ae6029 commit 67090801489d0a4c80c121494b749e1e97573447 commit 50759c13735dab06805eff0e8161d33216d6f5a3 commit c3fbcf60bc74b630967f291f47f0d9d0de6fcea7 commit c2fdb424d32204faf5be29d55f0086b611c94e38 commit 3cf050762534cc268a02793ec00240f81c6e2229 commit c518a775a843413786d3db8b5cab084597730a5a commit ade1fc91eb99614c7155fec762ad5761bb470e06 commit 14374e3eee1b02dbf162e1dd75b789373f07ef43 commit 435c249008cba04ed6a7975e9411f3b934620204 commit 0c5064fa8d5a02dc2dcc6c674a0ad1bbaf79efda commit 01357a5a45ed8eb9543183f5c9c6713ae60fc1f3 commit 8f61973718485f3e89bc4f408f929048b7b47c83 commit 245a4a7b531cffb41233a716497c25b06835cf4b commit ec8d985ff26f29d53d9ebff04973e96572fd0285 commit a0ab5abced550ddeefddb06055ed60779a54eb79 commit 0aa93f54f4341a40b05ec2ac242109e78661d7aa commit 92a020747d6c9e2efe8168a4a444576581bba636 commit 6cb07d20317c77494fa4de572887e3dcdbf98b6d commit 0e5397d8c9fe2a2e4fcc8d98cba4a12511a03267 commit 3951270abfd229e3e17c991942cd111b66454f97 commit 3d140a3d8816082f9732d6fccb81dc18823e03b3 commit aa71f9870efea70b38b17c3d2af870530fcd02e3 commit 58ae532ee875783503428610ac0f5d80e73009a7 commit f2206df8ec862073995f5d27f0f55f698843a9b8 commit 4f543d664cec7e9b490bca55f57151afe6f5cf47 commit a9bfcb56a2ef265092a4cfcd4b9c58ddff4d3649 commit 8b449f1c44d1f921240da6a3e7fc4030966abbff commit ce581ae142e24deb27905840fb720fee9b38d7a4 commit 04514c14678e760e17e3cd44c553ade1bf3bef06 commit fba99b1ab7bde41c1eb00431df37b9237be3681e commit 2db7d421cc5ca86bdcf57f2634f6eefdf349f998 commit 6e939738da208bcc0e4dc794519e18cad85bca73 commit a9b20eb6f7da7794f8ffbce0ab9c709cb1ed71aa commit 700034566d6844b3a67f4b6c3a728d9c0c8d93af commit 5a18db2e92a3556ccacc92c031db6e6a7f2b34dc commit 01ece65132e2980ece4eca91105dfc9eed504881 commit 04477e5e1e6ced4573d9bd5271572ba633a260ab commit ba1677f76b9a510d88efdc7a1416b2e778f125bc commit 368eb57a1676cef35f8303bc23f95d2ac35b7255 commit 544ef14031d0bc9223727fa8d39cd54f0fad7244 commit 147a09072c84b32746fb70139963a92c7d90e07a commit 0cc3ae930c8b2a086b802a8c7b915fd28b57c780 commit a57ebfc0b4da16a3f36bfebb158198aab3e340f8 commit e9ca4e9ea6e208feae82f72607818ac8e15115f4 commit 935a3c66eb9b66426d4be9b54666c77dbe7c32eb commit aa2bdc4843f5871e6c68fbec5e10c0dbaf10ff91 commit 4cfd16659641067f618cdd3589eda42eb2943399 commit bc3c5e0809ae9faa039baf75547e8ee46ec124ef commit b87d39019651c9cae169396cf5ae525393084490 commit 5ac342ef84d7dccd1ba43f5fa2dc10a6feda91e2 commit b729cfee705a56c6204647ac486107a1f814af36 commit 3800b1710946f7db3cb3a29cb2e218cf5df999d0 commit 50e156bd8a9d0910ac4bae5fcff00ddb798db967 commit 10e619f1f31cf126885b3e0ac43a8de9744467fb commit c441d28945fb113220d48d6c86ebc0b090a2b677 commit e8971a790370e805281dd650ec936a9b66435220 commit b43edc504ddd8902d1f697364049b0c0b89de6e2 commit 6352cd451ddbb506ce061868a9e5465d294d4857 commit f7dad0daf2c2368f72828b0729799f01bdcee33b commit a820190204aef0739aa3a067d00273d117f9367c commit b8b64595d6a1ccd5cdf56c528e921332d1366b22 commit ab9d97d6f9f1bb5de83411581dc6cdf425a83a15 commit f74e78ca90bd21b47746b90c439709007681f44c commit d5fe83d26dae59c5b52105075e8950dea8ce7c19 commit 66f54992981444cb418f31018e190d15c92d3599 commit e309434ac56774c86e79a50980e8611ce7cc31a3 commit faf26f2b12e1e03956f7e628183e422d94713e4b commit 2f6247dad2c56cfe2df3c6e00586ead5ee905b46 commit b801d8ad1b516a951535241c9cf60cac8f9a5c2b commit 79b470e5ee83e979f8ff465efa8b7ced160bcae7 commit 4f29f9cf092b2d331ba2081566be3272962b7f96 commit ac2e555e0a7fe571d46f7dcb1529b4bee00095d6 commit 0efd4374f6b41650863947a7528d45e8ad0f7ae0 commit 58efeea32d5e32fa340c7ee3f52d5f986b240e39 commit dda4fb85e433f761eedaed0005a2bc20d705d504 commit 265280b99822e5562eb431b102f2ba773c7b2a0a commit 235c67634230b0f9ad8c0185272fed36c892b1c4 commit d3dfceb58de5f897640cdd424f6c2538d9514367 commit 3b1229741eda70116e0163affdda377484a788ae commit 577359ca178262a64236cc96299714dbff21e9c7 commit 85b0cc35efab0cbc78c083d4506250bea6a755ad commit 49401d3a5c86f5ead12ea7cbe98031edb512b13a commit 543036a2de71f14f8ad566c858e5e9ff61736a86 commit e42ce1366ae806ba2c1f884997703be68df428f4 commit 3dc35cf8789ac93d656f255539f9b37c5051ebf6 commit 2cb6915dcf70a2bf7ee10fcf3f56b083beec1086 commit 542a0f2ef9ea2ccfadf2b8a3b53368c61fc97a0f commit a839a73b18157fe30eb4acd2a1f1ffdb890762ff commit 9761843250f1367043ae2a483461af287aecc879 commit e06c5f59ffe1006f1c6f533113b72ad48a6d4564 commit b3f2c796634613bca511266b37084560f36b67c1 commit 6a640b95b061fe340214ebd4638974b8b6f08efe commit cbd3e8440e2e6a4d83479235c9bf278b89360946 commit 1908a07cffdfc7c57ba5116418c3f2b5ef05e0f6 commit 218987fdead218ae0e714cd9059bc9fc480220f9 commit 9fe5d08fc8230adb64128986ee4af267a54e56dd commit 16600b7d66367482dc8526f8bc3a30b32aaef329 commit d57716702deac8e0ec440739eb4cd6eb0872ddd4 commit 10c4ad3ae025dd0e343a09d2ea4b0e71f8d10797 commit 8763e4c1a0e6710dccb8fccba96fcd6caaa50cae commit 7101ab97e3b00ec1c68d09826bb0521d17783673 commit 80d46fff373775fdea9917a7d13f6fb6fa5147ad commit cb12d72b426caa7594890c62df69fe4b83c96e58 commit 72b5f23ccb0aee46029476cbb072074384aef591 commit 3ccb9ea9976022034d8fffd8d929d6e70a24e0c6 commit 2388a778bdacad0c936dbb01048362864847f8ad commit 9d6b2041761ff6d5a33941919c8b5a805ecbed6c commit 1d6c363330834fa534c1c7ee01620ff134aade1f commit be77243327d962a87bcf03615bae12d73efb9b7c commit ac1ac694f7173a0fbb0b60ab0f26226dd334479a commit 2cfe34e18970d26bff73c63f16c76dae22138d19 commit 2267a195e28cc438cb45936c4562f958502d4038 commit da1db031cd30fefc99d1c82211d3c24b73857bbe commit 3378aed7e2ec7212889116335a2120a6e35c80ce commit 7a09f61f8e842dd027afa1ce8be8bd86062c8a7b commit 4c1b3d0803aef6d39913f1e9d2cfe2c1ccce18e8 commit e87b92c6af537843daf7da9235e622988bae7eae commit b5a0168e1406176cf98487833b7468a1ea5872d3 commit 452e9214431f1f6385bb20fdf6e1b5692947071f commit 49f594995a9255ff734f79c1fc22bd06119ebe8f commit 6ea843e01bce520cf5dea86bc30c5133e0d0822d commit e127306d433ff99f29d1b083c6b3aa128bbd9c5e commit 0c9ed6044c5d08562d38d56e94279badef39e4c7 commit 327f79d7a1d2dcc10aeda05983c4d1532dd0830a commit 214d72f62978c28fe27d22d0d498d04493e9ce86 commit 80fb7a409c64ef304e4040320e87dbb2f10968ca commit b6a93844145395068574cbbfaf3aea91d1f24f1a commit 405bb9eea36a02798631e8409f1182705699d092 commit 3e80a5b068a5fedc69ada30ba1a2d1e0b76dfc25 commit d8e4fb9112e88d8d87ffbc38fa511e7118042d4f commit 8b67e738ca17fb52a275b1cc0191dfce0e9cd7a5 commit 83eb5385b4f021c2674b1d78675bfd10443cdf74 commit be1a63daffdd152ba4c7b71ab9fec2e39259b42b commit 1d742694571655e49e11ea8f391bcafaf0f5ee74 commit b3d0c0f2dfbe610ae5ac6b2d70dd450645dce3cb commit 1da5dab029c08e178784a0750203365ea7c3b4f4 commit 3a6dce778de7c120a37983d80b6ccc8c2c4ff6ec commit aa303964bc349914de8e1d3ff7b517581839d01b commit 6d1044a070b2eef0be45f3b99274a6cebee25053 commit 651d7ee63f338b82d18273c30e9ea804ae174342 commit 3d8785f6c04a953868384db455bb2fdd0b22c11c commit b07d1d73b09ef40e91ace51a2e167391676a8175 commit 4c7631800e6bf0eced08dd7b4f793fcd972f597d commit a35806b36ea44724b21f7f110b38b5941fc9c393 commit 65657d98754c581ad66b56680d3c9ed679890071 commit 32c453f18dccd93a27d6f026ca690167c8cc9639 commit 6cc5c77300afbb285c4f41e04f3435ae3c484c40 commit c7eac19eda0a82f0c1dd9455012754445772fd09 commit c2a050c5e07faf9ed2fa1daa1eb642d9da4a879d commit e61a048eabf9d1245f86e67ec4787d2f10e5a1e0 commit 65e7a17499e15771339d85eaa1ba686ad2fe342c commit 381b590c307f29d0990c4b99ae3a2e02aff2a5b9 commit 1b0da5a3e90d3920f6967e4303fdeaaec6f62208 commit 7cc191ee7621b7145c6cc9c18a4e1929bb5f136e commit 84de5c2e92dccb2bcfd5ff68af44960b808fe6bb commit 453b0016a054df0f442fda8a145b97a33816cab9 commit 031ac4e419dfd8f099a0adba31f7f735013eb628 commit b94b02d72e2b979a32addc8f5099fcf1f6ce9e7b commit d1b08baf93352bb3c88d637055dc21187a456646 commit 136f614931a2bb73616b292cf542da3a18daefd5 commit ea64228d26fee9b766bc9615e92a319da5ef94ef commit fae7d186403ee5a9375ec75938e0de99718e066a commit 73f54d5d968264148ef81941d9dc07e35025a120 commit 85397f6bc4ff13a6bc5259facb8ebebb1986d666 commit ce19021fd99ab2c915f2b44b0df39bef75f11d18 commit d45e32c9d98ce7c22a4bafe69cee58165b59533b commit b62d943e9686e791dd39f8bde302fc27446cdca9 commit b9a577a407d99638522ba6a0fc4fb360aacc01d0 commit 21e74bf99596d91411b6b51340c05ff92a7a4a01 commit 98da4b99a0525c222dab7cd8e73153eaea062dc3 commit d1e40d8e4b4df3f705c7898b264b2cfb60bdafc4 commit da1efdb2a3e8593a9428c81a531bfd8a0c3dd66e commit dfa687bffc8a4a21ed929c7dececf01b8f1f52ee commit 34b68c17e9895ba66fc809224b0122a2eed7aa40 commit 330c1b3180b0d79fef7c05331647f3695661b79e commit 38353a5e3da0b26fab9eeff13a482b135512d9c0 commit aec23025ebc86b770beb9dab6610b671e63d36a2 commit 4464bd825dd56c2f900038c5922408d70aab01fc commit 165ab7b4319d8ecbb689f3d68f0cd6bda4d82b1c commit 77361ed89a8b03c7e121f4b8c517d7be93ccd8df commit 2d017189e2b39cf2fae63984215385401b77ea83 commit 0c56705d8aae9696348cc320b71d531ede001b79 commit e5309d7f66105011e0597fd55ff2ef7f636f52c6 commit d8791dc7f941f3dc78ef2c6aa71d7c752d5b529e commit 8246370341e8e816ad22aaf8d8bfca850339ce0a commit 874714feff3128dc691fc309ee8b9d479f541aa6 commit a0b9e4531b2eaf066a1ccb2986f4d2f9efa6c313 commit d4965c53b95d7533dfc2309d2fc25838bd33220e commit 6b6d12b6ff204cc224cd2369bda2b0580a80a5b3 commit d445dd7b39c56a66872386a3ce0c8a862e59be46 commit 9d001360b47b792a475250bf7ef2bcfbd17ba09f commit 44961f6ebce9a7dccb2ec3dca312c5dbf85920e5 commit 6bad4ff84cb57f548d42a41091159b750eed9ef9 commit 6651875ad7796ed3cd84b3bafb3885d05bb543ff commit f9f4daf15398c3aa0aa2dcd05ed4ea2544bcc62c commit 2ff6a14b20298db0763772b62cd4fb030e6d7f75 commit c6e3806705d679edf135dff5d540a278fc406f15 commit 81298056a78c5163b216f17d17c43736e7069961 commit ab9db127ee03487785509f960e7b5b91cdb6b92d commit eb20cf30c57c37ed05f44966dfabc2c34bf46cab commit 5821a0bbb4c39960975d29d6b58ae290088db0ed commit f09d2b0bdd78ffd38227426fb2ceab7ebd141391 commit f06d1d66d54c223e4f0f73393d94afd88105b6f3 commit 24b8b74eb2eb578fee046c70681000f61afa5680 commit 7f35680ada234ce00828b8ea841ba7ca1e00ff52 commit c5cb0002d14b6f7aabaf7d67d0515fe70aea7167 commit 17f65658c8adce6233f9e53be59d399af6180059 commit 20e10881a043af63f2962a9e6bca64661225b383 commit 594740497e998d30477ab26093bfb81c28cd3ff1 commit faa406f4233ecbd781554ae0a850e56f53003d2e commit 68e355c00f2d58ba0426cf9a4d9df77077493018 commit 61243c173cd26fc8c6bea74d6d47a37ab520dacc commit 143fee0ccc97284e6ece1cf86b7d50721b522448 commit 0dc662318d36e060268751fbd3309660acd3c5aa commit c55300ad4a1814bac9191a4d2c7b0d74273aec7c commit 6fbfc3a23c98bdcda679161c4f4e31368008af8a commit 08a2fd23c6c21e5ef24248a9c1b09e929655eb3b commit 136788cc74cbd9fabc2922b77bfdd38a53eb7155 commit 87d6b28e4a753f4a0572a695fcee094510dc6519 commit 284498206f31e655fb61b1e08d0506dccbffe55f commit c4d7738c9efc81a4f0364da1e673ab1b1cf91735 commit feb54650bae25f2a2adfc493e3e254e7c27a3fba commit 0f28cca87e9afc22280c44d378d2a6e249933977 commit cac3bfcaedbf4d5c93cabaa7882f243099afb8ab commit 4e2d10443580d934188f226f48eda7d650711e03 commit 0381ac3ca2e727d4dfb7264d9416a8ba6bb6c18b commit 851dd8625320fb626b6ab6399b2402fd84abcdfb commit cde83d47482e2578432f9ce029748f4f0d029e9e commit bb50bba9c6c741f5e359f009dde3b25f12a84e3d commit 6f73d6762694c3e91c49e6708077a0de2a75f2f5 commit 62f8f5c3bfc2968461b0a74f0e393325bec16c69 commit 1b3aa89550a2ce4f4af41e11162c5cc0b0b07b4f commit d7053e631e891698f7532712066014ca140c8ff3 commit da4d45b7da937dfbeb918b87c66a5bf9a3079ed8 commit 26c763875e0c15921a0480e008e2be07665e7f56 commit 8728df26dd24a63b24e4e5a6c847172add2fa149 commit 9e68c3841390c43521d4fde6c51e91fcb2d4131f commit 5b644783396b2150eeccb9a079498cad5dff3c42 commit 64f6516e60b0bbe6abfc9f1d9f1999012e0f11a6 commit c11256f82ec82216f69dafee75b3d854d92392d1 commit 6aed665f9d8368ae1e962f44339150884bb47f5b commit bd63f11f4c3c46afec07d821f74736161ff6e526 commit 430ac054e5ea172a880e07da494f65f0b80d8fb8 commit d9c1452c0f07c2e0766a6cf3921eca182e26fdf3 commit 20f038d074d4fa52e88a36bebf25e81c88d7e6fd commit 9e9fa6a9198b767b00f48160800128e83a038f9f commit c24968734abfed81c8f93dc5f44a7b7a9aecadfa commit f17c655cfb99796918d96ae25261db2640407d01 commit e0d7371b46c7b47cdf5391717292033365801437 commit efeeaefe9be56e8ae5e5b4e9ff6d2275ec977ec5 commit 5c57c099f442acab13129c9e15ad2a0c31151c98 commit 9cc4853e4781bf0dd0f35355dc92d97c9da02f5d commit ce19bbe46fcfb88e75a6c7f691df4753a72daa81 commit 7aade9ceeb88d8ca674141d2c245f0107032afb1 commit 4c59b571fce6cedefc1c8e5158f7548f05c05ed6 commit ab9a0b1f3661157d144fb744f3a197563e8e0ff4 commit 25a2b22e4148b1ac91960e13f4f5de020ed04d05 commit 2f83658ffc8c259f05e79dc632e34b26bb8b75c5 commit b5fd0cf3ea377a7332721df8a8c8e7715f93c8d4 commit cf727044144d47c3e8482b9a7775bd3f04a87341 commit 247c7b0dac3cf1141b8bf5520adf2fac1a797aa9 commit e3c60b4ef42d4db5b8d1434fa1741abd7f2fc850 commit 5d6ec040ab44d23953a2efebfe02e41337952be7 commit 7fc83cd079bba8b96b0f46e31f26c8f31c814146 commit 7d188c521d9ec3650136e9b9c81c61b22a544ab3 commit fc801750b197d0f00c09e01e59a7dcd240fddcb5 commit 930e7cba1190a3251fcb01c8523ea9aed89d9a51 commit 4af48f1d1d0a6f050ffcfe83e939c9455d51267f commit 1db4b5264819a8e3aa62e38287bf1da2e1dc8894 commit 5c57cbc390b166950c2e6c2f0c4edaeb0f47e97d commit d8609fd1e0742ba3ad2e51bba9dd489dd03d8599 commit 56426faa1492289ff794620c4ed8c1847a420d0a commit 254a8d0c0071255eb19a81a32ff8d5a0beef1e34 commit fc8adb13d844b44c147b4dced292c74a1ab5cb25 commit 16bd48dc2b3b08d8b3160182b42e51eb2c274706 commit eb6b94db2f4a585d4a9b8e503d7377d2a23c1104 commit c750c4ce1ad69d3df68359abce70ee3d0064c97a commit 24f6fe3226c6f9f1b8406311a96b59c6e650b707 commit 16490922a95f4f67eb9d918f94a4f5b5bdc9eb80 commit f4e3a12bf2d1983b8f352b7719794c52be7e0990 commit fc67615f4ecc3b66bd458840927272aa131eface commit 11a8d095d86854bbc8697525f2c543de36bf5804 commit d9307f27efa531f034862bccf2985c5fa22c4b80 commit 407d63b3af881d17c39f16cdd8416adb0e4658bc commit 6537f79a2aae65748d402d6c46e79d9e473d42a9 commit 019fd800cf4a4514bbb502a52d376b01f02cc347 commit 9f1c8677724a0e6a6ac7a74d2b0192a584df859d commit 623411c293d180ed51f1c3b5753c5acf2c2a4077 commit 97708335b04df3eef0e650b0601cdf6c5ab16dcd commit c9ae7b866f32043d23a34d00a5e6e8d86d2cf10e commit 9affc1b87ecba31458567359b5a28b0b08920a24 commit 72aeb6ee0c78fafc476c02d1b19b5b38defcb57f commit 438eac25d033a1701d839bad16c6ad78f683a293 commit f2a5002541d0698509d4f3adfbfcc55a9c1e2dd1 commit 5089c4a8ebea3c3ad9eedf038dad7098ebc06131 commit d52ea3dc65a9d504afa7a03ff24e17866670bdac commit 526e6ca5d1d5fd22c79033cf5a8eb07d98a11274 commit ea937ad6e925994b94d17555e4c2f2f9a99234e1 commit 1f474c8742fd53a048cc8cc4b20e20b2614397eb commit d6aa8424bcac64b2608452589c9a09984251c01c commit d11737f26ffeae88350b835caa37c7449da22550 commit 272308add589bd46ddb5899685e25fc9f6a58b1e commit 1a65327a84db5b9081a51ccb1c562083f59bfcec commit 9731dd4cadc53251ef80b3655c8d841fed52fa3d commit c443514a7d6d648bc497efbe502e2a49738b94de commit b840b64bc8ed3fc46f6d6aa7f97c43862a33bea5 commit 71be4b16d39ac8b25a8a04eda66cb65581e1a03c commit a141d2083b462505727e14d98db5fc3cd43d59c6 commit f51d22b0d04aa33e94d663fb63aa61e4da168523 commit 5f034aef8479ac80e8732958dcb66b8eda650659 commit 85ee819fd08eff7617c186775fd958e6258216db commit f69e98a91a01fd7c5755dd710e94a17d6e9f583f commit a34136a3b3526369e1b3e678590e3760e7653f0f commit c2fbe663ec4f991832d67f936d3941f781884156 commit 2bbb54bbacd674c692306351d1be5a9b5e61a1e4 commit 28fdd0c32daf9a50a606530d54784fcfa29d88b7 commit 9a4c9de4838fd8ccfcfcfdcd7bd472dddd11f264 commit 3de58f22f544ec9c692993fb1f3bc77163d3d5d8 commit ebfb15262af3bec6c3cc263ce04164e44eea4b30 commit ac31a24d9188a9599dfbce7664cb11e6292873a5 commit ac78fa502afa539cce3a285e50d7fefaf4d2115e commit ba8b460445f8d19d530646729c29319c278dbb38 commit 68ad7f90c790a178f47ef08408d97a81cbb71b37 commit 914da384ae9a77079314f07022c18063c7e77778 commit 4e1db0119c64fd81509005a961790d263e99b21b commit 2595fe04a44d8ac7a56db27dbd1c54698d97fc0b commit 869968225718ec7d77c418e2f6be996206d0428e commit c78783f3227f41053e9a44f536d13f05383b875a commit 8d2ba05b099aedfcece0326a5bbb2e7cc33261ae commit c435f61d0eb334dc8367164a125aea45d9dd9508 commit 3f49f7591e7150c502aa8d04354941ec2394153f commit abf0ba5a34eae0d7359228f4319a6659676fbd0a commit 0f95ee9a0c579ebed0309657f6918673927189f2 commit 1556c3b4c7ed2c8f17f200d53897251fc68b7377 commit c0c87382c1a6985cd12a49a62a893361e5fd1b8f commit eb2983c09f4e053f2c3362763f5e1073b5e4cd7d commit 04770b082e2a207804c633fbfd5efec28cbc5673 commit d6346ae0779ef9a41562f5357ac28aa6a69b1c81 commit b8fec4400923eb91f995d7dbe97411b8991ea559 commit 651d4a0fc4c5c6a2d20c95ef814f0d4381f71d55 commit bf9719f8c89addcf1947ce2b29cea29ea9d8f875 commit 0256ea13d169e9ef00ef1b1c9df395b1d6bad6f6 commit 5c9016b2ddb375662aff802d25c96f5483a4e024 commit a50cc4955623685402ed6deeffad7df93591a416 commit 7a710a8bc909313951eb9252d8419924c771d7c2 commit d36bdd77b9e6aa7f5cb7b0f11ebbab8e5febf10b commit 8ee53c702f23d511b7f635a4eabbb85384149f8c commit e4a8864f74e9e9e4a7eb93952a4cfa35c165c930 commit 45c64ecf97ee370bbdbd8eed7aed9c8ff5d1b0dd commit 88436dec47a89d944e834e27d83a5dfd49d032cd commit f0978e92c2f7e9a38fa05d30a3e901d16a30698a commit 109406c92f971e739af04b278ef75dd0fee68a40 commit 781c336a6caa67c68fe3a25b108d1dc38b0e7cc0 commit df17ff62b626554c6048bf435a87c5fe1981e8a8 commit 3e29d3b318533ad031396a40322e0ae1aaece943 commit ac1b49be7fa8cddcc194ce66aa453e2b2cff5831 commit 319ff09312934b08b532e605042dd59f41b74458 commit c5dc92006d50fb55a916755206cbac1022373134 commit e7858254f9af9ad4f1570d781666e3af4c298a88 commit 3fe6c7f53eaa62e3700d8ae076e9c42a1d855242 commit 2ef6efa79fecd5e3457b324155d35524d95f2b6b commit d5929835080a60f9119d024fa42f315913942f76 commit 2b1333b80885b896807ffb6ccf4bc21d29aa65e0 commit 2c7676b6b1f57713f55e738f803ecaf91dfc399f commit 47fa33cc54615161ec5192389e55f3b95274f56f commit 6434cf630086eea2d091f122f5802582a05d9d1c commit b708b36afd5b5f32f7cd49b3bd4ab524698c3627 commit 93e163a9e0392aca7d720491100d810bfc3112b0 commit 1ec17c26bc06289d368e2523c0e95b5038c6eeb5 commit 96988a526c97cfbe6664e637640dca9406b0b928 commit 1039fb60463cfeb1fa39c6c48b5c3afcf5b89948 commit 3818715f62b42b5c0bcf456ded3f59ed3908cd6f commit e60c4354840b2fe8e1c4df3fdc5c17039824ff96 commit 89fc846675537f9f6ef62271e9d60556c873d65e commit 993a87917c2af59efb0ee1ce43c878ca8790ba1c commit 03e22ba090aa42dc029c25dbd58fa4b941c87ec3 commit 805245071240ae480503af29c7e31d2d7ff5c7f8 commit 255490f9150da7c6dabe468f3a877b92fd0f02c1 commit 720cf96d8fecde29b72e1101f8a567a0ce99594f commit 90bb087f66745ca48f6f5e43df99a1212d89e712 commit 7c1e1c5e0eb66bcbbedde92eb2bd988016cf2716 commit f16a716621a6edf4eef2ba1409594f5c780ea09b commit fb84efa28a48e30b87fa1122e8aab8016c7347cd commit 5e41b01a780893507a0508f16b9c4fa7f7a48557 commit 3fa214eea43a07c239bba54426399d7d175d0454 commit 47bef230225b8d295255d88e130edc0b45ddbaf0 commit c0398df2a195fa21122e566f54c1f78aad22ec47 commit a960e35ac0111b793dd07f3ce6dc3e1981f91679 commit db9b4ffbfa82201fd7e18f6e434469f3648a8bcb commit a64af136771a7c50818fdc23ad4ce140ed7b66c8 commit 15b9ca1641f0c3cd74885280331e9172c62a125e commit 841d742f094e00e514627bde65d7822e98fb3e4c commit 2327b13d6c4758926e57b5b6c3094302ae3b5e9b commit 3b5765df375c90d46316822131acdd5cfb1c5869 commit f5aa7d46b0eec280ac022664f3e8b6bc9f4ee099 commit fc98eb494c4be6aed076c1ad21d46d5950415ca0 commit e1b7234b4a3f5fa716a84b081cd0d0245674f761 commit e21c3adc6fba27a5dfe3fa5e83d947ad56cb27ee commit 87a3451e346be3f9a5d8943ae094888044314631 commit 7c021558929f7c80ed07e83a91d0905c31e8cd9a commit 4ed49c954e35559cb4a34ba049a15f54ec7fccf6 commit bb4f196b47b6554ba89f02ec60246f0c643a4bf8 commit e751e4be1eec4d427d91583f31ce56ccb5286a27 commit b3e73cbf17a95a85e3a943d7500e9e477d6ab9c3 commit 1f43b8903f3aae4a26a603c36f6d5dd25d6edb51 commit f7ba887f606b1895dabf718547cf7397924f0d3a commit 6626c5a4ea2ef1bba3e02f75f797523e168fe28e commit 8748de873fedf4d55bdd99bbb738ee7ddf329792 commit 51c45e450fc8529495bc85c2d8e309816cdcf959 commit 1320d6c7b0deb7219701a55397e93e6c73d00366 commit 262236b4f5a7d2fe31ed31d34669a9ea4f1c3272 commit 0081bc072837b66587904e6988aea1e0845b0294 commit 5d763a9955f0fbf2681a2f1fa87c416056bd0c89 commit 4dd905fd9429626937107ca13770aa836c8a7e6e commit 10a36226157035e84aaa58e1699a32b3de2755af commit 052eaf6af846e59073a842e9b9517ba9d3f76d4a commit 84a8b3908285d007db49532fd4b51d4b183d1242 commit 4d31819a3746b1f33a915546a4b1aa19374d1544 commit ec457f8378901d673b841e81d289b0165286db7f commit f04d275d94e164d24516c32437c988a323018f63 commit 06f2f7772dc7ff2e3734e654cb2d0b588076860d commit 3ab55e3a1ebc22c1e0b7c72261a8c9fe78a3a09a commit 4b33b5ffcf68de3a43e7dddc91c5dc86e6ed8587 commit f173fbe5b042e1c87593e3b06e85cae0094dd867 commit 98dd398aa3e021896adb7f2b1d0f6b2d3784610c commit f18368b686a86477a79bc240a3a1c655d88a2348 commit 95133f41b090b09ba9163b4469cda1d5ee230cd3 commit 2b96b036a6a5767b84f87edc2c0a1c70c91ebac0 commit 6bad8e4a0ec8a950d10d91cb1846f3ef3e1f4ae0 commit a3e731260b9325e2e87baf54f07619c6cb83931b commit 0bbd1c7de319ca5a08359e5fc901a0317bf5c0d6 commit 20cb72174ddcc86596286784416adb947195e45c commit 990cad0e4a9df4202cd482c192608caf6408e4b3 commit a30e8c13e7affd6fe379c6bf213133b0f917d1bf commit 074efb5cadcb3c9e40d536a730318bfab3384cad commit 04e6931a76e592e66e1014ffe4d13303ccac5d8b commit a3a885878e74d3d81e4742f8dd84faa27c8863ad commit 32e8ab05ed81c995b92f12b590c12ef951ca1129 commit 3e838f7ccf64b0e33a2f6d1c66158cc5ab04c86f commit aeb73c608c5b7fa6fad6d98694323e7629e93cce commit 2d7a1ef85d013699ef60068a9f37ab56ffb33c32 commit 2b2db1f9dbfbc61116fec83a51d16fd0cf49b61b commit dc597268225b2e39bca0bc0c5394e3e6266be2e3 commit 43af2220b3302bc04d72bdf07970ebc0fc46155b commit 83a3439ddb28e15afa66f52650cf3c1486ae6515 commit efb4fd107cfd9748f777a4e9015d803d3c9db68b commit cb4b7a23ff85740ed9e0a3aa4c3c0195654a89d5 commit 163d4cd26a18db7db68a98b4d1ca95d542ca72af commit fd6ae969cfa2b12c6082eb83bdfa648b15d9b3c7 commit c85c623ab406188da7969180e53c4b61e8a982e0 commit eec53143b7fe1ccaace434e03b5959c9117bf9c5 commit 14d6a086f6b91238873d3363f840a91b3aa062de commit 7482a65664c16cc88eb84d2b545a1fed887378a1 commit 7cd6bb82ad96fda0021421fed8750a522dff2aa0 commit dc6934d5ae007ad53c88c3e0b9685160a39ba896 commit 62a4ddcb79e073465f21c5cf84d80a2f22820c39 commit afd5cb3907eaf43e4ca88c162b92143551f0323e commit d976521a995a817007ae3f471ac22b93b1bd39f7 commit 0dc987b699ce4266450d407d6d79d41eab88c5d0 commit 009a3a52791f31c57d755a73f6bc66fbdd8bd76c commit f4f9b827d76d2fa23c2a2359b4e9fb417deec61a commit ab8529b0cdb271d9b222cbbddb2641f3fca5df8f commit 543faf57ee0ef6feb1ef60122c0abb9097083ded commit ceb180361e3851007547c55035cd1de03f108f75 commit f12d07d6e9f22bbe65d158de1435ec515acfb50a commit 64e06652e348f0725368853688d3c15784549fd2 commit 9ce07d94c9f80e1b33f5f6bc2c5a27f6cc56a6dc commit e0a9f1fe206a66c3507ff8b7da56f9d1d1dbb9c4 commit 7ac20b3a6a6bf1181a6f9d76c4d36b2395ae8922 commit 876271118aa41097d035c84f99648746b4a125f3 commit 373269ae6f90bbbe945abde4c0811a991a27901a commit 421f5410965dbc65b7bf7d2b2323203920ad370c commit 3d313f09f31490cec9d5251b59adeb6542c944cc commit fa3dab48defe1ae2f5a5fb56df5f5931fb3e45c8 commit 508f748b03949143ccda614b900e3f7d842251e5 commit ff83e6e7ab042e1f6f4345be1837d08c41b0a49d commit e77a541f5dea0a2ff9d6a40dcda9b284e1e736fe commit a957995618a8afe3efa2b5746c0a954bbd450882 commit 10a9035c36d00586ad4bdb838f8800be951db8d2 commit 50ef0cacc43c5b01d5d1d65f08af33513b07e2c7 commit f64e6e0b6afe047cb0d34a5369597fe0d188e94d commit 5027605aedec363b3209c17d382efe5e29211594 commit 7fc494f9cf8ec7497d4aab26a3b19deceab0fe31 commit 366e817e83e4d795fe3f6e7379bfe79d49cac89b commit 805ada63ba0567b15d10d40419bcc5e6f0b461e6 commit 232b95ba4e83ca0a77f19fc772ccc6581051e5cc commit 5e8034364c22050b8564060e79947d094a65d45e commit d54cda74a9a27d6a18c6b670f7299114272a5e50 commit f9bbc1c8449a51a049a1d6d436eb973b00b6cd7a commit d3a453416270f5c7f1bf409597d702a2230e5a6c commit e9fcc60ddd29994a8b2a276ee9b454d7cd449194 commit 803481d869a4c49337c9ae40197c668e365a6fcd commit 8c56d5105747189c86e6df975257580acb2dd223 commit d9e74da2f1fc42926c6ace1bc47a700f88ada696 commit c974f755372bceda2c3cdc31b4b27dd772172203 commit 91c2cbf9b6a6779ee428955fb202ae66c750aaaf commit db475c11cd592d626749c9ccd98f12c05f29ed88 commit 103f06fd478106fbc2394030599db5c852b7fa32 commit 9126ef85f2b8654060929c5b6a876376702d1017 commit 25ba9429e0f40d3b725781e70d2d6b9ce47a0df4 commit 831463667b5f4f1e5bce9c3b94e9e794d2bc8923 commit 2a9e9daf75231c2f577209af5ec62aecdf7ca7af commit b00de0e237da32793dce221119c3120b8276f4ec commit e5d6eeead88e40282cb6dff38f8effd6341561b1 commit 5171660cbb14f3359e8a8bf7523afb0789fe1bcd commit 7283f862bd991c8657e9bf1c02db772fcf018f13 commit ae25885bdf59fde40726863c57fd20e4a0642183 commit d6b9af1097fefa7e6509a4b2f03af45f9eaddae9 commit dc2cdd17d1fe25c8d25c306a90cfc9ff17a7ca4f commit 016a14beac6d407c9a51f0b92d1e586a00bfc345 commit 138c2fca6f408f397ea8fbbbf33203f244d96e01 commit 84509eede6203bc5ab43ce0361a6ae17e2a17152 commit 8f456104915f0f991a2ce059a640b0a6f807e2cd commit 8524bb67145d8a2b495fabcd4b5643010ea43353 commit 7d8097073caa334ed6187a964645335324231e01 commit 3cdcdc34f35eb4616f7e5954cbdcd3390da8eae4 commit 04155815dbb8320ecd17dd54e85c9a5ae5d63bb9 commit 12d74553726675b5c991251f349422a24c575e56 commit c92df6aa397b5a37cf06004a219b4fdf26234dd6 commit 5ba584ec1101cd63081ba7c228849acef962f6b9 commit d5a680548eddca0e2e01fb84b85c1f7687355e21 commit 2e25ae522164e8586520ef20bddbb41c97b0057a commit e97f91e8d39f8f5cff071d847c2d192904e35d0b commit 95be40c875fc848d99f231e77b341e7ab5d8125d commit f7fb92cd2e39357f14846d69ae0e1d8692371f82 commit 46a3b1125308f8f90a065eeecfafd2a96b01a36c commit 7307e91bfcd0e3f123aab01b30557f93923b6d73 commit bcb9aa45d5a0e11ef91245330c53cde214d15e8d commit 59bcdb564b3bac3e86cc274e5dec05d4647ce47f commit 0667429ce68e0b08f9f1fec8fd0b1f57228f605e commit 58eaa6b3fb636072a4f19e6b6c76bbf564e95b95 commit c83375699fc648f94787d00bc615e370cf8f5fa2 commit 9569ff1a188fe48b46eb1ac2ae4543c271e0d4c2 commit 882d90310f04f3f90753653b8787fb4d309fbbdf commit 01cf387b1c7f60527c91627528370f463bcb84f3 commit d7f0c8aff01340c2bed48f1e712a7f17c31b3db9 commit 1d3182006cf6eea26d0cd752f8042c3cae43139b commit ca0cb8959f7b84742c3dd612f5b044788cddfcc7 commit fe4e9ff9873758ad07e6f7b3088ae3a9dd3ff1b3 commit 5c4904ac34b76eb58abc15a52603ee59bf8be85d commit dd70748eda3f63217d5284f48651239a9721245e commit 9e225fb9e636b31b97e9d35324c2f9e43ee0aab4 commit 45ecaea738830b9d521c93520c8f201359dcbd95 commit 9ae55f030dc523fc4dc6069557e4a887ea815453 commit 1c4dae3e4639540fb567e570cc56a3c292afb6fe commit 8c07f33ea096a1d25fcefa4e904ce50aa2358876 commit 94dfc73e7cf4a31da66b8843f0b9283ddd6b8381 commit 8587f3732b37a39de205d8c42f5448dbe6aa6b55 commit 1796c0255bae9d3d4528b8b3916182b2bc4e1e71 commit 50ca65b44e50e66e370f34e83a1d04a41bbffb70 commit 5bdaaf4fbf85d47d08f76f41108d8d3bbdf15f1c commit 9db35bb349a0ef32184ab68f79cc36026be4585d commit a06968563775181690125091f470a8655742dcbf commit 79398d24da4c9294285bdedf67018ff09fe97bdc commit 0b58162e1207db5052d1fadd5a16eeb90720d765 commit d193b12b2fa6dc316e3ee8871b4ec05992bcb7b1 commit 7bb97c5a39ecebc8ff5db1491fe4e7a8129f93d5 commit 70f1fcbc83582419fd753701c5abe674e05db785 commit 01752681f1ee5febc9dd2da23f5dc0289ea125a6 commit 2639d3e44f9c15b3f29f79943ed58f769faeaef2 commit 46d44516aa6e142fd70287e829e3bbad0d2ed35b commit 7268f0a9e842c52fa73b9f5afc1bebcf9f7d48b7 commit ff15cea338d2c78e0086d55c8a9dd637a5dd3ccc commit c5cb2cdf23ceefd9ef319d6c0d6ac294dfe356b6 commit 5f278dbd540b7548bc5193552e6d478255c14c2d commit 6fb5ee7cec06266a29f25ecc01a23b9d107f64e1 commit 6e9c65f71eddef88f14b7210bbf30e6ce2409b87 commit 02b16fbc56e97b295239c83e43f186c191e42dd3 commit a819451eda6df8f8445f9c7b093b86c4d1919b62 commit f999b37eefd7f1d59bece1d94fa0dbee2f2d62d6 commit 6aa145bc943d34bf05f2bc24ea3aa36d70470f1d commit b71c0aaab9ef1054155a075cf5e8a1db7b37ca5f commit 964893d3caff6bc39f6cf5cb7d90fd78a810c535 commit 3d1ab66e043f2a143e4d93242de7710a9c98c829 commit 89f4b4c53a7c12d2feec0ecaa15b0493b2bd61e6 commit 18e3c1d5d4cf6bd30cf1f1bc10ffac7a05a6719d commit b1dee9527e654207c0980023fadabdd12d3dba80 commit e61f294c7e8da94bb1c9d66f2cdcebfa2dc535a2 commit 0f36d074aeb51a20508a65861d1518dbc231a1fc commit 87a7d5350c67aca513dc0a80f696d5583430d594 commit 3019a8d7c1891ceea55820ee0f7bb36192181aa4 commit 90d5fd317c745a80019ed7f12a1933ce6116e0e4 commit 6a4a1f6054318cd3590562668798304b4351ef36 commit cff35798fad565b5f8bbf4ef84ac698270dcaf64 commit 7d4705b33cb84bfbba04de153d4f5e83041ac393 commit adc0e6ab0df390907228abb76c6bf82382089af1 commit cf6067290034b9ebbe4c39733b1a4acc94876c26 commit 395ece6f14124c2245e4b7fe74932514f999faa1 commit d7cfea332cca483ccd3970ed4de73ed892643e51 commit 163a5a58437062ce4dbef2aab6de4d784043bcf5 commit e0f1e65b836c42741288a367eab565167a408b59 commit acac270d09828edda2d530d255ee75ceb87583ec commit c7f21978fa6aafaf7ad37155c7d3a217dc3d16b0 commit 46ae2af9a8aa168cbad69f21bb1426771339ac9a commit 414e9f520e897818302a6b1729aa2dad8cc928ca commit 3db7f894549a54dd6f8dfb7fe213ede83249bb94 commit 971e4a9781742aaad1587e25fd5582b2dd595ef8 commit 0d8928a94ba18205cc7b41793af333e6731e9d76 commit 071ebbb0d4826ce7c47953b955a522f503dcedfb commit 202804b9705ce26788c443a54aec47eae20f4596 commit 780f97cec866e1ec6967c66c2a1f68b8aa1e3f23 commit c5da61cf5bab30059f22ea368702c445ee87171a commit f929217499cf54a30be995aae65e9951ba079c90 commit c6a3d73592ae20f2f6306f823aa5121c83c88223 commit 3f4309cbdc8496373875cfce67d7b5dba87c3ccb commit 141f733bb3abb000d3949c3b2f119751fe93b0c0 commit be4e366602303615cecb7636075bb18b0d3cc33d commit 1dbd07e088673dbf0e10f4bcfa17f971fd870195 commit 525e93f6317a08a03cc42847b3e075c92a382c99 commit d42a738e5ae5a73212a83414648a4fae524117f3 commit 71b1669ea9bd962d419aac41bc179e09e504327f commit 938d2fd17d173d0489b1bc96b87a1dd93954dc28 commit 11f01dcf3b32d01982d99df4492feef4332cf0b3 commit bfe53be268afd2248d1e28b4520361693c1c0fce commit efeb3caf4341357a7f4745c0da643b13200f0b9f commit eb1c535f0d69e3ec7679d4d714bb2a9765ceda69 commit 5cd561688b3e8a248fdbb37a1b10801b06736865 commit 3b05c960788439dbb47d0e62335f23869696b079 commit 8618b8489ba6ecc025be033d0fa87c0db53f5211 commit a913bde810fc464da6f12f3f19f3483034cc7e16 commit 3461b040a90d723c93c9d1c7c11e3464f5cadc0e commit 170a41e9bc07618d164f11b5154b449e9c24973b commit a6cc3c72aa0e8fb10b695c1a0c4ef07a66b3c2b0 commit e33c267ab70de4249d22d7eab1cc7d68a889bac2 commit 1926a6b75954fc1a8b44d10bd0c67db957b78cf7 commit 21779cc21c732c5eff8ea1624be6590450baa30f commit 1981c35bf7533d70f295b184bbb638d280fe2f36 commit 207d2073c648614dabcb06863d990f0c2a32c4e9 commit 73289afe03619bac585b69f563d0bb9a52e67722 commit 72bd9ea389c70ac948f48d20c0e4ae70c0153940 commit a204f9743b6808ca658c1bacedb34bf4c7e6f800 commit cfb979f71736361ec564d47d0a41f07e09983e32 commit 4bdb9d6501763e83bacbf26846754c567773a1fb commit cbe07c982dbd206defa10ba539e046767179edb3 commit 26093ce14b75bb0c4f0088abf2e11c351abc18c3 commit e0e146d5567317d6ba7d0169bed55d1d9ea05a61 commit e72f03f4bdc4f3a251343cf343bce28c28cbac2a commit 85f4bc0c333ceed24cbc9f69a2a77fab1ae3d4d1 commit 90f33674a0756a6f0907b8f6350cec3f7be4032c commit 64a30aaf0b0d9dcd52af526652937c1350a948dc commit 88ef4c5bb36bf60b317b74d8652c7766c9272a7e commit 2b2b3a751b29a09942a15bc0c4fed940b7ce1857 commit 740ccea3d36732346387ce882c50a7e4c3599316 commit 15360d7fc35b6b0f46240659a129c9255345a41d commit 7e053bab30e3a97bb681cec207a87413a024fc22 commit bbb6e5ae7ccfed7be06b5e8f99602100d4251d5f commit 00fa7f031dd4b885175da390e24cb02f6a45977e commit 48e03843f99857a561f25fb8e583c9a7dee5b81f commit a5eeb70de411ef8b1cf5d97806ed6769b84be872 commit 97ca308925a50aa80711ccfaf814fa3898374862 commit 82a562ab5f0a918ef905c29c759b4f0c788754d3 commit e73b386e75586f28b9b58641938ae0feb340bca0 commit 6366b00346c0fe8ae95d91eed3dd2d04f77729e7 commit 0147064588253b9c07766bd6292a6159475c2790 commit fff7eb56b376cadc58af14df286009086cc4d80f commit b3859b16d27fa58f99ad6221ea427dac7d751e70 commit 7c50a3e99a2eab5b3a9f273ea9e40ce919a3a3e2 commit bc19909f19fdc8253d720d11c948935786fbfa08 commit 0c7ea6f824345ffbb3b4ef880c7c56170365bc1e commit 1daf740137275aa56858ea1cd194eb3c1f6da5a0 commit 22676bc500c27d987a0b42cbe162aebf783f1c38 commit 8a077d9caa3a274de36ee2fe7b608041f5690343 commit 4984dcdc1f78529a0c699c1931971b7bc5e32a04 commit f64f3a72835fc63069a87c2811b61c9a73033c72 commit e9a7d236eaaeb1cdfe20e583e2e1899b26d7469c commit 9a714dcf1039d1142a1c3ad81db09d2706230e00 commit 8bc3812d0b33c214c365fff5dfb65397ad6aaf19 commit c1127df9515ca781940927deffc5ae657ed73a5f commit 09de5cd2c170b19e04e37439a712da52a0535015 commit 3b779044c81754f094ee88afe431d839e3a74aa0 commit b278b738c3be4f383796d09ef8fb6e49fee2091f commit 7acd7ab0297a37e44df928378f53d4260b25fd2b commit 427a60c1c30e1c0e9d0800a63df51985aaf3a26a commit 81990c3c07905af1e316f048a1ff456b2be224ad commit 068ab0cdc1a97628f7007b568adadc2a1fb08384 commit a00a3cef25a969bef8cce011c34b76071756dd05 commit 3e211f23aa1e1a3223edb64c4bc25cae28a1e3ae commit c3c483391bb23e9bb8d8a51e54fefcf508b1cce3 commit edadd6fc28b24dd5806dafc4b38633494ff423e6 commit eb08accdd8d966e4027f8ba52f43faffa3e6dcbd commit 61e419f651a65ebe01658b46bfc317896cac0eda commit fd3bc691fc7b4e553f49bc79f86b515ce2638141 commit 2e02ceb73ff87193618a21c2fe165632f52b9b9d commit 89e2b4373ae5215f5c5d1b7726549950daa77018 commit fc25fd602b1e101a45650475a8d2f00d7bb8e971 commit e660916b7f4dd3f17e5f28707213b66c1553d83b commit aa1965973cc734bd61294b675ac9763cddcac0ed commit dfb02eb6bdf84697dbadd69a7df12db612ce4ed0 commit a57e7345cac12ccdf883f9825523470850166635 commit 47a4fb46797016228198e63a7aa679841f80889c commit 90f5514bcc1a40de3391da552984717fb83b16f8 commit 819da60d77c9f0ec9f069cb27952501562a2e17a commit d8b599bf625d1d818fdbb322a272fd2a5ea32e38 commit ca1dc50fd5cfd7420faa46183f84bc203fae156a commit f24d1d45084155c59a135506a37bc4db10703fe6 commit 3d9c653cf635849d0c24a1ab17c2752a19f4ded8 commit b94a1a207de5e06a55b5a8259073fd8d1637f093 commit 027c38b4121e7d9ae43b2fa21b35582d1aef2a05 commit fce7bf30d3309ea325a7ec452456f8f7c079f622 commit 7d261c50d9c1adb70f6ac2e26edbc64c774c21ca commit 371409df9236bd1abedc143e76fdd7080cba3ba3 commit 1f374171fd345aaad9fcb30ac3acd255b5cd2076 commit f72fc9bd226979c272d6f829a3c60c3d9e8dc969 commit b83c9e3dd5b5dabc507e79c3f03e700a20b2a4ee commit 30ef0808e61850ec9dd105fe0a21f7f9a7c69324 commit 34ce1a6a29db41d5d4bffbab0872b1e1876cb4b8 commit 75072128d704576c39b3ec36b2cb84af316d88d2 commit 9da2902609f7519c48eda84f953f72fee53f2b71 commit cc3cb791f19ad0c4f951f38c98aa513b042ab329 commit 11d526f1972f486aa222fdfba751d2f0249c002a commit bdd0d7e290e0e4c8f7545fff89770abbd22bd51a commit 8c96e566d95aaad910a54aa0b21b7753eb615a00 commit 2fec539112e89255b6a47f566e21d99937fada7b commit ca437b45ac6d4baac348303920dae0fdee68e937 commit c59d73d43fce92e79eddc047e1961054f1284384 commit 9a92732f040ae3aeac017d0e80501cad1127a13d commit dbeb232726871352fc3e688ff5b02897f8cb0dc7 commit bcf9b296627c6b832abd388b5364262853430262 commit 7835303982d11ed700ce6bc530303272bfa8562f commit 5531786537e4fcd82a221b0bd01ce375942b3854 commit 9a23fcf79dc647627b3780284a156cc6e7bbd7c4 commit c028d66e6ec471fc24f70204768f43594a6a8b4a commit 872642edaf4228040473349ae0ee872264fa67f7 commit 35ba8850b673050b71b17c1421079031f4fda319 commit bc99f1209f19fefa3ee11e77464ccfae541f4291 commit 344feb7ccf764756937cfd74fa4ac5caba069c99 commit 6db5e0c8692e590734a7ec7455365d9cbaa15ef1 commit b45b4f880fb660c4bd4794a2ca3950c4570e12c6 commit 737dad0b5d609f464cae73292de646d3d016ec73 commit 88c775bbebc9c5b080d3cbbdef73a31eaead9e5b commit b7580e669ca0d624b122455058aa6fe62c0fef44 commit ac9257f0f50871b7459dac48a5c11bc7b2094245 commit 636774860a6240dcb148f9a08d333a697f3c74f3 commit 14eb72ff580de169212bfc5222499febd312a252 commit 8a076bbcc1278c6256c57915bc193890a6432c6d commit 90bb21cb692ead906738d314f3dcdc432aaee015 commit 149f6d1a6035a7aa6595ac6eeb9c8f566b2103cd commit 9dfc3ee1b0f22d9415c9b7c316447d47d4a702d1 commit 922e7ee31defe461d8638f1277f0c8215c0707e6 commit e2facd575fdf13b718f6c833ed546467a3e6e3ba commit 59a1e9ed1b406b1ae7cbbc612ce00d459987d028 commit 80fb575678b488b920cd9100939b60d480101907 commit 50e8ca0b675add8eb0e95938448a4a0f9fb0b6dd commit 33da97894758737895e90c909f16786052680ef4 commit 1ea7fe77c0db843d8e5f96ff8535dfc941e88694 commit c877bed82e1017c102c137d432933ccbba92c119 commit e23a5e14aa278858c2e3d81ec34e83aa9a4177c5 commit d9e019bb396fc9448b104a6f4cdb7acf8af02854 commit 911dd554a129081f056417a30054f24ef6818e3d commit c4feba47aad55aca90d9a2b104c0345ca6f93712 commit 61c1f340bc809a1ca1e3c8794207a91cde1a7c78 commit 4ddf8d7dedb881c6638850f1b74ff1f9967c89b7 commit 6d7291843ec5008a9ff1c011d342679fa9bfe4b9 commit 0196cc65f91710e30d45cea78d75fd616d705002 commit 66ff4e4ed471fdfa9ae4c49a0abcf5d5043ca65e commit 097d56cdcd77639bce7e205adaa22b6f5e7d93a6 commit 40184ece92ebc5adfdba84554bffb60ef0e37029 commit 7ba01b504c16ae64a8faa5f5ee9a809d424cdf0e commit ea0b20d3bd96f9ce2a1e9d886175411c05dcb179 commit 89ed996b888faaf11c69bb4cbc19f21475c9050e commit 9306b2b2dfce6931241ef804783692cee526599c commit 57b9f3384c64e37bbdad7f127625ac3733d11e5c commit 017860c909b03fa687d29a1ca46390ba9a007b2a commit c4e85551198ea894ac29da1a81becfde65c11f78 commit 236124d1167bcc539432b4f6fc19ce1fa015e2ad commit a84e43b81e45b3da19e51e1e9426ba9e4d0fd1bc commit c0ff84cb58faff9fdb8d955c6e1e07fd75d88c16 commit 58e969b60db0f5ca9abf0a8df28086efd601f38c commit f1549c09c520877be211d483d3c6f4e7f77d2588 commit 0fe6906203d02d050e86b3398219df7bd9e8fe47 commit b7320117b3d36fd6fe542bdac5f7af0a83bea23a commit 2d7a1f71837c0922645143cc270b5a4834595544 commit 86ef6eae0820aa5393983c38c1c5ff9510ca9118 commit af019bef6d6fda044c8db232c97d6be2fb64c741 commit 1f969d28cdbf99c28eb08ef0a0017713d6909347 commit 78486da8ceb2d5d833a69fd695bb9f5a941b73f6 commit 3d4de925356177dad0fb5869d1ea537cfa033009 commit 15c735e7990fdabb466a3341b6b2dfefd987127e commit 76611a84f235126f3258fbe4a25d85ab326ad6bd commit e5028e9fd3bc7c6b916568e5218f5fca5f0d0a75 commit 2a93292fb7860b51550d1222c151de1a9fdc15da commit 652284d6db17f3c7810495fda059efdd84b61fde commit ff613f7ba7105b17dbf251ca298d1de9124a9875 commit 0a94608f0f7de9b1135ffea3546afe68eafef57f commit 84900aeecefb281964c0ba23111be4809477124e commit cb50813998b5aed924323b1b46471e8c60b26692 commit 1e866f1fe528bc0158cdcd589053753032bdb52c commit 3fb0fdd7758d3b850db82899f532dc71f6909c02 commit 43195162fbf54b2cc35efe295d2ed072d2bd4048 commit a0d10c437c1c9859d24a16b90abf85120603b4ff commit a5e4a53818ad585416a214b894fdf568443d5293 commit a91d1a17cd341548fd9535e33c331a2756acdfae commit 17cd10a44a8962860ff4ba351b2a290e752dbbde commit f5ba14043621f4afdf3ad5f92ee2d8dbebbe4340 commit cc79950bf0904f58e651747c17987270f1931c29 commit 8955ff11f56e1596e9f80ff6fa8c48e53047654c commit 806b52287a96bf5812a6be008d24add3f18952cc commit d5c6909e74606870bb59b962200cf75eb25d6d0b commit 3cffeffe051a961417bc26f2053bced4cff83119 commit 41529d79ce1655bd7463c01d9813d0abb6fb08a4 commit 5439c41a80c00e993d18d1cd4407a6a82b35d963 commit ee7b62e127c8cc6db24f83e5e116357649f6e41f commit cc35e75273fcf4fb4f12f9d8fd979be7aa808041 commit e850f6b13a85b451411bb74a526bc08706129e8c commit b7be3ae759160aa3355ebeb0583f67fb9bda4dae commit 4fa05a67b558d2cb3acd2bb299b91220d405ca5e commit 7d09c7606346db9a48b62b4e02454a6b8f323043 commit ca0367ca5d9216644b41f86348d6661f8d9e32d8 commit 53c26181950ddc3c8ace3c0939c89e9c4d8deeb9 commit c96cfaf8fc02d4bb70727dfa7ce7841a3cff9be2 commit 60693e3a38903e39e4fac0a9849b698fc36228bd commit 891ce1c9623f36194587d02774ac3d8c30c3ca72 commit 3890f749c590a5a33f0034362be3304b69ae6d65 commit 6f2c8d5f16594a13295d153245e0bb8166db7ac9 commit 29a249d72d31cde3cd24d43354b40019efdb48b1 commit c9eb2d427c1c428e4f4e29f1e635b9a83236c015 commit 868941b14441282ba08761b770fc6cad69d5bdb7 commit c83dee9b639469b6563a281f39deb99311f16bc4 commit 0b15205c7325dc20b7da0068307670d222d66949 commit f6a3f66063ca39e7ee5fcee59e889c5ec4de9dc0 commit 75510fac07cdde23c9217c8299b6cd64c689fb2b commit e4b1edf48fa37cf4f5ca403e384731fe28d13691 commit 604d3a3f0dca0ef0ab0322f5e7af8c70c5ddb6d4 commit 748262eb400e809aa13e3485f4983c3db3d0ebb3 commit 49062ee374f7a47443dac7e255bd419861de5b43 commit 4c33e5179ff1a09cdfba38fa4fd260ae6735d3bb commit 912db6a58738e8be502838eb6a88f207ba356cd7 commit 98a90f1f0fdd112b85b16ef6ceee69f319ab9311 commit 958afce98c2c86732483458c03540d3c6ef45254 commit 3876a8b5e241081b2a519f848a65c00d8e6cd124 commit 606ee059f85a9aabb0242cbc72852572a3c40432 commit 133dc89c640f965c2736e70d8dec0699d763850d commit 2d04559e0660cf503d4e46cfbd7421d0b6156aa1 commit 50fe04d46aab77cf8fc3d48fbc38d872d181a849 commit f746556aa9724d740c44861db0ac005ae50e1332 commit 75a9ad8c1b7960794c16182fd90852918ecdc0a6 commit 9c913f38032e873758d1b13fce720a0c2cbbfcb7 commit 5877b7ddbc2502a7ddbc07970cf5c15972c22de4 commit a53bc32182d7a2a934ca994239396fba21161c8e commit 4528c18605654bea022d294c9ba2e93600d05a94 commit ce4b4657ff18925c315855aa290e93c5fa652d96 commit 5df79aeb6e0890d6f5fd6e12c7ad238a1617b210 commit 86bd6706c404ea703c11071d8b600d46bb98873c commit dc2b9c70ebca8e5661d33a15ed2b99d4510e90be commit 40835624efcde7f984cb859035b95b5a526d1a9f commit fb3e8ed0438347c63650850c011c99deb59d7e62 commit 615dc75fa6a7fc6cf029b01cdfc9d4b78919e71c commit 8a9899c95d1cd709d441960ca325c6c8184978bb commit 0bf95a1ebd48866ad1438454061782d4d47765f7 commit 044b5cb9e8bfe4f006546fd98148e95489a6e803 commit aec4706b0e70e0cab2d0650b63cf2ddc1b154352 commit c8a58ce18ca36b62749e326411176554462a5e2c commit 8b076fa7c5befd1d3e1d892ae466f5334e4c6c99 commit 25f7cde8bad9fe5943851d3d602e9fddb7977961 commit 5d945cbcd4b16a29d6470a80dfb19738f9a4319f commit cb6b81b21bd9cf09d72b7fe711be1b55001eb166 commit 417c1c1963549e9a48b83ada59d90258e38c6594 commit e8f90717ed3b58e81c480b3aa38e641c0da5a456 commit 2c9e8c01109fb65a63b6830adeb5d7c79ccf26d6 commit 473683a03495a5ed9c75a02c7497f32d6cf92c7a commit e6c64182ed946f1cb65799de9ee75f8bcc42b2c6 commit 074293dd9f61f11898f1f6e01f1560fd4c474025 commit a983d263186996002ecafc72f9a0dc5a3a2bfd6f commit 44b0c964201e1e2fbfcdab4472f9260048befbaa commit 557f9100c74cfa033488563240f567466613cefa commit d3e19f76121178420c3efc9688adfd5a448996e0 commit 4f5a17b221cc48d66cce13fe1531ca8fc99078b9 commit 1cccdfe21eb6b8dd4371378b4b61223eb37f1ef7 commit 54c3e9493cd502d63ff3643fa70b5f98b3201846 commit 869618c3440227f848ff9ac55aa64d523a60476e commit fbcc38811fcb47335899a3776b4fd5670db4e228 commit 4686177f7d2140cdd9d031702c2b53ac4c89340a commit 7b5b0d196c2e6cad87cb1e3ce285c7885f2bd796 commit 660f46e16c4b8a34978012a9f10a32a16db3e98f commit f3cd57e499e6904b7e356d11bd33d617341b3f24 commit 869b10ac8d2300327f554d83f4dbab041bf27d49 commit 4d37fd51b4440cf6a02942c0a169ee18a902fb5b commit c19a23fadd279f433424b4d6436fe4ab0020e20c commit 37edc99979b717312e60cf3463ab756f5a3d6de6 commit f4b4e41a2e05270cd90c5817ab514ace95555874 commit 26749aa8d1261bd6f2db9d019276d4277dde7df8 commit 041a11095abdd52b38f1ea1355357ecd2b66c0e2 commit af14e7c2fc9b60af70b410a7dace116eaa5e4e65 commit 465576ca481caa9cf18550652efdc6b103701c68 commit f7bacd97af853a9bba9bb8d1baa12f997e60122f commit 792a0cdde34d417bc2c8266d8015c5fd58d44a0d commit 8813381a62e1f1703f8fbeccc5fa4fcc988be882 commit ccc4200cfb2518fea042b16f090962b07314439b commit 25e751642a38204da189e0e239055702caeb461c commit 34a65beccdea16a12d862e94d004ccf00de8cb3b commit de0246ee9fc95f1072a0d26ec4025a3545f159b8 commit 25dfc8fab47fb0d7231154e07e20b5fc0221f96e commit 326f0672153e0ff5b19f0ff9d6b5f75a64a9c2b5 commit 42c7de9622b2ec64f7c15c336b75f8933ea7545c commit 2207efdd8388bd300a0051b1775705d890abd306 commit 44998fbdcdc39253cb10293c3c27dabc040ad7e8 commit 34a1b0f90e33b00b431d6e8636b787111c6c29d5 commit 8f5bb69dd453666ff949079443ebce24381e163c commit 4cef2269318cdf5beb70c257f7aaba267f2157ae commit 0339530d8879cbd560cd3d3de5138dc797744274 commit 5b4ee98713c7b42e270835fea08c3b6977b48e7e commit a4f8f294fe99a678ce0a50d649732440c41742b7 commit 4e14e0fc9f0e47d9d3d39b6f92724f2038ee6e25 commit f7907f6db81ca08f4f8bd9245b8fecd49bc82f6e commit 197485c695430ab03d9f4a96aab4d4f76787f7c9 commit 352b25a770712a954b1def1b8c6429b0825ee0b3 commit 9a1dadb6d33173427b6f6c89ab1ddd0eca636afb commit 39a6f3fe98ff03baab364acfec69a6f9803ce22c commit ca0273ab447853c014983951e2183991f8dbc7b9 commit 1a3408259bfd5a383b3c7aa7c309c9fb81e35ce0 commit ddd0fa1f47edd794736e70d165341a5c4ff78e47 commit 5085e0361f5a3675fc0d0919f7b69aded453ceb7 commit 77299956e8867a4cc19c5fd41b797c5152aad1dd commit 1c05d9e53d2cfad1f99d9087a8ad24da4ebc0905 commit 0593ad215359d51514c1e6c81ce28ea598efed6b commit 74097f9fd2f5ebdae04fcba59da345386415cbf3 commit 7acc487ab57e076c823b2b7559aa9e3997962ca2 commit bac4b41d917a1d999308bb1e779f8c3b39c19f67 commit c3b3f9ba25e6cbe59673505fbc5fff6c4cda0ef7 commit 3c3abac60117cfd09460980d9a14c253b37f7b00 commit 86e4863e67a9bd1e257f162f3d740ebb61206c91 commit 9dd4545f65679042273a93054ec3bb665ecf7366 commit 44abdd1646e1fbfb781972c0bffc90b4eb3e87b3 commit 34a255e67615995f729254307a0581c143e03752 commit 3616d49da5dab635c4bb0eeb183b61df72cd0757 commit 4c5aa594928f97593502a66d5a9075f5f5dd064b commit 8de297dc046c180651c0500f8611663ae1c3828a commit 44584b417a698bfaac0c2577e7cc4015ea7359ce commit 2ce0b2186c057a54a4d980b296bd1659d0091716 commit 319568d75f5f91cd4f362b26e65af2a4437c64bf commit a7cefb0b40dcfdafedc54a3ba659327d0336956d commit eb54e014367e1700fa5b94e4c788520081a70661 commit 4a21ab548a7ac19b15aba9aa8df39972ed82f4ad commit f46e3f28f89b893685ec9204405677dac410d8ad commit 72bb503097e79113503dc6d1d49c4063ef97970a commit ee4a26b4ea029aeed749c6560ed9eba224337b04 commit a4f1b04216023ff0f4cd89328b59ee6890248130 commit 6a7379f196230cfa35335ec627e0c0e08da6a8b8 commit 05674cc9ea97079ad7c819628e3e56b046c2f497 commit bdf4473394deffc94c16c0502e73f2daabbdc1d0 commit 40b31e5355ba8c4f7e58f1c458bbe46763dca541 commit cb849b4dc73d414149fea96330cdf96a82919fc9 commit 1c5a2fa97b91d37375f4fc8aeb37c9456c93c828 commit 0d60f2b47d8312d6a88454a373990579624edbde commit 5ade1b951dec63a81b23c2ff75c5b4c191977620 commit b5e924bd7cce823e604f9b7834fac846a910331c commit 1f5dcb7365e4e0a8a6fca44352218ccc6f41a8b9 commit 81f776b670a0eb17bf9cfbfd2df32f66a34bc453 commit 4074f96d0f2db2fcbd8e223aebe60ca445b8aeae commit e216431b63aef8b7d9cf6e59aea39582d48b1808 commit 6290ba4c1656ce2374996b2ed11c3997ebbc4af5 commit 493af96d61b1361a44d016057e0fc6e5d4c92fc7 commit ffccfdbab1056954fd400d2864a1c1b38915c143 commit 3facca7489be2d42c6256350dae72c342a47d7e5 commit b1babe8623f91a71a5acc34eb323c718e0413b74 commit c13423c63f73ee2f9807fdb2a3a7e647421a8114 commit d58715704c5c7d82d7194540780fb335ab337da0 commit 1b54a0121dba12af268fb75c413feabdb9f573d4 commit 7786fb366e598e984ee9307616b0c72979bd191c commit 412dfcf34e0695fa1714ad422b2a5d0ed1406437 commit 0407b33fadcd7a5d31ba3c473cef95b2b418d8c4 commit 92fba5d3c8f5b757c4e3fdc89afe76a8f6c4da68 commit 168c02994399f2714bc6c73f85b7ce4d827f97aa commit acbe9ecfb7fb14db868ddbeda8f43e623026316b commit 3517e6b6fee05b6259ca21741cbe5d7bf68aa672 commit 1c6aab75ece7c1d450e4561cb2263403eeb7ae2f commit 79c453af55d9f1e85b906211ea4051364d28dcb4 commit 9a4514fbffda6083d9f7fba4882142686783cfe4 commit 7bcf89eed48f3fba8d0e2c19236e7dc547b6e037 commit 889fcbe949bdd8470931a90b91f273ca18c510c1 commit 95983aea80038539ebc70e41e73e9bb4eabd1a92 commit 32dd9236698bcd2ffdb69954b167a851fd50182a commit a6fd8f936402c3bcc5ac6aed9cca8e73b5ca08f7 commit 1b255f1ccc883256e23db279ea164273ea0f7462 commit dfc4005f8c172eea359f9db08c3b2b0ff0153699 commit ee8b1ef9a6b089abf7a9c7d094b6e93fa05f15b9 commit 2bc7ea71a73747a77e7f83bc085b0d2393235410 commit aa316247c726d96f0bc205413c54ab49622ca737 commit 8585732baa40455fbae9575d0c8316f4b0cf68f5 commit 1f83db6be37c53f6d395a41ee2602e3280ee60c2 commit 79b2c54f19110235041d8f1250e3c3694047a902 commit 4959e609de1ed4199f33124a88a4c9ab95f5cd9a commit 5640cb8921c9aff1270557482237e06af00c388b commit 8b3120dfc192a4c61f73a0798755713ba2d3eb8a commit 3f5a3881f1e26aa5e3ae34e34e439edce291ef5a commit fcac1ac7f1e3fb877aad51c134ff2776bd24f9d6 commit ed63b7cf2d6ebc01a765be31630c3e4a64f7f095 commit 84e2fd649482435c3e12d9099784976ce8bea1e2 commit 203dc777865621b0c7f8f5b19ec18e572730278c commit 05381583a1d0c38cd2c4907ee93ec624250b8912 commit 980e09e8b74c26baa32f0d65d272ecb1401606c9 commit afb185008d40930895a7f7465a9661afeac0b84b commit e3b2bbb33e26d0a0327f878782632ec35cf96a72 commit 9ced2e492ba9436524a2beed27df730042cbcc3e commit fbad6c418e1e63a29c83e8b56a3636915406a9b7 commit 292956cfd9d38835f95021445525b35502837ff7 commit 64f857b5479a7ce2eaa56bef5f459da5542ad90d commit 931fa55b2fac18f226622a95e42bc968bb852cd8 commit 4557489e0370ac0e9f1f5f100f300e9278be0733 commit 1422ca01be6a816ec5a445a6fdce00342adcc5f8 commit 1be3188a6dda544dd4d78503eba5f5a77462b348 commit 66bd94debe4aca171bd0220de7af3feee6542d8a commit e3b0079be8f0a2ccb533f7e38757b27ab6b6018c commit 06ac561fb0edf868f7b292fb4a3c8ffbbb1e14bb commit f9af3c16bfe19d145cf0588afa06d7f1070cbe2d commit 3d2af401cf851be0bf2d4d89af6f120819b786a7 commit 0dc204bc3f199de0a0924f3d5f7c26295e5c012e commit b2065fb21d9a789b14f737ea90facedabadeb8a4 commit 53bd83dfff8618d4a1affa171288b895add40476 commit 7c8e4a257246399c4f1ff43a06fc53ec53423754 commit 2182cb7029e9c5cc4b63d1c5682f62ebb65cc952 commit 674b9e08a02903fef75beadca0df490348d8f560 commit e22ec18750be01298763b10f7056ec8edfbf064f commit 6fdd2077ec03f4b34d127a1713ca19248539d6e0 commit 736f7308d3e6201322142d98abe4e9af33a429f7 commit 4ac77cce84a4afa3b76fe7c763aa3e754cdac422 commit cbe93a234bcce489be319e678dbf167b7a5f915a commit 1c0a90364859c17d57a7f08d6209b73e7e1142cd commit 47231d5e396a94e869b877bb1a0dcd526d91ac6e commit 0da0def7705dff7ee938662ea06f90770cb6f9fc commit ed67f7292b99f5d3876fa02dd51a43f46986c61c commit 1f3dfde4fba4f4b7822c389b9c994089a4ab588b commit e1c42213f3f9b24200d4b60da806303dbeae5a4d commit 1ff186ff32997049a6d263031819517eab4e93aa commit c10100a416c16b598bf5155e759307b34dac0d7d commit dcfe584b00f1d6dcbeeb769b939f53a3c4f04143 commit b834fc94c102eef751ff741aa0d9b814d0a81af1 commit a16161a869d5633d7d9a825a2546b68953e3a6f0 commit 492af34c9f67ef864319d0db930c8518a04b1937 commit 2605e60c82604508f60dbf427b82cd48154d88ee commit 7e8a3ca972adfc89609718c931577a86c494967b commit 64f991590ff4410041a70ee7ec2db079bc953929 commit 541846502f4fe826cd7c16e4784695ac90736585 commit e05d5b9c5bbea80313d8f58c3a80a18839b25480 commit e2b542100719a93f8cdf6d90185410d38a57a4c1 commit f00654007fe1c154dafbdc1f5953c132e8c27c38 commit a782e866497217f22c5d9014cbb7be8549151376 commit b44f2fd87919b5ae6e1756d4c7ba2cbba22238e1 commit 54d91b55c7f3f9f2c86e0b6be4501433b32ddc89 commit c20ee5749a3f688d9bab83a3b09b75587153ff13 commit 798cd57cd5f871452461746032cf6ee50b0fd69a commit f0a892f599c46af673e47418c47c15e69a7b67f4 commit 6614a3c3164a5df2b54abb0b3559f51041cf705b commit a9cf69d0e7f2051cca1c08ed9b34fe79da951ee9 commit 668c3c237f5ddc2889879b08f26d2374231f3287 commit 1d239c1eb873c7d6c6cbc80d68330c939fd86136 commit 9cae5b3189eb9cd12a9c3f6e8afda2d81958640b commit 232d150fa15606e96c0e01e5c7a2d4e03f621787 commit db100e28fdf026a1fc10657c5170bb1e65663805 commit 180abeb2c5032704787151135b6a38c6b71295a6 commit e5a95c83ed1492c0f442b448b20c90c8faaf702b commit 59eda6ce824e95b98c45628fe6c0adb9130c6df2 commit 2826d447fbd60e6a05e53d5f918bceb8c04e315c commit 9d50bff40e3e366886ec37299fc317edf84be0c9 commit cf4b7387c0a842d64bdd7c353e6d3298174a7740 commit df4aaf015775221dde8a51ee09edb919981f091e commit 2939deac1fa220bc82b89235f146df1d9b52e876 commit 37bc31f0e7da4fbad4664e64d906ae7b9009e550 commit efcc970605a4e365151db247361bb013f5c84922 commit 0ee7cc803ae52b60f268fdf2eba79b9fc1162747 commit 968d40986f004b463f057fce612996556b753c9e commit 5822b8acb869caac72c3ddf149d463177aa28fd4 commit 41ead3e0cdc03d64b7da2dcb1fd70ebb7164228b commit c83b9d60299317a2c15550dd506c864cd01a3e5e commit f59966779deac642541c3f7d772a3bf5972727ed commit aec208eecfb833b05597bbc28696fb1ab62f732c commit 1ac354beecfd58e769fb5373d6b2ac87bce9e1e4 commit 4a0a2cf4c03ba49a4c2596c49c7daa719917d509 commit b2f6c73561fbccee404b441a5c2d0b4fefaae817 commit 0a83bb35d8a6ff3d18c2772afe616780c23293a6 commit 616699d77b3813c24bf46090e722da227bd56cbf commit 08ebadfcd8c8c1cc7a14a7581db8331147b85fbb commit 8df436d5ccdf7f441becb8e8156c8ca9c4276e8c commit fb1a140b7bd19c474a41fb2df8a845e8eba328fa commit 64234eabb8f38ac2bf77dd23140887d81acaabe2 commit 1ff77beac87682c22f99e5cf32614909c65b4a36 commit 89390c4982b77c159e3b8a0be4a04552ef0971a0 commit 4c3861f587400db00801810eb8034c7b480e21dd commit 67c79599eea167dd5e08314b8c26f2dfa717753a commit 0af167f92838f34e594e49a6c8cbaca45548e030 commit 2de09ce41f484cbcc65e518905dae73da67ad35c commit 0cd34ce82b0a9ce503d35a51bff47ba3b6715557 commit 9bd110ab06e93fd01938dedd8b6015940418f0fb commit 9c580e8f6cd6524d4e2c3490c440110526f7ddd6 commit 615fc50207fa27453ba7f5fa1abd60a01a498136 commit 0591183699fceeafb4c4141072d47775de83ecfb commit 86678d46272021c88638881c63d427dd10d665d6 commit dd07556324ece81f0d2be756508903d53e331e9e commit 6396679a1f2db0c63721b841f1a5617d6282a4b1 commit 89b008222c2bf21e50219725caed31590edfd9d1 commit f173c7405224002fc32b64cf1679c4d888c493eb commit 2051160546826cf312f15bde534038582b90f844 commit 764a1e6e0272f377f145fc84b547d61e12724233 commit 84ef99c728079dfd21d6bc70b4c3e4af20602b3c commit f0068dd0effd5972046b69b23f99c43251e82d0e commit b2a93490201300a749ad261b5c5d05cb50179c44 commit 30456ffa65469d1d2e5e1da05017e6728d24c11c commit 9f5171ce733a694bd0211952687704c7a5bf32b9 commit 8da536d5e114ad1da6028c7505f048ded2e421c6 commit 352e683b72e79dbd46cbde528eb91e228e88267a commit b7ffeb4a1b5bce1a7495636d21f1704bd7ff01d3 commit 4e64b529c5b04e7944b41de554ee686ecab00744 commit c4c10a68e82b8a03df234ee744acabcc648df270 commit bea9a56afbc4b5a41ea579b8b0dc5e189b439504 commit cb9c7ab1b3ddc2702379dd9639df0c2230453c2e commit dc0a096bcc1d659ae93f836099c6b0312d2ccaaf commit 5afb76522a0af0513b6dc01f84128a73206b051b commit 541d54e40f1672dea6514ad64d54d61ed952648e commit acc96ae0d12783e9781428b17e34fd662a904f0a commit a6250bdb6c4677ee77d699b338e077b900f94c0c commit ad2feebd71ff80532dff75756d1103f056358614 commit 2bba782002c5dab6ca8d608b778b386fb912adff commit 36fa1cb56ac5189c78dacbbb14d452d0c44b86c0 commit 7ce2aa6d7fe121e243e1c8a8093911fecdf1c88e commit 0e66978ebeb44f96ff4d26b2a83dc88a2bf887a6 commit e16c2b8250262bc0bc531299e2c30641cee14221 commit dca452041552a5a5a6aab3ebda32565fad003eb4 commit 0f761f5768b842fe483141bc59db5b4d66bcaf07 commit f1f63cbb705dc38826369496c6fc12c1b8db1324 commit 1b586595df6d04c27088ef348b8202204ce26d45 commit 0a2d922a5618377cdf8fa476351362733ef55342 commit 4bac1c846eff8042dd59ddecd0a43f3b9de5fd23 commit b4ddb27d1dc7349fc882dbb7702bd2628fe27af6 commit ea8793f214ce1e4db205390c0241955f7ff6f383 commit c02895577b834a6148f6d9d0006a6f196511cc79 commit c8007d362c0150aef34323702e7fa996fa0cfd8d commit 8172cebac588c3c5e238d02be30914fbbc5b1234 commit 73c49a624a8db1ec38b138741203d9d7c76eedd7 commit cede849e9e2755084798236735d045298f9d9979 commit adcd15dc47dadfb176a14fa74af5b0cb0f659f2d commit 7e4a77de08f655e159e6355bdfbea73be71fab88 commit 8e78c7c4fe29f7ab8f87634c5f4dedc66107e66b commit e48e6a131d34de54ce6852149e4c97c2208f45cc commit 7d50b92d588d1e7bdcf38f523200b7b113b46c14 commit fa0bbd3be91dd46f4e56e5cf1fb6e8c2837c649c commit 5a0918b4cb90a90fc8d8bfd9b0f81efe6651951f commit e0df49b3045180fdd23dc27193344a767cf68fe1 commit 84435d1d912140958213beda37c708ec3072b5e1 commit 04fb918bf421b299feaee1006e82921d7d381f18 commit 5c1943820156e9a120faba320a72578578a69ab8 commit c7dafdfa90f708b6e4630abf824ba388a3947400 commit 373008bfc9cdb0f050258947fa5a095f0657e1bc commit d83a348b172dd7f9f10f049b3fd7e44cf4d2ed8a commit e98459c06e3d45c2229b097f7b8cdd412357fa2f commit dd49c07f3ab67e8d7ae7b8231b88a746c668b4e8 commit 19f7b8334484d6b610c8eb527c3f56cb42bc8bf1 commit 31ec699ac5d8d17c4f696888708bb6b2567dfcd4 commit c65c71ae85095f94aae32d86aa78811318bf6a90 commit 5544a7b5a07480192eb5fd3536462faed2c21528 commit ca01eba4e5b6b50144a62d7704763c41b68a0de9 commit 1af9add1f1512b10d9ce44ec7137612bc81ff069 commit bf7f7efbe051a59e9d0710cd26ea05f7ebc411a2 commit 385bf5a856c196d5997ce4111a23df7e1b679c17 commit fbe43dcd1aad7dbcee1cffdbe6c3e1d62c85f76a commit e42dfa66d59240afbdd8d4b47b87486db39504aa commit de8341ee3ce7316883e836a2c4e9bf01ab651e0f commit bbca24d0a3c11193bafb9e174f89f52a379006e3 commit 085292c3d78015412b752ee1ca4c7725fd2bf2fc commit cf36ae3e5802716617b9e4d902a31048240396b0 commit 8ae4be56dd0c2b851e7edc0f1d5cd441f88481c0 commit 2ae6ab9d82cdd0f7381639ee31e31de45519df4c commit b1fb6b87ed55ced458b322ea10cf0d0ab151e01b commit ea2aa97ca37a9044ade001aef71dbc06318e8d44 commit 54cd4cde7c1edb869603073167cabab0b760fff6 commit 43ef9db423bdce1df504d4d10e25092d427f04e3 commit 9d705d7741ae70764f3d6d87e67fad3b5c30ffd0 commit f5994da72ba124a3d0463672fdfbec073e3bb72f commit c351938350ab9b5e978dede2c321da43de7eb70c commit 06671734881af2bcf7f453661b5f8616e32bb3fc commit 2035590f3d40f227eac453d0c36b5eae85c1cf08 commit f461950fdc374a3ada5a63c669d997de4600dffe commit 16b3d851c0146123507fe864fdd97411ded51147 commit 233f56745be446b289edac2ba8184c09365c005e commit b75ef35bb57791a5d675699ed4a40c870d1da12f commit 220e979bd906015b74eb485e16464ee5abbd3c9b commit 6b04ce966a738ecdd9294c9593e48513c0dc90aa commit 8d905254162965c8e6be697d82c7dbf5d08f574d commit de2228c04150df8632ad22ee490de2ed579f64e8 commit 607f41768a1ef9c7721866b00fbdeeea5359bc07 commit 13393f65b77445d8b0f99c7b605cc9ccc936586f commit 868e8e5156a1f8d92ca83fdbac6fd52798650792 commit 6067c82c576af13a6b1c892b42ac4a189aced8ee commit a3f7c10a269d5b77dd5822ade822643ced3057f0 commit ad3b0b99113783f697579c7b09285916019865ea commit 2037769f995e45d3a368fb74983954b3ed8da178 commit 16c01544e30a4b4cf5f3eaacf7a4c19a3622b597 commit 4e3464badbeebb3528c457aefe91413f8a9070b6 commit 00047c3d967d7ef8adf8bac3c3579294a3bc0bb1 commit da1acbb12b33cbc651d8a7e956d254f1acc5034f commit 894c9c540f8315007a4752320e2399bc2e0c46b7 commit ee8086dbc1585d9f4020a19447388246a5cff5c8 commit 61251b2cffea8c1811bbd2dbef175b65f64aaa86 commit b8983d42524f10ac6bf35bbce6a7cc8e45f61e04 commit 064d491f73464f5c9cf56ac24f55118f6f4c54c2 commit 100d0ae82b5c240a4dc17486698e67bf116bd598 commit 58091b4958008ef69899e5404f8f031c36b35fbf commit e79a7417072265a85a36775e4e0f798154d39808 commit 4595a25443447b9542b2a5ee7961eb290e94b496 commit e5e6886f4d7e34b6539abddb591d515271caa634 commit 875c6d2711f6c97e58c52288b4231f3072711d61 commit 2c4e19f873f4a389c2a557a84909cf4b78d3525a commit 51fbbe8a3f8b9dd128fa98f6ea36058dfa3f36de commit 458ec0c8f35963626ccd51c3d50b752de5f1b9d4 commit 919bef7a106ade2bda73681bbc2f3678198f44fc commit 0211c2a0ea600e25db3044daaeff4fe41c3ed6d9 commit c8fea9273fd1be308668496badfcbd55183e0dd3 commit 47e04eed84bb07cc5b54462752a4bc7286ab8197 commit 507fd7c400032b126747a5ae8cca2816d73f009a commit d1b4a51a4ca8954f30cf4671b25c4f8637c45600 commit 3c93603d9568c7c4b20ff1712ddc60e997d78df7 commit 3e834a17a22cb8e9169c0b018d1a2df126977db3 commit 6783e6bbc2457dbed351fb0d2477aa6060a7d32b commit 4fd7f14b56b2e727dd66a62e217e57015da4e9fd commit 94a82c9e3dffb88182a4ed0464dc0266ad0d7b45 commit 595091c6ba35ba48c1f8186116bbbae2b208dce6 commit d0629cea1f97acc5e8d95ca2a42ddc72ed4ffa3b commit d7e7546886eebf626569e38ff06d0a67b8b82757 commit b023053592646b1da9477b0b598f2cdd5d3f89d8 commit 2640174f4a139502f603f7bedf3a7011db714e1d commit b97e914552c3fcea71ce03f899e285f2178ec38b commit 6ffc967c36b42f864955cb2c5e8b3fded0baa918 commit f5b9c1ffabce5f4acbeabd3a03fd57b3970a13fe commit d6f84bab48745ea68814d596eb476a9c11ce76ae commit 7b471c32e4cbfdd7a673b79321f6a26abecbf33b commit 910ab9eee0f61a243126d70e932e1301b5437583 commit 39c84b8e929dbd4f63be7e04bf1a2bcd92b44177 commit a54569b1f9721be11ca5b2c8a8bb3c652ebf576c commit a71f3950c803cb18080746aaa8b66af122f32841 commit c1dd5d29aceed251daf98cacd22817f38f76f94b commit bfe632f6d0a1371784dd9a11fa5a9aa2dbf53bf1 commit c7943bb324e503baeeba3df2bc5ca8a377111bfa commit 8409fe92d88c332923130149fe209d1c882b286e commit d91c411c744b55e860fbafc9a499f4f22d64c762 commit edca5a2c373db61efa959307c13ed9156b1c14d9 commit e1cab970574c001d83e59ca8388c474a57a1afb6 commit 672d6ca758651f0ec12cd0d59787067a5bde1c96 commit 151e0e0fdb4d6365305598af3b9072d44e896ef0 commit 992db92b07736ec98432a97b61c37dfe7bd06dd9 commit bbcbd63231cbd1405ff8e987870b02abc6a4d669 commit cbfac7fa491651c57926c99edeb7495c6c1aeac2 commit ae0448bc88b7827babda73edfe587ccc222baccc commit d832db12af4a057582011a590f60f32853680dd4 commit aac4cec1ec45d72bd03eaf3fd772c5a609f5ed26 commit e3d3fd1cea22ada5a06284d7bbb6cd5794d8545a commit 8f7115c1923cd11146525f1615beb29018001964 commit 63e37a79f7bd939314997e29c2f5a9f0ef184281 commit b6f25c3b94f2aadbf5cbef954db4073614943d74 commit 235fdbc32d559db21e580f85035c59372704f09e commit b34c1d538951e1c3a6d5e585e4a95e78d8733064 commit 2edb79a5fb303dff577d6a0c7d571c3bab1d1455 commit 0785691f5711a8f210bb15a5177c2999ebd3702e commit 08b812985996924c0ccf79d54a31fc9757c0a6ca commit aee5ae7c8492eaca2be20d202887c9c716ffc86f commit d654f60898d56ffda461ef4ffd7bbe15159feb8d commit 8787f6fab41380189865f5751c0f15b0c298b923 commit e839a756012b6cad7a4eeb67b0598ac3f349f863 commit 7c6fb61a400bf3218c6504cb2d48858f98822c9d commit 6c20490663553cd7e07d8de8af482012329ab9d6 commit 66f99628eb24409cb8feb5061f78283c8b65f820 commit df2c6e0c95ca22db5d6bea7e8169841c95426f8d commit 36de13fdb04abef3ee03ade5129ab146de63983b commit 8c5708d3da37b8c7c3c22c7e945b9a76a7c9539b commit 86875d558b91cb46f43be112799c06ecce60ec1e commit 42ff33e63b83d0fd40985ccbb50ff54e320a3bd5 commit 58d97c99c99f4559072a5410ec0135271e24e95d commit 269aad0919c7aedffc18dcf46393a1bec457af0a commit f9c182056b8ff7402a46c39c34d5c91133fdf9a4 commit 18aefea7fc71759a2405bc65eae057ffda3c429c commit af2f2a256e048f1b83605eaae49948e4a6811ac1 commit ea45405d704e20826a899380c19ec163336f42ab commit 82c4018479fba63db8db7c7fbfd9e4afba95603a commit 0b15b1ec8b74bd5c9a4e4cbadab82c0657832799 commit 6acc6196a7320b3d2a391925c4c884fc07f0b3df commit 1bb8df66920a5549db2be92c23ab81fd06992e5d commit ceb756004a30239c3a50dc237313e234b667077e commit 3601d620f22e37740cf73f8278eabf9f2aa19eb7 commit d978c51f8d1f4314c84cf50291156862a4c34fc8 commit c4be0ac987f21e12e7ad23bc480e826d8c30de20 commit a3fef74b1d48d89d4d911fcd7c2630d0eb6a0012 commit 37934d4118e22bceb80141804391975078f31734 commit 21485d3da659b66c37d99071623af83ee1c6733d commit 41012d715d5d7b9751ae84b8fb255e404ac9c5d0 commit dc1d85cb790f2091eea074cee24a704b2d6c4a06 commit e3163bc8ffdfdb405e10530b140135b2ee487f89 commit a8671493d2074950553da3cf07d1be43185ef6c6 commit 0af4ed0c329ebb4cef95fda4fcdbfcdea0255442 commit 87d9862b25483242a30bf45420cd8e7e1872a4be commit 25100377a21ad40dae8be5a3ed361b87acec1479 commit 5763d7f29652f94bdfc9dab87888f79ba6bb6c34 commit a7c48a0ab87ae52c087d663e83e56b8225ac4cce commit 5415bec18c69d3aaa7d4e3b170c8b8c6bb24a823 commit d8a79c03054911c375a2252627a429c9bc4615b6 commit 5ce8f7444f8fbb5adee644590c0e4e1890ab004c commit d119888b09bd567e07c6b93a07f175df88857e02 commit 37a0bad677a76e51c5e9e53f5d9f8f4f3e77912f commit 88d4cea24049de0fa073462b24ab471ecd685d8a commit 16c6077f2eea3c8321782d2fb0a6790532cd8c03 commit b261509952bc19d1012cf732f853659be6ebc61e commit cb0eca01ad9756e853efec3301203c2b5b45aa9f commit 29956d0fded036a570bd8e7d4ea4b1a1730307d2 commit 52bb21499cf54fa65b56d97cd0d68579c90207dd commit 65fbfb02c2734cacffec5e3f492e1b4f1dabcf98 commit 056fb8cfbe213f6eb5e987a806583986a4ae8328 commit 72002056f771a025a2e6b4578aeb538799cb9ba2 commit 20c6168b3c8aadef7d2853c925d99eb546bd5e1c commit dcc2527df918edfe297c5074ccc1f05eae361ca6 commit f528fa3989c53d4cf2ee22d306eb1a96ed0010e6 commit 29a1c581a5d873046302aa22c4a05124c5faefab commit 193b6a1934cc2e258e463e94fe3e94382c0bf458 commit dd4bc65c5bdf17ce8e74f91bca5e41b368b0e32b commit 88bab90f7a8aef3732a57cf33bf0ae121de8c7af commit abbc7a3dafb91b9d4ec56b70ec9a7520f8e13334 commit faed5d0182480556cddb8343d9bad968387848f4 commit f525ed19437d376736bed64ee7bc4afee82f2ba9 commit 387df878fdcf63ce497109c4e1eb805a7df9043f commit 3b38b65ed076fa93f1b0d5fb97c55a9bf692cc49 commit da73a94fa282f78d485bd0aab36c8ac15b6f792c commit 6dd1de12e1243f2013e4fabf31e99e63b1a860d0 commit 051ad2788d35ca07aec8402542e5d38429f2426a commit cc62d98bd56d45de4531844ca23913a15136c05b commit 6ef7d362123ecb5bf6d163bb9c7fd6ba2d8c968c commit 7516777434570833469252c16e5fd7d8f73c45be commit 3c480531a4b1652561fd16824c16be8b8a3ba8f1 commit b9caeadf5cb89566412b94b14a1583419aeba45e commit a9b4700279f21c5c1a3425630dea86d338ab13b2 commit 91ef6cfd30bf75763f41e7a4bc119883fe190606 commit 664883ddde67971d59764f2dda855183ecf8bc46 commit 783d446749c09eb34178cb8600a9a93d3b99e35d commit b6d1c39bc637fe4879d610e6687b1d4224c4b2fb commit dd37fba90e72a48998d9f0eb5497088ea2b02ad1 commit ec669ef2e2cf277f3e73d842bb3bda1c3ea2ea73 commit 85096a73f4dc223b5848e41ce40afc5ee913079e commit 1ec5c0e1289c70c8e7dd93a988d945ad5bc3f4b1 commit 391ce355e72bd5713afc85ec5acc955294499dcf commit 8dd2e87dbd49ba0b6afc1dd22a5930d797cf423f commit a28acf7091babf4248b042326946cee7736f796a commit 2d3907c152611a0d65efe54b93972320dcce1565 commit b3e45b18e5c40f1f7e5f6383953343f96f963b13 commit 11e38360cc15e2d5995449d19030b13a67d73cb3 commit 3b7329cf5a767c1be38352d43066012e220ad43c commit 7738be973fc4e2ba22154fafd3a5d7b9666f9abf commit 83ca5fb40e758e0a0257bf4e3a1148dd52c6d0f2 commit a3aded135e84a581ba567c30ecddff47c8b6cfcf commit 541540b9045c2665d6736a77c776ac81d4225eec commit 153a97b4e3de713c05b6bd42d734a2f9eeaf7968 commit 91462afa42e6b8c5a148a44482c893f1800c513d commit 6643b3836f3908c4f77883b2fae72451e85cf3ca commit af81a9201e0112e9c4ca7258e32cd28baf19f31a commit 2f3f958602721c7915ddb1f2a0e8dc5031bc0151 commit 90df15124526176ff03c246362c196a047c8a39a commit bcecb6524881c54ded92f14a6cf2406d5c439637 commit c1c3f41ffb1bd262e40d68938af68c6ab53a41f8 commit b33139ee15352043123b81b32ca1a6a84340eb5d commit 04fa38cce6e02be4362cd889780d58ec275c4d26 commit 0fd85e89b5bf18447e56099a010ee5be5dc9f2b0 commit 414208e48963fdb136240d7f59c15e627832d288 Omitted-fix: 14773bfa70e6 ("mm: shrinkers: fix double kfree on shrinker name") Omitted-fix: 20529e260ff2 ("Revert "drm/amdgpu: fix start calculation in amdgpu_vram_mgr_new"") Omitted-fix: 3024d95a4c52 ("bpf: Partially revert flexible-array member replacement") Omitted-fix: 3915f8bddefd ("drm: xlnx: add <linux/io.h> for readl/writel") Omitted-fix: 395d10ae4d29 ("drm/xlnx: Fix build failure due to missing include") Omitted-fix: 3f61631d47f1 ("take care to handle NULL ->proc_lseek()") Omitted-fix: 5e6723ef3fda ("drm/lcdif: Consistently use plain timings") Omitted-fix: 71c627c0a87a ("drm/lcdif: Clean up debug prints and comments") Omitted-fix: d395fb1999ab ("Revert "drm/amdgpu: move internal vram_mgr function into the C file"") Omitted-fix: ea19684afb54 ("drm/i915/display: consider DG2_RC_CCS_CC when migrating buffers") Omitted-fix: f423fa1bc9fe ("drm/i915/gvt: Add missing vfio_unregister_group_dev() call") Omitted-fix: fcfd3e5fb2f0 ("drm/lcdif: Clean up headers") Signed-off-by: Karol Herbst <kherbst@redhat.com>
2022-11-02 15:48:10 +00:00
#define iosys_map_rd(map__, offset__, type__) ({ \
type__ val; \
if ((map__)->is_iomem) { \
__iosys_map_rd_io(val, (map__)->vaddr_iomem + (offset__), type__);\
} else { \
__iosys_map_rd_sys(val, (map__)->vaddr + (offset__), type__); \
} \
val; \
iosys-map: Add a few more helpers Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2043115 Upstream Status: v5.18-rc1 commit e62f25e8b3cdd29224c27938addba817aedd4b54 Author: Lucas De Marchi <lucas.demarchi@intel.com> AuthorDate: Wed Feb 16 09:41:33 2022 -0800 Commit: Lucas De Marchi <lucas.demarchi@intel.com> CommitDate: Sat Feb 19 19:23:53 2022 -0800 First the simplest ones: - iosys_map_memset(): when abstracting system and I/O memory, just like the memcpy() use case, memset() also has dedicated functions to be called for using IO memory. - iosys_map_memcpy_from(): we may need to copy data from I/O memory, not only to. In certain situations it's useful to be able to read or write to an offset that is calculated by having the memory layout given by a struct declaration. Usually we are going to read/write a u8, u16, u32 or u64. As a pre-requisite for the implementation, add iosys_map_memcpy_from() to be the equivalent of iosys_map_memcpy_to(), but in the other direction. Then add 2 pairs of macros: - iosys_map_rd() / iosys_map_wr() - iosys_map_rd_field() / iosys_map_wr_field() The first pair takes the C-type and offset to read/write. The second pair uses a struct describing the layout of the mapping in order to calculate the offset and size being read/written. We could use readb, readw, readl, readq and the write* counterparts, however due to alignment issues this may not work on all architectures. If alignment needs to be checked to call the right function, it's not possible to decide at compile-time which function to call: so just leave the decision to the memcpy function that will do exactly that. Finally, in order to use the above macros with a map derived from another, add another initializer: IOSYS_MAP_INIT_OFFSET(). v2: - Rework IOSYS_MAP_INIT_OFFSET() so it doesn't rely on aliasing rules within the union - Add offset to both iosys_map_rd_field() and iosys_map_wr_field() to allow the struct itself to be at an offset from the mapping - Add documentation to iosys_map_rd_field() with example and expected memory layout v3: - Drop kernel.h include as it's not needed anymore Cc: Sumit Semwal <sumit.semwal@linaro.org> Cc: Christian König <christian.koenig@amd.com> Cc: Thomas Zimmermann <tzimmermann@suse.de> Cc: Mauro Carvalho Chehab <mchehab@kernel.org> Cc: dri-devel@lists.freedesktop.org Cc: linux-kernel@vger.kernel.org Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com> Reviewed-by: Mauro Carvalho Chehab <mchehab@kernel.org> Reviewed-by: Matt Atwood <matthew.s.atwood@intel.com> Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de> Link: https://patchwork.freedesktop.org/patch/msgid/20220216174147.3073235-3-lucas.demarchi@intel.com Signed-off-by: Karol Herbst <kherbst@redhat.com>
2022-03-29 14:21:07 +00:00
})
/**
* iosys_map_wr - Write a C-type value to the iosys_map
*
* @map__: The iosys_map structure
* @offset__: The offset from the mapping to write to
* @type__: Type of the value being written
* @val__: Value to write
*
Merge DRM changes from upstream v5.19..v6.0 NOTE: This commit does not compile due to missing RHEL-specific fix-ups, which are split out into separate Git commits following this one. If git bisect selected this commit, run "git bisect skip" and try again. Repeat this until it selects a commit which compiles. This commit was generated using: rhdrm-merge-drm v6.0 2115876 Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2115876 Conflicts: drivers/gpu/drm/hyperv/hyperv_drm_drv.c drivers/gpu/drm/mgag200/mgag200_mode.c Conflict resolution: Commit list: commit d10f7117aa43b0b0d1c4b878afafb6d151da441d commit 115fcf5899f7e0b0d3358a22a8cd76b1398642ee commit d8cb49d203556707ff4c3aa05032c4fc7c3ff1a2 commit 9d72b7e2d2ce3746950929a2c54171d183ea89f2 commit 94afc5382669c3a201c5817c47b57a879b6dabce commit aba5825439d7691343aa562dfeaf6616455bcb01 commit a9ec4fd004b84c26207a8cae41662c501c8a284b commit 537d9ed2f6c1dbfe8465365c2f74a855ffad5e6a commit ed3173077d3fa6fd085960aa6347ec30f532bf31 commit b07debc2a8ce7324c85479a28d145eaa05382286 commit 4ce08703a8c4be77b060aefd14eda272f50a45e4 commit 9975af040a04ba9aef33f3ef1ca4e8f04c7223dd commit dfc0312596561ac462308fae32130a0c580b7ac1 commit 37852141965d467a4ae118139b6eee266e7d953c commit 2af243444f9100639451b11d311982279e00cc16 commit 49a62a2923e523e5359219ed54d643c60f3374f8 commit 705bec3eca9b712fe006b7e4d6b4cd4dc6b57d36 commit 8db73897698ccb4eb70ab103245372569ff5a5ec commit 58304630b830a1c27457ce2e3a0912555b43d03e commit 6ff1c19f5f28dbc396462032dcbfdb8b64795415 commit d792ec62ae1260df2e54dc41103aad3b19bad948 commit a5c89f7c43c12c592a882a0ec2a15e9df0011e80 commit 315241d2d9102a90f71bd6c9e7dd06a1c831a184 commit a7b516bd981f11feb0c9f5ee3d149855d48cb2c8 commit 6f67930af78f10ac7a1a9ba81ec606a9bd07749f commit 56ca3117f77a23a8b24e73e458bc85c11e5dea31 commit e6c2db2be986158afb9991d9fa8a38fe65a88516 commit 91875c22a31be0bdf91d7ec651bb6b083b35ac37 commit 69ed3dd6be9cf5d75252940b9a927dff4bab7860 commit 09708b6d82ef473de91c49d90f35e38b0db463f5 commit 222ff6db8a0dcb86f2bb65fc8656aec635a737a6 commit 218076abbcd647de46635d21331a34b814f90906 commit 922abe4d19bd21b38298f3902674774b92a49293 commit b6411373d3954c8fe4617c27f90f773108b0ab03 commit efd01cd3c27636bc4840057a03839e54abaf11dc commit eb86f645ab9b90c47de7ebe229feae7ac999421b commit b15a7357a84f091fde8ce35bf2fd494150ad4bd0 commit 1b93ff4d0679190e8812cd0d0b3aebfcba1ed883 commit e9794c88cd6cf4be4a79188916a75539751f532c commit 3507932390bbfcf7c69dff9843f1c9da6ed4b861 commit 23dd74db02d75579d8d4eb0b88c7ad119e782269 commit b499914eb83765a27e3b43f216e9d1bdf4265418 commit 6c01aa13894fa0049ea8c96c271318ca353a77f1 commit 429e1fc1b2c257f35b6a1318eb3a1ffb80bc6640 commit e090532246fe17609b08ba0a862428867426dc95 commit 9d67edba730c4663eb7d87771123c3fb86ba606d commit 4de23dca7ec8dfb191ea80fbfe3f008d4ed52346 commit 6cd96877c7da6bc3a28ef0bcb3bc7470f4dd9aa6 commit 93d9e0453e2bb599e0bcced1b914f9b4010180a1 commit 69f8afdb45e7775840693bce42da79d9c22c2e83 commit 500d7135c924024ed2e5e62b03dd9b3b6257fa10 commit 8caaf7ad659da9b757781d5f08ce0bf98801931e commit 1a1a5a315ee805bec457fd214250c088efadb50b commit ad5f74f3420183052532a220edd9a37aba92724a commit 047de3f17a8321065c32ee3f6272a6dba16d6bcf commit 5e3f1e7729ec7a99e145e9d8ed58963d86cdfb98 commit 708d19d9f362766147cab79eccae60912c6d3068 commit aebeb02dfccb61d6930112aede2db3db5b8e974e commit ef83e1198f9f7d7db0031c839bb1112cfee45b42 commit 7ecc3cc8a7b39f08eee9aea7b718187583342a70 commit 3064debaf55e1bc8f191871ca5f82697ef4c0951 commit c48a363016349352dac7e66cd1e823f73bff1fc4 commit d2addf89c5abf4024574d42000313175c6e074fc commit d7fd32ecce914686756dedf586c8573e71f975a4 commit 3080c21a043abc83e56da9bb5942eb3f4b92c90e commit 303760aa914b7f5ac9602dbb4b471a2ad52eeb3e commit 21c47196aec3a93f913a7515e1e7b30e6c54d6c6 commit 18fb42db05a0b93ab5dd5eab5315e50eaa3ca620 commit 945ae909aa76f55ac8c9e95feb3683512d39134a commit be982415fc2e953ad49e59b204f2d0e64953eb5f commit ab1747ccf052976465db7c5a7e1301a50f290db0 commit e4ccf9a777d30d60c60f729b1d5c9bc9e3ea46e3 commit 22a27e0532d06968afc265a3b91fbdc5a773169a commit e42192b4c345a807d8df034f178d5846e1c97ad1 commit a2f9790dcffe2dd0b363607fd215e5b81a0de57a commit 40f71f5b239291357dbee3dc1c6ace83a373f44e commit dd0f4470a849d07081a2036f89d2c41264383985 commit f0d080ff429129b16332f17a906ad2123d9c6317 commit 084c7a7c7a0a0cab35d959e1b14d45a0c6221f49 commit a77f7c89e62c6dfe405a64995812746f27adc510 commit 7428bfbdb7c4dc7323e6b6f0e327c3587e479e16 commit 67d87fac86dd4a04cc62dc0eddfb7c74ace4666d commit 874d98eed71ae678ab364d4c16060955b8b245ae commit 2c54f87cf2fb99826ded617fd0484e688ecfe882 commit 45aa2336fa6dbfa73d9081f75a4b813e747a55aa commit bba4b6470b02c2d9a5074a40cff7246d3356f460 commit 027034511c6a1e3ea96122f7626b89b6d339ed49 commit 3176d0925027727ec37e388e9363f124c2c52ae9 commit 0c057877cbdf261efa7874474f48c715cd6401ba commit 5e87b2e5171621ff00ec197c9af15bc3aa405b6b commit bbded689680f0f2e65d4a57d0dfa654671052d56 commit c7b2dee4308b74391734ac675e66e6856a077f77 commit d9ba1b4cbb2989c919198832f4ebd6eb8ba94da0 commit d0edd3c1a7e859a5899c26e2906e80f4ac798fa9 commit ca10b9d60f8c9556720bad8b1ec7d522e353a01d commit de5db71e4c8c35ed5e92006e3064ce9230881ece commit b6415bd7386bcf9d2e0d6ee1d4ef4186e7a87b24 commit b959eb4f5b7ea49b47e95c9047d33d1b1cf81057 commit 0facdaa249c4e97346bc0b49c893e4a1d336b7dd commit c3e57159dea473e9e138d32d08c48f3103294050 commit 057a6a1936e79c0bc9c86537fb9886ed39cd078a commit d6774b8c3c5813aa541c9148f641d3d8d4b296d2 commit c577b2f43e80d707870a74de0fd726c51b206956 commit a24191b1c4ad05fc578ea5ea01652c09b71da86d commit a9ad5822366c5065e6a65fe5ff5090295ba98986 commit d158367c31f0f87567d2e8a0955287dc005d40e5 commit 8f6de23184452793e60945a26ac40db435d7798d commit 9e97c46f832d4669b4e52cde5ad0bd43423504eb commit a77c2af0994e24ee36c7ffb6dc852770bdf06fb1 commit 5913ab941d6ea782e841234c76958c6872ea752d commit d50f74790bbba662d1438dbc03be6616c52c0722 commit 16f1456466c269ecda32b88c3f8fdd76f8ec370c commit b279df242972ae816a75cf1cc732af836f999100 commit 8219f11fdaf56593a719e1d72fa582673560315a commit 69340e529a064da4807622395e967aa2b5eba1c5 commit 475e2b970cc372f49e9d3e4bbead8b4874299d31 commit e180a7b218487065efd9a3f05eac5de7de128e19 commit 315a8d00ac74c59a688a1a88c0ed97a7791d1c91 commit a50794f26f52c66cb793d5d392f5f19bc2962cdd commit 451374eef622fca6f00eeeda89aaccb45a30a149 commit 1ade30812abfdd1c161a155fd54b0dd594c217ee commit 230fb39ff7e07bd0324c87acf08dd2c9b0bbcea8 commit 962bd34bb457f6353f333ce234c3fd34cad1c00a commit 411d44d754739a371999412606b28af1d72a210b commit 7f73b371710edaee1f40d834096c07c62e51b184 commit f159b1b22c8a2d3d7c1fa877fafc8aacff0deeba commit 746b9c62cc8614fa59c23f3332682b5e9e1d801c commit 1c89b4b718168aa6cf136a984b474d663e4203b7 commit a8d6e127254c48d895c4f6e973ec998fd4a0eff3 commit 4f093a527b0b8f9d3059a4e8376e582fd14cf09e commit 4a2a13a57b605994ee44e5c2cd7b9efc49901404 commit e7c254d75d16b75abf1958095fd34e2ecdc0d645 commit 69ef4a192bba0d76216198ec6d5fe82375337903 commit 9602efab9f8652ef39dc2789edcd26c3d1d3f901 commit e91eec9128c2ad9eab9cf9d7c17f8034b6a86c4c commit 9d8d5a39173244a1394cf84a93447be6f82b361d commit 3d6c72b7fdd2429ca1d4d690618bf65050380b48 commit b409db082da6b76ad2b759a1a48d9402eee4b942 commit fdbec9ff669d83bf863ca7e657af6a9e4c949565 commit 39921e5f00f5a98ff9cb3229937ca339e8d9c9c6 commit 85a040bc9049dd168d5e79a1fa9d2da87e6e52dc commit ee421bb4cb9535f44015634baad833dcc98c9062 commit 5f38c3fb55ce3814b4353320d7a205068a420e48 commit 39c28cdfb719f0e306b447f0827dfd712f81858b commit 0d662350928e6787d29ab205e47e5aa6f1f792f9 commit c1de02bbeca58894c805b3d45c2da4bf30cfc5d9 commit 0b4c48f3e315d172e4cc06e10f2c8ba180788baf commit 08c59dde71b73a0ac94e3ed2d431345b01f20485 commit 67d935b4713988d0a41097439c0c2d74f240b204 commit fa373eb2190115ef2c3597f89c12350d0a250eb0 commit 4cd79f614b501e496ee8e4181d528c0cc1cb4e18 commit 8ec5c0006c50cb1909c0de0fad137909c1218990 commit 2ba5b683260e13d8f2c43bc594d5ae15ec7f7a04 commit 670c87fd169518eb4f15030c63f6c1b4ddf18bfb commit 1ff72d434b40d221e2583fab5e1203031d05c059 commit 649eb3828fb22e829e222ebd83f4e11dc503a565 commit 9ad6f181ad9a19a26bda73a7b199df44ccfcdaba commit 39b1bc4b5bcccac781267bb826b035fbb99c8b9d commit 991dcb89caeb1b9bf714b382e23d3f6d8016e744 commit 61922beba36adea8702fe8069b309c806f6608af commit 6b03816f869529393b37d03e5d75b68f7365a7a4 commit e4f21d1436519fec3e181082c8e1c3fb00ec08a7 commit 1a3b1ea111c44d9dce9f70ba032531a223395a15 commit d63ddca7c58132257fd01e3a4feca41b3bac3089 commit 8ae664907916eba9a9d56296bed684c27318a872 commit d32e8ed918ba7384fda9055ebb31b89b3eadb517 commit fb289464f695f9d913479b4ebae9e39b057f8531 commit 1eb31338994889ac34c4f841e5d54bf10111741b commit e41388d508a50ddb2be5c2676f1992353ca2f155 commit a4f263f46961b1229b10ca3a98f0be618a9d47ac commit a67664860f7833015a683ea295f7c79ac2901332 commit 837c72b23a57e15dd363d5f3f3f268c49c128740 commit edd34368c4c3b45b1386b15f78b2229420f8c6d4 commit b981cc333ff06cb23c7968007965e79c80f5df97 commit e31372492904415e425430402453a192e2c6519f commit 16e214d4aef2d600ef94e845530a28ce795b8fcc commit 26be7cd8aacdd3f0429834e78e3166286779f083 commit 6a735552f44d7a29a9e629cdc3b5c3ac2b4021e6 commit 9d15dd1bb3e7de4dd31a225977813dda2748253e commit 69d6bf5c3754ffc491896632438417d1cedc2c68 commit 91776af1d8deb8f36cbec6bf2bf24b661b2b5cbb commit 9180c30cd61aa0b2f0eb4791c8e490c8c5abc54c commit 420a07b841d03f6a436d8c06571c69aa5c783897 commit 4fde3f5d8805caba40cce2268c540d8a37403c6b commit 51ab3b85000d214b75899875d5745935e06020e5 commit 822e5ae701af2964c5808b6ade1d6f3b1eaec967 commit 75bd0d5e4eadb9ce3e9b6fb71971b6e87c38799e commit 60b02a09598f87972a15bb181b9a62b8a8ee682a commit 89fcdf4305996f869eb39eb8f14a989e9a289611 commit 586294c3c1860ac991d3a241159c0edf974b68e4 commit 8e75e8f573e1ff4a0c93c3be1554d2bfd5ae6029 commit 67090801489d0a4c80c121494b749e1e97573447 commit 50759c13735dab06805eff0e8161d33216d6f5a3 commit c3fbcf60bc74b630967f291f47f0d9d0de6fcea7 commit c2fdb424d32204faf5be29d55f0086b611c94e38 commit 3cf050762534cc268a02793ec00240f81c6e2229 commit c518a775a843413786d3db8b5cab084597730a5a commit ade1fc91eb99614c7155fec762ad5761bb470e06 commit 14374e3eee1b02dbf162e1dd75b789373f07ef43 commit 435c249008cba04ed6a7975e9411f3b934620204 commit 0c5064fa8d5a02dc2dcc6c674a0ad1bbaf79efda commit 01357a5a45ed8eb9543183f5c9c6713ae60fc1f3 commit 8f61973718485f3e89bc4f408f929048b7b47c83 commit 245a4a7b531cffb41233a716497c25b06835cf4b commit ec8d985ff26f29d53d9ebff04973e96572fd0285 commit a0ab5abced550ddeefddb06055ed60779a54eb79 commit 0aa93f54f4341a40b05ec2ac242109e78661d7aa commit 92a020747d6c9e2efe8168a4a444576581bba636 commit 6cb07d20317c77494fa4de572887e3dcdbf98b6d commit 0e5397d8c9fe2a2e4fcc8d98cba4a12511a03267 commit 3951270abfd229e3e17c991942cd111b66454f97 commit 3d140a3d8816082f9732d6fccb81dc18823e03b3 commit aa71f9870efea70b38b17c3d2af870530fcd02e3 commit 58ae532ee875783503428610ac0f5d80e73009a7 commit f2206df8ec862073995f5d27f0f55f698843a9b8 commit 4f543d664cec7e9b490bca55f57151afe6f5cf47 commit a9bfcb56a2ef265092a4cfcd4b9c58ddff4d3649 commit 8b449f1c44d1f921240da6a3e7fc4030966abbff commit ce581ae142e24deb27905840fb720fee9b38d7a4 commit 04514c14678e760e17e3cd44c553ade1bf3bef06 commit fba99b1ab7bde41c1eb00431df37b9237be3681e commit 2db7d421cc5ca86bdcf57f2634f6eefdf349f998 commit 6e939738da208bcc0e4dc794519e18cad85bca73 commit a9b20eb6f7da7794f8ffbce0ab9c709cb1ed71aa commit 700034566d6844b3a67f4b6c3a728d9c0c8d93af commit 5a18db2e92a3556ccacc92c031db6e6a7f2b34dc commit 01ece65132e2980ece4eca91105dfc9eed504881 commit 04477e5e1e6ced4573d9bd5271572ba633a260ab commit ba1677f76b9a510d88efdc7a1416b2e778f125bc commit 368eb57a1676cef35f8303bc23f95d2ac35b7255 commit 544ef14031d0bc9223727fa8d39cd54f0fad7244 commit 147a09072c84b32746fb70139963a92c7d90e07a commit 0cc3ae930c8b2a086b802a8c7b915fd28b57c780 commit a57ebfc0b4da16a3f36bfebb158198aab3e340f8 commit e9ca4e9ea6e208feae82f72607818ac8e15115f4 commit 935a3c66eb9b66426d4be9b54666c77dbe7c32eb commit aa2bdc4843f5871e6c68fbec5e10c0dbaf10ff91 commit 4cfd16659641067f618cdd3589eda42eb2943399 commit bc3c5e0809ae9faa039baf75547e8ee46ec124ef commit b87d39019651c9cae169396cf5ae525393084490 commit 5ac342ef84d7dccd1ba43f5fa2dc10a6feda91e2 commit b729cfee705a56c6204647ac486107a1f814af36 commit 3800b1710946f7db3cb3a29cb2e218cf5df999d0 commit 50e156bd8a9d0910ac4bae5fcff00ddb798db967 commit 10e619f1f31cf126885b3e0ac43a8de9744467fb commit c441d28945fb113220d48d6c86ebc0b090a2b677 commit e8971a790370e805281dd650ec936a9b66435220 commit b43edc504ddd8902d1f697364049b0c0b89de6e2 commit 6352cd451ddbb506ce061868a9e5465d294d4857 commit f7dad0daf2c2368f72828b0729799f01bdcee33b commit a820190204aef0739aa3a067d00273d117f9367c commit b8b64595d6a1ccd5cdf56c528e921332d1366b22 commit ab9d97d6f9f1bb5de83411581dc6cdf425a83a15 commit f74e78ca90bd21b47746b90c439709007681f44c commit d5fe83d26dae59c5b52105075e8950dea8ce7c19 commit 66f54992981444cb418f31018e190d15c92d3599 commit e309434ac56774c86e79a50980e8611ce7cc31a3 commit faf26f2b12e1e03956f7e628183e422d94713e4b commit 2f6247dad2c56cfe2df3c6e00586ead5ee905b46 commit b801d8ad1b516a951535241c9cf60cac8f9a5c2b commit 79b470e5ee83e979f8ff465efa8b7ced160bcae7 commit 4f29f9cf092b2d331ba2081566be3272962b7f96 commit ac2e555e0a7fe571d46f7dcb1529b4bee00095d6 commit 0efd4374f6b41650863947a7528d45e8ad0f7ae0 commit 58efeea32d5e32fa340c7ee3f52d5f986b240e39 commit dda4fb85e433f761eedaed0005a2bc20d705d504 commit 265280b99822e5562eb431b102f2ba773c7b2a0a commit 235c67634230b0f9ad8c0185272fed36c892b1c4 commit d3dfceb58de5f897640cdd424f6c2538d9514367 commit 3b1229741eda70116e0163affdda377484a788ae commit 577359ca178262a64236cc96299714dbff21e9c7 commit 85b0cc35efab0cbc78c083d4506250bea6a755ad commit 49401d3a5c86f5ead12ea7cbe98031edb512b13a commit 543036a2de71f14f8ad566c858e5e9ff61736a86 commit e42ce1366ae806ba2c1f884997703be68df428f4 commit 3dc35cf8789ac93d656f255539f9b37c5051ebf6 commit 2cb6915dcf70a2bf7ee10fcf3f56b083beec1086 commit 542a0f2ef9ea2ccfadf2b8a3b53368c61fc97a0f commit a839a73b18157fe30eb4acd2a1f1ffdb890762ff commit 9761843250f1367043ae2a483461af287aecc879 commit e06c5f59ffe1006f1c6f533113b72ad48a6d4564 commit b3f2c796634613bca511266b37084560f36b67c1 commit 6a640b95b061fe340214ebd4638974b8b6f08efe commit cbd3e8440e2e6a4d83479235c9bf278b89360946 commit 1908a07cffdfc7c57ba5116418c3f2b5ef05e0f6 commit 218987fdead218ae0e714cd9059bc9fc480220f9 commit 9fe5d08fc8230adb64128986ee4af267a54e56dd commit 16600b7d66367482dc8526f8bc3a30b32aaef329 commit d57716702deac8e0ec440739eb4cd6eb0872ddd4 commit 10c4ad3ae025dd0e343a09d2ea4b0e71f8d10797 commit 8763e4c1a0e6710dccb8fccba96fcd6caaa50cae commit 7101ab97e3b00ec1c68d09826bb0521d17783673 commit 80d46fff373775fdea9917a7d13f6fb6fa5147ad commit cb12d72b426caa7594890c62df69fe4b83c96e58 commit 72b5f23ccb0aee46029476cbb072074384aef591 commit 3ccb9ea9976022034d8fffd8d929d6e70a24e0c6 commit 2388a778bdacad0c936dbb01048362864847f8ad commit 9d6b2041761ff6d5a33941919c8b5a805ecbed6c commit 1d6c363330834fa534c1c7ee01620ff134aade1f commit be77243327d962a87bcf03615bae12d73efb9b7c commit ac1ac694f7173a0fbb0b60ab0f26226dd334479a commit 2cfe34e18970d26bff73c63f16c76dae22138d19 commit 2267a195e28cc438cb45936c4562f958502d4038 commit da1db031cd30fefc99d1c82211d3c24b73857bbe commit 3378aed7e2ec7212889116335a2120a6e35c80ce commit 7a09f61f8e842dd027afa1ce8be8bd86062c8a7b commit 4c1b3d0803aef6d39913f1e9d2cfe2c1ccce18e8 commit e87b92c6af537843daf7da9235e622988bae7eae commit b5a0168e1406176cf98487833b7468a1ea5872d3 commit 452e9214431f1f6385bb20fdf6e1b5692947071f commit 49f594995a9255ff734f79c1fc22bd06119ebe8f commit 6ea843e01bce520cf5dea86bc30c5133e0d0822d commit e127306d433ff99f29d1b083c6b3aa128bbd9c5e commit 0c9ed6044c5d08562d38d56e94279badef39e4c7 commit 327f79d7a1d2dcc10aeda05983c4d1532dd0830a commit 214d72f62978c28fe27d22d0d498d04493e9ce86 commit 80fb7a409c64ef304e4040320e87dbb2f10968ca commit b6a93844145395068574cbbfaf3aea91d1f24f1a commit 405bb9eea36a02798631e8409f1182705699d092 commit 3e80a5b068a5fedc69ada30ba1a2d1e0b76dfc25 commit d8e4fb9112e88d8d87ffbc38fa511e7118042d4f commit 8b67e738ca17fb52a275b1cc0191dfce0e9cd7a5 commit 83eb5385b4f021c2674b1d78675bfd10443cdf74 commit be1a63daffdd152ba4c7b71ab9fec2e39259b42b commit 1d742694571655e49e11ea8f391bcafaf0f5ee74 commit b3d0c0f2dfbe610ae5ac6b2d70dd450645dce3cb commit 1da5dab029c08e178784a0750203365ea7c3b4f4 commit 3a6dce778de7c120a37983d80b6ccc8c2c4ff6ec commit aa303964bc349914de8e1d3ff7b517581839d01b commit 6d1044a070b2eef0be45f3b99274a6cebee25053 commit 651d7ee63f338b82d18273c30e9ea804ae174342 commit 3d8785f6c04a953868384db455bb2fdd0b22c11c commit b07d1d73b09ef40e91ace51a2e167391676a8175 commit 4c7631800e6bf0eced08dd7b4f793fcd972f597d commit a35806b36ea44724b21f7f110b38b5941fc9c393 commit 65657d98754c581ad66b56680d3c9ed679890071 commit 32c453f18dccd93a27d6f026ca690167c8cc9639 commit 6cc5c77300afbb285c4f41e04f3435ae3c484c40 commit c7eac19eda0a82f0c1dd9455012754445772fd09 commit c2a050c5e07faf9ed2fa1daa1eb642d9da4a879d commit e61a048eabf9d1245f86e67ec4787d2f10e5a1e0 commit 65e7a17499e15771339d85eaa1ba686ad2fe342c commit 381b590c307f29d0990c4b99ae3a2e02aff2a5b9 commit 1b0da5a3e90d3920f6967e4303fdeaaec6f62208 commit 7cc191ee7621b7145c6cc9c18a4e1929bb5f136e commit 84de5c2e92dccb2bcfd5ff68af44960b808fe6bb commit 453b0016a054df0f442fda8a145b97a33816cab9 commit 031ac4e419dfd8f099a0adba31f7f735013eb628 commit b94b02d72e2b979a32addc8f5099fcf1f6ce9e7b commit d1b08baf93352bb3c88d637055dc21187a456646 commit 136f614931a2bb73616b292cf542da3a18daefd5 commit ea64228d26fee9b766bc9615e92a319da5ef94ef commit fae7d186403ee5a9375ec75938e0de99718e066a commit 73f54d5d968264148ef81941d9dc07e35025a120 commit 85397f6bc4ff13a6bc5259facb8ebebb1986d666 commit ce19021fd99ab2c915f2b44b0df39bef75f11d18 commit d45e32c9d98ce7c22a4bafe69cee58165b59533b commit b62d943e9686e791dd39f8bde302fc27446cdca9 commit b9a577a407d99638522ba6a0fc4fb360aacc01d0 commit 21e74bf99596d91411b6b51340c05ff92a7a4a01 commit 98da4b99a0525c222dab7cd8e73153eaea062dc3 commit d1e40d8e4b4df3f705c7898b264b2cfb60bdafc4 commit da1efdb2a3e8593a9428c81a531bfd8a0c3dd66e commit dfa687bffc8a4a21ed929c7dececf01b8f1f52ee commit 34b68c17e9895ba66fc809224b0122a2eed7aa40 commit 330c1b3180b0d79fef7c05331647f3695661b79e commit 38353a5e3da0b26fab9eeff13a482b135512d9c0 commit aec23025ebc86b770beb9dab6610b671e63d36a2 commit 4464bd825dd56c2f900038c5922408d70aab01fc commit 165ab7b4319d8ecbb689f3d68f0cd6bda4d82b1c commit 77361ed89a8b03c7e121f4b8c517d7be93ccd8df commit 2d017189e2b39cf2fae63984215385401b77ea83 commit 0c56705d8aae9696348cc320b71d531ede001b79 commit e5309d7f66105011e0597fd55ff2ef7f636f52c6 commit d8791dc7f941f3dc78ef2c6aa71d7c752d5b529e commit 8246370341e8e816ad22aaf8d8bfca850339ce0a commit 874714feff3128dc691fc309ee8b9d479f541aa6 commit a0b9e4531b2eaf066a1ccb2986f4d2f9efa6c313 commit d4965c53b95d7533dfc2309d2fc25838bd33220e commit 6b6d12b6ff204cc224cd2369bda2b0580a80a5b3 commit d445dd7b39c56a66872386a3ce0c8a862e59be46 commit 9d001360b47b792a475250bf7ef2bcfbd17ba09f commit 44961f6ebce9a7dccb2ec3dca312c5dbf85920e5 commit 6bad4ff84cb57f548d42a41091159b750eed9ef9 commit 6651875ad7796ed3cd84b3bafb3885d05bb543ff commit f9f4daf15398c3aa0aa2dcd05ed4ea2544bcc62c commit 2ff6a14b20298db0763772b62cd4fb030e6d7f75 commit c6e3806705d679edf135dff5d540a278fc406f15 commit 81298056a78c5163b216f17d17c43736e7069961 commit ab9db127ee03487785509f960e7b5b91cdb6b92d commit eb20cf30c57c37ed05f44966dfabc2c34bf46cab commit 5821a0bbb4c39960975d29d6b58ae290088db0ed commit f09d2b0bdd78ffd38227426fb2ceab7ebd141391 commit f06d1d66d54c223e4f0f73393d94afd88105b6f3 commit 24b8b74eb2eb578fee046c70681000f61afa5680 commit 7f35680ada234ce00828b8ea841ba7ca1e00ff52 commit c5cb0002d14b6f7aabaf7d67d0515fe70aea7167 commit 17f65658c8adce6233f9e53be59d399af6180059 commit 20e10881a043af63f2962a9e6bca64661225b383 commit 594740497e998d30477ab26093bfb81c28cd3ff1 commit faa406f4233ecbd781554ae0a850e56f53003d2e commit 68e355c00f2d58ba0426cf9a4d9df77077493018 commit 61243c173cd26fc8c6bea74d6d47a37ab520dacc commit 143fee0ccc97284e6ece1cf86b7d50721b522448 commit 0dc662318d36e060268751fbd3309660acd3c5aa commit c55300ad4a1814bac9191a4d2c7b0d74273aec7c commit 6fbfc3a23c98bdcda679161c4f4e31368008af8a commit 08a2fd23c6c21e5ef24248a9c1b09e929655eb3b commit 136788cc74cbd9fabc2922b77bfdd38a53eb7155 commit 87d6b28e4a753f4a0572a695fcee094510dc6519 commit 284498206f31e655fb61b1e08d0506dccbffe55f commit c4d7738c9efc81a4f0364da1e673ab1b1cf91735 commit feb54650bae25f2a2adfc493e3e254e7c27a3fba commit 0f28cca87e9afc22280c44d378d2a6e249933977 commit cac3bfcaedbf4d5c93cabaa7882f243099afb8ab commit 4e2d10443580d934188f226f48eda7d650711e03 commit 0381ac3ca2e727d4dfb7264d9416a8ba6bb6c18b commit 851dd8625320fb626b6ab6399b2402fd84abcdfb commit cde83d47482e2578432f9ce029748f4f0d029e9e commit bb50bba9c6c741f5e359f009dde3b25f12a84e3d commit 6f73d6762694c3e91c49e6708077a0de2a75f2f5 commit 62f8f5c3bfc2968461b0a74f0e393325bec16c69 commit 1b3aa89550a2ce4f4af41e11162c5cc0b0b07b4f commit d7053e631e891698f7532712066014ca140c8ff3 commit da4d45b7da937dfbeb918b87c66a5bf9a3079ed8 commit 26c763875e0c15921a0480e008e2be07665e7f56 commit 8728df26dd24a63b24e4e5a6c847172add2fa149 commit 9e68c3841390c43521d4fde6c51e91fcb2d4131f commit 5b644783396b2150eeccb9a079498cad5dff3c42 commit 64f6516e60b0bbe6abfc9f1d9f1999012e0f11a6 commit c11256f82ec82216f69dafee75b3d854d92392d1 commit 6aed665f9d8368ae1e962f44339150884bb47f5b commit bd63f11f4c3c46afec07d821f74736161ff6e526 commit 430ac054e5ea172a880e07da494f65f0b80d8fb8 commit d9c1452c0f07c2e0766a6cf3921eca182e26fdf3 commit 20f038d074d4fa52e88a36bebf25e81c88d7e6fd commit 9e9fa6a9198b767b00f48160800128e83a038f9f commit c24968734abfed81c8f93dc5f44a7b7a9aecadfa commit f17c655cfb99796918d96ae25261db2640407d01 commit e0d7371b46c7b47cdf5391717292033365801437 commit efeeaefe9be56e8ae5e5b4e9ff6d2275ec977ec5 commit 5c57c099f442acab13129c9e15ad2a0c31151c98 commit 9cc4853e4781bf0dd0f35355dc92d97c9da02f5d commit ce19bbe46fcfb88e75a6c7f691df4753a72daa81 commit 7aade9ceeb88d8ca674141d2c245f0107032afb1 commit 4c59b571fce6cedefc1c8e5158f7548f05c05ed6 commit ab9a0b1f3661157d144fb744f3a197563e8e0ff4 commit 25a2b22e4148b1ac91960e13f4f5de020ed04d05 commit 2f83658ffc8c259f05e79dc632e34b26bb8b75c5 commit b5fd0cf3ea377a7332721df8a8c8e7715f93c8d4 commit cf727044144d47c3e8482b9a7775bd3f04a87341 commit 247c7b0dac3cf1141b8bf5520adf2fac1a797aa9 commit e3c60b4ef42d4db5b8d1434fa1741abd7f2fc850 commit 5d6ec040ab44d23953a2efebfe02e41337952be7 commit 7fc83cd079bba8b96b0f46e31f26c8f31c814146 commit 7d188c521d9ec3650136e9b9c81c61b22a544ab3 commit fc801750b197d0f00c09e01e59a7dcd240fddcb5 commit 930e7cba1190a3251fcb01c8523ea9aed89d9a51 commit 4af48f1d1d0a6f050ffcfe83e939c9455d51267f commit 1db4b5264819a8e3aa62e38287bf1da2e1dc8894 commit 5c57cbc390b166950c2e6c2f0c4edaeb0f47e97d commit d8609fd1e0742ba3ad2e51bba9dd489dd03d8599 commit 56426faa1492289ff794620c4ed8c1847a420d0a commit 254a8d0c0071255eb19a81a32ff8d5a0beef1e34 commit fc8adb13d844b44c147b4dced292c74a1ab5cb25 commit 16bd48dc2b3b08d8b3160182b42e51eb2c274706 commit eb6b94db2f4a585d4a9b8e503d7377d2a23c1104 commit c750c4ce1ad69d3df68359abce70ee3d0064c97a commit 24f6fe3226c6f9f1b8406311a96b59c6e650b707 commit 16490922a95f4f67eb9d918f94a4f5b5bdc9eb80 commit f4e3a12bf2d1983b8f352b7719794c52be7e0990 commit fc67615f4ecc3b66bd458840927272aa131eface commit 11a8d095d86854bbc8697525f2c543de36bf5804 commit d9307f27efa531f034862bccf2985c5fa22c4b80 commit 407d63b3af881d17c39f16cdd8416adb0e4658bc commit 6537f79a2aae65748d402d6c46e79d9e473d42a9 commit 019fd800cf4a4514bbb502a52d376b01f02cc347 commit 9f1c8677724a0e6a6ac7a74d2b0192a584df859d commit 623411c293d180ed51f1c3b5753c5acf2c2a4077 commit 97708335b04df3eef0e650b0601cdf6c5ab16dcd commit c9ae7b866f32043d23a34d00a5e6e8d86d2cf10e commit 9affc1b87ecba31458567359b5a28b0b08920a24 commit 72aeb6ee0c78fafc476c02d1b19b5b38defcb57f commit 438eac25d033a1701d839bad16c6ad78f683a293 commit f2a5002541d0698509d4f3adfbfcc55a9c1e2dd1 commit 5089c4a8ebea3c3ad9eedf038dad7098ebc06131 commit d52ea3dc65a9d504afa7a03ff24e17866670bdac commit 526e6ca5d1d5fd22c79033cf5a8eb07d98a11274 commit ea937ad6e925994b94d17555e4c2f2f9a99234e1 commit 1f474c8742fd53a048cc8cc4b20e20b2614397eb commit d6aa8424bcac64b2608452589c9a09984251c01c commit d11737f26ffeae88350b835caa37c7449da22550 commit 272308add589bd46ddb5899685e25fc9f6a58b1e commit 1a65327a84db5b9081a51ccb1c562083f59bfcec commit 9731dd4cadc53251ef80b3655c8d841fed52fa3d commit c443514a7d6d648bc497efbe502e2a49738b94de commit b840b64bc8ed3fc46f6d6aa7f97c43862a33bea5 commit 71be4b16d39ac8b25a8a04eda66cb65581e1a03c commit a141d2083b462505727e14d98db5fc3cd43d59c6 commit f51d22b0d04aa33e94d663fb63aa61e4da168523 commit 5f034aef8479ac80e8732958dcb66b8eda650659 commit 85ee819fd08eff7617c186775fd958e6258216db commit f69e98a91a01fd7c5755dd710e94a17d6e9f583f commit a34136a3b3526369e1b3e678590e3760e7653f0f commit c2fbe663ec4f991832d67f936d3941f781884156 commit 2bbb54bbacd674c692306351d1be5a9b5e61a1e4 commit 28fdd0c32daf9a50a606530d54784fcfa29d88b7 commit 9a4c9de4838fd8ccfcfcfdcd7bd472dddd11f264 commit 3de58f22f544ec9c692993fb1f3bc77163d3d5d8 commit ebfb15262af3bec6c3cc263ce04164e44eea4b30 commit ac31a24d9188a9599dfbce7664cb11e6292873a5 commit ac78fa502afa539cce3a285e50d7fefaf4d2115e commit ba8b460445f8d19d530646729c29319c278dbb38 commit 68ad7f90c790a178f47ef08408d97a81cbb71b37 commit 914da384ae9a77079314f07022c18063c7e77778 commit 4e1db0119c64fd81509005a961790d263e99b21b commit 2595fe04a44d8ac7a56db27dbd1c54698d97fc0b commit 869968225718ec7d77c418e2f6be996206d0428e commit c78783f3227f41053e9a44f536d13f05383b875a commit 8d2ba05b099aedfcece0326a5bbb2e7cc33261ae commit c435f61d0eb334dc8367164a125aea45d9dd9508 commit 3f49f7591e7150c502aa8d04354941ec2394153f commit abf0ba5a34eae0d7359228f4319a6659676fbd0a commit 0f95ee9a0c579ebed0309657f6918673927189f2 commit 1556c3b4c7ed2c8f17f200d53897251fc68b7377 commit c0c87382c1a6985cd12a49a62a893361e5fd1b8f commit eb2983c09f4e053f2c3362763f5e1073b5e4cd7d commit 04770b082e2a207804c633fbfd5efec28cbc5673 commit d6346ae0779ef9a41562f5357ac28aa6a69b1c81 commit b8fec4400923eb91f995d7dbe97411b8991ea559 commit 651d4a0fc4c5c6a2d20c95ef814f0d4381f71d55 commit bf9719f8c89addcf1947ce2b29cea29ea9d8f875 commit 0256ea13d169e9ef00ef1b1c9df395b1d6bad6f6 commit 5c9016b2ddb375662aff802d25c96f5483a4e024 commit a50cc4955623685402ed6deeffad7df93591a416 commit 7a710a8bc909313951eb9252d8419924c771d7c2 commit d36bdd77b9e6aa7f5cb7b0f11ebbab8e5febf10b commit 8ee53c702f23d511b7f635a4eabbb85384149f8c commit e4a8864f74e9e9e4a7eb93952a4cfa35c165c930 commit 45c64ecf97ee370bbdbd8eed7aed9c8ff5d1b0dd commit 88436dec47a89d944e834e27d83a5dfd49d032cd commit f0978e92c2f7e9a38fa05d30a3e901d16a30698a commit 109406c92f971e739af04b278ef75dd0fee68a40 commit 781c336a6caa67c68fe3a25b108d1dc38b0e7cc0 commit df17ff62b626554c6048bf435a87c5fe1981e8a8 commit 3e29d3b318533ad031396a40322e0ae1aaece943 commit ac1b49be7fa8cddcc194ce66aa453e2b2cff5831 commit 319ff09312934b08b532e605042dd59f41b74458 commit c5dc92006d50fb55a916755206cbac1022373134 commit e7858254f9af9ad4f1570d781666e3af4c298a88 commit 3fe6c7f53eaa62e3700d8ae076e9c42a1d855242 commit 2ef6efa79fecd5e3457b324155d35524d95f2b6b commit d5929835080a60f9119d024fa42f315913942f76 commit 2b1333b80885b896807ffb6ccf4bc21d29aa65e0 commit 2c7676b6b1f57713f55e738f803ecaf91dfc399f commit 47fa33cc54615161ec5192389e55f3b95274f56f commit 6434cf630086eea2d091f122f5802582a05d9d1c commit b708b36afd5b5f32f7cd49b3bd4ab524698c3627 commit 93e163a9e0392aca7d720491100d810bfc3112b0 commit 1ec17c26bc06289d368e2523c0e95b5038c6eeb5 commit 96988a526c97cfbe6664e637640dca9406b0b928 commit 1039fb60463cfeb1fa39c6c48b5c3afcf5b89948 commit 3818715f62b42b5c0bcf456ded3f59ed3908cd6f commit e60c4354840b2fe8e1c4df3fdc5c17039824ff96 commit 89fc846675537f9f6ef62271e9d60556c873d65e commit 993a87917c2af59efb0ee1ce43c878ca8790ba1c commit 03e22ba090aa42dc029c25dbd58fa4b941c87ec3 commit 805245071240ae480503af29c7e31d2d7ff5c7f8 commit 255490f9150da7c6dabe468f3a877b92fd0f02c1 commit 720cf96d8fecde29b72e1101f8a567a0ce99594f commit 90bb087f66745ca48f6f5e43df99a1212d89e712 commit 7c1e1c5e0eb66bcbbedde92eb2bd988016cf2716 commit f16a716621a6edf4eef2ba1409594f5c780ea09b commit fb84efa28a48e30b87fa1122e8aab8016c7347cd commit 5e41b01a780893507a0508f16b9c4fa7f7a48557 commit 3fa214eea43a07c239bba54426399d7d175d0454 commit 47bef230225b8d295255d88e130edc0b45ddbaf0 commit c0398df2a195fa21122e566f54c1f78aad22ec47 commit a960e35ac0111b793dd07f3ce6dc3e1981f91679 commit db9b4ffbfa82201fd7e18f6e434469f3648a8bcb commit a64af136771a7c50818fdc23ad4ce140ed7b66c8 commit 15b9ca1641f0c3cd74885280331e9172c62a125e commit 841d742f094e00e514627bde65d7822e98fb3e4c commit 2327b13d6c4758926e57b5b6c3094302ae3b5e9b commit 3b5765df375c90d46316822131acdd5cfb1c5869 commit f5aa7d46b0eec280ac022664f3e8b6bc9f4ee099 commit fc98eb494c4be6aed076c1ad21d46d5950415ca0 commit e1b7234b4a3f5fa716a84b081cd0d0245674f761 commit e21c3adc6fba27a5dfe3fa5e83d947ad56cb27ee commit 87a3451e346be3f9a5d8943ae094888044314631 commit 7c021558929f7c80ed07e83a91d0905c31e8cd9a commit 4ed49c954e35559cb4a34ba049a15f54ec7fccf6 commit bb4f196b47b6554ba89f02ec60246f0c643a4bf8 commit e751e4be1eec4d427d91583f31ce56ccb5286a27 commit b3e73cbf17a95a85e3a943d7500e9e477d6ab9c3 commit 1f43b8903f3aae4a26a603c36f6d5dd25d6edb51 commit f7ba887f606b1895dabf718547cf7397924f0d3a commit 6626c5a4ea2ef1bba3e02f75f797523e168fe28e commit 8748de873fedf4d55bdd99bbb738ee7ddf329792 commit 51c45e450fc8529495bc85c2d8e309816cdcf959 commit 1320d6c7b0deb7219701a55397e93e6c73d00366 commit 262236b4f5a7d2fe31ed31d34669a9ea4f1c3272 commit 0081bc072837b66587904e6988aea1e0845b0294 commit 5d763a9955f0fbf2681a2f1fa87c416056bd0c89 commit 4dd905fd9429626937107ca13770aa836c8a7e6e commit 10a36226157035e84aaa58e1699a32b3de2755af commit 052eaf6af846e59073a842e9b9517ba9d3f76d4a commit 84a8b3908285d007db49532fd4b51d4b183d1242 commit 4d31819a3746b1f33a915546a4b1aa19374d1544 commit ec457f8378901d673b841e81d289b0165286db7f commit f04d275d94e164d24516c32437c988a323018f63 commit 06f2f7772dc7ff2e3734e654cb2d0b588076860d commit 3ab55e3a1ebc22c1e0b7c72261a8c9fe78a3a09a commit 4b33b5ffcf68de3a43e7dddc91c5dc86e6ed8587 commit f173fbe5b042e1c87593e3b06e85cae0094dd867 commit 98dd398aa3e021896adb7f2b1d0f6b2d3784610c commit f18368b686a86477a79bc240a3a1c655d88a2348 commit 95133f41b090b09ba9163b4469cda1d5ee230cd3 commit 2b96b036a6a5767b84f87edc2c0a1c70c91ebac0 commit 6bad8e4a0ec8a950d10d91cb1846f3ef3e1f4ae0 commit a3e731260b9325e2e87baf54f07619c6cb83931b commit 0bbd1c7de319ca5a08359e5fc901a0317bf5c0d6 commit 20cb72174ddcc86596286784416adb947195e45c commit 990cad0e4a9df4202cd482c192608caf6408e4b3 commit a30e8c13e7affd6fe379c6bf213133b0f917d1bf commit 074efb5cadcb3c9e40d536a730318bfab3384cad commit 04e6931a76e592e66e1014ffe4d13303ccac5d8b commit a3a885878e74d3d81e4742f8dd84faa27c8863ad commit 32e8ab05ed81c995b92f12b590c12ef951ca1129 commit 3e838f7ccf64b0e33a2f6d1c66158cc5ab04c86f commit aeb73c608c5b7fa6fad6d98694323e7629e93cce commit 2d7a1ef85d013699ef60068a9f37ab56ffb33c32 commit 2b2db1f9dbfbc61116fec83a51d16fd0cf49b61b commit dc597268225b2e39bca0bc0c5394e3e6266be2e3 commit 43af2220b3302bc04d72bdf07970ebc0fc46155b commit 83a3439ddb28e15afa66f52650cf3c1486ae6515 commit efb4fd107cfd9748f777a4e9015d803d3c9db68b commit cb4b7a23ff85740ed9e0a3aa4c3c0195654a89d5 commit 163d4cd26a18db7db68a98b4d1ca95d542ca72af commit fd6ae969cfa2b12c6082eb83bdfa648b15d9b3c7 commit c85c623ab406188da7969180e53c4b61e8a982e0 commit eec53143b7fe1ccaace434e03b5959c9117bf9c5 commit 14d6a086f6b91238873d3363f840a91b3aa062de commit 7482a65664c16cc88eb84d2b545a1fed887378a1 commit 7cd6bb82ad96fda0021421fed8750a522dff2aa0 commit dc6934d5ae007ad53c88c3e0b9685160a39ba896 commit 62a4ddcb79e073465f21c5cf84d80a2f22820c39 commit afd5cb3907eaf43e4ca88c162b92143551f0323e commit d976521a995a817007ae3f471ac22b93b1bd39f7 commit 0dc987b699ce4266450d407d6d79d41eab88c5d0 commit 009a3a52791f31c57d755a73f6bc66fbdd8bd76c commit f4f9b827d76d2fa23c2a2359b4e9fb417deec61a commit ab8529b0cdb271d9b222cbbddb2641f3fca5df8f commit 543faf57ee0ef6feb1ef60122c0abb9097083ded commit ceb180361e3851007547c55035cd1de03f108f75 commit f12d07d6e9f22bbe65d158de1435ec515acfb50a commit 64e06652e348f0725368853688d3c15784549fd2 commit 9ce07d94c9f80e1b33f5f6bc2c5a27f6cc56a6dc commit e0a9f1fe206a66c3507ff8b7da56f9d1d1dbb9c4 commit 7ac20b3a6a6bf1181a6f9d76c4d36b2395ae8922 commit 876271118aa41097d035c84f99648746b4a125f3 commit 373269ae6f90bbbe945abde4c0811a991a27901a commit 421f5410965dbc65b7bf7d2b2323203920ad370c commit 3d313f09f31490cec9d5251b59adeb6542c944cc commit fa3dab48defe1ae2f5a5fb56df5f5931fb3e45c8 commit 508f748b03949143ccda614b900e3f7d842251e5 commit ff83e6e7ab042e1f6f4345be1837d08c41b0a49d commit e77a541f5dea0a2ff9d6a40dcda9b284e1e736fe commit a957995618a8afe3efa2b5746c0a954bbd450882 commit 10a9035c36d00586ad4bdb838f8800be951db8d2 commit 50ef0cacc43c5b01d5d1d65f08af33513b07e2c7 commit f64e6e0b6afe047cb0d34a5369597fe0d188e94d commit 5027605aedec363b3209c17d382efe5e29211594 commit 7fc494f9cf8ec7497d4aab26a3b19deceab0fe31 commit 366e817e83e4d795fe3f6e7379bfe79d49cac89b commit 805ada63ba0567b15d10d40419bcc5e6f0b461e6 commit 232b95ba4e83ca0a77f19fc772ccc6581051e5cc commit 5e8034364c22050b8564060e79947d094a65d45e commit d54cda74a9a27d6a18c6b670f7299114272a5e50 commit f9bbc1c8449a51a049a1d6d436eb973b00b6cd7a commit d3a453416270f5c7f1bf409597d702a2230e5a6c commit e9fcc60ddd29994a8b2a276ee9b454d7cd449194 commit 803481d869a4c49337c9ae40197c668e365a6fcd commit 8c56d5105747189c86e6df975257580acb2dd223 commit d9e74da2f1fc42926c6ace1bc47a700f88ada696 commit c974f755372bceda2c3cdc31b4b27dd772172203 commit 91c2cbf9b6a6779ee428955fb202ae66c750aaaf commit db475c11cd592d626749c9ccd98f12c05f29ed88 commit 103f06fd478106fbc2394030599db5c852b7fa32 commit 9126ef85f2b8654060929c5b6a876376702d1017 commit 25ba9429e0f40d3b725781e70d2d6b9ce47a0df4 commit 831463667b5f4f1e5bce9c3b94e9e794d2bc8923 commit 2a9e9daf75231c2f577209af5ec62aecdf7ca7af commit b00de0e237da32793dce221119c3120b8276f4ec commit e5d6eeead88e40282cb6dff38f8effd6341561b1 commit 5171660cbb14f3359e8a8bf7523afb0789fe1bcd commit 7283f862bd991c8657e9bf1c02db772fcf018f13 commit ae25885bdf59fde40726863c57fd20e4a0642183 commit d6b9af1097fefa7e6509a4b2f03af45f9eaddae9 commit dc2cdd17d1fe25c8d25c306a90cfc9ff17a7ca4f commit 016a14beac6d407c9a51f0b92d1e586a00bfc345 commit 138c2fca6f408f397ea8fbbbf33203f244d96e01 commit 84509eede6203bc5ab43ce0361a6ae17e2a17152 commit 8f456104915f0f991a2ce059a640b0a6f807e2cd commit 8524bb67145d8a2b495fabcd4b5643010ea43353 commit 7d8097073caa334ed6187a964645335324231e01 commit 3cdcdc34f35eb4616f7e5954cbdcd3390da8eae4 commit 04155815dbb8320ecd17dd54e85c9a5ae5d63bb9 commit 12d74553726675b5c991251f349422a24c575e56 commit c92df6aa397b5a37cf06004a219b4fdf26234dd6 commit 5ba584ec1101cd63081ba7c228849acef962f6b9 commit d5a680548eddca0e2e01fb84b85c1f7687355e21 commit 2e25ae522164e8586520ef20bddbb41c97b0057a commit e97f91e8d39f8f5cff071d847c2d192904e35d0b commit 95be40c875fc848d99f231e77b341e7ab5d8125d commit f7fb92cd2e39357f14846d69ae0e1d8692371f82 commit 46a3b1125308f8f90a065eeecfafd2a96b01a36c commit 7307e91bfcd0e3f123aab01b30557f93923b6d73 commit bcb9aa45d5a0e11ef91245330c53cde214d15e8d commit 59bcdb564b3bac3e86cc274e5dec05d4647ce47f commit 0667429ce68e0b08f9f1fec8fd0b1f57228f605e commit 58eaa6b3fb636072a4f19e6b6c76bbf564e95b95 commit c83375699fc648f94787d00bc615e370cf8f5fa2 commit 9569ff1a188fe48b46eb1ac2ae4543c271e0d4c2 commit 882d90310f04f3f90753653b8787fb4d309fbbdf commit 01cf387b1c7f60527c91627528370f463bcb84f3 commit d7f0c8aff01340c2bed48f1e712a7f17c31b3db9 commit 1d3182006cf6eea26d0cd752f8042c3cae43139b commit ca0cb8959f7b84742c3dd612f5b044788cddfcc7 commit fe4e9ff9873758ad07e6f7b3088ae3a9dd3ff1b3 commit 5c4904ac34b76eb58abc15a52603ee59bf8be85d commit dd70748eda3f63217d5284f48651239a9721245e commit 9e225fb9e636b31b97e9d35324c2f9e43ee0aab4 commit 45ecaea738830b9d521c93520c8f201359dcbd95 commit 9ae55f030dc523fc4dc6069557e4a887ea815453 commit 1c4dae3e4639540fb567e570cc56a3c292afb6fe commit 8c07f33ea096a1d25fcefa4e904ce50aa2358876 commit 94dfc73e7cf4a31da66b8843f0b9283ddd6b8381 commit 8587f3732b37a39de205d8c42f5448dbe6aa6b55 commit 1796c0255bae9d3d4528b8b3916182b2bc4e1e71 commit 50ca65b44e50e66e370f34e83a1d04a41bbffb70 commit 5bdaaf4fbf85d47d08f76f41108d8d3bbdf15f1c commit 9db35bb349a0ef32184ab68f79cc36026be4585d commit a06968563775181690125091f470a8655742dcbf commit 79398d24da4c9294285bdedf67018ff09fe97bdc commit 0b58162e1207db5052d1fadd5a16eeb90720d765 commit d193b12b2fa6dc316e3ee8871b4ec05992bcb7b1 commit 7bb97c5a39ecebc8ff5db1491fe4e7a8129f93d5 commit 70f1fcbc83582419fd753701c5abe674e05db785 commit 01752681f1ee5febc9dd2da23f5dc0289ea125a6 commit 2639d3e44f9c15b3f29f79943ed58f769faeaef2 commit 46d44516aa6e142fd70287e829e3bbad0d2ed35b commit 7268f0a9e842c52fa73b9f5afc1bebcf9f7d48b7 commit ff15cea338d2c78e0086d55c8a9dd637a5dd3ccc commit c5cb2cdf23ceefd9ef319d6c0d6ac294dfe356b6 commit 5f278dbd540b7548bc5193552e6d478255c14c2d commit 6fb5ee7cec06266a29f25ecc01a23b9d107f64e1 commit 6e9c65f71eddef88f14b7210bbf30e6ce2409b87 commit 02b16fbc56e97b295239c83e43f186c191e42dd3 commit a819451eda6df8f8445f9c7b093b86c4d1919b62 commit f999b37eefd7f1d59bece1d94fa0dbee2f2d62d6 commit 6aa145bc943d34bf05f2bc24ea3aa36d70470f1d commit b71c0aaab9ef1054155a075cf5e8a1db7b37ca5f commit 964893d3caff6bc39f6cf5cb7d90fd78a810c535 commit 3d1ab66e043f2a143e4d93242de7710a9c98c829 commit 89f4b4c53a7c12d2feec0ecaa15b0493b2bd61e6 commit 18e3c1d5d4cf6bd30cf1f1bc10ffac7a05a6719d commit b1dee9527e654207c0980023fadabdd12d3dba80 commit e61f294c7e8da94bb1c9d66f2cdcebfa2dc535a2 commit 0f36d074aeb51a20508a65861d1518dbc231a1fc commit 87a7d5350c67aca513dc0a80f696d5583430d594 commit 3019a8d7c1891ceea55820ee0f7bb36192181aa4 commit 90d5fd317c745a80019ed7f12a1933ce6116e0e4 commit 6a4a1f6054318cd3590562668798304b4351ef36 commit cff35798fad565b5f8bbf4ef84ac698270dcaf64 commit 7d4705b33cb84bfbba04de153d4f5e83041ac393 commit adc0e6ab0df390907228abb76c6bf82382089af1 commit cf6067290034b9ebbe4c39733b1a4acc94876c26 commit 395ece6f14124c2245e4b7fe74932514f999faa1 commit d7cfea332cca483ccd3970ed4de73ed892643e51 commit 163a5a58437062ce4dbef2aab6de4d784043bcf5 commit e0f1e65b836c42741288a367eab565167a408b59 commit acac270d09828edda2d530d255ee75ceb87583ec commit c7f21978fa6aafaf7ad37155c7d3a217dc3d16b0 commit 46ae2af9a8aa168cbad69f21bb1426771339ac9a commit 414e9f520e897818302a6b1729aa2dad8cc928ca commit 3db7f894549a54dd6f8dfb7fe213ede83249bb94 commit 971e4a9781742aaad1587e25fd5582b2dd595ef8 commit 0d8928a94ba18205cc7b41793af333e6731e9d76 commit 071ebbb0d4826ce7c47953b955a522f503dcedfb commit 202804b9705ce26788c443a54aec47eae20f4596 commit 780f97cec866e1ec6967c66c2a1f68b8aa1e3f23 commit c5da61cf5bab30059f22ea368702c445ee87171a commit f929217499cf54a30be995aae65e9951ba079c90 commit c6a3d73592ae20f2f6306f823aa5121c83c88223 commit 3f4309cbdc8496373875cfce67d7b5dba87c3ccb commit 141f733bb3abb000d3949c3b2f119751fe93b0c0 commit be4e366602303615cecb7636075bb18b0d3cc33d commit 1dbd07e088673dbf0e10f4bcfa17f971fd870195 commit 525e93f6317a08a03cc42847b3e075c92a382c99 commit d42a738e5ae5a73212a83414648a4fae524117f3 commit 71b1669ea9bd962d419aac41bc179e09e504327f commit 938d2fd17d173d0489b1bc96b87a1dd93954dc28 commit 11f01dcf3b32d01982d99df4492feef4332cf0b3 commit bfe53be268afd2248d1e28b4520361693c1c0fce commit efeb3caf4341357a7f4745c0da643b13200f0b9f commit eb1c535f0d69e3ec7679d4d714bb2a9765ceda69 commit 5cd561688b3e8a248fdbb37a1b10801b06736865 commit 3b05c960788439dbb47d0e62335f23869696b079 commit 8618b8489ba6ecc025be033d0fa87c0db53f5211 commit a913bde810fc464da6f12f3f19f3483034cc7e16 commit 3461b040a90d723c93c9d1c7c11e3464f5cadc0e commit 170a41e9bc07618d164f11b5154b449e9c24973b commit a6cc3c72aa0e8fb10b695c1a0c4ef07a66b3c2b0 commit e33c267ab70de4249d22d7eab1cc7d68a889bac2 commit 1926a6b75954fc1a8b44d10bd0c67db957b78cf7 commit 21779cc21c732c5eff8ea1624be6590450baa30f commit 1981c35bf7533d70f295b184bbb638d280fe2f36 commit 207d2073c648614dabcb06863d990f0c2a32c4e9 commit 73289afe03619bac585b69f563d0bb9a52e67722 commit 72bd9ea389c70ac948f48d20c0e4ae70c0153940 commit a204f9743b6808ca658c1bacedb34bf4c7e6f800 commit cfb979f71736361ec564d47d0a41f07e09983e32 commit 4bdb9d6501763e83bacbf26846754c567773a1fb commit cbe07c982dbd206defa10ba539e046767179edb3 commit 26093ce14b75bb0c4f0088abf2e11c351abc18c3 commit e0e146d5567317d6ba7d0169bed55d1d9ea05a61 commit e72f03f4bdc4f3a251343cf343bce28c28cbac2a commit 85f4bc0c333ceed24cbc9f69a2a77fab1ae3d4d1 commit 90f33674a0756a6f0907b8f6350cec3f7be4032c commit 64a30aaf0b0d9dcd52af526652937c1350a948dc commit 88ef4c5bb36bf60b317b74d8652c7766c9272a7e commit 2b2b3a751b29a09942a15bc0c4fed940b7ce1857 commit 740ccea3d36732346387ce882c50a7e4c3599316 commit 15360d7fc35b6b0f46240659a129c9255345a41d commit 7e053bab30e3a97bb681cec207a87413a024fc22 commit bbb6e5ae7ccfed7be06b5e8f99602100d4251d5f commit 00fa7f031dd4b885175da390e24cb02f6a45977e commit 48e03843f99857a561f25fb8e583c9a7dee5b81f commit a5eeb70de411ef8b1cf5d97806ed6769b84be872 commit 97ca308925a50aa80711ccfaf814fa3898374862 commit 82a562ab5f0a918ef905c29c759b4f0c788754d3 commit e73b386e75586f28b9b58641938ae0feb340bca0 commit 6366b00346c0fe8ae95d91eed3dd2d04f77729e7 commit 0147064588253b9c07766bd6292a6159475c2790 commit fff7eb56b376cadc58af14df286009086cc4d80f commit b3859b16d27fa58f99ad6221ea427dac7d751e70 commit 7c50a3e99a2eab5b3a9f273ea9e40ce919a3a3e2 commit bc19909f19fdc8253d720d11c948935786fbfa08 commit 0c7ea6f824345ffbb3b4ef880c7c56170365bc1e commit 1daf740137275aa56858ea1cd194eb3c1f6da5a0 commit 22676bc500c27d987a0b42cbe162aebf783f1c38 commit 8a077d9caa3a274de36ee2fe7b608041f5690343 commit 4984dcdc1f78529a0c699c1931971b7bc5e32a04 commit f64f3a72835fc63069a87c2811b61c9a73033c72 commit e9a7d236eaaeb1cdfe20e583e2e1899b26d7469c commit 9a714dcf1039d1142a1c3ad81db09d2706230e00 commit 8bc3812d0b33c214c365fff5dfb65397ad6aaf19 commit c1127df9515ca781940927deffc5ae657ed73a5f commit 09de5cd2c170b19e04e37439a712da52a0535015 commit 3b779044c81754f094ee88afe431d839e3a74aa0 commit b278b738c3be4f383796d09ef8fb6e49fee2091f commit 7acd7ab0297a37e44df928378f53d4260b25fd2b commit 427a60c1c30e1c0e9d0800a63df51985aaf3a26a commit 81990c3c07905af1e316f048a1ff456b2be224ad commit 068ab0cdc1a97628f7007b568adadc2a1fb08384 commit a00a3cef25a969bef8cce011c34b76071756dd05 commit 3e211f23aa1e1a3223edb64c4bc25cae28a1e3ae commit c3c483391bb23e9bb8d8a51e54fefcf508b1cce3 commit edadd6fc28b24dd5806dafc4b38633494ff423e6 commit eb08accdd8d966e4027f8ba52f43faffa3e6dcbd commit 61e419f651a65ebe01658b46bfc317896cac0eda commit fd3bc691fc7b4e553f49bc79f86b515ce2638141 commit 2e02ceb73ff87193618a21c2fe165632f52b9b9d commit 89e2b4373ae5215f5c5d1b7726549950daa77018 commit fc25fd602b1e101a45650475a8d2f00d7bb8e971 commit e660916b7f4dd3f17e5f28707213b66c1553d83b commit aa1965973cc734bd61294b675ac9763cddcac0ed commit dfb02eb6bdf84697dbadd69a7df12db612ce4ed0 commit a57e7345cac12ccdf883f9825523470850166635 commit 47a4fb46797016228198e63a7aa679841f80889c commit 90f5514bcc1a40de3391da552984717fb83b16f8 commit 819da60d77c9f0ec9f069cb27952501562a2e17a commit d8b599bf625d1d818fdbb322a272fd2a5ea32e38 commit ca1dc50fd5cfd7420faa46183f84bc203fae156a commit f24d1d45084155c59a135506a37bc4db10703fe6 commit 3d9c653cf635849d0c24a1ab17c2752a19f4ded8 commit b94a1a207de5e06a55b5a8259073fd8d1637f093 commit 027c38b4121e7d9ae43b2fa21b35582d1aef2a05 commit fce7bf30d3309ea325a7ec452456f8f7c079f622 commit 7d261c50d9c1adb70f6ac2e26edbc64c774c21ca commit 371409df9236bd1abedc143e76fdd7080cba3ba3 commit 1f374171fd345aaad9fcb30ac3acd255b5cd2076 commit f72fc9bd226979c272d6f829a3c60c3d9e8dc969 commit b83c9e3dd5b5dabc507e79c3f03e700a20b2a4ee commit 30ef0808e61850ec9dd105fe0a21f7f9a7c69324 commit 34ce1a6a29db41d5d4bffbab0872b1e1876cb4b8 commit 75072128d704576c39b3ec36b2cb84af316d88d2 commit 9da2902609f7519c48eda84f953f72fee53f2b71 commit cc3cb791f19ad0c4f951f38c98aa513b042ab329 commit 11d526f1972f486aa222fdfba751d2f0249c002a commit bdd0d7e290e0e4c8f7545fff89770abbd22bd51a commit 8c96e566d95aaad910a54aa0b21b7753eb615a00 commit 2fec539112e89255b6a47f566e21d99937fada7b commit ca437b45ac6d4baac348303920dae0fdee68e937 commit c59d73d43fce92e79eddc047e1961054f1284384 commit 9a92732f040ae3aeac017d0e80501cad1127a13d commit dbeb232726871352fc3e688ff5b02897f8cb0dc7 commit bcf9b296627c6b832abd388b5364262853430262 commit 7835303982d11ed700ce6bc530303272bfa8562f commit 5531786537e4fcd82a221b0bd01ce375942b3854 commit 9a23fcf79dc647627b3780284a156cc6e7bbd7c4 commit c028d66e6ec471fc24f70204768f43594a6a8b4a commit 872642edaf4228040473349ae0ee872264fa67f7 commit 35ba8850b673050b71b17c1421079031f4fda319 commit bc99f1209f19fefa3ee11e77464ccfae541f4291 commit 344feb7ccf764756937cfd74fa4ac5caba069c99 commit 6db5e0c8692e590734a7ec7455365d9cbaa15ef1 commit b45b4f880fb660c4bd4794a2ca3950c4570e12c6 commit 737dad0b5d609f464cae73292de646d3d016ec73 commit 88c775bbebc9c5b080d3cbbdef73a31eaead9e5b commit b7580e669ca0d624b122455058aa6fe62c0fef44 commit ac9257f0f50871b7459dac48a5c11bc7b2094245 commit 636774860a6240dcb148f9a08d333a697f3c74f3 commit 14eb72ff580de169212bfc5222499febd312a252 commit 8a076bbcc1278c6256c57915bc193890a6432c6d commit 90bb21cb692ead906738d314f3dcdc432aaee015 commit 149f6d1a6035a7aa6595ac6eeb9c8f566b2103cd commit 9dfc3ee1b0f22d9415c9b7c316447d47d4a702d1 commit 922e7ee31defe461d8638f1277f0c8215c0707e6 commit e2facd575fdf13b718f6c833ed546467a3e6e3ba commit 59a1e9ed1b406b1ae7cbbc612ce00d459987d028 commit 80fb575678b488b920cd9100939b60d480101907 commit 50e8ca0b675add8eb0e95938448a4a0f9fb0b6dd commit 33da97894758737895e90c909f16786052680ef4 commit 1ea7fe77c0db843d8e5f96ff8535dfc941e88694 commit c877bed82e1017c102c137d432933ccbba92c119 commit e23a5e14aa278858c2e3d81ec34e83aa9a4177c5 commit d9e019bb396fc9448b104a6f4cdb7acf8af02854 commit 911dd554a129081f056417a30054f24ef6818e3d commit c4feba47aad55aca90d9a2b104c0345ca6f93712 commit 61c1f340bc809a1ca1e3c8794207a91cde1a7c78 commit 4ddf8d7dedb881c6638850f1b74ff1f9967c89b7 commit 6d7291843ec5008a9ff1c011d342679fa9bfe4b9 commit 0196cc65f91710e30d45cea78d75fd616d705002 commit 66ff4e4ed471fdfa9ae4c49a0abcf5d5043ca65e commit 097d56cdcd77639bce7e205adaa22b6f5e7d93a6 commit 40184ece92ebc5adfdba84554bffb60ef0e37029 commit 7ba01b504c16ae64a8faa5f5ee9a809d424cdf0e commit ea0b20d3bd96f9ce2a1e9d886175411c05dcb179 commit 89ed996b888faaf11c69bb4cbc19f21475c9050e commit 9306b2b2dfce6931241ef804783692cee526599c commit 57b9f3384c64e37bbdad7f127625ac3733d11e5c commit 017860c909b03fa687d29a1ca46390ba9a007b2a commit c4e85551198ea894ac29da1a81becfde65c11f78 commit 236124d1167bcc539432b4f6fc19ce1fa015e2ad commit a84e43b81e45b3da19e51e1e9426ba9e4d0fd1bc commit c0ff84cb58faff9fdb8d955c6e1e07fd75d88c16 commit 58e969b60db0f5ca9abf0a8df28086efd601f38c commit f1549c09c520877be211d483d3c6f4e7f77d2588 commit 0fe6906203d02d050e86b3398219df7bd9e8fe47 commit b7320117b3d36fd6fe542bdac5f7af0a83bea23a commit 2d7a1f71837c0922645143cc270b5a4834595544 commit 86ef6eae0820aa5393983c38c1c5ff9510ca9118 commit af019bef6d6fda044c8db232c97d6be2fb64c741 commit 1f969d28cdbf99c28eb08ef0a0017713d6909347 commit 78486da8ceb2d5d833a69fd695bb9f5a941b73f6 commit 3d4de925356177dad0fb5869d1ea537cfa033009 commit 15c735e7990fdabb466a3341b6b2dfefd987127e commit 76611a84f235126f3258fbe4a25d85ab326ad6bd commit e5028e9fd3bc7c6b916568e5218f5fca5f0d0a75 commit 2a93292fb7860b51550d1222c151de1a9fdc15da commit 652284d6db17f3c7810495fda059efdd84b61fde commit ff613f7ba7105b17dbf251ca298d1de9124a9875 commit 0a94608f0f7de9b1135ffea3546afe68eafef57f commit 84900aeecefb281964c0ba23111be4809477124e commit cb50813998b5aed924323b1b46471e8c60b26692 commit 1e866f1fe528bc0158cdcd589053753032bdb52c commit 3fb0fdd7758d3b850db82899f532dc71f6909c02 commit 43195162fbf54b2cc35efe295d2ed072d2bd4048 commit a0d10c437c1c9859d24a16b90abf85120603b4ff commit a5e4a53818ad585416a214b894fdf568443d5293 commit a91d1a17cd341548fd9535e33c331a2756acdfae commit 17cd10a44a8962860ff4ba351b2a290e752dbbde commit f5ba14043621f4afdf3ad5f92ee2d8dbebbe4340 commit cc79950bf0904f58e651747c17987270f1931c29 commit 8955ff11f56e1596e9f80ff6fa8c48e53047654c commit 806b52287a96bf5812a6be008d24add3f18952cc commit d5c6909e74606870bb59b962200cf75eb25d6d0b commit 3cffeffe051a961417bc26f2053bced4cff83119 commit 41529d79ce1655bd7463c01d9813d0abb6fb08a4 commit 5439c41a80c00e993d18d1cd4407a6a82b35d963 commit ee7b62e127c8cc6db24f83e5e116357649f6e41f commit cc35e75273fcf4fb4f12f9d8fd979be7aa808041 commit e850f6b13a85b451411bb74a526bc08706129e8c commit b7be3ae759160aa3355ebeb0583f67fb9bda4dae commit 4fa05a67b558d2cb3acd2bb299b91220d405ca5e commit 7d09c7606346db9a48b62b4e02454a6b8f323043 commit ca0367ca5d9216644b41f86348d6661f8d9e32d8 commit 53c26181950ddc3c8ace3c0939c89e9c4d8deeb9 commit c96cfaf8fc02d4bb70727dfa7ce7841a3cff9be2 commit 60693e3a38903e39e4fac0a9849b698fc36228bd commit 891ce1c9623f36194587d02774ac3d8c30c3ca72 commit 3890f749c590a5a33f0034362be3304b69ae6d65 commit 6f2c8d5f16594a13295d153245e0bb8166db7ac9 commit 29a249d72d31cde3cd24d43354b40019efdb48b1 commit c9eb2d427c1c428e4f4e29f1e635b9a83236c015 commit 868941b14441282ba08761b770fc6cad69d5bdb7 commit c83dee9b639469b6563a281f39deb99311f16bc4 commit 0b15205c7325dc20b7da0068307670d222d66949 commit f6a3f66063ca39e7ee5fcee59e889c5ec4de9dc0 commit 75510fac07cdde23c9217c8299b6cd64c689fb2b commit e4b1edf48fa37cf4f5ca403e384731fe28d13691 commit 604d3a3f0dca0ef0ab0322f5e7af8c70c5ddb6d4 commit 748262eb400e809aa13e3485f4983c3db3d0ebb3 commit 49062ee374f7a47443dac7e255bd419861de5b43 commit 4c33e5179ff1a09cdfba38fa4fd260ae6735d3bb commit 912db6a58738e8be502838eb6a88f207ba356cd7 commit 98a90f1f0fdd112b85b16ef6ceee69f319ab9311 commit 958afce98c2c86732483458c03540d3c6ef45254 commit 3876a8b5e241081b2a519f848a65c00d8e6cd124 commit 606ee059f85a9aabb0242cbc72852572a3c40432 commit 133dc89c640f965c2736e70d8dec0699d763850d commit 2d04559e0660cf503d4e46cfbd7421d0b6156aa1 commit 50fe04d46aab77cf8fc3d48fbc38d872d181a849 commit f746556aa9724d740c44861db0ac005ae50e1332 commit 75a9ad8c1b7960794c16182fd90852918ecdc0a6 commit 9c913f38032e873758d1b13fce720a0c2cbbfcb7 commit 5877b7ddbc2502a7ddbc07970cf5c15972c22de4 commit a53bc32182d7a2a934ca994239396fba21161c8e commit 4528c18605654bea022d294c9ba2e93600d05a94 commit ce4b4657ff18925c315855aa290e93c5fa652d96 commit 5df79aeb6e0890d6f5fd6e12c7ad238a1617b210 commit 86bd6706c404ea703c11071d8b600d46bb98873c commit dc2b9c70ebca8e5661d33a15ed2b99d4510e90be commit 40835624efcde7f984cb859035b95b5a526d1a9f commit fb3e8ed0438347c63650850c011c99deb59d7e62 commit 615dc75fa6a7fc6cf029b01cdfc9d4b78919e71c commit 8a9899c95d1cd709d441960ca325c6c8184978bb commit 0bf95a1ebd48866ad1438454061782d4d47765f7 commit 044b5cb9e8bfe4f006546fd98148e95489a6e803 commit aec4706b0e70e0cab2d0650b63cf2ddc1b154352 commit c8a58ce18ca36b62749e326411176554462a5e2c commit 8b076fa7c5befd1d3e1d892ae466f5334e4c6c99 commit 25f7cde8bad9fe5943851d3d602e9fddb7977961 commit 5d945cbcd4b16a29d6470a80dfb19738f9a4319f commit cb6b81b21bd9cf09d72b7fe711be1b55001eb166 commit 417c1c1963549e9a48b83ada59d90258e38c6594 commit e8f90717ed3b58e81c480b3aa38e641c0da5a456 commit 2c9e8c01109fb65a63b6830adeb5d7c79ccf26d6 commit 473683a03495a5ed9c75a02c7497f32d6cf92c7a commit e6c64182ed946f1cb65799de9ee75f8bcc42b2c6 commit 074293dd9f61f11898f1f6e01f1560fd4c474025 commit a983d263186996002ecafc72f9a0dc5a3a2bfd6f commit 44b0c964201e1e2fbfcdab4472f9260048befbaa commit 557f9100c74cfa033488563240f567466613cefa commit d3e19f76121178420c3efc9688adfd5a448996e0 commit 4f5a17b221cc48d66cce13fe1531ca8fc99078b9 commit 1cccdfe21eb6b8dd4371378b4b61223eb37f1ef7 commit 54c3e9493cd502d63ff3643fa70b5f98b3201846 commit 869618c3440227f848ff9ac55aa64d523a60476e commit fbcc38811fcb47335899a3776b4fd5670db4e228 commit 4686177f7d2140cdd9d031702c2b53ac4c89340a commit 7b5b0d196c2e6cad87cb1e3ce285c7885f2bd796 commit 660f46e16c4b8a34978012a9f10a32a16db3e98f commit f3cd57e499e6904b7e356d11bd33d617341b3f24 commit 869b10ac8d2300327f554d83f4dbab041bf27d49 commit 4d37fd51b4440cf6a02942c0a169ee18a902fb5b commit c19a23fadd279f433424b4d6436fe4ab0020e20c commit 37edc99979b717312e60cf3463ab756f5a3d6de6 commit f4b4e41a2e05270cd90c5817ab514ace95555874 commit 26749aa8d1261bd6f2db9d019276d4277dde7df8 commit 041a11095abdd52b38f1ea1355357ecd2b66c0e2 commit af14e7c2fc9b60af70b410a7dace116eaa5e4e65 commit 465576ca481caa9cf18550652efdc6b103701c68 commit f7bacd97af853a9bba9bb8d1baa12f997e60122f commit 792a0cdde34d417bc2c8266d8015c5fd58d44a0d commit 8813381a62e1f1703f8fbeccc5fa4fcc988be882 commit ccc4200cfb2518fea042b16f090962b07314439b commit 25e751642a38204da189e0e239055702caeb461c commit 34a65beccdea16a12d862e94d004ccf00de8cb3b commit de0246ee9fc95f1072a0d26ec4025a3545f159b8 commit 25dfc8fab47fb0d7231154e07e20b5fc0221f96e commit 326f0672153e0ff5b19f0ff9d6b5f75a64a9c2b5 commit 42c7de9622b2ec64f7c15c336b75f8933ea7545c commit 2207efdd8388bd300a0051b1775705d890abd306 commit 44998fbdcdc39253cb10293c3c27dabc040ad7e8 commit 34a1b0f90e33b00b431d6e8636b787111c6c29d5 commit 8f5bb69dd453666ff949079443ebce24381e163c commit 4cef2269318cdf5beb70c257f7aaba267f2157ae commit 0339530d8879cbd560cd3d3de5138dc797744274 commit 5b4ee98713c7b42e270835fea08c3b6977b48e7e commit a4f8f294fe99a678ce0a50d649732440c41742b7 commit 4e14e0fc9f0e47d9d3d39b6f92724f2038ee6e25 commit f7907f6db81ca08f4f8bd9245b8fecd49bc82f6e commit 197485c695430ab03d9f4a96aab4d4f76787f7c9 commit 352b25a770712a954b1def1b8c6429b0825ee0b3 commit 9a1dadb6d33173427b6f6c89ab1ddd0eca636afb commit 39a6f3fe98ff03baab364acfec69a6f9803ce22c commit ca0273ab447853c014983951e2183991f8dbc7b9 commit 1a3408259bfd5a383b3c7aa7c309c9fb81e35ce0 commit ddd0fa1f47edd794736e70d165341a5c4ff78e47 commit 5085e0361f5a3675fc0d0919f7b69aded453ceb7 commit 77299956e8867a4cc19c5fd41b797c5152aad1dd commit 1c05d9e53d2cfad1f99d9087a8ad24da4ebc0905 commit 0593ad215359d51514c1e6c81ce28ea598efed6b commit 74097f9fd2f5ebdae04fcba59da345386415cbf3 commit 7acc487ab57e076c823b2b7559aa9e3997962ca2 commit bac4b41d917a1d999308bb1e779f8c3b39c19f67 commit c3b3f9ba25e6cbe59673505fbc5fff6c4cda0ef7 commit 3c3abac60117cfd09460980d9a14c253b37f7b00 commit 86e4863e67a9bd1e257f162f3d740ebb61206c91 commit 9dd4545f65679042273a93054ec3bb665ecf7366 commit 44abdd1646e1fbfb781972c0bffc90b4eb3e87b3 commit 34a255e67615995f729254307a0581c143e03752 commit 3616d49da5dab635c4bb0eeb183b61df72cd0757 commit 4c5aa594928f97593502a66d5a9075f5f5dd064b commit 8de297dc046c180651c0500f8611663ae1c3828a commit 44584b417a698bfaac0c2577e7cc4015ea7359ce commit 2ce0b2186c057a54a4d980b296bd1659d0091716 commit 319568d75f5f91cd4f362b26e65af2a4437c64bf commit a7cefb0b40dcfdafedc54a3ba659327d0336956d commit eb54e014367e1700fa5b94e4c788520081a70661 commit 4a21ab548a7ac19b15aba9aa8df39972ed82f4ad commit f46e3f28f89b893685ec9204405677dac410d8ad commit 72bb503097e79113503dc6d1d49c4063ef97970a commit ee4a26b4ea029aeed749c6560ed9eba224337b04 commit a4f1b04216023ff0f4cd89328b59ee6890248130 commit 6a7379f196230cfa35335ec627e0c0e08da6a8b8 commit 05674cc9ea97079ad7c819628e3e56b046c2f497 commit bdf4473394deffc94c16c0502e73f2daabbdc1d0 commit 40b31e5355ba8c4f7e58f1c458bbe46763dca541 commit cb849b4dc73d414149fea96330cdf96a82919fc9 commit 1c5a2fa97b91d37375f4fc8aeb37c9456c93c828 commit 0d60f2b47d8312d6a88454a373990579624edbde commit 5ade1b951dec63a81b23c2ff75c5b4c191977620 commit b5e924bd7cce823e604f9b7834fac846a910331c commit 1f5dcb7365e4e0a8a6fca44352218ccc6f41a8b9 commit 81f776b670a0eb17bf9cfbfd2df32f66a34bc453 commit 4074f96d0f2db2fcbd8e223aebe60ca445b8aeae commit e216431b63aef8b7d9cf6e59aea39582d48b1808 commit 6290ba4c1656ce2374996b2ed11c3997ebbc4af5 commit 493af96d61b1361a44d016057e0fc6e5d4c92fc7 commit ffccfdbab1056954fd400d2864a1c1b38915c143 commit 3facca7489be2d42c6256350dae72c342a47d7e5 commit b1babe8623f91a71a5acc34eb323c718e0413b74 commit c13423c63f73ee2f9807fdb2a3a7e647421a8114 commit d58715704c5c7d82d7194540780fb335ab337da0 commit 1b54a0121dba12af268fb75c413feabdb9f573d4 commit 7786fb366e598e984ee9307616b0c72979bd191c commit 412dfcf34e0695fa1714ad422b2a5d0ed1406437 commit 0407b33fadcd7a5d31ba3c473cef95b2b418d8c4 commit 92fba5d3c8f5b757c4e3fdc89afe76a8f6c4da68 commit 168c02994399f2714bc6c73f85b7ce4d827f97aa commit acbe9ecfb7fb14db868ddbeda8f43e623026316b commit 3517e6b6fee05b6259ca21741cbe5d7bf68aa672 commit 1c6aab75ece7c1d450e4561cb2263403eeb7ae2f commit 79c453af55d9f1e85b906211ea4051364d28dcb4 commit 9a4514fbffda6083d9f7fba4882142686783cfe4 commit 7bcf89eed48f3fba8d0e2c19236e7dc547b6e037 commit 889fcbe949bdd8470931a90b91f273ca18c510c1 commit 95983aea80038539ebc70e41e73e9bb4eabd1a92 commit 32dd9236698bcd2ffdb69954b167a851fd50182a commit a6fd8f936402c3bcc5ac6aed9cca8e73b5ca08f7 commit 1b255f1ccc883256e23db279ea164273ea0f7462 commit dfc4005f8c172eea359f9db08c3b2b0ff0153699 commit ee8b1ef9a6b089abf7a9c7d094b6e93fa05f15b9 commit 2bc7ea71a73747a77e7f83bc085b0d2393235410 commit aa316247c726d96f0bc205413c54ab49622ca737 commit 8585732baa40455fbae9575d0c8316f4b0cf68f5 commit 1f83db6be37c53f6d395a41ee2602e3280ee60c2 commit 79b2c54f19110235041d8f1250e3c3694047a902 commit 4959e609de1ed4199f33124a88a4c9ab95f5cd9a commit 5640cb8921c9aff1270557482237e06af00c388b commit 8b3120dfc192a4c61f73a0798755713ba2d3eb8a commit 3f5a3881f1e26aa5e3ae34e34e439edce291ef5a commit fcac1ac7f1e3fb877aad51c134ff2776bd24f9d6 commit ed63b7cf2d6ebc01a765be31630c3e4a64f7f095 commit 84e2fd649482435c3e12d9099784976ce8bea1e2 commit 203dc777865621b0c7f8f5b19ec18e572730278c commit 05381583a1d0c38cd2c4907ee93ec624250b8912 commit 980e09e8b74c26baa32f0d65d272ecb1401606c9 commit afb185008d40930895a7f7465a9661afeac0b84b commit e3b2bbb33e26d0a0327f878782632ec35cf96a72 commit 9ced2e492ba9436524a2beed27df730042cbcc3e commit fbad6c418e1e63a29c83e8b56a3636915406a9b7 commit 292956cfd9d38835f95021445525b35502837ff7 commit 64f857b5479a7ce2eaa56bef5f459da5542ad90d commit 931fa55b2fac18f226622a95e42bc968bb852cd8 commit 4557489e0370ac0e9f1f5f100f300e9278be0733 commit 1422ca01be6a816ec5a445a6fdce00342adcc5f8 commit 1be3188a6dda544dd4d78503eba5f5a77462b348 commit 66bd94debe4aca171bd0220de7af3feee6542d8a commit e3b0079be8f0a2ccb533f7e38757b27ab6b6018c commit 06ac561fb0edf868f7b292fb4a3c8ffbbb1e14bb commit f9af3c16bfe19d145cf0588afa06d7f1070cbe2d commit 3d2af401cf851be0bf2d4d89af6f120819b786a7 commit 0dc204bc3f199de0a0924f3d5f7c26295e5c012e commit b2065fb21d9a789b14f737ea90facedabadeb8a4 commit 53bd83dfff8618d4a1affa171288b895add40476 commit 7c8e4a257246399c4f1ff43a06fc53ec53423754 commit 2182cb7029e9c5cc4b63d1c5682f62ebb65cc952 commit 674b9e08a02903fef75beadca0df490348d8f560 commit e22ec18750be01298763b10f7056ec8edfbf064f commit 6fdd2077ec03f4b34d127a1713ca19248539d6e0 commit 736f7308d3e6201322142d98abe4e9af33a429f7 commit 4ac77cce84a4afa3b76fe7c763aa3e754cdac422 commit cbe93a234bcce489be319e678dbf167b7a5f915a commit 1c0a90364859c17d57a7f08d6209b73e7e1142cd commit 47231d5e396a94e869b877bb1a0dcd526d91ac6e commit 0da0def7705dff7ee938662ea06f90770cb6f9fc commit ed67f7292b99f5d3876fa02dd51a43f46986c61c commit 1f3dfde4fba4f4b7822c389b9c994089a4ab588b commit e1c42213f3f9b24200d4b60da806303dbeae5a4d commit 1ff186ff32997049a6d263031819517eab4e93aa commit c10100a416c16b598bf5155e759307b34dac0d7d commit dcfe584b00f1d6dcbeeb769b939f53a3c4f04143 commit b834fc94c102eef751ff741aa0d9b814d0a81af1 commit a16161a869d5633d7d9a825a2546b68953e3a6f0 commit 492af34c9f67ef864319d0db930c8518a04b1937 commit 2605e60c82604508f60dbf427b82cd48154d88ee commit 7e8a3ca972adfc89609718c931577a86c494967b commit 64f991590ff4410041a70ee7ec2db079bc953929 commit 541846502f4fe826cd7c16e4784695ac90736585 commit e05d5b9c5bbea80313d8f58c3a80a18839b25480 commit e2b542100719a93f8cdf6d90185410d38a57a4c1 commit f00654007fe1c154dafbdc1f5953c132e8c27c38 commit a782e866497217f22c5d9014cbb7be8549151376 commit b44f2fd87919b5ae6e1756d4c7ba2cbba22238e1 commit 54d91b55c7f3f9f2c86e0b6be4501433b32ddc89 commit c20ee5749a3f688d9bab83a3b09b75587153ff13 commit 798cd57cd5f871452461746032cf6ee50b0fd69a commit f0a892f599c46af673e47418c47c15e69a7b67f4 commit 6614a3c3164a5df2b54abb0b3559f51041cf705b commit a9cf69d0e7f2051cca1c08ed9b34fe79da951ee9 commit 668c3c237f5ddc2889879b08f26d2374231f3287 commit 1d239c1eb873c7d6c6cbc80d68330c939fd86136 commit 9cae5b3189eb9cd12a9c3f6e8afda2d81958640b commit 232d150fa15606e96c0e01e5c7a2d4e03f621787 commit db100e28fdf026a1fc10657c5170bb1e65663805 commit 180abeb2c5032704787151135b6a38c6b71295a6 commit e5a95c83ed1492c0f442b448b20c90c8faaf702b commit 59eda6ce824e95b98c45628fe6c0adb9130c6df2 commit 2826d447fbd60e6a05e53d5f918bceb8c04e315c commit 9d50bff40e3e366886ec37299fc317edf84be0c9 commit cf4b7387c0a842d64bdd7c353e6d3298174a7740 commit df4aaf015775221dde8a51ee09edb919981f091e commit 2939deac1fa220bc82b89235f146df1d9b52e876 commit 37bc31f0e7da4fbad4664e64d906ae7b9009e550 commit efcc970605a4e365151db247361bb013f5c84922 commit 0ee7cc803ae52b60f268fdf2eba79b9fc1162747 commit 968d40986f004b463f057fce612996556b753c9e commit 5822b8acb869caac72c3ddf149d463177aa28fd4 commit 41ead3e0cdc03d64b7da2dcb1fd70ebb7164228b commit c83b9d60299317a2c15550dd506c864cd01a3e5e commit f59966779deac642541c3f7d772a3bf5972727ed commit aec208eecfb833b05597bbc28696fb1ab62f732c commit 1ac354beecfd58e769fb5373d6b2ac87bce9e1e4 commit 4a0a2cf4c03ba49a4c2596c49c7daa719917d509 commit b2f6c73561fbccee404b441a5c2d0b4fefaae817 commit 0a83bb35d8a6ff3d18c2772afe616780c23293a6 commit 616699d77b3813c24bf46090e722da227bd56cbf commit 08ebadfcd8c8c1cc7a14a7581db8331147b85fbb commit 8df436d5ccdf7f441becb8e8156c8ca9c4276e8c commit fb1a140b7bd19c474a41fb2df8a845e8eba328fa commit 64234eabb8f38ac2bf77dd23140887d81acaabe2 commit 1ff77beac87682c22f99e5cf32614909c65b4a36 commit 89390c4982b77c159e3b8a0be4a04552ef0971a0 commit 4c3861f587400db00801810eb8034c7b480e21dd commit 67c79599eea167dd5e08314b8c26f2dfa717753a commit 0af167f92838f34e594e49a6c8cbaca45548e030 commit 2de09ce41f484cbcc65e518905dae73da67ad35c commit 0cd34ce82b0a9ce503d35a51bff47ba3b6715557 commit 9bd110ab06e93fd01938dedd8b6015940418f0fb commit 9c580e8f6cd6524d4e2c3490c440110526f7ddd6 commit 615fc50207fa27453ba7f5fa1abd60a01a498136 commit 0591183699fceeafb4c4141072d47775de83ecfb commit 86678d46272021c88638881c63d427dd10d665d6 commit dd07556324ece81f0d2be756508903d53e331e9e commit 6396679a1f2db0c63721b841f1a5617d6282a4b1 commit 89b008222c2bf21e50219725caed31590edfd9d1 commit f173c7405224002fc32b64cf1679c4d888c493eb commit 2051160546826cf312f15bde534038582b90f844 commit 764a1e6e0272f377f145fc84b547d61e12724233 commit 84ef99c728079dfd21d6bc70b4c3e4af20602b3c commit f0068dd0effd5972046b69b23f99c43251e82d0e commit b2a93490201300a749ad261b5c5d05cb50179c44 commit 30456ffa65469d1d2e5e1da05017e6728d24c11c commit 9f5171ce733a694bd0211952687704c7a5bf32b9 commit 8da536d5e114ad1da6028c7505f048ded2e421c6 commit 352e683b72e79dbd46cbde528eb91e228e88267a commit b7ffeb4a1b5bce1a7495636d21f1704bd7ff01d3 commit 4e64b529c5b04e7944b41de554ee686ecab00744 commit c4c10a68e82b8a03df234ee744acabcc648df270 commit bea9a56afbc4b5a41ea579b8b0dc5e189b439504 commit cb9c7ab1b3ddc2702379dd9639df0c2230453c2e commit dc0a096bcc1d659ae93f836099c6b0312d2ccaaf commit 5afb76522a0af0513b6dc01f84128a73206b051b commit 541d54e40f1672dea6514ad64d54d61ed952648e commit acc96ae0d12783e9781428b17e34fd662a904f0a commit a6250bdb6c4677ee77d699b338e077b900f94c0c commit ad2feebd71ff80532dff75756d1103f056358614 commit 2bba782002c5dab6ca8d608b778b386fb912adff commit 36fa1cb56ac5189c78dacbbb14d452d0c44b86c0 commit 7ce2aa6d7fe121e243e1c8a8093911fecdf1c88e commit 0e66978ebeb44f96ff4d26b2a83dc88a2bf887a6 commit e16c2b8250262bc0bc531299e2c30641cee14221 commit dca452041552a5a5a6aab3ebda32565fad003eb4 commit 0f761f5768b842fe483141bc59db5b4d66bcaf07 commit f1f63cbb705dc38826369496c6fc12c1b8db1324 commit 1b586595df6d04c27088ef348b8202204ce26d45 commit 0a2d922a5618377cdf8fa476351362733ef55342 commit 4bac1c846eff8042dd59ddecd0a43f3b9de5fd23 commit b4ddb27d1dc7349fc882dbb7702bd2628fe27af6 commit ea8793f214ce1e4db205390c0241955f7ff6f383 commit c02895577b834a6148f6d9d0006a6f196511cc79 commit c8007d362c0150aef34323702e7fa996fa0cfd8d commit 8172cebac588c3c5e238d02be30914fbbc5b1234 commit 73c49a624a8db1ec38b138741203d9d7c76eedd7 commit cede849e9e2755084798236735d045298f9d9979 commit adcd15dc47dadfb176a14fa74af5b0cb0f659f2d commit 7e4a77de08f655e159e6355bdfbea73be71fab88 commit 8e78c7c4fe29f7ab8f87634c5f4dedc66107e66b commit e48e6a131d34de54ce6852149e4c97c2208f45cc commit 7d50b92d588d1e7bdcf38f523200b7b113b46c14 commit fa0bbd3be91dd46f4e56e5cf1fb6e8c2837c649c commit 5a0918b4cb90a90fc8d8bfd9b0f81efe6651951f commit e0df49b3045180fdd23dc27193344a767cf68fe1 commit 84435d1d912140958213beda37c708ec3072b5e1 commit 04fb918bf421b299feaee1006e82921d7d381f18 commit 5c1943820156e9a120faba320a72578578a69ab8 commit c7dafdfa90f708b6e4630abf824ba388a3947400 commit 373008bfc9cdb0f050258947fa5a095f0657e1bc commit d83a348b172dd7f9f10f049b3fd7e44cf4d2ed8a commit e98459c06e3d45c2229b097f7b8cdd412357fa2f commit dd49c07f3ab67e8d7ae7b8231b88a746c668b4e8 commit 19f7b8334484d6b610c8eb527c3f56cb42bc8bf1 commit 31ec699ac5d8d17c4f696888708bb6b2567dfcd4 commit c65c71ae85095f94aae32d86aa78811318bf6a90 commit 5544a7b5a07480192eb5fd3536462faed2c21528 commit ca01eba4e5b6b50144a62d7704763c41b68a0de9 commit 1af9add1f1512b10d9ce44ec7137612bc81ff069 commit bf7f7efbe051a59e9d0710cd26ea05f7ebc411a2 commit 385bf5a856c196d5997ce4111a23df7e1b679c17 commit fbe43dcd1aad7dbcee1cffdbe6c3e1d62c85f76a commit e42dfa66d59240afbdd8d4b47b87486db39504aa commit de8341ee3ce7316883e836a2c4e9bf01ab651e0f commit bbca24d0a3c11193bafb9e174f89f52a379006e3 commit 085292c3d78015412b752ee1ca4c7725fd2bf2fc commit cf36ae3e5802716617b9e4d902a31048240396b0 commit 8ae4be56dd0c2b851e7edc0f1d5cd441f88481c0 commit 2ae6ab9d82cdd0f7381639ee31e31de45519df4c commit b1fb6b87ed55ced458b322ea10cf0d0ab151e01b commit ea2aa97ca37a9044ade001aef71dbc06318e8d44 commit 54cd4cde7c1edb869603073167cabab0b760fff6 commit 43ef9db423bdce1df504d4d10e25092d427f04e3 commit 9d705d7741ae70764f3d6d87e67fad3b5c30ffd0 commit f5994da72ba124a3d0463672fdfbec073e3bb72f commit c351938350ab9b5e978dede2c321da43de7eb70c commit 06671734881af2bcf7f453661b5f8616e32bb3fc commit 2035590f3d40f227eac453d0c36b5eae85c1cf08 commit f461950fdc374a3ada5a63c669d997de4600dffe commit 16b3d851c0146123507fe864fdd97411ded51147 commit 233f56745be446b289edac2ba8184c09365c005e commit b75ef35bb57791a5d675699ed4a40c870d1da12f commit 220e979bd906015b74eb485e16464ee5abbd3c9b commit 6b04ce966a738ecdd9294c9593e48513c0dc90aa commit 8d905254162965c8e6be697d82c7dbf5d08f574d commit de2228c04150df8632ad22ee490de2ed579f64e8 commit 607f41768a1ef9c7721866b00fbdeeea5359bc07 commit 13393f65b77445d8b0f99c7b605cc9ccc936586f commit 868e8e5156a1f8d92ca83fdbac6fd52798650792 commit 6067c82c576af13a6b1c892b42ac4a189aced8ee commit a3f7c10a269d5b77dd5822ade822643ced3057f0 commit ad3b0b99113783f697579c7b09285916019865ea commit 2037769f995e45d3a368fb74983954b3ed8da178 commit 16c01544e30a4b4cf5f3eaacf7a4c19a3622b597 commit 4e3464badbeebb3528c457aefe91413f8a9070b6 commit 00047c3d967d7ef8adf8bac3c3579294a3bc0bb1 commit da1acbb12b33cbc651d8a7e956d254f1acc5034f commit 894c9c540f8315007a4752320e2399bc2e0c46b7 commit ee8086dbc1585d9f4020a19447388246a5cff5c8 commit 61251b2cffea8c1811bbd2dbef175b65f64aaa86 commit b8983d42524f10ac6bf35bbce6a7cc8e45f61e04 commit 064d491f73464f5c9cf56ac24f55118f6f4c54c2 commit 100d0ae82b5c240a4dc17486698e67bf116bd598 commit 58091b4958008ef69899e5404f8f031c36b35fbf commit e79a7417072265a85a36775e4e0f798154d39808 commit 4595a25443447b9542b2a5ee7961eb290e94b496 commit e5e6886f4d7e34b6539abddb591d515271caa634 commit 875c6d2711f6c97e58c52288b4231f3072711d61 commit 2c4e19f873f4a389c2a557a84909cf4b78d3525a commit 51fbbe8a3f8b9dd128fa98f6ea36058dfa3f36de commit 458ec0c8f35963626ccd51c3d50b752de5f1b9d4 commit 919bef7a106ade2bda73681bbc2f3678198f44fc commit 0211c2a0ea600e25db3044daaeff4fe41c3ed6d9 commit c8fea9273fd1be308668496badfcbd55183e0dd3 commit 47e04eed84bb07cc5b54462752a4bc7286ab8197 commit 507fd7c400032b126747a5ae8cca2816d73f009a commit d1b4a51a4ca8954f30cf4671b25c4f8637c45600 commit 3c93603d9568c7c4b20ff1712ddc60e997d78df7 commit 3e834a17a22cb8e9169c0b018d1a2df126977db3 commit 6783e6bbc2457dbed351fb0d2477aa6060a7d32b commit 4fd7f14b56b2e727dd66a62e217e57015da4e9fd commit 94a82c9e3dffb88182a4ed0464dc0266ad0d7b45 commit 595091c6ba35ba48c1f8186116bbbae2b208dce6 commit d0629cea1f97acc5e8d95ca2a42ddc72ed4ffa3b commit d7e7546886eebf626569e38ff06d0a67b8b82757 commit b023053592646b1da9477b0b598f2cdd5d3f89d8 commit 2640174f4a139502f603f7bedf3a7011db714e1d commit b97e914552c3fcea71ce03f899e285f2178ec38b commit 6ffc967c36b42f864955cb2c5e8b3fded0baa918 commit f5b9c1ffabce5f4acbeabd3a03fd57b3970a13fe commit d6f84bab48745ea68814d596eb476a9c11ce76ae commit 7b471c32e4cbfdd7a673b79321f6a26abecbf33b commit 910ab9eee0f61a243126d70e932e1301b5437583 commit 39c84b8e929dbd4f63be7e04bf1a2bcd92b44177 commit a54569b1f9721be11ca5b2c8a8bb3c652ebf576c commit a71f3950c803cb18080746aaa8b66af122f32841 commit c1dd5d29aceed251daf98cacd22817f38f76f94b commit bfe632f6d0a1371784dd9a11fa5a9aa2dbf53bf1 commit c7943bb324e503baeeba3df2bc5ca8a377111bfa commit 8409fe92d88c332923130149fe209d1c882b286e commit d91c411c744b55e860fbafc9a499f4f22d64c762 commit edca5a2c373db61efa959307c13ed9156b1c14d9 commit e1cab970574c001d83e59ca8388c474a57a1afb6 commit 672d6ca758651f0ec12cd0d59787067a5bde1c96 commit 151e0e0fdb4d6365305598af3b9072d44e896ef0 commit 992db92b07736ec98432a97b61c37dfe7bd06dd9 commit bbcbd63231cbd1405ff8e987870b02abc6a4d669 commit cbfac7fa491651c57926c99edeb7495c6c1aeac2 commit ae0448bc88b7827babda73edfe587ccc222baccc commit d832db12af4a057582011a590f60f32853680dd4 commit aac4cec1ec45d72bd03eaf3fd772c5a609f5ed26 commit e3d3fd1cea22ada5a06284d7bbb6cd5794d8545a commit 8f7115c1923cd11146525f1615beb29018001964 commit 63e37a79f7bd939314997e29c2f5a9f0ef184281 commit b6f25c3b94f2aadbf5cbef954db4073614943d74 commit 235fdbc32d559db21e580f85035c59372704f09e commit b34c1d538951e1c3a6d5e585e4a95e78d8733064 commit 2edb79a5fb303dff577d6a0c7d571c3bab1d1455 commit 0785691f5711a8f210bb15a5177c2999ebd3702e commit 08b812985996924c0ccf79d54a31fc9757c0a6ca commit aee5ae7c8492eaca2be20d202887c9c716ffc86f commit d654f60898d56ffda461ef4ffd7bbe15159feb8d commit 8787f6fab41380189865f5751c0f15b0c298b923 commit e839a756012b6cad7a4eeb67b0598ac3f349f863 commit 7c6fb61a400bf3218c6504cb2d48858f98822c9d commit 6c20490663553cd7e07d8de8af482012329ab9d6 commit 66f99628eb24409cb8feb5061f78283c8b65f820 commit df2c6e0c95ca22db5d6bea7e8169841c95426f8d commit 36de13fdb04abef3ee03ade5129ab146de63983b commit 8c5708d3da37b8c7c3c22c7e945b9a76a7c9539b commit 86875d558b91cb46f43be112799c06ecce60ec1e commit 42ff33e63b83d0fd40985ccbb50ff54e320a3bd5 commit 58d97c99c99f4559072a5410ec0135271e24e95d commit 269aad0919c7aedffc18dcf46393a1bec457af0a commit f9c182056b8ff7402a46c39c34d5c91133fdf9a4 commit 18aefea7fc71759a2405bc65eae057ffda3c429c commit af2f2a256e048f1b83605eaae49948e4a6811ac1 commit ea45405d704e20826a899380c19ec163336f42ab commit 82c4018479fba63db8db7c7fbfd9e4afba95603a commit 0b15b1ec8b74bd5c9a4e4cbadab82c0657832799 commit 6acc6196a7320b3d2a391925c4c884fc07f0b3df commit 1bb8df66920a5549db2be92c23ab81fd06992e5d commit ceb756004a30239c3a50dc237313e234b667077e commit 3601d620f22e37740cf73f8278eabf9f2aa19eb7 commit d978c51f8d1f4314c84cf50291156862a4c34fc8 commit c4be0ac987f21e12e7ad23bc480e826d8c30de20 commit a3fef74b1d48d89d4d911fcd7c2630d0eb6a0012 commit 37934d4118e22bceb80141804391975078f31734 commit 21485d3da659b66c37d99071623af83ee1c6733d commit 41012d715d5d7b9751ae84b8fb255e404ac9c5d0 commit dc1d85cb790f2091eea074cee24a704b2d6c4a06 commit e3163bc8ffdfdb405e10530b140135b2ee487f89 commit a8671493d2074950553da3cf07d1be43185ef6c6 commit 0af4ed0c329ebb4cef95fda4fcdbfcdea0255442 commit 87d9862b25483242a30bf45420cd8e7e1872a4be commit 25100377a21ad40dae8be5a3ed361b87acec1479 commit 5763d7f29652f94bdfc9dab87888f79ba6bb6c34 commit a7c48a0ab87ae52c087d663e83e56b8225ac4cce commit 5415bec18c69d3aaa7d4e3b170c8b8c6bb24a823 commit d8a79c03054911c375a2252627a429c9bc4615b6 commit 5ce8f7444f8fbb5adee644590c0e4e1890ab004c commit d119888b09bd567e07c6b93a07f175df88857e02 commit 37a0bad677a76e51c5e9e53f5d9f8f4f3e77912f commit 88d4cea24049de0fa073462b24ab471ecd685d8a commit 16c6077f2eea3c8321782d2fb0a6790532cd8c03 commit b261509952bc19d1012cf732f853659be6ebc61e commit cb0eca01ad9756e853efec3301203c2b5b45aa9f commit 29956d0fded036a570bd8e7d4ea4b1a1730307d2 commit 52bb21499cf54fa65b56d97cd0d68579c90207dd commit 65fbfb02c2734cacffec5e3f492e1b4f1dabcf98 commit 056fb8cfbe213f6eb5e987a806583986a4ae8328 commit 72002056f771a025a2e6b4578aeb538799cb9ba2 commit 20c6168b3c8aadef7d2853c925d99eb546bd5e1c commit dcc2527df918edfe297c5074ccc1f05eae361ca6 commit f528fa3989c53d4cf2ee22d306eb1a96ed0010e6 commit 29a1c581a5d873046302aa22c4a05124c5faefab commit 193b6a1934cc2e258e463e94fe3e94382c0bf458 commit dd4bc65c5bdf17ce8e74f91bca5e41b368b0e32b commit 88bab90f7a8aef3732a57cf33bf0ae121de8c7af commit abbc7a3dafb91b9d4ec56b70ec9a7520f8e13334 commit faed5d0182480556cddb8343d9bad968387848f4 commit f525ed19437d376736bed64ee7bc4afee82f2ba9 commit 387df878fdcf63ce497109c4e1eb805a7df9043f commit 3b38b65ed076fa93f1b0d5fb97c55a9bf692cc49 commit da73a94fa282f78d485bd0aab36c8ac15b6f792c commit 6dd1de12e1243f2013e4fabf31e99e63b1a860d0 commit 051ad2788d35ca07aec8402542e5d38429f2426a commit cc62d98bd56d45de4531844ca23913a15136c05b commit 6ef7d362123ecb5bf6d163bb9c7fd6ba2d8c968c commit 7516777434570833469252c16e5fd7d8f73c45be commit 3c480531a4b1652561fd16824c16be8b8a3ba8f1 commit b9caeadf5cb89566412b94b14a1583419aeba45e commit a9b4700279f21c5c1a3425630dea86d338ab13b2 commit 91ef6cfd30bf75763f41e7a4bc119883fe190606 commit 664883ddde67971d59764f2dda855183ecf8bc46 commit 783d446749c09eb34178cb8600a9a93d3b99e35d commit b6d1c39bc637fe4879d610e6687b1d4224c4b2fb commit dd37fba90e72a48998d9f0eb5497088ea2b02ad1 commit ec669ef2e2cf277f3e73d842bb3bda1c3ea2ea73 commit 85096a73f4dc223b5848e41ce40afc5ee913079e commit 1ec5c0e1289c70c8e7dd93a988d945ad5bc3f4b1 commit 391ce355e72bd5713afc85ec5acc955294499dcf commit 8dd2e87dbd49ba0b6afc1dd22a5930d797cf423f commit a28acf7091babf4248b042326946cee7736f796a commit 2d3907c152611a0d65efe54b93972320dcce1565 commit b3e45b18e5c40f1f7e5f6383953343f96f963b13 commit 11e38360cc15e2d5995449d19030b13a67d73cb3 commit 3b7329cf5a767c1be38352d43066012e220ad43c commit 7738be973fc4e2ba22154fafd3a5d7b9666f9abf commit 83ca5fb40e758e0a0257bf4e3a1148dd52c6d0f2 commit a3aded135e84a581ba567c30ecddff47c8b6cfcf commit 541540b9045c2665d6736a77c776ac81d4225eec commit 153a97b4e3de713c05b6bd42d734a2f9eeaf7968 commit 91462afa42e6b8c5a148a44482c893f1800c513d commit 6643b3836f3908c4f77883b2fae72451e85cf3ca commit af81a9201e0112e9c4ca7258e32cd28baf19f31a commit 2f3f958602721c7915ddb1f2a0e8dc5031bc0151 commit 90df15124526176ff03c246362c196a047c8a39a commit bcecb6524881c54ded92f14a6cf2406d5c439637 commit c1c3f41ffb1bd262e40d68938af68c6ab53a41f8 commit b33139ee15352043123b81b32ca1a6a84340eb5d commit 04fa38cce6e02be4362cd889780d58ec275c4d26 commit 0fd85e89b5bf18447e56099a010ee5be5dc9f2b0 commit 414208e48963fdb136240d7f59c15e627832d288 Omitted-fix: 14773bfa70e6 ("mm: shrinkers: fix double kfree on shrinker name") Omitted-fix: 20529e260ff2 ("Revert "drm/amdgpu: fix start calculation in amdgpu_vram_mgr_new"") Omitted-fix: 3024d95a4c52 ("bpf: Partially revert flexible-array member replacement") Omitted-fix: 3915f8bddefd ("drm: xlnx: add <linux/io.h> for readl/writel") Omitted-fix: 395d10ae4d29 ("drm/xlnx: Fix build failure due to missing include") Omitted-fix: 3f61631d47f1 ("take care to handle NULL ->proc_lseek()") Omitted-fix: 5e6723ef3fda ("drm/lcdif: Consistently use plain timings") Omitted-fix: 71c627c0a87a ("drm/lcdif: Clean up debug prints and comments") Omitted-fix: d395fb1999ab ("Revert "drm/amdgpu: move internal vram_mgr function into the C file"") Omitted-fix: ea19684afb54 ("drm/i915/display: consider DG2_RC_CCS_CC when migrating buffers") Omitted-fix: f423fa1bc9fe ("drm/i915/gvt: Add missing vfio_unregister_group_dev() call") Omitted-fix: fcfd3e5fb2f0 ("drm/lcdif: Clean up headers") Signed-off-by: Karol Herbst <kherbst@redhat.com>
2022-11-02 15:48:10 +00:00
* Write a C type value (u8, u16, u32 and u64) to the iosys_map. For other types
* or if pointer may be unaligned (and problematic for the architecture
* supported), use iosys_map_memcpy_to()
iosys-map: Add a few more helpers Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2043115 Upstream Status: v5.18-rc1 commit e62f25e8b3cdd29224c27938addba817aedd4b54 Author: Lucas De Marchi <lucas.demarchi@intel.com> AuthorDate: Wed Feb 16 09:41:33 2022 -0800 Commit: Lucas De Marchi <lucas.demarchi@intel.com> CommitDate: Sat Feb 19 19:23:53 2022 -0800 First the simplest ones: - iosys_map_memset(): when abstracting system and I/O memory, just like the memcpy() use case, memset() also has dedicated functions to be called for using IO memory. - iosys_map_memcpy_from(): we may need to copy data from I/O memory, not only to. In certain situations it's useful to be able to read or write to an offset that is calculated by having the memory layout given by a struct declaration. Usually we are going to read/write a u8, u16, u32 or u64. As a pre-requisite for the implementation, add iosys_map_memcpy_from() to be the equivalent of iosys_map_memcpy_to(), but in the other direction. Then add 2 pairs of macros: - iosys_map_rd() / iosys_map_wr() - iosys_map_rd_field() / iosys_map_wr_field() The first pair takes the C-type and offset to read/write. The second pair uses a struct describing the layout of the mapping in order to calculate the offset and size being read/written. We could use readb, readw, readl, readq and the write* counterparts, however due to alignment issues this may not work on all architectures. If alignment needs to be checked to call the right function, it's not possible to decide at compile-time which function to call: so just leave the decision to the memcpy function that will do exactly that. Finally, in order to use the above macros with a map derived from another, add another initializer: IOSYS_MAP_INIT_OFFSET(). v2: - Rework IOSYS_MAP_INIT_OFFSET() so it doesn't rely on aliasing rules within the union - Add offset to both iosys_map_rd_field() and iosys_map_wr_field() to allow the struct itself to be at an offset from the mapping - Add documentation to iosys_map_rd_field() with example and expected memory layout v3: - Drop kernel.h include as it's not needed anymore Cc: Sumit Semwal <sumit.semwal@linaro.org> Cc: Christian König <christian.koenig@amd.com> Cc: Thomas Zimmermann <tzimmermann@suse.de> Cc: Mauro Carvalho Chehab <mchehab@kernel.org> Cc: dri-devel@lists.freedesktop.org Cc: linux-kernel@vger.kernel.org Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com> Reviewed-by: Mauro Carvalho Chehab <mchehab@kernel.org> Reviewed-by: Matt Atwood <matthew.s.atwood@intel.com> Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de> Link: https://patchwork.freedesktop.org/patch/msgid/20220216174147.3073235-3-lucas.demarchi@intel.com Signed-off-by: Karol Herbst <kherbst@redhat.com>
2022-03-29 14:21:07 +00:00
*/
Merge DRM changes from upstream v5.19..v6.0 NOTE: This commit does not compile due to missing RHEL-specific fix-ups, which are split out into separate Git commits following this one. If git bisect selected this commit, run "git bisect skip" and try again. Repeat this until it selects a commit which compiles. This commit was generated using: rhdrm-merge-drm v6.0 2115876 Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2115876 Conflicts: drivers/gpu/drm/hyperv/hyperv_drm_drv.c drivers/gpu/drm/mgag200/mgag200_mode.c Conflict resolution: Commit list: commit d10f7117aa43b0b0d1c4b878afafb6d151da441d commit 115fcf5899f7e0b0d3358a22a8cd76b1398642ee commit d8cb49d203556707ff4c3aa05032c4fc7c3ff1a2 commit 9d72b7e2d2ce3746950929a2c54171d183ea89f2 commit 94afc5382669c3a201c5817c47b57a879b6dabce commit aba5825439d7691343aa562dfeaf6616455bcb01 commit a9ec4fd004b84c26207a8cae41662c501c8a284b commit 537d9ed2f6c1dbfe8465365c2f74a855ffad5e6a commit ed3173077d3fa6fd085960aa6347ec30f532bf31 commit b07debc2a8ce7324c85479a28d145eaa05382286 commit 4ce08703a8c4be77b060aefd14eda272f50a45e4 commit 9975af040a04ba9aef33f3ef1ca4e8f04c7223dd commit dfc0312596561ac462308fae32130a0c580b7ac1 commit 37852141965d467a4ae118139b6eee266e7d953c commit 2af243444f9100639451b11d311982279e00cc16 commit 49a62a2923e523e5359219ed54d643c60f3374f8 commit 705bec3eca9b712fe006b7e4d6b4cd4dc6b57d36 commit 8db73897698ccb4eb70ab103245372569ff5a5ec commit 58304630b830a1c27457ce2e3a0912555b43d03e commit 6ff1c19f5f28dbc396462032dcbfdb8b64795415 commit d792ec62ae1260df2e54dc41103aad3b19bad948 commit a5c89f7c43c12c592a882a0ec2a15e9df0011e80 commit 315241d2d9102a90f71bd6c9e7dd06a1c831a184 commit a7b516bd981f11feb0c9f5ee3d149855d48cb2c8 commit 6f67930af78f10ac7a1a9ba81ec606a9bd07749f commit 56ca3117f77a23a8b24e73e458bc85c11e5dea31 commit e6c2db2be986158afb9991d9fa8a38fe65a88516 commit 91875c22a31be0bdf91d7ec651bb6b083b35ac37 commit 69ed3dd6be9cf5d75252940b9a927dff4bab7860 commit 09708b6d82ef473de91c49d90f35e38b0db463f5 commit 222ff6db8a0dcb86f2bb65fc8656aec635a737a6 commit 218076abbcd647de46635d21331a34b814f90906 commit 922abe4d19bd21b38298f3902674774b92a49293 commit b6411373d3954c8fe4617c27f90f773108b0ab03 commit efd01cd3c27636bc4840057a03839e54abaf11dc commit eb86f645ab9b90c47de7ebe229feae7ac999421b commit b15a7357a84f091fde8ce35bf2fd494150ad4bd0 commit 1b93ff4d0679190e8812cd0d0b3aebfcba1ed883 commit e9794c88cd6cf4be4a79188916a75539751f532c commit 3507932390bbfcf7c69dff9843f1c9da6ed4b861 commit 23dd74db02d75579d8d4eb0b88c7ad119e782269 commit b499914eb83765a27e3b43f216e9d1bdf4265418 commit 6c01aa13894fa0049ea8c96c271318ca353a77f1 commit 429e1fc1b2c257f35b6a1318eb3a1ffb80bc6640 commit e090532246fe17609b08ba0a862428867426dc95 commit 9d67edba730c4663eb7d87771123c3fb86ba606d commit 4de23dca7ec8dfb191ea80fbfe3f008d4ed52346 commit 6cd96877c7da6bc3a28ef0bcb3bc7470f4dd9aa6 commit 93d9e0453e2bb599e0bcced1b914f9b4010180a1 commit 69f8afdb45e7775840693bce42da79d9c22c2e83 commit 500d7135c924024ed2e5e62b03dd9b3b6257fa10 commit 8caaf7ad659da9b757781d5f08ce0bf98801931e commit 1a1a5a315ee805bec457fd214250c088efadb50b commit ad5f74f3420183052532a220edd9a37aba92724a commit 047de3f17a8321065c32ee3f6272a6dba16d6bcf commit 5e3f1e7729ec7a99e145e9d8ed58963d86cdfb98 commit 708d19d9f362766147cab79eccae60912c6d3068 commit aebeb02dfccb61d6930112aede2db3db5b8e974e commit ef83e1198f9f7d7db0031c839bb1112cfee45b42 commit 7ecc3cc8a7b39f08eee9aea7b718187583342a70 commit 3064debaf55e1bc8f191871ca5f82697ef4c0951 commit c48a363016349352dac7e66cd1e823f73bff1fc4 commit d2addf89c5abf4024574d42000313175c6e074fc commit d7fd32ecce914686756dedf586c8573e71f975a4 commit 3080c21a043abc83e56da9bb5942eb3f4b92c90e commit 303760aa914b7f5ac9602dbb4b471a2ad52eeb3e commit 21c47196aec3a93f913a7515e1e7b30e6c54d6c6 commit 18fb42db05a0b93ab5dd5eab5315e50eaa3ca620 commit 945ae909aa76f55ac8c9e95feb3683512d39134a commit be982415fc2e953ad49e59b204f2d0e64953eb5f commit ab1747ccf052976465db7c5a7e1301a50f290db0 commit e4ccf9a777d30d60c60f729b1d5c9bc9e3ea46e3 commit 22a27e0532d06968afc265a3b91fbdc5a773169a commit e42192b4c345a807d8df034f178d5846e1c97ad1 commit a2f9790dcffe2dd0b363607fd215e5b81a0de57a commit 40f71f5b239291357dbee3dc1c6ace83a373f44e commit dd0f4470a849d07081a2036f89d2c41264383985 commit f0d080ff429129b16332f17a906ad2123d9c6317 commit 084c7a7c7a0a0cab35d959e1b14d45a0c6221f49 commit a77f7c89e62c6dfe405a64995812746f27adc510 commit 7428bfbdb7c4dc7323e6b6f0e327c3587e479e16 commit 67d87fac86dd4a04cc62dc0eddfb7c74ace4666d commit 874d98eed71ae678ab364d4c16060955b8b245ae commit 2c54f87cf2fb99826ded617fd0484e688ecfe882 commit 45aa2336fa6dbfa73d9081f75a4b813e747a55aa commit bba4b6470b02c2d9a5074a40cff7246d3356f460 commit 027034511c6a1e3ea96122f7626b89b6d339ed49 commit 3176d0925027727ec37e388e9363f124c2c52ae9 commit 0c057877cbdf261efa7874474f48c715cd6401ba commit 5e87b2e5171621ff00ec197c9af15bc3aa405b6b commit bbded689680f0f2e65d4a57d0dfa654671052d56 commit c7b2dee4308b74391734ac675e66e6856a077f77 commit d9ba1b4cbb2989c919198832f4ebd6eb8ba94da0 commit d0edd3c1a7e859a5899c26e2906e80f4ac798fa9 commit ca10b9d60f8c9556720bad8b1ec7d522e353a01d commit de5db71e4c8c35ed5e92006e3064ce9230881ece commit b6415bd7386bcf9d2e0d6ee1d4ef4186e7a87b24 commit b959eb4f5b7ea49b47e95c9047d33d1b1cf81057 commit 0facdaa249c4e97346bc0b49c893e4a1d336b7dd commit c3e57159dea473e9e138d32d08c48f3103294050 commit 057a6a1936e79c0bc9c86537fb9886ed39cd078a commit d6774b8c3c5813aa541c9148f641d3d8d4b296d2 commit c577b2f43e80d707870a74de0fd726c51b206956 commit a24191b1c4ad05fc578ea5ea01652c09b71da86d commit a9ad5822366c5065e6a65fe5ff5090295ba98986 commit d158367c31f0f87567d2e8a0955287dc005d40e5 commit 8f6de23184452793e60945a26ac40db435d7798d commit 9e97c46f832d4669b4e52cde5ad0bd43423504eb commit a77c2af0994e24ee36c7ffb6dc852770bdf06fb1 commit 5913ab941d6ea782e841234c76958c6872ea752d commit d50f74790bbba662d1438dbc03be6616c52c0722 commit 16f1456466c269ecda32b88c3f8fdd76f8ec370c commit b279df242972ae816a75cf1cc732af836f999100 commit 8219f11fdaf56593a719e1d72fa582673560315a commit 69340e529a064da4807622395e967aa2b5eba1c5 commit 475e2b970cc372f49e9d3e4bbead8b4874299d31 commit e180a7b218487065efd9a3f05eac5de7de128e19 commit 315a8d00ac74c59a688a1a88c0ed97a7791d1c91 commit a50794f26f52c66cb793d5d392f5f19bc2962cdd commit 451374eef622fca6f00eeeda89aaccb45a30a149 commit 1ade30812abfdd1c161a155fd54b0dd594c217ee commit 230fb39ff7e07bd0324c87acf08dd2c9b0bbcea8 commit 962bd34bb457f6353f333ce234c3fd34cad1c00a commit 411d44d754739a371999412606b28af1d72a210b commit 7f73b371710edaee1f40d834096c07c62e51b184 commit f159b1b22c8a2d3d7c1fa877fafc8aacff0deeba commit 746b9c62cc8614fa59c23f3332682b5e9e1d801c commit 1c89b4b718168aa6cf136a984b474d663e4203b7 commit a8d6e127254c48d895c4f6e973ec998fd4a0eff3 commit 4f093a527b0b8f9d3059a4e8376e582fd14cf09e commit 4a2a13a57b605994ee44e5c2cd7b9efc49901404 commit e7c254d75d16b75abf1958095fd34e2ecdc0d645 commit 69ef4a192bba0d76216198ec6d5fe82375337903 commit 9602efab9f8652ef39dc2789edcd26c3d1d3f901 commit e91eec9128c2ad9eab9cf9d7c17f8034b6a86c4c commit 9d8d5a39173244a1394cf84a93447be6f82b361d commit 3d6c72b7fdd2429ca1d4d690618bf65050380b48 commit b409db082da6b76ad2b759a1a48d9402eee4b942 commit fdbec9ff669d83bf863ca7e657af6a9e4c949565 commit 39921e5f00f5a98ff9cb3229937ca339e8d9c9c6 commit 85a040bc9049dd168d5e79a1fa9d2da87e6e52dc commit ee421bb4cb9535f44015634baad833dcc98c9062 commit 5f38c3fb55ce3814b4353320d7a205068a420e48 commit 39c28cdfb719f0e306b447f0827dfd712f81858b commit 0d662350928e6787d29ab205e47e5aa6f1f792f9 commit c1de02bbeca58894c805b3d45c2da4bf30cfc5d9 commit 0b4c48f3e315d172e4cc06e10f2c8ba180788baf commit 08c59dde71b73a0ac94e3ed2d431345b01f20485 commit 67d935b4713988d0a41097439c0c2d74f240b204 commit fa373eb2190115ef2c3597f89c12350d0a250eb0 commit 4cd79f614b501e496ee8e4181d528c0cc1cb4e18 commit 8ec5c0006c50cb1909c0de0fad137909c1218990 commit 2ba5b683260e13d8f2c43bc594d5ae15ec7f7a04 commit 670c87fd169518eb4f15030c63f6c1b4ddf18bfb commit 1ff72d434b40d221e2583fab5e1203031d05c059 commit 649eb3828fb22e829e222ebd83f4e11dc503a565 commit 9ad6f181ad9a19a26bda73a7b199df44ccfcdaba commit 39b1bc4b5bcccac781267bb826b035fbb99c8b9d commit 991dcb89caeb1b9bf714b382e23d3f6d8016e744 commit 61922beba36adea8702fe8069b309c806f6608af commit 6b03816f869529393b37d03e5d75b68f7365a7a4 commit e4f21d1436519fec3e181082c8e1c3fb00ec08a7 commit 1a3b1ea111c44d9dce9f70ba032531a223395a15 commit d63ddca7c58132257fd01e3a4feca41b3bac3089 commit 8ae664907916eba9a9d56296bed684c27318a872 commit d32e8ed918ba7384fda9055ebb31b89b3eadb517 commit fb289464f695f9d913479b4ebae9e39b057f8531 commit 1eb31338994889ac34c4f841e5d54bf10111741b commit e41388d508a50ddb2be5c2676f1992353ca2f155 commit a4f263f46961b1229b10ca3a98f0be618a9d47ac commit a67664860f7833015a683ea295f7c79ac2901332 commit 837c72b23a57e15dd363d5f3f3f268c49c128740 commit edd34368c4c3b45b1386b15f78b2229420f8c6d4 commit b981cc333ff06cb23c7968007965e79c80f5df97 commit e31372492904415e425430402453a192e2c6519f commit 16e214d4aef2d600ef94e845530a28ce795b8fcc commit 26be7cd8aacdd3f0429834e78e3166286779f083 commit 6a735552f44d7a29a9e629cdc3b5c3ac2b4021e6 commit 9d15dd1bb3e7de4dd31a225977813dda2748253e commit 69d6bf5c3754ffc491896632438417d1cedc2c68 commit 91776af1d8deb8f36cbec6bf2bf24b661b2b5cbb commit 9180c30cd61aa0b2f0eb4791c8e490c8c5abc54c commit 420a07b841d03f6a436d8c06571c69aa5c783897 commit 4fde3f5d8805caba40cce2268c540d8a37403c6b commit 51ab3b85000d214b75899875d5745935e06020e5 commit 822e5ae701af2964c5808b6ade1d6f3b1eaec967 commit 75bd0d5e4eadb9ce3e9b6fb71971b6e87c38799e commit 60b02a09598f87972a15bb181b9a62b8a8ee682a commit 89fcdf4305996f869eb39eb8f14a989e9a289611 commit 586294c3c1860ac991d3a241159c0edf974b68e4 commit 8e75e8f573e1ff4a0c93c3be1554d2bfd5ae6029 commit 67090801489d0a4c80c121494b749e1e97573447 commit 50759c13735dab06805eff0e8161d33216d6f5a3 commit c3fbcf60bc74b630967f291f47f0d9d0de6fcea7 commit c2fdb424d32204faf5be29d55f0086b611c94e38 commit 3cf050762534cc268a02793ec00240f81c6e2229 commit c518a775a843413786d3db8b5cab084597730a5a commit ade1fc91eb99614c7155fec762ad5761bb470e06 commit 14374e3eee1b02dbf162e1dd75b789373f07ef43 commit 435c249008cba04ed6a7975e9411f3b934620204 commit 0c5064fa8d5a02dc2dcc6c674a0ad1bbaf79efda commit 01357a5a45ed8eb9543183f5c9c6713ae60fc1f3 commit 8f61973718485f3e89bc4f408f929048b7b47c83 commit 245a4a7b531cffb41233a716497c25b06835cf4b commit ec8d985ff26f29d53d9ebff04973e96572fd0285 commit a0ab5abced550ddeefddb06055ed60779a54eb79 commit 0aa93f54f4341a40b05ec2ac242109e78661d7aa commit 92a020747d6c9e2efe8168a4a444576581bba636 commit 6cb07d20317c77494fa4de572887e3dcdbf98b6d commit 0e5397d8c9fe2a2e4fcc8d98cba4a12511a03267 commit 3951270abfd229e3e17c991942cd111b66454f97 commit 3d140a3d8816082f9732d6fccb81dc18823e03b3 commit aa71f9870efea70b38b17c3d2af870530fcd02e3 commit 58ae532ee875783503428610ac0f5d80e73009a7 commit f2206df8ec862073995f5d27f0f55f698843a9b8 commit 4f543d664cec7e9b490bca55f57151afe6f5cf47 commit a9bfcb56a2ef265092a4cfcd4b9c58ddff4d3649 commit 8b449f1c44d1f921240da6a3e7fc4030966abbff commit ce581ae142e24deb27905840fb720fee9b38d7a4 commit 04514c14678e760e17e3cd44c553ade1bf3bef06 commit fba99b1ab7bde41c1eb00431df37b9237be3681e commit 2db7d421cc5ca86bdcf57f2634f6eefdf349f998 commit 6e939738da208bcc0e4dc794519e18cad85bca73 commit a9b20eb6f7da7794f8ffbce0ab9c709cb1ed71aa commit 700034566d6844b3a67f4b6c3a728d9c0c8d93af commit 5a18db2e92a3556ccacc92c031db6e6a7f2b34dc commit 01ece65132e2980ece4eca91105dfc9eed504881 commit 04477e5e1e6ced4573d9bd5271572ba633a260ab commit ba1677f76b9a510d88efdc7a1416b2e778f125bc commit 368eb57a1676cef35f8303bc23f95d2ac35b7255 commit 544ef14031d0bc9223727fa8d39cd54f0fad7244 commit 147a09072c84b32746fb70139963a92c7d90e07a commit 0cc3ae930c8b2a086b802a8c7b915fd28b57c780 commit a57ebfc0b4da16a3f36bfebb158198aab3e340f8 commit e9ca4e9ea6e208feae82f72607818ac8e15115f4 commit 935a3c66eb9b66426d4be9b54666c77dbe7c32eb commit aa2bdc4843f5871e6c68fbec5e10c0dbaf10ff91 commit 4cfd16659641067f618cdd3589eda42eb2943399 commit bc3c5e0809ae9faa039baf75547e8ee46ec124ef commit b87d39019651c9cae169396cf5ae525393084490 commit 5ac342ef84d7dccd1ba43f5fa2dc10a6feda91e2 commit b729cfee705a56c6204647ac486107a1f814af36 commit 3800b1710946f7db3cb3a29cb2e218cf5df999d0 commit 50e156bd8a9d0910ac4bae5fcff00ddb798db967 commit 10e619f1f31cf126885b3e0ac43a8de9744467fb commit c441d28945fb113220d48d6c86ebc0b090a2b677 commit e8971a790370e805281dd650ec936a9b66435220 commit b43edc504ddd8902d1f697364049b0c0b89de6e2 commit 6352cd451ddbb506ce061868a9e5465d294d4857 commit f7dad0daf2c2368f72828b0729799f01bdcee33b commit a820190204aef0739aa3a067d00273d117f9367c commit b8b64595d6a1ccd5cdf56c528e921332d1366b22 commit ab9d97d6f9f1bb5de83411581dc6cdf425a83a15 commit f74e78ca90bd21b47746b90c439709007681f44c commit d5fe83d26dae59c5b52105075e8950dea8ce7c19 commit 66f54992981444cb418f31018e190d15c92d3599 commit e309434ac56774c86e79a50980e8611ce7cc31a3 commit faf26f2b12e1e03956f7e628183e422d94713e4b commit 2f6247dad2c56cfe2df3c6e00586ead5ee905b46 commit b801d8ad1b516a951535241c9cf60cac8f9a5c2b commit 79b470e5ee83e979f8ff465efa8b7ced160bcae7 commit 4f29f9cf092b2d331ba2081566be3272962b7f96 commit ac2e555e0a7fe571d46f7dcb1529b4bee00095d6 commit 0efd4374f6b41650863947a7528d45e8ad0f7ae0 commit 58efeea32d5e32fa340c7ee3f52d5f986b240e39 commit dda4fb85e433f761eedaed0005a2bc20d705d504 commit 265280b99822e5562eb431b102f2ba773c7b2a0a commit 235c67634230b0f9ad8c0185272fed36c892b1c4 commit d3dfceb58de5f897640cdd424f6c2538d9514367 commit 3b1229741eda70116e0163affdda377484a788ae commit 577359ca178262a64236cc96299714dbff21e9c7 commit 85b0cc35efab0cbc78c083d4506250bea6a755ad commit 49401d3a5c86f5ead12ea7cbe98031edb512b13a commit 543036a2de71f14f8ad566c858e5e9ff61736a86 commit e42ce1366ae806ba2c1f884997703be68df428f4 commit 3dc35cf8789ac93d656f255539f9b37c5051ebf6 commit 2cb6915dcf70a2bf7ee10fcf3f56b083beec1086 commit 542a0f2ef9ea2ccfadf2b8a3b53368c61fc97a0f commit a839a73b18157fe30eb4acd2a1f1ffdb890762ff commit 9761843250f1367043ae2a483461af287aecc879 commit e06c5f59ffe1006f1c6f533113b72ad48a6d4564 commit b3f2c796634613bca511266b37084560f36b67c1 commit 6a640b95b061fe340214ebd4638974b8b6f08efe commit cbd3e8440e2e6a4d83479235c9bf278b89360946 commit 1908a07cffdfc7c57ba5116418c3f2b5ef05e0f6 commit 218987fdead218ae0e714cd9059bc9fc480220f9 commit 9fe5d08fc8230adb64128986ee4af267a54e56dd commit 16600b7d66367482dc8526f8bc3a30b32aaef329 commit d57716702deac8e0ec440739eb4cd6eb0872ddd4 commit 10c4ad3ae025dd0e343a09d2ea4b0e71f8d10797 commit 8763e4c1a0e6710dccb8fccba96fcd6caaa50cae commit 7101ab97e3b00ec1c68d09826bb0521d17783673 commit 80d46fff373775fdea9917a7d13f6fb6fa5147ad commit cb12d72b426caa7594890c62df69fe4b83c96e58 commit 72b5f23ccb0aee46029476cbb072074384aef591 commit 3ccb9ea9976022034d8fffd8d929d6e70a24e0c6 commit 2388a778bdacad0c936dbb01048362864847f8ad commit 9d6b2041761ff6d5a33941919c8b5a805ecbed6c commit 1d6c363330834fa534c1c7ee01620ff134aade1f commit be77243327d962a87bcf03615bae12d73efb9b7c commit ac1ac694f7173a0fbb0b60ab0f26226dd334479a commit 2cfe34e18970d26bff73c63f16c76dae22138d19 commit 2267a195e28cc438cb45936c4562f958502d4038 commit da1db031cd30fefc99d1c82211d3c24b73857bbe commit 3378aed7e2ec7212889116335a2120a6e35c80ce commit 7a09f61f8e842dd027afa1ce8be8bd86062c8a7b commit 4c1b3d0803aef6d39913f1e9d2cfe2c1ccce18e8 commit e87b92c6af537843daf7da9235e622988bae7eae commit b5a0168e1406176cf98487833b7468a1ea5872d3 commit 452e9214431f1f6385bb20fdf6e1b5692947071f commit 49f594995a9255ff734f79c1fc22bd06119ebe8f commit 6ea843e01bce520cf5dea86bc30c5133e0d0822d commit e127306d433ff99f29d1b083c6b3aa128bbd9c5e commit 0c9ed6044c5d08562d38d56e94279badef39e4c7 commit 327f79d7a1d2dcc10aeda05983c4d1532dd0830a commit 214d72f62978c28fe27d22d0d498d04493e9ce86 commit 80fb7a409c64ef304e4040320e87dbb2f10968ca commit b6a93844145395068574cbbfaf3aea91d1f24f1a commit 405bb9eea36a02798631e8409f1182705699d092 commit 3e80a5b068a5fedc69ada30ba1a2d1e0b76dfc25 commit d8e4fb9112e88d8d87ffbc38fa511e7118042d4f commit 8b67e738ca17fb52a275b1cc0191dfce0e9cd7a5 commit 83eb5385b4f021c2674b1d78675bfd10443cdf74 commit be1a63daffdd152ba4c7b71ab9fec2e39259b42b commit 1d742694571655e49e11ea8f391bcafaf0f5ee74 commit b3d0c0f2dfbe610ae5ac6b2d70dd450645dce3cb commit 1da5dab029c08e178784a0750203365ea7c3b4f4 commit 3a6dce778de7c120a37983d80b6ccc8c2c4ff6ec commit aa303964bc349914de8e1d3ff7b517581839d01b commit 6d1044a070b2eef0be45f3b99274a6cebee25053 commit 651d7ee63f338b82d18273c30e9ea804ae174342 commit 3d8785f6c04a953868384db455bb2fdd0b22c11c commit b07d1d73b09ef40e91ace51a2e167391676a8175 commit 4c7631800e6bf0eced08dd7b4f793fcd972f597d commit a35806b36ea44724b21f7f110b38b5941fc9c393 commit 65657d98754c581ad66b56680d3c9ed679890071 commit 32c453f18dccd93a27d6f026ca690167c8cc9639 commit 6cc5c77300afbb285c4f41e04f3435ae3c484c40 commit c7eac19eda0a82f0c1dd9455012754445772fd09 commit c2a050c5e07faf9ed2fa1daa1eb642d9da4a879d commit e61a048eabf9d1245f86e67ec4787d2f10e5a1e0 commit 65e7a17499e15771339d85eaa1ba686ad2fe342c commit 381b590c307f29d0990c4b99ae3a2e02aff2a5b9 commit 1b0da5a3e90d3920f6967e4303fdeaaec6f62208 commit 7cc191ee7621b7145c6cc9c18a4e1929bb5f136e commit 84de5c2e92dccb2bcfd5ff68af44960b808fe6bb commit 453b0016a054df0f442fda8a145b97a33816cab9 commit 031ac4e419dfd8f099a0adba31f7f735013eb628 commit b94b02d72e2b979a32addc8f5099fcf1f6ce9e7b commit d1b08baf93352bb3c88d637055dc21187a456646 commit 136f614931a2bb73616b292cf542da3a18daefd5 commit ea64228d26fee9b766bc9615e92a319da5ef94ef commit fae7d186403ee5a9375ec75938e0de99718e066a commit 73f54d5d968264148ef81941d9dc07e35025a120 commit 85397f6bc4ff13a6bc5259facb8ebebb1986d666 commit ce19021fd99ab2c915f2b44b0df39bef75f11d18 commit d45e32c9d98ce7c22a4bafe69cee58165b59533b commit b62d943e9686e791dd39f8bde302fc27446cdca9 commit b9a577a407d99638522ba6a0fc4fb360aacc01d0 commit 21e74bf99596d91411b6b51340c05ff92a7a4a01 commit 98da4b99a0525c222dab7cd8e73153eaea062dc3 commit d1e40d8e4b4df3f705c7898b264b2cfb60bdafc4 commit da1efdb2a3e8593a9428c81a531bfd8a0c3dd66e commit dfa687bffc8a4a21ed929c7dececf01b8f1f52ee commit 34b68c17e9895ba66fc809224b0122a2eed7aa40 commit 330c1b3180b0d79fef7c05331647f3695661b79e commit 38353a5e3da0b26fab9eeff13a482b135512d9c0 commit aec23025ebc86b770beb9dab6610b671e63d36a2 commit 4464bd825dd56c2f900038c5922408d70aab01fc commit 165ab7b4319d8ecbb689f3d68f0cd6bda4d82b1c commit 77361ed89a8b03c7e121f4b8c517d7be93ccd8df commit 2d017189e2b39cf2fae63984215385401b77ea83 commit 0c56705d8aae9696348cc320b71d531ede001b79 commit e5309d7f66105011e0597fd55ff2ef7f636f52c6 commit d8791dc7f941f3dc78ef2c6aa71d7c752d5b529e commit 8246370341e8e816ad22aaf8d8bfca850339ce0a commit 874714feff3128dc691fc309ee8b9d479f541aa6 commit a0b9e4531b2eaf066a1ccb2986f4d2f9efa6c313 commit d4965c53b95d7533dfc2309d2fc25838bd33220e commit 6b6d12b6ff204cc224cd2369bda2b0580a80a5b3 commit d445dd7b39c56a66872386a3ce0c8a862e59be46 commit 9d001360b47b792a475250bf7ef2bcfbd17ba09f commit 44961f6ebce9a7dccb2ec3dca312c5dbf85920e5 commit 6bad4ff84cb57f548d42a41091159b750eed9ef9 commit 6651875ad7796ed3cd84b3bafb3885d05bb543ff commit f9f4daf15398c3aa0aa2dcd05ed4ea2544bcc62c commit 2ff6a14b20298db0763772b62cd4fb030e6d7f75 commit c6e3806705d679edf135dff5d540a278fc406f15 commit 81298056a78c5163b216f17d17c43736e7069961 commit ab9db127ee03487785509f960e7b5b91cdb6b92d commit eb20cf30c57c37ed05f44966dfabc2c34bf46cab commit 5821a0bbb4c39960975d29d6b58ae290088db0ed commit f09d2b0bdd78ffd38227426fb2ceab7ebd141391 commit f06d1d66d54c223e4f0f73393d94afd88105b6f3 commit 24b8b74eb2eb578fee046c70681000f61afa5680 commit 7f35680ada234ce00828b8ea841ba7ca1e00ff52 commit c5cb0002d14b6f7aabaf7d67d0515fe70aea7167 commit 17f65658c8adce6233f9e53be59d399af6180059 commit 20e10881a043af63f2962a9e6bca64661225b383 commit 594740497e998d30477ab26093bfb81c28cd3ff1 commit faa406f4233ecbd781554ae0a850e56f53003d2e commit 68e355c00f2d58ba0426cf9a4d9df77077493018 commit 61243c173cd26fc8c6bea74d6d47a37ab520dacc commit 143fee0ccc97284e6ece1cf86b7d50721b522448 commit 0dc662318d36e060268751fbd3309660acd3c5aa commit c55300ad4a1814bac9191a4d2c7b0d74273aec7c commit 6fbfc3a23c98bdcda679161c4f4e31368008af8a commit 08a2fd23c6c21e5ef24248a9c1b09e929655eb3b commit 136788cc74cbd9fabc2922b77bfdd38a53eb7155 commit 87d6b28e4a753f4a0572a695fcee094510dc6519 commit 284498206f31e655fb61b1e08d0506dccbffe55f commit c4d7738c9efc81a4f0364da1e673ab1b1cf91735 commit feb54650bae25f2a2adfc493e3e254e7c27a3fba commit 0f28cca87e9afc22280c44d378d2a6e249933977 commit cac3bfcaedbf4d5c93cabaa7882f243099afb8ab commit 4e2d10443580d934188f226f48eda7d650711e03 commit 0381ac3ca2e727d4dfb7264d9416a8ba6bb6c18b commit 851dd8625320fb626b6ab6399b2402fd84abcdfb commit cde83d47482e2578432f9ce029748f4f0d029e9e commit bb50bba9c6c741f5e359f009dde3b25f12a84e3d commit 6f73d6762694c3e91c49e6708077a0de2a75f2f5 commit 62f8f5c3bfc2968461b0a74f0e393325bec16c69 commit 1b3aa89550a2ce4f4af41e11162c5cc0b0b07b4f commit d7053e631e891698f7532712066014ca140c8ff3 commit da4d45b7da937dfbeb918b87c66a5bf9a3079ed8 commit 26c763875e0c15921a0480e008e2be07665e7f56 commit 8728df26dd24a63b24e4e5a6c847172add2fa149 commit 9e68c3841390c43521d4fde6c51e91fcb2d4131f commit 5b644783396b2150eeccb9a079498cad5dff3c42 commit 64f6516e60b0bbe6abfc9f1d9f1999012e0f11a6 commit c11256f82ec82216f69dafee75b3d854d92392d1 commit 6aed665f9d8368ae1e962f44339150884bb47f5b commit bd63f11f4c3c46afec07d821f74736161ff6e526 commit 430ac054e5ea172a880e07da494f65f0b80d8fb8 commit d9c1452c0f07c2e0766a6cf3921eca182e26fdf3 commit 20f038d074d4fa52e88a36bebf25e81c88d7e6fd commit 9e9fa6a9198b767b00f48160800128e83a038f9f commit c24968734abfed81c8f93dc5f44a7b7a9aecadfa commit f17c655cfb99796918d96ae25261db2640407d01 commit e0d7371b46c7b47cdf5391717292033365801437 commit efeeaefe9be56e8ae5e5b4e9ff6d2275ec977ec5 commit 5c57c099f442acab13129c9e15ad2a0c31151c98 commit 9cc4853e4781bf0dd0f35355dc92d97c9da02f5d commit ce19bbe46fcfb88e75a6c7f691df4753a72daa81 commit 7aade9ceeb88d8ca674141d2c245f0107032afb1 commit 4c59b571fce6cedefc1c8e5158f7548f05c05ed6 commit ab9a0b1f3661157d144fb744f3a197563e8e0ff4 commit 25a2b22e4148b1ac91960e13f4f5de020ed04d05 commit 2f83658ffc8c259f05e79dc632e34b26bb8b75c5 commit b5fd0cf3ea377a7332721df8a8c8e7715f93c8d4 commit cf727044144d47c3e8482b9a7775bd3f04a87341 commit 247c7b0dac3cf1141b8bf5520adf2fac1a797aa9 commit e3c60b4ef42d4db5b8d1434fa1741abd7f2fc850 commit 5d6ec040ab44d23953a2efebfe02e41337952be7 commit 7fc83cd079bba8b96b0f46e31f26c8f31c814146 commit 7d188c521d9ec3650136e9b9c81c61b22a544ab3 commit fc801750b197d0f00c09e01e59a7dcd240fddcb5 commit 930e7cba1190a3251fcb01c8523ea9aed89d9a51 commit 4af48f1d1d0a6f050ffcfe83e939c9455d51267f commit 1db4b5264819a8e3aa62e38287bf1da2e1dc8894 commit 5c57cbc390b166950c2e6c2f0c4edaeb0f47e97d commit d8609fd1e0742ba3ad2e51bba9dd489dd03d8599 commit 56426faa1492289ff794620c4ed8c1847a420d0a commit 254a8d0c0071255eb19a81a32ff8d5a0beef1e34 commit fc8adb13d844b44c147b4dced292c74a1ab5cb25 commit 16bd48dc2b3b08d8b3160182b42e51eb2c274706 commit eb6b94db2f4a585d4a9b8e503d7377d2a23c1104 commit c750c4ce1ad69d3df68359abce70ee3d0064c97a commit 24f6fe3226c6f9f1b8406311a96b59c6e650b707 commit 16490922a95f4f67eb9d918f94a4f5b5bdc9eb80 commit f4e3a12bf2d1983b8f352b7719794c52be7e0990 commit fc67615f4ecc3b66bd458840927272aa131eface commit 11a8d095d86854bbc8697525f2c543de36bf5804 commit d9307f27efa531f034862bccf2985c5fa22c4b80 commit 407d63b3af881d17c39f16cdd8416adb0e4658bc commit 6537f79a2aae65748d402d6c46e79d9e473d42a9 commit 019fd800cf4a4514bbb502a52d376b01f02cc347 commit 9f1c8677724a0e6a6ac7a74d2b0192a584df859d commit 623411c293d180ed51f1c3b5753c5acf2c2a4077 commit 97708335b04df3eef0e650b0601cdf6c5ab16dcd commit c9ae7b866f32043d23a34d00a5e6e8d86d2cf10e commit 9affc1b87ecba31458567359b5a28b0b08920a24 commit 72aeb6ee0c78fafc476c02d1b19b5b38defcb57f commit 438eac25d033a1701d839bad16c6ad78f683a293 commit f2a5002541d0698509d4f3adfbfcc55a9c1e2dd1 commit 5089c4a8ebea3c3ad9eedf038dad7098ebc06131 commit d52ea3dc65a9d504afa7a03ff24e17866670bdac commit 526e6ca5d1d5fd22c79033cf5a8eb07d98a11274 commit ea937ad6e925994b94d17555e4c2f2f9a99234e1 commit 1f474c8742fd53a048cc8cc4b20e20b2614397eb commit d6aa8424bcac64b2608452589c9a09984251c01c commit d11737f26ffeae88350b835caa37c7449da22550 commit 272308add589bd46ddb5899685e25fc9f6a58b1e commit 1a65327a84db5b9081a51ccb1c562083f59bfcec commit 9731dd4cadc53251ef80b3655c8d841fed52fa3d commit c443514a7d6d648bc497efbe502e2a49738b94de commit b840b64bc8ed3fc46f6d6aa7f97c43862a33bea5 commit 71be4b16d39ac8b25a8a04eda66cb65581e1a03c commit a141d2083b462505727e14d98db5fc3cd43d59c6 commit f51d22b0d04aa33e94d663fb63aa61e4da168523 commit 5f034aef8479ac80e8732958dcb66b8eda650659 commit 85ee819fd08eff7617c186775fd958e6258216db commit f69e98a91a01fd7c5755dd710e94a17d6e9f583f commit a34136a3b3526369e1b3e678590e3760e7653f0f commit c2fbe663ec4f991832d67f936d3941f781884156 commit 2bbb54bbacd674c692306351d1be5a9b5e61a1e4 commit 28fdd0c32daf9a50a606530d54784fcfa29d88b7 commit 9a4c9de4838fd8ccfcfcfdcd7bd472dddd11f264 commit 3de58f22f544ec9c692993fb1f3bc77163d3d5d8 commit ebfb15262af3bec6c3cc263ce04164e44eea4b30 commit ac31a24d9188a9599dfbce7664cb11e6292873a5 commit ac78fa502afa539cce3a285e50d7fefaf4d2115e commit ba8b460445f8d19d530646729c29319c278dbb38 commit 68ad7f90c790a178f47ef08408d97a81cbb71b37 commit 914da384ae9a77079314f07022c18063c7e77778 commit 4e1db0119c64fd81509005a961790d263e99b21b commit 2595fe04a44d8ac7a56db27dbd1c54698d97fc0b commit 869968225718ec7d77c418e2f6be996206d0428e commit c78783f3227f41053e9a44f536d13f05383b875a commit 8d2ba05b099aedfcece0326a5bbb2e7cc33261ae commit c435f61d0eb334dc8367164a125aea45d9dd9508 commit 3f49f7591e7150c502aa8d04354941ec2394153f commit abf0ba5a34eae0d7359228f4319a6659676fbd0a commit 0f95ee9a0c579ebed0309657f6918673927189f2 commit 1556c3b4c7ed2c8f17f200d53897251fc68b7377 commit c0c87382c1a6985cd12a49a62a893361e5fd1b8f commit eb2983c09f4e053f2c3362763f5e1073b5e4cd7d commit 04770b082e2a207804c633fbfd5efec28cbc5673 commit d6346ae0779ef9a41562f5357ac28aa6a69b1c81 commit b8fec4400923eb91f995d7dbe97411b8991ea559 commit 651d4a0fc4c5c6a2d20c95ef814f0d4381f71d55 commit bf9719f8c89addcf1947ce2b29cea29ea9d8f875 commit 0256ea13d169e9ef00ef1b1c9df395b1d6bad6f6 commit 5c9016b2ddb375662aff802d25c96f5483a4e024 commit a50cc4955623685402ed6deeffad7df93591a416 commit 7a710a8bc909313951eb9252d8419924c771d7c2 commit d36bdd77b9e6aa7f5cb7b0f11ebbab8e5febf10b commit 8ee53c702f23d511b7f635a4eabbb85384149f8c commit e4a8864f74e9e9e4a7eb93952a4cfa35c165c930 commit 45c64ecf97ee370bbdbd8eed7aed9c8ff5d1b0dd commit 88436dec47a89d944e834e27d83a5dfd49d032cd commit f0978e92c2f7e9a38fa05d30a3e901d16a30698a commit 109406c92f971e739af04b278ef75dd0fee68a40 commit 781c336a6caa67c68fe3a25b108d1dc38b0e7cc0 commit df17ff62b626554c6048bf435a87c5fe1981e8a8 commit 3e29d3b318533ad031396a40322e0ae1aaece943 commit ac1b49be7fa8cddcc194ce66aa453e2b2cff5831 commit 319ff09312934b08b532e605042dd59f41b74458 commit c5dc92006d50fb55a916755206cbac1022373134 commit e7858254f9af9ad4f1570d781666e3af4c298a88 commit 3fe6c7f53eaa62e3700d8ae076e9c42a1d855242 commit 2ef6efa79fecd5e3457b324155d35524d95f2b6b commit d5929835080a60f9119d024fa42f315913942f76 commit 2b1333b80885b896807ffb6ccf4bc21d29aa65e0 commit 2c7676b6b1f57713f55e738f803ecaf91dfc399f commit 47fa33cc54615161ec5192389e55f3b95274f56f commit 6434cf630086eea2d091f122f5802582a05d9d1c commit b708b36afd5b5f32f7cd49b3bd4ab524698c3627 commit 93e163a9e0392aca7d720491100d810bfc3112b0 commit 1ec17c26bc06289d368e2523c0e95b5038c6eeb5 commit 96988a526c97cfbe6664e637640dca9406b0b928 commit 1039fb60463cfeb1fa39c6c48b5c3afcf5b89948 commit 3818715f62b42b5c0bcf456ded3f59ed3908cd6f commit e60c4354840b2fe8e1c4df3fdc5c17039824ff96 commit 89fc846675537f9f6ef62271e9d60556c873d65e commit 993a87917c2af59efb0ee1ce43c878ca8790ba1c commit 03e22ba090aa42dc029c25dbd58fa4b941c87ec3 commit 805245071240ae480503af29c7e31d2d7ff5c7f8 commit 255490f9150da7c6dabe468f3a877b92fd0f02c1 commit 720cf96d8fecde29b72e1101f8a567a0ce99594f commit 90bb087f66745ca48f6f5e43df99a1212d89e712 commit 7c1e1c5e0eb66bcbbedde92eb2bd988016cf2716 commit f16a716621a6edf4eef2ba1409594f5c780ea09b commit fb84efa28a48e30b87fa1122e8aab8016c7347cd commit 5e41b01a780893507a0508f16b9c4fa7f7a48557 commit 3fa214eea43a07c239bba54426399d7d175d0454 commit 47bef230225b8d295255d88e130edc0b45ddbaf0 commit c0398df2a195fa21122e566f54c1f78aad22ec47 commit a960e35ac0111b793dd07f3ce6dc3e1981f91679 commit db9b4ffbfa82201fd7e18f6e434469f3648a8bcb commit a64af136771a7c50818fdc23ad4ce140ed7b66c8 commit 15b9ca1641f0c3cd74885280331e9172c62a125e commit 841d742f094e00e514627bde65d7822e98fb3e4c commit 2327b13d6c4758926e57b5b6c3094302ae3b5e9b commit 3b5765df375c90d46316822131acdd5cfb1c5869 commit f5aa7d46b0eec280ac022664f3e8b6bc9f4ee099 commit fc98eb494c4be6aed076c1ad21d46d5950415ca0 commit e1b7234b4a3f5fa716a84b081cd0d0245674f761 commit e21c3adc6fba27a5dfe3fa5e83d947ad56cb27ee commit 87a3451e346be3f9a5d8943ae094888044314631 commit 7c021558929f7c80ed07e83a91d0905c31e8cd9a commit 4ed49c954e35559cb4a34ba049a15f54ec7fccf6 commit bb4f196b47b6554ba89f02ec60246f0c643a4bf8 commit e751e4be1eec4d427d91583f31ce56ccb5286a27 commit b3e73cbf17a95a85e3a943d7500e9e477d6ab9c3 commit 1f43b8903f3aae4a26a603c36f6d5dd25d6edb51 commit f7ba887f606b1895dabf718547cf7397924f0d3a commit 6626c5a4ea2ef1bba3e02f75f797523e168fe28e commit 8748de873fedf4d55bdd99bbb738ee7ddf329792 commit 51c45e450fc8529495bc85c2d8e309816cdcf959 commit 1320d6c7b0deb7219701a55397e93e6c73d00366 commit 262236b4f5a7d2fe31ed31d34669a9ea4f1c3272 commit 0081bc072837b66587904e6988aea1e0845b0294 commit 5d763a9955f0fbf2681a2f1fa87c416056bd0c89 commit 4dd905fd9429626937107ca13770aa836c8a7e6e commit 10a36226157035e84aaa58e1699a32b3de2755af commit 052eaf6af846e59073a842e9b9517ba9d3f76d4a commit 84a8b3908285d007db49532fd4b51d4b183d1242 commit 4d31819a3746b1f33a915546a4b1aa19374d1544 commit ec457f8378901d673b841e81d289b0165286db7f commit f04d275d94e164d24516c32437c988a323018f63 commit 06f2f7772dc7ff2e3734e654cb2d0b588076860d commit 3ab55e3a1ebc22c1e0b7c72261a8c9fe78a3a09a commit 4b33b5ffcf68de3a43e7dddc91c5dc86e6ed8587 commit f173fbe5b042e1c87593e3b06e85cae0094dd867 commit 98dd398aa3e021896adb7f2b1d0f6b2d3784610c commit f18368b686a86477a79bc240a3a1c655d88a2348 commit 95133f41b090b09ba9163b4469cda1d5ee230cd3 commit 2b96b036a6a5767b84f87edc2c0a1c70c91ebac0 commit 6bad8e4a0ec8a950d10d91cb1846f3ef3e1f4ae0 commit a3e731260b9325e2e87baf54f07619c6cb83931b commit 0bbd1c7de319ca5a08359e5fc901a0317bf5c0d6 commit 20cb72174ddcc86596286784416adb947195e45c commit 990cad0e4a9df4202cd482c192608caf6408e4b3 commit a30e8c13e7affd6fe379c6bf213133b0f917d1bf commit 074efb5cadcb3c9e40d536a730318bfab3384cad commit 04e6931a76e592e66e1014ffe4d13303ccac5d8b commit a3a885878e74d3d81e4742f8dd84faa27c8863ad commit 32e8ab05ed81c995b92f12b590c12ef951ca1129 commit 3e838f7ccf64b0e33a2f6d1c66158cc5ab04c86f commit aeb73c608c5b7fa6fad6d98694323e7629e93cce commit 2d7a1ef85d013699ef60068a9f37ab56ffb33c32 commit 2b2db1f9dbfbc61116fec83a51d16fd0cf49b61b commit dc597268225b2e39bca0bc0c5394e3e6266be2e3 commit 43af2220b3302bc04d72bdf07970ebc0fc46155b commit 83a3439ddb28e15afa66f52650cf3c1486ae6515 commit efb4fd107cfd9748f777a4e9015d803d3c9db68b commit cb4b7a23ff85740ed9e0a3aa4c3c0195654a89d5 commit 163d4cd26a18db7db68a98b4d1ca95d542ca72af commit fd6ae969cfa2b12c6082eb83bdfa648b15d9b3c7 commit c85c623ab406188da7969180e53c4b61e8a982e0 commit eec53143b7fe1ccaace434e03b5959c9117bf9c5 commit 14d6a086f6b91238873d3363f840a91b3aa062de commit 7482a65664c16cc88eb84d2b545a1fed887378a1 commit 7cd6bb82ad96fda0021421fed8750a522dff2aa0 commit dc6934d5ae007ad53c88c3e0b9685160a39ba896 commit 62a4ddcb79e073465f21c5cf84d80a2f22820c39 commit afd5cb3907eaf43e4ca88c162b92143551f0323e commit d976521a995a817007ae3f471ac22b93b1bd39f7 commit 0dc987b699ce4266450d407d6d79d41eab88c5d0 commit 009a3a52791f31c57d755a73f6bc66fbdd8bd76c commit f4f9b827d76d2fa23c2a2359b4e9fb417deec61a commit ab8529b0cdb271d9b222cbbddb2641f3fca5df8f commit 543faf57ee0ef6feb1ef60122c0abb9097083ded commit ceb180361e3851007547c55035cd1de03f108f75 commit f12d07d6e9f22bbe65d158de1435ec515acfb50a commit 64e06652e348f0725368853688d3c15784549fd2 commit 9ce07d94c9f80e1b33f5f6bc2c5a27f6cc56a6dc commit e0a9f1fe206a66c3507ff8b7da56f9d1d1dbb9c4 commit 7ac20b3a6a6bf1181a6f9d76c4d36b2395ae8922 commit 876271118aa41097d035c84f99648746b4a125f3 commit 373269ae6f90bbbe945abde4c0811a991a27901a commit 421f5410965dbc65b7bf7d2b2323203920ad370c commit 3d313f09f31490cec9d5251b59adeb6542c944cc commit fa3dab48defe1ae2f5a5fb56df5f5931fb3e45c8 commit 508f748b03949143ccda614b900e3f7d842251e5 commit ff83e6e7ab042e1f6f4345be1837d08c41b0a49d commit e77a541f5dea0a2ff9d6a40dcda9b284e1e736fe commit a957995618a8afe3efa2b5746c0a954bbd450882 commit 10a9035c36d00586ad4bdb838f8800be951db8d2 commit 50ef0cacc43c5b01d5d1d65f08af33513b07e2c7 commit f64e6e0b6afe047cb0d34a5369597fe0d188e94d commit 5027605aedec363b3209c17d382efe5e29211594 commit 7fc494f9cf8ec7497d4aab26a3b19deceab0fe31 commit 366e817e83e4d795fe3f6e7379bfe79d49cac89b commit 805ada63ba0567b15d10d40419bcc5e6f0b461e6 commit 232b95ba4e83ca0a77f19fc772ccc6581051e5cc commit 5e8034364c22050b8564060e79947d094a65d45e commit d54cda74a9a27d6a18c6b670f7299114272a5e50 commit f9bbc1c8449a51a049a1d6d436eb973b00b6cd7a commit d3a453416270f5c7f1bf409597d702a2230e5a6c commit e9fcc60ddd29994a8b2a276ee9b454d7cd449194 commit 803481d869a4c49337c9ae40197c668e365a6fcd commit 8c56d5105747189c86e6df975257580acb2dd223 commit d9e74da2f1fc42926c6ace1bc47a700f88ada696 commit c974f755372bceda2c3cdc31b4b27dd772172203 commit 91c2cbf9b6a6779ee428955fb202ae66c750aaaf commit db475c11cd592d626749c9ccd98f12c05f29ed88 commit 103f06fd478106fbc2394030599db5c852b7fa32 commit 9126ef85f2b8654060929c5b6a876376702d1017 commit 25ba9429e0f40d3b725781e70d2d6b9ce47a0df4 commit 831463667b5f4f1e5bce9c3b94e9e794d2bc8923 commit 2a9e9daf75231c2f577209af5ec62aecdf7ca7af commit b00de0e237da32793dce221119c3120b8276f4ec commit e5d6eeead88e40282cb6dff38f8effd6341561b1 commit 5171660cbb14f3359e8a8bf7523afb0789fe1bcd commit 7283f862bd991c8657e9bf1c02db772fcf018f13 commit ae25885bdf59fde40726863c57fd20e4a0642183 commit d6b9af1097fefa7e6509a4b2f03af45f9eaddae9 commit dc2cdd17d1fe25c8d25c306a90cfc9ff17a7ca4f commit 016a14beac6d407c9a51f0b92d1e586a00bfc345 commit 138c2fca6f408f397ea8fbbbf33203f244d96e01 commit 84509eede6203bc5ab43ce0361a6ae17e2a17152 commit 8f456104915f0f991a2ce059a640b0a6f807e2cd commit 8524bb67145d8a2b495fabcd4b5643010ea43353 commit 7d8097073caa334ed6187a964645335324231e01 commit 3cdcdc34f35eb4616f7e5954cbdcd3390da8eae4 commit 04155815dbb8320ecd17dd54e85c9a5ae5d63bb9 commit 12d74553726675b5c991251f349422a24c575e56 commit c92df6aa397b5a37cf06004a219b4fdf26234dd6 commit 5ba584ec1101cd63081ba7c228849acef962f6b9 commit d5a680548eddca0e2e01fb84b85c1f7687355e21 commit 2e25ae522164e8586520ef20bddbb41c97b0057a commit e97f91e8d39f8f5cff071d847c2d192904e35d0b commit 95be40c875fc848d99f231e77b341e7ab5d8125d commit f7fb92cd2e39357f14846d69ae0e1d8692371f82 commit 46a3b1125308f8f90a065eeecfafd2a96b01a36c commit 7307e91bfcd0e3f123aab01b30557f93923b6d73 commit bcb9aa45d5a0e11ef91245330c53cde214d15e8d commit 59bcdb564b3bac3e86cc274e5dec05d4647ce47f commit 0667429ce68e0b08f9f1fec8fd0b1f57228f605e commit 58eaa6b3fb636072a4f19e6b6c76bbf564e95b95 commit c83375699fc648f94787d00bc615e370cf8f5fa2 commit 9569ff1a188fe48b46eb1ac2ae4543c271e0d4c2 commit 882d90310f04f3f90753653b8787fb4d309fbbdf commit 01cf387b1c7f60527c91627528370f463bcb84f3 commit d7f0c8aff01340c2bed48f1e712a7f17c31b3db9 commit 1d3182006cf6eea26d0cd752f8042c3cae43139b commit ca0cb8959f7b84742c3dd612f5b044788cddfcc7 commit fe4e9ff9873758ad07e6f7b3088ae3a9dd3ff1b3 commit 5c4904ac34b76eb58abc15a52603ee59bf8be85d commit dd70748eda3f63217d5284f48651239a9721245e commit 9e225fb9e636b31b97e9d35324c2f9e43ee0aab4 commit 45ecaea738830b9d521c93520c8f201359dcbd95 commit 9ae55f030dc523fc4dc6069557e4a887ea815453 commit 1c4dae3e4639540fb567e570cc56a3c292afb6fe commit 8c07f33ea096a1d25fcefa4e904ce50aa2358876 commit 94dfc73e7cf4a31da66b8843f0b9283ddd6b8381 commit 8587f3732b37a39de205d8c42f5448dbe6aa6b55 commit 1796c0255bae9d3d4528b8b3916182b2bc4e1e71 commit 50ca65b44e50e66e370f34e83a1d04a41bbffb70 commit 5bdaaf4fbf85d47d08f76f41108d8d3bbdf15f1c commit 9db35bb349a0ef32184ab68f79cc36026be4585d commit a06968563775181690125091f470a8655742dcbf commit 79398d24da4c9294285bdedf67018ff09fe97bdc commit 0b58162e1207db5052d1fadd5a16eeb90720d765 commit d193b12b2fa6dc316e3ee8871b4ec05992bcb7b1 commit 7bb97c5a39ecebc8ff5db1491fe4e7a8129f93d5 commit 70f1fcbc83582419fd753701c5abe674e05db785 commit 01752681f1ee5febc9dd2da23f5dc0289ea125a6 commit 2639d3e44f9c15b3f29f79943ed58f769faeaef2 commit 46d44516aa6e142fd70287e829e3bbad0d2ed35b commit 7268f0a9e842c52fa73b9f5afc1bebcf9f7d48b7 commit ff15cea338d2c78e0086d55c8a9dd637a5dd3ccc commit c5cb2cdf23ceefd9ef319d6c0d6ac294dfe356b6 commit 5f278dbd540b7548bc5193552e6d478255c14c2d commit 6fb5ee7cec06266a29f25ecc01a23b9d107f64e1 commit 6e9c65f71eddef88f14b7210bbf30e6ce2409b87 commit 02b16fbc56e97b295239c83e43f186c191e42dd3 commit a819451eda6df8f8445f9c7b093b86c4d1919b62 commit f999b37eefd7f1d59bece1d94fa0dbee2f2d62d6 commit 6aa145bc943d34bf05f2bc24ea3aa36d70470f1d commit b71c0aaab9ef1054155a075cf5e8a1db7b37ca5f commit 964893d3caff6bc39f6cf5cb7d90fd78a810c535 commit 3d1ab66e043f2a143e4d93242de7710a9c98c829 commit 89f4b4c53a7c12d2feec0ecaa15b0493b2bd61e6 commit 18e3c1d5d4cf6bd30cf1f1bc10ffac7a05a6719d commit b1dee9527e654207c0980023fadabdd12d3dba80 commit e61f294c7e8da94bb1c9d66f2cdcebfa2dc535a2 commit 0f36d074aeb51a20508a65861d1518dbc231a1fc commit 87a7d5350c67aca513dc0a80f696d5583430d594 commit 3019a8d7c1891ceea55820ee0f7bb36192181aa4 commit 90d5fd317c745a80019ed7f12a1933ce6116e0e4 commit 6a4a1f6054318cd3590562668798304b4351ef36 commit cff35798fad565b5f8bbf4ef84ac698270dcaf64 commit 7d4705b33cb84bfbba04de153d4f5e83041ac393 commit adc0e6ab0df390907228abb76c6bf82382089af1 commit cf6067290034b9ebbe4c39733b1a4acc94876c26 commit 395ece6f14124c2245e4b7fe74932514f999faa1 commit d7cfea332cca483ccd3970ed4de73ed892643e51 commit 163a5a58437062ce4dbef2aab6de4d784043bcf5 commit e0f1e65b836c42741288a367eab565167a408b59 commit acac270d09828edda2d530d255ee75ceb87583ec commit c7f21978fa6aafaf7ad37155c7d3a217dc3d16b0 commit 46ae2af9a8aa168cbad69f21bb1426771339ac9a commit 414e9f520e897818302a6b1729aa2dad8cc928ca commit 3db7f894549a54dd6f8dfb7fe213ede83249bb94 commit 971e4a9781742aaad1587e25fd5582b2dd595ef8 commit 0d8928a94ba18205cc7b41793af333e6731e9d76 commit 071ebbb0d4826ce7c47953b955a522f503dcedfb commit 202804b9705ce26788c443a54aec47eae20f4596 commit 780f97cec866e1ec6967c66c2a1f68b8aa1e3f23 commit c5da61cf5bab30059f22ea368702c445ee87171a commit f929217499cf54a30be995aae65e9951ba079c90 commit c6a3d73592ae20f2f6306f823aa5121c83c88223 commit 3f4309cbdc8496373875cfce67d7b5dba87c3ccb commit 141f733bb3abb000d3949c3b2f119751fe93b0c0 commit be4e366602303615cecb7636075bb18b0d3cc33d commit 1dbd07e088673dbf0e10f4bcfa17f971fd870195 commit 525e93f6317a08a03cc42847b3e075c92a382c99 commit d42a738e5ae5a73212a83414648a4fae524117f3 commit 71b1669ea9bd962d419aac41bc179e09e504327f commit 938d2fd17d173d0489b1bc96b87a1dd93954dc28 commit 11f01dcf3b32d01982d99df4492feef4332cf0b3 commit bfe53be268afd2248d1e28b4520361693c1c0fce commit efeb3caf4341357a7f4745c0da643b13200f0b9f commit eb1c535f0d69e3ec7679d4d714bb2a9765ceda69 commit 5cd561688b3e8a248fdbb37a1b10801b06736865 commit 3b05c960788439dbb47d0e62335f23869696b079 commit 8618b8489ba6ecc025be033d0fa87c0db53f5211 commit a913bde810fc464da6f12f3f19f3483034cc7e16 commit 3461b040a90d723c93c9d1c7c11e3464f5cadc0e commit 170a41e9bc07618d164f11b5154b449e9c24973b commit a6cc3c72aa0e8fb10b695c1a0c4ef07a66b3c2b0 commit e33c267ab70de4249d22d7eab1cc7d68a889bac2 commit 1926a6b75954fc1a8b44d10bd0c67db957b78cf7 commit 21779cc21c732c5eff8ea1624be6590450baa30f commit 1981c35bf7533d70f295b184bbb638d280fe2f36 commit 207d2073c648614dabcb06863d990f0c2a32c4e9 commit 73289afe03619bac585b69f563d0bb9a52e67722 commit 72bd9ea389c70ac948f48d20c0e4ae70c0153940 commit a204f9743b6808ca658c1bacedb34bf4c7e6f800 commit cfb979f71736361ec564d47d0a41f07e09983e32 commit 4bdb9d6501763e83bacbf26846754c567773a1fb commit cbe07c982dbd206defa10ba539e046767179edb3 commit 26093ce14b75bb0c4f0088abf2e11c351abc18c3 commit e0e146d5567317d6ba7d0169bed55d1d9ea05a61 commit e72f03f4bdc4f3a251343cf343bce28c28cbac2a commit 85f4bc0c333ceed24cbc9f69a2a77fab1ae3d4d1 commit 90f33674a0756a6f0907b8f6350cec3f7be4032c commit 64a30aaf0b0d9dcd52af526652937c1350a948dc commit 88ef4c5bb36bf60b317b74d8652c7766c9272a7e commit 2b2b3a751b29a09942a15bc0c4fed940b7ce1857 commit 740ccea3d36732346387ce882c50a7e4c3599316 commit 15360d7fc35b6b0f46240659a129c9255345a41d commit 7e053bab30e3a97bb681cec207a87413a024fc22 commit bbb6e5ae7ccfed7be06b5e8f99602100d4251d5f commit 00fa7f031dd4b885175da390e24cb02f6a45977e commit 48e03843f99857a561f25fb8e583c9a7dee5b81f commit a5eeb70de411ef8b1cf5d97806ed6769b84be872 commit 97ca308925a50aa80711ccfaf814fa3898374862 commit 82a562ab5f0a918ef905c29c759b4f0c788754d3 commit e73b386e75586f28b9b58641938ae0feb340bca0 commit 6366b00346c0fe8ae95d91eed3dd2d04f77729e7 commit 0147064588253b9c07766bd6292a6159475c2790 commit fff7eb56b376cadc58af14df286009086cc4d80f commit b3859b16d27fa58f99ad6221ea427dac7d751e70 commit 7c50a3e99a2eab5b3a9f273ea9e40ce919a3a3e2 commit bc19909f19fdc8253d720d11c948935786fbfa08 commit 0c7ea6f824345ffbb3b4ef880c7c56170365bc1e commit 1daf740137275aa56858ea1cd194eb3c1f6da5a0 commit 22676bc500c27d987a0b42cbe162aebf783f1c38 commit 8a077d9caa3a274de36ee2fe7b608041f5690343 commit 4984dcdc1f78529a0c699c1931971b7bc5e32a04 commit f64f3a72835fc63069a87c2811b61c9a73033c72 commit e9a7d236eaaeb1cdfe20e583e2e1899b26d7469c commit 9a714dcf1039d1142a1c3ad81db09d2706230e00 commit 8bc3812d0b33c214c365fff5dfb65397ad6aaf19 commit c1127df9515ca781940927deffc5ae657ed73a5f commit 09de5cd2c170b19e04e37439a712da52a0535015 commit 3b779044c81754f094ee88afe431d839e3a74aa0 commit b278b738c3be4f383796d09ef8fb6e49fee2091f commit 7acd7ab0297a37e44df928378f53d4260b25fd2b commit 427a60c1c30e1c0e9d0800a63df51985aaf3a26a commit 81990c3c07905af1e316f048a1ff456b2be224ad commit 068ab0cdc1a97628f7007b568adadc2a1fb08384 commit a00a3cef25a969bef8cce011c34b76071756dd05 commit 3e211f23aa1e1a3223edb64c4bc25cae28a1e3ae commit c3c483391bb23e9bb8d8a51e54fefcf508b1cce3 commit edadd6fc28b24dd5806dafc4b38633494ff423e6 commit eb08accdd8d966e4027f8ba52f43faffa3e6dcbd commit 61e419f651a65ebe01658b46bfc317896cac0eda commit fd3bc691fc7b4e553f49bc79f86b515ce2638141 commit 2e02ceb73ff87193618a21c2fe165632f52b9b9d commit 89e2b4373ae5215f5c5d1b7726549950daa77018 commit fc25fd602b1e101a45650475a8d2f00d7bb8e971 commit e660916b7f4dd3f17e5f28707213b66c1553d83b commit aa1965973cc734bd61294b675ac9763cddcac0ed commit dfb02eb6bdf84697dbadd69a7df12db612ce4ed0 commit a57e7345cac12ccdf883f9825523470850166635 commit 47a4fb46797016228198e63a7aa679841f80889c commit 90f5514bcc1a40de3391da552984717fb83b16f8 commit 819da60d77c9f0ec9f069cb27952501562a2e17a commit d8b599bf625d1d818fdbb322a272fd2a5ea32e38 commit ca1dc50fd5cfd7420faa46183f84bc203fae156a commit f24d1d45084155c59a135506a37bc4db10703fe6 commit 3d9c653cf635849d0c24a1ab17c2752a19f4ded8 commit b94a1a207de5e06a55b5a8259073fd8d1637f093 commit 027c38b4121e7d9ae43b2fa21b35582d1aef2a05 commit fce7bf30d3309ea325a7ec452456f8f7c079f622 commit 7d261c50d9c1adb70f6ac2e26edbc64c774c21ca commit 371409df9236bd1abedc143e76fdd7080cba3ba3 commit 1f374171fd345aaad9fcb30ac3acd255b5cd2076 commit f72fc9bd226979c272d6f829a3c60c3d9e8dc969 commit b83c9e3dd5b5dabc507e79c3f03e700a20b2a4ee commit 30ef0808e61850ec9dd105fe0a21f7f9a7c69324 commit 34ce1a6a29db41d5d4bffbab0872b1e1876cb4b8 commit 75072128d704576c39b3ec36b2cb84af316d88d2 commit 9da2902609f7519c48eda84f953f72fee53f2b71 commit cc3cb791f19ad0c4f951f38c98aa513b042ab329 commit 11d526f1972f486aa222fdfba751d2f0249c002a commit bdd0d7e290e0e4c8f7545fff89770abbd22bd51a commit 8c96e566d95aaad910a54aa0b21b7753eb615a00 commit 2fec539112e89255b6a47f566e21d99937fada7b commit ca437b45ac6d4baac348303920dae0fdee68e937 commit c59d73d43fce92e79eddc047e1961054f1284384 commit 9a92732f040ae3aeac017d0e80501cad1127a13d commit dbeb232726871352fc3e688ff5b02897f8cb0dc7 commit bcf9b296627c6b832abd388b5364262853430262 commit 7835303982d11ed700ce6bc530303272bfa8562f commit 5531786537e4fcd82a221b0bd01ce375942b3854 commit 9a23fcf79dc647627b3780284a156cc6e7bbd7c4 commit c028d66e6ec471fc24f70204768f43594a6a8b4a commit 872642edaf4228040473349ae0ee872264fa67f7 commit 35ba8850b673050b71b17c1421079031f4fda319 commit bc99f1209f19fefa3ee11e77464ccfae541f4291 commit 344feb7ccf764756937cfd74fa4ac5caba069c99 commit 6db5e0c8692e590734a7ec7455365d9cbaa15ef1 commit b45b4f880fb660c4bd4794a2ca3950c4570e12c6 commit 737dad0b5d609f464cae73292de646d3d016ec73 commit 88c775bbebc9c5b080d3cbbdef73a31eaead9e5b commit b7580e669ca0d624b122455058aa6fe62c0fef44 commit ac9257f0f50871b7459dac48a5c11bc7b2094245 commit 636774860a6240dcb148f9a08d333a697f3c74f3 commit 14eb72ff580de169212bfc5222499febd312a252 commit 8a076bbcc1278c6256c57915bc193890a6432c6d commit 90bb21cb692ead906738d314f3dcdc432aaee015 commit 149f6d1a6035a7aa6595ac6eeb9c8f566b2103cd commit 9dfc3ee1b0f22d9415c9b7c316447d47d4a702d1 commit 922e7ee31defe461d8638f1277f0c8215c0707e6 commit e2facd575fdf13b718f6c833ed546467a3e6e3ba commit 59a1e9ed1b406b1ae7cbbc612ce00d459987d028 commit 80fb575678b488b920cd9100939b60d480101907 commit 50e8ca0b675add8eb0e95938448a4a0f9fb0b6dd commit 33da97894758737895e90c909f16786052680ef4 commit 1ea7fe77c0db843d8e5f96ff8535dfc941e88694 commit c877bed82e1017c102c137d432933ccbba92c119 commit e23a5e14aa278858c2e3d81ec34e83aa9a4177c5 commit d9e019bb396fc9448b104a6f4cdb7acf8af02854 commit 911dd554a129081f056417a30054f24ef6818e3d commit c4feba47aad55aca90d9a2b104c0345ca6f93712 commit 61c1f340bc809a1ca1e3c8794207a91cde1a7c78 commit 4ddf8d7dedb881c6638850f1b74ff1f9967c89b7 commit 6d7291843ec5008a9ff1c011d342679fa9bfe4b9 commit 0196cc65f91710e30d45cea78d75fd616d705002 commit 66ff4e4ed471fdfa9ae4c49a0abcf5d5043ca65e commit 097d56cdcd77639bce7e205adaa22b6f5e7d93a6 commit 40184ece92ebc5adfdba84554bffb60ef0e37029 commit 7ba01b504c16ae64a8faa5f5ee9a809d424cdf0e commit ea0b20d3bd96f9ce2a1e9d886175411c05dcb179 commit 89ed996b888faaf11c69bb4cbc19f21475c9050e commit 9306b2b2dfce6931241ef804783692cee526599c commit 57b9f3384c64e37bbdad7f127625ac3733d11e5c commit 017860c909b03fa687d29a1ca46390ba9a007b2a commit c4e85551198ea894ac29da1a81becfde65c11f78 commit 236124d1167bcc539432b4f6fc19ce1fa015e2ad commit a84e43b81e45b3da19e51e1e9426ba9e4d0fd1bc commit c0ff84cb58faff9fdb8d955c6e1e07fd75d88c16 commit 58e969b60db0f5ca9abf0a8df28086efd601f38c commit f1549c09c520877be211d483d3c6f4e7f77d2588 commit 0fe6906203d02d050e86b3398219df7bd9e8fe47 commit b7320117b3d36fd6fe542bdac5f7af0a83bea23a commit 2d7a1f71837c0922645143cc270b5a4834595544 commit 86ef6eae0820aa5393983c38c1c5ff9510ca9118 commit af019bef6d6fda044c8db232c97d6be2fb64c741 commit 1f969d28cdbf99c28eb08ef0a0017713d6909347 commit 78486da8ceb2d5d833a69fd695bb9f5a941b73f6 commit 3d4de925356177dad0fb5869d1ea537cfa033009 commit 15c735e7990fdabb466a3341b6b2dfefd987127e commit 76611a84f235126f3258fbe4a25d85ab326ad6bd commit e5028e9fd3bc7c6b916568e5218f5fca5f0d0a75 commit 2a93292fb7860b51550d1222c151de1a9fdc15da commit 652284d6db17f3c7810495fda059efdd84b61fde commit ff613f7ba7105b17dbf251ca298d1de9124a9875 commit 0a94608f0f7de9b1135ffea3546afe68eafef57f commit 84900aeecefb281964c0ba23111be4809477124e commit cb50813998b5aed924323b1b46471e8c60b26692 commit 1e866f1fe528bc0158cdcd589053753032bdb52c commit 3fb0fdd7758d3b850db82899f532dc71f6909c02 commit 43195162fbf54b2cc35efe295d2ed072d2bd4048 commit a0d10c437c1c9859d24a16b90abf85120603b4ff commit a5e4a53818ad585416a214b894fdf568443d5293 commit a91d1a17cd341548fd9535e33c331a2756acdfae commit 17cd10a44a8962860ff4ba351b2a290e752dbbde commit f5ba14043621f4afdf3ad5f92ee2d8dbebbe4340 commit cc79950bf0904f58e651747c17987270f1931c29 commit 8955ff11f56e1596e9f80ff6fa8c48e53047654c commit 806b52287a96bf5812a6be008d24add3f18952cc commit d5c6909e74606870bb59b962200cf75eb25d6d0b commit 3cffeffe051a961417bc26f2053bced4cff83119 commit 41529d79ce1655bd7463c01d9813d0abb6fb08a4 commit 5439c41a80c00e993d18d1cd4407a6a82b35d963 commit ee7b62e127c8cc6db24f83e5e116357649f6e41f commit cc35e75273fcf4fb4f12f9d8fd979be7aa808041 commit e850f6b13a85b451411bb74a526bc08706129e8c commit b7be3ae759160aa3355ebeb0583f67fb9bda4dae commit 4fa05a67b558d2cb3acd2bb299b91220d405ca5e commit 7d09c7606346db9a48b62b4e02454a6b8f323043 commit ca0367ca5d9216644b41f86348d6661f8d9e32d8 commit 53c26181950ddc3c8ace3c0939c89e9c4d8deeb9 commit c96cfaf8fc02d4bb70727dfa7ce7841a3cff9be2 commit 60693e3a38903e39e4fac0a9849b698fc36228bd commit 891ce1c9623f36194587d02774ac3d8c30c3ca72 commit 3890f749c590a5a33f0034362be3304b69ae6d65 commit 6f2c8d5f16594a13295d153245e0bb8166db7ac9 commit 29a249d72d31cde3cd24d43354b40019efdb48b1 commit c9eb2d427c1c428e4f4e29f1e635b9a83236c015 commit 868941b14441282ba08761b770fc6cad69d5bdb7 commit c83dee9b639469b6563a281f39deb99311f16bc4 commit 0b15205c7325dc20b7da0068307670d222d66949 commit f6a3f66063ca39e7ee5fcee59e889c5ec4de9dc0 commit 75510fac07cdde23c9217c8299b6cd64c689fb2b commit e4b1edf48fa37cf4f5ca403e384731fe28d13691 commit 604d3a3f0dca0ef0ab0322f5e7af8c70c5ddb6d4 commit 748262eb400e809aa13e3485f4983c3db3d0ebb3 commit 49062ee374f7a47443dac7e255bd419861de5b43 commit 4c33e5179ff1a09cdfba38fa4fd260ae6735d3bb commit 912db6a58738e8be502838eb6a88f207ba356cd7 commit 98a90f1f0fdd112b85b16ef6ceee69f319ab9311 commit 958afce98c2c86732483458c03540d3c6ef45254 commit 3876a8b5e241081b2a519f848a65c00d8e6cd124 commit 606ee059f85a9aabb0242cbc72852572a3c40432 commit 133dc89c640f965c2736e70d8dec0699d763850d commit 2d04559e0660cf503d4e46cfbd7421d0b6156aa1 commit 50fe04d46aab77cf8fc3d48fbc38d872d181a849 commit f746556aa9724d740c44861db0ac005ae50e1332 commit 75a9ad8c1b7960794c16182fd90852918ecdc0a6 commit 9c913f38032e873758d1b13fce720a0c2cbbfcb7 commit 5877b7ddbc2502a7ddbc07970cf5c15972c22de4 commit a53bc32182d7a2a934ca994239396fba21161c8e commit 4528c18605654bea022d294c9ba2e93600d05a94 commit ce4b4657ff18925c315855aa290e93c5fa652d96 commit 5df79aeb6e0890d6f5fd6e12c7ad238a1617b210 commit 86bd6706c404ea703c11071d8b600d46bb98873c commit dc2b9c70ebca8e5661d33a15ed2b99d4510e90be commit 40835624efcde7f984cb859035b95b5a526d1a9f commit fb3e8ed0438347c63650850c011c99deb59d7e62 commit 615dc75fa6a7fc6cf029b01cdfc9d4b78919e71c commit 8a9899c95d1cd709d441960ca325c6c8184978bb commit 0bf95a1ebd48866ad1438454061782d4d47765f7 commit 044b5cb9e8bfe4f006546fd98148e95489a6e803 commit aec4706b0e70e0cab2d0650b63cf2ddc1b154352 commit c8a58ce18ca36b62749e326411176554462a5e2c commit 8b076fa7c5befd1d3e1d892ae466f5334e4c6c99 commit 25f7cde8bad9fe5943851d3d602e9fddb7977961 commit 5d945cbcd4b16a29d6470a80dfb19738f9a4319f commit cb6b81b21bd9cf09d72b7fe711be1b55001eb166 commit 417c1c1963549e9a48b83ada59d90258e38c6594 commit e8f90717ed3b58e81c480b3aa38e641c0da5a456 commit 2c9e8c01109fb65a63b6830adeb5d7c79ccf26d6 commit 473683a03495a5ed9c75a02c7497f32d6cf92c7a commit e6c64182ed946f1cb65799de9ee75f8bcc42b2c6 commit 074293dd9f61f11898f1f6e01f1560fd4c474025 commit a983d263186996002ecafc72f9a0dc5a3a2bfd6f commit 44b0c964201e1e2fbfcdab4472f9260048befbaa commit 557f9100c74cfa033488563240f567466613cefa commit d3e19f76121178420c3efc9688adfd5a448996e0 commit 4f5a17b221cc48d66cce13fe1531ca8fc99078b9 commit 1cccdfe21eb6b8dd4371378b4b61223eb37f1ef7 commit 54c3e9493cd502d63ff3643fa70b5f98b3201846 commit 869618c3440227f848ff9ac55aa64d523a60476e commit fbcc38811fcb47335899a3776b4fd5670db4e228 commit 4686177f7d2140cdd9d031702c2b53ac4c89340a commit 7b5b0d196c2e6cad87cb1e3ce285c7885f2bd796 commit 660f46e16c4b8a34978012a9f10a32a16db3e98f commit f3cd57e499e6904b7e356d11bd33d617341b3f24 commit 869b10ac8d2300327f554d83f4dbab041bf27d49 commit 4d37fd51b4440cf6a02942c0a169ee18a902fb5b commit c19a23fadd279f433424b4d6436fe4ab0020e20c commit 37edc99979b717312e60cf3463ab756f5a3d6de6 commit f4b4e41a2e05270cd90c5817ab514ace95555874 commit 26749aa8d1261bd6f2db9d019276d4277dde7df8 commit 041a11095abdd52b38f1ea1355357ecd2b66c0e2 commit af14e7c2fc9b60af70b410a7dace116eaa5e4e65 commit 465576ca481caa9cf18550652efdc6b103701c68 commit f7bacd97af853a9bba9bb8d1baa12f997e60122f commit 792a0cdde34d417bc2c8266d8015c5fd58d44a0d commit 8813381a62e1f1703f8fbeccc5fa4fcc988be882 commit ccc4200cfb2518fea042b16f090962b07314439b commit 25e751642a38204da189e0e239055702caeb461c commit 34a65beccdea16a12d862e94d004ccf00de8cb3b commit de0246ee9fc95f1072a0d26ec4025a3545f159b8 commit 25dfc8fab47fb0d7231154e07e20b5fc0221f96e commit 326f0672153e0ff5b19f0ff9d6b5f75a64a9c2b5 commit 42c7de9622b2ec64f7c15c336b75f8933ea7545c commit 2207efdd8388bd300a0051b1775705d890abd306 commit 44998fbdcdc39253cb10293c3c27dabc040ad7e8 commit 34a1b0f90e33b00b431d6e8636b787111c6c29d5 commit 8f5bb69dd453666ff949079443ebce24381e163c commit 4cef2269318cdf5beb70c257f7aaba267f2157ae commit 0339530d8879cbd560cd3d3de5138dc797744274 commit 5b4ee98713c7b42e270835fea08c3b6977b48e7e commit a4f8f294fe99a678ce0a50d649732440c41742b7 commit 4e14e0fc9f0e47d9d3d39b6f92724f2038ee6e25 commit f7907f6db81ca08f4f8bd9245b8fecd49bc82f6e commit 197485c695430ab03d9f4a96aab4d4f76787f7c9 commit 352b25a770712a954b1def1b8c6429b0825ee0b3 commit 9a1dadb6d33173427b6f6c89ab1ddd0eca636afb commit 39a6f3fe98ff03baab364acfec69a6f9803ce22c commit ca0273ab447853c014983951e2183991f8dbc7b9 commit 1a3408259bfd5a383b3c7aa7c309c9fb81e35ce0 commit ddd0fa1f47edd794736e70d165341a5c4ff78e47 commit 5085e0361f5a3675fc0d0919f7b69aded453ceb7 commit 77299956e8867a4cc19c5fd41b797c5152aad1dd commit 1c05d9e53d2cfad1f99d9087a8ad24da4ebc0905 commit 0593ad215359d51514c1e6c81ce28ea598efed6b commit 74097f9fd2f5ebdae04fcba59da345386415cbf3 commit 7acc487ab57e076c823b2b7559aa9e3997962ca2 commit bac4b41d917a1d999308bb1e779f8c3b39c19f67 commit c3b3f9ba25e6cbe59673505fbc5fff6c4cda0ef7 commit 3c3abac60117cfd09460980d9a14c253b37f7b00 commit 86e4863e67a9bd1e257f162f3d740ebb61206c91 commit 9dd4545f65679042273a93054ec3bb665ecf7366 commit 44abdd1646e1fbfb781972c0bffc90b4eb3e87b3 commit 34a255e67615995f729254307a0581c143e03752 commit 3616d49da5dab635c4bb0eeb183b61df72cd0757 commit 4c5aa594928f97593502a66d5a9075f5f5dd064b commit 8de297dc046c180651c0500f8611663ae1c3828a commit 44584b417a698bfaac0c2577e7cc4015ea7359ce commit 2ce0b2186c057a54a4d980b296bd1659d0091716 commit 319568d75f5f91cd4f362b26e65af2a4437c64bf commit a7cefb0b40dcfdafedc54a3ba659327d0336956d commit eb54e014367e1700fa5b94e4c788520081a70661 commit 4a21ab548a7ac19b15aba9aa8df39972ed82f4ad commit f46e3f28f89b893685ec9204405677dac410d8ad commit 72bb503097e79113503dc6d1d49c4063ef97970a commit ee4a26b4ea029aeed749c6560ed9eba224337b04 commit a4f1b04216023ff0f4cd89328b59ee6890248130 commit 6a7379f196230cfa35335ec627e0c0e08da6a8b8 commit 05674cc9ea97079ad7c819628e3e56b046c2f497 commit bdf4473394deffc94c16c0502e73f2daabbdc1d0 commit 40b31e5355ba8c4f7e58f1c458bbe46763dca541 commit cb849b4dc73d414149fea96330cdf96a82919fc9 commit 1c5a2fa97b91d37375f4fc8aeb37c9456c93c828 commit 0d60f2b47d8312d6a88454a373990579624edbde commit 5ade1b951dec63a81b23c2ff75c5b4c191977620 commit b5e924bd7cce823e604f9b7834fac846a910331c commit 1f5dcb7365e4e0a8a6fca44352218ccc6f41a8b9 commit 81f776b670a0eb17bf9cfbfd2df32f66a34bc453 commit 4074f96d0f2db2fcbd8e223aebe60ca445b8aeae commit e216431b63aef8b7d9cf6e59aea39582d48b1808 commit 6290ba4c1656ce2374996b2ed11c3997ebbc4af5 commit 493af96d61b1361a44d016057e0fc6e5d4c92fc7 commit ffccfdbab1056954fd400d2864a1c1b38915c143 commit 3facca7489be2d42c6256350dae72c342a47d7e5 commit b1babe8623f91a71a5acc34eb323c718e0413b74 commit c13423c63f73ee2f9807fdb2a3a7e647421a8114 commit d58715704c5c7d82d7194540780fb335ab337da0 commit 1b54a0121dba12af268fb75c413feabdb9f573d4 commit 7786fb366e598e984ee9307616b0c72979bd191c commit 412dfcf34e0695fa1714ad422b2a5d0ed1406437 commit 0407b33fadcd7a5d31ba3c473cef95b2b418d8c4 commit 92fba5d3c8f5b757c4e3fdc89afe76a8f6c4da68 commit 168c02994399f2714bc6c73f85b7ce4d827f97aa commit acbe9ecfb7fb14db868ddbeda8f43e623026316b commit 3517e6b6fee05b6259ca21741cbe5d7bf68aa672 commit 1c6aab75ece7c1d450e4561cb2263403eeb7ae2f commit 79c453af55d9f1e85b906211ea4051364d28dcb4 commit 9a4514fbffda6083d9f7fba4882142686783cfe4 commit 7bcf89eed48f3fba8d0e2c19236e7dc547b6e037 commit 889fcbe949bdd8470931a90b91f273ca18c510c1 commit 95983aea80038539ebc70e41e73e9bb4eabd1a92 commit 32dd9236698bcd2ffdb69954b167a851fd50182a commit a6fd8f936402c3bcc5ac6aed9cca8e73b5ca08f7 commit 1b255f1ccc883256e23db279ea164273ea0f7462 commit dfc4005f8c172eea359f9db08c3b2b0ff0153699 commit ee8b1ef9a6b089abf7a9c7d094b6e93fa05f15b9 commit 2bc7ea71a73747a77e7f83bc085b0d2393235410 commit aa316247c726d96f0bc205413c54ab49622ca737 commit 8585732baa40455fbae9575d0c8316f4b0cf68f5 commit 1f83db6be37c53f6d395a41ee2602e3280ee60c2 commit 79b2c54f19110235041d8f1250e3c3694047a902 commit 4959e609de1ed4199f33124a88a4c9ab95f5cd9a commit 5640cb8921c9aff1270557482237e06af00c388b commit 8b3120dfc192a4c61f73a0798755713ba2d3eb8a commit 3f5a3881f1e26aa5e3ae34e34e439edce291ef5a commit fcac1ac7f1e3fb877aad51c134ff2776bd24f9d6 commit ed63b7cf2d6ebc01a765be31630c3e4a64f7f095 commit 84e2fd649482435c3e12d9099784976ce8bea1e2 commit 203dc777865621b0c7f8f5b19ec18e572730278c commit 05381583a1d0c38cd2c4907ee93ec624250b8912 commit 980e09e8b74c26baa32f0d65d272ecb1401606c9 commit afb185008d40930895a7f7465a9661afeac0b84b commit e3b2bbb33e26d0a0327f878782632ec35cf96a72 commit 9ced2e492ba9436524a2beed27df730042cbcc3e commit fbad6c418e1e63a29c83e8b56a3636915406a9b7 commit 292956cfd9d38835f95021445525b35502837ff7 commit 64f857b5479a7ce2eaa56bef5f459da5542ad90d commit 931fa55b2fac18f226622a95e42bc968bb852cd8 commit 4557489e0370ac0e9f1f5f100f300e9278be0733 commit 1422ca01be6a816ec5a445a6fdce00342adcc5f8 commit 1be3188a6dda544dd4d78503eba5f5a77462b348 commit 66bd94debe4aca171bd0220de7af3feee6542d8a commit e3b0079be8f0a2ccb533f7e38757b27ab6b6018c commit 06ac561fb0edf868f7b292fb4a3c8ffbbb1e14bb commit f9af3c16bfe19d145cf0588afa06d7f1070cbe2d commit 3d2af401cf851be0bf2d4d89af6f120819b786a7 commit 0dc204bc3f199de0a0924f3d5f7c26295e5c012e commit b2065fb21d9a789b14f737ea90facedabadeb8a4 commit 53bd83dfff8618d4a1affa171288b895add40476 commit 7c8e4a257246399c4f1ff43a06fc53ec53423754 commit 2182cb7029e9c5cc4b63d1c5682f62ebb65cc952 commit 674b9e08a02903fef75beadca0df490348d8f560 commit e22ec18750be01298763b10f7056ec8edfbf064f commit 6fdd2077ec03f4b34d127a1713ca19248539d6e0 commit 736f7308d3e6201322142d98abe4e9af33a429f7 commit 4ac77cce84a4afa3b76fe7c763aa3e754cdac422 commit cbe93a234bcce489be319e678dbf167b7a5f915a commit 1c0a90364859c17d57a7f08d6209b73e7e1142cd commit 47231d5e396a94e869b877bb1a0dcd526d91ac6e commit 0da0def7705dff7ee938662ea06f90770cb6f9fc commit ed67f7292b99f5d3876fa02dd51a43f46986c61c commit 1f3dfde4fba4f4b7822c389b9c994089a4ab588b commit e1c42213f3f9b24200d4b60da806303dbeae5a4d commit 1ff186ff32997049a6d263031819517eab4e93aa commit c10100a416c16b598bf5155e759307b34dac0d7d commit dcfe584b00f1d6dcbeeb769b939f53a3c4f04143 commit b834fc94c102eef751ff741aa0d9b814d0a81af1 commit a16161a869d5633d7d9a825a2546b68953e3a6f0 commit 492af34c9f67ef864319d0db930c8518a04b1937 commit 2605e60c82604508f60dbf427b82cd48154d88ee commit 7e8a3ca972adfc89609718c931577a86c494967b commit 64f991590ff4410041a70ee7ec2db079bc953929 commit 541846502f4fe826cd7c16e4784695ac90736585 commit e05d5b9c5bbea80313d8f58c3a80a18839b25480 commit e2b542100719a93f8cdf6d90185410d38a57a4c1 commit f00654007fe1c154dafbdc1f5953c132e8c27c38 commit a782e866497217f22c5d9014cbb7be8549151376 commit b44f2fd87919b5ae6e1756d4c7ba2cbba22238e1 commit 54d91b55c7f3f9f2c86e0b6be4501433b32ddc89 commit c20ee5749a3f688d9bab83a3b09b75587153ff13 commit 798cd57cd5f871452461746032cf6ee50b0fd69a commit f0a892f599c46af673e47418c47c15e69a7b67f4 commit 6614a3c3164a5df2b54abb0b3559f51041cf705b commit a9cf69d0e7f2051cca1c08ed9b34fe79da951ee9 commit 668c3c237f5ddc2889879b08f26d2374231f3287 commit 1d239c1eb873c7d6c6cbc80d68330c939fd86136 commit 9cae5b3189eb9cd12a9c3f6e8afda2d81958640b commit 232d150fa15606e96c0e01e5c7a2d4e03f621787 commit db100e28fdf026a1fc10657c5170bb1e65663805 commit 180abeb2c5032704787151135b6a38c6b71295a6 commit e5a95c83ed1492c0f442b448b20c90c8faaf702b commit 59eda6ce824e95b98c45628fe6c0adb9130c6df2 commit 2826d447fbd60e6a05e53d5f918bceb8c04e315c commit 9d50bff40e3e366886ec37299fc317edf84be0c9 commit cf4b7387c0a842d64bdd7c353e6d3298174a7740 commit df4aaf015775221dde8a51ee09edb919981f091e commit 2939deac1fa220bc82b89235f146df1d9b52e876 commit 37bc31f0e7da4fbad4664e64d906ae7b9009e550 commit efcc970605a4e365151db247361bb013f5c84922 commit 0ee7cc803ae52b60f268fdf2eba79b9fc1162747 commit 968d40986f004b463f057fce612996556b753c9e commit 5822b8acb869caac72c3ddf149d463177aa28fd4 commit 41ead3e0cdc03d64b7da2dcb1fd70ebb7164228b commit c83b9d60299317a2c15550dd506c864cd01a3e5e commit f59966779deac642541c3f7d772a3bf5972727ed commit aec208eecfb833b05597bbc28696fb1ab62f732c commit 1ac354beecfd58e769fb5373d6b2ac87bce9e1e4 commit 4a0a2cf4c03ba49a4c2596c49c7daa719917d509 commit b2f6c73561fbccee404b441a5c2d0b4fefaae817 commit 0a83bb35d8a6ff3d18c2772afe616780c23293a6 commit 616699d77b3813c24bf46090e722da227bd56cbf commit 08ebadfcd8c8c1cc7a14a7581db8331147b85fbb commit 8df436d5ccdf7f441becb8e8156c8ca9c4276e8c commit fb1a140b7bd19c474a41fb2df8a845e8eba328fa commit 64234eabb8f38ac2bf77dd23140887d81acaabe2 commit 1ff77beac87682c22f99e5cf32614909c65b4a36 commit 89390c4982b77c159e3b8a0be4a04552ef0971a0 commit 4c3861f587400db00801810eb8034c7b480e21dd commit 67c79599eea167dd5e08314b8c26f2dfa717753a commit 0af167f92838f34e594e49a6c8cbaca45548e030 commit 2de09ce41f484cbcc65e518905dae73da67ad35c commit 0cd34ce82b0a9ce503d35a51bff47ba3b6715557 commit 9bd110ab06e93fd01938dedd8b6015940418f0fb commit 9c580e8f6cd6524d4e2c3490c440110526f7ddd6 commit 615fc50207fa27453ba7f5fa1abd60a01a498136 commit 0591183699fceeafb4c4141072d47775de83ecfb commit 86678d46272021c88638881c63d427dd10d665d6 commit dd07556324ece81f0d2be756508903d53e331e9e commit 6396679a1f2db0c63721b841f1a5617d6282a4b1 commit 89b008222c2bf21e50219725caed31590edfd9d1 commit f173c7405224002fc32b64cf1679c4d888c493eb commit 2051160546826cf312f15bde534038582b90f844 commit 764a1e6e0272f377f145fc84b547d61e12724233 commit 84ef99c728079dfd21d6bc70b4c3e4af20602b3c commit f0068dd0effd5972046b69b23f99c43251e82d0e commit b2a93490201300a749ad261b5c5d05cb50179c44 commit 30456ffa65469d1d2e5e1da05017e6728d24c11c commit 9f5171ce733a694bd0211952687704c7a5bf32b9 commit 8da536d5e114ad1da6028c7505f048ded2e421c6 commit 352e683b72e79dbd46cbde528eb91e228e88267a commit b7ffeb4a1b5bce1a7495636d21f1704bd7ff01d3 commit 4e64b529c5b04e7944b41de554ee686ecab00744 commit c4c10a68e82b8a03df234ee744acabcc648df270 commit bea9a56afbc4b5a41ea579b8b0dc5e189b439504 commit cb9c7ab1b3ddc2702379dd9639df0c2230453c2e commit dc0a096bcc1d659ae93f836099c6b0312d2ccaaf commit 5afb76522a0af0513b6dc01f84128a73206b051b commit 541d54e40f1672dea6514ad64d54d61ed952648e commit acc96ae0d12783e9781428b17e34fd662a904f0a commit a6250bdb6c4677ee77d699b338e077b900f94c0c commit ad2feebd71ff80532dff75756d1103f056358614 commit 2bba782002c5dab6ca8d608b778b386fb912adff commit 36fa1cb56ac5189c78dacbbb14d452d0c44b86c0 commit 7ce2aa6d7fe121e243e1c8a8093911fecdf1c88e commit 0e66978ebeb44f96ff4d26b2a83dc88a2bf887a6 commit e16c2b8250262bc0bc531299e2c30641cee14221 commit dca452041552a5a5a6aab3ebda32565fad003eb4 commit 0f761f5768b842fe483141bc59db5b4d66bcaf07 commit f1f63cbb705dc38826369496c6fc12c1b8db1324 commit 1b586595df6d04c27088ef348b8202204ce26d45 commit 0a2d922a5618377cdf8fa476351362733ef55342 commit 4bac1c846eff8042dd59ddecd0a43f3b9de5fd23 commit b4ddb27d1dc7349fc882dbb7702bd2628fe27af6 commit ea8793f214ce1e4db205390c0241955f7ff6f383 commit c02895577b834a6148f6d9d0006a6f196511cc79 commit c8007d362c0150aef34323702e7fa996fa0cfd8d commit 8172cebac588c3c5e238d02be30914fbbc5b1234 commit 73c49a624a8db1ec38b138741203d9d7c76eedd7 commit cede849e9e2755084798236735d045298f9d9979 commit adcd15dc47dadfb176a14fa74af5b0cb0f659f2d commit 7e4a77de08f655e159e6355bdfbea73be71fab88 commit 8e78c7c4fe29f7ab8f87634c5f4dedc66107e66b commit e48e6a131d34de54ce6852149e4c97c2208f45cc commit 7d50b92d588d1e7bdcf38f523200b7b113b46c14 commit fa0bbd3be91dd46f4e56e5cf1fb6e8c2837c649c commit 5a0918b4cb90a90fc8d8bfd9b0f81efe6651951f commit e0df49b3045180fdd23dc27193344a767cf68fe1 commit 84435d1d912140958213beda37c708ec3072b5e1 commit 04fb918bf421b299feaee1006e82921d7d381f18 commit 5c1943820156e9a120faba320a72578578a69ab8 commit c7dafdfa90f708b6e4630abf824ba388a3947400 commit 373008bfc9cdb0f050258947fa5a095f0657e1bc commit d83a348b172dd7f9f10f049b3fd7e44cf4d2ed8a commit e98459c06e3d45c2229b097f7b8cdd412357fa2f commit dd49c07f3ab67e8d7ae7b8231b88a746c668b4e8 commit 19f7b8334484d6b610c8eb527c3f56cb42bc8bf1 commit 31ec699ac5d8d17c4f696888708bb6b2567dfcd4 commit c65c71ae85095f94aae32d86aa78811318bf6a90 commit 5544a7b5a07480192eb5fd3536462faed2c21528 commit ca01eba4e5b6b50144a62d7704763c41b68a0de9 commit 1af9add1f1512b10d9ce44ec7137612bc81ff069 commit bf7f7efbe051a59e9d0710cd26ea05f7ebc411a2 commit 385bf5a856c196d5997ce4111a23df7e1b679c17 commit fbe43dcd1aad7dbcee1cffdbe6c3e1d62c85f76a commit e42dfa66d59240afbdd8d4b47b87486db39504aa commit de8341ee3ce7316883e836a2c4e9bf01ab651e0f commit bbca24d0a3c11193bafb9e174f89f52a379006e3 commit 085292c3d78015412b752ee1ca4c7725fd2bf2fc commit cf36ae3e5802716617b9e4d902a31048240396b0 commit 8ae4be56dd0c2b851e7edc0f1d5cd441f88481c0 commit 2ae6ab9d82cdd0f7381639ee31e31de45519df4c commit b1fb6b87ed55ced458b322ea10cf0d0ab151e01b commit ea2aa97ca37a9044ade001aef71dbc06318e8d44 commit 54cd4cde7c1edb869603073167cabab0b760fff6 commit 43ef9db423bdce1df504d4d10e25092d427f04e3 commit 9d705d7741ae70764f3d6d87e67fad3b5c30ffd0 commit f5994da72ba124a3d0463672fdfbec073e3bb72f commit c351938350ab9b5e978dede2c321da43de7eb70c commit 06671734881af2bcf7f453661b5f8616e32bb3fc commit 2035590f3d40f227eac453d0c36b5eae85c1cf08 commit f461950fdc374a3ada5a63c669d997de4600dffe commit 16b3d851c0146123507fe864fdd97411ded51147 commit 233f56745be446b289edac2ba8184c09365c005e commit b75ef35bb57791a5d675699ed4a40c870d1da12f commit 220e979bd906015b74eb485e16464ee5abbd3c9b commit 6b04ce966a738ecdd9294c9593e48513c0dc90aa commit 8d905254162965c8e6be697d82c7dbf5d08f574d commit de2228c04150df8632ad22ee490de2ed579f64e8 commit 607f41768a1ef9c7721866b00fbdeeea5359bc07 commit 13393f65b77445d8b0f99c7b605cc9ccc936586f commit 868e8e5156a1f8d92ca83fdbac6fd52798650792 commit 6067c82c576af13a6b1c892b42ac4a189aced8ee commit a3f7c10a269d5b77dd5822ade822643ced3057f0 commit ad3b0b99113783f697579c7b09285916019865ea commit 2037769f995e45d3a368fb74983954b3ed8da178 commit 16c01544e30a4b4cf5f3eaacf7a4c19a3622b597 commit 4e3464badbeebb3528c457aefe91413f8a9070b6 commit 00047c3d967d7ef8adf8bac3c3579294a3bc0bb1 commit da1acbb12b33cbc651d8a7e956d254f1acc5034f commit 894c9c540f8315007a4752320e2399bc2e0c46b7 commit ee8086dbc1585d9f4020a19447388246a5cff5c8 commit 61251b2cffea8c1811bbd2dbef175b65f64aaa86 commit b8983d42524f10ac6bf35bbce6a7cc8e45f61e04 commit 064d491f73464f5c9cf56ac24f55118f6f4c54c2 commit 100d0ae82b5c240a4dc17486698e67bf116bd598 commit 58091b4958008ef69899e5404f8f031c36b35fbf commit e79a7417072265a85a36775e4e0f798154d39808 commit 4595a25443447b9542b2a5ee7961eb290e94b496 commit e5e6886f4d7e34b6539abddb591d515271caa634 commit 875c6d2711f6c97e58c52288b4231f3072711d61 commit 2c4e19f873f4a389c2a557a84909cf4b78d3525a commit 51fbbe8a3f8b9dd128fa98f6ea36058dfa3f36de commit 458ec0c8f35963626ccd51c3d50b752de5f1b9d4 commit 919bef7a106ade2bda73681bbc2f3678198f44fc commit 0211c2a0ea600e25db3044daaeff4fe41c3ed6d9 commit c8fea9273fd1be308668496badfcbd55183e0dd3 commit 47e04eed84bb07cc5b54462752a4bc7286ab8197 commit 507fd7c400032b126747a5ae8cca2816d73f009a commit d1b4a51a4ca8954f30cf4671b25c4f8637c45600 commit 3c93603d9568c7c4b20ff1712ddc60e997d78df7 commit 3e834a17a22cb8e9169c0b018d1a2df126977db3 commit 6783e6bbc2457dbed351fb0d2477aa6060a7d32b commit 4fd7f14b56b2e727dd66a62e217e57015da4e9fd commit 94a82c9e3dffb88182a4ed0464dc0266ad0d7b45 commit 595091c6ba35ba48c1f8186116bbbae2b208dce6 commit d0629cea1f97acc5e8d95ca2a42ddc72ed4ffa3b commit d7e7546886eebf626569e38ff06d0a67b8b82757 commit b023053592646b1da9477b0b598f2cdd5d3f89d8 commit 2640174f4a139502f603f7bedf3a7011db714e1d commit b97e914552c3fcea71ce03f899e285f2178ec38b commit 6ffc967c36b42f864955cb2c5e8b3fded0baa918 commit f5b9c1ffabce5f4acbeabd3a03fd57b3970a13fe commit d6f84bab48745ea68814d596eb476a9c11ce76ae commit 7b471c32e4cbfdd7a673b79321f6a26abecbf33b commit 910ab9eee0f61a243126d70e932e1301b5437583 commit 39c84b8e929dbd4f63be7e04bf1a2bcd92b44177 commit a54569b1f9721be11ca5b2c8a8bb3c652ebf576c commit a71f3950c803cb18080746aaa8b66af122f32841 commit c1dd5d29aceed251daf98cacd22817f38f76f94b commit bfe632f6d0a1371784dd9a11fa5a9aa2dbf53bf1 commit c7943bb324e503baeeba3df2bc5ca8a377111bfa commit 8409fe92d88c332923130149fe209d1c882b286e commit d91c411c744b55e860fbafc9a499f4f22d64c762 commit edca5a2c373db61efa959307c13ed9156b1c14d9 commit e1cab970574c001d83e59ca8388c474a57a1afb6 commit 672d6ca758651f0ec12cd0d59787067a5bde1c96 commit 151e0e0fdb4d6365305598af3b9072d44e896ef0 commit 992db92b07736ec98432a97b61c37dfe7bd06dd9 commit bbcbd63231cbd1405ff8e987870b02abc6a4d669 commit cbfac7fa491651c57926c99edeb7495c6c1aeac2 commit ae0448bc88b7827babda73edfe587ccc222baccc commit d832db12af4a057582011a590f60f32853680dd4 commit aac4cec1ec45d72bd03eaf3fd772c5a609f5ed26 commit e3d3fd1cea22ada5a06284d7bbb6cd5794d8545a commit 8f7115c1923cd11146525f1615beb29018001964 commit 63e37a79f7bd939314997e29c2f5a9f0ef184281 commit b6f25c3b94f2aadbf5cbef954db4073614943d74 commit 235fdbc32d559db21e580f85035c59372704f09e commit b34c1d538951e1c3a6d5e585e4a95e78d8733064 commit 2edb79a5fb303dff577d6a0c7d571c3bab1d1455 commit 0785691f5711a8f210bb15a5177c2999ebd3702e commit 08b812985996924c0ccf79d54a31fc9757c0a6ca commit aee5ae7c8492eaca2be20d202887c9c716ffc86f commit d654f60898d56ffda461ef4ffd7bbe15159feb8d commit 8787f6fab41380189865f5751c0f15b0c298b923 commit e839a756012b6cad7a4eeb67b0598ac3f349f863 commit 7c6fb61a400bf3218c6504cb2d48858f98822c9d commit 6c20490663553cd7e07d8de8af482012329ab9d6 commit 66f99628eb24409cb8feb5061f78283c8b65f820 commit df2c6e0c95ca22db5d6bea7e8169841c95426f8d commit 36de13fdb04abef3ee03ade5129ab146de63983b commit 8c5708d3da37b8c7c3c22c7e945b9a76a7c9539b commit 86875d558b91cb46f43be112799c06ecce60ec1e commit 42ff33e63b83d0fd40985ccbb50ff54e320a3bd5 commit 58d97c99c99f4559072a5410ec0135271e24e95d commit 269aad0919c7aedffc18dcf46393a1bec457af0a commit f9c182056b8ff7402a46c39c34d5c91133fdf9a4 commit 18aefea7fc71759a2405bc65eae057ffda3c429c commit af2f2a256e048f1b83605eaae49948e4a6811ac1 commit ea45405d704e20826a899380c19ec163336f42ab commit 82c4018479fba63db8db7c7fbfd9e4afba95603a commit 0b15b1ec8b74bd5c9a4e4cbadab82c0657832799 commit 6acc6196a7320b3d2a391925c4c884fc07f0b3df commit 1bb8df66920a5549db2be92c23ab81fd06992e5d commit ceb756004a30239c3a50dc237313e234b667077e commit 3601d620f22e37740cf73f8278eabf9f2aa19eb7 commit d978c51f8d1f4314c84cf50291156862a4c34fc8 commit c4be0ac987f21e12e7ad23bc480e826d8c30de20 commit a3fef74b1d48d89d4d911fcd7c2630d0eb6a0012 commit 37934d4118e22bceb80141804391975078f31734 commit 21485d3da659b66c37d99071623af83ee1c6733d commit 41012d715d5d7b9751ae84b8fb255e404ac9c5d0 commit dc1d85cb790f2091eea074cee24a704b2d6c4a06 commit e3163bc8ffdfdb405e10530b140135b2ee487f89 commit a8671493d2074950553da3cf07d1be43185ef6c6 commit 0af4ed0c329ebb4cef95fda4fcdbfcdea0255442 commit 87d9862b25483242a30bf45420cd8e7e1872a4be commit 25100377a21ad40dae8be5a3ed361b87acec1479 commit 5763d7f29652f94bdfc9dab87888f79ba6bb6c34 commit a7c48a0ab87ae52c087d663e83e56b8225ac4cce commit 5415bec18c69d3aaa7d4e3b170c8b8c6bb24a823 commit d8a79c03054911c375a2252627a429c9bc4615b6 commit 5ce8f7444f8fbb5adee644590c0e4e1890ab004c commit d119888b09bd567e07c6b93a07f175df88857e02 commit 37a0bad677a76e51c5e9e53f5d9f8f4f3e77912f commit 88d4cea24049de0fa073462b24ab471ecd685d8a commit 16c6077f2eea3c8321782d2fb0a6790532cd8c03 commit b261509952bc19d1012cf732f853659be6ebc61e commit cb0eca01ad9756e853efec3301203c2b5b45aa9f commit 29956d0fded036a570bd8e7d4ea4b1a1730307d2 commit 52bb21499cf54fa65b56d97cd0d68579c90207dd commit 65fbfb02c2734cacffec5e3f492e1b4f1dabcf98 commit 056fb8cfbe213f6eb5e987a806583986a4ae8328 commit 72002056f771a025a2e6b4578aeb538799cb9ba2 commit 20c6168b3c8aadef7d2853c925d99eb546bd5e1c commit dcc2527df918edfe297c5074ccc1f05eae361ca6 commit f528fa3989c53d4cf2ee22d306eb1a96ed0010e6 commit 29a1c581a5d873046302aa22c4a05124c5faefab commit 193b6a1934cc2e258e463e94fe3e94382c0bf458 commit dd4bc65c5bdf17ce8e74f91bca5e41b368b0e32b commit 88bab90f7a8aef3732a57cf33bf0ae121de8c7af commit abbc7a3dafb91b9d4ec56b70ec9a7520f8e13334 commit faed5d0182480556cddb8343d9bad968387848f4 commit f525ed19437d376736bed64ee7bc4afee82f2ba9 commit 387df878fdcf63ce497109c4e1eb805a7df9043f commit 3b38b65ed076fa93f1b0d5fb97c55a9bf692cc49 commit da73a94fa282f78d485bd0aab36c8ac15b6f792c commit 6dd1de12e1243f2013e4fabf31e99e63b1a860d0 commit 051ad2788d35ca07aec8402542e5d38429f2426a commit cc62d98bd56d45de4531844ca23913a15136c05b commit 6ef7d362123ecb5bf6d163bb9c7fd6ba2d8c968c commit 7516777434570833469252c16e5fd7d8f73c45be commit 3c480531a4b1652561fd16824c16be8b8a3ba8f1 commit b9caeadf5cb89566412b94b14a1583419aeba45e commit a9b4700279f21c5c1a3425630dea86d338ab13b2 commit 91ef6cfd30bf75763f41e7a4bc119883fe190606 commit 664883ddde67971d59764f2dda855183ecf8bc46 commit 783d446749c09eb34178cb8600a9a93d3b99e35d commit b6d1c39bc637fe4879d610e6687b1d4224c4b2fb commit dd37fba90e72a48998d9f0eb5497088ea2b02ad1 commit ec669ef2e2cf277f3e73d842bb3bda1c3ea2ea73 commit 85096a73f4dc223b5848e41ce40afc5ee913079e commit 1ec5c0e1289c70c8e7dd93a988d945ad5bc3f4b1 commit 391ce355e72bd5713afc85ec5acc955294499dcf commit 8dd2e87dbd49ba0b6afc1dd22a5930d797cf423f commit a28acf7091babf4248b042326946cee7736f796a commit 2d3907c152611a0d65efe54b93972320dcce1565 commit b3e45b18e5c40f1f7e5f6383953343f96f963b13 commit 11e38360cc15e2d5995449d19030b13a67d73cb3 commit 3b7329cf5a767c1be38352d43066012e220ad43c commit 7738be973fc4e2ba22154fafd3a5d7b9666f9abf commit 83ca5fb40e758e0a0257bf4e3a1148dd52c6d0f2 commit a3aded135e84a581ba567c30ecddff47c8b6cfcf commit 541540b9045c2665d6736a77c776ac81d4225eec commit 153a97b4e3de713c05b6bd42d734a2f9eeaf7968 commit 91462afa42e6b8c5a148a44482c893f1800c513d commit 6643b3836f3908c4f77883b2fae72451e85cf3ca commit af81a9201e0112e9c4ca7258e32cd28baf19f31a commit 2f3f958602721c7915ddb1f2a0e8dc5031bc0151 commit 90df15124526176ff03c246362c196a047c8a39a commit bcecb6524881c54ded92f14a6cf2406d5c439637 commit c1c3f41ffb1bd262e40d68938af68c6ab53a41f8 commit b33139ee15352043123b81b32ca1a6a84340eb5d commit 04fa38cce6e02be4362cd889780d58ec275c4d26 commit 0fd85e89b5bf18447e56099a010ee5be5dc9f2b0 commit 414208e48963fdb136240d7f59c15e627832d288 Omitted-fix: 14773bfa70e6 ("mm: shrinkers: fix double kfree on shrinker name") Omitted-fix: 20529e260ff2 ("Revert "drm/amdgpu: fix start calculation in amdgpu_vram_mgr_new"") Omitted-fix: 3024d95a4c52 ("bpf: Partially revert flexible-array member replacement") Omitted-fix: 3915f8bddefd ("drm: xlnx: add <linux/io.h> for readl/writel") Omitted-fix: 395d10ae4d29 ("drm/xlnx: Fix build failure due to missing include") Omitted-fix: 3f61631d47f1 ("take care to handle NULL ->proc_lseek()") Omitted-fix: 5e6723ef3fda ("drm/lcdif: Consistently use plain timings") Omitted-fix: 71c627c0a87a ("drm/lcdif: Clean up debug prints and comments") Omitted-fix: d395fb1999ab ("Revert "drm/amdgpu: move internal vram_mgr function into the C file"") Omitted-fix: ea19684afb54 ("drm/i915/display: consider DG2_RC_CCS_CC when migrating buffers") Omitted-fix: f423fa1bc9fe ("drm/i915/gvt: Add missing vfio_unregister_group_dev() call") Omitted-fix: fcfd3e5fb2f0 ("drm/lcdif: Clean up headers") Signed-off-by: Karol Herbst <kherbst@redhat.com>
2022-11-02 15:48:10 +00:00
#define iosys_map_wr(map__, offset__, type__, val__) ({ \
type__ val = (val__); \
if ((map__)->is_iomem) { \
__iosys_map_wr_io(val, (map__)->vaddr_iomem + (offset__), type__);\
} else { \
__iosys_map_wr_sys(val, (map__)->vaddr + (offset__), type__); \
} \
iosys-map: Add a few more helpers Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2043115 Upstream Status: v5.18-rc1 commit e62f25e8b3cdd29224c27938addba817aedd4b54 Author: Lucas De Marchi <lucas.demarchi@intel.com> AuthorDate: Wed Feb 16 09:41:33 2022 -0800 Commit: Lucas De Marchi <lucas.demarchi@intel.com> CommitDate: Sat Feb 19 19:23:53 2022 -0800 First the simplest ones: - iosys_map_memset(): when abstracting system and I/O memory, just like the memcpy() use case, memset() also has dedicated functions to be called for using IO memory. - iosys_map_memcpy_from(): we may need to copy data from I/O memory, not only to. In certain situations it's useful to be able to read or write to an offset that is calculated by having the memory layout given by a struct declaration. Usually we are going to read/write a u8, u16, u32 or u64. As a pre-requisite for the implementation, add iosys_map_memcpy_from() to be the equivalent of iosys_map_memcpy_to(), but in the other direction. Then add 2 pairs of macros: - iosys_map_rd() / iosys_map_wr() - iosys_map_rd_field() / iosys_map_wr_field() The first pair takes the C-type and offset to read/write. The second pair uses a struct describing the layout of the mapping in order to calculate the offset and size being read/written. We could use readb, readw, readl, readq and the write* counterparts, however due to alignment issues this may not work on all architectures. If alignment needs to be checked to call the right function, it's not possible to decide at compile-time which function to call: so just leave the decision to the memcpy function that will do exactly that. Finally, in order to use the above macros with a map derived from another, add another initializer: IOSYS_MAP_INIT_OFFSET(). v2: - Rework IOSYS_MAP_INIT_OFFSET() so it doesn't rely on aliasing rules within the union - Add offset to both iosys_map_rd_field() and iosys_map_wr_field() to allow the struct itself to be at an offset from the mapping - Add documentation to iosys_map_rd_field() with example and expected memory layout v3: - Drop kernel.h include as it's not needed anymore Cc: Sumit Semwal <sumit.semwal@linaro.org> Cc: Christian König <christian.koenig@amd.com> Cc: Thomas Zimmermann <tzimmermann@suse.de> Cc: Mauro Carvalho Chehab <mchehab@kernel.org> Cc: dri-devel@lists.freedesktop.org Cc: linux-kernel@vger.kernel.org Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com> Reviewed-by: Mauro Carvalho Chehab <mchehab@kernel.org> Reviewed-by: Matt Atwood <matthew.s.atwood@intel.com> Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de> Link: https://patchwork.freedesktop.org/patch/msgid/20220216174147.3073235-3-lucas.demarchi@intel.com Signed-off-by: Karol Herbst <kherbst@redhat.com>
2022-03-29 14:21:07 +00:00
})
/**
* iosys_map_rd_field - Read a member from a struct in the iosys_map
*
* @map__: The iosys_map structure
* @struct_offset__: Offset from the beggining of the map, where the struct
* is located
* @struct_type__: The struct describing the layout of the mapping
* @field__: Member of the struct to read
*
* Read a value from iosys_map considering its layout is described by a C struct
* starting at @struct_offset__. The field offset and size is calculated and its
Merge DRM changes from upstream v5.19..v6.0 NOTE: This commit does not compile due to missing RHEL-specific fix-ups, which are split out into separate Git commits following this one. If git bisect selected this commit, run "git bisect skip" and try again. Repeat this until it selects a commit which compiles. This commit was generated using: rhdrm-merge-drm v6.0 2115876 Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2115876 Conflicts: drivers/gpu/drm/hyperv/hyperv_drm_drv.c drivers/gpu/drm/mgag200/mgag200_mode.c Conflict resolution: Commit list: commit d10f7117aa43b0b0d1c4b878afafb6d151da441d commit 115fcf5899f7e0b0d3358a22a8cd76b1398642ee commit d8cb49d203556707ff4c3aa05032c4fc7c3ff1a2 commit 9d72b7e2d2ce3746950929a2c54171d183ea89f2 commit 94afc5382669c3a201c5817c47b57a879b6dabce commit aba5825439d7691343aa562dfeaf6616455bcb01 commit a9ec4fd004b84c26207a8cae41662c501c8a284b commit 537d9ed2f6c1dbfe8465365c2f74a855ffad5e6a commit ed3173077d3fa6fd085960aa6347ec30f532bf31 commit b07debc2a8ce7324c85479a28d145eaa05382286 commit 4ce08703a8c4be77b060aefd14eda272f50a45e4 commit 9975af040a04ba9aef33f3ef1ca4e8f04c7223dd commit dfc0312596561ac462308fae32130a0c580b7ac1 commit 37852141965d467a4ae118139b6eee266e7d953c commit 2af243444f9100639451b11d311982279e00cc16 commit 49a62a2923e523e5359219ed54d643c60f3374f8 commit 705bec3eca9b712fe006b7e4d6b4cd4dc6b57d36 commit 8db73897698ccb4eb70ab103245372569ff5a5ec commit 58304630b830a1c27457ce2e3a0912555b43d03e commit 6ff1c19f5f28dbc396462032dcbfdb8b64795415 commit d792ec62ae1260df2e54dc41103aad3b19bad948 commit a5c89f7c43c12c592a882a0ec2a15e9df0011e80 commit 315241d2d9102a90f71bd6c9e7dd06a1c831a184 commit a7b516bd981f11feb0c9f5ee3d149855d48cb2c8 commit 6f67930af78f10ac7a1a9ba81ec606a9bd07749f commit 56ca3117f77a23a8b24e73e458bc85c11e5dea31 commit e6c2db2be986158afb9991d9fa8a38fe65a88516 commit 91875c22a31be0bdf91d7ec651bb6b083b35ac37 commit 69ed3dd6be9cf5d75252940b9a927dff4bab7860 commit 09708b6d82ef473de91c49d90f35e38b0db463f5 commit 222ff6db8a0dcb86f2bb65fc8656aec635a737a6 commit 218076abbcd647de46635d21331a34b814f90906 commit 922abe4d19bd21b38298f3902674774b92a49293 commit b6411373d3954c8fe4617c27f90f773108b0ab03 commit efd01cd3c27636bc4840057a03839e54abaf11dc commit eb86f645ab9b90c47de7ebe229feae7ac999421b commit b15a7357a84f091fde8ce35bf2fd494150ad4bd0 commit 1b93ff4d0679190e8812cd0d0b3aebfcba1ed883 commit e9794c88cd6cf4be4a79188916a75539751f532c commit 3507932390bbfcf7c69dff9843f1c9da6ed4b861 commit 23dd74db02d75579d8d4eb0b88c7ad119e782269 commit b499914eb83765a27e3b43f216e9d1bdf4265418 commit 6c01aa13894fa0049ea8c96c271318ca353a77f1 commit 429e1fc1b2c257f35b6a1318eb3a1ffb80bc6640 commit e090532246fe17609b08ba0a862428867426dc95 commit 9d67edba730c4663eb7d87771123c3fb86ba606d commit 4de23dca7ec8dfb191ea80fbfe3f008d4ed52346 commit 6cd96877c7da6bc3a28ef0bcb3bc7470f4dd9aa6 commit 93d9e0453e2bb599e0bcced1b914f9b4010180a1 commit 69f8afdb45e7775840693bce42da79d9c22c2e83 commit 500d7135c924024ed2e5e62b03dd9b3b6257fa10 commit 8caaf7ad659da9b757781d5f08ce0bf98801931e commit 1a1a5a315ee805bec457fd214250c088efadb50b commit ad5f74f3420183052532a220edd9a37aba92724a commit 047de3f17a8321065c32ee3f6272a6dba16d6bcf commit 5e3f1e7729ec7a99e145e9d8ed58963d86cdfb98 commit 708d19d9f362766147cab79eccae60912c6d3068 commit aebeb02dfccb61d6930112aede2db3db5b8e974e commit ef83e1198f9f7d7db0031c839bb1112cfee45b42 commit 7ecc3cc8a7b39f08eee9aea7b718187583342a70 commit 3064debaf55e1bc8f191871ca5f82697ef4c0951 commit c48a363016349352dac7e66cd1e823f73bff1fc4 commit d2addf89c5abf4024574d42000313175c6e074fc commit d7fd32ecce914686756dedf586c8573e71f975a4 commit 3080c21a043abc83e56da9bb5942eb3f4b92c90e commit 303760aa914b7f5ac9602dbb4b471a2ad52eeb3e commit 21c47196aec3a93f913a7515e1e7b30e6c54d6c6 commit 18fb42db05a0b93ab5dd5eab5315e50eaa3ca620 commit 945ae909aa76f55ac8c9e95feb3683512d39134a commit be982415fc2e953ad49e59b204f2d0e64953eb5f commit ab1747ccf052976465db7c5a7e1301a50f290db0 commit e4ccf9a777d30d60c60f729b1d5c9bc9e3ea46e3 commit 22a27e0532d06968afc265a3b91fbdc5a773169a commit e42192b4c345a807d8df034f178d5846e1c97ad1 commit a2f9790dcffe2dd0b363607fd215e5b81a0de57a commit 40f71f5b239291357dbee3dc1c6ace83a373f44e commit dd0f4470a849d07081a2036f89d2c41264383985 commit f0d080ff429129b16332f17a906ad2123d9c6317 commit 084c7a7c7a0a0cab35d959e1b14d45a0c6221f49 commit a77f7c89e62c6dfe405a64995812746f27adc510 commit 7428bfbdb7c4dc7323e6b6f0e327c3587e479e16 commit 67d87fac86dd4a04cc62dc0eddfb7c74ace4666d commit 874d98eed71ae678ab364d4c16060955b8b245ae commit 2c54f87cf2fb99826ded617fd0484e688ecfe882 commit 45aa2336fa6dbfa73d9081f75a4b813e747a55aa commit bba4b6470b02c2d9a5074a40cff7246d3356f460 commit 027034511c6a1e3ea96122f7626b89b6d339ed49 commit 3176d0925027727ec37e388e9363f124c2c52ae9 commit 0c057877cbdf261efa7874474f48c715cd6401ba commit 5e87b2e5171621ff00ec197c9af15bc3aa405b6b commit bbded689680f0f2e65d4a57d0dfa654671052d56 commit c7b2dee4308b74391734ac675e66e6856a077f77 commit d9ba1b4cbb2989c919198832f4ebd6eb8ba94da0 commit d0edd3c1a7e859a5899c26e2906e80f4ac798fa9 commit ca10b9d60f8c9556720bad8b1ec7d522e353a01d commit de5db71e4c8c35ed5e92006e3064ce9230881ece commit b6415bd7386bcf9d2e0d6ee1d4ef4186e7a87b24 commit b959eb4f5b7ea49b47e95c9047d33d1b1cf81057 commit 0facdaa249c4e97346bc0b49c893e4a1d336b7dd commit c3e57159dea473e9e138d32d08c48f3103294050 commit 057a6a1936e79c0bc9c86537fb9886ed39cd078a commit d6774b8c3c5813aa541c9148f641d3d8d4b296d2 commit c577b2f43e80d707870a74de0fd726c51b206956 commit a24191b1c4ad05fc578ea5ea01652c09b71da86d commit a9ad5822366c5065e6a65fe5ff5090295ba98986 commit d158367c31f0f87567d2e8a0955287dc005d40e5 commit 8f6de23184452793e60945a26ac40db435d7798d commit 9e97c46f832d4669b4e52cde5ad0bd43423504eb commit a77c2af0994e24ee36c7ffb6dc852770bdf06fb1 commit 5913ab941d6ea782e841234c76958c6872ea752d commit d50f74790bbba662d1438dbc03be6616c52c0722 commit 16f1456466c269ecda32b88c3f8fdd76f8ec370c commit b279df242972ae816a75cf1cc732af836f999100 commit 8219f11fdaf56593a719e1d72fa582673560315a commit 69340e529a064da4807622395e967aa2b5eba1c5 commit 475e2b970cc372f49e9d3e4bbead8b4874299d31 commit e180a7b218487065efd9a3f05eac5de7de128e19 commit 315a8d00ac74c59a688a1a88c0ed97a7791d1c91 commit a50794f26f52c66cb793d5d392f5f19bc2962cdd commit 451374eef622fca6f00eeeda89aaccb45a30a149 commit 1ade30812abfdd1c161a155fd54b0dd594c217ee commit 230fb39ff7e07bd0324c87acf08dd2c9b0bbcea8 commit 962bd34bb457f6353f333ce234c3fd34cad1c00a commit 411d44d754739a371999412606b28af1d72a210b commit 7f73b371710edaee1f40d834096c07c62e51b184 commit f159b1b22c8a2d3d7c1fa877fafc8aacff0deeba commit 746b9c62cc8614fa59c23f3332682b5e9e1d801c commit 1c89b4b718168aa6cf136a984b474d663e4203b7 commit a8d6e127254c48d895c4f6e973ec998fd4a0eff3 commit 4f093a527b0b8f9d3059a4e8376e582fd14cf09e commit 4a2a13a57b605994ee44e5c2cd7b9efc49901404 commit e7c254d75d16b75abf1958095fd34e2ecdc0d645 commit 69ef4a192bba0d76216198ec6d5fe82375337903 commit 9602efab9f8652ef39dc2789edcd26c3d1d3f901 commit e91eec9128c2ad9eab9cf9d7c17f8034b6a86c4c commit 9d8d5a39173244a1394cf84a93447be6f82b361d commit 3d6c72b7fdd2429ca1d4d690618bf65050380b48 commit b409db082da6b76ad2b759a1a48d9402eee4b942 commit fdbec9ff669d83bf863ca7e657af6a9e4c949565 commit 39921e5f00f5a98ff9cb3229937ca339e8d9c9c6 commit 85a040bc9049dd168d5e79a1fa9d2da87e6e52dc commit ee421bb4cb9535f44015634baad833dcc98c9062 commit 5f38c3fb55ce3814b4353320d7a205068a420e48 commit 39c28cdfb719f0e306b447f0827dfd712f81858b commit 0d662350928e6787d29ab205e47e5aa6f1f792f9 commit c1de02bbeca58894c805b3d45c2da4bf30cfc5d9 commit 0b4c48f3e315d172e4cc06e10f2c8ba180788baf commit 08c59dde71b73a0ac94e3ed2d431345b01f20485 commit 67d935b4713988d0a41097439c0c2d74f240b204 commit fa373eb2190115ef2c3597f89c12350d0a250eb0 commit 4cd79f614b501e496ee8e4181d528c0cc1cb4e18 commit 8ec5c0006c50cb1909c0de0fad137909c1218990 commit 2ba5b683260e13d8f2c43bc594d5ae15ec7f7a04 commit 670c87fd169518eb4f15030c63f6c1b4ddf18bfb commit 1ff72d434b40d221e2583fab5e1203031d05c059 commit 649eb3828fb22e829e222ebd83f4e11dc503a565 commit 9ad6f181ad9a19a26bda73a7b199df44ccfcdaba commit 39b1bc4b5bcccac781267bb826b035fbb99c8b9d commit 991dcb89caeb1b9bf714b382e23d3f6d8016e744 commit 61922beba36adea8702fe8069b309c806f6608af commit 6b03816f869529393b37d03e5d75b68f7365a7a4 commit e4f21d1436519fec3e181082c8e1c3fb00ec08a7 commit 1a3b1ea111c44d9dce9f70ba032531a223395a15 commit d63ddca7c58132257fd01e3a4feca41b3bac3089 commit 8ae664907916eba9a9d56296bed684c27318a872 commit d32e8ed918ba7384fda9055ebb31b89b3eadb517 commit fb289464f695f9d913479b4ebae9e39b057f8531 commit 1eb31338994889ac34c4f841e5d54bf10111741b commit e41388d508a50ddb2be5c2676f1992353ca2f155 commit a4f263f46961b1229b10ca3a98f0be618a9d47ac commit a67664860f7833015a683ea295f7c79ac2901332 commit 837c72b23a57e15dd363d5f3f3f268c49c128740 commit edd34368c4c3b45b1386b15f78b2229420f8c6d4 commit b981cc333ff06cb23c7968007965e79c80f5df97 commit e31372492904415e425430402453a192e2c6519f commit 16e214d4aef2d600ef94e845530a28ce795b8fcc commit 26be7cd8aacdd3f0429834e78e3166286779f083 commit 6a735552f44d7a29a9e629cdc3b5c3ac2b4021e6 commit 9d15dd1bb3e7de4dd31a225977813dda2748253e commit 69d6bf5c3754ffc491896632438417d1cedc2c68 commit 91776af1d8deb8f36cbec6bf2bf24b661b2b5cbb commit 9180c30cd61aa0b2f0eb4791c8e490c8c5abc54c commit 420a07b841d03f6a436d8c06571c69aa5c783897 commit 4fde3f5d8805caba40cce2268c540d8a37403c6b commit 51ab3b85000d214b75899875d5745935e06020e5 commit 822e5ae701af2964c5808b6ade1d6f3b1eaec967 commit 75bd0d5e4eadb9ce3e9b6fb71971b6e87c38799e commit 60b02a09598f87972a15bb181b9a62b8a8ee682a commit 89fcdf4305996f869eb39eb8f14a989e9a289611 commit 586294c3c1860ac991d3a241159c0edf974b68e4 commit 8e75e8f573e1ff4a0c93c3be1554d2bfd5ae6029 commit 67090801489d0a4c80c121494b749e1e97573447 commit 50759c13735dab06805eff0e8161d33216d6f5a3 commit c3fbcf60bc74b630967f291f47f0d9d0de6fcea7 commit c2fdb424d32204faf5be29d55f0086b611c94e38 commit 3cf050762534cc268a02793ec00240f81c6e2229 commit c518a775a843413786d3db8b5cab084597730a5a commit ade1fc91eb99614c7155fec762ad5761bb470e06 commit 14374e3eee1b02dbf162e1dd75b789373f07ef43 commit 435c249008cba04ed6a7975e9411f3b934620204 commit 0c5064fa8d5a02dc2dcc6c674a0ad1bbaf79efda commit 01357a5a45ed8eb9543183f5c9c6713ae60fc1f3 commit 8f61973718485f3e89bc4f408f929048b7b47c83 commit 245a4a7b531cffb41233a716497c25b06835cf4b commit ec8d985ff26f29d53d9ebff04973e96572fd0285 commit a0ab5abced550ddeefddb06055ed60779a54eb79 commit 0aa93f54f4341a40b05ec2ac242109e78661d7aa commit 92a020747d6c9e2efe8168a4a444576581bba636 commit 6cb07d20317c77494fa4de572887e3dcdbf98b6d commit 0e5397d8c9fe2a2e4fcc8d98cba4a12511a03267 commit 3951270abfd229e3e17c991942cd111b66454f97 commit 3d140a3d8816082f9732d6fccb81dc18823e03b3 commit aa71f9870efea70b38b17c3d2af870530fcd02e3 commit 58ae532ee875783503428610ac0f5d80e73009a7 commit f2206df8ec862073995f5d27f0f55f698843a9b8 commit 4f543d664cec7e9b490bca55f57151afe6f5cf47 commit a9bfcb56a2ef265092a4cfcd4b9c58ddff4d3649 commit 8b449f1c44d1f921240da6a3e7fc4030966abbff commit ce581ae142e24deb27905840fb720fee9b38d7a4 commit 04514c14678e760e17e3cd44c553ade1bf3bef06 commit fba99b1ab7bde41c1eb00431df37b9237be3681e commit 2db7d421cc5ca86bdcf57f2634f6eefdf349f998 commit 6e939738da208bcc0e4dc794519e18cad85bca73 commit a9b20eb6f7da7794f8ffbce0ab9c709cb1ed71aa commit 700034566d6844b3a67f4b6c3a728d9c0c8d93af commit 5a18db2e92a3556ccacc92c031db6e6a7f2b34dc commit 01ece65132e2980ece4eca91105dfc9eed504881 commit 04477e5e1e6ced4573d9bd5271572ba633a260ab commit ba1677f76b9a510d88efdc7a1416b2e778f125bc commit 368eb57a1676cef35f8303bc23f95d2ac35b7255 commit 544ef14031d0bc9223727fa8d39cd54f0fad7244 commit 147a09072c84b32746fb70139963a92c7d90e07a commit 0cc3ae930c8b2a086b802a8c7b915fd28b57c780 commit a57ebfc0b4da16a3f36bfebb158198aab3e340f8 commit e9ca4e9ea6e208feae82f72607818ac8e15115f4 commit 935a3c66eb9b66426d4be9b54666c77dbe7c32eb commit aa2bdc4843f5871e6c68fbec5e10c0dbaf10ff91 commit 4cfd16659641067f618cdd3589eda42eb2943399 commit bc3c5e0809ae9faa039baf75547e8ee46ec124ef commit b87d39019651c9cae169396cf5ae525393084490 commit 5ac342ef84d7dccd1ba43f5fa2dc10a6feda91e2 commit b729cfee705a56c6204647ac486107a1f814af36 commit 3800b1710946f7db3cb3a29cb2e218cf5df999d0 commit 50e156bd8a9d0910ac4bae5fcff00ddb798db967 commit 10e619f1f31cf126885b3e0ac43a8de9744467fb commit c441d28945fb113220d48d6c86ebc0b090a2b677 commit e8971a790370e805281dd650ec936a9b66435220 commit b43edc504ddd8902d1f697364049b0c0b89de6e2 commit 6352cd451ddbb506ce061868a9e5465d294d4857 commit f7dad0daf2c2368f72828b0729799f01bdcee33b commit a820190204aef0739aa3a067d00273d117f9367c commit b8b64595d6a1ccd5cdf56c528e921332d1366b22 commit ab9d97d6f9f1bb5de83411581dc6cdf425a83a15 commit f74e78ca90bd21b47746b90c439709007681f44c commit d5fe83d26dae59c5b52105075e8950dea8ce7c19 commit 66f54992981444cb418f31018e190d15c92d3599 commit e309434ac56774c86e79a50980e8611ce7cc31a3 commit faf26f2b12e1e03956f7e628183e422d94713e4b commit 2f6247dad2c56cfe2df3c6e00586ead5ee905b46 commit b801d8ad1b516a951535241c9cf60cac8f9a5c2b commit 79b470e5ee83e979f8ff465efa8b7ced160bcae7 commit 4f29f9cf092b2d331ba2081566be3272962b7f96 commit ac2e555e0a7fe571d46f7dcb1529b4bee00095d6 commit 0efd4374f6b41650863947a7528d45e8ad0f7ae0 commit 58efeea32d5e32fa340c7ee3f52d5f986b240e39 commit dda4fb85e433f761eedaed0005a2bc20d705d504 commit 265280b99822e5562eb431b102f2ba773c7b2a0a commit 235c67634230b0f9ad8c0185272fed36c892b1c4 commit d3dfceb58de5f897640cdd424f6c2538d9514367 commit 3b1229741eda70116e0163affdda377484a788ae commit 577359ca178262a64236cc96299714dbff21e9c7 commit 85b0cc35efab0cbc78c083d4506250bea6a755ad commit 49401d3a5c86f5ead12ea7cbe98031edb512b13a commit 543036a2de71f14f8ad566c858e5e9ff61736a86 commit e42ce1366ae806ba2c1f884997703be68df428f4 commit 3dc35cf8789ac93d656f255539f9b37c5051ebf6 commit 2cb6915dcf70a2bf7ee10fcf3f56b083beec1086 commit 542a0f2ef9ea2ccfadf2b8a3b53368c61fc97a0f commit a839a73b18157fe30eb4acd2a1f1ffdb890762ff commit 9761843250f1367043ae2a483461af287aecc879 commit e06c5f59ffe1006f1c6f533113b72ad48a6d4564 commit b3f2c796634613bca511266b37084560f36b67c1 commit 6a640b95b061fe340214ebd4638974b8b6f08efe commit cbd3e8440e2e6a4d83479235c9bf278b89360946 commit 1908a07cffdfc7c57ba5116418c3f2b5ef05e0f6 commit 218987fdead218ae0e714cd9059bc9fc480220f9 commit 9fe5d08fc8230adb64128986ee4af267a54e56dd commit 16600b7d66367482dc8526f8bc3a30b32aaef329 commit d57716702deac8e0ec440739eb4cd6eb0872ddd4 commit 10c4ad3ae025dd0e343a09d2ea4b0e71f8d10797 commit 8763e4c1a0e6710dccb8fccba96fcd6caaa50cae commit 7101ab97e3b00ec1c68d09826bb0521d17783673 commit 80d46fff373775fdea9917a7d13f6fb6fa5147ad commit cb12d72b426caa7594890c62df69fe4b83c96e58 commit 72b5f23ccb0aee46029476cbb072074384aef591 commit 3ccb9ea9976022034d8fffd8d929d6e70a24e0c6 commit 2388a778bdacad0c936dbb01048362864847f8ad commit 9d6b2041761ff6d5a33941919c8b5a805ecbed6c commit 1d6c363330834fa534c1c7ee01620ff134aade1f commit be77243327d962a87bcf03615bae12d73efb9b7c commit ac1ac694f7173a0fbb0b60ab0f26226dd334479a commit 2cfe34e18970d26bff73c63f16c76dae22138d19 commit 2267a195e28cc438cb45936c4562f958502d4038 commit da1db031cd30fefc99d1c82211d3c24b73857bbe commit 3378aed7e2ec7212889116335a2120a6e35c80ce commit 7a09f61f8e842dd027afa1ce8be8bd86062c8a7b commit 4c1b3d0803aef6d39913f1e9d2cfe2c1ccce18e8 commit e87b92c6af537843daf7da9235e622988bae7eae commit b5a0168e1406176cf98487833b7468a1ea5872d3 commit 452e9214431f1f6385bb20fdf6e1b5692947071f commit 49f594995a9255ff734f79c1fc22bd06119ebe8f commit 6ea843e01bce520cf5dea86bc30c5133e0d0822d commit e127306d433ff99f29d1b083c6b3aa128bbd9c5e commit 0c9ed6044c5d08562d38d56e94279badef39e4c7 commit 327f79d7a1d2dcc10aeda05983c4d1532dd0830a commit 214d72f62978c28fe27d22d0d498d04493e9ce86 commit 80fb7a409c64ef304e4040320e87dbb2f10968ca commit b6a93844145395068574cbbfaf3aea91d1f24f1a commit 405bb9eea36a02798631e8409f1182705699d092 commit 3e80a5b068a5fedc69ada30ba1a2d1e0b76dfc25 commit d8e4fb9112e88d8d87ffbc38fa511e7118042d4f commit 8b67e738ca17fb52a275b1cc0191dfce0e9cd7a5 commit 83eb5385b4f021c2674b1d78675bfd10443cdf74 commit be1a63daffdd152ba4c7b71ab9fec2e39259b42b commit 1d742694571655e49e11ea8f391bcafaf0f5ee74 commit b3d0c0f2dfbe610ae5ac6b2d70dd450645dce3cb commit 1da5dab029c08e178784a0750203365ea7c3b4f4 commit 3a6dce778de7c120a37983d80b6ccc8c2c4ff6ec commit aa303964bc349914de8e1d3ff7b517581839d01b commit 6d1044a070b2eef0be45f3b99274a6cebee25053 commit 651d7ee63f338b82d18273c30e9ea804ae174342 commit 3d8785f6c04a953868384db455bb2fdd0b22c11c commit b07d1d73b09ef40e91ace51a2e167391676a8175 commit 4c7631800e6bf0eced08dd7b4f793fcd972f597d commit a35806b36ea44724b21f7f110b38b5941fc9c393 commit 65657d98754c581ad66b56680d3c9ed679890071 commit 32c453f18dccd93a27d6f026ca690167c8cc9639 commit 6cc5c77300afbb285c4f41e04f3435ae3c484c40 commit c7eac19eda0a82f0c1dd9455012754445772fd09 commit c2a050c5e07faf9ed2fa1daa1eb642d9da4a879d commit e61a048eabf9d1245f86e67ec4787d2f10e5a1e0 commit 65e7a17499e15771339d85eaa1ba686ad2fe342c commit 381b590c307f29d0990c4b99ae3a2e02aff2a5b9 commit 1b0da5a3e90d3920f6967e4303fdeaaec6f62208 commit 7cc191ee7621b7145c6cc9c18a4e1929bb5f136e commit 84de5c2e92dccb2bcfd5ff68af44960b808fe6bb commit 453b0016a054df0f442fda8a145b97a33816cab9 commit 031ac4e419dfd8f099a0adba31f7f735013eb628 commit b94b02d72e2b979a32addc8f5099fcf1f6ce9e7b commit d1b08baf93352bb3c88d637055dc21187a456646 commit 136f614931a2bb73616b292cf542da3a18daefd5 commit ea64228d26fee9b766bc9615e92a319da5ef94ef commit fae7d186403ee5a9375ec75938e0de99718e066a commit 73f54d5d968264148ef81941d9dc07e35025a120 commit 85397f6bc4ff13a6bc5259facb8ebebb1986d666 commit ce19021fd99ab2c915f2b44b0df39bef75f11d18 commit d45e32c9d98ce7c22a4bafe69cee58165b59533b commit b62d943e9686e791dd39f8bde302fc27446cdca9 commit b9a577a407d99638522ba6a0fc4fb360aacc01d0 commit 21e74bf99596d91411b6b51340c05ff92a7a4a01 commit 98da4b99a0525c222dab7cd8e73153eaea062dc3 commit d1e40d8e4b4df3f705c7898b264b2cfb60bdafc4 commit da1efdb2a3e8593a9428c81a531bfd8a0c3dd66e commit dfa687bffc8a4a21ed929c7dececf01b8f1f52ee commit 34b68c17e9895ba66fc809224b0122a2eed7aa40 commit 330c1b3180b0d79fef7c05331647f3695661b79e commit 38353a5e3da0b26fab9eeff13a482b135512d9c0 commit aec23025ebc86b770beb9dab6610b671e63d36a2 commit 4464bd825dd56c2f900038c5922408d70aab01fc commit 165ab7b4319d8ecbb689f3d68f0cd6bda4d82b1c commit 77361ed89a8b03c7e121f4b8c517d7be93ccd8df commit 2d017189e2b39cf2fae63984215385401b77ea83 commit 0c56705d8aae9696348cc320b71d531ede001b79 commit e5309d7f66105011e0597fd55ff2ef7f636f52c6 commit d8791dc7f941f3dc78ef2c6aa71d7c752d5b529e commit 8246370341e8e816ad22aaf8d8bfca850339ce0a commit 874714feff3128dc691fc309ee8b9d479f541aa6 commit a0b9e4531b2eaf066a1ccb2986f4d2f9efa6c313 commit d4965c53b95d7533dfc2309d2fc25838bd33220e commit 6b6d12b6ff204cc224cd2369bda2b0580a80a5b3 commit d445dd7b39c56a66872386a3ce0c8a862e59be46 commit 9d001360b47b792a475250bf7ef2bcfbd17ba09f commit 44961f6ebce9a7dccb2ec3dca312c5dbf85920e5 commit 6bad4ff84cb57f548d42a41091159b750eed9ef9 commit 6651875ad7796ed3cd84b3bafb3885d05bb543ff commit f9f4daf15398c3aa0aa2dcd05ed4ea2544bcc62c commit 2ff6a14b20298db0763772b62cd4fb030e6d7f75 commit c6e3806705d679edf135dff5d540a278fc406f15 commit 81298056a78c5163b216f17d17c43736e7069961 commit ab9db127ee03487785509f960e7b5b91cdb6b92d commit eb20cf30c57c37ed05f44966dfabc2c34bf46cab commit 5821a0bbb4c39960975d29d6b58ae290088db0ed commit f09d2b0bdd78ffd38227426fb2ceab7ebd141391 commit f06d1d66d54c223e4f0f73393d94afd88105b6f3 commit 24b8b74eb2eb578fee046c70681000f61afa5680 commit 7f35680ada234ce00828b8ea841ba7ca1e00ff52 commit c5cb0002d14b6f7aabaf7d67d0515fe70aea7167 commit 17f65658c8adce6233f9e53be59d399af6180059 commit 20e10881a043af63f2962a9e6bca64661225b383 commit 594740497e998d30477ab26093bfb81c28cd3ff1 commit faa406f4233ecbd781554ae0a850e56f53003d2e commit 68e355c00f2d58ba0426cf9a4d9df77077493018 commit 61243c173cd26fc8c6bea74d6d47a37ab520dacc commit 143fee0ccc97284e6ece1cf86b7d50721b522448 commit 0dc662318d36e060268751fbd3309660acd3c5aa commit c55300ad4a1814bac9191a4d2c7b0d74273aec7c commit 6fbfc3a23c98bdcda679161c4f4e31368008af8a commit 08a2fd23c6c21e5ef24248a9c1b09e929655eb3b commit 136788cc74cbd9fabc2922b77bfdd38a53eb7155 commit 87d6b28e4a753f4a0572a695fcee094510dc6519 commit 284498206f31e655fb61b1e08d0506dccbffe55f commit c4d7738c9efc81a4f0364da1e673ab1b1cf91735 commit feb54650bae25f2a2adfc493e3e254e7c27a3fba commit 0f28cca87e9afc22280c44d378d2a6e249933977 commit cac3bfcaedbf4d5c93cabaa7882f243099afb8ab commit 4e2d10443580d934188f226f48eda7d650711e03 commit 0381ac3ca2e727d4dfb7264d9416a8ba6bb6c18b commit 851dd8625320fb626b6ab6399b2402fd84abcdfb commit cde83d47482e2578432f9ce029748f4f0d029e9e commit bb50bba9c6c741f5e359f009dde3b25f12a84e3d commit 6f73d6762694c3e91c49e6708077a0de2a75f2f5 commit 62f8f5c3bfc2968461b0a74f0e393325bec16c69 commit 1b3aa89550a2ce4f4af41e11162c5cc0b0b07b4f commit d7053e631e891698f7532712066014ca140c8ff3 commit da4d45b7da937dfbeb918b87c66a5bf9a3079ed8 commit 26c763875e0c15921a0480e008e2be07665e7f56 commit 8728df26dd24a63b24e4e5a6c847172add2fa149 commit 9e68c3841390c43521d4fde6c51e91fcb2d4131f commit 5b644783396b2150eeccb9a079498cad5dff3c42 commit 64f6516e60b0bbe6abfc9f1d9f1999012e0f11a6 commit c11256f82ec82216f69dafee75b3d854d92392d1 commit 6aed665f9d8368ae1e962f44339150884bb47f5b commit bd63f11f4c3c46afec07d821f74736161ff6e526 commit 430ac054e5ea172a880e07da494f65f0b80d8fb8 commit d9c1452c0f07c2e0766a6cf3921eca182e26fdf3 commit 20f038d074d4fa52e88a36bebf25e81c88d7e6fd commit 9e9fa6a9198b767b00f48160800128e83a038f9f commit c24968734abfed81c8f93dc5f44a7b7a9aecadfa commit f17c655cfb99796918d96ae25261db2640407d01 commit e0d7371b46c7b47cdf5391717292033365801437 commit efeeaefe9be56e8ae5e5b4e9ff6d2275ec977ec5 commit 5c57c099f442acab13129c9e15ad2a0c31151c98 commit 9cc4853e4781bf0dd0f35355dc92d97c9da02f5d commit ce19bbe46fcfb88e75a6c7f691df4753a72daa81 commit 7aade9ceeb88d8ca674141d2c245f0107032afb1 commit 4c59b571fce6cedefc1c8e5158f7548f05c05ed6 commit ab9a0b1f3661157d144fb744f3a197563e8e0ff4 commit 25a2b22e4148b1ac91960e13f4f5de020ed04d05 commit 2f83658ffc8c259f05e79dc632e34b26bb8b75c5 commit b5fd0cf3ea377a7332721df8a8c8e7715f93c8d4 commit cf727044144d47c3e8482b9a7775bd3f04a87341 commit 247c7b0dac3cf1141b8bf5520adf2fac1a797aa9 commit e3c60b4ef42d4db5b8d1434fa1741abd7f2fc850 commit 5d6ec040ab44d23953a2efebfe02e41337952be7 commit 7fc83cd079bba8b96b0f46e31f26c8f31c814146 commit 7d188c521d9ec3650136e9b9c81c61b22a544ab3 commit fc801750b197d0f00c09e01e59a7dcd240fddcb5 commit 930e7cba1190a3251fcb01c8523ea9aed89d9a51 commit 4af48f1d1d0a6f050ffcfe83e939c9455d51267f commit 1db4b5264819a8e3aa62e38287bf1da2e1dc8894 commit 5c57cbc390b166950c2e6c2f0c4edaeb0f47e97d commit d8609fd1e0742ba3ad2e51bba9dd489dd03d8599 commit 56426faa1492289ff794620c4ed8c1847a420d0a commit 254a8d0c0071255eb19a81a32ff8d5a0beef1e34 commit fc8adb13d844b44c147b4dced292c74a1ab5cb25 commit 16bd48dc2b3b08d8b3160182b42e51eb2c274706 commit eb6b94db2f4a585d4a9b8e503d7377d2a23c1104 commit c750c4ce1ad69d3df68359abce70ee3d0064c97a commit 24f6fe3226c6f9f1b8406311a96b59c6e650b707 commit 16490922a95f4f67eb9d918f94a4f5b5bdc9eb80 commit f4e3a12bf2d1983b8f352b7719794c52be7e0990 commit fc67615f4ecc3b66bd458840927272aa131eface commit 11a8d095d86854bbc8697525f2c543de36bf5804 commit d9307f27efa531f034862bccf2985c5fa22c4b80 commit 407d63b3af881d17c39f16cdd8416adb0e4658bc commit 6537f79a2aae65748d402d6c46e79d9e473d42a9 commit 019fd800cf4a4514bbb502a52d376b01f02cc347 commit 9f1c8677724a0e6a6ac7a74d2b0192a584df859d commit 623411c293d180ed51f1c3b5753c5acf2c2a4077 commit 97708335b04df3eef0e650b0601cdf6c5ab16dcd commit c9ae7b866f32043d23a34d00a5e6e8d86d2cf10e commit 9affc1b87ecba31458567359b5a28b0b08920a24 commit 72aeb6ee0c78fafc476c02d1b19b5b38defcb57f commit 438eac25d033a1701d839bad16c6ad78f683a293 commit f2a5002541d0698509d4f3adfbfcc55a9c1e2dd1 commit 5089c4a8ebea3c3ad9eedf038dad7098ebc06131 commit d52ea3dc65a9d504afa7a03ff24e17866670bdac commit 526e6ca5d1d5fd22c79033cf5a8eb07d98a11274 commit ea937ad6e925994b94d17555e4c2f2f9a99234e1 commit 1f474c8742fd53a048cc8cc4b20e20b2614397eb commit d6aa8424bcac64b2608452589c9a09984251c01c commit d11737f26ffeae88350b835caa37c7449da22550 commit 272308add589bd46ddb5899685e25fc9f6a58b1e commit 1a65327a84db5b9081a51ccb1c562083f59bfcec commit 9731dd4cadc53251ef80b3655c8d841fed52fa3d commit c443514a7d6d648bc497efbe502e2a49738b94de commit b840b64bc8ed3fc46f6d6aa7f97c43862a33bea5 commit 71be4b16d39ac8b25a8a04eda66cb65581e1a03c commit a141d2083b462505727e14d98db5fc3cd43d59c6 commit f51d22b0d04aa33e94d663fb63aa61e4da168523 commit 5f034aef8479ac80e8732958dcb66b8eda650659 commit 85ee819fd08eff7617c186775fd958e6258216db commit f69e98a91a01fd7c5755dd710e94a17d6e9f583f commit a34136a3b3526369e1b3e678590e3760e7653f0f commit c2fbe663ec4f991832d67f936d3941f781884156 commit 2bbb54bbacd674c692306351d1be5a9b5e61a1e4 commit 28fdd0c32daf9a50a606530d54784fcfa29d88b7 commit 9a4c9de4838fd8ccfcfcfdcd7bd472dddd11f264 commit 3de58f22f544ec9c692993fb1f3bc77163d3d5d8 commit ebfb15262af3bec6c3cc263ce04164e44eea4b30 commit ac31a24d9188a9599dfbce7664cb11e6292873a5 commit ac78fa502afa539cce3a285e50d7fefaf4d2115e commit ba8b460445f8d19d530646729c29319c278dbb38 commit 68ad7f90c790a178f47ef08408d97a81cbb71b37 commit 914da384ae9a77079314f07022c18063c7e77778 commit 4e1db0119c64fd81509005a961790d263e99b21b commit 2595fe04a44d8ac7a56db27dbd1c54698d97fc0b commit 869968225718ec7d77c418e2f6be996206d0428e commit c78783f3227f41053e9a44f536d13f05383b875a commit 8d2ba05b099aedfcece0326a5bbb2e7cc33261ae commit c435f61d0eb334dc8367164a125aea45d9dd9508 commit 3f49f7591e7150c502aa8d04354941ec2394153f commit abf0ba5a34eae0d7359228f4319a6659676fbd0a commit 0f95ee9a0c579ebed0309657f6918673927189f2 commit 1556c3b4c7ed2c8f17f200d53897251fc68b7377 commit c0c87382c1a6985cd12a49a62a893361e5fd1b8f commit eb2983c09f4e053f2c3362763f5e1073b5e4cd7d commit 04770b082e2a207804c633fbfd5efec28cbc5673 commit d6346ae0779ef9a41562f5357ac28aa6a69b1c81 commit b8fec4400923eb91f995d7dbe97411b8991ea559 commit 651d4a0fc4c5c6a2d20c95ef814f0d4381f71d55 commit bf9719f8c89addcf1947ce2b29cea29ea9d8f875 commit 0256ea13d169e9ef00ef1b1c9df395b1d6bad6f6 commit 5c9016b2ddb375662aff802d25c96f5483a4e024 commit a50cc4955623685402ed6deeffad7df93591a416 commit 7a710a8bc909313951eb9252d8419924c771d7c2 commit d36bdd77b9e6aa7f5cb7b0f11ebbab8e5febf10b commit 8ee53c702f23d511b7f635a4eabbb85384149f8c commit e4a8864f74e9e9e4a7eb93952a4cfa35c165c930 commit 45c64ecf97ee370bbdbd8eed7aed9c8ff5d1b0dd commit 88436dec47a89d944e834e27d83a5dfd49d032cd commit f0978e92c2f7e9a38fa05d30a3e901d16a30698a commit 109406c92f971e739af04b278ef75dd0fee68a40 commit 781c336a6caa67c68fe3a25b108d1dc38b0e7cc0 commit df17ff62b626554c6048bf435a87c5fe1981e8a8 commit 3e29d3b318533ad031396a40322e0ae1aaece943 commit ac1b49be7fa8cddcc194ce66aa453e2b2cff5831 commit 319ff09312934b08b532e605042dd59f41b74458 commit c5dc92006d50fb55a916755206cbac1022373134 commit e7858254f9af9ad4f1570d781666e3af4c298a88 commit 3fe6c7f53eaa62e3700d8ae076e9c42a1d855242 commit 2ef6efa79fecd5e3457b324155d35524d95f2b6b commit d5929835080a60f9119d024fa42f315913942f76 commit 2b1333b80885b896807ffb6ccf4bc21d29aa65e0 commit 2c7676b6b1f57713f55e738f803ecaf91dfc399f commit 47fa33cc54615161ec5192389e55f3b95274f56f commit 6434cf630086eea2d091f122f5802582a05d9d1c commit b708b36afd5b5f32f7cd49b3bd4ab524698c3627 commit 93e163a9e0392aca7d720491100d810bfc3112b0 commit 1ec17c26bc06289d368e2523c0e95b5038c6eeb5 commit 96988a526c97cfbe6664e637640dca9406b0b928 commit 1039fb60463cfeb1fa39c6c48b5c3afcf5b89948 commit 3818715f62b42b5c0bcf456ded3f59ed3908cd6f commit e60c4354840b2fe8e1c4df3fdc5c17039824ff96 commit 89fc846675537f9f6ef62271e9d60556c873d65e commit 993a87917c2af59efb0ee1ce43c878ca8790ba1c commit 03e22ba090aa42dc029c25dbd58fa4b941c87ec3 commit 805245071240ae480503af29c7e31d2d7ff5c7f8 commit 255490f9150da7c6dabe468f3a877b92fd0f02c1 commit 720cf96d8fecde29b72e1101f8a567a0ce99594f commit 90bb087f66745ca48f6f5e43df99a1212d89e712 commit 7c1e1c5e0eb66bcbbedde92eb2bd988016cf2716 commit f16a716621a6edf4eef2ba1409594f5c780ea09b commit fb84efa28a48e30b87fa1122e8aab8016c7347cd commit 5e41b01a780893507a0508f16b9c4fa7f7a48557 commit 3fa214eea43a07c239bba54426399d7d175d0454 commit 47bef230225b8d295255d88e130edc0b45ddbaf0 commit c0398df2a195fa21122e566f54c1f78aad22ec47 commit a960e35ac0111b793dd07f3ce6dc3e1981f91679 commit db9b4ffbfa82201fd7e18f6e434469f3648a8bcb commit a64af136771a7c50818fdc23ad4ce140ed7b66c8 commit 15b9ca1641f0c3cd74885280331e9172c62a125e commit 841d742f094e00e514627bde65d7822e98fb3e4c commit 2327b13d6c4758926e57b5b6c3094302ae3b5e9b commit 3b5765df375c90d46316822131acdd5cfb1c5869 commit f5aa7d46b0eec280ac022664f3e8b6bc9f4ee099 commit fc98eb494c4be6aed076c1ad21d46d5950415ca0 commit e1b7234b4a3f5fa716a84b081cd0d0245674f761 commit e21c3adc6fba27a5dfe3fa5e83d947ad56cb27ee commit 87a3451e346be3f9a5d8943ae094888044314631 commit 7c021558929f7c80ed07e83a91d0905c31e8cd9a commit 4ed49c954e35559cb4a34ba049a15f54ec7fccf6 commit bb4f196b47b6554ba89f02ec60246f0c643a4bf8 commit e751e4be1eec4d427d91583f31ce56ccb5286a27 commit b3e73cbf17a95a85e3a943d7500e9e477d6ab9c3 commit 1f43b8903f3aae4a26a603c36f6d5dd25d6edb51 commit f7ba887f606b1895dabf718547cf7397924f0d3a commit 6626c5a4ea2ef1bba3e02f75f797523e168fe28e commit 8748de873fedf4d55bdd99bbb738ee7ddf329792 commit 51c45e450fc8529495bc85c2d8e309816cdcf959 commit 1320d6c7b0deb7219701a55397e93e6c73d00366 commit 262236b4f5a7d2fe31ed31d34669a9ea4f1c3272 commit 0081bc072837b66587904e6988aea1e0845b0294 commit 5d763a9955f0fbf2681a2f1fa87c416056bd0c89 commit 4dd905fd9429626937107ca13770aa836c8a7e6e commit 10a36226157035e84aaa58e1699a32b3de2755af commit 052eaf6af846e59073a842e9b9517ba9d3f76d4a commit 84a8b3908285d007db49532fd4b51d4b183d1242 commit 4d31819a3746b1f33a915546a4b1aa19374d1544 commit ec457f8378901d673b841e81d289b0165286db7f commit f04d275d94e164d24516c32437c988a323018f63 commit 06f2f7772dc7ff2e3734e654cb2d0b588076860d commit 3ab55e3a1ebc22c1e0b7c72261a8c9fe78a3a09a commit 4b33b5ffcf68de3a43e7dddc91c5dc86e6ed8587 commit f173fbe5b042e1c87593e3b06e85cae0094dd867 commit 98dd398aa3e021896adb7f2b1d0f6b2d3784610c commit f18368b686a86477a79bc240a3a1c655d88a2348 commit 95133f41b090b09ba9163b4469cda1d5ee230cd3 commit 2b96b036a6a5767b84f87edc2c0a1c70c91ebac0 commit 6bad8e4a0ec8a950d10d91cb1846f3ef3e1f4ae0 commit a3e731260b9325e2e87baf54f07619c6cb83931b commit 0bbd1c7de319ca5a08359e5fc901a0317bf5c0d6 commit 20cb72174ddcc86596286784416adb947195e45c commit 990cad0e4a9df4202cd482c192608caf6408e4b3 commit a30e8c13e7affd6fe379c6bf213133b0f917d1bf commit 074efb5cadcb3c9e40d536a730318bfab3384cad commit 04e6931a76e592e66e1014ffe4d13303ccac5d8b commit a3a885878e74d3d81e4742f8dd84faa27c8863ad commit 32e8ab05ed81c995b92f12b590c12ef951ca1129 commit 3e838f7ccf64b0e33a2f6d1c66158cc5ab04c86f commit aeb73c608c5b7fa6fad6d98694323e7629e93cce commit 2d7a1ef85d013699ef60068a9f37ab56ffb33c32 commit 2b2db1f9dbfbc61116fec83a51d16fd0cf49b61b commit dc597268225b2e39bca0bc0c5394e3e6266be2e3 commit 43af2220b3302bc04d72bdf07970ebc0fc46155b commit 83a3439ddb28e15afa66f52650cf3c1486ae6515 commit efb4fd107cfd9748f777a4e9015d803d3c9db68b commit cb4b7a23ff85740ed9e0a3aa4c3c0195654a89d5 commit 163d4cd26a18db7db68a98b4d1ca95d542ca72af commit fd6ae969cfa2b12c6082eb83bdfa648b15d9b3c7 commit c85c623ab406188da7969180e53c4b61e8a982e0 commit eec53143b7fe1ccaace434e03b5959c9117bf9c5 commit 14d6a086f6b91238873d3363f840a91b3aa062de commit 7482a65664c16cc88eb84d2b545a1fed887378a1 commit 7cd6bb82ad96fda0021421fed8750a522dff2aa0 commit dc6934d5ae007ad53c88c3e0b9685160a39ba896 commit 62a4ddcb79e073465f21c5cf84d80a2f22820c39 commit afd5cb3907eaf43e4ca88c162b92143551f0323e commit d976521a995a817007ae3f471ac22b93b1bd39f7 commit 0dc987b699ce4266450d407d6d79d41eab88c5d0 commit 009a3a52791f31c57d755a73f6bc66fbdd8bd76c commit f4f9b827d76d2fa23c2a2359b4e9fb417deec61a commit ab8529b0cdb271d9b222cbbddb2641f3fca5df8f commit 543faf57ee0ef6feb1ef60122c0abb9097083ded commit ceb180361e3851007547c55035cd1de03f108f75 commit f12d07d6e9f22bbe65d158de1435ec515acfb50a commit 64e06652e348f0725368853688d3c15784549fd2 commit 9ce07d94c9f80e1b33f5f6bc2c5a27f6cc56a6dc commit e0a9f1fe206a66c3507ff8b7da56f9d1d1dbb9c4 commit 7ac20b3a6a6bf1181a6f9d76c4d36b2395ae8922 commit 876271118aa41097d035c84f99648746b4a125f3 commit 373269ae6f90bbbe945abde4c0811a991a27901a commit 421f5410965dbc65b7bf7d2b2323203920ad370c commit 3d313f09f31490cec9d5251b59adeb6542c944cc commit fa3dab48defe1ae2f5a5fb56df5f5931fb3e45c8 commit 508f748b03949143ccda614b900e3f7d842251e5 commit ff83e6e7ab042e1f6f4345be1837d08c41b0a49d commit e77a541f5dea0a2ff9d6a40dcda9b284e1e736fe commit a957995618a8afe3efa2b5746c0a954bbd450882 commit 10a9035c36d00586ad4bdb838f8800be951db8d2 commit 50ef0cacc43c5b01d5d1d65f08af33513b07e2c7 commit f64e6e0b6afe047cb0d34a5369597fe0d188e94d commit 5027605aedec363b3209c17d382efe5e29211594 commit 7fc494f9cf8ec7497d4aab26a3b19deceab0fe31 commit 366e817e83e4d795fe3f6e7379bfe79d49cac89b commit 805ada63ba0567b15d10d40419bcc5e6f0b461e6 commit 232b95ba4e83ca0a77f19fc772ccc6581051e5cc commit 5e8034364c22050b8564060e79947d094a65d45e commit d54cda74a9a27d6a18c6b670f7299114272a5e50 commit f9bbc1c8449a51a049a1d6d436eb973b00b6cd7a commit d3a453416270f5c7f1bf409597d702a2230e5a6c commit e9fcc60ddd29994a8b2a276ee9b454d7cd449194 commit 803481d869a4c49337c9ae40197c668e365a6fcd commit 8c56d5105747189c86e6df975257580acb2dd223 commit d9e74da2f1fc42926c6ace1bc47a700f88ada696 commit c974f755372bceda2c3cdc31b4b27dd772172203 commit 91c2cbf9b6a6779ee428955fb202ae66c750aaaf commit db475c11cd592d626749c9ccd98f12c05f29ed88 commit 103f06fd478106fbc2394030599db5c852b7fa32 commit 9126ef85f2b8654060929c5b6a876376702d1017 commit 25ba9429e0f40d3b725781e70d2d6b9ce47a0df4 commit 831463667b5f4f1e5bce9c3b94e9e794d2bc8923 commit 2a9e9daf75231c2f577209af5ec62aecdf7ca7af commit b00de0e237da32793dce221119c3120b8276f4ec commit e5d6eeead88e40282cb6dff38f8effd6341561b1 commit 5171660cbb14f3359e8a8bf7523afb0789fe1bcd commit 7283f862bd991c8657e9bf1c02db772fcf018f13 commit ae25885bdf59fde40726863c57fd20e4a0642183 commit d6b9af1097fefa7e6509a4b2f03af45f9eaddae9 commit dc2cdd17d1fe25c8d25c306a90cfc9ff17a7ca4f commit 016a14beac6d407c9a51f0b92d1e586a00bfc345 commit 138c2fca6f408f397ea8fbbbf33203f244d96e01 commit 84509eede6203bc5ab43ce0361a6ae17e2a17152 commit 8f456104915f0f991a2ce059a640b0a6f807e2cd commit 8524bb67145d8a2b495fabcd4b5643010ea43353 commit 7d8097073caa334ed6187a964645335324231e01 commit 3cdcdc34f35eb4616f7e5954cbdcd3390da8eae4 commit 04155815dbb8320ecd17dd54e85c9a5ae5d63bb9 commit 12d74553726675b5c991251f349422a24c575e56 commit c92df6aa397b5a37cf06004a219b4fdf26234dd6 commit 5ba584ec1101cd63081ba7c228849acef962f6b9 commit d5a680548eddca0e2e01fb84b85c1f7687355e21 commit 2e25ae522164e8586520ef20bddbb41c97b0057a commit e97f91e8d39f8f5cff071d847c2d192904e35d0b commit 95be40c875fc848d99f231e77b341e7ab5d8125d commit f7fb92cd2e39357f14846d69ae0e1d8692371f82 commit 46a3b1125308f8f90a065eeecfafd2a96b01a36c commit 7307e91bfcd0e3f123aab01b30557f93923b6d73 commit bcb9aa45d5a0e11ef91245330c53cde214d15e8d commit 59bcdb564b3bac3e86cc274e5dec05d4647ce47f commit 0667429ce68e0b08f9f1fec8fd0b1f57228f605e commit 58eaa6b3fb636072a4f19e6b6c76bbf564e95b95 commit c83375699fc648f94787d00bc615e370cf8f5fa2 commit 9569ff1a188fe48b46eb1ac2ae4543c271e0d4c2 commit 882d90310f04f3f90753653b8787fb4d309fbbdf commit 01cf387b1c7f60527c91627528370f463bcb84f3 commit d7f0c8aff01340c2bed48f1e712a7f17c31b3db9 commit 1d3182006cf6eea26d0cd752f8042c3cae43139b commit ca0cb8959f7b84742c3dd612f5b044788cddfcc7 commit fe4e9ff9873758ad07e6f7b3088ae3a9dd3ff1b3 commit 5c4904ac34b76eb58abc15a52603ee59bf8be85d commit dd70748eda3f63217d5284f48651239a9721245e commit 9e225fb9e636b31b97e9d35324c2f9e43ee0aab4 commit 45ecaea738830b9d521c93520c8f201359dcbd95 commit 9ae55f030dc523fc4dc6069557e4a887ea815453 commit 1c4dae3e4639540fb567e570cc56a3c292afb6fe commit 8c07f33ea096a1d25fcefa4e904ce50aa2358876 commit 94dfc73e7cf4a31da66b8843f0b9283ddd6b8381 commit 8587f3732b37a39de205d8c42f5448dbe6aa6b55 commit 1796c0255bae9d3d4528b8b3916182b2bc4e1e71 commit 50ca65b44e50e66e370f34e83a1d04a41bbffb70 commit 5bdaaf4fbf85d47d08f76f41108d8d3bbdf15f1c commit 9db35bb349a0ef32184ab68f79cc36026be4585d commit a06968563775181690125091f470a8655742dcbf commit 79398d24da4c9294285bdedf67018ff09fe97bdc commit 0b58162e1207db5052d1fadd5a16eeb90720d765 commit d193b12b2fa6dc316e3ee8871b4ec05992bcb7b1 commit 7bb97c5a39ecebc8ff5db1491fe4e7a8129f93d5 commit 70f1fcbc83582419fd753701c5abe674e05db785 commit 01752681f1ee5febc9dd2da23f5dc0289ea125a6 commit 2639d3e44f9c15b3f29f79943ed58f769faeaef2 commit 46d44516aa6e142fd70287e829e3bbad0d2ed35b commit 7268f0a9e842c52fa73b9f5afc1bebcf9f7d48b7 commit ff15cea338d2c78e0086d55c8a9dd637a5dd3ccc commit c5cb2cdf23ceefd9ef319d6c0d6ac294dfe356b6 commit 5f278dbd540b7548bc5193552e6d478255c14c2d commit 6fb5ee7cec06266a29f25ecc01a23b9d107f64e1 commit 6e9c65f71eddef88f14b7210bbf30e6ce2409b87 commit 02b16fbc56e97b295239c83e43f186c191e42dd3 commit a819451eda6df8f8445f9c7b093b86c4d1919b62 commit f999b37eefd7f1d59bece1d94fa0dbee2f2d62d6 commit 6aa145bc943d34bf05f2bc24ea3aa36d70470f1d commit b71c0aaab9ef1054155a075cf5e8a1db7b37ca5f commit 964893d3caff6bc39f6cf5cb7d90fd78a810c535 commit 3d1ab66e043f2a143e4d93242de7710a9c98c829 commit 89f4b4c53a7c12d2feec0ecaa15b0493b2bd61e6 commit 18e3c1d5d4cf6bd30cf1f1bc10ffac7a05a6719d commit b1dee9527e654207c0980023fadabdd12d3dba80 commit e61f294c7e8da94bb1c9d66f2cdcebfa2dc535a2 commit 0f36d074aeb51a20508a65861d1518dbc231a1fc commit 87a7d5350c67aca513dc0a80f696d5583430d594 commit 3019a8d7c1891ceea55820ee0f7bb36192181aa4 commit 90d5fd317c745a80019ed7f12a1933ce6116e0e4 commit 6a4a1f6054318cd3590562668798304b4351ef36 commit cff35798fad565b5f8bbf4ef84ac698270dcaf64 commit 7d4705b33cb84bfbba04de153d4f5e83041ac393 commit adc0e6ab0df390907228abb76c6bf82382089af1 commit cf6067290034b9ebbe4c39733b1a4acc94876c26 commit 395ece6f14124c2245e4b7fe74932514f999faa1 commit d7cfea332cca483ccd3970ed4de73ed892643e51 commit 163a5a58437062ce4dbef2aab6de4d784043bcf5 commit e0f1e65b836c42741288a367eab565167a408b59 commit acac270d09828edda2d530d255ee75ceb87583ec commit c7f21978fa6aafaf7ad37155c7d3a217dc3d16b0 commit 46ae2af9a8aa168cbad69f21bb1426771339ac9a commit 414e9f520e897818302a6b1729aa2dad8cc928ca commit 3db7f894549a54dd6f8dfb7fe213ede83249bb94 commit 971e4a9781742aaad1587e25fd5582b2dd595ef8 commit 0d8928a94ba18205cc7b41793af333e6731e9d76 commit 071ebbb0d4826ce7c47953b955a522f503dcedfb commit 202804b9705ce26788c443a54aec47eae20f4596 commit 780f97cec866e1ec6967c66c2a1f68b8aa1e3f23 commit c5da61cf5bab30059f22ea368702c445ee87171a commit f929217499cf54a30be995aae65e9951ba079c90 commit c6a3d73592ae20f2f6306f823aa5121c83c88223 commit 3f4309cbdc8496373875cfce67d7b5dba87c3ccb commit 141f733bb3abb000d3949c3b2f119751fe93b0c0 commit be4e366602303615cecb7636075bb18b0d3cc33d commit 1dbd07e088673dbf0e10f4bcfa17f971fd870195 commit 525e93f6317a08a03cc42847b3e075c92a382c99 commit d42a738e5ae5a73212a83414648a4fae524117f3 commit 71b1669ea9bd962d419aac41bc179e09e504327f commit 938d2fd17d173d0489b1bc96b87a1dd93954dc28 commit 11f01dcf3b32d01982d99df4492feef4332cf0b3 commit bfe53be268afd2248d1e28b4520361693c1c0fce commit efeb3caf4341357a7f4745c0da643b13200f0b9f commit eb1c535f0d69e3ec7679d4d714bb2a9765ceda69 commit 5cd561688b3e8a248fdbb37a1b10801b06736865 commit 3b05c960788439dbb47d0e62335f23869696b079 commit 8618b8489ba6ecc025be033d0fa87c0db53f5211 commit a913bde810fc464da6f12f3f19f3483034cc7e16 commit 3461b040a90d723c93c9d1c7c11e3464f5cadc0e commit 170a41e9bc07618d164f11b5154b449e9c24973b commit a6cc3c72aa0e8fb10b695c1a0c4ef07a66b3c2b0 commit e33c267ab70de4249d22d7eab1cc7d68a889bac2 commit 1926a6b75954fc1a8b44d10bd0c67db957b78cf7 commit 21779cc21c732c5eff8ea1624be6590450baa30f commit 1981c35bf7533d70f295b184bbb638d280fe2f36 commit 207d2073c648614dabcb06863d990f0c2a32c4e9 commit 73289afe03619bac585b69f563d0bb9a52e67722 commit 72bd9ea389c70ac948f48d20c0e4ae70c0153940 commit a204f9743b6808ca658c1bacedb34bf4c7e6f800 commit cfb979f71736361ec564d47d0a41f07e09983e32 commit 4bdb9d6501763e83bacbf26846754c567773a1fb commit cbe07c982dbd206defa10ba539e046767179edb3 commit 26093ce14b75bb0c4f0088abf2e11c351abc18c3 commit e0e146d5567317d6ba7d0169bed55d1d9ea05a61 commit e72f03f4bdc4f3a251343cf343bce28c28cbac2a commit 85f4bc0c333ceed24cbc9f69a2a77fab1ae3d4d1 commit 90f33674a0756a6f0907b8f6350cec3f7be4032c commit 64a30aaf0b0d9dcd52af526652937c1350a948dc commit 88ef4c5bb36bf60b317b74d8652c7766c9272a7e commit 2b2b3a751b29a09942a15bc0c4fed940b7ce1857 commit 740ccea3d36732346387ce882c50a7e4c3599316 commit 15360d7fc35b6b0f46240659a129c9255345a41d commit 7e053bab30e3a97bb681cec207a87413a024fc22 commit bbb6e5ae7ccfed7be06b5e8f99602100d4251d5f commit 00fa7f031dd4b885175da390e24cb02f6a45977e commit 48e03843f99857a561f25fb8e583c9a7dee5b81f commit a5eeb70de411ef8b1cf5d97806ed6769b84be872 commit 97ca308925a50aa80711ccfaf814fa3898374862 commit 82a562ab5f0a918ef905c29c759b4f0c788754d3 commit e73b386e75586f28b9b58641938ae0feb340bca0 commit 6366b00346c0fe8ae95d91eed3dd2d04f77729e7 commit 0147064588253b9c07766bd6292a6159475c2790 commit fff7eb56b376cadc58af14df286009086cc4d80f commit b3859b16d27fa58f99ad6221ea427dac7d751e70 commit 7c50a3e99a2eab5b3a9f273ea9e40ce919a3a3e2 commit bc19909f19fdc8253d720d11c948935786fbfa08 commit 0c7ea6f824345ffbb3b4ef880c7c56170365bc1e commit 1daf740137275aa56858ea1cd194eb3c1f6da5a0 commit 22676bc500c27d987a0b42cbe162aebf783f1c38 commit 8a077d9caa3a274de36ee2fe7b608041f5690343 commit 4984dcdc1f78529a0c699c1931971b7bc5e32a04 commit f64f3a72835fc63069a87c2811b61c9a73033c72 commit e9a7d236eaaeb1cdfe20e583e2e1899b26d7469c commit 9a714dcf1039d1142a1c3ad81db09d2706230e00 commit 8bc3812d0b33c214c365fff5dfb65397ad6aaf19 commit c1127df9515ca781940927deffc5ae657ed73a5f commit 09de5cd2c170b19e04e37439a712da52a0535015 commit 3b779044c81754f094ee88afe431d839e3a74aa0 commit b278b738c3be4f383796d09ef8fb6e49fee2091f commit 7acd7ab0297a37e44df928378f53d4260b25fd2b commit 427a60c1c30e1c0e9d0800a63df51985aaf3a26a commit 81990c3c07905af1e316f048a1ff456b2be224ad commit 068ab0cdc1a97628f7007b568adadc2a1fb08384 commit a00a3cef25a969bef8cce011c34b76071756dd05 commit 3e211f23aa1e1a3223edb64c4bc25cae28a1e3ae commit c3c483391bb23e9bb8d8a51e54fefcf508b1cce3 commit edadd6fc28b24dd5806dafc4b38633494ff423e6 commit eb08accdd8d966e4027f8ba52f43faffa3e6dcbd commit 61e419f651a65ebe01658b46bfc317896cac0eda commit fd3bc691fc7b4e553f49bc79f86b515ce2638141 commit 2e02ceb73ff87193618a21c2fe165632f52b9b9d commit 89e2b4373ae5215f5c5d1b7726549950daa77018 commit fc25fd602b1e101a45650475a8d2f00d7bb8e971 commit e660916b7f4dd3f17e5f28707213b66c1553d83b commit aa1965973cc734bd61294b675ac9763cddcac0ed commit dfb02eb6bdf84697dbadd69a7df12db612ce4ed0 commit a57e7345cac12ccdf883f9825523470850166635 commit 47a4fb46797016228198e63a7aa679841f80889c commit 90f5514bcc1a40de3391da552984717fb83b16f8 commit 819da60d77c9f0ec9f069cb27952501562a2e17a commit d8b599bf625d1d818fdbb322a272fd2a5ea32e38 commit ca1dc50fd5cfd7420faa46183f84bc203fae156a commit f24d1d45084155c59a135506a37bc4db10703fe6 commit 3d9c653cf635849d0c24a1ab17c2752a19f4ded8 commit b94a1a207de5e06a55b5a8259073fd8d1637f093 commit 027c38b4121e7d9ae43b2fa21b35582d1aef2a05 commit fce7bf30d3309ea325a7ec452456f8f7c079f622 commit 7d261c50d9c1adb70f6ac2e26edbc64c774c21ca commit 371409df9236bd1abedc143e76fdd7080cba3ba3 commit 1f374171fd345aaad9fcb30ac3acd255b5cd2076 commit f72fc9bd226979c272d6f829a3c60c3d9e8dc969 commit b83c9e3dd5b5dabc507e79c3f03e700a20b2a4ee commit 30ef0808e61850ec9dd105fe0a21f7f9a7c69324 commit 34ce1a6a29db41d5d4bffbab0872b1e1876cb4b8 commit 75072128d704576c39b3ec36b2cb84af316d88d2 commit 9da2902609f7519c48eda84f953f72fee53f2b71 commit cc3cb791f19ad0c4f951f38c98aa513b042ab329 commit 11d526f1972f486aa222fdfba751d2f0249c002a commit bdd0d7e290e0e4c8f7545fff89770abbd22bd51a commit 8c96e566d95aaad910a54aa0b21b7753eb615a00 commit 2fec539112e89255b6a47f566e21d99937fada7b commit ca437b45ac6d4baac348303920dae0fdee68e937 commit c59d73d43fce92e79eddc047e1961054f1284384 commit 9a92732f040ae3aeac017d0e80501cad1127a13d commit dbeb232726871352fc3e688ff5b02897f8cb0dc7 commit bcf9b296627c6b832abd388b5364262853430262 commit 7835303982d11ed700ce6bc530303272bfa8562f commit 5531786537e4fcd82a221b0bd01ce375942b3854 commit 9a23fcf79dc647627b3780284a156cc6e7bbd7c4 commit c028d66e6ec471fc24f70204768f43594a6a8b4a commit 872642edaf4228040473349ae0ee872264fa67f7 commit 35ba8850b673050b71b17c1421079031f4fda319 commit bc99f1209f19fefa3ee11e77464ccfae541f4291 commit 344feb7ccf764756937cfd74fa4ac5caba069c99 commit 6db5e0c8692e590734a7ec7455365d9cbaa15ef1 commit b45b4f880fb660c4bd4794a2ca3950c4570e12c6 commit 737dad0b5d609f464cae73292de646d3d016ec73 commit 88c775bbebc9c5b080d3cbbdef73a31eaead9e5b commit b7580e669ca0d624b122455058aa6fe62c0fef44 commit ac9257f0f50871b7459dac48a5c11bc7b2094245 commit 636774860a6240dcb148f9a08d333a697f3c74f3 commit 14eb72ff580de169212bfc5222499febd312a252 commit 8a076bbcc1278c6256c57915bc193890a6432c6d commit 90bb21cb692ead906738d314f3dcdc432aaee015 commit 149f6d1a6035a7aa6595ac6eeb9c8f566b2103cd commit 9dfc3ee1b0f22d9415c9b7c316447d47d4a702d1 commit 922e7ee31defe461d8638f1277f0c8215c0707e6 commit e2facd575fdf13b718f6c833ed546467a3e6e3ba commit 59a1e9ed1b406b1ae7cbbc612ce00d459987d028 commit 80fb575678b488b920cd9100939b60d480101907 commit 50e8ca0b675add8eb0e95938448a4a0f9fb0b6dd commit 33da97894758737895e90c909f16786052680ef4 commit 1ea7fe77c0db843d8e5f96ff8535dfc941e88694 commit c877bed82e1017c102c137d432933ccbba92c119 commit e23a5e14aa278858c2e3d81ec34e83aa9a4177c5 commit d9e019bb396fc9448b104a6f4cdb7acf8af02854 commit 911dd554a129081f056417a30054f24ef6818e3d commit c4feba47aad55aca90d9a2b104c0345ca6f93712 commit 61c1f340bc809a1ca1e3c8794207a91cde1a7c78 commit 4ddf8d7dedb881c6638850f1b74ff1f9967c89b7 commit 6d7291843ec5008a9ff1c011d342679fa9bfe4b9 commit 0196cc65f91710e30d45cea78d75fd616d705002 commit 66ff4e4ed471fdfa9ae4c49a0abcf5d5043ca65e commit 097d56cdcd77639bce7e205adaa22b6f5e7d93a6 commit 40184ece92ebc5adfdba84554bffb60ef0e37029 commit 7ba01b504c16ae64a8faa5f5ee9a809d424cdf0e commit ea0b20d3bd96f9ce2a1e9d886175411c05dcb179 commit 89ed996b888faaf11c69bb4cbc19f21475c9050e commit 9306b2b2dfce6931241ef804783692cee526599c commit 57b9f3384c64e37bbdad7f127625ac3733d11e5c commit 017860c909b03fa687d29a1ca46390ba9a007b2a commit c4e85551198ea894ac29da1a81becfde65c11f78 commit 236124d1167bcc539432b4f6fc19ce1fa015e2ad commit a84e43b81e45b3da19e51e1e9426ba9e4d0fd1bc commit c0ff84cb58faff9fdb8d955c6e1e07fd75d88c16 commit 58e969b60db0f5ca9abf0a8df28086efd601f38c commit f1549c09c520877be211d483d3c6f4e7f77d2588 commit 0fe6906203d02d050e86b3398219df7bd9e8fe47 commit b7320117b3d36fd6fe542bdac5f7af0a83bea23a commit 2d7a1f71837c0922645143cc270b5a4834595544 commit 86ef6eae0820aa5393983c38c1c5ff9510ca9118 commit af019bef6d6fda044c8db232c97d6be2fb64c741 commit 1f969d28cdbf99c28eb08ef0a0017713d6909347 commit 78486da8ceb2d5d833a69fd695bb9f5a941b73f6 commit 3d4de925356177dad0fb5869d1ea537cfa033009 commit 15c735e7990fdabb466a3341b6b2dfefd987127e commit 76611a84f235126f3258fbe4a25d85ab326ad6bd commit e5028e9fd3bc7c6b916568e5218f5fca5f0d0a75 commit 2a93292fb7860b51550d1222c151de1a9fdc15da commit 652284d6db17f3c7810495fda059efdd84b61fde commit ff613f7ba7105b17dbf251ca298d1de9124a9875 commit 0a94608f0f7de9b1135ffea3546afe68eafef57f commit 84900aeecefb281964c0ba23111be4809477124e commit cb50813998b5aed924323b1b46471e8c60b26692 commit 1e866f1fe528bc0158cdcd589053753032bdb52c commit 3fb0fdd7758d3b850db82899f532dc71f6909c02 commit 43195162fbf54b2cc35efe295d2ed072d2bd4048 commit a0d10c437c1c9859d24a16b90abf85120603b4ff commit a5e4a53818ad585416a214b894fdf568443d5293 commit a91d1a17cd341548fd9535e33c331a2756acdfae commit 17cd10a44a8962860ff4ba351b2a290e752dbbde commit f5ba14043621f4afdf3ad5f92ee2d8dbebbe4340 commit cc79950bf0904f58e651747c17987270f1931c29 commit 8955ff11f56e1596e9f80ff6fa8c48e53047654c commit 806b52287a96bf5812a6be008d24add3f18952cc commit d5c6909e74606870bb59b962200cf75eb25d6d0b commit 3cffeffe051a961417bc26f2053bced4cff83119 commit 41529d79ce1655bd7463c01d9813d0abb6fb08a4 commit 5439c41a80c00e993d18d1cd4407a6a82b35d963 commit ee7b62e127c8cc6db24f83e5e116357649f6e41f commit cc35e75273fcf4fb4f12f9d8fd979be7aa808041 commit e850f6b13a85b451411bb74a526bc08706129e8c commit b7be3ae759160aa3355ebeb0583f67fb9bda4dae commit 4fa05a67b558d2cb3acd2bb299b91220d405ca5e commit 7d09c7606346db9a48b62b4e02454a6b8f323043 commit ca0367ca5d9216644b41f86348d6661f8d9e32d8 commit 53c26181950ddc3c8ace3c0939c89e9c4d8deeb9 commit c96cfaf8fc02d4bb70727dfa7ce7841a3cff9be2 commit 60693e3a38903e39e4fac0a9849b698fc36228bd commit 891ce1c9623f36194587d02774ac3d8c30c3ca72 commit 3890f749c590a5a33f0034362be3304b69ae6d65 commit 6f2c8d5f16594a13295d153245e0bb8166db7ac9 commit 29a249d72d31cde3cd24d43354b40019efdb48b1 commit c9eb2d427c1c428e4f4e29f1e635b9a83236c015 commit 868941b14441282ba08761b770fc6cad69d5bdb7 commit c83dee9b639469b6563a281f39deb99311f16bc4 commit 0b15205c7325dc20b7da0068307670d222d66949 commit f6a3f66063ca39e7ee5fcee59e889c5ec4de9dc0 commit 75510fac07cdde23c9217c8299b6cd64c689fb2b commit e4b1edf48fa37cf4f5ca403e384731fe28d13691 commit 604d3a3f0dca0ef0ab0322f5e7af8c70c5ddb6d4 commit 748262eb400e809aa13e3485f4983c3db3d0ebb3 commit 49062ee374f7a47443dac7e255bd419861de5b43 commit 4c33e5179ff1a09cdfba38fa4fd260ae6735d3bb commit 912db6a58738e8be502838eb6a88f207ba356cd7 commit 98a90f1f0fdd112b85b16ef6ceee69f319ab9311 commit 958afce98c2c86732483458c03540d3c6ef45254 commit 3876a8b5e241081b2a519f848a65c00d8e6cd124 commit 606ee059f85a9aabb0242cbc72852572a3c40432 commit 133dc89c640f965c2736e70d8dec0699d763850d commit 2d04559e0660cf503d4e46cfbd7421d0b6156aa1 commit 50fe04d46aab77cf8fc3d48fbc38d872d181a849 commit f746556aa9724d740c44861db0ac005ae50e1332 commit 75a9ad8c1b7960794c16182fd90852918ecdc0a6 commit 9c913f38032e873758d1b13fce720a0c2cbbfcb7 commit 5877b7ddbc2502a7ddbc07970cf5c15972c22de4 commit a53bc32182d7a2a934ca994239396fba21161c8e commit 4528c18605654bea022d294c9ba2e93600d05a94 commit ce4b4657ff18925c315855aa290e93c5fa652d96 commit 5df79aeb6e0890d6f5fd6e12c7ad238a1617b210 commit 86bd6706c404ea703c11071d8b600d46bb98873c commit dc2b9c70ebca8e5661d33a15ed2b99d4510e90be commit 40835624efcde7f984cb859035b95b5a526d1a9f commit fb3e8ed0438347c63650850c011c99deb59d7e62 commit 615dc75fa6a7fc6cf029b01cdfc9d4b78919e71c commit 8a9899c95d1cd709d441960ca325c6c8184978bb commit 0bf95a1ebd48866ad1438454061782d4d47765f7 commit 044b5cb9e8bfe4f006546fd98148e95489a6e803 commit aec4706b0e70e0cab2d0650b63cf2ddc1b154352 commit c8a58ce18ca36b62749e326411176554462a5e2c commit 8b076fa7c5befd1d3e1d892ae466f5334e4c6c99 commit 25f7cde8bad9fe5943851d3d602e9fddb7977961 commit 5d945cbcd4b16a29d6470a80dfb19738f9a4319f commit cb6b81b21bd9cf09d72b7fe711be1b55001eb166 commit 417c1c1963549e9a48b83ada59d90258e38c6594 commit e8f90717ed3b58e81c480b3aa38e641c0da5a456 commit 2c9e8c01109fb65a63b6830adeb5d7c79ccf26d6 commit 473683a03495a5ed9c75a02c7497f32d6cf92c7a commit e6c64182ed946f1cb65799de9ee75f8bcc42b2c6 commit 074293dd9f61f11898f1f6e01f1560fd4c474025 commit a983d263186996002ecafc72f9a0dc5a3a2bfd6f commit 44b0c964201e1e2fbfcdab4472f9260048befbaa commit 557f9100c74cfa033488563240f567466613cefa commit d3e19f76121178420c3efc9688adfd5a448996e0 commit 4f5a17b221cc48d66cce13fe1531ca8fc99078b9 commit 1cccdfe21eb6b8dd4371378b4b61223eb37f1ef7 commit 54c3e9493cd502d63ff3643fa70b5f98b3201846 commit 869618c3440227f848ff9ac55aa64d523a60476e commit fbcc38811fcb47335899a3776b4fd5670db4e228 commit 4686177f7d2140cdd9d031702c2b53ac4c89340a commit 7b5b0d196c2e6cad87cb1e3ce285c7885f2bd796 commit 660f46e16c4b8a34978012a9f10a32a16db3e98f commit f3cd57e499e6904b7e356d11bd33d617341b3f24 commit 869b10ac8d2300327f554d83f4dbab041bf27d49 commit 4d37fd51b4440cf6a02942c0a169ee18a902fb5b commit c19a23fadd279f433424b4d6436fe4ab0020e20c commit 37edc99979b717312e60cf3463ab756f5a3d6de6 commit f4b4e41a2e05270cd90c5817ab514ace95555874 commit 26749aa8d1261bd6f2db9d019276d4277dde7df8 commit 041a11095abdd52b38f1ea1355357ecd2b66c0e2 commit af14e7c2fc9b60af70b410a7dace116eaa5e4e65 commit 465576ca481caa9cf18550652efdc6b103701c68 commit f7bacd97af853a9bba9bb8d1baa12f997e60122f commit 792a0cdde34d417bc2c8266d8015c5fd58d44a0d commit 8813381a62e1f1703f8fbeccc5fa4fcc988be882 commit ccc4200cfb2518fea042b16f090962b07314439b commit 25e751642a38204da189e0e239055702caeb461c commit 34a65beccdea16a12d862e94d004ccf00de8cb3b commit de0246ee9fc95f1072a0d26ec4025a3545f159b8 commit 25dfc8fab47fb0d7231154e07e20b5fc0221f96e commit 326f0672153e0ff5b19f0ff9d6b5f75a64a9c2b5 commit 42c7de9622b2ec64f7c15c336b75f8933ea7545c commit 2207efdd8388bd300a0051b1775705d890abd306 commit 44998fbdcdc39253cb10293c3c27dabc040ad7e8 commit 34a1b0f90e33b00b431d6e8636b787111c6c29d5 commit 8f5bb69dd453666ff949079443ebce24381e163c commit 4cef2269318cdf5beb70c257f7aaba267f2157ae commit 0339530d8879cbd560cd3d3de5138dc797744274 commit 5b4ee98713c7b42e270835fea08c3b6977b48e7e commit a4f8f294fe99a678ce0a50d649732440c41742b7 commit 4e14e0fc9f0e47d9d3d39b6f92724f2038ee6e25 commit f7907f6db81ca08f4f8bd9245b8fecd49bc82f6e commit 197485c695430ab03d9f4a96aab4d4f76787f7c9 commit 352b25a770712a954b1def1b8c6429b0825ee0b3 commit 9a1dadb6d33173427b6f6c89ab1ddd0eca636afb commit 39a6f3fe98ff03baab364acfec69a6f9803ce22c commit ca0273ab447853c014983951e2183991f8dbc7b9 commit 1a3408259bfd5a383b3c7aa7c309c9fb81e35ce0 commit ddd0fa1f47edd794736e70d165341a5c4ff78e47 commit 5085e0361f5a3675fc0d0919f7b69aded453ceb7 commit 77299956e8867a4cc19c5fd41b797c5152aad1dd commit 1c05d9e53d2cfad1f99d9087a8ad24da4ebc0905 commit 0593ad215359d51514c1e6c81ce28ea598efed6b commit 74097f9fd2f5ebdae04fcba59da345386415cbf3 commit 7acc487ab57e076c823b2b7559aa9e3997962ca2 commit bac4b41d917a1d999308bb1e779f8c3b39c19f67 commit c3b3f9ba25e6cbe59673505fbc5fff6c4cda0ef7 commit 3c3abac60117cfd09460980d9a14c253b37f7b00 commit 86e4863e67a9bd1e257f162f3d740ebb61206c91 commit 9dd4545f65679042273a93054ec3bb665ecf7366 commit 44abdd1646e1fbfb781972c0bffc90b4eb3e87b3 commit 34a255e67615995f729254307a0581c143e03752 commit 3616d49da5dab635c4bb0eeb183b61df72cd0757 commit 4c5aa594928f97593502a66d5a9075f5f5dd064b commit 8de297dc046c180651c0500f8611663ae1c3828a commit 44584b417a698bfaac0c2577e7cc4015ea7359ce commit 2ce0b2186c057a54a4d980b296bd1659d0091716 commit 319568d75f5f91cd4f362b26e65af2a4437c64bf commit a7cefb0b40dcfdafedc54a3ba659327d0336956d commit eb54e014367e1700fa5b94e4c788520081a70661 commit 4a21ab548a7ac19b15aba9aa8df39972ed82f4ad commit f46e3f28f89b893685ec9204405677dac410d8ad commit 72bb503097e79113503dc6d1d49c4063ef97970a commit ee4a26b4ea029aeed749c6560ed9eba224337b04 commit a4f1b04216023ff0f4cd89328b59ee6890248130 commit 6a7379f196230cfa35335ec627e0c0e08da6a8b8 commit 05674cc9ea97079ad7c819628e3e56b046c2f497 commit bdf4473394deffc94c16c0502e73f2daabbdc1d0 commit 40b31e5355ba8c4f7e58f1c458bbe46763dca541 commit cb849b4dc73d414149fea96330cdf96a82919fc9 commit 1c5a2fa97b91d37375f4fc8aeb37c9456c93c828 commit 0d60f2b47d8312d6a88454a373990579624edbde commit 5ade1b951dec63a81b23c2ff75c5b4c191977620 commit b5e924bd7cce823e604f9b7834fac846a910331c commit 1f5dcb7365e4e0a8a6fca44352218ccc6f41a8b9 commit 81f776b670a0eb17bf9cfbfd2df32f66a34bc453 commit 4074f96d0f2db2fcbd8e223aebe60ca445b8aeae commit e216431b63aef8b7d9cf6e59aea39582d48b1808 commit 6290ba4c1656ce2374996b2ed11c3997ebbc4af5 commit 493af96d61b1361a44d016057e0fc6e5d4c92fc7 commit ffccfdbab1056954fd400d2864a1c1b38915c143 commit 3facca7489be2d42c6256350dae72c342a47d7e5 commit b1babe8623f91a71a5acc34eb323c718e0413b74 commit c13423c63f73ee2f9807fdb2a3a7e647421a8114 commit d58715704c5c7d82d7194540780fb335ab337da0 commit 1b54a0121dba12af268fb75c413feabdb9f573d4 commit 7786fb366e598e984ee9307616b0c72979bd191c commit 412dfcf34e0695fa1714ad422b2a5d0ed1406437 commit 0407b33fadcd7a5d31ba3c473cef95b2b418d8c4 commit 92fba5d3c8f5b757c4e3fdc89afe76a8f6c4da68 commit 168c02994399f2714bc6c73f85b7ce4d827f97aa commit acbe9ecfb7fb14db868ddbeda8f43e623026316b commit 3517e6b6fee05b6259ca21741cbe5d7bf68aa672 commit 1c6aab75ece7c1d450e4561cb2263403eeb7ae2f commit 79c453af55d9f1e85b906211ea4051364d28dcb4 commit 9a4514fbffda6083d9f7fba4882142686783cfe4 commit 7bcf89eed48f3fba8d0e2c19236e7dc547b6e037 commit 889fcbe949bdd8470931a90b91f273ca18c510c1 commit 95983aea80038539ebc70e41e73e9bb4eabd1a92 commit 32dd9236698bcd2ffdb69954b167a851fd50182a commit a6fd8f936402c3bcc5ac6aed9cca8e73b5ca08f7 commit 1b255f1ccc883256e23db279ea164273ea0f7462 commit dfc4005f8c172eea359f9db08c3b2b0ff0153699 commit ee8b1ef9a6b089abf7a9c7d094b6e93fa05f15b9 commit 2bc7ea71a73747a77e7f83bc085b0d2393235410 commit aa316247c726d96f0bc205413c54ab49622ca737 commit 8585732baa40455fbae9575d0c8316f4b0cf68f5 commit 1f83db6be37c53f6d395a41ee2602e3280ee60c2 commit 79b2c54f19110235041d8f1250e3c3694047a902 commit 4959e609de1ed4199f33124a88a4c9ab95f5cd9a commit 5640cb8921c9aff1270557482237e06af00c388b commit 8b3120dfc192a4c61f73a0798755713ba2d3eb8a commit 3f5a3881f1e26aa5e3ae34e34e439edce291ef5a commit fcac1ac7f1e3fb877aad51c134ff2776bd24f9d6 commit ed63b7cf2d6ebc01a765be31630c3e4a64f7f095 commit 84e2fd649482435c3e12d9099784976ce8bea1e2 commit 203dc777865621b0c7f8f5b19ec18e572730278c commit 05381583a1d0c38cd2c4907ee93ec624250b8912 commit 980e09e8b74c26baa32f0d65d272ecb1401606c9 commit afb185008d40930895a7f7465a9661afeac0b84b commit e3b2bbb33e26d0a0327f878782632ec35cf96a72 commit 9ced2e492ba9436524a2beed27df730042cbcc3e commit fbad6c418e1e63a29c83e8b56a3636915406a9b7 commit 292956cfd9d38835f95021445525b35502837ff7 commit 64f857b5479a7ce2eaa56bef5f459da5542ad90d commit 931fa55b2fac18f226622a95e42bc968bb852cd8 commit 4557489e0370ac0e9f1f5f100f300e9278be0733 commit 1422ca01be6a816ec5a445a6fdce00342adcc5f8 commit 1be3188a6dda544dd4d78503eba5f5a77462b348 commit 66bd94debe4aca171bd0220de7af3feee6542d8a commit e3b0079be8f0a2ccb533f7e38757b27ab6b6018c commit 06ac561fb0edf868f7b292fb4a3c8ffbbb1e14bb commit f9af3c16bfe19d145cf0588afa06d7f1070cbe2d commit 3d2af401cf851be0bf2d4d89af6f120819b786a7 commit 0dc204bc3f199de0a0924f3d5f7c26295e5c012e commit b2065fb21d9a789b14f737ea90facedabadeb8a4 commit 53bd83dfff8618d4a1affa171288b895add40476 commit 7c8e4a257246399c4f1ff43a06fc53ec53423754 commit 2182cb7029e9c5cc4b63d1c5682f62ebb65cc952 commit 674b9e08a02903fef75beadca0df490348d8f560 commit e22ec18750be01298763b10f7056ec8edfbf064f commit 6fdd2077ec03f4b34d127a1713ca19248539d6e0 commit 736f7308d3e6201322142d98abe4e9af33a429f7 commit 4ac77cce84a4afa3b76fe7c763aa3e754cdac422 commit cbe93a234bcce489be319e678dbf167b7a5f915a commit 1c0a90364859c17d57a7f08d6209b73e7e1142cd commit 47231d5e396a94e869b877bb1a0dcd526d91ac6e commit 0da0def7705dff7ee938662ea06f90770cb6f9fc commit ed67f7292b99f5d3876fa02dd51a43f46986c61c commit 1f3dfde4fba4f4b7822c389b9c994089a4ab588b commit e1c42213f3f9b24200d4b60da806303dbeae5a4d commit 1ff186ff32997049a6d263031819517eab4e93aa commit c10100a416c16b598bf5155e759307b34dac0d7d commit dcfe584b00f1d6dcbeeb769b939f53a3c4f04143 commit b834fc94c102eef751ff741aa0d9b814d0a81af1 commit a16161a869d5633d7d9a825a2546b68953e3a6f0 commit 492af34c9f67ef864319d0db930c8518a04b1937 commit 2605e60c82604508f60dbf427b82cd48154d88ee commit 7e8a3ca972adfc89609718c931577a86c494967b commit 64f991590ff4410041a70ee7ec2db079bc953929 commit 541846502f4fe826cd7c16e4784695ac90736585 commit e05d5b9c5bbea80313d8f58c3a80a18839b25480 commit e2b542100719a93f8cdf6d90185410d38a57a4c1 commit f00654007fe1c154dafbdc1f5953c132e8c27c38 commit a782e866497217f22c5d9014cbb7be8549151376 commit b44f2fd87919b5ae6e1756d4c7ba2cbba22238e1 commit 54d91b55c7f3f9f2c86e0b6be4501433b32ddc89 commit c20ee5749a3f688d9bab83a3b09b75587153ff13 commit 798cd57cd5f871452461746032cf6ee50b0fd69a commit f0a892f599c46af673e47418c47c15e69a7b67f4 commit 6614a3c3164a5df2b54abb0b3559f51041cf705b commit a9cf69d0e7f2051cca1c08ed9b34fe79da951ee9 commit 668c3c237f5ddc2889879b08f26d2374231f3287 commit 1d239c1eb873c7d6c6cbc80d68330c939fd86136 commit 9cae5b3189eb9cd12a9c3f6e8afda2d81958640b commit 232d150fa15606e96c0e01e5c7a2d4e03f621787 commit db100e28fdf026a1fc10657c5170bb1e65663805 commit 180abeb2c5032704787151135b6a38c6b71295a6 commit e5a95c83ed1492c0f442b448b20c90c8faaf702b commit 59eda6ce824e95b98c45628fe6c0adb9130c6df2 commit 2826d447fbd60e6a05e53d5f918bceb8c04e315c commit 9d50bff40e3e366886ec37299fc317edf84be0c9 commit cf4b7387c0a842d64bdd7c353e6d3298174a7740 commit df4aaf015775221dde8a51ee09edb919981f091e commit 2939deac1fa220bc82b89235f146df1d9b52e876 commit 37bc31f0e7da4fbad4664e64d906ae7b9009e550 commit efcc970605a4e365151db247361bb013f5c84922 commit 0ee7cc803ae52b60f268fdf2eba79b9fc1162747 commit 968d40986f004b463f057fce612996556b753c9e commit 5822b8acb869caac72c3ddf149d463177aa28fd4 commit 41ead3e0cdc03d64b7da2dcb1fd70ebb7164228b commit c83b9d60299317a2c15550dd506c864cd01a3e5e commit f59966779deac642541c3f7d772a3bf5972727ed commit aec208eecfb833b05597bbc28696fb1ab62f732c commit 1ac354beecfd58e769fb5373d6b2ac87bce9e1e4 commit 4a0a2cf4c03ba49a4c2596c49c7daa719917d509 commit b2f6c73561fbccee404b441a5c2d0b4fefaae817 commit 0a83bb35d8a6ff3d18c2772afe616780c23293a6 commit 616699d77b3813c24bf46090e722da227bd56cbf commit 08ebadfcd8c8c1cc7a14a7581db8331147b85fbb commit 8df436d5ccdf7f441becb8e8156c8ca9c4276e8c commit fb1a140b7bd19c474a41fb2df8a845e8eba328fa commit 64234eabb8f38ac2bf77dd23140887d81acaabe2 commit 1ff77beac87682c22f99e5cf32614909c65b4a36 commit 89390c4982b77c159e3b8a0be4a04552ef0971a0 commit 4c3861f587400db00801810eb8034c7b480e21dd commit 67c79599eea167dd5e08314b8c26f2dfa717753a commit 0af167f92838f34e594e49a6c8cbaca45548e030 commit 2de09ce41f484cbcc65e518905dae73da67ad35c commit 0cd34ce82b0a9ce503d35a51bff47ba3b6715557 commit 9bd110ab06e93fd01938dedd8b6015940418f0fb commit 9c580e8f6cd6524d4e2c3490c440110526f7ddd6 commit 615fc50207fa27453ba7f5fa1abd60a01a498136 commit 0591183699fceeafb4c4141072d47775de83ecfb commit 86678d46272021c88638881c63d427dd10d665d6 commit dd07556324ece81f0d2be756508903d53e331e9e commit 6396679a1f2db0c63721b841f1a5617d6282a4b1 commit 89b008222c2bf21e50219725caed31590edfd9d1 commit f173c7405224002fc32b64cf1679c4d888c493eb commit 2051160546826cf312f15bde534038582b90f844 commit 764a1e6e0272f377f145fc84b547d61e12724233 commit 84ef99c728079dfd21d6bc70b4c3e4af20602b3c commit f0068dd0effd5972046b69b23f99c43251e82d0e commit b2a93490201300a749ad261b5c5d05cb50179c44 commit 30456ffa65469d1d2e5e1da05017e6728d24c11c commit 9f5171ce733a694bd0211952687704c7a5bf32b9 commit 8da536d5e114ad1da6028c7505f048ded2e421c6 commit 352e683b72e79dbd46cbde528eb91e228e88267a commit b7ffeb4a1b5bce1a7495636d21f1704bd7ff01d3 commit 4e64b529c5b04e7944b41de554ee686ecab00744 commit c4c10a68e82b8a03df234ee744acabcc648df270 commit bea9a56afbc4b5a41ea579b8b0dc5e189b439504 commit cb9c7ab1b3ddc2702379dd9639df0c2230453c2e commit dc0a096bcc1d659ae93f836099c6b0312d2ccaaf commit 5afb76522a0af0513b6dc01f84128a73206b051b commit 541d54e40f1672dea6514ad64d54d61ed952648e commit acc96ae0d12783e9781428b17e34fd662a904f0a commit a6250bdb6c4677ee77d699b338e077b900f94c0c commit ad2feebd71ff80532dff75756d1103f056358614 commit 2bba782002c5dab6ca8d608b778b386fb912adff commit 36fa1cb56ac5189c78dacbbb14d452d0c44b86c0 commit 7ce2aa6d7fe121e243e1c8a8093911fecdf1c88e commit 0e66978ebeb44f96ff4d26b2a83dc88a2bf887a6 commit e16c2b8250262bc0bc531299e2c30641cee14221 commit dca452041552a5a5a6aab3ebda32565fad003eb4 commit 0f761f5768b842fe483141bc59db5b4d66bcaf07 commit f1f63cbb705dc38826369496c6fc12c1b8db1324 commit 1b586595df6d04c27088ef348b8202204ce26d45 commit 0a2d922a5618377cdf8fa476351362733ef55342 commit 4bac1c846eff8042dd59ddecd0a43f3b9de5fd23 commit b4ddb27d1dc7349fc882dbb7702bd2628fe27af6 commit ea8793f214ce1e4db205390c0241955f7ff6f383 commit c02895577b834a6148f6d9d0006a6f196511cc79 commit c8007d362c0150aef34323702e7fa996fa0cfd8d commit 8172cebac588c3c5e238d02be30914fbbc5b1234 commit 73c49a624a8db1ec38b138741203d9d7c76eedd7 commit cede849e9e2755084798236735d045298f9d9979 commit adcd15dc47dadfb176a14fa74af5b0cb0f659f2d commit 7e4a77de08f655e159e6355bdfbea73be71fab88 commit 8e78c7c4fe29f7ab8f87634c5f4dedc66107e66b commit e48e6a131d34de54ce6852149e4c97c2208f45cc commit 7d50b92d588d1e7bdcf38f523200b7b113b46c14 commit fa0bbd3be91dd46f4e56e5cf1fb6e8c2837c649c commit 5a0918b4cb90a90fc8d8bfd9b0f81efe6651951f commit e0df49b3045180fdd23dc27193344a767cf68fe1 commit 84435d1d912140958213beda37c708ec3072b5e1 commit 04fb918bf421b299feaee1006e82921d7d381f18 commit 5c1943820156e9a120faba320a72578578a69ab8 commit c7dafdfa90f708b6e4630abf824ba388a3947400 commit 373008bfc9cdb0f050258947fa5a095f0657e1bc commit d83a348b172dd7f9f10f049b3fd7e44cf4d2ed8a commit e98459c06e3d45c2229b097f7b8cdd412357fa2f commit dd49c07f3ab67e8d7ae7b8231b88a746c668b4e8 commit 19f7b8334484d6b610c8eb527c3f56cb42bc8bf1 commit 31ec699ac5d8d17c4f696888708bb6b2567dfcd4 commit c65c71ae85095f94aae32d86aa78811318bf6a90 commit 5544a7b5a07480192eb5fd3536462faed2c21528 commit ca01eba4e5b6b50144a62d7704763c41b68a0de9 commit 1af9add1f1512b10d9ce44ec7137612bc81ff069 commit bf7f7efbe051a59e9d0710cd26ea05f7ebc411a2 commit 385bf5a856c196d5997ce4111a23df7e1b679c17 commit fbe43dcd1aad7dbcee1cffdbe6c3e1d62c85f76a commit e42dfa66d59240afbdd8d4b47b87486db39504aa commit de8341ee3ce7316883e836a2c4e9bf01ab651e0f commit bbca24d0a3c11193bafb9e174f89f52a379006e3 commit 085292c3d78015412b752ee1ca4c7725fd2bf2fc commit cf36ae3e5802716617b9e4d902a31048240396b0 commit 8ae4be56dd0c2b851e7edc0f1d5cd441f88481c0 commit 2ae6ab9d82cdd0f7381639ee31e31de45519df4c commit b1fb6b87ed55ced458b322ea10cf0d0ab151e01b commit ea2aa97ca37a9044ade001aef71dbc06318e8d44 commit 54cd4cde7c1edb869603073167cabab0b760fff6 commit 43ef9db423bdce1df504d4d10e25092d427f04e3 commit 9d705d7741ae70764f3d6d87e67fad3b5c30ffd0 commit f5994da72ba124a3d0463672fdfbec073e3bb72f commit c351938350ab9b5e978dede2c321da43de7eb70c commit 06671734881af2bcf7f453661b5f8616e32bb3fc commit 2035590f3d40f227eac453d0c36b5eae85c1cf08 commit f461950fdc374a3ada5a63c669d997de4600dffe commit 16b3d851c0146123507fe864fdd97411ded51147 commit 233f56745be446b289edac2ba8184c09365c005e commit b75ef35bb57791a5d675699ed4a40c870d1da12f commit 220e979bd906015b74eb485e16464ee5abbd3c9b commit 6b04ce966a738ecdd9294c9593e48513c0dc90aa commit 8d905254162965c8e6be697d82c7dbf5d08f574d commit de2228c04150df8632ad22ee490de2ed579f64e8 commit 607f41768a1ef9c7721866b00fbdeeea5359bc07 commit 13393f65b77445d8b0f99c7b605cc9ccc936586f commit 868e8e5156a1f8d92ca83fdbac6fd52798650792 commit 6067c82c576af13a6b1c892b42ac4a189aced8ee commit a3f7c10a269d5b77dd5822ade822643ced3057f0 commit ad3b0b99113783f697579c7b09285916019865ea commit 2037769f995e45d3a368fb74983954b3ed8da178 commit 16c01544e30a4b4cf5f3eaacf7a4c19a3622b597 commit 4e3464badbeebb3528c457aefe91413f8a9070b6 commit 00047c3d967d7ef8adf8bac3c3579294a3bc0bb1 commit da1acbb12b33cbc651d8a7e956d254f1acc5034f commit 894c9c540f8315007a4752320e2399bc2e0c46b7 commit ee8086dbc1585d9f4020a19447388246a5cff5c8 commit 61251b2cffea8c1811bbd2dbef175b65f64aaa86 commit b8983d42524f10ac6bf35bbce6a7cc8e45f61e04 commit 064d491f73464f5c9cf56ac24f55118f6f4c54c2 commit 100d0ae82b5c240a4dc17486698e67bf116bd598 commit 58091b4958008ef69899e5404f8f031c36b35fbf commit e79a7417072265a85a36775e4e0f798154d39808 commit 4595a25443447b9542b2a5ee7961eb290e94b496 commit e5e6886f4d7e34b6539abddb591d515271caa634 commit 875c6d2711f6c97e58c52288b4231f3072711d61 commit 2c4e19f873f4a389c2a557a84909cf4b78d3525a commit 51fbbe8a3f8b9dd128fa98f6ea36058dfa3f36de commit 458ec0c8f35963626ccd51c3d50b752de5f1b9d4 commit 919bef7a106ade2bda73681bbc2f3678198f44fc commit 0211c2a0ea600e25db3044daaeff4fe41c3ed6d9 commit c8fea9273fd1be308668496badfcbd55183e0dd3 commit 47e04eed84bb07cc5b54462752a4bc7286ab8197 commit 507fd7c400032b126747a5ae8cca2816d73f009a commit d1b4a51a4ca8954f30cf4671b25c4f8637c45600 commit 3c93603d9568c7c4b20ff1712ddc60e997d78df7 commit 3e834a17a22cb8e9169c0b018d1a2df126977db3 commit 6783e6bbc2457dbed351fb0d2477aa6060a7d32b commit 4fd7f14b56b2e727dd66a62e217e57015da4e9fd commit 94a82c9e3dffb88182a4ed0464dc0266ad0d7b45 commit 595091c6ba35ba48c1f8186116bbbae2b208dce6 commit d0629cea1f97acc5e8d95ca2a42ddc72ed4ffa3b commit d7e7546886eebf626569e38ff06d0a67b8b82757 commit b023053592646b1da9477b0b598f2cdd5d3f89d8 commit 2640174f4a139502f603f7bedf3a7011db714e1d commit b97e914552c3fcea71ce03f899e285f2178ec38b commit 6ffc967c36b42f864955cb2c5e8b3fded0baa918 commit f5b9c1ffabce5f4acbeabd3a03fd57b3970a13fe commit d6f84bab48745ea68814d596eb476a9c11ce76ae commit 7b471c32e4cbfdd7a673b79321f6a26abecbf33b commit 910ab9eee0f61a243126d70e932e1301b5437583 commit 39c84b8e929dbd4f63be7e04bf1a2bcd92b44177 commit a54569b1f9721be11ca5b2c8a8bb3c652ebf576c commit a71f3950c803cb18080746aaa8b66af122f32841 commit c1dd5d29aceed251daf98cacd22817f38f76f94b commit bfe632f6d0a1371784dd9a11fa5a9aa2dbf53bf1 commit c7943bb324e503baeeba3df2bc5ca8a377111bfa commit 8409fe92d88c332923130149fe209d1c882b286e commit d91c411c744b55e860fbafc9a499f4f22d64c762 commit edca5a2c373db61efa959307c13ed9156b1c14d9 commit e1cab970574c001d83e59ca8388c474a57a1afb6 commit 672d6ca758651f0ec12cd0d59787067a5bde1c96 commit 151e0e0fdb4d6365305598af3b9072d44e896ef0 commit 992db92b07736ec98432a97b61c37dfe7bd06dd9 commit bbcbd63231cbd1405ff8e987870b02abc6a4d669 commit cbfac7fa491651c57926c99edeb7495c6c1aeac2 commit ae0448bc88b7827babda73edfe587ccc222baccc commit d832db12af4a057582011a590f60f32853680dd4 commit aac4cec1ec45d72bd03eaf3fd772c5a609f5ed26 commit e3d3fd1cea22ada5a06284d7bbb6cd5794d8545a commit 8f7115c1923cd11146525f1615beb29018001964 commit 63e37a79f7bd939314997e29c2f5a9f0ef184281 commit b6f25c3b94f2aadbf5cbef954db4073614943d74 commit 235fdbc32d559db21e580f85035c59372704f09e commit b34c1d538951e1c3a6d5e585e4a95e78d8733064 commit 2edb79a5fb303dff577d6a0c7d571c3bab1d1455 commit 0785691f5711a8f210bb15a5177c2999ebd3702e commit 08b812985996924c0ccf79d54a31fc9757c0a6ca commit aee5ae7c8492eaca2be20d202887c9c716ffc86f commit d654f60898d56ffda461ef4ffd7bbe15159feb8d commit 8787f6fab41380189865f5751c0f15b0c298b923 commit e839a756012b6cad7a4eeb67b0598ac3f349f863 commit 7c6fb61a400bf3218c6504cb2d48858f98822c9d commit 6c20490663553cd7e07d8de8af482012329ab9d6 commit 66f99628eb24409cb8feb5061f78283c8b65f820 commit df2c6e0c95ca22db5d6bea7e8169841c95426f8d commit 36de13fdb04abef3ee03ade5129ab146de63983b commit 8c5708d3da37b8c7c3c22c7e945b9a76a7c9539b commit 86875d558b91cb46f43be112799c06ecce60ec1e commit 42ff33e63b83d0fd40985ccbb50ff54e320a3bd5 commit 58d97c99c99f4559072a5410ec0135271e24e95d commit 269aad0919c7aedffc18dcf46393a1bec457af0a commit f9c182056b8ff7402a46c39c34d5c91133fdf9a4 commit 18aefea7fc71759a2405bc65eae057ffda3c429c commit af2f2a256e048f1b83605eaae49948e4a6811ac1 commit ea45405d704e20826a899380c19ec163336f42ab commit 82c4018479fba63db8db7c7fbfd9e4afba95603a commit 0b15b1ec8b74bd5c9a4e4cbadab82c0657832799 commit 6acc6196a7320b3d2a391925c4c884fc07f0b3df commit 1bb8df66920a5549db2be92c23ab81fd06992e5d commit ceb756004a30239c3a50dc237313e234b667077e commit 3601d620f22e37740cf73f8278eabf9f2aa19eb7 commit d978c51f8d1f4314c84cf50291156862a4c34fc8 commit c4be0ac987f21e12e7ad23bc480e826d8c30de20 commit a3fef74b1d48d89d4d911fcd7c2630d0eb6a0012 commit 37934d4118e22bceb80141804391975078f31734 commit 21485d3da659b66c37d99071623af83ee1c6733d commit 41012d715d5d7b9751ae84b8fb255e404ac9c5d0 commit dc1d85cb790f2091eea074cee24a704b2d6c4a06 commit e3163bc8ffdfdb405e10530b140135b2ee487f89 commit a8671493d2074950553da3cf07d1be43185ef6c6 commit 0af4ed0c329ebb4cef95fda4fcdbfcdea0255442 commit 87d9862b25483242a30bf45420cd8e7e1872a4be commit 25100377a21ad40dae8be5a3ed361b87acec1479 commit 5763d7f29652f94bdfc9dab87888f79ba6bb6c34 commit a7c48a0ab87ae52c087d663e83e56b8225ac4cce commit 5415bec18c69d3aaa7d4e3b170c8b8c6bb24a823 commit d8a79c03054911c375a2252627a429c9bc4615b6 commit 5ce8f7444f8fbb5adee644590c0e4e1890ab004c commit d119888b09bd567e07c6b93a07f175df88857e02 commit 37a0bad677a76e51c5e9e53f5d9f8f4f3e77912f commit 88d4cea24049de0fa073462b24ab471ecd685d8a commit 16c6077f2eea3c8321782d2fb0a6790532cd8c03 commit b261509952bc19d1012cf732f853659be6ebc61e commit cb0eca01ad9756e853efec3301203c2b5b45aa9f commit 29956d0fded036a570bd8e7d4ea4b1a1730307d2 commit 52bb21499cf54fa65b56d97cd0d68579c90207dd commit 65fbfb02c2734cacffec5e3f492e1b4f1dabcf98 commit 056fb8cfbe213f6eb5e987a806583986a4ae8328 commit 72002056f771a025a2e6b4578aeb538799cb9ba2 commit 20c6168b3c8aadef7d2853c925d99eb546bd5e1c commit dcc2527df918edfe297c5074ccc1f05eae361ca6 commit f528fa3989c53d4cf2ee22d306eb1a96ed0010e6 commit 29a1c581a5d873046302aa22c4a05124c5faefab commit 193b6a1934cc2e258e463e94fe3e94382c0bf458 commit dd4bc65c5bdf17ce8e74f91bca5e41b368b0e32b commit 88bab90f7a8aef3732a57cf33bf0ae121de8c7af commit abbc7a3dafb91b9d4ec56b70ec9a7520f8e13334 commit faed5d0182480556cddb8343d9bad968387848f4 commit f525ed19437d376736bed64ee7bc4afee82f2ba9 commit 387df878fdcf63ce497109c4e1eb805a7df9043f commit 3b38b65ed076fa93f1b0d5fb97c55a9bf692cc49 commit da73a94fa282f78d485bd0aab36c8ac15b6f792c commit 6dd1de12e1243f2013e4fabf31e99e63b1a860d0 commit 051ad2788d35ca07aec8402542e5d38429f2426a commit cc62d98bd56d45de4531844ca23913a15136c05b commit 6ef7d362123ecb5bf6d163bb9c7fd6ba2d8c968c commit 7516777434570833469252c16e5fd7d8f73c45be commit 3c480531a4b1652561fd16824c16be8b8a3ba8f1 commit b9caeadf5cb89566412b94b14a1583419aeba45e commit a9b4700279f21c5c1a3425630dea86d338ab13b2 commit 91ef6cfd30bf75763f41e7a4bc119883fe190606 commit 664883ddde67971d59764f2dda855183ecf8bc46 commit 783d446749c09eb34178cb8600a9a93d3b99e35d commit b6d1c39bc637fe4879d610e6687b1d4224c4b2fb commit dd37fba90e72a48998d9f0eb5497088ea2b02ad1 commit ec669ef2e2cf277f3e73d842bb3bda1c3ea2ea73 commit 85096a73f4dc223b5848e41ce40afc5ee913079e commit 1ec5c0e1289c70c8e7dd93a988d945ad5bc3f4b1 commit 391ce355e72bd5713afc85ec5acc955294499dcf commit 8dd2e87dbd49ba0b6afc1dd22a5930d797cf423f commit a28acf7091babf4248b042326946cee7736f796a commit 2d3907c152611a0d65efe54b93972320dcce1565 commit b3e45b18e5c40f1f7e5f6383953343f96f963b13 commit 11e38360cc15e2d5995449d19030b13a67d73cb3 commit 3b7329cf5a767c1be38352d43066012e220ad43c commit 7738be973fc4e2ba22154fafd3a5d7b9666f9abf commit 83ca5fb40e758e0a0257bf4e3a1148dd52c6d0f2 commit a3aded135e84a581ba567c30ecddff47c8b6cfcf commit 541540b9045c2665d6736a77c776ac81d4225eec commit 153a97b4e3de713c05b6bd42d734a2f9eeaf7968 commit 91462afa42e6b8c5a148a44482c893f1800c513d commit 6643b3836f3908c4f77883b2fae72451e85cf3ca commit af81a9201e0112e9c4ca7258e32cd28baf19f31a commit 2f3f958602721c7915ddb1f2a0e8dc5031bc0151 commit 90df15124526176ff03c246362c196a047c8a39a commit bcecb6524881c54ded92f14a6cf2406d5c439637 commit c1c3f41ffb1bd262e40d68938af68c6ab53a41f8 commit b33139ee15352043123b81b32ca1a6a84340eb5d commit 04fa38cce6e02be4362cd889780d58ec275c4d26 commit 0fd85e89b5bf18447e56099a010ee5be5dc9f2b0 commit 414208e48963fdb136240d7f59c15e627832d288 Omitted-fix: 14773bfa70e6 ("mm: shrinkers: fix double kfree on shrinker name") Omitted-fix: 20529e260ff2 ("Revert "drm/amdgpu: fix start calculation in amdgpu_vram_mgr_new"") Omitted-fix: 3024d95a4c52 ("bpf: Partially revert flexible-array member replacement") Omitted-fix: 3915f8bddefd ("drm: xlnx: add <linux/io.h> for readl/writel") Omitted-fix: 395d10ae4d29 ("drm/xlnx: Fix build failure due to missing include") Omitted-fix: 3f61631d47f1 ("take care to handle NULL ->proc_lseek()") Omitted-fix: 5e6723ef3fda ("drm/lcdif: Consistently use plain timings") Omitted-fix: 71c627c0a87a ("drm/lcdif: Clean up debug prints and comments") Omitted-fix: d395fb1999ab ("Revert "drm/amdgpu: move internal vram_mgr function into the C file"") Omitted-fix: ea19684afb54 ("drm/i915/display: consider DG2_RC_CCS_CC when migrating buffers") Omitted-fix: f423fa1bc9fe ("drm/i915/gvt: Add missing vfio_unregister_group_dev() call") Omitted-fix: fcfd3e5fb2f0 ("drm/lcdif: Clean up headers") Signed-off-by: Karol Herbst <kherbst@redhat.com>
2022-11-02 15:48:10 +00:00
* value read. If the field access would incur in un-aligned access, then either
* iosys_map_memcpy_from() needs to be used or the architecture must support it.
* For example: suppose there is a @struct foo defined as below and the value
* ``foo.field2.inner2`` needs to be read from the iosys_map:
iosys-map: Add a few more helpers Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2043115 Upstream Status: v5.18-rc1 commit e62f25e8b3cdd29224c27938addba817aedd4b54 Author: Lucas De Marchi <lucas.demarchi@intel.com> AuthorDate: Wed Feb 16 09:41:33 2022 -0800 Commit: Lucas De Marchi <lucas.demarchi@intel.com> CommitDate: Sat Feb 19 19:23:53 2022 -0800 First the simplest ones: - iosys_map_memset(): when abstracting system and I/O memory, just like the memcpy() use case, memset() also has dedicated functions to be called for using IO memory. - iosys_map_memcpy_from(): we may need to copy data from I/O memory, not only to. In certain situations it's useful to be able to read or write to an offset that is calculated by having the memory layout given by a struct declaration. Usually we are going to read/write a u8, u16, u32 or u64. As a pre-requisite for the implementation, add iosys_map_memcpy_from() to be the equivalent of iosys_map_memcpy_to(), but in the other direction. Then add 2 pairs of macros: - iosys_map_rd() / iosys_map_wr() - iosys_map_rd_field() / iosys_map_wr_field() The first pair takes the C-type and offset to read/write. The second pair uses a struct describing the layout of the mapping in order to calculate the offset and size being read/written. We could use readb, readw, readl, readq and the write* counterparts, however due to alignment issues this may not work on all architectures. If alignment needs to be checked to call the right function, it's not possible to decide at compile-time which function to call: so just leave the decision to the memcpy function that will do exactly that. Finally, in order to use the above macros with a map derived from another, add another initializer: IOSYS_MAP_INIT_OFFSET(). v2: - Rework IOSYS_MAP_INIT_OFFSET() so it doesn't rely on aliasing rules within the union - Add offset to both iosys_map_rd_field() and iosys_map_wr_field() to allow the struct itself to be at an offset from the mapping - Add documentation to iosys_map_rd_field() with example and expected memory layout v3: - Drop kernel.h include as it's not needed anymore Cc: Sumit Semwal <sumit.semwal@linaro.org> Cc: Christian König <christian.koenig@amd.com> Cc: Thomas Zimmermann <tzimmermann@suse.de> Cc: Mauro Carvalho Chehab <mchehab@kernel.org> Cc: dri-devel@lists.freedesktop.org Cc: linux-kernel@vger.kernel.org Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com> Reviewed-by: Mauro Carvalho Chehab <mchehab@kernel.org> Reviewed-by: Matt Atwood <matthew.s.atwood@intel.com> Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de> Link: https://patchwork.freedesktop.org/patch/msgid/20220216174147.3073235-3-lucas.demarchi@intel.com Signed-off-by: Karol Herbst <kherbst@redhat.com>
2022-03-29 14:21:07 +00:00
*
* .. code-block:: c
*
* struct foo {
* int field1;
* struct {
* int inner1;
* int inner2;
* } field2;
* int field3;
* } __packed;
*
* This is the expected memory layout of a buffer using iosys_map_rd_field():
*
* +------------------------------+--------------------------+
* | Address | Content |
* +==============================+==========================+
* | buffer + 0000 | start of mmapped buffer |
* | | pointed by iosys_map |
* +------------------------------+--------------------------+
* | ... | ... |
* +------------------------------+--------------------------+
* | buffer + ``struct_offset__`` | start of ``struct foo`` |
* +------------------------------+--------------------------+
* | ... | ... |
* +------------------------------+--------------------------+
* | buffer + wwww | ``foo.field2.inner2`` |
* +------------------------------+--------------------------+
* | ... | ... |
* +------------------------------+--------------------------+
* | buffer + yyyy | end of ``struct foo`` |
* +------------------------------+--------------------------+
* | ... | ... |
* +------------------------------+--------------------------+
* | buffer + zzzz | end of mmaped buffer |
* +------------------------------+--------------------------+
*
* Values automatically calculated by this macro or not needed are denoted by
* wwww, yyyy and zzzz. This is the code to read that value:
*
* .. code-block:: c
*
* x = iosys_map_rd_field(&map, offset, struct foo, field2.inner2);
*
* Returns:
* The value read from the mapping.
*/
#define iosys_map_rd_field(map__, struct_offset__, struct_type__, field__) ({ \
struct_type__ *s; \
iosys_map_rd(map__, struct_offset__ + offsetof(struct_type__, field__), \
typeof(s->field__)); \
})
/**
* iosys_map_wr_field - Write to a member of a struct in the iosys_map
*
* @map__: The iosys_map structure
* @struct_offset__: Offset from the beggining of the map, where the struct
* is located
* @struct_type__: The struct describing the layout of the mapping
* @field__: Member of the struct to read
* @val__: Value to write
*
Merge DRM changes from upstream v5.19..v6.0 NOTE: This commit does not compile due to missing RHEL-specific fix-ups, which are split out into separate Git commits following this one. If git bisect selected this commit, run "git bisect skip" and try again. Repeat this until it selects a commit which compiles. This commit was generated using: rhdrm-merge-drm v6.0 2115876 Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2115876 Conflicts: drivers/gpu/drm/hyperv/hyperv_drm_drv.c drivers/gpu/drm/mgag200/mgag200_mode.c Conflict resolution: Commit list: commit d10f7117aa43b0b0d1c4b878afafb6d151da441d commit 115fcf5899f7e0b0d3358a22a8cd76b1398642ee commit d8cb49d203556707ff4c3aa05032c4fc7c3ff1a2 commit 9d72b7e2d2ce3746950929a2c54171d183ea89f2 commit 94afc5382669c3a201c5817c47b57a879b6dabce commit aba5825439d7691343aa562dfeaf6616455bcb01 commit a9ec4fd004b84c26207a8cae41662c501c8a284b commit 537d9ed2f6c1dbfe8465365c2f74a855ffad5e6a commit ed3173077d3fa6fd085960aa6347ec30f532bf31 commit b07debc2a8ce7324c85479a28d145eaa05382286 commit 4ce08703a8c4be77b060aefd14eda272f50a45e4 commit 9975af040a04ba9aef33f3ef1ca4e8f04c7223dd commit dfc0312596561ac462308fae32130a0c580b7ac1 commit 37852141965d467a4ae118139b6eee266e7d953c commit 2af243444f9100639451b11d311982279e00cc16 commit 49a62a2923e523e5359219ed54d643c60f3374f8 commit 705bec3eca9b712fe006b7e4d6b4cd4dc6b57d36 commit 8db73897698ccb4eb70ab103245372569ff5a5ec commit 58304630b830a1c27457ce2e3a0912555b43d03e commit 6ff1c19f5f28dbc396462032dcbfdb8b64795415 commit d792ec62ae1260df2e54dc41103aad3b19bad948 commit a5c89f7c43c12c592a882a0ec2a15e9df0011e80 commit 315241d2d9102a90f71bd6c9e7dd06a1c831a184 commit a7b516bd981f11feb0c9f5ee3d149855d48cb2c8 commit 6f67930af78f10ac7a1a9ba81ec606a9bd07749f commit 56ca3117f77a23a8b24e73e458bc85c11e5dea31 commit e6c2db2be986158afb9991d9fa8a38fe65a88516 commit 91875c22a31be0bdf91d7ec651bb6b083b35ac37 commit 69ed3dd6be9cf5d75252940b9a927dff4bab7860 commit 09708b6d82ef473de91c49d90f35e38b0db463f5 commit 222ff6db8a0dcb86f2bb65fc8656aec635a737a6 commit 218076abbcd647de46635d21331a34b814f90906 commit 922abe4d19bd21b38298f3902674774b92a49293 commit b6411373d3954c8fe4617c27f90f773108b0ab03 commit efd01cd3c27636bc4840057a03839e54abaf11dc commit eb86f645ab9b90c47de7ebe229feae7ac999421b commit b15a7357a84f091fde8ce35bf2fd494150ad4bd0 commit 1b93ff4d0679190e8812cd0d0b3aebfcba1ed883 commit e9794c88cd6cf4be4a79188916a75539751f532c commit 3507932390bbfcf7c69dff9843f1c9da6ed4b861 commit 23dd74db02d75579d8d4eb0b88c7ad119e782269 commit b499914eb83765a27e3b43f216e9d1bdf4265418 commit 6c01aa13894fa0049ea8c96c271318ca353a77f1 commit 429e1fc1b2c257f35b6a1318eb3a1ffb80bc6640 commit e090532246fe17609b08ba0a862428867426dc95 commit 9d67edba730c4663eb7d87771123c3fb86ba606d commit 4de23dca7ec8dfb191ea80fbfe3f008d4ed52346 commit 6cd96877c7da6bc3a28ef0bcb3bc7470f4dd9aa6 commit 93d9e0453e2bb599e0bcced1b914f9b4010180a1 commit 69f8afdb45e7775840693bce42da79d9c22c2e83 commit 500d7135c924024ed2e5e62b03dd9b3b6257fa10 commit 8caaf7ad659da9b757781d5f08ce0bf98801931e commit 1a1a5a315ee805bec457fd214250c088efadb50b commit ad5f74f3420183052532a220edd9a37aba92724a commit 047de3f17a8321065c32ee3f6272a6dba16d6bcf commit 5e3f1e7729ec7a99e145e9d8ed58963d86cdfb98 commit 708d19d9f362766147cab79eccae60912c6d3068 commit aebeb02dfccb61d6930112aede2db3db5b8e974e commit ef83e1198f9f7d7db0031c839bb1112cfee45b42 commit 7ecc3cc8a7b39f08eee9aea7b718187583342a70 commit 3064debaf55e1bc8f191871ca5f82697ef4c0951 commit c48a363016349352dac7e66cd1e823f73bff1fc4 commit d2addf89c5abf4024574d42000313175c6e074fc commit d7fd32ecce914686756dedf586c8573e71f975a4 commit 3080c21a043abc83e56da9bb5942eb3f4b92c90e commit 303760aa914b7f5ac9602dbb4b471a2ad52eeb3e commit 21c47196aec3a93f913a7515e1e7b30e6c54d6c6 commit 18fb42db05a0b93ab5dd5eab5315e50eaa3ca620 commit 945ae909aa76f55ac8c9e95feb3683512d39134a commit be982415fc2e953ad49e59b204f2d0e64953eb5f commit ab1747ccf052976465db7c5a7e1301a50f290db0 commit e4ccf9a777d30d60c60f729b1d5c9bc9e3ea46e3 commit 22a27e0532d06968afc265a3b91fbdc5a773169a commit e42192b4c345a807d8df034f178d5846e1c97ad1 commit a2f9790dcffe2dd0b363607fd215e5b81a0de57a commit 40f71f5b239291357dbee3dc1c6ace83a373f44e commit dd0f4470a849d07081a2036f89d2c41264383985 commit f0d080ff429129b16332f17a906ad2123d9c6317 commit 084c7a7c7a0a0cab35d959e1b14d45a0c6221f49 commit a77f7c89e62c6dfe405a64995812746f27adc510 commit 7428bfbdb7c4dc7323e6b6f0e327c3587e479e16 commit 67d87fac86dd4a04cc62dc0eddfb7c74ace4666d commit 874d98eed71ae678ab364d4c16060955b8b245ae commit 2c54f87cf2fb99826ded617fd0484e688ecfe882 commit 45aa2336fa6dbfa73d9081f75a4b813e747a55aa commit bba4b6470b02c2d9a5074a40cff7246d3356f460 commit 027034511c6a1e3ea96122f7626b89b6d339ed49 commit 3176d0925027727ec37e388e9363f124c2c52ae9 commit 0c057877cbdf261efa7874474f48c715cd6401ba commit 5e87b2e5171621ff00ec197c9af15bc3aa405b6b commit bbded689680f0f2e65d4a57d0dfa654671052d56 commit c7b2dee4308b74391734ac675e66e6856a077f77 commit d9ba1b4cbb2989c919198832f4ebd6eb8ba94da0 commit d0edd3c1a7e859a5899c26e2906e80f4ac798fa9 commit ca10b9d60f8c9556720bad8b1ec7d522e353a01d commit de5db71e4c8c35ed5e92006e3064ce9230881ece commit b6415bd7386bcf9d2e0d6ee1d4ef4186e7a87b24 commit b959eb4f5b7ea49b47e95c9047d33d1b1cf81057 commit 0facdaa249c4e97346bc0b49c893e4a1d336b7dd commit c3e57159dea473e9e138d32d08c48f3103294050 commit 057a6a1936e79c0bc9c86537fb9886ed39cd078a commit d6774b8c3c5813aa541c9148f641d3d8d4b296d2 commit c577b2f43e80d707870a74de0fd726c51b206956 commit a24191b1c4ad05fc578ea5ea01652c09b71da86d commit a9ad5822366c5065e6a65fe5ff5090295ba98986 commit d158367c31f0f87567d2e8a0955287dc005d40e5 commit 8f6de23184452793e60945a26ac40db435d7798d commit 9e97c46f832d4669b4e52cde5ad0bd43423504eb commit a77c2af0994e24ee36c7ffb6dc852770bdf06fb1 commit 5913ab941d6ea782e841234c76958c6872ea752d commit d50f74790bbba662d1438dbc03be6616c52c0722 commit 16f1456466c269ecda32b88c3f8fdd76f8ec370c commit b279df242972ae816a75cf1cc732af836f999100 commit 8219f11fdaf56593a719e1d72fa582673560315a commit 69340e529a064da4807622395e967aa2b5eba1c5 commit 475e2b970cc372f49e9d3e4bbead8b4874299d31 commit e180a7b218487065efd9a3f05eac5de7de128e19 commit 315a8d00ac74c59a688a1a88c0ed97a7791d1c91 commit a50794f26f52c66cb793d5d392f5f19bc2962cdd commit 451374eef622fca6f00eeeda89aaccb45a30a149 commit 1ade30812abfdd1c161a155fd54b0dd594c217ee commit 230fb39ff7e07bd0324c87acf08dd2c9b0bbcea8 commit 962bd34bb457f6353f333ce234c3fd34cad1c00a commit 411d44d754739a371999412606b28af1d72a210b commit 7f73b371710edaee1f40d834096c07c62e51b184 commit f159b1b22c8a2d3d7c1fa877fafc8aacff0deeba commit 746b9c62cc8614fa59c23f3332682b5e9e1d801c commit 1c89b4b718168aa6cf136a984b474d663e4203b7 commit a8d6e127254c48d895c4f6e973ec998fd4a0eff3 commit 4f093a527b0b8f9d3059a4e8376e582fd14cf09e commit 4a2a13a57b605994ee44e5c2cd7b9efc49901404 commit e7c254d75d16b75abf1958095fd34e2ecdc0d645 commit 69ef4a192bba0d76216198ec6d5fe82375337903 commit 9602efab9f8652ef39dc2789edcd26c3d1d3f901 commit e91eec9128c2ad9eab9cf9d7c17f8034b6a86c4c commit 9d8d5a39173244a1394cf84a93447be6f82b361d commit 3d6c72b7fdd2429ca1d4d690618bf65050380b48 commit b409db082da6b76ad2b759a1a48d9402eee4b942 commit fdbec9ff669d83bf863ca7e657af6a9e4c949565 commit 39921e5f00f5a98ff9cb3229937ca339e8d9c9c6 commit 85a040bc9049dd168d5e79a1fa9d2da87e6e52dc commit ee421bb4cb9535f44015634baad833dcc98c9062 commit 5f38c3fb55ce3814b4353320d7a205068a420e48 commit 39c28cdfb719f0e306b447f0827dfd712f81858b commit 0d662350928e6787d29ab205e47e5aa6f1f792f9 commit c1de02bbeca58894c805b3d45c2da4bf30cfc5d9 commit 0b4c48f3e315d172e4cc06e10f2c8ba180788baf commit 08c59dde71b73a0ac94e3ed2d431345b01f20485 commit 67d935b4713988d0a41097439c0c2d74f240b204 commit fa373eb2190115ef2c3597f89c12350d0a250eb0 commit 4cd79f614b501e496ee8e4181d528c0cc1cb4e18 commit 8ec5c0006c50cb1909c0de0fad137909c1218990 commit 2ba5b683260e13d8f2c43bc594d5ae15ec7f7a04 commit 670c87fd169518eb4f15030c63f6c1b4ddf18bfb commit 1ff72d434b40d221e2583fab5e1203031d05c059 commit 649eb3828fb22e829e222ebd83f4e11dc503a565 commit 9ad6f181ad9a19a26bda73a7b199df44ccfcdaba commit 39b1bc4b5bcccac781267bb826b035fbb99c8b9d commit 991dcb89caeb1b9bf714b382e23d3f6d8016e744 commit 61922beba36adea8702fe8069b309c806f6608af commit 6b03816f869529393b37d03e5d75b68f7365a7a4 commit e4f21d1436519fec3e181082c8e1c3fb00ec08a7 commit 1a3b1ea111c44d9dce9f70ba032531a223395a15 commit d63ddca7c58132257fd01e3a4feca41b3bac3089 commit 8ae664907916eba9a9d56296bed684c27318a872 commit d32e8ed918ba7384fda9055ebb31b89b3eadb517 commit fb289464f695f9d913479b4ebae9e39b057f8531 commit 1eb31338994889ac34c4f841e5d54bf10111741b commit e41388d508a50ddb2be5c2676f1992353ca2f155 commit a4f263f46961b1229b10ca3a98f0be618a9d47ac commit a67664860f7833015a683ea295f7c79ac2901332 commit 837c72b23a57e15dd363d5f3f3f268c49c128740 commit edd34368c4c3b45b1386b15f78b2229420f8c6d4 commit b981cc333ff06cb23c7968007965e79c80f5df97 commit e31372492904415e425430402453a192e2c6519f commit 16e214d4aef2d600ef94e845530a28ce795b8fcc commit 26be7cd8aacdd3f0429834e78e3166286779f083 commit 6a735552f44d7a29a9e629cdc3b5c3ac2b4021e6 commit 9d15dd1bb3e7de4dd31a225977813dda2748253e commit 69d6bf5c3754ffc491896632438417d1cedc2c68 commit 91776af1d8deb8f36cbec6bf2bf24b661b2b5cbb commit 9180c30cd61aa0b2f0eb4791c8e490c8c5abc54c commit 420a07b841d03f6a436d8c06571c69aa5c783897 commit 4fde3f5d8805caba40cce2268c540d8a37403c6b commit 51ab3b85000d214b75899875d5745935e06020e5 commit 822e5ae701af2964c5808b6ade1d6f3b1eaec967 commit 75bd0d5e4eadb9ce3e9b6fb71971b6e87c38799e commit 60b02a09598f87972a15bb181b9a62b8a8ee682a commit 89fcdf4305996f869eb39eb8f14a989e9a289611 commit 586294c3c1860ac991d3a241159c0edf974b68e4 commit 8e75e8f573e1ff4a0c93c3be1554d2bfd5ae6029 commit 67090801489d0a4c80c121494b749e1e97573447 commit 50759c13735dab06805eff0e8161d33216d6f5a3 commit c3fbcf60bc74b630967f291f47f0d9d0de6fcea7 commit c2fdb424d32204faf5be29d55f0086b611c94e38 commit 3cf050762534cc268a02793ec00240f81c6e2229 commit c518a775a843413786d3db8b5cab084597730a5a commit ade1fc91eb99614c7155fec762ad5761bb470e06 commit 14374e3eee1b02dbf162e1dd75b789373f07ef43 commit 435c249008cba04ed6a7975e9411f3b934620204 commit 0c5064fa8d5a02dc2dcc6c674a0ad1bbaf79efda commit 01357a5a45ed8eb9543183f5c9c6713ae60fc1f3 commit 8f61973718485f3e89bc4f408f929048b7b47c83 commit 245a4a7b531cffb41233a716497c25b06835cf4b commit ec8d985ff26f29d53d9ebff04973e96572fd0285 commit a0ab5abced550ddeefddb06055ed60779a54eb79 commit 0aa93f54f4341a40b05ec2ac242109e78661d7aa commit 92a020747d6c9e2efe8168a4a444576581bba636 commit 6cb07d20317c77494fa4de572887e3dcdbf98b6d commit 0e5397d8c9fe2a2e4fcc8d98cba4a12511a03267 commit 3951270abfd229e3e17c991942cd111b66454f97 commit 3d140a3d8816082f9732d6fccb81dc18823e03b3 commit aa71f9870efea70b38b17c3d2af870530fcd02e3 commit 58ae532ee875783503428610ac0f5d80e73009a7 commit f2206df8ec862073995f5d27f0f55f698843a9b8 commit 4f543d664cec7e9b490bca55f57151afe6f5cf47 commit a9bfcb56a2ef265092a4cfcd4b9c58ddff4d3649 commit 8b449f1c44d1f921240da6a3e7fc4030966abbff commit ce581ae142e24deb27905840fb720fee9b38d7a4 commit 04514c14678e760e17e3cd44c553ade1bf3bef06 commit fba99b1ab7bde41c1eb00431df37b9237be3681e commit 2db7d421cc5ca86bdcf57f2634f6eefdf349f998 commit 6e939738da208bcc0e4dc794519e18cad85bca73 commit a9b20eb6f7da7794f8ffbce0ab9c709cb1ed71aa commit 700034566d6844b3a67f4b6c3a728d9c0c8d93af commit 5a18db2e92a3556ccacc92c031db6e6a7f2b34dc commit 01ece65132e2980ece4eca91105dfc9eed504881 commit 04477e5e1e6ced4573d9bd5271572ba633a260ab commit ba1677f76b9a510d88efdc7a1416b2e778f125bc commit 368eb57a1676cef35f8303bc23f95d2ac35b7255 commit 544ef14031d0bc9223727fa8d39cd54f0fad7244 commit 147a09072c84b32746fb70139963a92c7d90e07a commit 0cc3ae930c8b2a086b802a8c7b915fd28b57c780 commit a57ebfc0b4da16a3f36bfebb158198aab3e340f8 commit e9ca4e9ea6e208feae82f72607818ac8e15115f4 commit 935a3c66eb9b66426d4be9b54666c77dbe7c32eb commit aa2bdc4843f5871e6c68fbec5e10c0dbaf10ff91 commit 4cfd16659641067f618cdd3589eda42eb2943399 commit bc3c5e0809ae9faa039baf75547e8ee46ec124ef commit b87d39019651c9cae169396cf5ae525393084490 commit 5ac342ef84d7dccd1ba43f5fa2dc10a6feda91e2 commit b729cfee705a56c6204647ac486107a1f814af36 commit 3800b1710946f7db3cb3a29cb2e218cf5df999d0 commit 50e156bd8a9d0910ac4bae5fcff00ddb798db967 commit 10e619f1f31cf126885b3e0ac43a8de9744467fb commit c441d28945fb113220d48d6c86ebc0b090a2b677 commit e8971a790370e805281dd650ec936a9b66435220 commit b43edc504ddd8902d1f697364049b0c0b89de6e2 commit 6352cd451ddbb506ce061868a9e5465d294d4857 commit f7dad0daf2c2368f72828b0729799f01bdcee33b commit a820190204aef0739aa3a067d00273d117f9367c commit b8b64595d6a1ccd5cdf56c528e921332d1366b22 commit ab9d97d6f9f1bb5de83411581dc6cdf425a83a15 commit f74e78ca90bd21b47746b90c439709007681f44c commit d5fe83d26dae59c5b52105075e8950dea8ce7c19 commit 66f54992981444cb418f31018e190d15c92d3599 commit e309434ac56774c86e79a50980e8611ce7cc31a3 commit faf26f2b12e1e03956f7e628183e422d94713e4b commit 2f6247dad2c56cfe2df3c6e00586ead5ee905b46 commit b801d8ad1b516a951535241c9cf60cac8f9a5c2b commit 79b470e5ee83e979f8ff465efa8b7ced160bcae7 commit 4f29f9cf092b2d331ba2081566be3272962b7f96 commit ac2e555e0a7fe571d46f7dcb1529b4bee00095d6 commit 0efd4374f6b41650863947a7528d45e8ad0f7ae0 commit 58efeea32d5e32fa340c7ee3f52d5f986b240e39 commit dda4fb85e433f761eedaed0005a2bc20d705d504 commit 265280b99822e5562eb431b102f2ba773c7b2a0a commit 235c67634230b0f9ad8c0185272fed36c892b1c4 commit d3dfceb58de5f897640cdd424f6c2538d9514367 commit 3b1229741eda70116e0163affdda377484a788ae commit 577359ca178262a64236cc96299714dbff21e9c7 commit 85b0cc35efab0cbc78c083d4506250bea6a755ad commit 49401d3a5c86f5ead12ea7cbe98031edb512b13a commit 543036a2de71f14f8ad566c858e5e9ff61736a86 commit e42ce1366ae806ba2c1f884997703be68df428f4 commit 3dc35cf8789ac93d656f255539f9b37c5051ebf6 commit 2cb6915dcf70a2bf7ee10fcf3f56b083beec1086 commit 542a0f2ef9ea2ccfadf2b8a3b53368c61fc97a0f commit a839a73b18157fe30eb4acd2a1f1ffdb890762ff commit 9761843250f1367043ae2a483461af287aecc879 commit e06c5f59ffe1006f1c6f533113b72ad48a6d4564 commit b3f2c796634613bca511266b37084560f36b67c1 commit 6a640b95b061fe340214ebd4638974b8b6f08efe commit cbd3e8440e2e6a4d83479235c9bf278b89360946 commit 1908a07cffdfc7c57ba5116418c3f2b5ef05e0f6 commit 218987fdead218ae0e714cd9059bc9fc480220f9 commit 9fe5d08fc8230adb64128986ee4af267a54e56dd commit 16600b7d66367482dc8526f8bc3a30b32aaef329 commit d57716702deac8e0ec440739eb4cd6eb0872ddd4 commit 10c4ad3ae025dd0e343a09d2ea4b0e71f8d10797 commit 8763e4c1a0e6710dccb8fccba96fcd6caaa50cae commit 7101ab97e3b00ec1c68d09826bb0521d17783673 commit 80d46fff373775fdea9917a7d13f6fb6fa5147ad commit cb12d72b426caa7594890c62df69fe4b83c96e58 commit 72b5f23ccb0aee46029476cbb072074384aef591 commit 3ccb9ea9976022034d8fffd8d929d6e70a24e0c6 commit 2388a778bdacad0c936dbb01048362864847f8ad commit 9d6b2041761ff6d5a33941919c8b5a805ecbed6c commit 1d6c363330834fa534c1c7ee01620ff134aade1f commit be77243327d962a87bcf03615bae12d73efb9b7c commit ac1ac694f7173a0fbb0b60ab0f26226dd334479a commit 2cfe34e18970d26bff73c63f16c76dae22138d19 commit 2267a195e28cc438cb45936c4562f958502d4038 commit da1db031cd30fefc99d1c82211d3c24b73857bbe commit 3378aed7e2ec7212889116335a2120a6e35c80ce commit 7a09f61f8e842dd027afa1ce8be8bd86062c8a7b commit 4c1b3d0803aef6d39913f1e9d2cfe2c1ccce18e8 commit e87b92c6af537843daf7da9235e622988bae7eae commit b5a0168e1406176cf98487833b7468a1ea5872d3 commit 452e9214431f1f6385bb20fdf6e1b5692947071f commit 49f594995a9255ff734f79c1fc22bd06119ebe8f commit 6ea843e01bce520cf5dea86bc30c5133e0d0822d commit e127306d433ff99f29d1b083c6b3aa128bbd9c5e commit 0c9ed6044c5d08562d38d56e94279badef39e4c7 commit 327f79d7a1d2dcc10aeda05983c4d1532dd0830a commit 214d72f62978c28fe27d22d0d498d04493e9ce86 commit 80fb7a409c64ef304e4040320e87dbb2f10968ca commit b6a93844145395068574cbbfaf3aea91d1f24f1a commit 405bb9eea36a02798631e8409f1182705699d092 commit 3e80a5b068a5fedc69ada30ba1a2d1e0b76dfc25 commit d8e4fb9112e88d8d87ffbc38fa511e7118042d4f commit 8b67e738ca17fb52a275b1cc0191dfce0e9cd7a5 commit 83eb5385b4f021c2674b1d78675bfd10443cdf74 commit be1a63daffdd152ba4c7b71ab9fec2e39259b42b commit 1d742694571655e49e11ea8f391bcafaf0f5ee74 commit b3d0c0f2dfbe610ae5ac6b2d70dd450645dce3cb commit 1da5dab029c08e178784a0750203365ea7c3b4f4 commit 3a6dce778de7c120a37983d80b6ccc8c2c4ff6ec commit aa303964bc349914de8e1d3ff7b517581839d01b commit 6d1044a070b2eef0be45f3b99274a6cebee25053 commit 651d7ee63f338b82d18273c30e9ea804ae174342 commit 3d8785f6c04a953868384db455bb2fdd0b22c11c commit b07d1d73b09ef40e91ace51a2e167391676a8175 commit 4c7631800e6bf0eced08dd7b4f793fcd972f597d commit a35806b36ea44724b21f7f110b38b5941fc9c393 commit 65657d98754c581ad66b56680d3c9ed679890071 commit 32c453f18dccd93a27d6f026ca690167c8cc9639 commit 6cc5c77300afbb285c4f41e04f3435ae3c484c40 commit c7eac19eda0a82f0c1dd9455012754445772fd09 commit c2a050c5e07faf9ed2fa1daa1eb642d9da4a879d commit e61a048eabf9d1245f86e67ec4787d2f10e5a1e0 commit 65e7a17499e15771339d85eaa1ba686ad2fe342c commit 381b590c307f29d0990c4b99ae3a2e02aff2a5b9 commit 1b0da5a3e90d3920f6967e4303fdeaaec6f62208 commit 7cc191ee7621b7145c6cc9c18a4e1929bb5f136e commit 84de5c2e92dccb2bcfd5ff68af44960b808fe6bb commit 453b0016a054df0f442fda8a145b97a33816cab9 commit 031ac4e419dfd8f099a0adba31f7f735013eb628 commit b94b02d72e2b979a32addc8f5099fcf1f6ce9e7b commit d1b08baf93352bb3c88d637055dc21187a456646 commit 136f614931a2bb73616b292cf542da3a18daefd5 commit ea64228d26fee9b766bc9615e92a319da5ef94ef commit fae7d186403ee5a9375ec75938e0de99718e066a commit 73f54d5d968264148ef81941d9dc07e35025a120 commit 85397f6bc4ff13a6bc5259facb8ebebb1986d666 commit ce19021fd99ab2c915f2b44b0df39bef75f11d18 commit d45e32c9d98ce7c22a4bafe69cee58165b59533b commit b62d943e9686e791dd39f8bde302fc27446cdca9 commit b9a577a407d99638522ba6a0fc4fb360aacc01d0 commit 21e74bf99596d91411b6b51340c05ff92a7a4a01 commit 98da4b99a0525c222dab7cd8e73153eaea062dc3 commit d1e40d8e4b4df3f705c7898b264b2cfb60bdafc4 commit da1efdb2a3e8593a9428c81a531bfd8a0c3dd66e commit dfa687bffc8a4a21ed929c7dececf01b8f1f52ee commit 34b68c17e9895ba66fc809224b0122a2eed7aa40 commit 330c1b3180b0d79fef7c05331647f3695661b79e commit 38353a5e3da0b26fab9eeff13a482b135512d9c0 commit aec23025ebc86b770beb9dab6610b671e63d36a2 commit 4464bd825dd56c2f900038c5922408d70aab01fc commit 165ab7b4319d8ecbb689f3d68f0cd6bda4d82b1c commit 77361ed89a8b03c7e121f4b8c517d7be93ccd8df commit 2d017189e2b39cf2fae63984215385401b77ea83 commit 0c56705d8aae9696348cc320b71d531ede001b79 commit e5309d7f66105011e0597fd55ff2ef7f636f52c6 commit d8791dc7f941f3dc78ef2c6aa71d7c752d5b529e commit 8246370341e8e816ad22aaf8d8bfca850339ce0a commit 874714feff3128dc691fc309ee8b9d479f541aa6 commit a0b9e4531b2eaf066a1ccb2986f4d2f9efa6c313 commit d4965c53b95d7533dfc2309d2fc25838bd33220e commit 6b6d12b6ff204cc224cd2369bda2b0580a80a5b3 commit d445dd7b39c56a66872386a3ce0c8a862e59be46 commit 9d001360b47b792a475250bf7ef2bcfbd17ba09f commit 44961f6ebce9a7dccb2ec3dca312c5dbf85920e5 commit 6bad4ff84cb57f548d42a41091159b750eed9ef9 commit 6651875ad7796ed3cd84b3bafb3885d05bb543ff commit f9f4daf15398c3aa0aa2dcd05ed4ea2544bcc62c commit 2ff6a14b20298db0763772b62cd4fb030e6d7f75 commit c6e3806705d679edf135dff5d540a278fc406f15 commit 81298056a78c5163b216f17d17c43736e7069961 commit ab9db127ee03487785509f960e7b5b91cdb6b92d commit eb20cf30c57c37ed05f44966dfabc2c34bf46cab commit 5821a0bbb4c39960975d29d6b58ae290088db0ed commit f09d2b0bdd78ffd38227426fb2ceab7ebd141391 commit f06d1d66d54c223e4f0f73393d94afd88105b6f3 commit 24b8b74eb2eb578fee046c70681000f61afa5680 commit 7f35680ada234ce00828b8ea841ba7ca1e00ff52 commit c5cb0002d14b6f7aabaf7d67d0515fe70aea7167 commit 17f65658c8adce6233f9e53be59d399af6180059 commit 20e10881a043af63f2962a9e6bca64661225b383 commit 594740497e998d30477ab26093bfb81c28cd3ff1 commit faa406f4233ecbd781554ae0a850e56f53003d2e commit 68e355c00f2d58ba0426cf9a4d9df77077493018 commit 61243c173cd26fc8c6bea74d6d47a37ab520dacc commit 143fee0ccc97284e6ece1cf86b7d50721b522448 commit 0dc662318d36e060268751fbd3309660acd3c5aa commit c55300ad4a1814bac9191a4d2c7b0d74273aec7c commit 6fbfc3a23c98bdcda679161c4f4e31368008af8a commit 08a2fd23c6c21e5ef24248a9c1b09e929655eb3b commit 136788cc74cbd9fabc2922b77bfdd38a53eb7155 commit 87d6b28e4a753f4a0572a695fcee094510dc6519 commit 284498206f31e655fb61b1e08d0506dccbffe55f commit c4d7738c9efc81a4f0364da1e673ab1b1cf91735 commit feb54650bae25f2a2adfc493e3e254e7c27a3fba commit 0f28cca87e9afc22280c44d378d2a6e249933977 commit cac3bfcaedbf4d5c93cabaa7882f243099afb8ab commit 4e2d10443580d934188f226f48eda7d650711e03 commit 0381ac3ca2e727d4dfb7264d9416a8ba6bb6c18b commit 851dd8625320fb626b6ab6399b2402fd84abcdfb commit cde83d47482e2578432f9ce029748f4f0d029e9e commit bb50bba9c6c741f5e359f009dde3b25f12a84e3d commit 6f73d6762694c3e91c49e6708077a0de2a75f2f5 commit 62f8f5c3bfc2968461b0a74f0e393325bec16c69 commit 1b3aa89550a2ce4f4af41e11162c5cc0b0b07b4f commit d7053e631e891698f7532712066014ca140c8ff3 commit da4d45b7da937dfbeb918b87c66a5bf9a3079ed8 commit 26c763875e0c15921a0480e008e2be07665e7f56 commit 8728df26dd24a63b24e4e5a6c847172add2fa149 commit 9e68c3841390c43521d4fde6c51e91fcb2d4131f commit 5b644783396b2150eeccb9a079498cad5dff3c42 commit 64f6516e60b0bbe6abfc9f1d9f1999012e0f11a6 commit c11256f82ec82216f69dafee75b3d854d92392d1 commit 6aed665f9d8368ae1e962f44339150884bb47f5b commit bd63f11f4c3c46afec07d821f74736161ff6e526 commit 430ac054e5ea172a880e07da494f65f0b80d8fb8 commit d9c1452c0f07c2e0766a6cf3921eca182e26fdf3 commit 20f038d074d4fa52e88a36bebf25e81c88d7e6fd commit 9e9fa6a9198b767b00f48160800128e83a038f9f commit c24968734abfed81c8f93dc5f44a7b7a9aecadfa commit f17c655cfb99796918d96ae25261db2640407d01 commit e0d7371b46c7b47cdf5391717292033365801437 commit efeeaefe9be56e8ae5e5b4e9ff6d2275ec977ec5 commit 5c57c099f442acab13129c9e15ad2a0c31151c98 commit 9cc4853e4781bf0dd0f35355dc92d97c9da02f5d commit ce19bbe46fcfb88e75a6c7f691df4753a72daa81 commit 7aade9ceeb88d8ca674141d2c245f0107032afb1 commit 4c59b571fce6cedefc1c8e5158f7548f05c05ed6 commit ab9a0b1f3661157d144fb744f3a197563e8e0ff4 commit 25a2b22e4148b1ac91960e13f4f5de020ed04d05 commit 2f83658ffc8c259f05e79dc632e34b26bb8b75c5 commit b5fd0cf3ea377a7332721df8a8c8e7715f93c8d4 commit cf727044144d47c3e8482b9a7775bd3f04a87341 commit 247c7b0dac3cf1141b8bf5520adf2fac1a797aa9 commit e3c60b4ef42d4db5b8d1434fa1741abd7f2fc850 commit 5d6ec040ab44d23953a2efebfe02e41337952be7 commit 7fc83cd079bba8b96b0f46e31f26c8f31c814146 commit 7d188c521d9ec3650136e9b9c81c61b22a544ab3 commit fc801750b197d0f00c09e01e59a7dcd240fddcb5 commit 930e7cba1190a3251fcb01c8523ea9aed89d9a51 commit 4af48f1d1d0a6f050ffcfe83e939c9455d51267f commit 1db4b5264819a8e3aa62e38287bf1da2e1dc8894 commit 5c57cbc390b166950c2e6c2f0c4edaeb0f47e97d commit d8609fd1e0742ba3ad2e51bba9dd489dd03d8599 commit 56426faa1492289ff794620c4ed8c1847a420d0a commit 254a8d0c0071255eb19a81a32ff8d5a0beef1e34 commit fc8adb13d844b44c147b4dced292c74a1ab5cb25 commit 16bd48dc2b3b08d8b3160182b42e51eb2c274706 commit eb6b94db2f4a585d4a9b8e503d7377d2a23c1104 commit c750c4ce1ad69d3df68359abce70ee3d0064c97a commit 24f6fe3226c6f9f1b8406311a96b59c6e650b707 commit 16490922a95f4f67eb9d918f94a4f5b5bdc9eb80 commit f4e3a12bf2d1983b8f352b7719794c52be7e0990 commit fc67615f4ecc3b66bd458840927272aa131eface commit 11a8d095d86854bbc8697525f2c543de36bf5804 commit d9307f27efa531f034862bccf2985c5fa22c4b80 commit 407d63b3af881d17c39f16cdd8416adb0e4658bc commit 6537f79a2aae65748d402d6c46e79d9e473d42a9 commit 019fd800cf4a4514bbb502a52d376b01f02cc347 commit 9f1c8677724a0e6a6ac7a74d2b0192a584df859d commit 623411c293d180ed51f1c3b5753c5acf2c2a4077 commit 97708335b04df3eef0e650b0601cdf6c5ab16dcd commit c9ae7b866f32043d23a34d00a5e6e8d86d2cf10e commit 9affc1b87ecba31458567359b5a28b0b08920a24 commit 72aeb6ee0c78fafc476c02d1b19b5b38defcb57f commit 438eac25d033a1701d839bad16c6ad78f683a293 commit f2a5002541d0698509d4f3adfbfcc55a9c1e2dd1 commit 5089c4a8ebea3c3ad9eedf038dad7098ebc06131 commit d52ea3dc65a9d504afa7a03ff24e17866670bdac commit 526e6ca5d1d5fd22c79033cf5a8eb07d98a11274 commit ea937ad6e925994b94d17555e4c2f2f9a99234e1 commit 1f474c8742fd53a048cc8cc4b20e20b2614397eb commit d6aa8424bcac64b2608452589c9a09984251c01c commit d11737f26ffeae88350b835caa37c7449da22550 commit 272308add589bd46ddb5899685e25fc9f6a58b1e commit 1a65327a84db5b9081a51ccb1c562083f59bfcec commit 9731dd4cadc53251ef80b3655c8d841fed52fa3d commit c443514a7d6d648bc497efbe502e2a49738b94de commit b840b64bc8ed3fc46f6d6aa7f97c43862a33bea5 commit 71be4b16d39ac8b25a8a04eda66cb65581e1a03c commit a141d2083b462505727e14d98db5fc3cd43d59c6 commit f51d22b0d04aa33e94d663fb63aa61e4da168523 commit 5f034aef8479ac80e8732958dcb66b8eda650659 commit 85ee819fd08eff7617c186775fd958e6258216db commit f69e98a91a01fd7c5755dd710e94a17d6e9f583f commit a34136a3b3526369e1b3e678590e3760e7653f0f commit c2fbe663ec4f991832d67f936d3941f781884156 commit 2bbb54bbacd674c692306351d1be5a9b5e61a1e4 commit 28fdd0c32daf9a50a606530d54784fcfa29d88b7 commit 9a4c9de4838fd8ccfcfcfdcd7bd472dddd11f264 commit 3de58f22f544ec9c692993fb1f3bc77163d3d5d8 commit ebfb15262af3bec6c3cc263ce04164e44eea4b30 commit ac31a24d9188a9599dfbce7664cb11e6292873a5 commit ac78fa502afa539cce3a285e50d7fefaf4d2115e commit ba8b460445f8d19d530646729c29319c278dbb38 commit 68ad7f90c790a178f47ef08408d97a81cbb71b37 commit 914da384ae9a77079314f07022c18063c7e77778 commit 4e1db0119c64fd81509005a961790d263e99b21b commit 2595fe04a44d8ac7a56db27dbd1c54698d97fc0b commit 869968225718ec7d77c418e2f6be996206d0428e commit c78783f3227f41053e9a44f536d13f05383b875a commit 8d2ba05b099aedfcece0326a5bbb2e7cc33261ae commit c435f61d0eb334dc8367164a125aea45d9dd9508 commit 3f49f7591e7150c502aa8d04354941ec2394153f commit abf0ba5a34eae0d7359228f4319a6659676fbd0a commit 0f95ee9a0c579ebed0309657f6918673927189f2 commit 1556c3b4c7ed2c8f17f200d53897251fc68b7377 commit c0c87382c1a6985cd12a49a62a893361e5fd1b8f commit eb2983c09f4e053f2c3362763f5e1073b5e4cd7d commit 04770b082e2a207804c633fbfd5efec28cbc5673 commit d6346ae0779ef9a41562f5357ac28aa6a69b1c81 commit b8fec4400923eb91f995d7dbe97411b8991ea559 commit 651d4a0fc4c5c6a2d20c95ef814f0d4381f71d55 commit bf9719f8c89addcf1947ce2b29cea29ea9d8f875 commit 0256ea13d169e9ef00ef1b1c9df395b1d6bad6f6 commit 5c9016b2ddb375662aff802d25c96f5483a4e024 commit a50cc4955623685402ed6deeffad7df93591a416 commit 7a710a8bc909313951eb9252d8419924c771d7c2 commit d36bdd77b9e6aa7f5cb7b0f11ebbab8e5febf10b commit 8ee53c702f23d511b7f635a4eabbb85384149f8c commit e4a8864f74e9e9e4a7eb93952a4cfa35c165c930 commit 45c64ecf97ee370bbdbd8eed7aed9c8ff5d1b0dd commit 88436dec47a89d944e834e27d83a5dfd49d032cd commit f0978e92c2f7e9a38fa05d30a3e901d16a30698a commit 109406c92f971e739af04b278ef75dd0fee68a40 commit 781c336a6caa67c68fe3a25b108d1dc38b0e7cc0 commit df17ff62b626554c6048bf435a87c5fe1981e8a8 commit 3e29d3b318533ad031396a40322e0ae1aaece943 commit ac1b49be7fa8cddcc194ce66aa453e2b2cff5831 commit 319ff09312934b08b532e605042dd59f41b74458 commit c5dc92006d50fb55a916755206cbac1022373134 commit e7858254f9af9ad4f1570d781666e3af4c298a88 commit 3fe6c7f53eaa62e3700d8ae076e9c42a1d855242 commit 2ef6efa79fecd5e3457b324155d35524d95f2b6b commit d5929835080a60f9119d024fa42f315913942f76 commit 2b1333b80885b896807ffb6ccf4bc21d29aa65e0 commit 2c7676b6b1f57713f55e738f803ecaf91dfc399f commit 47fa33cc54615161ec5192389e55f3b95274f56f commit 6434cf630086eea2d091f122f5802582a05d9d1c commit b708b36afd5b5f32f7cd49b3bd4ab524698c3627 commit 93e163a9e0392aca7d720491100d810bfc3112b0 commit 1ec17c26bc06289d368e2523c0e95b5038c6eeb5 commit 96988a526c97cfbe6664e637640dca9406b0b928 commit 1039fb60463cfeb1fa39c6c48b5c3afcf5b89948 commit 3818715f62b42b5c0bcf456ded3f59ed3908cd6f commit e60c4354840b2fe8e1c4df3fdc5c17039824ff96 commit 89fc846675537f9f6ef62271e9d60556c873d65e commit 993a87917c2af59efb0ee1ce43c878ca8790ba1c commit 03e22ba090aa42dc029c25dbd58fa4b941c87ec3 commit 805245071240ae480503af29c7e31d2d7ff5c7f8 commit 255490f9150da7c6dabe468f3a877b92fd0f02c1 commit 720cf96d8fecde29b72e1101f8a567a0ce99594f commit 90bb087f66745ca48f6f5e43df99a1212d89e712 commit 7c1e1c5e0eb66bcbbedde92eb2bd988016cf2716 commit f16a716621a6edf4eef2ba1409594f5c780ea09b commit fb84efa28a48e30b87fa1122e8aab8016c7347cd commit 5e41b01a780893507a0508f16b9c4fa7f7a48557 commit 3fa214eea43a07c239bba54426399d7d175d0454 commit 47bef230225b8d295255d88e130edc0b45ddbaf0 commit c0398df2a195fa21122e566f54c1f78aad22ec47 commit a960e35ac0111b793dd07f3ce6dc3e1981f91679 commit db9b4ffbfa82201fd7e18f6e434469f3648a8bcb commit a64af136771a7c50818fdc23ad4ce140ed7b66c8 commit 15b9ca1641f0c3cd74885280331e9172c62a125e commit 841d742f094e00e514627bde65d7822e98fb3e4c commit 2327b13d6c4758926e57b5b6c3094302ae3b5e9b commit 3b5765df375c90d46316822131acdd5cfb1c5869 commit f5aa7d46b0eec280ac022664f3e8b6bc9f4ee099 commit fc98eb494c4be6aed076c1ad21d46d5950415ca0 commit e1b7234b4a3f5fa716a84b081cd0d0245674f761 commit e21c3adc6fba27a5dfe3fa5e83d947ad56cb27ee commit 87a3451e346be3f9a5d8943ae094888044314631 commit 7c021558929f7c80ed07e83a91d0905c31e8cd9a commit 4ed49c954e35559cb4a34ba049a15f54ec7fccf6 commit bb4f196b47b6554ba89f02ec60246f0c643a4bf8 commit e751e4be1eec4d427d91583f31ce56ccb5286a27 commit b3e73cbf17a95a85e3a943d7500e9e477d6ab9c3 commit 1f43b8903f3aae4a26a603c36f6d5dd25d6edb51 commit f7ba887f606b1895dabf718547cf7397924f0d3a commit 6626c5a4ea2ef1bba3e02f75f797523e168fe28e commit 8748de873fedf4d55bdd99bbb738ee7ddf329792 commit 51c45e450fc8529495bc85c2d8e309816cdcf959 commit 1320d6c7b0deb7219701a55397e93e6c73d00366 commit 262236b4f5a7d2fe31ed31d34669a9ea4f1c3272 commit 0081bc072837b66587904e6988aea1e0845b0294 commit 5d763a9955f0fbf2681a2f1fa87c416056bd0c89 commit 4dd905fd9429626937107ca13770aa836c8a7e6e commit 10a36226157035e84aaa58e1699a32b3de2755af commit 052eaf6af846e59073a842e9b9517ba9d3f76d4a commit 84a8b3908285d007db49532fd4b51d4b183d1242 commit 4d31819a3746b1f33a915546a4b1aa19374d1544 commit ec457f8378901d673b841e81d289b0165286db7f commit f04d275d94e164d24516c32437c988a323018f63 commit 06f2f7772dc7ff2e3734e654cb2d0b588076860d commit 3ab55e3a1ebc22c1e0b7c72261a8c9fe78a3a09a commit 4b33b5ffcf68de3a43e7dddc91c5dc86e6ed8587 commit f173fbe5b042e1c87593e3b06e85cae0094dd867 commit 98dd398aa3e021896adb7f2b1d0f6b2d3784610c commit f18368b686a86477a79bc240a3a1c655d88a2348 commit 95133f41b090b09ba9163b4469cda1d5ee230cd3 commit 2b96b036a6a5767b84f87edc2c0a1c70c91ebac0 commit 6bad8e4a0ec8a950d10d91cb1846f3ef3e1f4ae0 commit a3e731260b9325e2e87baf54f07619c6cb83931b commit 0bbd1c7de319ca5a08359e5fc901a0317bf5c0d6 commit 20cb72174ddcc86596286784416adb947195e45c commit 990cad0e4a9df4202cd482c192608caf6408e4b3 commit a30e8c13e7affd6fe379c6bf213133b0f917d1bf commit 074efb5cadcb3c9e40d536a730318bfab3384cad commit 04e6931a76e592e66e1014ffe4d13303ccac5d8b commit a3a885878e74d3d81e4742f8dd84faa27c8863ad commit 32e8ab05ed81c995b92f12b590c12ef951ca1129 commit 3e838f7ccf64b0e33a2f6d1c66158cc5ab04c86f commit aeb73c608c5b7fa6fad6d98694323e7629e93cce commit 2d7a1ef85d013699ef60068a9f37ab56ffb33c32 commit 2b2db1f9dbfbc61116fec83a51d16fd0cf49b61b commit dc597268225b2e39bca0bc0c5394e3e6266be2e3 commit 43af2220b3302bc04d72bdf07970ebc0fc46155b commit 83a3439ddb28e15afa66f52650cf3c1486ae6515 commit efb4fd107cfd9748f777a4e9015d803d3c9db68b commit cb4b7a23ff85740ed9e0a3aa4c3c0195654a89d5 commit 163d4cd26a18db7db68a98b4d1ca95d542ca72af commit fd6ae969cfa2b12c6082eb83bdfa648b15d9b3c7 commit c85c623ab406188da7969180e53c4b61e8a982e0 commit eec53143b7fe1ccaace434e03b5959c9117bf9c5 commit 14d6a086f6b91238873d3363f840a91b3aa062de commit 7482a65664c16cc88eb84d2b545a1fed887378a1 commit 7cd6bb82ad96fda0021421fed8750a522dff2aa0 commit dc6934d5ae007ad53c88c3e0b9685160a39ba896 commit 62a4ddcb79e073465f21c5cf84d80a2f22820c39 commit afd5cb3907eaf43e4ca88c162b92143551f0323e commit d976521a995a817007ae3f471ac22b93b1bd39f7 commit 0dc987b699ce4266450d407d6d79d41eab88c5d0 commit 009a3a52791f31c57d755a73f6bc66fbdd8bd76c commit f4f9b827d76d2fa23c2a2359b4e9fb417deec61a commit ab8529b0cdb271d9b222cbbddb2641f3fca5df8f commit 543faf57ee0ef6feb1ef60122c0abb9097083ded commit ceb180361e3851007547c55035cd1de03f108f75 commit f12d07d6e9f22bbe65d158de1435ec515acfb50a commit 64e06652e348f0725368853688d3c15784549fd2 commit 9ce07d94c9f80e1b33f5f6bc2c5a27f6cc56a6dc commit e0a9f1fe206a66c3507ff8b7da56f9d1d1dbb9c4 commit 7ac20b3a6a6bf1181a6f9d76c4d36b2395ae8922 commit 876271118aa41097d035c84f99648746b4a125f3 commit 373269ae6f90bbbe945abde4c0811a991a27901a commit 421f5410965dbc65b7bf7d2b2323203920ad370c commit 3d313f09f31490cec9d5251b59adeb6542c944cc commit fa3dab48defe1ae2f5a5fb56df5f5931fb3e45c8 commit 508f748b03949143ccda614b900e3f7d842251e5 commit ff83e6e7ab042e1f6f4345be1837d08c41b0a49d commit e77a541f5dea0a2ff9d6a40dcda9b284e1e736fe commit a957995618a8afe3efa2b5746c0a954bbd450882 commit 10a9035c36d00586ad4bdb838f8800be951db8d2 commit 50ef0cacc43c5b01d5d1d65f08af33513b07e2c7 commit f64e6e0b6afe047cb0d34a5369597fe0d188e94d commit 5027605aedec363b3209c17d382efe5e29211594 commit 7fc494f9cf8ec7497d4aab26a3b19deceab0fe31 commit 366e817e83e4d795fe3f6e7379bfe79d49cac89b commit 805ada63ba0567b15d10d40419bcc5e6f0b461e6 commit 232b95ba4e83ca0a77f19fc772ccc6581051e5cc commit 5e8034364c22050b8564060e79947d094a65d45e commit d54cda74a9a27d6a18c6b670f7299114272a5e50 commit f9bbc1c8449a51a049a1d6d436eb973b00b6cd7a commit d3a453416270f5c7f1bf409597d702a2230e5a6c commit e9fcc60ddd29994a8b2a276ee9b454d7cd449194 commit 803481d869a4c49337c9ae40197c668e365a6fcd commit 8c56d5105747189c86e6df975257580acb2dd223 commit d9e74da2f1fc42926c6ace1bc47a700f88ada696 commit c974f755372bceda2c3cdc31b4b27dd772172203 commit 91c2cbf9b6a6779ee428955fb202ae66c750aaaf commit db475c11cd592d626749c9ccd98f12c05f29ed88 commit 103f06fd478106fbc2394030599db5c852b7fa32 commit 9126ef85f2b8654060929c5b6a876376702d1017 commit 25ba9429e0f40d3b725781e70d2d6b9ce47a0df4 commit 831463667b5f4f1e5bce9c3b94e9e794d2bc8923 commit 2a9e9daf75231c2f577209af5ec62aecdf7ca7af commit b00de0e237da32793dce221119c3120b8276f4ec commit e5d6eeead88e40282cb6dff38f8effd6341561b1 commit 5171660cbb14f3359e8a8bf7523afb0789fe1bcd commit 7283f862bd991c8657e9bf1c02db772fcf018f13 commit ae25885bdf59fde40726863c57fd20e4a0642183 commit d6b9af1097fefa7e6509a4b2f03af45f9eaddae9 commit dc2cdd17d1fe25c8d25c306a90cfc9ff17a7ca4f commit 016a14beac6d407c9a51f0b92d1e586a00bfc345 commit 138c2fca6f408f397ea8fbbbf33203f244d96e01 commit 84509eede6203bc5ab43ce0361a6ae17e2a17152 commit 8f456104915f0f991a2ce059a640b0a6f807e2cd commit 8524bb67145d8a2b495fabcd4b5643010ea43353 commit 7d8097073caa334ed6187a964645335324231e01 commit 3cdcdc34f35eb4616f7e5954cbdcd3390da8eae4 commit 04155815dbb8320ecd17dd54e85c9a5ae5d63bb9 commit 12d74553726675b5c991251f349422a24c575e56 commit c92df6aa397b5a37cf06004a219b4fdf26234dd6 commit 5ba584ec1101cd63081ba7c228849acef962f6b9 commit d5a680548eddca0e2e01fb84b85c1f7687355e21 commit 2e25ae522164e8586520ef20bddbb41c97b0057a commit e97f91e8d39f8f5cff071d847c2d192904e35d0b commit 95be40c875fc848d99f231e77b341e7ab5d8125d commit f7fb92cd2e39357f14846d69ae0e1d8692371f82 commit 46a3b1125308f8f90a065eeecfafd2a96b01a36c commit 7307e91bfcd0e3f123aab01b30557f93923b6d73 commit bcb9aa45d5a0e11ef91245330c53cde214d15e8d commit 59bcdb564b3bac3e86cc274e5dec05d4647ce47f commit 0667429ce68e0b08f9f1fec8fd0b1f57228f605e commit 58eaa6b3fb636072a4f19e6b6c76bbf564e95b95 commit c83375699fc648f94787d00bc615e370cf8f5fa2 commit 9569ff1a188fe48b46eb1ac2ae4543c271e0d4c2 commit 882d90310f04f3f90753653b8787fb4d309fbbdf commit 01cf387b1c7f60527c91627528370f463bcb84f3 commit d7f0c8aff01340c2bed48f1e712a7f17c31b3db9 commit 1d3182006cf6eea26d0cd752f8042c3cae43139b commit ca0cb8959f7b84742c3dd612f5b044788cddfcc7 commit fe4e9ff9873758ad07e6f7b3088ae3a9dd3ff1b3 commit 5c4904ac34b76eb58abc15a52603ee59bf8be85d commit dd70748eda3f63217d5284f48651239a9721245e commit 9e225fb9e636b31b97e9d35324c2f9e43ee0aab4 commit 45ecaea738830b9d521c93520c8f201359dcbd95 commit 9ae55f030dc523fc4dc6069557e4a887ea815453 commit 1c4dae3e4639540fb567e570cc56a3c292afb6fe commit 8c07f33ea096a1d25fcefa4e904ce50aa2358876 commit 94dfc73e7cf4a31da66b8843f0b9283ddd6b8381 commit 8587f3732b37a39de205d8c42f5448dbe6aa6b55 commit 1796c0255bae9d3d4528b8b3916182b2bc4e1e71 commit 50ca65b44e50e66e370f34e83a1d04a41bbffb70 commit 5bdaaf4fbf85d47d08f76f41108d8d3bbdf15f1c commit 9db35bb349a0ef32184ab68f79cc36026be4585d commit a06968563775181690125091f470a8655742dcbf commit 79398d24da4c9294285bdedf67018ff09fe97bdc commit 0b58162e1207db5052d1fadd5a16eeb90720d765 commit d193b12b2fa6dc316e3ee8871b4ec05992bcb7b1 commit 7bb97c5a39ecebc8ff5db1491fe4e7a8129f93d5 commit 70f1fcbc83582419fd753701c5abe674e05db785 commit 01752681f1ee5febc9dd2da23f5dc0289ea125a6 commit 2639d3e44f9c15b3f29f79943ed58f769faeaef2 commit 46d44516aa6e142fd70287e829e3bbad0d2ed35b commit 7268f0a9e842c52fa73b9f5afc1bebcf9f7d48b7 commit ff15cea338d2c78e0086d55c8a9dd637a5dd3ccc commit c5cb2cdf23ceefd9ef319d6c0d6ac294dfe356b6 commit 5f278dbd540b7548bc5193552e6d478255c14c2d commit 6fb5ee7cec06266a29f25ecc01a23b9d107f64e1 commit 6e9c65f71eddef88f14b7210bbf30e6ce2409b87 commit 02b16fbc56e97b295239c83e43f186c191e42dd3 commit a819451eda6df8f8445f9c7b093b86c4d1919b62 commit f999b37eefd7f1d59bece1d94fa0dbee2f2d62d6 commit 6aa145bc943d34bf05f2bc24ea3aa36d70470f1d commit b71c0aaab9ef1054155a075cf5e8a1db7b37ca5f commit 964893d3caff6bc39f6cf5cb7d90fd78a810c535 commit 3d1ab66e043f2a143e4d93242de7710a9c98c829 commit 89f4b4c53a7c12d2feec0ecaa15b0493b2bd61e6 commit 18e3c1d5d4cf6bd30cf1f1bc10ffac7a05a6719d commit b1dee9527e654207c0980023fadabdd12d3dba80 commit e61f294c7e8da94bb1c9d66f2cdcebfa2dc535a2 commit 0f36d074aeb51a20508a65861d1518dbc231a1fc commit 87a7d5350c67aca513dc0a80f696d5583430d594 commit 3019a8d7c1891ceea55820ee0f7bb36192181aa4 commit 90d5fd317c745a80019ed7f12a1933ce6116e0e4 commit 6a4a1f6054318cd3590562668798304b4351ef36 commit cff35798fad565b5f8bbf4ef84ac698270dcaf64 commit 7d4705b33cb84bfbba04de153d4f5e83041ac393 commit adc0e6ab0df390907228abb76c6bf82382089af1 commit cf6067290034b9ebbe4c39733b1a4acc94876c26 commit 395ece6f14124c2245e4b7fe74932514f999faa1 commit d7cfea332cca483ccd3970ed4de73ed892643e51 commit 163a5a58437062ce4dbef2aab6de4d784043bcf5 commit e0f1e65b836c42741288a367eab565167a408b59 commit acac270d09828edda2d530d255ee75ceb87583ec commit c7f21978fa6aafaf7ad37155c7d3a217dc3d16b0 commit 46ae2af9a8aa168cbad69f21bb1426771339ac9a commit 414e9f520e897818302a6b1729aa2dad8cc928ca commit 3db7f894549a54dd6f8dfb7fe213ede83249bb94 commit 971e4a9781742aaad1587e25fd5582b2dd595ef8 commit 0d8928a94ba18205cc7b41793af333e6731e9d76 commit 071ebbb0d4826ce7c47953b955a522f503dcedfb commit 202804b9705ce26788c443a54aec47eae20f4596 commit 780f97cec866e1ec6967c66c2a1f68b8aa1e3f23 commit c5da61cf5bab30059f22ea368702c445ee87171a commit f929217499cf54a30be995aae65e9951ba079c90 commit c6a3d73592ae20f2f6306f823aa5121c83c88223 commit 3f4309cbdc8496373875cfce67d7b5dba87c3ccb commit 141f733bb3abb000d3949c3b2f119751fe93b0c0 commit be4e366602303615cecb7636075bb18b0d3cc33d commit 1dbd07e088673dbf0e10f4bcfa17f971fd870195 commit 525e93f6317a08a03cc42847b3e075c92a382c99 commit d42a738e5ae5a73212a83414648a4fae524117f3 commit 71b1669ea9bd962d419aac41bc179e09e504327f commit 938d2fd17d173d0489b1bc96b87a1dd93954dc28 commit 11f01dcf3b32d01982d99df4492feef4332cf0b3 commit bfe53be268afd2248d1e28b4520361693c1c0fce commit efeb3caf4341357a7f4745c0da643b13200f0b9f commit eb1c535f0d69e3ec7679d4d714bb2a9765ceda69 commit 5cd561688b3e8a248fdbb37a1b10801b06736865 commit 3b05c960788439dbb47d0e62335f23869696b079 commit 8618b8489ba6ecc025be033d0fa87c0db53f5211 commit a913bde810fc464da6f12f3f19f3483034cc7e16 commit 3461b040a90d723c93c9d1c7c11e3464f5cadc0e commit 170a41e9bc07618d164f11b5154b449e9c24973b commit a6cc3c72aa0e8fb10b695c1a0c4ef07a66b3c2b0 commit e33c267ab70de4249d22d7eab1cc7d68a889bac2 commit 1926a6b75954fc1a8b44d10bd0c67db957b78cf7 commit 21779cc21c732c5eff8ea1624be6590450baa30f commit 1981c35bf7533d70f295b184bbb638d280fe2f36 commit 207d2073c648614dabcb06863d990f0c2a32c4e9 commit 73289afe03619bac585b69f563d0bb9a52e67722 commit 72bd9ea389c70ac948f48d20c0e4ae70c0153940 commit a204f9743b6808ca658c1bacedb34bf4c7e6f800 commit cfb979f71736361ec564d47d0a41f07e09983e32 commit 4bdb9d6501763e83bacbf26846754c567773a1fb commit cbe07c982dbd206defa10ba539e046767179edb3 commit 26093ce14b75bb0c4f0088abf2e11c351abc18c3 commit e0e146d5567317d6ba7d0169bed55d1d9ea05a61 commit e72f03f4bdc4f3a251343cf343bce28c28cbac2a commit 85f4bc0c333ceed24cbc9f69a2a77fab1ae3d4d1 commit 90f33674a0756a6f0907b8f6350cec3f7be4032c commit 64a30aaf0b0d9dcd52af526652937c1350a948dc commit 88ef4c5bb36bf60b317b74d8652c7766c9272a7e commit 2b2b3a751b29a09942a15bc0c4fed940b7ce1857 commit 740ccea3d36732346387ce882c50a7e4c3599316 commit 15360d7fc35b6b0f46240659a129c9255345a41d commit 7e053bab30e3a97bb681cec207a87413a024fc22 commit bbb6e5ae7ccfed7be06b5e8f99602100d4251d5f commit 00fa7f031dd4b885175da390e24cb02f6a45977e commit 48e03843f99857a561f25fb8e583c9a7dee5b81f commit a5eeb70de411ef8b1cf5d97806ed6769b84be872 commit 97ca308925a50aa80711ccfaf814fa3898374862 commit 82a562ab5f0a918ef905c29c759b4f0c788754d3 commit e73b386e75586f28b9b58641938ae0feb340bca0 commit 6366b00346c0fe8ae95d91eed3dd2d04f77729e7 commit 0147064588253b9c07766bd6292a6159475c2790 commit fff7eb56b376cadc58af14df286009086cc4d80f commit b3859b16d27fa58f99ad6221ea427dac7d751e70 commit 7c50a3e99a2eab5b3a9f273ea9e40ce919a3a3e2 commit bc19909f19fdc8253d720d11c948935786fbfa08 commit 0c7ea6f824345ffbb3b4ef880c7c56170365bc1e commit 1daf740137275aa56858ea1cd194eb3c1f6da5a0 commit 22676bc500c27d987a0b42cbe162aebf783f1c38 commit 8a077d9caa3a274de36ee2fe7b608041f5690343 commit 4984dcdc1f78529a0c699c1931971b7bc5e32a04 commit f64f3a72835fc63069a87c2811b61c9a73033c72 commit e9a7d236eaaeb1cdfe20e583e2e1899b26d7469c commit 9a714dcf1039d1142a1c3ad81db09d2706230e00 commit 8bc3812d0b33c214c365fff5dfb65397ad6aaf19 commit c1127df9515ca781940927deffc5ae657ed73a5f commit 09de5cd2c170b19e04e37439a712da52a0535015 commit 3b779044c81754f094ee88afe431d839e3a74aa0 commit b278b738c3be4f383796d09ef8fb6e49fee2091f commit 7acd7ab0297a37e44df928378f53d4260b25fd2b commit 427a60c1c30e1c0e9d0800a63df51985aaf3a26a commit 81990c3c07905af1e316f048a1ff456b2be224ad commit 068ab0cdc1a97628f7007b568adadc2a1fb08384 commit a00a3cef25a969bef8cce011c34b76071756dd05 commit 3e211f23aa1e1a3223edb64c4bc25cae28a1e3ae commit c3c483391bb23e9bb8d8a51e54fefcf508b1cce3 commit edadd6fc28b24dd5806dafc4b38633494ff423e6 commit eb08accdd8d966e4027f8ba52f43faffa3e6dcbd commit 61e419f651a65ebe01658b46bfc317896cac0eda commit fd3bc691fc7b4e553f49bc79f86b515ce2638141 commit 2e02ceb73ff87193618a21c2fe165632f52b9b9d commit 89e2b4373ae5215f5c5d1b7726549950daa77018 commit fc25fd602b1e101a45650475a8d2f00d7bb8e971 commit e660916b7f4dd3f17e5f28707213b66c1553d83b commit aa1965973cc734bd61294b675ac9763cddcac0ed commit dfb02eb6bdf84697dbadd69a7df12db612ce4ed0 commit a57e7345cac12ccdf883f9825523470850166635 commit 47a4fb46797016228198e63a7aa679841f80889c commit 90f5514bcc1a40de3391da552984717fb83b16f8 commit 819da60d77c9f0ec9f069cb27952501562a2e17a commit d8b599bf625d1d818fdbb322a272fd2a5ea32e38 commit ca1dc50fd5cfd7420faa46183f84bc203fae156a commit f24d1d45084155c59a135506a37bc4db10703fe6 commit 3d9c653cf635849d0c24a1ab17c2752a19f4ded8 commit b94a1a207de5e06a55b5a8259073fd8d1637f093 commit 027c38b4121e7d9ae43b2fa21b35582d1aef2a05 commit fce7bf30d3309ea325a7ec452456f8f7c079f622 commit 7d261c50d9c1adb70f6ac2e26edbc64c774c21ca commit 371409df9236bd1abedc143e76fdd7080cba3ba3 commit 1f374171fd345aaad9fcb30ac3acd255b5cd2076 commit f72fc9bd226979c272d6f829a3c60c3d9e8dc969 commit b83c9e3dd5b5dabc507e79c3f03e700a20b2a4ee commit 30ef0808e61850ec9dd105fe0a21f7f9a7c69324 commit 34ce1a6a29db41d5d4bffbab0872b1e1876cb4b8 commit 75072128d704576c39b3ec36b2cb84af316d88d2 commit 9da2902609f7519c48eda84f953f72fee53f2b71 commit cc3cb791f19ad0c4f951f38c98aa513b042ab329 commit 11d526f1972f486aa222fdfba751d2f0249c002a commit bdd0d7e290e0e4c8f7545fff89770abbd22bd51a commit 8c96e566d95aaad910a54aa0b21b7753eb615a00 commit 2fec539112e89255b6a47f566e21d99937fada7b commit ca437b45ac6d4baac348303920dae0fdee68e937 commit c59d73d43fce92e79eddc047e1961054f1284384 commit 9a92732f040ae3aeac017d0e80501cad1127a13d commit dbeb232726871352fc3e688ff5b02897f8cb0dc7 commit bcf9b296627c6b832abd388b5364262853430262 commit 7835303982d11ed700ce6bc530303272bfa8562f commit 5531786537e4fcd82a221b0bd01ce375942b3854 commit 9a23fcf79dc647627b3780284a156cc6e7bbd7c4 commit c028d66e6ec471fc24f70204768f43594a6a8b4a commit 872642edaf4228040473349ae0ee872264fa67f7 commit 35ba8850b673050b71b17c1421079031f4fda319 commit bc99f1209f19fefa3ee11e77464ccfae541f4291 commit 344feb7ccf764756937cfd74fa4ac5caba069c99 commit 6db5e0c8692e590734a7ec7455365d9cbaa15ef1 commit b45b4f880fb660c4bd4794a2ca3950c4570e12c6 commit 737dad0b5d609f464cae73292de646d3d016ec73 commit 88c775bbebc9c5b080d3cbbdef73a31eaead9e5b commit b7580e669ca0d624b122455058aa6fe62c0fef44 commit ac9257f0f50871b7459dac48a5c11bc7b2094245 commit 636774860a6240dcb148f9a08d333a697f3c74f3 commit 14eb72ff580de169212bfc5222499febd312a252 commit 8a076bbcc1278c6256c57915bc193890a6432c6d commit 90bb21cb692ead906738d314f3dcdc432aaee015 commit 149f6d1a6035a7aa6595ac6eeb9c8f566b2103cd commit 9dfc3ee1b0f22d9415c9b7c316447d47d4a702d1 commit 922e7ee31defe461d8638f1277f0c8215c0707e6 commit e2facd575fdf13b718f6c833ed546467a3e6e3ba commit 59a1e9ed1b406b1ae7cbbc612ce00d459987d028 commit 80fb575678b488b920cd9100939b60d480101907 commit 50e8ca0b675add8eb0e95938448a4a0f9fb0b6dd commit 33da97894758737895e90c909f16786052680ef4 commit 1ea7fe77c0db843d8e5f96ff8535dfc941e88694 commit c877bed82e1017c102c137d432933ccbba92c119 commit e23a5e14aa278858c2e3d81ec34e83aa9a4177c5 commit d9e019bb396fc9448b104a6f4cdb7acf8af02854 commit 911dd554a129081f056417a30054f24ef6818e3d commit c4feba47aad55aca90d9a2b104c0345ca6f93712 commit 61c1f340bc809a1ca1e3c8794207a91cde1a7c78 commit 4ddf8d7dedb881c6638850f1b74ff1f9967c89b7 commit 6d7291843ec5008a9ff1c011d342679fa9bfe4b9 commit 0196cc65f91710e30d45cea78d75fd616d705002 commit 66ff4e4ed471fdfa9ae4c49a0abcf5d5043ca65e commit 097d56cdcd77639bce7e205adaa22b6f5e7d93a6 commit 40184ece92ebc5adfdba84554bffb60ef0e37029 commit 7ba01b504c16ae64a8faa5f5ee9a809d424cdf0e commit ea0b20d3bd96f9ce2a1e9d886175411c05dcb179 commit 89ed996b888faaf11c69bb4cbc19f21475c9050e commit 9306b2b2dfce6931241ef804783692cee526599c commit 57b9f3384c64e37bbdad7f127625ac3733d11e5c commit 017860c909b03fa687d29a1ca46390ba9a007b2a commit c4e85551198ea894ac29da1a81becfde65c11f78 commit 236124d1167bcc539432b4f6fc19ce1fa015e2ad commit a84e43b81e45b3da19e51e1e9426ba9e4d0fd1bc commit c0ff84cb58faff9fdb8d955c6e1e07fd75d88c16 commit 58e969b60db0f5ca9abf0a8df28086efd601f38c commit f1549c09c520877be211d483d3c6f4e7f77d2588 commit 0fe6906203d02d050e86b3398219df7bd9e8fe47 commit b7320117b3d36fd6fe542bdac5f7af0a83bea23a commit 2d7a1f71837c0922645143cc270b5a4834595544 commit 86ef6eae0820aa5393983c38c1c5ff9510ca9118 commit af019bef6d6fda044c8db232c97d6be2fb64c741 commit 1f969d28cdbf99c28eb08ef0a0017713d6909347 commit 78486da8ceb2d5d833a69fd695bb9f5a941b73f6 commit 3d4de925356177dad0fb5869d1ea537cfa033009 commit 15c735e7990fdabb466a3341b6b2dfefd987127e commit 76611a84f235126f3258fbe4a25d85ab326ad6bd commit e5028e9fd3bc7c6b916568e5218f5fca5f0d0a75 commit 2a93292fb7860b51550d1222c151de1a9fdc15da commit 652284d6db17f3c7810495fda059efdd84b61fde commit ff613f7ba7105b17dbf251ca298d1de9124a9875 commit 0a94608f0f7de9b1135ffea3546afe68eafef57f commit 84900aeecefb281964c0ba23111be4809477124e commit cb50813998b5aed924323b1b46471e8c60b26692 commit 1e866f1fe528bc0158cdcd589053753032bdb52c commit 3fb0fdd7758d3b850db82899f532dc71f6909c02 commit 43195162fbf54b2cc35efe295d2ed072d2bd4048 commit a0d10c437c1c9859d24a16b90abf85120603b4ff commit a5e4a53818ad585416a214b894fdf568443d5293 commit a91d1a17cd341548fd9535e33c331a2756acdfae commit 17cd10a44a8962860ff4ba351b2a290e752dbbde commit f5ba14043621f4afdf3ad5f92ee2d8dbebbe4340 commit cc79950bf0904f58e651747c17987270f1931c29 commit 8955ff11f56e1596e9f80ff6fa8c48e53047654c commit 806b52287a96bf5812a6be008d24add3f18952cc commit d5c6909e74606870bb59b962200cf75eb25d6d0b commit 3cffeffe051a961417bc26f2053bced4cff83119 commit 41529d79ce1655bd7463c01d9813d0abb6fb08a4 commit 5439c41a80c00e993d18d1cd4407a6a82b35d963 commit ee7b62e127c8cc6db24f83e5e116357649f6e41f commit cc35e75273fcf4fb4f12f9d8fd979be7aa808041 commit e850f6b13a85b451411bb74a526bc08706129e8c commit b7be3ae759160aa3355ebeb0583f67fb9bda4dae commit 4fa05a67b558d2cb3acd2bb299b91220d405ca5e commit 7d09c7606346db9a48b62b4e02454a6b8f323043 commit ca0367ca5d9216644b41f86348d6661f8d9e32d8 commit 53c26181950ddc3c8ace3c0939c89e9c4d8deeb9 commit c96cfaf8fc02d4bb70727dfa7ce7841a3cff9be2 commit 60693e3a38903e39e4fac0a9849b698fc36228bd commit 891ce1c9623f36194587d02774ac3d8c30c3ca72 commit 3890f749c590a5a33f0034362be3304b69ae6d65 commit 6f2c8d5f16594a13295d153245e0bb8166db7ac9 commit 29a249d72d31cde3cd24d43354b40019efdb48b1 commit c9eb2d427c1c428e4f4e29f1e635b9a83236c015 commit 868941b14441282ba08761b770fc6cad69d5bdb7 commit c83dee9b639469b6563a281f39deb99311f16bc4 commit 0b15205c7325dc20b7da0068307670d222d66949 commit f6a3f66063ca39e7ee5fcee59e889c5ec4de9dc0 commit 75510fac07cdde23c9217c8299b6cd64c689fb2b commit e4b1edf48fa37cf4f5ca403e384731fe28d13691 commit 604d3a3f0dca0ef0ab0322f5e7af8c70c5ddb6d4 commit 748262eb400e809aa13e3485f4983c3db3d0ebb3 commit 49062ee374f7a47443dac7e255bd419861de5b43 commit 4c33e5179ff1a09cdfba38fa4fd260ae6735d3bb commit 912db6a58738e8be502838eb6a88f207ba356cd7 commit 98a90f1f0fdd112b85b16ef6ceee69f319ab9311 commit 958afce98c2c86732483458c03540d3c6ef45254 commit 3876a8b5e241081b2a519f848a65c00d8e6cd124 commit 606ee059f85a9aabb0242cbc72852572a3c40432 commit 133dc89c640f965c2736e70d8dec0699d763850d commit 2d04559e0660cf503d4e46cfbd7421d0b6156aa1 commit 50fe04d46aab77cf8fc3d48fbc38d872d181a849 commit f746556aa9724d740c44861db0ac005ae50e1332 commit 75a9ad8c1b7960794c16182fd90852918ecdc0a6 commit 9c913f38032e873758d1b13fce720a0c2cbbfcb7 commit 5877b7ddbc2502a7ddbc07970cf5c15972c22de4 commit a53bc32182d7a2a934ca994239396fba21161c8e commit 4528c18605654bea022d294c9ba2e93600d05a94 commit ce4b4657ff18925c315855aa290e93c5fa652d96 commit 5df79aeb6e0890d6f5fd6e12c7ad238a1617b210 commit 86bd6706c404ea703c11071d8b600d46bb98873c commit dc2b9c70ebca8e5661d33a15ed2b99d4510e90be commit 40835624efcde7f984cb859035b95b5a526d1a9f commit fb3e8ed0438347c63650850c011c99deb59d7e62 commit 615dc75fa6a7fc6cf029b01cdfc9d4b78919e71c commit 8a9899c95d1cd709d441960ca325c6c8184978bb commit 0bf95a1ebd48866ad1438454061782d4d47765f7 commit 044b5cb9e8bfe4f006546fd98148e95489a6e803 commit aec4706b0e70e0cab2d0650b63cf2ddc1b154352 commit c8a58ce18ca36b62749e326411176554462a5e2c commit 8b076fa7c5befd1d3e1d892ae466f5334e4c6c99 commit 25f7cde8bad9fe5943851d3d602e9fddb7977961 commit 5d945cbcd4b16a29d6470a80dfb19738f9a4319f commit cb6b81b21bd9cf09d72b7fe711be1b55001eb166 commit 417c1c1963549e9a48b83ada59d90258e38c6594 commit e8f90717ed3b58e81c480b3aa38e641c0da5a456 commit 2c9e8c01109fb65a63b6830adeb5d7c79ccf26d6 commit 473683a03495a5ed9c75a02c7497f32d6cf92c7a commit e6c64182ed946f1cb65799de9ee75f8bcc42b2c6 commit 074293dd9f61f11898f1f6e01f1560fd4c474025 commit a983d263186996002ecafc72f9a0dc5a3a2bfd6f commit 44b0c964201e1e2fbfcdab4472f9260048befbaa commit 557f9100c74cfa033488563240f567466613cefa commit d3e19f76121178420c3efc9688adfd5a448996e0 commit 4f5a17b221cc48d66cce13fe1531ca8fc99078b9 commit 1cccdfe21eb6b8dd4371378b4b61223eb37f1ef7 commit 54c3e9493cd502d63ff3643fa70b5f98b3201846 commit 869618c3440227f848ff9ac55aa64d523a60476e commit fbcc38811fcb47335899a3776b4fd5670db4e228 commit 4686177f7d2140cdd9d031702c2b53ac4c89340a commit 7b5b0d196c2e6cad87cb1e3ce285c7885f2bd796 commit 660f46e16c4b8a34978012a9f10a32a16db3e98f commit f3cd57e499e6904b7e356d11bd33d617341b3f24 commit 869b10ac8d2300327f554d83f4dbab041bf27d49 commit 4d37fd51b4440cf6a02942c0a169ee18a902fb5b commit c19a23fadd279f433424b4d6436fe4ab0020e20c commit 37edc99979b717312e60cf3463ab756f5a3d6de6 commit f4b4e41a2e05270cd90c5817ab514ace95555874 commit 26749aa8d1261bd6f2db9d019276d4277dde7df8 commit 041a11095abdd52b38f1ea1355357ecd2b66c0e2 commit af14e7c2fc9b60af70b410a7dace116eaa5e4e65 commit 465576ca481caa9cf18550652efdc6b103701c68 commit f7bacd97af853a9bba9bb8d1baa12f997e60122f commit 792a0cdde34d417bc2c8266d8015c5fd58d44a0d commit 8813381a62e1f1703f8fbeccc5fa4fcc988be882 commit ccc4200cfb2518fea042b16f090962b07314439b commit 25e751642a38204da189e0e239055702caeb461c commit 34a65beccdea16a12d862e94d004ccf00de8cb3b commit de0246ee9fc95f1072a0d26ec4025a3545f159b8 commit 25dfc8fab47fb0d7231154e07e20b5fc0221f96e commit 326f0672153e0ff5b19f0ff9d6b5f75a64a9c2b5 commit 42c7de9622b2ec64f7c15c336b75f8933ea7545c commit 2207efdd8388bd300a0051b1775705d890abd306 commit 44998fbdcdc39253cb10293c3c27dabc040ad7e8 commit 34a1b0f90e33b00b431d6e8636b787111c6c29d5 commit 8f5bb69dd453666ff949079443ebce24381e163c commit 4cef2269318cdf5beb70c257f7aaba267f2157ae commit 0339530d8879cbd560cd3d3de5138dc797744274 commit 5b4ee98713c7b42e270835fea08c3b6977b48e7e commit a4f8f294fe99a678ce0a50d649732440c41742b7 commit 4e14e0fc9f0e47d9d3d39b6f92724f2038ee6e25 commit f7907f6db81ca08f4f8bd9245b8fecd49bc82f6e commit 197485c695430ab03d9f4a96aab4d4f76787f7c9 commit 352b25a770712a954b1def1b8c6429b0825ee0b3 commit 9a1dadb6d33173427b6f6c89ab1ddd0eca636afb commit 39a6f3fe98ff03baab364acfec69a6f9803ce22c commit ca0273ab447853c014983951e2183991f8dbc7b9 commit 1a3408259bfd5a383b3c7aa7c309c9fb81e35ce0 commit ddd0fa1f47edd794736e70d165341a5c4ff78e47 commit 5085e0361f5a3675fc0d0919f7b69aded453ceb7 commit 77299956e8867a4cc19c5fd41b797c5152aad1dd commit 1c05d9e53d2cfad1f99d9087a8ad24da4ebc0905 commit 0593ad215359d51514c1e6c81ce28ea598efed6b commit 74097f9fd2f5ebdae04fcba59da345386415cbf3 commit 7acc487ab57e076c823b2b7559aa9e3997962ca2 commit bac4b41d917a1d999308bb1e779f8c3b39c19f67 commit c3b3f9ba25e6cbe59673505fbc5fff6c4cda0ef7 commit 3c3abac60117cfd09460980d9a14c253b37f7b00 commit 86e4863e67a9bd1e257f162f3d740ebb61206c91 commit 9dd4545f65679042273a93054ec3bb665ecf7366 commit 44abdd1646e1fbfb781972c0bffc90b4eb3e87b3 commit 34a255e67615995f729254307a0581c143e03752 commit 3616d49da5dab635c4bb0eeb183b61df72cd0757 commit 4c5aa594928f97593502a66d5a9075f5f5dd064b commit 8de297dc046c180651c0500f8611663ae1c3828a commit 44584b417a698bfaac0c2577e7cc4015ea7359ce commit 2ce0b2186c057a54a4d980b296bd1659d0091716 commit 319568d75f5f91cd4f362b26e65af2a4437c64bf commit a7cefb0b40dcfdafedc54a3ba659327d0336956d commit eb54e014367e1700fa5b94e4c788520081a70661 commit 4a21ab548a7ac19b15aba9aa8df39972ed82f4ad commit f46e3f28f89b893685ec9204405677dac410d8ad commit 72bb503097e79113503dc6d1d49c4063ef97970a commit ee4a26b4ea029aeed749c6560ed9eba224337b04 commit a4f1b04216023ff0f4cd89328b59ee6890248130 commit 6a7379f196230cfa35335ec627e0c0e08da6a8b8 commit 05674cc9ea97079ad7c819628e3e56b046c2f497 commit bdf4473394deffc94c16c0502e73f2daabbdc1d0 commit 40b31e5355ba8c4f7e58f1c458bbe46763dca541 commit cb849b4dc73d414149fea96330cdf96a82919fc9 commit 1c5a2fa97b91d37375f4fc8aeb37c9456c93c828 commit 0d60f2b47d8312d6a88454a373990579624edbde commit 5ade1b951dec63a81b23c2ff75c5b4c191977620 commit b5e924bd7cce823e604f9b7834fac846a910331c commit 1f5dcb7365e4e0a8a6fca44352218ccc6f41a8b9 commit 81f776b670a0eb17bf9cfbfd2df32f66a34bc453 commit 4074f96d0f2db2fcbd8e223aebe60ca445b8aeae commit e216431b63aef8b7d9cf6e59aea39582d48b1808 commit 6290ba4c1656ce2374996b2ed11c3997ebbc4af5 commit 493af96d61b1361a44d016057e0fc6e5d4c92fc7 commit ffccfdbab1056954fd400d2864a1c1b38915c143 commit 3facca7489be2d42c6256350dae72c342a47d7e5 commit b1babe8623f91a71a5acc34eb323c718e0413b74 commit c13423c63f73ee2f9807fdb2a3a7e647421a8114 commit d58715704c5c7d82d7194540780fb335ab337da0 commit 1b54a0121dba12af268fb75c413feabdb9f573d4 commit 7786fb366e598e984ee9307616b0c72979bd191c commit 412dfcf34e0695fa1714ad422b2a5d0ed1406437 commit 0407b33fadcd7a5d31ba3c473cef95b2b418d8c4 commit 92fba5d3c8f5b757c4e3fdc89afe76a8f6c4da68 commit 168c02994399f2714bc6c73f85b7ce4d827f97aa commit acbe9ecfb7fb14db868ddbeda8f43e623026316b commit 3517e6b6fee05b6259ca21741cbe5d7bf68aa672 commit 1c6aab75ece7c1d450e4561cb2263403eeb7ae2f commit 79c453af55d9f1e85b906211ea4051364d28dcb4 commit 9a4514fbffda6083d9f7fba4882142686783cfe4 commit 7bcf89eed48f3fba8d0e2c19236e7dc547b6e037 commit 889fcbe949bdd8470931a90b91f273ca18c510c1 commit 95983aea80038539ebc70e41e73e9bb4eabd1a92 commit 32dd9236698bcd2ffdb69954b167a851fd50182a commit a6fd8f936402c3bcc5ac6aed9cca8e73b5ca08f7 commit 1b255f1ccc883256e23db279ea164273ea0f7462 commit dfc4005f8c172eea359f9db08c3b2b0ff0153699 commit ee8b1ef9a6b089abf7a9c7d094b6e93fa05f15b9 commit 2bc7ea71a73747a77e7f83bc085b0d2393235410 commit aa316247c726d96f0bc205413c54ab49622ca737 commit 8585732baa40455fbae9575d0c8316f4b0cf68f5 commit 1f83db6be37c53f6d395a41ee2602e3280ee60c2 commit 79b2c54f19110235041d8f1250e3c3694047a902 commit 4959e609de1ed4199f33124a88a4c9ab95f5cd9a commit 5640cb8921c9aff1270557482237e06af00c388b commit 8b3120dfc192a4c61f73a0798755713ba2d3eb8a commit 3f5a3881f1e26aa5e3ae34e34e439edce291ef5a commit fcac1ac7f1e3fb877aad51c134ff2776bd24f9d6 commit ed63b7cf2d6ebc01a765be31630c3e4a64f7f095 commit 84e2fd649482435c3e12d9099784976ce8bea1e2 commit 203dc777865621b0c7f8f5b19ec18e572730278c commit 05381583a1d0c38cd2c4907ee93ec624250b8912 commit 980e09e8b74c26baa32f0d65d272ecb1401606c9 commit afb185008d40930895a7f7465a9661afeac0b84b commit e3b2bbb33e26d0a0327f878782632ec35cf96a72 commit 9ced2e492ba9436524a2beed27df730042cbcc3e commit fbad6c418e1e63a29c83e8b56a3636915406a9b7 commit 292956cfd9d38835f95021445525b35502837ff7 commit 64f857b5479a7ce2eaa56bef5f459da5542ad90d commit 931fa55b2fac18f226622a95e42bc968bb852cd8 commit 4557489e0370ac0e9f1f5f100f300e9278be0733 commit 1422ca01be6a816ec5a445a6fdce00342adcc5f8 commit 1be3188a6dda544dd4d78503eba5f5a77462b348 commit 66bd94debe4aca171bd0220de7af3feee6542d8a commit e3b0079be8f0a2ccb533f7e38757b27ab6b6018c commit 06ac561fb0edf868f7b292fb4a3c8ffbbb1e14bb commit f9af3c16bfe19d145cf0588afa06d7f1070cbe2d commit 3d2af401cf851be0bf2d4d89af6f120819b786a7 commit 0dc204bc3f199de0a0924f3d5f7c26295e5c012e commit b2065fb21d9a789b14f737ea90facedabadeb8a4 commit 53bd83dfff8618d4a1affa171288b895add40476 commit 7c8e4a257246399c4f1ff43a06fc53ec53423754 commit 2182cb7029e9c5cc4b63d1c5682f62ebb65cc952 commit 674b9e08a02903fef75beadca0df490348d8f560 commit e22ec18750be01298763b10f7056ec8edfbf064f commit 6fdd2077ec03f4b34d127a1713ca19248539d6e0 commit 736f7308d3e6201322142d98abe4e9af33a429f7 commit 4ac77cce84a4afa3b76fe7c763aa3e754cdac422 commit cbe93a234bcce489be319e678dbf167b7a5f915a commit 1c0a90364859c17d57a7f08d6209b73e7e1142cd commit 47231d5e396a94e869b877bb1a0dcd526d91ac6e commit 0da0def7705dff7ee938662ea06f90770cb6f9fc commit ed67f7292b99f5d3876fa02dd51a43f46986c61c commit 1f3dfde4fba4f4b7822c389b9c994089a4ab588b commit e1c42213f3f9b24200d4b60da806303dbeae5a4d commit 1ff186ff32997049a6d263031819517eab4e93aa commit c10100a416c16b598bf5155e759307b34dac0d7d commit dcfe584b00f1d6dcbeeb769b939f53a3c4f04143 commit b834fc94c102eef751ff741aa0d9b814d0a81af1 commit a16161a869d5633d7d9a825a2546b68953e3a6f0 commit 492af34c9f67ef864319d0db930c8518a04b1937 commit 2605e60c82604508f60dbf427b82cd48154d88ee commit 7e8a3ca972adfc89609718c931577a86c494967b commit 64f991590ff4410041a70ee7ec2db079bc953929 commit 541846502f4fe826cd7c16e4784695ac90736585 commit e05d5b9c5bbea80313d8f58c3a80a18839b25480 commit e2b542100719a93f8cdf6d90185410d38a57a4c1 commit f00654007fe1c154dafbdc1f5953c132e8c27c38 commit a782e866497217f22c5d9014cbb7be8549151376 commit b44f2fd87919b5ae6e1756d4c7ba2cbba22238e1 commit 54d91b55c7f3f9f2c86e0b6be4501433b32ddc89 commit c20ee5749a3f688d9bab83a3b09b75587153ff13 commit 798cd57cd5f871452461746032cf6ee50b0fd69a commit f0a892f599c46af673e47418c47c15e69a7b67f4 commit 6614a3c3164a5df2b54abb0b3559f51041cf705b commit a9cf69d0e7f2051cca1c08ed9b34fe79da951ee9 commit 668c3c237f5ddc2889879b08f26d2374231f3287 commit 1d239c1eb873c7d6c6cbc80d68330c939fd86136 commit 9cae5b3189eb9cd12a9c3f6e8afda2d81958640b commit 232d150fa15606e96c0e01e5c7a2d4e03f621787 commit db100e28fdf026a1fc10657c5170bb1e65663805 commit 180abeb2c5032704787151135b6a38c6b71295a6 commit e5a95c83ed1492c0f442b448b20c90c8faaf702b commit 59eda6ce824e95b98c45628fe6c0adb9130c6df2 commit 2826d447fbd60e6a05e53d5f918bceb8c04e315c commit 9d50bff40e3e366886ec37299fc317edf84be0c9 commit cf4b7387c0a842d64bdd7c353e6d3298174a7740 commit df4aaf015775221dde8a51ee09edb919981f091e commit 2939deac1fa220bc82b89235f146df1d9b52e876 commit 37bc31f0e7da4fbad4664e64d906ae7b9009e550 commit efcc970605a4e365151db247361bb013f5c84922 commit 0ee7cc803ae52b60f268fdf2eba79b9fc1162747 commit 968d40986f004b463f057fce612996556b753c9e commit 5822b8acb869caac72c3ddf149d463177aa28fd4 commit 41ead3e0cdc03d64b7da2dcb1fd70ebb7164228b commit c83b9d60299317a2c15550dd506c864cd01a3e5e commit f59966779deac642541c3f7d772a3bf5972727ed commit aec208eecfb833b05597bbc28696fb1ab62f732c commit 1ac354beecfd58e769fb5373d6b2ac87bce9e1e4 commit 4a0a2cf4c03ba49a4c2596c49c7daa719917d509 commit b2f6c73561fbccee404b441a5c2d0b4fefaae817 commit 0a83bb35d8a6ff3d18c2772afe616780c23293a6 commit 616699d77b3813c24bf46090e722da227bd56cbf commit 08ebadfcd8c8c1cc7a14a7581db8331147b85fbb commit 8df436d5ccdf7f441becb8e8156c8ca9c4276e8c commit fb1a140b7bd19c474a41fb2df8a845e8eba328fa commit 64234eabb8f38ac2bf77dd23140887d81acaabe2 commit 1ff77beac87682c22f99e5cf32614909c65b4a36 commit 89390c4982b77c159e3b8a0be4a04552ef0971a0 commit 4c3861f587400db00801810eb8034c7b480e21dd commit 67c79599eea167dd5e08314b8c26f2dfa717753a commit 0af167f92838f34e594e49a6c8cbaca45548e030 commit 2de09ce41f484cbcc65e518905dae73da67ad35c commit 0cd34ce82b0a9ce503d35a51bff47ba3b6715557 commit 9bd110ab06e93fd01938dedd8b6015940418f0fb commit 9c580e8f6cd6524d4e2c3490c440110526f7ddd6 commit 615fc50207fa27453ba7f5fa1abd60a01a498136 commit 0591183699fceeafb4c4141072d47775de83ecfb commit 86678d46272021c88638881c63d427dd10d665d6 commit dd07556324ece81f0d2be756508903d53e331e9e commit 6396679a1f2db0c63721b841f1a5617d6282a4b1 commit 89b008222c2bf21e50219725caed31590edfd9d1 commit f173c7405224002fc32b64cf1679c4d888c493eb commit 2051160546826cf312f15bde534038582b90f844 commit 764a1e6e0272f377f145fc84b547d61e12724233 commit 84ef99c728079dfd21d6bc70b4c3e4af20602b3c commit f0068dd0effd5972046b69b23f99c43251e82d0e commit b2a93490201300a749ad261b5c5d05cb50179c44 commit 30456ffa65469d1d2e5e1da05017e6728d24c11c commit 9f5171ce733a694bd0211952687704c7a5bf32b9 commit 8da536d5e114ad1da6028c7505f048ded2e421c6 commit 352e683b72e79dbd46cbde528eb91e228e88267a commit b7ffeb4a1b5bce1a7495636d21f1704bd7ff01d3 commit 4e64b529c5b04e7944b41de554ee686ecab00744 commit c4c10a68e82b8a03df234ee744acabcc648df270 commit bea9a56afbc4b5a41ea579b8b0dc5e189b439504 commit cb9c7ab1b3ddc2702379dd9639df0c2230453c2e commit dc0a096bcc1d659ae93f836099c6b0312d2ccaaf commit 5afb76522a0af0513b6dc01f84128a73206b051b commit 541d54e40f1672dea6514ad64d54d61ed952648e commit acc96ae0d12783e9781428b17e34fd662a904f0a commit a6250bdb6c4677ee77d699b338e077b900f94c0c commit ad2feebd71ff80532dff75756d1103f056358614 commit 2bba782002c5dab6ca8d608b778b386fb912adff commit 36fa1cb56ac5189c78dacbbb14d452d0c44b86c0 commit 7ce2aa6d7fe121e243e1c8a8093911fecdf1c88e commit 0e66978ebeb44f96ff4d26b2a83dc88a2bf887a6 commit e16c2b8250262bc0bc531299e2c30641cee14221 commit dca452041552a5a5a6aab3ebda32565fad003eb4 commit 0f761f5768b842fe483141bc59db5b4d66bcaf07 commit f1f63cbb705dc38826369496c6fc12c1b8db1324 commit 1b586595df6d04c27088ef348b8202204ce26d45 commit 0a2d922a5618377cdf8fa476351362733ef55342 commit 4bac1c846eff8042dd59ddecd0a43f3b9de5fd23 commit b4ddb27d1dc7349fc882dbb7702bd2628fe27af6 commit ea8793f214ce1e4db205390c0241955f7ff6f383 commit c02895577b834a6148f6d9d0006a6f196511cc79 commit c8007d362c0150aef34323702e7fa996fa0cfd8d commit 8172cebac588c3c5e238d02be30914fbbc5b1234 commit 73c49a624a8db1ec38b138741203d9d7c76eedd7 commit cede849e9e2755084798236735d045298f9d9979 commit adcd15dc47dadfb176a14fa74af5b0cb0f659f2d commit 7e4a77de08f655e159e6355bdfbea73be71fab88 commit 8e78c7c4fe29f7ab8f87634c5f4dedc66107e66b commit e48e6a131d34de54ce6852149e4c97c2208f45cc commit 7d50b92d588d1e7bdcf38f523200b7b113b46c14 commit fa0bbd3be91dd46f4e56e5cf1fb6e8c2837c649c commit 5a0918b4cb90a90fc8d8bfd9b0f81efe6651951f commit e0df49b3045180fdd23dc27193344a767cf68fe1 commit 84435d1d912140958213beda37c708ec3072b5e1 commit 04fb918bf421b299feaee1006e82921d7d381f18 commit 5c1943820156e9a120faba320a72578578a69ab8 commit c7dafdfa90f708b6e4630abf824ba388a3947400 commit 373008bfc9cdb0f050258947fa5a095f0657e1bc commit d83a348b172dd7f9f10f049b3fd7e44cf4d2ed8a commit e98459c06e3d45c2229b097f7b8cdd412357fa2f commit dd49c07f3ab67e8d7ae7b8231b88a746c668b4e8 commit 19f7b8334484d6b610c8eb527c3f56cb42bc8bf1 commit 31ec699ac5d8d17c4f696888708bb6b2567dfcd4 commit c65c71ae85095f94aae32d86aa78811318bf6a90 commit 5544a7b5a07480192eb5fd3536462faed2c21528 commit ca01eba4e5b6b50144a62d7704763c41b68a0de9 commit 1af9add1f1512b10d9ce44ec7137612bc81ff069 commit bf7f7efbe051a59e9d0710cd26ea05f7ebc411a2 commit 385bf5a856c196d5997ce4111a23df7e1b679c17 commit fbe43dcd1aad7dbcee1cffdbe6c3e1d62c85f76a commit e42dfa66d59240afbdd8d4b47b87486db39504aa commit de8341ee3ce7316883e836a2c4e9bf01ab651e0f commit bbca24d0a3c11193bafb9e174f89f52a379006e3 commit 085292c3d78015412b752ee1ca4c7725fd2bf2fc commit cf36ae3e5802716617b9e4d902a31048240396b0 commit 8ae4be56dd0c2b851e7edc0f1d5cd441f88481c0 commit 2ae6ab9d82cdd0f7381639ee31e31de45519df4c commit b1fb6b87ed55ced458b322ea10cf0d0ab151e01b commit ea2aa97ca37a9044ade001aef71dbc06318e8d44 commit 54cd4cde7c1edb869603073167cabab0b760fff6 commit 43ef9db423bdce1df504d4d10e25092d427f04e3 commit 9d705d7741ae70764f3d6d87e67fad3b5c30ffd0 commit f5994da72ba124a3d0463672fdfbec073e3bb72f commit c351938350ab9b5e978dede2c321da43de7eb70c commit 06671734881af2bcf7f453661b5f8616e32bb3fc commit 2035590f3d40f227eac453d0c36b5eae85c1cf08 commit f461950fdc374a3ada5a63c669d997de4600dffe commit 16b3d851c0146123507fe864fdd97411ded51147 commit 233f56745be446b289edac2ba8184c09365c005e commit b75ef35bb57791a5d675699ed4a40c870d1da12f commit 220e979bd906015b74eb485e16464ee5abbd3c9b commit 6b04ce966a738ecdd9294c9593e48513c0dc90aa commit 8d905254162965c8e6be697d82c7dbf5d08f574d commit de2228c04150df8632ad22ee490de2ed579f64e8 commit 607f41768a1ef9c7721866b00fbdeeea5359bc07 commit 13393f65b77445d8b0f99c7b605cc9ccc936586f commit 868e8e5156a1f8d92ca83fdbac6fd52798650792 commit 6067c82c576af13a6b1c892b42ac4a189aced8ee commit a3f7c10a269d5b77dd5822ade822643ced3057f0 commit ad3b0b99113783f697579c7b09285916019865ea commit 2037769f995e45d3a368fb74983954b3ed8da178 commit 16c01544e30a4b4cf5f3eaacf7a4c19a3622b597 commit 4e3464badbeebb3528c457aefe91413f8a9070b6 commit 00047c3d967d7ef8adf8bac3c3579294a3bc0bb1 commit da1acbb12b33cbc651d8a7e956d254f1acc5034f commit 894c9c540f8315007a4752320e2399bc2e0c46b7 commit ee8086dbc1585d9f4020a19447388246a5cff5c8 commit 61251b2cffea8c1811bbd2dbef175b65f64aaa86 commit b8983d42524f10ac6bf35bbce6a7cc8e45f61e04 commit 064d491f73464f5c9cf56ac24f55118f6f4c54c2 commit 100d0ae82b5c240a4dc17486698e67bf116bd598 commit 58091b4958008ef69899e5404f8f031c36b35fbf commit e79a7417072265a85a36775e4e0f798154d39808 commit 4595a25443447b9542b2a5ee7961eb290e94b496 commit e5e6886f4d7e34b6539abddb591d515271caa634 commit 875c6d2711f6c97e58c52288b4231f3072711d61 commit 2c4e19f873f4a389c2a557a84909cf4b78d3525a commit 51fbbe8a3f8b9dd128fa98f6ea36058dfa3f36de commit 458ec0c8f35963626ccd51c3d50b752de5f1b9d4 commit 919bef7a106ade2bda73681bbc2f3678198f44fc commit 0211c2a0ea600e25db3044daaeff4fe41c3ed6d9 commit c8fea9273fd1be308668496badfcbd55183e0dd3 commit 47e04eed84bb07cc5b54462752a4bc7286ab8197 commit 507fd7c400032b126747a5ae8cca2816d73f009a commit d1b4a51a4ca8954f30cf4671b25c4f8637c45600 commit 3c93603d9568c7c4b20ff1712ddc60e997d78df7 commit 3e834a17a22cb8e9169c0b018d1a2df126977db3 commit 6783e6bbc2457dbed351fb0d2477aa6060a7d32b commit 4fd7f14b56b2e727dd66a62e217e57015da4e9fd commit 94a82c9e3dffb88182a4ed0464dc0266ad0d7b45 commit 595091c6ba35ba48c1f8186116bbbae2b208dce6 commit d0629cea1f97acc5e8d95ca2a42ddc72ed4ffa3b commit d7e7546886eebf626569e38ff06d0a67b8b82757 commit b023053592646b1da9477b0b598f2cdd5d3f89d8 commit 2640174f4a139502f603f7bedf3a7011db714e1d commit b97e914552c3fcea71ce03f899e285f2178ec38b commit 6ffc967c36b42f864955cb2c5e8b3fded0baa918 commit f5b9c1ffabce5f4acbeabd3a03fd57b3970a13fe commit d6f84bab48745ea68814d596eb476a9c11ce76ae commit 7b471c32e4cbfdd7a673b79321f6a26abecbf33b commit 910ab9eee0f61a243126d70e932e1301b5437583 commit 39c84b8e929dbd4f63be7e04bf1a2bcd92b44177 commit a54569b1f9721be11ca5b2c8a8bb3c652ebf576c commit a71f3950c803cb18080746aaa8b66af122f32841 commit c1dd5d29aceed251daf98cacd22817f38f76f94b commit bfe632f6d0a1371784dd9a11fa5a9aa2dbf53bf1 commit c7943bb324e503baeeba3df2bc5ca8a377111bfa commit 8409fe92d88c332923130149fe209d1c882b286e commit d91c411c744b55e860fbafc9a499f4f22d64c762 commit edca5a2c373db61efa959307c13ed9156b1c14d9 commit e1cab970574c001d83e59ca8388c474a57a1afb6 commit 672d6ca758651f0ec12cd0d59787067a5bde1c96 commit 151e0e0fdb4d6365305598af3b9072d44e896ef0 commit 992db92b07736ec98432a97b61c37dfe7bd06dd9 commit bbcbd63231cbd1405ff8e987870b02abc6a4d669 commit cbfac7fa491651c57926c99edeb7495c6c1aeac2 commit ae0448bc88b7827babda73edfe587ccc222baccc commit d832db12af4a057582011a590f60f32853680dd4 commit aac4cec1ec45d72bd03eaf3fd772c5a609f5ed26 commit e3d3fd1cea22ada5a06284d7bbb6cd5794d8545a commit 8f7115c1923cd11146525f1615beb29018001964 commit 63e37a79f7bd939314997e29c2f5a9f0ef184281 commit b6f25c3b94f2aadbf5cbef954db4073614943d74 commit 235fdbc32d559db21e580f85035c59372704f09e commit b34c1d538951e1c3a6d5e585e4a95e78d8733064 commit 2edb79a5fb303dff577d6a0c7d571c3bab1d1455 commit 0785691f5711a8f210bb15a5177c2999ebd3702e commit 08b812985996924c0ccf79d54a31fc9757c0a6ca commit aee5ae7c8492eaca2be20d202887c9c716ffc86f commit d654f60898d56ffda461ef4ffd7bbe15159feb8d commit 8787f6fab41380189865f5751c0f15b0c298b923 commit e839a756012b6cad7a4eeb67b0598ac3f349f863 commit 7c6fb61a400bf3218c6504cb2d48858f98822c9d commit 6c20490663553cd7e07d8de8af482012329ab9d6 commit 66f99628eb24409cb8feb5061f78283c8b65f820 commit df2c6e0c95ca22db5d6bea7e8169841c95426f8d commit 36de13fdb04abef3ee03ade5129ab146de63983b commit 8c5708d3da37b8c7c3c22c7e945b9a76a7c9539b commit 86875d558b91cb46f43be112799c06ecce60ec1e commit 42ff33e63b83d0fd40985ccbb50ff54e320a3bd5 commit 58d97c99c99f4559072a5410ec0135271e24e95d commit 269aad0919c7aedffc18dcf46393a1bec457af0a commit f9c182056b8ff7402a46c39c34d5c91133fdf9a4 commit 18aefea7fc71759a2405bc65eae057ffda3c429c commit af2f2a256e048f1b83605eaae49948e4a6811ac1 commit ea45405d704e20826a899380c19ec163336f42ab commit 82c4018479fba63db8db7c7fbfd9e4afba95603a commit 0b15b1ec8b74bd5c9a4e4cbadab82c0657832799 commit 6acc6196a7320b3d2a391925c4c884fc07f0b3df commit 1bb8df66920a5549db2be92c23ab81fd06992e5d commit ceb756004a30239c3a50dc237313e234b667077e commit 3601d620f22e37740cf73f8278eabf9f2aa19eb7 commit d978c51f8d1f4314c84cf50291156862a4c34fc8 commit c4be0ac987f21e12e7ad23bc480e826d8c30de20 commit a3fef74b1d48d89d4d911fcd7c2630d0eb6a0012 commit 37934d4118e22bceb80141804391975078f31734 commit 21485d3da659b66c37d99071623af83ee1c6733d commit 41012d715d5d7b9751ae84b8fb255e404ac9c5d0 commit dc1d85cb790f2091eea074cee24a704b2d6c4a06 commit e3163bc8ffdfdb405e10530b140135b2ee487f89 commit a8671493d2074950553da3cf07d1be43185ef6c6 commit 0af4ed0c329ebb4cef95fda4fcdbfcdea0255442 commit 87d9862b25483242a30bf45420cd8e7e1872a4be commit 25100377a21ad40dae8be5a3ed361b87acec1479 commit 5763d7f29652f94bdfc9dab87888f79ba6bb6c34 commit a7c48a0ab87ae52c087d663e83e56b8225ac4cce commit 5415bec18c69d3aaa7d4e3b170c8b8c6bb24a823 commit d8a79c03054911c375a2252627a429c9bc4615b6 commit 5ce8f7444f8fbb5adee644590c0e4e1890ab004c commit d119888b09bd567e07c6b93a07f175df88857e02 commit 37a0bad677a76e51c5e9e53f5d9f8f4f3e77912f commit 88d4cea24049de0fa073462b24ab471ecd685d8a commit 16c6077f2eea3c8321782d2fb0a6790532cd8c03 commit b261509952bc19d1012cf732f853659be6ebc61e commit cb0eca01ad9756e853efec3301203c2b5b45aa9f commit 29956d0fded036a570bd8e7d4ea4b1a1730307d2 commit 52bb21499cf54fa65b56d97cd0d68579c90207dd commit 65fbfb02c2734cacffec5e3f492e1b4f1dabcf98 commit 056fb8cfbe213f6eb5e987a806583986a4ae8328 commit 72002056f771a025a2e6b4578aeb538799cb9ba2 commit 20c6168b3c8aadef7d2853c925d99eb546bd5e1c commit dcc2527df918edfe297c5074ccc1f05eae361ca6 commit f528fa3989c53d4cf2ee22d306eb1a96ed0010e6 commit 29a1c581a5d873046302aa22c4a05124c5faefab commit 193b6a1934cc2e258e463e94fe3e94382c0bf458 commit dd4bc65c5bdf17ce8e74f91bca5e41b368b0e32b commit 88bab90f7a8aef3732a57cf33bf0ae121de8c7af commit abbc7a3dafb91b9d4ec56b70ec9a7520f8e13334 commit faed5d0182480556cddb8343d9bad968387848f4 commit f525ed19437d376736bed64ee7bc4afee82f2ba9 commit 387df878fdcf63ce497109c4e1eb805a7df9043f commit 3b38b65ed076fa93f1b0d5fb97c55a9bf692cc49 commit da73a94fa282f78d485bd0aab36c8ac15b6f792c commit 6dd1de12e1243f2013e4fabf31e99e63b1a860d0 commit 051ad2788d35ca07aec8402542e5d38429f2426a commit cc62d98bd56d45de4531844ca23913a15136c05b commit 6ef7d362123ecb5bf6d163bb9c7fd6ba2d8c968c commit 7516777434570833469252c16e5fd7d8f73c45be commit 3c480531a4b1652561fd16824c16be8b8a3ba8f1 commit b9caeadf5cb89566412b94b14a1583419aeba45e commit a9b4700279f21c5c1a3425630dea86d338ab13b2 commit 91ef6cfd30bf75763f41e7a4bc119883fe190606 commit 664883ddde67971d59764f2dda855183ecf8bc46 commit 783d446749c09eb34178cb8600a9a93d3b99e35d commit b6d1c39bc637fe4879d610e6687b1d4224c4b2fb commit dd37fba90e72a48998d9f0eb5497088ea2b02ad1 commit ec669ef2e2cf277f3e73d842bb3bda1c3ea2ea73 commit 85096a73f4dc223b5848e41ce40afc5ee913079e commit 1ec5c0e1289c70c8e7dd93a988d945ad5bc3f4b1 commit 391ce355e72bd5713afc85ec5acc955294499dcf commit 8dd2e87dbd49ba0b6afc1dd22a5930d797cf423f commit a28acf7091babf4248b042326946cee7736f796a commit 2d3907c152611a0d65efe54b93972320dcce1565 commit b3e45b18e5c40f1f7e5f6383953343f96f963b13 commit 11e38360cc15e2d5995449d19030b13a67d73cb3 commit 3b7329cf5a767c1be38352d43066012e220ad43c commit 7738be973fc4e2ba22154fafd3a5d7b9666f9abf commit 83ca5fb40e758e0a0257bf4e3a1148dd52c6d0f2 commit a3aded135e84a581ba567c30ecddff47c8b6cfcf commit 541540b9045c2665d6736a77c776ac81d4225eec commit 153a97b4e3de713c05b6bd42d734a2f9eeaf7968 commit 91462afa42e6b8c5a148a44482c893f1800c513d commit 6643b3836f3908c4f77883b2fae72451e85cf3ca commit af81a9201e0112e9c4ca7258e32cd28baf19f31a commit 2f3f958602721c7915ddb1f2a0e8dc5031bc0151 commit 90df15124526176ff03c246362c196a047c8a39a commit bcecb6524881c54ded92f14a6cf2406d5c439637 commit c1c3f41ffb1bd262e40d68938af68c6ab53a41f8 commit b33139ee15352043123b81b32ca1a6a84340eb5d commit 04fa38cce6e02be4362cd889780d58ec275c4d26 commit 0fd85e89b5bf18447e56099a010ee5be5dc9f2b0 commit 414208e48963fdb136240d7f59c15e627832d288 Omitted-fix: 14773bfa70e6 ("mm: shrinkers: fix double kfree on shrinker name") Omitted-fix: 20529e260ff2 ("Revert "drm/amdgpu: fix start calculation in amdgpu_vram_mgr_new"") Omitted-fix: 3024d95a4c52 ("bpf: Partially revert flexible-array member replacement") Omitted-fix: 3915f8bddefd ("drm: xlnx: add <linux/io.h> for readl/writel") Omitted-fix: 395d10ae4d29 ("drm/xlnx: Fix build failure due to missing include") Omitted-fix: 3f61631d47f1 ("take care to handle NULL ->proc_lseek()") Omitted-fix: 5e6723ef3fda ("drm/lcdif: Consistently use plain timings") Omitted-fix: 71c627c0a87a ("drm/lcdif: Clean up debug prints and comments") Omitted-fix: d395fb1999ab ("Revert "drm/amdgpu: move internal vram_mgr function into the C file"") Omitted-fix: ea19684afb54 ("drm/i915/display: consider DG2_RC_CCS_CC when migrating buffers") Omitted-fix: f423fa1bc9fe ("drm/i915/gvt: Add missing vfio_unregister_group_dev() call") Omitted-fix: fcfd3e5fb2f0 ("drm/lcdif: Clean up headers") Signed-off-by: Karol Herbst <kherbst@redhat.com>
2022-11-02 15:48:10 +00:00
* Write a value to the iosys_map considering its layout is described by a C
* struct starting at @struct_offset__. The field offset and size is calculated
* and the @val__ is written. If the field access would incur in un-aligned
* access, then either iosys_map_memcpy_to() needs to be used or the
* architecture must support it. Refer to iosys_map_rd_field() for expected
* usage and memory layout.
iosys-map: Add a few more helpers Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2043115 Upstream Status: v5.18-rc1 commit e62f25e8b3cdd29224c27938addba817aedd4b54 Author: Lucas De Marchi <lucas.demarchi@intel.com> AuthorDate: Wed Feb 16 09:41:33 2022 -0800 Commit: Lucas De Marchi <lucas.demarchi@intel.com> CommitDate: Sat Feb 19 19:23:53 2022 -0800 First the simplest ones: - iosys_map_memset(): when abstracting system and I/O memory, just like the memcpy() use case, memset() also has dedicated functions to be called for using IO memory. - iosys_map_memcpy_from(): we may need to copy data from I/O memory, not only to. In certain situations it's useful to be able to read or write to an offset that is calculated by having the memory layout given by a struct declaration. Usually we are going to read/write a u8, u16, u32 or u64. As a pre-requisite for the implementation, add iosys_map_memcpy_from() to be the equivalent of iosys_map_memcpy_to(), but in the other direction. Then add 2 pairs of macros: - iosys_map_rd() / iosys_map_wr() - iosys_map_rd_field() / iosys_map_wr_field() The first pair takes the C-type and offset to read/write. The second pair uses a struct describing the layout of the mapping in order to calculate the offset and size being read/written. We could use readb, readw, readl, readq and the write* counterparts, however due to alignment issues this may not work on all architectures. If alignment needs to be checked to call the right function, it's not possible to decide at compile-time which function to call: so just leave the decision to the memcpy function that will do exactly that. Finally, in order to use the above macros with a map derived from another, add another initializer: IOSYS_MAP_INIT_OFFSET(). v2: - Rework IOSYS_MAP_INIT_OFFSET() so it doesn't rely on aliasing rules within the union - Add offset to both iosys_map_rd_field() and iosys_map_wr_field() to allow the struct itself to be at an offset from the mapping - Add documentation to iosys_map_rd_field() with example and expected memory layout v3: - Drop kernel.h include as it's not needed anymore Cc: Sumit Semwal <sumit.semwal@linaro.org> Cc: Christian König <christian.koenig@amd.com> Cc: Thomas Zimmermann <tzimmermann@suse.de> Cc: Mauro Carvalho Chehab <mchehab@kernel.org> Cc: dri-devel@lists.freedesktop.org Cc: linux-kernel@vger.kernel.org Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com> Reviewed-by: Mauro Carvalho Chehab <mchehab@kernel.org> Reviewed-by: Matt Atwood <matthew.s.atwood@intel.com> Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de> Link: https://patchwork.freedesktop.org/patch/msgid/20220216174147.3073235-3-lucas.demarchi@intel.com Signed-off-by: Karol Herbst <kherbst@redhat.com>
2022-03-29 14:21:07 +00:00
*/
#define iosys_map_wr_field(map__, struct_offset__, struct_type__, field__, val__) ({ \
struct_type__ *s; \
iosys_map_wr(map__, struct_offset__ + offsetof(struct_type__, field__), \
typeof(s->field__), val__); \
})
dma-buf-map: Rename to iosys-map Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2043115 Upstream Status: v5.18-rc1 Conflicts: drivers/gpu/drm/etnaviv/etnaviv_drv.h drivers/gpu/drm/msm/msm_drv.h drivers/media/common/videobuf2/videobuf2-dma-contig.c commit 7938f4218168ae9fc4bdddb15976f9ebbae41999 Author: Lucas De Marchi <lucas.demarchi@intel.com> AuthorDate: Fri Feb 4 09:05:41 2022 -0800 Commit: Lucas De Marchi <lucas.demarchi@intel.com> CommitDate: Mon Feb 7 16:35:35 2022 -0800 Rename struct dma_buf_map to struct iosys_map and corresponding APIs. Over time dma-buf-map grew up to more functionality than the one used by dma-buf: in fact it's just a shim layer to abstract system memory, that can be accessed via regular load and store, from IO memory that needs to be acessed via arch helpers. The idea is to extend this API so it can fulfill other needs, internal to a single driver. Example: in the i915 driver it's desired to share the implementation for integrated graphics, which uses mostly system memory, with discrete graphics, which may need to access IO memory. The conversion was mostly done with the following semantic patch: @r1@ @@ - struct dma_buf_map + struct iosys_map @r2@ @@ ( - DMA_BUF_MAP_INIT_VADDR + IOSYS_MAP_INIT_VADDR | - dma_buf_map_set_vaddr + iosys_map_set_vaddr | - dma_buf_map_set_vaddr_iomem + iosys_map_set_vaddr_iomem | - dma_buf_map_is_equal + iosys_map_is_equal | - dma_buf_map_is_null + iosys_map_is_null | - dma_buf_map_is_set + iosys_map_is_set | - dma_buf_map_clear + iosys_map_clear | - dma_buf_map_memcpy_to + iosys_map_memcpy_to | - dma_buf_map_incr + iosys_map_incr ) @@ @@ - #include <linux/dma-buf-map.h> + #include <linux/iosys-map.h> Then some files had their includes adjusted and some comments were update to remove mentions to dma-buf-map. Since this is not specific to dma-buf anymore, move the documentation to the "Bus-Independent Device Accesses" section. v2: - Squash patches v3: - Fix wrong removal of dma-buf.h from MAINTAINERS - Move documentation from dma-buf.rst to device-io.rst v4: - Change documentation title and level Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com> Acked-by: Christian König <christian.koenig@amd.com> Acked-by: Sumit Semwal <sumit.semwal@linaro.org> Acked-by: Thomas Zimmermann <tzimmermann@suse.de> Link: https://patchwork.freedesktop.org/patch/msgid/20220204170541.829227-1-lucas.demarchi@intel.com Signed-off-by: Karol Herbst <kherbst@redhat.com>
2022-03-29 14:15:44 +00:00
#endif /* __IOSYS_MAP_H__ */