)]}'
{
  "log": [
    {
      "commit": "738be7a3ffec0a4053478d49821c7da9c5fd9ee6",
      "tree": "1c8efbf90b4045d41f7664b0b88a75cff545a729",
      "parents": [
        "ceb7b8e5767aaac364d75c647ea130968e15f3ed"
      ],
      "author": {
        "name": "Ethan Yonker",
        "email": "dees_troy@teamw.in",
        "time": "Wed Dec 10 11:40:43 2014 -0600"
      },
      "committer": {
        "name": "Ethan Yonker",
        "email": "dees_troy@teamw.in",
        "time": "Wed Dec 10 11:54:02 2014 -0600"
      },
      "message": "Use one mizip for all\n\nThe new minzip did not compile in older trees due to needing\nmmap64. For older trees we will just use mmap instead. Remove all\nfiles and code pertaining to minzipold. Updater should now build\nproperly in older trees as well.\n\nEliminate use of PLATFORM_VERSION in favor of PLATFORM_SDK_VERSION\nwhich should be more consistent and reliable.\n\nChange-Id: I38d2b604a73d1b17a2072c7d60e990b81ece0c10\n"
    },
    {
      "commit": "a167416289a8aef5d4c35861c9f4181f87b8bfd0",
      "tree": "cfb0b940141a4273ac6ddb58070e36ea706b7358",
      "parents": [
        "9fdd03417041c9db597f2406811ab5d150dc5410",
        "cddb68b5eafbeba696d5276bda1f1a9f70bbde42"
      ],
      "author": {
        "name": "Ethan Yonker",
        "email": "dees_troy@teamw.in",
        "time": "Thu Nov 06 08:35:10 2014 -0600"
      },
      "committer": {
        "name": "Ethan Yonker",
        "email": "dees_troy@teamw.in",
        "time": "Thu Nov 06 08:35:13 2014 -0600"
      },
      "message": "Merge in lollipop and attempt to fix merge conflicts\n\nThis will probably not compile and may need additional work.\nFor tracking purposes so we know what might still need looking at\nas none of this has been compiled and tested, here is a list of\nthe merge conflicts that I attempted to fix before pushing this\nset of changes:\n\ngit pull aosp lollipop-release\nremote: Finding sources: 100% (992/992)\nremote: Total 992 (delta 473), reused 992 (delta 473)\nReceiving objects: 100% (992/992), 1.51 MiB | 516.00 KiB/s, done.\nResolving deltas: 100% (473/473), completed with 42 local objects.\nFrom https://android.googlesource.com/platform/bootable/recovery\n * branch            lollipop-release -\u003e FETCH_HEAD\n * [new branch]      lollipop-release -\u003e aosp/lollipop-release\nAuto-merging verifier_test.cpp\nCONFLICT (content): Merge conflict in verifier_test.cpp\nAuto-merging verifier.h\nCONFLICT (content): Merge conflict in verifier.h\nAuto-merging verifier.cpp\nCONFLICT (content): Merge conflict in verifier.cpp\nAuto-merging updater/updater.c\nAuto-merging updater/install.c\nCONFLICT (content): Merge conflict in updater/install.c\nAuto-merging updater/Android.mk\nCONFLICT (content): Merge conflict in updater/Android.mk\nAuto-merging uncrypt/Android.mk\nCONFLICT (content): Merge conflict in uncrypt/Android.mk\nAuto-merging ui.cpp\nCONFLICT (content): Merge conflict in ui.cpp\nAuto-merging screen_ui.cpp\nAuto-merging roots.cpp\nCONFLICT (content): Merge conflict in roots.cpp\nCONFLICT (rename/delete): res-hdpi/images/progress_fill.png deleted\nin HEAD and renamed in cddb68b5eafbeba696d5276bda1f1a9f70bbde42.\nVersion cddb68b5eafbeba696d5276bda1f1a9f70bbde42 of\nres-hdpi/images/progress_fill.png left in tree.\nCONFLICT (rename/delete): res-hdpi/images/progress_empty.png deleted\nin HEAD and renamed in cddb68b5eafbeba696d5276bda1f1a9f70bbde42.\nVersion cddb68b5eafbeba696d5276bda1f1a9f70bbde42 of\nres-hdpi/images/progress_empty.png left in tree.\nCONFLICT (rename/delete): res-hdpi/images/icon_error.png deleted\nin HEAD and renamed in cddb68b5eafbeba696d5276bda1f1a9f70bbde42.\nVersion cddb68b5eafbeba696d5276bda1f1a9f70bbde42 of\nres-hdpi/images/icon_error.png left in tree.\nAuto-merging recovery.cpp\nCONFLICT (content): Merge conflict in recovery.cpp\nAuto-merging minui/resources.c\nCONFLICT (content): Merge conflict in minui/resources.c\nAuto-merging minui/minui.h\nCONFLICT (content): Merge conflict in minui/minui.h\nAuto-merging minui/graphics.c\nCONFLICT (content): Merge conflict in minui/graphics.c\nAuto-merging minui/Android.mk\nCONFLICT (content): Merge conflict in minui/Android.mk\nRemoving minelf/Retouch.h\nRemoving minelf/Retouch.c\nAuto-merging minadbd/usb_linux_client.c\nCONFLICT (content): Merge conflict in minadbd/usb_linux_client.c\nAuto-merging minadbd/adb.h\nCONFLICT (content): Merge conflict in minadbd/adb.h\nAuto-merging minadbd/adb.c\nCONFLICT (content): Merge conflict in minadbd/adb.c\nAuto-merging minadbd/Android.mk\nCONFLICT (content): Merge conflict in minadbd/Android.mk\nRemoving make-overlay.py\nAuto-merging install.h\nCONFLICT (content): Merge conflict in install.h\nAuto-merging etc/init.rc\nCONFLICT (content): Merge conflict in etc/init.rc\nAuto-merging bootloader.h\nAuto-merging applypatch/applypatch.c\nAuto-merging applypatch/Android.mk\nCONFLICT (content): Merge conflict in applypatch/Android.mk\nAuto-merging adb_install.cpp\nCONFLICT (content): Merge conflict in adb_install.cpp\nAuto-merging Android.mk\nCONFLICT (content): Merge conflict in Android.mk\nAutomatic merge failed; fix conflicts and then commit the result.\n\nChange-Id: I3e0e03e48ad8550912111c7a5c9a140ed0267e2c\n"
    },
    {
      "commit": "a6c142f2a579ea5e7cdfbc88e6a061c55029265a",
      "tree": "8b0544483b3827351f406c5e987e2bf2641d9c68",
      "parents": [
        "f15e31edf948d9dac11858fba6dfdff8a5cd91c9"
      ],
      "author": {
        "name": "Michael Runge",
        "email": "mrunge@google.com",
        "time": "Tue Oct 28 19:49:57 2014 -0700"
      },
      "committer": {
        "name": "The Android Automerger",
        "email": "android-build@google.com",
        "time": "Wed Oct 29 13:29:40 2014 -0700"
      },
      "message": "Force sync files written by minzip.\n\nSome files appear to be missing their sync to disk.\n\nBug: 18145574\nChange-Id: Ic858624a4dd65bbfc54d30f3a13c607078270345\n"
    },
    {
      "commit": "f5d9f891524862ba560650bd545668dc22622cdb",
      "tree": "cdb803102468ee0fb4e40317fc672543fd2bae05",
      "parents": [
        "64e7fcd9255734e5b12cd50263563951b4e4664e"
      ],
      "author": {
        "name": "Michael Runge",
        "email": "mrunge@google.com",
        "time": "Tue May 06 16:54:42 2014 -0700"
      },
      "committer": {
        "name": "Michael Runge",
        "email": "mrunge@google.com",
        "time": "Fri May 09 18:09:28 2014 +0000"
      },
      "message": "Allow 0-byte files in full OTAs.\n\nCurrently, the writeProcessFunction fails when\nthere are zero bytes to write, potentially returning\nerrno from a previous operation, or hanging\nindefinitely while it waits for a \u003e0 result on a\nwrite of size 0.  This happens when the output\nfile is intended to be zero bytes in size.\n\nChange-Id: Ib3cfcaf66d82942bc89e5f5c64697862403b38da\n"
    },
    {
      "commit": "76b245c24c12feec2381c423de2f7ffe4b78d7f0",
      "tree": "bf975c860dfe50d1b38682f465a2ac96a5ec8f55",
      "parents": [
        "679baa06b79e0c9100ce05fa0191928fc2a691fb"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Mon Mar 17 15:35:52 2014 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Mon Mar 17 16:05:12 2014 -0700"
      },
      "message": "minzip: 64 bit build issue\n\nRegression - verification and extraction on memory, not files\n\nBug: 12188746\nChange-Id: Ib6facc4aff6be3a31a7d184ef1c493fdd4012c21\n"
    },
    {
      "commit": "a9300301ce0bddb6f46e1e1a7499c13b615713c6",
      "tree": "de91ee750f49aaf54aeb63751cb7cd9ba58804fa",
      "parents": [
        "707d321a8745accf4660bf77e33f6acb9ce6b779"
      ],
      "author": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Mon Feb 10 12:35:19 2014 -0800"
      },
      "committer": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Thu Feb 13 08:30:41 2014 -0800"
      },
      "message": "add mzGetStoredEntry function\n\nmzGetStoredEntry gives you a pointer and address to the data of a zip\nentry, assuming that entry is stored rather than deflated.\n\nChange-Id: Ifb39777c98d1d50475ef7de419cf28935f5f9965\n"
    },
    {
      "commit": "707d321a8745accf4660bf77e33f6acb9ce6b779",
      "tree": "a2f4f8069718c1f933e3b4e588bd88b6609de60c",
      "parents": [
        "4068f6aff2f898c55e6f8f3e2c92eefbb9189524",
        "2739ed9628f72813d213b7a429c4c1b8dcebe5fc"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Feb 06 03:07:48 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Feb 06 03:07:48 2014 +0000"
      },
      "message": "am 2739ed96: am a5d105e2: Merge \"recovery: fix building with pointer-to-int errors turned on\"\n\n* commit \u00272739ed9628f72813d213b7a429c4c1b8dcebe5fc\u0027:\n  recovery: fix building with pointer-to-int errors turned on\n"
    },
    {
      "commit": "92cdf9c37225c6f76b96c8f137896cd9e9015bbd",
      "tree": "dbf70c82b2e8d48e6d6515689b47cfe327f71b49",
      "parents": [
        "f353207298ed14d0e6943353dd9788421a7537b8"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Wed Feb 05 17:30:31 2014 -0800"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Wed Feb 05 17:34:45 2014 -0800"
      },
      "message": "recovery: fix building with pointer-to-int errors turned on\n\nUse intptr_t/uintptr_t to cast between pointer and int to allow\nbuilding with -Werror\u003dpointer-to-int-cast and\nWerror\u003dint-to-pointer-cast turned on.\n\nCast to char* instead of unsigned int for pointer arithmetic.\n\nChange-Id: Ia862306fdcca53866b330e8cf726f3d62f2248a0\n"
    },
    {
      "commit": "19a8e2463c31a97121c35b4666a8e6879fa7e338",
      "tree": "5ecf7ebd70ebcb712430f83ae78e9e3d625b271b",
      "parents": [
        "76adfc5309936a07218ce53b5ab284d5746fa84c"
      ],
      "author": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Tue Jan 21 09:25:41 2014 -0800"
      },
      "committer": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Tue Jan 21 09:25:41 2014 -0800"
      },
      "message": "log extra info for debugging\n\nMake recovery log its PID, and when we use a block map file, log how\nmany ranges it contains.\n\nChange-Id: I1b4299f8163af68a770b48c029ae25e6cb45d26b\n"
    },
    {
      "commit": "99916f0496cfe37891d40f21a9a0e387620a8a60",
      "tree": "6b457a65cfdf482fec027386fcd7d197586c67b2",
      "parents": [
        "0708239c003a1537c9cbf98dea5a490955d667aa"
      ],
      "author": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Mon Jan 13 14:16:58 2014 -0800"
      },
      "committer": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Thu Jan 16 13:29:28 2014 -0800"
      },
      "message": "do verification and extraction on memory, not files\n\nChanges minzip and recovery\u0027s file signature verification to work on\nmemory regions, rather than files.\n\nFor packages which are regular files, install.cpp now mmap()s them\ninto memory and then passes the mapped memory to the verifier and to\nthe minzip library.\n\nSupport for files which are raw block maps (which will be used when we\nhave packages written to encrypted data partitions) is present but\nlargely untested so far.\n\nBug: 12188746\nChange-Id: I12cc3e809834745a489dd9d4ceb558cbccdc3f71\n"
    },
    {
      "commit": "2768efdf9fe67d179f6cb733e6541f04b6f2bf46",
      "tree": "ce08c462dbeb41f1c2b23ad22279e310bf03f780",
      "parents": [
        "f3819c271e34559b123bb6b52210923ef1b8f65a"
      ],
      "author": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Mon Jan 13 10:11:20 2014 -0800"
      },
      "committer": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Mon Jan 13 10:51:13 2014 -0800"
      },
      "message": "remove dead code from minzip\n\nminzip had some features that were used when reading APKs, but APK\nhandling now uses libziparchive instead of minzip.  Remove these\nunused functions.\n\nChange-Id: Iead89209a716bfe9e3d339bf85b3e97e33a41f35\n"
    },
    {
      "commit": "46ab1b6138bf911120280f1095ff9479dceee3df",
      "tree": "fa6091faa4986f4528859c6c234b4b62a80d4f9e",
      "parents": [
        "1306a7effafab77cf2769091619518c2ab263ee8"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Wed Sep 11 11:37:10 2013 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Tue Sep 17 10:20:45 2013 -0700"
      },
      "message": "updater: Delete dead code\n\nset_perm and set_perm_recursive are no longer used. Delete.\n\n(cherry picked from commit 08ef9a957027183dcf55e432441e8fb0d5299aba)\n\nChange-Id: I1bcc90ae19af9df4f0705496c5876987159f75ac\n"
    },
    {
      "commit": "4bf3b0d8043c6b05df2560b563f1eeaadb21d1a5",
      "tree": "bfd0be9ce7e9e7583228dcfa833eefa3153c9956",
      "parents": [
        "05534209f104a435d91042fd4b816aaaae7b7b54"
      ],
      "author": {
        "name": "Dees Troy",
        "email": "dees_troy@teamw.in",
        "time": "Wed Sep 11 19:12:49 2013 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "gerrit@198.50.184.117",
        "time": "Thu Sep 12 10:38:15 2013 -0500"
      },
      "message": "Make SELinux automatic if present\n"
    },
    {
      "commit": "08ef9a957027183dcf55e432441e8fb0d5299aba",
      "tree": "8de1908105a0bd46cd66c53235bbbfb746433f5e",
      "parents": [
        "53e8f3091849e80585044dfff4a7075c26936543"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Wed Sep 11 11:37:10 2013 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Wed Sep 11 11:37:10 2013 -0700"
      },
      "message": "updater: Delete dead code\n\nset_perm and set_perm_recursive are no longer used. Delete.\n\nChange-Id: I3bb40b934b6c093b24b88aa4ed6f3c7de2bb52f0\n"
    },
    {
      "commit": "3328e3bc81161c2a57ea94d304162276facdd826",
      "tree": "ecd8762bc38d8db05b1175ec392ae3ed54cbd0a8",
      "parents": [
        "3b5a987cd7fd76c038e9875b430028216d21ace3"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Mon Sep 09 10:47:14 2013 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Mon Sep 09 10:47:14 2013 -0700"
      },
      "message": "Revert \"Update OTA installer to understand SELinux filesystem labels\"\n\nThis reverts commit 627eb30f73c29257acaeb6568f3da38880784f7c.\n\nBug: 10183961\nBug: 10186213\n"
    },
    {
      "commit": "1669f89dd288e2ba226233a7fd62ea78ddb473c1",
      "tree": "e6d72d724b31b6fa72e6d273a9c6c8661d5c9c2c",
      "parents": [
        "1dc3098a5c976c8bb697a90a2efb10ab2c9049f4",
        "5c4e1dac0bd8f31559bd50eec4343b7a17b7a976"
      ],
      "author": {
        "name": "Dees_Troy",
        "email": "dees_troy@teamw.in",
        "time": "Wed Sep 04 18:35:08 2013 +0000"
      },
      "committer": {
        "name": "Dees_Troy",
        "email": "dees_troy@teamw.in",
        "time": "Wed Sep 04 19:00:58 2013 +0000"
      },
      "message": "Update to latest AOSP master\n\nMerge in latest commits from AOSP master and fix merge conflicts\n"
    },
    {
      "commit": "627eb30f73c29257acaeb6568f3da38880784f7c",
      "tree": "044a0368547eadfaefa9ee4c9a24672ac5a30dc5",
      "parents": [
        "51c84694b0198a90b8eed635b46a3712c44db7a5"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Wed Jul 17 19:01:37 2013 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Thu Jul 18 15:21:12 2013 -0700"
      },
      "message": "Update OTA installer to understand SELinux filesystem labels\n\nModify the OTA installer to understand SELinux filesystem labels.\n\nWe do this by introducing new set_perm2 / set_perm2_recursive\ncalls, which understand SELinux filesystem labels. These filesystem\nlabels are applied at the same time that we apply the\nUID / GID / permission changes.\n\nFor compatibility, we preserve the behavior of the existing\nset_perm / set_perm_recursive calls.\n\nIf the destination kernel doesn\u0027t support security labels, don\u0027t\nfail. SELinux isn\u0027t enabled on all kernels.\n\nBug: 8985290\nChange-Id: I99800499f01784199e4918a82e3e2db1089cf25b\n"
    },
    {
      "commit": "f6b15d1d454b85348dcb9566aad22fd7ed5e665a",
      "tree": "b47cc6779dce3ae58f07516a61d66e151f7eff85",
      "parents": [
        "9e0b71c6adefc638b6b566d805e9f1b38f133f80"
      ],
      "author": {
        "name": "Dees_Troy",
        "email": "dees_troy@teamw.in",
        "time": "Thu Apr 11 15:29:54 2013 +0000"
      },
      "committer": {
        "name": "Dees_Troy",
        "email": "dees_troy@teamw.in",
        "time": "Thu Apr 11 15:29:54 2013 +0000"
      },
      "message": "Fix building of updater binary\n"
    },
    {
      "commit": "2673cec07a4740f86438b50cfe1b70b258a9a8c8",
      "tree": "3133d98e33eba4fab9760f9a4a54aeac83107119",
      "parents": [
        "a13d74fc95324c4318fcc95956b07fe593669412"
      ],
      "author": {
        "name": "Dees_Troy",
        "email": "dees_troy@teamw.in",
        "time": "Tue Apr 02 20:22:16 2013 +0000"
      },
      "committer": {
        "name": "Dees_Troy",
        "email": "dees_troy@teamw.in",
        "time": "Thu Apr 04 18:57:34 2013 +0000"
      },
      "message": "Move all AOSP code out of recovery binary\n\nImproves license compatibility between GPL and Apache\n\nChange-Id: I2b165aa575bb6213af6b07936f99610c113443f0\n"
    },
    {
      "commit": "9da1880118c58e45543d9f3b2356e9f833582c9a",
      "tree": "0496e3ff94041561e9235f6be08235195cbd836e",
      "parents": [
        "1fca2650edb5ae373a297b6029df5e250c021dd3",
        "9028fb4d4ceed040c7d3ae9b1ceaa5a7472856ba"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Dec 17 12:11:47 2012 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Dec 17 12:11:47 2012 -0800"
      },
      "message": "am 9028fb4d: Merge \"Pass the correct pointer to munmap on failure.\"\n\n* commit \u00279028fb4d4ceed040c7d3ae9b1ceaa5a7472856ba\u0027:\n  Pass the correct pointer to munmap on failure.\n"
    },
    {
      "commit": "c86f22c131ef72bd3350720d2029766c4f0721f3",
      "tree": "9795eb33d585e3096242ae09d6735668b488a3de",
      "parents": [
        "27f31606390eeed50d27f2c243dfbfe79e8b5ae2"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Dec 17 09:26:50 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Dec 17 09:26:50 2012 -0800"
      },
      "message": "Pass the correct pointer to munmap on failure.\n\nThis won\u0027t ever happen, and you\u0027re probably screwed anyway if it\ndoes, but that\u0027s no excuse...\n\nChange-Id: I2c56f607e351e84308a72b41b834d13aaa98fc62\n"
    },
    {
      "commit": "bf80f49edcec6b22ad7b1219e6ed6eda1e930c8c",
      "tree": "1f47c641d762aeac482cae331b04f9d4391720fa",
      "parents": [
        "a0d9ddb8f2922088b08219326afeaf532b3af5ac"
      ],
      "author": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Fri Oct 19 12:24:26 2012 -0700"
      },
      "committer": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Fri Oct 19 12:24:26 2012 -0700"
      },
      "message": "reduce some recovery logging\n\nMake minzip log only a count of files when extracting, not individual\nfilenames.  Make patching only chatter about free space if there\u0027s not\nenough and compact the other messages.\n\nOnly the last 8k of the recovery log gets uploaded; this makes it more\nlikely that we will get all of it.\n\nChange-Id: I529cb4947fe2185df82b9da5fae450a7480dcecd\n"
    },
    {
      "commit": "7eb7567aa3faebfb22bd052f3505d485ee23d585",
      "tree": "0462d8372a28cd14dc5a2389b25500687e7950c9",
      "parents": [
        "bddbb5b370d925d6e5ae62d560f5e7ad09a6ffac"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Tue Oct 16 10:47:27 2012 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Tue Oct 16 12:57:26 2012 -0700"
      },
      "message": "Remove HAVE_SELINUX guards\n\nChange-Id: Ia96201f20f7838d7d9e8926208977d3f8318ced4\n"
    },
    {
      "commit": "0298ec21d2f895f03fcce2377f64ab4cb88bca8a",
      "tree": "a1392dd8fd185b004b6c1413a00e57ad6fac2896",
      "parents": [
        "3733d2185bbcedd9ef626907f1f32628986cc0f5"
      ],
      "author": {
        "name": "Edwin Vane",
        "email": "edwin.vane@intel.com",
        "time": "Tue May 22 14:16:54 2012 -0400"
      },
      "committer": {
        "name": "Edwin Vane",
        "email": "edwin.vane@intel.com",
        "time": "Tue Aug 21 16:04:21 2012 -0400"
      },
      "message": "Fix multiple defined symbol errors\n\nUse of __inline__ by projects in bootable/* was causing problems with\nclang. Following the BKM and replaced use of __inline__ with\n__attribute((__gnu_inline)).\n\nChange-Id: If4ccfded685bb2c9d9c23c9b92ee052208399ef0\nAuthor: Edwin Vane \u003cedwin.vane@intel.com\u003e\nReviewed-by: Kevin P Schoedel \u003ckevin.p.schoedel@intel.com\u003e\n"
    },
    {
      "commit": "41dda82d847ae8c261b09c383806b412d680f935",
      "tree": "98edeec4fa5d9df2d0104624d66b1608cecdaf50",
      "parents": [
        "b2364342a05a689bc302bfcd7d5d15f528eb772c",
        "0b1fee1b2aa7da86ffdabfe4c577ee8adb93d803"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Fri Mar 30 20:48:34 2012 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Fri Mar 30 21:26:01 2012 -0700"
      },
      "message": "resolved conflicts for merge of 0b1fee1b to master\n\nChange-Id: I2e8298ff5988a96754f56f80a5186c9605ad9928\n"
    },
    {
      "commit": "779701db515d1a0d363d5a8896252f331bc4e22a",
      "tree": "46aacb687e7126a5a64949dd7ade2f284ee57c15",
      "parents": [
        "1a114494950d8bce01bb860cd8a7221fdc9593cc"
      ],
      "author": {
        "name": "Stephen Smalley",
        "email": "sds@tycho.nsa.gov",
        "time": "Thu Feb 09 14:13:23 2012 -0500"
      },
      "committer": {
        "name": "Stephen Smalley",
        "email": "sds@tycho.nsa.gov",
        "time": "Fri Mar 30 09:32:46 2012 -0400"
      },
      "message": "Extend recovery and updater to support setting file security contexts.\n\nExtend minzip, recovery, and updater to set the security context on\nfiles based on the file_contexts configuration included in the package.\n\nChange-Id: Ied379f266a16c64f2b4dca15dc39b98fcce16f29\n"
    },
    {
      "commit": "28ce47cfa6919518a8c298088bf08b03bb374c0f",
      "tree": "0c429bcc8f4a1935f3be97d87ebdc2f4434ee887",
      "parents": [
        "d0181b8fcdac761afec252151a8bfda116916e96"
      ],
      "author": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Fri Oct 28 10:33:05 2011 -0700"
      },
      "committer": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Mon Oct 31 10:24:09 2011 -0700"
      },
      "message": "turn recovery into a C++ binary\n\nChange-Id: I423a23581048d451d53eef46e5f5eac485b77555\n"
    },
    {
      "commit": "6aece33b3f3af6a161e326af36bc894427fcf5ad",
      "tree": "b164457ed1f664a0d195f30933b70386687a0887",
      "parents": [
        "aa062531aa3e740b6cf7d3690fd5310e7fdf03f2"
      ],
      "author": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Mon Feb 01 14:40:12 2010 -0800"
      },
      "committer": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Mon Feb 01 14:40:12 2010 -0800"
      },
      "message": "add a one-argument version of package_extract_file\n\nAdd a version of package_extract_file that returns the file data as\nits return value (to be consumed by some other edify function that\nexpects to receive a bunch of binary data as an argument).  Lets us\navoid having two copies of a big file in memory (extracting it into\n/tmp, which is a ramdisk, and then having something load it into\nmemory) when doing things like radio updates.\n\nChange-Id: Ie26ece5fbae457eb0ddcd8a13d74d78a769fbc70\n"
    },
    {
      "commit": "1c4ceae38f3fd7eb1e451d430acb5d99f257b0f9",
      "tree": "5dbf0392571a64b4afbe0ba73655c889f650eb75",
      "parents": [
        "683c4628039a8cb6dad1a086fae23a7d71438414"
      ],
      "author": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Fri May 08 09:43:28 2009 -0700"
      },
      "committer": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Fri May 08 09:43:28 2009 -0700"
      },
      "message": "undo temporary alignment hack\n\nRemove the memory alignment that mysteriously made OTA installs work,\nin anticipation of a kernel that fixes the actual problem.  Handle\nEINTR properly.\n"
    },
    {
      "commit": "683c4628039a8cb6dad1a086fae23a7d71438414",
      "tree": "aacd5abd9b128d786f651b2dfb2a5eb5400c5e43",
      "parents": [
        "596271fa71d79e3eec03c7cf6ac76cb026dd8578"
      ],
      "author": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Tue May 05 17:50:21 2009 -0700"
      },
      "committer": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Wed May 06 08:40:28 2009 -0700"
      },
      "message": "align data passed to write() on 32k boundaries\n\nIn donut, OTA installation often encounters the write() system call\ndoing short writes -- which is legal but unexpected -- or failing with\nENOSPC when plenty of space is available.  Passing aligned memory\nbuffers to write() appears to prevent (or at least reduce the\nfrequency) of these problems.  b/1833052 has been filed to look at the\nunderlying problem, but this change aligns buffers we use with write()\nso we can OTA for now (or see if this problem still occurs).\n"
    },
    {
      "commit": "596271fa71d79e3eec03c7cf6ac76cb026dd8578",
      "tree": "3a78f4d9d0b3694d4a75b7dd3d086b0249de8b5e",
      "parents": [
        "f554ceb0500f75c425b37c74a0d65d138c0fbdd0"
      ],
      "author": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Wed Apr 29 16:52:04 2009 -0700"
      },
      "committer": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Wed Apr 29 17:35:34 2009 -0700"
      },
      "message": "handle short writes when unzipping files\n\nminzip fails if write() doesn\u0027t write all the data in one call.\nApparently this was good enough before, but it causes OTAs to fail all\nthe time now (maybe due to the recently-submitted kernel)?  Change\ncode to attempt continuing after short writes.\n"
    },
    {
      "commit": "c24a8e688a6312764254beac2b2520bb0c5e998d",
      "tree": "7df23711566b358047301d8413ee399105546e8b",
      "parents": [
        "ffb48f64fec674c6dd923eb8b1eb3f743e05a8ba"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 03 19:28:42 2009 -0800"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 03 19:28:42 2009 -0800"
      },
      "message": "auto import from //depot/cupcake/@135843\n"
    },
    {
      "commit": "ffb48f64fec674c6dd923eb8b1eb3f743e05a8ba",
      "tree": "4b825dc642cb6eb9a060e54bf8d69288fbee4904",
      "parents": [
        "d4ae69739ebb67374d62229829df07bf2de85103"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 03 18:28:14 2009 -0800"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 03 18:28:14 2009 -0800"
      },
      "message": "auto import from //depot/cupcake/@135843\n"
    },
    {
      "commit": "23580ca27a0a8109312fdd36cc363ad1f4719889",
      "tree": "0bb90eaa72f8df110162499f756b5cbfb7d49235",
      "parents": [],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Oct 21 07:00:00 2008 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Oct 21 07:00:00 2008 -0700"
      },
      "message": "Initial Contribution\n"
    }
  ]
}
