<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>47482</bug_id>
          
          <creation_ts>2010-10-10 23:54:34 -0700</creation_ts>
          <short_desc>Add webkitGetDataBlob/webkitSetDataBlob to event.dataTransfer</short_desc>
          <delta_ts>2011-04-27 19:11:56 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Platform</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>INVALID</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Daniel Cheng">dcheng</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>jianli</cc>
    
    <cc>mrobinson</cc>
    
    <cc>tony</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>292431</commentid>
    <comment_count>0</comment_count>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2010-10-10 23:54:34 -0700</bug_when>
    <thetext>For now, just add stubs. It&apos;d be nice to have event.dataTransfer support binary blobs to support operations like copying and pasting images.

mrobinson was interested in this change as well, but for some reason, Bugzilla won&apos;t let me CC him.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>292433</commentid>
    <comment_count>1</comment_count>
      <attachid>70426</attachid>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2010-10-11 00:06:56 -0700</bug_when>
    <thetext>Created attachment 70426
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>292435</commentid>
    <comment_count>2</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-10-11 00:14:40 -0700</bug_when>
    <thetext>Attachment 70426 did not build on qt:
Build output: http://queues.webkit.org/results/4362018</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>292500</commentid>
    <comment_count>3</comment_count>
      <attachid>70437</attachid>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2010-10-11 08:55:36 -0700</bug_when>
    <thetext>Created attachment 70437
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>294914</commentid>
    <comment_count>4</comment_count>
      <attachid>70437</attachid>
    <who name="Jian Li">jianli</who>
    <bug_when>2010-10-15 14:08:27 -0700</bug_when>
    <thetext>Comment on attachment 70437
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=70437&amp;action=review

&gt; WebCore/ChangeLog:9
&gt; +        copy-and-paste or drag-and-drop in WebKit.

Can you add a link to the proposal or discussion?

&gt; WebCore/ChangeLog:11
&gt; +        No tests. No functionality changed.

I think we should say that the test will be added when we have the stub implemented.

&gt; WebCore/WebCore.xcodeproj/project.pbxproj:748
&gt; +		2EDEF1F4121B0EFC00726DB2 /* BlobData.h in Headers */ = {isa = PBXBuildFile; fileRef = 2EDEF1EE121B0EFC00726DB2 /* BlobData.h */; settings = {ATTRIBUTES = (Private, ); }; };

Why do we need to change the settings? Do you mean to copy the header file to PrivateHeaders? If needed, please explain in ChangeLog.

&gt; WebCore/dom/Clipboard.h:67
&gt; +        virtual PassRefPtr&lt;Blob&gt; webkitGetDataBlob(const String&amp; type, bool&amp; success) const = 0;

Can we simply return 0 to indicate failure, instead of introducing an extra boolean output parameter?

&gt; WebCore/dom/Clipboard.h:68
&gt; +        virtual bool webkitSetDataBlob(const String&amp; type, PassRefPtr&lt;Blob&gt; data) = 0;

You can omit &apos;data&apos; argument name.

&gt; WebCore/dom/Clipboard.idl:41
&gt; +        [Custom] void webkitGetDataBlob(in DOMString type)

Do we need Custom attribute? I think probably we can remove it if we remove &apos;success&apos; parameter Clipboard::webkitGetDataBlob?
Do we consider adding a feature guard to wrap this new feature?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>294921</commentid>
    <comment_count>5</comment_count>
      <attachid>70897</attachid>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2010-10-15 14:29:14 -0700</bug_when>
    <thetext>Created attachment 70897
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>294922</commentid>
    <comment_count>6</comment_count>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2010-10-15 14:29:37 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 70437 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=70437&amp;action=review
&gt; 
&gt; &gt; WebCore/ChangeLog:9
&gt; &gt; +        copy-and-paste or drag-and-drop in WebKit.
&gt; 
&gt; Can you add a link to the proposal or discussion?

There wasn&apos;t much discussion, since no one ever replied to the post. But I linked it anyway.

&gt; 
&gt; &gt; WebCore/ChangeLog:11
&gt; &gt; +        No tests. No functionality changed.
&gt; 
&gt; I think we should say that the test will be added when we have the stub implemented.
&gt; 

Done.

&gt; &gt; WebCore/WebCore.xcodeproj/project.pbxproj:748
&gt; &gt; +		2EDEF1F4121B0EFC00726DB2 /* BlobData.h in Headers */ = {isa = PBXBuildFile; fileRef = 2EDEF1EE121B0EFC00726DB2 /* BlobData.h */; settings = {ATTRIBUTES = (Private, ); }; };
&gt; 
&gt; Why do we need to change the settings? Do you mean to copy the header file to PrivateHeaders? If needed, please explain in ChangeLog.
&gt; 

Done.

&gt; &gt; WebCore/dom/Clipboard.h:67
&gt; &gt; +        virtual PassRefPtr&lt;Blob&gt; webkitGetDataBlob(const String&amp; type, bool&amp; success) const = 0;
&gt; 
&gt; Can we simply return 0 to indicate failure, instead of introducing an extra boolean output parameter?
&gt; 

I opted to follow the pattern in the IDL file, but I&apos;m not opposed to changing it.

&gt; &gt; WebCore/dom/Clipboard.h:68
&gt; &gt; +        virtual bool webkitSetDataBlob(const String&amp; type, PassRefPtr&lt;Blob&gt; data) = 0;
&gt; 
&gt; You can omit &apos;data&apos; argument name.
&gt; 

Done.

&gt; &gt; WebCore/dom/Clipboard.idl:41
&gt; &gt; +        [Custom] void webkitGetDataBlob(in DOMString type)
&gt; 
&gt; Do we need Custom attribute? I think probably we can remove it if we remove &apos;success&apos; parameter Clipboard::webkitGetDataBlob?

I opted to follow the way existing code did it. I&apos;m not really familiar with the IDL bindings, so it seemed safest to copy the existing pattern in the file.

&gt; Do we consider adding a feature guard to wrap this new feature?

I did not consider this. Who defines these flags when you&apos;re building, say, the Chrome port?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>295197</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-10-16 23:46:24 -0700</bug_when>
    <thetext>Attachment 70897 did not build on win:
Build output: http://queues.webkit.org/results/4410074</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>299213</commentid>
    <comment_count>8</comment_count>
      <attachid>71825</attachid>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2010-10-25 17:33:59 -0700</bug_when>
    <thetext>Created attachment 71825
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>300625</commentid>
    <comment_count>9</comment_count>
      <attachid>71825</attachid>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2010-10-27 15:15:36 -0700</bug_when>
    <thetext>Comment on attachment 71825
Patch

I think there should be a better proposal before this kind of patch can land.

