)]}'
{
  "log": [
    {
      "commit": "6c1ad0dea93e4eb7c2a2ede1f3be9dcf07417455",
      "tree": "d2a9da13d47a584d20675079afd4e6783ea79442",
      "parents": [
        "eaa4d780120dd690be2ae035ef4e715026b5b12e"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri May 13 10:39:23 2016 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Mon May 23 16:05:57 2016 -0700"
      },
      "message": "limit mediaserver memory\n\nLimit mediaserver using rlimit, to prevent it from bringing down the system\nvia the low memory killer.\nDefault max is 65% of total RAM, but can be customized via system property.\n\nBug: 28471206\nBug: 28615448\nChange-Id: Ic84137435d1ef0a6883e9789a4b4f399e4283f05\n"
    },
    {
      "commit": "4b60b068c27a40731bd4a0049cb632da18bf521d",
      "tree": "9565fcd81affa99e9215abb4b0deda71bf683a35",
      "parents": [
        "2f3406517d1fd4486b8b90eb2635d784fad17a48"
      ],
      "author": {
        "name": "Neil Fuller",
        "email": "nfuller@google.com",
        "time": "Wed Jun 10 15:12:38 2015 +0100"
      },
      "committer": {
        "name": "Neil Fuller",
        "email": "nfuller@google.com",
        "time": "Thu Jun 11 12:59:18 2015 +0100"
      },
      "message": "Switch to using shared over local code for initializing ICU\n\nA static library now exists in external/icu/android_utils.\n\nBug: 21730722\nChange-Id: I8302b585d3c87fd1a975301ceca4ceebaccbcac9\n"
    },
    {
      "commit": "2f3406517d1fd4486b8b90eb2635d784fad17a48",
      "tree": "55ff130219cf9ac6b68ebf58b0aa848159852b90",
      "parents": [
        "356f08476db6191cdcbad20caf69d7bd642a09b2"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Tue Jun 09 17:42:34 2015 +0100"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Jun 10 08:52:17 2015 +0000"
      },
      "message": "mediaserver : Initialize ICU on startup.\n\nIn change 2b29e461c in external/icu, we stopped hardcoding the ICU\ndata path at compile time to avoid two sets of mappings in zygote forked\nprocesses. This means we\u0027ll have to tell ICU where its data is if the\nprocess in question isn\u0027t forked from the zygote.\n\nbug: 21705078\nChange-Id: I829d9fa34fe8209aa8a6d55145ca26fdf0d934e8\n"
    },
    {
      "commit": "f097cae65bfce7200938c5bd89e7e9b61cba78b3",
      "tree": "c69ed57deac44c243d914a3c8fa7b88bf3327ca6",
      "parents": [
        "db93079daf06a94e50622d0383b9ed8e767e2f92"
      ],
      "author": {
        "name": "Ricardo Garcia",
        "email": "rago@google.com",
        "time": "Mon Apr 13 12:17:21 2015 -0700"
      },
      "committer": {
        "name": "Ricardo Garcia",
        "email": "rago@google.com",
        "time": "Mon Apr 13 17:20:19 2015 -0700"
      },
      "message": "TimestretchBufferProvider integration with Sonic Library\n\nUsing Sonic as backbone for time stretching algorithm.\nAdding libsonic to needed makefiles.\n\nbug: 19196501\nChange-Id: I1ea9221d2f56e4e79fba8746ce0ad350b5079e82\n"
    },
    {
      "commit": "2110e04cdfbf9ad85ce154ce5f778ee5ccfc95eb",
      "tree": "5051da296e1fbc067db7ac190334d7d98a4410eb",
      "parents": [
        "dfd7409c1b708f6c429aa43722ca8493a91d8df0"
      ],
      "author": {
        "name": "François Gaffie",
        "email": "francois.gaffie@intel.com",
        "time": "Tue Mar 24 08:41:51 2015 +0100"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Apr 01 10:22:42 2015 -0700"
      },
      "message": "Split ManagerDefault into manager and engine\n\nThis patch defines an interface for a new component: policy engine.\nThe APIs found under this interface are the one we may want to customize\nand to configure easily.\nThis patch also split the current manager code into manager and engine to\nprovide a default version of the policy engine.\n\nChange-Id: I97cf59760b53d248fe9efe466ae5e73bd7e5cc06\nSigned-off-by: François Gaffie \u003cfrancois.gaffie@intel.com\u003e\n"
    },
    {
      "commit": "98cc191247388132b6fd8a4ecd07abd6e4c5a0ed",
      "tree": "b447149a320aabc6fb28f2522e6a55db835ce537",
      "parents": [
        "ad3183e2d4cecd02f6261270a7ea1c68be0efa0f"
      ],
      "author": {
        "name": "François Gaffie",
        "email": "francois.gaffie@intel.com",
        "time": "Wed Mar 18 17:52:40 2015 +0100"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Apr 01 10:19:16 2015 -0700"
      },
      "message": "Split ManagerDefault into Manager and ManagerDefinitions\n\nThis patch splits the managerdefault into a manager and a manager\ndefintion library that contains all pillar elements of a policy manager.\n\nIt renames the file with the name of the main class they contains.\n\nIt splits the AudioPort into AudioPort and AudioPatch.\n\nChange-Id: I992cf0b8aed895805cc003ba0980d2c9e92c985b\nSigned-off-by: François Gaffie \u003cfrancois.gaffie@intel.com\u003e\n"
    },
    {
      "commit": "231c3d169ad029689f9d688b68179af7e96b8d78",
      "tree": "09dbf8d4dc47f5698c08190f498357b455a396c7",
      "parents": [
        "84b784dd4f340331d36b1be3de05a6c814d9795c"
      ],
      "author": {
        "name": "Ronghua Wu",
        "email": "ronghuawu@google.com",
        "time": "Wed Mar 11 15:10:32 2015 -0700"
      },
      "committer": {
        "name": "Ronghua Wu",
        "email": "ronghuawu@google.com",
        "time": "Mon Mar 23 17:02:28 2015 -0700"
      },
      "message": "media: add ResourceManagerService\n\nBug: 19620911\nChange-Id: Iea173d310d31781bc50effe3d9bd6553cb5139eb\n"
    },
    {
      "commit": "4e09069a29fc18d0799808cc26f71e9b068e98ad",
      "tree": "c546f0130241ac0fea083fca8ec2582e22785aaa",
      "parents": [
        "dedc86dcb6d63e93518c8974c077e50912d15e9c"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Mar 05 15:12:40 2015 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Mar 10 18:20:33 2015 -0700"
      },
      "message": "radio service initial implementation\n\nFirst implementation of broadcast radio service.\n\nThis native service runs in mediaserver process and\ncontrols broadcast radio hardware modules.\nThere is one ihardware module per broadcast radio class.\nThe service allows serveral clients to control tuners\non hardware modules and manages resource conflicts.\n\nChange-Id: I21469a084c7ccd65042b8ac5f724d060044c45ab\n"
    },
    {
      "commit": "c52fb038dc91712fc5159226006e03ce59b21b9a",
      "tree": "226c3461133ec9c183f7c1543b1108820c8def60",
      "parents": [
        "49d44ef14da70f3159cf7908cab58c32ed3dbf26"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 02 15:04:55 2015 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 02 15:04:55 2015 -0800"
      },
      "message": "Cleanup annoying whitespace that causes red markers\n\nChange-Id: I0b1be110b0e0a9606d272c4d023f40ff93522725\n"
    },
    {
      "commit": "b7a11d83f749ad0200778c4815e907d011d4b5d3",
      "tree": "28c744c0e8fe9c1f198ddd0999b4c5d95de9610a",
      "parents": [
        "24c01a8417fe195e5ba2187dbbdf9bd1e3a6553f"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Apr 18 17:40:41 2014 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jun 04 15:34:20 2014 -0700"
      },
      "message": "add sound trigger native service\n\nChange-Id: I0cd954c1c7d28a334e786d0004431d4f6a1227ec\n"
    },
    {
      "commit": "d83062287758be57d1d0908b30bb18aa9b367f38",
      "tree": "0efd8542cfb286a9d59c3c13ca455be14ba06f2f",
      "parents": [
        "7ac0039611ea7ea18f9545f96a8f5cb31dcdebe5",
        "98c6be0e30fa28e752b13f3dd5986d41710bb7ae"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu May 22 00:40:14 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu May 22 00:40:14 2014 +0000"
      },
      "message": "Merge \"audio policy: split audio policy library\""
    },
    {
      "commit": "98c6be0e30fa28e752b13f3dd5986d41710bb7ae",
      "tree": "f4184b5bd860b09ffa8172257212862e0352425d",
      "parents": [
        "272b7f26c300d2029f278cf2af523cf94e513b89"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed May 21 08:14:08 2014 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed May 21 08:58:19 2014 -0700"
      },
      "message": "audio policy: split audio policy library\n\nSplit audio policy library into a service part and a policy part.\nThis will allow OEMs to customize the policy part:\n- libaudiopolicyservice for the service.\n- libaudiopolicymanager for the policy.\n\nTwo build options can be defined in device make file to select\nthe policy library:\n- USE_LEGACY_AUDIO_POLICY \u003d 1: this will use the legacy policy\nin hardware/libhardware_legacy implemented by AudioPolicyManagerBase class.\nThis policy is loaded as a harware module and exposes the audio policy HAL\ndefined in include/hardware/audio_policy.h and is in a library called\naudio_policy.XXX.so (e.g audio_policy.default.so)\n\nThe legacy HAL will not be updated with new features.\n\nIf USE_LEGACY_AUDIO_POLICY is not defined, the policy is implemented by\na class named AudioPolicyManager exposing an interface defined in\nAudioPolicyInterface.h.\nThe corresponding library is libaudiopolicymanager.so.\n\nNew features will be added only to AudioPolicyInterface.h\n\nThe default implementation is provided here in file AudioPolicyManager.cpp\n\nOEMs wanting to cutomize the policy can implement the AudioPolicyManager class\nand provide the libaudiopolicymanager.so library.\nIn this case the device make file should define:\n- USE_CUSTOM_AUDIO_POLICY \u003d 1\n\nFor now, USE_LEGACY_AUDIO_POLICY \u003d 1 is forced in audio policy service make file.\nThis will be removed when the new audio policy is enabled.\n\nChange-Id: I066799dacc9b182b468a43d48ff7798c9109a414\n"
    },
    {
      "commit": "c56f3426099a3cf2d07ccff8886050c7fbce140f",
      "tree": "9e486a809f9d500a70fd26c4e1d2596ded190dbe",
      "parents": [
        "7c96d53a65085f42ac2b6d416cbc16fd36ed72ff"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Mar 21 17:53:17 2014 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon May 19 09:46:25 2014 -0700"
      },
      "message": "Pass stereo gains as packed minifloat\n\nThis will allow (eventually) a greater dynamic range for gains.\nHowever there are still a few remaining places in effects and mixer\nthat will also need to be changed in order to get the full benefit.\n\nAlso fixes a minor bug: was not checking for NaN in AudioTrack C++.\n\nChange-Id: I63bce9e82e0a61546d8ff475fb94bcb700d99c96\n"
    },
    {
      "commit": "314869117d5e3365fc3e43fee01209d18515ca42",
      "tree": "a1975d895276c929a5e5a20166124368f2e21eb9",
      "parents": [
        "37e05edf1cfe297f9c7d382787ecab53d5a2b5c8",
        "c7e5040aa8b8e4da86814bf560346c7571e48087"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Mar 18 00:14:12 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Mar 18 00:14:12 2014 +0000"
      },
      "message": "Merge \"move audio policy service to a separate library\""
    },
    {
      "commit": "758799cef41fc5495f59eeb6249d02ce9154cde8",
      "tree": "5cbfa825fd668d81c6fe6a8ec485dd8ebb2fd151",
      "parents": [
        "beb57a5a08207af80180b93dd80d611a85997c43",
        "3c7801882bbb6d5f3cc641525a54cb8a6c4aca34"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Mar 14 14:22:08 2014 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Mar 14 14:22:08 2014 -0700"
      },
      "message": "resolved conflicts for merge of 3c780188 to master\n\nChange-Id: Ic579d346c27ff05ea6444faaa60fa6caaec86fbf\n"
    },
    {
      "commit": "af783aa91f7a279153fb8bab8d0d6b9f737996e9",
      "tree": "25c5b54bf884f220cce4ee21a9cbaf6583820f91",
      "parents": [
        "19afb3869eb6a3e3733dc1f7420e1d4c3c03d376"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@android.com",
        "time": "Sun Mar 02 19:48:19 2014 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@android.com",
        "time": "Wed Mar 12 11:24:53 2014 -0700"
      },
      "message": "mediaserver and associated services are 32-bit only\n\nalso 32-bit only command-line apps\n\nChange-Id: I9ac557a8d02bbf6986a9b5c3cdce23d400b306a3\n"
    },
    {
      "commit": "c7e5040aa8b8e4da86814bf560346c7571e48087",
      "tree": "8cd35c3ea6a2f9849d27a8299705dd7aea494894",
      "parents": [
        "1ac1638077277de52d1dd4c54db71e67753f1960"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Mar 06 14:35:55 2014 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Mar 11 13:52:14 2014 -0700"
      },
      "message": "move audio policy service to a separate library\n\nChange-Id: Ibc3ef07aa9860b7fd4f9aaff27b0dbe0dcbf1cbf\n"
    },
    {
      "commit": "7226c059cda892ffa384b455ecfc49989e9bf6f0",
      "tree": "10e13405a2bd59737a6e2ab41c52317e058d0621",
      "parents": [
        "269a7e210949c4b28ba84dc71b9f99f6ef14f94e"
      ],
      "author": {
        "name": "Ruben Brunk",
        "email": "rubenbrunk@google.com",
        "time": "Fri Jan 17 14:46:21 2014 -0800"
      },
      "committer": {
        "name": "Ruben Brunk",
        "email": "rubenbrunk@google.com",
        "time": "Fri Jan 17 14:46:21 2014 -0800"
      },
      "message": "Fix build. Missing vendor_tag header.\n"
    },
    {
      "commit": "ecba7488c5cceaacef95836b1b476433451e7761",
      "tree": "83245c19c2dda5c557531edb19478056034b5db5",
      "parents": [
        "5544c66ba0aa789a997b376df503a5ffae425dc7"
      ],
      "author": {
        "name": "Ying Wang",
        "email": "wangying@google.com",
        "time": "Tue Apr 09 21:53:49 2013 -0700"
      },
      "committer": {
        "name": "Ying Wang",
        "email": "wangying@google.com",
        "time": "Tue Apr 09 21:53:49 2013 -0700"
      },
      "message": "Add liblog\n\nBug: 8580410\nChange-Id: If493d87d60d71be664ad75b140c62acadb75b0d0\n"
    },
    {
      "commit": "da0dc0af0effe9fbfb3ce3187c8472fca2baf3c6",
      "tree": "67aa5a912048834766759d1842f7e54a20f74481",
      "parents": [
        "ec77122351b4e78c1fe5b60a208f76baf8c67591"
      ],
      "author": {
        "name": "Ying Wang",
        "email": "wangying@google.com",
        "time": "Tue Apr 09 21:53:49 2013 -0700"
      },
      "committer": {
        "name": "Ying Wang",
        "email": "wangying@google.com",
        "time": "Tue Apr 09 21:53:49 2013 -0700"
      },
      "message": "Add liblog\n\nBug: 8580410\nChange-Id: If493d87d60d71be664ad75b140c62acadb75b0d0\n"
    },
    {
      "commit": "8029ea41c8851c527ed5829e8c26fbf939661f34",
      "tree": "5ef58bfba85abac9234c739ab65ef4d195e285b6",
      "parents": [
        "2f8025eef6c681920579f75d298a262b12a80ac9"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Feb 20 16:47:28 2013 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Feb 20 16:47:28 2013 -0800"
      },
      "message": "Permit conditional registry of mediaserver extensions\n\nChange-Id: I94dc0d038e702dfe1779a50a1de0fae9bad15057\n"
    },
    {
      "commit": "feb2179f15bde8241814c8c35f8dace13a923ee7",
      "tree": "9d8e325d2d38e6366944f186008accea0fb123b5",
      "parents": [
        "fc900c922e219771d0cd3c075720d90026e1ca4a"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Feb 20 16:47:28 2013 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Feb 20 16:47:28 2013 -0800"
      },
      "message": "Permit conditional registry of mediaserver extensions\n\nChange-Id: I94dc0d038e702dfe1779a50a1de0fae9bad15057\n"
    },
    {
      "commit": "fdf4e4f1859771b95585cbc87f8cd038ea2815c6",
      "tree": "7bbc12a9d0e9c7ad29346b04b26c55d390a0b032",
      "parents": [
        "10eb4b33545a58e4b09249c30c100bc7b992250a"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 18 15:31:41 2013 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 25 15:12:14 2013 -0800"
      },
      "message": "Add media.log service based on NBLog\n\nChange-Id: Ie45093df6ac9a739d05c8d408fab52a9a8a27e7f\n"
    },
    {
      "commit": "6f1c1918d0dfece10f728711b055441e4d135c73",
      "tree": "e82c0166e895f9c61c11ff0800d2871298e63b30",
      "parents": [
        "11d8dfcc063425ae7d59229f54b6752fd8987c10"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 18 15:31:41 2013 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 25 15:12:14 2013 -0800"
      },
      "message": "Add media.log service based on NBLog\n\nChange-Id: Ie45093df6ac9a739d05c8d408fab52a9a8a27e7f\n"
    },
    {
      "commit": "7acd13defdb3f33b2e266f1ef8f3ac85285c5e27",
      "tree": "c1b190f6e1e14b1d144d5ad8a275cf20556a26b8",
      "parents": [
        "b32761634799f00488f890cd3e38f47ce7cc3452"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 18 15:17:05 2013 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 18 15:24:49 2013 -0800"
      },
      "message": "Remove obsolete audioflinger reference\n\nChange-Id: I9ae754c908f3b0102c3828c71d6f542851a74341\n"
    },
    {
      "commit": "2a330d6cbb25f0cdd6208aeee53b4a3b88dae3b0",
      "tree": "ee5cf0c2ca89c31227b665448c426980d699c209",
      "parents": [
        "5faf610fa384a81dbefb7ac67d2452216e3acead"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 18 15:17:05 2013 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 18 15:24:49 2013 -0800"
      },
      "message": "Remove obsolete audioflinger reference\n\nChange-Id: I9ae754c908f3b0102c3828c71d6f542851a74341\n"
    },
    {
      "commit": "559bf2836f5da25b75bfb229fec0d20d540ee426",
      "tree": "d7dd708b17eeca96a3e5d8bcc25a51ff3d1b5d0d",
      "parents": [
        "b0b2b4d890cf3bfb274797a759642b4e733343d7"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Mar 28 10:29:14 2012 -0700"
      },
      "committer": {
        "name": "Anatol Pomozov",
        "email": "anatol.pomozov@gmail.com",
        "time": "Wed Mar 28 12:07:41 2012 -0700"
      },
      "message": "AV Android make files changes\n\no plus a few file relocation: ActivityManager.cpp/h, SoundPool.h, etc\no remove some runtime dependencies to libandroid, libandroid_runtime, etc\n\nChange-Id: I047a47c5fb361dd5cf85cd98798c39f629a75d10\n"
    },
    {
      "commit": "0e9350254736c4aea154a7a871dd212038050f70",
      "tree": "a3a6f653b383e5767c6ed6b6c47c464099339298",
      "parents": [
        "f67fdc6d8bb31226ffeeecbff6aca610befd0110"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Mar 13 16:09:39 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Mar 13 16:13:17 2012 -0700"
      },
      "message": "Prepare frameworks/native/services/audioflinger\n\nPart of this change will be reverted after the move is complete.\n\nChange-Id: Ie7f6355368258f2b1344f4ef754da9151a06e41d\n"
    },
    {
      "commit": "65ab47156e1c7dfcd8cc4266253a5ff30219e7f0",
      "tree": "da088916c7cadadcddf47467f20cc8b0b6ff7f41",
      "parents": [
        "98fe12aba55e8b8bb14b23c4c3cdba9a99a9753c"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jul 14 17:59:35 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jul 14 17:59:35 2010 -0700"
      },
      "message": "move native services under services/\n\nmoved surfaceflinger, audioflinger, cameraservice\n\nall native services should now reside in this location.\n\nChange-Id: Iee42b83dd2a94c3bf5107ab0895fe2dfcd5337a8\n"
    },
    {
      "commit": "615a9bfbd98b90e09d868c128db84836feb658e4",
      "tree": "8820d731b046206d781bb302cc79d7303c44dbbb",
      "parents": [
        "8bae84582c2836a605d3ec3382a5e2f0b233ca52"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon May 18 15:08:03 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed May 20 12:55:02 2009 -0700"
      },
      "message": "checkpoint: split libutils into libutils + libbinder\n"
    },
    {
      "commit": "89fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5",
      "tree": "28d26f7b71e943e25c7da6e8043d79b7b8d9cf7b",
      "parents": [
        "15f767b960b38059a74a42a33e16d8df2aec8bc1"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 03 19:31:44 2009 -0800"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 03 19:31:44 2009 -0800"
      },
      "message": "auto import from //depot/cupcake/@135843\n"
    },
    {
      "commit": "15f767b960b38059a74a42a33e16d8df2aec8bc1",
      "tree": "4b825dc642cb6eb9a060e54bf8d69288fbee4904",
      "parents": [
        "ad04d9201452001dbaac4349f084cc9316190b89"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 03 18:28:45 2009 -0800"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 03 18:28:45 2009 -0800"
      },
      "message": "auto import from //depot/cupcake/@135843\n"
    },
    {
      "commit": "2729ea9262ca60d93047e984739887cfc89e82eb",
      "tree": "25962a3f1c5f70586af45c926c037e03c643857f",
      "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"
    }
  ]
}
