<?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>220079</bug_id>
          
          <creation_ts>2020-12-21 20:41:49 -0800</creation_ts>
          <short_desc>Move the space transform outside the Gradient class</short_desc>
          <delta_ts>2021-01-25 11:28:24 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <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>
          
          <blocked>219468</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Said Abou-Hallawa">sabouhallawa</reporter>
          <assigned_to name="Said Abou-Hallawa">sabouhallawa</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>changseok</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fmalita</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>pdr</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1716158</commentid>
    <comment_count>0</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-12-21 20:41:49 -0800</bug_when>
    <thetext>The goal is get the suitable abstraction for the Gradient class so we can share it among different clients easier.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1716161</commentid>
    <comment_count>1</comment_count>
      <attachid>416650</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-12-21 20:53:24 -0800</bug_when>
    <thetext>Created attachment 416650
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1716164</commentid>
    <comment_count>2</comment_count>
      <attachid>416651</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-12-21 21:18:09 -0800</bug_when>
    <thetext>Created attachment 416651
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1716168</commentid>
    <comment_count>3</comment_count>
      <attachid>416653</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-12-21 21:45:51 -0800</bug_when>
    <thetext>Created attachment 416653
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1716228</commentid>
    <comment_count>4</comment_count>
      <attachid>416653</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-12-22 08:48:48 -0800</bug_when>
    <thetext>Comment on attachment 416653
Patch

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

&gt; Source/WebCore/platform/graphics/Gradient.h:77
&gt; +        GradientSpreadMethod spreadMethod { GradientSpreadMethod::Pad };

I think you can keep GradientSpreadMethod as part of Gradient. All existing code sets it at the same time as the color stops. It&apos;s only gradientSpaceTransform that&apos;s change per-paint (see RenderSVGResourceGradient::applyResource()).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1716264</commentid>
    <comment_count>5</comment_count>
      <attachid>416653</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-12-22 10:39:38 -0800</bug_when>
    <thetext>Comment on attachment 416653
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/Gradient.h:77
&gt;&gt; +        GradientSpreadMethod spreadMethod { GradientSpreadMethod::Pad };
&gt; 
&gt; I think you can keep GradientSpreadMethod as part of Gradient. All existing code sets it at the same time as the color stops. It&apos;s only gradientSpaceTransform that&apos;s change per-paint (see RenderSVGResourceGradient::applyResource()).

I looked at CanvasGradient https://developer.mozilla.org/en-US/docs/Web/API/CanvasGradient and tried to make the Gradient class store what it stores: gradient data and color stops.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1716272</commentid>
    <comment_count>6</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-12-22 11:00:46 -0800</bug_when>
    <thetext>(In reply to Said Abou-Hallawa from comment #5)
&gt; Comment on attachment 416653 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=416653&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/platform/graphics/Gradient.h:77
&gt; &gt;&gt; +        GradientSpreadMethod spreadMethod { GradientSpreadMethod::Pad };
&gt; &gt; 
&gt; &gt; I think you can keep GradientSpreadMethod as part of Gradient. All existing code sets it at the same time as the color stops. It&apos;s only gradientSpaceTransform that&apos;s change per-paint (see RenderSVGResourceGradient::applyResource()).
&gt; 
&gt; I looked at CanvasGradient
&gt; https://developer.mozilla.org/en-US/docs/Web/API/CanvasGradient and tried to
&gt; make the Gradient class store what it stores: gradient data and color stops.

Right but the spread method isn&apos;t exposed for canvas gradients.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1716798</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-12-28 20:42:13 -0800</bug_when>
    <thetext>&lt;rdar://problem/72715158&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1719212</commentid>
    <comment_count>8</comment_count>
      <attachid>417509</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2021-01-12 23:01:29 -0800</bug_when>
    <thetext>Created attachment 417509
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1719312</commentid>
    <comment_count>9</comment_count>
      <attachid>417509</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-01-13 09:37:53 -0800</bug_when>
    <thetext>Comment on attachment 417509
Patch

Nice!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1719473</commentid>
    <comment_count>10</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-01-13 16:07:30 -0800</bug_when>
    <thetext>Committed r271472: &lt;https://trac.webkit.org/changeset/271472&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 417509.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>416650</attachid>
            <date>2020-12-21 20:53:24 -0800</date>
            <delta_ts>2020-12-21 21:47:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220079-20201221205323.patch</filename>
            <type>text/plain</type>
            <size>40513</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxMDI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjVlNzExMjRmZDVlMjBh
NTJmYTlkMjYyZWVkNTJkZmU0NGJlNzhjNC4uMTkxZjdiNzg5M2YwMjFmNTJkNTFlMzAzOWMxYjdh
YTI3NWMzODQ1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcyIEBACisyMDIwLTEyLTIxICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgdGhlIGdyYWRp
ZW50IHBhaW50aW5nIGRhdGEgb3V0c2lkZSB0aGUgR3JhZGllbnQgY2xhc3MKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDA3OQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUgdGhlIFNwcmVhZE1ldGhv
ZCBhbmQgdGhlIFNwYWNlVHJhbnNmb3JtIGZyb20gdGhlIEdyYWRpZW50IGNsYXNzIHRvCisgICAg
ICAgIHRoZSBHcmFwaGljc0NvbnRleHRTdGF0ZSBpbnRvIGEgbmV3IHN0cnVjdCBjYWxsZWQgR3Jh
ZGllbnQ6OlBhaW50aW5nRGF0YS4KKyAgICAgICAgVGhlIGNsaWVudCB3aWxsIHNldCB0aGVtIHdo
ZW4gY2FsbGluZyBHcmFwaGljc0NvbnRleHQ6OnNldEZpbGxHcmFkaWVudCgpCisgICAgICAgIGFu
ZCBHcmFwaGljc0NvbnRleHQ6OnNldEZpbGxHcmFkaWVudCgpLgorCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhZGllbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhZGllbnQ6OmFk
ZENvbG9yU3RvcCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFkaWVudDo6c2V0U29ydGVkQ29sb3JT
dG9wcyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFkaWVudDo6c2V0U3ByZWFkTWV0aG9kKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYWRpZW50OjpzZXRHcmFkaWVudFNwYWNlVHJhbnNm
b3JtKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmFkZCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpHcmFkaWVudDo6aGFzaCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIE5vIG5l
ZWQgZm9yIHRoZSBoYXNoKCkuIE5ldyBzdG9wcyBjYW4gb25seSBiZSBhZGRlZCB0byB0aGUgZXhp
c3Rpbmcgc3RvcHMuCisgICAgICAgIENsaWVudHMgbmVlZCB0byBjaGVjayBmb3IgdGhlIHN0b3Bz
JyBzaXplIGlmIHRoZXkgd2FudCB0byBpbnZhbGlkYXRlIHRoZWlyCisgICAgICAgIGNhY2hlZCBk
cmF3aW5nLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnQuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYWRpZW50OjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhZGllbnQ6OmRlY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFkaWVudDo6c3ByZWFkTWV0
aG9kIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYWRpZW50OjpncmFkaWVu
dFNwYWNlVHJhbnNmb3JtIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9HcmFkaWVudEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYWRpZW50SW1hZ2U6
OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudEltYWdl
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlOjphcHBseSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFN0cm9rZUdyYWRpZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0RmlsbEdyYWRpZW50KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0U3Ryb2tlR3JhZGllbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRGaWxsR3JhZGllbnQpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NnL0dyYWRpZW50Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhZGll
bnQ6OnBhaW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRl
eHRDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmZpbGxQYXRoKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c3Ryb2tlUGF0aCk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDo6c3Ryb2tlUmVjdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd0dseXBoc1JlY29yZGVyLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd0dseXBoc1Jl
Y29yZGVyQ29yZVRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdH
bHlwaHNSZWNvcmRlcjo6cG9wdWxhdGVJbnRlcm5hbFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpEcmF3R2x5cGhzUmVjb3JkZXI6OnBvcHVsYXRlSW50ZXJuYWxDb250ZXh0
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJ
dGVtcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6U2V0SW5saW5lRmlsbEdy
YWRpZW50OjpTZXRJbmxpbmVGaWxsR3JhZGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OlNldElubGluZUZpbGxHcmFkaWVudDo6Z3JhZGllbnQgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OlNldElubGluZUZpbGxHcmFkaWVudDo6YXBwbHkgY29uc3Qp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0
ZW1zLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0UmVjb3JkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVy
OjphcHBlbmRTdGF0ZUNoYW5nZUl0ZW0pOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUGF0aC5jcHA6CisgICAgICAgIChXZWJDb3JlOjp1c2VTdHJva2VTdHlsZVRvRmlsbCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlR3JhZGllbnQ6OmFwcGx5UmVzb3VyY2Up
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudDo6cG9zdEFwcGx5
UmVzb3VyY2UpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFk
aWVudC5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VMaW5lYXJH
cmFkaWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZUxpbmVhckdy
YWRpZW50OjpidWlsZEdyYWRpZW50IGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1Jlc291cmNlTGluZWFyR3JhZGllbnQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1Jlc291cmNlUmFkaWFsR3JhZGllbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU1ZHUmVzb3VyY2VSYWRpYWxHcmFkaWVudDo6YnVpbGRHcmFkaWVudCBjb25zdCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVJhZGlhbEdyYWRpZW50Lmg6
CisKIDIwMjAtMTItMjEgIE1lZ2FuIEdhcmRuZXIgIDxtZWdhbl9nYXJkbmVyQGFwcGxlLmNvbT4K
IAogICAgICAgICBDb3B5IExvY2FsaXphYmxlLnN0cmluZ3MgZmlsZSBpbnRvIHRoZSBjb3JyZWN0
IGRpcmVjdG9yeQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhZGllbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnQu
Y3BwCmluZGV4IGUxNzBmOTZhMWI2ZWY1MzViYzVhODIzY2ExMWQ3YTc1MDQyMWVmY2QuLjk4ZGI3
YjZkNzk0YjE0ZTQ4ZTZiNjU4YzkzYTc0ODI0ZmFkM2IyMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudC5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4LCAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNi0yMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwNyBBbHAgVG9rZXIgPGFscEBhdG9r
ZXIuY29tPgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtNDYsOCArNDYsNiBAQCBHcmFkaWVudDo6R3Jh
ZGllbnQoRGF0YSYmIGRhdGEpCiB7CiB9CiAKLUdyYWRpZW50Ojp+R3JhZGllbnQoKSA9IGRlZmF1
bHQ7Ci0KIHZvaWQgR3JhZGllbnQ6OmFkanVzdFBhcmFtZXRlcnNGb3JUaWxlZERyYXdpbmcoRmxv
YXRTaXplJiBzaXplLCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2lu
ZykKIHsKICAgICBpZiAoc3JjUmVjdC5pc0VtcHR5KCkpCkBAIC05Nyw3ICs5NSw2IEBAIHZvaWQg
R3JhZGllbnQ6OmFkZENvbG9yU3RvcChHcmFkaWVudDo6Q29sb3JTdG9wJiYgc3RvcCkKIHsKICAg
ICBtX3N0b3BzLmFwcGVuZChXVEZNb3ZlKHN0b3ApKTsKICAgICBtX3N0b3BzU29ydGVkID0gZmFs
c2U7Ci0gICAgbV9jYWNoZWRIYXNoID0gMDsKICAgICBzdG9wc0NoYW5nZWQoKTsKIH0KIApAQCAt
MTA1LDcgKzEwMiw2IEBAIHZvaWQgR3JhZGllbnQ6OnNldFNvcnRlZENvbG9yU3RvcHMoQ29sb3JT
dG9wVmVjdG9yJiYgc3RvcHMpCiB7CiAgICAgbV9zdG9wcyA9IFdURk1vdmUoc3RvcHMpOwogICAg
IG1fc3RvcHNTb3J0ZWQgPSB0cnVlOwotICAgIG1fY2FjaGVkSGFzaCA9IDA7CiAgICAgc3RvcHND
aGFuZ2VkKCk7CiB9CiAKQEAgLTExOSw2NyArMTE1LDQgQEAgdm9pZCBHcmFkaWVudDo6c29ydFN0
b3BzKCkgY29uc3QKICAgICB9KTsKIH0KIAotdm9pZCBHcmFkaWVudDo6c2V0U3ByZWFkTWV0aG9k
KEdyYWRpZW50U3ByZWFkTWV0aG9kIHNwcmVhZE1ldGhvZCkKLXsKLSAgICBpZiAobV9zcHJlYWRN
ZXRob2QgPT0gc3ByZWFkTWV0aG9kKQotICAgICAgICByZXR1cm47Ci0gICAgbV9zcHJlYWRNZXRo
b2QgPSBzcHJlYWRNZXRob2Q7Ci0gICAgbV9jYWNoZWRIYXNoID0gMDsKLX0KLQotdm9pZCBHcmFk
aWVudDo6c2V0R3JhZGllbnRTcGFjZVRyYW5zZm9ybShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGdy
YWRpZW50U3BhY2VUcmFuc2Zvcm1hdGlvbikKLXsKLSAgICBpZiAobV9ncmFkaWVudFNwYWNlVHJh
bnNmb3JtYXRpb24gPT0gZ3JhZGllbnRTcGFjZVRyYW5zZm9ybWF0aW9uKQotICAgICAgICByZXR1
cm47Ci0gICAgbV9ncmFkaWVudFNwYWNlVHJhbnNmb3JtYXRpb24gPSBncmFkaWVudFNwYWNlVHJh
bnNmb3JtYXRpb247Ci0gICAgbV9jYWNoZWRIYXNoID0gMDsKLX0KLQotLy8gRklYTUU6IEluc3Rl
YWQgb2YgdGhlc2UgYWRkKEhhc2hlcikgZnVuY3Rpb25zLCBjb25zaWRlciB1c2luZyBlbmNvZGUg
ZnVuY3Rpb25zIHRvIGNvbXB1dGUgdGhlIGhhc2guCi0KLXN0YXRpYyB2b2lkIGFkZChIYXNoZXIm
IGhhc2hlciwgY29uc3QgQ29sb3ImIGNvbG9yKQotewotICAgIC8vIEZJWE1FOiBXZSBkb24ndCB3
YW50IHRvIGhhc2ggYSBoYXNoOyBkbyBiZXR0ZXIuCi0gICAgYWRkKGhhc2hlciwgY29sb3IuaGFz
aCgpKTsKLX0KLQotc3RhdGljIHZvaWQgYWRkKEhhc2hlciYgaGFzaGVyLCBjb25zdCBGbG9hdFBv
aW50JiBwb2ludCkKLXsKLSAgICBhZGQoaGFzaGVyLCBwb2ludC54KCksIHBvaW50LnkoKSk7Ci19
Ci0KLXN0YXRpYyB2b2lkIGFkZChIYXNoZXImIGhhc2hlciwgY29uc3QgQWZmaW5lVHJhbnNmb3Jt
JiB0cmFuc2Zvcm0pCi17Ci0gICAgYWRkKGhhc2hlciwgdHJhbnNmb3JtLmEoKSwgdHJhbnNmb3Jt
LmIoKSwgdHJhbnNmb3JtLmMoKSwgdHJhbnNmb3JtLmQoKSwgdHJhbnNmb3JtLmUoKSwgdHJhbnNm
b3JtLmYoKSk7Ci19Ci0KLXN0YXRpYyB2b2lkIGFkZChIYXNoZXImIGhhc2hlciwgY29uc3QgR3Jh
ZGllbnQ6OkNvbG9yU3RvcCYgc3RvcCkKLXsKLSAgICBhZGQoaGFzaGVyLCBzdG9wLm9mZnNldCwg
c3RvcC5jb2xvcik7Ci19Ci0KLXN0YXRpYyB2b2lkIGFkZChIYXNoZXImIGhhc2hlciwgY29uc3Qg
R3JhZGllbnQ6OkxpbmVhckRhdGEmIGRhdGEpCi17Ci0gICAgYWRkKGhhc2hlciwgZGF0YS5wb2lu
dDAsIGRhdGEucG9pbnQxKTsKLX0KLQotc3RhdGljIHZvaWQgYWRkKEhhc2hlciYgaGFzaGVyLCBj
b25zdCBHcmFkaWVudDo6UmFkaWFsRGF0YSYgZGF0YSkKLXsKLSAgICBhZGQoaGFzaGVyLCBkYXRh
LnBvaW50MCwgZGF0YS5wb2ludDEsIGRhdGEuc3RhcnRSYWRpdXMsIGRhdGEuZW5kUmFkaXVzLCBk
YXRhLmFzcGVjdFJhdGlvKTsKLX0KLQotc3RhdGljIHZvaWQgYWRkKEhhc2hlciYgaGFzaGVyLCBj
b25zdCBHcmFkaWVudDo6Q29uaWNEYXRhJiBkYXRhKQotewotICAgIGFkZChoYXNoZXIsIGRhdGEu
cG9pbnQwLCBkYXRhLmFuZ2xlUmFkaWFucyk7Ci19Ci0KLXVuc2lnbmVkIEdyYWRpZW50OjpoYXNo
KCkgY29uc3QKLXsKLSAgICBpZiAoIW1fY2FjaGVkSGFzaCkgewotICAgICAgICBzb3J0U3RvcHMo
KTsKLSAgICAgICAgbV9jYWNoZWRIYXNoID0gY29tcHV0ZUhhc2gobV9kYXRhLCBtX3NwcmVhZE1l
dGhvZCwgbV9ncmFkaWVudFNwYWNlVHJhbnNmb3JtYXRpb24sIG1fc3RvcHMpOwotICAgIH0KLSAg
ICByZXR1cm4gbV9jYWNoZWRIYXNoOwotfQotCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhZGllbnQuaAppbmRleCA4MWU5Y2UxYjhlOTFhNTI1MjBjMzcxNzk3OGU3YmQ0
YTM3YTZlOWRjLi43M2RlMGI4NmNmNjIyZWQ4MTJmYmZlN2Y5YmFmM2Y0MTdhM2VhMWQ3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50LmgKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4LCAyMDExLCAyMDEyLCAy
MDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAw
Ni0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykg
MjAwNyBBbHAgVG9rZXIgPGFscEBhdG9rZXIuY29tPgogICogQ29weXJpZ2h0IChDKSAyMDA4IFRv
cmNoIE1vYmlsZSwgSW5jLgogICoKQEAgLTczLDYgKzczLDExIEBAIHB1YmxpYzoKIAogICAgIHVz
aW5nIENvbG9yU3RvcFZlY3RvciA9IFZlY3RvcjxDb2xvclN0b3AsIDI+OwogCisgICAgc3RydWN0
IFBhaW50aW5nRGF0YSB7CisgICAgICAgIEdyYWRpZW50U3ByZWFkTWV0aG9kIHNwcmVhZE1ldGhv
ZCB7IEdyYWRpZW50U3ByZWFkTWV0aG9kOjpQYWQgfTsKKyAgICAgICAgQWZmaW5lVHJhbnNmb3Jt
IHNwYWNlVHJhbnNmb3JtOworICAgIH07CisKICAgICBzdHJ1Y3QgTGluZWFyRGF0YSB7CiAgICAg
ICAgIEZsb2F0UG9pbnQgcG9pbnQwOwogICAgICAgICBGbG9hdFBvaW50IHBvaW50MTsKQEAgLTEw
NCw4ICsxMDksNiBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEdy
YWRpZW50PiBjcmVhdGUoRGF0YSYmKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIH5HcmFkaWVudCgp
OwotCiAgICAgYm9vbCBpc1plcm9TaXplKCkgY29uc3Q7CiAKICAgICBjb25zdCBEYXRhJiBkYXRh
KCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9CkBAIC0xMTUsMjQgKzExOCwxNiBAQCBwdWJsaWM6
CiAKICAgICBjb25zdCBDb2xvclN0b3BWZWN0b3ImIHN0b3BzKCkgY29uc3QgeyByZXR1cm4gbV9z
dG9wczsgfQogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTcHJlYWRNZXRob2QoR3JhZGll
bnRTcHJlYWRNZXRob2QpOwotICAgIEdyYWRpZW50U3ByZWFkTWV0aG9kIHNwcmVhZE1ldGhvZCgp
IGNvbnN0IHsgcmV0dXJuIG1fc3ByZWFkTWV0aG9kOyB9Ci0KLSAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHNldEdyYWRpZW50U3BhY2VUcmFuc2Zvcm0oY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBncmFk
aWVudFNwYWNlVHJhbnNmb3JtYXRpb24pOwotICAgIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgZ3Jh
ZGllbnRTcGFjZVRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1fZ3JhZGllbnRTcGFjZVRyYW5z
Zm9ybWF0aW9uOyB9Ci0KICAgICB2b2lkIGZpbGwoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxv
YXRSZWN0Jik7CiAgICAgdm9pZCBhZGp1c3RQYXJhbWV0ZXJzRm9yVGlsZWREcmF3aW5nKEZsb2F0
U2l6ZSYsIEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZyk7CiAKLSAgICB1bnNp
Z25lZCBoYXNoKCkgY29uc3Q7Ci0KICNpZiBVU0UoQ0FJUk8pCiAgICAgUmVmUHRyPGNhaXJvX3Bh
dHRlcm5fdD4gY3JlYXRlUGF0dGVybihmbG9hdCBnbG9iYWxBbHBoYSk7CiAjZW5kaWYKIAogI2lm
IFVTRShDRykKICAgICB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCYpOwotICAgIHZvaWQgcGFp
bnQoQ0dDb250ZXh0UmVmKTsKKyAgICB2b2lkIHBhaW50KENHQ29udGV4dFJlZiwgR3JhZGllbnRT
cHJlYWRNZXRob2QpOwogI2VuZGlmCiAKICNpZiBVU0UoRElSRUNUMkQpCkBAIC0xNTUsOSArMTUw
LDYgQEAgcHJpdmF0ZToKICAgICBEYXRhIG1fZGF0YTsKICAgICBtdXRhYmxlIENvbG9yU3RvcFZl
Y3RvciBtX3N0b3BzOwogICAgIG11dGFibGUgYm9vbCBtX3N0b3BzU29ydGVkIHsgZmFsc2UgfTsK
LSAgICBHcmFkaWVudFNwcmVhZE1ldGhvZCBtX3NwcmVhZE1ldGhvZCB7IEdyYWRpZW50U3ByZWFk
TWV0aG9kOjpQYWQgfTsKLSAgICBtdXRhYmxlIHVuc2lnbmVkIG1fY2FjaGVkSGFzaCB7IDAgfTsK
LSAgICBBZmZpbmVUcmFuc2Zvcm0gbV9ncmFkaWVudFNwYWNlVHJhbnNmb3JtYXRpb247CiAKICNp
ZiBVU0UoQ0cpCiAgICAgUmV0YWluUHRyPENHR3JhZGllbnRSZWY+IG1fZ3JhZGllbnQ7CkBAIC0y
NzUsOCArMjY3LDYgQEAgdGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4gdm9pZCBHcmFkaWVudDo6
ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCBtX2RhdGE7CiAg
ICAgZW5jb2RlciA8PCBtX3N0b3BzOwogICAgIGVuY29kZXIgPDwgbV9zdG9wc1NvcnRlZDsKLSAg
ICBlbmNvZGVyIDw8IG1fc3ByZWFkTWV0aG9kOwotICAgIGVuY29kZXIgPDwgbV9ncmFkaWVudFNw
YWNlVHJhbnNmb3JtYXRpb247CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+IE9wdGlv
bmFsPFJlZjxHcmFkaWVudD4+IEdyYWRpZW50OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKQEAg
LTMwMiwxNyArMjkyLDYgQEAgdGVtcGxhdGU8dHlwZW5hbWUgRGVjb2Rlcj4gT3B0aW9uYWw8UmVm
PEdyYWRpZW50Pj4gR3JhZGllbnQ6OmRlY29kZShEZWNvZGVyJiBkZWMKICAgICAgICAgICAgIGdy
YWRpZW50LT5hZGRDb2xvclN0b3AoV1RGTW92ZShzdG9wKSk7CiAgICAgfQogCi0gICAgR3JhZGll
bnRTcHJlYWRNZXRob2Qgc3ByZWFkTWV0aG9kOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3By
ZWFkTWV0aG9kKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICBncmFkaWVudC0+
c2V0U3ByZWFkTWV0aG9kKHNwcmVhZE1ldGhvZCk7Ci0KLSAgICBPcHRpb25hbDxBZmZpbmVUcmFu
c2Zvcm0+IGdyYWRpZW50U3BhY2VUcmFuc2Zvcm1hdGlvbjsKLSAgICBkZWNvZGVyID4+IGdyYWRp
ZW50U3BhY2VUcmFuc2Zvcm1hdGlvbjsKLSAgICBpZiAoIWdyYWRpZW50U3BhY2VUcmFuc2Zvcm1h
dGlvbikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICBncmFkaWVudC0+c2V0R3Jh
ZGllbnRTcGFjZVRyYW5zZm9ybShXVEZNb3ZlKCpncmFkaWVudFNwYWNlVHJhbnNmb3JtYXRpb24p
KTsKLQogICAgIHJldHVybiBncmFkaWVudDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudEltYWdlLmNwcAppbmRleCAzMTE0ZGI5MDE2ZWViN2Zh
Yzk4ZWY1ZjU3ODM2MDRjNWMwODQwZmUwLi5lZjFlMjkyZmFhNmZjM2E2MDA1NDk5OWNhMzRhZTZl
NTJmY2FlODk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFkaWVudEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFkaWVudEltYWdlLmNwcApAQCAtNjksOSArNjksOSBAQCB2b2lkIEdyYWRpZW50SW1hZ2U6OmRy
YXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYg
ZAogICAgIGFkanVzdGVkUGF0dGVybkNUTS5zY2FsZSgxLjAgLyB4U2NhbGUsIDEuMCAvIHlTY2Fs
ZSk7CiAgICAgYWRqdXN0ZWRTcmNSZWN0LnNjYWxlKHhTY2FsZSwgeVNjYWxlKTsKIAotICAgIHVu
c2lnbmVkIGdlbmVyYXRvckhhc2ggPSBtX2dyYWRpZW50LT5oYXNoKCk7CisgICAgc2l6ZV90IGdl
bmVyYXRvclN0b3BzU2l6ZSA9IG1fZ3JhZGllbnQtPnN0b3BzKCkuc2l6ZSgpOwogCi0gICAgaWYg
KCFtX2NhY2hlZEltYWdlIHx8IG1fY2FjaGVkR2VuZXJhdG9ySGFzaCAhPSBnZW5lcmF0b3JIYXNo
IHx8IG1fY2FjaGVkQWRqdXN0ZWRTaXplICE9IGFkanVzdGVkU2l6ZSB8fCAhYXJlRXNzZW50aWFs
bHlFcXVhbChkZXN0Q29udGV4dC5zY2FsZUZhY3RvcigpLCBtX2NhY2hlZFNjYWxlRmFjdG9yKSkg
eworICAgIGlmICghbV9jYWNoZWRJbWFnZSB8fCBtX2NhY2hlZEdlbmVyYXRvclN0b3BzU2l6ZSAh
PSBnZW5lcmF0b3JTdG9wc1NpemUgfHwgbV9jYWNoZWRBZGp1c3RlZFNpemUgIT0gYWRqdXN0ZWRT
aXplIHx8ICFhcmVFc3NlbnRpYWxseUVxdWFsKGRlc3RDb250ZXh0LnNjYWxlRmFjdG9yKCksIG1f
Y2FjaGVkU2NhbGVGYWN0b3IpKSB7CiAgICAgICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1
ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihhZGp1c3RlZFNpemUsIENvbG9yU3BhY2U6OlNS
R0IsIGRlc3RDb250ZXh0KTsKICAgICAgICAgaWYgKCFpbWFnZUJ1ZmZlcikKICAgICAgICAgICAg
IHJldHVybjsKQEAgLTc5LDcgKzc5LDcgQEAgdm9pZCBHcmFkaWVudEltYWdlOjpkcmF3UGF0dGVy
bihHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGQKICAgICAg
ICAgLy8gRmlsbCB3aXRoIHRoZSBnZW5lcmF0ZWQgaW1hZ2UuCiAgICAgICAgIGltYWdlQnVmZmVy
LT5jb250ZXh0KCkuZmlsbFJlY3QoRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgYWRqdXN0ZWRTaXpl
KSwgbV9ncmFkaWVudC5nZXQoKSk7CiAKLSAgICAgICAgbV9jYWNoZWRHZW5lcmF0b3JIYXNoID0g
Z2VuZXJhdG9ySGFzaDsKKyAgICAgICAgbV9jYWNoZWRHZW5lcmF0b3JTdG9wc1NpemUgPSBnZW5l
cmF0b3JTdG9wc1NpemU7CiAgICAgICAgIG1fY2FjaGVkQWRqdXN0ZWRTaXplID0gYWRqdXN0ZWRT
aXplOwogICAgICAgICBtX2NhY2hlZFNjYWxlRmFjdG9yID0gZGVzdENvbnRleHQuc2NhbGVGYWN0
b3IoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
ZGllbnRJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJ
bWFnZS5oCmluZGV4IDBjYzE4NDM5YzE0N2Y5MzRkZGUxOTMwNzQ4ZGE3MGMzZmIxNzVhN2IuLmU3
YmU3MjhlY2NhMmFjMzI0Yzk0OWI2MTA1MGRlZjE1NjU5YzE1YTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudEltYWdlLmgKQEAgLTU0LDcgKzU0LDcg
QEAgcHJpdmF0ZToKICAgICBSZWY8R3JhZGllbnQ+IG1fZ3JhZGllbnQ7CiAgICAgUmVmUHRyPElt
YWdlPiBtX2NhY2hlZEltYWdlOwogICAgIEZsb2F0U2l6ZSBtX2NhY2hlZEFkanVzdGVkU2l6ZTsK
LSAgICB1bnNpZ25lZCBtX2NhY2hlZEdlbmVyYXRvckhhc2g7CisgICAgc2l6ZV90IG1fY2FjaGVk
R2VuZXJhdG9yU3RvcHNTaXplIHsgMCB9OwogICAgIEZsb2F0U2l6ZSBtX2NhY2hlZFNjYWxlRmFj
dG9yOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dC5jcHAKaW5kZXggNzg0NDc3YTJlZmFhNjIzOTFhNmY4MGMwZDk0MWQyODg0
ODZhNTNmMy4uYzQwYmFlM2UyMzkyNzY1MTIzN2MwMzIzMzc5ZWRmMzY2M2M0ZDRjMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQu
Y3BwCkBAIC0yMTEsMTMgKzIxMSwxMyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdl
OjphY2N1bXVsYXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgRwogdm9pZCBH
cmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZTo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
KSBjb25zdAogewogICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4
dFN0YXRlOjpTdHJva2VHcmFkaWVudENoYW5nZSkpCi0gICAgICAgIGNvbnRleHQuc2V0U3Ryb2tl
R3JhZGllbnQoKm1fc3RhdGUuc3Ryb2tlR3JhZGllbnQpOworICAgICAgICBjb250ZXh0LnNldFN0
cm9rZUdyYWRpZW50KCptX3N0YXRlLnN0cm9rZUdyYWRpZW50LCBtX3N0YXRlLnN0cm9rZUdyYWRp
ZW50UGFpbnRpbmdEYXRhKTsKIAogICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBo
aWNzQ29udGV4dFN0YXRlOjpTdHJva2VQYXR0ZXJuQ2hhbmdlKSkKICAgICAgICAgY29udGV4dC5z
ZXRTdHJva2VQYXR0ZXJuKCptX3N0YXRlLnN0cm9rZVBhdHRlcm4pOwogCiAgICAgaWYgKG1fY2hh
bmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxHcmFkaWVudENoYW5n
ZSkpCi0gICAgICAgIGNvbnRleHQuc2V0RmlsbEdyYWRpZW50KCptX3N0YXRlLmZpbGxHcmFkaWVu
dCk7CisgICAgICAgIGNvbnRleHQuc2V0RmlsbEdyYWRpZW50KCptX3N0YXRlLmZpbGxHcmFkaWVu
dCwgbV9zdGF0ZS5maWxsR3JhZGllbnRQYWludGluZ0RhdGEpOwogCiAgICAgaWYgKG1fY2hhbmdl
RmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxQYXR0ZXJuQ2hhbmdlKSkK
ICAgICAgICAgY29udGV4dC5zZXRGaWxsUGF0dGVybigqbV9zdGF0ZS5maWxsUGF0dGVybik7CkBA
IC02MjAsMTAgKzYyMCwxMSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0RmlsbFBhdHRlcm4o
UmVmPFBhdHRlcm4+JiYgcGF0dGVybikKICAgICAgICAgbV9pbXBsLT51cGRhdGVTdGF0ZShtX3N0
YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbFBhdHRlcm5DaGFuZ2UpOwogfQogCi12b2lk
IEdyYXBoaWNzQ29udGV4dDo6c2V0U3Ryb2tlR3JhZGllbnQoUmVmPEdyYWRpZW50PiYmIGdyYWRp
ZW50KQordm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFN0cm9rZUdyYWRpZW50KFJlZjxHcmFkaWVu
dD4mJiBncmFkaWVudCwgY29uc3QgR3JhZGllbnQ6OlBhaW50aW5nRGF0YSYgcGFpbnRpbmdEYXRh
KQogewogICAgIG1fc3RhdGUuc3Ryb2tlQ29sb3IgPSB7IH07CiAgICAgbV9zdGF0ZS5zdHJva2VH
cmFkaWVudCA9IFdURk1vdmUoZ3JhZGllbnQpOworICAgIG1fc3RhdGUuc3Ryb2tlR3JhZGllbnRQ
YWludGluZ0RhdGEgPSBwYWludGluZ0RhdGE7CiAgICAgbV9zdGF0ZS5zdHJva2VQYXR0ZXJuID0g
bnVsbHB0cjsKICAgICBpZiAobV9pbXBsKQogICAgICAgICBtX2ltcGwtPnVwZGF0ZVN0YXRlKG1f
c3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VHcmFkaWVudENoYW5nZSk7CkBAIC02
MzYsMTAgKzYzNywxMSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0RmlsbFJ1bGUoV2luZFJ1
bGUgZmlsbFJ1bGUpCiAgICAgICAgIG1faW1wbC0+dXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhp
Y3NDb250ZXh0U3RhdGU6OkZpbGxSdWxlQ2hhbmdlKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRl
eHQ6OnNldEZpbGxHcmFkaWVudChSZWY8R3JhZGllbnQ+JiYgZ3JhZGllbnQpCit2b2lkIEdyYXBo
aWNzQ29udGV4dDo6c2V0RmlsbEdyYWRpZW50KFJlZjxHcmFkaWVudD4mJiBncmFkaWVudCwgY29u
c3QgR3JhZGllbnQ6OlBhaW50aW5nRGF0YSYgcGFpbnRpbmdEYXRhKQogewogICAgIG1fc3RhdGUu
ZmlsbENvbG9yID0geyB9OwogICAgIG1fc3RhdGUuZmlsbEdyYWRpZW50ID0gV1RGTW92ZShncmFk
aWVudCk7CisgICAgbV9zdGF0ZS5maWxsR3JhZGllbnRQYWludGluZ0RhdGEgPSBwYWludGluZ0Rh
dGE7CiAgICAgbV9zdGF0ZS5maWxsUGF0dGVybiA9IG51bGxwdHI7CiAgICAgaWYgKG1faW1wbCkK
ICAgICAgICAgbV9pbXBsLT51cGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0
ZTo6RmlsbEdyYWRpZW50Q2hhbmdlKTsgLy8gRklYTUU6IGFsc28gZmlsbCBwYXR0ZXJuPwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaApp
bmRleCAyNWM2NjQ0ZjEyOTdmYzQ3YzM4NzJlYjVkNThlYjJmMGRlNDFiNTU2Li4zMjA4M2QxZmM3
ZDIyZGNiNjJkNjMyNGNlM2Y4OGE3ZTljMTE4ZTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaApAQCAtMzAsNiArMzAsNyBAQAog
I2luY2x1ZGUgIkRhc2hBcnJheS5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUg
IkZvbnRDYXNjYWRlLmgiCisjaW5jbHVkZSAiR3JhZGllbnQuaCIKICNpbmNsdWRlICJHcmFwaGlj
c1R5cGVzLmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJJbWFnZU9yaWVudGF0aW9u
LmgiCkBAIC04Nyw3ICs4OCw2IEBAIGNsYXNzIEdseXBoQnVmZmVyOwogCiBjbGFzcyBBZmZpbmVU
cmFuc2Zvcm07CiBjbGFzcyBGbG9hdFJvdW5kZWRSZWN0OwotY2xhc3MgR3JhZGllbnQ7CiBjbGFz
cyBHcmFwaGljc0NvbnRleHRJbXBsOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2
YXRlOwogY2xhc3MgSW1hZ2VCdWZmZXI7CkBAIC0yMTIsNiArMjEyLDkgQEAgc3RydWN0IEdyYXBo
aWNzQ29udGV4dFN0YXRlIHsKICAgICBDb2xvciBmaWxsQ29sb3IgeyBDb2xvcjo6YmxhY2sgfTsK
ICAgICBDb2xvciBzaGFkb3dDb2xvcjsKIAorICAgIEdyYWRpZW50OjpQYWludGluZ0RhdGEgc3Ry
b2tlR3JhZGllbnRQYWludGluZ0RhdGE7CisgICAgR3JhZGllbnQ6OlBhaW50aW5nRGF0YSBmaWxs
R3JhZGllbnRQYWludGluZ0RhdGE7CisgICAgCiAgICAgU3Ryb2tlU3R5bGUgc3Ryb2tlU3R5bGUg
eyBTb2xpZFN0cm9rZSB9OwogICAgIFdpbmRSdWxlIGZpbGxSdWxlIHsgV2luZFJ1bGU6Ok5vblpl
cm8gfTsKIApAQCAtMzAzLDcgKzMwNiw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFN0cm9rZVBh
dHRlcm4oUmVmPFBhdHRlcm4+JiYpOwogICAgIFBhdHRlcm4qIHN0cm9rZVBhdHRlcm4oKSBjb25z
dCB7IHJldHVybiBtX3N0YXRlLnN0cm9rZVBhdHRlcm4uZ2V0KCk7IH0KIAotICAgIHZvaWQgc2V0
U3Ryb2tlR3JhZGllbnQoUmVmPEdyYWRpZW50PiYmKTsKKyAgICB2b2lkIHNldFN0cm9rZUdyYWRp
ZW50KFJlZjxHcmFkaWVudD4mJiwgY29uc3QgR3JhZGllbnQ6OlBhaW50aW5nRGF0YSYgPSB7IH0p
OwogICAgIEdyYWRpZW50KiBzdHJva2VHcmFkaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUu
c3Ryb2tlR3JhZGllbnQuZ2V0KCk7IH0KIAogICAgIHZvaWQgc2V0RmlsbFJ1bGUoV2luZFJ1bGUp
OwpAQCAtMzE1LDcgKzMxOCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEZpbGxQYXR0ZXJuKFJl
ZjxQYXR0ZXJuPiYmKTsKICAgICBQYXR0ZXJuKiBmaWxsUGF0dGVybigpIGNvbnN0IHsgcmV0dXJu
IG1fc3RhdGUuZmlsbFBhdHRlcm4uZ2V0KCk7IH0KIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c2V0RmlsbEdyYWRpZW50KFJlZjxHcmFkaWVudD4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBzZXRGaWxsR3JhZGllbnQoUmVmPEdyYWRpZW50PiYmLCBjb25zdCBHcmFkaWVudDo6UGFpbnRp
bmdEYXRhJiA9IHsgfSk7CiAgICAgR3JhZGllbnQqIGZpbGxHcmFkaWVudCgpIGNvbnN0IHsgcmV0
dXJuIG1fc3RhdGUuZmlsbEdyYWRpZW50LmdldCgpOyB9CiAKICAgICB2b2lkIHNldFNoYWRvd3NJ
Z25vcmVUcmFuc2Zvcm1zKGJvb2wpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvR3JhZGllbnRDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9HcmFkaWVudENHLmNwcAppbmRleCA4MTA5MmI4ZTc5ZjUzZmJiODNjOGY1YTZh
NzcyMTJmMDQ1MzViNjU3Li5jOGE3ZTczMTBlMDdmYjhiYTIwODQzNTgyNTM3MjFlZTY0OWY2Zjk3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFkaWVu
dENHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFkaWVu
dENHLmNwcApAQCAtOTEsMTAgKzkxLDEwIEBAIHZvaWQgR3JhZGllbnQ6OmZpbGwoR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiAKIHZvaWQgR3JhZGllbnQ6
OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKIHsKLSAgICBwYWludChjb250ZXh0LnBs
YXRmb3JtQ29udGV4dCgpKTsKKyAgICBwYWludChjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLCBj
b250ZXh0LnN0YXRlKCkuZmlsbEdyYWRpZW50UGFpbnRpbmdEYXRhLnNwcmVhZE1ldGhvZCk7CiB9
CiAKLXZvaWQgR3JhZGllbnQ6OnBhaW50KENHQ29udGV4dFJlZiBwbGF0Zm9ybUNvbnRleHQpCit2
b2lkIEdyYWRpZW50OjpwYWludChDR0NvbnRleHRSZWYgcGxhdGZvcm1Db250ZXh0LCBHcmFkaWVu
dFNwcmVhZE1ldGhvZCBzcHJlYWRNZXRob2QpCiB7CiAgICAgQ0dHcmFkaWVudERyYXdpbmdPcHRp
b25zIGV4dGVuZE9wdGlvbnMgPSBrQ0dHcmFkaWVudERyYXdzQmVmb3JlU3RhcnRMb2NhdGlvbiB8
IGtDR0dyYWRpZW50RHJhd3NBZnRlckVuZExvY2F0aW9uOwogCkBAIC0xMDMsNyArMTAzLDcgQEAg
dm9pZCBHcmFkaWVudDo6cGFpbnQoQ0dDb250ZXh0UmVmIHBsYXRmb3JtQ29udGV4dCkKIAogICAg
IFdURjo6c3dpdGNoT24obV9kYXRhLAogICAgICAgICBbJl0gKGNvbnN0IExpbmVhckRhdGEmIGRh
dGEpIHsKLSAgICAgICAgICAgIHN3aXRjaCAobV9zcHJlYWRNZXRob2QpIHsKKyAgICAgICAgICAg
IHN3aXRjaCAoc3ByZWFkTWV0aG9kKSB7CiAgICAgICAgICAgICBjYXNlIEdyYWRpZW50U3ByZWFk
TWV0aG9kOjpSZXBlYXQ6CiAgICAgICAgICAgICBjYXNlIEdyYWRpZW50U3ByZWFkTWV0aG9kOjpS
ZWZsZWN0OiB7CiAgICAgICAgICAgICAgICAgQ0dDb250ZXh0U3RhdGVTYXZlciBzYXZlU3RhdGUo
cGxhdGZvcm1Db250ZXh0KTsKQEAgLTEyOCw3ICsxMjgsNyBAQCB2b2lkIEdyYWRpZW50OjpwYWlu
dChDR0NvbnRleHRSZWYgcGxhdGZvcm1Db250ZXh0KQogCiAgICAgICAgICAgICAgICAgICAgIENH
RmxvYXQgZ3JhZGllbnRTdGFydCA9IHBvaW50MC54KCk7CiAgICAgICAgICAgICAgICAgICAgIENH
RmxvYXQgZ3JhZGllbnRFbmQgPSBwb2ludDEueCgpOwotICAgICAgICAgICAgICAgICAgICBib29s
IGZsaXAgPSBtX3NwcmVhZE1ldGhvZCA9PSBHcmFkaWVudFNwcmVhZE1ldGhvZDo6UmVmbGVjdDsK
KyAgICAgICAgICAgICAgICAgICAgYm9vbCBmbGlwID0gc3ByZWFkTWV0aG9kID09IEdyYWRpZW50
U3ByZWFkTWV0aG9kOjpSZWZsZWN0OwogCiAgICAgICAgICAgICAgICAgICAgIC8vIEZpbmQgZmly
c3QgZ3JhZGllbnQgcG9zaXRpb24gdG8gdGhlIGxlZnQgb2YgdGhlIGJvdW5kaW5nIGJveAogICAg
ICAgICAgICAgICAgICAgICBpbnQgbiA9IENHRmxvb3IoKGJvdW5kaW5nQm94Lm9yaWdpbi54IC0g
Z3JhZGllbnRTdGFydCkgLyB3aWR0aCk7CkBAIC0xNDQsNyArMTQ0LDcgQEAgdm9pZCBHcmFkaWVu
dDo6cGFpbnQoQ0dDb250ZXh0UmVmIHBsYXRmb3JtQ29udGV4dCkKIAogICAgICAgICAgICAgICAg
ICAgICAgICAgQ0dDb250ZXh0RHJhd0xpbmVhckdyYWRpZW50KHBsYXRmb3JtQ29udGV4dCwgbV9n
cmFkaWVudC5nZXQoKSwgbGVmdCwgcmlnaHQsIGV4dGVuZE9wdGlvbnMpOwogCi0gICAgICAgICAg
ICAgICAgICAgICAgICBpZiAobV9zcHJlYWRNZXRob2QgPT0gR3JhZGllbnRTcHJlYWRNZXRob2Q6
OlJlZmxlY3QpCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3ByZWFkTWV0aG9kID09IEdy
YWRpZW50U3ByZWFkTWV0aG9kOjpSZWZsZWN0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGZsaXAgPSAhZmxpcDsKICAgICAgICAgICAgICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAK
aW5kZXggODgyNGM3Mjg0M2UyNzI3NGZmNGEzODhjMDVjZDUzMTkyZTYzYTkwYi4uNzQ3MjU3YmQ4
OWU0NDIzMTUwMDViZGYxODQxNWE2MDllMzA0OTVmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcApAQCAt
NzQ5LDIxICs3NDksMjEgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxQYXRoKGNvbnN0IFBh
dGgmIHBhdGgpCiAgICAgICAgICAgICBDR0NvbnRleHRUcmFuc2xhdGVDVE0obGF5ZXJDb250ZXh0
LCAtcmVjdC54KCksIC1yZWN0LnkoKSk7CiAgICAgICAgICAgICBDR0NvbnRleHRCZWdpblBhdGgo
bGF5ZXJDb250ZXh0KTsKICAgICAgICAgICAgIENHQ29udGV4dEFkZFBhdGgobGF5ZXJDb250ZXh0
LCBwYXRoLnBsYXRmb3JtUGF0aCgpKTsKLSAgICAgICAgICAgIENHQ29udGV4dENvbmNhdENUTShs
YXllckNvbnRleHQsIG1fc3RhdGUuZmlsbEdyYWRpZW50LT5ncmFkaWVudFNwYWNlVHJhbnNmb3Jt
KCkpOworICAgICAgICAgICAgQ0dDb250ZXh0Q29uY2F0Q1RNKGxheWVyQ29udGV4dCwgbV9zdGF0
ZS5maWxsR3JhZGllbnRQYWludGluZ0RhdGEuc3BhY2VUcmFuc2Zvcm0pOwogCiAgICAgICAgICAg
ICBpZiAoZmlsbFJ1bGUoKSA9PSBXaW5kUnVsZTo6RXZlbk9kZCkKICAgICAgICAgICAgICAgICBD
R0NvbnRleHRFT0NsaXAobGF5ZXJDb250ZXh0KTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgICAgICBDR0NvbnRleHRDbGlwKGxheWVyQ29udGV4dCk7CiAKLSAgICAgICAgICAgIG1fc3Rh
dGUuZmlsbEdyYWRpZW50LT5wYWludChsYXllckNvbnRleHQpOworICAgICAgICAgICAgbV9zdGF0
ZS5maWxsR3JhZGllbnQtPnBhaW50KGxheWVyQ29udGV4dCwgbV9zdGF0ZS5maWxsR3JhZGllbnRQ
YWludGluZ0RhdGEuc3ByZWFkTWV0aG9kKTsKICAgICAgICAgICAgIENHQ29udGV4dERyYXdMYXll
ckluUmVjdChjb250ZXh0LCByZWN0LCBsYXllcik7CiAgICAgICAgICAgICBDR0xheWVyUmVsZWFz
ZShsYXllcik7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBDR0NvbnRleHRCZWdpblBh
dGgoY29udGV4dCk7CiAgICAgICAgICAgICBDR0NvbnRleHRBZGRQYXRoKGNvbnRleHQsIHBhdGgu
cGxhdGZvcm1QYXRoKCkpOwogICAgICAgICAgICAgQ0dDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNh
dmVyKGNvbnRleHQpOwotICAgICAgICAgICAgQ0dDb250ZXh0Q29uY2F0Q1RNKGNvbnRleHQsIG1f
c3RhdGUuZmlsbEdyYWRpZW50LT5ncmFkaWVudFNwYWNlVHJhbnNmb3JtKCkpOworICAgICAgICAg
ICAgQ0dDb250ZXh0Q29uY2F0Q1RNKGNvbnRleHQsIG1fc3RhdGUuZmlsbEdyYWRpZW50UGFpbnRp
bmdEYXRhLnNwYWNlVHJhbnNmb3JtKTsKIAogICAgICAgICAgICAgaWYgKGZpbGxSdWxlKCkgPT0g
V2luZFJ1bGU6OkV2ZW5PZGQpCiAgICAgICAgICAgICAgICAgQ0dDb250ZXh0RU9DbGlwKGNvbnRl
eHQpOwpAQCAtODI3LDggKzgyNyw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzdHJva2VQYXRo
KGNvbnN0IFBhdGgmIHBhdGgpCiAgICAgICAgICAgICBDR0NvbnRleHRBZGRQYXRoKGxheWVyQ29u
dGV4dCwgcGF0aC5wbGF0Zm9ybVBhdGgoKSk7CiAgICAgICAgICAgICBDR0NvbnRleHRSZXBsYWNl
UGF0aFdpdGhTdHJva2VkUGF0aChsYXllckNvbnRleHQpOwogICAgICAgICAgICAgQ0dDb250ZXh0
Q2xpcChsYXllckNvbnRleHQpOwotICAgICAgICAgICAgQ0dDb250ZXh0Q29uY2F0Q1RNKGxheWVy
Q29udGV4dCwgbV9zdGF0ZS5zdHJva2VHcmFkaWVudC0+Z3JhZGllbnRTcGFjZVRyYW5zZm9ybSgp
KTsKLSAgICAgICAgICAgIG1fc3RhdGUuc3Ryb2tlR3JhZGllbnQtPnBhaW50KGxheWVyQ29udGV4
dCk7CisgICAgICAgICAgICBDR0NvbnRleHRDb25jYXRDVE0obGF5ZXJDb250ZXh0LCBtX3N0YXRl
LnN0cm9rZUdyYWRpZW50UGFpbnRpbmdEYXRhLnNwYWNlVHJhbnNmb3JtKTsKKyAgICAgICAgICAg
IG1fc3RhdGUuc3Ryb2tlR3JhZGllbnQtPnBhaW50KGxheWVyQ29udGV4dCwgbV9zdGF0ZS5zdHJv
a2VHcmFkaWVudFBhaW50aW5nRGF0YS5zcHJlYWRNZXRob2QpOwogCiAgICAgICAgICAgICBmbG9h
dCBkZXN0aW5hdGlvblggPSByb3VuZGYocmVjdC54KCkgLSBsaW5lV2lkdGgpOwogICAgICAgICAg
ICAgZmxvYXQgZGVzdGluYXRpb25ZID0gcm91bmRmKHJlY3QueSgpIC0gbGluZVdpZHRoKTsKQEAg
LTg0MCw3ICs4NDAsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c3Ryb2tlUGF0aChjb25zdCBQ
YXRoJiBwYXRoKQogICAgICAgICAgICAgQ0dDb250ZXh0QWRkUGF0aChjb250ZXh0LCBwYXRoLnBs
YXRmb3JtUGF0aCgpKTsKICAgICAgICAgICAgIENHQ29udGV4dFJlcGxhY2VQYXRoV2l0aFN0cm9r
ZWRQYXRoKGNvbnRleHQpOwogICAgICAgICAgICAgQ0dDb250ZXh0Q2xpcChjb250ZXh0KTsKLSAg
ICAgICAgICAgIENHQ29udGV4dENvbmNhdENUTShjb250ZXh0LCBtX3N0YXRlLnN0cm9rZUdyYWRp
ZW50LT5ncmFkaWVudFNwYWNlVHJhbnNmb3JtKCkpOworICAgICAgICAgICAgQ0dDb250ZXh0Q29u
Y2F0Q1RNKGNvbnRleHQsIG1fc3RhdGUuc3Ryb2tlR3JhZGllbnRQYWludGluZ0RhdGEuc3BhY2VU
cmFuc2Zvcm0pOwogICAgICAgICAgICAgbV9zdGF0ZS5zdHJva2VHcmFkaWVudC0+cGFpbnQoKnRo
aXMpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybjsKQEAgLTg5MiwxMyArODkyLDEzIEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiAgICAg
ICAgICAgICBDR0NvbnRleHRBZGRSZWN0KGxheWVyQ29udGV4dCwgcmVjdCk7CiAgICAgICAgICAg
ICBDR0NvbnRleHRDbGlwKGxheWVyQ29udGV4dCk7CiAKLSAgICAgICAgICAgIENHQ29udGV4dENv
bmNhdENUTShsYXllckNvbnRleHQsIG1fc3RhdGUuZmlsbEdyYWRpZW50LT5ncmFkaWVudFNwYWNl
VHJhbnNmb3JtKCkpOwotICAgICAgICAgICAgbV9zdGF0ZS5maWxsR3JhZGllbnQtPnBhaW50KGxh
eWVyQ29udGV4dCk7CisgICAgICAgICAgICBDR0NvbnRleHRDb25jYXRDVE0obGF5ZXJDb250ZXh0
LCBtX3N0YXRlLmZpbGxHcmFkaWVudFBhaW50aW5nRGF0YS5zcGFjZVRyYW5zZm9ybSk7CisgICAg
ICAgICAgICBtX3N0YXRlLmZpbGxHcmFkaWVudC0+cGFpbnQobGF5ZXJDb250ZXh0LCBtX3N0YXRl
LmZpbGxHcmFkaWVudFBhaW50aW5nRGF0YS5zcHJlYWRNZXRob2QpOwogICAgICAgICAgICAgQ0dD
b250ZXh0RHJhd0xheWVySW5SZWN0KGNvbnRleHQsIHJlY3QsIGxheWVyKTsKICAgICAgICAgICAg
IENHTGF5ZXJSZWxlYXNlKGxheWVyKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIENH
Q29udGV4dENsaXBUb1JlY3QoY29udGV4dCwgcmVjdCk7Ci0gICAgICAgICAgICBDR0NvbnRleHRD
b25jYXRDVE0oY29udGV4dCwgbV9zdGF0ZS5maWxsR3JhZGllbnQtPmdyYWRpZW50U3BhY2VUcmFu
c2Zvcm0oKSk7CisgICAgICAgICAgICBDR0NvbnRleHRDb25jYXRDVE0oY29udGV4dCwgbV9zdGF0
ZS5maWxsR3JhZGllbnRQYWludGluZ0RhdGEuc3BhY2VUcmFuc2Zvcm0pOwogICAgICAgICAgICAg
bV9zdGF0ZS5maWxsR3JhZGllbnQtPnBhaW50KCp0aGlzKTsKICAgICAgICAgfQogICAgICAgICBy
ZXR1cm47CkBAIC0xMzEwLDggKzEzMTAsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c3Ryb2tl
UmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGZsb2F0IGxpbmVXaWR0aCkKICAgICAgICAgICAg
IENHQ29udGV4dEFkZFJlY3QobGF5ZXJDb250ZXh0LCByZWN0KTsKICAgICAgICAgICAgIENHQ29u
dGV4dFJlcGxhY2VQYXRoV2l0aFN0cm9rZWRQYXRoKGxheWVyQ29udGV4dCk7CiAgICAgICAgICAg
ICBDR0NvbnRleHRDbGlwKGxheWVyQ29udGV4dCk7Ci0gICAgICAgICAgICBDR0NvbnRleHRDb25j
YXRDVE0obGF5ZXJDb250ZXh0LCBtX3N0YXRlLnN0cm9rZUdyYWRpZW50LT5ncmFkaWVudFNwYWNl
VHJhbnNmb3JtKCkpOwotICAgICAgICAgICAgbV9zdGF0ZS5zdHJva2VHcmFkaWVudC0+cGFpbnQo
bGF5ZXJDb250ZXh0KTsKKyAgICAgICAgICAgIENHQ29udGV4dENvbmNhdENUTShsYXllckNvbnRl
eHQsIG1fc3RhdGUuc3Ryb2tlR3JhZGllbnRQYWludGluZ0RhdGEuc3BhY2VUcmFuc2Zvcm0pOwor
ICAgICAgICAgICAgbV9zdGF0ZS5zdHJva2VHcmFkaWVudC0+cGFpbnQobGF5ZXJDb250ZXh0LCBt
X3N0YXRlLnN0cm9rZUdyYWRpZW50UGFpbnRpbmdEYXRhLnNwcmVhZE1ldGhvZCk7CiAKICAgICAg
ICAgICAgIGNvbnN0IGZsb2F0IGRlc3RpbmF0aW9uWCA9IHJvdW5kZihyZWN0LngoKSAtIGxpbmVX
aWR0aCk7CiAgICAgICAgICAgICBjb25zdCBmbG9hdCBkZXN0aW5hdGlvblkgPSByb3VuZGYocmVj
dC55KCkgLSBsaW5lV2lkdGgpOwpAQCAtMTMyMyw3ICsxMzIzLDcgQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHQ6OnN0cm9rZVJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBmbG9hdCBsaW5lV2lkdGgp
CiAgICAgICAgICAgICBDR0NvbnRleHRBZGRSZWN0KGNvbnRleHQsIHJlY3QpOwogICAgICAgICAg
ICAgQ0dDb250ZXh0UmVwbGFjZVBhdGhXaXRoU3Ryb2tlZFBhdGgoY29udGV4dCk7CiAgICAgICAg
ICAgICBDR0NvbnRleHRDbGlwKGNvbnRleHQpOwotICAgICAgICAgICAgQ0dDb250ZXh0Q29uY2F0
Q1RNKGNvbnRleHQsIG1fc3RhdGUuc3Ryb2tlR3JhZGllbnQtPmdyYWRpZW50U3BhY2VUcmFuc2Zv
cm0oKSk7CisgICAgICAgICAgICBDR0NvbnRleHRDb25jYXRDVE0oY29udGV4dCwgbV9zdGF0ZS5z
dHJva2VHcmFkaWVudFBhaW50aW5nRGF0YS5zcGFjZVRyYW5zZm9ybSk7CiAgICAgICAgICAgICBt
X3N0YXRlLnN0cm9rZUdyYWRpZW50LT5wYWludCgqdGhpcyk7CiAgICAgICAgIH0KICAgICAgICAg
cmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd0dseXBoc1JlY29yZGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3R2x5cGhzUmVj
b3JkZXIuaAppbmRleCAyYzdmMmFkZjVhODk0ZmJkMDg1MTNiODhmZWJiZThhNzA4N2Y2OWUxLi4x
ZjhhOWMwNjY0MzAyNDgyZDE5Y2Y2Y2E4ZmNlNDUxZWE4MzBjY2YyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3
R2x5cGhzUmVjb3JkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3R2x5cGhzUmVjb3JkZXIuaApAQCAtOTgsNiArOTgs
NyBAQCBwcml2YXRlOgogICAgICAgICBzdHJ1Y3QgU3R5bGUgewogICAgICAgICAgICAgQ29sb3Ig
Y29sb3I7CiAgICAgICAgICAgICBSZWZQdHI8R3JhZGllbnQ+IGdyYWRpZW50OworICAgICAgICAg
ICAgR3JhZGllbnQ6OlBhaW50aW5nRGF0YSBncmFkaWVudFBhaW50aW5nRGF0YTsKICAgICAgICAg
ICAgIFJlZlB0cjxQYXR0ZXJuPiBwYXR0ZXJuOwogICAgICAgICB9OwogICAgICAgICBTdHlsZSBm
aWxsU3R5bGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3R2x5cGhzUmVjb3JkZXJDb3JlVGV4dC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RE
cmF3R2x5cGhzUmVjb3JkZXJDb3JlVGV4dC5jcHAKaW5kZXggZDBmZTVlYmNmNTRkZDZlM2M1MGFm
YmUxZjdmYWRmZThmNzk4ODBiZi4uM2U0MmNmYzIwMjZlNzcwYjk3MDg0YzRiZDk2OTllOGU3Njll
ZjhiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0RHJhd0dseXBoc1JlY29yZGVyQ29yZVRleHQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERy
YXdHbHlwaHNSZWNvcmRlckNvcmVUZXh0LmNwcApAQCAtOTgsMTAgKzk4LDEyIEBAIHZvaWQgRHJh
d0dseXBoc1JlY29yZGVyOjpwb3B1bGF0ZUludGVybmFsU3RhdGUoY29uc3QgR3JhcGhpY3NDb250
ZXh0U3RhdGUmIGNvbnRlCiB7CiAgICAgbV9vcmlnaW5hbFN0YXRlLmZpbGxTdHlsZS5jb2xvciA9
IGNvbnRleHRTdGF0ZS5maWxsQ29sb3I7CiAgICAgbV9vcmlnaW5hbFN0YXRlLmZpbGxTdHlsZS5n
cmFkaWVudCA9IGNvbnRleHRTdGF0ZS5maWxsR3JhZGllbnQ7CisgICAgbV9vcmlnaW5hbFN0YXRl
LmZpbGxTdHlsZS5ncmFkaWVudFBhaW50aW5nRGF0YSA9IGNvbnRleHRTdGF0ZS5maWxsR3JhZGll
bnRQYWludGluZ0RhdGE7CiAgICAgbV9vcmlnaW5hbFN0YXRlLmZpbGxTdHlsZS5wYXR0ZXJuID0g
Y29udGV4dFN0YXRlLmZpbGxQYXR0ZXJuOwogCiAgICAgbV9vcmlnaW5hbFN0YXRlLnN0cm9rZVN0
eWxlLmNvbG9yID0gY29udGV4dFN0YXRlLnN0cm9rZUNvbG9yOwogICAgIG1fb3JpZ2luYWxTdGF0
ZS5zdHJva2VTdHlsZS5ncmFkaWVudCA9IGNvbnRleHRTdGF0ZS5zdHJva2VHcmFkaWVudDsKKyAg
ICBtX29yaWdpbmFsU3RhdGUuc3Ryb2tlU3R5bGUuZ3JhZGllbnRQYWludGluZ0RhdGEgPSBjb250
ZXh0U3RhdGUuc3Ryb2tlR3JhZGllbnRQYWludGluZ0RhdGE7CiAgICAgbV9vcmlnaW5hbFN0YXRl
LnN0cm9rZVN0eWxlLnBhdHRlcm4gPSBjb250ZXh0U3RhdGUuc3Ryb2tlUGF0dGVybjsKIAogICAg
IG1fb3JpZ2luYWxTdGF0ZS5jdG0gPSBtX293bmVyLmN1cnJlbnRTdGF0ZSgpLmN0bTsgLy8gRklY
TUU6IERlYWwgd2l0aCBiYXNlIENUTS4KQEAgLTExOSw3ICsxMjEsNyBAQCB2b2lkIERyYXdHbHlw
aHNSZWNvcmRlcjo6cG9wdWxhdGVJbnRlcm5hbENvbnRleHQoY29uc3QgR3JhcGhpY3NDb250ZXh0
U3RhdGUmIGNvbgogICAgIGlmIChtX29yaWdpbmFsU3RhdGUuZmlsbFN0eWxlLmNvbG9yLmlzVmFs
aWQoKSkKICAgICAgICAgbV9pbnRlcm5hbENvbnRleHQuc2V0RmlsbENvbG9yKG1fb3JpZ2luYWxT
dGF0ZS5maWxsU3R5bGUuY29sb3IpOwogICAgIGVsc2UgaWYgKG1fb3JpZ2luYWxTdGF0ZS5maWxs
U3R5bGUuZ3JhZGllbnQpCi0gICAgICAgIG1faW50ZXJuYWxDb250ZXh0LnNldEZpbGxHcmFkaWVu
dCgqbV9vcmlnaW5hbFN0YXRlLmZpbGxTdHlsZS5ncmFkaWVudCk7CisgICAgICAgIG1faW50ZXJu
YWxDb250ZXh0LnNldEZpbGxHcmFkaWVudCgqbV9vcmlnaW5hbFN0YXRlLmZpbGxTdHlsZS5ncmFk
aWVudCwgbV9vcmlnaW5hbFN0YXRlLmZpbGxTdHlsZS5ncmFkaWVudFBhaW50aW5nRGF0YSk7CiAg
ICAgZWxzZSB7CiAgICAgICAgIEFTU0VSVChtX29yaWdpbmFsU3RhdGUuZmlsbFN0eWxlLnBhdHRl
cm4pOwogICAgICAgICBpZiAobV9vcmlnaW5hbFN0YXRlLmZpbGxTdHlsZS5wYXR0ZXJuKQpAQCAt
MTI5LDcgKzEzMSw3IEBAIHZvaWQgRHJhd0dseXBoc1JlY29yZGVyOjpwb3B1bGF0ZUludGVybmFs
Q29udGV4dChjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgY29uCiAgICAgaWYgKG1fb3JpZ2lu
YWxTdGF0ZS5zdHJva2VTdHlsZS5jb2xvci5pc1ZhbGlkKCkpCiAgICAgICAgIG1faW50ZXJuYWxD
b250ZXh0LnNldFN0cm9rZUNvbG9yKG1fb3JpZ2luYWxTdGF0ZS5zdHJva2VTdHlsZS5jb2xvcik7
CiAgICAgZWxzZSBpZiAobV9vcmlnaW5hbFN0YXRlLnN0cm9rZVN0eWxlLmdyYWRpZW50KQotICAg
ICAgICBtX2ludGVybmFsQ29udGV4dC5zZXRTdHJva2VHcmFkaWVudCgqbV9vcmlnaW5hbFN0YXRl
LnN0cm9rZVN0eWxlLmdyYWRpZW50KTsKKyAgICAgICAgbV9pbnRlcm5hbENvbnRleHQuc2V0U3Ry
b2tlR3JhZGllbnQoKm1fb3JpZ2luYWxTdGF0ZS5zdHJva2VTdHlsZS5ncmFkaWVudCwgbV9vcmln
aW5hbFN0YXRlLnN0cm9rZVN0eWxlLmdyYWRpZW50UGFpbnRpbmdEYXRhKTsKICAgICBlbHNlIHsK
ICAgICAgICAgQVNTRVJUKG1fb3JpZ2luYWxTdGF0ZS5zdHJva2VTdHlsZS5wYXR0ZXJuKTsKICAg
ICAgICAgaWYgKG1fb3JpZ2luYWxTdGF0ZS5zdHJva2VTdHlsZS5wYXR0ZXJuKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0SXRlbXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCmluZGV4IDIzMjU5NjNjOTliYjhiY2NkOGYyNzcyZjZj
N2YyOGRjODVhYzk1ZTMuLjJmZGJjOTY3OWY5OTMwMjQwYjJmYmRhODdmZGUzYzlhM2NmNTUxNjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKQEAgLTExNSwxMCArMTE1LDkg
QEAgc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IENv
bmNhdGVuYXRlQ1RNJiBpdGVtKQogICAgIHJldHVybiB0czsKIH0KIAotU2V0SW5saW5lRmlsbEdy
YWRpZW50OjpTZXRJbmxpbmVGaWxsR3JhZGllbnQoY29uc3QgR3JhZGllbnQmIGdyYWRpZW50KQor
U2V0SW5saW5lRmlsbEdyYWRpZW50OjpTZXRJbmxpbmVGaWxsR3JhZGllbnQoY29uc3QgR3JhZGll
bnQmIGdyYWRpZW50LCBjb25zdCBHcmFkaWVudDo6UGFpbnRpbmdEYXRhJiBwYWludGluZ0RhdGEp
CiAgICAgOiBtX2RhdGEoZ3JhZGllbnQuZGF0YSgpKQotICAgICwgbV9ncmFkaWVudFNwYWNlVHJh
bnNmb3JtYXRpb24oZ3JhZGllbnQuZ3JhZGllbnRTcGFjZVRyYW5zZm9ybSgpKQotICAgICwgbV9z
cHJlYWRNZXRob2QoZ3JhZGllbnQuc3ByZWFkTWV0aG9kKCkpCisgICAgLCBtX3BhaW50aW5nRGF0
YShwYWludGluZ0RhdGEpCiAgICAgLCBtX2NvbG9yU3RvcENvdW50KHN0YXRpY19jYXN0PHVpbnQ4
X3Q+KGdyYWRpZW50LnN0b3BzKCkuc2l6ZSgpKSkKIHsKICAgICBSRUxFQVNFX0FTU0VSVChtX2Nv
bG9yU3RvcENvdW50IDw9IG1heENvbG9yU3RvcENvdW50KTsKQEAgLTEyOCwyMCArMTI3LDkgQEAg
U2V0SW5saW5lRmlsbEdyYWRpZW50OjpTZXRJbmxpbmVGaWxsR3JhZGllbnQoY29uc3QgR3JhZGll
bnQmIGdyYWRpZW50KQogICAgIH0KIH0KIAotUmVmPEdyYWRpZW50PiBTZXRJbmxpbmVGaWxsR3Jh
ZGllbnQ6OmdyYWRpZW50KCkgY29uc3QKLXsKLSAgICBhdXRvIGdyYWRpZW50ID0gR3JhZGllbnQ6
OmNyZWF0ZShHcmFkaWVudDo6RGF0YShtX2RhdGEpKTsKLSAgICBmb3IgKHVpbnQ4X3QgaSA9IDA7
IGkgPCBtX2NvbG9yU3RvcENvdW50OyArK2kpCi0gICAgICAgIGdyYWRpZW50LT5hZGRDb2xvclN0
b3AoeyBtX29mZnNldHNbaV0sIENvbG9yKG1fY29sb3JzW2ldKSB9KTsKLSAgICBncmFkaWVudC0+
c2V0U3ByZWFkTWV0aG9kKG1fc3ByZWFkTWV0aG9kKTsKLSAgICBncmFkaWVudC0+c2V0R3JhZGll
bnRTcGFjZVRyYW5zZm9ybShtX2dyYWRpZW50U3BhY2VUcmFuc2Zvcm1hdGlvbik7Ci0gICAgcmV0
dXJuIGdyYWRpZW50OwotfQotCi1TZXRJbmxpbmVGaWxsR3JhZGllbnQ6OlNldElubGluZUZpbGxH
cmFkaWVudChmbG9hdCBvZmZzZXRzW21heENvbG9yU3RvcENvdW50XSwgU1JHQkE8dWludDhfdD4g
Y29sb3JzW21heENvbG9yU3RvcENvdW50XSwgY29uc3QgR3JhZGllbnQ6OkRhdGEmIGRhdGEsIGNv
bnN0IEFmZmluZVRyYW5zZm9ybSYgZ3JhZGllbnRTcGFjZVRyYW5zZm9ybWF0aW9uLCBHcmFkaWVu
dFNwcmVhZE1ldGhvZCBzcHJlYWRNZXRob2QsIHVpbnQ4X3QgY29sb3JTdG9wQ291bnQpCitTZXRJ
bmxpbmVGaWxsR3JhZGllbnQ6OlNldElubGluZUZpbGxHcmFkaWVudChmbG9hdCBvZmZzZXRzW21h
eENvbG9yU3RvcENvdW50XSwgU1JHQkE8dWludDhfdD4gY29sb3JzW21heENvbG9yU3RvcENvdW50
XSwgY29uc3QgR3JhZGllbnQ6OkRhdGEmIGRhdGEsIGNvbnN0IEdyYWRpZW50OjpQYWludGluZ0Rh
dGEmIHBhaW50aW5nRGF0YSwgdWludDhfdCBjb2xvclN0b3BDb3VudCkKICAgICA6IG1fZGF0YShk
YXRhKQotICAgICwgbV9ncmFkaWVudFNwYWNlVHJhbnNmb3JtYXRpb24oZ3JhZGllbnRTcGFjZVRy
YW5zZm9ybWF0aW9uKQotICAgICwgbV9zcHJlYWRNZXRob2Qoc3ByZWFkTWV0aG9kKQorICAgICwg
bV9wYWludGluZ0RhdGEocGFpbnRpbmdEYXRhKQogICAgICwgbV9jb2xvclN0b3BDb3VudChjb2xv
clN0b3BDb3VudCkKIHsKICAgICBSRUxFQVNFX0FTU0VSVChtX2NvbG9yU3RvcENvdW50IDw9IG1h
eENvbG9yU3RvcENvdW50KTsKQEAgLTE1MSwxMCArMTM5LDE4IEBAIFNldElubGluZUZpbGxHcmFk
aWVudDo6U2V0SW5saW5lRmlsbEdyYWRpZW50KGZsb2F0IG9mZnNldHNbbWF4Q29sb3JTdG9wQ291
bnRdLCBTCiAgICAgfQogfQogCitSZWY8R3JhZGllbnQ+IFNldElubGluZUZpbGxHcmFkaWVudDo6
Z3JhZGllbnQoKSBjb25zdAoreworICAgIGF1dG8gZ3JhZGllbnQgPSBHcmFkaWVudDo6Y3JlYXRl
KEdyYWRpZW50OjpEYXRhKG1fZGF0YSkpOworICAgIGZvciAodWludDhfdCBpID0gMDsgaSA8IG1f
Y29sb3JTdG9wQ291bnQ7ICsraSkKKyAgICAgICAgZ3JhZGllbnQtPmFkZENvbG9yU3RvcCh7IG1f
b2Zmc2V0c1tpXSwgQ29sb3IobV9jb2xvcnNbaV0pIH0pOworICAgIHJldHVybiBncmFkaWVudDsK
K30KKwogdm9pZCBTZXRJbmxpbmVGaWxsR3JhZGllbnQ6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCkgY29uc3QKIHsKICAgICBpZiAobV9jb2xvclN0b3BDb3VudCA8PSBtYXhDb2xvclN0
b3BDb3VudCkKLSAgICAgICAgY29udGV4dC5zZXRGaWxsR3JhZGllbnQoZ3JhZGllbnQoKSk7Cisg
ICAgICAgIGNvbnRleHQuc2V0RmlsbEdyYWRpZW50KGdyYWRpZW50KCksIG1fcGFpbnRpbmdEYXRh
KTsKIH0KIAogYm9vbCBTZXRJbmxpbmVGaWxsR3JhZGllbnQ6OmlzSW5saW5lKGNvbnN0IEdyYWRp
ZW50JiBncmFkaWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCmluZGV4IGVhOGFj
YWRlNjU3NTE0MDEzMDgwZjI3MWJkNzJiZWZkMzExNTEwYTguLmVlZGVkMDRiMzcyMjE3MTA0Mjg1
MDEwMjliZjBiMzMyMTBjNmQ5NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaApA
QCAtMTc0LDkgKzE3NCw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNE
cmF3aW5nSXRlbSA9IGZhbHNlOwogICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDhfdCBtYXhDb2xv
clN0b3BDb3VudCA9IDQ7CiAKLSAgICBTZXRJbmxpbmVGaWxsR3JhZGllbnQoY29uc3QgR3JhZGll
bnQmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBTZXRJbmxpbmVGaWxsR3JhZGllbnQoZmxvYXQgb2Zm
c2V0c1ttYXhDb2xvclN0b3BDb3VudF0sIFNSR0JBPHVpbnQ4X3Q+IGNvbG9yc1ttYXhDb2xvclN0
b3BDb3VudF0sIGNvbnN0IEdyYWRpZW50OjpEYXRhJiwKLSAgICAgICAgY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiBncmFkaWVudFNwYWNlVHJhbnNmb3JtYXRpb24sIEdyYWRpZW50U3ByZWFkTWV0aG9k
LCB1aW50OF90IGNvbG9yU3RvcENvdW50KTsKKyAgICBTZXRJbmxpbmVGaWxsR3JhZGllbnQoY29u
c3QgR3JhZGllbnQmLCBjb25zdCBHcmFkaWVudDo6UGFpbnRpbmdEYXRhJik7CisgICAgV0VCQ09S
RV9FWFBPUlQgU2V0SW5saW5lRmlsbEdyYWRpZW50KGZsb2F0IG9mZnNldHNbbWF4Q29sb3JTdG9w
Q291bnRdLCBTUkdCQTx1aW50OF90PiBjb2xvcnNbbWF4Q29sb3JTdG9wQ291bnRdLCBjb25zdCBH
cmFkaWVudDo6RGF0YSYsIGNvbnN0IEdyYWRpZW50OjpQYWludGluZ0RhdGEmLCB1aW50OF90IGNv
bG9yU3RvcENvdW50KTsKIAogICAgIHN0YXRpYyBib29sIGlzSW5saW5lKGNvbnN0IEdyYWRpZW50
Jik7CiAgICAgUmVmPEdyYWRpZW50PiBncmFkaWVudCgpIGNvbnN0OwpAQCAtMTg3LDggKzE4Niw4
IEBAIHByaXZhdGU6CiAgICAgZmxvYXQgbV9vZmZzZXRzW21heENvbG9yU3RvcENvdW50XTsKICAg
ICBTUkdCQTx1aW50OF90PiBtX2NvbG9yc1ttYXhDb2xvclN0b3BDb3VudF07CiAgICAgR3JhZGll
bnQ6OkRhdGEgbV9kYXRhOwotICAgIEFmZmluZVRyYW5zZm9ybSBtX2dyYWRpZW50U3BhY2VUcmFu
c2Zvcm1hdGlvbjsKLSAgICBHcmFkaWVudFNwcmVhZE1ldGhvZCBtX3NwcmVhZE1ldGhvZCB7IEdy
YWRpZW50U3ByZWFkTWV0aG9kOjpQYWQgfTsKKyAgICAKKyAgICBHcmFkaWVudDo6UGFpbnRpbmdE
YXRhIG1fcGFpbnRpbmdEYXRhOwogICAgIHVpbnQ4X3QgbV9jb2xvclN0b3BDb3VudCB7IDAgfTsK
IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcAppbmRleCBiOTQ4
M2RmNDJkZDkwMTg3YjFmNjlkZDkxYjVlZmI0ZDQ5MGI0MmViLi41NDZhODk1NGVlMGZlY2JjNTZm
YzUzODQ0YTA2YzQ1YjFkZjAzM2I4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVj
b3JkZXIuY3BwCkBAIC0xMDEsNyArMTAxLDcgQEAgdm9pZCBSZWNvcmRlcjo6YXBwZW5kU3RhdGVD
aGFuZ2VJdGVtKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlJiBjaGFuZ2VzLAogICAg
ICAgICBhcHBlbmQ8U2V0SW5saW5lRmlsbENvbG9yPihjaGFuZ2VzLm1fc3RhdGUuZmlsbENvbG9y
LmFzSW5saW5lKCkpOwogCiAgICAgaWYgKGNoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpGaWxsR3JhZGllbnRDaGFuZ2UpKQotICAgICAgICBhcHBlbmQ8U2V0SW5saW5l
RmlsbEdyYWRpZW50PigqY2hhbmdlcy5tX3N0YXRlLmZpbGxHcmFkaWVudCk7CisgICAgICAgIGFw
cGVuZDxTZXRJbmxpbmVGaWxsR3JhZGllbnQ+KCpjaGFuZ2VzLm1fc3RhdGUuZmlsbEdyYWRpZW50
LCBjaGFuZ2VzLm1fc3RhdGUuZmlsbEdyYWRpZW50UGFpbnRpbmdEYXRhKTsKIH0KIAogdm9pZCBS
ZWNvcmRlcjo6d2lsbEFwcGVuZEl0ZW1PZlR5cGUoSXRlbVR5cGUgdHlwZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUGF0aC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1BhdGguY3BwCmluZGV4IDA0Zjg1OWYxNWM3
M2ZiMTNiODdmM2U4OTg4NDc1ZjYyYTJmZTVmMTAuLjRiYzFkMDI1MDFhMmFmYmUxY2Q2N2E5Mjlj
MGMyMWEwY2FkNjg2NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUGF0aC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdQYXRoLmNwcApAQCAtNjksNyArNjksNyBAQCBGbG9hdFJlY3QgUmVuZGVyU1ZHUGF0aDo6
Y2FsY3VsYXRlVXBkYXRlZFN0cm9rZUJvdW5kaW5nQm94KCkgY29uc3QKIHN0YXRpYyB2b2lkIHVz
ZVN0cm9rZVN0eWxlVG9GaWxsKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKIHsKICAgICBpZiAo
YXV0byBncmFkaWVudCA9IGNvbnRleHQuc3Ryb2tlR3JhZGllbnQoKSkKLSAgICAgICAgY29udGV4
dC5zZXRGaWxsR3JhZGllbnQoKmdyYWRpZW50KTsKKyAgICAgICAgY29udGV4dC5zZXRGaWxsR3Jh
ZGllbnQoKmdyYWRpZW50LCBjb250ZXh0LnN0YXRlKCkuc3Ryb2tlR3JhZGllbnRQYWludGluZ0Rh
dGEpOwogICAgIGVsc2UgaWYgKFBhdHRlcm4qIHBhdHRlcm4gPSBjb250ZXh0LnN0cm9rZVBhdHRl
cm4oKSkKICAgICAgICAgY29udGV4dC5zZXRGaWxsUGF0dGVybigqcGF0dGVybik7CiAgICAgZWxz
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNv
dXJjZUdyYWRpZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
UmVzb3VyY2VHcmFkaWVudC5jcHAKaW5kZXggZDIyOWI2MzEzYzViMzgwZWY5NWZlMWJiZGM2NDZm
YmYxMGUyZDgzMS4uNTI3OGQ2ZGQyNGY3NjBhYzAzNzYwYmNjZTQ3Mjc0MTdlMGY3OWU1MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdy
YWRpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jl
c291cmNlR3JhZGllbnQuY3BwCkBAIC0xNDUsOCArMTQ1LDYgQEAgYm9vbCBSZW5kZXJTVkdSZXNv
dXJjZUdyYWRpZW50OjphcHBseVJlc291cmNlKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25z
dCBSZW4KICAgICAgICAgICAgICAgICB1c2Vyc3BhY2VUcmFuc2Zvcm0gKj0gYWRkaXRpb25hbFRl
eHRUcmFuc2Zvcm07CiAgICAgICAgIH0KIAotICAgICAgICBncmFkaWVudC0+c2V0R3JhZGllbnRT
cGFjZVRyYW5zZm9ybSh1c2Vyc3BhY2VUcmFuc2Zvcm0pOwotCiAgICAgICAgIHJldHVybiB7IFdU
Rk1vdmUoZ3JhZGllbnQpLCB1c2Vyc3BhY2VUcmFuc2Zvcm0gfTsKICAgICB9KS5pdGVyYXRvci0+
dmFsdWU7CiAKQEAgLTE2NCwxNiArMTYyLDE3IEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VHcmFk
aWVudDo6YXBwbHlSZXNvdXJjZShSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgY29uc3QgUmVuCiAg
ICAgfQogCiAgICAgYXV0byYgc3ZnU3R5bGUgPSBzdHlsZS5zdmdTdHlsZSgpOworICAgIGF1dG8g
dXNlcnNwYWNlVHJhbnNmb3JtID0gZ3JhZGllbnREYXRhLnVzZXJzcGFjZVRyYW5zZm9ybTsKIAog
ICAgIGlmIChyZXNvdXJjZU1vZGUuY29udGFpbnMoUmVuZGVyU1ZHUmVzb3VyY2VNb2RlOjpBcHBs
eVRvRmlsbCkpIHsKICAgICAgICAgY29udGV4dC0+c2V0QWxwaGEoc3ZnU3R5bGUuZmlsbE9wYWNp
dHkoKSk7Ci0gICAgICAgIGNvbnRleHQtPnNldEZpbGxHcmFkaWVudCgqZ3JhZGllbnREYXRhLmdy
YWRpZW50KTsKKyAgICAgICAgY29udGV4dC0+c2V0RmlsbEdyYWRpZW50KCpncmFkaWVudERhdGEu
Z3JhZGllbnQsIHsgcGxhdGZvcm1TcHJlYWRNZXRob2RGcm9tU1ZHVHlwZShzcHJlYWRNZXRob2Qo
KSksIHVzZXJzcGFjZVRyYW5zZm9ybSB9KTsKICAgICAgICAgY29udGV4dC0+c2V0RmlsbFJ1bGUo
c3ZnU3R5bGUuZmlsbFJ1bGUoKSk7CiAgICAgfSBlbHNlIGlmIChyZXNvdXJjZU1vZGUuY29udGFp
bnMoUmVuZGVyU1ZHUmVzb3VyY2VNb2RlOjpBcHBseVRvU3Ryb2tlKSkgewogICAgICAgICBpZiAo
c3ZnU3R5bGUudmVjdG9yRWZmZWN0KCkgPT0gVmVjdG9yRWZmZWN0OjpOb25TY2FsaW5nU3Ryb2tl
KQotICAgICAgICAgICAgZ3JhZGllbnREYXRhLmdyYWRpZW50LT5zZXRHcmFkaWVudFNwYWNlVHJh
bnNmb3JtKHRyYW5zZm9ybU9uTm9uU2NhbGluZ1N0cm9rZSgmcmVuZGVyZXIsIGdyYWRpZW50RGF0
YS51c2Vyc3BhY2VUcmFuc2Zvcm0pKTsKKyAgICAgICAgICAgIHVzZXJzcGFjZVRyYW5zZm9ybSA9
IHRyYW5zZm9ybU9uTm9uU2NhbGluZ1N0cm9rZSgmcmVuZGVyZXIsIGdyYWRpZW50RGF0YS51c2Vy
c3BhY2VUcmFuc2Zvcm0pOwogICAgICAgICBjb250ZXh0LT5zZXRBbHBoYShzdmdTdHlsZS5zdHJv
a2VPcGFjaXR5KCkpOwotICAgICAgICBjb250ZXh0LT5zZXRTdHJva2VHcmFkaWVudCgqZ3JhZGll
bnREYXRhLmdyYWRpZW50KTsKKyAgICAgICAgY29udGV4dC0+c2V0U3Ryb2tlR3JhZGllbnQoKmdy
YWRpZW50RGF0YS5ncmFkaWVudCwgeyBwbGF0Zm9ybVNwcmVhZE1ldGhvZEZyb21TVkdUeXBlKHNw
cmVhZE1ldGhvZCgpKSwgdXNlcnNwYWNlVHJhbnNmb3JtIH0pOwogICAgICAgICBTVkdSZW5kZXJT
dXBwb3J0OjphcHBseVN0cm9rZVN0eWxlVG9Db250ZXh0KGNvbnRleHQsIHN0eWxlLCByZW5kZXJl
cik7CiAgICAgfQogCkBAIC0xOTcsOSArMTk2LDkgQEAgdm9pZCBSZW5kZXJTVkdSZXNvdXJjZUdy
YWRpZW50Ojpwb3N0QXBwbHlSZXNvdXJjZShSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgR3JhcGgK
ICAgICAgICAgICAgICAgICBjb250ZXh0ID0gc3RkOjpleGNoYW5nZShtX3NhdmVkQ29udGV4dCwg
bnVsbHB0cik7CiAKICAgICAgICAgICAgICAgICBGbG9hdFJlY3QgdGFyZ2V0UmVjdDsKLSAgICAg
ICAgICAgICAgICBncmFkaWVudC5zZXRHcmFkaWVudFNwYWNlVHJhbnNmb3JtKGNsaXBUb1RleHRN
YXNrKCpjb250ZXh0LCBtX2ltYWdlQnVmZmVyLCB0YXJnZXRSZWN0LCAmcmVuZGVyZXIsIGdyYWRp
ZW50VW5pdHMoKSA9PSBTVkdVbml0VHlwZXM6OlNWR19VTklUX1RZUEVfT0JKRUNUQk9VTkRJTkdC
T1gsIGdyYWRpZW50VHJhbnNmb3JtKCkpKTsKKyAgICAgICAgICAgICAgICBBZmZpbmVUcmFuc2Zv
cm0gdXNlcnNwYWNlVHJhbnNmb3JtID0gY2xpcFRvVGV4dE1hc2soKmNvbnRleHQsIG1faW1hZ2VC
dWZmZXIsIHRhcmdldFJlY3QsICZyZW5kZXJlciwgZ3JhZGllbnRVbml0cygpID09IFNWR1VuaXRU
eXBlczo6U1ZHX1VOSVRfVFlQRV9PQkpFQ1RCT1VORElOR0JPWCwgZ3JhZGllbnRUcmFuc2Zvcm0o
KSk7CiAKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5zZXRGaWxsR3JhZGllbnQoZ3JhZGllbnQp
OworICAgICAgICAgICAgICAgIGNvbnRleHQtPnNldEZpbGxHcmFkaWVudChncmFkaWVudCwgeyBw
bGF0Zm9ybVNwcmVhZE1ldGhvZEZyb21TVkdUeXBlKHNwcmVhZE1ldGhvZCgpKSwgdXNlcnNwYWNl
VHJhbnNmb3JtIH0pOwogICAgICAgICAgICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KHRhcmdldFJl
Y3QpOwogCiAgICAgICAgICAgICAgICAgbV9pbWFnZUJ1ZmZlciA9IG51bGxwdHI7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGll
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFk
aWVudC5oCmluZGV4IDI1ZjViYjAxY2I2OTkzNWQzZDU3NGE2NWIwZWExOGUzMDBjNjIyMDYuLjAz
OGJkZTkzYmRiMGRiMjQ4NTY4Zjc1YTc0MjkxNjQzNTE2YmQ3NTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5o
CkBAIC01Miw2ICs1Miw3IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAgdm9pZCBlbGVtZW50
KCkgY29uc3QgPSBkZWxldGU7CiAKKyAgICB2aXJ0dWFsIFNWR1NwcmVhZE1ldGhvZFR5cGUgc3By
ZWFkTWV0aG9kKCkgIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFNWR1VuaXRUeXBlczo6U1ZHVW5p
dFR5cGUgZ3JhZGllbnRVbml0cygpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIEFmZmluZVRyYW5z
Zm9ybSBncmFkaWVudFRyYW5zZm9ybSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgY29s
bGVjdEdyYWRpZW50QXR0cmlidXRlcygpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VMaW5lYXJHcmFkaWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTGluZWFyR3JhZGllbnQu
Y3BwCmluZGV4IGE4ZWMxYjJhOTRmNjY1NWRhN2FkMzI5MjdkYTk3YzBjZGM3YTA5OWMuLjRlY2Fh
NWFlYTNiMjdlNGQ4NzhlNGQxNWIzMzdkYzdjMmM5MjgxMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VMaW5lYXJHcmFkaWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUxpbmVh
ckdyYWRpZW50LmNwcApAQCAtNTMsNyArNTMsNiBAQCBGbG9hdFBvaW50IFJlbmRlclNWR1Jlc291
cmNlTGluZWFyR3JhZGllbnQ6OmVuZFBvaW50KGNvbnN0IExpbmVhckdyYWRpZW50QXR0cmlidQog
UmVmPEdyYWRpZW50PiBSZW5kZXJTVkdSZXNvdXJjZUxpbmVhckdyYWRpZW50OjpidWlsZEdyYWRp
ZW50KGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkgY29uc3QKIHsKICAgICBhdXRvIGdyYWRpZW50
ID0gR3JhZGllbnQ6OmNyZWF0ZShHcmFkaWVudDo6TGluZWFyRGF0YSB7IHN0YXJ0UG9pbnQobV9h
dHRyaWJ1dGVzKSwgZW5kUG9pbnQobV9hdHRyaWJ1dGVzKSB9KTsKLSAgICBncmFkaWVudC0+c2V0
U3ByZWFkTWV0aG9kKHBsYXRmb3JtU3ByZWFkTWV0aG9kRnJvbVNWR1R5cGUobV9hdHRyaWJ1dGVz
LnNwcmVhZE1ldGhvZCgpKSk7CiAgICAgYWRkU3RvcHMoZ3JhZGllbnQsIG1fYXR0cmlidXRlcy5z
dG9wcygpLCBzdHlsZSk7CiAgICAgcmV0dXJuIGdyYWRpZW50OwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUxpbmVhckdyYWRpZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTGluZWFy
R3JhZGllbnQuaAppbmRleCA1NThkNDJhNTdlZmVjMGExYmU3NDI5MDJmOGJmODRhOTQ2MTA1NTNl
Li5hNTA4NThlOTdlN2ZlZTg4OGNmYjBkMzc4NmE4ZGFlZmIwOGI2MzViIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTGluZWFyR3JhZGll
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNl
TGluZWFyR3JhZGllbnQuaApAQCAtNDAsNiArNDAsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAg
IFJlbmRlclNWR1Jlc291cmNlVHlwZSByZXNvdXJjZVR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVy
biBMaW5lYXJHcmFkaWVudFJlc291cmNlVHlwZTsgfQogCisgICAgU1ZHU3ByZWFkTWV0aG9kVHlw
ZSBzcHJlYWRNZXRob2QoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2F0dHJpYnV0ZXMuc3ByZWFk
TWV0aG9kKCk7IH0KICAgICBTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlIGdyYWRpZW50VW5pdHMo
KSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2F0dHJpYnV0ZXMuZ3JhZGllbnRVbml0cygpOyB9CiAg
ICAgQWZmaW5lVHJhbnNmb3JtIGdyYWRpZW50VHJhbnNmb3JtKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gbV9hdHRyaWJ1dGVzLmdyYWRpZW50VHJhbnNmb3JtKCk7IH0KICAgICBib29sIGNvbGxlY3RH
cmFkaWVudEF0dHJpYnV0ZXMoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VSYWRpYWxHcmFkaWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUmFkaWFsR3JhZGllbnQuY3Bw
CmluZGV4IGJhZGYxNzVhODA2NDliMGJjMTMyNGI4YmEwNzI2MjYxZDVmMjBiOTguLjY3ZTQ1NDEw
YmExMzcwZmJlMGQ3YTBlNmJmZjJkYzk3OWQyNDBlMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VSYWRpYWxHcmFkaWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVJhZGlhbEdy
YWRpZW50LmNwcApAQCAtNjQsNyArNjQsNiBAQCBmbG9hdCBSZW5kZXJTVkdSZXNvdXJjZVJhZGlh
bEdyYWRpZW50Ojpmb2NhbFJhZGl1cyhjb25zdCBSYWRpYWxHcmFkaWVudEF0dHJpYnV0ZQogUmVm
PEdyYWRpZW50PiBSZW5kZXJTVkdSZXNvdXJjZVJhZGlhbEdyYWRpZW50OjpidWlsZEdyYWRpZW50
KGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkgY29uc3QKIHsKICAgICBhdXRvIGdyYWRpZW50ID0g
R3JhZGllbnQ6OmNyZWF0ZShHcmFkaWVudDo6UmFkaWFsRGF0YSB7IGZvY2FsUG9pbnQobV9hdHRy
aWJ1dGVzKSwgY2VudGVyUG9pbnQobV9hdHRyaWJ1dGVzKSwgZm9jYWxSYWRpdXMobV9hdHRyaWJ1
dGVzKSwgcmFkaXVzKG1fYXR0cmlidXRlcyksIDEgfSk7Ci0gICAgZ3JhZGllbnQtPnNldFNwcmVh
ZE1ldGhvZChwbGF0Zm9ybVNwcmVhZE1ldGhvZEZyb21TVkdUeXBlKG1fYXR0cmlidXRlcy5zcHJl
YWRNZXRob2QoKSkpOwogICAgIGFkZFN0b3BzKGdyYWRpZW50LCBtX2F0dHJpYnV0ZXMuc3RvcHMo
KSwgc3R5bGUpOwogICAgIHJldHVybiBncmFkaWVudDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VSYWRpYWxHcmFkaWVudC5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVJhZGlhbEdyYWRp
ZW50LmgKaW5kZXggYWYzOTZkMTUwNmQ2ZjJjYzE3MTFkZGI3MmVmNjRlYTZiOWUzNzRiNy4uYmM0
YzRlNTVmOTEwZjk0MDI1MTcxYmUzNzk4NGY3NjgyMWFmZGMzYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVJhZGlhbEdyYWRpZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVJhZGlh
bEdyYWRpZW50LmgKQEAgLTQ0LDYgKzQ0LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBSZW5k
ZXJTVkdSZXNvdXJjZVR5cGUgcmVzb3VyY2VUeXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gUmFk
aWFsR3JhZGllbnRSZXNvdXJjZVR5cGU7IH0KIAorICAgIFNWR1NwcmVhZE1ldGhvZFR5cGUgc3By
ZWFkTWV0aG9kKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9hdHRyaWJ1dGVzLnNwcmVhZE1ldGhv
ZCgpOyB9CiAgICAgU1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZSBncmFkaWVudFVuaXRzKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gbV9hdHRyaWJ1dGVzLmdyYWRpZW50VW5pdHMoKTsgfQogICAgIEFm
ZmluZVRyYW5zZm9ybSBncmFkaWVudFRyYW5zZm9ybSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1f
YXR0cmlidXRlcy5ncmFkaWVudFRyYW5zZm9ybSgpOyB9CiAgICAgUmVmPEdyYWRpZW50PiBidWls
ZEdyYWRpZW50KGNvbnN0IFJlbmRlclN0eWxlJikgY29uc3QgZmluYWw7Cg==
</data>
<flag name="commit-queue"
          id="434237"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>416651</attachid>
            <date>2020-12-21 21:18:09 -0800</date>
            <delta_ts>2020-12-21 22:55:29 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220079-20201221211808.patch</filename>
            <type>text/plain</type>
            <size>46064</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxMDI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjVlNzExMjRmZDVlMjBh
NTJmYTlkMjYyZWVkNTJkZmU0NGJlNzhjNC4uM2YwYWFjMGIyYzM3OGI2YWZjMWY5OTBmMTU3ODI0
M2FkYmQ3NDVlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgyIEBACisyMDIwLTEyLTIxICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgdGhlIGdyYWRp
ZW50IHBhaW50aW5nIGRhdGEgb3V0c2lkZSB0aGUgR3JhZGllbnQgY2xhc3MKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDA3OQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUgdGhlIFNwcmVhZE1ldGhv
ZCBhbmQgdGhlIFNwYWNlVHJhbnNmb3JtIGZyb20gdGhlIEdyYWRpZW50IGNsYXNzIHRvCisgICAg
ICAgIHRoZSBHcmFwaGljc0NvbnRleHRTdGF0ZSBpbnRvIGEgbmV3IHN0cnVjdCBjYWxsZWQgR3Jh
ZGllbnQ6OlBhaW50aW5nRGF0YS4KKyAgICAgICAgVGhlIGNsaWVudCB3aWxsIHNldCB0aGVtIHdo
ZW4gY2FsbGluZyBHcmFwaGljc0NvbnRleHQ6OnNldEZpbGxHcmFkaWVudCgpCisgICAgICAgIGFu
ZCBHcmFwaGljc0NvbnRleHQ6OnNldEZpbGxHcmFkaWVudCgpLgorCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhZGllbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhZGllbnQ6OmFk
ZENvbG9yU3RvcCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFkaWVudDo6c2V0U29ydGVkQ29sb3JT
dG9wcyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFkaWVudDo6c2V0U3ByZWFkTWV0aG9kKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYWRpZW50OjpzZXRHcmFkaWVudFNwYWNlVHJhbnNm
b3JtKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmFkZCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpHcmFkaWVudDo6aGFzaCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhZGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYWRpZW50Ojpl
bmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhZGllbnQ6OmRlY29kZSk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFkaWVudDo6c3ByZWFkTWV0aG9kIGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkdyYWRpZW50OjpncmFkaWVudFNwYWNlVHJhbnNmb3JtIGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudEltYWdlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkdyYWRpZW50SW1hZ2U6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudEltYWdlLmg6CisgICAgICAgIE5vIG5lZWQgZm9y
IHRoZSBHcmFkaWVudDo6aGFzaCgpLiBOZXcgc3RvcHMgY2FuIG9ubHkgYmUgYWRkZWQgdG8gdGhl
IAorICAgICAgICBleGlzdGluZyBzdG9wcy4gQ2xpZW50cyBuZWVkIHRvIGNoZWNrIGZvciB0aGUg
c3RvcHMnIHNpemUgaWYgdGhleSB3YW50CisgICAgICAgIHRvIGludmFsaWRhdGUgdGhlaXIgY2Fj
aGVkIGRyYXdpbmcuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2U6OmFw
cGx5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0U3Ryb2tl
R3JhZGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRGaWxsR3Jh
ZGllbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRTdHJva2VHcmFkaWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldEZpbGxHcmFkaWVudCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNhaXJvOjpGaWxsU291cmNlOjpGaWxsU291cmNlKToKKyAgICAgICAgKFdl
YkNvcmU6OkNhaXJvOjpTdHJva2VTb3VyY2U6OlN0cm9rZVNvdXJjZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhZGllbnRDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFkaWVudDo6Y3JlYXRlUGF0dGVybik6CisgICAgICAgIChXZWJDb3JlOjpHcmFkaWVudDo6
ZmlsbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0
SW1wbENhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEltcGxDYWly
bzo6ZmlsbFJlY3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYWRpZW50Q0cu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhZGllbnQ6OnBhaW50KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQ6OmZpbGxQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDo6c3Ryb2tlUGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6
OmZpbGxSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c3Ryb2tlUmVj
dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
RHJhd0dseXBoc1JlY29yZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0RHJhd0dseXBoc1JlY29yZGVyQ29yZVRleHQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdHbHlwaHNSZWNvcmRlcjo6cG9wdWxhdGVJbnRl
cm5hbFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3R2x5cGhzUmVj
b3JkZXI6OnBvcHVsYXRlSW50ZXJuYWxDb250ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6U2V0SW5saW5lRmlsbEdyYWRpZW50OjpTZXRJbmxpbmVGaWxsR3JhZGll
bnQpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlNldElubGluZUZpbGxHcmFkaWVu
dDo6Z3JhZGllbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlNldElu
bGluZUZpbGxHcmFkaWVudDo6YXBwbHkgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjphcHBlbmRTdGF0ZUNoYW5nZUl0ZW0pOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3Bl
cmF0aW9uUmVjb3JkZXIuY3BwOgorICAgICAgICAoTmljb3NpYTo6Q2Fpcm9PcGVyYXRpb25SZWNv
cmRlcjo6ZmlsbFJlY3QpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUGF0aC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjp1c2VTdHJva2VTdHlsZVRvRmlsbCk6CisgICAgICAgICog
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclNWR1Jlc291cmNlR3JhZGllbnQ6OmFwcGx5UmVzb3VyY2UpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudDo6cG9zdEFwcGx5UmVzb3VyY2Up
OgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5oOgor
ICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VMaW5lYXJHcmFkaWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZUxpbmVhckdyYWRpZW50Ojpi
dWlsZEdyYWRpZW50IGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jl
c291cmNlTGluZWFyR3JhZGllbnQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jlc291cmNlUmFkaWFsR3JhZGllbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZH
UmVzb3VyY2VSYWRpYWxHcmFkaWVudDo6YnVpbGRHcmFkaWVudCBjb25zdCk6CisgICAgICAgICog
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVJhZGlhbEdyYWRpZW50Lmg6CisKIDIwMjAt
MTItMjEgIE1lZ2FuIEdhcmRuZXIgIDxtZWdhbl9nYXJkbmVyQGFwcGxlLmNvbT4KIAogICAgICAg
ICBDb3B5IExvY2FsaXphYmxlLnN0cmluZ3MgZmlsZSBpbnRvIHRoZSBjb3JyZWN0IGRpcmVjdG9y
eQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnQuY3BwCmluZGV4
IGUxNzBmOTZhMWI2ZWY1MzViYzVhODIzY2ExMWQ3YTc1MDQyMWVmY2QuLjk4ZGI3YjZkNzk0YjE0
ZTQ4ZTZiNjU4YzkzYTc0ODI0ZmFkM2IyMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFkaWVudC5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDA2LCAyMDA3LCAyMDA4LCAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNi0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwNyBBbHAgVG9rZXIgPGFscEBhdG9rZXIuY29tPgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dApAQCAtNDYsOCArNDYsNiBAQCBHcmFkaWVudDo6R3JhZGllbnQoRGF0
YSYmIGRhdGEpCiB7CiB9CiAKLUdyYWRpZW50Ojp+R3JhZGllbnQoKSA9IGRlZmF1bHQ7Ci0KIHZv
aWQgR3JhZGllbnQ6OmFkanVzdFBhcmFtZXRlcnNGb3JUaWxlZERyYXdpbmcoRmxvYXRTaXplJiBz
aXplLCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZykKIHsKICAg
ICBpZiAoc3JjUmVjdC5pc0VtcHR5KCkpCkBAIC05Nyw3ICs5NSw2IEBAIHZvaWQgR3JhZGllbnQ6
OmFkZENvbG9yU3RvcChHcmFkaWVudDo6Q29sb3JTdG9wJiYgc3RvcCkKIHsKICAgICBtX3N0b3Bz
LmFwcGVuZChXVEZNb3ZlKHN0b3ApKTsKICAgICBtX3N0b3BzU29ydGVkID0gZmFsc2U7Ci0gICAg
bV9jYWNoZWRIYXNoID0gMDsKICAgICBzdG9wc0NoYW5nZWQoKTsKIH0KIApAQCAtMTA1LDcgKzEw
Miw2IEBAIHZvaWQgR3JhZGllbnQ6OnNldFNvcnRlZENvbG9yU3RvcHMoQ29sb3JTdG9wVmVjdG9y
JiYgc3RvcHMpCiB7CiAgICAgbV9zdG9wcyA9IFdURk1vdmUoc3RvcHMpOwogICAgIG1fc3RvcHNT
b3J0ZWQgPSB0cnVlOwotICAgIG1fY2FjaGVkSGFzaCA9IDA7CiAgICAgc3RvcHNDaGFuZ2VkKCk7
CiB9CiAKQEAgLTExOSw2NyArMTE1LDQgQEAgdm9pZCBHcmFkaWVudDo6c29ydFN0b3BzKCkgY29u
c3QKICAgICB9KTsKIH0KIAotdm9pZCBHcmFkaWVudDo6c2V0U3ByZWFkTWV0aG9kKEdyYWRpZW50
U3ByZWFkTWV0aG9kIHNwcmVhZE1ldGhvZCkKLXsKLSAgICBpZiAobV9zcHJlYWRNZXRob2QgPT0g
c3ByZWFkTWV0aG9kKQotICAgICAgICByZXR1cm47Ci0gICAgbV9zcHJlYWRNZXRob2QgPSBzcHJl
YWRNZXRob2Q7Ci0gICAgbV9jYWNoZWRIYXNoID0gMDsKLX0KLQotdm9pZCBHcmFkaWVudDo6c2V0
R3JhZGllbnRTcGFjZVRyYW5zZm9ybShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGdyYWRpZW50U3Bh
Y2VUcmFuc2Zvcm1hdGlvbikKLXsKLSAgICBpZiAobV9ncmFkaWVudFNwYWNlVHJhbnNmb3JtYXRp
b24gPT0gZ3JhZGllbnRTcGFjZVRyYW5zZm9ybWF0aW9uKQotICAgICAgICByZXR1cm47Ci0gICAg
bV9ncmFkaWVudFNwYWNlVHJhbnNmb3JtYXRpb24gPSBncmFkaWVudFNwYWNlVHJhbnNmb3JtYXRp
b247Ci0gICAgbV9jYWNoZWRIYXNoID0gMDsKLX0KLQotLy8gRklYTUU6IEluc3RlYWQgb2YgdGhl
c2UgYWRkKEhhc2hlcikgZnVuY3Rpb25zLCBjb25zaWRlciB1c2luZyBlbmNvZGUgZnVuY3Rpb25z
IHRvIGNvbXB1dGUgdGhlIGhhc2guCi0KLXN0YXRpYyB2b2lkIGFkZChIYXNoZXImIGhhc2hlciwg
Y29uc3QgQ29sb3ImIGNvbG9yKQotewotICAgIC8vIEZJWE1FOiBXZSBkb24ndCB3YW50IHRvIGhh
c2ggYSBoYXNoOyBkbyBiZXR0ZXIuCi0gICAgYWRkKGhhc2hlciwgY29sb3IuaGFzaCgpKTsKLX0K
LQotc3RhdGljIHZvaWQgYWRkKEhhc2hlciYgaGFzaGVyLCBjb25zdCBGbG9hdFBvaW50JiBwb2lu
dCkKLXsKLSAgICBhZGQoaGFzaGVyLCBwb2ludC54KCksIHBvaW50LnkoKSk7Ci19Ci0KLXN0YXRp
YyB2b2lkIGFkZChIYXNoZXImIGhhc2hlciwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zv
cm0pCi17Ci0gICAgYWRkKGhhc2hlciwgdHJhbnNmb3JtLmEoKSwgdHJhbnNmb3JtLmIoKSwgdHJh
bnNmb3JtLmMoKSwgdHJhbnNmb3JtLmQoKSwgdHJhbnNmb3JtLmUoKSwgdHJhbnNmb3JtLmYoKSk7
Ci19Ci0KLXN0YXRpYyB2b2lkIGFkZChIYXNoZXImIGhhc2hlciwgY29uc3QgR3JhZGllbnQ6OkNv
bG9yU3RvcCYgc3RvcCkKLXsKLSAgICBhZGQoaGFzaGVyLCBzdG9wLm9mZnNldCwgc3RvcC5jb2xv
cik7Ci19Ci0KLXN0YXRpYyB2b2lkIGFkZChIYXNoZXImIGhhc2hlciwgY29uc3QgR3JhZGllbnQ6
OkxpbmVhckRhdGEmIGRhdGEpCi17Ci0gICAgYWRkKGhhc2hlciwgZGF0YS5wb2ludDAsIGRhdGEu
cG9pbnQxKTsKLX0KLQotc3RhdGljIHZvaWQgYWRkKEhhc2hlciYgaGFzaGVyLCBjb25zdCBHcmFk
aWVudDo6UmFkaWFsRGF0YSYgZGF0YSkKLXsKLSAgICBhZGQoaGFzaGVyLCBkYXRhLnBvaW50MCwg
ZGF0YS5wb2ludDEsIGRhdGEuc3RhcnRSYWRpdXMsIGRhdGEuZW5kUmFkaXVzLCBkYXRhLmFzcGVj
dFJhdGlvKTsKLX0KLQotc3RhdGljIHZvaWQgYWRkKEhhc2hlciYgaGFzaGVyLCBjb25zdCBHcmFk
aWVudDo6Q29uaWNEYXRhJiBkYXRhKQotewotICAgIGFkZChoYXNoZXIsIGRhdGEucG9pbnQwLCBk
YXRhLmFuZ2xlUmFkaWFucyk7Ci19Ci0KLXVuc2lnbmVkIEdyYWRpZW50OjpoYXNoKCkgY29uc3QK
LXsKLSAgICBpZiAoIW1fY2FjaGVkSGFzaCkgewotICAgICAgICBzb3J0U3RvcHMoKTsKLSAgICAg
ICAgbV9jYWNoZWRIYXNoID0gY29tcHV0ZUhhc2gobV9kYXRhLCBtX3NwcmVhZE1ldGhvZCwgbV9n
cmFkaWVudFNwYWNlVHJhbnNmb3JtYXRpb24sIG1fc3RvcHMpOwotICAgIH0KLSAgICByZXR1cm4g
bV9jYWNoZWRIYXNoOwotfQotCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFkaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhZGllbnQuaAppbmRleCA4MWU5Y2UxYjhlOTFhNTI1MjBjMzcxNzk3OGU3YmQ0YTM3YTZlOWRj
Li40YTE1OTllZTIyNzEyZjMzNzU2YjQ4Y2VlZWE0NzYzZmM1MTNiMDQzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50LmgKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4LCAyMDExLCAyMDEyLCAyMDEzIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNi0yMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwNyBBbHAg
VG9rZXIgPGFscEBhdG9rZXIuY29tPgogICogQ29weXJpZ2h0IChDKSAyMDA4IFRvcmNoIE1vYmls
ZSwgSW5jLgogICoKQEAgLTczLDYgKzczLDExIEBAIHB1YmxpYzoKIAogICAgIHVzaW5nIENvbG9y
U3RvcFZlY3RvciA9IFZlY3RvcjxDb2xvclN0b3AsIDI+OwogCisgICAgc3RydWN0IFBhaW50aW5n
RGF0YSB7CisgICAgICAgIEdyYWRpZW50U3ByZWFkTWV0aG9kIHNwcmVhZE1ldGhvZCB7IEdyYWRp
ZW50U3ByZWFkTWV0aG9kOjpQYWQgfTsKKyAgICAgICAgQWZmaW5lVHJhbnNmb3JtIHNwYWNlVHJh
bnNmb3JtOworICAgIH07CisKICAgICBzdHJ1Y3QgTGluZWFyRGF0YSB7CiAgICAgICAgIEZsb2F0
UG9pbnQgcG9pbnQwOwogICAgICAgICBGbG9hdFBvaW50IHBvaW50MTsKQEAgLTEwNCw4ICsxMDks
NiBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEdyYWRpZW50PiBj
cmVhdGUoRGF0YSYmKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIH5HcmFkaWVudCgpOwotCiAgICAg
Ym9vbCBpc1plcm9TaXplKCkgY29uc3Q7CiAKICAgICBjb25zdCBEYXRhJiBkYXRhKCkgY29uc3Qg
eyByZXR1cm4gbV9kYXRhOyB9CkBAIC0xMTUsMjQgKzExOCwxNiBAQCBwdWJsaWM6CiAKICAgICBj
b25zdCBDb2xvclN0b3BWZWN0b3ImIHN0b3BzKCkgY29uc3QgeyByZXR1cm4gbV9zdG9wczsgfQog
Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTcHJlYWRNZXRob2QoR3JhZGllbnRTcHJlYWRN
ZXRob2QpOwotICAgIEdyYWRpZW50U3ByZWFkTWV0aG9kIHNwcmVhZE1ldGhvZCgpIGNvbnN0IHsg
cmV0dXJuIG1fc3ByZWFkTWV0aG9kOyB9Ci0KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEdy
YWRpZW50U3BhY2VUcmFuc2Zvcm0oY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBncmFkaWVudFNwYWNl
VHJhbnNmb3JtYXRpb24pOwotICAgIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgZ3JhZGllbnRTcGFj
ZVRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1fZ3JhZGllbnRTcGFjZVRyYW5zZm9ybWF0aW9u
OyB9Ci0KICAgICB2b2lkIGZpbGwoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0Jik7
CiAgICAgdm9pZCBhZGp1c3RQYXJhbWV0ZXJzRm9yVGlsZWREcmF3aW5nKEZsb2F0U2l6ZSYsIEZs
b2F0UmVjdCYsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZyk7CiAKLSAgICB1bnNpZ25lZCBoYXNo
KCkgY29uc3Q7Ci0KICNpZiBVU0UoQ0FJUk8pCi0gICAgUmVmUHRyPGNhaXJvX3BhdHRlcm5fdD4g
Y3JlYXRlUGF0dGVybihmbG9hdCBnbG9iYWxBbHBoYSk7CisgICAgUmVmUHRyPGNhaXJvX3BhdHRl
cm5fdD4gY3JlYXRlUGF0dGVybihmbG9hdCBnbG9iYWxBbHBoYSwgR3JhZGllbnRTcHJlYWRNZXRo
b2QpOwogI2VuZGlmCiAKICNpZiBVU0UoQ0cpCiAgICAgdm9pZCBwYWludChHcmFwaGljc0NvbnRl
eHQmKTsKLSAgICB2b2lkIHBhaW50KENHQ29udGV4dFJlZik7CisgICAgdm9pZCBwYWludChDR0Nv
bnRleHRSZWYsIEdyYWRpZW50U3ByZWFkTWV0aG9kKTsKICNlbmRpZgogCiAjaWYgVVNFKERJUkVD
VDJEKQpAQCAtMTU1LDkgKzE1MCw2IEBAIHByaXZhdGU6CiAgICAgRGF0YSBtX2RhdGE7CiAgICAg
bXV0YWJsZSBDb2xvclN0b3BWZWN0b3IgbV9zdG9wczsKICAgICBtdXRhYmxlIGJvb2wgbV9zdG9w
c1NvcnRlZCB7IGZhbHNlIH07Ci0gICAgR3JhZGllbnRTcHJlYWRNZXRob2QgbV9zcHJlYWRNZXRo
b2QgeyBHcmFkaWVudFNwcmVhZE1ldGhvZDo6UGFkIH07Ci0gICAgbXV0YWJsZSB1bnNpZ25lZCBt
X2NhY2hlZEhhc2ggeyAwIH07Ci0gICAgQWZmaW5lVHJhbnNmb3JtIG1fZ3JhZGllbnRTcGFjZVRy
YW5zZm9ybWF0aW9uOwogCiAjaWYgVVNFKENHKQogICAgIFJldGFpblB0cjxDR0dyYWRpZW50UmVm
PiBtX2dyYWRpZW50OwpAQCAtMjc1LDggKzI2Nyw2IEBAIHRlbXBsYXRlPHR5cGVuYW1lIEVuY29k
ZXI+IHZvaWQgR3JhZGllbnQ6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVu
Y29kZXIgPDwgbV9kYXRhOwogICAgIGVuY29kZXIgPDwgbV9zdG9wczsKICAgICBlbmNvZGVyIDw8
IG1fc3RvcHNTb3J0ZWQ7Ci0gICAgZW5jb2RlciA8PCBtX3NwcmVhZE1ldGhvZDsKLSAgICBlbmNv
ZGVyIDw8IG1fZ3JhZGllbnRTcGFjZVRyYW5zZm9ybWF0aW9uOwogfQogCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBEZWNvZGVyPiBPcHRpb25hbDxSZWY8R3JhZGllbnQ+PiBHcmFkaWVudDo6ZGVjb2RlKERl
Y29kZXImIGRlY29kZXIpCkBAIC0zMDIsMTcgKzI5Miw2IEBAIHRlbXBsYXRlPHR5cGVuYW1lIERl
Y29kZXI+IE9wdGlvbmFsPFJlZjxHcmFkaWVudD4+IEdyYWRpZW50OjpkZWNvZGUoRGVjb2RlciYg
ZGVjCiAgICAgICAgICAgICBncmFkaWVudC0+YWRkQ29sb3JTdG9wKFdURk1vdmUoc3RvcCkpOwog
ICAgIH0KIAotICAgIEdyYWRpZW50U3ByZWFkTWV0aG9kIHNwcmVhZE1ldGhvZDsKLSAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHNwcmVhZE1ldGhvZCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7Ci0gICAgZ3JhZGllbnQtPnNldFNwcmVhZE1ldGhvZChzcHJlYWRNZXRob2QpOwotCi0gICAg
T3B0aW9uYWw8QWZmaW5lVHJhbnNmb3JtPiBncmFkaWVudFNwYWNlVHJhbnNmb3JtYXRpb247Ci0g
ICAgZGVjb2RlciA+PiBncmFkaWVudFNwYWNlVHJhbnNmb3JtYXRpb247Ci0gICAgaWYgKCFncmFk
aWVudFNwYWNlVHJhbnNmb3JtYXRpb24pCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0g
ICAgZ3JhZGllbnQtPnNldEdyYWRpZW50U3BhY2VUcmFuc2Zvcm0oV1RGTW92ZSgqZ3JhZGllbnRT
cGFjZVRyYW5zZm9ybWF0aW9uKSk7Ci0KICAgICByZXR1cm4gZ3JhZGllbnQ7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFnZS5jcHAKaW5k
ZXggMzExNGRiOTAxNmVlYjdmYWM5OGVmNWY1NzgzNjA0YzVjMDg0MGZlMC4uZWYxZTI5MmZhYTZm
YzNhNjAwNTQ5OTljYTM0YWU2ZTUyZmNhZTg5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFnZS5jcHAKQEAgLTY5LDkgKzY5LDkgQEAgdm9p
ZCBHcmFkaWVudEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0
LCBjb25zdCBGbG9hdFJlY3QmIGQKICAgICBhZGp1c3RlZFBhdHRlcm5DVE0uc2NhbGUoMS4wIC8g
eFNjYWxlLCAxLjAgLyB5U2NhbGUpOwogICAgIGFkanVzdGVkU3JjUmVjdC5zY2FsZSh4U2NhbGUs
IHlTY2FsZSk7CiAKLSAgICB1bnNpZ25lZCBnZW5lcmF0b3JIYXNoID0gbV9ncmFkaWVudC0+aGFz
aCgpOworICAgIHNpemVfdCBnZW5lcmF0b3JTdG9wc1NpemUgPSBtX2dyYWRpZW50LT5zdG9wcygp
LnNpemUoKTsKIAotICAgIGlmICghbV9jYWNoZWRJbWFnZSB8fCBtX2NhY2hlZEdlbmVyYXRvckhh
c2ggIT0gZ2VuZXJhdG9ySGFzaCB8fCBtX2NhY2hlZEFkanVzdGVkU2l6ZSAhPSBhZGp1c3RlZFNp
emUgfHwgIWFyZUVzc2VudGlhbGx5RXF1YWwoZGVzdENvbnRleHQuc2NhbGVGYWN0b3IoKSwgbV9j
YWNoZWRTY2FsZUZhY3RvcikpIHsKKyAgICBpZiAoIW1fY2FjaGVkSW1hZ2UgfHwgbV9jYWNoZWRH
ZW5lcmF0b3JTdG9wc1NpemUgIT0gZ2VuZXJhdG9yU3RvcHNTaXplIHx8IG1fY2FjaGVkQWRqdXN0
ZWRTaXplICE9IGFkanVzdGVkU2l6ZSB8fCAhYXJlRXNzZW50aWFsbHlFcXVhbChkZXN0Q29udGV4
dC5zY2FsZUZhY3RvcigpLCBtX2NhY2hlZFNjYWxlRmFjdG9yKSkgewogICAgICAgICBhdXRvIGlt
YWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoYWRqdXN0ZWRT
aXplLCBDb2xvclNwYWNlOjpTUkdCLCBkZXN0Q29udGV4dCk7CiAgICAgICAgIGlmICghaW1hZ2VC
dWZmZXIpCiAgICAgICAgICAgICByZXR1cm47CkBAIC03OSw3ICs3OSw3IEBAIHZvaWQgR3JhZGll
bnRJbWFnZTo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3Qg
RmxvYXRSZWN0JiBkCiAgICAgICAgIC8vIEZpbGwgd2l0aCB0aGUgZ2VuZXJhdGVkIGltYWdlLgog
ICAgICAgICBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpLmZpbGxSZWN0KEZsb2F0UmVjdChGbG9hdFBv
aW50KCksIGFkanVzdGVkU2l6ZSksIG1fZ3JhZGllbnQuZ2V0KCkpOwogCi0gICAgICAgIG1fY2Fj
aGVkR2VuZXJhdG9ySGFzaCA9IGdlbmVyYXRvckhhc2g7CisgICAgICAgIG1fY2FjaGVkR2VuZXJh
dG9yU3RvcHNTaXplID0gZ2VuZXJhdG9yU3RvcHNTaXplOwogICAgICAgICBtX2NhY2hlZEFkanVz
dGVkU2l6ZSA9IGFkanVzdGVkU2l6ZTsKICAgICAgICAgbV9jYWNoZWRTY2FsZUZhY3RvciA9IGRl
c3RDb250ZXh0LnNjYWxlRmFjdG9yKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuaAppbmRleCAwY2MxODQzOWMxNDdmOTM0ZGRlMTkzMDc0
OGRhNzBjM2ZiMTc1YTdiLi5lN2JlNzI4ZWNjYTJhYzMyNGM5NDliNjEwNTBkZWYxNTY1OWMxNWEz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudElt
YWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFn
ZS5oCkBAIC01NCw3ICs1NCw3IEBAIHByaXZhdGU6CiAgICAgUmVmPEdyYWRpZW50PiBtX2dyYWRp
ZW50OwogICAgIFJlZlB0cjxJbWFnZT4gbV9jYWNoZWRJbWFnZTsKICAgICBGbG9hdFNpemUgbV9j
YWNoZWRBZGp1c3RlZFNpemU7Ci0gICAgdW5zaWduZWQgbV9jYWNoZWRHZW5lcmF0b3JIYXNoOwor
ICAgIHNpemVfdCBtX2NhY2hlZEdlbmVyYXRvclN0b3BzU2l6ZSB7IDAgfTsKICAgICBGbG9hdFNp
emUgbV9jYWNoZWRTY2FsZUZhY3RvcjsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCmluZGV4IDc4NDQ3N2EyZWZhYTYy
MzkxYTZmODBjMGQ5NDFkMjg4NDg2YTUzZjMuLmM0MGJhZTNlMjM5Mjc2NTEyMzdjMDMyMzM3OWVk
ZjM2NjNjNGQ0YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0LmNwcApAQCAtMjExLDEzICsyMTEsMTMgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHRTdGF0ZUNoYW5nZTo6YWNjdW11bGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0
ZSYgc3RhdGUsIEcKIHZvaWQgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2U6OmFwcGx5KEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKIHsKICAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250
YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlR3JhZGllbnRDaGFuZ2UpKQotICAgICAg
ICBjb250ZXh0LnNldFN0cm9rZUdyYWRpZW50KCptX3N0YXRlLnN0cm9rZUdyYWRpZW50KTsKKyAg
ICAgICAgY29udGV4dC5zZXRTdHJva2VHcmFkaWVudCgqbV9zdGF0ZS5zdHJva2VHcmFkaWVudCwg
bV9zdGF0ZS5zdHJva2VHcmFkaWVudFBhaW50aW5nRGF0YSk7CiAKICAgICBpZiAobV9jaGFuZ2VG
bGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlUGF0dGVybkNoYW5nZSkp
CiAgICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlUGF0dGVybigqbV9zdGF0ZS5zdHJva2VQYXR0ZXJu
KTsKIAogICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRl
OjpGaWxsR3JhZGllbnRDaGFuZ2UpKQotICAgICAgICBjb250ZXh0LnNldEZpbGxHcmFkaWVudCgq
bV9zdGF0ZS5maWxsR3JhZGllbnQpOworICAgICAgICBjb250ZXh0LnNldEZpbGxHcmFkaWVudCgq
bV9zdGF0ZS5maWxsR3JhZGllbnQsIG1fc3RhdGUuZmlsbEdyYWRpZW50UGFpbnRpbmdEYXRhKTsK
IAogICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpG
aWxsUGF0dGVybkNoYW5nZSkpCiAgICAgICAgIGNvbnRleHQuc2V0RmlsbFBhdHRlcm4oKm1fc3Rh
dGUuZmlsbFBhdHRlcm4pOwpAQCAtNjIwLDEwICs2MjAsMTEgQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHQ6OnNldEZpbGxQYXR0ZXJuKFJlZjxQYXR0ZXJuPiYmIHBhdHRlcm4pCiAgICAgICAgIG1faW1w
bC0+dXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxQYXR0ZXJu
Q2hhbmdlKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFN0cm9rZUdyYWRpZW50KFJl
ZjxHcmFkaWVudD4mJiBncmFkaWVudCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRTdHJva2VH
cmFkaWVudChSZWY8R3JhZGllbnQ+JiYgZ3JhZGllbnQsIGNvbnN0IEdyYWRpZW50OjpQYWludGlu
Z0RhdGEmIHBhaW50aW5nRGF0YSkKIHsKICAgICBtX3N0YXRlLnN0cm9rZUNvbG9yID0geyB9Owog
ICAgIG1fc3RhdGUuc3Ryb2tlR3JhZGllbnQgPSBXVEZNb3ZlKGdyYWRpZW50KTsKKyAgICBtX3N0
YXRlLnN0cm9rZUdyYWRpZW50UGFpbnRpbmdEYXRhID0gcGFpbnRpbmdEYXRhOwogICAgIG1fc3Rh
dGUuc3Ryb2tlUGF0dGVybiA9IG51bGxwdHI7CiAgICAgaWYgKG1faW1wbCkKICAgICAgICAgbV9p
bXBsLT51cGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlR3Jh
ZGllbnRDaGFuZ2UpOwpAQCAtNjM2LDEwICs2MzcsMTEgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6
OnNldEZpbGxSdWxlKFdpbmRSdWxlIGZpbGxSdWxlKQogICAgICAgICBtX2ltcGwtPnVwZGF0ZVN0
YXRlKG1fc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsUnVsZUNoYW5nZSk7CiB9CiAK
LXZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRGaWxsR3JhZGllbnQoUmVmPEdyYWRpZW50PiYmIGdy
YWRpZW50KQordm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldEZpbGxHcmFkaWVudChSZWY8R3JhZGll
bnQ+JiYgZ3JhZGllbnQsIGNvbnN0IEdyYWRpZW50OjpQYWludGluZ0RhdGEmIHBhaW50aW5nRGF0
YSkKIHsKICAgICBtX3N0YXRlLmZpbGxDb2xvciA9IHsgfTsKICAgICBtX3N0YXRlLmZpbGxHcmFk
aWVudCA9IFdURk1vdmUoZ3JhZGllbnQpOworICAgIG1fc3RhdGUuZmlsbEdyYWRpZW50UGFpbnRp
bmdEYXRhID0gcGFpbnRpbmdEYXRhOwogICAgIG1fc3RhdGUuZmlsbFBhdHRlcm4gPSBudWxscHRy
OwogICAgIGlmIChtX2ltcGwpCiAgICAgICAgIG1faW1wbC0+dXBkYXRlU3RhdGUobV9zdGF0ZSwg
R3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxHcmFkaWVudENoYW5nZSk7IC8vIEZJWE1FOiBhbHNv
IGZpbGwgcGF0dGVybj8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0LmgKaW5kZXggMjVjNjY0NGYxMjk3ZmM0N2MzODcyZWI1ZDU4ZWIyZjBk
ZTQxYjU1Ni4uMzIwODNkMWZjN2QyMmRjYjYyZDYzMjRjZTNmODhhN2U5YzExOGU0ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgK
QEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJEYXNoQXJyYXkuaCIKICNpbmNsdWRlICJGbG9h
dFJlY3QuaCIKICNpbmNsdWRlICJGb250Q2FzY2FkZS5oIgorI2luY2x1ZGUgIkdyYWRpZW50Lmgi
CiAjaW5jbHVkZSAiR3JhcGhpY3NUeXBlcy5oIgogI2luY2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVk
ZSAiSW1hZ2VPcmllbnRhdGlvbi5oIgpAQCAtODcsNyArODgsNiBAQCBjbGFzcyBHbHlwaEJ1ZmZl
cjsKIAogY2xhc3MgQWZmaW5lVHJhbnNmb3JtOwogY2xhc3MgRmxvYXRSb3VuZGVkUmVjdDsKLWNs
YXNzIEdyYWRpZW50OwogY2xhc3MgR3JhcGhpY3NDb250ZXh0SW1wbDsKIGNsYXNzIEdyYXBoaWNz
Q29udGV4dFBsYXRmb3JtUHJpdmF0ZTsKIGNsYXNzIEltYWdlQnVmZmVyOwpAQCAtMjEyLDYgKzIx
Miw5IEBAIHN0cnVjdCBHcmFwaGljc0NvbnRleHRTdGF0ZSB7CiAgICAgQ29sb3IgZmlsbENvbG9y
IHsgQ29sb3I6OmJsYWNrIH07CiAgICAgQ29sb3Igc2hhZG93Q29sb3I7CiAKKyAgICBHcmFkaWVu
dDo6UGFpbnRpbmdEYXRhIHN0cm9rZUdyYWRpZW50UGFpbnRpbmdEYXRhOworICAgIEdyYWRpZW50
OjpQYWludGluZ0RhdGEgZmlsbEdyYWRpZW50UGFpbnRpbmdEYXRhOworICAgIAogICAgIFN0cm9r
ZVN0eWxlIHN0cm9rZVN0eWxlIHsgU29saWRTdHJva2UgfTsKICAgICBXaW5kUnVsZSBmaWxsUnVs
ZSB7IFdpbmRSdWxlOjpOb25aZXJvIH07CiAKQEAgLTMwMyw3ICszMDYsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzZXRTdHJva2VQYXR0ZXJuKFJlZjxQYXR0ZXJuPiYmKTsKICAgICBQYXR0ZXJuKiBz
dHJva2VQYXR0ZXJuKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5zdHJva2VQYXR0ZXJuLmdldCgp
OyB9CiAKLSAgICB2b2lkIHNldFN0cm9rZUdyYWRpZW50KFJlZjxHcmFkaWVudD4mJik7CisgICAg
dm9pZCBzZXRTdHJva2VHcmFkaWVudChSZWY8R3JhZGllbnQ+JiYsIGNvbnN0IEdyYWRpZW50OjpQ
YWludGluZ0RhdGEmID0geyB9KTsKICAgICBHcmFkaWVudCogc3Ryb2tlR3JhZGllbnQoKSBjb25z
dCB7IHJldHVybiBtX3N0YXRlLnN0cm9rZUdyYWRpZW50LmdldCgpOyB9CiAKICAgICB2b2lkIHNl
dEZpbGxSdWxlKFdpbmRSdWxlKTsKQEAgLTMxNSw3ICszMTgsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzZXRGaWxsUGF0dGVybihSZWY8UGF0dGVybj4mJik7CiAgICAgUGF0dGVybiogZmlsbFBhdHRl
cm4oKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLmZpbGxQYXR0ZXJuLmdldCgpOyB9CiAKLSAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHNldEZpbGxHcmFkaWVudChSZWY8R3JhZGllbnQ+JiYpOworICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0RmlsbEdyYWRpZW50KFJlZjxHcmFkaWVudD4mJiwgY29u
c3QgR3JhZGllbnQ6OlBhaW50aW5nRGF0YSYgPSB7IH0pOwogICAgIEdyYWRpZW50KiBmaWxsR3Jh
ZGllbnQoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLmZpbGxHcmFkaWVudC5nZXQoKTsgfQogCiAg
ICAgdm9pZCBzZXRTaGFkb3dzSWdub3JlVHJhbnNmb3Jtcyhib29sKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvT3BlcmF0aW9ucy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb09wZXJhdGlvbnMu
Y3BwCmluZGV4IDk3NzEyOTBmNDM2MjA2ZWI4NTMwZjI1ODRlYjhlM2NmZDdhOWE1MTkuLjYyN2M3
NDg3NTA3ZmYwYjc2NTY0MmJjNTllMmM3NjI4NzgxMWIyOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvT3BlcmF0aW9ucy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmNw
cApAQCAtNTcyLDkgKzU3Miw5IEBAIEZpbGxTb3VyY2U6OkZpbGxTb3VyY2UoY29uc3QgR3JhcGhp
Y3NDb250ZXh0U3RhdGUmIHN0YXRlKQogICAgICAgICBwYXR0ZXJuLnJlcGVhdFggPSBzdGF0ZS5m
aWxsUGF0dGVybi0+cmVwZWF0WCgpOwogICAgICAgICBwYXR0ZXJuLnJlcGVhdFkgPSBzdGF0ZS5m
aWxsUGF0dGVybi0+cmVwZWF0WSgpOwogICAgIH0gZWxzZSBpZiAoc3RhdGUuZmlsbEdyYWRpZW50
KSB7Ci0gICAgICAgIGdyYWRpZW50LmJhc2UgPSBzdGF0ZS5maWxsR3JhZGllbnQtPmNyZWF0ZVBh
dHRlcm4oMSk7CisgICAgICAgIGdyYWRpZW50LmJhc2UgPSBzdGF0ZS5maWxsR3JhZGllbnQtPmNy
ZWF0ZVBhdHRlcm4oMSwgc3RhdGUuZmlsbEdyYWRpZW50UGFpbnRpbmdEYXRhLnNwcmVhZE1ldGhv
ZCk7CiAgICAgICAgIGlmIChzdGF0ZS5hbHBoYSAhPSAxKQotICAgICAgICAgICAgZ3JhZGllbnQu
YWxwaGFBZGp1c3RlZCA9IHN0YXRlLmZpbGxHcmFkaWVudC0+Y3JlYXRlUGF0dGVybihzdGF0ZS5h
bHBoYSk7CisgICAgICAgICAgICBncmFkaWVudC5hbHBoYUFkanVzdGVkID0gc3RhdGUuZmlsbEdy
YWRpZW50LT5jcmVhdGVQYXR0ZXJuKHN0YXRlLmFscGhhLCBzdGF0ZS5maWxsR3JhZGllbnRQYWlu
dGluZ0RhdGEuc3ByZWFkTWV0aG9kKTsKICAgICB9IGVsc2UKICAgICAgICAgY29sb3IgPSBzdGF0
ZS5maWxsQ29sb3I7CiB9CkBAIC01ODUsOSArNTg1LDkgQEAgU3Ryb2tlU291cmNlOjpTdHJva2VT
b3VyY2UoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlKQogICAgIGlmIChzdGF0ZS5z
dHJva2VQYXR0ZXJuKQogICAgICAgICBwYXR0ZXJuID0gYWRvcHRSZWYoc3RhdGUuc3Ryb2tlUGF0
dGVybi0+Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuKEFmZmluZVRyYW5zZm9ybSgpKSk7CiAgICAgZWxz
ZSBpZiAoc3RhdGUuc3Ryb2tlR3JhZGllbnQpIHsKLSAgICAgICAgZ3JhZGllbnQuYmFzZSA9IHN0
YXRlLnN0cm9rZUdyYWRpZW50LT5jcmVhdGVQYXR0ZXJuKDEpOworICAgICAgICBncmFkaWVudC5i
YXNlID0gc3RhdGUuc3Ryb2tlR3JhZGllbnQtPmNyZWF0ZVBhdHRlcm4oMSwgc3RhdGUuc3Ryb2tl
R3JhZGllbnRQYWludGluZ0RhdGEuc3ByZWFkTWV0aG9kKTsKICAgICAgICAgaWYgKHN0YXRlLmFs
cGhhICE9IDEpCi0gICAgICAgICAgICBncmFkaWVudC5hbHBoYUFkanVzdGVkID0gc3RhdGUuc3Ry
b2tlR3JhZGllbnQtPmNyZWF0ZVBhdHRlcm4oc3RhdGUuYWxwaGEpOworICAgICAgICAgICAgZ3Jh
ZGllbnQuYWxwaGFBZGp1c3RlZCA9IHN0YXRlLnN0cm9rZUdyYWRpZW50LT5jcmVhdGVQYXR0ZXJu
KHN0YXRlLmFscGhhLCBzdGF0ZS5zdHJva2VHcmFkaWVudFBhaW50aW5nRGF0YS5zcHJlYWRNZXRo
b2QpOwogICAgIH0gZWxzZQogICAgICAgICBjb2xvciA9IHN0YXRlLnN0cm9rZUNvbG9yOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhZGll
bnRDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFk
aWVudENhaXJvLmNwcAppbmRleCBlYmI2NTQwMjMwZTMzZWI5ZTIyNjJmNmI1YThhZTczNzRkYWEx
MmRiLi4zNjBmNzU1NjFmM2E5ODMyNWNjZTQ0OGFlNGFjZjAwZjIzMDk3MDUxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFkaWVudENhaXJvLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFkaWVudENh
aXJvLmNwcApAQCAtMTU4LDcgKzE1OCw3IEBAIHN0YXRpYyBSZWZQdHI8Y2Fpcm9fcGF0dGVybl90
PiBjcmVhdGVDb25pYyhmbG9hdCB4bywgZmxvYXQgeW8sIGZsb2F0IHIsIGZsb2F0IGFuCiAgICAg
cmV0dXJuIGdyYWRpZW50OwogfQogCi1SZWZQdHI8Y2Fpcm9fcGF0dGVybl90PiBHcmFkaWVudDo6
Y3JlYXRlUGF0dGVybihmbG9hdCBnbG9iYWxBbHBoYSkKK1JlZlB0cjxjYWlyb19wYXR0ZXJuX3Q+
IEdyYWRpZW50OjpjcmVhdGVQYXR0ZXJuKGZsb2F0IGdsb2JhbEFscGhhLCBHcmFkaWVudFNwcmVh
ZE1ldGhvZCBzcHJlYWRNZXRob2QpCiB7CiAgICAgYXV0byBncmFkaWVudCA9IFdURjo6c3dpdGNo
T24obV9kYXRhLAogICAgICAgICBbJl0gKGNvbnN0IExpbmVhckRhdGEmIGRhdGEpIHsKQEAgLTE4
Myw3ICsxODMsNyBAQCBSZWZQdHI8Y2Fpcm9fcGF0dGVybl90PiBHcmFkaWVudDo6Y3JlYXRlUGF0
dGVybihmbG9hdCBnbG9iYWxBbHBoYSkKICAgICAgICAgfQogICAgICk7CiAKLSAgICBzd2l0Y2gg
KG1fc3ByZWFkTWV0aG9kKSB7CisgICAgc3dpdGNoIChzcHJlYWRNZXRob2QpIHsKICAgICBjYXNl
IEdyYWRpZW50U3ByZWFkTWV0aG9kOjpQYWQ6CiAgICAgICAgIGNhaXJvX3BhdHRlcm5fc2V0X2V4
dGVuZChncmFkaWVudC5nZXQoKSwgQ0FJUk9fRVhURU5EX1BBRCk7CiAgICAgICAgIGJyZWFrOwpA
QCAtMjA0LDcgKzIwNCw3IEBAIFJlZlB0cjxjYWlyb19wYXR0ZXJuX3Q+IEdyYWRpZW50OjpjcmVh
dGVQYXR0ZXJuKGZsb2F0IGdsb2JhbEFscGhhKQogCiB2b2lkIEdyYWRpZW50OjpmaWxsKEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0KQogewotICAgIGF1dG8g
cGF0dGVybiA9IGNyZWF0ZVBhdHRlcm4oMS4wKTsKKyAgICBhdXRvIHBhdHRlcm4gPSBjcmVhdGVQ
YXR0ZXJuKDEuMCwgY29udGV4dC5zdGF0ZSgpLmZpbGxHcmFkaWVudFBhaW50aW5nRGF0YS5zcHJl
YWRNZXRob2QpOwogICAgIGlmICghcGF0dGVybikKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRl
eHRJbXBsQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
R3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmNwcAppbmRleCAxNDZhNWVjYWQ1MDUxNDVjOWY4OTUw
NmVjOGRiMDU3NzIzNmViM2Y3Li5hYzkxOGIwZjhiYTk2ZTFmYjE2ZDkwZGU3NmEzMjQ2Y2NiZWJh
N2ZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9H
cmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5jcHAKQEAgLTE1NCw3ICsx
NTQsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6ZmlsbFJlY3QoY29uc3QgRmxv
YXRSZWN0JiByZWN0LCBjb25zdCBDb2xvciYgY29sbwogCiB2b2lkIEdyYXBoaWNzQ29udGV4dElt
cGxDYWlybzo6ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBHcmFkaWVudCYgZ3JhZGll
bnQpCiB7Ci0gICAgYXV0byBwYXR0ZXJuID0gZ3JhZGllbnQuY3JlYXRlUGF0dGVybigxLjApOwor
ICAgIGF1dG8mIHN0YXRlID0gZ3JhcGhpY3NDb250ZXh0KCkuc3RhdGUoKTsKKyAgICBhdXRvIHBh
dHRlcm4gPSBncmFkaWVudC5jcmVhdGVQYXR0ZXJuKDEuMCwgc3RhdGUuZmlsbEdyYWRpZW50UGFp
bnRpbmdEYXRhLnNwcmVhZE1ldGhvZCk7CiAgICAgaWYgKCFwYXR0ZXJuKQogICAgICAgICByZXR1
cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dy
YWRpZW50Q0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhZGll
bnRDRy5jcHAKaW5kZXggODEwOTJiOGU3OWY1M2ZiYjgzYzhmNWE2YTc3MjEyZjA0NTM1YjY1Ny4u
YzhhN2U3MzEwZTA3ZmI4YmEyMDg0MzU4MjUzNzIxZWU2NDlmNmY5NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhZGllbnRDRy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhZGllbnRDRy5jcHAKQEAgLTkxLDEw
ICs5MSwxMCBAQCB2b2lkIEdyYWRpZW50OjpmaWxsKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgRmxvYXRSZWN0JiByZWN0KQogCiB2b2lkIEdyYWRpZW50OjpwYWludChHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQpCiB7Ci0gICAgcGFpbnQoY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSk7
CisgICAgcGFpbnQoY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSwgY29udGV4dC5zdGF0ZSgpLmZp
bGxHcmFkaWVudFBhaW50aW5nRGF0YS5zcHJlYWRNZXRob2QpOwogfQogCi12b2lkIEdyYWRpZW50
OjpwYWludChDR0NvbnRleHRSZWYgcGxhdGZvcm1Db250ZXh0KQordm9pZCBHcmFkaWVudDo6cGFp
bnQoQ0dDb250ZXh0UmVmIHBsYXRmb3JtQ29udGV4dCwgR3JhZGllbnRTcHJlYWRNZXRob2Qgc3By
ZWFkTWV0aG9kKQogewogICAgIENHR3JhZGllbnREcmF3aW5nT3B0aW9ucyBleHRlbmRPcHRpb25z
ID0ga0NHR3JhZGllbnREcmF3c0JlZm9yZVN0YXJ0TG9jYXRpb24gfCBrQ0dHcmFkaWVudERyYXdz
QWZ0ZXJFbmRMb2NhdGlvbjsKIApAQCAtMTAzLDcgKzEwMyw3IEBAIHZvaWQgR3JhZGllbnQ6OnBh
aW50KENHQ29udGV4dFJlZiBwbGF0Zm9ybUNvbnRleHQpCiAKICAgICBXVEY6OnN3aXRjaE9uKG1f
ZGF0YSwKICAgICAgICAgWyZdIChjb25zdCBMaW5lYXJEYXRhJiBkYXRhKSB7Ci0gICAgICAgICAg
ICBzd2l0Y2ggKG1fc3ByZWFkTWV0aG9kKSB7CisgICAgICAgICAgICBzd2l0Y2ggKHNwcmVhZE1l
dGhvZCkgewogICAgICAgICAgICAgY2FzZSBHcmFkaWVudFNwcmVhZE1ldGhvZDo6UmVwZWF0Ogog
ICAgICAgICAgICAgY2FzZSBHcmFkaWVudFNwcmVhZE1ldGhvZDo6UmVmbGVjdDogewogICAgICAg
ICAgICAgICAgIENHQ29udGV4dFN0YXRlU2F2ZXIgc2F2ZVN0YXRlKHBsYXRmb3JtQ29udGV4dCk7
CkBAIC0xMjgsNyArMTI4LDcgQEAgdm9pZCBHcmFkaWVudDo6cGFpbnQoQ0dDb250ZXh0UmVmIHBs
YXRmb3JtQ29udGV4dCkKIAogICAgICAgICAgICAgICAgICAgICBDR0Zsb2F0IGdyYWRpZW50U3Rh
cnQgPSBwb2ludDAueCgpOwogICAgICAgICAgICAgICAgICAgICBDR0Zsb2F0IGdyYWRpZW50RW5k
ID0gcG9pbnQxLngoKTsKLSAgICAgICAgICAgICAgICAgICAgYm9vbCBmbGlwID0gbV9zcHJlYWRN
ZXRob2QgPT0gR3JhZGllbnRTcHJlYWRNZXRob2Q6OlJlZmxlY3Q7CisgICAgICAgICAgICAgICAg
ICAgIGJvb2wgZmxpcCA9IHNwcmVhZE1ldGhvZCA9PSBHcmFkaWVudFNwcmVhZE1ldGhvZDo6UmVm
bGVjdDsKIAogICAgICAgICAgICAgICAgICAgICAvLyBGaW5kIGZpcnN0IGdyYWRpZW50IHBvc2l0
aW9uIHRvIHRoZSBsZWZ0IG9mIHRoZSBib3VuZGluZyBib3gKICAgICAgICAgICAgICAgICAgICAg
aW50IG4gPSBDR0Zsb29yKChib3VuZGluZ0JveC5vcmlnaW4ueCAtIGdyYWRpZW50U3RhcnQpIC8g
d2lkdGgpOwpAQCAtMTQ0LDcgKzE0NCw3IEBAIHZvaWQgR3JhZGllbnQ6OnBhaW50KENHQ29udGV4
dFJlZiBwbGF0Zm9ybUNvbnRleHQpCiAKICAgICAgICAgICAgICAgICAgICAgICAgIENHQ29udGV4
dERyYXdMaW5lYXJHcmFkaWVudChwbGF0Zm9ybUNvbnRleHQsIG1fZ3JhZGllbnQuZ2V0KCksIGxl
ZnQsIHJpZ2h0LCBleHRlbmRPcHRpb25zKTsKIAotICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KG1fc3ByZWFkTWV0aG9kID09IEdyYWRpZW50U3ByZWFkTWV0aG9kOjpSZWZsZWN0KQorICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKHNwcmVhZE1ldGhvZCA9PSBHcmFkaWVudFNwcmVhZE1ldGhv
ZDo6UmVmbGVjdCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGlwID0gIWZsaXA7CiAg
ICAgICAgICAgICAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCmluZGV4IDg4MjRjNzI4NDNl
MjcyNzRmZjRhMzg4YzA1Y2Q1MzE5MmU2M2E5MGIuLjc0NzI1N2JkODllNDQyMzE1MDA1YmRmMTg0
MTVhNjA5ZTMwNDk1ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKQEAgLTc0OSwyMSArNzQ5LDIxIEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUGF0aChjb25zdCBQYXRoJiBwYXRoKQogICAgICAg
ICAgICAgQ0dDb250ZXh0VHJhbnNsYXRlQ1RNKGxheWVyQ29udGV4dCwgLXJlY3QueCgpLCAtcmVj
dC55KCkpOwogICAgICAgICAgICAgQ0dDb250ZXh0QmVnaW5QYXRoKGxheWVyQ29udGV4dCk7CiAg
ICAgICAgICAgICBDR0NvbnRleHRBZGRQYXRoKGxheWVyQ29udGV4dCwgcGF0aC5wbGF0Zm9ybVBh
dGgoKSk7Ci0gICAgICAgICAgICBDR0NvbnRleHRDb25jYXRDVE0obGF5ZXJDb250ZXh0LCBtX3N0
YXRlLmZpbGxHcmFkaWVudC0+Z3JhZGllbnRTcGFjZVRyYW5zZm9ybSgpKTsKKyAgICAgICAgICAg
IENHQ29udGV4dENvbmNhdENUTShsYXllckNvbnRleHQsIG1fc3RhdGUuZmlsbEdyYWRpZW50UGFp
bnRpbmdEYXRhLnNwYWNlVHJhbnNmb3JtKTsKIAogICAgICAgICAgICAgaWYgKGZpbGxSdWxlKCkg
PT0gV2luZFJ1bGU6OkV2ZW5PZGQpCiAgICAgICAgICAgICAgICAgQ0dDb250ZXh0RU9DbGlwKGxh
eWVyQ29udGV4dCk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgQ0dDb250ZXh0
Q2xpcChsYXllckNvbnRleHQpOwogCi0gICAgICAgICAgICBtX3N0YXRlLmZpbGxHcmFkaWVudC0+
cGFpbnQobGF5ZXJDb250ZXh0KTsKKyAgICAgICAgICAgIG1fc3RhdGUuZmlsbEdyYWRpZW50LT5w
YWludChsYXllckNvbnRleHQsIG1fc3RhdGUuZmlsbEdyYWRpZW50UGFpbnRpbmdEYXRhLnNwcmVh
ZE1ldGhvZCk7CiAgICAgICAgICAgICBDR0NvbnRleHREcmF3TGF5ZXJJblJlY3QoY29udGV4dCwg
cmVjdCwgbGF5ZXIpOwogICAgICAgICAgICAgQ0dMYXllclJlbGVhc2UobGF5ZXIpOwogICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgQ0dDb250ZXh0QmVnaW5QYXRoKGNvbnRleHQpOwogICAg
ICAgICAgICAgQ0dDb250ZXh0QWRkUGF0aChjb250ZXh0LCBwYXRoLnBsYXRmb3JtUGF0aCgpKTsK
ICAgICAgICAgICAgIENHQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKLSAg
ICAgICAgICAgIENHQ29udGV4dENvbmNhdENUTShjb250ZXh0LCBtX3N0YXRlLmZpbGxHcmFkaWVu
dC0+Z3JhZGllbnRTcGFjZVRyYW5zZm9ybSgpKTsKKyAgICAgICAgICAgIENHQ29udGV4dENvbmNh
dENUTShjb250ZXh0LCBtX3N0YXRlLmZpbGxHcmFkaWVudFBhaW50aW5nRGF0YS5zcGFjZVRyYW5z
Zm9ybSk7CiAKICAgICAgICAgICAgIGlmIChmaWxsUnVsZSgpID09IFdpbmRSdWxlOjpFdmVuT2Rk
KQogICAgICAgICAgICAgICAgIENHQ29udGV4dEVPQ2xpcChjb250ZXh0KTsKQEAgLTgyNyw4ICs4
MjcsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c3Ryb2tlUGF0aChjb25zdCBQYXRoJiBwYXRo
KQogICAgICAgICAgICAgQ0dDb250ZXh0QWRkUGF0aChsYXllckNvbnRleHQsIHBhdGgucGxhdGZv
cm1QYXRoKCkpOwogICAgICAgICAgICAgQ0dDb250ZXh0UmVwbGFjZVBhdGhXaXRoU3Ryb2tlZFBh
dGgobGF5ZXJDb250ZXh0KTsKICAgICAgICAgICAgIENHQ29udGV4dENsaXAobGF5ZXJDb250ZXh0
KTsKLSAgICAgICAgICAgIENHQ29udGV4dENvbmNhdENUTShsYXllckNvbnRleHQsIG1fc3RhdGUu
c3Ryb2tlR3JhZGllbnQtPmdyYWRpZW50U3BhY2VUcmFuc2Zvcm0oKSk7Ci0gICAgICAgICAgICBt
X3N0YXRlLnN0cm9rZUdyYWRpZW50LT5wYWludChsYXllckNvbnRleHQpOworICAgICAgICAgICAg
Q0dDb250ZXh0Q29uY2F0Q1RNKGxheWVyQ29udGV4dCwgbV9zdGF0ZS5zdHJva2VHcmFkaWVudFBh
aW50aW5nRGF0YS5zcGFjZVRyYW5zZm9ybSk7CisgICAgICAgICAgICBtX3N0YXRlLnN0cm9rZUdy
YWRpZW50LT5wYWludChsYXllckNvbnRleHQsIG1fc3RhdGUuc3Ryb2tlR3JhZGllbnRQYWludGlu
Z0RhdGEuc3ByZWFkTWV0aG9kKTsKIAogICAgICAgICAgICAgZmxvYXQgZGVzdGluYXRpb25YID0g
cm91bmRmKHJlY3QueCgpIC0gbGluZVdpZHRoKTsKICAgICAgICAgICAgIGZsb2F0IGRlc3RpbmF0
aW9uWSA9IHJvdW5kZihyZWN0LnkoKSAtIGxpbmVXaWR0aCk7CkBAIC04NDAsNyArODQwLDcgQEAg
dm9pZCBHcmFwaGljc0NvbnRleHQ6OnN0cm9rZVBhdGgoY29uc3QgUGF0aCYgcGF0aCkKICAgICAg
ICAgICAgIENHQ29udGV4dEFkZFBhdGgoY29udGV4dCwgcGF0aC5wbGF0Zm9ybVBhdGgoKSk7CiAg
ICAgICAgICAgICBDR0NvbnRleHRSZXBsYWNlUGF0aFdpdGhTdHJva2VkUGF0aChjb250ZXh0KTsK
ICAgICAgICAgICAgIENHQ29udGV4dENsaXAoY29udGV4dCk7Ci0gICAgICAgICAgICBDR0NvbnRl
eHRDb25jYXRDVE0oY29udGV4dCwgbV9zdGF0ZS5zdHJva2VHcmFkaWVudC0+Z3JhZGllbnRTcGFj
ZVRyYW5zZm9ybSgpKTsKKyAgICAgICAgICAgIENHQ29udGV4dENvbmNhdENUTShjb250ZXh0LCBt
X3N0YXRlLnN0cm9rZUdyYWRpZW50UGFpbnRpbmdEYXRhLnNwYWNlVHJhbnNmb3JtKTsKICAgICAg
ICAgICAgIG1fc3RhdGUuc3Ryb2tlR3JhZGllbnQtPnBhaW50KCp0aGlzKTsKICAgICAgICAgfQog
ICAgICAgICByZXR1cm47CkBAIC04OTIsMTMgKzg5MiwxMyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dDo6ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogICAgICAgICAgICAgQ0dDb250ZXh0
QWRkUmVjdChsYXllckNvbnRleHQsIHJlY3QpOwogICAgICAgICAgICAgQ0dDb250ZXh0Q2xpcChs
YXllckNvbnRleHQpOwogCi0gICAgICAgICAgICBDR0NvbnRleHRDb25jYXRDVE0obGF5ZXJDb250
ZXh0LCBtX3N0YXRlLmZpbGxHcmFkaWVudC0+Z3JhZGllbnRTcGFjZVRyYW5zZm9ybSgpKTsKLSAg
ICAgICAgICAgIG1fc3RhdGUuZmlsbEdyYWRpZW50LT5wYWludChsYXllckNvbnRleHQpOworICAg
ICAgICAgICAgQ0dDb250ZXh0Q29uY2F0Q1RNKGxheWVyQ29udGV4dCwgbV9zdGF0ZS5maWxsR3Jh
ZGllbnRQYWludGluZ0RhdGEuc3BhY2VUcmFuc2Zvcm0pOworICAgICAgICAgICAgbV9zdGF0ZS5m
aWxsR3JhZGllbnQtPnBhaW50KGxheWVyQ29udGV4dCwgbV9zdGF0ZS5maWxsR3JhZGllbnRQYWlu
dGluZ0RhdGEuc3ByZWFkTWV0aG9kKTsKICAgICAgICAgICAgIENHQ29udGV4dERyYXdMYXllcklu
UmVjdChjb250ZXh0LCByZWN0LCBsYXllcik7CiAgICAgICAgICAgICBDR0xheWVyUmVsZWFzZShs
YXllcik7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBDR0NvbnRleHRDbGlwVG9SZWN0
KGNvbnRleHQsIHJlY3QpOwotICAgICAgICAgICAgQ0dDb250ZXh0Q29uY2F0Q1RNKGNvbnRleHQs
IG1fc3RhdGUuZmlsbEdyYWRpZW50LT5ncmFkaWVudFNwYWNlVHJhbnNmb3JtKCkpOworICAgICAg
ICAgICAgQ0dDb250ZXh0Q29uY2F0Q1RNKGNvbnRleHQsIG1fc3RhdGUuZmlsbEdyYWRpZW50UGFp
bnRpbmdEYXRhLnNwYWNlVHJhbnNmb3JtKTsKICAgICAgICAgICAgIG1fc3RhdGUuZmlsbEdyYWRp
ZW50LT5wYWludCgqdGhpcyk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuOwpAQCAtMTMxMCw4
ICsxMzEwLDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnN0cm9rZVJlY3QoY29uc3QgRmxvYXRS
ZWN0JiByZWN0LCBmbG9hdCBsaW5lV2lkdGgpCiAgICAgICAgICAgICBDR0NvbnRleHRBZGRSZWN0
KGxheWVyQ29udGV4dCwgcmVjdCk7CiAgICAgICAgICAgICBDR0NvbnRleHRSZXBsYWNlUGF0aFdp
dGhTdHJva2VkUGF0aChsYXllckNvbnRleHQpOwogICAgICAgICAgICAgQ0dDb250ZXh0Q2xpcChs
YXllckNvbnRleHQpOwotICAgICAgICAgICAgQ0dDb250ZXh0Q29uY2F0Q1RNKGxheWVyQ29udGV4
dCwgbV9zdGF0ZS5zdHJva2VHcmFkaWVudC0+Z3JhZGllbnRTcGFjZVRyYW5zZm9ybSgpKTsKLSAg
ICAgICAgICAgIG1fc3RhdGUuc3Ryb2tlR3JhZGllbnQtPnBhaW50KGxheWVyQ29udGV4dCk7Cisg
ICAgICAgICAgICBDR0NvbnRleHRDb25jYXRDVE0obGF5ZXJDb250ZXh0LCBtX3N0YXRlLnN0cm9r
ZUdyYWRpZW50UGFpbnRpbmdEYXRhLnNwYWNlVHJhbnNmb3JtKTsKKyAgICAgICAgICAgIG1fc3Rh
dGUuc3Ryb2tlR3JhZGllbnQtPnBhaW50KGxheWVyQ29udGV4dCwgbV9zdGF0ZS5zdHJva2VHcmFk
aWVudFBhaW50aW5nRGF0YS5zcHJlYWRNZXRob2QpOwogCiAgICAgICAgICAgICBjb25zdCBmbG9h
dCBkZXN0aW5hdGlvblggPSByb3VuZGYocmVjdC54KCkgLSBsaW5lV2lkdGgpOwogICAgICAgICAg
ICAgY29uc3QgZmxvYXQgZGVzdGluYXRpb25ZID0gcm91bmRmKHJlY3QueSgpIC0gbGluZVdpZHRo
KTsKQEAgLTEzMjMsNyArMTMyMyw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzdHJva2VSZWN0
KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgZmxvYXQgbGluZVdpZHRoKQogICAgICAgICAgICAgQ0dD
b250ZXh0QWRkUmVjdChjb250ZXh0LCByZWN0KTsKICAgICAgICAgICAgIENHQ29udGV4dFJlcGxh
Y2VQYXRoV2l0aFN0cm9rZWRQYXRoKGNvbnRleHQpOwogICAgICAgICAgICAgQ0dDb250ZXh0Q2xp
cChjb250ZXh0KTsKLSAgICAgICAgICAgIENHQ29udGV4dENvbmNhdENUTShjb250ZXh0LCBtX3N0
YXRlLnN0cm9rZUdyYWRpZW50LT5ncmFkaWVudFNwYWNlVHJhbnNmb3JtKCkpOworICAgICAgICAg
ICAgQ0dDb250ZXh0Q29uY2F0Q1RNKGNvbnRleHQsIG1fc3RhdGUuc3Ryb2tlR3JhZGllbnRQYWlu
dGluZ0RhdGEuc3BhY2VUcmFuc2Zvcm0pOwogICAgICAgICAgICAgbV9zdGF0ZS5zdHJva2VHcmFk
aWVudC0+cGFpbnQoKnRoaXMpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdERyYXdHbHlwaHNSZWNvcmRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd0dseXBoc1JlY29yZGVyLmgKaW5kZXggMmM3
ZjJhZGY1YTg5NGZiZDA4NTEzYjg4ZmViYmU4YTcwODdmNjllMS4uMWY4YTljMDY2NDMwMjQ4MmQx
OWNmNmNhOGZjZTQ1MWVhODMwY2NmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd0dseXBoc1JlY29yZGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0RHJhd0dseXBoc1JlY29yZGVyLmgKQEAgLTk4LDYgKzk4LDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgc3RydWN0IFN0eWxlIHsKICAgICAgICAgICAgIENvbG9yIGNvbG9yOwogICAgICAgICAg
ICAgUmVmUHRyPEdyYWRpZW50PiBncmFkaWVudDsKKyAgICAgICAgICAgIEdyYWRpZW50OjpQYWlu
dGluZ0RhdGEgZ3JhZGllbnRQYWludGluZ0RhdGE7CiAgICAgICAgICAgICBSZWZQdHI8UGF0dGVy
bj4gcGF0dGVybjsKICAgICAgICAgfTsKICAgICAgICAgU3R5bGUgZmlsbFN0eWxlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0RHJhd0dseXBoc1JlY29yZGVyQ29yZVRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd0dseXBoc1JlY29yZGVy
Q29yZVRleHQuY3BwCmluZGV4IGQwZmU1ZWJjZjU0ZGQ2ZTNjNTBhZmJlMWY3ZmFkZmU4Zjc5ODgw
YmYuLjNlNDJjZmMyMDI2ZTc3MGI5NzA4NGM0YmQ5Njk5ZThlNzY5ZWY4YjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dERyYXdHbHlwaHNSZWNvcmRlckNvcmVUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3R2x5cGhzUmVjb3JkZXJD
b3JlVGV4dC5jcHAKQEAgLTk4LDEwICs5OCwxMiBAQCB2b2lkIERyYXdHbHlwaHNSZWNvcmRlcjo6
cG9wdWxhdGVJbnRlcm5hbFN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBjb250ZQog
ewogICAgIG1fb3JpZ2luYWxTdGF0ZS5maWxsU3R5bGUuY29sb3IgPSBjb250ZXh0U3RhdGUuZmls
bENvbG9yOwogICAgIG1fb3JpZ2luYWxTdGF0ZS5maWxsU3R5bGUuZ3JhZGllbnQgPSBjb250ZXh0
U3RhdGUuZmlsbEdyYWRpZW50OworICAgIG1fb3JpZ2luYWxTdGF0ZS5maWxsU3R5bGUuZ3JhZGll
bnRQYWludGluZ0RhdGEgPSBjb250ZXh0U3RhdGUuZmlsbEdyYWRpZW50UGFpbnRpbmdEYXRhOwog
ICAgIG1fb3JpZ2luYWxTdGF0ZS5maWxsU3R5bGUucGF0dGVybiA9IGNvbnRleHRTdGF0ZS5maWxs
UGF0dGVybjsKIAogICAgIG1fb3JpZ2luYWxTdGF0ZS5zdHJva2VTdHlsZS5jb2xvciA9IGNvbnRl
eHRTdGF0ZS5zdHJva2VDb2xvcjsKICAgICBtX29yaWdpbmFsU3RhdGUuc3Ryb2tlU3R5bGUuZ3Jh
ZGllbnQgPSBjb250ZXh0U3RhdGUuc3Ryb2tlR3JhZGllbnQ7CisgICAgbV9vcmlnaW5hbFN0YXRl
LnN0cm9rZVN0eWxlLmdyYWRpZW50UGFpbnRpbmdEYXRhID0gY29udGV4dFN0YXRlLnN0cm9rZUdy
YWRpZW50UGFpbnRpbmdEYXRhOwogICAgIG1fb3JpZ2luYWxTdGF0ZS5zdHJva2VTdHlsZS5wYXR0
ZXJuID0gY29udGV4dFN0YXRlLnN0cm9rZVBhdHRlcm47CiAKICAgICBtX29yaWdpbmFsU3RhdGUu
Y3RtID0gbV9vd25lci5jdXJyZW50U3RhdGUoKS5jdG07IC8vIEZJWE1FOiBEZWFsIHdpdGggYmFz
ZSBDVE0uCkBAIC0xMTksNyArMTIxLDcgQEAgdm9pZCBEcmF3R2x5cGhzUmVjb3JkZXI6OnBvcHVs
YXRlSW50ZXJuYWxDb250ZXh0KGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBjb24KICAgICBp
ZiAobV9vcmlnaW5hbFN0YXRlLmZpbGxTdHlsZS5jb2xvci5pc1ZhbGlkKCkpCiAgICAgICAgIG1f
aW50ZXJuYWxDb250ZXh0LnNldEZpbGxDb2xvcihtX29yaWdpbmFsU3RhdGUuZmlsbFN0eWxlLmNv
bG9yKTsKICAgICBlbHNlIGlmIChtX29yaWdpbmFsU3RhdGUuZmlsbFN0eWxlLmdyYWRpZW50KQot
ICAgICAgICBtX2ludGVybmFsQ29udGV4dC5zZXRGaWxsR3JhZGllbnQoKm1fb3JpZ2luYWxTdGF0
ZS5maWxsU3R5bGUuZ3JhZGllbnQpOworICAgICAgICBtX2ludGVybmFsQ29udGV4dC5zZXRGaWxs
R3JhZGllbnQoKm1fb3JpZ2luYWxTdGF0ZS5maWxsU3R5bGUuZ3JhZGllbnQsIG1fb3JpZ2luYWxT
dGF0ZS5maWxsU3R5bGUuZ3JhZGllbnRQYWludGluZ0RhdGEpOwogICAgIGVsc2UgewogICAgICAg
ICBBU1NFUlQobV9vcmlnaW5hbFN0YXRlLmZpbGxTdHlsZS5wYXR0ZXJuKTsKICAgICAgICAgaWYg
KG1fb3JpZ2luYWxTdGF0ZS5maWxsU3R5bGUucGF0dGVybikKQEAgLTEyOSw3ICsxMzEsNyBAQCB2
b2lkIERyYXdHbHlwaHNSZWNvcmRlcjo6cG9wdWxhdGVJbnRlcm5hbENvbnRleHQoY29uc3QgR3Jh
cGhpY3NDb250ZXh0U3RhdGUmIGNvbgogICAgIGlmIChtX29yaWdpbmFsU3RhdGUuc3Ryb2tlU3R5
bGUuY29sb3IuaXNWYWxpZCgpKQogICAgICAgICBtX2ludGVybmFsQ29udGV4dC5zZXRTdHJva2VD
b2xvcihtX29yaWdpbmFsU3RhdGUuc3Ryb2tlU3R5bGUuY29sb3IpOwogICAgIGVsc2UgaWYgKG1f
b3JpZ2luYWxTdGF0ZS5zdHJva2VTdHlsZS5ncmFkaWVudCkKLSAgICAgICAgbV9pbnRlcm5hbENv
bnRleHQuc2V0U3Ryb2tlR3JhZGllbnQoKm1fb3JpZ2luYWxTdGF0ZS5zdHJva2VTdHlsZS5ncmFk
aWVudCk7CisgICAgICAgIG1faW50ZXJuYWxDb250ZXh0LnNldFN0cm9rZUdyYWRpZW50KCptX29y
aWdpbmFsU3RhdGUuc3Ryb2tlU3R5bGUuZ3JhZGllbnQsIG1fb3JpZ2luYWxTdGF0ZS5zdHJva2VT
dHlsZS5ncmFkaWVudFBhaW50aW5nRGF0YSk7CiAgICAgZWxzZSB7CiAgICAgICAgIEFTU0VSVCht
X29yaWdpbmFsU3RhdGUuc3Ryb2tlU3R5bGUucGF0dGVybik7CiAgICAgICAgIGlmIChtX29yaWdp
bmFsU3RhdGUuc3Ryb2tlU3R5bGUucGF0dGVybikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0
ZW1zLmNwcAppbmRleCAyMzI1OTYzYzk5YmI4YmNjZDhmMjc3MmY2YzdmMjhkYzg1YWM5NWUzLi4y
ZmRiYzk2NzlmOTkzMDI0MGIyZmJkYTg3ZmRlM2M5YTNjZjU1MTY1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVt
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0SXRlbXMuY3BwCkBAIC0xMTUsMTAgKzExNSw5IEBAIHN0YXRpYyBUZXh0U3Ry
ZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBDb25jYXRlbmF0ZUNUTSYgaXRl
bSkKICAgICByZXR1cm4gdHM7CiB9CiAKLVNldElubGluZUZpbGxHcmFkaWVudDo6U2V0SW5saW5l
RmlsbEdyYWRpZW50KGNvbnN0IEdyYWRpZW50JiBncmFkaWVudCkKK1NldElubGluZUZpbGxHcmFk
aWVudDo6U2V0SW5saW5lRmlsbEdyYWRpZW50KGNvbnN0IEdyYWRpZW50JiBncmFkaWVudCwgY29u
c3QgR3JhZGllbnQ6OlBhaW50aW5nRGF0YSYgcGFpbnRpbmdEYXRhKQogICAgIDogbV9kYXRhKGdy
YWRpZW50LmRhdGEoKSkKLSAgICAsIG1fZ3JhZGllbnRTcGFjZVRyYW5zZm9ybWF0aW9uKGdyYWRp
ZW50LmdyYWRpZW50U3BhY2VUcmFuc2Zvcm0oKSkKLSAgICAsIG1fc3ByZWFkTWV0aG9kKGdyYWRp
ZW50LnNwcmVhZE1ldGhvZCgpKQorICAgICwgbV9wYWludGluZ0RhdGEocGFpbnRpbmdEYXRhKQog
ICAgICwgbV9jb2xvclN0b3BDb3VudChzdGF0aWNfY2FzdDx1aW50OF90PihncmFkaWVudC5zdG9w
cygpLnNpemUoKSkpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQobV9jb2xvclN0b3BDb3VudCA8PSBt
YXhDb2xvclN0b3BDb3VudCk7CkBAIC0xMjgsMjAgKzEyNyw5IEBAIFNldElubGluZUZpbGxHcmFk
aWVudDo6U2V0SW5saW5lRmlsbEdyYWRpZW50KGNvbnN0IEdyYWRpZW50JiBncmFkaWVudCkKICAg
ICB9CiB9CiAKLVJlZjxHcmFkaWVudD4gU2V0SW5saW5lRmlsbEdyYWRpZW50OjpncmFkaWVudCgp
IGNvbnN0Ci17Ci0gICAgYXV0byBncmFkaWVudCA9IEdyYWRpZW50OjpjcmVhdGUoR3JhZGllbnQ6
OkRhdGEobV9kYXRhKSk7Ci0gICAgZm9yICh1aW50OF90IGkgPSAwOyBpIDwgbV9jb2xvclN0b3BD
b3VudDsgKytpKQotICAgICAgICBncmFkaWVudC0+YWRkQ29sb3JTdG9wKHsgbV9vZmZzZXRzW2ld
LCBDb2xvcihtX2NvbG9yc1tpXSkgfSk7Ci0gICAgZ3JhZGllbnQtPnNldFNwcmVhZE1ldGhvZCht
X3NwcmVhZE1ldGhvZCk7Ci0gICAgZ3JhZGllbnQtPnNldEdyYWRpZW50U3BhY2VUcmFuc2Zvcm0o
bV9ncmFkaWVudFNwYWNlVHJhbnNmb3JtYXRpb24pOwotICAgIHJldHVybiBncmFkaWVudDsKLX0K
LQotU2V0SW5saW5lRmlsbEdyYWRpZW50OjpTZXRJbmxpbmVGaWxsR3JhZGllbnQoZmxvYXQgb2Zm
c2V0c1ttYXhDb2xvclN0b3BDb3VudF0sIFNSR0JBPHVpbnQ4X3Q+IGNvbG9yc1ttYXhDb2xvclN0
b3BDb3VudF0sIGNvbnN0IEdyYWRpZW50OjpEYXRhJiBkYXRhLCBjb25zdCBBZmZpbmVUcmFuc2Zv
cm0mIGdyYWRpZW50U3BhY2VUcmFuc2Zvcm1hdGlvbiwgR3JhZGllbnRTcHJlYWRNZXRob2Qgc3By
ZWFkTWV0aG9kLCB1aW50OF90IGNvbG9yU3RvcENvdW50KQorU2V0SW5saW5lRmlsbEdyYWRpZW50
OjpTZXRJbmxpbmVGaWxsR3JhZGllbnQoZmxvYXQgb2Zmc2V0c1ttYXhDb2xvclN0b3BDb3VudF0s
IFNSR0JBPHVpbnQ4X3Q+IGNvbG9yc1ttYXhDb2xvclN0b3BDb3VudF0sIGNvbnN0IEdyYWRpZW50
OjpEYXRhJiBkYXRhLCBjb25zdCBHcmFkaWVudDo6UGFpbnRpbmdEYXRhJiBwYWludGluZ0RhdGEs
IHVpbnQ4X3QgY29sb3JTdG9wQ291bnQpCiAgICAgOiBtX2RhdGEoZGF0YSkKLSAgICAsIG1fZ3Jh
ZGllbnRTcGFjZVRyYW5zZm9ybWF0aW9uKGdyYWRpZW50U3BhY2VUcmFuc2Zvcm1hdGlvbikKLSAg
ICAsIG1fc3ByZWFkTWV0aG9kKHNwcmVhZE1ldGhvZCkKKyAgICAsIG1fcGFpbnRpbmdEYXRhKHBh
aW50aW5nRGF0YSkKICAgICAsIG1fY29sb3JTdG9wQ291bnQoY29sb3JTdG9wQ291bnQpCiB7CiAg
ICAgUkVMRUFTRV9BU1NFUlQobV9jb2xvclN0b3BDb3VudCA8PSBtYXhDb2xvclN0b3BDb3VudCk7
CkBAIC0xNTEsMTAgKzEzOSwxOCBAQCBTZXRJbmxpbmVGaWxsR3JhZGllbnQ6OlNldElubGluZUZp
bGxHcmFkaWVudChmbG9hdCBvZmZzZXRzW21heENvbG9yU3RvcENvdW50XSwgUwogICAgIH0KIH0K
IAorUmVmPEdyYWRpZW50PiBTZXRJbmxpbmVGaWxsR3JhZGllbnQ6OmdyYWRpZW50KCkgY29uc3QK
K3sKKyAgICBhdXRvIGdyYWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShHcmFkaWVudDo6RGF0YSht
X2RhdGEpKTsKKyAgICBmb3IgKHVpbnQ4X3QgaSA9IDA7IGkgPCBtX2NvbG9yU3RvcENvdW50OyAr
K2kpCisgICAgICAgIGdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyBtX29mZnNldHNbaV0sIENvbG9y
KG1fY29sb3JzW2ldKSB9KTsKKyAgICByZXR1cm4gZ3JhZGllbnQ7Cit9CisKIHZvaWQgU2V0SW5s
aW5lRmlsbEdyYWRpZW50OjphcHBseShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIGNvbnN0CiB7
CiAgICAgaWYgKG1fY29sb3JTdG9wQ291bnQgPD0gbWF4Q29sb3JTdG9wQ291bnQpCi0gICAgICAg
IGNvbnRleHQuc2V0RmlsbEdyYWRpZW50KGdyYWRpZW50KCkpOworICAgICAgICBjb250ZXh0LnNl
dEZpbGxHcmFkaWVudChncmFkaWVudCgpLCBtX3BhaW50aW5nRGF0YSk7CiB9CiAKIGJvb2wgU2V0
SW5saW5lRmlsbEdyYWRpZW50Ojppc0lubGluZShjb25zdCBHcmFkaWVudCYgZ3JhZGllbnQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RJdGVtcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaAppbmRleCBlYThhY2FkZTY1NzUxNDAxMzA4MGYy
NzFiZDcyYmVmZDMxMTUxMGE4Li5lZWRlZDA0YjM3MjIxNzEwNDI4NTAxMDI5YmYwYjMzMjEwYzZk
OTc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKQEAgLTE3NCw5ICsxNzQsOCBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzRHJhd2luZ0l0ZW0gPSBmYWxz
ZTsKICAgICBzdGF0aWMgY29uc3RleHByIHVpbnQ4X3QgbWF4Q29sb3JTdG9wQ291bnQgPSA0Owog
Ci0gICAgU2V0SW5saW5lRmlsbEdyYWRpZW50KGNvbnN0IEdyYWRpZW50Jik7Ci0gICAgV0VCQ09S
RV9FWFBPUlQgU2V0SW5saW5lRmlsbEdyYWRpZW50KGZsb2F0IG9mZnNldHNbbWF4Q29sb3JTdG9w
Q291bnRdLCBTUkdCQTx1aW50OF90PiBjb2xvcnNbbWF4Q29sb3JTdG9wQ291bnRdLCBjb25zdCBH
cmFkaWVudDo6RGF0YSYsCi0gICAgICAgIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgZ3JhZGllbnRT
cGFjZVRyYW5zZm9ybWF0aW9uLCBHcmFkaWVudFNwcmVhZE1ldGhvZCwgdWludDhfdCBjb2xvclN0
b3BDb3VudCk7CisgICAgU2V0SW5saW5lRmlsbEdyYWRpZW50KGNvbnN0IEdyYWRpZW50JiwgY29u
c3QgR3JhZGllbnQ6OlBhaW50aW5nRGF0YSYpOworICAgIFdFQkNPUkVfRVhQT1JUIFNldElubGlu
ZUZpbGxHcmFkaWVudChmbG9hdCBvZmZzZXRzW21heENvbG9yU3RvcENvdW50XSwgU1JHQkE8dWlu
dDhfdD4gY29sb3JzW21heENvbG9yU3RvcENvdW50XSwgY29uc3QgR3JhZGllbnQ6OkRhdGEmLCBj
b25zdCBHcmFkaWVudDo6UGFpbnRpbmdEYXRhJiwgdWludDhfdCBjb2xvclN0b3BDb3VudCk7CiAK
ICAgICBzdGF0aWMgYm9vbCBpc0lubGluZShjb25zdCBHcmFkaWVudCYpOwogICAgIFJlZjxHcmFk
aWVudD4gZ3JhZGllbnQoKSBjb25zdDsKQEAgLTE4Nyw4ICsxODYsOCBAQCBwcml2YXRlOgogICAg
IGZsb2F0IG1fb2Zmc2V0c1ttYXhDb2xvclN0b3BDb3VudF07CiAgICAgU1JHQkE8dWludDhfdD4g
bV9jb2xvcnNbbWF4Q29sb3JTdG9wQ291bnRdOwogICAgIEdyYWRpZW50OjpEYXRhIG1fZGF0YTsK
LSAgICBBZmZpbmVUcmFuc2Zvcm0gbV9ncmFkaWVudFNwYWNlVHJhbnNmb3JtYXRpb247Ci0gICAg
R3JhZGllbnRTcHJlYWRNZXRob2QgbV9zcHJlYWRNZXRob2QgeyBHcmFkaWVudFNwcmVhZE1ldGhv
ZDo6UGFkIH07CisgICAgCisgICAgR3JhZGllbnQ6OlBhaW50aW5nRGF0YSBtX3BhaW50aW5nRGF0
YTsKICAgICB1aW50OF90IG1fY29sb3JTdG9wQ291bnQgeyAwIH07CiB9OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKaW5kZXggYjk0ODNkZjQyZGQ5MDE4N2IxZjY5
ZGQ5MWI1ZWZiNGQ0OTBiNDJlYi4uNTQ2YTg5NTRlZTBmZWNiYzU2ZmM1Mzg0NGEwNmM0NWIxZGYw
MzNiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcApAQCAtMTAx
LDcgKzEwMSw3IEBAIHZvaWQgUmVjb3JkZXI6OmFwcGVuZFN0YXRlQ2hhbmdlSXRlbShjb25zdCBH
cmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZSYgY2hhbmdlcywKICAgICAgICAgYXBwZW5kPFNldElu
bGluZUZpbGxDb2xvcj4oY2hhbmdlcy5tX3N0YXRlLmZpbGxDb2xvci5hc0lubGluZSgpKTsKIAog
ICAgIGlmIChjaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbEdy
YWRpZW50Q2hhbmdlKSkKLSAgICAgICAgYXBwZW5kPFNldElubGluZUZpbGxHcmFkaWVudD4oKmNo
YW5nZXMubV9zdGF0ZS5maWxsR3JhZGllbnQpOworICAgICAgICBhcHBlbmQ8U2V0SW5saW5lRmls
bEdyYWRpZW50PigqY2hhbmdlcy5tX3N0YXRlLmZpbGxHcmFkaWVudCwgY2hhbmdlcy5tX3N0YXRl
LmZpbGxHcmFkaWVudFBhaW50aW5nRGF0YSk7CiB9CiAKIHZvaWQgUmVjb3JkZXI6OndpbGxBcHBl
bmRJdGVtT2ZUeXBlKEl0ZW1UeXBlIHR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29y
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8v
Tmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwCmluZGV4IDJjOWFhODg2OTY5ZWIwNTJl
ZWM2MzJjZTljNmU5ZDU1NzIxZjk3NmQuLjAxM2M3MDMzMDY0MzZlZmY5N2RkZGE3ZjA0NWM5ZDM1
YzE1YzQwMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25p
Y29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3Bl
cmF0aW9uUmVjb3JkZXIuY3BwCkBAIC0yOTIsNyArMjkyLDggQEAgdm9pZCBDYWlyb09wZXJhdGlv
blJlY29yZGVyOjpmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIEdyYWRpZW50JiBncmFk
aWVudCkKICAgICAgICAgfQogICAgIH07CiAKLSAgICBhcHBlbmQoY3JlYXRlQ29tbWFuZDxGaWxs
UmVjdD4ocmVjdCwgZ3JhZGllbnQuY3JlYXRlUGF0dGVybigxLjApKSk7CisgICAgYXV0byYgc3Rh
dGUgPSBncmFwaGljc0NvbnRleHQoKS5zdGF0ZSgpOworICAgIGFwcGVuZChjcmVhdGVDb21tYW5k
PEZpbGxSZWN0PihyZWN0LCBncmFkaWVudC5jcmVhdGVQYXR0ZXJuKDEuMCwgc3RhdGUuZmlsbEdy
YWRpZW50UGFpbnRpbmdEYXRhLnNwcmVhZE1ldGhvZCkpKTsKIH0KIAogdm9pZCBDYWlyb09wZXJh
dGlvblJlY29yZGVyOjpmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IENvbG9y
JiBjb2xvciwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSBi
bGVuZE1vZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1BhdGguY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdQYXRo
LmNwcAppbmRleCAwNGY4NTlmMTVjNzNmYjEzYjg3ZjNlODk4ODQ3NWY2MmEyZmU1ZjEwLi40YmMx
ZDAyNTAxYTJhZmJlMWNkNjdhOTI5YzBjMjFhMGNhZDY4NjQ5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1BhdGguY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUGF0aC5jcHAKQEAgLTY5LDcgKzY5LDcgQEAgRmxv
YXRSZWN0IFJlbmRlclNWR1BhdGg6OmNhbGN1bGF0ZVVwZGF0ZWRTdHJva2VCb3VuZGluZ0JveCgp
IGNvbnN0CiBzdGF0aWMgdm9pZCB1c2VTdHJva2VTdHlsZVRvRmlsbChHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQpCiB7CiAgICAgaWYgKGF1dG8gZ3JhZGllbnQgPSBjb250ZXh0LnN0cm9rZUdyYWRp
ZW50KCkpCi0gICAgICAgIGNvbnRleHQuc2V0RmlsbEdyYWRpZW50KCpncmFkaWVudCk7CisgICAg
ICAgIGNvbnRleHQuc2V0RmlsbEdyYWRpZW50KCpncmFkaWVudCwgY29udGV4dC5zdGF0ZSgpLnN0
cm9rZUdyYWRpZW50UGFpbnRpbmdEYXRhKTsKICAgICBlbHNlIGlmIChQYXR0ZXJuKiBwYXR0ZXJu
ID0gY29udGV4dC5zdHJva2VQYXR0ZXJuKCkpCiAgICAgICAgIGNvbnRleHQuc2V0RmlsbFBhdHRl
cm4oKnBhdHRlcm4pOwogICAgIGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQuY3BwCmluZGV4IGQyMjliNjMx
M2M1YjM4MGVmOTVmZTFiYmRjNjQ2ZmJmMTBlMmQ4MzEuLjUyNzhkNmRkMjRmNzYwYWMwMzc2MGJj
Y2U0NzI3NDE3ZTBmNzllNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcApAQCAtMTQ1LDggKzE0NSw2
IEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudDo6YXBwbHlSZXNvdXJjZShSZW5kZXJF
bGVtZW50JiByZW5kZXJlciwgY29uc3QgUmVuCiAgICAgICAgICAgICAgICAgdXNlcnNwYWNlVHJh
bnNmb3JtICo9IGFkZGl0aW9uYWxUZXh0VHJhbnNmb3JtOwogICAgICAgICB9CiAKLSAgICAgICAg
Z3JhZGllbnQtPnNldEdyYWRpZW50U3BhY2VUcmFuc2Zvcm0odXNlcnNwYWNlVHJhbnNmb3JtKTsK
LQogICAgICAgICByZXR1cm4geyBXVEZNb3ZlKGdyYWRpZW50KSwgdXNlcnNwYWNlVHJhbnNmb3Jt
IH07CiAgICAgfSkuaXRlcmF0b3ItPnZhbHVlOwogCkBAIC0xNjQsMTYgKzE2MiwxNyBAQCBib29s
IFJlbmRlclNWR1Jlc291cmNlR3JhZGllbnQ6OmFwcGx5UmVzb3VyY2UoUmVuZGVyRWxlbWVudCYg
cmVuZGVyZXIsIGNvbnN0IFJlbgogICAgIH0KIAogICAgIGF1dG8mIHN2Z1N0eWxlID0gc3R5bGUu
c3ZnU3R5bGUoKTsKKyAgICBhdXRvIHVzZXJzcGFjZVRyYW5zZm9ybSA9IGdyYWRpZW50RGF0YS51
c2Vyc3BhY2VUcmFuc2Zvcm07CiAKICAgICBpZiAocmVzb3VyY2VNb2RlLmNvbnRhaW5zKFJlbmRl
clNWR1Jlc291cmNlTW9kZTo6QXBwbHlUb0ZpbGwpKSB7CiAgICAgICAgIGNvbnRleHQtPnNldEFs
cGhhKHN2Z1N0eWxlLmZpbGxPcGFjaXR5KCkpOwotICAgICAgICBjb250ZXh0LT5zZXRGaWxsR3Jh
ZGllbnQoKmdyYWRpZW50RGF0YS5ncmFkaWVudCk7CisgICAgICAgIGNvbnRleHQtPnNldEZpbGxH
cmFkaWVudCgqZ3JhZGllbnREYXRhLmdyYWRpZW50LCB7IHBsYXRmb3JtU3ByZWFkTWV0aG9kRnJv
bVNWR1R5cGUoc3ByZWFkTWV0aG9kKCkpLCB1c2Vyc3BhY2VUcmFuc2Zvcm0gfSk7CiAgICAgICAg
IGNvbnRleHQtPnNldEZpbGxSdWxlKHN2Z1N0eWxlLmZpbGxSdWxlKCkpOwogICAgIH0gZWxzZSBp
ZiAocmVzb3VyY2VNb2RlLmNvbnRhaW5zKFJlbmRlclNWR1Jlc291cmNlTW9kZTo6QXBwbHlUb1N0
cm9rZSkpIHsKICAgICAgICAgaWYgKHN2Z1N0eWxlLnZlY3RvckVmZmVjdCgpID09IFZlY3RvckVm
ZmVjdDo6Tm9uU2NhbGluZ1N0cm9rZSkKLSAgICAgICAgICAgIGdyYWRpZW50RGF0YS5ncmFkaWVu
dC0+c2V0R3JhZGllbnRTcGFjZVRyYW5zZm9ybSh0cmFuc2Zvcm1Pbk5vblNjYWxpbmdTdHJva2Uo
JnJlbmRlcmVyLCBncmFkaWVudERhdGEudXNlcnNwYWNlVHJhbnNmb3JtKSk7CisgICAgICAgICAg
ICB1c2Vyc3BhY2VUcmFuc2Zvcm0gPSB0cmFuc2Zvcm1Pbk5vblNjYWxpbmdTdHJva2UoJnJlbmRl
cmVyLCBncmFkaWVudERhdGEudXNlcnNwYWNlVHJhbnNmb3JtKTsKICAgICAgICAgY29udGV4dC0+
c2V0QWxwaGEoc3ZnU3R5bGUuc3Ryb2tlT3BhY2l0eSgpKTsKLSAgICAgICAgY29udGV4dC0+c2V0
U3Ryb2tlR3JhZGllbnQoKmdyYWRpZW50RGF0YS5ncmFkaWVudCk7CisgICAgICAgIGNvbnRleHQt
PnNldFN0cm9rZUdyYWRpZW50KCpncmFkaWVudERhdGEuZ3JhZGllbnQsIHsgcGxhdGZvcm1TcHJl
YWRNZXRob2RGcm9tU1ZHVHlwZShzcHJlYWRNZXRob2QoKSksIHVzZXJzcGFjZVRyYW5zZm9ybSB9
KTsKICAgICAgICAgU1ZHUmVuZGVyU3VwcG9ydDo6YXBwbHlTdHJva2VTdHlsZVRvQ29udGV4dChj
b250ZXh0LCBzdHlsZSwgcmVuZGVyZXIpOwogICAgIH0KIApAQCAtMTk3LDkgKzE5Niw5IEBAIHZv
aWQgUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudDo6cG9zdEFwcGx5UmVzb3VyY2UoUmVuZGVyRWxl
bWVudCYgcmVuZGVyZXIsIEdyYXBoCiAgICAgICAgICAgICAgICAgY29udGV4dCA9IHN0ZDo6ZXhj
aGFuZ2UobV9zYXZlZENvbnRleHQsIG51bGxwdHIpOwogCiAgICAgICAgICAgICAgICAgRmxvYXRS
ZWN0IHRhcmdldFJlY3Q7Ci0gICAgICAgICAgICAgICAgZ3JhZGllbnQuc2V0R3JhZGllbnRTcGFj
ZVRyYW5zZm9ybShjbGlwVG9UZXh0TWFzaygqY29udGV4dCwgbV9pbWFnZUJ1ZmZlciwgdGFyZ2V0
UmVjdCwgJnJlbmRlcmVyLCBncmFkaWVudFVuaXRzKCkgPT0gU1ZHVW5pdFR5cGVzOjpTVkdfVU5J
VF9UWVBFX09CSkVDVEJPVU5ESU5HQk9YLCBncmFkaWVudFRyYW5zZm9ybSgpKSk7CisgICAgICAg
ICAgICAgICAgQWZmaW5lVHJhbnNmb3JtIHVzZXJzcGFjZVRyYW5zZm9ybSA9IGNsaXBUb1RleHRN
YXNrKCpjb250ZXh0LCBtX2ltYWdlQnVmZmVyLCB0YXJnZXRSZWN0LCAmcmVuZGVyZXIsIGdyYWRp
ZW50VW5pdHMoKSA9PSBTVkdVbml0VHlwZXM6OlNWR19VTklUX1RZUEVfT0JKRUNUQk9VTkRJTkdC
T1gsIGdyYWRpZW50VHJhbnNmb3JtKCkpOwogCi0gICAgICAgICAgICAgICAgY29udGV4dC0+c2V0
RmlsbEdyYWRpZW50KGdyYWRpZW50KTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5zZXRGaWxs
R3JhZGllbnQoZ3JhZGllbnQsIHsgcGxhdGZvcm1TcHJlYWRNZXRob2RGcm9tU1ZHVHlwZShzcHJl
YWRNZXRob2QoKSksIHVzZXJzcGFjZVRyYW5zZm9ybSB9KTsKICAgICAgICAgICAgICAgICBjb250
ZXh0LT5maWxsUmVjdCh0YXJnZXRSZWN0KTsKIAogICAgICAgICAgICAgICAgIG1faW1hZ2VCdWZm
ZXIgPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQuaAppbmRleCAyNWY1YmIwMWNiNjk5MzVkM2Q1NzRh
NjViMGVhMThlMzAwYzYyMjA2Li4wMzhiZGU5M2JkYjBkYjI0ODU2OGY3NWE3NDI5MTY0MzUxNmJk
NzU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jl
c291cmNlR3JhZGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1Jlc291cmNlR3JhZGllbnQuaApAQCAtNTIsNiArNTIsNyBAQCBwcm90ZWN0ZWQ6CiBwcml2
YXRlOgogICAgIHZvaWQgZWxlbWVudCgpIGNvbnN0ID0gZGVsZXRlOwogCisgICAgdmlydHVhbCBT
VkdTcHJlYWRNZXRob2RUeXBlIHNwcmVhZE1ldGhvZCgpICBjb25zdCA9IDA7CiAgICAgdmlydHVh
bCBTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlIGdyYWRpZW50VW5pdHMoKSBjb25zdCA9IDA7CiAg
ICAgdmlydHVhbCBBZmZpbmVUcmFuc2Zvcm0gZ3JhZGllbnRUcmFuc2Zvcm0oKSBjb25zdCA9IDA7
CiAgICAgdmlydHVhbCBib29sIGNvbGxlY3RHcmFkaWVudEF0dHJpYnV0ZXMoKSA9IDA7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTGlu
ZWFyR3JhZGllbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdS
ZXNvdXJjZUxpbmVhckdyYWRpZW50LmNwcAppbmRleCBhOGVjMWIyYTk0ZjY2NTVkYTdhZDMyOTI3
ZGE5N2MwY2RjN2EwOTljLi40ZWNhYTVhZWEzYjI3ZTRkODc4ZTRkMTViMzM3ZGM3YzJjOTI4MTA2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291
cmNlTGluZWFyR3JhZGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUmVzb3VyY2VMaW5lYXJHcmFkaWVudC5jcHAKQEAgLTUzLDcgKzUzLDYgQEAgRmxv
YXRQb2ludCBSZW5kZXJTVkdSZXNvdXJjZUxpbmVhckdyYWRpZW50OjplbmRQb2ludChjb25zdCBM
aW5lYXJHcmFkaWVudEF0dHJpYnUKIFJlZjxHcmFkaWVudD4gUmVuZGVyU1ZHUmVzb3VyY2VMaW5l
YXJHcmFkaWVudDo6YnVpbGRHcmFkaWVudChjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpIGNvbnN0
CiB7CiAgICAgYXV0byBncmFkaWVudCA9IEdyYWRpZW50OjpjcmVhdGUoR3JhZGllbnQ6OkxpbmVh
ckRhdGEgeyBzdGFydFBvaW50KG1fYXR0cmlidXRlcyksIGVuZFBvaW50KG1fYXR0cmlidXRlcykg
fSk7Ci0gICAgZ3JhZGllbnQtPnNldFNwcmVhZE1ldGhvZChwbGF0Zm9ybVNwcmVhZE1ldGhvZEZy
b21TVkdUeXBlKG1fYXR0cmlidXRlcy5zcHJlYWRNZXRob2QoKSkpOwogICAgIGFkZFN0b3BzKGdy
YWRpZW50LCBtX2F0dHJpYnV0ZXMuc3RvcHMoKSwgc3R5bGUpOwogICAgIHJldHVybiBncmFkaWVu
dDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
UmVzb3VyY2VMaW5lYXJHcmFkaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdSZXNvdXJjZUxpbmVhckdyYWRpZW50LmgKaW5kZXggNTU4ZDQyYTU3ZWZlYzBhMWJl
NzQyOTAyZjhiZjg0YTk0NjEwNTUzZS4uYTUwODU4ZTk3ZTdmZWU4ODhjZmIwZDM3ODZhOGRhZWZi
MDhiNjM1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSZXNvdXJjZUxpbmVhckdyYWRpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUxpbmVhckdyYWRpZW50LmgKQEAgLTQwLDYgKzQwLDcgQEAg
cHVibGljOgogcHJpdmF0ZToKICAgICBSZW5kZXJTVkdSZXNvdXJjZVR5cGUgcmVzb3VyY2VUeXBl
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gTGluZWFyR3JhZGllbnRSZXNvdXJjZVR5cGU7IH0KIAor
ICAgIFNWR1NwcmVhZE1ldGhvZFR5cGUgc3ByZWFkTWV0aG9kKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gbV9hdHRyaWJ1dGVzLnNwcmVhZE1ldGhvZCgpOyB9CiAgICAgU1ZHVW5pdFR5cGVzOjpTVkdV
bml0VHlwZSBncmFkaWVudFVuaXRzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9hdHRyaWJ1dGVz
LmdyYWRpZW50VW5pdHMoKTsgfQogICAgIEFmZmluZVRyYW5zZm9ybSBncmFkaWVudFRyYW5zZm9y
bSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fYXR0cmlidXRlcy5ncmFkaWVudFRyYW5zZm9ybSgp
OyB9CiAgICAgYm9vbCBjb2xsZWN0R3JhZGllbnRBdHRyaWJ1dGVzKCkgZmluYWw7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUmFkaWFs
R3JhZGllbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNv
dXJjZVJhZGlhbEdyYWRpZW50LmNwcAppbmRleCBiYWRmMTc1YTgwNjQ5YjBiYzEzMjRiOGJhMDcy
NjI2MWQ1ZjIwYjk4Li42N2U0NTQxMGJhMTM3MGZiZTBkN2EwZTZiZmYyZGM5NzlkMjQwZTEzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNl
UmFkaWFsR3JhZGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUmVzb3VyY2VSYWRpYWxHcmFkaWVudC5jcHAKQEAgLTY0LDcgKzY0LDYgQEAgZmxvYXQg
UmVuZGVyU1ZHUmVzb3VyY2VSYWRpYWxHcmFkaWVudDo6Zm9jYWxSYWRpdXMoY29uc3QgUmFkaWFs
R3JhZGllbnRBdHRyaWJ1dGUKIFJlZjxHcmFkaWVudD4gUmVuZGVyU1ZHUmVzb3VyY2VSYWRpYWxH
cmFkaWVudDo6YnVpbGRHcmFkaWVudChjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpIGNvbnN0CiB7
CiAgICAgYXV0byBncmFkaWVudCA9IEdyYWRpZW50OjpjcmVhdGUoR3JhZGllbnQ6OlJhZGlhbERh
dGEgeyBmb2NhbFBvaW50KG1fYXR0cmlidXRlcyksIGNlbnRlclBvaW50KG1fYXR0cmlidXRlcyks
IGZvY2FsUmFkaXVzKG1fYXR0cmlidXRlcyksIHJhZGl1cyhtX2F0dHJpYnV0ZXMpLCAxIH0pOwot
ICAgIGdyYWRpZW50LT5zZXRTcHJlYWRNZXRob2QocGxhdGZvcm1TcHJlYWRNZXRob2RGcm9tU1ZH
VHlwZShtX2F0dHJpYnV0ZXMuc3ByZWFkTWV0aG9kKCkpKTsKICAgICBhZGRTdG9wcyhncmFkaWVu
dCwgbV9hdHRyaWJ1dGVzLnN0b3BzKCksIHN0eWxlKTsKICAgICByZXR1cm4gZ3JhZGllbnQ7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291
cmNlUmFkaWFsR3JhZGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUmVzb3VyY2VSYWRpYWxHcmFkaWVudC5oCmluZGV4IGFmMzk2ZDE1MDZkNmYyY2MxNzExZGRi
NzJlZjY0ZWE2YjllMzc0YjcuLmJjNGM0ZTU1ZjkxMGY5NDAyNTE3MWJlMzc5ODRmNzY4MjFhZmRj
M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVz
b3VyY2VSYWRpYWxHcmFkaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUmVzb3VyY2VSYWRpYWxHcmFkaWVudC5oCkBAIC00NCw2ICs0NCw3IEBAIHB1Ymxp
YzoKIHByaXZhdGU6CiAgICAgUmVuZGVyU1ZHUmVzb3VyY2VUeXBlIHJlc291cmNlVHlwZSgpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIFJhZGlhbEdyYWRpZW50UmVzb3VyY2VUeXBlOyB9CiAKKyAgICBT
VkdTcHJlYWRNZXRob2RUeXBlIHNwcmVhZE1ldGhvZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1f
YXR0cmlidXRlcy5zcHJlYWRNZXRob2QoKTsgfQogICAgIFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5
cGUgZ3JhZGllbnRVbml0cygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fYXR0cmlidXRlcy5ncmFk
aWVudFVuaXRzKCk7IH0KICAgICBBZmZpbmVUcmFuc2Zvcm0gZ3JhZGllbnRUcmFuc2Zvcm0oKSBj
b25zdCBmaW5hbCB7IHJldHVybiBtX2F0dHJpYnV0ZXMuZ3JhZGllbnRUcmFuc2Zvcm0oKTsgfQog
ICAgIFJlZjxHcmFkaWVudD4gYnVpbGRHcmFkaWVudChjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0
IGZpbmFsOwo=
</data>
<flag name="commit-queue"
          id="434239"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>416653</attachid>
            <date>2020-12-21 21:45:51 -0800</date>
            <delta_ts>2021-01-12 23:01:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220079-20201221214551.patch</filename>
            <type>text/plain</type>
            <size>46357</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxMDI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjVlNzExMjRmZDVlMjBh
NTJmYTlkMjYyZWVkNTJkZmU0NGJlNzhjNC4uM2YwYWFjMGIyYzM3OGI2YWZjMWY5OTBmMTU3ODI0
M2FkYmQ3NDVlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgyIEBACisyMDIwLTEyLTIxICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgdGhlIGdyYWRp
ZW50IHBhaW50aW5nIGRhdGEgb3V0c2lkZSB0aGUgR3JhZGllbnQgY2xhc3MKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDA3OQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUgdGhlIFNwcmVhZE1ldGhv
ZCBhbmQgdGhlIFNwYWNlVHJhbnNmb3JtIGZyb20gdGhlIEdyYWRpZW50IGNsYXNzIHRvCisgICAg
ICAgIHRoZSBHcmFwaGljc0NvbnRleHRTdGF0ZSBpbnRvIGEgbmV3IHN0cnVjdCBjYWxsZWQgR3Jh
ZGllbnQ6OlBhaW50aW5nRGF0YS4KKyAgICAgICAgVGhlIGNsaWVudCB3aWxsIHNldCB0aGVtIHdo
ZW4gY2FsbGluZyBHcmFwaGljc0NvbnRleHQ6OnNldEZpbGxHcmFkaWVudCgpCisgICAgICAgIGFu
ZCBHcmFwaGljc0NvbnRleHQ6OnNldEZpbGxHcmFkaWVudCgpLgorCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhZGllbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhZGllbnQ6OmFk
ZENvbG9yU3RvcCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFkaWVudDo6c2V0U29ydGVkQ29sb3JT
dG9wcyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFkaWVudDo6c2V0U3ByZWFkTWV0aG9kKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYWRpZW50OjpzZXRHcmFkaWVudFNwYWNlVHJhbnNm
b3JtKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmFkZCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpHcmFkaWVudDo6aGFzaCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhZGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYWRpZW50Ojpl
bmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhZGllbnQ6OmRlY29kZSk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFkaWVudDo6c3ByZWFkTWV0aG9kIGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkdyYWRpZW50OjpncmFkaWVudFNwYWNlVHJhbnNmb3JtIGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudEltYWdlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkdyYWRpZW50SW1hZ2U6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudEltYWdlLmg6CisgICAgICAgIE5vIG5lZWQgZm9y
IHRoZSBHcmFkaWVudDo6aGFzaCgpLiBOZXcgc3RvcHMgY2FuIG9ubHkgYmUgYWRkZWQgdG8gdGhl
IAorICAgICAgICBleGlzdGluZyBzdG9wcy4gQ2xpZW50cyBuZWVkIHRvIGNoZWNrIGZvciB0aGUg
c3RvcHMnIHNpemUgaWYgdGhleSB3YW50CisgICAgICAgIHRvIGludmFsaWRhdGUgdGhlaXIgY2Fj
aGVkIGRyYXdpbmcuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2U6OmFw
cGx5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0U3Ryb2tl
R3JhZGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRGaWxsR3Jh
ZGllbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRTdHJva2VHcmFkaWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldEZpbGxHcmFkaWVudCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNhaXJvOjpGaWxsU291cmNlOjpGaWxsU291cmNlKToKKyAgICAgICAgKFdl
YkNvcmU6OkNhaXJvOjpTdHJva2VTb3VyY2U6OlN0cm9rZVNvdXJjZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhZGllbnRDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFkaWVudDo6Y3JlYXRlUGF0dGVybik6CisgICAgICAgIChXZWJDb3JlOjpHcmFkaWVudDo6
ZmlsbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0
SW1wbENhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEltcGxDYWly
bzo6ZmlsbFJlY3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYWRpZW50Q0cu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhZGllbnQ6OnBhaW50KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQ6OmZpbGxQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDo6c3Ryb2tlUGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6
OmZpbGxSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c3Ryb2tlUmVj
dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
RHJhd0dseXBoc1JlY29yZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0RHJhd0dseXBoc1JlY29yZGVyQ29yZVRleHQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdHbHlwaHNSZWNvcmRlcjo6cG9wdWxhdGVJbnRl
cm5hbFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3R2x5cGhzUmVj
b3JkZXI6OnBvcHVsYXRlSW50ZXJuYWxDb250ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6U2V0SW5saW5lRmlsbEdyYWRpZW50OjpTZXRJbmxpbmVGaWxsR3JhZGll
bnQpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlNldElubGluZUZpbGxHcmFkaWVu
dDo6Z3JhZGllbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlNldElu
bGluZUZpbGxHcmFkaWVudDo6YXBwbHkgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjphcHBlbmRTdGF0ZUNoYW5nZUl0ZW0pOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3Bl
cmF0aW9uUmVjb3JkZXIuY3BwOgorICAgICAgICAoTmljb3NpYTo6Q2Fpcm9PcGVyYXRpb25SZWNv
cmRlcjo6ZmlsbFJlY3QpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUGF0aC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjp1c2VTdHJva2VTdHlsZVRvRmlsbCk6CisgICAgICAgICog
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclNWR1Jlc291cmNlR3JhZGllbnQ6OmFwcGx5UmVzb3VyY2UpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudDo6cG9zdEFwcGx5UmVzb3VyY2Up
OgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5oOgor
ICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VMaW5lYXJHcmFkaWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZUxpbmVhckdyYWRpZW50Ojpi
dWlsZEdyYWRpZW50IGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jl
c291cmNlTGluZWFyR3JhZGllbnQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jlc291cmNlUmFkaWFsR3JhZGllbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZH
UmVzb3VyY2VSYWRpYWxHcmFkaWVudDo6YnVpbGRHcmFkaWVudCBjb25zdCk6CisgICAgICAgICog
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVJhZGlhbEdyYWRpZW50Lmg6CisKIDIwMjAt
MTItMjEgIE1lZ2FuIEdhcmRuZXIgIDxtZWdhbl9nYXJkbmVyQGFwcGxlLmNvbT4KIAogICAgICAg
ICBDb3B5IExvY2FsaXphYmxlLnN0cmluZ3MgZmlsZSBpbnRvIHRoZSBjb3JyZWN0IGRpcmVjdG9y
eQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnQuY3BwCmluZGV4
IGUxNzBmOTZhMWI2ZWY1MzViYzVhODIzY2ExMWQ3YTc1MDQyMWVmY2QuLjk4ZGI3YjZkNzk0YjE0
ZTQ4ZTZiNjU4YzkzYTc0ODI0ZmFkM2IyMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFkaWVudC5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDA2LCAyMDA3LCAyMDA4LCAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNi0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwNyBBbHAgVG9rZXIgPGFscEBhdG9rZXIuY29tPgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dApAQCAtNDYsOCArNDYsNiBAQCBHcmFkaWVudDo6R3JhZGllbnQoRGF0
YSYmIGRhdGEpCiB7CiB9CiAKLUdyYWRpZW50Ojp+R3JhZGllbnQoKSA9IGRlZmF1bHQ7Ci0KIHZv
aWQgR3JhZGllbnQ6OmFkanVzdFBhcmFtZXRlcnNGb3JUaWxlZERyYXdpbmcoRmxvYXRTaXplJiBz
aXplLCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZykKIHsKICAg
ICBpZiAoc3JjUmVjdC5pc0VtcHR5KCkpCkBAIC05Nyw3ICs5NSw2IEBAIHZvaWQgR3JhZGllbnQ6
OmFkZENvbG9yU3RvcChHcmFkaWVudDo6Q29sb3JTdG9wJiYgc3RvcCkKIHsKICAgICBtX3N0b3Bz
LmFwcGVuZChXVEZNb3ZlKHN0b3ApKTsKICAgICBtX3N0b3BzU29ydGVkID0gZmFsc2U7Ci0gICAg
bV9jYWNoZWRIYXNoID0gMDsKICAgICBzdG9wc0NoYW5nZWQoKTsKIH0KIApAQCAtMTA1LDcgKzEw
Miw2IEBAIHZvaWQgR3JhZGllbnQ6OnNldFNvcnRlZENvbG9yU3RvcHMoQ29sb3JTdG9wVmVjdG9y
JiYgc3RvcHMpCiB7CiAgICAgbV9zdG9wcyA9IFdURk1vdmUoc3RvcHMpOwogICAgIG1fc3RvcHNT
b3J0ZWQgPSB0cnVlOwotICAgIG1fY2FjaGVkSGFzaCA9IDA7CiAgICAgc3RvcHNDaGFuZ2VkKCk7
CiB9CiAKQEAgLTExOSw2NyArMTE1LDQgQEAgdm9pZCBHcmFkaWVudDo6c29ydFN0b3BzKCkgY29u
c3QKICAgICB9KTsKIH0KIAotdm9pZCBHcmFkaWVudDo6c2V0U3ByZWFkTWV0aG9kKEdyYWRpZW50
U3ByZWFkTWV0aG9kIHNwcmVhZE1ldGhvZCkKLXsKLSAgICBpZiAobV9zcHJlYWRNZXRob2QgPT0g
c3ByZWFkTWV0aG9kKQotICAgICAgICByZXR1cm47Ci0gICAgbV9zcHJlYWRNZXRob2QgPSBzcHJl
YWRNZXRob2Q7Ci0gICAgbV9jYWNoZWRIYXNoID0gMDsKLX0KLQotdm9pZCBHcmFkaWVudDo6c2V0
R3JhZGllbnRTcGFjZVRyYW5zZm9ybShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGdyYWRpZW50U3Bh
Y2VUcmFuc2Zvcm1hdGlvbikKLXsKLSAgICBpZiAobV9ncmFkaWVudFNwYWNlVHJhbnNmb3JtYXRp
b24gPT0gZ3JhZGllbnRTcGFjZVRyYW5zZm9ybWF0aW9uKQotICAgICAgICByZXR1cm47Ci0gICAg
bV9ncmFkaWVudFNwYWNlVHJhbnNmb3JtYXRpb24gPSBncmFkaWVudFNwYWNlVHJhbnNmb3JtYXRp
b247Ci0gICAgbV9jYWNoZWRIYXNoID0gMDsKLX0KLQotLy8gRklYTUU6IEluc3RlYWQgb2YgdGhl
c2UgYWRkKEhhc2hlcikgZnVuY3Rpb25zLCBjb25zaWRlciB1c2luZyBlbmNvZGUgZnVuY3Rpb25z
IHRvIGNvbXB1dGUgdGhlIGhhc2guCi0KLXN0YXRpYyB2b2lkIGFkZChIYXNoZXImIGhhc2hlciwg
Y29uc3QgQ29sb3ImIGNvbG9yKQotewotICAgIC8vIEZJWE1FOiBXZSBkb24ndCB3YW50IHRvIGhh
c2ggYSBoYXNoOyBkbyBiZXR0ZXIuCi0gICAgYWRkKGhhc2hlciwgY29sb3IuaGFzaCgpKTsKLX0K
LQotc3RhdGljIHZvaWQgYWRkKEhhc2hlciYgaGFzaGVyLCBjb25zdCBGbG9hdFBvaW50JiBwb2lu
dCkKLXsKLSAgICBhZGQoaGFzaGVyLCBwb2ludC54KCksIHBvaW50LnkoKSk7Ci19Ci0KLXN0YXRp
YyB2b2lkIGFkZChIYXNoZXImIGhhc2hlciwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zv
cm0pCi17Ci0gICAgYWRkKGhhc2hlciwgdHJhbnNmb3JtLmEoKSwgdHJhbnNmb3JtLmIoKSwgdHJh
bnNmb3JtLmMoKSwgdHJhbnNmb3JtLmQoKSwgdHJhbnNmb3JtLmUoKSwgdHJhbnNmb3JtLmYoKSk7
Ci19Ci0KLXN0YXRpYyB2b2lkIGFkZChIYXNoZXImIGhhc2hlciwgY29uc3QgR3JhZGllbnQ6OkNv
bG9yU3RvcCYgc3RvcCkKLXsKLSAgICBhZGQoaGFzaGVyLCBzdG9wLm9mZnNldCwgc3RvcC5jb2xv
cik7Ci19Ci0KLXN0YXRpYyB2b2lkIGFkZChIYXNoZXImIGhhc2hlciwgY29uc3QgR3JhZGllbnQ6
OkxpbmVhckRhdGEmIGRhdGEpCi17Ci0gICAgYWRkKGhhc2hlciwgZGF0YS5wb2ludDAsIGRhdGEu
cG9pbnQxKTsKLX0KLQotc3RhdGljIHZvaWQgYWRkKEhhc2hlciYgaGFzaGVyLCBjb25zdCBHcmFk
aWVudDo6UmFkaWFsRGF0YSYgZGF0YSkKLXsKLSAgICBhZGQoaGFzaGVyLCBkYXRhLnBvaW50MCwg
ZGF0YS5wb2ludDEsIGRhdGEuc3RhcnRSYWRpdXMsIGRhdGEuZW5kUmFkaXVzLCBkYXRhLmFzcGVj
dFJhdGlvKTsKLX0KLQotc3RhdGljIHZvaWQgYWRkKEhhc2hlciYgaGFzaGVyLCBjb25zdCBHcmFk
aWVudDo6Q29uaWNEYXRhJiBkYXRhKQotewotICAgIGFkZChoYXNoZXIsIGRhdGEucG9pbnQwLCBk
YXRhLmFuZ2xlUmFkaWFucyk7Ci19Ci0KLXVuc2lnbmVkIEdyYWRpZW50OjpoYXNoKCkgY29uc3QK
LXsKLSAgICBpZiAoIW1fY2FjaGVkSGFzaCkgewotICAgICAgICBzb3J0U3RvcHMoKTsKLSAgICAg
ICAgbV9jYWNoZWRIYXNoID0gY29tcHV0ZUhhc2gobV9kYXRhLCBtX3NwcmVhZE1ldGhvZCwgbV9n
cmFkaWVudFNwYWNlVHJhbnNmb3JtYXRpb24sIG1fc3RvcHMpOwotICAgIH0KLSAgICByZXR1cm4g
bV9jYWNoZWRIYXNoOwotfQotCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFkaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhZGllbnQuaAppbmRleCA4MWU5Y2UxYjhlOTFhNTI1MjBjMzcxNzk3OGU3YmQ0YTM3YTZlOWRj
Li4wMzJjNmM4OWNiNzk3ZjE3Mzc3ODc3MDcyYWVlZTJhN2Q3MjBjMTBjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50LmgKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4LCAyMDExLCAyMDEyLCAyMDEzIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNi0yMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwNyBBbHAg
VG9rZXIgPGFscEBhdG9rZXIuY29tPgogICogQ29weXJpZ2h0IChDKSAyMDA4IFRvcmNoIE1vYmls
ZSwgSW5jLgogICoKQEAgLTczLDYgKzczLDExIEBAIHB1YmxpYzoKIAogICAgIHVzaW5nIENvbG9y
U3RvcFZlY3RvciA9IFZlY3RvcjxDb2xvclN0b3AsIDI+OwogCisgICAgc3RydWN0IFBhaW50aW5n
RGF0YSB7CisgICAgICAgIEdyYWRpZW50U3ByZWFkTWV0aG9kIHNwcmVhZE1ldGhvZCB7IEdyYWRp
ZW50U3ByZWFkTWV0aG9kOjpQYWQgfTsKKyAgICAgICAgQWZmaW5lVHJhbnNmb3JtIHNwYWNlVHJh
bnNmb3JtOworICAgIH07CisKICAgICBzdHJ1Y3QgTGluZWFyRGF0YSB7CiAgICAgICAgIEZsb2F0
UG9pbnQgcG9pbnQwOwogICAgICAgICBGbG9hdFBvaW50IHBvaW50MTsKQEAgLTEwNCw4ICsxMDks
NiBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEdyYWRpZW50PiBj
cmVhdGUoRGF0YSYmKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIH5HcmFkaWVudCgpOwotCiAgICAg
Ym9vbCBpc1plcm9TaXplKCkgY29uc3Q7CiAKICAgICBjb25zdCBEYXRhJiBkYXRhKCkgY29uc3Qg
eyByZXR1cm4gbV9kYXRhOyB9CkBAIC0xMTUsMjQgKzExOCwxNiBAQCBwdWJsaWM6CiAKICAgICBj
b25zdCBDb2xvclN0b3BWZWN0b3ImIHN0b3BzKCkgY29uc3QgeyByZXR1cm4gbV9zdG9wczsgfQog
Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTcHJlYWRNZXRob2QoR3JhZGllbnRTcHJlYWRN
ZXRob2QpOwotICAgIEdyYWRpZW50U3ByZWFkTWV0aG9kIHNwcmVhZE1ldGhvZCgpIGNvbnN0IHsg
cmV0dXJuIG1fc3ByZWFkTWV0aG9kOyB9Ci0KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEdy
YWRpZW50U3BhY2VUcmFuc2Zvcm0oY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBncmFkaWVudFNwYWNl
VHJhbnNmb3JtYXRpb24pOwotICAgIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgZ3JhZGllbnRTcGFj
ZVRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1fZ3JhZGllbnRTcGFjZVRyYW5zZm9ybWF0aW9u
OyB9Ci0KICAgICB2b2lkIGZpbGwoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0Jik7
CiAgICAgdm9pZCBhZGp1c3RQYXJhbWV0ZXJzRm9yVGlsZWREcmF3aW5nKEZsb2F0U2l6ZSYsIEZs
b2F0UmVjdCYsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZyk7CiAKLSAgICB1bnNpZ25lZCBoYXNo
KCkgY29uc3Q7Ci0KICNpZiBVU0UoQ0FJUk8pCi0gICAgUmVmUHRyPGNhaXJvX3BhdHRlcm5fdD4g
Y3JlYXRlUGF0dGVybihmbG9hdCBnbG9iYWxBbHBoYSk7CisgICAgUmVmUHRyPGNhaXJvX3BhdHRl
cm5fdD4gY3JlYXRlUGF0dGVybihmbG9hdCBnbG9iYWxBbHBoYSwgY29uc3QgR3JhZGllbnQ6OlBh
aW50aW5nRGF0YSYpOwogI2VuZGlmCiAKICNpZiBVU0UoQ0cpCiAgICAgdm9pZCBwYWludChHcmFw
aGljc0NvbnRleHQmKTsKLSAgICB2b2lkIHBhaW50KENHQ29udGV4dFJlZik7CisgICAgdm9pZCBw
YWludChDR0NvbnRleHRSZWYsIEdyYWRpZW50U3ByZWFkTWV0aG9kKTsKICNlbmRpZgogCiAjaWYg
VVNFKERJUkVDVDJEKQpAQCAtMTU1LDkgKzE1MCw2IEBAIHByaXZhdGU6CiAgICAgRGF0YSBtX2Rh
dGE7CiAgICAgbXV0YWJsZSBDb2xvclN0b3BWZWN0b3IgbV9zdG9wczsKICAgICBtdXRhYmxlIGJv
b2wgbV9zdG9wc1NvcnRlZCB7IGZhbHNlIH07Ci0gICAgR3JhZGllbnRTcHJlYWRNZXRob2QgbV9z
cHJlYWRNZXRob2QgeyBHcmFkaWVudFNwcmVhZE1ldGhvZDo6UGFkIH07Ci0gICAgbXV0YWJsZSB1
bnNpZ25lZCBtX2NhY2hlZEhhc2ggeyAwIH07Ci0gICAgQWZmaW5lVHJhbnNmb3JtIG1fZ3JhZGll
bnRTcGFjZVRyYW5zZm9ybWF0aW9uOwogCiAjaWYgVVNFKENHKQogICAgIFJldGFpblB0cjxDR0dy
YWRpZW50UmVmPiBtX2dyYWRpZW50OwpAQCAtMjc1LDggKzI2Nyw2IEBAIHRlbXBsYXRlPHR5cGVu
YW1lIEVuY29kZXI+IHZvaWQgR3JhZGllbnQ6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25z
dAogICAgIGVuY29kZXIgPDwgbV9kYXRhOwogICAgIGVuY29kZXIgPDwgbV9zdG9wczsKICAgICBl
bmNvZGVyIDw8IG1fc3RvcHNTb3J0ZWQ7Ci0gICAgZW5jb2RlciA8PCBtX3NwcmVhZE1ldGhvZDsK
LSAgICBlbmNvZGVyIDw8IG1fZ3JhZGllbnRTcGFjZVRyYW5zZm9ybWF0aW9uOwogfQogCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBEZWNvZGVyPiBPcHRpb25hbDxSZWY8R3JhZGllbnQ+PiBHcmFkaWVudDo6
ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCkBAIC0zMDIsMTcgKzI5Miw2IEBAIHRlbXBsYXRlPHR5
cGVuYW1lIERlY29kZXI+IE9wdGlvbmFsPFJlZjxHcmFkaWVudD4+IEdyYWRpZW50OjpkZWNvZGUo
RGVjb2RlciYgZGVjCiAgICAgICAgICAgICBncmFkaWVudC0+YWRkQ29sb3JTdG9wKFdURk1vdmUo
c3RvcCkpOwogICAgIH0KIAotICAgIEdyYWRpZW50U3ByZWFkTWV0aG9kIHNwcmVhZE1ldGhvZDsK
LSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHNwcmVhZE1ldGhvZCkpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7Ci0gICAgZ3JhZGllbnQtPnNldFNwcmVhZE1ldGhvZChzcHJlYWRNZXRob2Qp
OwotCi0gICAgT3B0aW9uYWw8QWZmaW5lVHJhbnNmb3JtPiBncmFkaWVudFNwYWNlVHJhbnNmb3Jt
YXRpb247Ci0gICAgZGVjb2RlciA+PiBncmFkaWVudFNwYWNlVHJhbnNmb3JtYXRpb247Ci0gICAg
aWYgKCFncmFkaWVudFNwYWNlVHJhbnNmb3JtYXRpb24pCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7Ci0gICAgZ3JhZGllbnQtPnNldEdyYWRpZW50U3BhY2VUcmFuc2Zvcm0oV1RGTW92ZSgq
Z3JhZGllbnRTcGFjZVRyYW5zZm9ybWF0aW9uKSk7Ci0KICAgICByZXR1cm4gZ3JhZGllbnQ7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50
SW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFn
ZS5jcHAKaW5kZXggMzExNGRiOTAxNmVlYjdmYWM5OGVmNWY1NzgzNjA0YzVjMDg0MGZlMC4uZWYx
ZTI5MmZhYTZmYzNhNjAwNTQ5OTljYTM0YWU2ZTUyZmNhZTg5NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFnZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFnZS5jcHAKQEAgLTY5LDkgKzY5
LDkgQEAgdm9pZCBHcmFkaWVudEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGRl
c3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGQKICAgICBhZGp1c3RlZFBhdHRlcm5DVE0uc2Nh
bGUoMS4wIC8geFNjYWxlLCAxLjAgLyB5U2NhbGUpOwogICAgIGFkanVzdGVkU3JjUmVjdC5zY2Fs
ZSh4U2NhbGUsIHlTY2FsZSk7CiAKLSAgICB1bnNpZ25lZCBnZW5lcmF0b3JIYXNoID0gbV9ncmFk
aWVudC0+aGFzaCgpOworICAgIHNpemVfdCBnZW5lcmF0b3JTdG9wc1NpemUgPSBtX2dyYWRpZW50
LT5zdG9wcygpLnNpemUoKTsKIAotICAgIGlmICghbV9jYWNoZWRJbWFnZSB8fCBtX2NhY2hlZEdl
bmVyYXRvckhhc2ggIT0gZ2VuZXJhdG9ySGFzaCB8fCBtX2NhY2hlZEFkanVzdGVkU2l6ZSAhPSBh
ZGp1c3RlZFNpemUgfHwgIWFyZUVzc2VudGlhbGx5RXF1YWwoZGVzdENvbnRleHQuc2NhbGVGYWN0
b3IoKSwgbV9jYWNoZWRTY2FsZUZhY3RvcikpIHsKKyAgICBpZiAoIW1fY2FjaGVkSW1hZ2UgfHwg
bV9jYWNoZWRHZW5lcmF0b3JTdG9wc1NpemUgIT0gZ2VuZXJhdG9yU3RvcHNTaXplIHx8IG1fY2Fj
aGVkQWRqdXN0ZWRTaXplICE9IGFkanVzdGVkU2l6ZSB8fCAhYXJlRXNzZW50aWFsbHlFcXVhbChk
ZXN0Q29udGV4dC5zY2FsZUZhY3RvcigpLCBtX2NhY2hlZFNjYWxlRmFjdG9yKSkgewogICAgICAg
ICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIo
YWRqdXN0ZWRTaXplLCBDb2xvclNwYWNlOjpTUkdCLCBkZXN0Q29udGV4dCk7CiAgICAgICAgIGlm
ICghaW1hZ2VCdWZmZXIpCiAgICAgICAgICAgICByZXR1cm47CkBAIC03OSw3ICs3OSw3IEBAIHZv
aWQgR3JhZGllbnRJbWFnZTo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4
dCwgY29uc3QgRmxvYXRSZWN0JiBkCiAgICAgICAgIC8vIEZpbGwgd2l0aCB0aGUgZ2VuZXJhdGVk
IGltYWdlLgogICAgICAgICBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpLmZpbGxSZWN0KEZsb2F0UmVj
dChGbG9hdFBvaW50KCksIGFkanVzdGVkU2l6ZSksIG1fZ3JhZGllbnQuZ2V0KCkpOwogCi0gICAg
ICAgIG1fY2FjaGVkR2VuZXJhdG9ySGFzaCA9IGdlbmVyYXRvckhhc2g7CisgICAgICAgIG1fY2Fj
aGVkR2VuZXJhdG9yU3RvcHNTaXplID0gZ2VuZXJhdG9yU3RvcHNTaXplOwogICAgICAgICBtX2Nh
Y2hlZEFkanVzdGVkU2l6ZSA9IGFkanVzdGVkU2l6ZTsKICAgICAgICAgbV9jYWNoZWRTY2FsZUZh
Y3RvciA9IGRlc3RDb250ZXh0LnNjYWxlRmFjdG9yKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuaAppbmRleCAwY2MxODQzOWMxNDdmOTM0
ZGRlMTkzMDc0OGRhNzBjM2ZiMTc1YTdiLi5lN2JlNzI4ZWNjYTJhYzMyNGM5NDliNjEwNTBkZWYx
NTY1OWMxNWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFkaWVudEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
ZGllbnRJbWFnZS5oCkBAIC01NCw3ICs1NCw3IEBAIHByaXZhdGU6CiAgICAgUmVmPEdyYWRpZW50
PiBtX2dyYWRpZW50OwogICAgIFJlZlB0cjxJbWFnZT4gbV9jYWNoZWRJbWFnZTsKICAgICBGbG9h
dFNpemUgbV9jYWNoZWRBZGp1c3RlZFNpemU7Ci0gICAgdW5zaWduZWQgbV9jYWNoZWRHZW5lcmF0
b3JIYXNoOworICAgIHNpemVfdCBtX2NhY2hlZEdlbmVyYXRvclN0b3BzU2l6ZSB7IDAgfTsKICAg
ICBGbG9hdFNpemUgbV9jYWNoZWRTY2FsZUZhY3RvcjsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCmluZGV4IDc4NDQ3
N2EyZWZhYTYyMzkxYTZmODBjMGQ5NDFkMjg4NDg2YTUzZjMuLmM0MGJhZTNlMjM5Mjc2NTEyMzdj
MDMyMzM3OWVkZjM2NjNjNGQ0YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcApAQCAtMjExLDEzICsyMTEsMTMgQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZTo6YWNjdW11bGF0ZShjb25zdCBHcmFwaGljc0Nv
bnRleHRTdGF0ZSYgc3RhdGUsIEcKIHZvaWQgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2U6OmFw
cGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKIHsKICAgICBpZiAobV9jaGFuZ2VG
bGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlR3JhZGllbnRDaGFuZ2Up
KQotICAgICAgICBjb250ZXh0LnNldFN0cm9rZUdyYWRpZW50KCptX3N0YXRlLnN0cm9rZUdyYWRp
ZW50KTsKKyAgICAgICAgY29udGV4dC5zZXRTdHJva2VHcmFkaWVudCgqbV9zdGF0ZS5zdHJva2VH
cmFkaWVudCwgbV9zdGF0ZS5zdHJva2VHcmFkaWVudFBhaW50aW5nRGF0YSk7CiAKICAgICBpZiAo
bV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlUGF0dGVy
bkNoYW5nZSkpCiAgICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlUGF0dGVybigqbV9zdGF0ZS5zdHJv
a2VQYXR0ZXJuKTsKIAogICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpGaWxsR3JhZGllbnRDaGFuZ2UpKQotICAgICAgICBjb250ZXh0LnNldEZpbGxH
cmFkaWVudCgqbV9zdGF0ZS5maWxsR3JhZGllbnQpOworICAgICAgICBjb250ZXh0LnNldEZpbGxH
cmFkaWVudCgqbV9zdGF0ZS5maWxsR3JhZGllbnQsIG1fc3RhdGUuZmlsbEdyYWRpZW50UGFpbnRp
bmdEYXRhKTsKIAogICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4
dFN0YXRlOjpGaWxsUGF0dGVybkNoYW5nZSkpCiAgICAgICAgIGNvbnRleHQuc2V0RmlsbFBhdHRl
cm4oKm1fc3RhdGUuZmlsbFBhdHRlcm4pOwpAQCAtNjIwLDEwICs2MjAsMTEgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHQ6OnNldEZpbGxQYXR0ZXJuKFJlZjxQYXR0ZXJuPiYmIHBhdHRlcm4pCiAgICAg
ICAgIG1faW1wbC0+dXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZp
bGxQYXR0ZXJuQ2hhbmdlKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFN0cm9rZUdy
YWRpZW50KFJlZjxHcmFkaWVudD4mJiBncmFkaWVudCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0Ojpz
ZXRTdHJva2VHcmFkaWVudChSZWY8R3JhZGllbnQ+JiYgZ3JhZGllbnQsIGNvbnN0IEdyYWRpZW50
OjpQYWludGluZ0RhdGEmIHBhaW50aW5nRGF0YSkKIHsKICAgICBtX3N0YXRlLnN0cm9rZUNvbG9y
ID0geyB9OwogICAgIG1fc3RhdGUuc3Ryb2tlR3JhZGllbnQgPSBXVEZNb3ZlKGdyYWRpZW50KTsK
KyAgICBtX3N0YXRlLnN0cm9rZUdyYWRpZW50UGFpbnRpbmdEYXRhID0gcGFpbnRpbmdEYXRhOwog
ICAgIG1fc3RhdGUuc3Ryb2tlUGF0dGVybiA9IG51bGxwdHI7CiAgICAgaWYgKG1faW1wbCkKICAg
ICAgICAgbV9pbXBsLT51cGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6
U3Ryb2tlR3JhZGllbnRDaGFuZ2UpOwpAQCAtNjM2LDEwICs2MzcsMTEgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHQ6OnNldEZpbGxSdWxlKFdpbmRSdWxlIGZpbGxSdWxlKQogICAgICAgICBtX2ltcGwt
PnVwZGF0ZVN0YXRlKG1fc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsUnVsZUNoYW5n
ZSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRGaWxsR3JhZGllbnQoUmVmPEdyYWRp
ZW50PiYmIGdyYWRpZW50KQordm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldEZpbGxHcmFkaWVudChS
ZWY8R3JhZGllbnQ+JiYgZ3JhZGllbnQsIGNvbnN0IEdyYWRpZW50OjpQYWludGluZ0RhdGEmIHBh
aW50aW5nRGF0YSkKIHsKICAgICBtX3N0YXRlLmZpbGxDb2xvciA9IHsgfTsKICAgICBtX3N0YXRl
LmZpbGxHcmFkaWVudCA9IFdURk1vdmUoZ3JhZGllbnQpOworICAgIG1fc3RhdGUuZmlsbEdyYWRp
ZW50UGFpbnRpbmdEYXRhID0gcGFpbnRpbmdEYXRhOwogICAgIG1fc3RhdGUuZmlsbFBhdHRlcm4g
PSBudWxscHRyOwogICAgIGlmIChtX2ltcGwpCiAgICAgICAgIG1faW1wbC0+dXBkYXRlU3RhdGUo
bV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxHcmFkaWVudENoYW5nZSk7IC8vIEZJ
WE1FOiBhbHNvIGZpbGwgcGF0dGVybj8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKaW5kZXggMjVjNjY0NGYxMjk3ZmM0N2MzODcyZWI1
ZDU4ZWIyZjBkZTQxYjU1Ni4uMzIwODNkMWZjN2QyMmRjYjYyZDYzMjRjZTNmODhhN2U5YzExOGU0
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0LmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJEYXNoQXJyYXkuaCIKICNpbmNs
dWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJGb250Q2FzY2FkZS5oIgorI2luY2x1ZGUgIkdy
YWRpZW50LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NUeXBlcy5oIgogI2luY2x1ZGUgIkltYWdlLmgi
CiAjaW5jbHVkZSAiSW1hZ2VPcmllbnRhdGlvbi5oIgpAQCAtODcsNyArODgsNiBAQCBjbGFzcyBH
bHlwaEJ1ZmZlcjsKIAogY2xhc3MgQWZmaW5lVHJhbnNmb3JtOwogY2xhc3MgRmxvYXRSb3VuZGVk
UmVjdDsKLWNsYXNzIEdyYWRpZW50OwogY2xhc3MgR3JhcGhpY3NDb250ZXh0SW1wbDsKIGNsYXNz
IEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZTsKIGNsYXNzIEltYWdlQnVmZmVyOwpAQCAt
MjEyLDYgKzIxMiw5IEBAIHN0cnVjdCBHcmFwaGljc0NvbnRleHRTdGF0ZSB7CiAgICAgQ29sb3Ig
ZmlsbENvbG9yIHsgQ29sb3I6OmJsYWNrIH07CiAgICAgQ29sb3Igc2hhZG93Q29sb3I7CiAKKyAg
ICBHcmFkaWVudDo6UGFpbnRpbmdEYXRhIHN0cm9rZUdyYWRpZW50UGFpbnRpbmdEYXRhOworICAg
IEdyYWRpZW50OjpQYWludGluZ0RhdGEgZmlsbEdyYWRpZW50UGFpbnRpbmdEYXRhOworICAgIAog
ICAgIFN0cm9rZVN0eWxlIHN0cm9rZVN0eWxlIHsgU29saWRTdHJva2UgfTsKICAgICBXaW5kUnVs
ZSBmaWxsUnVsZSB7IFdpbmRSdWxlOjpOb25aZXJvIH07CiAKQEAgLTMwMyw3ICszMDYsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzZXRTdHJva2VQYXR0ZXJuKFJlZjxQYXR0ZXJuPiYmKTsKICAgICBQ
YXR0ZXJuKiBzdHJva2VQYXR0ZXJuKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5zdHJva2VQYXR0
ZXJuLmdldCgpOyB9CiAKLSAgICB2b2lkIHNldFN0cm9rZUdyYWRpZW50KFJlZjxHcmFkaWVudD4m
Jik7CisgICAgdm9pZCBzZXRTdHJva2VHcmFkaWVudChSZWY8R3JhZGllbnQ+JiYsIGNvbnN0IEdy
YWRpZW50OjpQYWludGluZ0RhdGEmID0geyB9KTsKICAgICBHcmFkaWVudCogc3Ryb2tlR3JhZGll
bnQoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLnN0cm9rZUdyYWRpZW50LmdldCgpOyB9CiAKICAg
ICB2b2lkIHNldEZpbGxSdWxlKFdpbmRSdWxlKTsKQEAgLTMxNSw3ICszMTgsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzZXRGaWxsUGF0dGVybihSZWY8UGF0dGVybj4mJik7CiAgICAgUGF0dGVybiog
ZmlsbFBhdHRlcm4oKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLmZpbGxQYXR0ZXJuLmdldCgpOyB9
CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEZpbGxHcmFkaWVudChSZWY8R3JhZGllbnQ+
JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0RmlsbEdyYWRpZW50KFJlZjxHcmFkaWVu
dD4mJiwgY29uc3QgR3JhZGllbnQ6OlBhaW50aW5nRGF0YSYgPSB7IH0pOwogICAgIEdyYWRpZW50
KiBmaWxsR3JhZGllbnQoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLmZpbGxHcmFkaWVudC5nZXQo
KTsgfQogCiAgICAgdm9pZCBzZXRTaGFkb3dzSWdub3JlVHJhbnNmb3Jtcyhib29sKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvT3BlcmF0
aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb09w
ZXJhdGlvbnMuY3BwCmluZGV4IDk3NzEyOTBmNDM2MjA2ZWI4NTMwZjI1ODRlYjhlM2NmZDdhOWE1
MTkuLmZmNDQ0MWQ2NDk5NGY4YWViOGQ1OGMxMmJiYWJkZTA4NTIzYzc3NjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvT3BlcmF0aW9ucy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9PcGVy
YXRpb25zLmNwcApAQCAtNTcyLDkgKzU3Miw5IEBAIEZpbGxTb3VyY2U6OkZpbGxTb3VyY2UoY29u
c3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlKQogICAgICAgICBwYXR0ZXJuLnJlcGVhdFgg
PSBzdGF0ZS5maWxsUGF0dGVybi0+cmVwZWF0WCgpOwogICAgICAgICBwYXR0ZXJuLnJlcGVhdFkg
PSBzdGF0ZS5maWxsUGF0dGVybi0+cmVwZWF0WSgpOwogICAgIH0gZWxzZSBpZiAoc3RhdGUuZmls
bEdyYWRpZW50KSB7Ci0gICAgICAgIGdyYWRpZW50LmJhc2UgPSBzdGF0ZS5maWxsR3JhZGllbnQt
PmNyZWF0ZVBhdHRlcm4oMSk7CisgICAgICAgIGdyYWRpZW50LmJhc2UgPSBzdGF0ZS5maWxsR3Jh
ZGllbnQtPmNyZWF0ZVBhdHRlcm4oMSwgc3RhdGUuZmlsbEdyYWRpZW50UGFpbnRpbmdEYXRhKTsK
ICAgICAgICAgaWYgKHN0YXRlLmFscGhhICE9IDEpCi0gICAgICAgICAgICBncmFkaWVudC5hbHBo
YUFkanVzdGVkID0gc3RhdGUuZmlsbEdyYWRpZW50LT5jcmVhdGVQYXR0ZXJuKHN0YXRlLmFscGhh
KTsKKyAgICAgICAgICAgIGdyYWRpZW50LmFscGhhQWRqdXN0ZWQgPSBzdGF0ZS5maWxsR3JhZGll
bnQtPmNyZWF0ZVBhdHRlcm4oc3RhdGUuYWxwaGEsIHN0YXRlLmZpbGxHcmFkaWVudFBhaW50aW5n
RGF0YSk7CiAgICAgfSBlbHNlCiAgICAgICAgIGNvbG9yID0gc3RhdGUuZmlsbENvbG9yOwogfQpA
QCAtNTg1LDkgKzU4NSw5IEBAIFN0cm9rZVNvdXJjZTo6U3Ryb2tlU291cmNlKGNvbnN0IEdyYXBo
aWNzQ29udGV4dFN0YXRlJiBzdGF0ZSkKICAgICBpZiAoc3RhdGUuc3Ryb2tlUGF0dGVybikKICAg
ICAgICAgcGF0dGVybiA9IGFkb3B0UmVmKHN0YXRlLnN0cm9rZVBhdHRlcm4tPmNyZWF0ZVBsYXRm
b3JtUGF0dGVybihBZmZpbmVUcmFuc2Zvcm0oKSkpOwogICAgIGVsc2UgaWYgKHN0YXRlLnN0cm9r
ZUdyYWRpZW50KSB7Ci0gICAgICAgIGdyYWRpZW50LmJhc2UgPSBzdGF0ZS5zdHJva2VHcmFkaWVu
dC0+Y3JlYXRlUGF0dGVybigxKTsKKyAgICAgICAgZ3JhZGllbnQuYmFzZSA9IHN0YXRlLnN0cm9r
ZUdyYWRpZW50LT5jcmVhdGVQYXR0ZXJuKDEsIHN0YXRlLnN0cm9rZUdyYWRpZW50UGFpbnRpbmdE
YXRhKTsKICAgICAgICAgaWYgKHN0YXRlLmFscGhhICE9IDEpCi0gICAgICAgICAgICBncmFkaWVu
dC5hbHBoYUFkanVzdGVkID0gc3RhdGUuc3Ryb2tlR3JhZGllbnQtPmNyZWF0ZVBhdHRlcm4oc3Rh
dGUuYWxwaGEpOworICAgICAgICAgICAgZ3JhZGllbnQuYWxwaGFBZGp1c3RlZCA9IHN0YXRlLnN0
cm9rZUdyYWRpZW50LT5jcmVhdGVQYXR0ZXJuKHN0YXRlLmFscGhhLCBzdGF0ZS5zdHJva2VHcmFk
aWVudFBhaW50aW5nRGF0YSk7CiAgICAgfSBlbHNlCiAgICAgICAgIGNvbG9yID0gc3RhdGUuc3Ry
b2tlQ29sb3I7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9HcmFkaWVudENhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0dyYWRpZW50Q2Fpcm8uY3BwCmluZGV4IGViYjY1NDAyMzBlMzNlYjllMjI2MmY2
YjVhOGFlNzM3NGRhYTEyZGIuLmEwY2EyY2NkZjBjNjgwZTlhZmIyMDJjYzI3YmY0YmJhZDhiM2Yz
M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dy
YWRpZW50Q2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0dyYWRpZW50Q2Fpcm8uY3BwCkBAIC0xNTgsNyArMTU4LDcgQEAgc3RhdGljIFJlZlB0cjxj
YWlyb19wYXR0ZXJuX3Q+IGNyZWF0ZUNvbmljKGZsb2F0IHhvLCBmbG9hdCB5bywgZmxvYXQgciwg
ZmxvYXQgYW4KICAgICByZXR1cm4gZ3JhZGllbnQ7CiB9CiAKLVJlZlB0cjxjYWlyb19wYXR0ZXJu
X3Q+IEdyYWRpZW50OjpjcmVhdGVQYXR0ZXJuKGZsb2F0IGdsb2JhbEFscGhhKQorUmVmUHRyPGNh
aXJvX3BhdHRlcm5fdD4gR3JhZGllbnQ6OmNyZWF0ZVBhdHRlcm4oZmxvYXQgZ2xvYmFsQWxwaGEs
IGNvbnN0IEdyYWRpZW50OjpQYWludGluZ0RhdGEmIHBhaW50aW5nRGF0YSkKIHsKICAgICBhdXRv
IGdyYWRpZW50ID0gV1RGOjpzd2l0Y2hPbihtX2RhdGEsCiAgICAgICAgIFsmXSAoY29uc3QgTGlu
ZWFyRGF0YSYgZGF0YSkgewpAQCAtMTgzLDcgKzE4Myw3IEBAIFJlZlB0cjxjYWlyb19wYXR0ZXJu
X3Q+IEdyYWRpZW50OjpjcmVhdGVQYXR0ZXJuKGZsb2F0IGdsb2JhbEFscGhhKQogICAgICAgICB9
CiAgICAgKTsKIAotICAgIHN3aXRjaCAobV9zcHJlYWRNZXRob2QpIHsKKyAgICBzd2l0Y2ggKHBh
aW50aW5nRGF0YS5zcHJlYWRNZXRob2QpIHsKICAgICBjYXNlIEdyYWRpZW50U3ByZWFkTWV0aG9k
OjpQYWQ6CiAgICAgICAgIGNhaXJvX3BhdHRlcm5fc2V0X2V4dGVuZChncmFkaWVudC5nZXQoKSwg
Q0FJUk9fRVhURU5EX1BBRCk7CiAgICAgICAgIGJyZWFrOwpAQCAtMTk1LDcgKzE5NSw3IEBAIFJl
ZlB0cjxjYWlyb19wYXR0ZXJuX3Q+IEdyYWRpZW50OjpjcmVhdGVQYXR0ZXJuKGZsb2F0IGdsb2Jh
bEFscGhhKQogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBjYWlyb19tYXRyaXhfdCBtYXRy
aXggPSB0b0NhaXJvTWF0cml4KG1fZ3JhZGllbnRTcGFjZVRyYW5zZm9ybWF0aW9uKTsKKyAgICBj
YWlyb19tYXRyaXhfdCBtYXRyaXggPSB0b0NhaXJvTWF0cml4KHBhaW50aW5nRGF0YS5zcGFjZVRy
YW5zZm9ybSk7CiAgICAgY2Fpcm9fbWF0cml4X2ludmVydCgmbWF0cml4KTsKICAgICBjYWlyb19w
YXR0ZXJuX3NldF9tYXRyaXgoZ3JhZGllbnQuZ2V0KCksICZtYXRyaXgpOwogCkBAIC0yMDQsNyAr
MjA0LDcgQEAgUmVmUHRyPGNhaXJvX3BhdHRlcm5fdD4gR3JhZGllbnQ6OmNyZWF0ZVBhdHRlcm4o
ZmxvYXQgZ2xvYmFsQWxwaGEpCiAKIHZvaWQgR3JhZGllbnQ6OmZpbGwoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiB7Ci0gICAgYXV0byBwYXR0ZXJuID0g
Y3JlYXRlUGF0dGVybigxLjApOworICAgIGF1dG8gcGF0dGVybiA9IGNyZWF0ZVBhdHRlcm4oMS4w
LCBjb250ZXh0LnN0YXRlKCkuZmlsbEdyYWRpZW50UGFpbnRpbmdEYXRhKTsKICAgICBpZiAoIXBh
dHRlcm4pCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWly
by5jcHAKaW5kZXggMTQ2YTVlY2FkNTA1MTQ1YzlmODk1MDZlYzhkYjA1NzcyMzZlYjNmNy4uMTcy
MWZlNjg4MzM5MzVmYzU0NGZhNzc3YzdlMThlZjRmZWUzZmI5OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJv
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGlj
c0NvbnRleHRJbXBsQ2Fpcm8uY3BwCkBAIC0xNTQsNyArMTU0LDggQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHRJbXBsQ2Fpcm86OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgQ29s
b3ImIGNvbG8KIAogdm9pZCBHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmZpbGxSZWN0KGNvbnN0
IEZsb2F0UmVjdCYgcmVjdCwgR3JhZGllbnQmIGdyYWRpZW50KQogewotICAgIGF1dG8gcGF0dGVy
biA9IGdyYWRpZW50LmNyZWF0ZVBhdHRlcm4oMS4wKTsKKyAgICBhdXRvJiBzdGF0ZSA9IGdyYXBo
aWNzQ29udGV4dCgpLnN0YXRlKCk7CisgICAgYXV0byBwYXR0ZXJuID0gZ3JhZGllbnQuY3JlYXRl
UGF0dGVybigxLjAsIHN0YXRlLmZpbGxHcmFkaWVudFBhaW50aW5nRGF0YSk7CiAgICAgaWYgKCFw
YXR0ZXJuKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0dyYWRpZW50Q0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvR3JhZGllbnRDRy5jcHAKaW5kZXggODEwOTJiOGU3OWY1M2ZiYjgzYzhm
NWE2YTc3MjEyZjA0NTM1YjY1Ny4uYzhhN2U3MzEwZTA3ZmI4YmEyMDg0MzU4MjUzNzIxZWU2NDlm
NmY5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3Jh
ZGllbnRDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3Jh
ZGllbnRDRy5jcHAKQEAgLTkxLDEwICs5MSwxMCBAQCB2b2lkIEdyYWRpZW50OjpmaWxsKEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0KQogCiB2b2lkIEdyYWRp
ZW50OjpwYWludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiB7Ci0gICAgcGFpbnQoY29udGV4
dC5wbGF0Zm9ybUNvbnRleHQoKSk7CisgICAgcGFpbnQoY29udGV4dC5wbGF0Zm9ybUNvbnRleHQo
KSwgY29udGV4dC5zdGF0ZSgpLmZpbGxHcmFkaWVudFBhaW50aW5nRGF0YS5zcHJlYWRNZXRob2Qp
OwogfQogCi12b2lkIEdyYWRpZW50OjpwYWludChDR0NvbnRleHRSZWYgcGxhdGZvcm1Db250ZXh0
KQordm9pZCBHcmFkaWVudDo6cGFpbnQoQ0dDb250ZXh0UmVmIHBsYXRmb3JtQ29udGV4dCwgR3Jh
ZGllbnRTcHJlYWRNZXRob2Qgc3ByZWFkTWV0aG9kKQogewogICAgIENHR3JhZGllbnREcmF3aW5n
T3B0aW9ucyBleHRlbmRPcHRpb25zID0ga0NHR3JhZGllbnREcmF3c0JlZm9yZVN0YXJ0TG9jYXRp
b24gfCBrQ0dHcmFkaWVudERyYXdzQWZ0ZXJFbmRMb2NhdGlvbjsKIApAQCAtMTAzLDcgKzEwMyw3
IEBAIHZvaWQgR3JhZGllbnQ6OnBhaW50KENHQ29udGV4dFJlZiBwbGF0Zm9ybUNvbnRleHQpCiAK
ICAgICBXVEY6OnN3aXRjaE9uKG1fZGF0YSwKICAgICAgICAgWyZdIChjb25zdCBMaW5lYXJEYXRh
JiBkYXRhKSB7Ci0gICAgICAgICAgICBzd2l0Y2ggKG1fc3ByZWFkTWV0aG9kKSB7CisgICAgICAg
ICAgICBzd2l0Y2ggKHNwcmVhZE1ldGhvZCkgewogICAgICAgICAgICAgY2FzZSBHcmFkaWVudFNw
cmVhZE1ldGhvZDo6UmVwZWF0OgogICAgICAgICAgICAgY2FzZSBHcmFkaWVudFNwcmVhZE1ldGhv
ZDo6UmVmbGVjdDogewogICAgICAgICAgICAgICAgIENHQ29udGV4dFN0YXRlU2F2ZXIgc2F2ZVN0
YXRlKHBsYXRmb3JtQ29udGV4dCk7CkBAIC0xMjgsNyArMTI4LDcgQEAgdm9pZCBHcmFkaWVudDo6
cGFpbnQoQ0dDb250ZXh0UmVmIHBsYXRmb3JtQ29udGV4dCkKIAogICAgICAgICAgICAgICAgICAg
ICBDR0Zsb2F0IGdyYWRpZW50U3RhcnQgPSBwb2ludDAueCgpOwogICAgICAgICAgICAgICAgICAg
ICBDR0Zsb2F0IGdyYWRpZW50RW5kID0gcG9pbnQxLngoKTsKLSAgICAgICAgICAgICAgICAgICAg
Ym9vbCBmbGlwID0gbV9zcHJlYWRNZXRob2QgPT0gR3JhZGllbnRTcHJlYWRNZXRob2Q6OlJlZmxl
Y3Q7CisgICAgICAgICAgICAgICAgICAgIGJvb2wgZmxpcCA9IHNwcmVhZE1ldGhvZCA9PSBHcmFk
aWVudFNwcmVhZE1ldGhvZDo6UmVmbGVjdDsKIAogICAgICAgICAgICAgICAgICAgICAvLyBGaW5k
IGZpcnN0IGdyYWRpZW50IHBvc2l0aW9uIHRvIHRoZSBsZWZ0IG9mIHRoZSBib3VuZGluZyBib3gK
ICAgICAgICAgICAgICAgICAgICAgaW50IG4gPSBDR0Zsb29yKChib3VuZGluZ0JveC5vcmlnaW4u
eCAtIGdyYWRpZW50U3RhcnQpIC8gd2lkdGgpOwpAQCAtMTQ0LDcgKzE0NCw3IEBAIHZvaWQgR3Jh
ZGllbnQ6OnBhaW50KENHQ29udGV4dFJlZiBwbGF0Zm9ybUNvbnRleHQpCiAKICAgICAgICAgICAg
ICAgICAgICAgICAgIENHQ29udGV4dERyYXdMaW5lYXJHcmFkaWVudChwbGF0Zm9ybUNvbnRleHQs
IG1fZ3JhZGllbnQuZ2V0KCksIGxlZnQsIHJpZ2h0LCBleHRlbmRPcHRpb25zKTsKIAotICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKG1fc3ByZWFkTWV0aG9kID09IEdyYWRpZW50U3ByZWFkTWV0
aG9kOjpSZWZsZWN0KQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNwcmVhZE1ldGhvZCA9
PSBHcmFkaWVudFNwcmVhZE1ldGhvZDo6UmVmbGVjdCkKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBmbGlwID0gIWZsaXA7CiAgICAgICAgICAgICAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cu
Y3BwCmluZGV4IDg4MjRjNzI4NDNlMjcyNzRmZjRhMzg4YzA1Y2Q1MzE5MmU2M2E5MGIuLjc0NzI1
N2JkODllNDQyMzE1MDA1YmRmMTg0MTVhNjA5ZTMwNDk1ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAK
QEAgLTc0OSwyMSArNzQ5LDIxIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUGF0aChjb25z
dCBQYXRoJiBwYXRoKQogICAgICAgICAgICAgQ0dDb250ZXh0VHJhbnNsYXRlQ1RNKGxheWVyQ29u
dGV4dCwgLXJlY3QueCgpLCAtcmVjdC55KCkpOwogICAgICAgICAgICAgQ0dDb250ZXh0QmVnaW5Q
YXRoKGxheWVyQ29udGV4dCk7CiAgICAgICAgICAgICBDR0NvbnRleHRBZGRQYXRoKGxheWVyQ29u
dGV4dCwgcGF0aC5wbGF0Zm9ybVBhdGgoKSk7Ci0gICAgICAgICAgICBDR0NvbnRleHRDb25jYXRD
VE0obGF5ZXJDb250ZXh0LCBtX3N0YXRlLmZpbGxHcmFkaWVudC0+Z3JhZGllbnRTcGFjZVRyYW5z
Zm9ybSgpKTsKKyAgICAgICAgICAgIENHQ29udGV4dENvbmNhdENUTShsYXllckNvbnRleHQsIG1f
c3RhdGUuZmlsbEdyYWRpZW50UGFpbnRpbmdEYXRhLnNwYWNlVHJhbnNmb3JtKTsKIAogICAgICAg
ICAgICAgaWYgKGZpbGxSdWxlKCkgPT0gV2luZFJ1bGU6OkV2ZW5PZGQpCiAgICAgICAgICAgICAg
ICAgQ0dDb250ZXh0RU9DbGlwKGxheWVyQ29udGV4dCk7CiAgICAgICAgICAgICBlbHNlCiAgICAg
ICAgICAgICAgICAgQ0dDb250ZXh0Q2xpcChsYXllckNvbnRleHQpOwogCi0gICAgICAgICAgICBt
X3N0YXRlLmZpbGxHcmFkaWVudC0+cGFpbnQobGF5ZXJDb250ZXh0KTsKKyAgICAgICAgICAgIG1f
c3RhdGUuZmlsbEdyYWRpZW50LT5wYWludChsYXllckNvbnRleHQsIG1fc3RhdGUuZmlsbEdyYWRp
ZW50UGFpbnRpbmdEYXRhLnNwcmVhZE1ldGhvZCk7CiAgICAgICAgICAgICBDR0NvbnRleHREcmF3
TGF5ZXJJblJlY3QoY29udGV4dCwgcmVjdCwgbGF5ZXIpOwogICAgICAgICAgICAgQ0dMYXllclJl
bGVhc2UobGF5ZXIpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgQ0dDb250ZXh0QmVn
aW5QYXRoKGNvbnRleHQpOwogICAgICAgICAgICAgQ0dDb250ZXh0QWRkUGF0aChjb250ZXh0LCBw
YXRoLnBsYXRmb3JtUGF0aCgpKTsKICAgICAgICAgICAgIENHQ29udGV4dFN0YXRlU2F2ZXIgc3Rh
dGVTYXZlcihjb250ZXh0KTsKLSAgICAgICAgICAgIENHQ29udGV4dENvbmNhdENUTShjb250ZXh0
LCBtX3N0YXRlLmZpbGxHcmFkaWVudC0+Z3JhZGllbnRTcGFjZVRyYW5zZm9ybSgpKTsKKyAgICAg
ICAgICAgIENHQ29udGV4dENvbmNhdENUTShjb250ZXh0LCBtX3N0YXRlLmZpbGxHcmFkaWVudFBh
aW50aW5nRGF0YS5zcGFjZVRyYW5zZm9ybSk7CiAKICAgICAgICAgICAgIGlmIChmaWxsUnVsZSgp
ID09IFdpbmRSdWxlOjpFdmVuT2RkKQogICAgICAgICAgICAgICAgIENHQ29udGV4dEVPQ2xpcChj
b250ZXh0KTsKQEAgLTgyNyw4ICs4MjcsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c3Ryb2tl
UGF0aChjb25zdCBQYXRoJiBwYXRoKQogICAgICAgICAgICAgQ0dDb250ZXh0QWRkUGF0aChsYXll
ckNvbnRleHQsIHBhdGgucGxhdGZvcm1QYXRoKCkpOwogICAgICAgICAgICAgQ0dDb250ZXh0UmVw
bGFjZVBhdGhXaXRoU3Ryb2tlZFBhdGgobGF5ZXJDb250ZXh0KTsKICAgICAgICAgICAgIENHQ29u
dGV4dENsaXAobGF5ZXJDb250ZXh0KTsKLSAgICAgICAgICAgIENHQ29udGV4dENvbmNhdENUTShs
YXllckNvbnRleHQsIG1fc3RhdGUuc3Ryb2tlR3JhZGllbnQtPmdyYWRpZW50U3BhY2VUcmFuc2Zv
cm0oKSk7Ci0gICAgICAgICAgICBtX3N0YXRlLnN0cm9rZUdyYWRpZW50LT5wYWludChsYXllckNv
bnRleHQpOworICAgICAgICAgICAgQ0dDb250ZXh0Q29uY2F0Q1RNKGxheWVyQ29udGV4dCwgbV9z
dGF0ZS5zdHJva2VHcmFkaWVudFBhaW50aW5nRGF0YS5zcGFjZVRyYW5zZm9ybSk7CisgICAgICAg
ICAgICBtX3N0YXRlLnN0cm9rZUdyYWRpZW50LT5wYWludChsYXllckNvbnRleHQsIG1fc3RhdGUu
c3Ryb2tlR3JhZGllbnRQYWludGluZ0RhdGEuc3ByZWFkTWV0aG9kKTsKIAogICAgICAgICAgICAg
ZmxvYXQgZGVzdGluYXRpb25YID0gcm91bmRmKHJlY3QueCgpIC0gbGluZVdpZHRoKTsKICAgICAg
ICAgICAgIGZsb2F0IGRlc3RpbmF0aW9uWSA9IHJvdW5kZihyZWN0LnkoKSAtIGxpbmVXaWR0aCk7
CkBAIC04NDAsNyArODQwLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnN0cm9rZVBhdGgoY29u
c3QgUGF0aCYgcGF0aCkKICAgICAgICAgICAgIENHQ29udGV4dEFkZFBhdGgoY29udGV4dCwgcGF0
aC5wbGF0Zm9ybVBhdGgoKSk7CiAgICAgICAgICAgICBDR0NvbnRleHRSZXBsYWNlUGF0aFdpdGhT
dHJva2VkUGF0aChjb250ZXh0KTsKICAgICAgICAgICAgIENHQ29udGV4dENsaXAoY29udGV4dCk7
Ci0gICAgICAgICAgICBDR0NvbnRleHRDb25jYXRDVE0oY29udGV4dCwgbV9zdGF0ZS5zdHJva2VH
cmFkaWVudC0+Z3JhZGllbnRTcGFjZVRyYW5zZm9ybSgpKTsKKyAgICAgICAgICAgIENHQ29udGV4
dENvbmNhdENUTShjb250ZXh0LCBtX3N0YXRlLnN0cm9rZUdyYWRpZW50UGFpbnRpbmdEYXRhLnNw
YWNlVHJhbnNmb3JtKTsKICAgICAgICAgICAgIG1fc3RhdGUuc3Ryb2tlR3JhZGllbnQtPnBhaW50
KCp0aGlzKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm47CkBAIC04OTIsMTMgKzg5MiwxMyBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQog
ICAgICAgICAgICAgQ0dDb250ZXh0QWRkUmVjdChsYXllckNvbnRleHQsIHJlY3QpOwogICAgICAg
ICAgICAgQ0dDb250ZXh0Q2xpcChsYXllckNvbnRleHQpOwogCi0gICAgICAgICAgICBDR0NvbnRl
eHRDb25jYXRDVE0obGF5ZXJDb250ZXh0LCBtX3N0YXRlLmZpbGxHcmFkaWVudC0+Z3JhZGllbnRT
cGFjZVRyYW5zZm9ybSgpKTsKLSAgICAgICAgICAgIG1fc3RhdGUuZmlsbEdyYWRpZW50LT5wYWlu
dChsYXllckNvbnRleHQpOworICAgICAgICAgICAgQ0dDb250ZXh0Q29uY2F0Q1RNKGxheWVyQ29u
dGV4dCwgbV9zdGF0ZS5maWxsR3JhZGllbnRQYWludGluZ0RhdGEuc3BhY2VUcmFuc2Zvcm0pOwor
ICAgICAgICAgICAgbV9zdGF0ZS5maWxsR3JhZGllbnQtPnBhaW50KGxheWVyQ29udGV4dCwgbV9z
dGF0ZS5maWxsR3JhZGllbnRQYWludGluZ0RhdGEuc3ByZWFkTWV0aG9kKTsKICAgICAgICAgICAg
IENHQ29udGV4dERyYXdMYXllckluUmVjdChjb250ZXh0LCByZWN0LCBsYXllcik7CiAgICAgICAg
ICAgICBDR0xheWVyUmVsZWFzZShsYXllcik7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg
ICBDR0NvbnRleHRDbGlwVG9SZWN0KGNvbnRleHQsIHJlY3QpOwotICAgICAgICAgICAgQ0dDb250
ZXh0Q29uY2F0Q1RNKGNvbnRleHQsIG1fc3RhdGUuZmlsbEdyYWRpZW50LT5ncmFkaWVudFNwYWNl
VHJhbnNmb3JtKCkpOworICAgICAgICAgICAgQ0dDb250ZXh0Q29uY2F0Q1RNKGNvbnRleHQsIG1f
c3RhdGUuZmlsbEdyYWRpZW50UGFpbnRpbmdEYXRhLnNwYWNlVHJhbnNmb3JtKTsKICAgICAgICAg
ICAgIG1fc3RhdGUuZmlsbEdyYWRpZW50LT5wYWludCgqdGhpcyk7CiAgICAgICAgIH0KICAgICAg
ICAgcmV0dXJuOwpAQCAtMTMxMCw4ICsxMzEwLDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnN0
cm9rZVJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBmbG9hdCBsaW5lV2lkdGgpCiAgICAgICAg
ICAgICBDR0NvbnRleHRBZGRSZWN0KGxheWVyQ29udGV4dCwgcmVjdCk7CiAgICAgICAgICAgICBD
R0NvbnRleHRSZXBsYWNlUGF0aFdpdGhTdHJva2VkUGF0aChsYXllckNvbnRleHQpOwogICAgICAg
ICAgICAgQ0dDb250ZXh0Q2xpcChsYXllckNvbnRleHQpOwotICAgICAgICAgICAgQ0dDb250ZXh0
Q29uY2F0Q1RNKGxheWVyQ29udGV4dCwgbV9zdGF0ZS5zdHJva2VHcmFkaWVudC0+Z3JhZGllbnRT
cGFjZVRyYW5zZm9ybSgpKTsKLSAgICAgICAgICAgIG1fc3RhdGUuc3Ryb2tlR3JhZGllbnQtPnBh
aW50KGxheWVyQ29udGV4dCk7CisgICAgICAgICAgICBDR0NvbnRleHRDb25jYXRDVE0obGF5ZXJD
b250ZXh0LCBtX3N0YXRlLnN0cm9rZUdyYWRpZW50UGFpbnRpbmdEYXRhLnNwYWNlVHJhbnNmb3Jt
KTsKKyAgICAgICAgICAgIG1fc3RhdGUuc3Ryb2tlR3JhZGllbnQtPnBhaW50KGxheWVyQ29udGV4
dCwgbV9zdGF0ZS5zdHJva2VHcmFkaWVudFBhaW50aW5nRGF0YS5zcHJlYWRNZXRob2QpOwogCiAg
ICAgICAgICAgICBjb25zdCBmbG9hdCBkZXN0aW5hdGlvblggPSByb3VuZGYocmVjdC54KCkgLSBs
aW5lV2lkdGgpOwogICAgICAgICAgICAgY29uc3QgZmxvYXQgZGVzdGluYXRpb25ZID0gcm91bmRm
KHJlY3QueSgpIC0gbGluZVdpZHRoKTsKQEAgLTEzMjMsNyArMTMyMyw3IEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0OjpzdHJva2VSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgZmxvYXQgbGluZVdp
ZHRoKQogICAgICAgICAgICAgQ0dDb250ZXh0QWRkUmVjdChjb250ZXh0LCByZWN0KTsKICAgICAg
ICAgICAgIENHQ29udGV4dFJlcGxhY2VQYXRoV2l0aFN0cm9rZWRQYXRoKGNvbnRleHQpOwogICAg
ICAgICAgICAgQ0dDb250ZXh0Q2xpcChjb250ZXh0KTsKLSAgICAgICAgICAgIENHQ29udGV4dENv
bmNhdENUTShjb250ZXh0LCBtX3N0YXRlLnN0cm9rZUdyYWRpZW50LT5ncmFkaWVudFNwYWNlVHJh
bnNmb3JtKCkpOworICAgICAgICAgICAgQ0dDb250ZXh0Q29uY2F0Q1RNKGNvbnRleHQsIG1fc3Rh
dGUuc3Ryb2tlR3JhZGllbnRQYWludGluZ0RhdGEuc3BhY2VUcmFuc2Zvcm0pOwogICAgICAgICAg
ICAgbV9zdGF0ZS5zdHJva2VHcmFkaWVudC0+cGFpbnQoKnRoaXMpOwogICAgICAgICB9CiAgICAg
ICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdHbHlwaHNSZWNvcmRlci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd0dseXBo
c1JlY29yZGVyLmgKaW5kZXggMmM3ZjJhZGY1YTg5NGZiZDA4NTEzYjg4ZmViYmU4YTcwODdmNjll
MS4uMWY4YTljMDY2NDMwMjQ4MmQxOWNmNmNhOGZjZTQ1MWVhODMwY2NmMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
RHJhd0dseXBoc1JlY29yZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd0dseXBoc1JlY29yZGVyLmgKQEAgLTk4LDYg
Kzk4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgc3RydWN0IFN0eWxlIHsKICAgICAgICAgICAgIENv
bG9yIGNvbG9yOwogICAgICAgICAgICAgUmVmUHRyPEdyYWRpZW50PiBncmFkaWVudDsKKyAgICAg
ICAgICAgIEdyYWRpZW50OjpQYWludGluZ0RhdGEgZ3JhZGllbnRQYWludGluZ0RhdGE7CiAgICAg
ICAgICAgICBSZWZQdHI8UGF0dGVybj4gcGF0dGVybjsKICAgICAgICAgfTsKICAgICAgICAgU3R5
bGUgZmlsbFN0eWxlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd0dseXBoc1JlY29yZGVyQ29yZVRleHQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0RHJhd0dseXBoc1JlY29yZGVyQ29yZVRleHQuY3BwCmluZGV4IGQwZmU1ZWJjZjU0ZGQ2ZTNj
NTBhZmJlMWY3ZmFkZmU4Zjc5ODgwYmYuLjNlNDJjZmMyMDI2ZTc3MGI5NzA4NGM0YmQ5Njk5ZThl
NzY5ZWY4YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdHbHlwaHNSZWNvcmRlckNvcmVUZXh0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3REcmF3R2x5cGhzUmVjb3JkZXJDb3JlVGV4dC5jcHAKQEAgLTk4LDEwICs5OCwxMiBAQCB2b2lk
IERyYXdHbHlwaHNSZWNvcmRlcjo6cG9wdWxhdGVJbnRlcm5hbFN0YXRlKGNvbnN0IEdyYXBoaWNz
Q29udGV4dFN0YXRlJiBjb250ZQogewogICAgIG1fb3JpZ2luYWxTdGF0ZS5maWxsU3R5bGUuY29s
b3IgPSBjb250ZXh0U3RhdGUuZmlsbENvbG9yOwogICAgIG1fb3JpZ2luYWxTdGF0ZS5maWxsU3R5
bGUuZ3JhZGllbnQgPSBjb250ZXh0U3RhdGUuZmlsbEdyYWRpZW50OworICAgIG1fb3JpZ2luYWxT
dGF0ZS5maWxsU3R5bGUuZ3JhZGllbnRQYWludGluZ0RhdGEgPSBjb250ZXh0U3RhdGUuZmlsbEdy
YWRpZW50UGFpbnRpbmdEYXRhOwogICAgIG1fb3JpZ2luYWxTdGF0ZS5maWxsU3R5bGUucGF0dGVy
biA9IGNvbnRleHRTdGF0ZS5maWxsUGF0dGVybjsKIAogICAgIG1fb3JpZ2luYWxTdGF0ZS5zdHJv
a2VTdHlsZS5jb2xvciA9IGNvbnRleHRTdGF0ZS5zdHJva2VDb2xvcjsKICAgICBtX29yaWdpbmFs
U3RhdGUuc3Ryb2tlU3R5bGUuZ3JhZGllbnQgPSBjb250ZXh0U3RhdGUuc3Ryb2tlR3JhZGllbnQ7
CisgICAgbV9vcmlnaW5hbFN0YXRlLnN0cm9rZVN0eWxlLmdyYWRpZW50UGFpbnRpbmdEYXRhID0g
Y29udGV4dFN0YXRlLnN0cm9rZUdyYWRpZW50UGFpbnRpbmdEYXRhOwogICAgIG1fb3JpZ2luYWxT
dGF0ZS5zdHJva2VTdHlsZS5wYXR0ZXJuID0gY29udGV4dFN0YXRlLnN0cm9rZVBhdHRlcm47CiAK
ICAgICBtX29yaWdpbmFsU3RhdGUuY3RtID0gbV9vd25lci5jdXJyZW50U3RhdGUoKS5jdG07IC8v
IEZJWE1FOiBEZWFsIHdpdGggYmFzZSBDVE0uCkBAIC0xMTksNyArMTIxLDcgQEAgdm9pZCBEcmF3
R2x5cGhzUmVjb3JkZXI6OnBvcHVsYXRlSW50ZXJuYWxDb250ZXh0KGNvbnN0IEdyYXBoaWNzQ29u
dGV4dFN0YXRlJiBjb24KICAgICBpZiAobV9vcmlnaW5hbFN0YXRlLmZpbGxTdHlsZS5jb2xvci5p
c1ZhbGlkKCkpCiAgICAgICAgIG1faW50ZXJuYWxDb250ZXh0LnNldEZpbGxDb2xvcihtX29yaWdp
bmFsU3RhdGUuZmlsbFN0eWxlLmNvbG9yKTsKICAgICBlbHNlIGlmIChtX29yaWdpbmFsU3RhdGUu
ZmlsbFN0eWxlLmdyYWRpZW50KQotICAgICAgICBtX2ludGVybmFsQ29udGV4dC5zZXRGaWxsR3Jh
ZGllbnQoKm1fb3JpZ2luYWxTdGF0ZS5maWxsU3R5bGUuZ3JhZGllbnQpOworICAgICAgICBtX2lu
dGVybmFsQ29udGV4dC5zZXRGaWxsR3JhZGllbnQoKm1fb3JpZ2luYWxTdGF0ZS5maWxsU3R5bGUu
Z3JhZGllbnQsIG1fb3JpZ2luYWxTdGF0ZS5maWxsU3R5bGUuZ3JhZGllbnRQYWludGluZ0RhdGEp
OwogICAgIGVsc2UgewogICAgICAgICBBU1NFUlQobV9vcmlnaW5hbFN0YXRlLmZpbGxTdHlsZS5w
YXR0ZXJuKTsKICAgICAgICAgaWYgKG1fb3JpZ2luYWxTdGF0ZS5maWxsU3R5bGUucGF0dGVybikK
QEAgLTEyOSw3ICsxMzEsNyBAQCB2b2lkIERyYXdHbHlwaHNSZWNvcmRlcjo6cG9wdWxhdGVJbnRl
cm5hbENvbnRleHQoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIGNvbgogICAgIGlmIChtX29y
aWdpbmFsU3RhdGUuc3Ryb2tlU3R5bGUuY29sb3IuaXNWYWxpZCgpKQogICAgICAgICBtX2ludGVy
bmFsQ29udGV4dC5zZXRTdHJva2VDb2xvcihtX29yaWdpbmFsU3RhdGUuc3Ryb2tlU3R5bGUuY29s
b3IpOwogICAgIGVsc2UgaWYgKG1fb3JpZ2luYWxTdGF0ZS5zdHJva2VTdHlsZS5ncmFkaWVudCkK
LSAgICAgICAgbV9pbnRlcm5hbENvbnRleHQuc2V0U3Ryb2tlR3JhZGllbnQoKm1fb3JpZ2luYWxT
dGF0ZS5zdHJva2VTdHlsZS5ncmFkaWVudCk7CisgICAgICAgIG1faW50ZXJuYWxDb250ZXh0LnNl
dFN0cm9rZUdyYWRpZW50KCptX29yaWdpbmFsU3RhdGUuc3Ryb2tlU3R5bGUuZ3JhZGllbnQsIG1f
b3JpZ2luYWxTdGF0ZS5zdHJva2VTdHlsZS5ncmFkaWVudFBhaW50aW5nRGF0YSk7CiAgICAgZWxz
ZSB7CiAgICAgICAgIEFTU0VSVChtX29yaWdpbmFsU3RhdGUuc3Ryb2tlU3R5bGUucGF0dGVybik7
CiAgICAgICAgIGlmIChtX29yaWdpbmFsU3RhdGUuc3Ryb2tlU3R5bGUucGF0dGVybikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdEl0ZW1zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcAppbmRleCAyMzI1OTYzYzk5YmI4YmNjZDhmMjc3
MmY2YzdmMjhkYzg1YWM5NWUzLi4yZmRiYzk2NzlmOTkzMDI0MGIyZmJkYTg3ZmRlM2M5YTNjZjU1
MTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCkBAIC0xMTUsMTAgKzEx
NSw5IEBAIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25z
dCBDb25jYXRlbmF0ZUNUTSYgaXRlbSkKICAgICByZXR1cm4gdHM7CiB9CiAKLVNldElubGluZUZp
bGxHcmFkaWVudDo6U2V0SW5saW5lRmlsbEdyYWRpZW50KGNvbnN0IEdyYWRpZW50JiBncmFkaWVu
dCkKK1NldElubGluZUZpbGxHcmFkaWVudDo6U2V0SW5saW5lRmlsbEdyYWRpZW50KGNvbnN0IEdy
YWRpZW50JiBncmFkaWVudCwgY29uc3QgR3JhZGllbnQ6OlBhaW50aW5nRGF0YSYgcGFpbnRpbmdE
YXRhKQogICAgIDogbV9kYXRhKGdyYWRpZW50LmRhdGEoKSkKLSAgICAsIG1fZ3JhZGllbnRTcGFj
ZVRyYW5zZm9ybWF0aW9uKGdyYWRpZW50LmdyYWRpZW50U3BhY2VUcmFuc2Zvcm0oKSkKLSAgICAs
IG1fc3ByZWFkTWV0aG9kKGdyYWRpZW50LnNwcmVhZE1ldGhvZCgpKQorICAgICwgbV9wYWludGlu
Z0RhdGEocGFpbnRpbmdEYXRhKQogICAgICwgbV9jb2xvclN0b3BDb3VudChzdGF0aWNfY2FzdDx1
aW50OF90PihncmFkaWVudC5zdG9wcygpLnNpemUoKSkpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQo
bV9jb2xvclN0b3BDb3VudCA8PSBtYXhDb2xvclN0b3BDb3VudCk7CkBAIC0xMjgsMjAgKzEyNyw5
IEBAIFNldElubGluZUZpbGxHcmFkaWVudDo6U2V0SW5saW5lRmlsbEdyYWRpZW50KGNvbnN0IEdy
YWRpZW50JiBncmFkaWVudCkKICAgICB9CiB9CiAKLVJlZjxHcmFkaWVudD4gU2V0SW5saW5lRmls
bEdyYWRpZW50OjpncmFkaWVudCgpIGNvbnN0Ci17Ci0gICAgYXV0byBncmFkaWVudCA9IEdyYWRp
ZW50OjpjcmVhdGUoR3JhZGllbnQ6OkRhdGEobV9kYXRhKSk7Ci0gICAgZm9yICh1aW50OF90IGkg
PSAwOyBpIDwgbV9jb2xvclN0b3BDb3VudDsgKytpKQotICAgICAgICBncmFkaWVudC0+YWRkQ29s
b3JTdG9wKHsgbV9vZmZzZXRzW2ldLCBDb2xvcihtX2NvbG9yc1tpXSkgfSk7Ci0gICAgZ3JhZGll
bnQtPnNldFNwcmVhZE1ldGhvZChtX3NwcmVhZE1ldGhvZCk7Ci0gICAgZ3JhZGllbnQtPnNldEdy
YWRpZW50U3BhY2VUcmFuc2Zvcm0obV9ncmFkaWVudFNwYWNlVHJhbnNmb3JtYXRpb24pOwotICAg
IHJldHVybiBncmFkaWVudDsKLX0KLQotU2V0SW5saW5lRmlsbEdyYWRpZW50OjpTZXRJbmxpbmVG
aWxsR3JhZGllbnQoZmxvYXQgb2Zmc2V0c1ttYXhDb2xvclN0b3BDb3VudF0sIFNSR0JBPHVpbnQ4
X3Q+IGNvbG9yc1ttYXhDb2xvclN0b3BDb3VudF0sIGNvbnN0IEdyYWRpZW50OjpEYXRhJiBkYXRh
LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGdyYWRpZW50U3BhY2VUcmFuc2Zvcm1hdGlvbiwgR3Jh
ZGllbnRTcHJlYWRNZXRob2Qgc3ByZWFkTWV0aG9kLCB1aW50OF90IGNvbG9yU3RvcENvdW50KQor
U2V0SW5saW5lRmlsbEdyYWRpZW50OjpTZXRJbmxpbmVGaWxsR3JhZGllbnQoZmxvYXQgb2Zmc2V0
c1ttYXhDb2xvclN0b3BDb3VudF0sIFNSR0JBPHVpbnQ4X3Q+IGNvbG9yc1ttYXhDb2xvclN0b3BD
b3VudF0sIGNvbnN0IEdyYWRpZW50OjpEYXRhJiBkYXRhLCBjb25zdCBHcmFkaWVudDo6UGFpbnRp
bmdEYXRhJiBwYWludGluZ0RhdGEsIHVpbnQ4X3QgY29sb3JTdG9wQ291bnQpCiAgICAgOiBtX2Rh
dGEoZGF0YSkKLSAgICAsIG1fZ3JhZGllbnRTcGFjZVRyYW5zZm9ybWF0aW9uKGdyYWRpZW50U3Bh
Y2VUcmFuc2Zvcm1hdGlvbikKLSAgICAsIG1fc3ByZWFkTWV0aG9kKHNwcmVhZE1ldGhvZCkKKyAg
ICAsIG1fcGFpbnRpbmdEYXRhKHBhaW50aW5nRGF0YSkKICAgICAsIG1fY29sb3JTdG9wQ291bnQo
Y29sb3JTdG9wQ291bnQpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQobV9jb2xvclN0b3BDb3VudCA8
PSBtYXhDb2xvclN0b3BDb3VudCk7CkBAIC0xNTEsMTAgKzEzOSwxOCBAQCBTZXRJbmxpbmVGaWxs
R3JhZGllbnQ6OlNldElubGluZUZpbGxHcmFkaWVudChmbG9hdCBvZmZzZXRzW21heENvbG9yU3Rv
cENvdW50XSwgUwogICAgIH0KIH0KIAorUmVmPEdyYWRpZW50PiBTZXRJbmxpbmVGaWxsR3JhZGll
bnQ6OmdyYWRpZW50KCkgY29uc3QKK3sKKyAgICBhdXRvIGdyYWRpZW50ID0gR3JhZGllbnQ6OmNy
ZWF0ZShHcmFkaWVudDo6RGF0YShtX2RhdGEpKTsKKyAgICBmb3IgKHVpbnQ4X3QgaSA9IDA7IGkg
PCBtX2NvbG9yU3RvcENvdW50OyArK2kpCisgICAgICAgIGdyYWRpZW50LT5hZGRDb2xvclN0b3Ao
eyBtX29mZnNldHNbaV0sIENvbG9yKG1fY29sb3JzW2ldKSB9KTsKKyAgICByZXR1cm4gZ3JhZGll
bnQ7Cit9CisKIHZvaWQgU2V0SW5saW5lRmlsbEdyYWRpZW50OjphcHBseShHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQpIGNvbnN0CiB7CiAgICAgaWYgKG1fY29sb3JTdG9wQ291bnQgPD0gbWF4Q29s
b3JTdG9wQ291bnQpCi0gICAgICAgIGNvbnRleHQuc2V0RmlsbEdyYWRpZW50KGdyYWRpZW50KCkp
OworICAgICAgICBjb250ZXh0LnNldEZpbGxHcmFkaWVudChncmFkaWVudCgpLCBtX3BhaW50aW5n
RGF0YSk7CiB9CiAKIGJvb2wgU2V0SW5saW5lRmlsbEdyYWRpZW50Ojppc0lubGluZShjb25zdCBH
cmFkaWVudCYgZ3JhZGllbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaAppbmRleCBl
YThhY2FkZTY1NzUxNDAxMzA4MGYyNzFiZDcyYmVmZDMxMTUxMGE4Li5lZWRlZDA0YjM3MjIxNzEw
NDI4NTAxMDI5YmYwYjMzMjEwYzZkOTc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1z
LmgKQEAgLTE3NCw5ICsxNzQsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciBib29s
IGlzRHJhd2luZ0l0ZW0gPSBmYWxzZTsKICAgICBzdGF0aWMgY29uc3RleHByIHVpbnQ4X3QgbWF4
Q29sb3JTdG9wQ291bnQgPSA0OwogCi0gICAgU2V0SW5saW5lRmlsbEdyYWRpZW50KGNvbnN0IEdy
YWRpZW50Jik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgU2V0SW5saW5lRmlsbEdyYWRpZW50KGZsb2F0
IG9mZnNldHNbbWF4Q29sb3JTdG9wQ291bnRdLCBTUkdCQTx1aW50OF90PiBjb2xvcnNbbWF4Q29s
b3JTdG9wQ291bnRdLCBjb25zdCBHcmFkaWVudDo6RGF0YSYsCi0gICAgICAgIGNvbnN0IEFmZmlu
ZVRyYW5zZm9ybSYgZ3JhZGllbnRTcGFjZVRyYW5zZm9ybWF0aW9uLCBHcmFkaWVudFNwcmVhZE1l
dGhvZCwgdWludDhfdCBjb2xvclN0b3BDb3VudCk7CisgICAgU2V0SW5saW5lRmlsbEdyYWRpZW50
KGNvbnN0IEdyYWRpZW50JiwgY29uc3QgR3JhZGllbnQ6OlBhaW50aW5nRGF0YSYpOworICAgIFdF
QkNPUkVfRVhQT1JUIFNldElubGluZUZpbGxHcmFkaWVudChmbG9hdCBvZmZzZXRzW21heENvbG9y
U3RvcENvdW50XSwgU1JHQkE8dWludDhfdD4gY29sb3JzW21heENvbG9yU3RvcENvdW50XSwgY29u
c3QgR3JhZGllbnQ6OkRhdGEmLCBjb25zdCBHcmFkaWVudDo6UGFpbnRpbmdEYXRhJiwgdWludDhf
dCBjb2xvclN0b3BDb3VudCk7CiAKICAgICBzdGF0aWMgYm9vbCBpc0lubGluZShjb25zdCBHcmFk
aWVudCYpOwogICAgIFJlZjxHcmFkaWVudD4gZ3JhZGllbnQoKSBjb25zdDsKQEAgLTE4Nyw4ICsx
ODYsOCBAQCBwcml2YXRlOgogICAgIGZsb2F0IG1fb2Zmc2V0c1ttYXhDb2xvclN0b3BDb3VudF07
CiAgICAgU1JHQkE8dWludDhfdD4gbV9jb2xvcnNbbWF4Q29sb3JTdG9wQ291bnRdOwogICAgIEdy
YWRpZW50OjpEYXRhIG1fZGF0YTsKLSAgICBBZmZpbmVUcmFuc2Zvcm0gbV9ncmFkaWVudFNwYWNl
VHJhbnNmb3JtYXRpb247Ci0gICAgR3JhZGllbnRTcHJlYWRNZXRob2QgbV9zcHJlYWRNZXRob2Qg
eyBHcmFkaWVudFNwcmVhZE1ldGhvZDo6UGFkIH07CisgICAgCisgICAgR3JhZGllbnQ6OlBhaW50
aW5nRGF0YSBtX3BhaW50aW5nRGF0YTsKICAgICB1aW50OF90IG1fY29sb3JTdG9wQ291bnQgeyAw
IH07CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKaW5kZXgg
Yjk0ODNkZjQyZGQ5MDE4N2IxZjY5ZGQ5MWI1ZWZiNGQ0OTBiNDJlYi4uNTQ2YTg5NTRlZTBmZWNi
YzU2ZmM1Mzg0NGEwNmM0NWIxZGYwMzNiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dFJlY29yZGVyLmNwcApAQCAtMTAxLDcgKzEwMSw3IEBAIHZvaWQgUmVjb3JkZXI6OmFwcGVuZFN0
YXRlQ2hhbmdlSXRlbShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZSYgY2hhbmdlcywK
ICAgICAgICAgYXBwZW5kPFNldElubGluZUZpbGxDb2xvcj4oY2hhbmdlcy5tX3N0YXRlLmZpbGxD
b2xvci5hc0lubGluZSgpKTsKIAogICAgIGlmIChjaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6RmlsbEdyYWRpZW50Q2hhbmdlKSkKLSAgICAgICAgYXBwZW5kPFNldElu
bGluZUZpbGxHcmFkaWVudD4oKmNoYW5nZXMubV9zdGF0ZS5maWxsR3JhZGllbnQpOworICAgICAg
ICBhcHBlbmQ8U2V0SW5saW5lRmlsbEdyYWRpZW50PigqY2hhbmdlcy5tX3N0YXRlLmZpbGxHcmFk
aWVudCwgY2hhbmdlcy5tX3N0YXRlLmZpbGxHcmFkaWVudFBhaW50aW5nRGF0YSk7CiB9CiAKIHZv
aWQgUmVjb3JkZXI6OndpbGxBcHBlbmRJdGVtT2ZUeXBlKEl0ZW1UeXBlIHR5cGUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29z
aWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwCmlu
ZGV4IDJjOWFhODg2OTY5ZWIwNTJlZWM2MzJjZTljNmU5ZDU1NzIxZjk3NmQuLjE5OGE4MmFhYWZh
NDJlMGZlZWU5Zjg1ODVmZGY4OGI2YjYwN2Q5ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVj
b3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEv
Y2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwCkBAIC0yOTIsNyArMjkyLDgg
QEAgdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpmaWxsUmVjdChjb25zdCBGbG9hdFJlY3Qm
IHJlY3QsIEdyYWRpZW50JiBncmFkaWVudCkKICAgICAgICAgfQogICAgIH07CiAKLSAgICBhcHBl
bmQoY3JlYXRlQ29tbWFuZDxGaWxsUmVjdD4ocmVjdCwgZ3JhZGllbnQuY3JlYXRlUGF0dGVybigx
LjApKSk7CisgICAgYXV0byYgc3RhdGUgPSBncmFwaGljc0NvbnRleHQoKS5zdGF0ZSgpOworICAg
IGFwcGVuZChjcmVhdGVDb21tYW5kPEZpbGxSZWN0PihyZWN0LCBncmFkaWVudC5jcmVhdGVQYXR0
ZXJuKDEuMCwgc3RhdGUuZmlsbEdyYWRpZW50UGFpbnRpbmdEYXRhKSkpOwogfQogCiB2b2lkIENh
aXJvT3BlcmF0aW9uUmVjb3JkZXI6OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29u
c3QgQ29sb3ImIGNvbG9yLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVyYXRvciwgQmxl
bmRNb2RlIGJsZW5kTW9kZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUGF0aC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1BhdGguY3BwCmluZGV4IDA0Zjg1OWYxNWM3M2ZiMTNiODdmM2U4OTg4NDc1ZjYyYTJmZTVm
MTAuLjRiYzFkMDI1MDFhMmFmYmUxY2Q2N2E5MjljMGMyMWEwY2FkNjg2NDkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUGF0aC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdQYXRoLmNwcApAQCAtNjksNyArNjks
NyBAQCBGbG9hdFJlY3QgUmVuZGVyU1ZHUGF0aDo6Y2FsY3VsYXRlVXBkYXRlZFN0cm9rZUJvdW5k
aW5nQm94KCkgY29uc3QKIHN0YXRpYyB2b2lkIHVzZVN0cm9rZVN0eWxlVG9GaWxsKEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCkKIHsKICAgICBpZiAoYXV0byBncmFkaWVudCA9IGNvbnRleHQuc3Ry
b2tlR3JhZGllbnQoKSkKLSAgICAgICAgY29udGV4dC5zZXRGaWxsR3JhZGllbnQoKmdyYWRpZW50
KTsKKyAgICAgICAgY29udGV4dC5zZXRGaWxsR3JhZGllbnQoKmdyYWRpZW50LCBjb250ZXh0LnN0
YXRlKCkuc3Ryb2tlR3JhZGllbnRQYWludGluZ0RhdGEpOwogICAgIGVsc2UgaWYgKFBhdHRlcm4q
IHBhdHRlcm4gPSBjb250ZXh0LnN0cm9rZVBhdHRlcm4oKSkKICAgICAgICAgY29udGV4dC5zZXRG
aWxsUGF0dGVybigqcGF0dGVybik7CiAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5jcHAKaW5kZXgg
ZDIyOWI2MzEzYzViMzgwZWY5NWZlMWJiZGM2NDZmYmYxMGUyZDgzMS4uNTI3OGQ2ZGQyNGY3NjBh
YzAzNzYwYmNjZTQ3Mjc0MTdlMGY3OWU1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQuY3BwCkBAIC0xNDUs
OCArMTQ1LDYgQEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50OjphcHBseVJlc291cmNl
KFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBSZW4KICAgICAgICAgICAgICAgICB1c2Vy
c3BhY2VUcmFuc2Zvcm0gKj0gYWRkaXRpb25hbFRleHRUcmFuc2Zvcm07CiAgICAgICAgIH0KIAot
ICAgICAgICBncmFkaWVudC0+c2V0R3JhZGllbnRTcGFjZVRyYW5zZm9ybSh1c2Vyc3BhY2VUcmFu
c2Zvcm0pOwotCiAgICAgICAgIHJldHVybiB7IFdURk1vdmUoZ3JhZGllbnQpLCB1c2Vyc3BhY2VU
cmFuc2Zvcm0gfTsKICAgICB9KS5pdGVyYXRvci0+dmFsdWU7CiAKQEAgLTE2NCwxNiArMTYyLDE3
IEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudDo6YXBwbHlSZXNvdXJjZShSZW5kZXJF
bGVtZW50JiByZW5kZXJlciwgY29uc3QgUmVuCiAgICAgfQogCiAgICAgYXV0byYgc3ZnU3R5bGUg
PSBzdHlsZS5zdmdTdHlsZSgpOworICAgIGF1dG8gdXNlcnNwYWNlVHJhbnNmb3JtID0gZ3JhZGll
bnREYXRhLnVzZXJzcGFjZVRyYW5zZm9ybTsKIAogICAgIGlmIChyZXNvdXJjZU1vZGUuY29udGFp
bnMoUmVuZGVyU1ZHUmVzb3VyY2VNb2RlOjpBcHBseVRvRmlsbCkpIHsKICAgICAgICAgY29udGV4
dC0+c2V0QWxwaGEoc3ZnU3R5bGUuZmlsbE9wYWNpdHkoKSk7Ci0gICAgICAgIGNvbnRleHQtPnNl
dEZpbGxHcmFkaWVudCgqZ3JhZGllbnREYXRhLmdyYWRpZW50KTsKKyAgICAgICAgY29udGV4dC0+
c2V0RmlsbEdyYWRpZW50KCpncmFkaWVudERhdGEuZ3JhZGllbnQsIHsgcGxhdGZvcm1TcHJlYWRN
ZXRob2RGcm9tU1ZHVHlwZShzcHJlYWRNZXRob2QoKSksIHVzZXJzcGFjZVRyYW5zZm9ybSB9KTsK
ICAgICAgICAgY29udGV4dC0+c2V0RmlsbFJ1bGUoc3ZnU3R5bGUuZmlsbFJ1bGUoKSk7CiAgICAg
fSBlbHNlIGlmIChyZXNvdXJjZU1vZGUuY29udGFpbnMoUmVuZGVyU1ZHUmVzb3VyY2VNb2RlOjpB
cHBseVRvU3Ryb2tlKSkgewogICAgICAgICBpZiAoc3ZnU3R5bGUudmVjdG9yRWZmZWN0KCkgPT0g
VmVjdG9yRWZmZWN0OjpOb25TY2FsaW5nU3Ryb2tlKQotICAgICAgICAgICAgZ3JhZGllbnREYXRh
LmdyYWRpZW50LT5zZXRHcmFkaWVudFNwYWNlVHJhbnNmb3JtKHRyYW5zZm9ybU9uTm9uU2NhbGlu
Z1N0cm9rZSgmcmVuZGVyZXIsIGdyYWRpZW50RGF0YS51c2Vyc3BhY2VUcmFuc2Zvcm0pKTsKKyAg
ICAgICAgICAgIHVzZXJzcGFjZVRyYW5zZm9ybSA9IHRyYW5zZm9ybU9uTm9uU2NhbGluZ1N0cm9r
ZSgmcmVuZGVyZXIsIGdyYWRpZW50RGF0YS51c2Vyc3BhY2VUcmFuc2Zvcm0pOwogICAgICAgICBj
b250ZXh0LT5zZXRBbHBoYShzdmdTdHlsZS5zdHJva2VPcGFjaXR5KCkpOwotICAgICAgICBjb250
ZXh0LT5zZXRTdHJva2VHcmFkaWVudCgqZ3JhZGllbnREYXRhLmdyYWRpZW50KTsKKyAgICAgICAg
Y29udGV4dC0+c2V0U3Ryb2tlR3JhZGllbnQoKmdyYWRpZW50RGF0YS5ncmFkaWVudCwgeyBwbGF0
Zm9ybVNwcmVhZE1ldGhvZEZyb21TVkdUeXBlKHNwcmVhZE1ldGhvZCgpKSwgdXNlcnNwYWNlVHJh
bnNmb3JtIH0pOwogICAgICAgICBTVkdSZW5kZXJTdXBwb3J0OjphcHBseVN0cm9rZVN0eWxlVG9D
b250ZXh0KGNvbnRleHQsIHN0eWxlLCByZW5kZXJlcik7CiAgICAgfQogCkBAIC0xOTcsOSArMTk2
LDkgQEAgdm9pZCBSZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50Ojpwb3N0QXBwbHlSZXNvdXJjZShS
ZW5kZXJFbGVtZW50JiByZW5kZXJlciwgR3JhcGgKICAgICAgICAgICAgICAgICBjb250ZXh0ID0g
c3RkOjpleGNoYW5nZShtX3NhdmVkQ29udGV4dCwgbnVsbHB0cik7CiAKICAgICAgICAgICAgICAg
ICBGbG9hdFJlY3QgdGFyZ2V0UmVjdDsKLSAgICAgICAgICAgICAgICBncmFkaWVudC5zZXRHcmFk
aWVudFNwYWNlVHJhbnNmb3JtKGNsaXBUb1RleHRNYXNrKCpjb250ZXh0LCBtX2ltYWdlQnVmZmVy
LCB0YXJnZXRSZWN0LCAmcmVuZGVyZXIsIGdyYWRpZW50VW5pdHMoKSA9PSBTVkdVbml0VHlwZXM6
OlNWR19VTklUX1RZUEVfT0JKRUNUQk9VTkRJTkdCT1gsIGdyYWRpZW50VHJhbnNmb3JtKCkpKTsK
KyAgICAgICAgICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gdXNlcnNwYWNlVHJhbnNmb3JtID0gY2xp
cFRvVGV4dE1hc2soKmNvbnRleHQsIG1faW1hZ2VCdWZmZXIsIHRhcmdldFJlY3QsICZyZW5kZXJl
ciwgZ3JhZGllbnRVbml0cygpID09IFNWR1VuaXRUeXBlczo6U1ZHX1VOSVRfVFlQRV9PQkpFQ1RC
T1VORElOR0JPWCwgZ3JhZGllbnRUcmFuc2Zvcm0oKSk7CiAKLSAgICAgICAgICAgICAgICBjb250
ZXh0LT5zZXRGaWxsR3JhZGllbnQoZ3JhZGllbnQpOworICAgICAgICAgICAgICAgIGNvbnRleHQt
PnNldEZpbGxHcmFkaWVudChncmFkaWVudCwgeyBwbGF0Zm9ybVNwcmVhZE1ldGhvZEZyb21TVkdU
eXBlKHNwcmVhZE1ldGhvZCgpKSwgdXNlcnNwYWNlVHJhbnNmb3JtIH0pOwogICAgICAgICAgICAg
ICAgIGNvbnRleHQtPmZpbGxSZWN0KHRhcmdldFJlY3QpOwogCiAgICAgICAgICAgICAgICAgbV9p
bWFnZUJ1ZmZlciA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5oCmluZGV4IDI1ZjViYjAxY2I2OTkz
NWQzZDU3NGE2NWIwZWExOGUzMDBjNjIyMDYuLjAzOGJkZTkzYmRiMGRiMjQ4NTY4Zjc1YTc0Mjkx
NjQzNTE2YmQ3NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5oCkBAIC01Miw2ICs1Miw3IEBAIHByb3RlY3Rl
ZDoKIHByaXZhdGU6CiAgICAgdm9pZCBlbGVtZW50KCkgY29uc3QgPSBkZWxldGU7CiAKKyAgICB2
aXJ0dWFsIFNWR1NwcmVhZE1ldGhvZFR5cGUgc3ByZWFkTWV0aG9kKCkgIGNvbnN0ID0gMDsKICAg
ICB2aXJ0dWFsIFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUgZ3JhZGllbnRVbml0cygpIGNvbnN0
ID0gMDsKICAgICB2aXJ0dWFsIEFmZmluZVRyYW5zZm9ybSBncmFkaWVudFRyYW5zZm9ybSgpIGNv
bnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgY29sbGVjdEdyYWRpZW50QXR0cmlidXRlcygpID0g
MDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVz
b3VyY2VMaW5lYXJHcmFkaWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1Jlc291cmNlTGluZWFyR3JhZGllbnQuY3BwCmluZGV4IGE4ZWMxYjJhOTRmNjY1NWRh
N2FkMzI5MjdkYTk3YzBjZGM3YTA5OWMuLjRlY2FhNWFlYTNiMjdlNGQ4NzhlNGQxNWIzMzdkYzdj
MmM5MjgxMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUmVzb3VyY2VMaW5lYXJHcmFkaWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUxpbmVhckdyYWRpZW50LmNwcApAQCAtNTMsNyArNTMs
NiBAQCBGbG9hdFBvaW50IFJlbmRlclNWR1Jlc291cmNlTGluZWFyR3JhZGllbnQ6OmVuZFBvaW50
KGNvbnN0IExpbmVhckdyYWRpZW50QXR0cmlidQogUmVmPEdyYWRpZW50PiBSZW5kZXJTVkdSZXNv
dXJjZUxpbmVhckdyYWRpZW50OjpidWlsZEdyYWRpZW50KGNvbnN0IFJlbmRlclN0eWxlJiBzdHls
ZSkgY29uc3QKIHsKICAgICBhdXRvIGdyYWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShHcmFkaWVu
dDo6TGluZWFyRGF0YSB7IHN0YXJ0UG9pbnQobV9hdHRyaWJ1dGVzKSwgZW5kUG9pbnQobV9hdHRy
aWJ1dGVzKSB9KTsKLSAgICBncmFkaWVudC0+c2V0U3ByZWFkTWV0aG9kKHBsYXRmb3JtU3ByZWFk
TWV0aG9kRnJvbVNWR1R5cGUobV9hdHRyaWJ1dGVzLnNwcmVhZE1ldGhvZCgpKSk7CiAgICAgYWRk
U3RvcHMoZ3JhZGllbnQsIG1fYXR0cmlidXRlcy5zdG9wcygpLCBzdHlsZSk7CiAgICAgcmV0dXJu
IGdyYWRpZW50OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdSZXNvdXJjZUxpbmVhckdyYWRpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTGluZWFyR3JhZGllbnQuaAppbmRleCA1NThkNDJhNTdl
ZmVjMGExYmU3NDI5MDJmOGJmODRhOTQ2MTA1NTNlLi5hNTA4NThlOTdlN2ZlZTg4OGNmYjBkMzc4
NmE4ZGFlZmIwOGI2MzViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1Jlc291cmNlTGluZWFyR3JhZGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTGluZWFyR3JhZGllbnQuaApAQCAtNDAsNiAr
NDAsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFJlbmRlclNWR1Jlc291cmNlVHlwZSByZXNv
dXJjZVR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBMaW5lYXJHcmFkaWVudFJlc291cmNlVHlw
ZTsgfQogCisgICAgU1ZHU3ByZWFkTWV0aG9kVHlwZSBzcHJlYWRNZXRob2QoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBtX2F0dHJpYnV0ZXMuc3ByZWFkTWV0aG9kKCk7IH0KICAgICBTVkdVbml0VHlw
ZXM6OlNWR1VuaXRUeXBlIGdyYWRpZW50VW5pdHMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2F0
dHJpYnV0ZXMuZ3JhZGllbnRVbml0cygpOyB9CiAgICAgQWZmaW5lVHJhbnNmb3JtIGdyYWRpZW50
VHJhbnNmb3JtKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9hdHRyaWJ1dGVzLmdyYWRpZW50VHJh
bnNmb3JtKCk7IH0KICAgICBib29sIGNvbGxlY3RHcmFkaWVudEF0dHJpYnV0ZXMoKSBmaW5hbDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3Vy
Y2VSYWRpYWxHcmFkaWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1Jlc291cmNlUmFkaWFsR3JhZGllbnQuY3BwCmluZGV4IGJhZGYxNzVhODA2NDliMGJjMTMy
NGI4YmEwNzI2MjYxZDVmMjBiOTguLjY3ZTQ1NDEwYmExMzcwZmJlMGQ3YTBlNmJmZjJkYzk3OWQy
NDBlMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
UmVzb3VyY2VSYWRpYWxHcmFkaWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVJhZGlhbEdyYWRpZW50LmNwcApAQCAtNjQsNyArNjQsNiBA
QCBmbG9hdCBSZW5kZXJTVkdSZXNvdXJjZVJhZGlhbEdyYWRpZW50Ojpmb2NhbFJhZGl1cyhjb25z
dCBSYWRpYWxHcmFkaWVudEF0dHJpYnV0ZQogUmVmPEdyYWRpZW50PiBSZW5kZXJTVkdSZXNvdXJj
ZVJhZGlhbEdyYWRpZW50OjpidWlsZEdyYWRpZW50KGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkg
Y29uc3QKIHsKICAgICBhdXRvIGdyYWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShHcmFkaWVudDo6
UmFkaWFsRGF0YSB7IGZvY2FsUG9pbnQobV9hdHRyaWJ1dGVzKSwgY2VudGVyUG9pbnQobV9hdHRy
aWJ1dGVzKSwgZm9jYWxSYWRpdXMobV9hdHRyaWJ1dGVzKSwgcmFkaXVzKG1fYXR0cmlidXRlcyks
IDEgfSk7Ci0gICAgZ3JhZGllbnQtPnNldFNwcmVhZE1ldGhvZChwbGF0Zm9ybVNwcmVhZE1ldGhv
ZEZyb21TVkdUeXBlKG1fYXR0cmlidXRlcy5zcHJlYWRNZXRob2QoKSkpOwogICAgIGFkZFN0b3Bz
KGdyYWRpZW50LCBtX2F0dHJpYnV0ZXMuc3RvcHMoKSwgc3R5bGUpOwogICAgIHJldHVybiBncmFk
aWVudDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUmVzb3VyY2VSYWRpYWxHcmFkaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZXNvdXJjZVJhZGlhbEdyYWRpZW50LmgKaW5kZXggYWYzOTZkMTUwNmQ2ZjJj
YzE3MTFkZGI3MmVmNjRlYTZiOWUzNzRiNy4uYmM0YzRlNTVmOTEwZjk0MDI1MTcxYmUzNzk4NGY3
NjgyMWFmZGMzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSZXNvdXJjZVJhZGlhbEdyYWRpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVJhZGlhbEdyYWRpZW50LmgKQEAgLTQ0LDYgKzQ0LDcg
QEAgcHVibGljOgogcHJpdmF0ZToKICAgICBSZW5kZXJTVkdSZXNvdXJjZVR5cGUgcmVzb3VyY2VU
eXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gUmFkaWFsR3JhZGllbnRSZXNvdXJjZVR5cGU7IH0K
IAorICAgIFNWR1NwcmVhZE1ldGhvZFR5cGUgc3ByZWFkTWV0aG9kKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gbV9hdHRyaWJ1dGVzLnNwcmVhZE1ldGhvZCgpOyB9CiAgICAgU1ZHVW5pdFR5cGVzOjpT
VkdVbml0VHlwZSBncmFkaWVudFVuaXRzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9hdHRyaWJ1
dGVzLmdyYWRpZW50VW5pdHMoKTsgfQogICAgIEFmZmluZVRyYW5zZm9ybSBncmFkaWVudFRyYW5z
Zm9ybSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fYXR0cmlidXRlcy5ncmFkaWVudFRyYW5zZm9y
bSgpOyB9CiAgICAgUmVmPEdyYWRpZW50PiBidWlsZEdyYWRpZW50KGNvbnN0IFJlbmRlclN0eWxl
JikgY29uc3QgZmluYWw7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>417509</attachid>
            <date>2021-01-12 23:01:29 -0800</date>
            <delta_ts>2021-01-13 16:07:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220079-20210113090125.patch</filename>
            <type>text/plain</type>
            <size>32497</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3MTQzMCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc0IEBACisyMDIxLTAxLTEyICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgdGhlIHNwYWNlIHRy
YW5zZm9ybSBvdXRzaWRlIHRoZSBHcmFkaWVudCBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIwMDc5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW92ZSB0aGUgU3BhY2VUcmFuc2Zvcm0gZnJvbSB0
aGUgR3JhZGllbnQgY2xhc3MgdG8gdGhlIEdyYXBoaWNzQ29udGV4dFN0YXRlLgorICAgICAgICBU
aGUgY2xpZW50IHdpbGwgc2V0IGl0IHdoZW4gY2FsbGluZyBHcmFwaGljc0NvbnRleHQ6OnNldEZp
bGxHcmFkaWVudCgpCisgICAgICAgIGFuZCBHcmFwaGljc0NvbnRleHQ6OnNldEZpbGxHcmFkaWVu
dCgpLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhZGllbnQ6Omhhc2ggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
ZGllbnQ6OnNldEdyYWRpZW50U3BhY2VUcmFuc2Zvcm0pOiBEZWxldGVkLgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpHcmFkaWVudDo6
ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYWRpZW50OjpkZWNvZGUpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhZGllbnQ6OmdyYWRpZW50U3BhY2VUcmFuc2Zvcm0gY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuaDoKKyAg
ICAgICAgTmVlZCB0byBpbml0aWFsaXplIG1fY2FjaGVkR2VuZXJhdG9ySGFzaC4KKworICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZTo6YXBwbHkgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRTdHJva2VHcmFkaWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldEZpbGxHcmFkaWVudCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQ6OnNldFN0cm9rZUdyYWRpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDo6c2V0RmlsbEdyYWRpZW50KToKKyAgICAgICAgQ2xpZW50cyBvZiBHcmFwaGlj
c0NvbnRleHQgaGF2ZSB0byBzZW5kIHRoZSBHcmFkaWVudCBhbmQgU3BhY2VUcmFuc2Zvcm0KKyAg
ICAgICAgdG8gc2V0U3Ryb2tlR3JhZGllbnQoKSBhbmQgc2V0RmlsbEdyYWRpZW50KCkuCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb09wZXJhdGlvbnMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q2Fpcm86OkZpbGxTb3VyY2U6OkZpbGxTb3VyY2UpOgorICAgICAgICAo
V2ViQ29yZTo6Q2Fpcm86OlN0cm9rZVNvdXJjZTo6U3Ryb2tlU291cmNlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFkaWVudENhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyYWRpZW50OjpjcmVhdGVQYXR0ZXJuKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYWRpZW50
OjpmaWxsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRl
eHRJbXBsQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0SW1wbENh
aXJvOjpmaWxsUmVjdCk6CisgICAgICAgIEZvciBDYWlybyBwb3J0cywgR3JhZGllbnQ6OmNyZWF0
ZVBhdHRlcm4oKSB3aWxsIHRha2UgU3BhY2VUcmFuc2Zvcm0gYXMgCisgICAgICAgIGEgbmV3IGFy
Z3VtZW50LiBDbGllbnRzIHdpbGwgZ2V0IGl0IGZyb20gdGhlIEdyYXBoaWNzQ29udGV4dFN0YXRl
IHNpbmNlCisgICAgICAgIHRoZSBHcmFkaWVudCBhbmQgdGhlIFNwYWNlVHJhbnNmb3JtIGFyZSBz
ZXQgaW4gaXQgaW4gdGhlIHNhbWUgY2FsbC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDo6ZmlsbFBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzdHJv
a2VQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3QpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzdHJva2VSZWN0KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3R2x5cGhzUmVj
b3JkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3REcmF3R2x5cGhzUmVjb3JkZXJDb3JlVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6RHJhd0dseXBoc1JlY29yZGVyOjpwb3B1bGF0ZUludGVybmFsU3RhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdHbHlwaHNSZWNvcmRlcjo6cG9wdWxh
dGVJbnRlcm5hbENvbnRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpTZXRJbmxpbmVGaWxsR3JhZGllbnQ6OlNldElubGluZUZpbGxHcmFkaWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6U2V0SW5saW5lRmlsbEdyYWRpZW50OjpncmFkaWVudCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6U2V0SW5saW5lRmlsbEdyYWRp
ZW50OjphcHBseSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0SXRlbXMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6UmVjb3JkZXI6OmFwcGVuZFN0YXRlQ2hhbmdlSXRlbSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRl
ci5jcHA6CisgICAgICAgIChOaWNvc2lhOjpDYWlyb09wZXJhdGlvblJlY29yZGVyOjpmaWxsUmVj
dCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdQYXRoLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnVzZVN0cm9rZVN0eWxlVG9GaWxsKToKKworICAgICAgICAqIHJlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTVkdSZXNvdXJjZUdyYWRpZW50OjphcHBseVJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclNWR1Jlc291cmNlR3JhZGllbnQ6OnBvc3RBcHBseVJlc291cmNlKToKKyAgICAgICAg
dXNlcnNwYWNlVHJhbnNmb3JtIGlzIGNhbGN1bGF0ZWQgaW5zaWRlIHRoZSBsYW1iZGEgb2YgbV9n
cmFkaWVudE1hcC5lbnN1cmUoKS4KKyAgICAgICAgSXQgaXMgc3RvcmVkIGluIEdyYWRpZW50RGF0
YS4gSXQgaXMgcmV0cmlldmVkIGxhdGVyIHRvIHNldFN0cm9rZUdyYWRpZW50KCkKKyAgICAgICAg
YW5kIHNldEZpbGxHcmFkaWVudCgpLgorCiAyMDIxLTAxLTEyICBNeWxlcyBDLiBNYXhmaWVsZCAg
PG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgTXVsdGktY29kZXBvaW50IENKSyBncmFw
aGVtZSBjbHVzdGVycyBhcmUgbm90IG9yaWVudGVkIGNvcnJlY3RseSBpbiB2ZXJ0aWNhbCB3cml0
aW5nIG1vZGUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFk
aWVudC5jcHAJKHJldmlzaW9uIDI3MTM4NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYWRpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDgsIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA3IEFscCBUb2tlciA8YWxwQGF0
b2tlci5jb20+CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC00Niw4ICs0Niw2IEBAIEdyYWRpZW50OjpH
cmFkaWVudChEYXRhJiYgZGF0YSkKIHsKIH0KIAotR3JhZGllbnQ6On5HcmFkaWVudCgpID0gZGVm
YXVsdDsKLQogdm9pZCBHcmFkaWVudDo6YWRqdXN0UGFyYW1ldGVyc0ZvclRpbGVkRHJhd2luZyhG
bG9hdFNpemUmIHNpemUsIEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgRmxvYXRTaXplJiBzcGFj
aW5nKQogewogICAgIGlmIChzcmNSZWN0LmlzRW1wdHkoKSkKQEAgLTEyNywxNCArMTI1LDYgQEAg
dm9pZCBHcmFkaWVudDo6c2V0U3ByZWFkTWV0aG9kKEdyYWRpZW50UwogICAgIG1fY2FjaGVkSGFz
aCA9IDA7CiB9CiAKLXZvaWQgR3JhZGllbnQ6OnNldEdyYWRpZW50U3BhY2VUcmFuc2Zvcm0oY29u
c3QgQWZmaW5lVHJhbnNmb3JtJiBncmFkaWVudFNwYWNlVHJhbnNmb3JtYXRpb24pCi17Ci0gICAg
aWYgKG1fZ3JhZGllbnRTcGFjZVRyYW5zZm9ybWF0aW9uID09IGdyYWRpZW50U3BhY2VUcmFuc2Zv
cm1hdGlvbikKLSAgICAgICAgcmV0dXJuOwotICAgIG1fZ3JhZGllbnRTcGFjZVRyYW5zZm9ybWF0
aW9uID0gZ3JhZGllbnRTcGFjZVRyYW5zZm9ybWF0aW9uOwotICAgIG1fY2FjaGVkSGFzaCA9IDA7
Ci19Ci0KIC8vIEZJWE1FOiBJbnN0ZWFkIG9mIHRoZXNlIGFkZChIYXNoZXIpIGZ1bmN0aW9ucywg
Y29uc2lkZXIgdXNpbmcgZW5jb2RlIGZ1bmN0aW9ucyB0byBjb21wdXRlIHRoZSBoYXNoLgogCiBz
dGF0aWMgdm9pZCBhZGQoSGFzaGVyJiBoYXNoZXIsIGNvbnN0IENvbG9yJiBjb2xvcikKQEAgLTE0
OCwxMSArMTM4LDYgQEAgc3RhdGljIHZvaWQgYWRkKEhhc2hlciYgaGFzaGVyLCBjb25zdCBGbAog
ICAgIGFkZChoYXNoZXIsIHBvaW50LngoKSwgcG9pbnQueSgpKTsKIH0KIAotc3RhdGljIHZvaWQg
YWRkKEhhc2hlciYgaGFzaGVyLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRyYW5zZm9ybSkKLXsK
LSAgICBhZGQoaGFzaGVyLCB0cmFuc2Zvcm0uYSgpLCB0cmFuc2Zvcm0uYigpLCB0cmFuc2Zvcm0u
YygpLCB0cmFuc2Zvcm0uZCgpLCB0cmFuc2Zvcm0uZSgpLCB0cmFuc2Zvcm0uZigpKTsKLX0KLQog
c3RhdGljIHZvaWQgYWRkKEhhc2hlciYgaGFzaGVyLCBjb25zdCBHcmFkaWVudDo6Q29sb3JTdG9w
JiBzdG9wKQogewogICAgIGFkZChoYXNoZXIsIHN0b3Aub2Zmc2V0LCBzdG9wLmNvbG9yKTsKQEAg
LTE3Nyw3ICsxNjIsNyBAQCB1bnNpZ25lZCBHcmFkaWVudDo6aGFzaCgpIGNvbnN0CiB7CiAgICAg
aWYgKCFtX2NhY2hlZEhhc2gpIHsKICAgICAgICAgc29ydFN0b3BzKCk7Ci0gICAgICAgIG1fY2Fj
aGVkSGFzaCA9IGNvbXB1dGVIYXNoKG1fZGF0YSwgbV9zcHJlYWRNZXRob2QsIG1fZ3JhZGllbnRT
cGFjZVRyYW5zZm9ybWF0aW9uLCBtX3N0b3BzKTsKKyAgICAgICAgbV9jYWNoZWRIYXNoID0gY29t
cHV0ZUhhc2gobV9kYXRhLCBtX3NwcmVhZE1ldGhvZCwgbV9zdG9wcyk7CiAgICAgfQogICAgIHJl
dHVybiBtX2NhY2hlZEhhc2g7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFkaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYWRpZW50LmgJKHJldmlzaW9uIDI3MTM4NCkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4LCAyMDExLCAyMDEyLCAyMDEz
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNi0y
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAw
NyBBbHAgVG9rZXIgPGFscEBhdG9rZXIuY29tPgogICogQ29weXJpZ2h0IChDKSAyMDA4IFRvcmNo
IE1vYmlsZSwgSW5jLgogICoKQEAgLTEwNCw4ICsxMDQsNiBAQCBwdWJsaWM6CiAKICAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgUmVmPEdyYWRpZW50PiBjcmVhdGUoRGF0YSYmKTsKIAotICAgIFdF
QkNPUkVfRVhQT1JUIH5HcmFkaWVudCgpOwotCiAgICAgYm9vbCBpc1plcm9TaXplKCkgY29uc3Q7
CiAKICAgICBjb25zdCBEYXRhJiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9CkBAIC0x
MTgsMTYgKzExNiwxMyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTcHJl
YWRNZXRob2QoR3JhZGllbnRTcHJlYWRNZXRob2QpOwogICAgIEdyYWRpZW50U3ByZWFkTWV0aG9k
IHNwcmVhZE1ldGhvZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3ByZWFkTWV0aG9kOyB9CiAKLSAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHNldEdyYWRpZW50U3BhY2VUcmFuc2Zvcm0oY29uc3QgQWZmaW5l
VHJhbnNmb3JtJiBncmFkaWVudFNwYWNlVHJhbnNmb3JtYXRpb24pOwotICAgIGNvbnN0IEFmZmlu
ZVRyYW5zZm9ybSYgZ3JhZGllbnRTcGFjZVRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1fZ3Jh
ZGllbnRTcGFjZVRyYW5zZm9ybWF0aW9uOyB9Ci0KICAgICB2b2lkIGZpbGwoR3JhcGhpY3NDb250
ZXh0JiwgY29uc3QgRmxvYXRSZWN0Jik7CiAgICAgdm9pZCBhZGp1c3RQYXJhbWV0ZXJzRm9yVGls
ZWREcmF3aW5nKEZsb2F0U2l6ZSYsIEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2lu
Zyk7CiAKICAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3Q7CiAKICNpZiBVU0UoQ0FJUk8pCi0gICAg
UmVmUHRyPGNhaXJvX3BhdHRlcm5fdD4gY3JlYXRlUGF0dGVybihmbG9hdCBnbG9iYWxBbHBoYSk7
CisgICAgUmVmUHRyPGNhaXJvX3BhdHRlcm5fdD4gY3JlYXRlUGF0dGVybihmbG9hdCBnbG9iYWxB
bHBoYSwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJik7CiAjZW5kaWYKIAogI2lmIFVTRShDRykKQEAg
LTE1Nyw3ICsxNTIsNiBAQCBwcml2YXRlOgogICAgIG11dGFibGUgYm9vbCBtX3N0b3BzU29ydGVk
IHsgZmFsc2UgfTsKICAgICBHcmFkaWVudFNwcmVhZE1ldGhvZCBtX3NwcmVhZE1ldGhvZCB7IEdy
YWRpZW50U3ByZWFkTWV0aG9kOjpQYWQgfTsKICAgICBtdXRhYmxlIHVuc2lnbmVkIG1fY2FjaGVk
SGFzaCB7IDAgfTsKLSAgICBBZmZpbmVUcmFuc2Zvcm0gbV9ncmFkaWVudFNwYWNlVHJhbnNmb3Jt
YXRpb247CiAKICNpZiBVU0UoQ0cpCiAgICAgUmV0YWluUHRyPENHR3JhZGllbnRSZWY+IG1fZ3Jh
ZGllbnQ7CkBAIC0yNzYsNyArMjcwLDYgQEAgdGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4gdm9p
ZCBHcmFkaWVudAogICAgIGVuY29kZXIgPDwgbV9zdG9wczsKICAgICBlbmNvZGVyIDw8IG1fc3Rv
cHNTb3J0ZWQ7CiAgICAgZW5jb2RlciA8PCBtX3NwcmVhZE1ldGhvZDsKLSAgICBlbmNvZGVyIDw8
IG1fZ3JhZGllbnRTcGFjZVRyYW5zZm9ybWF0aW9uOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBE
ZWNvZGVyPiBPcHRpb25hbDxSZWY8R3JhZGllbnQ+PiBHcmFkaWVudDo6ZGVjb2RlKERlY29kZXIm
IGRlY29kZXIpCkBAIC0zMDcsMTIgKzMwMCw2IEBAIHRlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+
IE9wdGlvbmFsPFJlZjwKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICBncmFkaWVu
dC0+c2V0U3ByZWFkTWV0aG9kKHNwcmVhZE1ldGhvZCk7CiAKLSAgICBPcHRpb25hbDxBZmZpbmVU
cmFuc2Zvcm0+IGdyYWRpZW50U3BhY2VUcmFuc2Zvcm1hdGlvbjsKLSAgICBkZWNvZGVyID4+IGdy
YWRpZW50U3BhY2VUcmFuc2Zvcm1hdGlvbjsKLSAgICBpZiAoIWdyYWRpZW50U3BhY2VUcmFuc2Zv
cm1hdGlvbikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICBncmFkaWVudC0+c2V0
R3JhZGllbnRTcGFjZVRyYW5zZm9ybShXVEZNb3ZlKCpncmFkaWVudFNwYWNlVHJhbnNmb3JtYXRp
b24pKTsKLQogICAgIHJldHVybiBncmFkaWVudDsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuaAkocmV2aXNpb24gMjcxMzg0
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFnZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC01NCw3ICs1NCw3IEBAIHByaXZhdGU6CiAgICAgUmVmPEdyYWRpZW50
PiBtX2dyYWRpZW50OwogICAgIFJlZlB0cjxJbWFnZT4gbV9jYWNoZWRJbWFnZTsKICAgICBGbG9h
dFNpemUgbV9jYWNoZWRBZGp1c3RlZFNpemU7Ci0gICAgdW5zaWduZWQgbV9jYWNoZWRHZW5lcmF0
b3JIYXNoOworICAgIHVuc2lnbmVkIG1fY2FjaGVkR2VuZXJhdG9ySGFzaCB7IDAgfTsKICAgICBG
bG9hdFNpemUgbV9jYWNoZWRTY2FsZUZhY3RvcjsKIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAkocmV2aXNp
b24gMjcxMzg0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjExLDEzICsyMTEsMTMgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHRTdGF0ZUNoYW5nZTo6YWNjdW11bAogdm9pZCBHcmFwaGljc0NvbnRleHRTdGF0
ZUNoYW5nZTo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBjb25zdAogewogICAgIGlm
IChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VHcmFk
aWVudENoYW5nZSkpCi0gICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlR3JhZGllbnQoKm1fc3RhdGUu
c3Ryb2tlR3JhZGllbnQpOworICAgICAgICBjb250ZXh0LnNldFN0cm9rZUdyYWRpZW50KCptX3N0
YXRlLnN0cm9rZUdyYWRpZW50LCBtX3N0YXRlLnN0cm9rZUdyYWRpZW50U3BhY2VUcmFuc2Zvcm0p
OwogCiAgICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6
OlN0cm9rZVBhdHRlcm5DaGFuZ2UpKQogICAgICAgICBjb250ZXh0LnNldFN0cm9rZVBhdHRlcm4o
Km1fc3RhdGUuc3Ryb2tlUGF0dGVybik7CiAKICAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlu
cyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbEdyYWRpZW50Q2hhbmdlKSkKLSAgICAgICAgY29u
dGV4dC5zZXRGaWxsR3JhZGllbnQoKm1fc3RhdGUuZmlsbEdyYWRpZW50KTsKKyAgICAgICAgY29u
dGV4dC5zZXRGaWxsR3JhZGllbnQoKm1fc3RhdGUuZmlsbEdyYWRpZW50LCBtX3N0YXRlLmZpbGxH
cmFkaWVudFNwYWNlVHJhbnNmb3JtKTsKIAogICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5z
KEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsUGF0dGVybkNoYW5nZSkpCiAgICAgICAgIGNvbnRl
eHQuc2V0RmlsbFBhdHRlcm4oKm1fc3RhdGUuZmlsbFBhdHRlcm4pOwpAQCAtNjIwLDEwICs2MjAs
MTEgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldEZpbGxQYXR0ZXJuKFJlZgogICAgICAgICBt
X2ltcGwtPnVwZGF0ZVN0YXRlKG1fc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsUGF0
dGVybkNoYW5nZSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRTdHJva2VHcmFkaWVu
dChSZWY8R3JhZGllbnQ+JiYgZ3JhZGllbnQpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0U3Ry
b2tlR3JhZGllbnQoUmVmPEdyYWRpZW50PiYmIGdyYWRpZW50LCBjb25zdCBBZmZpbmVUcmFuc2Zv
cm0mIHN0cm9rZUdyYWRpZW50U3BhY2VUcmFuc2Zvcm0pCiB7CiAgICAgbV9zdGF0ZS5zdHJva2VD
b2xvciA9IHsgfTsKICAgICBtX3N0YXRlLnN0cm9rZUdyYWRpZW50ID0gV1RGTW92ZShncmFkaWVu
dCk7CisgICAgbV9zdGF0ZS5zdHJva2VHcmFkaWVudFNwYWNlVHJhbnNmb3JtID0gc3Ryb2tlR3Jh
ZGllbnRTcGFjZVRyYW5zZm9ybTsKICAgICBtX3N0YXRlLnN0cm9rZVBhdHRlcm4gPSBudWxscHRy
OwogICAgIGlmIChtX2ltcGwpCiAgICAgICAgIG1faW1wbC0+dXBkYXRlU3RhdGUobV9zdGF0ZSwg
R3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZUdyYWRpZW50Q2hhbmdlKTsKQEAgLTYzNiwxMCAr
NjM3LDExIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRGaWxsUnVsZShXaW5kUnUKICAgICAg
ICAgbV9pbXBsLT51cGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Rmls
bFJ1bGVDaGFuZ2UpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0RmlsbEdyYWRpZW50
KFJlZjxHcmFkaWVudD4mJiBncmFkaWVudCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRGaWxs
R3JhZGllbnQoUmVmPEdyYWRpZW50PiYmIGdyYWRpZW50LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0m
IGZpbGxHcmFkaWVudFNwYWNlVHJhbnNmb3JtKQogewogICAgIG1fc3RhdGUuZmlsbENvbG9yID0g
eyB9OwogICAgIG1fc3RhdGUuZmlsbEdyYWRpZW50ID0gV1RGTW92ZShncmFkaWVudCk7CisgICAg
bV9zdGF0ZS5maWxsR3JhZGllbnRTcGFjZVRyYW5zZm9ybSA9IGZpbGxHcmFkaWVudFNwYWNlVHJh
bnNmb3JtOwogICAgIG1fc3RhdGUuZmlsbFBhdHRlcm4gPSBudWxscHRyOwogICAgIGlmIChtX2lt
cGwpCiAgICAgICAgIG1faW1wbC0+dXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0
U3RhdGU6OkZpbGxHcmFkaWVudENoYW5nZSk7IC8vIEZJWE1FOiBhbHNvIGZpbGwgcGF0dGVybj8K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dC5oCShyZXZpc2lvbiAyNzEzODQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtMjEyLDYgKzIxMiw5
IEBAIHN0cnVjdCBHcmFwaGljc0NvbnRleHRTdGF0ZSB7CiAgICAgQ29sb3IgZmlsbENvbG9yIHsg
Q29sb3I6OmJsYWNrIH07CiAgICAgQ29sb3Igc2hhZG93Q29sb3I7CiAKKyAgICBBZmZpbmVUcmFu
c2Zvcm0gc3Ryb2tlR3JhZGllbnRTcGFjZVRyYW5zZm9ybTsKKyAgICBBZmZpbmVUcmFuc2Zvcm0g
ZmlsbEdyYWRpZW50U3BhY2VUcmFuc2Zvcm07CisgICAgCiAgICAgU3Ryb2tlU3R5bGUgc3Ryb2tl
U3R5bGUgeyBTb2xpZFN0cm9rZSB9OwogICAgIFdpbmRSdWxlIGZpbGxSdWxlIHsgV2luZFJ1bGU6
Ok5vblplcm8gfTsKIApAQCAtMzAzLDcgKzMwNiw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFN0
cm9rZVBhdHRlcm4oUmVmPFBhdHRlcm4+JiYpOwogICAgIFBhdHRlcm4qIHN0cm9rZVBhdHRlcm4o
KSBjb25zdCB7IHJldHVybiBtX3N0YXRlLnN0cm9rZVBhdHRlcm4uZ2V0KCk7IH0KIAotICAgIHZv
aWQgc2V0U3Ryb2tlR3JhZGllbnQoUmVmPEdyYWRpZW50PiYmKTsKKyAgICB2b2lkIHNldFN0cm9r
ZUdyYWRpZW50KFJlZjxHcmFkaWVudD4mJiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiA9IHsgfSk7
CiAgICAgR3JhZGllbnQqIHN0cm9rZUdyYWRpZW50KCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5z
dHJva2VHcmFkaWVudC5nZXQoKTsgfQogCiAgICAgdm9pZCBzZXRGaWxsUnVsZShXaW5kUnVsZSk7
CkBAIC0zMTUsNyArMzE4LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0RmlsbFBhdHRlcm4oUmVm
PFBhdHRlcm4+JiYpOwogICAgIFBhdHRlcm4qIGZpbGxQYXR0ZXJuKCkgY29uc3QgeyByZXR1cm4g
bV9zdGF0ZS5maWxsUGF0dGVybi5nZXQoKTsgfQogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBz
ZXRGaWxsR3JhZGllbnQoUmVmPEdyYWRpZW50PiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHNldEZpbGxHcmFkaWVudChSZWY8R3JhZGllbnQ+JiYsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYg
PSB7IH0pOwogICAgIEdyYWRpZW50KiBmaWxsR3JhZGllbnQoKSBjb25zdCB7IHJldHVybiBtX3N0
YXRlLmZpbGxHcmFkaWVudC5nZXQoKTsgfQogCiAgICAgdm9pZCBzZXRTaGFkb3dzSWdub3JlVHJh
bnNmb3Jtcyhib29sKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0NhaXJvT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMjcxMzg0
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRp
b25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTcyLDkgKzU3Miw5IEBAIEZpbGxTb3VyY2U6OkZp
bGxTb3VyY2UoY29uc3QgR3JhcGhpY3NDb24KICAgICAgICAgcGF0dGVybi5yZXBlYXRYID0gc3Rh
dGUuZmlsbFBhdHRlcm4tPnJlcGVhdFgoKTsKICAgICAgICAgcGF0dGVybi5yZXBlYXRZID0gc3Rh
dGUuZmlsbFBhdHRlcm4tPnJlcGVhdFkoKTsKICAgICB9IGVsc2UgaWYgKHN0YXRlLmZpbGxHcmFk
aWVudCkgewotICAgICAgICBncmFkaWVudC5iYXNlID0gc3RhdGUuZmlsbEdyYWRpZW50LT5jcmVh
dGVQYXR0ZXJuKDEpOworICAgICAgICBncmFkaWVudC5iYXNlID0gc3RhdGUuZmlsbEdyYWRpZW50
LT5jcmVhdGVQYXR0ZXJuKDEsIHN0YXRlLmZpbGxHcmFkaWVudFNwYWNlVHJhbnNmb3JtKTsKICAg
ICAgICAgaWYgKHN0YXRlLmFscGhhICE9IDEpCi0gICAgICAgICAgICBncmFkaWVudC5hbHBoYUFk
anVzdGVkID0gc3RhdGUuZmlsbEdyYWRpZW50LT5jcmVhdGVQYXR0ZXJuKHN0YXRlLmFscGhhKTsK
KyAgICAgICAgICAgIGdyYWRpZW50LmFscGhhQWRqdXN0ZWQgPSBzdGF0ZS5maWxsR3JhZGllbnQt
PmNyZWF0ZVBhdHRlcm4oc3RhdGUuYWxwaGEsIHN0YXRlLmZpbGxHcmFkaWVudFNwYWNlVHJhbnNm
b3JtKTsKICAgICB9IGVsc2UKICAgICAgICAgY29sb3IgPSBzdGF0ZS5maWxsQ29sb3I7CiB9CkBA
IC01ODUsOSArNTg1LDkgQEAgU3Ryb2tlU291cmNlOjpTdHJva2VTb3VyY2UoY29uc3QgR3JhcGhp
YwogICAgIGlmIChzdGF0ZS5zdHJva2VQYXR0ZXJuKQogICAgICAgICBwYXR0ZXJuID0gYWRvcHRS
ZWYoc3RhdGUuc3Ryb2tlUGF0dGVybi0+Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuKEFmZmluZVRyYW5z
Zm9ybSgpKSk7CiAgICAgZWxzZSBpZiAoc3RhdGUuc3Ryb2tlR3JhZGllbnQpIHsKLSAgICAgICAg
Z3JhZGllbnQuYmFzZSA9IHN0YXRlLnN0cm9rZUdyYWRpZW50LT5jcmVhdGVQYXR0ZXJuKDEpOwor
ICAgICAgICBncmFkaWVudC5iYXNlID0gc3RhdGUuc3Ryb2tlR3JhZGllbnQtPmNyZWF0ZVBhdHRl
cm4oMSwgc3RhdGUuc3Ryb2tlR3JhZGllbnRTcGFjZVRyYW5zZm9ybSk7CiAgICAgICAgIGlmIChz
dGF0ZS5hbHBoYSAhPSAxKQotICAgICAgICAgICAgZ3JhZGllbnQuYWxwaGFBZGp1c3RlZCA9IHN0
YXRlLnN0cm9rZUdyYWRpZW50LT5jcmVhdGVQYXR0ZXJuKHN0YXRlLmFscGhhKTsKKyAgICAgICAg
ICAgIGdyYWRpZW50LmFscGhhQWRqdXN0ZWQgPSBzdGF0ZS5zdHJva2VHcmFkaWVudC0+Y3JlYXRl
UGF0dGVybihzdGF0ZS5hbHBoYSwgc3RhdGUuc3Ryb2tlR3JhZGllbnRTcGFjZVRyYW5zZm9ybSk7
CiAgICAgfSBlbHNlCiAgICAgICAgIGNvbG9yID0gc3RhdGUuc3Ryb2tlQ29sb3I7CiB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFkaWVudENhaXJvLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9H
cmFkaWVudENhaXJvLmNwcAkocmV2aXNpb24gMjcxMzg0KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhZGllbnRDYWlyby5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE1OCw3ICsxNTgsNyBAQCBzdGF0aWMgUmVmUHRyPGNhaXJvX3BhdHRlcm5fdD4gY3JlYXRlQ29u
CiAgICAgcmV0dXJuIGdyYWRpZW50OwogfQogCi1SZWZQdHI8Y2Fpcm9fcGF0dGVybl90PiBHcmFk
aWVudDo6Y3JlYXRlUGF0dGVybihmbG9hdCBnbG9iYWxBbHBoYSkKK1JlZlB0cjxjYWlyb19wYXR0
ZXJuX3Q+IEdyYWRpZW50OjpjcmVhdGVQYXR0ZXJuKGZsb2F0IGdsb2JhbEFscGhhLCBjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mIGdyYWRpZW50U3BhY2VUcmFuc2Zvcm0pCiB7CiAgICAgYXV0byBncmFk
aWVudCA9IFdURjo6c3dpdGNoT24obV9kYXRhLAogICAgICAgICBbJl0gKGNvbnN0IExpbmVhckRh
dGEmIGRhdGEpIHsKQEAgLTE5NSw3ICsxOTUsNyBAQCBSZWZQdHI8Y2Fpcm9fcGF0dGVybl90PiBH
cmFkaWVudDo6Y3JlYXRlCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIGNhaXJvX21hdHJp
eF90IG1hdHJpeCA9IHRvQ2Fpcm9NYXRyaXgobV9ncmFkaWVudFNwYWNlVHJhbnNmb3JtYXRpb24p
OworICAgIGNhaXJvX21hdHJpeF90IG1hdHJpeCA9IHRvQ2Fpcm9NYXRyaXgoZ3JhZGllbnRTcGFj
ZVRyYW5zZm9ybSk7CiAgICAgY2Fpcm9fbWF0cml4X2ludmVydCgmbWF0cml4KTsKICAgICBjYWly
b19wYXR0ZXJuX3NldF9tYXRyaXgoZ3JhZGllbnQuZ2V0KCksICZtYXRyaXgpOwogCkBAIC0yMDQs
NyArMjA0LDcgQEAgUmVmUHRyPGNhaXJvX3BhdHRlcm5fdD4gR3JhZGllbnQ6OmNyZWF0ZQogCiB2
b2lkIEdyYWRpZW50OjpmaWxsKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRS
ZWN0JiByZWN0KQogewotICAgIGF1dG8gcGF0dGVybiA9IGNyZWF0ZVBhdHRlcm4oMS4wKTsKKyAg
ICBhdXRvIHBhdHRlcm4gPSBjcmVhdGVQYXR0ZXJuKDEuMCwgY29udGV4dC5zdGF0ZSgpLmZpbGxH
cmFkaWVudFNwYWNlVHJhbnNmb3JtKTsKICAgICBpZiAoIXBhdHRlcm4pCiAgICAgICAgIHJldHVy
bjsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhp
Y3NDb250ZXh0SW1wbENhaXJvLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uY3BwCShyZXZpc2lv
biAyNzEzODQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFw
aGljc0NvbnRleHRJbXBsQ2Fpcm8uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTQsNyArMTU0LDgg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmZpbGxSZWN0KAogCiB2b2lkIEdyYXBo
aWNzQ29udGV4dEltcGxDYWlybzo6ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBHcmFk
aWVudCYgZ3JhZGllbnQpCiB7Ci0gICAgYXV0byBwYXR0ZXJuID0gZ3JhZGllbnQuY3JlYXRlUGF0
dGVybigxLjApOworICAgIGF1dG8mIHN0YXRlID0gZ3JhcGhpY3NDb250ZXh0KCkuc3RhdGUoKTsK
KyAgICBhdXRvIHBhdHRlcm4gPSBncmFkaWVudC5jcmVhdGVQYXR0ZXJuKDEuMCwgc3RhdGUuZmls
bEdyYWRpZW50U3BhY2VUcmFuc2Zvcm0pOwogICAgIGlmICghcGF0dGVybikKICAgICAgICAgcmV0
dXJuOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGlj
c0NvbnRleHRDRy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCShyZXZpc2lvbiAyNzEzODQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTY4Miw3ICs2ODIsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Zmls
bFBhdGgoY29uc3QgUGF0CiAgICAgICAgICAgICBDR0NvbnRleHRUcmFuc2xhdGVDVE0obGF5ZXJD
b250ZXh0LCAtcmVjdC54KCksIC1yZWN0LnkoKSk7CiAgICAgICAgICAgICBDR0NvbnRleHRCZWdp
blBhdGgobGF5ZXJDb250ZXh0KTsKICAgICAgICAgICAgIENHQ29udGV4dEFkZFBhdGgobGF5ZXJD
b250ZXh0LCBwYXRoLnBsYXRmb3JtUGF0aCgpKTsKLSAgICAgICAgICAgIENHQ29udGV4dENvbmNh
dENUTShsYXllckNvbnRleHQsIG1fc3RhdGUuZmlsbEdyYWRpZW50LT5ncmFkaWVudFNwYWNlVHJh
bnNmb3JtKCkpOworICAgICAgICAgICAgQ0dDb250ZXh0Q29uY2F0Q1RNKGxheWVyQ29udGV4dCwg
bV9zdGF0ZS5maWxsR3JhZGllbnRTcGFjZVRyYW5zZm9ybSk7CiAKICAgICAgICAgICAgIGlmIChm
aWxsUnVsZSgpID09IFdpbmRSdWxlOjpFdmVuT2RkKQogICAgICAgICAgICAgICAgIENHQ29udGV4
dEVPQ2xpcChsYXllckNvbnRleHQpOwpAQCAtNjk2LDcgKzY5Niw3IEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0OjpmaWxsUGF0aChjb25zdCBQYXQKICAgICAgICAgICAgIENHQ29udGV4dEJlZ2luUGF0
aChjb250ZXh0KTsKICAgICAgICAgICAgIENHQ29udGV4dEFkZFBhdGgoY29udGV4dCwgcGF0aC5w
bGF0Zm9ybVBhdGgoKSk7CiAgICAgICAgICAgICBDR0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2
ZXIoY29udGV4dCk7Ci0gICAgICAgICAgICBDR0NvbnRleHRDb25jYXRDVE0oY29udGV4dCwgbV9z
dGF0ZS5maWxsR3JhZGllbnQtPmdyYWRpZW50U3BhY2VUcmFuc2Zvcm0oKSk7CisgICAgICAgICAg
ICBDR0NvbnRleHRDb25jYXRDVE0oY29udGV4dCwgbV9zdGF0ZS5maWxsR3JhZGllbnRTcGFjZVRy
YW5zZm9ybSk7CiAKICAgICAgICAgICAgIGlmIChmaWxsUnVsZSgpID09IFdpbmRSdWxlOjpFdmVu
T2RkKQogICAgICAgICAgICAgICAgIENHQ29udGV4dEVPQ2xpcChjb250ZXh0KTsKQEAgLTc2MCw3
ICs3NjAsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c3Ryb2tlUGF0aChjb25zdCBQCiAgICAg
ICAgICAgICBDR0NvbnRleHRBZGRQYXRoKGxheWVyQ29udGV4dCwgcGF0aC5wbGF0Zm9ybVBhdGgo
KSk7CiAgICAgICAgICAgICBDR0NvbnRleHRSZXBsYWNlUGF0aFdpdGhTdHJva2VkUGF0aChsYXll
ckNvbnRleHQpOwogICAgICAgICAgICAgQ0dDb250ZXh0Q2xpcChsYXllckNvbnRleHQpOwotICAg
ICAgICAgICAgQ0dDb250ZXh0Q29uY2F0Q1RNKGxheWVyQ29udGV4dCwgbV9zdGF0ZS5zdHJva2VH
cmFkaWVudC0+Z3JhZGllbnRTcGFjZVRyYW5zZm9ybSgpKTsKKyAgICAgICAgICAgIENHQ29udGV4
dENvbmNhdENUTShsYXllckNvbnRleHQsIG1fc3RhdGUuc3Ryb2tlR3JhZGllbnRTcGFjZVRyYW5z
Zm9ybSk7CiAgICAgICAgICAgICBtX3N0YXRlLnN0cm9rZUdyYWRpZW50LT5wYWludChsYXllckNv
bnRleHQpOwogCiAgICAgICAgICAgICBmbG9hdCBkZXN0aW5hdGlvblggPSByb3VuZGYocmVjdC54
KCkgLSBsaW5lV2lkdGgpOwpAQCAtNzczLDcgKzc3Myw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
OjpzdHJva2VQYXRoKGNvbnN0IFAKICAgICAgICAgICAgIENHQ29udGV4dEFkZFBhdGgoY29udGV4
dCwgcGF0aC5wbGF0Zm9ybVBhdGgoKSk7CiAgICAgICAgICAgICBDR0NvbnRleHRSZXBsYWNlUGF0
aFdpdGhTdHJva2VkUGF0aChjb250ZXh0KTsKICAgICAgICAgICAgIENHQ29udGV4dENsaXAoY29u
dGV4dCk7Ci0gICAgICAgICAgICBDR0NvbnRleHRDb25jYXRDVE0oY29udGV4dCwgbV9zdGF0ZS5z
dHJva2VHcmFkaWVudC0+Z3JhZGllbnRTcGFjZVRyYW5zZm9ybSgpKTsKKyAgICAgICAgICAgIENH
Q29udGV4dENvbmNhdENUTShjb250ZXh0LCBtX3N0YXRlLnN0cm9rZUdyYWRpZW50U3BhY2VUcmFu
c2Zvcm0pOwogICAgICAgICAgICAgbV9zdGF0ZS5zdHJva2VHcmFkaWVudC0+cGFpbnQoKnRoaXMp
OwogICAgICAgICB9CiAgICAgICAgIHJldHVybjsKQEAgLTgyNSwxMyArODI1LDEzIEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdChjb25zdCBGbG8KICAgICAgICAgICAgIENHQ29udGV4
dEFkZFJlY3QobGF5ZXJDb250ZXh0LCByZWN0KTsKICAgICAgICAgICAgIENHQ29udGV4dENsaXAo
bGF5ZXJDb250ZXh0KTsKIAotICAgICAgICAgICAgQ0dDb250ZXh0Q29uY2F0Q1RNKGxheWVyQ29u
dGV4dCwgbV9zdGF0ZS5maWxsR3JhZGllbnQtPmdyYWRpZW50U3BhY2VUcmFuc2Zvcm0oKSk7Cisg
ICAgICAgICAgICBDR0NvbnRleHRDb25jYXRDVE0obGF5ZXJDb250ZXh0LCBtX3N0YXRlLmZpbGxH
cmFkaWVudFNwYWNlVHJhbnNmb3JtKTsKICAgICAgICAgICAgIG1fc3RhdGUuZmlsbEdyYWRpZW50
LT5wYWludChsYXllckNvbnRleHQpOwogICAgICAgICAgICAgQ0dDb250ZXh0RHJhd0xheWVySW5S
ZWN0KGNvbnRleHQsIHJlY3QsIGxheWVyKTsKICAgICAgICAgICAgIENHTGF5ZXJSZWxlYXNlKGxh
eWVyKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIENHQ29udGV4dENsaXBUb1JlY3Qo
Y29udGV4dCwgcmVjdCk7Ci0gICAgICAgICAgICBDR0NvbnRleHRDb25jYXRDVE0oY29udGV4dCwg
bV9zdGF0ZS5maWxsR3JhZGllbnQtPmdyYWRpZW50U3BhY2VUcmFuc2Zvcm0oKSk7CisgICAgICAg
ICAgICBDR0NvbnRleHRDb25jYXRDVE0oY29udGV4dCwgbV9zdGF0ZS5maWxsR3JhZGllbnRTcGFj
ZVRyYW5zZm9ybSk7CiAgICAgICAgICAgICBtX3N0YXRlLmZpbGxHcmFkaWVudC0+cGFpbnQoKnRo
aXMpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybjsKQEAgLTEyNDMsNyArMTI0Myw3IEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0OjpzdHJva2VSZWN0KGNvbnN0IEYKICAgICAgICAgICAgIENHQ29u
dGV4dEFkZFJlY3QobGF5ZXJDb250ZXh0LCByZWN0KTsKICAgICAgICAgICAgIENHQ29udGV4dFJl
cGxhY2VQYXRoV2l0aFN0cm9rZWRQYXRoKGxheWVyQ29udGV4dCk7CiAgICAgICAgICAgICBDR0Nv
bnRleHRDbGlwKGxheWVyQ29udGV4dCk7Ci0gICAgICAgICAgICBDR0NvbnRleHRDb25jYXRDVE0o
bGF5ZXJDb250ZXh0LCBtX3N0YXRlLnN0cm9rZUdyYWRpZW50LT5ncmFkaWVudFNwYWNlVHJhbnNm
b3JtKCkpOworICAgICAgICAgICAgQ0dDb250ZXh0Q29uY2F0Q1RNKGxheWVyQ29udGV4dCwgbV9z
dGF0ZS5zdHJva2VHcmFkaWVudFNwYWNlVHJhbnNmb3JtKTsKICAgICAgICAgICAgIG1fc3RhdGUu
c3Ryb2tlR3JhZGllbnQtPnBhaW50KGxheWVyQ29udGV4dCk7CiAKICAgICAgICAgICAgIGNvbnN0
IGZsb2F0IGRlc3RpbmF0aW9uWCA9IHJvdW5kZihyZWN0LngoKSAtIGxpbmVXaWR0aCk7CkBAIC0x
MjU2LDcgKzEyNTYsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c3Ryb2tlUmVjdChjb25zdCBG
CiAgICAgICAgICAgICBDR0NvbnRleHRBZGRSZWN0KGNvbnRleHQsIHJlY3QpOwogICAgICAgICAg
ICAgQ0dDb250ZXh0UmVwbGFjZVBhdGhXaXRoU3Ryb2tlZFBhdGgoY29udGV4dCk7CiAgICAgICAg
ICAgICBDR0NvbnRleHRDbGlwKGNvbnRleHQpOwotICAgICAgICAgICAgQ0dDb250ZXh0Q29uY2F0
Q1RNKGNvbnRleHQsIG1fc3RhdGUuc3Ryb2tlR3JhZGllbnQtPmdyYWRpZW50U3BhY2VUcmFuc2Zv
cm0oKSk7CisgICAgICAgICAgICBDR0NvbnRleHRDb25jYXRDVE0oY29udGV4dCwgbV9zdGF0ZS5z
dHJva2VHcmFkaWVudFNwYWNlVHJhbnNmb3JtKTsKICAgICAgICAgICAgIG1fc3RhdGUuc3Ryb2tl
R3JhZGllbnQtPnBhaW50KCp0aGlzKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm47CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3REcmF3R2x5cGhzUmVjb3JkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3R2x5cGhzUmVjb3JkZXIu
aAkocmV2aXNpb24gMjcxMzg0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd0dseXBoc1JlY29yZGVyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTk4LDYgKzk4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgc3RydWN0IFN0eWxlIHsKICAg
ICAgICAgICAgIENvbG9yIGNvbG9yOwogICAgICAgICAgICAgUmVmUHRyPEdyYWRpZW50PiBncmFk
aWVudDsKKyAgICAgICAgICAgIEFmZmluZVRyYW5zZm9ybSBncmFkaWVudFNwYWNlVHJhbnNmb3Jt
OwogICAgICAgICAgICAgUmVmUHRyPFBhdHRlcm4+IHBhdHRlcm47CiAgICAgICAgIH07CiAgICAg
ICAgIFN0eWxlIGZpbGxTdHlsZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdHbHlwaHNSZWNvcmRlckNvcmVUZXh0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3REcmF3R2x5cGhzUmVjb3JkZXJDb3JlVGV4dC5jcHAJKHJldmlzaW9u
IDI3MTM4NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdERyYXdHbHlwaHNSZWNvcmRlckNvcmVUZXh0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtOTgsMTAgKzk4LDEyIEBAIHZvaWQgRHJhd0dseXBoc1JlY29yZGVyOjpwb3B1bGF0ZUlu
dGVybmEKIHsKICAgICBtX29yaWdpbmFsU3RhdGUuZmlsbFN0eWxlLmNvbG9yID0gY29udGV4dFN0
YXRlLmZpbGxDb2xvcjsKICAgICBtX29yaWdpbmFsU3RhdGUuZmlsbFN0eWxlLmdyYWRpZW50ID0g
Y29udGV4dFN0YXRlLmZpbGxHcmFkaWVudDsKKyAgICBtX29yaWdpbmFsU3RhdGUuZmlsbFN0eWxl
LmdyYWRpZW50U3BhY2VUcmFuc2Zvcm0gPSBjb250ZXh0U3RhdGUuZmlsbEdyYWRpZW50U3BhY2VU
cmFuc2Zvcm07CiAgICAgbV9vcmlnaW5hbFN0YXRlLmZpbGxTdHlsZS5wYXR0ZXJuID0gY29udGV4
dFN0YXRlLmZpbGxQYXR0ZXJuOwogCiAgICAgbV9vcmlnaW5hbFN0YXRlLnN0cm9rZVN0eWxlLmNv
bG9yID0gY29udGV4dFN0YXRlLnN0cm9rZUNvbG9yOwogICAgIG1fb3JpZ2luYWxTdGF0ZS5zdHJv
a2VTdHlsZS5ncmFkaWVudCA9IGNvbnRleHRTdGF0ZS5zdHJva2VHcmFkaWVudDsKKyAgICBtX29y
aWdpbmFsU3RhdGUuc3Ryb2tlU3R5bGUuZ3JhZGllbnRTcGFjZVRyYW5zZm9ybSA9IGNvbnRleHRT
dGF0ZS5zdHJva2VHcmFkaWVudFNwYWNlVHJhbnNmb3JtOwogICAgIG1fb3JpZ2luYWxTdGF0ZS5z
dHJva2VTdHlsZS5wYXR0ZXJuID0gY29udGV4dFN0YXRlLnN0cm9rZVBhdHRlcm47CiAKICAgICBt
X29yaWdpbmFsU3RhdGUuY3RtID0gbV9vd25lci5jdXJyZW50U3RhdGUoKS5jdG07IC8vIEZJWE1F
OiBEZWFsIHdpdGggYmFzZSBDVE0uCkBAIC0xMTksNyArMTIxLDcgQEAgdm9pZCBEcmF3R2x5cGhz
UmVjb3JkZXI6OnBvcHVsYXRlSW50ZXJuYQogICAgIGlmIChtX29yaWdpbmFsU3RhdGUuZmlsbFN0
eWxlLmNvbG9yLmlzVmFsaWQoKSkKICAgICAgICAgbV9pbnRlcm5hbENvbnRleHQuc2V0RmlsbENv
bG9yKG1fb3JpZ2luYWxTdGF0ZS5maWxsU3R5bGUuY29sb3IpOwogICAgIGVsc2UgaWYgKG1fb3Jp
Z2luYWxTdGF0ZS5maWxsU3R5bGUuZ3JhZGllbnQpCi0gICAgICAgIG1faW50ZXJuYWxDb250ZXh0
LnNldEZpbGxHcmFkaWVudCgqbV9vcmlnaW5hbFN0YXRlLmZpbGxTdHlsZS5ncmFkaWVudCk7Cisg
ICAgICAgIG1faW50ZXJuYWxDb250ZXh0LnNldEZpbGxHcmFkaWVudCgqbV9vcmlnaW5hbFN0YXRl
LmZpbGxTdHlsZS5ncmFkaWVudCwgbV9vcmlnaW5hbFN0YXRlLmZpbGxTdHlsZS5ncmFkaWVudFNw
YWNlVHJhbnNmb3JtKTsKICAgICBlbHNlIHsKICAgICAgICAgQVNTRVJUKG1fb3JpZ2luYWxTdGF0
ZS5maWxsU3R5bGUucGF0dGVybik7CiAgICAgICAgIGlmIChtX29yaWdpbmFsU3RhdGUuZmlsbFN0
eWxlLnBhdHRlcm4pCkBAIC0xMjksNyArMTMxLDcgQEAgdm9pZCBEcmF3R2x5cGhzUmVjb3JkZXI6
OnBvcHVsYXRlSW50ZXJuYQogICAgIGlmIChtX29yaWdpbmFsU3RhdGUuc3Ryb2tlU3R5bGUuY29s
b3IuaXNWYWxpZCgpKQogICAgICAgICBtX2ludGVybmFsQ29udGV4dC5zZXRTdHJva2VDb2xvciht
X29yaWdpbmFsU3RhdGUuc3Ryb2tlU3R5bGUuY29sb3IpOwogICAgIGVsc2UgaWYgKG1fb3JpZ2lu
YWxTdGF0ZS5zdHJva2VTdHlsZS5ncmFkaWVudCkKLSAgICAgICAgbV9pbnRlcm5hbENvbnRleHQu
c2V0U3Ryb2tlR3JhZGllbnQoKm1fb3JpZ2luYWxTdGF0ZS5zdHJva2VTdHlsZS5ncmFkaWVudCk7
CisgICAgICAgIG1faW50ZXJuYWxDb250ZXh0LnNldFN0cm9rZUdyYWRpZW50KCptX29yaWdpbmFs
U3RhdGUuc3Ryb2tlU3R5bGUuZ3JhZGllbnQsIG1fb3JpZ2luYWxTdGF0ZS5zdHJva2VTdHlsZS5n
cmFkaWVudFNwYWNlVHJhbnNmb3JtKTsKICAgICBlbHNlIHsKICAgICAgICAgQVNTRVJUKG1fb3Jp
Z2luYWxTdGF0ZS5zdHJva2VTdHlsZS5wYXR0ZXJuKTsKICAgICAgICAgaWYgKG1fb3JpZ2luYWxT
dGF0ZS5zdHJva2VTdHlsZS5wYXR0ZXJuKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dEl0ZW1zLmNwcAkocmV2aXNpb24gMjcxMzg0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMTUsOSArMTE1LDkgQEAgc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0
cmVhbQogICAgIHJldHVybiB0czsKIH0KIAotU2V0SW5saW5lRmlsbEdyYWRpZW50OjpTZXRJbmxp
bmVGaWxsR3JhZGllbnQoY29uc3QgR3JhZGllbnQmIGdyYWRpZW50KQorU2V0SW5saW5lRmlsbEdy
YWRpZW50OjpTZXRJbmxpbmVGaWxsR3JhZGllbnQoY29uc3QgR3JhZGllbnQmIGdyYWRpZW50LCBj
b25zdCBBZmZpbmVUcmFuc2Zvcm0mIGdyYWRpZW50U3BhY2VUcmFuc2Zvcm0pCiAgICAgOiBtX2Rh
dGEoZ3JhZGllbnQuZGF0YSgpKQotICAgICwgbV9ncmFkaWVudFNwYWNlVHJhbnNmb3JtYXRpb24o
Z3JhZGllbnQuZ3JhZGllbnRTcGFjZVRyYW5zZm9ybSgpKQorICAgICwgbV9ncmFkaWVudFNwYWNl
VHJhbnNmb3JtKGdyYWRpZW50U3BhY2VUcmFuc2Zvcm0pCiAgICAgLCBtX3NwcmVhZE1ldGhvZChn
cmFkaWVudC5zcHJlYWRNZXRob2QoKSkKICAgICAsIG1fY29sb3JTdG9wQ291bnQoc3RhdGljX2Nh
c3Q8dWludDhfdD4oZ3JhZGllbnQuc3RvcHMoKS5zaXplKCkpKQogewpAQCAtMTI4LDE5ICsxMjgs
OSBAQCBTZXRJbmxpbmVGaWxsR3JhZGllbnQ6OlNldElubGluZUZpbGxHcmFkCiAgICAgfQogfQog
Ci1SZWY8R3JhZGllbnQ+IFNldElubGluZUZpbGxHcmFkaWVudDo6Z3JhZGllbnQoKSBjb25zdAot
ewotICAgIGF1dG8gZ3JhZGllbnQgPSBHcmFkaWVudDo6Y3JlYXRlKEdyYWRpZW50OjpEYXRhKG1f
ZGF0YSkpOwotICAgIGZvciAodWludDhfdCBpID0gMDsgaSA8IG1fY29sb3JTdG9wQ291bnQ7ICsr
aSkKLSAgICAgICAgZ3JhZGllbnQtPmFkZENvbG9yU3RvcCh7IG1fb2Zmc2V0c1tpXSwgQ29sb3Io
bV9jb2xvcnNbaV0pIH0pOwotICAgIGdyYWRpZW50LT5zZXRTcHJlYWRNZXRob2QobV9zcHJlYWRN
ZXRob2QpOwotICAgIGdyYWRpZW50LT5zZXRHcmFkaWVudFNwYWNlVHJhbnNmb3JtKG1fZ3JhZGll
bnRTcGFjZVRyYW5zZm9ybWF0aW9uKTsKLSAgICByZXR1cm4gZ3JhZGllbnQ7Ci19Ci0KLVNldElu
bGluZUZpbGxHcmFkaWVudDo6U2V0SW5saW5lRmlsbEdyYWRpZW50KGZsb2F0IG9mZnNldHNbbWF4
Q29sb3JTdG9wQ291bnRdLCBTUkdCQTx1aW50OF90PiBjb2xvcnNbbWF4Q29sb3JTdG9wQ291bnRd
LCBjb25zdCBHcmFkaWVudDo6RGF0YSYgZGF0YSwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBncmFk
aWVudFNwYWNlVHJhbnNmb3JtYXRpb24sIEdyYWRpZW50U3ByZWFkTWV0aG9kIHNwcmVhZE1ldGhv
ZCwgdWludDhfdCBjb2xvclN0b3BDb3VudCkKK1NldElubGluZUZpbGxHcmFkaWVudDo6U2V0SW5s
aW5lRmlsbEdyYWRpZW50KGZsb2F0IG9mZnNldHNbbWF4Q29sb3JTdG9wQ291bnRdLCBTUkdCQTx1
aW50OF90PiBjb2xvcnNbbWF4Q29sb3JTdG9wQ291bnRdLCBjb25zdCBHcmFkaWVudDo6RGF0YSYg
ZGF0YSwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBncmFkaWVudFNwYWNlVHJhbnNmb3JtLCBHcmFk
aWVudFNwcmVhZE1ldGhvZCBzcHJlYWRNZXRob2QsIHVpbnQ4X3QgY29sb3JTdG9wQ291bnQpCiAg
ICAgOiBtX2RhdGEoZGF0YSkKLSAgICAsIG1fZ3JhZGllbnRTcGFjZVRyYW5zZm9ybWF0aW9uKGdy
YWRpZW50U3BhY2VUcmFuc2Zvcm1hdGlvbikKKyAgICAsIG1fZ3JhZGllbnRTcGFjZVRyYW5zZm9y
bShncmFkaWVudFNwYWNlVHJhbnNmb3JtKQogICAgICwgbV9zcHJlYWRNZXRob2Qoc3ByZWFkTWV0
aG9kKQogICAgICwgbV9jb2xvclN0b3BDb3VudChjb2xvclN0b3BDb3VudCkKIHsKQEAgLTE1MSwx
MCArMTQxLDE5IEBAIFNldElubGluZUZpbGxHcmFkaWVudDo6U2V0SW5saW5lRmlsbEdyYWQKICAg
ICB9CiB9CiAKK1JlZjxHcmFkaWVudD4gU2V0SW5saW5lRmlsbEdyYWRpZW50OjpncmFkaWVudCgp
IGNvbnN0Cit7CisgICAgYXV0byBncmFkaWVudCA9IEdyYWRpZW50OjpjcmVhdGUoR3JhZGllbnQ6
OkRhdGEobV9kYXRhKSk7CisgICAgZm9yICh1aW50OF90IGkgPSAwOyBpIDwgbV9jb2xvclN0b3BD
b3VudDsgKytpKQorICAgICAgICBncmFkaWVudC0+YWRkQ29sb3JTdG9wKHsgbV9vZmZzZXRzW2ld
LCBDb2xvcihtX2NvbG9yc1tpXSkgfSk7CisgICAgZ3JhZGllbnQtPnNldFNwcmVhZE1ldGhvZCht
X3NwcmVhZE1ldGhvZCk7CisgICAgcmV0dXJuIGdyYWRpZW50OworfQorCiB2b2lkIFNldElubGlu
ZUZpbGxHcmFkaWVudDo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBjb25zdAogewog
ICAgIGlmIChtX2NvbG9yU3RvcENvdW50IDw9IG1heENvbG9yU3RvcENvdW50KQotICAgICAgICBj
b250ZXh0LnNldEZpbGxHcmFkaWVudChncmFkaWVudCgpKTsKKyAgICAgICAgY29udGV4dC5zZXRG
aWxsR3JhZGllbnQoZ3JhZGllbnQoKSwgbV9ncmFkaWVudFNwYWNlVHJhbnNmb3JtKTsKIH0KIAog
Ym9vbCBTZXRJbmxpbmVGaWxsR3JhZGllbnQ6OmlzSW5saW5lKGNvbnN0IEdyYWRpZW50JiBncmFk
aWVudCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdEl0ZW1zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaAkocmV2aXNpb24gMjcx
Mzg0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0SXRlbXMuaAkod29ya2luZyBjb3B5KQpAQCAtMTc0LDkgKzE3NCw4IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNEcmF3aW5nSXRlbSA9IGZhbHNlOwogICAg
IHN0YXRpYyBjb25zdGV4cHIgdWludDhfdCBtYXhDb2xvclN0b3BDb3VudCA9IDQ7CiAKLSAgICBT
ZXRJbmxpbmVGaWxsR3JhZGllbnQoY29uc3QgR3JhZGllbnQmKTsKLSAgICBXRUJDT1JFX0VYUE9S
VCBTZXRJbmxpbmVGaWxsR3JhZGllbnQoZmxvYXQgb2Zmc2V0c1ttYXhDb2xvclN0b3BDb3VudF0s
IFNSR0JBPHVpbnQ4X3Q+IGNvbG9yc1ttYXhDb2xvclN0b3BDb3VudF0sIGNvbnN0IEdyYWRpZW50
OjpEYXRhJiwKLSAgICAgICAgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBncmFkaWVudFNwYWNlVHJh
bnNmb3JtYXRpb24sIEdyYWRpZW50U3ByZWFkTWV0aG9kLCB1aW50OF90IGNvbG9yU3RvcENvdW50
KTsKKyAgICBTZXRJbmxpbmVGaWxsR3JhZGllbnQoY29uc3QgR3JhZGllbnQmLCBjb25zdCBBZmZp
bmVUcmFuc2Zvcm0mIGdyYWRpZW50U3BhY2VUcmFuc2Zvcm0pOworICAgIFdFQkNPUkVfRVhQT1JU
IFNldElubGluZUZpbGxHcmFkaWVudChmbG9hdCBvZmZzZXRzW21heENvbG9yU3RvcENvdW50XSwg
U1JHQkE8dWludDhfdD4gY29sb3JzW21heENvbG9yU3RvcENvdW50XSwgY29uc3QgR3JhZGllbnQ6
OkRhdGEmLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGdyYWRpZW50U3BhY2VUcmFuc2Zvcm0sIEdy
YWRpZW50U3ByZWFkTWV0aG9kLCB1aW50OF90IGNvbG9yU3RvcENvdW50KTsKIAogICAgIHN0YXRp
YyBib29sIGlzSW5saW5lKGNvbnN0IEdyYWRpZW50Jik7CiAgICAgUmVmPEdyYWRpZW50PiBncmFk
aWVudCgpIGNvbnN0OwpAQCAtMTg3LDcgKzE4Niw3IEBAIHByaXZhdGU6CiAgICAgZmxvYXQgbV9v
ZmZzZXRzW21heENvbG9yU3RvcENvdW50XTsKICAgICBTUkdCQTx1aW50OF90PiBtX2NvbG9yc1tt
YXhDb2xvclN0b3BDb3VudF07CiAgICAgR3JhZGllbnQ6OkRhdGEgbV9kYXRhOwotICAgIEFmZmlu
ZVRyYW5zZm9ybSBtX2dyYWRpZW50U3BhY2VUcmFuc2Zvcm1hdGlvbjsKKyAgICBBZmZpbmVUcmFu
c2Zvcm0gbV9ncmFkaWVudFNwYWNlVHJhbnNmb3JtOwogICAgIEdyYWRpZW50U3ByZWFkTWV0aG9k
IG1fc3ByZWFkTWV0aG9kIHsgR3JhZGllbnRTcHJlYWRNZXRob2Q6OlBhZCB9OwogICAgIHVpbnQ4
X3QgbV9jb2xvclN0b3BDb3VudCB7IDAgfTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0UmVjb3JkZXIuY3BwCShyZXZpc2lvbiAyNzEzODQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEwMSw3ICsxMDEsNyBAQCB2b2lkIFJlY29yZGVyOjphcHBlbmRT
dGF0ZUNoYW5nZUl0ZW0oY29uCiAgICAgICAgIGFwcGVuZDxTZXRJbmxpbmVGaWxsQ29sb3I+KGNo
YW5nZXMubV9zdGF0ZS5maWxsQ29sb3IuYXNJbmxpbmUoKSk7CiAKICAgICBpZiAoY2hhbmdlRmxh
Z3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxHcmFkaWVudENoYW5nZSkpCi0g
ICAgICAgIGFwcGVuZDxTZXRJbmxpbmVGaWxsR3JhZGllbnQ+KCpjaGFuZ2VzLm1fc3RhdGUuZmls
bEdyYWRpZW50KTsKKyAgICAgICAgYXBwZW5kPFNldElubGluZUZpbGxHcmFkaWVudD4oKmNoYW5n
ZXMubV9zdGF0ZS5maWxsR3JhZGllbnQsIGNoYW5nZXMubV9zdGF0ZS5maWxsR3JhZGllbnRTcGFj
ZVRyYW5zZm9ybSk7CiB9CiAKIHZvaWQgUmVjb3JkZXI6OndpbGxBcHBlbmRJdGVtT2ZUeXBlKEl0
ZW1UeXBlIHR5cGUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNv
c2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFD
YWlyb09wZXJhdGlvblJlY29yZGVyLmNwcAkocmV2aXNpb24gMjcxMzg0KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRp
b25SZWNvcmRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5Miw3ICsyOTIsOCBAQCB2b2lkIENh
aXJvT3BlcmF0aW9uUmVjb3JkZXI6OmZpbGxSZWN0KGNvCiAgICAgICAgIH0KICAgICB9OwogCi0g
ICAgYXBwZW5kKGNyZWF0ZUNvbW1hbmQ8RmlsbFJlY3Q+KHJlY3QsIGdyYWRpZW50LmNyZWF0ZVBh
dHRlcm4oMS4wKSkpOworICAgIGF1dG8mIHN0YXRlID0gZ3JhcGhpY3NDb250ZXh0KCkuc3RhdGUo
KTsKKyAgICBhcHBlbmQoY3JlYXRlQ29tbWFuZDxGaWxsUmVjdD4ocmVjdCwgZ3JhZGllbnQuY3Jl
YXRlUGF0dGVybigxLjAsIHN0YXRlLmZpbGxHcmFkaWVudFNwYWNlVHJhbnNmb3JtKSkpOwogfQog
CiB2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYg
cmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVy
YXRvciwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUGF0aC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdQYXRoLmNwcAkocmV2aXNpb24gMjcxMzg0KQorKysgU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdQYXRoLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNjksNyArNjksNyBAQCBGbG9hdFJlY3QgUmVuZGVyU1ZHUGF0aDo6Y2FsY3VsYXRlVXBkYXRl
CiBzdGF0aWMgdm9pZCB1c2VTdHJva2VTdHlsZVRvRmlsbChHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQpCiB7CiAgICAgaWYgKGF1dG8gZ3JhZGllbnQgPSBjb250ZXh0LnN0cm9rZUdyYWRpZW50KCkp
Ci0gICAgICAgIGNvbnRleHQuc2V0RmlsbEdyYWRpZW50KCpncmFkaWVudCk7CisgICAgICAgIGNv
bnRleHQuc2V0RmlsbEdyYWRpZW50KCpncmFkaWVudCwgY29udGV4dC5zdGF0ZSgpLnN0cm9rZUdy
YWRpZW50U3BhY2VUcmFuc2Zvcm0pOwogICAgIGVsc2UgaWYgKFBhdHRlcm4qIHBhdHRlcm4gPSBj
b250ZXh0LnN0cm9rZVBhdHRlcm4oKSkKICAgICAgICAgY29udGV4dC5zZXRGaWxsUGF0dGVybigq
cGF0dGVybik7CiAgICAgZWxzZQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQuY3BwCShyZXZpc2lvbiAy
NzEzODQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNl
R3JhZGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDUsOCArMTQ1LDYgQEAgYm9vbCBSZW5k
ZXJTVkdSZXNvdXJjZUdyYWRpZW50OjphcHBseVJlcwogICAgICAgICAgICAgICAgIHVzZXJzcGFj
ZVRyYW5zZm9ybSAqPSBhZGRpdGlvbmFsVGV4dFRyYW5zZm9ybTsKICAgICAgICAgfQogCi0gICAg
ICAgIGdyYWRpZW50LT5zZXRHcmFkaWVudFNwYWNlVHJhbnNmb3JtKHVzZXJzcGFjZVRyYW5zZm9y
bSk7Ci0KICAgICAgICAgcmV0dXJuIHsgV1RGTW92ZShncmFkaWVudCksIHVzZXJzcGFjZVRyYW5z
Zm9ybSB9OwogICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKIApAQCAtMTY0LDE2ICsxNjIsMTcgQEAg
Ym9vbCBSZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50OjphcHBseVJlcwogICAgIH0KIAogICAgIGF1
dG8mIHN2Z1N0eWxlID0gc3R5bGUuc3ZnU3R5bGUoKTsKKyAgICBhdXRvIHVzZXJzcGFjZVRyYW5z
Zm9ybSA9IGdyYWRpZW50RGF0YS51c2Vyc3BhY2VUcmFuc2Zvcm07CiAKICAgICBpZiAocmVzb3Vy
Y2VNb2RlLmNvbnRhaW5zKFJlbmRlclNWR1Jlc291cmNlTW9kZTo6QXBwbHlUb0ZpbGwpKSB7CiAg
ICAgICAgIGNvbnRleHQtPnNldEFscGhhKHN2Z1N0eWxlLmZpbGxPcGFjaXR5KCkpOwotICAgICAg
ICBjb250ZXh0LT5zZXRGaWxsR3JhZGllbnQoKmdyYWRpZW50RGF0YS5ncmFkaWVudCk7CisgICAg
ICAgIGNvbnRleHQtPnNldEZpbGxHcmFkaWVudCgqZ3JhZGllbnREYXRhLmdyYWRpZW50LCB1c2Vy
c3BhY2VUcmFuc2Zvcm0pOwogICAgICAgICBjb250ZXh0LT5zZXRGaWxsUnVsZShzdmdTdHlsZS5m
aWxsUnVsZSgpKTsKICAgICB9IGVsc2UgaWYgKHJlc291cmNlTW9kZS5jb250YWlucyhSZW5kZXJT
VkdSZXNvdXJjZU1vZGU6OkFwcGx5VG9TdHJva2UpKSB7CiAgICAgICAgIGlmIChzdmdTdHlsZS52
ZWN0b3JFZmZlY3QoKSA9PSBWZWN0b3JFZmZlY3Q6Ok5vblNjYWxpbmdTdHJva2UpCi0gICAgICAg
ICAgICBncmFkaWVudERhdGEuZ3JhZGllbnQtPnNldEdyYWRpZW50U3BhY2VUcmFuc2Zvcm0odHJh
bnNmb3JtT25Ob25TY2FsaW5nU3Ryb2tlKCZyZW5kZXJlciwgZ3JhZGllbnREYXRhLnVzZXJzcGFj
ZVRyYW5zZm9ybSkpOworICAgICAgICAgICAgdXNlcnNwYWNlVHJhbnNmb3JtID0gdHJhbnNmb3Jt
T25Ob25TY2FsaW5nU3Ryb2tlKCZyZW5kZXJlciwgZ3JhZGllbnREYXRhLnVzZXJzcGFjZVRyYW5z
Zm9ybSk7CiAgICAgICAgIGNvbnRleHQtPnNldEFscGhhKHN2Z1N0eWxlLnN0cm9rZU9wYWNpdHko
KSk7Ci0gICAgICAgIGNvbnRleHQtPnNldFN0cm9rZUdyYWRpZW50KCpncmFkaWVudERhdGEuZ3Jh
ZGllbnQpOworICAgICAgICBjb250ZXh0LT5zZXRTdHJva2VHcmFkaWVudCgqZ3JhZGllbnREYXRh
LmdyYWRpZW50LCB1c2Vyc3BhY2VUcmFuc2Zvcm0pOwogICAgICAgICBTVkdSZW5kZXJTdXBwb3J0
OjphcHBseVN0cm9rZVN0eWxlVG9Db250ZXh0KGNvbnRleHQsIHN0eWxlLCByZW5kZXJlcik7CiAg
ICAgfQogCkBAIC0xOTcsOSArMTk2LDkgQEAgdm9pZCBSZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50
Ojpwb3N0QXBwbAogICAgICAgICAgICAgICAgIGNvbnRleHQgPSBzdGQ6OmV4Y2hhbmdlKG1fc2F2
ZWRDb250ZXh0LCBudWxscHRyKTsKIAogICAgICAgICAgICAgICAgIEZsb2F0UmVjdCB0YXJnZXRS
ZWN0OwotICAgICAgICAgICAgICAgIGdyYWRpZW50LnNldEdyYWRpZW50U3BhY2VUcmFuc2Zvcm0o
Y2xpcFRvVGV4dE1hc2soKmNvbnRleHQsIG1faW1hZ2VCdWZmZXIsIHRhcmdldFJlY3QsICZyZW5k
ZXJlciwgZ3JhZGllbnRVbml0cygpID09IFNWR1VuaXRUeXBlczo6U1ZHX1VOSVRfVFlQRV9PQkpF
Q1RCT1VORElOR0JPWCwgZ3JhZGllbnRUcmFuc2Zvcm0oKSkpOworICAgICAgICAgICAgICAgIEFm
ZmluZVRyYW5zZm9ybSB1c2Vyc3BhY2VUcmFuc2Zvcm0gPSBjbGlwVG9UZXh0TWFzaygqY29udGV4
dCwgbV9pbWFnZUJ1ZmZlciwgdGFyZ2V0UmVjdCwgJnJlbmRlcmVyLCBncmFkaWVudFVuaXRzKCkg
PT0gU1ZHVW5pdFR5cGVzOjpTVkdfVU5JVF9UWVBFX09CSkVDVEJPVU5ESU5HQk9YLCBncmFkaWVu
dFRyYW5zZm9ybSgpKTsKIAotICAgICAgICAgICAgICAgIGNvbnRleHQtPnNldEZpbGxHcmFkaWVu
dChncmFkaWVudCk7CisgICAgICAgICAgICAgICAgY29udGV4dC0+c2V0RmlsbEdyYWRpZW50KGdy
YWRpZW50LCB1c2Vyc3BhY2VUcmFuc2Zvcm0pOwogICAgICAgICAgICAgICAgIGNvbnRleHQtPmZp
bGxSZWN0KHRhcmdldFJlY3QpOwogCiAgICAgICAgICAgICAgICAgbV9pbWFnZUJ1ZmZlciA9IG51
bGxwdHI7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>