Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(823)

Unified Diff: mojo/dart/packages/_mojo_for_test_only/lib/mojo/test/versioning/versioning_test_client.mojom.dart

Issue 2006093002: Dart: Futures -> Callbacks. (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Merge Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: mojo/dart/packages/_mojo_for_test_only/lib/mojo/test/versioning/versioning_test_client.mojom.dart
diff --git a/mojo/dart/packages/_mojo_for_test_only/lib/mojo/test/versioning/versioning_test_client.mojom.dart b/mojo/dart/packages/_mojo_for_test_only/lib/mojo/test/versioning/versioning_test_client.mojom.dart
index e78a28e44fb0c7a24607ca37f522e90eddbc4762..d1c96dd4026c0233c0b4748973b0d9640d9fa0d9 100644
--- a/mojo/dart/packages/_mojo_for_test_only/lib/mojo/test/versioning/versioning_test_client.mojom.dart
+++ b/mojo/dart/packages/_mojo_for_test_only/lib/mojo/test/versioning/versioning_test_client.mojom.dart
@@ -76,6 +76,12 @@ class Employee extends bindings.Struct {
Employee() : super(kVersions.last.size);
+ Employee.init(
+ int this.employeeId,
+ String this.name,
+ Department this.department
+ ) : super(kVersions.last.size);
+
static Employee deserialize(bindings.Message message) {
var decoder = new bindings.Decoder(message);
var result = decode(decoder);
@@ -178,6 +184,10 @@ class _HumanResourceDatabaseAddEmployeeParams extends bindings.Struct {
_HumanResourceDatabaseAddEmployeeParams() : super(kVersions.last.size);
+ _HumanResourceDatabaseAddEmployeeParams.init(
+ Employee this.employee
+ ) : super(kVersions.last.size);
+
static _HumanResourceDatabaseAddEmployeeParams deserialize(bindings.Message message) {
var decoder = new bindings.Decoder(message);
var result = decode(decoder);
@@ -251,6 +261,10 @@ class HumanResourceDatabaseAddEmployeeResponseParams extends bindings.Struct {
HumanResourceDatabaseAddEmployeeResponseParams() : super(kVersions.last.size);
+ HumanResourceDatabaseAddEmployeeResponseParams.init(
+ bool this.success
+ ) : super(kVersions.last.size);
+
static HumanResourceDatabaseAddEmployeeResponseParams deserialize(bindings.Message message) {
var decoder = new bindings.Decoder(message);
var result = decode(decoder);
@@ -325,6 +339,11 @@ class _HumanResourceDatabaseQueryEmployeeParams extends bindings.Struct {
_HumanResourceDatabaseQueryEmployeeParams() : super(kVersions.last.size);
+ _HumanResourceDatabaseQueryEmployeeParams.init(
+ int this.id,
+ bool this.retrieveFingerPrint
+ ) : super(kVersions.last.size);
+
static _HumanResourceDatabaseQueryEmployeeParams deserialize(bindings.Message message) {
var decoder = new bindings.Decoder(message);
var result = decode(decoder);
@@ -412,6 +431,11 @@ class HumanResourceDatabaseQueryEmployeeResponseParams extends bindings.Struct {
HumanResourceDatabaseQueryEmployeeResponseParams() : super(kVersions.last.size);
+ HumanResourceDatabaseQueryEmployeeResponseParams.init(
+ Employee this.employee,
+ List<int> this.fingerPrint
+ ) : super(kVersions.last.size);
+
static HumanResourceDatabaseQueryEmployeeResponseParams deserialize(bindings.Message message) {
var decoder = new bindings.Decoder(message);
var result = decode(decoder);
@@ -499,6 +523,11 @@ class _HumanResourceDatabaseAttachFingerPrintParams extends bindings.Struct {
_HumanResourceDatabaseAttachFingerPrintParams() : super(kVersions.last.size);
+ _HumanResourceDatabaseAttachFingerPrintParams.init(
+ int this.id,
+ List<int> this.fingerPrint
+ ) : super(kVersions.last.size);
+
static _HumanResourceDatabaseAttachFingerPrintParams deserialize(bindings.Message message) {
var decoder = new bindings.Decoder(message);
var result = decode(decoder);
@@ -584,6 +613,10 @@ class HumanResourceDatabaseAttachFingerPrintResponseParams extends bindings.Stru
HumanResourceDatabaseAttachFingerPrintResponseParams() : super(kVersions.last.size);
+ HumanResourceDatabaseAttachFingerPrintResponseParams.init(
+ bool this.success
+ ) : super(kVersions.last.size);
+
static HumanResourceDatabaseAttachFingerPrintResponseParams deserialize(bindings.Message message) {
var decoder = new bindings.Decoder(message);
var result = decode(decoder);
@@ -655,6 +688,9 @@ class _HumanResourceDatabaseListEmployeeIdsParams extends bindings.Struct {
_HumanResourceDatabaseListEmployeeIdsParams() : super(kVersions.last.size);
+ _HumanResourceDatabaseListEmployeeIdsParams.init(
+ ) : super(kVersions.last.size);
+
static _HumanResourceDatabaseListEmployeeIdsParams deserialize(bindings.Message message) {
var decoder = new bindings.Decoder(message);
var result = decode(decoder);
@@ -714,6 +750,10 @@ class HumanResourceDatabaseListEmployeeIdsResponseParams extends bindings.Struct
HumanResourceDatabaseListEmployeeIdsResponseParams() : super(kVersions.last.size);
+ HumanResourceDatabaseListEmployeeIdsResponseParams.init(
+ List<int> this.ids
+ ) : super(kVersions.last.size);
+
static HumanResourceDatabaseListEmployeeIdsResponseParams deserialize(bindings.Message message) {
var decoder = new bindings.Decoder(message);
var result = decode(decoder);
@@ -783,17 +823,19 @@ const int _humanResourceDatabaseMethodAttachFingerPrintName = 2;
const int _humanResourceDatabaseMethodListEmployeeIdsName = 3;
class _HumanResourceDatabaseServiceDescription implements service_describer.ServiceDescription {
- dynamic getTopLevelInterface([Function responseFactory]){
+ void getTopLevelInterface(Function responder){
var interfaceTypeKey = getRuntimeTypeInfo().services["mojo::test::versioning::HumanResourceDatabase"];
var userDefinedType = getAllMojomTypeDefinitions()[interfaceTypeKey];
- return responseFactory(userDefinedType.interfaceType);
+ responder(userDefinedType.interfaceType);
}
- dynamic getTypeDefinition(String typeKey, [Function responseFactory]) =>
- responseFactory(getAllMojomTypeDefinitions()[typeKey]);
+ void getTypeDefinition(String typeKey, Function responder) {
+ responder(getAllMojomTypeDefinitions()[typeKey]);
+ }
- dynamic getAllTypeDefinitions([Function responseFactory]) =>
- responseFactory(getAllMojomTypeDefinitions());
+ void getAllTypeDefinitions(Function responder) {
+ responder(getAllMojomTypeDefinitions());
+ }
}
abstract class HumanResourceDatabase {
@@ -818,10 +860,10 @@ abstract class HumanResourceDatabase {
s.connectToService(url, p, name);
return p;
}
- dynamic addEmployee(Employee employee,[Function responseFactory = null]);
- dynamic queryEmployee(int id,bool retrieveFingerPrint,[Function responseFactory = null]);
- dynamic attachFingerPrint(int id,List<int> fingerPrint,[Function responseFactory = null]);
- dynamic listEmployeeIds([Function responseFactory = null]);
+ void addEmployee(Employee employee,void callback(bool success));
+ void queryEmployee(int id,bool retrieveFingerPrint,void callback(Employee employee, List<int> fingerPrint));
+ void attachFingerPrint(int id,List<int> fingerPrint,void callback(bool success));
+ void listEmployeeIds(void callback(List<int> ids));
}
abstract class HumanResourceDatabaseInterface
@@ -871,18 +913,14 @@ class _HumanResourceDatabaseProxyControl
proxyError("Expected a message with a valid request Id.");
return;
}
- Completer c = completerMap[message.header.requestId];
- if (c == null) {
+ Function callback = callbackMap[message.header.requestId];
+ if (callback == null) {
proxyError(
"Message had unknown request Id: ${message.header.requestId}");
return;
}
- completerMap.remove(message.header.requestId);
- if (c.isCompleted) {
- proxyError("Response completer already completed");
- return;
- }
- c.complete(r);
+ callbackMap.remove(message.header.requestId);
+ callback(r.success );
break;
case _humanResourceDatabaseMethodQueryEmployeeName:
var r = HumanResourceDatabaseQueryEmployeeResponseParams.deserialize(
@@ -891,18 +929,14 @@ class _HumanResourceDatabaseProxyControl
proxyError("Expected a message with a valid request Id.");
return;
}
- Completer c = completerMap[message.header.requestId];
- if (c == null) {
+ Function callback = callbackMap[message.header.requestId];
+ if (callback == null) {
proxyError(
"Message had unknown request Id: ${message.header.requestId}");
return;
}
- completerMap.remove(message.header.requestId);
- if (c.isCompleted) {
- proxyError("Response completer already completed");
- return;
- }
- c.complete(r);
+ callbackMap.remove(message.header.requestId);
+ callback(r.employee , r.fingerPrint );
break;
case _humanResourceDatabaseMethodAttachFingerPrintName:
var r = HumanResourceDatabaseAttachFingerPrintResponseParams.deserialize(
@@ -911,18 +945,14 @@ class _HumanResourceDatabaseProxyControl
proxyError("Expected a message with a valid request Id.");
return;
}
- Completer c = completerMap[message.header.requestId];
- if (c == null) {
+ Function callback = callbackMap[message.header.requestId];
+ if (callback == null) {
proxyError(
"Message had unknown request Id: ${message.header.requestId}");
return;
}
- completerMap.remove(message.header.requestId);
- if (c.isCompleted) {
- proxyError("Response completer already completed");
- return;
- }
- c.complete(r);
+ callbackMap.remove(message.header.requestId);
+ callback(r.success );
break;
case _humanResourceDatabaseMethodListEmployeeIdsName:
var r = HumanResourceDatabaseListEmployeeIdsResponseParams.deserialize(
@@ -931,18 +961,14 @@ class _HumanResourceDatabaseProxyControl
proxyError("Expected a message with a valid request Id.");
return;
}
- Completer c = completerMap[message.header.requestId];
- if (c == null) {
+ Function callback = callbackMap[message.header.requestId];
+ if (callback == null) {
proxyError(
"Message had unknown request Id: ${message.header.requestId}");
return;
}
- completerMap.remove(message.header.requestId);
- if (c.isCompleted) {
- proxyError("Response completer already completed");
- return;
- }
- c.complete(r);
+ callbackMap.remove(message.header.requestId);
+ callback(r.ids );
break;
default:
proxyError("Unexpected message type: ${message.header.type}");
@@ -987,54 +1013,62 @@ class HumanResourceDatabaseProxy
}
- dynamic addEmployee(Employee employee,[Function responseFactory = null]) {
+ void addEmployee(Employee employee,void callback(bool success)) {
if (impl != null) {
- return new Future(() => impl.addEmployee(employee,_HumanResourceDatabaseStubControl._humanResourceDatabaseAddEmployeeResponseParamsFactory));
+ impl.addEmployee(employee,callback);
+ return;
}
var params = new _HumanResourceDatabaseAddEmployeeParams();
params.employee = employee;
- return ctrl.sendMessageWithRequestId(
+ ctrl.sendMessageWithRequestId(
params,
_humanResourceDatabaseMethodAddEmployeeName,
-1,
- bindings.MessageHeader.kMessageExpectsResponse);
+ bindings.MessageHeader.kMessageExpectsResponse,
+ callback);
}
- dynamic queryEmployee(int id,bool retrieveFingerPrint,[Function responseFactory = null]) {
+ void queryEmployee(int id,bool retrieveFingerPrint,void callback(Employee employee, List<int> fingerPrint)) {
if (impl != null) {
- return new Future(() => impl.queryEmployee(id,retrieveFingerPrint,_HumanResourceDatabaseStubControl._humanResourceDatabaseQueryEmployeeResponseParamsFactory));
+ impl.queryEmployee(id,retrieveFingerPrint,callback);
+ return;
}
var params = new _HumanResourceDatabaseQueryEmployeeParams();
params.id = id;
params.retrieveFingerPrint = retrieveFingerPrint;
- return ctrl.sendMessageWithRequestId(
+ ctrl.sendMessageWithRequestId(
params,
_humanResourceDatabaseMethodQueryEmployeeName,
-1,
- bindings.MessageHeader.kMessageExpectsResponse);
+ bindings.MessageHeader.kMessageExpectsResponse,
+ callback);
}
- dynamic attachFingerPrint(int id,List<int> fingerPrint,[Function responseFactory = null]) {
+ void attachFingerPrint(int id,List<int> fingerPrint,void callback(bool success)) {
if (impl != null) {
- return new Future(() => impl.attachFingerPrint(id,fingerPrint,_HumanResourceDatabaseStubControl._humanResourceDatabaseAttachFingerPrintResponseParamsFactory));
+ impl.attachFingerPrint(id,fingerPrint,callback);
+ return;
}
var params = new _HumanResourceDatabaseAttachFingerPrintParams();
params.id = id;
params.fingerPrint = fingerPrint;
- return ctrl.sendMessageWithRequestId(
+ ctrl.sendMessageWithRequestId(
params,
_humanResourceDatabaseMethodAttachFingerPrintName,
-1,
- bindings.MessageHeader.kMessageExpectsResponse);
+ bindings.MessageHeader.kMessageExpectsResponse,
+ callback);
}
- dynamic listEmployeeIds([Function responseFactory = null]) {
+ void listEmployeeIds(void callback(List<int> ids)) {
if (impl != null) {
- return new Future(() => impl.listEmployeeIds(_HumanResourceDatabaseStubControl._humanResourceDatabaseListEmployeeIdsResponseParamsFactory));
+ impl.listEmployeeIds(callback);
+ return;
}
var params = new _HumanResourceDatabaseListEmployeeIdsParams();
- return ctrl.sendMessageWithRequestId(
+ ctrl.sendMessageWithRequestId(
params,
_humanResourceDatabaseMethodListEmployeeIdsName,
-1,
- bindings.MessageHeader.kMessageExpectsResponse);
+ bindings.MessageHeader.kMessageExpectsResponse,
+ callback);
}
}
@@ -1060,33 +1094,61 @@ class _HumanResourceDatabaseStubControl
String get serviceName => HumanResourceDatabase.serviceName;
- static HumanResourceDatabaseAddEmployeeResponseParams _humanResourceDatabaseAddEmployeeResponseParamsFactory(bool success) {
- var result = new HumanResourceDatabaseAddEmployeeResponseParams();
- result.success = success;
- return result;
- }
- static HumanResourceDatabaseQueryEmployeeResponseParams _humanResourceDatabaseQueryEmployeeResponseParamsFactory(Employee employee, List<int> fingerPrint) {
- var result = new HumanResourceDatabaseQueryEmployeeResponseParams();
- result.employee = employee;
- result.fingerPrint = fingerPrint;
- return result;
- }
- static HumanResourceDatabaseAttachFingerPrintResponseParams _humanResourceDatabaseAttachFingerPrintResponseParamsFactory(bool success) {
- var result = new HumanResourceDatabaseAttachFingerPrintResponseParams();
- result.success = success;
- return result;
- }
- static HumanResourceDatabaseListEmployeeIdsResponseParams _humanResourceDatabaseListEmployeeIdsResponseParamsFactory(List<int> ids) {
- var result = new HumanResourceDatabaseListEmployeeIdsResponseParams();
- result.ids = ids;
- return result;
- }
-
- dynamic handleMessage(bindings.ServiceMessage message) {
+ Function _humanResourceDatabaseAddEmployeeResponseParamsResponder(
+ int requestId) {
+ return (bool success) {
+ var result = new HumanResourceDatabaseAddEmployeeResponseParams();
+ result.success = success;
+ sendResponse(buildResponseWithId(
+ result,
+ _humanResourceDatabaseMethodAddEmployeeName,
+ requestId,
+ bindings.MessageHeader.kMessageIsResponse));
+ };
+ }
+ Function _humanResourceDatabaseQueryEmployeeResponseParamsResponder(
+ int requestId) {
+ return (Employee employee, List<int> fingerPrint) {
+ var result = new HumanResourceDatabaseQueryEmployeeResponseParams();
+ result.employee = employee;
+ result.fingerPrint = fingerPrint;
+ sendResponse(buildResponseWithId(
+ result,
+ _humanResourceDatabaseMethodQueryEmployeeName,
+ requestId,
+ bindings.MessageHeader.kMessageIsResponse));
+ };
+ }
+ Function _humanResourceDatabaseAttachFingerPrintResponseParamsResponder(
+ int requestId) {
+ return (bool success) {
+ var result = new HumanResourceDatabaseAttachFingerPrintResponseParams();
+ result.success = success;
+ sendResponse(buildResponseWithId(
+ result,
+ _humanResourceDatabaseMethodAttachFingerPrintName,
+ requestId,
+ bindings.MessageHeader.kMessageIsResponse));
+ };
+ }
+ Function _humanResourceDatabaseListEmployeeIdsResponseParamsResponder(
+ int requestId) {
+ return (List<int> ids) {
+ var result = new HumanResourceDatabaseListEmployeeIdsResponseParams();
+ result.ids = ids;
+ sendResponse(buildResponseWithId(
+ result,
+ _humanResourceDatabaseMethodListEmployeeIdsName,
+ requestId,
+ bindings.MessageHeader.kMessageIsResponse));
+ };
+ }
+
+ void handleMessage(bindings.ServiceMessage message) {
if (bindings.ControlMessageHandler.isControlMessage(message)) {
- return bindings.ControlMessageHandler.handleMessage(this,
- 2,
- message);
+ bindings.ControlMessageHandler.handleMessage(
+ this, 2, message);
+ return;
}
if (_impl == null) {
throw new core.MojoApiError("$this has no implementation set");
@@ -1095,94 +1157,25 @@ class _HumanResourceDatabaseStubControl
case _humanResourceDatabaseMethodAddEmployeeName:
var params = _HumanResourceDatabaseAddEmployeeParams.deserialize(
message.payload);
- var response = _impl.addEmployee(params.employee,_humanResourceDatabaseAddEmployeeResponseParamsFactory);
- if (response is Future) {
- return response.then((response) {
- if (response != null) {
- return buildResponseWithId(
- response,
- _humanResourceDatabaseMethodAddEmployeeName,
- message.header.requestId,
- bindings.MessageHeader.kMessageIsResponse);
- }
- });
- } else if (response != null) {
- return buildResponseWithId(
- response,
- _humanResourceDatabaseMethodAddEmployeeName,
- message.header.requestId,
- bindings.MessageHeader.kMessageIsResponse);
- }
+ _impl.addEmployee(params.employee, _humanResourceDatabaseAddEmployeeResponseParamsResponder(message.header.requestId));
break;
case _humanResourceDatabaseMethodQueryEmployeeName:
var params = _HumanResourceDatabaseQueryEmployeeParams.deserialize(
message.payload);
- var response = _impl.queryEmployee(params.id,params.retrieveFingerPrint,_humanResourceDatabaseQueryEmployeeResponseParamsFactory);
- if (response is Future) {
- return response.then((response) {
- if (response != null) {
- return buildResponseWithId(
- response,
- _humanResourceDatabaseMethodQueryEmployeeName,
- message.header.requestId,
- bindings.MessageHeader.kMessageIsResponse);
- }
- });
- } else if (response != null) {
- return buildResponseWithId(
- response,
- _humanResourceDatabaseMethodQueryEmployeeName,
- message.header.requestId,
- bindings.MessageHeader.kMessageIsResponse);
- }
+ _impl.queryEmployee(params.id, params.retrieveFingerPrint, _humanResourceDatabaseQueryEmployeeResponseParamsResponder(message.header.requestId));
break;
case _humanResourceDatabaseMethodAttachFingerPrintName:
var params = _HumanResourceDatabaseAttachFingerPrintParams.deserialize(
message.payload);
- var response = _impl.attachFingerPrint(params.id,params.fingerPrint,_humanResourceDatabaseAttachFingerPrintResponseParamsFactory);
- if (response is Future) {
- return response.then((response) {
- if (response != null) {
- return buildResponseWithId(
- response,
- _humanResourceDatabaseMethodAttachFingerPrintName,
- message.header.requestId,
- bindings.MessageHeader.kMessageIsResponse);
- }
- });
- } else if (response != null) {
- return buildResponseWithId(
- response,
- _humanResourceDatabaseMethodAttachFingerPrintName,
- message.header.requestId,
- bindings.MessageHeader.kMessageIsResponse);
- }
+ _impl.attachFingerPrint(params.id, params.fingerPrint, _humanResourceDatabaseAttachFingerPrintResponseParamsResponder(message.header.requestId));
break;
case _humanResourceDatabaseMethodListEmployeeIdsName:
- var response = _impl.listEmployeeIds(_humanResourceDatabaseListEmployeeIdsResponseParamsFactory);
- if (response is Future) {
- return response.then((response) {
- if (response != null) {
- return buildResponseWithId(
- response,
- _humanResourceDatabaseMethodListEmployeeIdsName,
- message.header.requestId,
- bindings.MessageHeader.kMessageIsResponse);
- }
- });
- } else if (response != null) {
- return buildResponseWithId(
- response,
- _humanResourceDatabaseMethodListEmployeeIdsName,
- message.header.requestId,
- bindings.MessageHeader.kMessageIsResponse);
- }
+ _impl.listEmployeeIds(_humanResourceDatabaseListEmployeeIdsResponseParamsResponder(message.header.requestId));
break;
default:
throw new bindings.MojoCodecError("Unexpected message name");
break;
}
- return null;
}
HumanResourceDatabase get impl => _impl;
@@ -1236,17 +1229,17 @@ class HumanResourceDatabaseStub
}
- dynamic addEmployee(Employee employee,[Function responseFactory = null]) {
- return impl.addEmployee(employee,responseFactory);
+ void addEmployee(Employee employee,void callback(bool success)) {
+ return impl.addEmployee(employee,callback);
}
- dynamic queryEmployee(int id,bool retrieveFingerPrint,[Function responseFactory = null]) {
- return impl.queryEmployee(id,retrieveFingerPrint,responseFactory);
+ void queryEmployee(int id,bool retrieveFingerPrint,void callback(Employee employee, List<int> fingerPrint)) {
+ return impl.queryEmployee(id,retrieveFingerPrint,callback);
}
- dynamic attachFingerPrint(int id,List<int> fingerPrint,[Function responseFactory = null]) {
- return impl.attachFingerPrint(id,fingerPrint,responseFactory);
+ void attachFingerPrint(int id,List<int> fingerPrint,void callback(bool success)) {
+ return impl.attachFingerPrint(id,fingerPrint,callback);
}
- dynamic listEmployeeIds([Function responseFactory = null]) {
- return impl.listEmployeeIds(responseFactory);
+ void listEmployeeIds(void callback(List<int> ids)) {
+ return impl.listEmployeeIds(callback);
}
}
@@ -1263,7 +1256,7 @@ mojom_types.RuntimeTypeInfo _initRuntimeTypeInfo() {
// serializedRuntimeTypeInfo contains the bytes of the Mojo serialization of
// a mojom_types.RuntimeTypeInfo struct describing the Mojom types in this
// file. The string contains the base64 encoding of the gzip-compressed bytes.
- var serializedRuntimeTypeInfo = "H4sIAAAJbogC/+xaT4/bRBS3nS1rtlRd+i+GwjYLAqJC4wqEFKWXXbFBRRQUWFRRcQheZ0qM1nawnVV64yNw5MhH6JEjx34EjnyEPfZGZ5o39WQ8YzuJ106kHenJa8eZmfeb937ze7MxlGnbhuvfcOWf95h7FZsO959ju4PN9X/1O50IhVGnc4KC0PE9x/ul07k/di3vexT648BGB1ZkHVkhEvRzD9tn2H541Ov2v+4+6pAOW6S/VtxdS9Zbcr7P4NrAVmM+34PrEK53sTUzxz1AIyuIXORFLfzuh5nvd93Rsf8EoeX9asP8qV9Nbh3+rMX35M+/dPH66eqs/wrjP/v8f2g/KuJ2BdsWthiR6fOPsN2COEiBLzGvi9guYLOx/YTNHPouMoPxwHcdDwUm6c8MA3v6x2h8dOzYpuNFKHhs2Sg0jxxvgIcITTJmaMaD9smDvn3skEUjX3Zf4aIx499VZ3FtKOlNhl87J36XwN/D/QfdQ8idD7Jxa9H3efzeAH/Kwi8LJ7UgnC5CPB90H768/xjb+zlwou/zOF0qGacGx6M0//7dmA+fngSfbeBOyjQkht6V4RPTUQIXct0sGReWj5uUl7RZXNrcPLeUfE2Gq8LgKnpO21WIPQSQ9Z2BMJ7exPZ6ibiJcCHQPZf4oS+Ai8rkN98Iz5DQ9SwXifC4UjIe2xL/WHwusIQkyJ958dFS4obuiwNuX+RxugpcVDYP8X43MvbzeXURr+cMZswaMx6/fzyF9fkPrppkPZ9yuo7y42kKP7LzaQh07SbznOb9IQpOHBt9C2G+sL4lXHwdm+zzT7HdlvG1XA4m4qkO61dWPC2KhyGJPwN4haaqBvHShOf0Pf01iJ/LUI/cEMcTjYc/amezL+wPBsxumvTLqFhnUP+HWn6/SWtL/L4JvjN+3wnQb2M8GaH/tJW5D7B5LtsHnhesH5oZuozqB1F81FeA/w2Jjpy3vk3jfVWS72yc6gXF6TvYriXiNBz5XojWJU7nacvG6WXY/8Kxjd0JhTx2u0J8ZHEk4/t/NvLVn7zelfH9ddBp341R8CSlfnp7Rfh+Uismj6humfGbYfyq84g/vzHUcutGWT5twbygXBTGSb3iejGt6ZLzG/r9iSR/fl9Cf9eY8Wgd8o3jPZz6NhuPAYoCB52g/mPsMwr6o8DxIgnOZoXx2MjgL4PTukbG/nhaUF7vYLshyGu6Q65aXk/U9dBzN0F3lM3/6hnpORHeZF3uq8XyxuSMeeManFlxdKGI1u9eRetHsKDz2OTqx2X5hNdJewDYs434nEXNuV5aCTz/Fpyp7keRZQ+/fLlqPbpognXbqVh3Uf7pzcnPexIcdwGDhP8z1fa5/lpUf+1Arlepv7SU8+hFz+tl9Ute/iO4fFLReYSI/9LqwDS9RPNxWysmH98DLSnKx/hU4fxcYd5zBRJvX6zBuUIb8vRnLf4fhpZzv6wVoG+0jP2yDlg/cMKIqrevBkm8d1fkfOJUKaaOuQW+c36/2iWrzkc9B48pKetPcWoWdC7agL6TeE1ZbB34Syux3qO/O3FwLon4fRd+61R1vbCVI85YfnsRAAD//xqidsPoJwAA";
+ var serializedRuntimeTypeInfo = "H4sIAAAJbogC/+xaT4/bRBS3nYUNW6ou/beGwtYLAqJC41URUpRedsUGFVFQYFFFT5HXmSZGiR1sZ7Xl1CNHPgbHHvsR+Agce+TIcW8wk7ypJ+MZ20m8sSN1pKdZe53xvN+893u/mURXpm0b+hfQ8/fbzLWKrQrXX2K7i23o/eI1myEKwmbzFPmB47mO22s2H4yHlvsjCryxb6MjK7ROrAAJxrmP7QtsPz1utzrfth43yYB1Ml49Gq4uGy0+37+gN7BVmP8fQN+Hfh9bLfW9R2hk+eEQuWEdP/tJ6vOt4WjgPUVoeb8aMH/qV41bh+eV6Jr8+XdVvH7b6qz/CuM/e/8/aD8r4nYV2xa2CJHp/U+x3YY4SIAvNq9L2N7A5mHrYTPHgW8OPNsamD3P6w2Q2feGyPzNt0wy9D0z8O3JX+ZofDJwbNNxQ+Q/sWwUmCeO28WvC0zy/sCMJtAhNzr2wCELSD48nMxDY+bRUGfxNZTkJsOxkRHHy+D38eHD1jHk0Mfp+NXp8zyOb4M/q8YxDS81J7wuQXwftR5Nrj/D9lEGvOjzPF6XC8LL4PkVADrfmA+ntgSnbeBUykAkpj6Q4RTRVJwvsG0WhA/L1/uAT1ubxafBzXdLydZk+CoMvqL7tF2DWEQAXcfpCuPrHWxvFYCfCB+VTUSuVRfAR2V4km+Eh0gou9YQiXC5WhAu2xI/WZwIH1dVeV7Ni5OWEEe0jna5OsrjdQ24qiie4v03UnTAvHqK14E6884K8z6+zryAdfoHek2yrs85PUj5898E/mTnYwj08CZzn/LBMfJPHRt9D2G/sC4mXH0Dm+z/97DdkfG5XEbG4moH1m/VcbUoLrokDnXgG0pxGsRNDe7T5/bfnPa/X5n2L2+K4+oc+j8rF1M3DrtdpurG/dJLoksoDmdadv9Ja0j8vwUYMP7f9dGvYzwRIQ60FVEn2PyX1QlZPV1Ub9RS9BzVG6J42SlRfdAlOnTefXNSXVAlPMDGrZ5T3L6P7XosboOR5wZo3eJ2nrZs3F6BOhmMbexKIOS5OyXASRZXsrrwciPbvpbXy7K6cAP03Q9j5D9N2I+9V7K68Ecln/yiemfGf6YylCW/+PMiQ13tflSWZ1swL9iGCuNmpyT70KRWlZwX0c+fSfLq2RI6vsK8j+5nvnPcR1O/ZuPTR6HvoFPUeYL9RX5n5DtuKMHbLEN8pvCbzmlmPaWeVjfyyfddbDcF+U4ralnz/Zm6HnrwFuiVouqEekF6UIQ7WZ+2mi+fnF0wn1yHMzKORhTROt4veB0JJnQ+m9z+dFme4fXVA3qesxGd56gZ101bQR14F850D8PQsvtfT1avTRdPsH67JdFr1LH+nHrtQILnHmARw2FmN/9aty2r23aBA8qg27SEc/FFvz+Q7Yey8iPB5/OCzz1E/Ji0v0zSWTRPDS2fPP0QtKgoT6PTi9fnF4ueX5D4+2qNzi8OIL5GWvTdipaxvlZy0EVaSn3dAcwfOkFIVd833TjueyU7BzlX8tkX3QYMOP9fVdWy5Gk1A88pCfFA8WrkdD5rwNhx3KYst078pq1wH0l/T+PgHBPVgT34TVdZ9h9bGeKO5b//AwAA///eLupx2CgAAA==";
// Deserialize RuntimeTypeInfo
var bytes = BASE64.decode(serializedRuntimeTypeInfo);

Powered by Google App Engine
This is Rietveld 408576698