繁体   English   中英

使用 GmailAPI 在 selenium java 中获取电子邮件正文内容

[英]Get email body content in selenium java using GmailAPI

得到

runtimexception : illegalArgumentException cannot invoke method getAt() on null object

不确定它所指的 null obj 是什么,但我确信它发生在执行电子邮件正文内容时。

当前代码:

public static HashMap<String, String> getGmailData(String query) {
            
            try {
                Gmail service = getService();
                System.out.println("service is found...."+service);
                List<Message> messages = listMessagesMatchingQuery(service, USER_ID, query);
                System.out.println("Messages List is found...."+messages);
                Message message = getMessage(service, USER_ID, messages, 0);
                System.out.println("Messages...."+message);
                JsonPath jp = new JsonPath(message.toString());
                System.out.println("jsonpath...."+jp);
                String subject = jp.getString("payload.headers.find { it.name == 'Subject' }.value");
                System.out.println("subject...."+subject);
                System.out.println("Before Body ...."+subject);
            
                String body = new String(Base64.getUrlDecoder().decode(jp.getString("payload.parts[0].body.data")));
              //  String body = new String(Base64.getDecoder().decode(jp.getString("payload.parts.body.data")));
                //   String body = new String(message.getPayload().getParts().get(0).getBody().decodeData());
               // String body = new String(Base64.getMimeDecoder().decode(jp.getString("payload.body.data")));
                System.out.println("After Body ...."+body);
                String link = null;
                //System.out.println("body...."+body);
                String arr[] = body.split("\n");
                for(String s: arr) {
                    s = s.trim();
                    if(s.startsWith("http:",1)) 
                    {
                        link = s;
                    }
                }
                System.out.println("link...."+link);
                HashMap<String, String> hm = new HashMap<String, String>();
                hm.put("subject", subject);
                hm.put("body", body);
                hm.put("link", link);
                return hm;
            } catch (Exception e) {
                    System.out.println("email not found....");
                throw new RuntimeException(e);
            }
        }

完整的堆栈跟踪:

Exception in thread "main" java.lang.RuntimeException: java.lang.IllegalArgumentException: Cannot invoke method getAt() on null object
    at GmailAPILib.GmailAPI.getGmailData(GmailAPI.java:185)
    at GmailAPILib.GmailAPI.main(GmailAPI.java:309)
Caused by: java.lang.IllegalArgumentException: Cannot invoke method getAt() on null object
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77)
    at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499)
    at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:480)
    at org.codehaus.groovy.reflection.CachedConstructor.invoke(CachedConstructor.java:72)
    at org.codehaus.groovy.runtime.callsite.ConstructorSite$ConstructorSiteNoUnwrapNoCoerce.callConstructor(ConstructorSite.java:105)
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallConstructor(CallSiteArray.java:59)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:263)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:286)
    at io.restassured.internal.path.json.JSONAssertion.getAsJsonObject(JSONAssertion.groovy:57)
    at io.restassured.internal.path.json.JSONAssertion$getAsJsonObject.callCurrent(Unknown Source)
    at io.restassured.internal.path.json.JSONAssertion.getResult(JSONAssertion.groovy:28)
    at io.restassured.path.json.JsonPath.get(JsonPath.java:203)
    at io.restassured.path.json.JsonPath.getString(JsonPath.java:352)
    at GmailAPILib.GmailAPI.getGmailData(GmailAPI.java:162)
    ... 1 more
Caused by: java.lang.NullPointerException: Cannot invoke method getAt() on null object
    at org.codehaus.groovy.runtime.NullObject.invokeMethod(NullObject.java:91)
    at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:44)
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47)
    at org.codehaus.groovy.runtime.callsite.NullCallSite.call(NullCallSite.java:34)
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:139)
    at Script1.run(Script1.groovy:1)
    at groovy.lang.GroovyShell.evaluate(GroovyShell.java:431)
    at groovy.lang.GroovyShell.evaluate(GroovyShell.java:465)
    at groovy.lang.GroovyShell.evaluate(GroovyShell.java:440)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:568)
    at org.codehaus.groovy.runtime.callsite.PlainObjectMetaMethodSite.doInvoke(PlainObjectMetaMethodSite.java:43)
    at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite$PogoCachedMethodSiteNoUnwrap.invoke(PogoMetaMethodSite.java:182)
    at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite.call(PogoMetaMethodSite.java:73)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:139)
    at io.restassured.internal.path.json.JSONAssertion.eval(JSONAssertion.groovy:80)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:568)
    at org.codehaus.groovy.runtime.callsite.PlainObjectMetaMethodSite.doInvoke(PlainObjectMetaMethodSite.java:43)
    at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite$PogoCachedMethodSiteNoUnwrapNoCoerce.invoke(PogoMetaMethodSite.java:193)
    at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite.callCurrent(PogoMetaMethodSite.java:61)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:203)
    at io.restassured.internal.path.json.JSONAssertion.getAsJsonObject(JSONAssertion.groovy:46)
    ... 6 more

信息....