The linked post (http://lists.whatwg.org/htdig.cgi/whatwg-whatwg.org/2010-June/026910.html) only contains a question about what would be the preferred shape of API for exchanging non-text data with clipboard. I think it didn&apos;t get responses because context was unclear.

It is not exactly clear what kind of use case these APIs are going to enable, what kind of data are we talkign about, sizes and speeds (if data is big or produced on demand, then perhaps it should not be a synchronous API?) etc.  It is hard to say, based on information in this bug, whether or not these APIs are all right since it&apos;s unclear what exact data transfer scenarios they are going to be used for.

If this is a part of a bigger modification, it could be also useful to see what it is (since it mentions non-text data in clipboardData). In short, I think this requires a proposal or design doc.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>70426</attachid>
            <date>2010-10-11 00:06:56 -0700</date>
            <delta_ts>2010-10-11 08:55:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-47482-20101011000655.patch</filename>
            <type>text/plain</type>
            <size>25985</size>
            <attacher name="Daniel Cheng">dcheng</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NGRkOGMxMTY2NmFjMDQ1NDRjMzc3NDI0NWNkOGExMDJlYjNlMDkyYi4uNTYyOWRiNzkxMGYxNjNl
ZWJlZDRkYTQ0NGJmNGRiNTgxZjRjOWQ4NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2MyBAQAorMjAxMC0xMC0xMCAgRGFu
aWVsIENoZW5nICA8ZGNoZW5nQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgd2Via2l0R2V0RGF0YUJsb2Ivd2Via2l0R2V0
RGF0YUJsb2Igc3R1YnMgdG8gQ2xpcGJvYXJkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDc0ODIKKworICAgICAgICBUaGlzIGlzIGFuIGV4cGVyaW1l
bnRhbCBjaGFuZ2UgdG8gdHJ5IHN1cHBvcnRpbmcgc2NlbmFyaW9zIGxpa2UgaW1hZ2UKKyAgICAg
ICAgY29weS1hbmQtcGFzdGUgb3IgZHJhZy1hbmQtZHJvcCBpbiBXZWJLaXQuCisKKyAgICAgICAg
Tm8gdGVzdHMuIE5vIGZ1bmN0aW9uYWxpdHkgY2hhbmdlZC4KKworICAgICAgICAqIFdlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0NsaXBi
b2FyZEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0NsaXBib2FyZDo6d2Via2l0R2V0
RGF0YUJsb2IpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOENsaXBib2FyZEN1c3Rv
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOENsaXBib2FyZDo6d2Via2l0R2V0RGF0YUJsb2JD
YWxsYmFjayk6CisgICAgICAgICogZG9tL0NsaXBib2FyZC5oOgorICAgICAgICAqIGRvbS9DbGlw
Ym9hcmQuaWRsOgorICAgICAgICAqIHBsYXRmb3JtL2FuZHJvaWQvQ2xpcGJvYXJkQW5kcm9pZC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRBbmRyb2lkOjp3ZWJraXRHZXREYXRhQmxv
Yik6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRBbmRyb2lkOjp3ZWJraXRTZXREYXRhQmxv
Yik6CisgICAgICAgICogcGxhdGZvcm0vYW5kcm9pZC9DbGlwYm9hcmRBbmRyb2lkLmg6CisgICAg
ICAgICogcGxhdGZvcm0vYnJldy9DbGlwYm9hcmRCcmV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNsaXBib2FyZEJyZXc6OndlYmtpdEdldERhdGFCbG9iKToKKyAgICAgICAgKFdlYkNvcmU6OkNs
aXBib2FyZEJyZXc6OndlYmtpdFNldERhdGFCbG9iKToKKyAgICAgICAgKiBwbGF0Zm9ybS9icmV3
L0NsaXBib2FyZEJyZXcuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRD
aHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRDaHJvbWl1bTo6d2Via2l0
R2V0RGF0YUJsb2IpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkQ2hyb21pdW06OndlYmtp
dFNldERhdGFCbG9iKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRDaHJv
bWl1bS5oOgorICAgICAgICAqIHBsYXRmb3JtL2VmbC9DbGlwYm9hcmRFZmwuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q2xpcGJvYXJkRWZsOjp3ZWJraXRHZXREYXRhQmxvYik6CisgICAgICAgIChX
ZWJDb3JlOjpDbGlwYm9hcmRFZmw6OndlYmtpdFNldERhdGFCbG9iKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9lZmwvQ2xpcGJvYXJkRWZsLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL0NsaXBib2Fy
ZEd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRHdGs6OndlYmtpdEdldERhdGFC
bG9iKToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEd0azo6d2Via2l0U2V0RGF0YUJsb2Ip
OgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9DbGlwYm9hcmRHdGsuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9oYWlrdS9DbGlwYm9hcmRIYWlrdS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9h
cmRIYWlrdTo6d2Via2l0R2V0RGF0YUJsb2IpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJk
SGFpa3U6OndlYmtpdFNldERhdGFCbG9iKToKKyAgICAgICAgKiBwbGF0Zm9ybS9oYWlrdS9DbGlw
Ym9hcmRIYWlrdS5oOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9DbGlwYm9hcmRNYWMuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tYWMvQ2xpcGJvYXJkTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6
Q2xpcGJvYXJkTWFjOjp3ZWJraXRHZXREYXRhQmxvYik6CisgICAgICAgIChXZWJDb3JlOjpDbGlw
Ym9hcmRNYWM6OndlYmtpdFNldERhdGFCbG9iKToKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9DbGlw
Ym9hcmRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRRdDo6d2Via2l0R2V0RGF0
YUJsb2IpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkUXQ6OndlYmtpdFNldERhdGFCbG9i
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9DbGlwYm9hcmRRdC5oOgorICAgICAgICAqIHBsYXRm
b3JtL3dpbi9DbGlwYm9hcmRXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkV2lu
Ojp3ZWJraXRHZXREYXRhQmxvYik6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRXaW46Ondl
YmtpdFNldERhdGFCbG9iKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vQ2xpcGJvYXJkV2luLmg6
CisgICAgICAgICogcGxhdGZvcm0vd3gvQ2xpcGJvYXJkV3guY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2xpcGJvYXJkV3g6OmdldERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkV3g6
OndlYmtpdEdldERhdGFCbG9iKToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZFd4Ojp3ZWJr
aXRTZXREYXRhQmxvYik6CisKIDIwMTAtMTAtMDggIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDk0YjNjYTIyNmZkODE1NTJjMmNlMjFk
ZTM0YzQwY2Q2MTQ2ZDQ4ODIuLmVmN2Q3NWQ4M2YxNTk4Y2NjOTY5OGU4MGFlZTcxYzg4MjlhZDA3
YzAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC03NDUs
NyArNzQ1LDcgQEAKIAkJMkVENjA5QkMxMTQ1QjA3MTAwQzg2ODRFIC8qIERPTUZvcm1EYXRhLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFRDYwOUJB
MTE0NUIwNzEwMEM4Njg0RSAvKiBET01Gb3JtRGF0YS5jcHAgKi87IH07CiAJCTJFRDYwOUJEMTE0
NUIwNzEwMEM4Njg0RSAvKiBET01Gb3JtRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMkVENjA5QkIxMTQ1QjA3MTAwQzg2ODRFIC8qIERPTUZvcm1E
YXRhLmggKi87IH07CiAJCTJFREVGMUYzMTIxQjBFRkMwMDcyNkRCMiAvKiBCbG9iRGF0YS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRURFRjFFRDEy
MUIwRUZDMDA3MjZEQjIgLyogQmxvYkRhdGEuY3BwICovOyB9OwotCQkyRURFRjFGNDEyMUIwRUZD
MDA3MjZEQjIgLyogQmxvYkRhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDJFREVGMUVFMTIxQjBFRkMwMDcyNkRCMiAvKiBCbG9iRGF0YS5oICovOyB9
OworCQkyRURFRjFGNDEyMUIwRUZDMDA3MjZEQjIgLyogQmxvYkRhdGEuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFREVGMUVFMTIxQjBFRkMwMDcyNkRC
MiAvKiBCbG9iRGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTJFREVGMUY1MTIxQjBFRkMwMDcyNkRCMiAvKiBCbG9iUmVnaXN0cnkuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFREVGMUVGMTIxQjBF
RkMwMDcyNkRCMiAvKiBCbG9iUmVnaXN0cnkuaCAqLzsgfTsKIAkJMkVERUYxRjYxMjFCMEVGQzAw
NzI2REIyIC8qIEJsb2JSZWdpc3RyeUltcGwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMkVERUYxRjAxMjFCMEVGQzAwNzI2REIyIC8qIEJsb2JSZWdp
c3RyeUltcGwuY3BwICovOyB9OwogCQkyRURFRjFGNzEyMUIwRUZDMDA3MjZEQjIgLyogQmxvYlJl
Z2lzdHJ5SW1wbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMkVERUYxRjExMjFCMEVGQzAwNzI2REIyIC8qIEJsb2JSZWdpc3RyeUltcGwuaCAqLzsgfTsK
QEAgLTI4NjksNyArMjg2OSw3IEBACiAJCTk3M0UzMjU3MTA4ODNCN0MwMDVCQzQ5MyAvKiBSZXNv
dXJjZUxvYWROb3RpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTczRTMyNTUxMDg4M0I3QzAwNUJDNDkzIC8qIFJlc291cmNlTG9hZE5vdGlmaWVy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTc2
RDZDNzcxMjJCOEEzRDAwMUZEMUY3IC8qIEFzeW5jRmlsZVdyaXRlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTc2RDZDNTgxMjJCOEEzRDAwMUZEMUY3
IC8qIEFzeW5jRmlsZVdyaXRlci5oICovOyB9OwogCQk5NzZENkM3ODEyMkI4QTNEMDAxRkQxRjcg
LyogQmxvYi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5NzZENkM1OTEyMkI4QTNEMDAxRkQxRjcgLyogQmxvYi5jcHAgKi87IH07Ci0JCTk3NkQ2Qzc5
MTIyQjhBM0QwMDFGRDFGNyAvKiBCbG9iLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5NzZENkM1QTEyMkI4QTNEMDAxRkQxRjcgLyogQmxvYi5oICovOyB9
OworCQk5NzZENkM3OTEyMkI4QTNEMDAxRkQxRjcgLyogQmxvYi5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTc2RDZDNUExMjJCOEEzRDAwMUZEMUY3IC8q
IEJsb2IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk5NzZENkM3QjEyMkI4QTNEMDAxRkQxRjcgLyogQmxvYkJ1aWxkZXIuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTc2RDZDNUMxMjJCOEEzRDAwMUZE
MUY3IC8qIEJsb2JCdWlsZGVyLmNwcCAqLzsgfTsKIAkJOTc2RDZDN0MxMjJCOEEzRDAwMUZEMUY3
IC8qIEJsb2JCdWlsZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5NzZENkM1RDEyMkI4QTNEMDAxRkQxRjcgLyogQmxvYkJ1aWxkZXIuaCAqLzsgfTsK
IAkJOTc2RDZDN0UxMjJCOEEzRDAwMUZEMUY3IC8qIEJsb2JVUkwuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTc2RDZDNUYxMjJCOEEzRDAwMUZEMUY3
IC8qIEJsb2JVUkwuY3BwICovOyB9OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0NsaXBib2FyZEN1c3RvbS5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2xpcGJvYXJkQ3Vz
dG9tLmNwcAppbmRleCAxN2M2NjQwMWJkNDFkMmNjM2I0OWRkZTRiYjVhZGE4YzU5YTQ0M2VmLi4y
ODIzZjQyNGEwOTA0OGY4YWRjMGRiYmNjNTgyZDFhOThiNWVjOWYwIDEwMDY0NAotLS0gYS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTQ2xpcGJvYXJkQ3VzdG9tLmNwcAorKysgYi9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTQ2xpcGJvYXJkQ3VzdG9tLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUg
IkhUTUxJbWFnZUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJJ
bnRQb2ludC5oIgorI2luY2x1ZGUgIkpTQmxvYi5oIgogI2luY2x1ZGUgIkpTTm9kZS5oIgogI2lu
Y2x1ZGUgIk5vZGUuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgpAQCAtOTcsNiArOTgs
MjIgQEAgSlNWYWx1ZSBKU0NsaXBib2FyZDo6Z2V0RGF0YShFeGVjU3RhdGUqIGV4ZWMpCiAgICAg
cmV0dXJuIGpzU3RyaW5nKGV4ZWMsIHJlc3VsdCk7CiB9CiAKK0pTVmFsdWUgSlNDbGlwYm9hcmQ6
OndlYmtpdEdldERhdGFCbG9iKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICAvLyBGSVhNRTogSXQg
ZG9lcyBub3QgbWF0Y2ggdGhlIHJlc3Qgb2YgdGhlIEpTIGJpbmRpbmdzIHRvIHRocm93IG9uIGlu
dmFsaWQgbnVtYmVyIG9mIGFyZ3VtZW50cy4KKyAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgp
ICE9IDEpCisgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVN5bnRheEVycm9y
KGV4ZWMsICJ3ZWJraXRHZXREYXRhQmxvYjogSW52YWxpZCBudW1iZXIgb2YgYXJndW1lbnRzIikp
OworCisgICAgQ2xpcGJvYXJkKiBjbGlwYm9hcmQgPSBpbXBsKCk7CisKKyAgICBib29sIHN1Y2Nl
c3M7CisgICAgUmVmUHRyPEJsb2I+IHJlc3VsdCA9IGNsaXBib2FyZC0+d2Via2l0R2V0RGF0YUJs
b2IodXN0cmluZ1RvU3RyaW5nKGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpKSwgc3Vj
Y2Vzcyk7CisgICAgaWYgKCFzdWNjZXNzKQorICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsK
KworICAgIHJldHVybiB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCgpLCByZXN1bHQuZ2V0KCkpOwor
fQorCiBKU1ZhbHVlIEpTQ2xpcGJvYXJkOjpzZXREcmFnSW1hZ2UoRXhlY1N0YXRlKiBleGVjKQog
ewogICAgIENsaXBib2FyZCogY2xpcGJvYXJkID0gaW1wbCgpOwpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDbGlwYm9hcmRDdXN0b20uY3BwIGIvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhDbGlwYm9hcmRDdXN0b20uY3BwCmluZGV4IGQ4NWQ3YTA2YzZjNDNh
ZDA2NWRhYzQ1NjdiOTNiZDMyNTFhMzFhNmEuLjBjNDA2NGZiZjljYzk4Mzg3Y2QzOWQ4OWVjNWI1
YmYyYjNkYWY0YmEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q2xp
cGJvYXJkQ3VzdG9tLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOENsaXBi
b2FyZEN1c3RvbS5jcHAKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlICJFbGVtZW50LmgiCiAK
ICNpbmNsdWRlICJWOEJpbmRpbmcuaCIKKyNpbmNsdWRlICJWOEJsb2IuaCIKICNpbmNsdWRlICJW
OE5vZGUuaCIKICNpbmNsdWRlICJWOFByb3h5LmgiCiAKQEAgLTk2LDYgKzk3LDIyIEBAIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBWOENsaXBib2FyZDo6Z2V0RGF0YUNhbGxiYWNrKGNvbnN0IHY4OjpB
cmd1bWVudHMmIGFyZ3MpCiAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKIH0KIAordjg6Okhh
bmRsZTx2ODo6VmFsdWU+IFY4Q2xpcGJvYXJkOjp3ZWJraXRHZXREYXRhQmxvYkNhbGxiYWNrKGNv
bnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit7CisgICAgSU5DX1NUQVRTKCJET00uQ2xpcGJvYXJk
LndlYmtpdEdldERhdGFCbG9iKCkiKTsKKyAgICBDbGlwYm9hcmQqIGNsaXBib2FyZCA9IFY4Q2xp
cGJvYXJkOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKKworICAgIGlmIChhcmdzLkxlbmd0aCgp
ICE9IDEpCisgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCJ3ZWJraXRHZXREYXRhQmxvYjogSW52
YWxpZCBudW1iZXIgb2YgYXJndW1lbnRzIiwgVjhQcm94eTo6U3ludGF4RXJyb3IpOworCisgICAg
Ym9vbCBzdWNjZXNzOworICAgIFJlZlB0cjxCbG9iPiByZXN1bHQgPSBjbGlwYm9hcmQtPndlYmtp
dEdldERhdGFCbG9iKHRvV2ViQ29yZVN0cmluZyhhcmdzWzBdKSwgc3VjY2Vzcyk7CisgICAgaWYg
KHN1Y2Nlc3MpCisgICAgICAgIHJldHVybiBWOEJsb2I6OndyYXAocmVzdWx0LmdldCgpKTsKKwor
ICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7Cit9CisKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBW
OENsaXBib2FyZDo6c2V0RHJhZ0ltYWdlQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJn
cykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5DbGlwYm9hcmQuc2V0RHJhZ0ltYWdlKCkiKTsKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0NsaXBib2FyZC5oIGIvV2ViQ29yZS9kb20vQ2xpcGJvYXJk
LmgKaW5kZXggYjhlYWRmYjZkMDY3NDg1YjQxOGI4NzliMWE5Y2RmZmM2ZmNjZTAxZi4uNzE3OGY5
MWE5YTEzYWJlODU3YjMxMzE1ZDhkZDM5MWY5MmE2NGI3ZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9k
b20vQ2xpcGJvYXJkLmgKKysrIGIvV2ViQ29yZS9kb20vQ2xpcGJvYXJkLmgKQEAgLTI0LDYgKzI0
LDcgQEAKICNpZm5kZWYgQ2xpcGJvYXJkX2gKICNkZWZpbmUgQ2xpcGJvYXJkX2gKIAorI2luY2x1
ZGUgIkJsb2IuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUg
IkNsaXBib2FyZEFjY2Vzc1BvbGljeS5oIgogI2luY2x1ZGUgIkRyYWdBY3Rpb25zLmgiCkBAIC02
Miw2ICs2Myw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lkIGNs
ZWFyQWxsRGF0YSgpID0gMDsKICAgICAgICAgdmlydHVhbCBTdHJpbmcgZ2V0RGF0YShjb25zdCBT
dHJpbmcmIHR5cGUsIGJvb2wmIHN1Y2Nlc3MpIGNvbnN0ID0gMDsKICAgICAgICAgdmlydHVhbCBi
b29sIHNldERhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGRhdGEpID0gMDsK
KworICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8QmxvYj4gd2Via2l0R2V0RGF0YUJsb2IoY29u
c3QgU3RyaW5nJiB0eXBlLCBib29sJiBzdWNjZXNzKSBjb25zdCA9IDA7CisgICAgICAgIHZpcnR1
YWwgYm9vbCB3ZWJraXRTZXREYXRhQmxvYihjb25zdCBTdHJpbmcmIHR5cGUsIFBhc3NSZWZQdHI8
QmxvYj4gZGF0YSkgPSAwOwogICAgIAogICAgICAgICAvLyBleHRlbnNpb25zIGJleW9uZCBJRSdz
IEFQSQogICAgICAgICB2aXJ0dWFsIEhhc2hTZXQ8U3RyaW5nPiB0eXBlcygpIGNvbnN0ID0gMDsK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0NsaXBib2FyZC5pZGwgYi9XZWJDb3JlL2RvbS9DbGlw
Ym9hcmQuaWRsCmluZGV4IDEwMjRhMzZkMTZhM2M0OTAzYWYwZGU2ZDVkM2RmOTZlZDg4NzRkYTQu
LmRlZDMxMjIzMTNmMDE5MGYzNDU5NzlkNmQ5MGJhMGZkNjg2ZjJjZWQgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvZG9tL0NsaXBib2FyZC5pZGwKKysrIGIvV2ViQ29yZS9kb20vQ2xpcGJvYXJkLmlkbApA
QCAtMzgsOCArMzgsMTEgQEAgbW9kdWxlIGNvcmUgewogICAgICAgICAgICAgcmFpc2VzKERPTUV4
Y2VwdGlvbik7CiAgICAgICAgIFtDdXN0b21dIHZvaWQgZ2V0RGF0YShpbiBET01TdHJpbmcgdHlw
ZSkKICAgICAgICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24pOworICAgICAgICBbQ3VzdG9tXSB2
b2lkIHdlYmtpdEdldERhdGFCbG9iKGluIERPTVN0cmluZyB0eXBlKQorICAgICAgICAgICAgcmFp
c2VzKERPTUV4Y2VwdGlvbik7CiAgICAgICAgIC8vIEZJWE1FOiBSZXF1aXJlc0FsbEFyZ3VtZW50
cyBpcyBwcm9iYWJseSBib2d1cyBoZXJlLgogICAgICAgICBbUmVxdWlyZXNBbGxBcmd1bWVudHNd
IGJvb2xlYW4gc2V0RGF0YShpbiBET01TdHJpbmcgdHlwZSwgaW4gRE9NU3RyaW5nIGRhdGEpOwor
ICAgICAgICBbUmVxdWlyZXNBbGxBcmd1bWVudHNdIGJvb2xlYW4gd2Via2l0U2V0RGF0YUJsb2Io
aW4gRE9NU3RyaW5nIHR5cGUsIGluIEJsb2IgZGF0YSk7CiAgICAgICAgIFtDdXN0b21dIHZvaWQg
c2V0RHJhZ0ltYWdlKGluIEhUTUxJbWFnZUVsZW1lbnQgaW1hZ2UsIGluIGxvbmcgeCwgaW4gbG9u
ZyB5KQogICAgICAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAgICAgfTsKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvcGxhdGZvcm0vYW5kcm9pZC9DbGlwYm9hcmRBbmRyb2lkLmNwcCBiL1dlYkNv
cmUvcGxhdGZvcm0vYW5kcm9pZC9DbGlwYm9hcmRBbmRyb2lkLmNwcAppbmRleCBhOTFmZDIxYTU4
NzRlYzA2NDU5OWMzMjQ5NDkxNDg5NDU4ODc1NzE5Li4wZWVkMjI1YmU3NDlhMTAyY2YwNjcxOGQy
YzYyNjAzZjRhYTdiYmZkIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2FuZHJvaWQvQ2xp
cGJvYXJkQW5kcm9pZC5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9hbmRyb2lkL0NsaXBib2Fy
ZEFuZHJvaWQuY3BwCkBAIC02NSwxMiArNjUsMjQgQEAgU3RyaW5nIENsaXBib2FyZEFuZHJvaWQ6
OmdldERhdGEoY29uc3QgU3RyaW5nJiwgYm9vbCYgc3VjY2VzcykgY29uc3QKICAgICByZXR1cm4g
IiI7CiB9CiAKK1Bhc3NSZWZQdHI8QmxvYj4gQ2xpcGJvYXJkQW5kcm9pZDo6d2Via2l0R2V0RGF0
YUJsb2IoY29uc3QgU3RyaW5nJiwgYm9vbCYgc3VjY2VzcykgY29uc3QKK3sKKyAgICBzdWNjZXNz
ID0gZmFsc2U7CisgICAgcmV0dXJuIDA7Cit9CisKIGJvb2wgQ2xpcGJvYXJkQW5kcm9pZDo6c2V0
RGF0YShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKQogewogICAgIEFTU0VSVChpc0ZvckRy
YWdBbmREcm9wKCkpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIAorYm9vbCBDbGlwYm9hcmRBbmRy
b2lkOjp3ZWJraXRTZXREYXRhQmxvYihjb25zdCBTdHJpbmcmLCBQYXNzUmVmUHRyPEJsb2I+KQor
eworICAgIEFTU0VSVChpc0ZvckRyYWdBbmREcm9wKCkpOworICAgIHJldHVybiBmYWxzZTsKK30K
KwogLy8gZXh0ZW5zaW9ucyBiZXlvbmQgSUUncyBBUEkKIEhhc2hTZXQ8U3RyaW5nPiBDbGlwYm9h
cmRBbmRyb2lkOjp0eXBlcygpIGNvbnN0CiB7IApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9y
bS9hbmRyb2lkL0NsaXBib2FyZEFuZHJvaWQuaCBiL1dlYkNvcmUvcGxhdGZvcm0vYW5kcm9pZC9D
bGlwYm9hcmRBbmRyb2lkLmgKaW5kZXggODA3NjUzYmQzMzdkOTExYWFlNzAyMTNkYjk3ZDE2ZmM1
NjA3YjEzMS4uMjE2ZTBjZmY5MDJjMGQ4NzI0ZDYxYjFmNmFkMWQ4OGViZWYzN2IyMCAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9hbmRyb2lkL0NsaXBib2FyZEFuZHJvaWQuaAorKysgYi9X
ZWJDb3JlL3BsYXRmb3JtL2FuZHJvaWQvQ2xpcGJvYXJkQW5kcm9pZC5oCkBAIC00Myw3ICs0Myw5
IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsZWFyRGF0YShjb25zdCBTdHJpbmcmKTsKICAgICB2b2lk
IGNsZWFyQWxsRGF0YSgpOwogICAgIFN0cmluZyBnZXREYXRhKGNvbnN0IFN0cmluZyYsIGJvb2wm
IHN1Y2Nlc3MpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8QmxvYj4gd2Via2l0R2V0RGF0YUJsb2Io
Y29uc3QgU3RyaW5nJiwgYm9vbCYgc3VjY2VzcykgY29uc3Q7CiAgICAgYm9vbCBzZXREYXRhKGNv
bnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpOworICAgIGJvb2wgd2Via2l0U2V0RGF0YUJsb2Io
Y29uc3QgU3RyaW5nJiwgUGFzc1JlZlB0cjxCbG9iPik7CiAKICAgICAvLyBleHRlbnNpb25zIGJl
eW9uZCBJRSdzIEFQSQogICAgIEhhc2hTZXQ8U3RyaW5nPiB0eXBlcygpIGNvbnN0OwpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9icmV3L0NsaXBib2FyZEJyZXcuY3BwIGIvV2ViQ29yZS9w
bGF0Zm9ybS9icmV3L0NsaXBib2FyZEJyZXcuY3BwCmluZGV4IGMwNTA0YmM4MDU4Y2I3OTYwYjI4
OGU0YzIxYzkxYWExYzBiYjMyZGQuLjcwZTU3ZGU3OGRjMDg3NTI3OTM4YjgwYTY2MDBkMjU0ZTg0
YzQwOGIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vYnJldy9DbGlwYm9hcmRCcmV3LmNw
cAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2JyZXcvQ2xpcGJvYXJkQnJldy5jcHAKQEAgLTY2LDEy
ICs2NiwyNCBAQCBTdHJpbmcgQ2xpcGJvYXJkQnJldzo6Z2V0RGF0YShjb25zdCBTdHJpbmcmLCBi
b29sJiBzdWNjZXNzKSBjb25zdAogICAgIHJldHVybiAiIjsKIH0KIAorUGFzc1JlZlB0cjxCbG9i
PiBDbGlwYm9hcmRCcmV3Ojp3ZWJraXRHZXREYXRhQmxvYihjb25zdCBTdHJpbmcmLCBib29sJiBz
dWNjZXNzKSBjb25zdAoreworICAgIHN1Y2Nlc3MgPSBmYWxzZTsKKyAgICByZXR1cm4gMDsKK30K
KwogYm9vbCBDbGlwYm9hcmRCcmV3OjpzZXREYXRhKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmlu
ZyYpCiB7CiAgICAgQVNTRVJUKGlzRm9yRHJhZ0FuZERyb3AoKSk7CiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCitib29sIENsaXBib2FyZEJyZXc6OndlYmtpdFNldERhdGFCbG9iKGNvbnN0IFN0cmlu
ZyYsIFBhc3NSZWZQdHI8QmxvYj4pCit7CisgICAgQVNTRVJUKGlzRm9yRHJhZ0FuZERyb3AoKSk7
CisgICAgcmV0dXJuIGZhbHNlOworfQorCiAvLyBleHRlbnNpb25zIGJleW9uZCBJRSdzIEFQSQog
SGFzaFNldDxTdHJpbmc+IENsaXBib2FyZEJyZXc6OnR5cGVzKCkgY29uc3QKIHsKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvcGxhdGZvcm0vYnJldy9DbGlwYm9hcmRCcmV3LmggYi9XZWJDb3JlL3BsYXRm
b3JtL2JyZXcvQ2xpcGJvYXJkQnJldy5oCmluZGV4IDFmYWYwMzFmYjc1YzdhZThiY2Q2M2MwY2Rj
NzYxNWM3YjZhYjc0YjAuLjU2NjY4NjBiOGU1OTgxYzA2ZTM0NTEzY2Y0MmIyMWRkNDFhNGY1OTYg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vYnJldy9DbGlwYm9hcmRCcmV3LmgKKysrIGIv
V2ViQ29yZS9wbGF0Zm9ybS9icmV3L0NsaXBib2FyZEJyZXcuaApAQCAtNDIsNyArNDIsOSBAQCBw
dWJsaWM6CiAgICAgdm9pZCBjbGVhckRhdGEoY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBjbGVh
ckFsbERhdGEoKTsKICAgICBTdHJpbmcgZ2V0RGF0YShjb25zdCBTdHJpbmcmLCBib29sJiBzdWNj
ZXNzKSBjb25zdDsKKyAgICBQYXNzUmVmUHRyPEJsb2I+IHdlYmtpdEdldERhdGFCbG9iKGNvbnN0
IFN0cmluZyYsIGJvb2wmIHN1Y2Nlc3MpIGNvbnN0OwogICAgIGJvb2wgc2V0RGF0YShjb25zdCBT
dHJpbmcmLCBjb25zdCBTdHJpbmcmKTsKKyAgICBib29sIHdlYmtpdFNldERhdGFCbG9iKGNvbnN0
IFN0cmluZyYsIFBhc3NSZWZQdHI8QmxvYj4pOwogCiAgICAgLy8gZXh0ZW5zaW9ucyBiZXlvbmQg
SUUncyBBUEkKICAgICBIYXNoU2V0PFN0cmluZz4gdHlwZXMoKSBjb25zdDsKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2xpcGJvYXJkQ2hyb21pdW0uY3BwIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1bS5jcHAKaW5kZXggYzFiMzRkYTQ4
Njc1MDNkMGU2NDEyMGQ2ZmRmYWNmOWIwNzhjNzMxNS4uYWZhOTdkYWY2ZjlkYzkyZTdiYjVlMTBm
MGVmMTMyMTViMjhkMGU2NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9D
bGlwYm9hcmRDaHJvbWl1bS5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DbGlw
Ym9hcmRDaHJvbWl1bS5jcHAKQEAgLTExMSw2ICsxMTEsMTIgQEAgU3RyaW5nIENsaXBib2FyZENo
cm9taXVtOjpnZXREYXRhKGNvbnN0IFN0cmluZyYgdHlwZSwgYm9vbCYgc3VjY2VzcykgY29uc3QK
ICAgICByZXR1cm4gbV9kYXRhT2JqZWN0LT5nZXREYXRhKG5vcm1hbGl6ZVR5cGUodHlwZSksIHN1
Y2Nlc3MpOwogfQogCitQYXNzUmVmUHRyPEJsb2I+IENsaXBib2FyZENocm9taXVtOjp3ZWJraXRH
ZXREYXRhQmxvYihjb25zdCBTdHJpbmcmLCBib29sJiBzdWNjZXNzKSBjb25zdAoreworICAgIHN1
Y2Nlc3MgPSBmYWxzZTsKKyAgICByZXR1cm4gMDsKK30KKwogYm9vbCBDbGlwYm9hcmRDaHJvbWl1
bTo6c2V0RGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgZGF0YSkKIHsKICAg
ICBpZiAocG9saWN5KCkgIT0gQ2xpcGJvYXJkV3JpdGFibGUpCkBAIC0xMTksNiArMTI1LDExIEBA
IGJvb2wgQ2xpcGJvYXJkQ2hyb21pdW06OnNldERhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25z
dCBTdHJpbmcmIGRhdGEpCiAgICAgcmV0dXJuIG1fZGF0YU9iamVjdC0+c2V0RGF0YShub3JtYWxp
emVUeXBlKHR5cGUpLCBkYXRhKTsKIH0KIAorYm9vbCBDbGlwYm9hcmRDaHJvbWl1bTo6d2Via2l0
U2V0RGF0YUJsb2IoY29uc3QgU3RyaW5nJiwgUGFzc1JlZlB0cjxCbG9iPikKK3sKKyAgICByZXR1
cm4gZmFsc2U7Cit9CisKIC8vIGV4dGVuc2lvbnMgYmV5b25kIElFJ3MgQVBJCiBIYXNoU2V0PFN0
cmluZz4gQ2xpcGJvYXJkQ2hyb21pdW06OnR5cGVzKCkgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2xpcGJvYXJkQ2hyb21pdW0uaCBiL1dlYkNvcmUvcGxh
dGZvcm0vY2hyb21pdW0vQ2xpcGJvYXJkQ2hyb21pdW0uaAppbmRleCAxNGY1OWU5YWM5ODNhMGEy
YWVhYmU2NDY5OTQwNTZmMjFhYjE5NjBmLi45OGFhOTljMDNiMTVmZTU5YjZiY2IyZDdmOWNlOWNl
ODg3MjAyZDExIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0NsaXBib2Fy
ZENocm9taXVtLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRDaHJv
bWl1bS5oCkBAIC01Nyw3ICs1Nyw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmly
dHVhbCB2b2lkIGNsZWFyRGF0YShjb25zdCBTdHJpbmcmIHR5cGUpOwogICAgICAgICB2b2lkIGNs
ZWFyQWxsRGF0YSgpOwogICAgICAgICBTdHJpbmcgZ2V0RGF0YShjb25zdCBTdHJpbmcmIHR5cGUs
IGJvb2wmIHN1Y2Nlc3MpIGNvbnN0OworICAgICAgICBQYXNzUmVmUHRyPEJsb2I+IHdlYmtpdEdl
dERhdGFCbG9iKGNvbnN0IFN0cmluZyYgdHlwZSwgYm9vbCYgc3VjY2VzcykgY29uc3Q7CiAgICAg
ICAgIGJvb2wgc2V0RGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgZGF0YSk7
CisgICAgICAgIGJvb2wgd2Via2l0U2V0RGF0YUJsb2IoY29uc3QgU3RyaW5nJiB0eXBlLCBQYXNz
UmVmUHRyPEJsb2I+IGRhdGEpOwogCiAgICAgICAgIC8vIGV4dGVuc2lvbnMgYmV5b25kIElFJ3Mg
QVBJCiAgICAgICAgIHZpcnR1YWwgSGFzaFNldDxTdHJpbmc+IHR5cGVzKCkgY29uc3Q7CmRpZmYg
LS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9DbGlwYm9hcmRFZmwuY3BwIGIvV2ViQ29yZS9w
bGF0Zm9ybS9lZmwvQ2xpcGJvYXJkRWZsLmNwcAppbmRleCBhN2MyYTU0ZmYxNTYxNWU4ZjI4NjI3
OTA0NzBiMWIyYzE0YTNkNzBkLi40ZDAwMWExNTdkNjJjNGUzNDEwZGQwOWUzYWE5MDlkMjljMmVm
YjkxIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9DbGlwYm9hcmRFZmwuY3BwCisr
KyBiL1dlYkNvcmUvcGxhdGZvcm0vZWZsL0NsaXBib2FyZEVmbC5jcHAKQEAgLTcwLDEyICs3MCwy
NSBAQCBTdHJpbmcgQ2xpcGJvYXJkRWZsOjpnZXREYXRhKGNvbnN0IFN0cmluZyYsIGJvb2wgJnN1
Y2Nlc3MpIGNvbnN0CiAgICAgcmV0dXJuIFN0cmluZygpOwogfQogCitQYXNzUmVmUHRyPEJsb2I+
IENsaXBib2FyZEVmbDo6d2Via2l0R2V0RGF0YUJsb2IoY29uc3QgU3RyaW5nJiwgYm9vbCYgc3Vj
Y2VzcykgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHN1Y2Nlc3MgPSBmYWxz
ZTsKKyAgICByZXR1cm4gMDsKK30KKwogYm9vbCBDbGlwYm9hcmRFZmw6OnNldERhdGEoY29uc3Qg
U3RyaW5nJiwgY29uc3QgU3RyaW5nJikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJl
dHVybiBmYWxzZTsKIH0KIAorYm9vbCBDbGlwYm9hcmRFZmw6OndlYmtpdFNldERhdGFCbG9iKGNv
bnN0IFN0cmluZyYsIFBhc3NSZWZQdHI8QmxvYj4pCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsK
KyAgICByZXR1cm4gZmFsc2U7Cit9CisKIEhhc2hTZXQ8U3RyaW5nPiBDbGlwYm9hcmRFZmw6OnR5
cGVzKCkgY29uc3QKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9wbGF0Zm9ybS9lZmwvQ2xpcGJvYXJkRWZsLmggYi9XZWJDb3JlL3BsYXRmb3JtL2VmbC9DbGlw
Ym9hcmRFZmwuaAppbmRleCAwNmY0ZTU4MDU3NTRkZWY2ZTY3YzU4YWMxODNjMTkzNjEwNTVhZDk0
Li5hMjRjNWVhNzlkZTQyY2NlZjYyMzM1ZmE5NDIyNGFkMTVhODlmM2M4IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3BsYXRmb3JtL2VmbC9DbGlwYm9hcmRFZmwuaAorKysgYi9XZWJDb3JlL3BsYXRmb3Jt
L2VmbC9DbGlwYm9hcmRFZmwuaApAQCAtMzcsNyArMzcsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBj
bGVhckRhdGEoY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBjbGVhckFsbERhdGEoKTsKICAgICBT
dHJpbmcgZ2V0RGF0YShjb25zdCBTdHJpbmcmLCBib29sJikgY29uc3Q7CisgICAgUGFzc1JlZlB0
cjxCbG9iPiB3ZWJraXRHZXREYXRhQmxvYihjb25zdCBTdHJpbmcmLCBib29sJikgY29uc3Q7CiAg
ICAgYm9vbCBzZXREYXRhKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpOworICAgIGJvb2wg
d2Via2l0U2V0RGF0YUJsb2IoY29uc3QgU3RyaW5nJiwgUGFzc1JlZlB0cjxCbG9iPik7CiAKICAg
ICBIYXNoU2V0PFN0cmluZz4gdHlwZXMoKSBjb25zdDsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8
RmlsZUxpc3Q+IGZpbGVzKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9DbGlwYm9hcmRHdGsuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQ2xpcGJvYXJkR3RrLmNw
cAppbmRleCBlN2VlNDMyNWFmNmRlMTZkZTdhNWE0NWJhMGYxMDQyMzMyYjE4ZGQ0Li5hMTk3OWQy
YjVlZmI5OTIxMzA5NTMyNWUxMmYyMGI4M2Q2YzlkOWMyIDEwMDY0NAotLS0gYS9XZWJDb3JlL3Bs
YXRmb3JtL2d0ay9DbGlwYm9hcmRHdGsuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0Ns
aXBib2FyZEd0ay5jcHAKQEAgLTE5NCw2ICsxOTQsMTIgQEAgU3RyaW5nIENsaXBib2FyZEd0azo6
Z2V0RGF0YShjb25zdCBTdHJpbmcmIHR5cGVTdHJpbmcsIGJvb2wmIHN1Y2Nlc3MpIGNvbnN0CiAg
ICAgcmV0dXJuIFN0cmluZygpOwogfQogCitQYXNzUmVmUHRyPEJsb2I+IENsaXBib2FyZEd0azo6
d2Via2l0R2V0RGF0YUJsb2IoY29uc3QgU3RyaW5nJiwgYm9vbCYgc3VjY2VzcykgY29uc3QKK3sK
KyAgICBzdWNjZXNzID0gZmFsc2U7CisgICAgcmV0dXJuIDA7Cit9CisKIGJvb2wgQ2xpcGJvYXJk
R3RrOjpzZXREYXRhKGNvbnN0IFN0cmluZyYgdHlwZVN0cmluZywgY29uc3QgU3RyaW5nJiBkYXRh
KQogewogICAgIGlmIChwb2xpY3koKSAhPSBDbGlwYm9hcmRXcml0YWJsZSkKQEAgLTIyOCw2ICsy
MzQsMTEgQEAgYm9vbCBDbGlwYm9hcmRHdGs6OnNldERhdGEoY29uc3QgU3RyaW5nJiB0eXBlU3Ry
aW5nLCBjb25zdCBTdHJpbmcmIGRhdGEpCiAgICAgcmV0dXJuIHN1Y2Nlc3M7CiB9CiAKK2Jvb2wg
Q2xpcGJvYXJkR3RrOjp3ZWJraXRTZXREYXRhQmxvYihjb25zdCBTdHJpbmcmLCBQYXNzUmVmUHRy
PEJsb2I+KQoreworICAgIHJldHVybiBmYWxzZTsKK30KKwogSGFzaFNldDxTdHJpbmc+IENsaXBi
b2FyZEd0azo6dHlwZXMoKSBjb25zdAogewogICAgIGlmIChwb2xpY3koKSAhPSBDbGlwYm9hcmRS
ZWFkYWJsZSAmJiBwb2xpY3koKSAhPSBDbGlwYm9hcmRUeXBlc1JlYWRhYmxlKQpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQ2xpcGJvYXJkR3RrLmggYi9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9DbGlwYm9hcmRHdGsuaAppbmRleCBlMTRhNTgzYTI0NzM3NTRiZjc5MDQ5OGIzNTVjMDhk
MGQyMmVhNDk1Li44YzBlYWI3ZWI0NDI2NTViMzhkZTY3MDY0OGM5ZDNkMzY3MzdlOWFlIDEwMDY0
NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9DbGlwYm9hcmRHdGsuaAorKysgYi9XZWJDb3Jl
L3BsYXRmb3JtL2d0ay9DbGlwYm9hcmRHdGsuaApAQCAtNTQsNyArNTQsOSBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIHZvaWQgY2xlYXJEYXRhKGNvbnN0IFN0cmluZyYpOwogICAgICAg
ICB2b2lkIGNsZWFyQWxsRGF0YSgpOwogICAgICAgICBTdHJpbmcgZ2V0RGF0YShjb25zdCBTdHJp
bmcmLCBib29sJikgY29uc3Q7CisgICAgICAgIFBhc3NSZWZQdHI8QmxvYj4gd2Via2l0R2V0RGF0
YUJsb2IoY29uc3QgU3RyaW5nJiwgYm9vbCYpIGNvbnN0OwogICAgICAgICBib29sIHNldERhdGEo
Y29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJik7CisgICAgICAgIGJvb2wgd2Via2l0U2V0RGF0
YUJsb2IoY29uc3QgU3RyaW5nJiwgUGFzc1JlZlB0cjxCbG9iPik7CiAKICAgICAgICAgdmlydHVh
bCBIYXNoU2V0PFN0cmluZz4gdHlwZXMoKSBjb25zdDsKICAgICAgICAgdmlydHVhbCBQYXNzUmVm
UHRyPEZpbGVMaXN0PiBmaWxlcygpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9y
bS9oYWlrdS9DbGlwYm9hcmRIYWlrdS5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2hhaWt1L0NsaXBi
b2FyZEhhaWt1LmNwcAppbmRleCA0OTVmMWQyNzBiMzc2ZmRmYjJjZjM5YmE4ZTE3ZjljOWIwNzFi
NWVmLi5mMzNmZmRkNjRhY2M5YzYzN2I4NzJjYzMwMTA3NDYzZjJjMjc5NWUzIDEwMDY0NAotLS0g
YS9XZWJDb3JlL3BsYXRmb3JtL2hhaWt1L0NsaXBib2FyZEhhaWt1LmNwcAorKysgYi9XZWJDb3Jl
L3BsYXRmb3JtL2hhaWt1L0NsaXBib2FyZEhhaWt1LmNwcApAQCAtOTMsNiArOTMsMTIgQEAgU3Ry
aW5nIENsaXBib2FyZEhhaWt1OjpnZXREYXRhKGNvbnN0IFN0cmluZyYgdHlwZSwgYm9vbCYgc3Vj
Y2VzcykgY29uc3QKICAgICByZXR1cm4gcmVzdWx0OwogfQogCitQYXNzUmVmUHRyPEJsb2I+IENs
aXBib2FyZEhhaWt1Ojp3ZWJraXRHZXREYXRhQmxvYihjb25zdCBTdHJpbmcmLCBib29sJiBzdWNj
ZXNzKSBjb25zdAoreworICAgIHN1Y2Nlc3MgPSBmYWxzZTsKKyAgICByZXR1cm4gMDsKK30KKwog
Ym9vbCBDbGlwYm9hcmRIYWlrdTo6c2V0RGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0
cmluZyYgZGF0YSkKIHsKICAgICBib29sIHJlc3VsdCA9IGZhbHNlOwpAQCAtMTE0LDYgKzEyMCwx
MSBAQCBib29sIENsaXBib2FyZEhhaWt1OjpzZXREYXRhKGNvbnN0IFN0cmluZyYgdHlwZSwgY29u
c3QgU3RyaW5nJiBkYXRhKQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK2Jvb2wgQ2xpcGJvYXJk
SGFpa3U6OndlYmtpdFNldERhdGFCbG9iKGNvbnN0IFN0cmluZyYsIFBhc3NSZWZQdHI8QmxvYj4p
Cit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCiAvLyBFeHRlbnNpb25zIGJleW9uZCBJRSdzIEFQ
SS4KIEhhc2hTZXQ8U3RyaW5nPiBDbGlwYm9hcmRIYWlrdTo6dHlwZXMoKSBjb25zdAogewpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9oYWlrdS9DbGlwYm9hcmRIYWlrdS5oIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9oYWlrdS9DbGlwYm9hcmRIYWlrdS5oCmluZGV4IDg5ZGM3YmQzNTI5ZGU0NDEw
MjU5NDZjYWRmZTNlMjFhNjI0NjQxNjEuLjg0ODEwYWU3NzZhZjY0MTBkYTMzOGMwOGQ3ZjdjZDgz
ODI1MjIzZmYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vaGFpa3UvQ2xpcGJvYXJkSGFp
a3UuaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2hhaWt1L0NsaXBib2FyZEhhaWt1LmgKQEAgLTQ1
LDcgKzQ1LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIGNsZWFyRGF0YShj
b25zdCBTdHJpbmcmIHR5cGUpOwogICAgICAgICB2b2lkIGNsZWFyQWxsRGF0YSgpOwogICAgICAg
ICBTdHJpbmcgZ2V0RGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIGJvb2wmIHN1Y2Nlc3MpIGNvbnN0
OworICAgICAgICBQYXNzUmVmUHRyPEJsb2I+IHdlYmtpdEdldERhdGFCbG9iKGNvbnN0IFN0cmlu
ZyYgdHlwZSwgYm9vbCYgc3VjY2VzcykgY29uc3Q7CiAgICAgICAgIGJvb2wgc2V0RGF0YShjb25z
dCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgZGF0YSk7CisgICAgICAgIGJvb2wgd2Via2l0
U2V0RGF0YUJsb2IoY29uc3QgU3RyaW5nJiB0eXBlLCBQYXNzUmVmUHRyPEJsb2I+KTsKIAogICAg
ICAgICAvLyBFeHRlbnNpb25zIGJleW9uZCBJRSdzIEFQSS4KICAgICAgICAgSGFzaFNldDxTdHJp
bmc+IHR5cGVzKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL21hYy9DbGlw
Ym9hcmRNYWMuaCBiL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0NsaXBib2FyZE1hYy5oCmluZGV4IDcx
ODdlY2YzMjViN2RhYWM3YWZlOWYyMjY5MGZjZTEzZWQxNGExMjQuLmNlNmI1YzM4YWFlOTRhNTUx
YTg1NjA5ZjcxNWM3ZTc0OTQ2ZDMyZjcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L0NsaXBib2FyZE1hYy5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0NsaXBib2FyZE1hYy5o
CkBAIC01NSw3ICs1NSw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsZWFyRGF0YShjb25zdCBTdHJp
bmcmIHR5cGUpOwogICAgIHZvaWQgY2xlYXJBbGxEYXRhKCk7CiAgICAgU3RyaW5nIGdldERhdGEo
Y29uc3QgU3RyaW5nJiB0eXBlLCBib29sJiBzdWNjZXNzKSBjb25zdDsKKyAgICBQYXNzUmVmUHRy
PEJsb2I+IHdlYmtpdEdldERhdGFCbG9iKGNvbnN0IFN0cmluZyYgdHlwZSwgYm9vbCYgc3VjY2Vz
cykgY29uc3Q7CiAgICAgYm9vbCBzZXREYXRhKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3Ry
aW5nJiBkYXRhKTsKKyAgICBib29sIHdlYmtpdFNldERhdGFCbG9iKGNvbnN0IFN0cmluZyYgdHlw
ZSwgUGFzc1JlZlB0cjxCbG9iPiBkYXRhKTsKICAgICAKICAgICB2aXJ0dWFsIGJvb2wgaGFzRGF0
YSgpOwogICAgIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvQ2xpcGJvYXJkTWFj
Lm1tIGIvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvQ2xpcGJvYXJkTWFjLm1tCmluZGV4IDEwZDE5NmFl
OWJlZDBkYmJlNjlhNjI4MmQ2NzY0NTcxMzI3ODkzMGUuLmRlZThkYjJlZDI1NmUxZTUwMTMwYTVh
ZTU2OWMxMTQ4MGFmMWU0MzMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0NsaXBi
b2FyZE1hYy5tbQorKysgYi9XZWJDb3JlL3BsYXRmb3JtL21hYy9DbGlwYm9hcmRNYWMubW0KQEAg
LTI0MCw2ICsyNDAsMTIgQEAgU3RyaW5nIENsaXBib2FyZE1hYzo6Z2V0RGF0YShjb25zdCBTdHJp
bmcmIHR5cGUsIGJvb2wmIHN1Y2Nlc3MpIGNvbnN0CiAgICAgcmV0dXJuIFN0cmluZygpOwogfQog
CitQYXNzUmVmUHRyPEJsb2I+IENsaXBib2FyZE1hYzo6d2Via2l0R2V0RGF0YUJsb2IoY29uc3Qg
U3RyaW5nJiwgYm9vbCYgc3VjY2VzcykgY29uc3QKK3sKKyAgICBzdWNjZXNzID0gZmFsc2U7Cisg
ICAgcmV0dXJuIDA7Cit9CisKIGJvb2wgQ2xpcGJvYXJkTWFjOjpzZXREYXRhKGNvbnN0IFN0cmlu
ZyAmdHlwZSwgY29uc3QgU3RyaW5nICZkYXRhKQogewogICAgIGlmIChwb2xpY3koKSAhPSBDbGlw
Ym9hcmRXcml0YWJsZSkKQEAgLTMwMCw2ICszMDYsMTEgQEAgSGFzaFNldDxTdHJpbmc+IENsaXBi
b2FyZE1hYzo6dHlwZXMoKSBjb25zdAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK2Jvb2wgQ2xp
cGJvYXJkTWFjOjp3ZWJraXRTZXREYXRhQmxvYihjb25zdCBTdHJpbmcmLCBQYXNzUmVmUHRyPEJs
b2I+KQoreworICAgIHJldHVybiBmYWxzZTsKK30KKwogLy8gRklYTUU6IFdlIGNvdWxkIGNhY2hl
IHRoZSBjb21wdXRlZCBmaWxlTGlzdCBpZiBuZWNlc3NhcnkKIC8vIEN1cnJlbnRseSBlYWNoIGFj
Y2VzcyBnZXRzIGEgbmV3IGNvcHksIHNldERhdGEoKSBtb2RpZmljYXRpb25zIHRvIHRoZQogLy8g
Y2xpcGJvYXJkIGFyZSBub3QgcmVmbGVjdGVkIGluIGFueSBGaWxlTGlzdCBvYmplY3RzIHRoZSBw
YWdlIGhhcyBhY2Nlc3NlZCBhbmQgc3RvcmVkCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3Jt
L3F0L0NsaXBib2FyZFF0LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vcXQvQ2xpcGJvYXJkUXQuY3Bw
CmluZGV4IDIwY2Y2MmIwZmM5Mzc1YzljYjU0NTljZWJjMTc0MzgzODQ4NzY2MzkuLmRmZTE3ODYz
NjJjYmViMjMxMTRhN2ZjNWE4N2Y5NjJjMDBmYWJkMjMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxh
dGZvcm0vcXQvQ2xpcGJvYXJkUXQuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vcXQvQ2xpcGJv
YXJkUXQuY3BwCkBAIC0xNjQsNiArMTY0LDEyIEBAIFN0cmluZyBDbGlwYm9hcmRRdDo6Z2V0RGF0
YShjb25zdCBTdHJpbmcmIHR5cGUsIGJvb2wmIHN1Y2Nlc3MpIGNvbnN0CiAgICAgcmV0dXJuIGRh
dGE7CiB9CiAKK1Bhc3NSZWZQdHI8QmxvYj4gQ2xpcGJvYXJkUXQ6OndlYmtpdEdldERhdGFCbG9i
KGNvbnN0IFN0cmluZyYsIGJvb2wmIHN1Y2Nlc3MpIGNvbnN0Cit7CisgICAgc3VjY2VzcyA9IGZh
bHNlOworICAgIHJldHVybiAwOworfQorCiBib29sIENsaXBib2FyZFF0OjpzZXREYXRhKGNvbnN0
IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBkYXRhKQogewogICAgIGlmIChwb2xpY3koKSAh
PSBDbGlwYm9hcmRXcml0YWJsZSkKQEAgLTE4OCw2ICsxOTQsMTEgQEAgYm9vbCBDbGlwYm9hcmRR
dDo6c2V0RGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgZGF0YSkKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAorYm9vbCBDbGlwYm9hcmRRdDo6d2Via2l0U2V0RGF0YUJsb2IoY29u
c3QgU3RyaW5nJiwgUGFzc1JlZlB0cjxCbG9iPikKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisK
IC8vIGV4dGVuc2lvbnMgYmV5b25kIElFJ3MgQVBJCiBIYXNoU2V0PFN0cmluZz4gQ2xpcGJvYXJk
UXQ6OnR5cGVzKCkgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vcXQvQ2xp
cGJvYXJkUXQuaCBiL1dlYkNvcmUvcGxhdGZvcm0vcXQvQ2xpcGJvYXJkUXQuaAppbmRleCA1YWNh
MWE2MDY5MzZmYzFjMDgxOTc2MmViYWJlZGNlZmFjZTJlMWM1Li5jYjg4OWU3MzE3ZGZlN2IyM2Vl
Mjk4NDg0MDc0NmU5ZjUwNzI0ZWJkIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL3F0L0Ns
aXBib2FyZFF0LmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9xdC9DbGlwYm9hcmRRdC5oCkBAIC01
Myw3ICs1Myw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBjbGVhckRhdGEo
Y29uc3QgU3RyaW5nJiB0eXBlKTsKICAgICAgICAgdm9pZCBjbGVhckFsbERhdGEoKTsKICAgICAg
ICAgU3RyaW5nIGdldERhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBib29sJiBzdWNjZXNzKSBjb25z
dDsKKyAgICAgICAgUGFzc1JlZlB0cjxCbG9iPiB3ZWJraXRHZXREYXRhQmxvYihjb25zdCBTdHJp
bmcmIHR5cGUsIGJvb2wmIHN1Y2Nlc3MpIGNvbnN0OwogICAgICAgICBib29sIHNldERhdGEoY29u
c3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGRhdGEpOworICAgICAgICBib29sIHdlYmtp
dFNldERhdGFCbG9iKGNvbnN0IFN0cmluZyYgdHlwZSwgUGFzc1JlZlB0cjxCbG9iPiBkYXRhKTsK
IAogICAgICAgICAvLyBleHRlbnNpb25zIGJleW9uZCBJRSdzIEFQSQogICAgICAgICB2aXJ0dWFs
IEhhc2hTZXQ8U3RyaW5nPiB0eXBlcygpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0
Zm9ybS93aW4vQ2xpcGJvYXJkV2luLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2Fy
ZFdpbi5jcHAKaW5kZXggN2E1NDczNzM1MmMzZTQwYzY3ZmFkNWYyNzVmMGEwMzUwNjY2NTU3Yi4u
MmVlYjJkMjFjMDc3NTBlZmMxM2YyYzBjZjBmYjM4YTk3MzMyYmE2MSAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkV2luLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3Jt
L3dpbi9DbGlwYm9hcmRXaW4uY3BwCkBAIC01MTcsNiArNTE3LDEyIEBAIFN0cmluZyBDbGlwYm9h
cmRXaW46OmdldERhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBib29sJiBzdWNjZXNzKSBjb25zdAog
ICAgIHJldHVybiAiIjsKIH0KIAorUGFzc1JlZlB0cjxCbG9iPiBDbGlwYm9hcmRXaW46OndlYmtp
dEdldERhdGFCbG9iKGNvbnN0IFN0cmluZyYgdHlwZSwgYm9vbCYgc3VjY2VzcykgY29uc3QKK3sK
KyAgICBzdWNjZXNzID0gZmFsc2U7CisgICAgcmV0dXJuIDA7Cit9CisKIGJvb2wgQ2xpcGJvYXJk
V2luOjpzZXREYXRhKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBkYXRhKQogewog
ICAgIC8vIEZJWE1FOiBOZWVkIHRvIGJlIGFibGUgdG8gd3JpdGUgdG8gdGhlIHN5c3RlbSBjbGlw
Ym9hcmQgPHJkYXI6Ly9wcm9ibGVtLzUwMTU5NDE+CkBAIC01NDYsNiArNTUyLDExIEBAIGJvb2wg
Q2xpcGJvYXJkV2luOjpzZXREYXRhKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBk
YXRhKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAorYm9vbCBDbGlwYm9hcmRXaW46OndlYmtpdFNl
dERhdGFCbG9iKGNvbnN0IFN0cmluZyYsIFBhc3NSZWZQdHI8QmxvYj4pCit7CisgICAgcmV0dXJu
IGZhbHNlOworfQorCiBzdGF0aWMgdm9pZCBhZGRNaW1lVHlwZXNGb3JGb3JtYXQoSGFzaFNldDxT
dHJpbmc+JiByZXN1bHRzLCBjb25zdCBGT1JNQVRFVEMmIGZvcm1hdCkKIHsKICAgICAvLyBVUkwg
YW5kIFRleHQgYXJlIHByb3ZpZGVkIGZvciBjb21wYXRpYmlsaXR5IHdpdGggSUUncyBtb2RlbApk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkV2luLmggYi9XZWJDb3Jl
L3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRXaW4uaAppbmRleCBjZTY0Yjg1MTg0ODM3M2QxYTg0YjNl
YWUxMjFiMDc4MjUxY2QxMGZlLi4zOWNmYmFmODlhYzhjNTA3ZjRjODEyZTAxNjhiNmQ2M2U5Y2E2
NGEyIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRXaW4uaAorKysg
Yi9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRXaW4uaApAQCAtNTUsNyArNTUsOSBAQCBw
dWJsaWM6CiAgICAgdm9pZCBjbGVhckRhdGEoY29uc3QgU3RyaW5nJiB0eXBlKTsKICAgICB2b2lk
IGNsZWFyQWxsRGF0YSgpOwogICAgIFN0cmluZyBnZXREYXRhKGNvbnN0IFN0cmluZyYgdHlwZSwg
Ym9vbCYgc3VjY2VzcykgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxCbG9iPiB3ZWJraXRHZXREYXRh
QmxvYihjb25zdCBTdHJpbmcmIHR5cGUsIGJvb2wmIHN1Y2Nlc3MpIGNvbnN0OwogICAgIGJvb2wg
c2V0RGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgZGF0YSk7CisgICAgYm9v
bCB3ZWJraXRTZXREYXRhQmxvYihjb25zdCBTdHJpbmcmIHR5cGUsIFBhc3NSZWZQdHI8QmxvYj4g
ZGF0YSk7CiAKICAgICAvLyBleHRlbnNpb25zIGJleW9uZCBJRSdzIEFQSQogICAgIHZpcnR1YWwg
SGFzaFNldDxTdHJpbmc+IHR5cGVzKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRm
b3JtL3d4L0NsaXBib2FyZFd4LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vd3gvQ2xpcGJvYXJkV3gu
Y3BwCmluZGV4IDMyMjE2YTY1MjQyNGJlMzY2YzBhZTJhZjU5ODE4ODMwYWUxODhlYzEuLjVmMTA2
NDE0YzAzOWVjZTk5ODViZWQzOTJjY2YyMzE4M2RmOGZhYTQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
cGxhdGZvcm0vd3gvQ2xpcGJvYXJkV3guY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vd3gvQ2xp
cGJvYXJkV3guY3BwCkBAIC02MCwxNSArNjAsMjkgQEAgdm9pZCBDbGlwYm9hcmRXeDo6Y2xlYXJB
bGxEYXRhKCkKIFN0cmluZyBDbGlwYm9hcmRXeDo6Z2V0RGF0YShjb25zdCBTdHJpbmcmIHR5cGUs
IGJvb2wmIHN1Y2Nlc3MpIGNvbnN0IAogewogICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgc3Vj
Y2VzcyA9IGZhbHNlOwogICAgIHJldHVybiAiIjsgCiB9CiAKK1Bhc3NSZWZQdHI8QmxvYj4gQ2xp
cGJvYXJkV3g6OndlYmtpdEdldERhdGFCbG9iKGNvbnN0IFN0cmluZyYsIGJvb2wmIHN1Y2Nlc3Mp
IGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBzdWNjZXNzID0gZmFsc2U7Cisg
ICAgcmV0dXJuIDA7Cit9CisKIGJvb2wgQ2xpcGJvYXJkV3g6OnNldERhdGEoY29uc3QgU3RyaW5n
JiB0eXBlLCBjb25zdCBTdHJpbmcmIGRhdGEpIAogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCitib29sIENsaXBib2FyZFd4Ojp3ZWJraXRTZXREYXRhQmxv
Yihjb25zdCBTdHJpbmcmLCBQYXNzUmVmUHRyPEJsb2I+KQoreworICAgIG5vdEltcGxlbWVudGVk
KCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCiAvLyBleHRlbnNpb25zIGJleW9uZCBJRSdzIEFQ
SQogSGFzaFNldDxTdHJpbmc+IENsaXBib2FyZFd4Ojp0eXBlcygpIGNvbnN0IAogewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>70437</attachid>
            <date>2010-10-11 08:55:36 -0700</date>
            <delta_ts>2010-10-15 14:29:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-47482-20101011085534.patch</filename>
            <type>text/plain</type>
            <size>27189</size>
            <attacher name="Daniel Cheng">dcheng</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NGRkOGMxMTY2NmFjMDQ1NDRjMzc3NDI0NWNkOGExMDJlYjNlMDkyYi4uNTYyOWRiNzkxMGYxNjNl
ZWJlZDRkYTQ0NGJmNGRiNTgxZjRjOWQ4NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2MyBAQAorMjAxMC0xMC0xMCAgRGFu
aWVsIENoZW5nICA8ZGNoZW5nQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgd2Via2l0R2V0RGF0YUJsb2Ivd2Via2l0R2V0
RGF0YUJsb2Igc3R1YnMgdG8gQ2xpcGJvYXJkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDc0ODIKKworICAgICAgICBUaGlzIGlzIGFuIGV4cGVyaW1l
bnRhbCBjaGFuZ2UgdG8gdHJ5IHN1cHBvcnRpbmcgc2NlbmFyaW9zIGxpa2UgaW1hZ2UKKyAgICAg
ICAgY29weS1hbmQtcGFzdGUgb3IgZHJhZy1hbmQtZHJvcCBpbiBXZWJLaXQuCisKKyAgICAgICAg
Tm8gdGVzdHMuIE5vIGZ1bmN0aW9uYWxpdHkgY2hhbmdlZC4KKworICAgICAgICAqIFdlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0NsaXBi
b2FyZEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0NsaXBib2FyZDo6d2Via2l0R2V0
RGF0YUJsb2IpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOENsaXBib2FyZEN1c3Rv
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOENsaXBib2FyZDo6d2Via2l0R2V0RGF0YUJsb2JD
YWxsYmFjayk6CisgICAgICAgICogZG9tL0NsaXBib2FyZC5oOgorICAgICAgICAqIGRvbS9DbGlw
Ym9hcmQuaWRsOgorICAgICAgICAqIHBsYXRmb3JtL2FuZHJvaWQvQ2xpcGJvYXJkQW5kcm9pZC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRBbmRyb2lkOjp3ZWJraXRHZXREYXRhQmxv
Yik6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRBbmRyb2lkOjp3ZWJraXRTZXREYXRhQmxv
Yik6CisgICAgICAgICogcGxhdGZvcm0vYW5kcm9pZC9DbGlwYm9hcmRBbmRyb2lkLmg6CisgICAg
ICAgICogcGxhdGZvcm0vYnJldy9DbGlwYm9hcmRCcmV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNsaXBib2FyZEJyZXc6OndlYmtpdEdldERhdGFCbG9iKToKKyAgICAgICAgKFdlYkNvcmU6OkNs
aXBib2FyZEJyZXc6OndlYmtpdFNldERhdGFCbG9iKToKKyAgICAgICAgKiBwbGF0Zm9ybS9icmV3
L0NsaXBib2FyZEJyZXcuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRD
aHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRDaHJvbWl1bTo6d2Via2l0
R2V0RGF0YUJsb2IpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkQ2hyb21pdW06OndlYmtp
dFNldERhdGFCbG9iKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRDaHJv
bWl1bS5oOgorICAgICAgICAqIHBsYXRmb3JtL2VmbC9DbGlwYm9hcmRFZmwuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q2xpcGJvYXJkRWZsOjp3ZWJraXRHZXREYXRhQmxvYik6CisgICAgICAgIChX
ZWJDb3JlOjpDbGlwYm9hcmRFZmw6OndlYmtpdFNldERhdGFCbG9iKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9lZmwvQ2xpcGJvYXJkRWZsLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL0NsaXBib2Fy
ZEd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRHdGs6OndlYmtpdEdldERhdGFC
bG9iKToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEd0azo6d2Via2l0U2V0RGF0YUJsb2Ip
OgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9DbGlwYm9hcmRHdGsuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9oYWlrdS9DbGlwYm9hcmRIYWlrdS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9h
cmRIYWlrdTo6d2Via2l0R2V0RGF0YUJsb2IpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJk
SGFpa3U6OndlYmtpdFNldERhdGFCbG9iKToKKyAgICAgICAgKiBwbGF0Zm9ybS9oYWlrdS9DbGlw
Ym9hcmRIYWlrdS5oOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9DbGlwYm9hcmRNYWMuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tYWMvQ2xpcGJvYXJkTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6
Q2xpcGJvYXJkTWFjOjp3ZWJraXRHZXREYXRhQmxvYik6CisgICAgICAgIChXZWJDb3JlOjpDbGlw
Ym9hcmRNYWM6OndlYmtpdFNldERhdGFCbG9iKToKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9DbGlw
Ym9hcmRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRRdDo6d2Via2l0R2V0RGF0
YUJsb2IpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkUXQ6OndlYmtpdFNldERhdGFCbG9i
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9DbGlwYm9hcmRRdC5oOgorICAgICAgICAqIHBsYXRm
b3JtL3dpbi9DbGlwYm9hcmRXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkV2lu
Ojp3ZWJraXRHZXREYXRhQmxvYik6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRXaW46Ondl
YmtpdFNldERhdGFCbG9iKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vQ2xpcGJvYXJkV2luLmg6
CisgICAgICAgICogcGxhdGZvcm0vd3gvQ2xpcGJvYXJkV3guY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2xpcGJvYXJkV3g6OmdldERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkV3g6
OndlYmtpdEdldERhdGFCbG9iKToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZFd4Ojp3ZWJr
aXRTZXREYXRhQmxvYik6CisKIDIwMTAtMTAtMDggIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDk0YjNjYTIyNmZkODE1NTJjMmNlMjFk
ZTM0YzQwY2Q2MTQ2ZDQ4ODIuLmVmN2Q3NWQ4M2YxNTk4Y2NjOTY5OGU4MGFlZTcxYzg4MjlhZDA3
YzAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC03NDUs
NyArNzQ1LDcgQEAKIAkJMkVENjA5QkMxMTQ1QjA3MTAwQzg2ODRFIC8qIERPTUZvcm1EYXRhLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFRDYwOUJB
MTE0NUIwNzEwMEM4Njg0RSAvKiBET01Gb3JtRGF0YS5jcHAgKi87IH07CiAJCTJFRDYwOUJEMTE0
NUIwNzEwMEM4Njg0RSAvKiBET01Gb3JtRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMkVENjA5QkIxMTQ1QjA3MTAwQzg2ODRFIC8qIERPTUZvcm1E
YXRhLmggKi87IH07CiAJCTJFREVGMUYzMTIxQjBFRkMwMDcyNkRCMiAvKiBCbG9iRGF0YS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRURFRjFFRDEy
MUIwRUZDMDA3MjZEQjIgLyogQmxvYkRhdGEuY3BwICovOyB9OwotCQkyRURFRjFGNDEyMUIwRUZD
MDA3MjZEQjIgLyogQmxvYkRhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDJFREVGMUVFMTIxQjBFRkMwMDcyNkRCMiAvKiBCbG9iRGF0YS5oICovOyB9
OworCQkyRURFRjFGNDEyMUIwRUZDMDA3MjZEQjIgLyogQmxvYkRhdGEuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFREVGMUVFMTIxQjBFRkMwMDcyNkRC
MiAvKiBCbG9iRGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTJFREVGMUY1MTIxQjBFRkMwMDcyNkRCMiAvKiBCbG9iUmVnaXN0cnkuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFREVGMUVGMTIxQjBF
RkMwMDcyNkRCMiAvKiBCbG9iUmVnaXN0cnkuaCAqLzsgfTsKIAkJMkVERUYxRjYxMjFCMEVGQzAw
NzI2REIyIC8qIEJsb2JSZWdpc3RyeUltcGwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMkVERUYxRjAxMjFCMEVGQzAwNzI2REIyIC8qIEJsb2JSZWdp
c3RyeUltcGwuY3BwICovOyB9OwogCQkyRURFRjFGNzEyMUIwRUZDMDA3MjZEQjIgLyogQmxvYlJl
Z2lzdHJ5SW1wbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMkVERUYxRjExMjFCMEVGQzAwNzI2REIyIC8qIEJsb2JSZWdpc3RyeUltcGwuaCAqLzsgfTsK
QEAgLTI4NjksNyArMjg2OSw3IEBACiAJCTk3M0UzMjU3MTA4ODNCN0MwMDVCQzQ5MyAvKiBSZXNv
dXJjZUxvYWROb3RpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTczRTMyNTUxMDg4M0I3QzAwNUJDNDkzIC8qIFJlc291cmNlTG9hZE5vdGlmaWVy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTc2
RDZDNzcxMjJCOEEzRDAwMUZEMUY3IC8qIEFzeW5jRmlsZVdyaXRlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTc2RDZDNTgxMjJCOEEzRDAwMUZEMUY3
IC8qIEFzeW5jRmlsZVdyaXRlci5oICovOyB9OwogCQk5NzZENkM3ODEyMkI4QTNEMDAxRkQxRjcg
LyogQmxvYi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5NzZENkM1OTEyMkI4QTNEMDAxRkQxRjcgLyogQmxvYi5jcHAgKi87IH07Ci0JCTk3NkQ2Qzc5
MTIyQjhBM0QwMDFGRDFGNyAvKiBCbG9iLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5NzZENkM1QTEyMkI4QTNEMDAxRkQxRjcgLyogQmxvYi5oICovOyB9
OworCQk5NzZENkM3OTEyMkI4QTNEMDAxRkQxRjcgLyogQmxvYi5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTc2RDZDNUExMjJCOEEzRDAwMUZEMUY3IC8q
IEJsb2IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk5NzZENkM3QjEyMkI4QTNEMDAxRkQxRjcgLyogQmxvYkJ1aWxkZXIuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTc2RDZDNUMxMjJCOEEzRDAwMUZE
MUY3IC8qIEJsb2JCdWlsZGVyLmNwcCAqLzsgfTsKIAkJOTc2RDZDN0MxMjJCOEEzRDAwMUZEMUY3
IC8qIEJsb2JCdWlsZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5NzZENkM1RDEyMkI4QTNEMDAxRkQxRjcgLyogQmxvYkJ1aWxkZXIuaCAqLzsgfTsK
IAkJOTc2RDZDN0UxMjJCOEEzRDAwMUZEMUY3IC8qIEJsb2JVUkwuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTc2RDZDNUYxMjJCOEEzRDAwMUZEMUY3
IC8qIEJsb2JVUkwuY3BwICovOyB9OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0NsaXBib2FyZEN1c3RvbS5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2xpcGJvYXJkQ3Vz
dG9tLmNwcAppbmRleCAxN2M2NjQwMWJkNDFkMmNjM2I0OWRkZTRiYjVhZGE4YzU5YTQ0M2VmLi4y
ODIzZjQyNGEwOTA0OGY4YWRjMGRiYmNjNTgyZDFhOThiNWVjOWYwIDEwMDY0NAotLS0gYS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTQ2xpcGJvYXJkQ3VzdG9tLmNwcAorKysgYi9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTQ2xpcGJvYXJkQ3VzdG9tLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUg
IkhUTUxJbWFnZUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJJ
bnRQb2ludC5oIgorI2luY2x1ZGUgIkpTQmxvYi5oIgogI2luY2x1ZGUgIkpTTm9kZS5oIgogI2lu
Y2x1ZGUgIk5vZGUuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgpAQCAtOTcsNiArOTgs
MjIgQEAgSlNWYWx1ZSBKU0NsaXBib2FyZDo6Z2V0RGF0YShFeGVjU3RhdGUqIGV4ZWMpCiAgICAg
cmV0dXJuIGpzU3RyaW5nKGV4ZWMsIHJlc3VsdCk7CiB9CiAKK0pTVmFsdWUgSlNDbGlwYm9hcmQ6
OndlYmtpdEdldERhdGFCbG9iKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICAvLyBGSVhNRTogSXQg
ZG9lcyBub3QgbWF0Y2ggdGhlIHJlc3Qgb2YgdGhlIEpTIGJpbmRpbmdzIHRvIHRocm93IG9uIGlu
dmFsaWQgbnVtYmVyIG9mIGFyZ3VtZW50cy4KKyAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgp
ICE9IDEpCisgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVN5bnRheEVycm9y
KGV4ZWMsICJ3ZWJraXRHZXREYXRhQmxvYjogSW52YWxpZCBudW1iZXIgb2YgYXJndW1lbnRzIikp
OworCisgICAgQ2xpcGJvYXJkKiBjbGlwYm9hcmQgPSBpbXBsKCk7CisKKyAgICBib29sIHN1Y2Nl
c3M7CisgICAgUmVmUHRyPEJsb2I+IHJlc3VsdCA9IGNsaXBib2FyZC0+d2Via2l0R2V0RGF0YUJs
b2IodXN0cmluZ1RvU3RyaW5nKGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpKSwgc3Vj
Y2Vzcyk7CisgICAgaWYgKCFzdWNjZXNzKQorICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsK
KworICAgIHJldHVybiB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCgpLCByZXN1bHQuZ2V0KCkpOwor
fQorCiBKU1ZhbHVlIEpTQ2xpcGJvYXJkOjpzZXREcmFnSW1hZ2UoRXhlY1N0YXRlKiBleGVjKQog
ewogICAgIENsaXBib2FyZCogY2xpcGJvYXJkID0gaW1wbCgpOwpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDbGlwYm9hcmRDdXN0b20uY3BwIGIvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhDbGlwYm9hcmRDdXN0b20uY3BwCmluZGV4IGQ4NWQ3YTA2YzZjNDNh
ZDA2NWRhYzQ1NjdiOTNiZDMyNTFhMzFhNmEuLjBjNDA2NGZiZjljYzk4Mzg3Y2QzOWQ4OWVjNWI1
YmYyYjNkYWY0YmEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q2xp
cGJvYXJkQ3VzdG9tLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOENsaXBi
b2FyZEN1c3RvbS5jcHAKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlICJFbGVtZW50LmgiCiAK
ICNpbmNsdWRlICJWOEJpbmRpbmcuaCIKKyNpbmNsdWRlICJWOEJsb2IuaCIKICNpbmNsdWRlICJW
OE5vZGUuaCIKICNpbmNsdWRlICJWOFByb3h5LmgiCiAKQEAgLTk2LDYgKzk3LDIyIEBAIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBWOENsaXBib2FyZDo6Z2V0RGF0YUNhbGxiYWNrKGNvbnN0IHY4OjpB
cmd1bWVudHMmIGFyZ3MpCiAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKIH0KIAordjg6Okhh
bmRsZTx2ODo6VmFsdWU+IFY4Q2xpcGJvYXJkOjp3ZWJraXRHZXREYXRhQmxvYkNhbGxiYWNrKGNv
bnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit7CisgICAgSU5DX1NUQVRTKCJET00uQ2xpcGJvYXJk
LndlYmtpdEdldERhdGFCbG9iKCkiKTsKKyAgICBDbGlwYm9hcmQqIGNsaXBib2FyZCA9IFY4Q2xp
cGJvYXJkOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKKworICAgIGlmIChhcmdzLkxlbmd0aCgp
ICE9IDEpCisgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCJ3ZWJraXRHZXREYXRhQmxvYjogSW52
YWxpZCBudW1iZXIgb2YgYXJndW1lbnRzIiwgVjhQcm94eTo6U3ludGF4RXJyb3IpOworCisgICAg
Ym9vbCBzdWNjZXNzOworICAgIFJlZlB0cjxCbG9iPiByZXN1bHQgPSBjbGlwYm9hcmQtPndlYmtp
dEdldERhdGFCbG9iKHRvV2ViQ29yZVN0cmluZyhhcmdzWzBdKSwgc3VjY2Vzcyk7CisgICAgaWYg
KHN1Y2Nlc3MpCisgICAgICAgIHJldHVybiBWOEJsb2I6OndyYXAocmVzdWx0LmdldCgpKTsKKwor
ICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7Cit9CisKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBW
OENsaXBib2FyZDo6c2V0RHJhZ0ltYWdlQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJn
cykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5DbGlwYm9hcmQuc2V0RHJhZ0ltYWdlKCkiKTsKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0NsaXBib2FyZC5oIGIvV2ViQ29yZS9kb20vQ2xpcGJvYXJk
LmgKaW5kZXggYjhlYWRmYjZkMDY3NDg1YjQxOGI4NzliMWE5Y2RmZmM2ZmNjZTAxZi4uNzE3OGY5
MWE5YTEzYWJlODU3YjMxMzE1ZDhkZDM5MWY5MmE2NGI3ZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9k
b20vQ2xpcGJvYXJkLmgKKysrIGIvV2ViQ29yZS9kb20vQ2xpcGJvYXJkLmgKQEAgLTI0LDYgKzI0
LDcgQEAKICNpZm5kZWYgQ2xpcGJvYXJkX2gKICNkZWZpbmUgQ2xpcGJvYXJkX2gKIAorI2luY2x1
ZGUgIkJsb2IuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUg
IkNsaXBib2FyZEFjY2Vzc1BvbGljeS5oIgogI2luY2x1ZGUgIkRyYWdBY3Rpb25zLmgiCkBAIC02
Miw2ICs2Myw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lkIGNs
ZWFyQWxsRGF0YSgpID0gMDsKICAgICAgICAgdmlydHVhbCBTdHJpbmcgZ2V0RGF0YShjb25zdCBT
dHJpbmcmIHR5cGUsIGJvb2wmIHN1Y2Nlc3MpIGNvbnN0ID0gMDsKICAgICAgICAgdmlydHVhbCBi
b29sIHNldERhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGRhdGEpID0gMDsK
KworICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8QmxvYj4gd2Via2l0R2V0RGF0YUJsb2IoY29u
c3QgU3RyaW5nJiB0eXBlLCBib29sJiBzdWNjZXNzKSBjb25zdCA9IDA7CisgICAgICAgIHZpcnR1
YWwgYm9vbCB3ZWJraXRTZXREYXRhQmxvYihjb25zdCBTdHJpbmcmIHR5cGUsIFBhc3NSZWZQdHI8
QmxvYj4gZGF0YSkgPSAwOwogICAgIAogICAgICAgICAvLyBleHRlbnNpb25zIGJleW9uZCBJRSdz
IEFQSQogICAgICAgICB2aXJ0dWFsIEhhc2hTZXQ8U3RyaW5nPiB0eXBlcygpIGNvbnN0ID0gMDsK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0NsaXBib2FyZC5pZGwgYi9XZWJDb3JlL2RvbS9DbGlw
Ym9hcmQuaWRsCmluZGV4IDEwMjRhMzZkMTZhM2M0OTAzYWYwZGU2ZDVkM2RmOTZlZDg4NzRkYTQu
LmRlZDMxMjIzMTNmMDE5MGYzNDU5NzlkNmQ5MGJhMGZkNjg2ZjJjZWQgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvZG9tL0NsaXBib2FyZC5pZGwKKysrIGIvV2ViQ29yZS9kb20vQ2xpcGJvYXJkLmlkbApA
QCAtMzgsOCArMzgsMTEgQEAgbW9kdWxlIGNvcmUgewogICAgICAgICAgICAgcmFpc2VzKERPTUV4
Y2VwdGlvbik7CiAgICAgICAgIFtDdXN0b21dIHZvaWQgZ2V0RGF0YShpbiBET01TdHJpbmcgdHlw
ZSkKICAgICAgICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24pOworICAgICAgICBbQ3VzdG9tXSB2
b2lkIHdlYmtpdEdldERhdGFCbG9iKGluIERPTVN0cmluZyB0eXBlKQorICAgICAgICAgICAgcmFp
c2VzKERPTUV4Y2VwdGlvbik7CiAgICAgICAgIC8vIEZJWE1FOiBSZXF1aXJlc0FsbEFyZ3VtZW50
cyBpcyBwcm9iYWJseSBib2d1cyBoZXJlLgogICAgICAgICBbUmVxdWlyZXNBbGxBcmd1bWVudHNd
IGJvb2xlYW4gc2V0RGF0YShpbiBET01TdHJpbmcgdHlwZSwgaW4gRE9NU3RyaW5nIGRhdGEpOwor
ICAgICAgICBbUmVxdWlyZXNBbGxBcmd1bWVudHNdIGJvb2xlYW4gd2Via2l0U2V0RGF0YUJsb2Io
aW4gRE9NU3RyaW5nIHR5cGUsIGluIEJsb2IgZGF0YSk7CiAgICAgICAgIFtDdXN0b21dIHZvaWQg
c2V0RHJhZ0ltYWdlKGluIEhUTUxJbWFnZUVsZW1lbnQgaW1hZ2UsIGluIGxvbmcgeCwgaW4gbG9u
ZyB5KQogICAgICAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAgICAgfTsKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvcGxhdGZvcm0vYW5kcm9pZC9DbGlwYm9hcmRBbmRyb2lkLmNwcCBiL1dlYkNv
cmUvcGxhdGZvcm0vYW5kcm9pZC9DbGlwYm9hcmRBbmRyb2lkLmNwcAppbmRleCBhOTFmZDIxYTU4
NzRlYzA2NDU5OWMzMjQ5NDkxNDg5NDU4ODc1NzE5Li4wZWVkMjI1YmU3NDlhMTAyY2YwNjcxOGQy
YzYyNjAzZjRhYTdiYmZkIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2FuZHJvaWQvQ2xp
cGJvYXJkQW5kcm9pZC5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9hbmRyb2lkL0NsaXBib2Fy
ZEFuZHJvaWQuY3BwCkBAIC02NSwxMiArNjUsMjQgQEAgU3RyaW5nIENsaXBib2FyZEFuZHJvaWQ6
OmdldERhdGEoY29uc3QgU3RyaW5nJiwgYm9vbCYgc3VjY2VzcykgY29uc3QKICAgICByZXR1cm4g
IiI7CiB9CiAKK1Bhc3NSZWZQdHI8QmxvYj4gQ2xpcGJvYXJkQW5kcm9pZDo6d2Via2l0R2V0RGF0
YUJsb2IoY29uc3QgU3RyaW5nJiwgYm9vbCYgc3VjY2VzcykgY29uc3QKK3sKKyAgICBzdWNjZXNz
ID0gZmFsc2U7CisgICAgcmV0dXJuIDA7Cit9CisKIGJvb2wgQ2xpcGJvYXJkQW5kcm9pZDo6c2V0
RGF0YShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKQogewogICAgIEFTU0VSVChpc0ZvckRy
YWdBbmREcm9wKCkpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIAorYm9vbCBDbGlwYm9hcmRBbmRy
b2lkOjp3ZWJraXRTZXREYXRhQmxvYihjb25zdCBTdHJpbmcmLCBQYXNzUmVmUHRyPEJsb2I+KQor
eworICAgIEFTU0VSVChpc0ZvckRyYWdBbmREcm9wKCkpOworICAgIHJldHVybiBmYWxzZTsKK30K
KwogLy8gZXh0ZW5zaW9ucyBiZXlvbmQgSUUncyBBUEkKIEhhc2hTZXQ8U3RyaW5nPiBDbGlwYm9h
cmRBbmRyb2lkOjp0eXBlcygpIGNvbnN0CiB7IApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9y
bS9hbmRyb2lkL0NsaXBib2FyZEFuZHJvaWQuaCBiL1dlYkNvcmUvcGxhdGZvcm0vYW5kcm9pZC9D
bGlwYm9hcmRBbmRyb2lkLmgKaW5kZXggODA3NjUzYmQzMzdkOTExYWFlNzAyMTNkYjk3ZDE2ZmM1
NjA3YjEzMS4uMjE2ZTBjZmY5MDJjMGQ4NzI0ZDYxYjFmNmFkMWQ4OGViZWYzN2IyMCAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9hbmRyb2lkL0NsaXBib2FyZEFuZHJvaWQuaAorKysgYi9X
ZWJDb3JlL3BsYXRmb3JtL2FuZHJvaWQvQ2xpcGJvYXJkQW5kcm9pZC5oCkBAIC00Myw3ICs0Myw5
IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsZWFyRGF0YShjb25zdCBTdHJpbmcmKTsKICAgICB2b2lk
IGNsZWFyQWxsRGF0YSgpOwogICAgIFN0cmluZyBnZXREYXRhKGNvbnN0IFN0cmluZyYsIGJvb2wm
IHN1Y2Nlc3MpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8QmxvYj4gd2Via2l0R2V0RGF0YUJsb2Io
Y29uc3QgU3RyaW5nJiwgYm9vbCYgc3VjY2VzcykgY29uc3Q7CiAgICAgYm9vbCBzZXREYXRhKGNv
bnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpOworICAgIGJvb2wgd2Via2l0U2V0RGF0YUJsb2Io
Y29uc3QgU3RyaW5nJiwgUGFzc1JlZlB0cjxCbG9iPik7CiAKICAgICAvLyBleHRlbnNpb25zIGJl
eW9uZCBJRSdzIEFQSQogICAgIEhhc2hTZXQ8U3RyaW5nPiB0eXBlcygpIGNvbnN0OwpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9icmV3L0NsaXBib2FyZEJyZXcuY3BwIGIvV2ViQ29yZS9w
bGF0Zm9ybS9icmV3L0NsaXBib2FyZEJyZXcuY3BwCmluZGV4IGMwNTA0YmM4MDU4Y2I3OTYwYjI4
OGU0YzIxYzkxYWExYzBiYjMyZGQuLjcwZTU3ZGU3OGRjMDg3NTI3OTM4YjgwYTY2MDBkMjU0ZTg0
YzQwOGIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vYnJldy9DbGlwYm9hcmRCcmV3LmNw
cAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2JyZXcvQ2xpcGJvYXJkQnJldy5jcHAKQEAgLTY2LDEy
ICs2NiwyNCBAQCBTdHJpbmcgQ2xpcGJvYXJkQnJldzo6Z2V0RGF0YShjb25zdCBTdHJpbmcmLCBi
b29sJiBzdWNjZXNzKSBjb25zdAogICAgIHJldHVybiAiIjsKIH0KIAorUGFzc1JlZlB0cjxCbG9i
PiBDbGlwYm9hcmRCcmV3Ojp3ZWJraXRHZXREYXRhQmxvYihjb25zdCBTdHJpbmcmLCBib29sJiBz
dWNjZXNzKSBjb25zdAoreworICAgIHN1Y2Nlc3MgPSBmYWxzZTsKKyAgICByZXR1cm4gMDsKK30K
KwogYm9vbCBDbGlwYm9hcmRCcmV3OjpzZXREYXRhKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmlu
ZyYpCiB7CiAgICAgQVNTRVJUKGlzRm9yRHJhZ0FuZERyb3AoKSk7CiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCitib29sIENsaXBib2FyZEJyZXc6OndlYmtpdFNldERhdGFCbG9iKGNvbnN0IFN0cmlu
ZyYsIFBhc3NSZWZQdHI8QmxvYj4pCit7CisgICAgQVNTRVJUKGlzRm9yRHJhZ0FuZERyb3AoKSk7
CisgICAgcmV0dXJuIGZhbHNlOworfQorCiAvLyBleHRlbnNpb25zIGJleW9uZCBJRSdzIEFQSQog
SGFzaFNldDxTdHJpbmc+IENsaXBib2FyZEJyZXc6OnR5cGVzKCkgY29uc3QKIHsKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvcGxhdGZvcm0vYnJldy9DbGlwYm9hcmRCcmV3LmggYi9XZWJDb3JlL3BsYXRm
b3JtL2JyZXcvQ2xpcGJvYXJkQnJldy5oCmluZGV4IDFmYWYwMzFmYjc1YzdhZThiY2Q2M2MwY2Rj
NzYxNWM3YjZhYjc0YjAuLjU2NjY4NjBiOGU1OTgxYzA2ZTM0NTEzY2Y0MmIyMWRkNDFhNGY1OTYg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vYnJldy9DbGlwYm9hcmRCcmV3LmgKKysrIGIv
V2ViQ29yZS9wbGF0Zm9ybS9icmV3L0NsaXBib2FyZEJyZXcuaApAQCAtNDIsNyArNDIsOSBAQCBw
dWJsaWM6CiAgICAgdm9pZCBjbGVhckRhdGEoY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBjbGVh
ckFsbERhdGEoKTsKICAgICBTdHJpbmcgZ2V0RGF0YShjb25zdCBTdHJpbmcmLCBib29sJiBzdWNj
ZXNzKSBjb25zdDsKKyAgICBQYXNzUmVmUHRyPEJsb2I+IHdlYmtpdEdldERhdGFCbG9iKGNvbnN0
IFN0cmluZyYsIGJvb2wmIHN1Y2Nlc3MpIGNvbnN0OwogICAgIGJvb2wgc2V0RGF0YShjb25zdCBT
dHJpbmcmLCBjb25zdCBTdHJpbmcmKTsKKyAgICBib29sIHdlYmtpdFNldERhdGFCbG9iKGNvbnN0
IFN0cmluZyYsIFBhc3NSZWZQdHI8QmxvYj4pOwogCiAgICAgLy8gZXh0ZW5zaW9ucyBiZXlvbmQg
SUUncyBBUEkKICAgICBIYXNoU2V0PFN0cmluZz4gdHlwZXMoKSBjb25zdDsKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2xpcGJvYXJkQ2hyb21pdW0uY3BwIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1bS5jcHAKaW5kZXggYzFiMzRkYTQ4
Njc1MDNkMGU2NDEyMGQ2ZmRmYWNmOWIwNzhjNzMxNS4uYWZhOTdkYWY2ZjlkYzkyZTdiYjVlMTBm
MGVmMTMyMTViMjhkMGU2NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9D
bGlwYm9hcmRDaHJvbWl1bS5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DbGlw
Ym9hcmRDaHJvbWl1bS5jcHAKQEAgLTExMSw2ICsxMTEsMTIgQEAgU3RyaW5nIENsaXBib2FyZENo
cm9taXVtOjpnZXREYXRhKGNvbnN0IFN0cmluZyYgdHlwZSwgYm9vbCYgc3VjY2VzcykgY29uc3QK
ICAgICByZXR1cm4gbV9kYXRhT2JqZWN0LT5nZXREYXRhKG5vcm1hbGl6ZVR5cGUodHlwZSksIHN1
Y2Nlc3MpOwogfQogCitQYXNzUmVmUHRyPEJsb2I+IENsaXBib2FyZENocm9taXVtOjp3ZWJraXRH
ZXREYXRhQmxvYihjb25zdCBTdHJpbmcmLCBib29sJiBzdWNjZXNzKSBjb25zdAoreworICAgIHN1
Y2Nlc3MgPSBmYWxzZTsKKyAgICByZXR1cm4gMDsKK30KKwogYm9vbCBDbGlwYm9hcmRDaHJvbWl1
bTo6c2V0RGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgZGF0YSkKIHsKICAg
ICBpZiAocG9saWN5KCkgIT0gQ2xpcGJvYXJkV3JpdGFibGUpCkBAIC0xMTksNiArMTI1LDExIEBA
IGJvb2wgQ2xpcGJvYXJkQ2hyb21pdW06OnNldERhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25z
dCBTdHJpbmcmIGRhdGEpCiAgICAgcmV0dXJuIG1fZGF0YU9iamVjdC0+c2V0RGF0YShub3JtYWxp
emVUeXBlKHR5cGUpLCBkYXRhKTsKIH0KIAorYm9vbCBDbGlwYm9hcmRDaHJvbWl1bTo6d2Via2l0
U2V0RGF0YUJsb2IoY29uc3QgU3RyaW5nJiwgUGFzc1JlZlB0cjxCbG9iPikKK3sKKyAgICByZXR1
cm4gZmFsc2U7Cit9CisKIC8vIGV4dGVuc2lvbnMgYmV5b25kIElFJ3MgQVBJCiBIYXNoU2V0PFN0
cmluZz4gQ2xpcGJvYXJkQ2hyb21pdW06OnR5cGVzKCkgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2xpcGJvYXJkQ2hyb21pdW0uaCBiL1dlYkNvcmUvcGxh
dGZvcm0vY2hyb21pdW0vQ2xpcGJvYXJkQ2hyb21pdW0uaAppbmRleCAxNGY1OWU5YWM5ODNhMGEy
YWVhYmU2NDY5OTQwNTZmMjFhYjE5NjBmLi45OGFhOTljMDNiMTVmZTU5YjZiY2IyZDdmOWNlOWNl
ODg3MjAyZDExIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0NsaXBib2Fy
ZENocm9taXVtLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRDaHJv
bWl1bS5oCkBAIC01Nyw3ICs1Nyw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmly
dHVhbCB2b2lkIGNsZWFyRGF0YShjb25zdCBTdHJpbmcmIHR5cGUpOwogICAgICAgICB2b2lkIGNs
ZWFyQWxsRGF0YSgpOwogICAgICAgICBTdHJpbmcgZ2V0RGF0YShjb25zdCBTdHJpbmcmIHR5cGUs
IGJvb2wmIHN1Y2Nlc3MpIGNvbnN0OworICAgICAgICBQYXNzUmVmUHRyPEJsb2I+IHdlYmtpdEdl
dERhdGFCbG9iKGNvbnN0IFN0cmluZyYgdHlwZSwgYm9vbCYgc3VjY2VzcykgY29uc3Q7CiAgICAg
ICAgIGJvb2wgc2V0RGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgZGF0YSk7
CisgICAgICAgIGJvb2wgd2Via2l0U2V0RGF0YUJsb2IoY29uc3QgU3RyaW5nJiB0eXBlLCBQYXNz
UmVmUHRyPEJsb2I+IGRhdGEpOwogCiAgICAgICAgIC8vIGV4dGVuc2lvbnMgYmV5b25kIElFJ3Mg
QVBJCiAgICAgICAgIHZpcnR1YWwgSGFzaFNldDxTdHJpbmc+IHR5cGVzKCkgY29uc3Q7CmRpZmYg
LS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9DbGlwYm9hcmRFZmwuY3BwIGIvV2ViQ29yZS9w
bGF0Zm9ybS9lZmwvQ2xpcGJvYXJkRWZsLmNwcAppbmRleCBhN2MyYTU0ZmYxNTYxNWU4ZjI4NjI3
OTA0NzBiMWIyYzE0YTNkNzBkLi40ZDAwMWExNTdkNjJjNGUzNDEwZGQwOWUzYWE5MDlkMjljMmVm
YjkxIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9DbGlwYm9hcmRFZmwuY3BwCisr
KyBiL1dlYkNvcmUvcGxhdGZvcm0vZWZsL0NsaXBib2FyZEVmbC5jcHAKQEAgLTcwLDEyICs3MCwy
NSBAQCBTdHJpbmcgQ2xpcGJvYXJkRWZsOjpnZXREYXRhKGNvbnN0IFN0cmluZyYsIGJvb2wgJnN1
Y2Nlc3MpIGNvbnN0CiAgICAgcmV0dXJuIFN0cmluZygpOwogfQogCitQYXNzUmVmUHRyPEJsb2I+
IENsaXBib2FyZEVmbDo6d2Via2l0R2V0RGF0YUJsb2IoY29uc3QgU3RyaW5nJiwgYm9vbCYgc3Vj
Y2VzcykgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHN1Y2Nlc3MgPSBmYWxz
ZTsKKyAgICByZXR1cm4gMDsKK30KKwogYm9vbCBDbGlwYm9hcmRFZmw6OnNldERhdGEoY29uc3Qg
U3RyaW5nJiwgY29uc3QgU3RyaW5nJikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJl
dHVybiBmYWxzZTsKIH0KIAorYm9vbCBDbGlwYm9hcmRFZmw6OndlYmtpdFNldERhdGFCbG9iKGNv
bnN0IFN0cmluZyYsIFBhc3NSZWZQdHI8QmxvYj4pCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsK
KyAgICByZXR1cm4gZmFsc2U7Cit9CisKIEhhc2hTZXQ8U3RyaW5nPiBDbGlwYm9hcmRFZmw6OnR5
cGVzKCkgY29uc3QKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9wbGF0Zm9ybS9lZmwvQ2xpcGJvYXJkRWZsLmggYi9XZWJDb3JlL3BsYXRmb3JtL2VmbC9DbGlw
Ym9hcmRFZmwuaAppbmRleCAwNmY0ZTU4MDU3NTRkZWY2ZTY3YzU4YWMxODNjMTkzNjEwNTVhZDk0
Li5hMjRjNWVhNzlkZTQyY2NlZjYyMzM1ZmE5NDIyNGFkMTVhODlmM2M4IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3BsYXRmb3JtL2VmbC9DbGlwYm9hcmRFZmwuaAorKysgYi9XZWJDb3JlL3BsYXRmb3Jt
L2VmbC9DbGlwYm9hcmRFZmwuaApAQCAtMzcsNyArMzcsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBj
bGVhckRhdGEoY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBjbGVhckFsbERhdGEoKTsKICAgICBT
dHJpbmcgZ2V0RGF0YShjb25zdCBTdHJpbmcmLCBib29sJikgY29uc3Q7CisgICAgUGFzc1JlZlB0
cjxCbG9iPiB3ZWJraXRHZXREYXRhQmxvYihjb25zdCBTdHJpbmcmLCBib29sJikgY29uc3Q7CiAg
ICAgYm9vbCBzZXREYXRhKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpOworICAgIGJvb2wg
d2Via2l0U2V0RGF0YUJsb2IoY29uc3QgU3RyaW5nJiwgUGFzc1JlZlB0cjxCbG9iPik7CiAKICAg
ICBIYXNoU2V0PFN0cmluZz4gdHlwZXMoKSBjb25zdDsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8
RmlsZUxpc3Q+IGZpbGVzKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9DbGlwYm9hcmRHdGsuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQ2xpcGJvYXJkR3RrLmNw
cAppbmRleCBlN2VlNDMyNWFmNmRlMTZkZTdhNWE0NWJhMGYxMDQyMzMyYjE4ZGQ0Li5hMTk3OWQy
YjVlZmI5OTIxMzA5NTMyNWUxMmYyMGI4M2Q2YzlkOWMyIDEwMDY0NAotLS0gYS9XZWJDb3JlL3Bs
YXRmb3JtL2d0ay9DbGlwYm9hcmRHdGsuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0Ns
aXBib2FyZEd0ay5jcHAKQEAgLTE5NCw2ICsxOTQsMTIgQEAgU3RyaW5nIENsaXBib2FyZEd0azo6
Z2V0RGF0YShjb25zdCBTdHJpbmcmIHR5cGVTdHJpbmcsIGJvb2wmIHN1Y2Nlc3MpIGNvbnN0CiAg
ICAgcmV0dXJuIFN0cmluZygpOwogfQogCitQYXNzUmVmUHRyPEJsb2I+IENsaXBib2FyZEd0azo6
d2Via2l0R2V0RGF0YUJsb2IoY29uc3QgU3RyaW5nJiwgYm9vbCYgc3VjY2VzcykgY29uc3QKK3sK
KyAgICBzdWNjZXNzID0gZmFsc2U7CisgICAgcmV0dXJuIDA7Cit9CisKIGJvb2wgQ2xpcGJvYXJk
R3RrOjpzZXREYXRhKGNvbnN0IFN0cmluZyYgdHlwZVN0cmluZywgY29uc3QgU3RyaW5nJiBkYXRh
KQogewogICAgIGlmIChwb2xpY3koKSAhPSBDbGlwYm9hcmRXcml0YWJsZSkKQEAgLTIyOCw2ICsy
MzQsMTEgQEAgYm9vbCBDbGlwYm9hcmRHdGs6OnNldERhdGEoY29uc3QgU3RyaW5nJiB0eXBlU3Ry
aW5nLCBjb25zdCBTdHJpbmcmIGRhdGEpCiAgICAgcmV0dXJuIHN1Y2Nlc3M7CiB9CiAKK2Jvb2wg
Q2xpcGJvYXJkR3RrOjp3ZWJraXRTZXREYXRhQmxvYihjb25zdCBTdHJpbmcmLCBQYXNzUmVmUHRy
PEJsb2I+KQoreworICAgIHJldHVybiBmYWxzZTsKK30KKwogSGFzaFNldDxTdHJpbmc+IENsaXBi
b2FyZEd0azo6dHlwZXMoKSBjb25zdAogewogICAgIGlmIChwb2xpY3koKSAhPSBDbGlwYm9hcmRS
ZWFkYWJsZSAmJiBwb2xpY3koKSAhPSBDbGlwYm9hcmRUeXBlc1JlYWRhYmxlKQpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQ2xpcGJvYXJkR3RrLmggYi9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9DbGlwYm9hcmRHdGsuaAppbmRleCBlMTRhNTgzYTI0NzM3NTRiZjc5MDQ5OGIzNTVjMDhk
MGQyMmVhNDk1Li44YzBlYWI3ZWI0NDI2NTViMzhkZTY3MDY0OGM5ZDNkMzY3MzdlOWFlIDEwMDY0
NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9DbGlwYm9hcmRHdGsuaAorKysgYi9XZWJDb3Jl
L3BsYXRmb3JtL2d0ay9DbGlwYm9hcmRHdGsuaApAQCAtNTQsNyArNTQsOSBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIHZvaWQgY2xlYXJEYXRhKGNvbnN0IFN0cmluZyYpOwogICAgICAg
ICB2b2lkIGNsZWFyQWxsRGF0YSgpOwogICAgICAgICBTdHJpbmcgZ2V0RGF0YShjb25zdCBTdHJp
bmcmLCBib29sJikgY29uc3Q7CisgICAgICAgIFBhc3NSZWZQdHI8QmxvYj4gd2Via2l0R2V0RGF0
YUJsb2IoY29uc3QgU3RyaW5nJiwgYm9vbCYpIGNvbnN0OwogICAgICAgICBib29sIHNldERhdGEo
Y29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJik7CisgICAgICAgIGJvb2wgd2Via2l0U2V0RGF0
YUJsb2IoY29uc3QgU3RyaW5nJiwgUGFzc1JlZlB0cjxCbG9iPik7CiAKICAgICAgICAgdmlydHVh
bCBIYXNoU2V0PFN0cmluZz4gdHlwZXMoKSBjb25zdDsKICAgICAgICAgdmlydHVhbCBQYXNzUmVm
UHRyPEZpbGVMaXN0PiBmaWxlcygpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9y
bS9oYWlrdS9DbGlwYm9hcmRIYWlrdS5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2hhaWt1L0NsaXBi
b2FyZEhhaWt1LmNwcAppbmRleCA0OTVmMWQyNzBiMzc2ZmRmYjJjZjM5YmE4ZTE3ZjljOWIwNzFi
NWVmLi5mMzNmZmRkNjRhY2M5YzYzN2I4NzJjYzMwMTA3NDYzZjJjMjc5NWUzIDEwMDY0NAotLS0g
YS9XZWJDb3JlL3BsYXRmb3JtL2hhaWt1L0NsaXBib2FyZEhhaWt1LmNwcAorKysgYi9XZWJDb3Jl
L3BsYXRmb3JtL2hhaWt1L0NsaXBib2FyZEhhaWt1LmNwcApAQCAtOTMsNiArOTMsMTIgQEAgU3Ry
aW5nIENsaXBib2FyZEhhaWt1OjpnZXREYXRhKGNvbnN0IFN0cmluZyYgdHlwZSwgYm9vbCYgc3Vj
Y2VzcykgY29uc3QKICAgICByZXR1cm4gcmVzdWx0OwogfQogCitQYXNzUmVmUHRyPEJsb2I+IENs
aXBib2FyZEhhaWt1Ojp3ZWJraXRHZXREYXRhQmxvYihjb25zdCBTdHJpbmcmLCBib29sJiBzdWNj
ZXNzKSBjb25zdAoreworICAgIHN1Y2Nlc3MgPSBmYWxzZTsKKyAgICByZXR1cm4gMDsKK30KKwog
Ym9vbCBDbGlwYm9hcmRIYWlrdTo6c2V0RGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0
cmluZyYgZGF0YSkKIHsKICAgICBib29sIHJlc3VsdCA9IGZhbHNlOwpAQCAtMTE0LDYgKzEyMCwx
MSBAQCBib29sIENsaXBib2FyZEhhaWt1OjpzZXREYXRhKGNvbnN0IFN0cmluZyYgdHlwZSwgY29u
c3QgU3RyaW5nJiBkYXRhKQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK2Jvb2wgQ2xpcGJvYXJk
SGFpa3U6OndlYmtpdFNldERhdGFCbG9iKGNvbnN0IFN0cmluZyYsIFBhc3NSZWZQdHI8QmxvYj4p
Cit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCiAvLyBFeHRlbnNpb25zIGJleW9uZCBJRSdzIEFQ
SS4KIEhhc2hTZXQ8U3RyaW5nPiBDbGlwYm9hcmRIYWlrdTo6dHlwZXMoKSBjb25zdAogewpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9oYWlrdS9DbGlwYm9hcmRIYWlrdS5oIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9oYWlrdS9DbGlwYm9hcmRIYWlrdS5oCmluZGV4IDg5ZGM3YmQzNTI5ZGU0NDEw
MjU5NDZjYWRmZTNlMjFhNjI0NjQxNjEuLjg0ODEwYWU3NzZhZjY0MTBkYTMzOGMwOGQ3ZjdjZDgz
ODI1MjIzZmYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vaGFpa3UvQ2xpcGJvYXJkSGFp
a3UuaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2hhaWt1L0NsaXBib2FyZEhhaWt1LmgKQEAgLTQ1
LDcgKzQ1LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIGNsZWFyRGF0YShj
b25zdCBTdHJpbmcmIHR5cGUpOwogICAgICAgICB2b2lkIGNsZWFyQWxsRGF0YSgpOwogICAgICAg
ICBTdHJpbmcgZ2V0RGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIGJvb2wmIHN1Y2Nlc3MpIGNvbnN0
OworICAgICAgICBQYXNzUmVmUHRyPEJsb2I+IHdlYmtpdEdldERhdGFCbG9iKGNvbnN0IFN0cmlu
ZyYgdHlwZSwgYm9vbCYgc3VjY2VzcykgY29uc3Q7CiAgICAgICAgIGJvb2wgc2V0RGF0YShjb25z
dCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgZGF0YSk7CisgICAgICAgIGJvb2wgd2Via2l0
U2V0RGF0YUJsb2IoY29uc3QgU3RyaW5nJiB0eXBlLCBQYXNzUmVmUHRyPEJsb2I+KTsKIAogICAg
ICAgICAvLyBFeHRlbnNpb25zIGJleW9uZCBJRSdzIEFQSS4KICAgICAgICAgSGFzaFNldDxTdHJp
bmc+IHR5cGVzKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL21hYy9DbGlw
Ym9hcmRNYWMuaCBiL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0NsaXBib2FyZE1hYy5oCmluZGV4IDcx
ODdlY2YzMjViN2RhYWM3YWZlOWYyMjY5MGZjZTEzZWQxNGExMjQuLmNlNmI1YzM4YWFlOTRhNTUx
YTg1NjA5ZjcxNWM3ZTc0OTQ2ZDMyZjcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L0NsaXBib2FyZE1hYy5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0NsaXBib2FyZE1hYy5o
CkBAIC01NSw3ICs1NSw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsZWFyRGF0YShjb25zdCBTdHJp
bmcmIHR5cGUpOwogICAgIHZvaWQgY2xlYXJBbGxEYXRhKCk7CiAgICAgU3RyaW5nIGdldERhdGEo
Y29uc3QgU3RyaW5nJiB0eXBlLCBib29sJiBzdWNjZXNzKSBjb25zdDsKKyAgICBQYXNzUmVmUHRy
PEJsb2I+IHdlYmtpdEdldERhdGFCbG9iKGNvbnN0IFN0cmluZyYgdHlwZSwgYm9vbCYgc3VjY2Vz
cykgY29uc3Q7CiAgICAgYm9vbCBzZXREYXRhKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3Ry
aW5nJiBkYXRhKTsKKyAgICBib29sIHdlYmtpdFNldERhdGFCbG9iKGNvbnN0IFN0cmluZyYgdHlw
ZSwgUGFzc1JlZlB0cjxCbG9iPiBkYXRhKTsKICAgICAKICAgICB2aXJ0dWFsIGJvb2wgaGFzRGF0
YSgpOwogICAgIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvQ2xpcGJvYXJkTWFj
Lm1tIGIvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvQ2xpcGJvYXJkTWFjLm1tCmluZGV4IDEwZDE5NmFl
OWJlZDBkYmJlNjlhNjI4MmQ2NzY0NTcxMzI3ODkzMGUuLmRlZThkYjJlZDI1NmUxZTUwMTMwYTVh
ZTU2OWMxMTQ4MGFmMWU0MzMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0NsaXBi
b2FyZE1hYy5tbQorKysgYi9XZWJDb3JlL3BsYXRmb3JtL21hYy9DbGlwYm9hcmRNYWMubW0KQEAg
LTI0MCw2ICsyNDAsMTIgQEAgU3RyaW5nIENsaXBib2FyZE1hYzo6Z2V0RGF0YShjb25zdCBTdHJp
bmcmIHR5cGUsIGJvb2wmIHN1Y2Nlc3MpIGNvbnN0CiAgICAgcmV0dXJuIFN0cmluZygpOwogfQog
CitQYXNzUmVmUHRyPEJsb2I+IENsaXBib2FyZE1hYzo6d2Via2l0R2V0RGF0YUJsb2IoY29uc3Qg
U3RyaW5nJiwgYm9vbCYgc3VjY2VzcykgY29uc3QKK3sKKyAgICBzdWNjZXNzID0gZmFsc2U7Cisg
ICAgcmV0dXJuIDA7Cit9CisKIGJvb2wgQ2xpcGJvYXJkTWFjOjpzZXREYXRhKGNvbnN0IFN0cmlu
ZyAmdHlwZSwgY29uc3QgU3RyaW5nICZkYXRhKQogewogICAgIGlmIChwb2xpY3koKSAhPSBDbGlw
Ym9hcmRXcml0YWJsZSkKQEAgLTMwMCw2ICszMDYsMTEgQEAgSGFzaFNldDxTdHJpbmc+IENsaXBi
b2FyZE1hYzo6dHlwZXMoKSBjb25zdAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK2Jvb2wgQ2xp
cGJvYXJkTWFjOjp3ZWJraXRTZXREYXRhQmxvYihjb25zdCBTdHJpbmcmLCBQYXNzUmVmUHRyPEJs
b2I+KQoreworICAgIHJldHVybiBmYWxzZTsKK30KKwogLy8gRklYTUU6IFdlIGNvdWxkIGNhY2hl
IHRoZSBjb21wdXRlZCBmaWxlTGlzdCBpZiBuZWNlc3NhcnkKIC8vIEN1cnJlbnRseSBlYWNoIGFj
Y2VzcyBnZXRzIGEgbmV3IGNvcHksIHNldERhdGEoKSBtb2RpZmljYXRpb25zIHRvIHRoZQogLy8g
Y2xpcGJvYXJkIGFyZSBub3QgcmVmbGVjdGVkIGluIGFueSBGaWxlTGlzdCBvYmplY3RzIHRoZSBw
YWdlIGhhcyBhY2Nlc3NlZCBhbmQgc3RvcmVkCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3Jt
L3F0L0NsaXBib2FyZFF0LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vcXQvQ2xpcGJvYXJkUXQuY3Bw
CmluZGV4IDIwY2Y2MmIwZmM5Mzc1YzljYjU0NTljZWJjMTc0MzgzODQ4NzY2MzkuLmRmZTE3ODYz
NjJjYmViMjMxMTRhN2ZjNWE4N2Y5NjJjMDBmYWJkMjMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxh
dGZvcm0vcXQvQ2xpcGJvYXJkUXQuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vcXQvQ2xpcGJv
YXJkUXQuY3BwCkBAIC0xNjQsNiArMTY0LDEyIEBAIFN0cmluZyBDbGlwYm9hcmRRdDo6Z2V0RGF0
YShjb25zdCBTdHJpbmcmIHR5cGUsIGJvb2wmIHN1Y2Nlc3MpIGNvbnN0CiAgICAgcmV0dXJuIGRh
dGE7CiB9CiAKK1Bhc3NSZWZQdHI8QmxvYj4gQ2xpcGJvYXJkUXQ6OndlYmtpdEdldERhdGFCbG9i
KGNvbnN0IFN0cmluZyYsIGJvb2wmIHN1Y2Nlc3MpIGNvbnN0Cit7CisgICAgc3VjY2VzcyA9IGZh
bHNlOworICAgIHJldHVybiAwOworfQorCiBib29sIENsaXBib2FyZFF0OjpzZXREYXRhKGNvbnN0
IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBkYXRhKQogewogICAgIGlmIChwb2xpY3koKSAh
PSBDbGlwYm9hcmRXcml0YWJsZSkKQEAgLTE4OCw2ICsxOTQsMTEgQEAgYm9vbCBDbGlwYm9hcmRR
dDo6c2V0RGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgZGF0YSkKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAorYm9vbCBDbGlwYm9hcmRRdDo6d2Via2l0U2V0RGF0YUJsb2IoY29u
c3QgU3RyaW5nJiwgUGFzc1JlZlB0cjxCbG9iPikKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisK
IC8vIGV4dGVuc2lvbnMgYmV5b25kIElFJ3MgQVBJCiBIYXNoU2V0PFN0cmluZz4gQ2xpcGJvYXJk
UXQ6OnR5cGVzKCkgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vcXQvQ2xp
cGJvYXJkUXQuaCBiL1dlYkNvcmUvcGxhdGZvcm0vcXQvQ2xpcGJvYXJkUXQuaAppbmRleCA1YWNh
MWE2MDY5MzZmYzFjMDgxOTc2MmViYWJlZGNlZmFjZTJlMWM1Li5jYjg4OWU3MzE3ZGZlN2IyM2Vl
Mjk4NDg0MDc0NmU5ZjUwNzI0ZWJkIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL3F0L0Ns
aXBib2FyZFF0LmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9xdC9DbGlwYm9hcmRRdC5oCkBAIC01
Myw3ICs1Myw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBjbGVhckRhdGEo
Y29uc3QgU3RyaW5nJiB0eXBlKTsKICAgICAgICAgdm9pZCBjbGVhckFsbERhdGEoKTsKICAgICAg
ICAgU3RyaW5nIGdldERhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBib29sJiBzdWNjZXNzKSBjb25z
dDsKKyAgICAgICAgUGFzc1JlZlB0cjxCbG9iPiB3ZWJraXRHZXREYXRhQmxvYihjb25zdCBTdHJp
bmcmIHR5cGUsIGJvb2wmIHN1Y2Nlc3MpIGNvbnN0OwogICAgICAgICBib29sIHNldERhdGEoY29u
c3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGRhdGEpOworICAgICAgICBib29sIHdlYmtp
dFNldERhdGFCbG9iKGNvbnN0IFN0cmluZyYgdHlwZSwgUGFzc1JlZlB0cjxCbG9iPiBkYXRhKTsK
IAogICAgICAgICAvLyBleHRlbnNpb25zIGJleW9uZCBJRSdzIEFQSQogICAgICAgICB2aXJ0dWFs
IEhhc2hTZXQ8U3RyaW5nPiB0eXBlcygpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0
Zm9ybS93aW4vQ2xpcGJvYXJkV2luLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2Fy
ZFdpbi5jcHAKaW5kZXggN2E1NDczNzM1MmMzZTQwYzY3ZmFkNWYyNzVmMGEwMzUwNjY2NTU3Yi4u
MmVlYjJkMjFjMDc3NTBlZmMxM2YyYzBjZjBmYjM4YTk3MzMyYmE2MSAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkV2luLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3Jt
L3dpbi9DbGlwYm9hcmRXaW4uY3BwCkBAIC01MTcsNiArNTE3LDEyIEBAIFN0cmluZyBDbGlwYm9h
cmRXaW46OmdldERhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBib29sJiBzdWNjZXNzKSBjb25zdAog
ICAgIHJldHVybiAiIjsKIH0KIAorUGFzc1JlZlB0cjxCbG9iPiBDbGlwYm9hcmRXaW46OndlYmtp
dEdldERhdGFCbG9iKGNvbnN0IFN0cmluZyYgdHlwZSwgYm9vbCYgc3VjY2VzcykgY29uc3QKK3sK
KyAgICBzdWNjZXNzID0gZmFsc2U7CisgICAgcmV0dXJuIDA7Cit9CisKIGJvb2wgQ2xpcGJvYXJk
V2luOjpzZXREYXRhKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBkYXRhKQogewog
ICAgIC8vIEZJWE1FOiBOZWVkIHRvIGJlIGFibGUgdG8gd3JpdGUgdG8gdGhlIHN5c3RlbSBjbGlw
Ym9hcmQgPHJkYXI6Ly9wcm9ibGVtLzUwMTU5NDE+CkBAIC01NDYsNiArNTUyLDExIEBAIGJvb2wg
Q2xpcGJvYXJkV2luOjpzZXREYXRhKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBk
YXRhKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAorYm9vbCBDbGlwYm9hcmRXaW46OndlYmtpdFNl
dERhdGFCbG9iKGNvbnN0IFN0cmluZyYsIFBhc3NSZWZQdHI8QmxvYj4pCit7CisgICAgcmV0dXJu
IGZhbHNlOworfQorCiBzdGF0aWMgdm9pZCBhZGRNaW1lVHlwZXNGb3JGb3JtYXQoSGFzaFNldDxT
dHJpbmc+JiByZXN1bHRzLCBjb25zdCBGT1JNQVRFVEMmIGZvcm1hdCkKIHsKICAgICAvLyBVUkwg
YW5kIFRleHQgYXJlIHByb3ZpZGVkIGZvciBjb21wYXRpYmlsaXR5IHdpdGggSUUncyBtb2RlbApk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkV2luLmggYi9XZWJDb3Jl
L3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRXaW4uaAppbmRleCBjZTY0Yjg1MTg0ODM3M2QxYTg0YjNl
YWUxMjFiMDc4MjUxY2QxMGZlLi4zOWNmYmFmODlhYzhjNTA3ZjRjODEyZTAxNjhiNmQ2M2U5Y2E2
NGEyIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRXaW4uaAorKysg
Yi9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRXaW4uaApAQCAtNTUsNyArNTUsOSBAQCBw
dWJsaWM6CiAgICAgdm9pZCBjbGVhckRhdGEoY29uc3QgU3RyaW5nJiB0eXBlKTsKICAgICB2b2lk
IGNsZWFyQWxsRGF0YSgpOwogICAgIFN0cmluZyBnZXREYXRhKGNvbnN0IFN0cmluZyYgdHlwZSwg
Ym9vbCYgc3VjY2VzcykgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxCbG9iPiB3ZWJraXRHZXREYXRh
QmxvYihjb25zdCBTdHJpbmcmIHR5cGUsIGJvb2wmIHN1Y2Nlc3MpIGNvbnN0OwogICAgIGJvb2wg
c2V0RGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgZGF0YSk7CisgICAgYm9v
bCB3ZWJraXRTZXREYXRhQmxvYihjb25zdCBTdHJpbmcmIHR5cGUsIFBhc3NSZWZQdHI8QmxvYj4g
ZGF0YSk7CiAKICAgICAvLyBleHRlbnNpb25zIGJleW9uZCBJRSdzIEFQSQogICAgIHZpcnR1YWwg
SGFzaFNldDxTdHJpbmc+IHR5cGVzKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRm
b3JtL3d4L0NsaXBib2FyZFd4LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vd3gvQ2xpcGJvYXJkV3gu
Y3BwCmluZGV4IDMyMjE2YTY1MjQyNGJlMzY2YzBhZTJhZjU5ODE4ODMwYWUxODhlYzEuLjVmMTA2
NDE0YzAzOWVjZTk5ODViZWQzOTJjY2YyMzE4M2RmOGZhYTQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
cGxhdGZvcm0vd3gvQ2xpcGJvYXJkV3guY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vd3gvQ2xp
cGJvYXJkV3guY3BwCkBAIC02MCwxNSArNjAsMjkgQEAgdm9pZCBDbGlwYm9hcmRXeDo6Y2xlYXJB
bGxEYXRhKCkKIFN0cmluZyBDbGlwYm9hcmRXeDo6Z2V0RGF0YShjb25zdCBTdHJpbmcmIHR5cGUs
IGJvb2wmIHN1Y2Nlc3MpIGNvbnN0IAogewogICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgc3Vj
Y2VzcyA9IGZhbHNlOwogICAgIHJldHVybiAiIjsgCiB9CiAKK1Bhc3NSZWZQdHI8QmxvYj4gQ2xp
cGJvYXJkV3g6OndlYmtpdEdldERhdGFCbG9iKGNvbnN0IFN0cmluZyYsIGJvb2wmIHN1Y2Nlc3Mp
IGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBzdWNjZXNzID0gZmFsc2U7Cisg
ICAgcmV0dXJuIDA7Cit9CisKIGJvb2wgQ2xpcGJvYXJkV3g6OnNldERhdGEoY29uc3QgU3RyaW5n
JiB0eXBlLCBjb25zdCBTdHJpbmcmIGRhdGEpIAogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCitib29sIENsaXBib2FyZFd4Ojp3ZWJraXRTZXREYXRhQmxv
Yihjb25zdCBTdHJpbmcmLCBQYXNzUmVmUHRyPEJsb2I+KQoreworICAgIG5vdEltcGxlbWVudGVk
KCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCiAvLyBleHRlbnNpb25zIGJleW9uZCBJRSdzIEFQ
SQogSGFzaFNldDxTdHJpbmc+IENsaXBib2FyZFd4Ojp0eXBlcygpIGNvbnN0IAogewpkaWZmIC0t
Z2l0IGEvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA2ODcyZGIw
Y2FmNDVhY2JlNDNmYjljYTlmNDFmNzdjMmE5MDk1YTNmLi5iOGVmNzdjYjZkMWY4OGI1YTRlODIx
NGQyOWMyOGIzZTYyNGMxMTFhIDEwMDY0NAotLS0gYS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9X
ZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEwLTEwLTExICBEYW5pZWwgQ2hl
bmcgIDxkY2hlbmdAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZCB3ZWJraXRHZXREYXRhQmxvYi93ZWJraXRHZXREYXRhQmxv
YiBzdHVicyB0byBDbGlwYm9hcmQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD00NzQ4MgorCisgICAgICAgIFRoaXMgaXMgYW4gZXhwZXJpbWVudGFsIGNo
YW5nZSB0byB0cnkgc3VwcG9ydGluZyBzY2VuYXJpb3MgbGlrZSBpbWFnZQorICAgICAgICBjb3B5
LWFuZC1wYXN0ZSBvciBkcmFnLWFuZC1kcm9wIGluIFdlYktpdC4KKworICAgICAgICAqIFdlYktp
dDIucHJvOiBBZGQgV2ViQ29yZS9maWxlYXBpIHRvIGluY2x1ZGUgcGF0aHMsIHNpbmNlIENsaXBi
b2FyZCBkZXBlbmRzIG9uIEJsb2Igbm93LgorCiAyMDEwLTEwLTA5ICBTYW0gV2VpbmlnICA8c2Ft
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFuIEJlcm5zdGVpbi4KZGlmZiAt
LWdpdCBhL1dlYktpdDIvV2ViS2l0Mi5wcm8gYi9XZWJLaXQyL1dlYktpdDIucHJvCmluZGV4IDZi
NDBmYjhmNWIzZWE3Nzk3NjY0N2U1N2Y2ODU5M2NhMjM2YjIzNjMuLjNhNDVmMzg4YWMyNTU3NzI1
ZjJjOWU2YzQ3ZDVmM2MzZDliMzgwMWUgMTAwNjQ0Ci0tLSBhL1dlYktpdDIvV2ViS2l0Mi5wcm8K
KysrIGIvV2ViS2l0Mi9XZWJLaXQyLnBybwpAQCAtNTUsNiArNTUsNyBAQCBJTkNMVURFUEFUSCA9
IFwKICAgICAkJFBXRC8uLi9XZWJDb3JlL2RvbSBcCiAgICAgJCRQV0QvLi4vV2ViQ29yZS9kb20v
ZGVmYXVsdCBcCiAgICAgJCRQV0QvLi4vV2ViQ29yZS9lZGl0aW5nIFwKKyAgICAkJFBXRC8uLi9X
ZWJDb3JlL2ZpbGVhcGkgXAogICAgICQkUFdELy4uL1dlYkNvcmUvaGlzdG9yeSBcCiAgICAgJCRQ
V0QvLi4vV2ViQ29yZS9odG1sIFwKICAgICAkJFBXRC8uLi9XZWJDb3JlL2h0bWwvY2FudmFzIFwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>70897</attachid>
            <date>2010-10-15 14:29:14 -0700</date>
            <delta_ts>2010-10-25 17:33:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-47482-20101015142914.patch</filename>
            <type>text/plain</type>
            <size>27400</size>
            <attacher name="Daniel Cheng">dcheng</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NGRkOGMxMTY2NmFjMDQ1NDRjMzc3NDI0NWNkOGExMDJlYjNlMDkyYi4uYzA1ZDljNjUyYzMwZWZk
MzAzMTg1ZWZlMmM2OWIyZGZmYmFmNDYzMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2NCBAQAorMjAxMC0xMC0xMCAgRGFu
aWVsIENoZW5nICA8ZGNoZW5nQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgd2Via2l0R2V0RGF0YUJsb2Ivd2Via2l0R2V0
RGF0YUJsb2Igc3R1YnMgdG8gQ2xpcGJvYXJkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDc0ODIKKworICAgICAgICBUaGlzIGlzIGFuIGV4cGVyaW1l
bnRhbCBjaGFuZ2UgdG8gdHJ5IHN1cHBvcnRpbmcgc2NlbmFyaW9zIGxpa2UgaW1hZ2UKKyAgICAg
ICAgY29weS1hbmQtcGFzdGUgb3IgZHJhZy1hbmQtZHJvcCBpbiBXZWJLaXQuIEkgbWFkZSBhIFdI
QVRXRyBwb3N0IGFib3V0CisgICAgICAgIHRoaXMgaW4gSnVuZTogaHR0cDovL2xpc3RzLndoYXR3
Zy5vcmcvaHRkaWcuY2dpL3doYXR3Zy13aGF0d2cub3JnLzIwMTAtSnVuZS8wMjY5MTAuaHRtbAor
CisgICAgICAgIFRlc3RzIHdpbGwgYmUgYWRkZWQgd2hlbiB0aGUgc3R1YnMgYXJlIGltcGxlbWVu
dGVkLgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBDb3B5
IHRoZSBCbG9iIGhlYWRlcnMgdG8gUHJpdmF0ZUhlYWRlcnMsIHNpbmNlIENsaXBib2FyZCBkZXBl
bmRzIG9uIGl0IG5vdy4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0NsaXBib2FyZEN1c3RvbS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpKU0NsaXBib2FyZDo6d2Via2l0R2V0RGF0YUJsb2IpOgor
ICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOENsaXBib2FyZEN1c3RvbS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpWOENsaXBib2FyZDo6d2Via2l0R2V0RGF0YUJsb2JDYWxsYmFjayk6Cisg
ICAgICAgICogZG9tL0NsaXBib2FyZC5oOgorICAgICAgICAqIGRvbS9DbGlwYm9hcmQuaWRsOgor
ICAgICAgICAqIHBsYXRmb3JtL2FuZHJvaWQvQ2xpcGJvYXJkQW5kcm9pZC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDbGlwYm9hcmRBbmRyb2lkOjp3ZWJraXRHZXREYXRhQmxvYik6CisgICAgICAg
IChXZWJDb3JlOjpDbGlwYm9hcmRBbmRyb2lkOjp3ZWJraXRTZXREYXRhQmxvYik6CisgICAgICAg
ICogcGxhdGZvcm0vYW5kcm9pZC9DbGlwYm9hcmRBbmRyb2lkLmg6CisgICAgICAgICogcGxhdGZv
cm0vYnJldy9DbGlwYm9hcmRCcmV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEJy
ZXc6OndlYmtpdEdldERhdGFCbG9iKToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEJyZXc6
OndlYmtpdFNldERhdGFCbG9iKToKKyAgICAgICAgKiBwbGF0Zm9ybS9icmV3L0NsaXBib2FyZEJy
ZXcuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1bS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRDaHJvbWl1bTo6d2Via2l0R2V0RGF0YUJsb2Ip
OgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkQ2hyb21pdW06OndlYmtpdFNldERhdGFCbG9i
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1bS5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2VmbC9DbGlwYm9hcmRFZmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q2xpcGJvYXJkRWZsOjp3ZWJraXRHZXREYXRhQmxvYik6CisgICAgICAgIChXZWJDb3JlOjpDbGlw
Ym9hcmRFZmw6OndlYmtpdFNldERhdGFCbG9iKToKKyAgICAgICAgKiBwbGF0Zm9ybS9lZmwvQ2xp
cGJvYXJkRWZsLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL0NsaXBib2FyZEd0ay5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRHdGs6OndlYmtpdEdldERhdGFCbG9iKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNsaXBib2FyZEd0azo6d2Via2l0U2V0RGF0YUJsb2IpOgorICAgICAgICAq
IHBsYXRmb3JtL2d0ay9DbGlwYm9hcmRHdGsuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9oYWlrdS9D
bGlwYm9hcmRIYWlrdS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRIYWlrdTo6d2Vi
a2l0R2V0RGF0YUJsb2IpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkSGFpa3U6OndlYmtp
dFNldERhdGFCbG9iKToKKyAgICAgICAgKiBwbGF0Zm9ybS9oYWlrdS9DbGlwYm9hcmRIYWlrdS5o
OgorICAgICAgICAqIHBsYXRmb3JtL21hYy9DbGlwYm9hcmRNYWMuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9tYWMvQ2xpcGJvYXJkTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkTWFj
Ojp3ZWJraXRHZXREYXRhQmxvYik6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRNYWM6Ondl
YmtpdFNldERhdGFCbG9iKToKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9DbGlwYm9hcmRRdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRRdDo6d2Via2l0R2V0RGF0YUJsb2IpOgorICAg
ICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkUXQ6OndlYmtpdFNldERhdGFCbG9iKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9xdC9DbGlwYm9hcmRRdC5oOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9DbGlw
Ym9hcmRXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkV2luOjp3ZWJraXRHZXRE
YXRhQmxvYik6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRXaW46OndlYmtpdFNldERhdGFC
bG9iKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vQ2xpcGJvYXJkV2luLmg6CisgICAgICAgICog
cGxhdGZvcm0vd3gvQ2xpcGJvYXJkV3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJk
V3g6OmdldERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkV3g6OndlYmtpdEdldERh
dGFCbG9iKToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZFd4Ojp3ZWJraXRTZXREYXRhQmxv
Yik6CisKIDIwMTAtMTAtMDggIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IDk0YjNjYTIyNmZkODE1NTJjMmNlMjFkZTM0YzQwY2Q2MTQ2
ZDQ4ODIuLmVmN2Q3NWQ4M2YxNTk4Y2NjOTY5OGU4MGFlZTcxYzg4MjlhZDA3YzAgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC03NDUsNyArNzQ1LDcgQEAK
IAkJMkVENjA5QkMxMTQ1QjA3MTAwQzg2ODRFIC8qIERPTUZvcm1EYXRhLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFRDYwOUJBMTE0NUIwNzEwMEM4
Njg0RSAvKiBET01Gb3JtRGF0YS5jcHAgKi87IH07CiAJCTJFRDYwOUJEMTE0NUIwNzEwMEM4Njg0
RSAvKiBET01Gb3JtRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMkVENjA5QkIxMTQ1QjA3MTAwQzg2ODRFIC8qIERPTUZvcm1EYXRhLmggKi87IH07
CiAJCTJFREVGMUYzMTIxQjBFRkMwMDcyNkRCMiAvKiBCbG9iRGF0YS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRURFRjFFRDEyMUIwRUZDMDA3MjZE
QjIgLyogQmxvYkRhdGEuY3BwICovOyB9OwotCQkyRURFRjFGNDEyMUIwRUZDMDA3MjZEQjIgLyog
QmxvYkRhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDJFREVGMUVFMTIxQjBFRkMwMDcyNkRCMiAvKiBCbG9iRGF0YS5oICovOyB9OworCQkyRURFRjFG
NDEyMUIwRUZDMDA3MjZEQjIgLyogQmxvYkRhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFREVGMUVFMTIxQjBFRkMwMDcyNkRCMiAvKiBCbG9iRGF0
YS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTJF
REVGMUY1MTIxQjBFRkMwMDcyNkRCMiAvKiBCbG9iUmVnaXN0cnkuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFREVGMUVGMTIxQjBFRkMwMDcyNkRCMiAv
KiBCbG9iUmVnaXN0cnkuaCAqLzsgfTsKIAkJMkVERUYxRjYxMjFCMEVGQzAwNzI2REIyIC8qIEJs
b2JSZWdpc3RyeUltcGwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMkVERUYxRjAxMjFCMEVGQzAwNzI2REIyIC8qIEJsb2JSZWdpc3RyeUltcGwuY3Bw
ICovOyB9OwogCQkyRURFRjFGNzEyMUIwRUZDMDA3MjZEQjIgLyogQmxvYlJlZ2lzdHJ5SW1wbC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkVERUYxRjEx
MjFCMEVGQzAwNzI2REIyIC8qIEJsb2JSZWdpc3RyeUltcGwuaCAqLzsgfTsKQEAgLTI4NjksNyAr
Mjg2OSw3IEBACiAJCTk3M0UzMjU3MTA4ODNCN0MwMDVCQzQ5MyAvKiBSZXNvdXJjZUxvYWROb3Rp
Zmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTcz
RTMyNTUxMDg4M0I3QzAwNUJDNDkzIC8qIFJlc291cmNlTG9hZE5vdGlmaWVyLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTc2RDZDNzcxMjJCOEEz
RDAwMUZEMUY3IC8qIEFzeW5jRmlsZVdyaXRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOTc2RDZDNTgxMjJCOEEzRDAwMUZEMUY3IC8qIEFzeW5jRmls
ZVdyaXRlci5oICovOyB9OwogCQk5NzZENkM3ODEyMkI4QTNEMDAxRkQxRjcgLyogQmxvYi5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NzZENkM1OTEy
MkI4QTNEMDAxRkQxRjcgLyogQmxvYi5jcHAgKi87IH07Ci0JCTk3NkQ2Qzc5MTIyQjhBM0QwMDFG
RDFGNyAvKiBCbG9iLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5NzZENkM1QTEyMkI4QTNEMDAxRkQxRjcgLyogQmxvYi5oICovOyB9OworCQk5NzZENkM3
OTEyMkI4QTNEMDAxRkQxRjcgLyogQmxvYi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOTc2RDZDNUExMjJCOEEzRDAwMUZEMUY3IC8qIEJsb2IuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5NzZENkM3QjEy
MkI4QTNEMDAxRkQxRjcgLyogQmxvYkJ1aWxkZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTc2RDZDNUMxMjJCOEEzRDAwMUZEMUY3IC8qIEJsb2JC
dWlsZGVyLmNwcCAqLzsgfTsKIAkJOTc2RDZDN0MxMjJCOEEzRDAwMUZEMUY3IC8qIEJsb2JCdWls
ZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NzZE
NkM1RDEyMkI4QTNEMDAxRkQxRjcgLyogQmxvYkJ1aWxkZXIuaCAqLzsgfTsKIAkJOTc2RDZDN0Ux
MjJCOEEzRDAwMUZEMUY3IC8qIEJsb2JVUkwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOTc2RDZDNUYxMjJCOEEzRDAwMUZEMUY3IC8qIEJsb2JVUkwu
Y3BwICovOyB9OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NsaXBib2FyZEN1
c3RvbS5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2xpcGJvYXJkQ3VzdG9tLmNwcAppbmRl
eCAxN2M2NjQwMWJkNDFkMmNjM2I0OWRkZTRiYjVhZGE4YzU5YTQ0M2VmLi4yODIzZjQyNGEwOTA0
OGY4YWRjMGRiYmNjNTgyZDFhOThiNWVjOWYwIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTQ2xpcGJvYXJkQ3VzdG9tLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2xp
cGJvYXJkQ3VzdG9tLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkhUTUxJbWFnZUVs
ZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJJbnRQb2ludC5oIgor
I2luY2x1ZGUgIkpTQmxvYi5oIgogI2luY2x1ZGUgIkpTTm9kZS5oIgogI2luY2x1ZGUgIk5vZGUu
aCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgpAQCAtOTcsNiArOTgsMjIgQEAgSlNWYWx1
ZSBKU0NsaXBib2FyZDo6Z2V0RGF0YShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJuIGpzU3Ry
aW5nKGV4ZWMsIHJlc3VsdCk7CiB9CiAKK0pTVmFsdWUgSlNDbGlwYm9hcmQ6OndlYmtpdEdldERh
dGFCbG9iKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICAvLyBGSVhNRTogSXQgZG9lcyBub3QgbWF0
Y2ggdGhlIHJlc3Qgb2YgdGhlIEpTIGJpbmRpbmdzIHRvIHRocm93IG9uIGludmFsaWQgbnVtYmVy
IG9mIGFyZ3VtZW50cy4KKyAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpICE9IDEpCisgICAg
ICAgIHJldHVybiB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVN5bnRheEVycm9yKGV4ZWMsICJ3ZWJr
aXRHZXREYXRhQmxvYjogSW52YWxpZCBudW1iZXIgb2YgYXJndW1lbnRzIikpOworCisgICAgQ2xp
cGJvYXJkKiBjbGlwYm9hcmQgPSBpbXBsKCk7CisKKyAgICBib29sIHN1Y2Nlc3M7CisgICAgUmVm
UHRyPEJsb2I+IHJlc3VsdCA9IGNsaXBib2FyZC0+d2Via2l0R2V0RGF0YUJsb2IodXN0cmluZ1Rv
U3RyaW5nKGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpKSwgc3VjY2Vzcyk7CisgICAg
aWYgKCFzdWNjZXNzKQorICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKworICAgIHJldHVy
biB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCgpLCByZXN1bHQuZ2V0KCkpOworfQorCiBKU1ZhbHVl
IEpTQ2xpcGJvYXJkOjpzZXREcmFnSW1hZ2UoRXhlY1N0YXRlKiBleGVjKQogewogICAgIENsaXBi
b2FyZCogY2xpcGJvYXJkID0gaW1wbCgpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhDbGlwYm9hcmRDdXN0b20uY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhDbGlwYm9hcmRDdXN0b20uY3BwCmluZGV4IGQ4NWQ3YTA2YzZjNDNhZDA2NWRhYzQ1Njdi
OTNiZDMyNTFhMzFhNmEuLjBjNDA2NGZiZjljYzk4Mzg3Y2QzOWQ4OWVjNWI1YmYyYjNkYWY0YmEg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q2xpcGJvYXJkQ3VzdG9t
LmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOENsaXBib2FyZEN1c3RvbS5j
cHAKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlICJFbGVtZW50LmgiCiAKICNpbmNsdWRlICJW
OEJpbmRpbmcuaCIKKyNpbmNsdWRlICJWOEJsb2IuaCIKICNpbmNsdWRlICJWOE5vZGUuaCIKICNp
bmNsdWRlICJWOFByb3h5LmgiCiAKQEAgLTk2LDYgKzk3LDIyIEBAIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiBWOENsaXBib2FyZDo6Z2V0RGF0YUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFy
Z3MpCiAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKIH0KIAordjg6OkhhbmRsZTx2ODo6VmFs
dWU+IFY4Q2xpcGJvYXJkOjp3ZWJraXRHZXREYXRhQmxvYkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1
bWVudHMmIGFyZ3MpCit7CisgICAgSU5DX1NUQVRTKCJET00uQ2xpcGJvYXJkLndlYmtpdEdldERh
dGFCbG9iKCkiKTsKKyAgICBDbGlwYm9hcmQqIGNsaXBib2FyZCA9IFY4Q2xpcGJvYXJkOjp0b05h
dGl2ZShhcmdzLkhvbGRlcigpKTsKKworICAgIGlmIChhcmdzLkxlbmd0aCgpICE9IDEpCisgICAg
ICAgIHJldHVybiB0aHJvd0Vycm9yKCJ3ZWJraXRHZXREYXRhQmxvYjogSW52YWxpZCBudW1iZXIg
b2YgYXJndW1lbnRzIiwgVjhQcm94eTo6U3ludGF4RXJyb3IpOworCisgICAgYm9vbCBzdWNjZXNz
OworICAgIFJlZlB0cjxCbG9iPiByZXN1bHQgPSBjbGlwYm9hcmQtPndlYmtpdEdldERhdGFCbG9i
KHRvV2ViQ29yZVN0cmluZyhhcmdzWzBdKSwgc3VjY2Vzcyk7CisgICAgaWYgKHN1Y2Nlc3MpCisg
ICAgICAgIHJldHVybiBWOEJsb2I6OndyYXAocmVzdWx0LmdldCgpKTsKKworICAgIHJldHVybiB2
ODo6VW5kZWZpbmVkKCk7Cit9CisKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOENsaXBib2FyZDo6
c2V0RHJhZ0ltYWdlQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJ
TkNfU1RBVFMoIkRPTS5DbGlwYm9hcmQuc2V0RHJhZ0ltYWdlKCkiKTsKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvZG9tL0NsaXBib2FyZC5oIGIvV2ViQ29yZS9kb20vQ2xpcGJvYXJkLmgKaW5kZXggYjhl
YWRmYjZkMDY3NDg1YjQxOGI4NzliMWE5Y2RmZmM2ZmNjZTAxZi4uMzFkYzYyYTY4ZjJjZmIxNGFl
ZTM1NzRiOTVjYWRlNzc5N2E3ZTdiNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vQ2xpcGJvYXJk
LmgKKysrIGIvV2ViQ29yZS9kb20vQ2xpcGJvYXJkLmgKQEAgLTI0LDYgKzI0LDcgQEAKICNpZm5k
ZWYgQ2xpcGJvYXJkX2gKICNkZWZpbmUgQ2xpcGJvYXJkX2gKIAorI2luY2x1ZGUgIkJsb2IuaCIK
ICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgIkNsaXBib2FyZEFj
Y2Vzc1BvbGljeS5oIgogI2luY2x1ZGUgIkRyYWdBY3Rpb25zLmgiCkBAIC02Miw2ICs2Myw5IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lkIGNsZWFyQWxsRGF0YSgp
ID0gMDsKICAgICAgICAgdmlydHVhbCBTdHJpbmcgZ2V0RGF0YShjb25zdCBTdHJpbmcmIHR5cGUs
IGJvb2wmIHN1Y2Nlc3MpIGNvbnN0ID0gMDsKICAgICAgICAgdmlydHVhbCBib29sIHNldERhdGEo
Y29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGRhdGEpID0gMDsKKworICAgICAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8QmxvYj4gd2Via2l0R2V0RGF0YUJsb2IoY29uc3QgU3RyaW5nJiB0
eXBlLCBib29sJiBzdWNjZXNzKSBjb25zdCA9IDA7CisgICAgICAgIHZpcnR1YWwgYm9vbCB3ZWJr
aXRTZXREYXRhQmxvYihjb25zdCBTdHJpbmcmIHR5cGUsIFBhc3NSZWZQdHI8QmxvYj4pID0gMDsK
ICAgICAKICAgICAgICAgLy8gZXh0ZW5zaW9ucyBiZXlvbmQgSUUncyBBUEkKICAgICAgICAgdmly
dHVhbCBIYXNoU2V0PFN0cmluZz4gdHlwZXMoKSBjb25zdCA9IDA7CmRpZmYgLS1naXQgYS9XZWJD
b3JlL2RvbS9DbGlwYm9hcmQuaWRsIGIvV2ViQ29yZS9kb20vQ2xpcGJvYXJkLmlkbAppbmRleCAx
MDI0YTM2ZDE2YTNjNDkwM2FmMGRlNmQ1ZDNkZjk2ZWQ4ODc0ZGE0Li5kZWQzMTIyMzEzZjAxOTBm
MzQ1OTc5ZDZkOTBiYTBmZDY4NmYyY2VkIDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9DbGlwYm9h
cmQuaWRsCisrKyBiL1dlYkNvcmUvZG9tL0NsaXBib2FyZC5pZGwKQEAgLTM4LDggKzM4LDExIEBA
IG1vZHVsZSBjb3JlIHsKICAgICAgICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24pOwogICAgICAg
ICBbQ3VzdG9tXSB2b2lkIGdldERhdGEoaW4gRE9NU3RyaW5nIHR5cGUpCiAgICAgICAgICAgICBy
YWlzZXMoRE9NRXhjZXB0aW9uKTsKKyAgICAgICAgW0N1c3RvbV0gdm9pZCB3ZWJraXRHZXREYXRh
QmxvYihpbiBET01TdHJpbmcgdHlwZSkKKyAgICAgICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24p
OwogICAgICAgICAvLyBGSVhNRTogUmVxdWlyZXNBbGxBcmd1bWVudHMgaXMgcHJvYmFibHkgYm9n
dXMgaGVyZS4KICAgICAgICAgW1JlcXVpcmVzQWxsQXJndW1lbnRzXSBib29sZWFuIHNldERhdGEo
aW4gRE9NU3RyaW5nIHR5cGUsIGluIERPTVN0cmluZyBkYXRhKTsKKyAgICAgICAgW1JlcXVpcmVz
QWxsQXJndW1lbnRzXSBib29sZWFuIHdlYmtpdFNldERhdGFCbG9iKGluIERPTVN0cmluZyB0eXBl
LCBpbiBCbG9iIGRhdGEpOwogICAgICAgICBbQ3VzdG9tXSB2b2lkIHNldERyYWdJbWFnZShpbiBI
VE1MSW1hZ2VFbGVtZW50IGltYWdlLCBpbiBsb25nIHgsIGluIGxvbmcgeSkKICAgICAgICAgICAg
IHJhaXNlcyhET01FeGNlcHRpb24pOwogICAgIH07CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRm
b3JtL2FuZHJvaWQvQ2xpcGJvYXJkQW5kcm9pZC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2FuZHJv
aWQvQ2xpcGJvYXJkQW5kcm9pZC5jcHAKaW5kZXggYTkxZmQyMWE1ODc0ZWMwNjQ1OTljMzI0OTQ5
MTQ4OTQ1ODg3NTcxOS4uMGVlZDIyNWJlNzQ5YTEwMmNmMDY3MThkMmM2MjYwM2Y0YWE3YmJmZCAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9hbmRyb2lkL0NsaXBib2FyZEFuZHJvaWQuY3Bw
CisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vYW5kcm9pZC9DbGlwYm9hcmRBbmRyb2lkLmNwcApAQCAt
NjUsMTIgKzY1LDI0IEBAIFN0cmluZyBDbGlwYm9hcmRBbmRyb2lkOjpnZXREYXRhKGNvbnN0IFN0
cmluZyYsIGJvb2wmIHN1Y2Nlc3MpIGNvbnN0CiAgICAgcmV0dXJuICIiOwogfQogCitQYXNzUmVm
UHRyPEJsb2I+IENsaXBib2FyZEFuZHJvaWQ6OndlYmtpdEdldERhdGFCbG9iKGNvbnN0IFN0cmlu
ZyYsIGJvb2wmIHN1Y2Nlc3MpIGNvbnN0Cit7CisgICAgc3VjY2VzcyA9IGZhbHNlOworICAgIHJl
dHVybiAwOworfQorCiBib29sIENsaXBib2FyZEFuZHJvaWQ6OnNldERhdGEoY29uc3QgU3RyaW5n
JiwgY29uc3QgU3RyaW5nJikKIHsKICAgICBBU1NFUlQoaXNGb3JEcmFnQW5kRHJvcCgpKTsKICAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKK2Jvb2wgQ2xpcGJvYXJkQW5kcm9pZDo6d2Via2l0U2V0RGF0
YUJsb2IoY29uc3QgU3RyaW5nJiwgUGFzc1JlZlB0cjxCbG9iPikKK3sKKyAgICBBU1NFUlQoaXNG
b3JEcmFnQW5kRHJvcCgpKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIC8vIGV4dGVuc2lvbnMg
YmV5b25kIElFJ3MgQVBJCiBIYXNoU2V0PFN0cmluZz4gQ2xpcGJvYXJkQW5kcm9pZDo6dHlwZXMo
KSBjb25zdAogeyAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vYW5kcm9pZC9DbGlwYm9h
cmRBbmRyb2lkLmggYi9XZWJDb3JlL3BsYXRmb3JtL2FuZHJvaWQvQ2xpcGJvYXJkQW5kcm9pZC5o
CmluZGV4IDgwNzY1M2JkMzM3ZDkxMWFhZTcwMjEzZGI5N2QxNmZjNTYwN2IxMzEuLjIxNmUwY2Zm
OTAyYzBkODcyNGQ2MWIxZjZhZDFkODhlYmVmMzdiMjAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxh
dGZvcm0vYW5kcm9pZC9DbGlwYm9hcmRBbmRyb2lkLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9h
bmRyb2lkL0NsaXBib2FyZEFuZHJvaWQuaApAQCAtNDMsNyArNDMsOSBAQCBwdWJsaWM6CiAgICAg
dm9pZCBjbGVhckRhdGEoY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBjbGVhckFsbERhdGEoKTsK
ICAgICBTdHJpbmcgZ2V0RGF0YShjb25zdCBTdHJpbmcmLCBib29sJiBzdWNjZXNzKSBjb25zdDsK
KyAgICBQYXNzUmVmUHRyPEJsb2I+IHdlYmtpdEdldERhdGFCbG9iKGNvbnN0IFN0cmluZyYsIGJv
b2wmIHN1Y2Nlc3MpIGNvbnN0OwogICAgIGJvb2wgc2V0RGF0YShjb25zdCBTdHJpbmcmLCBjb25z
dCBTdHJpbmcmKTsKKyAgICBib29sIHdlYmtpdFNldERhdGFCbG9iKGNvbnN0IFN0cmluZyYsIFBh
c3NSZWZQdHI8QmxvYj4pOwogCiAgICAgLy8gZXh0ZW5zaW9ucyBiZXlvbmQgSUUncyBBUEkKICAg
ICBIYXNoU2V0PFN0cmluZz4gdHlwZXMoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxh
dGZvcm0vYnJldy9DbGlwYm9hcmRCcmV3LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vYnJldy9DbGlw
Ym9hcmRCcmV3LmNwcAppbmRleCBjMDUwNGJjODA1OGNiNzk2MGIyODhlNGMyMWM5MWFhMWMwYmIz
MmRkLi43MGU1N2RlNzhkYzA4NzUyNzkzOGI4MGE2NjAwZDI1NGU4NGM0MDhiIDEwMDY0NAotLS0g
YS9XZWJDb3JlL3BsYXRmb3JtL2JyZXcvQ2xpcGJvYXJkQnJldy5jcHAKKysrIGIvV2ViQ29yZS9w
bGF0Zm9ybS9icmV3L0NsaXBib2FyZEJyZXcuY3BwCkBAIC02NiwxMiArNjYsMjQgQEAgU3RyaW5n
IENsaXBib2FyZEJyZXc6OmdldERhdGEoY29uc3QgU3RyaW5nJiwgYm9vbCYgc3VjY2VzcykgY29u
c3QKICAgICByZXR1cm4gIiI7CiB9CiAKK1Bhc3NSZWZQdHI8QmxvYj4gQ2xpcGJvYXJkQnJldzo6
d2Via2l0R2V0RGF0YUJsb2IoY29uc3QgU3RyaW5nJiwgYm9vbCYgc3VjY2VzcykgY29uc3QKK3sK
KyAgICBzdWNjZXNzID0gZmFsc2U7CisgICAgcmV0dXJuIDA7Cit9CisKIGJvb2wgQ2xpcGJvYXJk
QnJldzo6c2V0RGF0YShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKQogewogICAgIEFTU0VS
VChpc0ZvckRyYWdBbmREcm9wKCkpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIAorYm9vbCBDbGlw
Ym9hcmRCcmV3Ojp3ZWJraXRTZXREYXRhQmxvYihjb25zdCBTdHJpbmcmLCBQYXNzUmVmUHRyPEJs
b2I+KQoreworICAgIEFTU0VSVChpc0ZvckRyYWdBbmREcm9wKCkpOworICAgIHJldHVybiBmYWxz
ZTsKK30KKwogLy8gZXh0ZW5zaW9ucyBiZXlvbmQgSUUncyBBUEkKIEhhc2hTZXQ8U3RyaW5nPiBD
bGlwYm9hcmRCcmV3Ojp0eXBlcygpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRm
b3JtL2JyZXcvQ2xpcGJvYXJkQnJldy5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9icmV3L0NsaXBib2Fy
ZEJyZXcuaAppbmRleCAxZmFmMDMxZmI3NWM3YWU4YmNkNjNjMGNkYzc2MTVjN2I2YWI3NGIwLi41
NjY2ODYwYjhlNTk4MWMwNmUzNDUxM2NmNDJiMjFkZDQxYTRmNTk2IDEwMDY0NAotLS0gYS9XZWJD
b3JlL3BsYXRmb3JtL2JyZXcvQ2xpcGJvYXJkQnJldy5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0v
YnJldy9DbGlwYm9hcmRCcmV3LmgKQEAgLTQyLDcgKzQyLDkgQEAgcHVibGljOgogICAgIHZvaWQg
Y2xlYXJEYXRhKGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgY2xlYXJBbGxEYXRhKCk7CiAgICAg
U3RyaW5nIGdldERhdGEoY29uc3QgU3RyaW5nJiwgYm9vbCYgc3VjY2VzcykgY29uc3Q7CisgICAg
UGFzc1JlZlB0cjxCbG9iPiB3ZWJraXRHZXREYXRhQmxvYihjb25zdCBTdHJpbmcmLCBib29sJiBz
dWNjZXNzKSBjb25zdDsKICAgICBib29sIHNldERhdGEoY29uc3QgU3RyaW5nJiwgY29uc3QgU3Ry
aW5nJik7CisgICAgYm9vbCB3ZWJraXRTZXREYXRhQmxvYihjb25zdCBTdHJpbmcmLCBQYXNzUmVm
UHRyPEJsb2I+KTsKIAogICAgIC8vIGV4dGVuc2lvbnMgYmV5b25kIElFJ3MgQVBJCiAgICAgSGFz
aFNldDxTdHJpbmc+IHR5cGVzKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3Jt
L2Nocm9taXVtL0NsaXBib2FyZENocm9taXVtLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21p
dW0vQ2xpcGJvYXJkQ2hyb21pdW0uY3BwCmluZGV4IGMxYjM0ZGE0ODY3NTAzZDBlNjQxMjBkNmZk
ZmFjZjliMDc4YzczMTUuLmFmYTk3ZGFmNmY5ZGM5MmU3YmI1ZTEwZjBlZjEzMjE1YjI4ZDBlNjYg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2xpcGJvYXJkQ2hyb21pdW0u
Y3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2xpcGJvYXJkQ2hyb21pdW0uY3Bw
CkBAIC0xMTEsNiArMTExLDEyIEBAIFN0cmluZyBDbGlwYm9hcmRDaHJvbWl1bTo6Z2V0RGF0YShj
b25zdCBTdHJpbmcmIHR5cGUsIGJvb2wmIHN1Y2Nlc3MpIGNvbnN0CiAgICAgcmV0dXJuIG1fZGF0
YU9iamVjdC0+Z2V0RGF0YShub3JtYWxpemVUeXBlKHR5cGUpLCBzdWNjZXNzKTsKIH0KIAorUGFz
c1JlZlB0cjxCbG9iPiBDbGlwYm9hcmRDaHJvbWl1bTo6d2Via2l0R2V0RGF0YUJsb2IoY29uc3Qg
U3RyaW5nJiwgYm9vbCYgc3VjY2VzcykgY29uc3QKK3sKKyAgICBzdWNjZXNzID0gZmFsc2U7Cisg
ICAgcmV0dXJuIDA7Cit9CisKIGJvb2wgQ2xpcGJvYXJkQ2hyb21pdW06OnNldERhdGEoY29uc3Qg
U3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGRhdGEpCiB7CiAgICAgaWYgKHBvbGljeSgpICE9
IENsaXBib2FyZFdyaXRhYmxlKQpAQCAtMTE5LDYgKzEyNSwxMSBAQCBib29sIENsaXBib2FyZENo
cm9taXVtOjpzZXREYXRhKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBkYXRhKQog
ICAgIHJldHVybiBtX2RhdGFPYmplY3QtPnNldERhdGEobm9ybWFsaXplVHlwZSh0eXBlKSwgZGF0
YSk7CiB9CiAKK2Jvb2wgQ2xpcGJvYXJkQ2hyb21pdW06OndlYmtpdFNldERhdGFCbG9iKGNvbnN0
IFN0cmluZyYsIFBhc3NSZWZQdHI8QmxvYj4pCit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCiAv
LyBleHRlbnNpb25zIGJleW9uZCBJRSdzIEFQSQogSGFzaFNldDxTdHJpbmc+IENsaXBib2FyZENo
cm9taXVtOjp0eXBlcygpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2No
cm9taXVtL0NsaXBib2FyZENocm9taXVtLmggYi9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0Ns
aXBib2FyZENocm9taXVtLmgKaW5kZXggMTRmNTllOWFjOTgzYTBhMmFlYWJlNjQ2OTk0MDU2ZjIx
YWIxOTYwZi4uOThhYTk5YzAzYjE1ZmU1OWI2YmNiMmQ3ZjljZTljZTg4NzIwMmQxMSAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1bS5oCisrKyBi
L1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2xpcGJvYXJkQ2hyb21pdW0uaApAQCAtNTcsNyAr
NTcsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBjbGVhckRh
dGEoY29uc3QgU3RyaW5nJiB0eXBlKTsKICAgICAgICAgdm9pZCBjbGVhckFsbERhdGEoKTsKICAg
ICAgICAgU3RyaW5nIGdldERhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBib29sJiBzdWNjZXNzKSBj
b25zdDsKKyAgICAgICAgUGFzc1JlZlB0cjxCbG9iPiB3ZWJraXRHZXREYXRhQmxvYihjb25zdCBT
dHJpbmcmIHR5cGUsIGJvb2wmIHN1Y2Nlc3MpIGNvbnN0OwogICAgICAgICBib29sIHNldERhdGEo
Y29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGRhdGEpOworICAgICAgICBib29sIHdl
YmtpdFNldERhdGFCbG9iKGNvbnN0IFN0cmluZyYgdHlwZSwgUGFzc1JlZlB0cjxCbG9iPiBkYXRh
KTsKIAogICAgICAgICAvLyBleHRlbnNpb25zIGJleW9uZCBJRSdzIEFQSQogICAgICAgICB2aXJ0
dWFsIEhhc2hTZXQ8U3RyaW5nPiB0eXBlcygpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9w
bGF0Zm9ybS9lZmwvQ2xpcGJvYXJkRWZsLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZWZsL0NsaXBi
b2FyZEVmbC5jcHAKaW5kZXggYTdjMmE1NGZmMTU2MTVlOGYyODYyNzkwNDcwYjFiMmMxNGEzZDcw
ZC4uNGQwMDFhMTU3ZDYyYzRlMzQxMGRkMDllM2FhOTA5ZDI5YzJlZmI5MSAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9wbGF0Zm9ybS9lZmwvQ2xpcGJvYXJkRWZsLmNwcAorKysgYi9XZWJDb3JlL3BsYXRm
b3JtL2VmbC9DbGlwYm9hcmRFZmwuY3BwCkBAIC03MCwxMiArNzAsMjUgQEAgU3RyaW5nIENsaXBi
b2FyZEVmbDo6Z2V0RGF0YShjb25zdCBTdHJpbmcmLCBib29sICZzdWNjZXNzKSBjb25zdAogICAg
IHJldHVybiBTdHJpbmcoKTsKIH0KIAorUGFzc1JlZlB0cjxCbG9iPiBDbGlwYm9hcmRFZmw6Ondl
YmtpdEdldERhdGFCbG9iKGNvbnN0IFN0cmluZyYsIGJvb2wmIHN1Y2Nlc3MpIGNvbnN0Cit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBzdWNjZXNzID0gZmFsc2U7CisgICAgcmV0dXJuIDA7
Cit9CisKIGJvb2wgQ2xpcGJvYXJkRWZsOjpzZXREYXRhKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0
cmluZyYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAK
K2Jvb2wgQ2xpcGJvYXJkRWZsOjp3ZWJraXRTZXREYXRhQmxvYihjb25zdCBTdHJpbmcmLCBQYXNz
UmVmUHRyPEJsb2I+KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNl
OworfQorCiBIYXNoU2V0PFN0cmluZz4gQ2xpcGJvYXJkRWZsOjp0eXBlcygpIGNvbnN0CiB7CiAg
ICAgbm90SW1wbGVtZW50ZWQoKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZWZsL0Ns
aXBib2FyZEVmbC5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvQ2xpcGJvYXJkRWZsLmgKaW5kZXgg
MDZmNGU1ODA1NzU0ZGVmNmU2N2M1OGFjMTgzYzE5MzYxMDU1YWQ5NC4uYTI0YzVlYTc5ZGU0MmNj
ZWY2MjMzNWZhOTQyMjRhZDE1YTg5ZjNjOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9l
ZmwvQ2xpcGJvYXJkRWZsLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvQ2xpcGJvYXJkRWZs
LmgKQEAgLTM3LDcgKzM3LDkgQEAgcHVibGljOgogICAgIHZvaWQgY2xlYXJEYXRhKGNvbnN0IFN0
cmluZyYpOwogICAgIHZvaWQgY2xlYXJBbGxEYXRhKCk7CiAgICAgU3RyaW5nIGdldERhdGEoY29u
c3QgU3RyaW5nJiwgYm9vbCYpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8QmxvYj4gd2Via2l0R2V0
RGF0YUJsb2IoY29uc3QgU3RyaW5nJiwgYm9vbCYpIGNvbnN0OwogICAgIGJvb2wgc2V0RGF0YShj
b25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKTsKKyAgICBib29sIHdlYmtpdFNldERhdGFCbG9i
KGNvbnN0IFN0cmluZyYsIFBhc3NSZWZQdHI8QmxvYj4pOwogCiAgICAgSGFzaFNldDxTdHJpbmc+
IHR5cGVzKCkgY29uc3Q7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEZpbGVMaXN0PiBmaWxlcygp
IGNvbnN0OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQ2xpcGJvYXJkR3RrLmNw
cCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0NsaXBib2FyZEd0ay5jcHAKaW5kZXggZTdlZTQzMjVh
ZjZkZTE2ZGU3YTVhNDViYTBmMTA0MjMzMmIxOGRkNC4uYTE5NzlkMmI1ZWZiOTkyMTMwOTUzMjVl
MTJmMjBiODNkNmM5ZDljMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQ2xpcGJv
YXJkR3RrLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2d0ay9DbGlwYm9hcmRHdGsuY3BwCkBA
IC0xOTQsNiArMTk0LDEyIEBAIFN0cmluZyBDbGlwYm9hcmRHdGs6OmdldERhdGEoY29uc3QgU3Ry
aW5nJiB0eXBlU3RyaW5nLCBib29sJiBzdWNjZXNzKSBjb25zdAogICAgIHJldHVybiBTdHJpbmco
KTsKIH0KIAorUGFzc1JlZlB0cjxCbG9iPiBDbGlwYm9hcmRHdGs6OndlYmtpdEdldERhdGFCbG9i
KGNvbnN0IFN0cmluZyYsIGJvb2wmIHN1Y2Nlc3MpIGNvbnN0Cit7CisgICAgc3VjY2VzcyA9IGZh
bHNlOworICAgIHJldHVybiAwOworfQorCiBib29sIENsaXBib2FyZEd0azo6c2V0RGF0YShjb25z
dCBTdHJpbmcmIHR5cGVTdHJpbmcsIGNvbnN0IFN0cmluZyYgZGF0YSkKIHsKICAgICBpZiAocG9s
aWN5KCkgIT0gQ2xpcGJvYXJkV3JpdGFibGUpCkBAIC0yMjgsNiArMjM0LDExIEBAIGJvb2wgQ2xp
cGJvYXJkR3RrOjpzZXREYXRhKGNvbnN0IFN0cmluZyYgdHlwZVN0cmluZywgY29uc3QgU3RyaW5n
JiBkYXRhKQogICAgIHJldHVybiBzdWNjZXNzOwogfQogCitib29sIENsaXBib2FyZEd0azo6d2Vi
a2l0U2V0RGF0YUJsb2IoY29uc3QgU3RyaW5nJiwgUGFzc1JlZlB0cjxCbG9iPikKK3sKKyAgICBy
ZXR1cm4gZmFsc2U7Cit9CisKIEhhc2hTZXQ8U3RyaW5nPiBDbGlwYm9hcmRHdGs6OnR5cGVzKCkg
Y29uc3QKIHsKICAgICBpZiAocG9saWN5KCkgIT0gQ2xpcGJvYXJkUmVhZGFibGUgJiYgcG9saWN5
KCkgIT0gQ2xpcGJvYXJkVHlwZXNSZWFkYWJsZSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZv
cm0vZ3RrL0NsaXBib2FyZEd0ay5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQ2xpcGJvYXJkR3Rr
LmgKaW5kZXggZTE0YTU4M2EyNDczNzU0YmY3OTA0OThiMzU1YzA4ZDBkMjJlYTQ5NS4uOGMwZWFi
N2ViNDQyNjU1YjM4ZGU2NzA2NDhjOWQzZDM2NzM3ZTlhZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9w
bGF0Zm9ybS9ndGsvQ2xpcGJvYXJkR3RrLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQ2xp
cGJvYXJkR3RrLmgKQEAgLTU0LDcgKzU0LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICB2b2lkIGNsZWFyRGF0YShjb25zdCBTdHJpbmcmKTsKICAgICAgICAgdm9pZCBjbGVhckFsbERh
dGEoKTsKICAgICAgICAgU3RyaW5nIGdldERhdGEoY29uc3QgU3RyaW5nJiwgYm9vbCYpIGNvbnN0
OworICAgICAgICBQYXNzUmVmUHRyPEJsb2I+IHdlYmtpdEdldERhdGFCbG9iKGNvbnN0IFN0cmlu
ZyYsIGJvb2wmKSBjb25zdDsKICAgICAgICAgYm9vbCBzZXREYXRhKGNvbnN0IFN0cmluZyYsIGNv
bnN0IFN0cmluZyYpOworICAgICAgICBib29sIHdlYmtpdFNldERhdGFCbG9iKGNvbnN0IFN0cmlu
ZyYsIFBhc3NSZWZQdHI8QmxvYj4pOwogCiAgICAgICAgIHZpcnR1YWwgSGFzaFNldDxTdHJpbmc+
IHR5cGVzKCkgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGaWxlTGlzdD4gZmls
ZXMoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vaGFpa3UvQ2xpcGJvYXJk
SGFpa3UuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9oYWlrdS9DbGlwYm9hcmRIYWlrdS5jcHAKaW5k
ZXggNDk1ZjFkMjcwYjM3NmZkZmIyY2YzOWJhOGUxN2Y5YzliMDcxYjVlZi4uZjMzZmZkZDY0YWNj
OWM2MzdiODcyY2MzMDEwNzQ2M2YyYzI3OTVlMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9y
bS9oYWlrdS9DbGlwYm9hcmRIYWlrdS5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9oYWlrdS9D
bGlwYm9hcmRIYWlrdS5jcHAKQEAgLTkzLDYgKzkzLDEyIEBAIFN0cmluZyBDbGlwYm9hcmRIYWlr
dTo6Z2V0RGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIGJvb2wmIHN1Y2Nlc3MpIGNvbnN0CiAgICAg
cmV0dXJuIHJlc3VsdDsKIH0KIAorUGFzc1JlZlB0cjxCbG9iPiBDbGlwYm9hcmRIYWlrdTo6d2Vi
a2l0R2V0RGF0YUJsb2IoY29uc3QgU3RyaW5nJiwgYm9vbCYgc3VjY2VzcykgY29uc3QKK3sKKyAg
ICBzdWNjZXNzID0gZmFsc2U7CisgICAgcmV0dXJuIDA7Cit9CisKIGJvb2wgQ2xpcGJvYXJkSGFp
a3U6OnNldERhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGRhdGEpCiB7CiAg
ICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKQEAgLTExNCw2ICsxMjAsMTEgQEAgYm9vbCBDbGlwYm9h
cmRIYWlrdTo6c2V0RGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgZGF0YSkK
ICAgICByZXR1cm4gcmVzdWx0OwogfQogCitib29sIENsaXBib2FyZEhhaWt1Ojp3ZWJraXRTZXRE
YXRhQmxvYihjb25zdCBTdHJpbmcmLCBQYXNzUmVmUHRyPEJsb2I+KQoreworICAgIHJldHVybiBm
YWxzZTsKK30KKwogLy8gRXh0ZW5zaW9ucyBiZXlvbmQgSUUncyBBUEkuCiBIYXNoU2V0PFN0cmlu
Zz4gQ2xpcGJvYXJkSGFpa3U6OnR5cGVzKCkgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
cGxhdGZvcm0vaGFpa3UvQ2xpcGJvYXJkSGFpa3UuaCBiL1dlYkNvcmUvcGxhdGZvcm0vaGFpa3Uv
Q2xpcGJvYXJkSGFpa3UuaAppbmRleCA4OWRjN2JkMzUyOWRlNDQxMDI1OTQ2Y2FkZmUzZTIxYTYy
NDY0MTYxLi44NDgxMGFlNzc2YWY2NDEwZGEzMzhjMDhkN2Y3Y2Q4MzgyNTIyM2ZmIDEwMDY0NAot
LS0gYS9XZWJDb3JlL3BsYXRmb3JtL2hhaWt1L0NsaXBib2FyZEhhaWt1LmgKKysrIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9oYWlrdS9DbGlwYm9hcmRIYWlrdS5oCkBAIC00NSw3ICs0NSw5IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBjbGVhckRhdGEoY29uc3QgU3RyaW5nJiB0eXBl
KTsKICAgICAgICAgdm9pZCBjbGVhckFsbERhdGEoKTsKICAgICAgICAgU3RyaW5nIGdldERhdGEo
Y29uc3QgU3RyaW5nJiB0eXBlLCBib29sJiBzdWNjZXNzKSBjb25zdDsKKyAgICAgICAgUGFzc1Jl
ZlB0cjxCbG9iPiB3ZWJraXRHZXREYXRhQmxvYihjb25zdCBTdHJpbmcmIHR5cGUsIGJvb2wmIHN1
Y2Nlc3MpIGNvbnN0OwogICAgICAgICBib29sIHNldERhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBj
b25zdCBTdHJpbmcmIGRhdGEpOworICAgICAgICBib29sIHdlYmtpdFNldERhdGFCbG9iKGNvbnN0
IFN0cmluZyYgdHlwZSwgUGFzc1JlZlB0cjxCbG9iPik7CiAKICAgICAgICAgLy8gRXh0ZW5zaW9u
cyBiZXlvbmQgSUUncyBBUEkuCiAgICAgICAgIEhhc2hTZXQ8U3RyaW5nPiB0eXBlcygpIGNvbnN0
OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvQ2xpcGJvYXJkTWFjLmggYi9XZWJD
b3JlL3BsYXRmb3JtL21hYy9DbGlwYm9hcmRNYWMuaAppbmRleCA3MTg3ZWNmMzI1YjdkYWFjN2Fm
ZTlmMjI2OTBmY2UxM2VkMTRhMTI0Li5jZTZiNWMzOGFhZTk0YTU1MWE4NTYwOWY3MTVjN2U3NDk0
NmQzMmY3IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL21hYy9DbGlwYm9hcmRNYWMuaAor
KysgYi9XZWJDb3JlL3BsYXRmb3JtL21hYy9DbGlwYm9hcmRNYWMuaApAQCAtNTUsNyArNTUsOSBA
QCBwdWJsaWM6CiAgICAgdm9pZCBjbGVhckRhdGEoY29uc3QgU3RyaW5nJiB0eXBlKTsKICAgICB2
b2lkIGNsZWFyQWxsRGF0YSgpOwogICAgIFN0cmluZyBnZXREYXRhKGNvbnN0IFN0cmluZyYgdHlw
ZSwgYm9vbCYgc3VjY2VzcykgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxCbG9iPiB3ZWJraXRHZXRE
YXRhQmxvYihjb25zdCBTdHJpbmcmIHR5cGUsIGJvb2wmIHN1Y2Nlc3MpIGNvbnN0OwogICAgIGJv
b2wgc2V0RGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgZGF0YSk7CisgICAg
Ym9vbCB3ZWJraXRTZXREYXRhQmxvYihjb25zdCBTdHJpbmcmIHR5cGUsIFBhc3NSZWZQdHI8Qmxv
Yj4gZGF0YSk7CiAgICAgCiAgICAgdmlydHVhbCBib29sIGhhc0RhdGEoKTsKICAgICAKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0NsaXBib2FyZE1hYy5tbSBiL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL0NsaXBib2FyZE1hYy5tbQppbmRleCAxMGQxOTZhZTliZWQwZGJiZTY5YTYyODJk
Njc2NDU3MTMyNzg5MzBlLi5kZWU4ZGIyZWQyNTZlMWU1MDEzMGE1YWU1NjljMTE0ODBhZjFlNDMz
IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL21hYy9DbGlwYm9hcmRNYWMubW0KKysrIGIv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvQ2xpcGJvYXJkTWFjLm1tCkBAIC0yNDAsNiArMjQwLDEyIEBA
IFN0cmluZyBDbGlwYm9hcmRNYWM6OmdldERhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBib29sJiBz
dWNjZXNzKSBjb25zdAogICAgIHJldHVybiBTdHJpbmcoKTsKIH0KIAorUGFzc1JlZlB0cjxCbG9i
PiBDbGlwYm9hcmRNYWM6OndlYmtpdEdldERhdGFCbG9iKGNvbnN0IFN0cmluZyYsIGJvb2wmIHN1
Y2Nlc3MpIGNvbnN0Cit7CisgICAgc3VjY2VzcyA9IGZhbHNlOworICAgIHJldHVybiAwOworfQor
CiBib29sIENsaXBib2FyZE1hYzo6c2V0RGF0YShjb25zdCBTdHJpbmcgJnR5cGUsIGNvbnN0IFN0
cmluZyAmZGF0YSkKIHsKICAgICBpZiAocG9saWN5KCkgIT0gQ2xpcGJvYXJkV3JpdGFibGUpCkBA
IC0zMDAsNiArMzA2LDExIEBAIEhhc2hTZXQ8U3RyaW5nPiBDbGlwYm9hcmRNYWM6OnR5cGVzKCkg
Y29uc3QKICAgICByZXR1cm4gcmVzdWx0OwogfQogCitib29sIENsaXBib2FyZE1hYzo6d2Via2l0
U2V0RGF0YUJsb2IoY29uc3QgU3RyaW5nJiwgUGFzc1JlZlB0cjxCbG9iPikKK3sKKyAgICByZXR1
cm4gZmFsc2U7Cit9CisKIC8vIEZJWE1FOiBXZSBjb3VsZCBjYWNoZSB0aGUgY29tcHV0ZWQgZmls
ZUxpc3QgaWYgbmVjZXNzYXJ5CiAvLyBDdXJyZW50bHkgZWFjaCBhY2Nlc3MgZ2V0cyBhIG5ldyBj
b3B5LCBzZXREYXRhKCkgbW9kaWZpY2F0aW9ucyB0byB0aGUKIC8vIGNsaXBib2FyZCBhcmUgbm90
IHJlZmxlY3RlZCBpbiBhbnkgRmlsZUxpc3Qgb2JqZWN0cyB0aGUgcGFnZSBoYXMgYWNjZXNzZWQg
YW5kIHN0b3JlZApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9xdC9DbGlwYm9hcmRRdC5j
cHAgYi9XZWJDb3JlL3BsYXRmb3JtL3F0L0NsaXBib2FyZFF0LmNwcAppbmRleCAyMGNmNjJiMGZj
OTM3NWM5Y2I1NDU5Y2ViYzE3NDM4Mzg0ODc2NjM5Li5kZmUxNzg2MzYyY2JlYjIzMTE0YTdmYzVh
ODdmOTYyYzAwZmFiZDIzIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL3F0L0NsaXBib2Fy
ZFF0LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL3F0L0NsaXBib2FyZFF0LmNwcApAQCAtMTY0
LDYgKzE2NCwxMiBAQCBTdHJpbmcgQ2xpcGJvYXJkUXQ6OmdldERhdGEoY29uc3QgU3RyaW5nJiB0
eXBlLCBib29sJiBzdWNjZXNzKSBjb25zdAogICAgIHJldHVybiBkYXRhOwogfQogCitQYXNzUmVm
UHRyPEJsb2I+IENsaXBib2FyZFF0Ojp3ZWJraXRHZXREYXRhQmxvYihjb25zdCBTdHJpbmcmLCBi
b29sJiBzdWNjZXNzKSBjb25zdAoreworICAgIHN1Y2Nlc3MgPSBmYWxzZTsKKyAgICByZXR1cm4g
MDsKK30KKwogYm9vbCBDbGlwYm9hcmRRdDo6c2V0RGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIGNv
bnN0IFN0cmluZyYgZGF0YSkKIHsKICAgICBpZiAocG9saWN5KCkgIT0gQ2xpcGJvYXJkV3JpdGFi
bGUpCkBAIC0xODgsNiArMTk0LDExIEBAIGJvb2wgQ2xpcGJvYXJkUXQ6OnNldERhdGEoY29uc3Qg
U3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGRhdGEpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
K2Jvb2wgQ2xpcGJvYXJkUXQ6OndlYmtpdFNldERhdGFCbG9iKGNvbnN0IFN0cmluZyYsIFBhc3NS
ZWZQdHI8QmxvYj4pCit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCiAvLyBleHRlbnNpb25zIGJl
eW9uZCBJRSdzIEFQSQogSGFzaFNldDxTdHJpbmc+IENsaXBib2FyZFF0Ojp0eXBlcygpIGNvbnN0
CiB7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL3F0L0NsaXBib2FyZFF0LmggYi9XZWJD
b3JlL3BsYXRmb3JtL3F0L0NsaXBib2FyZFF0LmgKaW5kZXggNWFjYTFhNjA2OTM2ZmMxYzA4MTk3
NjJlYmFiZWRjZWZhY2UyZTFjNS4uY2I4ODllNzMxN2RmZTdiMjNlZTI5ODQ4NDA3NDZlOWY1MDcy
NGViZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9xdC9DbGlwYm9hcmRRdC5oCisrKyBi
L1dlYkNvcmUvcGxhdGZvcm0vcXQvQ2xpcGJvYXJkUXQuaApAQCAtNTMsNyArNTMsOSBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgY2xlYXJEYXRhKGNvbnN0IFN0cmluZyYgdHlw
ZSk7CiAgICAgICAgIHZvaWQgY2xlYXJBbGxEYXRhKCk7CiAgICAgICAgIFN0cmluZyBnZXREYXRh
KGNvbnN0IFN0cmluZyYgdHlwZSwgYm9vbCYgc3VjY2VzcykgY29uc3Q7CisgICAgICAgIFBhc3NS
ZWZQdHI8QmxvYj4gd2Via2l0R2V0RGF0YUJsb2IoY29uc3QgU3RyaW5nJiB0eXBlLCBib29sJiBz
dWNjZXNzKSBjb25zdDsKICAgICAgICAgYm9vbCBzZXREYXRhKGNvbnN0IFN0cmluZyYgdHlwZSwg
Y29uc3QgU3RyaW5nJiBkYXRhKTsKKyAgICAgICAgYm9vbCB3ZWJraXRTZXREYXRhQmxvYihjb25z
dCBTdHJpbmcmIHR5cGUsIFBhc3NSZWZQdHI8QmxvYj4gZGF0YSk7CiAKICAgICAgICAgLy8gZXh0
ZW5zaW9ucyBiZXlvbmQgSUUncyBBUEkKICAgICAgICAgdmlydHVhbCBIYXNoU2V0PFN0cmluZz4g
dHlwZXMoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2Fy
ZFdpbi5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRXaW4uY3BwCmluZGV4IDdh
NTQ3MzczNTJjM2U0MGM2N2ZhZDVmMjc1ZjBhMDM1MDY2NjU1N2IuLjJlZWIyZDIxYzA3NzUwZWZj
MTNmMmMwY2YwZmIzOGE5NzMzMmJhNjEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vd2lu
L0NsaXBib2FyZFdpbi5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkV2lu
LmNwcApAQCAtNTE3LDYgKzUxNywxMiBAQCBTdHJpbmcgQ2xpcGJvYXJkV2luOjpnZXREYXRhKGNv
bnN0IFN0cmluZyYgdHlwZSwgYm9vbCYgc3VjY2VzcykgY29uc3QKICAgICByZXR1cm4gIiI7CiB9
CiAKK1Bhc3NSZWZQdHI8QmxvYj4gQ2xpcGJvYXJkV2luOjp3ZWJraXRHZXREYXRhQmxvYihjb25z
dCBTdHJpbmcmIHR5cGUsIGJvb2wmIHN1Y2Nlc3MpIGNvbnN0Cit7CisgICAgc3VjY2VzcyA9IGZh
bHNlOworICAgIHJldHVybiAwOworfQorCiBib29sIENsaXBib2FyZFdpbjo6c2V0RGF0YShjb25z
dCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgZGF0YSkKIHsKICAgICAvLyBGSVhNRTogTmVl
ZCB0byBiZSBhYmxlIHRvIHdyaXRlIHRvIHRoZSBzeXN0ZW0gY2xpcGJvYXJkIDxyZGFyOi8vcHJv
YmxlbS81MDE1OTQxPgpAQCAtNTQ2LDYgKzU1MiwxMSBAQCBib29sIENsaXBib2FyZFdpbjo6c2V0
RGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgZGF0YSkKICAgICByZXR1cm4g
ZmFsc2U7CiB9CiAKK2Jvb2wgQ2xpcGJvYXJkV2luOjp3ZWJraXRTZXREYXRhQmxvYihjb25zdCBT
dHJpbmcmLCBQYXNzUmVmUHRyPEJsb2I+KQoreworICAgIHJldHVybiBmYWxzZTsKK30KKwogc3Rh
dGljIHZvaWQgYWRkTWltZVR5cGVzRm9yRm9ybWF0KEhhc2hTZXQ8U3RyaW5nPiYgcmVzdWx0cywg
Y29uc3QgRk9STUFURVRDJiBmb3JtYXQpCiB7CiAgICAgLy8gVVJMIGFuZCBUZXh0IGFyZSBwcm92
aWRlZCBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIElFJ3MgbW9kZWwKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFdpbi5oIGIvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xp
cGJvYXJkV2luLmgKaW5kZXggY2U2NGI4NTE4NDgzNzNkMWE4NGIzZWFlMTIxYjA3ODI1MWNkMTBm
ZS4uMzljZmJhZjg5YWM4YzUwN2Y0YzgxMmUwMTY4YjZkNjNlOWNhNjRhMiAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkV2luLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vQ2xpcGJvYXJkV2luLmgKQEAgLTU1LDcgKzU1LDkgQEAgcHVibGljOgogICAgIHZvaWQg
Y2xlYXJEYXRhKGNvbnN0IFN0cmluZyYgdHlwZSk7CiAgICAgdm9pZCBjbGVhckFsbERhdGEoKTsK
ICAgICBTdHJpbmcgZ2V0RGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIGJvb2wmIHN1Y2Nlc3MpIGNv
bnN0OworICAgIFBhc3NSZWZQdHI8QmxvYj4gd2Via2l0R2V0RGF0YUJsb2IoY29uc3QgU3RyaW5n
JiB0eXBlLCBib29sJiBzdWNjZXNzKSBjb25zdDsKICAgICBib29sIHNldERhdGEoY29uc3QgU3Ry
aW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGRhdGEpOworICAgIGJvb2wgd2Via2l0U2V0RGF0YUJs
b2IoY29uc3QgU3RyaW5nJiB0eXBlLCBQYXNzUmVmUHRyPEJsb2I+IGRhdGEpOwogCiAgICAgLy8g
ZXh0ZW5zaW9ucyBiZXlvbmQgSUUncyBBUEkKICAgICB2aXJ0dWFsIEhhc2hTZXQ8U3RyaW5nPiB0
eXBlcygpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS93eC9DbGlwYm9hcmRX
eC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL3d4L0NsaXBib2FyZFd4LmNwcAppbmRleCAzMjIxNmE2
NTI0MjRiZTM2NmMwYWUyYWY1OTgxODgzMGFlMTg4ZWMxLi41ZjEwNjQxNGMwMzllY2U5OTg1YmVk
MzkyY2NmMjMxODNkZjhmYWE0IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL3d4L0NsaXBi
b2FyZFd4LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL3d4L0NsaXBib2FyZFd4LmNwcApAQCAt
NjAsMTUgKzYwLDI5IEBAIHZvaWQgQ2xpcGJvYXJkV3g6OmNsZWFyQWxsRGF0YSgpCiBTdHJpbmcg
Q2xpcGJvYXJkV3g6OmdldERhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBib29sJiBzdWNjZXNzKSBj
b25zdCAKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHN1Y2Nlc3MgPSBmYWxzZTsKICAg
ICByZXR1cm4gIiI7IAogfQogCitQYXNzUmVmUHRyPEJsb2I+IENsaXBib2FyZFd4Ojp3ZWJraXRH
ZXREYXRhQmxvYihjb25zdCBTdHJpbmcmLCBib29sJiBzdWNjZXNzKSBjb25zdAoreworICAgIG5v
dEltcGxlbWVudGVkKCk7CisgICAgc3VjY2VzcyA9IGZhbHNlOworICAgIHJldHVybiAwOworfQor
CiBib29sIENsaXBib2FyZFd4OjpzZXREYXRhKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3Ry
aW5nJiBkYXRhKSAKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVybiBmYWxzZTsK
IH0KIAorYm9vbCBDbGlwYm9hcmRXeDo6d2Via2l0U2V0RGF0YUJsb2IoY29uc3QgU3RyaW5nJiwg
UGFzc1JlZlB0cjxCbG9iPikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBm
YWxzZTsKK30KKwogLy8gZXh0ZW5zaW9ucyBiZXlvbmQgSUUncyBBUEkKIEhhc2hTZXQ8U3RyaW5n
PiBDbGlwYm9hcmRXeDo6dHlwZXMoKSBjb25zdCAKIHsKZGlmZiAtLWdpdCBhL1dlYktpdDIvQ2hh
bmdlTG9nIGIvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNjg3MmRiMGNhZjQ1YWNiZTQzZmI5Y2E5
ZjQxZjc3YzJhOTA5NWEzZi4uYjhlZjc3Y2I2ZDFmODhiNWE0ZTgyMTRkMjljMjhiM2U2MjRjMTEx
YSAxMDA2NDQKLS0tIGEvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0Mi9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNSBAQAorMjAxMC0xMC0xMSAgRGFuaWVsIENoZW5nICA8ZGNoZW5nQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGQgd2Via2l0R2V0RGF0YUJsb2Ivd2Via2l0R2V0RGF0YUJsb2Igc3R1YnMgdG8gQ2xpcGJv
YXJkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDc0
ODIKKworICAgICAgICBUaGlzIGlzIGFuIGV4cGVyaW1lbnRhbCBjaGFuZ2UgdG8gdHJ5IHN1cHBv
cnRpbmcgc2NlbmFyaW9zIGxpa2UgaW1hZ2UKKyAgICAgICAgY29weS1hbmQtcGFzdGUgb3IgZHJh
Zy1hbmQtZHJvcCBpbiBXZWJLaXQuCisKKyAgICAgICAgKiBXZWJLaXQyLnBybzogQWRkIFdlYkNv
cmUvZmlsZWFwaSB0byBpbmNsdWRlIHBhdGhzLCBzaW5jZSBDbGlwYm9hcmQgZGVwZW5kcyBvbiBC
bG9iIG5vdy4KKwogMjAxMC0xMC0wOSAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IERhbiBCZXJuc3RlaW4uCmRpZmYgLS1naXQgYS9XZWJLaXQyL1dl
YktpdDIucHJvIGIvV2ViS2l0Mi9XZWJLaXQyLnBybwppbmRleCA2YjQwZmI4ZjViM2VhNzc5NzY2
NDdlNTdmNjg1OTNjYTIzNmIyMzYzLi4zYTQ1ZjM4OGFjMjU1NzcyNWYyYzllNmM0N2Q1ZjNjM2Q5
YjM4MDFlIDEwMDY0NAotLS0gYS9XZWJLaXQyL1dlYktpdDIucHJvCisrKyBiL1dlYktpdDIvV2Vi
S2l0Mi5wcm8KQEAgLTU1LDYgKzU1LDcgQEAgSU5DTFVERVBBVEggPSBcCiAgICAgJCRQV0QvLi4v
V2ViQ29yZS9kb20gXAogICAgICQkUFdELy4uL1dlYkNvcmUvZG9tL2RlZmF1bHQgXAogICAgICQk
UFdELy4uL1dlYkNvcmUvZWRpdGluZyBcCisgICAgJCRQV0QvLi4vV2ViQ29yZS9maWxlYXBpIFwK
ICAgICAkJFBXRC8uLi9XZWJDb3JlL2hpc3RvcnkgXAogICAgICQkUFdELy4uL1dlYkNvcmUvaHRt
bCBcCiAgICAgJCRQV0QvLi4vV2ViQ29yZS9odG1sL2NhbnZhcyBcCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>71825</attachid>
            <date>2010-10-25 17:33:59 -0700</date>
            <delta_ts>2010-10-27 15:15:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>foo.patch</filename>
            <type>text/plain</type>
            <size>26727</size>
            <attacher name="Daniel Cheng">dcheng</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MDk2NTYxZS4uMjUwMmI4MiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2NSBAQAorMjAxMC0xMC0yNSAgRGFuaWVsIENoZW5n
ICA8ZGNoZW5nQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGQgd2Via2l0R2V0RGF0YUJsb2Ivd2Via2l0R2V0RGF0YUJsb2Ig
c3R1YnMgdG8gQ2xpcGJvYXJkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NDc0ODIKKworICAgICAgICBUaGlzIGlzIGFuIGV4cGVyaW1lbnRhbCBjaGFu
Z2UgdG8gdHJ5IHN1cHBvcnRpbmcgc2NlbmFyaW9zIGxpa2UgaW1hZ2UKKyAgICAgICAgY29weS1h
bmQtcGFzdGUgb3IgZHJhZy1hbmQtZHJvcCBpbiBXZWJLaXQuIEkgbWFkZSBhIFdIQVRXRyBwb3N0
IGFib3V0CisgICAgICAgIHRoaXMgaW4gSnVuZTogaHR0cDovL2xpc3RzLndoYXR3Zy5vcmcvaHRk
aWcuY2dpL3doYXR3Zy13aGF0d2cub3JnLzIwMTAtSnVuZS8wMjY5MTAuaHRtbAorCisgICAgICAg
IFRlc3RzIHdpbGwgYmUgYWRkZWQgd2hlbiB0aGUgc3R1YnMgYXJlIGltcGxlbWVudGVkLgorCisg
ICAgICAgICogV2ViQ29yZS52Y3Byb2ovY29weUZvcndhcmRpbmdIZWFkZXJzLmNtZDogQ29weSB0
aGUgQmxvYiBoZWFkZXJzIHRvIFByaXZhdGVIZWFkZXJzLCBzaW5jZSBDbGlwYm9hcmQgZGVwZW5k
cyBvbiBpdCBub3cuCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OiBDb3B5IHRoZSBCbG9iIGhlYWRlcnMgdG8gUHJpdmF0ZUhlYWRlcnMsIHNpbmNlIENsaXBib2Fy
ZCBkZXBlbmRzIG9uIGl0IG5vdy4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0NsaXBib2FyZEN1
c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0NsaXBib2FyZDo6d2Via2l0R2V0RGF0YUJs
b2IpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOENsaXBib2FyZEN1c3RvbS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpWOENsaXBib2FyZDo6d2Via2l0R2V0RGF0YUJsb2JDYWxsYmFj
ayk6CisgICAgICAgICogZG9tL0NsaXBib2FyZC5oOgorICAgICAgICAqIGRvbS9DbGlwYm9hcmQu
aWRsOgorICAgICAgICAqIHBsYXRmb3JtL2FuZHJvaWQvQ2xpcGJvYXJkQW5kcm9pZC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRBbmRyb2lkOjp3ZWJraXRHZXREYXRhQmxvYik6Cisg
ICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRBbmRyb2lkOjp3ZWJraXRTZXREYXRhQmxvYik6Cisg
ICAgICAgICogcGxhdGZvcm0vYW5kcm9pZC9DbGlwYm9hcmRBbmRyb2lkLmg6CisgICAgICAgICog
cGxhdGZvcm0vYnJldy9DbGlwYm9hcmRCcmV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBi
b2FyZEJyZXc6OndlYmtpdEdldERhdGFCbG9iKToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2Fy
ZEJyZXc6OndlYmtpdFNldERhdGFCbG9iKToKKyAgICAgICAgKiBwbGF0Zm9ybS9icmV3L0NsaXBi
b2FyZEJyZXcuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRDaHJvbWl1bTo6d2Via2l0R2V0RGF0
YUJsb2IpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkQ2hyb21pdW06OndlYmtpdFNldERh
dGFCbG9iKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1bS5o
OgorICAgICAgICAqIHBsYXRmb3JtL2VmbC9DbGlwYm9hcmRFZmwuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q2xpcGJvYXJkRWZsOjp3ZWJraXRHZXREYXRhQmxvYik6CisgICAgICAgIChXZWJDb3Jl
OjpDbGlwYm9hcmRFZmw6OndlYmtpdFNldERhdGFCbG9iKToKKyAgICAgICAgKiBwbGF0Zm9ybS9l
ZmwvQ2xpcGJvYXJkRWZsLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL0NsaXBib2FyZEd0ay5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRHdGs6OndlYmtpdEdldERhdGFCbG9iKToK
KyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEd0azo6d2Via2l0U2V0RGF0YUJsb2IpOgorICAg
ICAgICAqIHBsYXRmb3JtL2d0ay9DbGlwYm9hcmRHdGsuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9o
YWlrdS9DbGlwYm9hcmRIYWlrdS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRIYWlr
dTo6d2Via2l0R2V0RGF0YUJsb2IpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkSGFpa3U6
OndlYmtpdFNldERhdGFCbG9iKToKKyAgICAgICAgKiBwbGF0Zm9ybS9oYWlrdS9DbGlwYm9hcmRI
YWlrdS5oOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9DbGlwYm9hcmRNYWMuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9tYWMvQ2xpcGJvYXJkTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJv
YXJkTWFjOjp3ZWJraXRHZXREYXRhQmxvYik6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRN
YWM6OndlYmtpdFNldERhdGFCbG9iKToKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9DbGlwYm9hcmRR
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRRdDo6d2Via2l0R2V0RGF0YUJsb2Ip
OgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkUXQ6OndlYmtpdFNldERhdGFCbG9iKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9xdC9DbGlwYm9hcmRRdC5oOgorICAgICAgICAqIHBsYXRmb3JtL3dp
bi9DbGlwYm9hcmRXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkV2luOjp3ZWJr
aXRHZXREYXRhQmxvYik6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRXaW46OndlYmtpdFNl
dERhdGFCbG9iKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vQ2xpcGJvYXJkV2luLmg6CisgICAg
ICAgICogcGxhdGZvcm0vd3gvQ2xpcGJvYXJkV3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xp
cGJvYXJkV3g6OmdldERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkV3g6OndlYmtp
dEdldERhdGFCbG9iKToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZFd4Ojp3ZWJraXRTZXRE
YXRhQmxvYik6CisKIDIwMTAtMTAtMTggIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2Fs
aWEuY29tPgogCiAgICAgICAgIEJ1aWxkIGZpeCBmb3IgbmV3ZXIgdmVyc2lvbnMgb2YgR1RLKyAy
LjAuIEluc3RlYWQgb2YgdXNpbmcgR0RLX0RJU1BMQVkoKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9X
ZWJDb3JlLnZjcHJvai9jb3B5Rm9yd2FyZGluZ0hlYWRlcnMuY21kIGIvV2ViQ29yZS9XZWJDb3Jl
LnZjcHJvai9jb3B5Rm9yd2FyZGluZ0hlYWRlcnMuY21kCmluZGV4IDhjNzBmN2YuLmY2MzE1YTQg
MTAwNzU1Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovY29weUZvcndhcmRpbmdIZWFkZXJz
LmNtZAorKysgYi9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL2NvcHlGb3J3YXJkaW5nSGVhZGVycy5j
bWQKQEAgLTE5LDYgKzE5LDcgQEAgeGNvcHkgL3kgL2QgIiVQcm9qZWN0RGlyJS4uXGNvbmZpZy5o
IiAiJVdlYktpdE91dHB1dERpciVcaW5jbHVkZVxXZWJDb3JlIgogeGNvcHkgL3kgL2QgIiVXZWJL
aXRPdXRwdXREaXIlXG9ialxXZWJDb3JlXERlcml2ZWRTb3VyY2VzXCouaCIgIiVXZWJLaXRPdXRw
dXREaXIlXGluY2x1ZGVcV2ViQ29yZSIKIHhjb3B5IC95IC9kICIlUHJvamVjdERpciUuLlxhY2Nl
c3NpYmlsaXR5XCouaCIgIiVXZWJLaXRPdXRwdXREaXIlXGluY2x1ZGVcV2ViQ29yZSIKIHhjb3B5
IC95IC9kICIlUHJvamVjdERpciUuLlxhY2Nlc3NpYmlsaXR5XHdpblwqLmgiICIlV2ViS2l0T3V0
cHV0RGlyJVxpbmNsdWRlXFdlYkNvcmUiCit4Y29weSAveSAvZCAiJVByb2plY3REaXIlLi5cZmls
ZWFwaVwqLmgiICIlV2ViS2l0T3V0cHV0RGlyJVxpbmNsdWRlXFdlYkNvcmUiCiB4Y29weSAveSAv
ZCAiJVByb2plY3REaXIlLi5caW5zcGVjdG9yXCouaCIgIiVXZWJLaXRPdXRwdXREaXIlXGluY2x1
ZGVcV2ViQ29yZSIKIHhjb3B5IC95IC9kICIlUHJvamVjdERpciUuLlxsb2FkZXJcKi5oIiAiJVdl
YktpdE91dHB1dERpciVcaW5jbHVkZVxXZWJDb3JlIgogeGNvcHkgL3kgL2QgIiVQcm9qZWN0RGly
JS4uXGxvYWRlclxhcHBjYWNoZVwqLmgiICIlV2ViS2l0T3V0cHV0RGlyJVxpbmNsdWRlXFdlYkNv
cmUiCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDA0Mjlh
MmYuLmEwMWRmNzUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC03NDMsNyArNzQzLDcgQEAKIAkJMkVENjA5QkMxMTQ1QjA3MTAwQzg2ODRFIC8qIERPTUZv
cm1EYXRhLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDJFRDYwOUJBMTE0NUIwNzEwMEM4Njg0RSAvKiBET01Gb3JtRGF0YS5jcHAgKi87IH07CiAJCTJF
RDYwOUJEMTE0NUIwNzEwMEM4Njg0RSAvKiBET01Gb3JtRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkVENjA5QkIxMTQ1QjA3MTAwQzg2ODRFIC8q
IERPTUZvcm1EYXRhLmggKi87IH07CiAJCTJFREVGMUYzMTIxQjBFRkMwMDcyNkRCMiAvKiBCbG9i
RGF0YS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAy
RURFRjFFRDEyMUIwRUZDMDA3MjZEQjIgLyogQmxvYkRhdGEuY3BwICovOyB9OwotCQkyRURFRjFG
NDEyMUIwRUZDMDA3MjZEQjIgLyogQmxvYkRhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFREVGMUVFMTIxQjBFRkMwMDcyNkRCMiAvKiBCbG9iRGF0
YS5oICovOyB9OworCQkyRURFRjFGNDEyMUIwRUZDMDA3MjZEQjIgLyogQmxvYkRhdGEuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFREVGMUVFMTIxQjBF
RkMwMDcyNkRCMiAvKiBCbG9iRGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTJFREVGMUY1MTIxQjBFRkMwMDcyNkRCMiAvKiBCbG9iUmVnaXN0
cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFREVG
MUVGMTIxQjBFRkMwMDcyNkRCMiAvKiBCbG9iUmVnaXN0cnkuaCAqLzsgfTsKIAkJMkVERUYxRjYx
MjFCMEVGQzAwNzI2REIyIC8qIEJsb2JSZWdpc3RyeUltcGwuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkVERUYxRjAxMjFCMEVGQzAwNzI2REIyIC8q
IEJsb2JSZWdpc3RyeUltcGwuY3BwICovOyB9OwogCQkyRURFRjFGNzEyMUIwRUZDMDA3MjZEQjIg
LyogQmxvYlJlZ2lzdHJ5SW1wbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMkVERUYxRjExMjFCMEVGQzAwNzI2REIyIC8qIEJsb2JSZWdpc3RyeUltcGwu
aCAqLzsgfTsKQEAgLTI4NzAsNyArMjg3MCw3IEBACiAJCTk3M0UzMjU3MTA4ODNCN0MwMDVCQzQ5
MyAvKiBSZXNvdXJjZUxvYWROb3RpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOTczRTMyNTUxMDg4M0I3QzAwNUJDNDkzIC8qIFJlc291cmNlTG9h
ZE5vdGlmaWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJOTc2RDZDNzcxMjJCOEEzRDAwMUZEMUY3IC8qIEFzeW5jRmlsZVdyaXRlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTc2RDZDNTgxMjJCOEEz
RDAwMUZEMUY3IC8qIEFzeW5jRmlsZVdyaXRlci5oICovOyB9OwogCQk5NzZENkM3ODEyMkI4QTNE
MDAxRkQxRjcgLyogQmxvYi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5NzZENkM1OTEyMkI4QTNEMDAxRkQxRjcgLyogQmxvYi5jcHAgKi87IH07Ci0J
CTk3NkQ2Qzc5MTIyQjhBM0QwMDFGRDFGNyAvKiBCbG9iLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NzZENkM1QTEyMkI4QTNEMDAxRkQxRjcgLyogQmxv
Yi5oICovOyB9OworCQk5NzZENkM3OTEyMkI4QTNEMDAxRkQxRjcgLyogQmxvYi5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTc2RDZDNUExMjJCOEEzRDAw
MUZEMUY3IC8qIEJsb2IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk5NzZENkM3QjEyMkI4QTNEMDAxRkQxRjcgLyogQmxvYkJ1aWxkZXIuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTc2RDZDNUMxMjJC
OEEzRDAwMUZEMUY3IC8qIEJsb2JCdWlsZGVyLmNwcCAqLzsgfTsKIAkJOTc2RDZDN0MxMjJCOEEz
RDAwMUZEMUY3IC8qIEJsb2JCdWlsZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5NzZENkM1RDEyMkI4QTNEMDAxRkQxRjcgLyogQmxvYkJ1aWxkZXIu
aCAqLzsgfTsKIAkJOTc2RDZDN0UxMjJCOEEzRDAwMUZEMUY3IC8qIEJsb2JVUkwuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTc2RDZDNUYxMjJCOEEz
RDAwMUZEMUY3IC8qIEJsb2JVUkwuY3BwICovOyB9OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0NsaXBib2FyZEN1c3RvbS5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2xp
cGJvYXJkQ3VzdG9tLmNwcAppbmRleCAxN2M2NjQwLi4yODIzZjQyIDEwMDY0NAotLS0gYS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTQ2xpcGJvYXJkQ3VzdG9tLmNwcAorKysgYi9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTQ2xpcGJvYXJkQ3VzdG9tLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUg
IkhUTUxJbWFnZUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJJ
bnRQb2ludC5oIgorI2luY2x1ZGUgIkpTQmxvYi5oIgogI2luY2x1ZGUgIkpTTm9kZS5oIgogI2lu
Y2x1ZGUgIk5vZGUuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgpAQCAtOTcsNiArOTgs
MjIgQEAgSlNWYWx1ZSBKU0NsaXBib2FyZDo6Z2V0RGF0YShFeGVjU3RhdGUqIGV4ZWMpCiAgICAg
cmV0dXJuIGpzU3RyaW5nKGV4ZWMsIHJlc3VsdCk7CiB9CiAKK0pTVmFsdWUgSlNDbGlwYm9hcmQ6
OndlYmtpdEdldERhdGFCbG9iKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICAvLyBGSVhNRTogSXQg
ZG9lcyBub3QgbWF0Y2ggdGhlIHJlc3Qgb2YgdGhlIEpTIGJpbmRpbmdzIHRvIHRocm93IG9uIGlu
dmFsaWQgbnVtYmVyIG9mIGFyZ3VtZW50cy4KKyAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgp
ICE9IDEpCisgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVN5bnRheEVycm9y
KGV4ZWMsICJ3ZWJraXRHZXREYXRhQmxvYjogSW52YWxpZCBudW1iZXIgb2YgYXJndW1lbnRzIikp
OworCisgICAgQ2xpcGJvYXJkKiBjbGlwYm9hcmQgPSBpbXBsKCk7CisKKyAgICBib29sIHN1Y2Nl
c3M7CisgICAgUmVmUHRyPEJsb2I+IHJlc3VsdCA9IGNsaXBib2FyZC0+d2Via2l0R2V0RGF0YUJs
b2IodXN0cmluZ1RvU3RyaW5nKGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpKSwgc3Vj
Y2Vzcyk7CisgICAgaWYgKCFzdWNjZXNzKQorICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsK
KworICAgIHJldHVybiB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCgpLCByZXN1bHQuZ2V0KCkpOwor
fQorCiBKU1ZhbHVlIEpTQ2xpcGJvYXJkOjpzZXREcmFnSW1hZ2UoRXhlY1N0YXRlKiBleGVjKQog
ewogICAgIENsaXBib2FyZCogY2xpcGJvYXJkID0gaW1wbCgpOwpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDbGlwYm9hcmRDdXN0b20uY3BwIGIvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhDbGlwYm9hcmRDdXN0b20uY3BwCmluZGV4IGQ4NWQ3YTAuLjBjNDA2
NGYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q2xpcGJvYXJkQ3Vz
dG9tLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOENsaXBib2FyZEN1c3Rv
bS5jcHAKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlICJFbGVtZW50LmgiCiAKICNpbmNsdWRl
ICJWOEJpbmRpbmcuaCIKKyNpbmNsdWRlICJWOEJsb2IuaCIKICNpbmNsdWRlICJWOE5vZGUuaCIK
ICNpbmNsdWRlICJWOFByb3h5LmgiCiAKQEAgLTk2LDYgKzk3LDIyIEBAIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBWOENsaXBib2FyZDo6Z2V0RGF0YUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMm
IGFyZ3MpCiAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKIH0KIAordjg6OkhhbmRsZTx2ODo6
VmFsdWU+IFY4Q2xpcGJvYXJkOjp3ZWJraXRHZXREYXRhQmxvYkNhbGxiYWNrKGNvbnN0IHY4OjpB
cmd1bWVudHMmIGFyZ3MpCit7CisgICAgSU5DX1NUQVRTKCJET00uQ2xpcGJvYXJkLndlYmtpdEdl
dERhdGFCbG9iKCkiKTsKKyAgICBDbGlwYm9hcmQqIGNsaXBib2FyZCA9IFY4Q2xpcGJvYXJkOjp0
b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKKworICAgIGlmIChhcmdzLkxlbmd0aCgpICE9IDEpCisg
ICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCJ3ZWJraXRHZXREYXRhQmxvYjogSW52YWxpZCBudW1i
ZXIgb2YgYXJndW1lbnRzIiwgVjhQcm94eTo6U3ludGF4RXJyb3IpOworCisgICAgYm9vbCBzdWNj
ZXNzOworICAgIFJlZlB0cjxCbG9iPiByZXN1bHQgPSBjbGlwYm9hcmQtPndlYmtpdEdldERhdGFC
bG9iKHRvV2ViQ29yZVN0cmluZyhhcmdzWzBdKSwgc3VjY2Vzcyk7CisgICAgaWYgKHN1Y2Nlc3Mp
CisgICAgICAgIHJldHVybiBWOEJsb2I6OndyYXAocmVzdWx0LmdldCgpKTsKKworICAgIHJldHVy
biB2ODo6VW5kZWZpbmVkKCk7Cit9CisKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOENsaXBib2Fy
ZDo6c2V0RHJhZ0ltYWdlQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAg
ICBJTkNfU1RBVFMoIkRPTS5DbGlwYm9hcmQuc2V0RHJhZ0ltYWdlKCkiKTsKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvZG9tL0NsaXBib2FyZC5oIGIvV2ViQ29yZS9kb20vQ2xpcGJvYXJkLmgKaW5kZXgg
YjhlYWRmYi4uMzFkYzYyYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vQ2xpcGJvYXJkLmgKKysr
IGIvV2ViQ29yZS9kb20vQ2xpcGJvYXJkLmgKQEAgLTI0LDYgKzI0LDcgQEAKICNpZm5kZWYgQ2xp
cGJvYXJkX2gKICNkZWZpbmUgQ2xpcGJvYXJkX2gKIAorI2luY2x1ZGUgIkJsb2IuaCIKICNpbmNs
dWRlICJDYWNoZWRSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgIkNsaXBib2FyZEFjY2Vzc1Bv
bGljeS5oIgogI2luY2x1ZGUgIkRyYWdBY3Rpb25zLmgiCkBAIC02Miw2ICs2Myw5IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lkIGNsZWFyQWxsRGF0YSgpID0gMDsK
ICAgICAgICAgdmlydHVhbCBTdHJpbmcgZ2V0RGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIGJvb2wm
IHN1Y2Nlc3MpIGNvbnN0ID0gMDsKICAgICAgICAgdmlydHVhbCBib29sIHNldERhdGEoY29uc3Qg
U3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGRhdGEpID0gMDsKKworICAgICAgICB2aXJ0dWFs
IFBhc3NSZWZQdHI8QmxvYj4gd2Via2l0R2V0RGF0YUJsb2IoY29uc3QgU3RyaW5nJiB0eXBlLCBi
b29sJiBzdWNjZXNzKSBjb25zdCA9IDA7CisgICAgICAgIHZpcnR1YWwgYm9vbCB3ZWJraXRTZXRE
YXRhQmxvYihjb25zdCBTdHJpbmcmIHR5cGUsIFBhc3NSZWZQdHI8QmxvYj4pID0gMDsKICAgICAK
ICAgICAgICAgLy8gZXh0ZW5zaW9ucyBiZXlvbmQgSUUncyBBUEkKICAgICAgICAgdmlydHVhbCBI
YXNoU2V0PFN0cmluZz4gdHlwZXMoKSBjb25zdCA9IDA7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2Rv
bS9DbGlwYm9hcmQuaWRsIGIvV2ViQ29yZS9kb20vQ2xpcGJvYXJkLmlkbAppbmRleCAxMDI0YTM2
Li5kZWQzMTIyIDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9DbGlwYm9hcmQuaWRsCisrKyBiL1dl
YkNvcmUvZG9tL0NsaXBib2FyZC5pZGwKQEAgLTM4LDggKzM4LDExIEBAIG1vZHVsZSBjb3JlIHsK
ICAgICAgICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24pOwogICAgICAgICBbQ3VzdG9tXSB2b2lk
IGdldERhdGEoaW4gRE9NU3RyaW5nIHR5cGUpCiAgICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0
aW9uKTsKKyAgICAgICAgW0N1c3RvbV0gdm9pZCB3ZWJraXRHZXREYXRhQmxvYihpbiBET01TdHJp
bmcgdHlwZSkKKyAgICAgICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24pOwogICAgICAgICAvLyBG
SVhNRTogUmVxdWlyZXNBbGxBcmd1bWVudHMgaXMgcHJvYmFibHkgYm9ndXMgaGVyZS4KICAgICAg
ICAgW1JlcXVpcmVzQWxsQXJndW1lbnRzXSBib29sZWFuIHNldERhdGEoaW4gRE9NU3RyaW5nIHR5
cGUsIGluIERPTVN0cmluZyBkYXRhKTsKKyAgICAgICAgW1JlcXVpcmVzQWxsQXJndW1lbnRzXSBi
b29sZWFuIHdlYmtpdFNldERhdGFCbG9iKGluIERPTVN0cmluZyB0eXBlLCBpbiBCbG9iIGRhdGEp
OwogICAgICAgICBbQ3VzdG9tXSB2b2lkIHNldERyYWdJbWFnZShpbiBIVE1MSW1hZ2VFbGVtZW50
IGltYWdlLCBpbiBsb25nIHgsIGluIGxvbmcgeSkKICAgICAgICAgICAgIHJhaXNlcyhET01FeGNl
cHRpb24pOwogICAgIH07CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2FuZHJvaWQvQ2xp
cGJvYXJkQW5kcm9pZC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2FuZHJvaWQvQ2xpcGJvYXJkQW5k
cm9pZC5jcHAKaW5kZXggYTkxZmQyMS4uMGVlZDIyNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0
Zm9ybS9hbmRyb2lkL0NsaXBib2FyZEFuZHJvaWQuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0v
YW5kcm9pZC9DbGlwYm9hcmRBbmRyb2lkLmNwcApAQCAtNjUsMTIgKzY1LDI0IEBAIFN0cmluZyBD
bGlwYm9hcmRBbmRyb2lkOjpnZXREYXRhKGNvbnN0IFN0cmluZyYsIGJvb2wmIHN1Y2Nlc3MpIGNv
bnN0CiAgICAgcmV0dXJuICIiOwogfQogCitQYXNzUmVmUHRyPEJsb2I+IENsaXBib2FyZEFuZHJv
aWQ6OndlYmtpdEdldERhdGFCbG9iKGNvbnN0IFN0cmluZyYsIGJvb2wmIHN1Y2Nlc3MpIGNvbnN0
Cit7CisgICAgc3VjY2VzcyA9IGZhbHNlOworICAgIHJldHVybiAwOworfQorCiBib29sIENsaXBi
b2FyZEFuZHJvaWQ6OnNldERhdGEoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJikKIHsKICAg
ICBBU1NFUlQoaXNGb3JEcmFnQW5kRHJvcCgpKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK2Jv
b2wgQ2xpcGJvYXJkQW5kcm9pZDo6d2Via2l0U2V0RGF0YUJsb2IoY29uc3QgU3RyaW5nJiwgUGFz
c1JlZlB0cjxCbG9iPikKK3sKKyAgICBBU1NFUlQoaXNGb3JEcmFnQW5kRHJvcCgpKTsKKyAgICBy
ZXR1cm4gZmFsc2U7Cit9CisKIC8vIGV4dGVuc2lvbnMgYmV5b25kIElFJ3MgQVBJCiBIYXNoU2V0
PFN0cmluZz4gQ2xpcGJvYXJkQW5kcm9pZDo6dHlwZXMoKSBjb25zdAogeyAKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvcGxhdGZvcm0vYW5kcm9pZC9DbGlwYm9hcmRBbmRyb2lkLmggYi9XZWJDb3JlL3Bs
YXRmb3JtL2FuZHJvaWQvQ2xpcGJvYXJkQW5kcm9pZC5oCmluZGV4IDgwNzY1M2IuLjIxNmUwY2Yg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vYW5kcm9pZC9DbGlwYm9hcmRBbmRyb2lkLmgK
KysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9hbmRyb2lkL0NsaXBib2FyZEFuZHJvaWQuaApAQCAtNDMs
NyArNDMsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVhckRhdGEoY29uc3QgU3RyaW5nJik7CiAg
ICAgdm9pZCBjbGVhckFsbERhdGEoKTsKICAgICBTdHJpbmcgZ2V0RGF0YShjb25zdCBTdHJpbmcm
LCBib29sJiBzdWNjZXNzKSBjb25zdDsKKyAgICBQYXNzUmVmUHRyPEJsb2I+IHdlYmtpdEdldERh
dGFCbG9iKGNvbnN0IFN0cmluZyYsIGJvb2wmIHN1Y2Nlc3MpIGNvbnN0OwogICAgIGJvb2wgc2V0
RGF0YShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKTsKKyAgICBib29sIHdlYmtpdFNldERh
dGFCbG9iKGNvbnN0IFN0cmluZyYsIFBhc3NSZWZQdHI8QmxvYj4pOwogCiAgICAgLy8gZXh0ZW5z
aW9ucyBiZXlvbmQgSUUncyBBUEkKICAgICBIYXNoU2V0PFN0cmluZz4gdHlwZXMoKSBjb25zdDsK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vYnJldy9DbGlwYm9hcmRCcmV3LmNwcCBiL1dl
YkNvcmUvcGxhdGZvcm0vYnJldy9DbGlwYm9hcmRCcmV3LmNwcAppbmRleCBjMDUwNGJjLi43MGU1
N2RlIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2JyZXcvQ2xpcGJvYXJkQnJldy5jcHAK
KysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9icmV3L0NsaXBib2FyZEJyZXcuY3BwCkBAIC02NiwxMiAr
NjYsMjQgQEAgU3RyaW5nIENsaXBib2FyZEJyZXc6OmdldERhdGEoY29uc3QgU3RyaW5nJiwgYm9v
bCYgc3VjY2VzcykgY29uc3QKICAgICByZXR1cm4gIiI7CiB9CiAKK1Bhc3NSZWZQdHI8QmxvYj4g
Q2xpcGJvYXJkQnJldzo6d2Via2l0R2V0RGF0YUJsb2IoY29uc3QgU3RyaW5nJiwgYm9vbCYgc3Vj
Y2VzcykgY29uc3QKK3sKKyAgICBzdWNjZXNzID0gZmFsc2U7CisgICAgcmV0dXJuIDA7Cit9CisK
IGJvb2wgQ2xpcGJvYXJkQnJldzo6c2V0RGF0YShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcm
KQogewogICAgIEFTU0VSVChpc0ZvckRyYWdBbmREcm9wKCkpOwogICAgIHJldHVybiBmYWxzZTsK
IH0KIAorYm9vbCBDbGlwYm9hcmRCcmV3Ojp3ZWJraXRTZXREYXRhQmxvYihjb25zdCBTdHJpbmcm
LCBQYXNzUmVmUHRyPEJsb2I+KQoreworICAgIEFTU0VSVChpc0ZvckRyYWdBbmREcm9wKCkpOwor
ICAgIHJldHVybiBmYWxzZTsKK30KKwogLy8gZXh0ZW5zaW9ucyBiZXlvbmQgSUUncyBBUEkKIEhh
c2hTZXQ8U3RyaW5nPiBDbGlwYm9hcmRCcmV3Ojp0eXBlcygpIGNvbnN0CiB7CmRpZmYgLS1naXQg
YS9XZWJDb3JlL3BsYXRmb3JtL2JyZXcvQ2xpcGJvYXJkQnJldy5oIGIvV2ViQ29yZS9wbGF0Zm9y
bS9icmV3L0NsaXBib2FyZEJyZXcuaAppbmRleCAxZmFmMDMxLi41NjY2ODYwIDEwMDY0NAotLS0g
YS9XZWJDb3JlL3BsYXRmb3JtL2JyZXcvQ2xpcGJvYXJkQnJldy5oCisrKyBiL1dlYkNvcmUvcGxh
dGZvcm0vYnJldy9DbGlwYm9hcmRCcmV3LmgKQEAgLTQyLDcgKzQyLDkgQEAgcHVibGljOgogICAg
IHZvaWQgY2xlYXJEYXRhKGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgY2xlYXJBbGxEYXRhKCk7
CiAgICAgU3RyaW5nIGdldERhdGEoY29uc3QgU3RyaW5nJiwgYm9vbCYgc3VjY2VzcykgY29uc3Q7
CisgICAgUGFzc1JlZlB0cjxCbG9iPiB3ZWJraXRHZXREYXRhQmxvYihjb25zdCBTdHJpbmcmLCBi
b29sJiBzdWNjZXNzKSBjb25zdDsKICAgICBib29sIHNldERhdGEoY29uc3QgU3RyaW5nJiwgY29u
c3QgU3RyaW5nJik7CisgICAgYm9vbCB3ZWJraXRTZXREYXRhQmxvYihjb25zdCBTdHJpbmcmLCBQ
YXNzUmVmUHRyPEJsb2I+KTsKIAogICAgIC8vIGV4dGVuc2lvbnMgYmV5b25kIElFJ3MgQVBJCiAg
ICAgSGFzaFNldDxTdHJpbmc+IHR5cGVzKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3Bs
YXRmb3JtL2Nocm9taXVtL0NsaXBib2FyZENocm9taXVtLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0v
Y2hyb21pdW0vQ2xpcGJvYXJkQ2hyb21pdW0uY3BwCmluZGV4IDQ2YjQzMzkuLjZiM2I1MWIgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2xpcGJvYXJkQ2hyb21pdW0uY3Bw
CisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2xpcGJvYXJkQ2hyb21pdW0uY3BwCkBA
IC0xMjIsNiArMTIyLDEyIEBAIFN0cmluZyBDbGlwYm9hcmRDaHJvbWl1bTo6Z2V0RGF0YShjb25z
dCBTdHJpbmcmIHR5cGUsIGJvb2wmIHN1Y2Nlc3MpIGNvbnN0CiAgICAgcmV0dXJuIG1fZGF0YU9i
amVjdC0+Z2V0RGF0YShub3JtYWxpemVUeXBlKHR5cGUpLCBzdWNjZXNzKTsKIH0KIAorUGFzc1Jl
ZlB0cjxCbG9iPiBDbGlwYm9hcmRDaHJvbWl1bTo6d2Via2l0R2V0RGF0YUJsb2IoY29uc3QgU3Ry
aW5nJiwgYm9vbCYgc3VjY2VzcykgY29uc3QKK3sKKyAgICBzdWNjZXNzID0gZmFsc2U7CisgICAg
cmV0dXJuIDA7Cit9CisKIGJvb2wgQ2xpcGJvYXJkQ2hyb21pdW06OnNldERhdGEoY29uc3QgU3Ry
aW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGRhdGEpCiB7CiAgICAgaWYgKHBvbGljeSgpICE9IENs
aXBib2FyZFdyaXRhYmxlKQpAQCAtMTMwLDYgKzEzNiwxMSBAQCBib29sIENsaXBib2FyZENocm9t
aXVtOjpzZXREYXRhKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBkYXRhKQogICAg
IHJldHVybiBtX2RhdGFPYmplY3QtPnNldERhdGEobm9ybWFsaXplVHlwZSh0eXBlKSwgZGF0YSk7
CiB9CiAKK2Jvb2wgQ2xpcGJvYXJkQ2hyb21pdW06OndlYmtpdFNldERhdGFCbG9iKGNvbnN0IFN0
cmluZyYsIFBhc3NSZWZQdHI8QmxvYj4pCit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCiAvLyBl
eHRlbnNpb25zIGJleW9uZCBJRSdzIEFQSQogSGFzaFNldDxTdHJpbmc+IENsaXBib2FyZENocm9t
aXVtOjp0eXBlcygpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9t
aXVtL0NsaXBib2FyZENocm9taXVtLmggYi9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0NsaXBi
b2FyZENocm9taXVtLmgKaW5kZXggMWQ2OTkyMS4uMDlkNTg0MiAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9wbGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1bS5oCisrKyBiL1dlYkNvcmUvcGxh
dGZvcm0vY2hyb21pdW0vQ2xpcGJvYXJkQ2hyb21pdW0uaApAQCAtNjAsNyArNjAsOSBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBjbGVhckRhdGEoY29uc3QgU3Ry
aW5nJiB0eXBlKTsKICAgICAgICAgdm9pZCBjbGVhckFsbERhdGEoKTsKICAgICAgICAgU3RyaW5n
IGdldERhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBib29sJiBzdWNjZXNzKSBjb25zdDsKKyAgICAg
ICAgUGFzc1JlZlB0cjxCbG9iPiB3ZWJraXRHZXREYXRhQmxvYihjb25zdCBTdHJpbmcmIHR5cGUs
IGJvb2wmIHN1Y2Nlc3MpIGNvbnN0OwogICAgICAgICBib29sIHNldERhdGEoY29uc3QgU3RyaW5n
JiB0eXBlLCBjb25zdCBTdHJpbmcmIGRhdGEpOworICAgICAgICBib29sIHdlYmtpdFNldERhdGFC
bG9iKGNvbnN0IFN0cmluZyYgdHlwZSwgUGFzc1JlZlB0cjxCbG9iPiBkYXRhKTsKIAogICAgICAg
ICAvLyBleHRlbnNpb25zIGJleW9uZCBJRSdzIEFQSQogICAgICAgICB2aXJ0dWFsIEhhc2hTZXQ8
U3RyaW5nPiB0eXBlcygpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9lZmwv
Q2xpcGJvYXJkRWZsLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZWZsL0NsaXBib2FyZEVmbC5jcHAK
aW5kZXggYTdjMmE1NC4uNGQwMDFhMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9lZmwv
Q2xpcGJvYXJkRWZsLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2VmbC9DbGlwYm9hcmRFZmwu
Y3BwCkBAIC03MCwxMiArNzAsMjUgQEAgU3RyaW5nIENsaXBib2FyZEVmbDo6Z2V0RGF0YShjb25z
dCBTdHJpbmcmLCBib29sICZzdWNjZXNzKSBjb25zdAogICAgIHJldHVybiBTdHJpbmcoKTsKIH0K
IAorUGFzc1JlZlB0cjxCbG9iPiBDbGlwYm9hcmRFZmw6OndlYmtpdEdldERhdGFCbG9iKGNvbnN0
IFN0cmluZyYsIGJvb2wmIHN1Y2Nlc3MpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsK
KyAgICBzdWNjZXNzID0gZmFsc2U7CisgICAgcmV0dXJuIDA7Cit9CisKIGJvb2wgQ2xpcGJvYXJk
RWZsOjpzZXREYXRhKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpCiB7CiAgICAgbm90SW1w
bGVtZW50ZWQoKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK2Jvb2wgQ2xpcGJvYXJkRWZsOjp3
ZWJraXRTZXREYXRhQmxvYihjb25zdCBTdHJpbmcmLCBQYXNzUmVmUHRyPEJsb2I+KQoreworICAg
IG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCiBIYXNoU2V0PFN0cmlu
Zz4gQ2xpcGJvYXJkRWZsOjp0eXBlcygpIGNvbnN0CiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZWZsL0NsaXBib2FyZEVmbC5oIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9lZmwvQ2xpcGJvYXJkRWZsLmgKaW5kZXggMDZmNGU1OC4uYTI0YzVlYSAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvQ2xpcGJvYXJkRWZsLmgKKysrIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9lZmwvQ2xpcGJvYXJkRWZsLmgKQEAgLTM3LDcgKzM3LDkgQEAgcHVibGljOgog
ICAgIHZvaWQgY2xlYXJEYXRhKGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgY2xlYXJBbGxEYXRh
KCk7CiAgICAgU3RyaW5nIGdldERhdGEoY29uc3QgU3RyaW5nJiwgYm9vbCYpIGNvbnN0OworICAg
IFBhc3NSZWZQdHI8QmxvYj4gd2Via2l0R2V0RGF0YUJsb2IoY29uc3QgU3RyaW5nJiwgYm9vbCYp
IGNvbnN0OwogICAgIGJvb2wgc2V0RGF0YShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKTsK
KyAgICBib29sIHdlYmtpdFNldERhdGFCbG9iKGNvbnN0IFN0cmluZyYsIFBhc3NSZWZQdHI8Qmxv
Yj4pOwogCiAgICAgSGFzaFNldDxTdHJpbmc+IHR5cGVzKCkgY29uc3Q7CiAgICAgdmlydHVhbCBQ
YXNzUmVmUHRyPEZpbGVMaXN0PiBmaWxlcygpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9w
bGF0Zm9ybS9ndGsvQ2xpcGJvYXJkR3RrLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0NsaXBi
b2FyZEd0ay5jcHAKaW5kZXggNDliY2I3ZC4uYmJkNTlhMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9w
bGF0Zm9ybS9ndGsvQ2xpcGJvYXJkR3RrLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2d0ay9D
bGlwYm9hcmRHdGsuY3BwCkBAIC0xNjUsNiArMTY1LDEyIEBAIFN0cmluZyBDbGlwYm9hcmRHdGs6
OmdldERhdGEoY29uc3QgU3RyaW5nJiB0eXBlU3RyaW5nLCBib29sJiBzdWNjZXNzKSBjb25zdAog
ICAgIHJldHVybiBTdHJpbmcoKTsKIH0KIAorUGFzc1JlZlB0cjxCbG9iPiBDbGlwYm9hcmRHdGs6
OndlYmtpdEdldERhdGFCbG9iKGNvbnN0IFN0cmluZyYsIGJvb2wmIHN1Y2Nlc3MpIGNvbnN0Cit7
CisgICAgc3VjY2VzcyA9IGZhbHNlOworICAgIHJldHVybiAwOworfQorCiBib29sIENsaXBib2Fy
ZEd0azo6c2V0RGF0YShjb25zdCBTdHJpbmcmIHR5cGVTdHJpbmcsIGNvbnN0IFN0cmluZyYgZGF0
YSkKIHsKICAgICBpZiAocG9saWN5KCkgIT0gQ2xpcGJvYXJkV3JpdGFibGUpCkBAIC0xODksNiAr
MTk1LDExIEBAIGJvb2wgQ2xpcGJvYXJkR3RrOjpzZXREYXRhKGNvbnN0IFN0cmluZyYgdHlwZVN0
cmluZywgY29uc3QgU3RyaW5nJiBkYXRhKQogICAgIHJldHVybiBzdWNjZXNzOwogfQogCitib29s
IENsaXBib2FyZEd0azo6d2Via2l0U2V0RGF0YUJsb2IoY29uc3QgU3RyaW5nJiwgUGFzc1JlZlB0
cjxCbG9iPikKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIEhhc2hTZXQ8U3RyaW5nPiBDbGlw
Ym9hcmRHdGs6OnR5cGVzKCkgY29uc3QKIHsKICAgICBpZiAocG9saWN5KCkgIT0gQ2xpcGJvYXJk
UmVhZGFibGUgJiYgcG9saWN5KCkgIT0gQ2xpcGJvYXJkVHlwZXNSZWFkYWJsZSkKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0NsaXBib2FyZEd0ay5oIGIvV2ViQ29yZS9wbGF0Zm9y
bS9ndGsvQ2xpcGJvYXJkR3RrLmgKaW5kZXggZTE0YTU4My4uOGMwZWFiNyAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvQ2xpcGJvYXJkR3RrLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9y
bS9ndGsvQ2xpcGJvYXJkR3RrLmgKQEAgLTU0LDcgKzU0LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICB2b2lkIGNsZWFyRGF0YShjb25zdCBTdHJpbmcmKTsKICAgICAgICAgdm9pZCBj
bGVhckFsbERhdGEoKTsKICAgICAgICAgU3RyaW5nIGdldERhdGEoY29uc3QgU3RyaW5nJiwgYm9v
bCYpIGNvbnN0OworICAgICAgICBQYXNzUmVmUHRyPEJsb2I+IHdlYmtpdEdldERhdGFCbG9iKGNv
bnN0IFN0cmluZyYsIGJvb2wmKSBjb25zdDsKICAgICAgICAgYm9vbCBzZXREYXRhKGNvbnN0IFN0
cmluZyYsIGNvbnN0IFN0cmluZyYpOworICAgICAgICBib29sIHdlYmtpdFNldERhdGFCbG9iKGNv
bnN0IFN0cmluZyYsIFBhc3NSZWZQdHI8QmxvYj4pOwogCiAgICAgICAgIHZpcnR1YWwgSGFzaFNl
dDxTdHJpbmc+IHR5cGVzKCkgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGaWxl
TGlzdD4gZmlsZXMoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vaGFpa3Uv
Q2xpcGJvYXJkSGFpa3UuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9oYWlrdS9DbGlwYm9hcmRIYWlr
dS5jcHAKaW5kZXggNDk1ZjFkMi4uZjMzZmZkZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9y
bS9oYWlrdS9DbGlwYm9hcmRIYWlrdS5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9oYWlrdS9D
bGlwYm9hcmRIYWlrdS5jcHAKQEAgLTkzLDYgKzkzLDEyIEBAIFN0cmluZyBDbGlwYm9hcmRIYWlr
dTo6Z2V0RGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIGJvb2wmIHN1Y2Nlc3MpIGNvbnN0CiAgICAg
cmV0dXJuIHJlc3VsdDsKIH0KIAorUGFzc1JlZlB0cjxCbG9iPiBDbGlwYm9hcmRIYWlrdTo6d2Vi
a2l0R2V0RGF0YUJsb2IoY29uc3QgU3RyaW5nJiwgYm9vbCYgc3VjY2VzcykgY29uc3QKK3sKKyAg
ICBzdWNjZXNzID0gZmFsc2U7CisgICAgcmV0dXJuIDA7Cit9CisKIGJvb2wgQ2xpcGJvYXJkSGFp
a3U6OnNldERhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGRhdGEpCiB7CiAg
ICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKQEAgLTExNCw2ICsxMjAsMTEgQEAgYm9vbCBDbGlwYm9h
cmRIYWlrdTo6c2V0RGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgZGF0YSkK
ICAgICByZXR1cm4gcmVzdWx0OwogfQogCitib29sIENsaXBib2FyZEhhaWt1Ojp3ZWJraXRTZXRE
YXRhQmxvYihjb25zdCBTdHJpbmcmLCBQYXNzUmVmUHRyPEJsb2I+KQoreworICAgIHJldHVybiBm
YWxzZTsKK30KKwogLy8gRXh0ZW5zaW9ucyBiZXlvbmQgSUUncyBBUEkuCiBIYXNoU2V0PFN0cmlu
Zz4gQ2xpcGJvYXJkSGFpa3U6OnR5cGVzKCkgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
cGxhdGZvcm0vaGFpa3UvQ2xpcGJvYXJkSGFpa3UuaCBiL1dlYkNvcmUvcGxhdGZvcm0vaGFpa3Uv
Q2xpcGJvYXJkSGFpa3UuaAppbmRleCA4OWRjN2JkLi44NDgxMGFlIDEwMDY0NAotLS0gYS9XZWJD
b3JlL3BsYXRmb3JtL2hhaWt1L0NsaXBib2FyZEhhaWt1LmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9y
bS9oYWlrdS9DbGlwYm9hcmRIYWlrdS5oCkBAIC00NSw3ICs0NSw5IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgdm9pZCBjbGVhckRhdGEoY29uc3QgU3RyaW5nJiB0eXBlKTsKICAgICAg
ICAgdm9pZCBjbGVhckFsbERhdGEoKTsKICAgICAgICAgU3RyaW5nIGdldERhdGEoY29uc3QgU3Ry
aW5nJiB0eXBlLCBib29sJiBzdWNjZXNzKSBjb25zdDsKKyAgICAgICAgUGFzc1JlZlB0cjxCbG9i
PiB3ZWJraXRHZXREYXRhQmxvYihjb25zdCBTdHJpbmcmIHR5cGUsIGJvb2wmIHN1Y2Nlc3MpIGNv
bnN0OwogICAgICAgICBib29sIHNldERhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJp
bmcmIGRhdGEpOworICAgICAgICBib29sIHdlYmtpdFNldERhdGFCbG9iKGNvbnN0IFN0cmluZyYg
dHlwZSwgUGFzc1JlZlB0cjxCbG9iPik7CiAKICAgICAgICAgLy8gRXh0ZW5zaW9ucyBiZXlvbmQg
SUUncyBBUEkuCiAgICAgICAgIEhhc2hTZXQ8U3RyaW5nPiB0eXBlcygpIGNvbnN0OwpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvQ2xpcGJvYXJkTWFjLmggYi9XZWJDb3JlL3BsYXRm
b3JtL21hYy9DbGlwYm9hcmRNYWMuaAppbmRleCA3MTg3ZWNmLi5jZTZiNWMzIDEwMDY0NAotLS0g
YS9XZWJDb3JlL3BsYXRmb3JtL21hYy9DbGlwYm9hcmRNYWMuaAorKysgYi9XZWJDb3JlL3BsYXRm
b3JtL21hYy9DbGlwYm9hcmRNYWMuaApAQCAtNTUsNyArNTUsOSBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBjbGVhckRhdGEoY29uc3QgU3RyaW5nJiB0eXBlKTsKICAgICB2b2lkIGNsZWFyQWxsRGF0YSgp
OwogICAgIFN0cmluZyBnZXREYXRhKGNvbnN0IFN0cmluZyYgdHlwZSwgYm9vbCYgc3VjY2Vzcykg
Y29uc3Q7CisgICAgUGFzc1JlZlB0cjxCbG9iPiB3ZWJraXRHZXREYXRhQmxvYihjb25zdCBTdHJp
bmcmIHR5cGUsIGJvb2wmIHN1Y2Nlc3MpIGNvbnN0OwogICAgIGJvb2wgc2V0RGF0YShjb25zdCBT
dHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgZGF0YSk7CisgICAgYm9vbCB3ZWJraXRTZXREYXRh
QmxvYihjb25zdCBTdHJpbmcmIHR5cGUsIFBhc3NSZWZQdHI8QmxvYj4gZGF0YSk7CiAgICAgCiAg
ICAgdmlydHVhbCBib29sIGhhc0RhdGEoKTsKICAgICAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL0NsaXBib2FyZE1hYy5tbSBiL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0NsaXBib2Fy
ZE1hYy5tbQppbmRleCAxMGQxOTZhLi5kZWU4ZGIyIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9DbGlwYm9hcmRNYWMubW0KKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvQ2xpcGJv
YXJkTWFjLm1tCkBAIC0yNDAsNiArMjQwLDEyIEBAIFN0cmluZyBDbGlwYm9hcmRNYWM6OmdldERh
dGEoY29uc3QgU3RyaW5nJiB0eXBlLCBib29sJiBzdWNjZXNzKSBjb25zdAogICAgIHJldHVybiBT
dHJpbmcoKTsKIH0KIAorUGFzc1JlZlB0cjxCbG9iPiBDbGlwYm9hcmRNYWM6OndlYmtpdEdldERh
dGFCbG9iKGNvbnN0IFN0cmluZyYsIGJvb2wmIHN1Y2Nlc3MpIGNvbnN0Cit7CisgICAgc3VjY2Vz
cyA9IGZhbHNlOworICAgIHJldHVybiAwOworfQorCiBib29sIENsaXBib2FyZE1hYzo6c2V0RGF0
YShjb25zdCBTdHJpbmcgJnR5cGUsIGNvbnN0IFN0cmluZyAmZGF0YSkKIHsKICAgICBpZiAocG9s
aWN5KCkgIT0gQ2xpcGJvYXJkV3JpdGFibGUpCkBAIC0zMDAsNiArMzA2LDExIEBAIEhhc2hTZXQ8
U3RyaW5nPiBDbGlwYm9hcmRNYWM6OnR5cGVzKCkgY29uc3QKICAgICByZXR1cm4gcmVzdWx0Owog
fQogCitib29sIENsaXBib2FyZE1hYzo6d2Via2l0U2V0RGF0YUJsb2IoY29uc3QgU3RyaW5nJiwg
UGFzc1JlZlB0cjxCbG9iPikKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIC8vIEZJWE1FOiBX
ZSBjb3VsZCBjYWNoZSB0aGUgY29tcHV0ZWQgZmlsZUxpc3QgaWYgbmVjZXNzYXJ5CiAvLyBDdXJy
ZW50bHkgZWFjaCBhY2Nlc3MgZ2V0cyBhIG5ldyBjb3B5LCBzZXREYXRhKCkgbW9kaWZpY2F0aW9u
cyB0byB0aGUKIC8vIGNsaXBib2FyZCBhcmUgbm90IHJlZmxlY3RlZCBpbiBhbnkgRmlsZUxpc3Qg
b2JqZWN0cyB0aGUgcGFnZSBoYXMgYWNjZXNzZWQgYW5kIHN0b3JlZApkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9wbGF0Zm9ybS9xdC9DbGlwYm9hcmRRdC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL3F0L0Ns
aXBib2FyZFF0LmNwcAppbmRleCAyMGNmNjJiLi5kZmUxNzg2IDEwMDY0NAotLS0gYS9XZWJDb3Jl
L3BsYXRmb3JtL3F0L0NsaXBib2FyZFF0LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL3F0L0Ns
aXBib2FyZFF0LmNwcApAQCAtMTY0LDYgKzE2NCwxMiBAQCBTdHJpbmcgQ2xpcGJvYXJkUXQ6Omdl
dERhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBib29sJiBzdWNjZXNzKSBjb25zdAogICAgIHJldHVy
biBkYXRhOwogfQogCitQYXNzUmVmUHRyPEJsb2I+IENsaXBib2FyZFF0Ojp3ZWJraXRHZXREYXRh
QmxvYihjb25zdCBTdHJpbmcmLCBib29sJiBzdWNjZXNzKSBjb25zdAoreworICAgIHN1Y2Nlc3Mg
PSBmYWxzZTsKKyAgICByZXR1cm4gMDsKK30KKwogYm9vbCBDbGlwYm9hcmRRdDo6c2V0RGF0YShj
b25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgZGF0YSkKIHsKICAgICBpZiAocG9saWN5
KCkgIT0gQ2xpcGJvYXJkV3JpdGFibGUpCkBAIC0xODgsNiArMTk0LDExIEBAIGJvb2wgQ2xpcGJv
YXJkUXQ6OnNldERhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGRhdGEpCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKK2Jvb2wgQ2xpcGJvYXJkUXQ6OndlYmtpdFNldERhdGFCbG9i
KGNvbnN0IFN0cmluZyYsIFBhc3NSZWZQdHI8QmxvYj4pCit7CisgICAgcmV0dXJuIGZhbHNlOwor
fQorCiAvLyBleHRlbnNpb25zIGJleW9uZCBJRSdzIEFQSQogSGFzaFNldDxTdHJpbmc+IENsaXBi
b2FyZFF0Ojp0eXBlcygpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL3F0
L0NsaXBib2FyZFF0LmggYi9XZWJDb3JlL3BsYXRmb3JtL3F0L0NsaXBib2FyZFF0LmgKaW5kZXgg
NWFjYTFhNi4uY2I4ODllNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9xdC9DbGlwYm9h
cmRRdC5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vcXQvQ2xpcGJvYXJkUXQuaApAQCAtNTMsNyAr
NTMsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgY2xlYXJEYXRhKGNvbnN0
IFN0cmluZyYgdHlwZSk7CiAgICAgICAgIHZvaWQgY2xlYXJBbGxEYXRhKCk7CiAgICAgICAgIFN0
cmluZyBnZXREYXRhKGNvbnN0IFN0cmluZyYgdHlwZSwgYm9vbCYgc3VjY2VzcykgY29uc3Q7Cisg
ICAgICAgIFBhc3NSZWZQdHI8QmxvYj4gd2Via2l0R2V0RGF0YUJsb2IoY29uc3QgU3RyaW5nJiB0
eXBlLCBib29sJiBzdWNjZXNzKSBjb25zdDsKICAgICAgICAgYm9vbCBzZXREYXRhKGNvbnN0IFN0
cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBkYXRhKTsKKyAgICAgICAgYm9vbCB3ZWJraXRTZXRE
YXRhQmxvYihjb25zdCBTdHJpbmcmIHR5cGUsIFBhc3NSZWZQdHI8QmxvYj4gZGF0YSk7CiAKICAg
ICAgICAgLy8gZXh0ZW5zaW9ucyBiZXlvbmQgSUUncyBBUEkKICAgICAgICAgdmlydHVhbCBIYXNo
U2V0PFN0cmluZz4gdHlwZXMoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0v
d2luL0NsaXBib2FyZFdpbi5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRXaW4u
Y3BwCmluZGV4IDdhNTQ3MzcuLjJlZWIyZDIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0v
d2luL0NsaXBib2FyZFdpbi5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJk
V2luLmNwcApAQCAtNTE3LDYgKzUxNywxMiBAQCBTdHJpbmcgQ2xpcGJvYXJkV2luOjpnZXREYXRh
KGNvbnN0IFN0cmluZyYgdHlwZSwgYm9vbCYgc3VjY2VzcykgY29uc3QKICAgICByZXR1cm4gIiI7
CiB9CiAKK1Bhc3NSZWZQdHI8QmxvYj4gQ2xpcGJvYXJkV2luOjp3ZWJraXRHZXREYXRhQmxvYihj
b25zdCBTdHJpbmcmIHR5cGUsIGJvb2wmIHN1Y2Nlc3MpIGNvbnN0Cit7CisgICAgc3VjY2VzcyA9
IGZhbHNlOworICAgIHJldHVybiAwOworfQorCiBib29sIENsaXBib2FyZFdpbjo6c2V0RGF0YShj
b25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgZGF0YSkKIHsKICAgICAvLyBGSVhNRTog
TmVlZCB0byBiZSBhYmxlIHRvIHdyaXRlIHRvIHRoZSBzeXN0ZW0gY2xpcGJvYXJkIDxyZGFyOi8v
cHJvYmxlbS81MDE1OTQxPgpAQCAtNTQ2LDYgKzU1MiwxMSBAQCBib29sIENsaXBib2FyZFdpbjo6
c2V0RGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgZGF0YSkKICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKK2Jvb2wgQ2xpcGJvYXJkV2luOjp3ZWJraXRTZXREYXRhQmxvYihjb25z
dCBTdHJpbmcmLCBQYXNzUmVmUHRyPEJsb2I+KQoreworICAgIHJldHVybiBmYWxzZTsKK30KKwog
c3RhdGljIHZvaWQgYWRkTWltZVR5cGVzRm9yRm9ybWF0KEhhc2hTZXQ8U3RyaW5nPiYgcmVzdWx0
cywgY29uc3QgRk9STUFURVRDJiBmb3JtYXQpCiB7CiAgICAgLy8gVVJMIGFuZCBUZXh0IGFyZSBw
cm92aWRlZCBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIElFJ3MgbW9kZWwKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFdpbi5oIGIvV2ViQ29yZS9wbGF0Zm9ybS93aW4v
Q2xpcGJvYXJkV2luLmgKaW5kZXggY2U2NGI4NS4uMzljZmJhZiAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkV2luLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS93aW4v
Q2xpcGJvYXJkV2luLmgKQEAgLTU1LDcgKzU1LDkgQEAgcHVibGljOgogICAgIHZvaWQgY2xlYXJE
YXRhKGNvbnN0IFN0cmluZyYgdHlwZSk7CiAgICAgdm9pZCBjbGVhckFsbERhdGEoKTsKICAgICBT
dHJpbmcgZ2V0RGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIGJvb2wmIHN1Y2Nlc3MpIGNvbnN0Owor
ICAgIFBhc3NSZWZQdHI8QmxvYj4gd2Via2l0R2V0RGF0YUJsb2IoY29uc3QgU3RyaW5nJiB0eXBl
LCBib29sJiBzdWNjZXNzKSBjb25zdDsKICAgICBib29sIHNldERhdGEoY29uc3QgU3RyaW5nJiB0
eXBlLCBjb25zdCBTdHJpbmcmIGRhdGEpOworICAgIGJvb2wgd2Via2l0U2V0RGF0YUJsb2IoY29u
c3QgU3RyaW5nJiB0eXBlLCBQYXNzUmVmUHRyPEJsb2I+IGRhdGEpOwogCiAgICAgLy8gZXh0ZW5z
aW9ucyBiZXlvbmQgSUUncyBBUEkKICAgICB2aXJ0dWFsIEhhc2hTZXQ8U3RyaW5nPiB0eXBlcygp
IGNvbnN0OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS93eC9DbGlwYm9hcmRXeC5jcHAg
Yi9XZWJDb3JlL3BsYXRmb3JtL3d4L0NsaXBib2FyZFd4LmNwcAppbmRleCAzMjIxNmE2Li41ZjEw
NjQxIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL3d4L0NsaXBib2FyZFd4LmNwcAorKysg
Yi9XZWJDb3JlL3BsYXRmb3JtL3d4L0NsaXBib2FyZFd4LmNwcApAQCAtNjAsMTUgKzYwLDI5IEBA
IHZvaWQgQ2xpcGJvYXJkV3g6OmNsZWFyQWxsRGF0YSgpCiBTdHJpbmcgQ2xpcGJvYXJkV3g6Omdl
dERhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBib29sJiBzdWNjZXNzKSBjb25zdCAKIHsKICAgICBu
b3RJbXBsZW1lbnRlZCgpOworICAgIHN1Y2Nlc3MgPSBmYWxzZTsKICAgICByZXR1cm4gIiI7IAog
fQogCitQYXNzUmVmUHRyPEJsb2I+IENsaXBib2FyZFd4Ojp3ZWJraXRHZXREYXRhQmxvYihjb25z
dCBTdHJpbmcmLCBib29sJiBzdWNjZXNzKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7
CisgICAgc3VjY2VzcyA9IGZhbHNlOworICAgIHJldHVybiAwOworfQorCiBib29sIENsaXBib2Fy
ZFd4OjpzZXREYXRhKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBkYXRhKSAKIHsK
ICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIAorYm9vbCBDbGlw
Ym9hcmRXeDo6d2Via2l0U2V0RGF0YUJsb2IoY29uc3QgU3RyaW5nJiwgUGFzc1JlZlB0cjxCbG9i
PikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKwogLy8g
ZXh0ZW5zaW9ucyBiZXlvbmQgSUUncyBBUEkKIEhhc2hTZXQ8U3RyaW5nPiBDbGlwYm9hcmRXeDo6
dHlwZXMoKSBjb25zdCAKIHsKZGlmZiAtLWdpdCBhL1dlYktpdDIvQ2hhbmdlTG9nIGIvV2ViS2l0
Mi9DaGFuZ2VMb2cKaW5kZXggNzEzNjNhYi4uMWZjOWI1OSAxMDA2NDQKLS0tIGEvV2ViS2l0Mi9D
aGFuZ2VMb2cKKysrIGIvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMC0x
MC0yNSAgRGFuaWVsIENoZW5nICA8ZGNoZW5nQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgd2Via2l0R2V0RGF0YUJsb2Iv
d2Via2l0R2V0RGF0YUJsb2Igc3R1YnMgdG8gQ2xpcGJvYXJkLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDc0ODIKKworICAgICAgICBUaGlzIGlzIGFu
IGV4cGVyaW1lbnRhbCBjaGFuZ2UgdG8gdHJ5IHN1cHBvcnRpbmcgc2NlbmFyaW9zIGxpa2UgaW1h
Z2UKKyAgICAgICAgY29weS1hbmQtcGFzdGUgb3IgZHJhZy1hbmQtZHJvcCBpbiBXZWJLaXQuCisK
KyAgICAgICAgKiBXZWJLaXQyLnBybzogQWRkIFdlYkNvcmUvZmlsZWFwaSB0byBpbmNsdWRlIHBh
dGhzLCBzaW5jZSBDbGlwYm9hcmQgZGVwZW5kcyBvbiBCbG9iIG5vdy4KKwogMjAxMC0xMC0xOCAg
U2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIEZpeCBRdCBidWlsZC4KZGlm
ZiAtLWdpdCBhL1dlYktpdDIvV2ViS2l0Mi5wcm8gYi9XZWJLaXQyL1dlYktpdDIucHJvCmluZGV4
IGQ3MTAzNjkuLmNmMzFlZGIgMTAwNjQ0Ci0tLSBhL1dlYktpdDIvV2ViS2l0Mi5wcm8KKysrIGIv
V2ViS2l0Mi9XZWJLaXQyLnBybwpAQCAtNTUsNiArNTUsNyBAQCBJTkNMVURFUEFUSCA9IFwKICAg
ICAkJFBXRC8uLi9XZWJDb3JlL2RvbSBcCiAgICAgJCRQV0QvLi4vV2ViQ29yZS9kb20vZGVmYXVs
dCBcCiAgICAgJCRQV0QvLi4vV2ViQ29yZS9lZGl0aW5nIFwKKyAgICAkJFBXRC8uLi9XZWJDb3Jl
L2ZpbGVhcGkgXAogICAgICQkUFdELy4uL1dlYkNvcmUvaGlzdG9yeSBcCiAgICAgJCRQV0QvLi4v
V2ViQ29yZS9odG1sIFwKICAgICAkJFBXRC8uLi9XZWJDb3JlL2h0bWwvY2FudmFzIFwK
</data>
<flag name="review"
          id="61954"
          type_id="1"
          status="-"
          setter="dimich"
    />
          </attachment>
      

    </bug>

</bugzilla>