<?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>218599</bug_id>
          
          <creation_ts>2020-11-04 20:31:00 -0800</creation_ts>
          <short_desc>Store WeakPtr&lt;Frame&gt; instead of Frame*</short_desc>
          <delta_ts>2021-03-26 23:27:21 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=218662</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=223838</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>berto</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>changseok</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>japhet</cc>
    
    <cc>joepeck</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>pdr</cc>
    
    <cc>tsavell</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1704714</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-11-04 20:31:00 -0800</bug_when>
    <thetext>Store WeakPtr&lt;Frame&gt; instead of Frame*</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1704716</commentid>
    <comment_count>1</comment_count>
      <attachid>413244</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-11-04 20:31:55 -0800</bug_when>
    <thetext>Created attachment 413244
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1704719</commentid>
    <comment_count>2</comment_count>
      <attachid>413247</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-11-04 21:03:53 -0800</bug_when>
    <thetext>Created attachment 413247
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1704720</commentid>
    <comment_count>3</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2020-11-04 21:05:03 -0800</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See https://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1704858</commentid>
    <comment_count>4</comment_count>
      <attachid>413247</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-11-05 08:11:29 -0800</bug_when>
    <thetext>Comment on attachment 413247
Patch

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

&gt; Source/WebCore/bindings/js/WindowProxy.h:53
&gt; +    WEBCORE_EXPORT AbstractFrame* frame() const;

Why not keeping it inline?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1704873</commentid>
    <comment_count>5</comment_count>
      <attachid>413247</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-11-05 08:34:23 -0800</bug_when>
    <thetext>Comment on attachment 413247
Patch

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

&gt;&gt; Source/WebCore/bindings/js/WindowProxy.h:53
&gt;&gt; +    WEBCORE_EXPORT AbstractFrame* frame() const;
&gt; 
&gt; Why not keeping it inline?

That would require including AbstractFrame.h to build successfully.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1704876</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-11-05 08:46:34 -0800</bug_when>
    <thetext>Tools/Scripts/svn-apply failed to apply attachment 413247 to trunk.
Please resolve the conflicts and upload a new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1704880</commentid>
    <comment_count>7</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-11-05 08:55:03 -0800</bug_when>
    <thetext>http://trac.webkit.org/r269435</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1704882</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-11-05 08:56:20 -0800</bug_when>
    <thetext>&lt;rdar://problem/71079886&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1704892</commentid>
    <comment_count>9</comment_count>
    <who name="Truitt Savell">tsavell</who>
    <bug_when>2020-11-05 09:15:12 -0800</bug_when>
    <thetext>It looks like the changes in https://trac.webkit.org/changeset/269435/webkit

broke Mac builds builds:
https://build.webkit.org/builders/Apple-BigSur-Release-Build/builds/2839

./loader/FrameLoader.cpp:389:12: error: no viable conversion from returned value of type &apos;WeakPtr&lt;WebCore::Frame&gt;&apos; to function return type &apos;WebCore::Frame *&apos;
./loader/FrameLoader.cpp:394:12: error: no viable conversion from returned value of type &apos;const WeakPtr&lt;WebCore::Frame&gt;&apos; to function return type &apos;const WebCore::Frame *&apos;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1704896</commentid>
    <comment_count>10</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-11-05 09:20:52 -0800</bug_when>
    <thetext>https://trac.webkit.org/changeset/269439/webkit</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413244</attachid>
            <date>2020-11-04 20:31:55 -0800</date>
            <delta_ts>2020-11-04 21:03:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218599-20201104203155.patch</filename>
            <type>text/plain</type>
            <size>44921</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5MTA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2M1N2IzZTZlMDJmMDcy