{
    "historyId": "4210718",
    "id": "1817d4cff3c44ea0",
    "internalDate": "1655664606000",
    "labelIds": ["IMPORTANT", "CATEGORY_PERSONAL", "INBOX"],
    "payload": {
        "body": {
            "data": "PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgU3RyaWN0Ly9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXN0cmljdC5kdGQiPg0KPGh0bWwgZGF0YS1lZGl0b3ItdmVyc2lvbj0iMiIgY2xhc3M9InNnLWNhbXBhaWducyIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPg0KICAgIDxoZWFkPg0KICAgICAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPg0KICAgICAgPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xLCBtaW5pbXVtLXNjYWxlPTEsIG1heGltdW0tc2NhbGU9MSI-DQogICAgICA8IS0tW2lmICFtc29dPjwhLS0-DQogICAgICA8bWV0YSBodHRwLWVxdWl2PSJYLVVBLUNvbXBhdGlibGUiIGNvbnRlbnQ9IklFPUVkZ2UiPg0KICAgICAgPCEtLTwhW2VuZGlmXS0tPg0KICAgICAgPCEtLVtpZiAoZ3RlIG1zbyA5KXwoSUUpXT4NCiAgICAgIDx4bWw-DQogICAgICAgIDxvOk9mZmljZURvY3VtZW50U2V0dGluZ3M-DQogICAgICAgICAgPG86QWxsb3dQTkcvPg0KICAgICAgICAgIDxvOlBpeGVsc1BlckluY2g-OTY8L286UGl4ZWxzUGVySW5jaD4NCiAgICAgICAgPC9vOk9mZmljZURvY3VtZW50U2V0dGluZ3M-DQogICAgICA8L3htbD4NCiAgICAgIDwhW2VuZGlmXS0tPg0KICAgICAgPCEtLVtpZiAoZ3RlIG1zbyA5KXwoSUUpXT4NCiAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4NCiAgICBib2R5IHt3aWR0aDogNjAwcHg7bWFyZ2luOiAwIGF1dG87fQ0KICAgIHRhYmxlIHtib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO30NCiAgICB0YWJsZSwgdGQge21zby10YWJsZS1sc3BhY2U6IDBwdDttc28tdGFibGUtcnNwYWNlOiAwcHQ7fQ0KICAgIGltZyB7LW1zLWludGVycG9sYXRpb24tbW9kZTogYmljdWJpYzt9DQogIDwvc3R5bGU-DQo8IVtlbmRpZl0tLT4NCiAgICAgIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI-DQogICAgYm9keSwgcCwgZGl2IHsNCiAgICAgIGZvbnQtZmFtaWx5OiBpbmhlcml0Ow0KICAgICAgZm9udC1zaXplOiAxNHB4Ow0KICAgIH0NCiAgICBib2R5IHsNCiAgICAgIGNvbG9yOiAjMDAwMDAwOw0KICAgIH0NCiAgICBib2R5IGEgew0KICAgICAgY29sb3I6ICMxMTg4RTY7DQogICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7DQogICAgfQ0KICAgIHAgeyBtYXJnaW46IDA7IHBhZGRpbmc6IDA7IH0NCiAgICB0YWJsZS53cmFwcGVyIHsNCiAgICAgIHdpZHRoOjEwMCUgIWltcG9ydGFudDsNCiAgICAgIHRhYmxlLWxheW91dDogZml4ZWQ7DQogICAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDsNCiAgICAgIC13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsNCiAgICAgIC1tb3otdGV4dC1zaXplLWFkanVzdDogMTAwJTsNCiAgICAgIC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOw0KICAgIH0NCiAgICBpbWcubWF4LXdpZHRoIHsNCiAgICAgIG1heC13aWR0aDogMTAwJSAhaW1wb3J0YW50Ow0KICAgIH0NCiAgICAuY29sdW1uLm9mLTIgew0KICAgICAgd2lkdGg6IDUwJTsNCiAgICB9DQogICAgLmNvbHVtbi5vZi0zIHsNCiAgICAgIHdpZHRoOiAzMy4zMzMlOw0KICAgIH0NCiAgICAuY29sdW1uLm9mLTQgew0KICAgICAgd2lkdGg6IDI1JTsNCiAgICB9DQogICAgdWwgdWwgdWwgdWwgIHsNCiAgICAgIGxpc3Qtc3R5bGUtdHlwZTogZGlzYyAhaW1wb3J0YW50Ow0KICAgIH0NCiAgICBvbCBvbCB7DQogICAgICBsaXN0LXN0eWxlLXR5cGU6IGxvd2VyLXJvbWFuICFpbXBvcnRhbnQ7DQogICAgfQ0KICAgIG9sIG9sIG9sIHsNCiAgICAgIGxpc3Qtc3R5bGUtdHlwZTogbG93ZXItbGF0aW4gIWltcG9ydGFudDsNCiAgICB9DQogICAgb2wgb2wgb2wgb2wgew0KICAgICAgbGlzdC1zdHlsZS10eXBlOiBkZWNpbWFsICFpbXBvcnRhbnQ7DQogICAgfQ0KICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6NDgwcHgpIHsNCiAgICAgIC5wcmVoZWFkZXIgLnJpZ2h0Q29sdW1uQ29udGVudCwNCiAgICAgIC5mb290ZXIgLnJpZ2h0Q29sdW1uQ29udGVudCB7DQogICAgICAgIHRleHQtYWxpZ246IGxlZnQgIWltcG9ydGFudDsNCiAgICAgIH0NCiAgICAgIC5wcmVoZWFkZXIgLnJpZ2h0Q29sdW1uQ29udGVudCBkaXYsDQogICAgICAucHJlaGVhZGVyIC5yaWdodENvbHVtbkNvbnRlbnQgc3BhbiwNCiAgICAgIC5mb290ZXIgLnJpZ2h0Q29sdW1uQ29udGVudCBkaXYsDQogICAgICAuZm9vdGVyIC5yaWdodENvbHVtbkNvbnRlbnQgc3BhbiB7DQogICAgICAgIHRleHQtYWxpZ246IGxlZnQgIWltcG9ydGFudDsNCiAgICAgIH0NCiAgICAgIC5wcmVoZWFkZXIgLnJpZ2h0Q29sdW1uQ29udGVudCwNCiAgICAgIC5wcmVoZWFkZXIgLmxlZnRDb2x1bW5Db250ZW50IHsNCiAgICAgICAgZm9udC1zaXplOiA4MCUgIWltcG9ydGFudDsNCiAgICAgICAgcGFkZGluZzogNXB4IDA7DQogICAgICB9DQogICAgICB0YWJsZS53cmFwcGVyLW1vYmlsZSB7DQogICAgICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7DQogICAgICAgIHRhYmxlLWxheW91dDogZml4ZWQ7DQogICAgICB9DQogICAgICBpbWcubWF4LXdpZHRoIHsNCiAgICAgICAgaGVpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7DQogICAgICAgIG1heC13aWR0aDogMTAwJSAhaW1wb3J0YW50Ow0KICAgICAgfQ0KICAgICAgYS5idWxsZXRwcm9vZi1idXR0b24gew0KICAgICAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50Ow0KICAgICAgICB3aWR0aDogYXV0byAhaW1wb3J0YW50Ow0KICAgICAgICBmb250LXNpemU6IDgwJTsNCiAgICAgICAgcGFkZGluZy1sZWZ0OiAwICFpbXBvcnRhbnQ7DQogICAgICAgIHBhZGRpbmctcmlnaHQ6IDAgIWltcG9ydGFudDsNCiAgICAgIH0NCiAgICAgIC5jb2x1bW5zIHsNCiAgICAgICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsNCiAgICAgIH0NCiAgICAgIC5jb2x1bW4gew0KICAgICAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50Ow0KICAgICAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50Ow0KICAgICAgICBwYWRkaW5nLWxlZnQ6IDAgIWltcG9ydGFudDsNCiAgICAgICAgcGFkZGluZy1yaWdodDogMCAhaW1wb3J0YW50Ow0KICAgICAgICBtYXJnaW4tbGVmdDogMCAhaW1wb3J0YW50Ow0KICAgICAgICBtYXJnaW4tcmlnaHQ6IDAgIWltcG9ydGFudDsNCiAgICAgIH0NCiAgICAgIC5zb2NpYWwtaWNvbi1jb2x1bW4gew0KICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2sgIWltcG9ydGFudDsNCiAgICAgIH0NCg0KICAgIC5jb250YWluZXIgew0KICAgICAgcG9zaXRpb246IHJlbGF0aXZlOw0KICAgICAgdGV4dC1hbGlnbjogY2VudGVyOw0KICAgICAgY29sb3I6ICAjMUJDNTlDOzsNCiAgICB9DQogICAgLmJvdHRvbS1yaWdodCB7DQogICAgICBwb3NpdGlvbjogYWJzb2x1dGU7DQogICAgICBib3R0b206IDIwcHggIWltcG9ydGFudDsNCiAgICAgIHJpZ2h0OiAzMHB4ICFpbXBvcnRhbnQ7DQoNCiAgICB9DQogICAgfQ0KDQogICAgLmNvbnRhaW5lciB7DQoNCiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsNCiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsNCiAgICAgIGNvbG9yOiAgIzFCQzU5Qzs7DQogICAgICBoZWlnaHQ6MTMycHg7DQogICAgfQ0KICAgIC5ib3R0b20tcmlnaHQgew0KICAgICAgcG9zaXRpb246IGFic29sdXRlOw0KICAgICAgYm90dG9tOiAyMHB4ICFpbXBvcnRhbnQ7DQogICAgICByaWdodDogMzBweCAhaW1wb3J0YW50Ow0KDQogICAgfQ0KICA8L3N0eWxlPg0KICAgICAgPCEtLXVzZXIgZW50ZXJlZCBIZWFkIFN0YXJ0LS0-PGxpbmsgaHJlZj0iaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbS9jc3M_ZmFtaWx5PUludGVyJmRpc3BsYXk9c3dhcCIgcmVsPSJzdHlsZXNoZWV0Ij48c3R5bGU-DQpib2R5IHtmb250LWZhbWlseTogJ0ludGVyJywgc2Fucy1zZXJpZjt9DQo8L3N0eWxlPjwhLS1FbmQgSGVhZCB1c2VyIGVudGVyZWQtLT4NCiAgICA8L2hlYWQ-DQoNCg0KICAgIDxib2R5Pg0KICAgICAgPGNlbnRlciBjbGFzcz0id3JhcHBlciIgZGF0YS1saW5rLWNvbG9yPSIjMTE4OEU2IiBkYXRhLWJvZHktc3R5bGU9ImZvbnQtc2l6ZToxNHB4OyBmb250LWZhbWlseTppbmhlcml0OyBjb2xvcjojMDAwMDAwOyBiYWNrZ3JvdW5kLWNvbG9yOiNlY2VjZWM7Ij4NCiAgICAgICAgPGRpdiBjbGFzcz0id2Via2l0Ij4NCiAgICAgICAgICA8dGFibGUgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiBib3JkZXI9IjAiIHdpZHRoPSIxMDAlIiBjbGFzcz0id3JhcHBlciIgYmdjb2xvcj0iI2VjZWNlYyI-DQogICAgICAgICAgICA8dHI-DQogICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCIgYmdjb2xvcj0iI2VjZWNlYyIgd2lkdGg9IjEwMCUiPg0KICAgICAgICAgICAgICAgIDx0YWJsZSB3aWR0aD0iMTAwJSIgcm9sZT0iY29udGVudC1jb250YWluZXIiIGNsYXNzPSJvdXRlciIgYWxpZ249ImNlbnRlciIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiBib3JkZXI9IjAiPg0KICAgICAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEwMCUiPg0KICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSB3aWR0aD0iMTAwJSIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiBib3JkZXI9IjAiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLVtpZiBtc29dPg0KICAgIDxjZW50ZXI-DQogICAgPHRhYmxlPjx0cj48dGQgd2lkdGg9IjYwMCI-DQogIDwhW2VuZGlmXS0tPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIHdpZHRoPSIxMDAlIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIGJvcmRlcj0iMCIgc3R5bGU9IndpZHRoOjEwMCU7IG1heC13aWR0aDo2MDBweDsiIGFsaWduPSJjZW50ZXIiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHJvbGU9Im1vZHVsZXMtY29udGFpbmVyIiBzdHlsZT0icGFkZGluZzowcHggMHB4IDBweCAwcHg7IGNvbG9yOiMwMDAwMDA7IHRleHQtYWxpZ246bGVmdDsiIGJnY29sb3I9IiNGRkZGRkYiIHdpZHRoPSIxMDAlIiBhbGlnbj0ibGVmdCI-PHRhYmxlIGNsYXNzPSJtb2R1bGUgcHJlaGVhZGVyIHByZWhlYWRlci1oaWRlIiByb2xlPSJtb2R1bGUiIGRhdGEtdHlwZT0icHJlaGVhZGVyIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgd2lkdGg9IjEwMCUiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7IG1zby1oaWRlOiBhbGw7IHZpc2liaWxpdHk6IGhpZGRlbjsgb3BhY2l0eTogMDsgY29sb3I6IHRyYW5zcGFyZW50OyBoZWlnaHQ6IDA7IHdpZHRoOiAwOyI-DQogICAgPHRyPg0KICAgICAgPHRkIHJvbGU9Im1vZHVsZS1jb250ZW50Ij4NCiAgICAgICAgPHA-PC9wPg0KICAgICAgPC90ZD4NCiAgICA8L3RyPg0KICA8L3RhYmxlPg0KICA8dGFibGUgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIGFsaWduPSJjZW50ZXIiIHdpZHRoPSIxMDAlIiByb2xlPSJtb2R1bGUiIGRhdGEtdHlwZT0iY29sdW1ucyIgc3R5bGU9InBhZGRpbmc6NnB4IDBweCAzMHB4IDBweDsiIGJnY29sb3I9IiNmZmZmZmYiIGRhdGEtZGlzdHJpYnV0aW9uPSIxIj4NCiAgICA8dGJvZHk-DQogICAgICA8dHIgcm9sZT0ibW9kdWxlLWNvbnRlbnQiPg0KICAgICAgICA8dGQgaGVpZ2h0PSIxMDAlIiB2YWxpZ249InRvcCI-PHRhYmxlIHdpZHRoPSI2MDAiIHN0eWxlPSJ3aWR0aDo2MDBweDsgYm9yZGVyLXNwYWNpbmc6MDsgYm9yZGVyLWNvbGxhcHNlOmNvbGxhcHNlOyBtYXJnaW46MHB4IDBweCAwcHggMHB4OyIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiBhbGlnbj0ibGVmdCIgYm9yZGVyPSIwIiBiZ2NvbG9yPSIiIGNsYXNzPSJjb2x1bW4gY29sdW1uLTAiPg0KICAgICAgPHRib2R5Pg0KICAgICAgICA8dHI-DQogICAgICAgICAgPHRkIHN0eWxlPSJwYWRkaW5nOjBweDttYXJnaW46MHB4O2JvcmRlci1zcGFjaW5nOjA7Ij48dGFibGUgY2xhc3M9IndyYXBwZXIiIHJvbGU9Im1vZHVsZSIgZGF0YS10eXBlPSJpbWFnZSIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIHdpZHRoPSIxMDAlIiBzdHlsZT0idGFibGUtbGF5b3V0OiBmaXhlZDsiIGRhdGEtbXVpZD0iYzdmYTE3MmEtY2RiZi00ZTg1LWFjODItNjA4NDRiMzJkZDYyIj4NCiAgICA8dGJvZHk-DQogICAgICA8dHI-DQoNCjx0ZCBzdHlsZT0iZm9udC1zaXplOjZweDsgbGluZS1oZWlnaHQ6MTBweDsgcGFkZGluZzowcHggMHB4IDBweCAwcHg7IiAgIHZhbGlnbj0idG9wIj4NCg0KICAgIDxkaXYgY2xhc3M9ImNvbnRhaW5lciIgc3R5bGU9ImhlaWdodDoxNTBweDt3aWR0aDoxMDAlO2JhY2tncm91bmQtaW1hZ2U6dXJsKCdodHRwOi8vY2RuLm1jYXV0by1pbWFnZXMtcHJvZHVjdGlvbi5zZW5kZ3JpZC5uZXQvMTM4NjM0M2U4MDBlNjI0OC83NzdkN2RhYS03NjY0LTRkM2ItODA3My1hOGUwZGYwNjAxMzEvNjAweDEzMy5qcGcnKTtiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQiPg0KDQoNCiAgICA8ZGl2IHN0eWxlPSJwYWRkaW5nLXRvcDoxMDBweCAhaW1wb3J0YW50O3BhZGRpbmctcmlnaHQ6MzBweCAhaW1wb3J0YW50O2ZvbnQtc2l6ZToxMnB4O3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0OjMwcHggIWltcG9ydGFudDsgYm90dG9tOjMwcHghaW1wb3J0YW50O3otaW5kZXg6MTA7IHRleHQtYWxpZ246cmlnaHQ7Ij48YQ0KICAgICAgc3R5bGU9IiBjb2xvcjojMUJDNTlDOyINCiAgICAgIGhyZWY9Imh0dHBzOi8vZ2V0c2VjdXJlZC5haSIgY2xpY2t0cmFja2luZz0ib2ZmIj5WaWV3IG91ciB3ZWJzaXRlPC9hPjwvZGl2Pg0KDQoNCjwvZGl2Pg0KPC90ZD4NCiAgICAgIDwvdHI-DQogICAgPC90Ym9keT4NCiAgPC90YWJsZT4NCiAgPHRhYmxlIGNsYXNzPSJtb2R1bGUiIHJvbGU9Im1vZHVsZSIgZGF0YS10eXBlPSJ0ZXh0IiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgd2lkdGg9IjEwMCUiIHN0eWxlPSJ0YWJsZS1sYXlvdXQ6IGZpeGVkOyIgZGF0YS1tdWlkPSJmYmFjN2JlZS1jOTlkLTQ1ZjktOGFhMS1iZjY2YmEzZjRkMTYiIGRhdGEtbWMtbW9kdWxlLXZlcnNpb249IjIwMTktMTAtMjIiPg0KICAgIDx0Ym9keT4NCiAgICAgIDx0cj4NCiAgICAgICAgPHRkIHN0eWxlPSJwYWRkaW5nOjBweCAwcHggMHB4IDBweDsgbGluZS1oZWlnaHQ6MzBweDsgdGV4dC1hbGlnbjppbmhlcml0OyBjb2xvcjojMjUyODJCICFpbXBvcnRhbnQ7IiBoZWlnaHQ9IjEwMCUiIHZhbGlnbj0idG9wIiAgIHJvbGU9Im1vZHVsZS1jb250ZW50Ij48ZGl2PjxoMiBzdHlsZT0idGV4dC1hbGlnbjogY2VudGVyOw0KICAgICAgICBmb250LXN0eWxlOmludGVyIj5Mb2cgaW4gU3VjY2Vzc2Z1bCE8L2gyPjxkaXY-PC9kaXY-PC9kaXY-PC90ZD4NCiAgICAgIDwvdHI-DQogICAgPC90Ym9keT4NCiAgPC90YWJsZT48L3RkPg0KICAgICAgICA8L3RyPg0KICAgICAgPC90Ym9keT4NCiAgICA8L3RhYmxlPjwvdGQ-DQogICAgICA8L3RyPg0KICAgIDwvdGJvZHk-DQogIDwvdGFibGU-PHRhYmxlIGNsYXNzPSJ3cmFwcGVyIiByb2xlPSJtb2R1bGUiIGRhdGEtdHlwZT0iaW1hZ2UiIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiB3aWR0aD0iMTAwJSIgc3R5bGU9InRhYmxlLWxheW91dDogZml4ZWQ7IiBkYXRhLW11aWQ9ImNiMzFlOWI4LWIwNDUtNGMzOC1hNDc4LWVkMmE2ZTJkYzE2NiI-DQogICAgPHRib2R5Pg0KICAgICAgPHRyPg0KICAgICAgICA8dGQgc3R5bGU9ImZvbnQtc2l6ZTo2cHg7IGxpbmUtaGVpZ2h0OjEwcHg7IHBhZGRpbmc6MHB4IDBweCAxMHB4IDBweDsiIHZhbGlnbj0idG9wIiBhbGlnbj0iY2VudGVyIj4NCiAgICAgICAgICA8aW1nIGNsYXNzPSJtYXgtd2lkdGgiIGJvcmRlcj0iMCIgc3R5bGU9ImRpc3BsYXk6YmxvY2s7IGNvbG9yOiMwMDAwMDA7IHRleHQtZGVjb3JhdGlvbjpub25lOyBmb250LWZhbWlseTpIZWx2ZXRpY2EsIGFyaWFsLCBzYW5zLXNlcmlmOyBmb250LXNpemU6MTZweDsiIHdpZHRoPSIzMTIiIGFsdD0iIiBkYXRhLXByb3BvcnRpb25hbGx5LWNvbnN0cmFpbmVkPSJ0cnVlIiBkYXRhLXJlc3BvbnNpdmU9ImZhbHNlIiBzcmM9Imh0dHA6Ly9jZG4ubWNhdXRvLWltYWdlcy1wcm9kdWN0aW9uLnNlbmRncmlkLm5ldC8xMzg2MzQzZTgwMGU2MjQ4Lzg1NjA5ZTIyLTIyYzItNGJiZC05ZGVmLWUxODgzMGY2YzViYi8zMTJ4MjA5LnBuZyIgaGVpZ2h0PSIyMDkiPg0KICAgICAgICA8L3RkPg0KICAgICAgPC90cj4NCiAgICA8L3Rib2R5Pg0KICA8L3RhYmxlPjx0YWJsZSBjbGFzcz0ibW9kdWxlIiByb2xlPSJtb2R1bGUiIGRhdGEtdHlwZT0idGV4dCIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIHdpZHRoPSIxMDAlIiBzdHlsZT0idGFibGUtbGF5b3V0OiBmaXhlZDsiIGRhdGEtbXVpZD0iOGZkNzExZTYtYWVjZi00NjYzLWJmNTMtNjYwN2YwOGI1N2U5IiBkYXRhLW1jLW1vZHVsZS12ZXJzaW9uPSIyMDE5LTEwLTIyIj4NCiAgICA8dGJvZHk-DQogICAgICA8dHI-DQogICAgICAgIDx0ZCBzdHlsZT0icGFkZGluZzozcHggNXB4IDI3cHggNXB4OyBsaW5lLWhlaWdodDoyNHB4OyBsZXR0ZXItc3BhY2luZzogMC4xcHg7IHRleHQtYWxpZ246aW5oZXJpdDsiIGhlaWdodD0iMTAwJSIgdmFsaWduPSJ0b3AiIGJnY29sb3I9IiIgcm9sZT0ibW9kdWxlLWNvbnRlbnQiPjxkaXY-PGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6IGluaGVyaXQ7IHRleHQtYWxpZ246IGNlbnRlciI-Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PC9kaXY-DQo8ZGl2IHN0eWxlPSJmb250LWZhbWlseTogaW5oZXJpdDsgdGV4dC1hbGlnbjogY2VudGVyIj48c3BhbiBzdHlsZT0id2hpdGUtc3BhY2U6IHByZS13cmFwOyBmb250LWZhbWlseTogaW5oZXJpdDsgY29sb3I6ICM1MjU3NUM7Ij5XZWxjb21lIHRvIEdFVFNlY3VyZWQuIFBsZWFzZSBjbGljayB0aGUgYmVsb3cgYnV0dG9uIGFuZCBzdGFydCB1c2luZyA8YnI-R0VUU2VjdXJlZCB0aHJlYWQgbW9uaXRvcmluZyBkYXNoYm9hcmQuPC9zcGFuPjwvZGl2PjxkaXY-PC9kaXY-PC9kaXY-PC90ZD4NCg0KICAgICAgPC90cj4NCiAgICA8L3Rib2R5Pg0KICA8L3RhYmxlPjx0YWJsZSBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgY2xhc3M9Im1vZHVsZSIgZGF0YS1yb2xlPSJtb2R1bGUtYnV0dG9uIiBkYXRhLXR5cGU9ImJ1dHRvbiIgcm9sZT0ibW9kdWxlIiBzdHlsZT0idGFibGUtbGF5b3V0OmZpeGVkOyIgd2lkdGg9IjEwMCUiIGRhdGEtbXVpZD0iMGY5ODY4NTctODdkZi00YzBlLTkzNGYtZTc3MTA1Zjc4MTkyIj4NCiAgICAgIDx0Ym9keT4NCiAgICAgICAgPHRyPg0KICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiBiZ2NvbG9yPSIiIGNsYXNzPSJvdXRlci10ZCIgc3R5bGU9InBhZGRpbmc6MHB4IDBweCAwcHggMHB4OyI-DQogICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIGNsYXNzPSJ3cmFwcGVyLW1vYmlsZSIgc3R5bGU9InRleHQtYWxpZ246Y2VudGVyOyI-DQogICAgICAgICAgICAgIDx0Ym9keT4NCiAgICAgICAgICAgICAgICA8dHI-DQogICAgICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIGJnY29sb3I9IiMxYmM1OWMiIGNsYXNzPSJpbm5lci10ZCIgc3R5bGU9ImJvcmRlci1yYWRpdXM6NnB4OyBmb250LXNpemU6MTZweDsgdGV4dC1hbGlnbjpjZW50ZXI7IGJhY2tncm91bmQtY29sb3I6aW5oZXJpdDsiPg0KICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovLzUyLjIyMC45Mi42Mjo0MzIxMC9sb2dpbj9rZXk9ZXlKMGVYQWlPaUpLVjFRaUxDSmhiR2NpT2lKSVV6STFOaUo5LmV5SmxlSEFpT2pFMk5UVTJOalE1TURVc0ltbGhkQ0k2TVRZMU5UWTJORFl3TlN3aWMzVmlJam9pTmpKaE1EVmpaVFUwT0RGaFpUTm1ZV1F4Tm1SaE5ETTVJaXdpZEdWaGJWVnpaWEpTYjJ4bElqb2lJbjAud1l5NGNGSWpmX0RzRDBBVkVpYmQyaHRtQVB1QU42aG9qd3JPRlR1WFJ5USIgY2xpY2t0cmFja2luZz0ib2ZmIiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjojMUJDNTlDOyBib3JkZXI6MHB4IHNvbGlkICNmZmZmZmY7IGJvcmRlci1jb2xvcjojZmZmZmZmOyBib3JkZXItcmFkaXVzOjI2cHg7IGJvcmRlci13aWR0aDowcHg7IGNvbG9yOiNmZmZmZmY7IGRpc3BsYXk6aW5saW5lLWJsb2NrOyBmb250LXNpemU6MTJweDsgZm9udC13ZWlnaHQ6OTAwOyBsZXR0ZXItc3BhY2luZzoxcHg7IGxpbmUtaGVpZ2h0OjE4cHg7IHBhZGRpbmc6MTNweCAyNXB4IDEzcHggMjVweDsgdGV4dC1hbGlnbjpjZW50ZXI7IHRleHQtZGVjb3JhdGlvbjpub25lOyBib3JkZXItc3R5bGU6c29saWQ7IGZvbnQtZmFtaWx5OmluaGVyaXQ7IGNvbG9yOiNGRUZFRkU7IiB0YXJnZXQ9Il9ibGFuayI-QWNjZXNzIERhc2hib2FyZDwvYT4NCiAgICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgICAgIDwvdHI-DQogICAgICAgICAgICAgIDwvdGJvZHk-DQogICAgICAgICAgICA8L3RhYmxlPg0KICAgICAgICAgIDwvdGQ-DQogICAgICAgIDwvdHI-DQogICAgICA8L3Rib2R5Pg0KICAgIDwvdGFibGU-DQogIDx0YWJsZSBjbGFzcz0ibW9kdWxlIiByb2xlPSJtb2R1bGUiIGRhdGEtdHlwZT0ic3BhY2VyIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgd2lkdGg9IjEwMCUiIHN0eWxlPSJ0YWJsZS1sYXlvdXQ6IGZpeGVkOyIgZGF0YS1tdWlkPSI1NGRhMzQyOC1mZWFlLTRjMWEtYTc0MC05YzlmZGI0ZTUyZDciPg0KICAgIDx0Ym9keT4NCiAgICAgIDx0cj4NCiAgICAgICAgPHRkIHN0eWxlPSJwYWRkaW5nOjBweCAwcHggNDBweCAwcHg7IiByb2xlPSJtb2R1bGUtY29udGVudCIgYmdjb2xvcj0iIj4NCiAgICAgICAgPC90ZD4NCiAgICAgIDwvdHI-DQogICAgPC90Ym9keT4NCiAgPC90YWJsZT48dGFibGUgY2xhc3M9Im1vZHVsZSIgcm9sZT0ibW9kdWxlIiBkYXRhLXR5cGU9ImRpdmlkZXIiIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiB3aWR0aD0iMTAwJSIgc3R5bGU9InRhYmxlLWxheW91dDogZml4ZWQ7IiBkYXRhLW11aWQ9ImM2MTRkOGIxLTI0OGEtNDhlYS1hMzBhLThkZDBiMmM2NWUxMC4xLjIuMSI-DQogICAgPHRib2R5Pg0KICAgICAgPHRyPg0KICAgICAgICA8dGQgc3R5bGU9InBhZGRpbmc6MHB4IDQwcHggMHB4IDQwcHg7IiByb2xlPSJtb2R1bGUtY29udGVudCIgaGVpZ2h0PSIxMDAlIiB2YWxpZ249InRvcCIgYmdjb2xvcj0iIj4NCiAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIGFsaWduPSJjZW50ZXIiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjFweCIgc3R5bGU9ImxpbmUtaGVpZ2h0OjFweDsgZm9udC1zaXplOjFweDsiPg0KICAgICAgICAgICAgPHRib2R5Pg0KICAgICAgICAgICAgICA8dHI-DQogICAgICAgICAgICAgICAgPHRkIHN0eWxlPSJwYWRkaW5nOjBweCAwcHggMXB4IDBweDsiIGJnY29sb3I9IiNGNkY2RjYiPjwvdGQ-DQogICAgICAgICAgICAgIDwvdHI-DQogICAgICAgICAgICA8L3Rib2R5Pg0KICAgICAgICAgIDwvdGFibGU-DQogICAgICAgIDwvdGQ-DQogICAgICA8L3RyPg0KICAgIDwvdGJvZHk-DQogIDwvdGFibGU-PHRhYmxlIGNsYXNzPSJtb2R1bGUiIHJvbGU9Im1vZHVsZSIgZGF0YS10eXBlPSJzcGFjZXIiIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiB3aWR0aD0iMTAwJSIgc3R5bGU9InRhYmxlLWxheW91dDogZml4ZWQ7IiBkYXRhLW11aWQ9IjliYmMzOTNjLWMzMzctNGQxYS1iOWY5LWYyMGM3NDBhMGQ0NCI-DQogICAgPHRib2R5Pg0KICAgICAgPHRyPg0KICAgICAgICA8dGQgc3R5bGU9InBhZGRpbmc6MHB4IDBweCAzMnB4IDBweDsiIHJvbGU9Im1vZHVsZS1jb250ZW50IiBiZ2NvbG9yPSIiPg0KICAgICAgICA8L3RkPg0KICAgICAgPC90cj4NCiAgICA8L3Rib2R5Pg0KICA8L3RhYmxlPg0KICA8dGFibGUgY2xhc3M9IndyYXBwZXIiIHJvbGU9Im1vZHVsZSIgZGF0YS10eXBlPSJpbWFnZSIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIHdpZHRoPSIxMDAlIiBzdHlsZT0idGFibGUtbGF5b3V0OiBmaXhlZDsiIGRhdGEtbXVpZD0iODk4NDljMzctODYzOS00ZTMyLWE0OWQtODhiNGFhNmRiZDljIj4NCiAgICA8dGJvZHk-DQogICAgICA8dHI-DQogICAgICAgIDx0ZCBzdHlsZT0iZm9udC1zaXplOjZweDsgbGluZS1oZWlnaHQ6MTBweDsgcGFkZGluZzowcHggMHB4IDBweCAwcHg7IiB2YWxpZ249InRvcCIgYWxpZ249ImNlbnRlciI-DQogICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9kZXRhc2VjdXJlLmNvbS8iIHRhcmdldD0iX2JsYW5rIj4NCiAgICAgICAgICAgIDxpbWcgY2xhc3M9Im1heC13aWR0aCIgYm9yZGVyPSIwIiBzdHlsZT0iZGlzcGxheTpibG9jazsgY29sb3I6IzAwMDAwMDsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IGZvbnQtZmFtaWx5OkhlbHZldGljYSwgYXJpYWwsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZToxNnB4OyBtYXgtd2lkdGg6MTglICFpbXBvcnRhbnQ7IHdpZHRoOjE4JTsgaGVpZ2h0OmF1dG8gIWltcG9ydGFudDsiIHdpZHRoPSIxMDgiIGFsdD0iIiBkYXRhLXByb3BvcnRpb25hbGx5LWNvbnN0cmFpbmVkPSJ0cnVlIiBkYXRhLXJlc3BvbnNpdmU9InRydWUiIHNyYz0iaHR0cDovL2Nkbi5tY2F1dG8taW1hZ2VzLXByb2R1Y3Rpb24uc2VuZGdyaWQubmV0LzEzODYzNDNlODAwZTYyNDgvOTcyOTE0ZjQtMjZhYi00NDU3LTk2OTUtNGFjZmNkMGQ1NzQ4Lzc1MHg1MDQucG5nIj4NCiAgICAgICAgICA8L2E-DQogICAgICAgIDwvdGQ-DQogICAgICA8L3RyPg0KICAgIDwvdGJvZHk-DQogIDwvdGFibGU-DQogIDx0YWJsZSBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgY2xhc3M9Im1vZHVsZSIgZGF0YS1yb2xlPSJtb2R1bGUtYnV0dG9uIiBkYXRhLXR5cGU9ImJ1dHRvbiIgcm9sZT0ibW9kdWxlIiBzdHlsZT0idGFibGUtbGF5b3V0OmZpeGVkOyIgd2lkdGg9IjEwMCUiIGRhdGEtbXVpZD0iMDQwODRmMzEtZDcxNC00Nzg1LTk4YzctMzlkZTRkZjlmYjdiIj4NCiAgICAgIDx0Ym9keT4NCiAgICAgICAgPHRyPg0KICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiBiZ2NvbG9yPSIjZmZmZmZmIiBjbGFzcz0ib3V0ZXItdGQiIHN0eWxlPSJwYWRkaW5nOjIwcHggMHB4IDIwcHggMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmY7Ij4NCiAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgY2xhc3M9IndyYXBwZXItbW9iaWxlIiBzdHlsZT0idGV4dC1hbGlnbjpjZW50ZXI7Ij4NCiAgICAgICAgICAgICAgPHRib2R5Pg0KICAgICAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciIgYmdjb2xvcj0iI2Y1ZjhmZCIgY2xhc3M9ImlubmVyLXRkIiBzdHlsZT0iYm9yZGVyLXJhZGl1czo2cHg7IGZvbnQtc2l6ZToxNnB4OyB0ZXh0LWFsaWduOmNlbnRlcjsgYmFja2dyb3VuZC1jb2xvcjppbmhlcml0OyI-PGEgaHJlZj1odHRwczovL2RldGFzZWN1cmUuY29tIGNsaWNrdHJhY2tpbmc9Im9mZiIgIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiNmNWY4ZmQ7IGJvcmRlcjoxcHggc29saWQgI2Y1ZjhmZDsgYm9yZGVyLWNvbG9yOiNmNWY4ZmQ7IGJvcmRlci1yYWRpdXM6MjVweDsgYm9yZGVyLXdpZHRoOjFweDsgY29sb3I6I2E4YjlkNTsgZGlzcGxheTppbmxpbmUtYmxvY2s7IGZvbnQtc2l6ZToxMHB4OyBmb250LXdlaWdodDpub3JtYWw7IGxldHRlci1zcGFjaW5nOjBweDsgbGluZS1oZWlnaHQ6bm9ybWFsOyBwYWRkaW5nOjVweCAxOHB4IDVweCAxOHB4OyB0ZXh0LWFsaWduOmNlbnRlcjsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IGJvcmRlci1zdHlsZTpzb2xpZDsgZm9udC1mYW1pbHk6aGVsdmV0aWNhLHNhbnMtc2VyaWY7IiB0YXJnZXQ9Il9ibGFuayI-4pmlIFBPV0VSRUQgQlkgRGVUYVNFQ1VSRTwvYT48L3RkPg0KICAgICAgICAgICAgICAgIDwvdHI-DQogICAgICAgICAgICAgIDwvdGJvZHk-DQogICAgICAgICAgICA8L3RhYmxlPg0KICAgICAgICAgIDwvdGQ-DQogICAgICAgIDwvdHI-DQogICAgICA8L3Rib2R5Pg0KICAgIDwvdGFibGU-DQogICAgICAgPHRhYmxlIGNsYXNzPSJtb2R1bGUiIHJvbGU9Im1vZHVsZSIgZGF0YS10eXBlPSJ0ZXh0IiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgd2lkdGg9IjEwMCUiIHN0eWxlPSJ0YWJsZS1sYXlvdXQ6IGZpeGVkOyIgZGF0YS1tdWlkPSIzYjIxYTQ5NS1lMWQ3LTRjMmMtYjE0Yi02NWY1ZDVhYTJmNzciIGRhdGEtbWMtbW9kdWxlLXZlcnNpb249IjIwMTktMTAtMjIiPg0KICAgIDx0Ym9keT4NCiAgICAgIDx0cj4NCiAgICAgICAgPHRkIHN0eWxlPSJwYWRkaW5nOjJweCAwcHggMThweCAwcHg7IGxpbmUtaGVpZ2h0OjEycHg7IHRleHQtYWxpZ246aW5oZXJpdDsiIGhlaWdodD0iMTAwJSIgdmFsaWduPSJ0b3AiIGJnY29sb3I9IiIgcm9sZT0ibW9kdWxlLWNvbnRlbnQiPjxkaXY-PGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6IGluaGVyaXQ7IHRleHQtYWxpZ246IGNlbnRlciI-PGJyPjwvZGl2Pg0KPGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6IGluaGVyaXQ7IHRleHQtYWxpZ246IGNlbnRlciI-PHNwYW4gc3R5bGU9IndoaXRlLXNwYWNlOiBwcmUtd3JhcDtmb250LXNpemU6IDEycHg7IGNvbG9yOiAjNTI1NzVDIj5Zb3UgZGlkbuKAmXQgcmVxdWVzdCB0aGlzIGVtYWlsPyBQbGVhc2UgaWdub3JlIGl0Ljwvc3Bhbj4mbmJzcDs8L2Rpdj4NCjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OiBpbmhlcml0OyB0ZXh0LWFsaWduOiBjZW50ZXIiPjxicj48L2Rpdj4NCjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OiBpbmhlcml0OyB0ZXh0LWFsaWduOiBjZW50ZXIiPg0KPHNwYW4gc3R5bGU9IndoaXRlLXNwYWNlOiBwcmUtd3JhcDsgZm9udC1zaXplOiAxMnB4OyBjb2xvcjogIzUyNTc1QyI-VGhpcyByZXF1ZXN0IGNhbWUgZnJvbSBJbmRpYSwgSVA6MTU3LjUxLjE2Ny4yMDc8L3NwYW4-DQoNCiZuYnNwOzwvZGl2PjxkaXY-PC9kaXY-PC9kaXY-PC90ZD4NCiAgICAgIDwvdHI-DQogICAgPC90Ym9keT4NCiAgPC90YWJsZT4NCiAgPC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tW2lmIG1zb10-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jZW50ZXI-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPCFbZW5kaWZdLS0-DQogICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ-DQogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU-DQogICAgICAgICAgICAgICAgICAgIDwvdGQ-DQogICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgIDwvdGFibGU-DQogICAgICAgICAgICAgIDwvdGQ-DQogICAgICAgICAgICA8L3RyPg0KICAgICAgICAgIDwvdGFibGU-DQogICAgICAgIDwvZGl2Pg0KICAgICAgPC9jZW50ZXI-DQogICAgPC9ib2R5Pg0KICA8L2h0bWw-DQo=",
            "size": 16019
        },
        "filename": "",
        "headers": [{
                    "name": "Delivered-To",
                    "value": "suriesiva@gmail.com"
                }, {
                    "name": "Received",
                    "value": "by 2002:a05:7000:8551:0:0:0:0 with SMTP id v17csp2063831max;        Sun, 19 Jun 2022 11:50:07 -0700 (PDT)"
                }, {
                    "name": "X-Google-Smtp-Source",
                    "value": "AGRyM1v7id0knYZGnV7HulK8zHUjest1iGRa1LdwKerZHH8IcyabOXzuNu6chGFFQv/Du5H//gns"
                }, {
                    "name": "X-Received",
                    "value": "by 2002:a05:620a:4082:b0:6a7:80c8:1dd0 with SMTP id f2-20020a05620a408200b006a780c81dd0mr14438193qko.698.1655664607141;        Sun, 19 Jun 2022 11:50:07 -0700 (PDT)"
                }

payload没有parts数组...

"payload": {
     "body": {
         "data": "PCFET0..."

那么,要返回的parts[0]是什么?

由于它不存在, payload.parts为空,并且.getAt(0)不能在空元素上调用

尝试

String bodyEncoded = jp.getString("payload.body.data");
String body = new String(Base64.getUrlDecoder().decode(bodyEncoded));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM