Originally asked by Jack Handy on 11 November 2021 (original question)
I am integrating ServiceNow and ADO so the Project Owners/Managers and the developers can share some information back and forth in their chosen tools. In Service now there are Programs that have Demand records associated with them. We created a custom workitem type in ADO for Demands and we would like to link them to Epics such that an Epic could have a Demand as an associated workitem.
ServiceNow <=> ADO
Project == Epic
Project Task == Feature
and
in SNOW, Projects have related Project Tasks
In ADO Epics have related Features
Here’s the question:
These records will originate in ServiceNow and be replicated to ADO. When we create a Project Task under a Project in ServiceNow, how can I then replicate that relationship status to ADO?
I have attempted the following and it fails regardless of what values I use as the identifier unless I hardcode the ADO workItem number in which case it does work.
outgoing sync for pm_project_task in SNow has the following:
replica.parent_Id = entity.parent
which shows in the replica as:
"parent_Id": {
"display_value": "PRJ0012345",
"link": "https://Company.service-now.com/api/now/v2/table/task/37d73128db0c8154e12345d7f4961982",
"scala$collection$convert$Wrappers$MapWrapper$$underlying": {}
},
I have tried putting the following in place of the <identifier> below but my value is always null. I know all records are in sync ahead of this too:
parent_Id
parent_Id.display_value
parent_Id.link
if(replica.parent_Id){
def localParent = syncHelper.getLocalIssueKeyFromRemoteId(<identifier>)
workItem."Custom.TechnicalandArchitectureDetails" = localParent.toString() //just to echo the output so I can "see" it
workItem.parentId = localParent.toString()
}
Could it be that this helper just doesn’t work with the ServiceNow datatype?
Help?
Comments:
Ariel Aguilar commented on 03 December 2021
Hi Jack,
Have you tried:
if(replica.parent_Id){
def localParent = syncHelper.getLocalIssueKeyFromRemoteId(replica.parent_Id.toLong())
workItem."Custom.TechnicalandArchitectureDetails" = localParent.toString() //just to echo the output so I can "see" it
workItem.parentId = localParent.toString()
}
Kind regards,
Ariel
Jack Handy commented on 06 December 2021
I tried this initially but it always failed for me. Here’s what I entered:
if(replica.parent_Id){
def parent=syncHelper.getLocalIssueKeyFromRemoteId(replica.parent_Id.toLong())
workItem."Custom.TechnicalandArchitectureDetails" = parent
workItem.parentId = parent
}
And this is what it returned for the “def parent=syncHelper.getLocalIssueKeyFromRemoteId…” line
Error Detail Message:
No signature of method: com.google.gson.internal.LinkedTreeMap.toLong() is applicable for argument types: () values: Possible solutions: toString(), toString(), toString(), toString(), count(groovy.lang.Closure), notify()
Error Stack Trace
com.exalate.api.exception.script.ScriptException: No signature of method: com.google.gson.internal.LinkedTreeMap.toLong() is applicable for argument types: () values: [] Possible solutions: toString(), toString(), toString(), toString(), count(groovy.lang.Closure), notify() at com.exalate.error.services.ScriptExceptionCategoryService.categorizeProcessorAndIssueTrackerExceptionsIntoScriptExceptions(ScriptExceptionCategoryService.scala:40) at com.exalate.processor.ExalateProcessor.executeProcessor(ExalateProcessor.java:57) at com.exalate.replication.services.processor.CreateIssueProcessor.$anonfun$executeScriptRules$1(CreateIssueProcessor.scala:124) at scala.util.Try$.apply(Try.scala:213) at com.exalate.replication.services.processor.CreateIssueProcessor.executeScriptRules(CreateIssueProcessor.scala:121) at com.exalate.replication.services.processor.CreateIssueProcessor.createIssue(CreateIssueProcessor.scala:83) at com.exalate.replication.services.replication.request.CreateIssueSyncRequestState.transition(CreateIssueSyncRequestState.scala:42) at com.exalate.replication.services.replication.request.CreateIssueSyncRequestState.transition(CreateIssueSyncRequestState.scala:21) at com.exalate.replication.services.replication.in.RequestProcessorService.$anonfun$processSyncRequest$2(RequestProcessorService.scala:185) at scala.util.Try$.apply(Try.scala:213) at com.exalate.replication.services.replication.in.RequestProcessorService.processSyncRequest(RequestProcessorService.scala:162) at com.exalate.replication.services.replication.in.RequestProcessorService.$anonfun$processSyncRequestsForIssue$1(RequestProcessorService.scala:112) at com.exalate.replication.services.replication.in.RequestProcessorService.$anonfun$processSyncRequestsForIssue$1$adapted(RequestProcessorService.scala:111) at scala.collection.LinearSeqOptimized.foldLeft(LinearSeqOptimized.scala:126) at scala.collection.LinearSeqOptimized.foldLeft$(LinearSeqOptimized.scala:122) at scala.collection.immutable.List.foldLeft(List.scala:91) at com.exalate.replication.services.replication.in.RequestProcessorService.processSyncRequestsForIssue(RequestProcessorService.scala:111) at com.exalate.replication.services.replication.in.RequestProcessorService.$anonfun$processSyncRequests$7(RequestProcessorService.scala:74) at com.exalate.replication.services.replication.in.RequestProcessorService.$anonfun$processSyncRequests$7$adapted(RequestProcessorService.scala:74) at scala.collection.immutable.List.foreach(List.scala:431) at com.exalate.replication.services.replication.in.RequestProcessorService.$anonfun$processSyncRequests$2(RequestProcessorService.scala:74) at com.exalate.replication.services.replication.in.RequestProcessorService.$anonfun$processSyncRequests$2$adapted(RequestProcessorService.scala:56) at scala.collection.Iterator.foreach(Iterator.scala:943) at scala.collection.Iterator.foreach$(Iterator.scala:943) at scala.collection.AbstractIterator.foreach(Iterator.scala:1431) at scala.collection.IterableLike.foreach(IterableLike.scala:74) at scala.collection.IterableLike.foreach$(IterableLike.scala:73) at scala.collection.AbstractIterable.foreach(Iterable.scala:56) at com.exalate.replication.services.replication.in.RequestProcessorService.$anonfun$processSyncRequests$1(RequestProcessorService.scala:56) at com.exalate.replication.services.replication.in.RequestProcessorService.$anonfun$processSyncRequests$1$adapted(RequestProcessorService.scala:56) at scala.collection.Iterator.foreach(Iterator.scala:943) at scala.collection.Iterator.foreach$(Iterator.scala:943) at scala.collection.AbstractIterator.foreach(Iterator.scala:1431) at scala.collection.parallel.ParIterableLike$Foreach.leaf(ParIterableLike.scala:974) at scala.collection.parallel.Task.$anonfun$tryLeaf$1(Tasks.scala:53) at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23) at scala.util.control.Breaks$$anon$1.catchBreak(Breaks.scala:67) at scala.collection.parallel.Task.tryLeaf(Tasks.scala:56) at scala.collection.parallel.Task.tryLeaf$(Tasks.scala:50) at scala.collection.parallel.ParIterableLike$Foreach.tryLeaf(ParIterableLike.scala:971) at scala.collection.parallel.AdaptiveWorkStealingTasks$WrappedTask.compute(Tasks.scala:153) at scala.collection.parallel.AdaptiveWorkStealingTasks$WrappedTask.compute$(Tasks.scala:149) at scala.collection.parallel.AdaptiveWorkStealingForkJoinTasks$WrappedTask.compute(Tasks.scala:440) at java.base/java.util.concurrent.RecursiveAction.exec(RecursiveAction.java:189) at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:290) at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1020) at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1656) at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1594) at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:183) Caused by: javax.script.ScriptException: javax.script.ScriptException: groovy.lang.MissingMethodException: No signature of method: com.google.gson.internal.LinkedTreeMap.toLong() is applicable for argument types: () values: [] Possible solutions: toString(), toString(), toString(), toString(), count(groovy.lang.Closure), notify() at org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.eval(GroovyScriptEngineImpl.java:158) at java.scripting/javax.script.AbstractScriptEngine.eval(AbstractScriptEngine.java:264) at com.exalate.processor.ExalateProcessor.execute(ExalateProcessor.java:98) at com.exalate.processor.ExalateProcessor.executeProcessor(ExalateProcessor.java:55) ... 47 more Caused by: javax.script.ScriptException: groovy.lang.MissingMethodException: No signature of method: com.google.gson.internal.LinkedTreeMap.toLong() is applicable for argument types: () values: [] Possible solutions: toString(), toString(), toString(), toString(), count(groovy.lang.Closure), notify() at org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.eval(GroovyScriptEngineImpl.java:320) at org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.eval(GroovyScriptEngineImpl.java:155) ... 50 more Caused by: groovy.lang.MissingMethodException: No signature of method: com.google.gson.internal.LinkedTreeMap.toLong() is applicable for argument types: () values: [] Possible solutions: toString(), toString(), toString(), toString(), count(groovy.lang.Closure), notify() at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecodeAdapter.java:70) at org.codehaus.groovy.runtime.callsite.PojoMetaClassSite.call(PojoMetaClassSite.java:46) at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:115) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:119) at Script63.run(Script63.groovy:150) at org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.eval(GroovyScriptEngineImpl.java:317) ... 51 more
My suspicion is that toLong() is choking on the result because it’s expecting a number and the result in either a URL or a value like “PRJ0012345”
Daniel Carvajal commented on 14 December 2021
Hi Jack
I think your suspicion is correct, can you try changing that line to:
def parent=syncHelper.getLocalIssueKeyFromRemoteId(replica.parent_Id.toString())
Let us know the outcome.
Cheers,
Daniel
Jack Handy commented on 14 December 2021
Throws the following:
Impact: RELATIONLocal entity: nullRemote entity: PRJTASK0014062Connection: Analytics_to_SNowError type: Incoming script errorError Creation Time: Dec 14, 2021 19:08:09Error Detail Message: No signature of method: com.google.gson.internal.LinkedTreeMap.display_value() is applicable for argument types: () values: [] Error Stack Trace: com.exalate.api.exception.script.ScriptException: No signature of method: com.google.gson.internal.LinkedTreeMap.display_value() is applicable for argument types: () values: []
at com.exalate.error.services.ScriptExceptionCategoryService.categorizeProcessorAndIssueTrackerExceptionsIntoScriptExceptions(ScriptExceptionCategoryService.scala:40)
at com.exalate.processor.ExalateProcessor.executeProcessor(ExalateProcessor.java:57)
at com.exalate.replication.services.processor.CreateIssueProcessor.$anonfun$executeScriptRules$1(CreateIssueProcessor.scala:124)
at scala.util.Try$.apply(Try.scala:213)
at com.exalate.replication.services.processor.CreateIssueProcessor.executeScriptRules(CreateIssueProcessor.scala:121)
at com.exalate.replication.services.processor.CreateIssueProcessor.createIssue(CreateIssueProcessor.scala:83)
at com.exalate.replication.services.replication.request.CreateIssueSyncRequestState.transition(CreateIssueSyncRequestState.scala:42)
at com.exalate.replication.services.replication.request.CreateIssueSyncRequestState.transition(CreateIssueSyncRequestState.scala:21)
at com.exalate.replication.services.replication.in.RequestProcessorService.$anonfun$processSyncRequest$2(RequestProcessorService.scala:185)
at scala.util.Try$.apply(Try.scala:213)
at com.exalate.replication.services.replication.in.RequestProcessorService.processSyncRequest(RequestProcessorService.scala:162)
at com.exalate.replication.services.replication.in.RequestProcessorService.$anonfun$processSyncRequestsForIssue$1(RequestProcessorService.scala:112)
at com.exalate.replication.services.replication.in.RequestProcessorService.$anonfun$processSyncRequestsForIssue$1$adapted(RequestProcessorService.scala:111)
at scala.collection.LinearSeqOptimized.foldLeft(LinearSeqOptimized.scala:126)
at scala.collection.LinearSeqOptimized.foldLeft$(LinearSeqOptimized.scala:122)
at scala.collection.immutable.List.foldLeft(List.scala:91)
at com.exalate.replication.services.replication.in.RequestProcessorService.processSyncRequestsForIssue(RequestProcessorService.scala:111)
at com.exalate.replication.services.replication.in.RequestProcessorService.$anonfun$processSyncRequests$7(RequestProcessorService.scala:74)
at com.exalate.replication.services.replication.in.RequestProcessorService.$anonfun$processSyncRequests$7$adapted(RequestProcessorService.scala:74)
at scala.collection.immutable.List.foreach(List.scala:431)
at com.exalate.replication.services.replication.in.RequestProcessorService.$anonfun$processSyncRequests$2(RequestProcessorService.scala:74)
at com.exalate.replication.services.replication.in.RequestProcessorService.$anonfun$processSyncRequests$2$adapted(RequestProcessorService.scala:56)
at scala.collection.Iterator.foreach(Iterator.scala:943)
at scala.collection.Iterator.foreach$(Iterator.scala:943)
at scala.collection.AbstractIterator.foreach(Iterator.scala:1431)
at scala.collection.IterableLike.foreach(IterableLike.scala:74)
at scala.collection.IterableLike.foreach$(IterableLike.scala:73)
at scala.collection.AbstractIterable.foreach(Iterable.scala:56)
at com.exalate.replication.services.replication.in.RequestProcessorService.$anonfun$processSyncRequests$1(RequestProcessorService.scala:56)
at com.exalate.replication.services.replication.in.RequestProcessorService.$anonfun$processSyncRequests$1$adapted(RequestProcessorService.scala:56)
at scala.collection.Iterator.foreach(Iterator.scala:943)
at scala.collection.Iterator.foreach$(Iterator.scala:943)
at scala.collection.AbstractIterator.foreach(Iterator.scala:1431)
at scala.collection.parallel.ParIterableLike$Foreach.leaf(ParIterableLike.scala:974)
at scala.collection.parallel.Task.$anonfun$tryLeaf$1(Tasks.scala:53)
at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
at scala.util.control.Breaks$$anon$1.catchBreak(Breaks.scala:67)
at scala.collection.parallel.Task.tryLeaf(Tasks.scala:56)
at scala.collection.parallel.Task.tryLeaf$(Tasks.scala:50)
at scala.collection.parallel.ParIterableLike$Foreach.tryLeaf(ParIterableLike.scala:971)
at scala.collection.parallel.AdaptiveWorkStealingTasks$WrappedTask.compute(Tasks.scala:153)
at scala.collection.parallel.AdaptiveWorkStealingTasks$WrappedTask.compute$(Tasks.scala:149)
at scala.collection.parallel.AdaptiveWorkStealingForkJoinTasks$WrappedTask.compute(Tasks.scala:440)
at java.base/java.util.concurrent.RecursiveAction.exec(RecursiveAction.java:189)
at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:290)
at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1020)
at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1656)
at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1594)
at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:183)
Caused by: javax.script.ScriptException: javax.script.ScriptException: groovy.lang.MissingMethodException: No signature of method: com.google.gson.internal.LinkedTreeMap.display_value() is applicable for argument types: () values: []
at org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.eval(GroovyScriptEngineImpl.java:158)
at java.scripting/javax.script.AbstractScriptEngine.eval(AbstractScriptEngine.java:264)
at com.exalate.processor.ExalateProcessor.execute(ExalateProcessor.java:98)
at com.exalate.processor.ExalateProcessor.executeProcessor(ExalateProcessor.java:55)
... 47 more
Caused by: javax.script.ScriptException: groovy.lang.MissingMethodException: No signature of method: com.google.gson.internal.LinkedTreeMap.display_value() is applicable for argument types: () values: []
at org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.eval(GroovyScriptEngineImpl.java:320)
at org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.eval(GroovyScriptEngineImpl.java:155)
... 50 more
Caused by: groovy.lang.MissingMethodException: No signature of method: com.google.gson.internal.LinkedTreeMap.display_value() is applicable for argument types: () values: []
at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecodeAdapter.java:70)
at org.codehaus.groovy.runtime.callsite.PojoMetaClassSite.call(PojoMetaClassSite.java:46)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:115)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:119)
at Script15.run(Script15.groovy:169)
at org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.eval(GroovyScriptEngineImpl.java:317)
... 51 more
Incoming sync data: Summary: Task for PRJTASK0014062Entity Key: PRJTASK0014062(id: undefined)Encoded payload: eyJ2ZXJzaW9uIjp7Im1ham9yIjoxLCJtaW5vciI6MTQsInBhdGNoIjowfSwiaHViSXNzdWUiOnsicHJpb3JpdHlOYW1lIjoiNCAtIExvdyIsIkNyZWF0ZWRCeSI6IkphY2suSGFuZHlAYmlzc2VsbC5jb20iLCJXb3JrRW5kIjoiIiwiRW5kRGF0ZSI6IjIwMjEtMTItMDIgMTc6MDA6MDAiLCJTdGFydERhdGUiOiIyMDIxLTEyLTAyIDA4OjAwOjAwIiwidXJnZW5jeSI6IjMgLSBMb3ciLCJhc3NpZ25tZW50R3JvdXAiOnsiZGlzcGxheV92YWx1ZSI6IkFuYWx5dGljcyBUZWFtIiwibGluayI6Imh0dHBzOi8vYmlzc2VsbGRldi5zZXJ2aWNlLW5vdy5jb20vYXBpL25vdy92Mi90YWJsZS9zeXNfdXNlcl9ncm91cC8yNGU3Mzg3OWRiZTYxMzAwOGM3NTVlNjVjZTk2MTk3YSIsInNjYWxhJGNvbGxlY3Rpb24kY29udmVydCRXcmFwcGVycyRNYXBXcmFwcGVyJCR1bmRlcmx5aW5nIjp7fX0sInBhcmVudF9JZCI6eyJkaXNwbGF5X3ZhbHVlIjoiUFJKMDAxMzg1NyIsImxpbmsiOiJodHRwczovL2Jpc3NlbGxkZXYuc2VydmljZS1ub3cuY29tL2FwaS9ub3cvdjIvdGFibGUvdGFzay8wZWU0ZDFmYmRiODQ4NTk0ZWM4ZjBjZDdmNDk2MTliNiIsInNjYWxhJGNvbGxlY3Rpb24kY29udmVydCRXcmFwcGVycyRNYXBXcmFwcGVyJCR1bmRlcmx5aW5nIjp7fX0sIldvcmtTdGFydCI6IiIsInN0YXRlIjoiUGVuZGluZyIsImFyZWFQYXRoIjoiQW5hbHl0aWNzIERldmVsb3BtZW50IiwiYXNzaWduZWRfdG8iOnsiZGlzcGxheV92YWx1ZSI6IkphY2sgSGFuZHkiLCJsaW5rIjoiaHR0cHM6Ly9iaXNzZWxsZGV2LnNlcnZpY2Utbm93LmNvbS9hcGkvbm93L3YyL3RhYmxlL3N5c191c2VyLzkzYTY3OGZkZGJhNjEzMDA4Yzc1NWU2NWNlOTYxOTZhIiwic2NhbGEkY29sbGVjdGlvbiRjb252ZXJ0JFdyYXBwZXJzJE1hcFdyYXBwZXIkJHVuZGVybHlpbmciOnt9fSwiY29tcG9uZW50cyI6W10sImF0dGFjaG1lbnRzIjpbXSwidm90ZXJzIjpbXSwiY3VzdG9tRmllbGRzIjp7fSwiZGVzY3JpcHRpb24iOiJUaGlzIG9uZSBpcyBUSEUgb25lLiIsIndhdGNoZXJzIjpbXSwiZml4VmVyc2lvbnMiOltdLCJzdW1tYXJ5IjoiVGFzayBmb3IgUFJKVEFTSzAwMTQwNjIiLCJjb21tZW50cyI6W3siaWQiOiIzNTZkMWZhYmRiOWMwMTE4ZWM4ZjBjZDdmNDk2MTliYSIsImF1dGhvciI6eyJrZXkiOiJKYWNrLkhhbmR5QGJpc3NlbGwuY29tIiwiYWN0aXZlIjpmYWxzZSwiZGlzcGxheU5hbWUiOiJKYWNrLkhhbmR5QGJpc3NlbGwuY29tIiwidXNlcm5hbWUiOiJKYWNrLkhhbmR5QGJpc3NlbGwuY29tIn0sImJvZHkiOiJMaWtlIE5lbyBmcm9tIFRoZSBNYXRyaXgiLCJjcmVhdGVkIjoxNjM5NTA4Njg5MDAwLCJpbnRlcm5hbCI6dHJ1ZSwicmVzdHJpY3RTeW5jIjpmYWxzZX1dLCJpbnRlcm5hbE1hcCI6eyJwcmlvcml0eU5hbWUiOiI0IC0gTG93IiwiQ3JlYXRlZEJ5IjoiSmFjay5IYW5keUBiaXNzZWxsLmNvbSIsIldvcmtFbmQiOiIiLCJFbmREYXRlIjoiMjAyMS0xMi0wMiAxNzowMDowMCIsIlN0YXJ0RGF0ZSI6IjIwMjEtMTItMDIgMDg6MDA6MDAiLCJ1cmdlbmN5IjoiMyAtIExvdyIsImFzc2lnbm1lbnRHcm91cCI6eyJkaXNwbGF5X3ZhbHVlIjoiQW5hbHl0aWNzIFRlYW0iLCJsaW5rIjoiaHR0cHM6Ly9iaXNzZWxsZGV2LnNlcnZpY2Utbm93LmNvbS9hcGkvbm93L3YyL3RhYmxlL3N5c191c2VyX2dyb3VwLzI0ZTczODc5ZGJlNjEzMDA4Yzc1NWU2NWNlOTYxOTdhIiwic2NhbGEkY29sbGVjdGlvbiRjb252ZXJ0JFdyYXBwZXJzJE1hcFdyYXBwZXIkJHVuZGVybHlpbmciOnt9fSwicGFyZW50X0lkIjp7ImRpc3BsYXlfdmFsdWUiOiJQUkowMDEzODU3IiwibGluayI6Imh0dHBzOi8vYmlzc2VsbGRldi5zZXJ2aWNlLW5vdy5jb20vYXBpL25vdy92Mi90YWJsZS90YXNrLzBlZTRkMWZiZGI4NDg1OTRlYzhmMGNkN2Y0OTYxOWI2Iiwic2NhbGEkY29sbGVjdGlvbiRjb252ZXJ0JFdyYXBwZXJzJE1hcFdyYXBwZXIkJHVuZGVybHlpbmciOnt9fSwiV29ya1N0YXJ0IjoiIiwic3RhdGUiOiJQZW5kaW5nIiwiYXJlYVBhdGgiOiJBbmFseXRpY3MgRGV2ZWxvcG1lbnQiLCJhc3NpZ25lZF90byI6eyJkaXNwbGF5X3ZhbHVlIjoiSmFjayBIYW5keSIsImxpbmsiOiJodHRwczovL2Jpc3NlbGxkZXYuc2VydmljZS1ub3cuY29tL2FwaS9ub3cvdjIvdGFibGUvc3lzX3VzZXIvOTNhNjc4ZmRkYmE2MTMwMDhjNzU1ZTY1Y2U5NjE5NmEiLCJzY2FsYSRjb2xsZWN0aW9uJGNvbnZlcnQkV3JhcHBlcnMkTWFwV3JhcHBlciQkdW5kZXJseWluZyI6e319fSwicHJpb3JpdHkiOnsibmFtZSI6IjQgLSBMb3ciLCJkZXNjcmlwdGlvbiI6IiJ9LCJsYWJlbHMiOltdLCJjdXN0b21LZXlzIjp7fSwid29ya0xvZ3MiOltdLCJhZmZlY3RlZFZlcnNpb25zIjpbXSwic2V2ZXJpdHlOYW1lIjoiMyAtIExvdyIsImVudGl0eVByb3BlcnRpZXMiOnt9fSwiaXNzdWVVcmwiOiJodHRwczovL2Jpc3NlbGxkZXYuc2VydmljZS1ub3cuY29tL25hdl90by5kbz91cmk9cG1fcHJvamVjdF90YXNrLmRvP3N5c19pZD0zZjU4OGFjOGRiMTQwOTk0ZWM4ZjBjZDdmNDk2MTllNSJ9