MzEwMDQzNTdmMjg2ZGVkNGI0YjgyNmQ4Zi4uZjQ0ZjdlYTM4MjI5M2I1ZmRlOTA0MWVlZDAxYTYy
NWYwN2YwZGMwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg3IEBACisyMDIwLTExLTA0ICBBbGV4
IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgU3RvcmUg
V2Vha1B0cjxGcmFtZT4gaW5zdGVhZCBvZiBGcmFtZSoKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxODU5OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIGNoYW5nZSBpbiBiZWhhdmlvciwgYnV0IHRoaXMg
cHJvYmFibHkgZml4ZXMgc29tZSB1c2UtYWZ0ZXItZnJlZSBidWdzLgorCisgICAgICAgICogYmlu
ZGluZ3MvanMvV2luZG93UHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2luZG93UHJveHk6
OldpbmRvd1Byb3h5KToKKyAgICAgICAgKFdlYkNvcmU6OldpbmRvd1Byb3h5OjpmcmFtZSBjb25z
dCk6CisgICAgICAgICogYmluZGluZ3MvanMvV2luZG93UHJveHkuaDoKKyAgICAgICAgKFdlYkNv
cmU6OldpbmRvd1Byb3h5OjpmcmFtZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogZG9tL0Rv
Y3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp3aWxsQmVSZW1vdmVkRnJv
bUZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpjYW5OYXZpZ2F0ZUludGVybmFs
KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzZXREZXNpZ25Nb2RlKToKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50OjpnZXREZXNpZ25Nb2RlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxGcmFtZU93bmVyRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRnJhbWVPd25lckVsZW1lbnQ6OnNldENvbnRl
bnRGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRnJhbWVPd25lckVsZW1lbnQ6OmRpc2Nv
bm5lY3RDb250ZW50RnJhbWUpOgorICAgICAgICAqIGh0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50
Lmg6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRnJhbWVPd25lckVsZW1lbnQ6OmNvbnRlbnRGcmFt
ZSBjb25zdCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpmcmFtZUZvcklkKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6ZnJhbWVJZCk6CisgICAgICAg
ICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuaDoKKyAgICAgICAgKiBsb2Fk
ZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6
OnN0b3BMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjp3aWxsU2Vu
ZFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmNvbW1pdExvYWQp
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmRldGFjaEZyb21GcmFtZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6cmVtb3ZlU3VicmVzb3VyY2VMb2FkZXIp
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OnN1YnJlc291cmNlTG9hZGVyRmlu
aXNoZWRMb2FkaW5nT25lUGFydCk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50V3JpdGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50V3JpdGVyOjpjcmVhdGVEb2N1bWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFdyaXRlcjo6ZGVjb2Rlcik6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudFdyaXRlcjo6c2V0RnJhbWUpOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVu
dFdyaXRlci5oOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRXcml0ZXI6OnNldEZyYW1lKTog
RGVsZXRlZC4KKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVMb2FkZXI6OmRldGFjaEZyb21BbGxPcGVuZWRGcmFtZXMpOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVMb2FkZXI6Om9wZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxv
YWRlcjo6c2V0T3BlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpoYXNPcGVu
ZWRGcmFtZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmFkZEV4dHJh
RmllbGRzVG9SZXF1ZXN0KToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuaDoKKyAgICAg
ICAgKiBsb2FkZXIvRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVOZXR3b3JraW5nQ29udGV4dDo6RnJhbWVOZXR3b3JraW5nQ29udGV4dCk6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpmcmFtZSBjb25zdCk6CisgICAgICAg
ICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OnVwZGF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRpZEZpbmlzaExvYWRpbmdFbnRyeSk6CisgICAgICAg
IChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRpZEZhaWxMb2FkaW5nRW50cnkpOgor
ICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRGYWlsTG9hZGluZ01h
bmlmZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6c3RhcnRM
b2FkaW5nRW50cnkpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
R3JvdXAuaDoKKyAgICAgICAgKiBwYWdlL0Fic3RyYWN0RnJhbWUuaDoKKyAgICAgICAgKiBwYWdl
L0ZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjpGcmFtZSk6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZTo6YWRkRGVzdHJ1Y3Rpb25PYnNlcnZlcik6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZTo6cmVtb3ZlRGVzdHJ1Y3Rpb25PYnNlcnZlcik6CisgICAgICAgICogcGFnZS9GcmFt
ZS5oOgorICAgICAgICAqIHBhZ2UvRnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lRGVzdHJ1Y3Rpb25PYnNlcnZlcjo6ZnJhbWUgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyOjpvYnNlcnZlRnJhbWUpOgor
ICAgICAgICAqIHBhZ2UvRnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyLmg6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXI6OmZyYW1lIGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKiBwYWdlL0ZyYW1lVHJlZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVRyZWU6
OkZyYW1lVHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVRyZWU6OnBhcmVudCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVRyZWU6OmFwcGVuZENoaWxkKToKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lVHJlZTo6cmVtb3ZlQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVU
cmVlOjp0cmF2ZXJzZU5leHRJblBvc3RPcmRlciBjb25zdCk6CisgICAgICAgICogcGFnZS9GcmFt
ZVRyZWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVHJlZTo6cHJldmlvdXNTaWJsaW5nIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVHJlZTo6bGFzdENoaWxkIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lVHJlZTo6RnJhbWVUcmVlKTogRGVsZXRlZC4KKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clNjcm9sbGJhcjo6UmVuZGVyU2Nyb2xsYmFyKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
U2Nyb2xsYmFyLmg6CisKIDIwMjAtMTAtMjggIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBp
Z2FsaWEuY29tPgogCiAgICAgICAgIFtHU3RyZWFtZXJdIE11bHRpLWNoYW5uZWwgKD4yKSBzdXBw
b3J0IGZvciB0aGUgQXVkaW9GaWxlUmVhZGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDkzMjMwYzhjMzM0ZTIzN2E1
NmUzMmZjZGZjM2U1NWIwNjkzZjMyOGYuLjAzYzljNDg1OTZjYjRjMWRmMGUzMTkwOWQyNDg5NWVi
NmU1MTBjNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMjAtMTEtMDQgIEFsZXggQ2hy
aXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBTdG9yZSBXZWFr
UHRyPEZyYW1lPiBpbnN0ZWFkIG9mIEZyYW1lKgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4NTk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6aW5pdFdpdGhDb3JlTWFpbkZyYW1lKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViRnJhbWU6OmNyZWF0ZVN1YmZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6
V2ViRnJhbWU6OmNvcmVGcmFtZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lOjpp
bmZvIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OmhhbmRsZXNQYWdlU2NhbGVH
ZXN0dXJlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OnJlcXVpcmVzVW5pZmll
ZFNjYWxlRmFjdG9yIGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJh
bWUuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OmNvcmVGcmFtZSBjb25zdCk6IERlbGV0
ZWQuCisKIDIwMjAtMTAtMjggIEFkcmlhbiBQZXJleiBkZSBDYXN0cm8gIDxhcGVyZXpAaWdhbGlh
LmNvbT4KIAogICAgICAgICBbR1RLNF0gQnVpbGQgYnJva2VuIHdpdGggR1RLIDMuOTkuMwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2luZG93UHJveHkuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2luZG93UHJveHkuY3BwCmluZGV4IGU5ZjkxNjc3ZGIy
Yjc5NjE0ZjAxOTBjMTU0ZjIwYzk0NWExYjhhZmIuLmM2YTIyMWIyNGViMTczYmU3ZjFiN2EwZjU0
NWQ5MjFkZjRhZDgwOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dp
bmRvd1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XaW5kb3dQcm94
eS5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgc3RhdGljIHZvaWQgY29sbGVjdEdhcmJhZ2VBZnRlcldp
bmRvd1Byb3h5RGVzdHJ1Y3Rpb24oKQogfQogCiBXaW5kb3dQcm94eTo6V2luZG93UHJveHkoQWJz
dHJhY3RGcmFtZSYgZnJhbWUpCi0gICAgOiBtX2ZyYW1lKCZmcmFtZSkKKyAgICA6IG1fZnJhbWUo
bWFrZVdlYWtQdHIoZnJhbWUpKQogICAgICwgbV9qc1dpbmRvd1Byb3hpZXMobWFrZVVuaXF1ZVJl
ZjxQcm94eU1hcD4oKSkKIHsKIH0KQEAgLTY0LDYgKzY0LDExIEBAIFdpbmRvd1Byb3h5Ojp+V2lu
ZG93UHJveHkoKQogICAgIEFTU0VSVChtX2pzV2luZG93UHJveGllcy0+aXNFbXB0eSgpKTsKIH0K
IAorQWJzdHJhY3RGcmFtZSogV2luZG93UHJveHk6OmZyYW1lKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbV9mcmFtZS5nZXQoKTsKK30KKwogdm9pZCBXaW5kb3dQcm94eTo6ZGV0YWNoRnJvbUZyYW1l
KCkKIHsKICAgICBBU1NFUlQobV9mcmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9XaW5kb3dQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2lu
ZG93UHJveHkuaAppbmRleCA0NDM2ZDhiYmE1NDFkN2U0ZjcwZTk3N2EyOGNjMTIyODYyYjRmZDEw
Li4xMTgxNzdjNWU0NDczZjdjY2Y3NmIxNWEwYjU1ZDRhNGQxNzIxZDZmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XaW5kb3dQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1dpbmRvd1Byb3h5LmgKQEAgLTI0LDYgKzI0LDcgQEAKICNpbmNsdWRl
IDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8
d3RmL1VuaXF1ZVJlZi5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIG5hbWVzcGFjZSBK
U0MgewogY2xhc3MgRGVidWdnZXI7CkBAIC00OSw3ICs1MCw3IEBAIHB1YmxpYzoKIAogICAgIFdF
QkNPUkVfRVhQT1JUIH5XaW5kb3dQcm94eSgpOwogCi0gICAgQWJzdHJhY3RGcmFtZSogZnJhbWUo
KSBjb25zdCB7IHJldHVybiBtX2ZyYW1lOyB9CisgICAgV0VCQ09SRV9FWFBPUlQgQWJzdHJhY3RG
cmFtZSogZnJhbWUoKSBjb25zdDsKICAgICB2b2lkIGRldGFjaEZyb21GcmFtZSgpOwogCiAgICAg
dm9pZCBkZXN0cm95SlNXaW5kb3dQcm94eShET01XcmFwcGVyV29ybGQmKTsKQEAgLTk0LDcgKzk1
LDcgQEAgcHJpdmF0ZToKICAgICBKU1dpbmRvd1Byb3h5JiBjcmVhdGVKU1dpbmRvd1Byb3h5KERP
TVdyYXBwZXJXb3JsZCYpOwogICAgIFdFQkNPUkVfRVhQT1JUIEpTV2luZG93UHJveHkmIGNyZWF0
ZUpTV2luZG93UHJveHlXaXRoSW5pdGlhbGl6ZWRTY3JpcHQoRE9NV3JhcHBlcldvcmxkJik7CiAK
LSAgICBBYnN0cmFjdEZyYW1lKiBtX2ZyYW1lOworICAgIFdlYWtQdHI8QWJzdHJhY3RGcmFtZT4g
bV9mcmFtZTsKICAgICBVbmlxdWVSZWY8UHJveHlNYXA+IG1fanNXaW5kb3dQcm94aWVzOwogfTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggYzllM2JlMTE4NzJhMWFlNmNkODQ0ZGE5NTdk
ZGNjNzRkMDQ1MGZjMC4uNmU3N2Q3OTQyYTFlNGJkY2NlZWU1MTYzNGRjMzA0NTU5NTc5ZDlhMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0yNTU4LDcgKzI1NTgsNyBAQCB2b2lkIERvY3Vt
ZW50Ojp3aWxsQmVSZW1vdmVkRnJvbUZyYW1lKCkKICNlbmRpZgogCiAgICAgewotICAgICAgICBO
YXZpZ2F0aW9uRGlzYWJsZXIgbmF2aWdhdGlvbkRpc2FibGVyKG1fZnJhbWUpOworICAgICAgICBO
YXZpZ2F0aW9uRGlzYWJsZXIgbmF2aWdhdGlvbkRpc2FibGVyKG1fZnJhbWUuZ2V0KCkpOwogICAg
ICAgICBkaXNjb25uZWN0RGVzY2VuZGFudEZyYW1lcygpOwogICAgIH0KICAgICBSRUxFQVNFX0FT
U0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKCFtX2ZyYW1lIHx8ICFtX2ZyYW1lLT50cmVl
KCkuY2hpbGRDb3VudCgpKTsKQEAgLTM0NjYsMTMgKzM0NjYsMTMgQEAgYm9vbCBEb2N1bWVudDo6
Y2FuTmF2aWdhdGVJbnRlcm5hbChGcmFtZSYgdGFyZ2V0RnJhbWUpCiAgICAgICAgIHJldHVybiB0
cnVlOwogCiAgICAgLy8gaWlpLiBBIHNhbmRib3hlZCBmcmFtZSBjYW4gYWx3YXlzIG5hdmlnYXRl
IGl0cyBkZXNjZW5kYW50cy4KLSAgICBpZiAoaXNTYW5kYm94ZWQoU2FuZGJveE5hdmlnYXRpb24p
ICYmIHRhcmdldEZyYW1lLnRyZWUoKS5pc0Rlc2NlbmRhbnRPZihtX2ZyYW1lKSkKKyAgICBpZiAo
aXNTYW5kYm94ZWQoU2FuZGJveE5hdmlnYXRpb24pICYmIHRhcmdldEZyYW1lLnRyZWUoKS5pc0Rl
c2NlbmRhbnRPZihtX2ZyYW1lLmdldCgpKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAv
LyBGcm9tIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL2Jyb3dzZXJzLmh0
bWwjYWxsb3dlZC10by1uYXZpZ2F0ZS4KICAgICAvLyAxLiBJZiBBIGlzIG5vdCB0aGUgc2FtZSBi
cm93c2luZyBjb250ZXh0IGFzIEIsIGFuZCBBIGlzIG5vdCBvbmUgb2YgdGhlIGFuY2VzdG9yIGJy
b3dzaW5nIGNvbnRleHRzIG9mIEIsIGFuZCBCIGlzIG5vdCBhIHRvcC1sZXZlbCBicm93c2luZyBj
b250ZXh0LCBhbmQgQSdzIGFjdGl2ZSBkb2N1bWVudCdzIGFjdGl2ZSBzYW5kYm94aW5nCiAgICAg
Ly8gZmxhZyBzZXQgaGFzIGl0cyBzYW5kYm94ZWQgbmF2aWdhdGlvbiBicm93c2luZyBjb250ZXh0
IGZsYWcgc2V0LCB0aGVuIGFib3J0IHRoZXNlIHN0ZXBzIG5lZ2F0aXZlbHkuCi0gICAgaWYgKG1f
ZnJhbWUgIT0gJnRhcmdldEZyYW1lICYmIGlzU2FuZGJveGVkKFNhbmRib3hOYXZpZ2F0aW9uKSAm
JiB0YXJnZXRGcmFtZS50cmVlKCkucGFyZW50KCkgJiYgIXRhcmdldEZyYW1lLnRyZWUoKS5pc0Rl
c2NlbmRhbnRPZihtX2ZyYW1lKSkgeworICAgIGlmIChtX2ZyYW1lICE9ICZ0YXJnZXRGcmFtZSAm
JiBpc1NhbmRib3hlZChTYW5kYm94TmF2aWdhdGlvbikgJiYgdGFyZ2V0RnJhbWUudHJlZSgpLnBh
cmVudCgpICYmICF0YXJnZXRGcmFtZS50cmVlKCkuaXNEZXNjZW5kYW50T2YobV9mcmFtZS5nZXQo
KSkpIHsKICAgICAgICAgcHJpbnROYXZpZ2F0aW9uRXJyb3JNZXNzYWdlKHRhcmdldEZyYW1lLCB1
cmwoKSwgIlRoZSBmcmFtZSBhdHRlbXB0aW5nIG5hdmlnYXRpb24gaXMgc2FuZGJveGVkLCBhbmQg
aXMgdGhlcmVmb3JlIGRpc2FsbG93ZWQgZnJvbSBuYXZpZ2F0aW5nIGl0cyBhbmNlc3RvcnMuIl9z
KTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KQEAgLTU3MDAsNyArNTcwMCw3IEBAIHZv
aWQgRG9jdW1lbnQ6OnNldFRyYW5zZm9ybVNvdXJjZShzdGQ6OnVuaXF1ZV9wdHI8VHJhbnNmb3Jt
U291cmNlPiBzb3VyY2UpCiB2b2lkIERvY3VtZW50OjpzZXREZXNpZ25Nb2RlKEluaGVyaXRlZEJv
b2wgdmFsdWUpCiB7CiAgICAgbV9kZXNpZ25Nb2RlID0gdmFsdWU7Ci0gICAgZm9yIChGcmFtZSog
ZnJhbWUgPSBtX2ZyYW1lOyBmcmFtZSAmJiBmcmFtZS0+ZG9jdW1lbnQoKTsgZnJhbWUgPSBmcmFt
ZS0+dHJlZSgpLnRyYXZlcnNlTmV4dChtX2ZyYW1lKSkKKyAgICBmb3IgKGF1dG8qIGZyYW1lID0g
bV9mcmFtZS5nZXQoKTsgZnJhbWUgJiYgZnJhbWUtPmRvY3VtZW50KCk7IGZyYW1lID0gZnJhbWUt
PnRyZWUoKS50cmF2ZXJzZU5leHQobV9mcmFtZS5nZXQoKSkpCiAgICAgICAgIGZyYW1lLT5kb2N1
bWVudCgpLT5zY2hlZHVsZUZ1bGxTdHlsZVJlYnVpbGQoKTsKIH0KIApAQCAtNTcyMSwxMSArNTcy
MSw2IEBAIHZvaWQgRG9jdW1lbnQ6OnNldERlc2lnbk1vZGUoY29uc3QgU3RyaW5nJiB2YWx1ZSkK
ICAgICBzZXREZXNpZ25Nb2RlKG1vZGUpOwogfQogCi1hdXRvIERvY3VtZW50OjpnZXREZXNpZ25N
b2RlKCkgY29uc3QgLT4gSW5oZXJpdGVkQm9vbAotewotICAgIHJldHVybiBtX2Rlc2lnbk1vZGU7
Ci19Ci0KIGJvb2wgRG9jdW1lbnQ6OmluRGVzaWduTW9kZSgpIGNvbnN0CiB7CiAgICAgZm9yIChj
b25zdCBEb2N1bWVudCogZCA9IHRoaXM7IGQ7IGQgPSBkLT5wYXJlbnREb2N1bWVudCgpKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5oCmluZGV4IDY5OTNhYzM3ZWFmMmU1ZWJhYWNhNzRjNjc1NDdkMGZjYjE4
MjdiYmMuLmFjNzhmZjMxZDIwNzhjY2Y4ZTAwNGI2MDY5ODBhY2Y2NzE1ZmI2OWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5oCkBAIC0xMDA3LDcgKzEwMDcsNiBAQCBwdWJsaWM6CiAgICAgLy8gZGVzaWdu
TW9kZSBzdXBwb3J0CiAgICAgZW51bSBJbmhlcml0ZWRCb29sIHsgb2ZmID0gZmFsc2UsIG9uID0g
dHJ1ZSwgaW5oZXJpdCB9OyAgICAKICAgICB2b2lkIHNldERlc2lnbk1vZGUoSW5oZXJpdGVkQm9v
bCB2YWx1ZSk7Ci0gICAgSW5oZXJpdGVkQm9vbCBnZXREZXNpZ25Nb2RlKCkgY29uc3Q7CiAgICAg
Ym9vbCBpbkRlc2lnbk1vZGUoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgZGVz
aWduTW9kZSgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0RGVzaWduTW9kZShj
b25zdCBTdHJpbmcmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1l
T3duZXJFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lT3duZXJFbGVt
ZW50LmNwcAppbmRleCAzMzlhMGZkMzQ5ZGFhNThmYzM2NGVkMjNiM2VmN2VjNmRmNWE3NzBjLi42
MDE2NDk3ZjFjMTAyZTliMDZkOTM2YjM3NzQ3MTIwN2JiNjQ5ZDkwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MRnJhbWVPd25lckVsZW1lbnQuY3BwCkBAIC01MCwxNCArNTAsMTMgQEAg
UmVuZGVyV2lkZ2V0KiBIVE1MRnJhbWVPd25lckVsZW1lbnQ6OnJlbmRlcldpZGdldCgpIGNvbnN0
CiAgICAgcmV0dXJuIGRvd25jYXN0PFJlbmRlcldpZGdldD4ocmVuZGVyZXIoKSk7CiB9CiAKLXZv
aWQgSFRNTEZyYW1lT3duZXJFbGVtZW50OjpzZXRDb250ZW50RnJhbWUoRnJhbWUqIGZyYW1lKQor
dm9pZCBIVE1MRnJhbWVPd25lckVsZW1lbnQ6OnNldENvbnRlbnRGcmFtZShGcmFtZSYgZnJhbWUp
CiB7CiAgICAgLy8gTWFrZSBzdXJlIHdlIHdpbGwgbm90IGVuZCB1cCB3aXRoIHR3byBmcmFtZXMg
cmVmZXJlbmNpbmcgdGhlIHNhbWUgb3duZXIgZWxlbWVudC4KICAgICBBU1NFUlQoIW1fY29udGVu
dEZyYW1lIHx8IG1fY29udGVudEZyYW1lLT5vd25lckVsZW1lbnQoKSAhPSB0aGlzKTsKLSAgICBB
U1NFUlQoZnJhbWUpOwogICAgIC8vIERpc2Nvbm5lY3RlZCBmcmFtZXMgc2hvdWxkIG5vdCBiZSBh
bGxvd2VkIHRvIGxvYWQuCiAgICAgQVNTRVJUKGlzQ29ubmVjdGVkKCkpOwotICAgIG1fY29udGVu
dEZyYW1lID0gZnJhbWU7CisgICAgbV9jb250ZW50RnJhbWUgPSBtYWtlV2Vha1B0cihmcmFtZSk7
CiAKICAgICBmb3IgKFJlZlB0cjxDb250YWluZXJOb2RlPiBub2RlID0gdGhpczsgbm9kZTsgbm9k
ZSA9IG5vZGUtPnBhcmVudE9yU2hhZG93SG9zdE5vZGUoKSkKICAgICAgICAgbm9kZS0+aW5jcmVt
ZW50Q29ubmVjdGVkU3ViZnJhbWVDb3VudCgpOwpAQCAtNzYsNyArNzUsNyBAQCB2b2lkIEhUTUxG
cmFtZU93bmVyRWxlbWVudDo6Y2xlYXJDb250ZW50RnJhbWUoKQogCiB2b2lkIEhUTUxGcmFtZU93
bmVyRWxlbWVudDo6ZGlzY29ubmVjdENvbnRlbnRGcmFtZSgpCiB7Ci0gICAgaWYgKFJlZlB0cjxG
cmFtZT4gZnJhbWUgPSBtX2NvbnRlbnRGcmFtZSkgeworICAgIGlmIChSZWZQdHI8RnJhbWU+IGZy
YW1lID0gbV9jb250ZW50RnJhbWUuZ2V0KCkpIHsKICAgICAgICAgZnJhbWUtPmxvYWRlcigpLmZy
YW1lRGV0YWNoZWQoKTsKICAgICAgICAgZnJhbWUtPmRpc2Nvbm5lY3RPd25lckVsZW1lbnQoKTsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZU93bmVyRWxl
bWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVPd25lckVsZW1lbnQuaAppbmRl
eCBiOTg4OThiZDMxNDA3MjVjNTVlNGFlYjg2NmZjMWE5YjEzYzY1YjYxLi41NDE5MTkzM2Y4YWMw
ODBiYWYwNDk1YjY1ZDVhYjZmMTQwYjY3MWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEZyYW1lT3duZXJFbGVtZW50LmgKQEAgLTM1LDExICszNSwxMSBAQCBjbGFzcyBIVE1MRnJhbWVP
d25lckVsZW1lbnQgOiBwdWJsaWMgSFRNTEVsZW1lbnQgewogcHVibGljOgogICAgIHZpcnR1YWwg
fkhUTUxGcmFtZU93bmVyRWxlbWVudCgpOwogCi0gICAgRnJhbWUqIGNvbnRlbnRGcmFtZSgpIGNv
bnN0IHsgcmV0dXJuIG1fY29udGVudEZyYW1lOyB9CisgICAgRnJhbWUqIGNvbnRlbnRGcmFtZSgp
IGNvbnN0IHsgcmV0dXJuIG1fY29udGVudEZyYW1lLmdldCgpOyB9CiAgICAgV0VCQ09SRV9FWFBP
UlQgV2luZG93UHJveHkqIGNvbnRlbnRXaW5kb3coKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9S
VCBEb2N1bWVudCogY29udGVudERvY3VtZW50KCkgY29uc3Q7CiAKLSAgICB2b2lkIHNldENvbnRl
bnRGcmFtZShGcmFtZSopOworICAgIHZvaWQgc2V0Q29udGVudEZyYW1lKEZyYW1lJik7CiAgICAg
dm9pZCBjbGVhckNvbnRlbnRGcmFtZSgpOwogCiAgICAgdm9pZCBkaXNjb25uZWN0Q29udGVudEZy
YW1lKCk7CkBAIC03Myw3ICs3Myw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc0tleWJvYXJkRm9j
dXNhYmxlKEtleWJvYXJkRXZlbnQqKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIGlzRnJhbWVP
d25lckVsZW1lbnQoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAKLSAgICBGcmFtZSog
bV9jb250ZW50RnJhbWUgeyBudWxscHRyIH07CisgICAgV2Vha1B0cjxGcmFtZT4gbV9jb250ZW50
RnJhbWU7CiAgICAgU2FuZGJveEZsYWdzIG1fc2FuZGJveEZsYWdzIHsgU2FuZGJveE5vbmUgfTsK
IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yUGFnZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yUGFnZUFnZW50LmNwcAppbmRleCBiMzYwNTNhOWY2MjIyOTU1NmVmMzM0Nzc1NGZkNTFmMjZm
Mzc3NGU1Li43YzEwNzcxNzY5OTYxMmZjMTY1MDU2MWQ4NmM1Yjg0Mzc1YWMwNjViIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdl
bnQuY3BwCkBAIC04MjgsNyArODI4LDcgQEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmZyYW1l
RGV0YWNoZWQoRnJhbWUmIGZyYW1lKQogCiBGcmFtZSogSW5zcGVjdG9yUGFnZUFnZW50OjpmcmFt
ZUZvcklkKGNvbnN0IFByb3RvY29sOjpOZXR3b3JrOjpGcmFtZUlkJiBmcmFtZUlkKQogewotICAg
IHJldHVybiBmcmFtZUlkLmlzRW1wdHkoKSA/IG51bGxwdHIgOiBtX2lkZW50aWZpZXJUb0ZyYW1l
LmdldChmcmFtZUlkKTsKKyAgICByZXR1cm4gZnJhbWVJZC5pc0VtcHR5KCkgPyBudWxscHRyIDog
bV9pZGVudGlmaWVyVG9GcmFtZS5nZXQoZnJhbWVJZCkuZ2V0KCk7CiB9CiAKIFN0cmluZyBJbnNw
ZWN0b3JQYWdlQWdlbnQ6OmZyYW1lSWQoRnJhbWUqIGZyYW1lKQpAQCAtODM3LDcgKzgzNyw3IEBA
IFN0cmluZyBJbnNwZWN0b3JQYWdlQWdlbnQ6OmZyYW1lSWQoRnJhbWUqIGZyYW1lKQogICAgICAg
ICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKICAgICByZXR1cm4gbV9mcmFtZVRvSWRlbnRpZmllci5l
bnN1cmUoZnJhbWUsIFt0aGlzLCBmcmFtZV0gewogICAgICAgICBhdXRvIGlkZW50aWZpZXIgPSBJ
ZGVudGlmaWVyc0ZhY3Rvcnk6OmNyZWF0ZUlkZW50aWZpZXIoKTsKLSAgICAgICAgbV9pZGVudGlm
aWVyVG9GcmFtZS5zZXQoaWRlbnRpZmllciwgZnJhbWUpOworICAgICAgICBtX2lkZW50aWZpZXJU
b0ZyYW1lLnNldChpZGVudGlmaWVyLCBtYWtlV2Vha1B0cihmcmFtZSkpOwogICAgICAgICByZXR1
cm4gaWRlbnRpZmllcjsKICAgICB9KS5pdGVyYXRvci0+dmFsdWU7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5oIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuaAppbmRleCBi
Zjg4MzQ1MjUzYmI3Mjk1Y2U1Y2NkYTAzNTYzNTVkMTIzZDI3YmUwLi43OGE5ODIyNGFiNTQ1MGUw
NzI5NzUxNTcxZmUxYmI5NTdkMzAzMzAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmgKQEAgLTE2NSw4ICsxNjUsOSBAQCBw
cml2YXRlOgogICAgIEluc3BlY3RvckNsaWVudCogbV9jbGllbnQgeyBudWxscHRyIH07CiAgICAg
SW5zcGVjdG9yT3ZlcmxheSogbV9vdmVybGF5IHsgbnVsbHB0ciB9OwogCisgICAgLy8gRklYTUU6
IE1ha2UgYSBXZWFrSGFzaE1hcCBhbmQgdXNlIGl0IGZvciBtX2ZyYW1lVG9JZGVudGlmaWVyIGFu
ZCBtX2xvYWRlclRvSWRlbnRpZmllci4KICAgICBIYXNoTWFwPEZyYW1lKiwgU3RyaW5nPiBtX2Zy
YW1lVG9JZGVudGlmaWVyOwotICAgIEhhc2hNYXA8U3RyaW5nLCBGcmFtZSo+IG1faWRlbnRpZmll
clRvRnJhbWU7CisgICAgSGFzaE1hcDxTdHJpbmcsIFdlYWtQdHI8RnJhbWU+PiBtX2lkZW50aWZp
ZXJUb0ZyYW1lOwogICAgIEhhc2hNYXA8RG9jdW1lbnRMb2FkZXIqLCBTdHJpbmc+IG1fbG9hZGVy
VG9JZGVudGlmaWVyOwogICAgIFN0cmluZyBtX3VzZXJBZ2VudE92ZXJyaWRlOwogICAgIFN0cmlu
ZyBtX2VtdWxhdGVkTWVkaWE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9j
dW1lbnRMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNw
cAppbmRleCA3Yzk5NTEwODU1NzAwZDg1NWRlNDNlNTI4MDNkMTRkNzZiZjlkNTYyLi5kMGMzZGVi
YWM2YThjZjUzNWRlMzU0ZDRlNWVmZmQ0ZGJmNWI0OGFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Eb2N1bWVudExvYWRlci5jcHAKQEAgLTI4Myw3ICsyODMsNyBAQCB2b2lkIERvY3VtZW50TG9h
ZGVyOjptYWluUmVjZWl2ZWRFcnJvcihjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKIC8vIGJ1
dCBub3QgbG9hZHMgaW5pdGlhdGVkIGJ5IGNoaWxkIGZyYW1lcycgZGF0YSBzb3VyY2VzIC0tIHRo
YXQncyB0aGUgV2ViRnJhbWUncyBqb2IuCiB2b2lkIERvY3VtZW50TG9hZGVyOjpzdG9wTG9hZGlu
ZygpCiB7Ci0gICAgUmVmUHRyPEZyYW1lPiBwcm90ZWN0ZWRGcmFtZShtX2ZyYW1lKTsKKyAgICBS
ZWZQdHI8RnJhbWU+IHByb3RlY3RlZEZyYW1lKG1fZnJhbWUuZ2V0KCkpOwogICAgIFJlZjxEb2N1
bWVudExvYWRlcj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKICAgICAvLyBJbiBzb21lIHJhcmUg
Y2FzZXMsIGNhbGxpbmcgRnJhbWVMb2FkZXI6OnN0b3BMb2FkaW5nIGNvdWxkIGNhdXNlIGlzTG9h
ZGluZygpIHRvIHJldHVybiBmYWxzZS4KQEAgLTU5OSw3ICs1OTksNyBAQCB2b2lkIERvY3VtZW50
TG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgbmV3UmVxdWVzdCwgY29u
c3QgUmVzb3VyYwogICAgICAgICBSZWY8U2VjdXJpdHlPcmlnaW4+IHJlZGlyZWN0aW5nT3JpZ2lu
KFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUocmVkaXJlY3RSZXNwb25zZS51cmwoKSkpOwogICAgICAg
ICBpZiAoIXJlZGlyZWN0aW5nT3JpZ2luLmdldCgpLmNhbkRpc3BsYXkobmV3UmVxdWVzdC51cmwo
KSkpIHsKICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoIndpbGxTZW5kUmVxdWVz
dDogY2FuY2VsaW5nIC0gcmVkaXJlY3RpbmcgVVJMIG5vdCBhbGxvd2VkIHRvIGRpc3BsYXkgY29u
dGVudCBmcm9tIHRhcmdldCIpOwotICAgICAgICAgICAgRnJhbWVMb2FkZXI6OnJlcG9ydExvY2Fs
TG9hZEZhaWxlZChtX2ZyYW1lLCBuZXdSZXF1ZXN0LnVybCgpLnN0cmluZygpKTsKKyAgICAgICAg
ICAgIEZyYW1lTG9hZGVyOjpyZXBvcnRMb2NhbExvYWRGYWlsZWQobV9mcmFtZS5nZXQoKSwgbmV3
UmVxdWVzdC51cmwoKS5zdHJpbmcoKSk7CiAgICAgICAgICAgICBjYW5jZWxNYWluUmVzb3VyY2VM
b2FkKGZyYW1lTG9hZGVyKCktPmNhbmNlbGxlZEVycm9yKG5ld1JlcXVlc3QpKTsKICAgICAgICAg
ICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKG5ld1JlcXVlc3QpKTsKICAgICAg
ICAgfQpAQCAtMTA0OCw3ICsxMDQ4LDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6Y29tbWl0TG9h
ZChjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQogewogICAgIC8vIEJvdGggdW5sb2FkaW5n
IHRoZSBvbGQgcGFnZSBhbmQgcGFyc2luZyB0aGUgbmV3IHBhZ2UgbWF5IGV4ZWN1dGUgSmF2YVNj
cmlwdCB3aGljaCBkZXN0cm95cyB0aGUgZGF0YXNvdXJjZQogICAgIC8vIGJ5IHN0YXJ0aW5nIGEg
bmV3IGxvYWQsIHNvIHJldGFpbiB0ZW1wb3JhcmlseS4KLSAgICBSZWZQdHI8RnJhbWU+IHByb3Rl
Y3RlZEZyYW1lKG1fZnJhbWUpOworICAgIFJlZlB0cjxGcmFtZT4gcHJvdGVjdGVkRnJhbWUobV9m
cmFtZS5nZXQoKSk7CiAgICAgUmVmPERvY3VtZW50TG9hZGVyPiBwcm90ZWN0ZWRUaGlzKCp0aGlz
KTsKIAogICAgIGNvbW1pdElmUmVhZHkoKTsKQEAgLTEzMDIsNyArMTMwMiw3IEBAIHZvaWQgRG9j
dW1lbnRMb2FkZXI6OmRldGFjaEZyb21GcmFtZSgpCiAgICAgZWxzZQogICAgICAgICBBU1NFUlRf
V0lUSF9NRVNTQUdFKG1fZnJhbWUsICJkZXRhY2hGcm9tRnJhbWUoKSBpcyBiZWluZyBjYWxsZWQg
b24gYSBEb2N1bWVudExvYWRlciB0aGF0IGhhcyBuZXZlciBhdHRhY2hlZCB0byBhbnkgRnJhbWUi
KTsKICNlbmRpZgotICAgIFJlZlB0cjxGcmFtZT4gcHJvdGVjdGVkRnJhbWUobV9mcmFtZSk7Cisg
ICAgUmVmUHRyPEZyYW1lPiBwcm90ZWN0ZWRGcmFtZShtX2ZyYW1lLmdldCgpKTsKICAgICBSZWY8
RG9jdW1lbnRMb2FkZXI+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCiAgICAgLy8gSXQgbmV2ZXIg
bWFrZXMgc2Vuc2UgdG8gaGF2ZSBhIGRvY3VtZW50IGxvYWRlciB0aGF0IGlzIGRldGFjaGVkIGZy
b20gaXRzCkBAIC0xNzg3LDggKzE3ODcsOCBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpyZW1vdmVT
dWJyZXNvdXJjZUxvYWRlcihMb2FkQ29tcGxldGlvblR5cGUgdHlwZSwgUmVzb3VyY2VMbwogICAg
IGlmICghbV9zdWJyZXNvdXJjZUxvYWRlcnMucmVtb3ZlKGxvYWRlci0+aWRlbnRpZmllcigpKSkK
ICAgICAgICAgcmV0dXJuOwogICAgIGNoZWNrTG9hZENvbXBsZXRlKCk7Ci0gICAgaWYgKEZyYW1l
KiBmcmFtZSA9IG1fZnJhbWUpCi0gICAgICAgIGZyYW1lLT5sb2FkZXIoKS5zdWJyZXNvdXJjZUxv
YWREb25lKHR5cGUpOworICAgIGlmIChtX2ZyYW1lKQorICAgICAgICBtX2ZyYW1lLT5sb2FkZXIo
KS5zdWJyZXNvdXJjZUxvYWREb25lKHR5cGUpOwogfQogCiB2b2lkIERvY3VtZW50TG9hZGVyOjph
ZGRQbHVnSW5TdHJlYW1Mb2FkZXIoUmVzb3VyY2VMb2FkZXImIGxvYWRlcikKQEAgLTIwNzMsOCAr
MjA3Myw4IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnN1YnJlc291cmNlTG9hZGVyRmluaXNoZWRM
b2FkaW5nT25lUGFydChSZXNvdXJjZUxvYWRlciogbG9hCiAgICAgfQogCiAgICAgY2hlY2tMb2Fk
Q29tcGxldGUoKTsKLSAgICBpZiAoRnJhbWUqIGZyYW1lID0gbV9mcmFtZSkKLSAgICAgICAgZnJh
bWUtPmxvYWRlcigpLmNoZWNrTG9hZENvbXBsZXRlKCk7ICAgIAorICAgIGlmIChtX2ZyYW1lKQor
ICAgICAgICBtX2ZyYW1lLT5sb2FkZXIoKS5jaGVja0xvYWRDb21wbGV0ZSgpOwogfQogCiB2b2lk
IERvY3VtZW50TG9hZGVyOjptYXliZUZpbmlzaExvYWRpbmdNdWx0aXBhcnRDb250ZW50KCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdyaXRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIuY3BwCmluZGV4IGQ1YmVhZTQzYmU5ZTFm
MDM0MDZlYTBhNjZhMTE5MDVmNzZjYzM0ZDEuLjM3OTE4YjA5MGRlM2M4ZThlMTNkZThiMTkxNDJh
Y2EwMGIxOWE1MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdy
aXRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmNwcApA
QCAtMTE3LDcgKzExNyw3IEBAIFJlZjxEb2N1bWVudD4gRG9jdW1lbnRXcml0ZXI6OmNyZWF0ZURv
Y3VtZW50KGNvbnN0IFVSTCYgdXJsKQogI2VuZGlmCiAgICAgaWYgKCFtX2ZyYW1lLT5sb2FkZXIo
KS5jbGllbnQoKS5oYXNIVE1MVmlldygpKQogICAgICAgICByZXR1cm4gRG9jdW1lbnQ6OmNyZWF0
ZU5vblJlbmRlcmVkUGxhY2Vob2xkZXIoKm1fZnJhbWUsIHVybCk7Ci0gICAgcmV0dXJuIERPTUlt
cGxlbWVudGF0aW9uOjpjcmVhdGVEb2N1bWVudChtX21pbWVUeXBlLCBtX2ZyYW1lLCBtX2ZyYW1l
LT5zZXR0aW5ncygpLCB1cmwpOworICAgIHJldHVybiBET01JbXBsZW1lbnRhdGlvbjo6Y3JlYXRl
RG9jdW1lbnQobV9taW1lVHlwZSwgbV9mcmFtZS5nZXQoKSwgbV9mcmFtZS0+c2V0dGluZ3MoKSwg
dXJsKTsKIH0KIAogYm9vbCBEb2N1bWVudFdyaXRlcjo6YmVnaW4oY29uc3QgVVJMJiB1cmxSZWZl
cmVuY2UsIGJvb2wgZGlzcGF0Y2gsIERvY3VtZW50KiBvd25lckRvY3VtZW50KQpAQCAtMjIyLDEw
ICsyMjIsMTAgQEAgVGV4dFJlc291cmNlRGVjb2RlciYgRG9jdW1lbnRXcml0ZXI6OmRlY29kZXIo
KQogICAgICAgICAvLyBhbiBhdHRhY2sgdmVjdG9yLgogICAgICAgICAvLyBGSVhNRTogVGhpcyBt
aWdodCBiZSB0b28gY2F1dGlvdXMgZm9yIG5vbi03Yml0LWVuY29kaW5ncyBhbmQKICAgICAgICAg
Ly8gd2UgbWF5IGNvbnNpZGVyIHJlbGF4aW5nIHRoaXMgbGF0ZXIgYWZ0ZXIgdGVzdGluZy4KLSAg
ICAgICAgaWYgKGNhblJlZmVyVG9QYXJlbnRGcmFtZUVuY29kaW5nKG1fZnJhbWUsIHBhcmVudEZy
YW1lKSkKKyAgICAgICAgaWYgKGNhblJlZmVyVG9QYXJlbnRGcmFtZUVuY29kaW5nKG1fZnJhbWUu
Z2V0KCksIHBhcmVudEZyYW1lKSkKICAgICAgICAgICAgIG1fZGVjb2Rlci0+c2V0SGludEVuY29k
aW5nKHBhcmVudEZyYW1lLT5kb2N1bWVudCgpLT5kZWNvZGVyKCkpOwogICAgICAgICBpZiAobV9l
bmNvZGluZy5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIGlmIChjYW5SZWZlclRvUGFyZW50RnJh
bWVFbmNvZGluZyhtX2ZyYW1lLCBwYXJlbnRGcmFtZSkpCisgICAgICAgICAgICBpZiAoY2FuUmVm
ZXJUb1BhcmVudEZyYW1lRW5jb2RpbmcobV9mcmFtZS5nZXQoKSwgcGFyZW50RnJhbWUpKQogICAg
ICAgICAgICAgICAgIG1fZGVjb2Rlci0+c2V0RW5jb2RpbmcocGFyZW50RnJhbWUtPmRvY3VtZW50
KCktPnRleHRFbmNvZGluZygpLCBUZXh0UmVzb3VyY2VEZWNvZGVyOjpFbmNvZGluZ0Zyb21QYXJl
bnRGcmFtZSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBtX2RlY29kZXItPnNldEVu
Y29kaW5nKG1fZW5jb2RpbmcsCkBAIC0yOTcsNiArMjk3LDExIEBAIHZvaWQgRG9jdW1lbnRXcml0
ZXI6OnNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCB1c2VyQ2hvc2VuKQogICAg
IG1fZW5jb2RpbmdXYXNDaG9zZW5CeVVzZXIgPSB1c2VyQ2hvc2VuOwogfQogCit2b2lkIERvY3Vt
ZW50V3JpdGVyOjpzZXRGcmFtZShGcmFtZSYgZnJhbWUpCit7CisgICAgbV9mcmFtZSA9IG1ha2VX
ZWFrUHRyKGZyYW1lKTsKK30KKwogdm9pZCBEb2N1bWVudFdyaXRlcjo6c2V0RG9jdW1lbnRXYXNM
b2FkZWRBc1BhcnRPZk5hdmlnYXRpb24oKQogewogICAgIEFTU0VSVChtX3BhcnNlciAmJiAhbV9w
YXJzZXItPmlzU3RvcHBlZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9E
b2N1bWVudFdyaXRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmgK
aW5kZXggOWYwMTRlMmMwY2ZiNmE3MDUwNzAwODRmZjk5N2RiMTYyNzVkYmI1Yy4uZmM0NmY0MjU2
YTAyMzVjMTA4OWNmZjE2NDk3Y2RmNjFjNWZiM2NmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Rv
Y3VtZW50V3JpdGVyLmgKQEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgogICAgIHZvaWQgaW5zZXJ0
RGF0YVN5bmNocm9ub3VzbHkoY29uc3QgU3RyaW5nJik7IC8vIEZvciBhbiBpbnRlcm5hbCB1c2Ug
b25seSB0byBwcmV2ZW50IHRoZSBwYXJzZXIgZnJvbSB5aWVsZGluZy4KICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGVuZCgpOwogCi0gICAgdm9pZCBzZXRGcmFtZShGcmFtZSYgZnJhbWUpIHsgbV9m
cmFtZSA9ICZmcmFtZTsgfQorICAgIHZvaWQgc2V0RnJhbWUoRnJhbWUmKTsKIAogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgc2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJiBlbmNvZGluZywgYm9vbCB1
c2VyQ2hvc2VuKTsKIApAQCAtNjcsNyArNjcsNyBAQCBwcml2YXRlOgogICAgIFJlZjxEb2N1bWVu
dD4gY3JlYXRlRG9jdW1lbnQoY29uc3QgVVJMJik7CiAgICAgdm9pZCBjbGVhcigpOwogCi0gICAg
RnJhbWUqIG1fZnJhbWUgeyBudWxscHRyIH07CisgICAgV2Vha1B0cjxGcmFtZT4gbV9mcmFtZTsK
IAogICAgIGJvb2wgbV9oYXNSZWNlaXZlZFNvbWVEYXRhIHsgZmFsc2UgfTsKICAgICBTdHJpbmcg
bV9taW1lVHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IDU4ZTgz
ZmI2NTViZDRkNzU5MjM4NmViZDgyZmNmN2IxMDBlMzE5NDAuLjcwYWRiNTYxOTg5ODY2OWEyODRi
MjY5MjVlMTlmMDA1YmI3NTJhNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNw
cApAQCAtMzMwLDcgKzMzMCw3IEBAIEZyYW1lTG9hZGVyOjp+RnJhbWVMb2FkZXIoKQogdm9pZCBG
cmFtZUxvYWRlcjo6ZGV0YWNoRnJvbUFsbE9wZW5lZEZyYW1lcygpCiB7CiAgICAgZm9yIChhdXRv
JiBmcmFtZSA6IG1fb3BlbmVkRnJhbWVzKQotICAgICAgICBmcmFtZS0+bG9hZGVyKCkubV9vcGVu
ZXIgPSBudWxscHRyOworICAgICAgICBmcmFtZS5sb2FkZXIoKS5tX29wZW5lciA9IG51bGxwdHI7
CiAgICAgbV9vcGVuZWRGcmFtZXMuY2xlYXIoKTsKIH0KIApAQCAtMTA0NCw3ICsxMDQ0LDcgQEAg
Ym9vbCBGcmFtZUxvYWRlcjo6Y2hlY2tJZkZvcm1BY3Rpb25BbGxvd2VkQnlDU1AoY29uc3QgVVJM
JiB1cmwsIGJvb2wgZGlkUmVjZWl2ZVIKIAogRnJhbWUqIEZyYW1lTG9hZGVyOjpvcGVuZXIoKQog
ewotICAgIHJldHVybiBtX29wZW5lcjsKKyAgICByZXR1cm4gbV9vcGVuZXIuZ2V0KCk7CiB9CiAK
IHZvaWQgRnJhbWVMb2FkZXI6OnNldE9wZW5lcihGcmFtZSogb3BlbmVyKQpAQCAtMTA1NSwxNCAr
MTA1NSwxNCBAQCB2b2lkIEZyYW1lTG9hZGVyOjpzZXRPcGVuZXIoRnJhbWUqIG9wZW5lcikKICAg
ICBpZiAobV9vcGVuZXIpIHsKICAgICAgICAgLy8gV2hlbiBzZXRPcGVuZXIgaXMgY2FsbGVkIGlu
IH5GcmFtZUxvYWRlciwgb3BlbmVyJ3MgbV9mcmFtZUxvYWRlciBpcyBhbHJlYWR5IGNsZWFyZWQu
CiAgICAgICAgIGF1dG8mIG9wZW5lckZyYW1lTG9hZGVyID0gbV9vcGVuZXIgPT0gJm1fZnJhbWUg
PyAqdGhpcyA6IG1fb3BlbmVyLT5sb2FkZXIoKTsKLSAgICAgICAgb3BlbmVyRnJhbWVMb2FkZXIu
bV9vcGVuZWRGcmFtZXMucmVtb3ZlKCZtX2ZyYW1lKTsKKyAgICAgICAgb3BlbmVyRnJhbWVMb2Fk
ZXIubV9vcGVuZWRGcmFtZXMucmVtb3ZlKG1fZnJhbWUpOwogICAgIH0KICAgICBpZiAob3BlbmVy
KSB7CiAgICAgICAgIG9wZW5lci0+bG9hZGVyKCkubV9vcGVuZWRGcmFtZXMuYWRkKCZtX2ZyYW1l
KTsKICAgICAgICAgaWYgKGF1dG8qIHBhZ2UgPSBtX2ZyYW1lLnBhZ2UoKSkKICAgICAgICAgICAg
IHBhZ2UtPnNldE9wZW5lZEJ5RE9NV2l0aE9wZW5lcigpOwogICAgIH0KLSAgICBtX29wZW5lciA9
IG9wZW5lcjsKKyAgICBtX29wZW5lciA9IG1ha2VXZWFrUHRyKG9wZW5lcik7CiAKICAgICBpZiAo
bV9mcmFtZS5kb2N1bWVudCgpKQogICAgICAgICBtX2ZyYW1lLmRvY3VtZW50KCktPmluaXRTZWN1
cml0eUNvbnRleHQoKTsKQEAgLTE2NDQsNiArMTY0NCwxMSBAQCB2b2lkIEZyYW1lTG9hZGVyOjpj
bGVhclByb3Zpc2lvbmFsTG9hZEZvclBvbGljeUNoZWNrKCkKICAgICBzZXRQcm92aXNpb25hbERv
Y3VtZW50TG9hZGVyKG51bGxwdHIpOwogfQogCitib29sIEZyYW1lTG9hZGVyOjpoYXNPcGVuZWRG
cmFtZXMoKSBjb25zdAoreworICAgIHJldHVybiAhbV9vcGVuZWRGcmFtZXMuY29tcHV0ZXNFbXB0
eSgpOworfQorCiB2b2lkIEZyYW1lTG9hZGVyOjpyZXBvcnRMb2NhbExvYWRGYWlsZWQoRnJhbWUq
IGZyYW1lLCBjb25zdCBTdHJpbmcmIHVybCkKIHsKICAgICBBU1NFUlQoIXVybC5pc0VtcHR5KCkp
OwpAQCAtMjg5Niw3ICsyOTAxLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6YWRkRXh0cmFGaWVsZHNU
b1JlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBJc01haW5SZXNvdXIKICAgICAgICAg
aWYgKGlzTWFpblJlc291cmNlKSB7CiAgICAgICAgICAgICBhdXRvKiBvd25lckZyYW1lID0gbV9m
cmFtZS50cmVlKCkucGFyZW50KCk7CiAgICAgICAgICAgICBpZiAoIW93bmVyRnJhbWUgJiYgbV9z
dGF0ZU1hY2hpbmUuaXNEaXNwbGF5aW5nSW5pdGlhbEVtcHR5RG9jdW1lbnQoKSkKLSAgICAgICAg
ICAgICAgICBvd25lckZyYW1lID0gbV9vcGVuZXI7CisgICAgICAgICAgICAgICAgb3duZXJGcmFt
ZSA9IG1fb3BlbmVyLmdldCgpOwogICAgICAgICAgICAgaWYgKG93bmVyRnJhbWUpCiAgICAgICAg
ICAgICAgICAgaW5pdGlhdG9yID0gb3duZXJGcmFtZS0+ZG9jdW1lbnQoKTsKICAgICAgICAgICAg
IEFTU0VSVChvd25lckZyYW1lIHx8IG1fZnJhbWUuaXNNYWluRnJhbWUoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9GcmFtZUxvYWRlci5oCmluZGV4IGRiZjFhNTM5M2FiNmU0M2Y0MDcxN2VmNDA0NTcyYzZk
ZWZmYTFhYWMuLjg0OTFiNzYzOTM1MmZmMDQyYTkzYzQ3YTZlOTQwYTE2YmQzNzVkNmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCkBAIC01Myw2ICs1Myw3IEBACiAjaW5jbHVkZSA8
d3RmL09wdGlvbmFsLmg+CiAjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogI2luY2x1ZGUgPHd0
Zi9XYWxsVGltZS5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrSGFzaFNldC5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKQEAgLTQyNCw3ICs0MjUsNyBAQCBwcml2YXRlOgogCiAgICAgLy8gUG9saWN5
Q2hlY2tlciBzcGVjaWZpYy4KICAgICB2b2lkIGNsZWFyUHJvdmlzaW9uYWxMb2FkRm9yUG9saWN5
Q2hlY2soKTsKLSAgICBib29sIGhhc09wZW5lZEZyYW1lcygpIGNvbnN0IHsgcmV0dXJuICFtX29w
ZW5lZEZyYW1lcy5pc0VtcHR5KCk7IH0KKyAgICBib29sIGhhc09wZW5lZEZyYW1lcygpIGNvbnN0
OwogCiAgICAgYm9vbCBwcmV2ZW50c1BhcmVudEZyb21CZWluZ0NvbXBsZXRlKGNvbnN0IEZyYW1l
JikgY29uc3Q7CiAKQEAgLTQ4MCw4ICs0ODEsOCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9zaG91
bGRDYWxsQ2hlY2tDb21wbGV0ZWQ7CiAgICAgYm9vbCBtX3Nob3VsZENhbGxDaGVja0xvYWRDb21w
bGV0ZTsKIAotICAgIEZyYW1lKiBtX29wZW5lcjsKLSAgICBIYXNoU2V0PEZyYW1lKj4gbV9vcGVu
ZWRGcmFtZXM7CisgICAgV2Vha1B0cjxGcmFtZT4gbV9vcGVuZXI7CisgICAgV2Vha0hhc2hTZXQ8
RnJhbWU+IG1fb3BlbmVkRnJhbWVzOwogCiAgICAgYm9vbCBtX2xvYWRpbmdGcm9tQ2FjaGVkUGFn
ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTmV0d29ya2luZ0Nv
bnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZU5ldHdvcmtpbmdDb250ZXh0LmgK
aW5kZXggN2Y3YWM4ODYwODM5MWFjZmY2YzA4MzNiOWFhZWRhMGE4YTVhZTBiMC4uMWQ3MWNmMzk3
YWJjNjRiMjIxMjJkYTE4ZjdhOTIwNDZhOTRkMTE1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0ZyYW1lTmV0d29ya2luZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oCkBAIC00NCwxNiArNDQsMTYgQEAgcHVibGlj
OgogCiBwcm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQgRnJhbWVOZXR3b3JraW5nQ29udGV4dChGcmFt
ZSogZnJhbWUpCi0gICAgICAgIDogbV9mcmFtZShmcmFtZSkKKyAgICAgICAgOiBtX2ZyYW1lKG1h
a2VXZWFrUHRyKGZyYW1lKSkKICAgICB7CiAgICAgfQogCi0gICAgRnJhbWUqIGZyYW1lKCkgY29u
c3QgeyByZXR1cm4gbV9mcmFtZTsgfQorICAgIEZyYW1lKiBmcmFtZSgpIGNvbnN0IHsgcmV0dXJu
IG1fZnJhbWUuZ2V0KCk7IH0KIAogcHJpdmF0ZToKLSAgICBib29sIGlzVmFsaWQoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBtX2ZyYW1lOyB9CisgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gISFtX2ZyYW1lOyB9CiAKLSAgICBGcmFtZSogbV9mcmFtZTsKKyAgICBX
ZWFrUHRyPEZyYW1lPiBtX2ZyYW1lOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcAppbmRleCBlMTdk
ZTIzNjYxMzhlYmIyMDJhNGU3NjFlMGUwODIwNDAwOTAwMmE2Li42NWVmZWIyNDBkYWNhMjZiNDRi
OGRiM2QwNWVmYjg0MGVkMzJkZjU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcApAQCAtNDE2LDcgKzQxNiw3
IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjp1cGRhdGUoRnJhbWUmIGZyYW1lLCBBcHBs
aWNhdGlvbkNhY2hlVXBkYXRlT3B0aW9uIHVwCiAgICAgfQogCiAgICAgQVNTRVJUKCFtX2ZyYW1l
KTsKLSAgICBtX2ZyYW1lID0gJmZyYW1lOworICAgIG1fZnJhbWUgPSBtYWtlV2Vha1B0cihmcmFt
ZSk7CiAKICAgICBzZXRVcGRhdGVTdGF0dXMoQ2hlY2tpbmcpOwogCkBAIC00MzcsNyArNDM3LDcg
QEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OnVwZGF0ZShGcmFtZSYgZnJhbWUsIEFwcGxp
Y2F0aW9uQ2FjaGVVcGRhdGVPcHRpb24gdXAKICAgICBhdXRvIHJlcXVlc3QgPSBjcmVhdGVSZXF1
ZXN0KFVSTCB7IG1fbWFuaWZlc3RVUkwgfSwgbV9uZXdlc3RDYWNoZSA/IG1fbmV3ZXN0Q2FjaGUt
Pm1hbmlmZXN0UmVzb3VyY2UoKSA6IG51bGxwdHIpOwogCiAgICAgbV9jdXJyZW50UmVzb3VyY2VJ
ZGVudGlmaWVyID0gbV9mcmFtZS0+cGFnZSgpLT5wcm9ncmVzcygpLmNyZWF0ZVVuaXF1ZUlkZW50
aWZpZXIoKTsKLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxTZW5kUmVxdWVzdCht
X2ZyYW1lLCBtX2N1cnJlbnRSZXNvdXJjZUlkZW50aWZpZXIsIG1fZnJhbWUtPmxvYWRlcigpLmRv
Y3VtZW50TG9hZGVyKCksIHJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2UgeyB9KTsKKyAgICBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxTZW5kUmVxdWVzdChtX2ZyYW1lLmdldCgpLCBtX2N1
cnJlbnRSZXNvdXJjZUlkZW50aWZpZXIsIG1fZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVy
KCksIHJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2UgeyB9KTsKIAogICAgIG1fbWFuaWZlc3RMb2Fk
ZXIgPSBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXI6OmNyZWF0ZShBcHBsaWNhdGlvbkNh
Y2hlUmVzb3VyY2U6OlR5cGU6Ok1hbmlmZXN0LCBkb2N1bWVudExvYWRlci5jYWNoZWRSZXNvdXJj
ZUxvYWRlcigpLCBXVEZNb3ZlKHJlcXVlc3QpLCBbdGhpc10gKGF1dG8mJiByZXNvdXJjZU9yRXJy
b3IpIHsKICAgICAgICAgLy8gJ3RoaXMnIGlzIG9ubHkgdmFsaWQgaWYgcmV0dXJuZWQgdmFsdWUg
aXMgbm90IEVycm9yOjpBYm9ydC4KQEAgLTQ0Nyw3ICs0NDcsNyBAQCB2b2lkIEFwcGxpY2F0aW9u
Q2FjaGVHcm91cDo6dXBkYXRlKEZyYW1lJiBmcmFtZSwgQXBwbGljYXRpb25DYWNoZVVwZGF0ZU9w
dGlvbiB1cAogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIGlmIChlcnJvciA9
PSBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXI6OkVycm9yOjpDYW5ub3RDcmVhdGVSZXNv
dXJjZSkgewogICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgZ2V0IGJhY2sgdGhl
IGVycm9yIGZyb20gQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyIGxldmVsLgotICAgICAg
ICAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmFpbExvYWRpbmcobV9mcmFt
ZSwgbV9mcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKSwgbV9jdXJyZW50UmVzb3VyY2VJ
ZGVudGlmaWVyLCBSZXNvdXJjZUVycm9yIHsgUmVzb3VyY2VFcnJvcjo6VHlwZTo6QWNjZXNzQ29u
dHJvbCB9KTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZh
aWxMb2FkaW5nKG1fZnJhbWUuZ2V0KCksIG1fZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVy
KCksIG1fY3VycmVudFJlc291cmNlSWRlbnRpZmllciwgUmVzb3VyY2VFcnJvciB7IFJlc291cmNl
RXJyb3I6OlR5cGU6OkFjY2Vzc0NvbnRyb2wgfSk7CiAgICAgICAgICAgICAgICAgdGhpcy0+Y2Fj
aGVVcGRhdGVGYWlsZWQoKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9
CkBAIC00OTQsNyArNDk0LDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRpZEZpbmlz
aExvYWRpbmdFbnRyeShjb25zdCBVUkwmIGVudHJ5VVJMKQogewogICAgIC8vIEZJWE1FOiBXZSBz
aG91bGQgaGF2ZSBOZXR3b3JrTG9hZE1ldHJpY3MgZm9yIEFwcGxpY2F0aW9uQ2FjaGUgbG9hZHMu
CiAgICAgTmV0d29ya0xvYWRNZXRyaWNzIGVtcHR5TWV0cmljczsKLSAgICBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmRpZEZpbmlzaExvYWRpbmcobV9mcmFtZSwgbV9mcmFtZS0+bG9hZGVyKCku
ZG9jdW1lbnRMb2FkZXIoKSwgbV9jdXJyZW50UmVzb3VyY2VJZGVudGlmaWVyLCBlbXB0eU1ldHJp
Y3MsIG51bGxwdHIpOworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmluaXNoTG9h
ZGluZyhtX2ZyYW1lLmdldCgpLCBtX2ZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLCBt
X2N1cnJlbnRSZXNvdXJjZUlkZW50aWZpZXIsIGVtcHR5TWV0cmljcywgbnVsbHB0cik7CiAKICAg
ICBBU1NFUlQobV9wZW5kaW5nRW50cmllcy5jb250YWlucyhlbnRyeVVSTC5zdHJpbmcoKSkpOwog
ICAgIApAQCAtNTQzLDcgKzU0Myw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRG
YWlsTG9hZGluZ0VudHJ5KEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6CiAgICAgLy8g
RklYTUU6IFdlIHNob3VsZCBnZXQgYmFjayB0aGUgZXJyb3IgZnJvbSBBcHBsaWNhdGlvbkNhY2hl
UmVzb3VyY2VMb2FkZXIgbGV2ZWwuCiAgICAgUmVzb3VyY2VFcnJvciByZXNvdXJjZUVycm9yIHsg
ZXJyb3IgPT0gQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyOjpFcnJvcjo6Q2Fubm90Q3Jl
YXRlUmVzb3VyY2UgPyBSZXNvdXJjZUVycm9yOjpUeXBlOjpBY2Nlc3NDb250cm9sIDogUmVzb3Vy
Y2VFcnJvcjo6VHlwZTo6R2VuZXJhbCB9OwogCi0gICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpkaWRGYWlsTG9hZGluZyhtX2ZyYW1lLCBtX2ZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRl
cigpLCBtX2N1cnJlbnRSZXNvdXJjZUlkZW50aWZpZXIsIHJlc291cmNlRXJyb3IpOworICAgIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmFpbExvYWRpbmcobV9mcmFtZS5nZXQoKSwgbV9m
cmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKSwgbV9jdXJyZW50UmVzb3VyY2VJZGVudGlm
aWVyLCByZXNvdXJjZUVycm9yKTsKIAogICAgIFVSTCB1cmwoZW50cnlVUkwpOwogICAgIHVybC5y
ZW1vdmVGcmFnbWVudElkZW50aWZpZXIoKTsKQEAgLTY2MywxNyArNjYzLDE3IEBAIHZvaWQgQXBw
bGljYXRpb25DYWNoZUdyb3VwOjpkaWRGYWlsTG9hZGluZ01hbmlmZXN0KEFwcGxpY2F0aW9uQ2Fj
aGVSZXNvdXJjZUxvYWRlCiAgICAgICAgIGNhY2hlVXBkYXRlRmFpbGVkKCk7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyOjpFcnJvcjo6Tm90
Rm91bmQ6Ci0gICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmFpbExvYWRpbmco
bV9mcmFtZSwgbV9mcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKSwgbV9jdXJyZW50UmVz
b3VyY2VJZGVudGlmaWVyLCBtX2ZyYW1lLT5sb2FkZXIoKS5jYW5jZWxsZWRFcnJvcihtX21hbmlm
ZXN0TG9hZGVyLT5yZXNvdXJjZSgpLT5yZXNvdXJjZVJlcXVlc3QoKSkpOworICAgICAgICBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZhaWxMb2FkaW5nKG1fZnJhbWUuZ2V0KCksIG1fZnJh
bWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCksIG1fY3VycmVudFJlc291cmNlSWRlbnRpZmll
ciwgbV9mcmFtZS0+bG9hZGVyKCkuY2FuY2VsbGVkRXJyb3IobV9tYW5pZmVzdExvYWRlci0+cmVz
b3VyY2UoKS0+cmVzb3VyY2VSZXF1ZXN0KCkpKTsKICAgICAgICAgbV9mcmFtZS0+ZG9jdW1lbnQo
KS0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6QXBwQ2FjaGUsIE1lc3NhZ2VMZXZl
bDo6RXJyb3IsIG1ha2VTdHJpbmcoIkFwcGxpY2F0aW9uIENhY2hlIG1hbmlmZXN0IGNvdWxkIG5v
dCBiZSBmZXRjaGVkLCBiZWNhdXNlIHRoZSBtYW5pZmVzdCBoYWQgYSAiLCBtX21hbmlmZXN0TG9h
ZGVyLT5yZXNvdXJjZSgpLT5yZXNwb25zZSgpLmh0dHBTdGF0dXNDb2RlKCksICIgcmVzcG9uc2Uu
IikpOwogICAgICAgICBtYW5pZmVzdE5vdEZvdW5kKCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyOjpFcnJvcjo6Tm90T0s6Ci0gICAgICAg
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmFpbExvYWRpbmcobV9mcmFtZSwgbV9mcmFt
ZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKSwgbV9jdXJyZW50UmVzb3VyY2VJZGVudGlmaWVy
LCBtX2ZyYW1lLT5sb2FkZXIoKS5jYW5jZWxsZWRFcnJvcihtX21hbmlmZXN0TG9hZGVyLT5yZXNv
dXJjZSgpLT5yZXNvdXJjZVJlcXVlc3QoKSkpOworICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmRpZEZhaWxMb2FkaW5nKG1fZnJhbWUuZ2V0KCksIG1fZnJhbWUtPmxvYWRlcigpLmRv
Y3VtZW50TG9hZGVyKCksIG1fY3VycmVudFJlc291cmNlSWRlbnRpZmllciwgbV9mcmFtZS0+bG9h
ZGVyKCkuY2FuY2VsbGVkRXJyb3IobV9tYW5pZmVzdExvYWRlci0+cmVzb3VyY2UoKS0+cmVzb3Vy
Y2VSZXF1ZXN0KCkpKTsKICAgICAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+YWRkQ29uc29sZU1l
c3NhZ2UoTWVzc2FnZVNvdXJjZTo6QXBwQ2FjaGUsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIG1ha2VT
dHJpbmcoIkFwcGxpY2F0aW9uIENhY2hlIG1hbmlmZXN0IGNvdWxkIG5vdCBiZSBmZXRjaGVkLCBi
ZWNhdXNlIHRoZSBtYW5pZmVzdCBoYWQgYSAiLCBtX21hbmlmZXN0TG9hZGVyLT5yZXNvdXJjZSgp
LT5yZXNwb25zZSgpLmh0dHBTdGF0dXNDb2RlKCksICIgcmVzcG9uc2UuIikpOwogICAgICAgICBj
YWNoZVVwZGF0ZUZhaWxlZCgpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEFwcGxpY2F0aW9u
Q2FjaGVSZXNvdXJjZUxvYWRlcjo6RXJyb3I6OlJlZGlyZWN0Rm9yYmlkZGVuOgotICAgICAgICBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZhaWxMb2FkaW5nKG1fZnJhbWUsIG1fZnJhbWUt
PmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCksIG1fY3VycmVudFJlc291cmNlSWRlbnRpZmllciwg
bV9mcmFtZS0+bG9hZGVyKCkuY2FuY2VsbGVkRXJyb3IobV9tYW5pZmVzdExvYWRlci0+cmVzb3Vy
Y2UoKS0+cmVzb3VyY2VSZXF1ZXN0KCkpKTsKKyAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpkaWRGYWlsTG9hZGluZyhtX2ZyYW1lLmdldCgpLCBtX2ZyYW1lLT5sb2FkZXIoKS5kb2N1
bWVudExvYWRlcigpLCBtX2N1cnJlbnRSZXNvdXJjZUlkZW50aWZpZXIsIG1fZnJhbWUtPmxvYWRl
cigpLmNhbmNlbGxlZEVycm9yKG1fbWFuaWZlc3RMb2FkZXItPnJlc291cmNlKCktPnJlc291cmNl
UmVxdWVzdCgpKSk7CiAgICAgICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPmFkZENvbnNvbGVNZXNz
YWdlKE1lc3NhZ2VTb3VyY2U6OkFwcENhY2hlLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCAiQXBwbGlj
YXRpb24gQ2FjaGUgbWFuaWZlc3QgY291bGQgbm90IGJlIGZldGNoZWQsIGJlY2F1c2UgYSByZWRp
cmVjdGlvbiB3YXMgYXR0ZW1wdGVkLiJfcyk7CiAgICAgICAgIGNhY2hlVXBkYXRlRmFpbGVkKCk7
CiAgICAgICAgIGJyZWFrOwpAQCAtODk5LDcgKzg5OSw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNo
ZUdyb3VwOjpzdGFydExvYWRpbmdFbnRyeSgpCiAgICAgYXV0byByZXF1ZXN0ID0gY3JlYXRlUmVx
dWVzdChVUkwgeyB7IH0sIGZpcnN0UGVuZGluZ0VudHJ5VVJMIH0sIG1fbmV3ZXN0Q2FjaGUgPyBt
X25ld2VzdENhY2hlLT5yZXNvdXJjZUZvclVSTChmaXJzdFBlbmRpbmdFbnRyeVVSTCkgOiBudWxs
cHRyKTsKIAogICAgIG1fY3VycmVudFJlc291cmNlSWRlbnRpZmllciA9IG1fZnJhbWUtPnBhZ2Uo
KS0+cHJvZ3Jlc3MoKS5jcmVhdGVVbmlxdWVJZGVudGlmaWVyKCk7Ci0gICAgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjp3aWxsU2VuZFJlcXVlc3QobV9mcmFtZSwgbV9jdXJyZW50UmVzb3VyY2VJ
ZGVudGlmaWVyLCBtX2ZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLCByZXF1ZXN0LCBS
ZXNvdXJjZVJlc3BvbnNlIHsgfSk7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxs
U2VuZFJlcXVlc3QobV9mcmFtZS5nZXQoKSwgbV9jdXJyZW50UmVzb3VyY2VJZGVudGlmaWVyLCBt
X2ZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLCByZXF1ZXN0LCBSZXNvdXJjZVJlc3Bv
bnNlIHsgfSk7CiAKICAgICBhdXRvJiBkb2N1bWVudExvYWRlciA9ICptX2ZyYW1lLT5sb2FkZXIo
KS5kb2N1bWVudExvYWRlcigpOwogICAgIGF1dG8gcmVxdWVzdFVSTCA9IHJlcXVlc3QudXJsKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZUdyb3VwLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZUdyb3VwLmgKaW5kZXggMDFjODE3NmJjZDVjMTE3ZGU5N2JkY2Y1YmIzYTI2ODgxYjY0YTI4
Yi4uNjM3MWZhNThlYmM2NTQwOTUwMTJlMDNhNGU3ZDRlNjRiNDBiMWI5YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAu
aApAQCAtMTU5LDcgKzE1OSw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBGcmFtZSB1c2VkIGZvciBm
ZXRjaGluZyByZXNvdXJjZXMgd2hlbiB1cGRhdGluZy4KICAgICAvLyBGSVhNRTogQW4gdXBkYXRl
IHN0YXJ0ZWQgYnkgYSBwYXJ0aWN1bGFyIGZyYW1lIHNob3VsZCBub3Qgc3RvcCBpZiBpdCBpcyBk
ZXN0cm95ZWQsIGJ1dCB0aGVyZSBhcmUgb3RoZXIgZnJhbWVzIGFzc29jaWF0ZWQgd2l0aCB0aGUg
c2FtZSBjYWNoZSBncm91cC4KLSAgICBGcmFtZSogbV9mcmFtZSB7IG51bGxwdHIgfTsKKyAgICBX
ZWFrUHRyPEZyYW1lPiBtX2ZyYW1lOwogICAKICAgICAvLyBBbiBvYnNvbGV0ZSBjYWNoZSBncm91
cCBpcyBuZXZlciBzdG9yZWQsIGJ1dCB0aGUgb3Bwb3NpdGUgaXMgbm90IHRydWUgLSBzdG9yaW5n
IG1heSBmYWlsIGZvciBtdWx0aXBsZSByZWFzb25zLCBzdWNoIGFzIGV4Y2VlZGluZyBkaXNrIHF1
b3RhLgogICAgIHVuc2lnbmVkIG1fc3RvcmFnZUlEIHsgMCB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9BYnN0cmFjdEZyYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Fic3Ry
YWN0RnJhbWUuaAppbmRleCA5OTVhMzYxMjgyMGE2ZmY0MTRhYzBkMTA0ZWRjNDg5MjQ4NzJmZjRm
Li41YTE1N2I0NjliMTE1ZjRmNWQ5Y2Y2OGE3ZTRkNjFjZWU2NTRjOTg2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0Fic3RyYWN0RnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0Fic3RyYWN0RnJhbWUuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSA8d3RmL1Jl
Zi5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0
Zi9XZWFrUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMzQsNyArMzUsNyBAQCBj
bGFzcyBBYnN0cmFjdERPTVdpbmRvdzsKIGNsYXNzIFdpbmRvd1Byb3h5OwogCiAvLyBGSVhNRTog
UmVuYW1lIEZyYW1lIHRvIExvY2FsRnJhbWUgYW5kIEFic3RyYWN0RnJhbWUgdG8gRnJhbWUuCi1j
bGFzcyBBYnN0cmFjdEZyYW1lIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEFic3RyYWN0
RnJhbWU+IHsKK2NsYXNzIEFic3RyYWN0RnJhbWUgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50
ZWQ8QWJzdHJhY3RGcmFtZT4sIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxBYnN0cmFjdEZyYW1lPiB7
CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+QWJzdHJhY3RGcmFtZSgpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUu
Y3BwCmluZGV4IDU5ZGZmZmExYTZjMmM4ZGRjMzE2ZmVjZTAwZWZmOGY1MjI2ZTQ5YjkuLjU3YWQ5
MDJjNDk1MDU2NDM5OTIwYjlmMmU1NmQ3YjgyN2MyNDc4Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3Bw
CkBAIC0xNjMsNyArMTYzLDcgQEAgRnJhbWU6OkZyYW1lKFBhZ2UmIHBhZ2UsIEhUTUxGcmFtZU93
bmVyRWxlbWVudCogb3duZXJFbGVtZW50LCBVbmlxdWVSZWY8RnJhbWVMb2EKIAogICAgIGlmIChv
d25lckVsZW1lbnQpIHsKICAgICAgICAgbV9tYWluRnJhbWUuc2VsZk9ubHlSZWYoKTsKLSAgICAg
ICAgb3duZXJFbGVtZW50LT5zZXRDb250ZW50RnJhbWUodGhpcyk7CisgICAgICAgIG93bmVyRWxl
bWVudC0+c2V0Q29udGVudEZyYW1lKCp0aGlzKTsKICAgICB9CiAKICNpZm5kZWYgTkRFQlVHCkBA
IC0yMDcsMTQgKzIwNywxNCBAQCBGcmFtZTo6fkZyYW1lKCkKICAgICAgICAgbV9tYWluRnJhbWUu
c2VsZk9ubHlEZXJlZigpOwogfQogCi12b2lkIEZyYW1lOjphZGREZXN0cnVjdGlvbk9ic2VydmVy
KEZyYW1lRGVzdHJ1Y3Rpb25PYnNlcnZlciogb2JzZXJ2ZXIpCit2b2lkIEZyYW1lOjphZGREZXN0
cnVjdGlvbk9ic2VydmVyKEZyYW1lRGVzdHJ1Y3Rpb25PYnNlcnZlciYgb2JzZXJ2ZXIpCiB7Ci0g
ICAgbV9kZXN0cnVjdGlvbk9ic2VydmVycy5hZGQob2JzZXJ2ZXIpOworICAgIG1fZGVzdHJ1Y3Rp
b25PYnNlcnZlcnMuYWRkKCZvYnNlcnZlcik7CiB9CiAKLXZvaWQgRnJhbWU6OnJlbW92ZURlc3Ry
dWN0aW9uT2JzZXJ2ZXIoRnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyKiBvYnNlcnZlcikKK3ZvaWQg
RnJhbWU6OnJlbW92ZURlc3RydWN0aW9uT2JzZXJ2ZXIoRnJhbWVEZXN0cnVjdGlvbk9ic2VydmVy
JiBvYnNlcnZlcikKIHsKLSAgICBtX2Rlc3RydWN0aW9uT2JzZXJ2ZXJzLnJlbW92ZShvYnNlcnZl
cik7CisgICAgbV9kZXN0cnVjdGlvbk9ic2VydmVycy5yZW1vdmUoJm9ic2VydmVyKTsKIH0KIAog
dm9pZCBGcmFtZTo6c2V0VmlldyhSZWZQdHI8RnJhbWVWaWV3PiYmIHZpZXcpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1l
LmgKaW5kZXggMTI4OTA4N2MwZGZlNGM1NTMwOTVlNjM5OWYyNGM4ZmQ1MTZjZmIwMS4uYzk4NTk4
MjdhYWI5NjI0OWUyZGJhOTdjZWRiOWY4ODM3MzhmMDNiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaApAQCAt
MTQ4LDggKzE0OCw4IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIERPTVdpbmRvdyog
d2luZG93KCkgY29uc3Q7CiAKLSAgICB2b2lkIGFkZERlc3RydWN0aW9uT2JzZXJ2ZXIoRnJhbWVE
ZXN0cnVjdGlvbk9ic2VydmVyKik7Ci0gICAgdm9pZCByZW1vdmVEZXN0cnVjdGlvbk9ic2VydmVy
KEZyYW1lRGVzdHJ1Y3Rpb25PYnNlcnZlciopOworICAgIHZvaWQgYWRkRGVzdHJ1Y3Rpb25PYnNl
cnZlcihGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXImKTsKKyAgICB2b2lkIHJlbW92ZURlc3RydWN0
aW9uT2JzZXJ2ZXIoRnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyJik7CiAKICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHdpbGxEZXRhY2hQYWdlKCk7CiAgICAgdm9pZCBkZXRhY2hGcm9tUGFnZSgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXIuY3BwCmlu
ZGV4IDZiMGFlNTMzYjAyYmNhYzQ2MWZhZjA0N2U2OGU3MzdkYjVkMmI0YzUuLjhmM2ZlMDA0OGIx
NTZmZjE2YTMxYzY2ZjM3MzhkZmMwY2RkMzc2ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0ZyYW1lRGVzdHJ1Y3Rpb25PYnNlcnZlci5jcHAKQEAgLTQyLDE1ICs0MiwyMCBAQCBGcmFt
ZURlc3RydWN0aW9uT2JzZXJ2ZXI6On5GcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXIoKQogCiB9CiAK
K0ZyYW1lKiBGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXI6OmZyYW1lKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV9mcmFtZS5nZXQoKTsKK30KKwogdm9pZCBGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXI6
Om9ic2VydmVGcmFtZShGcmFtZSogZnJhbWUpCiB7CiAgICAgaWYgKG1fZnJhbWUpCi0gICAgICAg
IG1fZnJhbWUtPnJlbW92ZURlc3RydWN0aW9uT2JzZXJ2ZXIodGhpcyk7CisgICAgICAgIG1fZnJh
bWUtPnJlbW92ZURlc3RydWN0aW9uT2JzZXJ2ZXIoKnRoaXMpOwogCi0gICAgbV9mcmFtZSA9IGZy
YW1lOworICAgIG1fZnJhbWUgPSBtYWtlV2Vha1B0cihmcmFtZSk7CiAKICAgICBpZiAobV9mcmFt
ZSkKLSAgICAgICAgbV9mcmFtZS0+YWRkRGVzdHJ1Y3Rpb25PYnNlcnZlcih0aGlzKTsKKyAgICAg
ICAgbV9mcmFtZS0+YWRkRGVzdHJ1Y3Rpb25PYnNlcnZlcigqdGhpcyk7CiB9CiAKIHZvaWQgRnJh
bWVEZXN0cnVjdGlvbk9ic2VydmVyOjpmcmFtZURlc3Ryb3llZCgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lRGVzdHJ1Y3Rpb25PYnNlcnZlci5oIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXIuaAppbmRleCAwZGIzNDM1NTgzZmFlYWE5
YjUyNjFjNzFhZDhmMzJhMjQ2MDVhYTgyLi42YjYyYzAzZDc4NDViMDhhZDFlZGQzMjVlYzExNzI2
MzMzY2Y4Nzk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lRGVzdHJ1Y3Rp
b25PYnNlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVEZXN0cnVjdGlvbk9i
c2VydmVyLmgKQEAgLTI1LDYgKzI1LDggQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlIDx3
dGYvV2Vha1B0ci5oPgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZyYW1lOwpAQCAt
MzYsMTMgKzM4LDEzIEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQg
ZnJhbWVEZXN0cm95ZWQoKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgd2lsbERl
dGFjaFBhZ2UoKTsKIAotICAgIEZyYW1lKiBmcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWU7
IH0KKyAgICBXRUJDT1JFX0VYUE9SVCBGcmFtZSogZnJhbWUoKSBjb25zdDsKIAogcHJvdGVjdGVk
OgogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgfkZyYW1lRGVzdHJ1Y3Rpb25PYnNlcnZlcigp
OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgb2JzZXJ2ZUZyYW1lKEZyYW1lKik7CiAKLSAgICBG
cmFtZSogbV9mcmFtZTsKKyAgICBXZWFrUHRyPEZyYW1lPiBtX2ZyYW1lOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVRy
ZWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVRyZWUuY3BwCmluZGV4IDExOGFiZmE1
ODI5YWMwYzRlNmU2ZWQzYzU1NjQyNzRiMjQ2MTI1YTUuLjdlY2JmZmNjMzViMDNkY2VmNTI2M2Vi
OWM0Yjc2ZGQ5N2ZlNzY1ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVU
cmVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVHJlZS5jcHAKQEAgLTM2LDYg
KzM2LDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorRnJhbWVUcmVlOjpGcmFtZVRyZWUo
RnJhbWUmIHRoaXNGcmFtZSwgRnJhbWUqIHBhcmVudEZyYW1lKQorICAgIDogbV90aGlzRnJhbWUo
dGhpc0ZyYW1lKQorICAgICwgbV9wYXJlbnQobWFrZVdlYWtQdHIocGFyZW50RnJhbWUpKQorewor
fQorCiBGcmFtZVRyZWU6On5GcmFtZVRyZWUoKQogewogICAgIGZvciAoRnJhbWUqIGNoaWxkID0g
Zmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+dHJlZSgpLm5leHRTaWJsaW5nKCkp
CkBAIC02MSwxNSArNjcsMTUgQEAgdm9pZCBGcmFtZVRyZWU6OmNsZWFyTmFtZSgpCiAKIEZyYW1l
KiBGcmFtZVRyZWU6OnBhcmVudCgpIGNvbnN0IAogeyAKLSAgICByZXR1cm4gbV9wYXJlbnQ7Cisg
ICAgcmV0dXJuIG1fcGFyZW50LmdldCgpOwogfQogCiB2b2lkIEZyYW1lVHJlZTo6YXBwZW5kQ2hp
bGQoRnJhbWUmIGNoaWxkKQogewogICAgIEFTU0VSVChjaGlsZC5wYWdlKCkgPT0gbV90aGlzRnJh
bWUucGFnZSgpKTsKLSAgICBjaGlsZC50cmVlKCkubV9wYXJlbnQgPSAmbV90aGlzRnJhbWU7Ci0g
ICAgRnJhbWUqIG9sZExhc3QgPSBtX2xhc3RDaGlsZDsKLSAgICBtX2xhc3RDaGlsZCA9ICZjaGls
ZDsKKyAgICBjaGlsZC50cmVlKCkubV9wYXJlbnQgPSBtYWtlV2Vha1B0cihtX3RoaXNGcmFtZSk7
CisgICAgV2Vha1B0cjxGcmFtZT4gb2xkTGFzdCA9IG1fbGFzdENoaWxkOworICAgIG1fbGFzdENo
aWxkID0gbWFrZVdlYWtQdHIoY2hpbGQpOwogCiAgICAgaWYgKG9sZExhc3QpIHsKICAgICAgICAg
Y2hpbGQudHJlZSgpLm1fcHJldmlvdXNTaWJsaW5nID0gb2xkTGFzdDsKQEAgLTg0LDcgKzkwLDcg
QEAgdm9pZCBGcmFtZVRyZWU6OmFwcGVuZENoaWxkKEZyYW1lJiBjaGlsZCkKIAogdm9pZCBGcmFt
ZVRyZWU6OnJlbW92ZUNoaWxkKEZyYW1lJiBjaGlsZCkKIHsKLSAgICBGcmFtZSomIG5ld0xvY2F0
aW9uRm9yUHJldmlvdXMgPSBtX2xhc3RDaGlsZCA9PSAmY2hpbGQgPyBtX2xhc3RDaGlsZCA6IGNo
aWxkLnRyZWUoKS5tX25leHRTaWJsaW5nLT50cmVlKCkubV9wcmV2aW91c1NpYmxpbmc7CisgICAg
V2Vha1B0cjxGcmFtZT4mIG5ld0xvY2F0aW9uRm9yUHJldmlvdXMgPSBtX2xhc3RDaGlsZCA9PSAm
Y2hpbGQgPyBtX2xhc3RDaGlsZCA6IGNoaWxkLnRyZWUoKS5tX25leHRTaWJsaW5nLT50cmVlKCku
bV9wcmV2aW91c1NpYmxpbmc7CiAgICAgUmVmUHRyPEZyYW1lPiYgbmV3TG9jYXRpb25Gb3JOZXh0
ID0gbV9maXJzdENoaWxkID09ICZjaGlsZCA/IG1fZmlyc3RDaGlsZCA6IGNoaWxkLnRyZWUoKS5t
X3ByZXZpb3VzU2libGluZy0+dHJlZSgpLm1fbmV4dFNpYmxpbmc7CiAKICAgICBjaGlsZC50cmVl
KCkubV9wYXJlbnQgPSBudWxscHRyOwpAQCAtNDIzLDcgKzQyOSw3IEBAIEZyYW1lKiBGcmFtZVRy
ZWU6OnRyYXZlcnNlTmV4dEluUG9zdE9yZGVyKENhbldyYXAgY2FuV3JhcCkgY29uc3QKICAgICBp
ZiAobV9uZXh0U2libGluZykKICAgICAgICAgcmV0dXJuIG1fbmV4dFNpYmxpbmctPnRyZWUoKS5k
ZWVwRmlyc3RDaGlsZCgpOwogICAgIGlmIChtX3BhcmVudCkKLSAgICAgICAgcmV0dXJuIG1fcGFy
ZW50OworICAgICAgICByZXR1cm4gbV9wYXJlbnQuZ2V0KCk7CiAgICAgaWYgKGNhbldyYXAgPT0g
Q2FuV3JhcDo6WWVzKQogICAgICAgICByZXR1cm4gZGVlcEZpcnN0Q2hpbGQoKTsKICAgICByZXR1
cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVUcmVlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVHJlZS5oCmluZGV4IGQzZjY1ZmYyYTk1NTY5YTg5
MTliMmVjNGNlNzFjMjQzYmVmODZkNzEuLmUxNzA3MDFmMDFlNTIxMDA3Y2YxY2I5ZDViY2E5Y2U3
NDhkNGNjZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVUcmVlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVRyZWUuaApAQCAtMzQsMTQgKzM0LDcgQEAgY2xh
c3MgRnJhbWVUcmVlIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGlu
dmFsaWRDb3VudCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPigtMSk7CiAKLSAgICBGcmFtZVRyZWUo
RnJhbWUmIHRoaXNGcmFtZSwgRnJhbWUqIHBhcmVudEZyYW1lKQotICAgICAgICA6IG1fdGhpc0Zy
YW1lKHRoaXNGcmFtZSkKLSAgICAgICAgLCBtX3BhcmVudChwYXJlbnRGcmFtZSkKLSAgICAgICAg
LCBtX3ByZXZpb3VzU2libGluZyhudWxscHRyKQotICAgICAgICAsIG1fbGFzdENoaWxkKG51bGxw
dHIpCi0gICAgICAgICwgbV9zY29wZWRDaGlsZENvdW50KGludmFsaWRDb3VudCkKLSAgICB7Ci0g
ICAgfQorICAgIEZyYW1lVHJlZShGcmFtZSYgdGhpc0ZyYW1lLCBGcmFtZSogcGFyZW50RnJhbWUp
OwogCiAgICAgfkZyYW1lVHJlZSgpOwogCkBAIC01Miw5ICs0NSw5IEBAIHB1YmxpYzoKICAgICBX
RUJDT1JFX0VYUE9SVCBGcmFtZSogcGFyZW50KCkgY29uc3Q7CiAgICAgCiAgICAgRnJhbWUqIG5l
eHRTaWJsaW5nKCkgY29uc3QgeyByZXR1cm4gbV9uZXh0U2libGluZy5nZXQoKTsgfQotICAgIEZy
YW1lKiBwcmV2aW91c1NpYmxpbmcoKSBjb25zdCB7IHJldHVybiBtX3ByZXZpb3VzU2libGluZzsg
fQorICAgIEZyYW1lKiBwcmV2aW91c1NpYmxpbmcoKSBjb25zdCB7IHJldHVybiBtX3ByZXZpb3Vz
U2libGluZy5nZXQoKTsgfQogICAgIEZyYW1lKiBmaXJzdENoaWxkKCkgY29uc3QgeyByZXR1cm4g
bV9maXJzdENoaWxkLmdldCgpOyB9Ci0gICAgRnJhbWUqIGxhc3RDaGlsZCgpIGNvbnN0IHsgcmV0
dXJuIG1fbGFzdENoaWxkOyB9CisgICAgRnJhbWUqIGxhc3RDaGlsZCgpIGNvbnN0IHsgcmV0dXJu
IG1fbGFzdENoaWxkLmdldCgpOyB9CiAKICAgICBGcmFtZSogZmlyc3RSZW5kZXJlZENoaWxkKCkg
Y29uc3Q7CiAgICAgRnJhbWUqIG5leHRSZW5kZXJlZFNpYmxpbmcoKSBjb25zdDsKQEAgLTEwMCwx
NSArOTMsMTUgQEAgcHJpdmF0ZToKIAogICAgIEZyYW1lJiBtX3RoaXNGcmFtZTsKIAotICAgIEZy
YW1lKiBtX3BhcmVudDsKKyAgICBXZWFrUHRyPEZyYW1lPiBtX3BhcmVudDsKICAgICBBdG9tU3Ry
aW5nIG1fbmFtZTsgLy8gVGhlIGFjdHVhbCBmcmFtZSBuYW1lIChtYXkgYmUgZW1wdHkpLgogICAg
IEF0b21TdHJpbmcgbV91bmlxdWVOYW1lOwogCiAgICAgUmVmUHRyPEZyYW1lPiBtX25leHRTaWJs
aW5nOwotICAgIEZyYW1lKiBtX3ByZXZpb3VzU2libGluZzsKKyAgICBXZWFrUHRyPEZyYW1lPiBt
X3ByZXZpb3VzU2libGluZzsKICAgICBSZWZQdHI8RnJhbWU+IG1fZmlyc3RDaGlsZDsKLSAgICBG
cmFtZSogbV9sYXN0Q2hpbGQ7Ci0gICAgbXV0YWJsZSB1bnNpZ25lZCBtX3Njb3BlZENoaWxkQ291
bnQ7CisgICAgV2Vha1B0cjxGcmFtZT4gbV9sYXN0Q2hpbGQ7CisgICAgbXV0YWJsZSB1bnNpZ25l
ZCBtX3Njb3BlZENoaWxkQ291bnQgeyBpbnZhbGlkQ291bnQgfTsKICAgICBtdXRhYmxlIHVpbnQ2
NF90IG1fZnJhbWVJREdlbmVyYXRvciB7IDAgfTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclNjcm9sbGJhci5jcHAKaW5kZXggYWIxN2FlODE3NzFkODdhOGZhMThmYzQy
N2Q0YzcwY2FkYzBkNzQ2Ni4uMWRmYjYzZjBmOThmNDU5YzM1N2YxOGVjMjViYzQxMGM1YjFkMDYy
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhci5jcHAKQEAg
LTQ0LDcgKzQ0LDcgQEAgUmVmPFNjcm9sbGJhcj4gUmVuZGVyU2Nyb2xsYmFyOjpjcmVhdGVDdXN0
b21TY3JvbGxiYXIoU2Nyb2xsYWJsZUFyZWEmIHNjcm9sbGFibGUKIFJlbmRlclNjcm9sbGJhcjo6
UmVuZGVyU2Nyb2xsYmFyKFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYSwgU2Nyb2xsYmFy
T3JpZW50YXRpb24gb3JpZW50YXRpb24sIEVsZW1lbnQqIG93bmVyRWxlbWVudCwgRnJhbWUqIG93
bmluZ0ZyYW1lKQogICAgIDogU2Nyb2xsYmFyKHNjcm9sbGFibGVBcmVhLCBvcmllbnRhdGlvbiwg
U2Nyb2xsYmFyQ29udHJvbFNpemU6OlJlZ3VsYXIsIFJlbmRlclNjcm9sbGJhclRoZW1lOjpyZW5k
ZXJTY3JvbGxiYXJUaGVtZSgpLCB0cnVlKQogICAgICwgbV9vd25lckVsZW1lbnQob3duZXJFbGVt
ZW50KQotICAgICwgbV9vd25pbmdGcmFtZShvd25pbmdGcmFtZSkKKyAgICAsIG1fb3duaW5nRnJh
bWUobWFrZVdlYWtQdHIob3duaW5nRnJhbWUpKQogewogICAgIEFTU0VSVChvd25lckVsZW1lbnQg
fHwgb3duaW5nRnJhbWUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyU2Nyb2xsYmFyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xs
YmFyLmgKaW5kZXggYmYxNjI0NTg4M2IwNjJiZGQyY2QyNGZjYWM3YWExYTUyMWFiOGNlYS4uNTc2
MmM5YWQxMzExNDY3YjBkYzQ0OGI5N2Y2Mzc2NDA5NTlkYmFjMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXIuaApAQCAtODUsNyArODUsNyBAQCBwcml2YXRlOgog
ICAgIC8vIEZyYW1lVmlldyB3aGljaCB0aGlzIEVsZW1lbnQgcG9pbnRlciBjYW4gaW4gbm8gd2F5
IGtlZXAgYWxpdmUuIFNlZSB3ZWJraXQgYnVnIDgwNjEwLgogICAgIFJlZlB0cjxFbGVtZW50PiBt
X293bmVyRWxlbWVudDsKIAotICAgIEZyYW1lKiBtX293bmluZ0ZyYW1lOworICAgIFdlYWtQdHI8
RnJhbWU+IG1fb3duaW5nRnJhbWU7CiAgICAgSGFzaE1hcDx1bnNpZ25lZCwgUmVuZGVyUHRyPFJl
bmRlclNjcm9sbGJhclBhcnQ+PiBtX3BhcnRzOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCmluZGV4IGQ5NzExODg1MTJkYjY5ZjM5ZmIzY2U2
YjUxMGIzYTQzNmY0NGQ4MzMuLmIwMWEyMWY2NWZiYzk3NDMxMmZlY2Q1MjUyZmJlZGU5NTg4ODIx
YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1l
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAK
QEAgLTEwNiw3ICsxMDYsNyBAQCB2b2lkIFdlYkZyYW1lOjppbml0V2l0aENvcmVNYWluRnJhbWUo
V2ViUGFnZSYgcGFnZSwgRnJhbWUmIGNvcmVGcmFtZSkKIHsKICAgICBwYWdlLnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6RGlkQ3JlYXRlTWFpbkZyYW1lKGZyYW1lSUQoKSkpOwogCi0gICAg
bV9jb3JlRnJhbWUgPSAmY29yZUZyYW1lOworICAgIG1fY29yZUZyYW1lID0gbWFrZVdlYWtQdHIo
Y29yZUZyYW1lKTsKICAgICBtX2NvcmVGcmFtZS0+dHJlZSgpLnNldE5hbWUoU3RyaW5nKCkpOwog
ICAgIG1fY29yZUZyYW1lLT5pbml0KCk7CiB9CkBAIC0xMTcsNyArMTE3LDcgQEAgUmVmPFdlYkZy
YW1lPiBXZWJGcmFtZTo6Y3JlYXRlU3ViZnJhbWUoV2ViUGFnZSogcGFnZSwgY29uc3QgU3RyaW5n
JiBmcmFtZU5hbWUsIEgKICAgICBwYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRp
ZENyZWF0ZVN1YmZyYW1lKGZyYW1lLT5mcmFtZUlEKCkpKTsKIAogICAgIGF1dG8gY29yZUZyYW1l
ID0gRnJhbWU6OmNyZWF0ZShwYWdlLT5jb3JlUGFnZSgpLCBvd25lckVsZW1lbnQsIG1ha2VVbmlx
dWVSZWY8V2ViRnJhbWVMb2FkZXJDbGllbnQ+KGZyYW1lLmdldCgpKSk7Ci0gICAgZnJhbWUtPm1f
Y29yZUZyYW1lID0gY29yZUZyYW1lLnB0cigpOworICAgIGZyYW1lLT5tX2NvcmVGcmFtZSA9IG1h
a2VXZWFrUHRyKGNvcmVGcmFtZS5nZXQoKSk7CiAKICAgICBjb3JlRnJhbWUtPnRyZWUoKS5zZXRO
YW1lKGZyYW1lTmFtZSk7CiAgICAgaWYgKG93bmVyRWxlbWVudCkgewpAQCAtMTc3LDYgKzE3Nywx
MSBAQCBXZWJGcmFtZSogV2ViRnJhbWU6OmZyb21Db3JlRnJhbWUoY29uc3QgRnJhbWUmIGZyYW1l
KQogICAgIHJldHVybiAmd2ViRnJhbWVMb2FkZXJDbGllbnQtPndlYkZyYW1lKCk7CiB9CiAKK1dl
YkNvcmU6OkZyYW1lKiBXZWJGcmFtZTo6Y29yZUZyYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bV9jb3JlRnJhbWUuZ2V0KCk7Cit9CisKIEZyYW1lSW5mb0RhdGEgV2ViRnJhbWU6OmluZm8oKSBj
b25zdAogewogICAgIGF1dG8qIHBhcmVudCA9IHBhcmVudEZyYW1lKCk7CkBAIC0xODUsNyArMTkw
LDcgQEAgRnJhbWVJbmZvRGF0YSBXZWJGcmFtZTo6aW5mbygpIGNvbnN0CiAgICAgICAgIGlzTWFp
bkZyYW1lKCksCiAgICAgICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCB1c2UgdGhlIGZ1bGwgcmVx
dWVzdC4KICAgICAgICAgUmVzb3VyY2VSZXF1ZXN0KHVybCgpKSwKLSAgICAgICAgU2VjdXJpdHlP
cmlnaW5EYXRhOjpmcm9tRnJhbWUobV9jb3JlRnJhbWUpLAorICAgICAgICBTZWN1cml0eU9yaWdp
bkRhdGE6OmZyb21GcmFtZShtX2NvcmVGcmFtZS5nZXQoKSksCiAgICAgICAgIG1fZnJhbWVJRCwK
ICAgICAgICAgcGFyZW50ID8gT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiB7IHBh
cmVudC0+ZnJhbWVJRCgpIH0gOiBXVEY6Om51bGxvcHQsCiAgICAgfTsKQEAgLTUzMywxMyArNTM4
LDEzIEBAIEpTR2xvYmFsQ29udGV4dFJlZiBXZWJGcmFtZTo6anNDb250ZXh0Rm9yV29ybGQoSW5q
ZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCogd29ybGQpCiAKIGJvb2wgV2ViRnJhbWU6OmhhbmRsZXNQ
YWdlU2NhbGVHZXN0dXJlKCkgY29uc3QKIHsKLSAgICBhdXRvKiBwbHVnaW5WaWV3ID0gV2ViUGFn
ZTo6cGx1Z2luVmlld0ZvckZyYW1lKG1fY29yZUZyYW1lKTsKKyAgICBhdXRvKiBwbHVnaW5WaWV3
ID0gV2ViUGFnZTo6cGx1Z2luVmlld0ZvckZyYW1lKG1fY29yZUZyYW1lLmdldCgpKTsKICAgICBy
ZXR1cm4gcGx1Z2luVmlldyAmJiBwbHVnaW5WaWV3LT5oYW5kbGVzUGFnZVNjYWxlRmFjdG9yKCk7
CiB9CiAKIGJvb2wgV2ViRnJhbWU6OnJlcXVpcmVzVW5pZmllZFNjYWxlRmFjdG9yKCkgY29uc3QK
IHsKLSAgICBhdXRvKiBwbHVnaW5WaWV3ID0gV2ViUGFnZTo6cGx1Z2luVmlld0ZvckZyYW1lKG1f
Y29yZUZyYW1lKTsKKyAgICBhdXRvKiBwbHVnaW5WaWV3ID0gV2ViUGFnZTo6cGx1Z2luVmlld0Zv
ckZyYW1lKG1fY29yZUZyYW1lLmdldCgpKTsKICAgICByZXR1cm4gcGx1Z2luVmlldyAmJiBwbHVn
aW5WaWV3LT5yZXF1aXJlc1VuaWZpZWRTY2FsZUZhY3RvcigpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaAppbmRleCBkZTM1MzdjYjJkZjA0MzkzNGZi
OGM2M2I3ZDRiNjA3YWVkMGM0YzA4Li45NmJhYjBjNjJjZWQyNjhmYzhlNTUyYzVkMDIxMGFkNjNl
ODJmZjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJG
cmFtZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmgK
QEAgLTc4LDcgKzc4LDcgQEAgcHVibGljOgogICAgIFdlYlBhZ2UqIHBhZ2UoKSBjb25zdDsKIAog
ICAgIHN0YXRpYyBXZWJGcmFtZSogZnJvbUNvcmVGcmFtZShjb25zdCBXZWJDb3JlOjpGcmFtZSYp
OwotICAgIFdlYkNvcmU6OkZyYW1lKiBjb3JlRnJhbWUoKSBjb25zdCB7IHJldHVybiBtX2NvcmVG
cmFtZTsgfQorICAgIFdlYkNvcmU6OkZyYW1lKiBjb3JlRnJhbWUoKSBjb25zdDsKIAogICAgIEZy
YW1lSW5mb0RhdGEgaW5mbygpIGNvbnN0OwogICAgIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBm
cmFtZUlEKCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZUlEOyB9CkBAIC0xODQsNyArMTg0LDcgQEAg
cHVibGljOgogcHJpdmF0ZToKICAgICBXZWJGcmFtZSgpOwogCi0gICAgV2ViQ29yZTo6RnJhbWUq
IG1fY29yZUZyYW1lIHsgbnVsbHB0ciB9OworICAgIFdlYWtQdHI8V2ViQ29yZTo6RnJhbWU+IG1f
Y29yZUZyYW1lOwogCiAgICAgdWludDY0X3QgbV9wb2xpY3lMaXN0ZW5lcklEIHsgMCB9OwogICAg
IE9wdGlvbmFsPFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllcj4gbV9wb2xpY3lJZGVudGlm
aWVyOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413247</attachid>
            <date>2020-11-04 21:03:53 -0800</date>
            <delta_ts>2020-11-05 08:46:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218599-20201104210352.patch</filename>
            <type>text/plain</type>
            <size>45612</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5MTA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2M1N2IzZTZlMDJmMDcy
MzEwMDQzNTdmMjg2ZGVkNGI0YjgyNmQ4Zi4uYzA1ZWE1N2NkNmMxNzgyY2JjNGI2Yzg0NWY4MzVh
YWQ0OWZmMzVmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg3IEBACisyMDIwLTExLTA0ICBBbGV4
IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgU3RvcmUg
V2Vha1B0cjxGcmFtZT4gaW5zdGVhZCBvZiBGcmFtZSoKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxODU5OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIGNoYW5nZSBpbiBiZWhhdmlvciwgYnV0IHRoaXMg
cHJvYmFibHkgZml4ZXMgc29tZSBidWdzLgorCisgICAgICAgICogYmluZGluZ3MvanMvV2luZG93
UHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2luZG93UHJveHk6OldpbmRvd1Byb3h5KToK
KyAgICAgICAgKFdlYkNvcmU6OldpbmRvd1Byb3h5OjpmcmFtZSBjb25zdCk6CisgICAgICAgICog
YmluZGluZ3MvanMvV2luZG93UHJveHkuaDoKKyAgICAgICAgKFdlYkNvcmU6OldpbmRvd1Byb3h5
OjpmcmFtZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp3aWxsQmVSZW1vdmVkRnJvbUZyYW1lKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50OjpjYW5OYXZpZ2F0ZUludGVybmFsKToKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50OjpzZXREZXNpZ25Nb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50OjpnZXREZXNpZ25Nb2RlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBkb20vRG9jdW1l
bnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MRnJhbWVPd25lckVsZW1lbnQ6OnNldENvbnRlbnRGcmFtZSk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MRnJhbWVPd25lckVsZW1lbnQ6OmRpc2Nvbm5lY3RDb250ZW50RnJh
bWUpOgorICAgICAgICAqIGh0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50Lmg6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MRnJhbWVPd25lckVsZW1lbnQ6OmNvbnRlbnRGcmFtZSBjb25zdCk6CisgICAg
ICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpmcmFtZUZvcklkKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6ZnJhbWVJZCk6CisgICAgICAgICogaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2Fk
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OnN0b3BMb2FkaW5nKToK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmNvbW1pdExvYWQpOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnRMb2FkZXI6OmRldGFjaEZyb21GcmFtZSk6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudExvYWRlcjo6cmVtb3ZlU3VicmVzb3VyY2VMb2FkZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnRMb2FkZXI6OnN1YnJlc291cmNlTG9hZGVyRmluaXNoZWRMb2FkaW5nT25l
UGFydCk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50V3JpdGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50V3JpdGVyOjpjcmVhdGVEb2N1bWVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudFdyaXRlcjo6ZGVjb2Rlcik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFdy
aXRlcjo6c2V0RnJhbWUpOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFdyaXRlci5oOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnRXcml0ZXI6OnNldEZyYW1lKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2Fk
ZXI6OmRldGFjaEZyb21BbGxPcGVuZWRGcmFtZXMpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVM
b2FkZXI6Om9wZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6c2V0T3BlbmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpoYXNPcGVuZWRGcmFtZXMgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmFkZEV4dHJhRmllbGRzVG9SZXF1ZXN0
KToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvRnJh
bWVOZXR3b3JraW5nQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVOZXR3b3JraW5n
Q29udGV4dDo6RnJhbWVOZXR3b3JraW5nQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZU5ldHdvcmtpbmdDb250ZXh0OjpmcmFtZSBjb25zdCk6CisgICAgICAgICogbG9hZGVyL2FwcGNh
Y2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNh
dGlvbkNhY2hlR3JvdXA6OnVwZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNh
Y2hlR3JvdXA6OmRpZEZpbmlzaExvYWRpbmdFbnRyeSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBs
aWNhdGlvbkNhY2hlR3JvdXA6OmRpZEZhaWxMb2FkaW5nRW50cnkpOgorICAgICAgICAoV2ViQ29y
ZTo6QXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRGYWlsTG9hZGluZ01hbmlmZXN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6c3RhcnRMb2FkaW5nRW50cnkpOgor
ICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuaDoKKyAgICAg
ICAgKiBwYWdlL0Fic3RyYWN0RnJhbWUuaDoKKyAgICAgICAgKiBwYWdlL0ZyYW1lLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lOjpGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6
YWRkRGVzdHJ1Y3Rpb25PYnNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6cmVtb3Zl
RGVzdHJ1Y3Rpb25PYnNlcnZlcik6CisgICAgICAgICogcGFnZS9GcmFtZS5oOgorICAgICAgICAq
IHBhZ2UvRnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lRGVzdHJ1Y3Rpb25PYnNlcnZlcjo6ZnJhbWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyOjpvYnNlcnZlRnJhbWUpOgorICAgICAgICAqIHBhZ2Uv
RnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZURlc3Ry
dWN0aW9uT2JzZXJ2ZXI6OmZyYW1lIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwYWdlL0Zy
YW1lVHJlZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVRyZWU6OkZyYW1lVHJlZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZVRyZWU6OnBhcmVudCBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZVRyZWU6OmFwcGVuZENoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVHJl
ZTo6cmVtb3ZlQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVUcmVlOjp0cmF2ZXJzZU5l
eHRJblBvc3RPcmRlciBjb25zdCk6CisgICAgICAgICogcGFnZS9GcmFtZVRyZWUuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lVHJlZTo6cHJldmlvdXNTaWJsaW5nIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lVHJlZTo6bGFzdENoaWxkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lVHJlZTo6RnJhbWVUcmVlKTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyU2Nyb2xsYmFyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNjcm9sbGJhcjo6UmVu
ZGVyU2Nyb2xsYmFyKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyLmg6CisK
IDIwMjAtMTAtMjggIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgogCiAg
ICAgICAgIFtHU3RyZWFtZXJdIE11bHRpLWNoYW5uZWwgKD4yKSBzdXBwb3J0IGZvciB0aGUgQXVk
aW9GaWxlUmVhZGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDkzMjMwYzhjMzM0ZTIzN2E1NmUzMmZjZGZjM2U1NWIw
NjkzZjMyOGYuLjAzYzljNDg1OTZjYjRjMWRmMGUzMTkwOWQyNDg5NWViNmU1MTBjNjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMjAtMTEtMDQgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hy
aXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBTdG9yZSBXZWFrUHRyPEZyYW1lPiBpbnN0
ZWFkIG9mIEZyYW1lKgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjE4NTk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJGcmFtZTo6aW5pdFdpdGhDb3JlTWFpbkZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
RnJhbWU6OmNyZWF0ZVN1YmZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OmNvcmVG
cmFtZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lOjppbmZvIGNvbnN0KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OmhhbmRsZXNQYWdlU2NhbGVHZXN0dXJlIGNvbnN0KToK
KyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OnJlcXVpcmVzVW5pZmllZFNjYWxlRmFjdG9yIGNv
bnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaDoKKyAgICAgICAg
KFdlYktpdDo6V2ViRnJhbWU6OmNvcmVGcmFtZSBjb25zdCk6IERlbGV0ZWQuCisKIDIwMjAtMTAt
MjggIEFkcmlhbiBQZXJleiBkZSBDYXN0cm8gIDxhcGVyZXpAaWdhbGlhLmNvbT4KIAogICAgICAg
ICBbR1RLNF0gQnVpbGQgYnJva2VuIHdpdGggR1RLIDMuOTkuMwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvV2luZG93UHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvV2luZG93UHJveHkuY3BwCmluZGV4IGU5ZjkxNjc3ZGIyYjc5NjE0ZjAxOTBjMTU0
ZjIwYzk0NWExYjhhZmIuLmM2YTIyMWIyNGViMTczYmU3ZjFiN2EwZjU0NWQ5MjFkZjRhZDgwOGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dpbmRvd1Byb3h5LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XaW5kb3dQcm94eS5jcHAKQEAgLTUzLDcg
KzUzLDcgQEAgc3RhdGljIHZvaWQgY29sbGVjdEdhcmJhZ2VBZnRlcldpbmRvd1Byb3h5RGVzdHJ1
Y3Rpb24oKQogfQogCiBXaW5kb3dQcm94eTo6V2luZG93UHJveHkoQWJzdHJhY3RGcmFtZSYgZnJh
bWUpCi0gICAgOiBtX2ZyYW1lKCZmcmFtZSkKKyAgICA6IG1fZnJhbWUobWFrZVdlYWtQdHIoZnJh
bWUpKQogICAgICwgbV9qc1dpbmRvd1Byb3hpZXMobWFrZVVuaXF1ZVJlZjxQcm94eU1hcD4oKSkK
IHsKIH0KQEAgLTY0LDYgKzY0LDExIEBAIFdpbmRvd1Byb3h5Ojp+V2luZG93UHJveHkoKQogICAg
IEFTU0VSVChtX2pzV2luZG93UHJveGllcy0+aXNFbXB0eSgpKTsKIH0KIAorQWJzdHJhY3RGcmFt
ZSogV2luZG93UHJveHk6OmZyYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9mcmFtZS5nZXQo
KTsKK30KKwogdm9pZCBXaW5kb3dQcm94eTo6ZGV0YWNoRnJvbUZyYW1lKCkKIHsKICAgICBBU1NF
UlQobV9mcmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XaW5k
b3dQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2luZG93UHJveHkuaAppbmRl
eCA0NDM2ZDhiYmE1NDFkN2U0ZjcwZTk3N2EyOGNjMTIyODYyYjRmZDEwLi4xMTgxNzdjNWU0NDcz
ZjdjY2Y3NmIxNWEwYjU1ZDRhNGQxNzIxZDZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9XaW5kb3dQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1dpbmRvd1Byb3h5LmgKQEAgLTI0LDYgKzI0LDcgQEAKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5o
PgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5o
PgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogY2xhc3MgRGVi
dWdnZXI7CkBAIC00OSw3ICs1MCw3IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIH5X
aW5kb3dQcm94eSgpOwogCi0gICAgQWJzdHJhY3RGcmFtZSogZnJhbWUoKSBjb25zdCB7IHJldHVy
biBtX2ZyYW1lOyB9CisgICAgV0VCQ09SRV9FWFBPUlQgQWJzdHJhY3RGcmFtZSogZnJhbWUoKSBj
b25zdDsKICAgICB2b2lkIGRldGFjaEZyb21GcmFtZSgpOwogCiAgICAgdm9pZCBkZXN0cm95SlNX
aW5kb3dQcm94eShET01XcmFwcGVyV29ybGQmKTsKQEAgLTk0LDcgKzk1LDcgQEAgcHJpdmF0ZToK
ICAgICBKU1dpbmRvd1Byb3h5JiBjcmVhdGVKU1dpbmRvd1Byb3h5KERPTVdyYXBwZXJXb3JsZCYp
OwogICAgIFdFQkNPUkVfRVhQT1JUIEpTV2luZG93UHJveHkmIGNyZWF0ZUpTV2luZG93UHJveHlX
aXRoSW5pdGlhbGl6ZWRTY3JpcHQoRE9NV3JhcHBlcldvcmxkJik7CiAKLSAgICBBYnN0cmFjdEZy
YW1lKiBtX2ZyYW1lOworICAgIFdlYWtQdHI8QWJzdHJhY3RGcmFtZT4gbV9mcmFtZTsKICAgICBV
bmlxdWVSZWY8UHJveHlNYXA+IG1fanNXaW5kb3dQcm94aWVzOwogfTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAKaW5kZXggYzllM2JlMTE4NzJhMWFlNmNkODQ0ZGE5NTdkZGNjNzRkMDQ1MGZjMC4u
NmU3N2Q3OTQyYTFlNGJkY2NlZWU1MTYzNGRjMzA0NTU5NTc5ZDlhMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuY3BwCkBAIC0yNTU4LDcgKzI1NTgsNyBAQCB2b2lkIERvY3VtZW50Ojp3aWxsQmVSZW1v
dmVkRnJvbUZyYW1lKCkKICNlbmRpZgogCiAgICAgewotICAgICAgICBOYXZpZ2F0aW9uRGlzYWJs
ZXIgbmF2aWdhdGlvbkRpc2FibGVyKG1fZnJhbWUpOworICAgICAgICBOYXZpZ2F0aW9uRGlzYWJs
ZXIgbmF2aWdhdGlvbkRpc2FibGVyKG1fZnJhbWUuZ2V0KCkpOwogICAgICAgICBkaXNjb25uZWN0
RGVzY2VuZGFudEZyYW1lcygpOwogICAgIH0KICAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX1NFQ1VS
SVRZX0lNUExJQ0FUSU9OKCFtX2ZyYW1lIHx8ICFtX2ZyYW1lLT50cmVlKCkuY2hpbGRDb3VudCgp
KTsKQEAgLTM0NjYsMTMgKzM0NjYsMTMgQEAgYm9vbCBEb2N1bWVudDo6Y2FuTmF2aWdhdGVJbnRl
cm5hbChGcmFtZSYgdGFyZ2V0RnJhbWUpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgLy8g
aWlpLiBBIHNhbmRib3hlZCBmcmFtZSBjYW4gYWx3YXlzIG5hdmlnYXRlIGl0cyBkZXNjZW5kYW50
cy4KLSAgICBpZiAoaXNTYW5kYm94ZWQoU2FuZGJveE5hdmlnYXRpb24pICYmIHRhcmdldEZyYW1l
LnRyZWUoKS5pc0Rlc2NlbmRhbnRPZihtX2ZyYW1lKSkKKyAgICBpZiAoaXNTYW5kYm94ZWQoU2Fu
ZGJveE5hdmlnYXRpb24pICYmIHRhcmdldEZyYW1lLnRyZWUoKS5pc0Rlc2NlbmRhbnRPZihtX2Zy
YW1lLmdldCgpKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAvLyBGcm9tIGh0dHBzOi8v
aHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL2Jyb3dzZXJzLmh0bWwjYWxsb3dlZC10by1u
YXZpZ2F0ZS4KICAgICAvLyAxLiBJZiBBIGlzIG5vdCB0aGUgc2FtZSBicm93c2luZyBjb250ZXh0
IGFzIEIsIGFuZCBBIGlzIG5vdCBvbmUgb2YgdGhlIGFuY2VzdG9yIGJyb3dzaW5nIGNvbnRleHRz
IG9mIEIsIGFuZCBCIGlzIG5vdCBhIHRvcC1sZXZlbCBicm93c2luZyBjb250ZXh0LCBhbmQgQSdz
IGFjdGl2ZSBkb2N1bWVudCdzIGFjdGl2ZSBzYW5kYm94aW5nCiAgICAgLy8gZmxhZyBzZXQgaGFz
IGl0cyBzYW5kYm94ZWQgbmF2aWdhdGlvbiBicm93c2luZyBjb250ZXh0IGZsYWcgc2V0LCB0aGVu
IGFib3J0IHRoZXNlIHN0ZXBzIG5lZ2F0aXZlbHkuCi0gICAgaWYgKG1fZnJhbWUgIT0gJnRhcmdl
dEZyYW1lICYmIGlzU2FuZGJveGVkKFNhbmRib3hOYXZpZ2F0aW9uKSAmJiB0YXJnZXRGcmFtZS50
cmVlKCkucGFyZW50KCkgJiYgIXRhcmdldEZyYW1lLnRyZWUoKS5pc0Rlc2NlbmRhbnRPZihtX2Zy
YW1lKSkgeworICAgIGlmIChtX2ZyYW1lICE9ICZ0YXJnZXRGcmFtZSAmJiBpc1NhbmRib3hlZChT
YW5kYm94TmF2aWdhdGlvbikgJiYgdGFyZ2V0RnJhbWUudHJlZSgpLnBhcmVudCgpICYmICF0YXJn
ZXRGcmFtZS50cmVlKCkuaXNEZXNjZW5kYW50T2YobV9mcmFtZS5nZXQoKSkpIHsKICAgICAgICAg
cHJpbnROYXZpZ2F0aW9uRXJyb3JNZXNzYWdlKHRhcmdldEZyYW1lLCB1cmwoKSwgIlRoZSBmcmFt
ZSBhdHRlbXB0aW5nIG5hdmlnYXRpb24gaXMgc2FuZGJveGVkLCBhbmQgaXMgdGhlcmVmb3JlIGRp
c2FsbG93ZWQgZnJvbSBuYXZpZ2F0aW5nIGl0cyBhbmNlc3RvcnMuIl9zKTsKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KQEAgLTU3MDAsNyArNTcwMCw3IEBAIHZvaWQgRG9jdW1lbnQ6OnNl
dFRyYW5zZm9ybVNvdXJjZShzdGQ6OnVuaXF1ZV9wdHI8VHJhbnNmb3JtU291cmNlPiBzb3VyY2Up
CiB2b2lkIERvY3VtZW50OjpzZXREZXNpZ25Nb2RlKEluaGVyaXRlZEJvb2wgdmFsdWUpCiB7CiAg
ICAgbV9kZXNpZ25Nb2RlID0gdmFsdWU7Ci0gICAgZm9yIChGcmFtZSogZnJhbWUgPSBtX2ZyYW1l
OyBmcmFtZSAmJiBmcmFtZS0+ZG9jdW1lbnQoKTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZl
cnNlTmV4dChtX2ZyYW1lKSkKKyAgICBmb3IgKGF1dG8qIGZyYW1lID0gbV9mcmFtZS5nZXQoKTsg
ZnJhbWUgJiYgZnJhbWUtPmRvY3VtZW50KCk7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJz
ZU5leHQobV9mcmFtZS5nZXQoKSkpCiAgICAgICAgIGZyYW1lLT5kb2N1bWVudCgpLT5zY2hlZHVs
ZUZ1bGxTdHlsZVJlYnVpbGQoKTsKIH0KIApAQCAtNTcyMSwxMSArNTcyMSw2IEBAIHZvaWQgRG9j
dW1lbnQ6OnNldERlc2lnbk1vZGUoY29uc3QgU3RyaW5nJiB2YWx1ZSkKICAgICBzZXREZXNpZ25N
b2RlKG1vZGUpOwogfQogCi1hdXRvIERvY3VtZW50OjpnZXREZXNpZ25Nb2RlKCkgY29uc3QgLT4g
SW5oZXJpdGVkQm9vbAotewotICAgIHJldHVybiBtX2Rlc2lnbk1vZGU7Ci19Ci0KIGJvb2wgRG9j
dW1lbnQ6OmluRGVzaWduTW9kZSgpIGNvbnN0CiB7CiAgICAgZm9yIChjb25zdCBEb2N1bWVudCog
ZCA9IHRoaXM7IGQ7IGQgPSBkLT5wYXJlbnREb2N1bWVudCgpKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5o
CmluZGV4IDY5OTNhYzM3ZWFmMmU1ZWJhYWNhNzRjNjc1NDdkMGZjYjE4MjdiYmMuLmFjNzhmZjMx
ZDIwNzhjY2Y4ZTAwNGI2MDY5ODBhY2Y2NzE1ZmI2OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBA
IC0xMDA3LDcgKzEwMDcsNiBAQCBwdWJsaWM6CiAgICAgLy8gZGVzaWduTW9kZSBzdXBwb3J0CiAg
ICAgZW51bSBJbmhlcml0ZWRCb29sIHsgb2ZmID0gZmFsc2UsIG9uID0gdHJ1ZSwgaW5oZXJpdCB9
OyAgICAKICAgICB2b2lkIHNldERlc2lnbk1vZGUoSW5oZXJpdGVkQm9vbCB2YWx1ZSk7Ci0gICAg
SW5oZXJpdGVkQm9vbCBnZXREZXNpZ25Nb2RlKCkgY29uc3Q7CiAgICAgYm9vbCBpbkRlc2lnbk1v
ZGUoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgZGVzaWduTW9kZSgpIGNvbnN0
OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0RGVzaWduTW9kZShjb25zdCBTdHJpbmcmKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50LmNwcAppbmRleCAz
MzlhMGZkMzQ5ZGFhNThmYzM2NGVkMjNiM2VmN2VjNmRmNWE3NzBjLi42MDE2NDk3ZjFjMTAyZTli
MDZkOTM2YjM3NzQ3MTIwN2JiNjQ5ZDkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxGcmFtZU93bmVyRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RnJhbWVPd25lckVsZW1lbnQuY3BwCkBAIC01MCwxNCArNTAsMTMgQEAgUmVuZGVyV2lkZ2V0KiBI
VE1MRnJhbWVPd25lckVsZW1lbnQ6OnJlbmRlcldpZGdldCgpIGNvbnN0CiAgICAgcmV0dXJuIGRv
d25jYXN0PFJlbmRlcldpZGdldD4ocmVuZGVyZXIoKSk7CiB9CiAKLXZvaWQgSFRNTEZyYW1lT3du
ZXJFbGVtZW50OjpzZXRDb250ZW50RnJhbWUoRnJhbWUqIGZyYW1lKQordm9pZCBIVE1MRnJhbWVP
d25lckVsZW1lbnQ6OnNldENvbnRlbnRGcmFtZShGcmFtZSYgZnJhbWUpCiB7CiAgICAgLy8gTWFr
ZSBzdXJlIHdlIHdpbGwgbm90IGVuZCB1cCB3aXRoIHR3byBmcmFtZXMgcmVmZXJlbmNpbmcgdGhl
IHNhbWUgb3duZXIgZWxlbWVudC4KICAgICBBU1NFUlQoIW1fY29udGVudEZyYW1lIHx8IG1fY29u
dGVudEZyYW1lLT5vd25lckVsZW1lbnQoKSAhPSB0aGlzKTsKLSAgICBBU1NFUlQoZnJhbWUpOwog
ICAgIC8vIERpc2Nvbm5lY3RlZCBmcmFtZXMgc2hvdWxkIG5vdCBiZSBhbGxvd2VkIHRvIGxvYWQu
CiAgICAgQVNTRVJUKGlzQ29ubmVjdGVkKCkpOwotICAgIG1fY29udGVudEZyYW1lID0gZnJhbWU7
CisgICAgbV9jb250ZW50RnJhbWUgPSBtYWtlV2Vha1B0cihmcmFtZSk7CiAKICAgICBmb3IgKFJl
ZlB0cjxDb250YWluZXJOb2RlPiBub2RlID0gdGhpczsgbm9kZTsgbm9kZSA9IG5vZGUtPnBhcmVu
dE9yU2hhZG93SG9zdE5vZGUoKSkKICAgICAgICAgbm9kZS0+aW5jcmVtZW50Q29ubmVjdGVkU3Vi
ZnJhbWVDb3VudCgpOwpAQCAtNzYsNyArNzUsNyBAQCB2b2lkIEhUTUxGcmFtZU93bmVyRWxlbWVu
dDo6Y2xlYXJDb250ZW50RnJhbWUoKQogCiB2b2lkIEhUTUxGcmFtZU93bmVyRWxlbWVudDo6ZGlz
Y29ubmVjdENvbnRlbnRGcmFtZSgpCiB7Ci0gICAgaWYgKFJlZlB0cjxGcmFtZT4gZnJhbWUgPSBt
X2NvbnRlbnRGcmFtZSkgeworICAgIGlmIChSZWZQdHI8RnJhbWU+IGZyYW1lID0gbV9jb250ZW50
RnJhbWUuZ2V0KCkpIHsKICAgICAgICAgZnJhbWUtPmxvYWRlcigpLmZyYW1lRGV0YWNoZWQoKTsK
ICAgICAgICAgZnJhbWUtPmRpc2Nvbm5lY3RPd25lckVsZW1lbnQoKTsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVPd25lckVsZW1lbnQuaAppbmRleCBiOTg4OThiZDMxNDA3
MjVjNTVlNGFlYjg2NmZjMWE5YjEzYzY1YjYxLi41NDE5MTkzM2Y4YWMwODBiYWYwNDk1YjY1ZDVh
YjZmMTQwYjY3MWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZU93
bmVyRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lT3duZXJFbGVt
ZW50LmgKQEAgLTM1LDExICszNSwxMSBAQCBjbGFzcyBIVE1MRnJhbWVPd25lckVsZW1lbnQgOiBw
dWJsaWMgSFRNTEVsZW1lbnQgewogcHVibGljOgogICAgIHZpcnR1YWwgfkhUTUxGcmFtZU93bmVy
RWxlbWVudCgpOwogCi0gICAgRnJhbWUqIGNvbnRlbnRGcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1f
Y29udGVudEZyYW1lOyB9CisgICAgRnJhbWUqIGNvbnRlbnRGcmFtZSgpIGNvbnN0IHsgcmV0dXJu
IG1fY29udGVudEZyYW1lLmdldCgpOyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgV2luZG93UHJveHkq
IGNvbnRlbnRXaW5kb3coKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBEb2N1bWVudCogY29u
dGVudERvY3VtZW50KCkgY29uc3Q7CiAKLSAgICB2b2lkIHNldENvbnRlbnRGcmFtZShGcmFtZSop
OworICAgIHZvaWQgc2V0Q29udGVudEZyYW1lKEZyYW1lJik7CiAgICAgdm9pZCBjbGVhckNvbnRl
bnRGcmFtZSgpOwogCiAgICAgdm9pZCBkaXNjb25uZWN0Q29udGVudEZyYW1lKCk7CkBAIC03Myw3
ICs3Myw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc0tleWJvYXJkRm9jdXNhYmxlKEtleWJvYXJk
RXZlbnQqKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIGlzRnJhbWVPd25lckVsZW1lbnQoKSBj
b25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAKLSAgICBGcmFtZSogbV9jb250ZW50RnJhbWUg
eyBudWxscHRyIH07CisgICAgV2Vha1B0cjxGcmFtZT4gbV9jb250ZW50RnJhbWU7CiAgICAgU2Fu
ZGJveEZsYWdzIG1fc2FuZGJveEZsYWdzIHsgU2FuZGJveE5vbmUgfTsKIH07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNw
cAppbmRleCBiMzYwNTNhOWY2MjIyOTU1NmVmMzM0Nzc1NGZkNTFmMjZmMzc3NGU1Li43YzEwNzcx
NzY5OTYxMmZjMTY1MDU2MWQ4NmM1Yjg0Mzc1YWMwNjViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCkBAIC04Mjgs
NyArODI4LDcgQEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmZyYW1lRGV0YWNoZWQoRnJhbWUm
IGZyYW1lKQogCiBGcmFtZSogSW5zcGVjdG9yUGFnZUFnZW50OjpmcmFtZUZvcklkKGNvbnN0IFBy
b3RvY29sOjpOZXR3b3JrOjpGcmFtZUlkJiBmcmFtZUlkKQogewotICAgIHJldHVybiBmcmFtZUlk
LmlzRW1wdHkoKSA/IG51bGxwdHIgOiBtX2lkZW50aWZpZXJUb0ZyYW1lLmdldChmcmFtZUlkKTsK
KyAgICByZXR1cm4gZnJhbWVJZC5pc0VtcHR5KCkgPyBudWxscHRyIDogbV9pZGVudGlmaWVyVG9G
cmFtZS5nZXQoZnJhbWVJZCkuZ2V0KCk7CiB9CiAKIFN0cmluZyBJbnNwZWN0b3JQYWdlQWdlbnQ6
OmZyYW1lSWQoRnJhbWUqIGZyYW1lKQpAQCAtODM3LDcgKzgzNyw3IEBAIFN0cmluZyBJbnNwZWN0
b3JQYWdlQWdlbnQ6OmZyYW1lSWQoRnJhbWUqIGZyYW1lKQogICAgICAgICByZXR1cm4gZW1wdHlT
dHJpbmcoKTsKICAgICByZXR1cm4gbV9mcmFtZVRvSWRlbnRpZmllci5lbnN1cmUoZnJhbWUsIFt0
aGlzLCBmcmFtZV0gewogICAgICAgICBhdXRvIGlkZW50aWZpZXIgPSBJZGVudGlmaWVyc0ZhY3Rv
cnk6OmNyZWF0ZUlkZW50aWZpZXIoKTsKLSAgICAgICAgbV9pZGVudGlmaWVyVG9GcmFtZS5zZXQo
aWRlbnRpZmllciwgZnJhbWUpOworICAgICAgICBtX2lkZW50aWZpZXJUb0ZyYW1lLnNldChpZGVu
dGlmaWVyLCBtYWtlV2Vha1B0cihmcmFtZSkpOwogICAgICAgICByZXR1cm4gaWRlbnRpZmllcjsK
ICAgICB9KS5pdGVyYXRvci0+dmFsdWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuaAppbmRleCBiZjg4MzQ1MjUzYmI3Mjk1
Y2U1Y2NkYTAzNTYzNTVkMTIzZDI3YmUwLi43OGE5ODIyNGFiNTQ1MGUwNzI5NzUxNTcxZmUxYmI5
NTdkMzAzMzAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvclBhZ2VBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yUGFnZUFnZW50LmgKQEAgLTE2NSw4ICsxNjUsOSBAQCBwcml2YXRlOgogICAgIElu
c3BlY3RvckNsaWVudCogbV9jbGllbnQgeyBudWxscHRyIH07CiAgICAgSW5zcGVjdG9yT3Zlcmxh
eSogbV9vdmVybGF5IHsgbnVsbHB0ciB9OwogCisgICAgLy8gRklYTUU6IE1ha2UgYSBXZWFrSGFz
aE1hcCBhbmQgdXNlIGl0IGZvciBtX2ZyYW1lVG9JZGVudGlmaWVyIGFuZCBtX2xvYWRlclRvSWRl
bnRpZmllci4KICAgICBIYXNoTWFwPEZyYW1lKiwgU3RyaW5nPiBtX2ZyYW1lVG9JZGVudGlmaWVy
OwotICAgIEhhc2hNYXA8U3RyaW5nLCBGcmFtZSo+IG1faWRlbnRpZmllclRvRnJhbWU7CisgICAg
SGFzaE1hcDxTdHJpbmcsIFdlYWtQdHI8RnJhbWU+PiBtX2lkZW50aWZpZXJUb0ZyYW1lOwogICAg
IEhhc2hNYXA8RG9jdW1lbnRMb2FkZXIqLCBTdHJpbmc+IG1fbG9hZGVyVG9JZGVudGlmaWVyOwog
ICAgIFN0cmluZyBtX3VzZXJBZ2VudE92ZXJyaWRlOwogICAgIFN0cmluZyBtX2VtdWxhdGVkTWVk
aWE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAppbmRleCA3Yzk5NTEw
ODU1NzAwZDg1NWRlNDNlNTI4MDNkMTRkNzZiZjlkNTYyLi5kMGMzZGViYWM2YThjZjUzNWRlMzU0
ZDRlNWVmZmQ0ZGJmNWI0OGFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9j
dW1lbnRMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRl
ci5jcHAKQEAgLTI4Myw3ICsyODMsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjptYWluUmVjZWl2
ZWRFcnJvcihjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKIC8vIGJ1dCBub3QgbG9hZHMgaW5p
dGlhdGVkIGJ5IGNoaWxkIGZyYW1lcycgZGF0YSBzb3VyY2VzIC0tIHRoYXQncyB0aGUgV2ViRnJh
bWUncyBqb2IuCiB2b2lkIERvY3VtZW50TG9hZGVyOjpzdG9wTG9hZGluZygpCiB7Ci0gICAgUmVm
UHRyPEZyYW1lPiBwcm90ZWN0ZWRGcmFtZShtX2ZyYW1lKTsKKyAgICBSZWZQdHI8RnJhbWU+IHBy
b3RlY3RlZEZyYW1lKG1fZnJhbWUuZ2V0KCkpOwogICAgIFJlZjxEb2N1bWVudExvYWRlcj4gcHJv
dGVjdGVkVGhpcygqdGhpcyk7CiAKICAgICAvLyBJbiBzb21lIHJhcmUgY2FzZXMsIGNhbGxpbmcg
RnJhbWVMb2FkZXI6OnN0b3BMb2FkaW5nIGNvdWxkIGNhdXNlIGlzTG9hZGluZygpIHRvIHJldHVy
biBmYWxzZS4KQEAgLTU5OSw3ICs1OTksNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjp3aWxsU2Vu
ZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgbmV3UmVxdWVzdCwgY29uc3QgUmVzb3VyYwogICAg
ICAgICBSZWY8U2VjdXJpdHlPcmlnaW4+IHJlZGlyZWN0aW5nT3JpZ2luKFNlY3VyaXR5T3JpZ2lu
OjpjcmVhdGUocmVkaXJlY3RSZXNwb25zZS51cmwoKSkpOwogICAgICAgICBpZiAoIXJlZGlyZWN0
aW5nT3JpZ2luLmdldCgpLmNhbkRpc3BsYXkobmV3UmVxdWVzdC51cmwoKSkpIHsKICAgICAgICAg
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoIndpbGxTZW5kUmVxdWVzdDogY2FuY2VsaW5nIC0g
cmVkaXJlY3RpbmcgVVJMIG5vdCBhbGxvd2VkIHRvIGRpc3BsYXkgY29udGVudCBmcm9tIHRhcmdl
dCIpOwotICAgICAgICAgICAgRnJhbWVMb2FkZXI6OnJlcG9ydExvY2FsTG9hZEZhaWxlZChtX2Zy
YW1lLCBuZXdSZXF1ZXN0LnVybCgpLnN0cmluZygpKTsKKyAgICAgICAgICAgIEZyYW1lTG9hZGVy
OjpyZXBvcnRMb2NhbExvYWRGYWlsZWQobV9mcmFtZS5nZXQoKSwgbmV3UmVxdWVzdC51cmwoKS5z
dHJpbmcoKSk7CiAgICAgICAgICAgICBjYW5jZWxNYWluUmVzb3VyY2VMb2FkKGZyYW1lTG9hZGVy
KCktPmNhbmNlbGxlZEVycm9yKG5ld1JlcXVlc3QpKTsKICAgICAgICAgICAgIHJldHVybiBjb21w
bGV0aW9uSGFuZGxlcihXVEZNb3ZlKG5ld1JlcXVlc3QpKTsKICAgICAgICAgfQpAQCAtMTA0OCw3
ICsxMDQ4LDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6Y29tbWl0TG9hZChjb25zdCBjaGFyKiBk
YXRhLCBpbnQgbGVuZ3RoKQogewogICAgIC8vIEJvdGggdW5sb2FkaW5nIHRoZSBvbGQgcGFnZSBh
bmQgcGFyc2luZyB0aGUgbmV3IHBhZ2UgbWF5IGV4ZWN1dGUgSmF2YVNjcmlwdCB3aGljaCBkZXN0
cm95cyB0aGUgZGF0YXNvdXJjZQogICAgIC8vIGJ5IHN0YXJ0aW5nIGEgbmV3IGxvYWQsIHNvIHJl
dGFpbiB0ZW1wb3JhcmlseS4KLSAgICBSZWZQdHI8RnJhbWU+IHByb3RlY3RlZEZyYW1lKG1fZnJh
bWUpOworICAgIFJlZlB0cjxGcmFtZT4gcHJvdGVjdGVkRnJhbWUobV9mcmFtZS5nZXQoKSk7CiAg
ICAgUmVmPERvY3VtZW50TG9hZGVyPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAogICAgIGNvbW1p
dElmUmVhZHkoKTsKQEAgLTEzMDIsNyArMTMwMiw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmRl
dGFjaEZyb21GcmFtZSgpCiAgICAgZWxzZQogICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKG1f
ZnJhbWUsICJkZXRhY2hGcm9tRnJhbWUoKSBpcyBiZWluZyBjYWxsZWQgb24gYSBEb2N1bWVudExv
YWRlciB0aGF0IGhhcyBuZXZlciBhdHRhY2hlZCB0byBhbnkgRnJhbWUiKTsKICNlbmRpZgotICAg
IFJlZlB0cjxGcmFtZT4gcHJvdGVjdGVkRnJhbWUobV9mcmFtZSk7CisgICAgUmVmUHRyPEZyYW1l
PiBwcm90ZWN0ZWRGcmFtZShtX2ZyYW1lLmdldCgpKTsKICAgICBSZWY8RG9jdW1lbnRMb2FkZXI+
IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCiAgICAgLy8gSXQgbmV2ZXIgbWFrZXMgc2Vuc2UgdG8g
aGF2ZSBhIGRvY3VtZW50IGxvYWRlciB0aGF0IGlzIGRldGFjaGVkIGZyb20gaXRzCkBAIC0xNzg3
LDggKzE3ODcsOCBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpyZW1vdmVTdWJyZXNvdXJjZUxvYWRl
cihMb2FkQ29tcGxldGlvblR5cGUgdHlwZSwgUmVzb3VyY2VMbwogICAgIGlmICghbV9zdWJyZXNv
dXJjZUxvYWRlcnMucmVtb3ZlKGxvYWRlci0+aWRlbnRpZmllcigpKSkKICAgICAgICAgcmV0dXJu
OwogICAgIGNoZWNrTG9hZENvbXBsZXRlKCk7Ci0gICAgaWYgKEZyYW1lKiBmcmFtZSA9IG1fZnJh
bWUpCi0gICAgICAgIGZyYW1lLT5sb2FkZXIoKS5zdWJyZXNvdXJjZUxvYWREb25lKHR5cGUpOwor
ICAgIGlmIChtX2ZyYW1lKQorICAgICAgICBtX2ZyYW1lLT5sb2FkZXIoKS5zdWJyZXNvdXJjZUxv
YWREb25lKHR5cGUpOwogfQogCiB2b2lkIERvY3VtZW50TG9hZGVyOjphZGRQbHVnSW5TdHJlYW1M
b2FkZXIoUmVzb3VyY2VMb2FkZXImIGxvYWRlcikKQEAgLTIwNzMsOCArMjA3Myw4IEBAIHZvaWQg
RG9jdW1lbnRMb2FkZXI6OnN1YnJlc291cmNlTG9hZGVyRmluaXNoZWRMb2FkaW5nT25lUGFydChS
ZXNvdXJjZUxvYWRlciogbG9hCiAgICAgfQogCiAgICAgY2hlY2tMb2FkQ29tcGxldGUoKTsKLSAg
ICBpZiAoRnJhbWUqIGZyYW1lID0gbV9mcmFtZSkKLSAgICAgICAgZnJhbWUtPmxvYWRlcigpLmNo
ZWNrTG9hZENvbXBsZXRlKCk7ICAgIAorICAgIGlmIChtX2ZyYW1lKQorICAgICAgICBtX2ZyYW1l
LT5sb2FkZXIoKS5jaGVja0xvYWRDb21wbGV0ZSgpOwogfQogCiB2b2lkIERvY3VtZW50TG9hZGVy
OjptYXliZUZpbmlzaExvYWRpbmdNdWx0aXBhcnRDb250ZW50KCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdyaXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRG9jdW1lbnRXcml0ZXIuY3BwCmluZGV4IGQ1YmVhZTQzYmU5ZTFmMDM0MDZlYTBhNjZhMTE5
MDVmNzZjYzM0ZDEuLjM3OTE4YjA5MGRlM2M4ZThlMTNkZThiMTkxNDJhY2EwMGIxOWE1MDQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdyaXRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmNwcApAQCAtMTE3LDcgKzExNyw3
IEBAIFJlZjxEb2N1bWVudD4gRG9jdW1lbnRXcml0ZXI6OmNyZWF0ZURvY3VtZW50KGNvbnN0IFVS
TCYgdXJsKQogI2VuZGlmCiAgICAgaWYgKCFtX2ZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5oYXNI
VE1MVmlldygpKQogICAgICAgICByZXR1cm4gRG9jdW1lbnQ6OmNyZWF0ZU5vblJlbmRlcmVkUGxh
Y2Vob2xkZXIoKm1fZnJhbWUsIHVybCk7Ci0gICAgcmV0dXJuIERPTUltcGxlbWVudGF0aW9uOjpj
cmVhdGVEb2N1bWVudChtX21pbWVUeXBlLCBtX2ZyYW1lLCBtX2ZyYW1lLT5zZXR0aW5ncygpLCB1
cmwpOworICAgIHJldHVybiBET01JbXBsZW1lbnRhdGlvbjo6Y3JlYXRlRG9jdW1lbnQobV9taW1l
VHlwZSwgbV9mcmFtZS5nZXQoKSwgbV9mcmFtZS0+c2V0dGluZ3MoKSwgdXJsKTsKIH0KIAogYm9v
bCBEb2N1bWVudFdyaXRlcjo6YmVnaW4oY29uc3QgVVJMJiB1cmxSZWZlcmVuY2UsIGJvb2wgZGlz
cGF0Y2gsIERvY3VtZW50KiBvd25lckRvY3VtZW50KQpAQCAtMjIyLDEwICsyMjIsMTAgQEAgVGV4
dFJlc291cmNlRGVjb2RlciYgRG9jdW1lbnRXcml0ZXI6OmRlY29kZXIoKQogICAgICAgICAvLyBh
biBhdHRhY2sgdmVjdG9yLgogICAgICAgICAvLyBGSVhNRTogVGhpcyBtaWdodCBiZSB0b28gY2F1
dGlvdXMgZm9yIG5vbi03Yml0LWVuY29kaW5ncyBhbmQKICAgICAgICAgLy8gd2UgbWF5IGNvbnNp
ZGVyIHJlbGF4aW5nIHRoaXMgbGF0ZXIgYWZ0ZXIgdGVzdGluZy4KLSAgICAgICAgaWYgKGNhblJl
ZmVyVG9QYXJlbnRGcmFtZUVuY29kaW5nKG1fZnJhbWUsIHBhcmVudEZyYW1lKSkKKyAgICAgICAg
aWYgKGNhblJlZmVyVG9QYXJlbnRGcmFtZUVuY29kaW5nKG1fZnJhbWUuZ2V0KCksIHBhcmVudEZy
YW1lKSkKICAgICAgICAgICAgIG1fZGVjb2Rlci0+c2V0SGludEVuY29kaW5nKHBhcmVudEZyYW1l
LT5kb2N1bWVudCgpLT5kZWNvZGVyKCkpOwogICAgICAgICBpZiAobV9lbmNvZGluZy5pc0VtcHR5
KCkpIHsKLSAgICAgICAgICAgIGlmIChjYW5SZWZlclRvUGFyZW50RnJhbWVFbmNvZGluZyhtX2Zy
YW1lLCBwYXJlbnRGcmFtZSkpCisgICAgICAgICAgICBpZiAoY2FuUmVmZXJUb1BhcmVudEZyYW1l
RW5jb2RpbmcobV9mcmFtZS5nZXQoKSwgcGFyZW50RnJhbWUpKQogICAgICAgICAgICAgICAgIG1f
ZGVjb2Rlci0+c2V0RW5jb2RpbmcocGFyZW50RnJhbWUtPmRvY3VtZW50KCktPnRleHRFbmNvZGlu
ZygpLCBUZXh0UmVzb3VyY2VEZWNvZGVyOjpFbmNvZGluZ0Zyb21QYXJlbnRGcmFtZSk7CiAgICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBtX2RlY29kZXItPnNldEVuY29kaW5nKG1fZW5jb2Rp
bmcsCkBAIC0yOTcsNiArMjk3LDExIEBAIHZvaWQgRG9jdW1lbnRXcml0ZXI6OnNldEVuY29kaW5n
KGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCB1c2VyQ2hvc2VuKQogICAgIG1fZW5jb2RpbmdXYXND
aG9zZW5CeVVzZXIgPSB1c2VyQ2hvc2VuOwogfQogCit2b2lkIERvY3VtZW50V3JpdGVyOjpzZXRG
cmFtZShGcmFtZSYgZnJhbWUpCit7CisgICAgbV9mcmFtZSA9IG1ha2VXZWFrUHRyKGZyYW1lKTsK
K30KKwogdm9pZCBEb2N1bWVudFdyaXRlcjo6c2V0RG9jdW1lbnRXYXNMb2FkZWRBc1BhcnRPZk5h
dmlnYXRpb24oKQogewogICAgIEFTU0VSVChtX3BhcnNlciAmJiAhbV9wYXJzZXItPmlzU3RvcHBl
ZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdyaXRlci5o
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmgKaW5kZXggOWYwMTRlMmMw
Y2ZiNmE3MDUwNzAwODRmZjk5N2RiMTYyNzVkYmI1Yy4uZmM0NmY0MjU2YTAyMzVjMTA4OWNmZjE2
NDk3Y2RmNjFjNWZiM2NmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3Vt
ZW50V3JpdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmgK
QEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgogICAgIHZvaWQgaW5zZXJ0RGF0YVN5bmNocm9ub3Vz
bHkoY29uc3QgU3RyaW5nJik7IC8vIEZvciBhbiBpbnRlcm5hbCB1c2Ugb25seSB0byBwcmV2ZW50
IHRoZSBwYXJzZXIgZnJvbSB5aWVsZGluZy4KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGVuZCgp
OwogCi0gICAgdm9pZCBzZXRGcmFtZShGcmFtZSYgZnJhbWUpIHsgbV9mcmFtZSA9ICZmcmFtZTsg
fQorICAgIHZvaWQgc2V0RnJhbWUoRnJhbWUmKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJiBlbmNvZGluZywgYm9vbCB1c2VyQ2hvc2VuKTsKIApA
QCAtNjcsNyArNjcsNyBAQCBwcml2YXRlOgogICAgIFJlZjxEb2N1bWVudD4gY3JlYXRlRG9jdW1l
bnQoY29uc3QgVVJMJik7CiAgICAgdm9pZCBjbGVhcigpOwogCi0gICAgRnJhbWUqIG1fZnJhbWUg
eyBudWxscHRyIH07CisgICAgV2Vha1B0cjxGcmFtZT4gbV9mcmFtZTsKIAogICAgIGJvb2wgbV9o
YXNSZWNlaXZlZFNvbWVEYXRhIHsgZmFsc2UgfTsKICAgICBTdHJpbmcgbV9taW1lVHlwZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IDU4ZTgzZmI2NTViZDRkNzU5MjM4
NmViZDgyZmNmN2IxMDBlMzE5NDAuLjcwYWRiNTYxOTg5ODY2OWEyODRiMjY5MjVlMTlmMDA1YmI3
NTJhNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAtMzMwLDcgKzMz
MCw3IEBAIEZyYW1lTG9hZGVyOjp+RnJhbWVMb2FkZXIoKQogdm9pZCBGcmFtZUxvYWRlcjo6ZGV0
YWNoRnJvbUFsbE9wZW5lZEZyYW1lcygpCiB7CiAgICAgZm9yIChhdXRvJiBmcmFtZSA6IG1fb3Bl
bmVkRnJhbWVzKQotICAgICAgICBmcmFtZS0+bG9hZGVyKCkubV9vcGVuZXIgPSBudWxscHRyOwor
ICAgICAgICBmcmFtZS5sb2FkZXIoKS5tX29wZW5lciA9IG51bGxwdHI7CiAgICAgbV9vcGVuZWRG
cmFtZXMuY2xlYXIoKTsKIH0KIApAQCAtMTA0NCw3ICsxMDQ0LDcgQEAgYm9vbCBGcmFtZUxvYWRl
cjo6Y2hlY2tJZkZvcm1BY3Rpb25BbGxvd2VkQnlDU1AoY29uc3QgVVJMJiB1cmwsIGJvb2wgZGlk
UmVjZWl2ZVIKIAogRnJhbWUqIEZyYW1lTG9hZGVyOjpvcGVuZXIoKQogewotICAgIHJldHVybiBt
X29wZW5lcjsKKyAgICByZXR1cm4gbV9vcGVuZXIuZ2V0KCk7CiB9CiAKIHZvaWQgRnJhbWVMb2Fk
ZXI6OnNldE9wZW5lcihGcmFtZSogb3BlbmVyKQpAQCAtMTA1NSwxNCArMTA1NSwxNCBAQCB2b2lk
IEZyYW1lTG9hZGVyOjpzZXRPcGVuZXIoRnJhbWUqIG9wZW5lcikKICAgICBpZiAobV9vcGVuZXIp
IHsKICAgICAgICAgLy8gV2hlbiBzZXRPcGVuZXIgaXMgY2FsbGVkIGluIH5GcmFtZUxvYWRlciwg
b3BlbmVyJ3MgbV9mcmFtZUxvYWRlciBpcyBhbHJlYWR5IGNsZWFyZWQuCiAgICAgICAgIGF1dG8m
IG9wZW5lckZyYW1lTG9hZGVyID0gbV9vcGVuZXIgPT0gJm1fZnJhbWUgPyAqdGhpcyA6IG1fb3Bl
bmVyLT5sb2FkZXIoKTsKLSAgICAgICAgb3BlbmVyRnJhbWVMb2FkZXIubV9vcGVuZWRGcmFtZXMu
cmVtb3ZlKCZtX2ZyYW1lKTsKKyAgICAgICAgb3BlbmVyRnJhbWVMb2FkZXIubV9vcGVuZWRGcmFt
ZXMucmVtb3ZlKG1fZnJhbWUpOwogICAgIH0KICAgICBpZiAob3BlbmVyKSB7CiAgICAgICAgIG9w
ZW5lci0+bG9hZGVyKCkubV9vcGVuZWRGcmFtZXMuYWRkKCZtX2ZyYW1lKTsKICAgICAgICAgaWYg
KGF1dG8qIHBhZ2UgPSBtX2ZyYW1lLnBhZ2UoKSkKICAgICAgICAgICAgIHBhZ2UtPnNldE9wZW5l
ZEJ5RE9NV2l0aE9wZW5lcigpOwogICAgIH0KLSAgICBtX29wZW5lciA9IG9wZW5lcjsKKyAgICBt
X29wZW5lciA9IG1ha2VXZWFrUHRyKG9wZW5lcik7CiAKICAgICBpZiAobV9mcmFtZS5kb2N1bWVu
dCgpKQogICAgICAgICBtX2ZyYW1lLmRvY3VtZW50KCktPmluaXRTZWN1cml0eUNvbnRleHQoKTsK
QEAgLTE2NDQsNiArMTY0NCwxMSBAQCB2b2lkIEZyYW1lTG9hZGVyOjpjbGVhclByb3Zpc2lvbmFs
TG9hZEZvclBvbGljeUNoZWNrKCkKICAgICBzZXRQcm92aXNpb25hbERvY3VtZW50TG9hZGVyKG51
bGxwdHIpOwogfQogCitib29sIEZyYW1lTG9hZGVyOjpoYXNPcGVuZWRGcmFtZXMoKSBjb25zdAor
eworICAgIHJldHVybiAhbV9vcGVuZWRGcmFtZXMuY29tcHV0ZXNFbXB0eSgpOworfQorCiB2b2lk
IEZyYW1lTG9hZGVyOjpyZXBvcnRMb2NhbExvYWRGYWlsZWQoRnJhbWUqIGZyYW1lLCBjb25zdCBT
dHJpbmcmIHVybCkKIHsKICAgICBBU1NFUlQoIXVybC5pc0VtcHR5KCkpOwpAQCAtMjg5Niw3ICsy
OTAxLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6YWRkRXh0cmFGaWVsZHNUb1JlcXVlc3QoUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0LCBJc01haW5SZXNvdXIKICAgICAgICAgaWYgKGlzTWFpblJlc291
cmNlKSB7CiAgICAgICAgICAgICBhdXRvKiBvd25lckZyYW1lID0gbV9mcmFtZS50cmVlKCkucGFy
ZW50KCk7CiAgICAgICAgICAgICBpZiAoIW93bmVyRnJhbWUgJiYgbV9zdGF0ZU1hY2hpbmUuaXNE
aXNwbGF5aW5nSW5pdGlhbEVtcHR5RG9jdW1lbnQoKSkKLSAgICAgICAgICAgICAgICBvd25lckZy
YW1lID0gbV9vcGVuZXI7CisgICAgICAgICAgICAgICAgb3duZXJGcmFtZSA9IG1fb3BlbmVyLmdl
dCgpOwogICAgICAgICAgICAgaWYgKG93bmVyRnJhbWUpCiAgICAgICAgICAgICAgICAgaW5pdGlh
dG9yID0gb3duZXJGcmFtZS0+ZG9jdW1lbnQoKTsKICAgICAgICAgICAgIEFTU0VSVChvd25lckZy
YW1lIHx8IG1fZnJhbWUuaXNNYWluRnJhbWUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRnJhbWVMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ci5oCmluZGV4IGRiZjFhNTM5M2FiNmU0M2Y0MDcxN2VmNDA0NTcyYzZkZWZmYTFhYWMuLjg0OTFi
NzYzOTM1MmZmMDQyYTkzYzQ3YTZlOTQwYTE2YmQzNzVkNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlci5oCkBAIC01Myw2ICs1Myw3IEBACiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+
CiAjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogI2luY2x1ZGUgPHd0Zi9XYWxsVGltZS5oPgor
I2luY2x1ZGUgPHd0Zi9XZWFrSGFzaFNldC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAg
LTQyNCw3ICs0MjUsNyBAQCBwcml2YXRlOgogCiAgICAgLy8gUG9saWN5Q2hlY2tlciBzcGVjaWZp
Yy4KICAgICB2b2lkIGNsZWFyUHJvdmlzaW9uYWxMb2FkRm9yUG9saWN5Q2hlY2soKTsKLSAgICBi
b29sIGhhc09wZW5lZEZyYW1lcygpIGNvbnN0IHsgcmV0dXJuICFtX29wZW5lZEZyYW1lcy5pc0Vt
cHR5KCk7IH0KKyAgICBib29sIGhhc09wZW5lZEZyYW1lcygpIGNvbnN0OwogCiAgICAgYm9vbCBw
cmV2ZW50c1BhcmVudEZyb21CZWluZ0NvbXBsZXRlKGNvbnN0IEZyYW1lJikgY29uc3Q7CiAKQEAg
LTQ4MCw4ICs0ODEsOCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9zaG91bGRDYWxsQ2hlY2tDb21w
bGV0ZWQ7CiAgICAgYm9vbCBtX3Nob3VsZENhbGxDaGVja0xvYWRDb21wbGV0ZTsKIAotICAgIEZy
YW1lKiBtX29wZW5lcjsKLSAgICBIYXNoU2V0PEZyYW1lKj4gbV9vcGVuZWRGcmFtZXM7CisgICAg
V2Vha1B0cjxGcmFtZT4gbV9vcGVuZXI7CisgICAgV2Vha0hhc2hTZXQ8RnJhbWU+IG1fb3BlbmVk
RnJhbWVzOwogCiAgICAgYm9vbCBtX2xvYWRpbmdGcm9tQ2FjaGVkUGFnZTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTmV0d29ya2luZ0NvbnRleHQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9GcmFtZU5ldHdvcmtpbmdDb250ZXh0LmgKaW5kZXggN2Y3YWM4ODYw
ODM5MWFjZmY2YzA4MzNiOWFhZWRhMGE4YTVhZTBiMC4uMWQ3MWNmMzk3YWJjNjRiMjIxMjJkYTE4
ZjdhOTIwNDZhOTRkMTE1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1l
TmV0d29ya2luZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVOZXR3
b3JraW5nQ29udGV4dC5oCkBAIC00NCwxNiArNDQsMTYgQEAgcHVibGljOgogCiBwcm90ZWN0ZWQ6
CiAgICAgZXhwbGljaXQgRnJhbWVOZXR3b3JraW5nQ29udGV4dChGcmFtZSogZnJhbWUpCi0gICAg
ICAgIDogbV9mcmFtZShmcmFtZSkKKyAgICAgICAgOiBtX2ZyYW1lKG1ha2VXZWFrUHRyKGZyYW1l
KSkKICAgICB7CiAgICAgfQogCi0gICAgRnJhbWUqIGZyYW1lKCkgY29uc3QgeyByZXR1cm4gbV9m
cmFtZTsgfQorICAgIEZyYW1lKiBmcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWUuZ2V0KCk7
IH0KIAogcHJpdmF0ZToKLSAgICBib29sIGlzVmFsaWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBtX2ZyYW1lOyB9CisgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
ISFtX2ZyYW1lOyB9CiAKLSAgICBGcmFtZSogbV9mcmFtZTsKKyAgICBXZWFrUHRyPEZyYW1lPiBt
X2ZyYW1lOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNh
Y2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcAppbmRleCBlMTdkZTIzNjYxMzhlYmIyMDJh
NGU3NjFlMGUwODIwNDAwOTAwMmE2Li42NWVmZWIyNDBkYWNhMjZiNDRiOGRiM2QwNWVmYjg0MGVk
MzJkZjU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZUdyb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcApAQCAtNDE2LDcgKzQxNiw3IEBAIHZvaWQgQXBwbGlj
YXRpb25DYWNoZUdyb3VwOjp1cGRhdGUoRnJhbWUmIGZyYW1lLCBBcHBsaWNhdGlvbkNhY2hlVXBk
YXRlT3B0aW9uIHVwCiAgICAgfQogCiAgICAgQVNTRVJUKCFtX2ZyYW1lKTsKLSAgICBtX2ZyYW1l
ID0gJmZyYW1lOworICAgIG1fZnJhbWUgPSBtYWtlV2Vha1B0cihmcmFtZSk7CiAKICAgICBzZXRV
cGRhdGVTdGF0dXMoQ2hlY2tpbmcpOwogCkBAIC00MzcsNyArNDM3LDcgQEAgdm9pZCBBcHBsaWNh
dGlvbkNhY2hlR3JvdXA6OnVwZGF0ZShGcmFtZSYgZnJhbWUsIEFwcGxpY2F0aW9uQ2FjaGVVcGRh
dGVPcHRpb24gdXAKICAgICBhdXRvIHJlcXVlc3QgPSBjcmVhdGVSZXF1ZXN0KFVSTCB7IG1fbWFu
aWZlc3RVUkwgfSwgbV9uZXdlc3RDYWNoZSA/IG1fbmV3ZXN0Q2FjaGUtPm1hbmlmZXN0UmVzb3Vy
Y2UoKSA6IG51bGxwdHIpOwogCiAgICAgbV9jdXJyZW50UmVzb3VyY2VJZGVudGlmaWVyID0gbV9m
cmFtZS0+cGFnZSgpLT5wcm9ncmVzcygpLmNyZWF0ZVVuaXF1ZUlkZW50aWZpZXIoKTsKLSAgICBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxTZW5kUmVxdWVzdChtX2ZyYW1lLCBtX2N1cnJl
bnRSZXNvdXJjZUlkZW50aWZpZXIsIG1fZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCks
IHJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2UgeyB9KTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OndpbGxTZW5kUmVxdWVzdChtX2ZyYW1lLmdldCgpLCBtX2N1cnJlbnRSZXNvdXJjZUlk
ZW50aWZpZXIsIG1fZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCksIHJlcXVlc3QsIFJl
c291cmNlUmVzcG9uc2UgeyB9KTsKIAogICAgIG1fbWFuaWZlc3RMb2FkZXIgPSBBcHBsaWNhdGlv
bkNhY2hlUmVzb3VyY2VMb2FkZXI6OmNyZWF0ZShBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OlR5
cGU6Ok1hbmlmZXN0LCBkb2N1bWVudExvYWRlci5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLCBXVEZN
b3ZlKHJlcXVlc3QpLCBbdGhpc10gKGF1dG8mJiByZXNvdXJjZU9yRXJyb3IpIHsKICAgICAgICAg
Ly8gJ3RoaXMnIGlzIG9ubHkgdmFsaWQgaWYgcmV0dXJuZWQgdmFsdWUgaXMgbm90IEVycm9yOjpB
Ym9ydC4KQEAgLTQ0Nyw3ICs0NDcsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6dXBk
YXRlKEZyYW1lJiBmcmFtZSwgQXBwbGljYXRpb25DYWNoZVVwZGF0ZU9wdGlvbiB1cAogICAgICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIGlmIChlcnJvciA9PSBBcHBsaWNhdGlvbkNh
Y2hlUmVzb3VyY2VMb2FkZXI6OkVycm9yOjpDYW5ub3RDcmVhdGVSZXNvdXJjZSkgewogICAgICAg
ICAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgZ2V0IGJhY2sgdGhlIGVycm9yIGZyb20gQXBw
bGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyIGxldmVsLgotICAgICAgICAgICAgICAgIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmFpbExvYWRpbmcobV9mcmFtZSwgbV9mcmFtZS0+bG9h
ZGVyKCkuZG9jdW1lbnRMb2FkZXIoKSwgbV9jdXJyZW50UmVzb3VyY2VJZGVudGlmaWVyLCBSZXNv
dXJjZUVycm9yIHsgUmVzb3VyY2VFcnJvcjo6VHlwZTo6QWNjZXNzQ29udHJvbCB9KTsKKyAgICAg
ICAgICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZhaWxMb2FkaW5nKG1fZnJh
bWUuZ2V0KCksIG1fZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCksIG1fY3VycmVudFJl
c291cmNlSWRlbnRpZmllciwgUmVzb3VyY2VFcnJvciB7IFJlc291cmNlRXJyb3I6OlR5cGU6OkFj
Y2Vzc0NvbnRyb2wgfSk7CiAgICAgICAgICAgICAgICAgdGhpcy0+Y2FjaGVVcGRhdGVGYWlsZWQo
KTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CkBAIC00OTQsNyArNDk0
LDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRpZEZpbmlzaExvYWRpbmdFbnRyeShj
b25zdCBVUkwmIGVudHJ5VVJMKQogewogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgaGF2ZSBOZXR3
b3JrTG9hZE1ldHJpY3MgZm9yIEFwcGxpY2F0aW9uQ2FjaGUgbG9hZHMuCiAgICAgTmV0d29ya0xv
YWRNZXRyaWNzIGVtcHR5TWV0cmljczsKLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRp
ZEZpbmlzaExvYWRpbmcobV9mcmFtZSwgbV9mcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIo
KSwgbV9jdXJyZW50UmVzb3VyY2VJZGVudGlmaWVyLCBlbXB0eU1ldHJpY3MsIG51bGxwdHIpOwor
ICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmluaXNoTG9hZGluZyhtX2ZyYW1lLmdl
dCgpLCBtX2ZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLCBtX2N1cnJlbnRSZXNvdXJj
ZUlkZW50aWZpZXIsIGVtcHR5TWV0cmljcywgbnVsbHB0cik7CiAKICAgICBBU1NFUlQobV9wZW5k
aW5nRW50cmllcy5jb250YWlucyhlbnRyeVVSTC5zdHJpbmcoKSkpOwogICAgIApAQCAtNTQzLDcg
KzU0Myw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRGYWlsTG9hZGluZ0VudHJ5
KEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6CiAgICAgLy8gRklYTUU6IFdlIHNob3Vs
ZCBnZXQgYmFjayB0aGUgZXJyb3IgZnJvbSBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIg
bGV2ZWwuCiAgICAgUmVzb3VyY2VFcnJvciByZXNvdXJjZUVycm9yIHsgZXJyb3IgPT0gQXBwbGlj
YXRpb25DYWNoZVJlc291cmNlTG9hZGVyOjpFcnJvcjo6Q2Fubm90Q3JlYXRlUmVzb3VyY2UgPyBS
ZXNvdXJjZUVycm9yOjpUeXBlOjpBY2Nlc3NDb250cm9sIDogUmVzb3VyY2VFcnJvcjo6VHlwZTo6
R2VuZXJhbCB9OwogCi0gICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGYWlsTG9hZGlu
ZyhtX2ZyYW1lLCBtX2ZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLCBtX2N1cnJlbnRS
ZXNvdXJjZUlkZW50aWZpZXIsIHJlc291cmNlRXJyb3IpOworICAgIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6ZGlkRmFpbExvYWRpbmcobV9mcmFtZS5nZXQoKSwgbV9mcmFtZS0+bG9hZGVyKCku
ZG9jdW1lbnRMb2FkZXIoKSwgbV9jdXJyZW50UmVzb3VyY2VJZGVudGlmaWVyLCByZXNvdXJjZUVy
cm9yKTsKIAogICAgIFVSTCB1cmwoZW50cnlVUkwpOwogICAgIHVybC5yZW1vdmVGcmFnbWVudElk
ZW50aWZpZXIoKTsKQEAgLTY2MywxNyArNjYzLDE3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdy
b3VwOjpkaWRGYWlsTG9hZGluZ01hbmlmZXN0KEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRl
CiAgICAgICAgIGNhY2hlVXBkYXRlRmFpbGVkKCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
QXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyOjpFcnJvcjo6Tm90Rm91bmQ6Ci0gICAgICAg
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmFpbExvYWRpbmcobV9mcmFtZSwgbV9mcmFt
ZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKSwgbV9jdXJyZW50UmVzb3VyY2VJZGVudGlmaWVy
LCBtX2ZyYW1lLT5sb2FkZXIoKS5jYW5jZWxsZWRFcnJvcihtX21hbmlmZXN0TG9hZGVyLT5yZXNv
dXJjZSgpLT5yZXNvdXJjZVJlcXVlc3QoKSkpOworICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmRpZEZhaWxMb2FkaW5nKG1fZnJhbWUuZ2V0KCksIG1fZnJhbWUtPmxvYWRlcigpLmRv
Y3VtZW50TG9hZGVyKCksIG1fY3VycmVudFJlc291cmNlSWRlbnRpZmllciwgbV9mcmFtZS0+bG9h
ZGVyKCkuY2FuY2VsbGVkRXJyb3IobV9tYW5pZmVzdExvYWRlci0+cmVzb3VyY2UoKS0+cmVzb3Vy
Y2VSZXF1ZXN0KCkpKTsKICAgICAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+YWRkQ29uc29sZU1l
c3NhZ2UoTWVzc2FnZVNvdXJjZTo6QXBwQ2FjaGUsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIG1ha2VT
dHJpbmcoIkFwcGxpY2F0aW9uIENhY2hlIG1hbmlmZXN0IGNvdWxkIG5vdCBiZSBmZXRjaGVkLCBi
ZWNhdXNlIHRoZSBtYW5pZmVzdCBoYWQgYSAiLCBtX21hbmlmZXN0TG9hZGVyLT5yZXNvdXJjZSgp
LT5yZXNwb25zZSgpLmh0dHBTdGF0dXNDb2RlKCksICIgcmVzcG9uc2UuIikpOwogICAgICAgICBt
YW5pZmVzdE5vdEZvdW5kKCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQXBwbGljYXRpb25D
YWNoZVJlc291cmNlTG9hZGVyOjpFcnJvcjo6Tm90T0s6Ci0gICAgICAgIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZGlkRmFpbExvYWRpbmcobV9mcmFtZSwgbV9mcmFtZS0+bG9hZGVyKCkuZG9j
dW1lbnRMb2FkZXIoKSwgbV9jdXJyZW50UmVzb3VyY2VJZGVudGlmaWVyLCBtX2ZyYW1lLT5sb2Fk
ZXIoKS5jYW5jZWxsZWRFcnJvcihtX21hbmlmZXN0TG9hZGVyLT5yZXNvdXJjZSgpLT5yZXNvdXJj
ZVJlcXVlc3QoKSkpOworICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZhaWxM
b2FkaW5nKG1fZnJhbWUuZ2V0KCksIG1fZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCks
IG1fY3VycmVudFJlc291cmNlSWRlbnRpZmllciwgbV9mcmFtZS0+bG9hZGVyKCkuY2FuY2VsbGVk
RXJyb3IobV9tYW5pZmVzdExvYWRlci0+cmVzb3VyY2UoKS0+cmVzb3VyY2VSZXF1ZXN0KCkpKTsK
ICAgICAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNv
dXJjZTo6QXBwQ2FjaGUsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIG1ha2VTdHJpbmcoIkFwcGxpY2F0
aW9uIENhY2hlIG1hbmlmZXN0IGNvdWxkIG5vdCBiZSBmZXRjaGVkLCBiZWNhdXNlIHRoZSBtYW5p
ZmVzdCBoYWQgYSAiLCBtX21hbmlmZXN0TG9hZGVyLT5yZXNvdXJjZSgpLT5yZXNwb25zZSgpLmh0
dHBTdGF0dXNDb2RlKCksICIgcmVzcG9uc2UuIikpOwogICAgICAgICBjYWNoZVVwZGF0ZUZhaWxl
ZCgpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxv
YWRlcjo6RXJyb3I6OlJlZGlyZWN0Rm9yYmlkZGVuOgotICAgICAgICBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmRpZEZhaWxMb2FkaW5nKG1fZnJhbWUsIG1fZnJhbWUtPmxvYWRlcigpLmRvY3Vt
ZW50TG9hZGVyKCksIG1fY3VycmVudFJlc291cmNlSWRlbnRpZmllciwgbV9mcmFtZS0+bG9hZGVy
KCkuY2FuY2VsbGVkRXJyb3IobV9tYW5pZmVzdExvYWRlci0+cmVzb3VyY2UoKS0+cmVzb3VyY2VS
ZXF1ZXN0KCkpKTsKKyAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGYWlsTG9h
ZGluZyhtX2ZyYW1lLmdldCgpLCBtX2ZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLCBt
X2N1cnJlbnRSZXNvdXJjZUlkZW50aWZpZXIsIG1fZnJhbWUtPmxvYWRlcigpLmNhbmNlbGxlZEVy
cm9yKG1fbWFuaWZlc3RMb2FkZXItPnJlc291cmNlKCktPnJlc291cmNlUmVxdWVzdCgpKSk7CiAg
ICAgICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3Vy
Y2U6OkFwcENhY2hlLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCAiQXBwbGljYXRpb24gQ2FjaGUgbWFu
aWZlc3QgY291bGQgbm90IGJlIGZldGNoZWQsIGJlY2F1c2UgYSByZWRpcmVjdGlvbiB3YXMgYXR0
ZW1wdGVkLiJfcyk7CiAgICAgICAgIGNhY2hlVXBkYXRlRmFpbGVkKCk7CiAgICAgICAgIGJyZWFr
OwpAQCAtODk5LDcgKzg5OSw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpzdGFydExv
YWRpbmdFbnRyeSgpCiAgICAgYXV0byByZXF1ZXN0ID0gY3JlYXRlUmVxdWVzdChVUkwgeyB7IH0s
IGZpcnN0UGVuZGluZ0VudHJ5VVJMIH0sIG1fbmV3ZXN0Q2FjaGUgPyBtX25ld2VzdENhY2hlLT5y
ZXNvdXJjZUZvclVSTChmaXJzdFBlbmRpbmdFbnRyeVVSTCkgOiBudWxscHRyKTsKIAogICAgIG1f
Y3VycmVudFJlc291cmNlSWRlbnRpZmllciA9IG1fZnJhbWUtPnBhZ2UoKS0+cHJvZ3Jlc3MoKS5j
cmVhdGVVbmlxdWVJZGVudGlmaWVyKCk7Ci0gICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3
aWxsU2VuZFJlcXVlc3QobV9mcmFtZSwgbV9jdXJyZW50UmVzb3VyY2VJZGVudGlmaWVyLCBtX2Zy
YW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLCByZXF1ZXN0LCBSZXNvdXJjZVJlc3BvbnNl
IHsgfSk7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsU2VuZFJlcXVlc3QobV9m
cmFtZS5nZXQoKSwgbV9jdXJyZW50UmVzb3VyY2VJZGVudGlmaWVyLCBtX2ZyYW1lLT5sb2FkZXIo
KS5kb2N1bWVudExvYWRlcigpLCByZXF1ZXN0LCBSZXNvdXJjZVJlc3BvbnNlIHsgfSk7CiAKICAg
ICBhdXRvJiBkb2N1bWVudExvYWRlciA9ICptX2ZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRl
cigpOwogICAgIGF1dG8gcmVxdWVzdFVSTCA9IHJlcXVlc3QudXJsKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmggYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmgKaW5k
ZXggMDFjODE3NmJjZDVjMTE3ZGU5N2JkY2Y1YmIzYTI2ODgxYjY0YTI4Yi4uNjM3MWZhNThlYmM2
NTQwOTUwMTJlMDNhNGU3ZDRlNjRiNDBiMWI5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuaApAQCAtMTU5LDcgKzE1
OSw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBGcmFtZSB1c2VkIGZvciBmZXRjaGluZyByZXNvdXJj
ZXMgd2hlbiB1cGRhdGluZy4KICAgICAvLyBGSVhNRTogQW4gdXBkYXRlIHN0YXJ0ZWQgYnkgYSBw
YXJ0aWN1bGFyIGZyYW1lIHNob3VsZCBub3Qgc3RvcCBpZiBpdCBpcyBkZXN0cm95ZWQsIGJ1dCB0
aGVyZSBhcmUgb3RoZXIgZnJhbWVzIGFzc29jaWF0ZWQgd2l0aCB0aGUgc2FtZSBjYWNoZSBncm91
cC4KLSAgICBGcmFtZSogbV9mcmFtZSB7IG51bGxwdHIgfTsKKyAgICBXZWFrUHRyPEZyYW1lPiBt
X2ZyYW1lOwogICAKICAgICAvLyBBbiBvYnNvbGV0ZSBjYWNoZSBncm91cCBpcyBuZXZlciBzdG9y
ZWQsIGJ1dCB0aGUgb3Bwb3NpdGUgaXMgbm90IHRydWUgLSBzdG9yaW5nIG1heSBmYWlsIGZvciBt
dWx0aXBsZSByZWFzb25zLCBzdWNoIGFzIGV4Y2VlZGluZyBkaXNrIHF1b3RhLgogICAgIHVuc2ln
bmVkIG1fc3RvcmFnZUlEIHsgMCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9B
YnN0cmFjdEZyYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Fic3RyYWN0RnJhbWUuaAppbmRl
eCA5OTVhMzYxMjgyMGE2ZmY0MTRhYzBkMTA0ZWRjNDg5MjQ4NzJmZjRmLi41YTE1N2I0NjliMTE1
ZjRmNWQ5Y2Y2OGE3ZTRkNjFjZWU2NTRjOTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0Fic3RyYWN0RnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Fic3RyYWN0RnJh
bWUuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUg
PHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMzQsNyArMzUsNyBAQCBjbGFzcyBBYnN0cmFjdERP
TVdpbmRvdzsKIGNsYXNzIFdpbmRvd1Byb3h5OwogCiAvLyBGSVhNRTogUmVuYW1lIEZyYW1lIHRv
IExvY2FsRnJhbWUgYW5kIEFic3RyYWN0RnJhbWUgdG8gRnJhbWUuCi1jbGFzcyBBYnN0cmFjdEZy
YW1lIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEFic3RyYWN0RnJhbWU+IHsKK2NsYXNz
IEFic3RyYWN0RnJhbWUgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8QWJzdHJhY3RGcmFt
ZT4sIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxBYnN0cmFjdEZyYW1lPiB7CiBwdWJsaWM6CiAgICAg
dmlydHVhbCB+QWJzdHJhY3RGcmFtZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0ZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCmluZGV4IDU5ZGZm
ZmExYTZjMmM4ZGRjMzE2ZmVjZTAwZWZmOGY1MjI2ZTQ5YjkuLjU3YWQ5MDJjNDk1MDU2NDM5OTIw
YjlmMmU1NmQ3YjgyN2MyNDc4Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCkBAIC0xNjMsNyArMTYz
LDcgQEAgRnJhbWU6OkZyYW1lKFBhZ2UmIHBhZ2UsIEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3du
ZXJFbGVtZW50LCBVbmlxdWVSZWY8RnJhbWVMb2EKIAogICAgIGlmIChvd25lckVsZW1lbnQpIHsK
ICAgICAgICAgbV9tYWluRnJhbWUuc2VsZk9ubHlSZWYoKTsKLSAgICAgICAgb3duZXJFbGVtZW50
LT5zZXRDb250ZW50RnJhbWUodGhpcyk7CisgICAgICAgIG93bmVyRWxlbWVudC0+c2V0Q29udGVu
dEZyYW1lKCp0aGlzKTsKICAgICB9CiAKICNpZm5kZWYgTkRFQlVHCkBAIC0yMDcsMTQgKzIwNywx
NCBAQCBGcmFtZTo6fkZyYW1lKCkKICAgICAgICAgbV9tYWluRnJhbWUuc2VsZk9ubHlEZXJlZigp
OwogfQogCi12b2lkIEZyYW1lOjphZGREZXN0cnVjdGlvbk9ic2VydmVyKEZyYW1lRGVzdHJ1Y3Rp
b25PYnNlcnZlciogb2JzZXJ2ZXIpCit2b2lkIEZyYW1lOjphZGREZXN0cnVjdGlvbk9ic2VydmVy
KEZyYW1lRGVzdHJ1Y3Rpb25PYnNlcnZlciYgb2JzZXJ2ZXIpCiB7Ci0gICAgbV9kZXN0cnVjdGlv
bk9ic2VydmVycy5hZGQob2JzZXJ2ZXIpOworICAgIG1fZGVzdHJ1Y3Rpb25PYnNlcnZlcnMuYWRk
KCZvYnNlcnZlcik7CiB9CiAKLXZvaWQgRnJhbWU6OnJlbW92ZURlc3RydWN0aW9uT2JzZXJ2ZXIo
RnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyKiBvYnNlcnZlcikKK3ZvaWQgRnJhbWU6OnJlbW92ZURl
c3RydWN0aW9uT2JzZXJ2ZXIoRnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyJiBvYnNlcnZlcikKIHsK
LSAgICBtX2Rlc3RydWN0aW9uT2JzZXJ2ZXJzLnJlbW92ZShvYnNlcnZlcik7CisgICAgbV9kZXN0
cnVjdGlvbk9ic2VydmVycy5yZW1vdmUoJm9ic2VydmVyKTsKIH0KIAogdm9pZCBGcmFtZTo6c2V0
VmlldyhSZWZQdHI8RnJhbWVWaWV3PiYmIHZpZXcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKaW5kZXggMTI4OTA4
N2MwZGZlNGM1NTMwOTVlNjM5OWYyNGM4ZmQ1MTZjZmIwMS4uYzk4NTk4MjdhYWI5NjI0OWUyZGJh
OTdjZWRiOWY4ODM3MzhmMDNiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFt
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaApAQCAtMTQ4LDggKzE0OCw4IEBA
IHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIERPTVdpbmRvdyogd2luZG93KCkgY29uc3Q7
CiAKLSAgICB2b2lkIGFkZERlc3RydWN0aW9uT2JzZXJ2ZXIoRnJhbWVEZXN0cnVjdGlvbk9ic2Vy
dmVyKik7Ci0gICAgdm9pZCByZW1vdmVEZXN0cnVjdGlvbk9ic2VydmVyKEZyYW1lRGVzdHJ1Y3Rp
b25PYnNlcnZlciopOworICAgIHZvaWQgYWRkRGVzdHJ1Y3Rpb25PYnNlcnZlcihGcmFtZURlc3Ry
dWN0aW9uT2JzZXJ2ZXImKTsKKyAgICB2b2lkIHJlbW92ZURlc3RydWN0aW9uT2JzZXJ2ZXIoRnJh
bWVEZXN0cnVjdGlvbk9ic2VydmVyJik7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHdpbGxE
ZXRhY2hQYWdlKCk7CiAgICAgdm9pZCBkZXRhY2hGcm9tUGFnZSgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXIuY3BwCmluZGV4IDZiMGFlNTMzYjAy
YmNhYzQ2MWZhZjA0N2U2OGU3MzdkYjVkMmI0YzUuLjhmM2ZlMDA0OGIxNTZmZjE2YTMxYzY2ZjM3
MzhkZmMwY2RkMzc2ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVEZXN0
cnVjdGlvbk9ic2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lRGVzdHJ1
Y3Rpb25PYnNlcnZlci5jcHAKQEAgLTQyLDE1ICs0MiwyMCBAQCBGcmFtZURlc3RydWN0aW9uT2Jz
ZXJ2ZXI6On5GcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXIoKQogCiB9CiAKK0ZyYW1lKiBGcmFtZURl
c3RydWN0aW9uT2JzZXJ2ZXI6OmZyYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9mcmFtZS5n
ZXQoKTsKK30KKwogdm9pZCBGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXI6Om9ic2VydmVGcmFtZShG
cmFtZSogZnJhbWUpCiB7CiAgICAgaWYgKG1fZnJhbWUpCi0gICAgICAgIG1fZnJhbWUtPnJlbW92
ZURlc3RydWN0aW9uT2JzZXJ2ZXIodGhpcyk7CisgICAgICAgIG1fZnJhbWUtPnJlbW92ZURlc3Ry
dWN0aW9uT2JzZXJ2ZXIoKnRoaXMpOwogCi0gICAgbV9mcmFtZSA9IGZyYW1lOworICAgIG1fZnJh
bWUgPSBtYWtlV2Vha1B0cihmcmFtZSk7CiAKICAgICBpZiAobV9mcmFtZSkKLSAgICAgICAgbV9m
cmFtZS0+YWRkRGVzdHJ1Y3Rpb25PYnNlcnZlcih0aGlzKTsKKyAgICAgICAgbV9mcmFtZS0+YWRk
RGVzdHJ1Y3Rpb25PYnNlcnZlcigqdGhpcyk7CiB9CiAKIHZvaWQgRnJhbWVEZXN0cnVjdGlvbk9i
c2VydmVyOjpmcmFtZURlc3Ryb3llZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0ZyYW1lRGVzdHJ1Y3Rpb25PYnNlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZURl
c3RydWN0aW9uT2JzZXJ2ZXIuaAppbmRleCAwZGIzNDM1NTgzZmFlYWE5YjUyNjFjNzFhZDhmMzJh
MjQ2MDVhYTgyLi42YjYyYzAzZDc4NDViMDhhZDFlZGQzMjVlYzExNzI2MzMzY2Y4Nzk2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lRGVzdHJ1Y3Rpb25PYnNlcnZlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyLmgKQEAgLTI1
LDYgKzI1LDggQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgor
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZyYW1lOwpAQCAtMzYsMTMgKzM4LDEzIEBA
IHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgZnJhbWVEZXN0cm95ZWQo
KTsKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgd2lsbERldGFjaFBhZ2UoKTsKIAot
ICAgIEZyYW1lKiBmcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWU7IH0KKyAgICBXRUJDT1JF
X0VYUE9SVCBGcmFtZSogZnJhbWUoKSBjb25zdDsKIAogcHJvdGVjdGVkOgogICAgIFdFQkNPUkVf
RVhQT1JUIHZpcnR1YWwgfkZyYW1lRGVzdHJ1Y3Rpb25PYnNlcnZlcigpOwogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgb2JzZXJ2ZUZyYW1lKEZyYW1lKik7CiAKLSAgICBGcmFtZSogbV9mcmFtZTsK
KyAgICBXZWFrUHRyPEZyYW1lPiBtX2ZyYW1lOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVRyZWUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZVRyZWUuY3BwCmluZGV4IDExOGFiZmE1ODI5YWMwYzRlNmU2ZWQz
YzU1NjQyNzRiMjQ2MTI1YTUuLjdlY2JmZmNjMzViMDNkY2VmNTI2M2ViOWM0Yjc2ZGQ5N2ZlNzY1
ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVUcmVlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVHJlZS5jcHAKQEAgLTM2LDYgKzM2LDEyIEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAorRnJhbWVUcmVlOjpGcmFtZVRyZWUoRnJhbWUmIHRoaXNGcmFt
ZSwgRnJhbWUqIHBhcmVudEZyYW1lKQorICAgIDogbV90aGlzRnJhbWUodGhpc0ZyYW1lKQorICAg
ICwgbV9wYXJlbnQobWFrZVdlYWtQdHIocGFyZW50RnJhbWUpKQoreworfQorCiBGcmFtZVRyZWU6
On5GcmFtZVRyZWUoKQogewogICAgIGZvciAoRnJhbWUqIGNoaWxkID0gZmlyc3RDaGlsZCgpOyBj
aGlsZDsgY2hpbGQgPSBjaGlsZC0+dHJlZSgpLm5leHRTaWJsaW5nKCkpCkBAIC02MSwxNSArNjcs
MTUgQEAgdm9pZCBGcmFtZVRyZWU6OmNsZWFyTmFtZSgpCiAKIEZyYW1lKiBGcmFtZVRyZWU6OnBh
cmVudCgpIGNvbnN0IAogeyAKLSAgICByZXR1cm4gbV9wYXJlbnQ7CisgICAgcmV0dXJuIG1fcGFy
ZW50LmdldCgpOwogfQogCiB2b2lkIEZyYW1lVHJlZTo6YXBwZW5kQ2hpbGQoRnJhbWUmIGNoaWxk
KQogewogICAgIEFTU0VSVChjaGlsZC5wYWdlKCkgPT0gbV90aGlzRnJhbWUucGFnZSgpKTsKLSAg
ICBjaGlsZC50cmVlKCkubV9wYXJlbnQgPSAmbV90aGlzRnJhbWU7Ci0gICAgRnJhbWUqIG9sZExh
c3QgPSBtX2xhc3RDaGlsZDsKLSAgICBtX2xhc3RDaGlsZCA9ICZjaGlsZDsKKyAgICBjaGlsZC50
cmVlKCkubV9wYXJlbnQgPSBtYWtlV2Vha1B0cihtX3RoaXNGcmFtZSk7CisgICAgV2Vha1B0cjxG
cmFtZT4gb2xkTGFzdCA9IG1fbGFzdENoaWxkOworICAgIG1fbGFzdENoaWxkID0gbWFrZVdlYWtQ
dHIoY2hpbGQpOwogCiAgICAgaWYgKG9sZExhc3QpIHsKICAgICAgICAgY2hpbGQudHJlZSgpLm1f
cHJldmlvdXNTaWJsaW5nID0gb2xkTGFzdDsKQEAgLTg0LDcgKzkwLDcgQEAgdm9pZCBGcmFtZVRy
ZWU6OmFwcGVuZENoaWxkKEZyYW1lJiBjaGlsZCkKIAogdm9pZCBGcmFtZVRyZWU6OnJlbW92ZUNo
aWxkKEZyYW1lJiBjaGlsZCkKIHsKLSAgICBGcmFtZSomIG5ld0xvY2F0aW9uRm9yUHJldmlvdXMg
PSBtX2xhc3RDaGlsZCA9PSAmY2hpbGQgPyBtX2xhc3RDaGlsZCA6IGNoaWxkLnRyZWUoKS5tX25l
eHRTaWJsaW5nLT50cmVlKCkubV9wcmV2aW91c1NpYmxpbmc7CisgICAgV2Vha1B0cjxGcmFtZT4m
IG5ld0xvY2F0aW9uRm9yUHJldmlvdXMgPSBtX2xhc3RDaGlsZCA9PSAmY2hpbGQgPyBtX2xhc3RD
aGlsZCA6IGNoaWxkLnRyZWUoKS5tX25leHRTaWJsaW5nLT50cmVlKCkubV9wcmV2aW91c1NpYmxp
bmc7CiAgICAgUmVmUHRyPEZyYW1lPiYgbmV3TG9jYXRpb25Gb3JOZXh0ID0gbV9maXJzdENoaWxk
ID09ICZjaGlsZCA/IG1fZmlyc3RDaGlsZCA6IGNoaWxkLnRyZWUoKS5tX3ByZXZpb3VzU2libGlu
Zy0+dHJlZSgpLm1fbmV4dFNpYmxpbmc7CiAKICAgICBjaGlsZC50cmVlKCkubV9wYXJlbnQgPSBu
dWxscHRyOwpAQCAtNDIzLDcgKzQyOSw3IEBAIEZyYW1lKiBGcmFtZVRyZWU6OnRyYXZlcnNlTmV4
dEluUG9zdE9yZGVyKENhbldyYXAgY2FuV3JhcCkgY29uc3QKICAgICBpZiAobV9uZXh0U2libGlu
ZykKICAgICAgICAgcmV0dXJuIG1fbmV4dFNpYmxpbmctPnRyZWUoKS5kZWVwRmlyc3RDaGlsZCgp
OwogICAgIGlmIChtX3BhcmVudCkKLSAgICAgICAgcmV0dXJuIG1fcGFyZW50OworICAgICAgICBy
ZXR1cm4gbV9wYXJlbnQuZ2V0KCk7CiAgICAgaWYgKGNhbldyYXAgPT0gQ2FuV3JhcDo6WWVzKQog
ICAgICAgICByZXR1cm4gZGVlcEZpcnN0Q2hpbGQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVUcmVlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lVHJlZS5oCmluZGV4IGQzZjY1ZmYyYTk1NTY5YTg5MTliMmVjNGNlNzFjMjQz
YmVmODZkNzEuLmUxNzA3MDFmMDFlNTIxMDA3Y2YxY2I5ZDViY2E5Y2U3NDhkNGNjZWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVUcmVlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZVRyZWUuaApAQCAtMzQsMTQgKzM0LDcgQEAgY2xhc3MgRnJhbWVUcmVlIHsK
IHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGludmFsaWRDb3VudCA9IHN0
YXRpY19jYXN0PHVuc2lnbmVkPigtMSk7CiAKLSAgICBGcmFtZVRyZWUoRnJhbWUmIHRoaXNGcmFt
ZSwgRnJhbWUqIHBhcmVudEZyYW1lKQotICAgICAgICA6IG1fdGhpc0ZyYW1lKHRoaXNGcmFtZSkK
LSAgICAgICAgLCBtX3BhcmVudChwYXJlbnRGcmFtZSkKLSAgICAgICAgLCBtX3ByZXZpb3VzU2li
bGluZyhudWxscHRyKQotICAgICAgICAsIG1fbGFzdENoaWxkKG51bGxwdHIpCi0gICAgICAgICwg
bV9zY29wZWRDaGlsZENvdW50KGludmFsaWRDb3VudCkKLSAgICB7Ci0gICAgfQorICAgIEZyYW1l
VHJlZShGcmFtZSYgdGhpc0ZyYW1lLCBGcmFtZSogcGFyZW50RnJhbWUpOwogCiAgICAgfkZyYW1l
VHJlZSgpOwogCkBAIC01Miw5ICs0NSw5IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBG
cmFtZSogcGFyZW50KCkgY29uc3Q7CiAgICAgCiAgICAgRnJhbWUqIG5leHRTaWJsaW5nKCkgY29u
c3QgeyByZXR1cm4gbV9uZXh0U2libGluZy5nZXQoKTsgfQotICAgIEZyYW1lKiBwcmV2aW91c1Np
YmxpbmcoKSBjb25zdCB7IHJldHVybiBtX3ByZXZpb3VzU2libGluZzsgfQorICAgIEZyYW1lKiBw
cmV2aW91c1NpYmxpbmcoKSBjb25zdCB7IHJldHVybiBtX3ByZXZpb3VzU2libGluZy5nZXQoKTsg
fQogICAgIEZyYW1lKiBmaXJzdENoaWxkKCkgY29uc3QgeyByZXR1cm4gbV9maXJzdENoaWxkLmdl
dCgpOyB9Ci0gICAgRnJhbWUqIGxhc3RDaGlsZCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdENoaWxk
OyB9CisgICAgRnJhbWUqIGxhc3RDaGlsZCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdENoaWxkLmdl
dCgpOyB9CiAKICAgICBGcmFtZSogZmlyc3RSZW5kZXJlZENoaWxkKCkgY29uc3Q7CiAgICAgRnJh
bWUqIG5leHRSZW5kZXJlZFNpYmxpbmcoKSBjb25zdDsKQEAgLTEwMCwxNSArOTMsMTUgQEAgcHJp
dmF0ZToKIAogICAgIEZyYW1lJiBtX3RoaXNGcmFtZTsKIAotICAgIEZyYW1lKiBtX3BhcmVudDsK
KyAgICBXZWFrUHRyPEZyYW1lPiBtX3BhcmVudDsKICAgICBBdG9tU3RyaW5nIG1fbmFtZTsgLy8g
VGhlIGFjdHVhbCBmcmFtZSBuYW1lIChtYXkgYmUgZW1wdHkpLgogICAgIEF0b21TdHJpbmcgbV91
bmlxdWVOYW1lOwogCiAgICAgUmVmUHRyPEZyYW1lPiBtX25leHRTaWJsaW5nOwotICAgIEZyYW1l
KiBtX3ByZXZpb3VzU2libGluZzsKKyAgICBXZWFrUHRyPEZyYW1lPiBtX3ByZXZpb3VzU2libGlu
ZzsKICAgICBSZWZQdHI8RnJhbWU+IG1fZmlyc3RDaGlsZDsKLSAgICBGcmFtZSogbV9sYXN0Q2hp
bGQ7Ci0gICAgbXV0YWJsZSB1bnNpZ25lZCBtX3Njb3BlZENoaWxkQ291bnQ7CisgICAgV2Vha1B0
cjxGcmFtZT4gbV9sYXN0Q2hpbGQ7CisgICAgbXV0YWJsZSB1bnNpZ25lZCBtX3Njb3BlZENoaWxk
Q291bnQgeyBpbnZhbGlkQ291bnQgfTsKICAgICBtdXRhYmxlIHVpbnQ2NF90IG1fZnJhbWVJREdl
bmVyYXRvciB7IDAgfTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJTY3JvbGxiYXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNj
cm9sbGJhci5jcHAKaW5kZXggYWIxN2FlODE3NzFkODdhOGZhMThmYzQyN2Q0YzcwY2FkYzBkNzQ2
Ni4uMWRmYjYzZjBmOThmNDU5YzM1N2YxOGVjMjViYzQxMGM1YjFkMDYyZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhci5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAg
UmVmPFNjcm9sbGJhcj4gUmVuZGVyU2Nyb2xsYmFyOjpjcmVhdGVDdXN0b21TY3JvbGxiYXIoU2Ny
b2xsYWJsZUFyZWEmIHNjcm9sbGFibGUKIFJlbmRlclNjcm9sbGJhcjo6UmVuZGVyU2Nyb2xsYmFy
KFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYSwgU2Nyb2xsYmFyT3JpZW50YXRpb24gb3Jp
ZW50YXRpb24sIEVsZW1lbnQqIG93bmVyRWxlbWVudCwgRnJhbWUqIG93bmluZ0ZyYW1lKQogICAg
IDogU2Nyb2xsYmFyKHNjcm9sbGFibGVBcmVhLCBvcmllbnRhdGlvbiwgU2Nyb2xsYmFyQ29udHJv
bFNpemU6OlJlZ3VsYXIsIFJlbmRlclNjcm9sbGJhclRoZW1lOjpyZW5kZXJTY3JvbGxiYXJUaGVt
ZSgpLCB0cnVlKQogICAgICwgbV9vd25lckVsZW1lbnQob3duZXJFbGVtZW50KQotICAgICwgbV9v
d25pbmdGcmFtZShvd25pbmdGcmFtZSkKKyAgICAsIG1fb3duaW5nRnJhbWUobWFrZVdlYWtQdHIo
b3duaW5nRnJhbWUpKQogewogICAgIEFTU0VSVChvd25lckVsZW1lbnQgfHwgb3duaW5nRnJhbWUp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFy
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyLmgKaW5kZXggYmYx
NjI0NTg4M2IwNjJiZGQyY2QyNGZjYWM3YWExYTUyMWFiOGNlYS4uNTc2MmM5YWQxMzExNDY3YjBk
YzQ0OGI5N2Y2Mzc2NDA5NTlkYmFjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclNjcm9sbGJhci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJTY3JvbGxiYXIuaApAQCAtODUsNyArODUsNyBAQCBwcml2YXRlOgogICAgIC8vIEZyYW1lVmll
dyB3aGljaCB0aGlzIEVsZW1lbnQgcG9pbnRlciBjYW4gaW4gbm8gd2F5IGtlZXAgYWxpdmUuIFNl
ZSB3ZWJraXQgYnVnIDgwNjEwLgogICAgIFJlZlB0cjxFbGVtZW50PiBtX293bmVyRWxlbWVudDsK
IAotICAgIEZyYW1lKiBtX293bmluZ0ZyYW1lOworICAgIFdlYWtQdHI8RnJhbWU+IG1fb3duaW5n
RnJhbWU7CiAgICAgSGFzaE1hcDx1bnNpZ25lZCwgUmVuZGVyUHRyPFJlbmRlclNjcm9sbGJhclBh
cnQ+PiBtX3BhcnRzOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9nbGliL0RPTS9ET01PYmplY3RDYWNoZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvRE9NL0RPTU9iamVjdENh
Y2hlLmNwcAppbmRleCAyMmI0MGU0MzliYmI2MDE1ZTE4YWE4YzI1NThlMGU2OTNmNWViMWE5Li40
OTQwYjEwYmVkN2Q2ZDk5NjFiMmQwYzQxMDRkYmRhZWRkOTE3ZWZiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvRE9NL0RPTU9iamVj
dENhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2dsaWIvRE9NL0RPTU9iamVjdENhY2hlLmNwcApAQCAtMTcwLDcgKzE3MCw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBmcmFtZURlc3Ryb3llZCgpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBj
bGVhcigpOwotICAgICAgICBXZWJDb3JlOjpGcmFtZSogZnJhbWUgPSBtX2ZyYW1lOworICAgICAg
ICBXZWJDb3JlOjpGcmFtZSogZnJhbWUgPSBtX2ZyYW1lLmdldCgpOwogICAgICAgICBGcmFtZURl
c3RydWN0aW9uT2JzZXJ2ZXI6OmZyYW1lRGVzdHJveWVkKCk7CiAgICAgICAgIGRvbU9iamVjdENh
Y2hlRnJhbWVPYnNlcnZlcnMoKS5yZW1vdmUoZnJhbWUpOwogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAppbmRleCBkOTcxMTg4NTEyZGI2OWYz
OWZiM2NlNmI1MTBiM2E0MzZmNDRkODMzLi5iMDFhMjFmNjVmYmM5NzQzMTJmZWNkNTI1MmZiZWRl
OTU4ODgyMWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJh
bWUuY3BwCkBAIC0xMDYsNyArMTA2LDcgQEAgdm9pZCBXZWJGcmFtZTo6aW5pdFdpdGhDb3JlTWFp
bkZyYW1lKFdlYlBhZ2UmIHBhZ2UsIEZyYW1lJiBjb3JlRnJhbWUpCiB7CiAgICAgcGFnZS5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZENyZWF0ZU1haW5GcmFtZShmcmFtZUlEKCkpKTsK
IAotICAgIG1fY29yZUZyYW1lID0gJmNvcmVGcmFtZTsKKyAgICBtX2NvcmVGcmFtZSA9IG1ha2VX
ZWFrUHRyKGNvcmVGcmFtZSk7CiAgICAgbV9jb3JlRnJhbWUtPnRyZWUoKS5zZXROYW1lKFN0cmlu
ZygpKTsKICAgICBtX2NvcmVGcmFtZS0+aW5pdCgpOwogfQpAQCAtMTE3LDcgKzExNyw3IEBAIFJl
ZjxXZWJGcmFtZT4gV2ViRnJhbWU6OmNyZWF0ZVN1YmZyYW1lKFdlYlBhZ2UqIHBhZ2UsIGNvbnN0
IFN0cmluZyYgZnJhbWVOYW1lLCBICiAgICAgcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpEaWRDcmVhdGVTdWJmcmFtZShmcmFtZS0+ZnJhbWVJRCgpKSk7CiAKICAgICBhdXRvIGNv
cmVGcmFtZSA9IEZyYW1lOjpjcmVhdGUocGFnZS0+Y29yZVBhZ2UoKSwgb3duZXJFbGVtZW50LCBt
YWtlVW5pcXVlUmVmPFdlYkZyYW1lTG9hZGVyQ2xpZW50PihmcmFtZS5nZXQoKSkpOwotICAgIGZy
YW1lLT5tX2NvcmVGcmFtZSA9IGNvcmVGcmFtZS5wdHIoKTsKKyAgICBmcmFtZS0+bV9jb3JlRnJh
bWUgPSBtYWtlV2Vha1B0cihjb3JlRnJhbWUuZ2V0KCkpOwogCiAgICAgY29yZUZyYW1lLT50cmVl
KCkuc2V0TmFtZShmcmFtZU5hbWUpOwogICAgIGlmIChvd25lckVsZW1lbnQpIHsKQEAgLTE3Nyw2
ICsxNzcsMTEgQEAgV2ViRnJhbWUqIFdlYkZyYW1lOjpmcm9tQ29yZUZyYW1lKGNvbnN0IEZyYW1l
JiBmcmFtZSkKICAgICByZXR1cm4gJndlYkZyYW1lTG9hZGVyQ2xpZW50LT53ZWJGcmFtZSgpOwog
fQogCitXZWJDb3JlOjpGcmFtZSogV2ViRnJhbWU6OmNvcmVGcmFtZSgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1fY29yZUZyYW1lLmdldCgpOworfQorCiBGcmFtZUluZm9EYXRhIFdlYkZyYW1lOjpp
bmZvKCkgY29uc3QKIHsKICAgICBhdXRvKiBwYXJlbnQgPSBwYXJlbnRGcmFtZSgpOwpAQCAtMTg1
LDcgKzE5MCw3IEBAIEZyYW1lSW5mb0RhdGEgV2ViRnJhbWU6OmluZm8oKSBjb25zdAogICAgICAg
ICBpc01haW5GcmFtZSgpLAogICAgICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgdXNlIHRoZSBm
dWxsIHJlcXVlc3QuCiAgICAgICAgIFJlc291cmNlUmVxdWVzdCh1cmwoKSksCi0gICAgICAgIFNl
Y3VyaXR5T3JpZ2luRGF0YTo6ZnJvbUZyYW1lKG1fY29yZUZyYW1lKSwKKyAgICAgICAgU2VjdXJp
dHlPcmlnaW5EYXRhOjpmcm9tRnJhbWUobV9jb3JlRnJhbWUuZ2V0KCkpLAogICAgICAgICBtX2Zy
YW1lSUQsCiAgICAgICAgIHBhcmVudCA/IE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmll
cj4geyBwYXJlbnQtPmZyYW1lSUQoKSB9IDogV1RGOjpudWxsb3B0LAogICAgIH07CkBAIC01MzMs
MTMgKzUzOCwxMyBAQCBKU0dsb2JhbENvbnRleHRSZWYgV2ViRnJhbWU6OmpzQ29udGV4dEZvcldv
cmxkKEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQqIHdvcmxkKQogCiBib29sIFdlYkZyYW1lOjpo
YW5kbGVzUGFnZVNjYWxlR2VzdHVyZSgpIGNvbnN0CiB7Ci0gICAgYXV0byogcGx1Z2luVmlldyA9
IFdlYlBhZ2U6OnBsdWdpblZpZXdGb3JGcmFtZShtX2NvcmVGcmFtZSk7CisgICAgYXV0byogcGx1
Z2luVmlldyA9IFdlYlBhZ2U6OnBsdWdpblZpZXdGb3JGcmFtZShtX2NvcmVGcmFtZS5nZXQoKSk7
CiAgICAgcmV0dXJuIHBsdWdpblZpZXcgJiYgcGx1Z2luVmlldy0+aGFuZGxlc1BhZ2VTY2FsZUZh
Y3RvcigpOwogfQogCiBib29sIFdlYkZyYW1lOjpyZXF1aXJlc1VuaWZpZWRTY2FsZUZhY3Rvcigp
IGNvbnN0CiB7Ci0gICAgYXV0byogcGx1Z2luVmlldyA9IFdlYlBhZ2U6OnBsdWdpblZpZXdGb3JG
cmFtZShtX2NvcmVGcmFtZSk7CisgICAgYXV0byogcGx1Z2luVmlldyA9IFdlYlBhZ2U6OnBsdWdp
blZpZXdGb3JGcmFtZShtX2NvcmVGcmFtZS5nZXQoKSk7CiAgICAgcmV0dXJuIHBsdWdpblZpZXcg
JiYgcGx1Z2luVmlldy0+cmVxdWlyZXNVbmlmaWVkU2NhbGVGYWN0b3IoKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmgKaW5kZXggZGUzNTM3Y2IyZGYw
NDM5MzRmYjhjNjNiN2Q0YjYwN2FlZDBjNGMwOC4uOTZiYWIwYzYyY2VkMjY4ZmM4ZTU1MmM1ZDAy
MTBhZDYzZTgyZmYyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViRnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJG
cmFtZS5oCkBAIC03OCw3ICs3OCw3IEBAIHB1YmxpYzoKICAgICBXZWJQYWdlKiBwYWdlKCkgY29u
c3Q7CiAKICAgICBzdGF0aWMgV2ViRnJhbWUqIGZyb21Db3JlRnJhbWUoY29uc3QgV2ViQ29yZTo6
RnJhbWUmKTsKLSAgICBXZWJDb3JlOjpGcmFtZSogY29yZUZyYW1lKCkgY29uc3QgeyByZXR1cm4g
bV9jb3JlRnJhbWU7IH0KKyAgICBXZWJDb3JlOjpGcmFtZSogY29yZUZyYW1lKCkgY29uc3Q7CiAK
ICAgICBGcmFtZUluZm9EYXRhIGluZm8oKSBjb25zdDsKICAgICBXZWJDb3JlOjpGcmFtZUlkZW50
aWZpZXIgZnJhbWVJRCgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVJRDsgfQpAQCAtMTg0LDcgKzE4
NCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgV2ViRnJhbWUoKTsKIAotICAgIFdlYkNvcmU6
OkZyYW1lKiBtX2NvcmVGcmFtZSB7IG51bGxwdHIgfTsKKyAgICBXZWFrUHRyPFdlYkNvcmU6OkZy
YW1lPiBtX2NvcmVGcmFtZTsKIAogICAgIHVpbnQ2NF90IG1fcG9saWN5TGlzdGVuZXJJRCB7IDAg
fTsKICAgICBPcHRpb25hbDxXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXI+IG1fcG9saWN5
SWRlbnRpZmllcjsK
</data>
<flag name="review"
          id="429813"
          type_id="1"
          status="+"
          setter="youennf"
    />
    <flag name="commit-queue"
          id="429866"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>