<?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>211691</bug_id>
          
          <creation_ts>2020-05-10 02:40:20 -0700</creation_ts>
          <short_desc>[WebGPU] Implement texture views</short_desc>
          <delta_ts>2020-05-20 12:34:28 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></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>
          <dependson>211882</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Myles C. Maxfield">mmaxfield</reporter>
          <assigned_to name="Myles C. Maxfield">mmaxfield</assigned_to>
          <cc>annulen</cc>
    
    <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>graouts</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1651068</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2020-05-10 02:40:20 -0700</bug_when>
    <thetext>[WebGPU] Implement texture views</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1651069</commentid>
    <comment_count>1</comment_count>
      <attachid>398970</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2020-05-10 02:42:17 -0700</bug_when>
    <thetext>Created attachment 398970
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1651070</commentid>
    <comment_count>2</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2020-05-10 02:42:20 -0700</bug_when>
    <thetext>&lt;rdar://problem/54533652&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1651072</commentid>
    <comment_count>3</comment_count>
      <attachid>398970</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2020-05-10 02:42:47 -0700</bug_when>
    <thetext>Comment on attachment 398970
WIP

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

&gt; Source/WebCore/ChangeLog:11
&gt; +        - Figure out what to do about GPUTextureAspect

Also delete createDefaultView(), and make sure default values work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1651073</commentid>
    <comment_count>4</comment_count>
      <attachid>398970</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2020-05-10 02:44:42 -0700</bug_when>
    <thetext>Comment on attachment 398970
WIP

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

&gt;&gt; Source/WebCore/ChangeLog:11
&gt;&gt; +        - Figure out what to do about GPUTextureAspect
&gt; 
&gt; Also delete createDefaultView(), and make sure default values work.

Also also: Write all the stuff in this patch in the spec: https://gpuweb.github.io/gpuweb/#textureview-createview</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1651166</commentid>
    <comment_count>5</comment_count>
      <attachid>398970</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2020-05-10 19:55:52 -0700</bug_when>
    <thetext>Comment on attachment 398970
WIP

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

&gt; Source/WebCore/platform/graphics/gpu/cocoa/GPUTextureMetal.mm:360
&gt; +    texture = adoptNS([m_platformTexture newTextureViewWithPixelFormat:metalPixelFormat textureType:textureType.value() levels:levels.value() slices:slices.value()]);

If the view is the same as the underlying texture, we can avoid this call.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1653923</commentid>
    <comment_count>6</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2020-05-18 23:49:51 -0700</bug_when>
    <thetext>From the spec:

&gt; optional GPUTextureViewDescriptor descriptor = {}

This doesn&apos;t make sense to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1653926</commentid>
    <comment_count>7</comment_count>
      <attachid>399714</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2020-05-19 00:15:48 -0700</bug_when>
    <thetext>Created attachment 399714
Rebased</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1653927</commentid>
    <comment_count>8</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2020-05-19 00:17:26 -0700</bug_when>
    <thetext>mipLevelCount: If 0, defaults to texture.mipLevelCount − baseMipLevel.
arrayLayerCount: If 0, defaults to texture.size.depth − baseArrayLayer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1653928</commentid>
    <comment_count>9</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2020-05-19 00:18:26 -0700</bug_when>
    <thetext>&gt; If texture.size.depth is greater than 1 and arrayLayerCount is 0

This seems kind of silly</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1654583</commentid>
    <comment_count>10</comment_count>
      <attachid>399714</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2020-05-20 12:34:28 -0700</bug_when>
    <thetext>Comment on attachment 399714
Rebased

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

&gt; Source/WebCore/platform/graphics/gpu/cocoa/GPUTextureMetal.mm:308
&gt; +            return parentSampleCount == 1 ? MTLTextureType2DArray : MTLTextureType2DMultisampleArray;

MTLTextureType2DMultisampleArray doesn&apos;t exist on iOS</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>398970</attachid>
            <date>2020-05-10 02:42:17 -0700</date>
            <delta_ts>2020-05-19 00:15:46 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-211691-20200510024217.patch</filename>
            <type>text/plain</type>
            <size>33073</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxNDQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzJlNmFiZjliNGIyOWRk
YzQwMzRhNWM1Y2E2OTU1YWM0MWVlMGJiMi4uNzhmNzNkOWMzNTViMjUwYzA1YjgzYTVhZTdkNThl
M2Q5MjY3ZDI4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDIwLTA1LTEwICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkdQVV0g
SW1wbGVtZW50IHRleHR1cmUgdmlld3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIxMTY5MQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTQ1MzM2NTI+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGFza3Mg
cmVtYWluaW5nOgorICAgICAgICAtIEV4aGF1c3RpdmUgdGVzdGluZworICAgICAgICAtIEZpZ3Vy
ZSBvdXQgd2hhdCB0byBkbyBhYm91dCBHUFVUZXh0dXJlQXNwZWN0CisKKyAgICAgICAgTm8gbmV3
IHRlc3RzIChPT1BTISkuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBE
ZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2Vz
LW91dHB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAg
ICAgICogTW9kdWxlcy93ZWJncHUvR1BVVGV4dHVyZVZpZXdEZXNjcmlwdG9yLmlkbDogQ29waWVk
IGZyb20gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZS5pZGwuCisg
ICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHUFVUZXh0dXJlOjpjcmVhdGVUZXh0dXJlVmlldyk6CisgICAgICAgICogTW9kdWxl
cy93ZWJncHUvV2ViR1BVVGV4dHVyZS5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQ
VVRleHR1cmUuaWRsOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9n
cHUvR1BVU3dhcENoYWluLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVRl
eHR1cmUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVVGV4dHVyZVZpZXdE
ZXNjcmlwdG9yLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dl
YkdQVVRleHR1cmUuaC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BV
U3dhcENoYWluTWV0YWwubW06CisgICAgICAgIChXZWJDb3JlOjpHUFVTd2FwQ2hhaW46OnRyeUNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHUFVTd2FwQ2hhaW46OkdQVVN3YXBDaGFpbik6Cisg
ICAgICAgIChXZWJDb3JlOjpHUFVTd2FwQ2hhaW46OnRyeUdldEN1cnJlbnRUZXh0dXJlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVVGV4dHVyZU1ldGFsLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6bXRsVGV4dHVyZVR5cGVGb3JHUFVUZXh0dXJlRGVzY3JpcHRvcik6
CisgICAgICAgIChXZWJDb3JlOjptdGxUZXh0dXJlVXNhZ2VGb3JHUFVUZXh0dXJlVXNhZ2VGbGFn
cyk6CisgICAgICAgIChXZWJDb3JlOjp0cnlDcmVhdGVNdGxUZXh0dXJlRGVzY3JpcHRvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpHUFVUZXh0dXJlOjp0cnlDcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6R1BVVGV4dHVyZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdQVVRleHR1cmU6OkdQ
VVRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6R1BVVGV4dHVyZTo6dHJ5Q3JlYXRlRGVmYXVs
dFRleHR1cmVWaWV3KToKKyAgICAgICAgKFdlYkNvcmU6OmNhbGN1bGF0ZVZpZXdQaXhlbEZvcm1h
dCk6CisgICAgICAgIChXZWJDb3JlOjpjYWxjdWxhdGVMZXZlbHMpOgorICAgICAgICAoV2ViQ29y
ZTo6Y2FsY3VsYXRlU2xpY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OmNhbGN1bGF0ZU1ldGFsVGV4
dHVyZVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6R1BVVGV4dHVyZTo6dHJ5Q3JlYXRlVGV4dHVy
ZVZpZXcpOgorCiAyMDIwLTA1LTA5ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgog
CiAgICAgICAgIFJFR1JFU1NJT04ocjI1ODQ5Myk6IENSQVNIIHJ1bm5pbmcgZmFzdC9tZWRpYXN0
cmVhbS9SVENQZWVyQ29ubmVjdGlvbiB0ZXN0cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Q01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCA4M2Vh
NDk5NmVkMjUxZDZmYTc1MDAwNmI3Nzk1N2JlZTQ3NzRiODdlLi44OTg5NWNlZWExYzg2MTIyN2M4
ZjdmMGE4NjJjZjUwNTk3MjkwMmQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxp
c3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtNTAzLDYgKzUw
Myw3IEBAIHNldChXZWJDb3JlX05PTl9TVkdfSURMX0ZJTEVTCiAgICAgTW9kdWxlcy93ZWJncHUv
R1BVVGV4dHVyZURlc2NyaXB0b3IuaWRsCiAgICAgTW9kdWxlcy93ZWJncHUvR1BVVGV4dHVyZUZv
cm1hdC5pZGwKICAgICBNb2R1bGVzL3dlYmdwdS9HUFVUZXh0dXJlVXNhZ2UuaWRsCisgICAgTW9k
dWxlcy93ZWJncHUvR1BVVGV4dHVyZVZpZXdEZXNjcmlwdG9yLmlkbAogICAgIE1vZHVsZXMvd2Vi
Z3B1L0dQVVVuY2FwdHVyZWRFcnJvckV2ZW50LmlkbAogICAgIE1vZHVsZXMvd2ViZ3B1L0dQVVZh
bGlkYXRpb25FcnJvci5pZGwKICAgICBNb2R1bGVzL3dlYmdwdS9HUFVWZXJ0ZXhBdHRyaWJ1dGVE
ZXNjcmlwdG9yLmlkbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMt
aW5wdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0Lnhj
ZmlsZWxpc3QKaW5kZXggNWE4ZGE2YTZmYzE3OGY2Nzg3OTE0ZDg4NGJhYmQxZjc5ZDY0NzI2Ni4u
MzkzMDNmNTM4ODE3MWM1NjkzZjIwODU1YjlhZjZhYWIxYTNkZmFlZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CkBAIC0zNjksNiArMzY5LDcg
QEAgJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJncHUvR1BVU3RvcmVPcC5pZGwKICQoUFJPSkVD
VF9ESVIpL01vZHVsZXMvd2ViZ3B1L0dQVVRleHR1cmVEZXNjcmlwdG9yLmlkbAogJChQUk9KRUNU
X0RJUikvTW9kdWxlcy93ZWJncHUvR1BVVGV4dHVyZUZvcm1hdC5pZGwKICQoUFJPSkVDVF9ESVIp
L01vZHVsZXMvd2ViZ3B1L0dQVVRleHR1cmVVc2FnZS5pZGwKKyQoUFJPSkVDVF9ESVIpL01vZHVs
ZXMvd2ViZ3B1L0dQVVRleHR1cmVWaWV3RGVzY3JpcHRvci5pZGwKICQoUFJPSkVDVF9ESVIpL01v
ZHVsZXMvd2ViZ3B1L0dQVVVuY2FwdHVyZWRFcnJvckV2ZW50LmlkbAogJChQUk9KRUNUX0RJUikv
TW9kdWxlcy93ZWJncHUvR1BVVmFsaWRhdGlvbkVycm9yLmlkbAogJChQUk9KRUNUX0RJUikvTW9k
dWxlcy93ZWJncHUvR1BVVmVydGV4QXR0cmlidXRlRGVzY3JpcHRvci5pZGwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0IGIvU291cmNl
L1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKaW5kZXggZjNlOTc2MjUz
YzkzMDEzMzQ4ZTkxNmQ4Njg1MWZmY2U0M2ZiOTViOS4uYTRjZTUwMjFjMjA2Y2U5MmM4N2JjZGMz
YWU5MGQ1NGU2NDI3ZTg0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJj
ZXMtb3V0cHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMt
b3V0cHV0LnhjZmlsZWxpc3QKQEAgLTY3NCw2ICs2NzQsOCBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVVRleHR1cmVGb3JtYXQuY3BwCiAkKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVVRleHR1cmVGb3JtYXQu
aAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVUZXh0
dXJlVXNhZ2UuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU0dQVVRleHR1cmVVc2FnZS5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9KU0dQVVRleHR1cmVWaWV3RGVzY3JpcHRvci5jcHAKKyQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR1BVVGV4dHVyZVZpZXdEZXNjcmlwdG9y
LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR1BVVW5j
YXB0dXJlZEVycm9yRXZlbnQuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9KU0dQVVVuY2FwdHVyZWRFcnJvckV2ZW50LmgKICQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR1BVVmFsaWRhdGlvbkVycm9yLmNwcApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJD
b3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggMmEzZWY5MGI4NDc0NTU5ZjU0YzExMmY0MGRj
NjlhNzBlNzJkZjc5NS4uOWY0MjhjZmNjMmMzNzNjNmY0MGMxZWI2YTRmNDA5ODE3MmJjOTU5NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC0xLDQgKzEsNCBAQAotIyBDb3B5cmln
aHQgKEMpIDIwMDYtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHly
aWdodCAoQykgMjAwNi0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMgQ29w
eXJpZ2h0IChDKSAyMDA2IFNhbXVlbCBXZWluaWcgPHNhbS53ZWluaWdAZ21haWwuY29tPgogIyBD
b3B5cmlnaHQgKEMpIDIwMDkgQ2FtZXJvbiBNY0Nvcm1hY2sgPGNhbUBtY2MuaWQuYXU+CiAjCkBA
IC00MjQsNiArNDI0LDcgQEAgSlNfQklORElOR19JRExTID0gXAogICAgICQoV2ViQ29yZSkvTW9k
dWxlcy93ZWJncHUvR1BVVGV4dHVyZURlc2NyaXB0b3IuaWRsIFwKICAgICAkKFdlYkNvcmUpL01v
ZHVsZXMvd2ViZ3B1L0dQVVRleHR1cmVGb3JtYXQuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVs
ZXMvd2ViZ3B1L0dQVVRleHR1cmVVc2FnZS5pZGwgXAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy93
ZWJncHUvR1BVVGV4dHVyZVZpZXdEZXNjcmlwdG9yLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1
bGVzL3dlYmdwdS9HUFVVbmNhcHR1cmVkRXJyb3JFdmVudC5pZGwgXAogICAgICQoV2ViQ29yZSkv
TW9kdWxlcy93ZWJncHUvR1BVVmFsaWRhdGlvbkVycm9yLmlkbCBcCiAgICAgJChXZWJDb3JlKS9N
b2R1bGVzL3dlYmdwdS9HUFVWZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlwdG9yLmlkbCBcCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVUZXh0dXJlVmlld0Rlc2NyaXB0
b3IuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVVGV4dHVyZVZpZXdEZXNj
cmlwdG9yLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNTAyMGU5OGVmNzkyODcyY2U5NzYzMWQ3YjNjMzRjYTQ4
MzI4MjYyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
R1BVVGV4dHVyZVZpZXdEZXNjcmlwdG9yLmlkbApAQCAtMCwwICsxLDU5IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
Ky8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIKKwordHlwZWRlZiBbRW5mb3JjZVJh
bmdlXSB1bnNpZ25lZCBsb25nIEdQVUludGVnZXJDb29yZGluYXRlOworCitbCisgICAgSW1wbGVt
ZW50ZWRBcz1HUFVUZXh0dXJlVmlld0RpbWVuc2lvbgorXSBlbnVtIEdQVVRleHR1cmVWaWV3RGlt
ZW5zaW9uIHsKKyAgICAiMWQiLAorICAgICIyZCIsCisgICAgIjJkLWFycmF5IiwKKyAgICAiY3Vi
ZSIsCisgICAgImN1YmUtYXJyYXkiLAorICAgICIzZCIKK307CisKK1sKKyAgICBJbXBsZW1lbnRl
ZEFzPUdQVVRleHR1cmVBc3BlY3QKK10gZW51bSBHUFVUZXh0dXJlQXNwZWN0IHsKKyAgICAiYWxs
IiwKKyAgICAic3RlbmNpbC1vbmx5IiwKKyAgICAiZGVwdGgtb25seSIKK307CisKK1sKKyAgICBD
b25kaXRpb25hbD1XRUJHUFUsCisgICAgRW5hYmxlZEF0UnVudGltZT1XZWJHUFUKK10gZGljdGlv
bmFyeSBHUFVUZXh0dXJlVmlld0Rlc2NyaXB0b3IgeworICAgIEdQVVRleHR1cmVGb3JtYXQgZm9y
bWF0OworICAgIEdQVVRleHR1cmVWaWV3RGltZW5zaW9uIGRpbWVuc2lvbjsKKyAgICBHUFVUZXh0
dXJlQXNwZWN0IGFzcGVjdCA9ICJhbGwiOworICAgIEdQVUludGVnZXJDb29yZGluYXRlIGJhc2VN
aXBMZXZlbCA9IDA7CisgICAgR1BVSW50ZWdlckNvb3JkaW5hdGUgbWlwTGV2ZWxDb3VudCA9IDA7
CisgICAgR1BVSW50ZWdlckNvb3JkaW5hdGUgYmFzZUFycmF5TGF5ZXIgPSAwOworICAgIEdQVUlu
dGVnZXJDb29yZGluYXRlIGFycmF5TGF5ZXJDb3VudCA9IDA7Cit9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0dXJlLmNwcAppbmRleCAwN2RhMDYwMTIzMWU3
ZThmNTgzOTRjN2M0MjM5NTE4NGViN2EzN2M2Li43ZGIzOWNiY2M5ZTAyYTY3YTQ0ZTM3MmI5Yzdj
OTc5N2FlYWMwNzg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
ZWJHUFVUZXh0dXJlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJH
UFVUZXh0dXJlLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTgg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE4LTIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC01NCw2ICs1NCwxOCBAQCBSZWY8V2ViR1BVVGV4dHVyZVZpZXc+IFdlYkdQ
VVRleHR1cmU6OmNyZWF0ZURlZmF1bHRWaWV3KCkKICAgICByZXR1cm4gdmlldzsKIH0KIAorUmVm
PFdlYkdQVVRleHR1cmVWaWV3PiBXZWJHUFVUZXh0dXJlOjpjcmVhdGVUZXh0dXJlVmlldyhjb25z
dCBHUFVUZXh0dXJlVmlld0Rlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCit7CisgICAgaWYgKCFtX3Rl
eHR1cmUpIHsKKyAgICAgICAgTE9HKFdlYkdQVSwgIkdQVVRleHR1cmU6OmNyZWF0ZURlZmF1bHRW
aWV3KCk6IEludmFsaWQgb3BlcmF0aW9uISIpOworICAgICAgICByZXR1cm4gV2ViR1BVVGV4dHVy
ZVZpZXc6OmNyZWF0ZShudWxscHRyKTsKKyAgICB9CisKKyAgICBhdXRvIHZpZXcgPSBXZWJHUFVU
ZXh0dXJlVmlldzo6Y3JlYXRlKG1fdGV4dHVyZS0+dHJ5Q3JlYXRlVGV4dHVyZVZpZXcoZGVzY3Jp
cHRvcikpOworICAgIG1fdGV4dHVyZVZpZXdzLmFwcGVuZCh2aWV3LmNvcHlSZWYoKSk7CisgICAg
cmV0dXJuIHZpZXc7Cit9CisKIHZvaWQgV2ViR1BVVGV4dHVyZTo6ZGVzdHJveSgpCiB7CiAgICAg
aWYgKCFtX3RleHR1cmUpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dlYkdQVVRleHR1cmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQ
VVRleHR1cmUuaAppbmRleCA2ZmQ1OGMyNjQyZmNjNmE2MmYzNzJhY2I0YTI3MzhlMWM2YjcyNTJi
Li4xMzQ1MTJiZGRkYjIxNTMxNDc4MDQwZDg1ODE5YTE2YzQ1ZGFmZDcxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0dXJlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZS5oCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM1LDYgKzM1LDggQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCitzdHJ1Y3QgR1BVVGV4dHVyZVZpZXdEZXNjcmlwdG9yOwor
CiBjbGFzcyBXZWJHUFVUZXh0dXJlIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViR1BVVGV4dHVyZT4g
ewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8V2ViR1BVVGV4dHVyZT4gY3JlYXRlKFJlZlB0cjxH
UFVUZXh0dXJlPiYmKTsKQEAgLTQyLDYgKzQ0LDcgQEAgcHVibGljOgogICAgIEdQVVRleHR1cmUq
IHRleHR1cmUoKSB7IHJldHVybiBtX3RleHR1cmUuZ2V0KCk7IH0KIAogICAgIFJlZjxXZWJHUFVU
ZXh0dXJlVmlldz4gY3JlYXRlRGVmYXVsdFZpZXcoKTsKKyAgICBSZWY8V2ViR1BVVGV4dHVyZVZp
ZXc+IGNyZWF0ZVRleHR1cmVWaWV3KGNvbnN0IEdQVVRleHR1cmVWaWV3RGVzY3JpcHRvciYpOwog
ICAgIHZvaWQgZGVzdHJveSgpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XZWJHUFVUZXh0dXJlLmlkbAppbmRleCBhNWRiODUwNmI3NmEzMjM2ZTFiY2U1
ODliZTljM2I4MmY5YTFjNDA3Li5mYTdlNmE1YmNlY2RkNzI1NzA0OWJlMzFlZDM4NDNhY2MwY2Q4
OTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0
dXJlLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0dXJl
LmlkbApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0zMSw4ICszMSw2IEBACiAgICAgSW50ZXJmYWNlTmFtZT1HUFVUZXh0dXJlCiBdIGludGVy
ZmFjZSBXZWJHUFVUZXh0dXJlIHsKICAgICBXZWJHUFVUZXh0dXJlVmlldyBjcmVhdGVEZWZhdWx0
VmlldygpOworICAgIFdlYkdQVVRleHR1cmVWaWV3IGNyZWF0ZVRleHR1cmVWaWV3KEdQVVRleHR1
cmVWaWV3RGVzY3JpcHRvciBkZXNjKTsKICAgICB2b2lkIGRlc3Ryb3koKTsKLQotICAgIC8vIE5v
dCBZZXQgSW1wbGVtZW50ZWQ6Ci0gICAgLy8gV2ViR1BVVGV4dHVyZVZpZXcgY3JlYXRlVGV4dHVy
ZVZpZXcoV2ViR1BVVGV4dHVyZVZpZXdEZXNjcmlwdG9yIGRlc2MpOwogfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQK
aW5kZXggOTU3YTllZWQwZDc3MDAyNGQ1YmM2NjMwZmI4MWQ3ZDdjOTUxOWQyZi4uZDM2NmRkNzcy
ZDMxNTZhOGVkNzU1ZWViZTY5Mzk2NWZlNjNlYjg5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTI5NTgs
NiArMjk1OCw3IEBAIEpTR1BVU3RvcmVPcC5jcHAKIEpTR1BVVGV4dHVyZURlc2NyaXB0b3IuY3Bw
CiBKU0dQVVRleHR1cmVGb3JtYXQuY3BwCiBKU0dQVVRleHR1cmVVc2FnZS5jcHAKK0pTR1BVVGV4
dHVyZVZpZXdEZXNjcmlwdG9yLmNwcAogSlNHUFVVbmNhcHR1cmVkRXJyb3JFdmVudC5jcHAKIEpT
R1BVVmFsaWRhdGlvbkVycm9yLmNwcAogSlNHUFVWZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlwdG9yLmNw
cApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CmluZGV4IDAzNWM1NDRmZWNiZTY0ZGU5MzQ4NjIzNzAwMzRjOWJhZGU4MTVmM2YuLjAwNTkwYzI1
Njg4YzJlMGZlOWM3MjgzZjEyZWQ3OTY2MGZlYzJhMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTY1ODQsNiArNjU4NCw4IEBA
CiAJCTFDQUYzNDdFMEE2QzQwNTIwMEFCRTA2RSAvKiBXZWJTY3JpcHRPYmplY3QuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU2NyaXB0T2JqZWN0Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTFDQUYzNDdGMEE2QzQwNTIwMEFCRTA2RSAvKiBXZWJTY3JpcHRP
YmplY3QubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJTY3Jp
cHRPYmplY3QubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDQUYzNDgwMEE2QzQw
NTIwMEFCRTA2RSAvKiBXZWJTY3JpcHRPYmplY3RQcml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdlYlNjcmlwdE9iamVjdFByaXZhdGUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMUNCMDE3OTUyNDY3REE3QTAwMTUwRkIwIC8qIEdQVVRleHR1cmVWaWV3
RGVzY3JpcHRvci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBwYXRoID0gR1BVVGV4dHVyZVZpZXdEZXNjcmlwdG9yLmlkbDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUNCMDE3OTcyNDY3REM5MDAwMTUwRkIwIC8qIEdQVVRl
eHR1cmVWaWV3RGVzY3JpcHRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVUZXh0dXJlVmlld0Rlc2Ny
aXB0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNCNUZFODgyMkRFQkM4QjAw
OTQ0MEUyIC8qIFdITFNMRXJyb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xFcnJvci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0I2OUIzMjIxREVENDBCMDA2RTg0NkEgLyogV0hM
U0xSZXNvbHZhYmxlVHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFJlc29sdmFibGVUeXBlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDQjY5QjM0MjFERUQ2M0EwMDZFODQ2QSAv
KiBXSExTTEZsb2F0TGl0ZXJhbFR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xGbG9hdExpdGVy
YWxUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xOTEwNiw2ICsxOTEwOCw3
IEBACiAJCQkJRDAyNkY0OEMyMjBBNUJBRDAwQUM1RjQ5IC8qIEdQVVRleHR1cmVEZXNjcmlwdG9y
LmggKi8sCiAJCQkJMzEyRkY4QzMyMUE0QzJGMzAwRUIxOTlEIC8qIEdQVVRleHR1cmVGb3JtYXQu
aCAqLywKIAkJCQlEMDI2RjQ4NTIyMEE0NzcyMDBBQzVGNDkgLyogR1BVVGV4dHVyZVVzYWdlLmgg
Ki8sCisJCQkJMUNCMDE3OTcyNDY3REM5MDAwMTUwRkIwIC8qIEdQVVRleHR1cmVWaWV3RGVzY3Jp
cHRvci5oICovLAogCQkJCUQwNkVGNTUyMjIwQkEyNkEwMDE4NzI0RSAvKiBHUFVVdGlscy5oICov
LAogCQkJCUQwOUFGQjBFMjJENTVGRjUwMEM0NTM4QyAvKiBHUFVWYWxpZGF0aW9uRXJyb3IuY3Bw
ICovLAogCQkJCUQwOUFGQjBEMjJENTVGM0IwMEM0NTM4QyAvKiBHUFVWYWxpZGF0aW9uRXJyb3Iu
aCAqLywKQEAgLTI3MDAxLDYgKzI3MDA0LDcgQEAKIAkJCQlEMDI2RjQ4QjIyMEE1QjBCMDBBQzVG
NDkgLyogR1BVVGV4dHVyZURlc2NyaXB0b3IuaWRsICovLAogCQkJCUQwRUFDRkFFMjE5RTMwRkQw
MDBGQTc1QyAvKiBHUFVUZXh0dXJlRm9ybWF0LmlkbCAqLywKIAkJCQlEMDI2RjQ4MzIyMEE0NzJG
MDBBQzVGNDkgLyogR1BVVGV4dHVyZVVzYWdlLmlkbCAqLywKKwkJCQkxQ0IwMTc5NTI0NjdEQTdB
MDAxNTBGQjAgLyogR1BVVGV4dHVyZVZpZXdEZXNjcmlwdG9yLmlkbCAqLywKIAkJCQlEMDlBQzAw
NjIzMTcxRjUyMDAxODc3NjIgLyogR1BVVW5jYXB0dXJlZEVycm9yRXZlbnQuY3BwICovLAogCQkJ
CUQwOUFDMDA1MjMxNzFGNTIwMDE4Nzc2MiAvKiBHUFVVbmNhcHR1cmVkRXJyb3JFdmVudC5oICov
LAogCQkJCUQwOUFDMDA3MjMxNzFGNTIwMDE4Nzc2MiAvKiBHUFVVbmNhcHR1cmVkRXJyb3JFdmVu
dC5pZGwgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
cHUvR1BVU3dhcENoYWluLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUv
R1BVU3dhcENoYWluLmgKaW5kZXggMzI3ZmQ2NzdhYjQ3YTcyYWIxMTExOWQwODk1MzU1NDI4MTM1
MzE5Zi4uYzBkOWI5YTlkMGU1YzkxY2NjMTcyNDg3NGRiMDYyYzQ2NDRlZjVkNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVN3YXBDaGFpbi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVTd2FwQ2hhaW4uaApA
QCAtNjYsMTAgKzY2LDExIEBAIHB1YmxpYzoKICAgICB2b2lkIGRlc3Ryb3koKSB7IG1fY3VycmVu
dERyYXdhYmxlID0gbnVsbHB0cjsgfQogCiBwcml2YXRlOgotICAgIEdQVVN3YXBDaGFpbihQbGF0
Zm9ybVN3YXBMYXllclNtYXJ0UHRyJiYsIE9wdGlvblNldDxHUFVUZXh0dXJlVXNhZ2U6OkZsYWdz
Pik7CisgICAgR1BVU3dhcENoYWluKFBsYXRmb3JtU3dhcExheWVyU21hcnRQdHImJiwgR1BVVGV4
dHVyZUZvcm1hdCwgT3B0aW9uU2V0PEdQVVRleHR1cmVVc2FnZTo6RmxhZ3M+KTsKIAogICAgIFBs
YXRmb3JtU3dhcExheWVyU21hcnRQdHIgbV9wbGF0Zm9ybVN3YXBMYXllcjsKICAgICBQbGF0Zm9y
bURyYXdhYmxlU21hcnRQdHIgbV9jdXJyZW50RHJhd2FibGU7CisgICAgR1BVVGV4dHVyZUZvcm1h
dCBtX2Zvcm1hdDsKICAgICBPcHRpb25TZXQ8R1BVVGV4dHVyZVVzYWdlOjpGbGFncz4gbV91c2Fn
ZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dw
dS9HUFVUZXh0dXJlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BV
VGV4dHVyZS5oCmluZGV4IGZmN2FhYjA5NjViNjJkYmQxZTNkYjM3NTkyYTU3ZDM0YWNhOWE5YzIu
LmFlMWQ5NWU4ZGNhNjUwMjc5MTA2OGU1ZTA4OGZiZmRkOTViOTM3NDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVUZXh0dXJlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVRleHR1cmUuaApAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNyw2ICsyNyw3
IEBACiAKICNpZiBFTkFCTEUoV0VCR1BVKQogCisjaW5jbHVkZSAiR1BVVGV4dHVyZURlc2NyaXB0
b3IuaCIKICNpbmNsdWRlICJHUFVUZXh0dXJlVXNhZ2UuaCIKICNpbmNsdWRlIDx3dGYvT3B0aW9u
U2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KQEAgLTM4LDYgKzM5LDcgQEAgT0JK
Q19QUk9UT0NPTChNVExUZXh0dXJlKTsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgR1BV
RGV2aWNlOworc3RydWN0IEdQVVRleHR1cmVWaWV3RGVzY3JpcHRvcjsKIAogc3RydWN0IEdQVVRl
eHR1cmVEZXNjcmlwdG9yOwogCkBAIC00Nyw3ICs0OSw3IEBAIHVzaW5nIFBsYXRmb3JtVGV4dHVy
ZVNtYXJ0UHRyID0gUmV0YWluUHRyPE1UTFRleHR1cmU+OwogY2xhc3MgR1BVVGV4dHVyZSA6IHB1
YmxpYyBSZWZDb3VudGVkPEdQVVRleHR1cmU+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmUHRy
PEdQVVRleHR1cmU+IHRyeUNyZWF0ZShjb25zdCBHUFVEZXZpY2UmLCBjb25zdCBHUFVUZXh0dXJl
RGVzY3JpcHRvciYpOwotICAgIHN0YXRpYyBSZWY8R1BVVGV4dHVyZT4gY3JlYXRlKFBsYXRmb3Jt
VGV4dHVyZVNtYXJ0UHRyJiYsIE9wdGlvblNldDxHUFVUZXh0dXJlVXNhZ2U6OkZsYWdzPik7Cisg
ICAgc3RhdGljIFJlZjxHUFVUZXh0dXJlPiBjcmVhdGUoUGxhdGZvcm1UZXh0dXJlU21hcnRQdHIm
JiwgR1BVVGV4dHVyZUZvcm1hdCwgR1BVVGV4dHVyZURpbWVuc2lvbiwgT3B0aW9uU2V0PEdQVVRl
eHR1cmVVc2FnZTo6RmxhZ3M+KTsKIAogICAgIFBsYXRmb3JtVGV4dHVyZSAqcGxhdGZvcm1UZXh0
dXJlKCkgY29uc3QgeyByZXR1cm4gbV9wbGF0Zm9ybVRleHR1cmUuZ2V0KCk7IH0KICAgICBib29s
IGlzQ29weVNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fdXNhZ2UuY29udGFpbnMoR1BVVGV4dHVy
ZVVzYWdlOjpGbGFnczo6Q29weVNvdXJjZSk7IH0KQEAgLTU5LDEzICs2MSwxNiBAQCBwdWJsaWM6
CiAgICAgdW5zaWduZWQgcGxhdGZvcm1Vc2FnZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1V
c2FnZTsgfQogCiAgICAgUmVmUHRyPEdQVVRleHR1cmU+IHRyeUNyZWF0ZURlZmF1bHRUZXh0dXJl
VmlldygpOworICAgIFJlZlB0cjxHUFVUZXh0dXJlPiB0cnlDcmVhdGVUZXh0dXJlVmlldyhjb25z
dCBHUFVUZXh0dXJlVmlld0Rlc2NyaXB0b3ImKTsKICAgICB2b2lkIGRlc3Ryb3koKSB7IG1fcGxh
dGZvcm1UZXh0dXJlID0gbnVsbHB0cjsgfQogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IEdQVVRl
eHR1cmUoUGxhdGZvcm1UZXh0dXJlU21hcnRQdHImJiwgT3B0aW9uU2V0PEdQVVRleHR1cmVVc2Fn
ZTo6RmxhZ3M+KTsKKyAgICBleHBsaWNpdCBHUFVUZXh0dXJlKFBsYXRmb3JtVGV4dHVyZVNtYXJ0
UHRyJiYsIEdQVVRleHR1cmVGb3JtYXQsIEdQVVRleHR1cmVEaW1lbnNpb24sIE9wdGlvblNldDxH
UFVUZXh0dXJlVXNhZ2U6OkZsYWdzPik7CiAKICAgICBQbGF0Zm9ybVRleHR1cmVTbWFydFB0ciBt
X3BsYXRmb3JtVGV4dHVyZTsKIAorICAgIEdQVVRleHR1cmVGb3JtYXQgbV9mb3JtYXQ7CisgICAg
R1BVVGV4dHVyZURpbWVuc2lvbiBtX2RpbWVuc2lvbjsKICAgICBPcHRpb25TZXQ8R1BVVGV4dHVy
ZVVzYWdlOjpGbGFncz4gbV91c2FnZTsKICAgICB1bnNpZ25lZCBtX3BsYXRmb3JtVXNhZ2U7CiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVRl
eHR1cmVWaWV3RGVzY3JpcHRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L0dQVVRleHR1cmVWaWV3RGVzY3JpcHRvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY4ODgyNWUwZTg5MmNk
YjUwMTdkZWUzMTdiN2JlYjY0ODkyYTE4MjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVVGV4dHVyZVZpZXdEZXNjcmlwdG9yLmgKQEAg
LTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdF
QkdQVSkKKworI2luY2x1ZGUgIkdQVVRleHR1cmVGb3JtYXQuaCIKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitlbnVtIGNsYXNzIEdQVVRleHR1cmVWaWV3RGltZW5zaW9uIHsKKyAgICBfMWQsCisg
ICAgXzJkLAorICAgIF8yZEFycmF5LAorICAgIEN1YmUsCisgICAgQ3ViZUFycmF5LAorICAgIF8z
ZAorfTsKKworZW51bSBjbGFzcyBHUFVUZXh0dXJlQXNwZWN0IHsKKyAgICBBbGwsCisgICAgU3Rl
bmNpbE9ubHksCisgICAgRGVwdGhPbmx5Cit9OworCitzdHJ1Y3QgR1BVVGV4dHVyZVZpZXdEZXNj
cmlwdG9yIHsKKyAgICBPcHRpb25hbDxHUFVUZXh0dXJlRm9ybWF0PiBmb3JtYXQ7CisgICAgT3B0
aW9uYWw8R1BVVGV4dHVyZVZpZXdEaW1lbnNpb24+IGRpbWVuc2lvbjsKKyAgICBHUFVUZXh0dXJl
QXNwZWN0IGFzcGVjdDsKKyAgICB1bnNpZ25lZCBiYXNlTWlwTGV2ZWw7CisgICAgdW5zaWduZWQg
bWlwTGV2ZWxDb3VudDsKKyAgICB1bnNpZ25lZCBiYXNlQXJyYXlMYXllcjsKKyAgICB1bnNpZ25l
ZCBhcnJheUxheWVyQ291bnQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRp
ZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L2NvY29hL0dQVVN3YXBDaGFpbk1ldGFsLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVN3YXBDaGFpbk1ldGFsLm1tCmluZGV4IGJm
M2UzNzI5Njg0NWU2ZWZlNTY4NGZiNTAwOGQwNmVlYmEyOTViMjMuLmNkMzkyZTBmODVlZTZjMGQw
M2E0YWY1ZTYwMTkwM2FiY2QxNjc2MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVTd2FwQ2hhaW5NZXRhbC5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVU3dhcENoYWluTWV0YWwubW0K
QEAgLTEwOCwxMyArMTA4LDE0IEBAIFJlZlB0cjxHUFVTd2FwQ2hhaW4+IEdQVVN3YXBDaGFpbjo6
dHJ5Q3JlYXRlKGNvbnN0IEdQVVN3YXBDaGFpbkRlc2NyaXB0b3ImIGRlc2NyCiAKICAgICBzZXRM
YXllclNoYXBlKGxheWVyLmdldCgpLCB3aWR0aCwgaGVpZ2h0KTsKIAotICAgIGF1dG8gc3dhcENo
YWluID0gYWRvcHRSZWYobmV3IEdQVVN3YXBDaGFpbihXVEZNb3ZlKGxheWVyKSwgdXNhZ2VPcHRp
b25zKSk7CisgICAgYXV0byBzd2FwQ2hhaW4gPSBhZG9wdFJlZihuZXcgR1BVU3dhcENoYWluKFdU
Rk1vdmUobGF5ZXIpLCBkZXNjcmlwdG9yLmZvcm1hdCwgdXNhZ2VPcHRpb25zKSk7CiAgICAgZGVz
Y3JpcHRvci5kZXZpY2UtPnNldFN3YXBDaGFpbihzd2FwQ2hhaW4uY29weVJlZigpKTsKICAgICBy
ZXR1cm4gc3dhcENoYWluOwogfQogCi1HUFVTd2FwQ2hhaW46OkdQVVN3YXBDaGFpbihSZXRhaW5Q
dHI8V2ViR1BVTGF5ZXI+JiYgcGxhdGZvcm1MYXllciwgT3B0aW9uU2V0PEdQVVRleHR1cmVVc2Fn
ZTo6RmxhZ3M+IHVzYWdlT3B0aW9ucykKK0dQVVN3YXBDaGFpbjo6R1BVU3dhcENoYWluKFJldGFp
blB0cjxXZWJHUFVMYXllcj4mJiBwbGF0Zm9ybUxheWVyLCBHUFVUZXh0dXJlRm9ybWF0IGZvcm1h
dCwgT3B0aW9uU2V0PEdQVVRleHR1cmVVc2FnZTo6RmxhZ3M+IHVzYWdlT3B0aW9ucykKICAgICA6
IG1fcGxhdGZvcm1Td2FwTGF5ZXIoV1RGTW92ZShwbGF0Zm9ybUxheWVyKSkKKyAgICAsIG1fZm9y
bWF0KGZvcm1hdCkKICAgICAsIG1fdXNhZ2UodXNhZ2VPcHRpb25zKQogewogICAgIFttX3BsYXRm
b3JtU3dhcExheWVyIHNldFN3YXBDaGFpbjp0aGlzXTsKQEAgLTEzNiw3ICsxMzcsNyBAQCBSZWZQ
dHI8R1BVVGV4dHVyZT4gR1BVU3dhcENoYWluOjp0cnlHZXRDdXJyZW50VGV4dHVyZSgpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIHJldHVybiBHUFVUZXh0dXJlOjpjcmVh
dGUoV1RGTW92ZShtdGxUZXh0dXJlKSwgbV91c2FnZSk7CisgICAgcmV0dXJuIEdQVVRleHR1cmU6
OmNyZWF0ZShXVEZNb3ZlKG10bFRleHR1cmUpLCBtX2Zvcm1hdCwgR1BVVGV4dHVyZURpbWVuc2lv
bjo6XzJkLCBtX3VzYWdlKTsKIH0KIAogdm9pZCBHUFVTd2FwQ2hhaW46OnByZXNlbnQoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVRl
eHR1cmVNZXRhbC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2Nv
YS9HUFVUZXh0dXJlTWV0YWwubW0KaW5kZXggNWRiMWRhYTQ1NTY5N2Y1MzA1M2M4NGFmNTBkZGVk
ODE1NTQ3N2U3ZC4uODA3Nzk2MDI4NmY0NDBmZDVkZDU4MDlmZDdhZjJjNjk4NTVlZDQyMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVRl
eHR1cmVNZXRhbC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUv
Y29jb2EvR1BVVGV4dHVyZU1ldGFsLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTgtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2ltcG9ydCAiR1BVRGV2
aWNlLmgiCiAjaW1wb3J0ICJHUFVUZXh0dXJlRGVzY3JpcHRvci5oIgorI2ltcG9ydCAiR1BVVGV4
dHVyZVZpZXdEZXNjcmlwdG9yLmgiCiAjaW1wb3J0ICJHUFVVdGlscy5oIgogI2ltcG9ydCAiTG9n
Z2luZy5oIgogI2ltcG9ydCA8TWV0YWwvTWV0YWwuaD4KQEAgLTM4LDE4ICszOSwyNCBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBNVExUZXh0dXJlVHlwZSBtdGxUZXh0dXJlVHlw
ZUZvckdQVVRleHR1cmVEZXNjcmlwdG9yKGNvbnN0IEdQVVRleHR1cmVEZXNjcmlwdG9yJiBkZXNj
cmlwdG9yKQorc3RhdGljIE9wdGlvbmFsPE1UTFRleHR1cmVUeXBlPiBtdGxUZXh0dXJlVHlwZUZv
ckdQVVRleHR1cmVEZXNjcmlwdG9yKGNvbnN0IEdQVVRleHR1cmVEZXNjcmlwdG9yJiBkZXNjcmlw
dG9yKQogewogICAgIHN3aXRjaCAoZGVzY3JpcHRvci5kaW1lbnNpb24pIHsKICAgICBjYXNlIEdQ
VVRleHR1cmVEaW1lbnNpb246Ol8xZDoKKyAgICAgICAgaWYgKGRlc2NyaXB0b3Iuc2FtcGxlQ291
bnQgIT0gMSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgICAgIHJldHVy
biAoZGVzY3JpcHRvci5hcnJheUxheWVyQ291bnQgPT0gMSkgPyBNVExUZXh0dXJlVHlwZTFEIDog
TVRMVGV4dHVyZVR5cGUxREFycmF5OwogICAgIGNhc2UgR1BVVGV4dHVyZURpbWVuc2lvbjo6XzJk
OiB7CiAgICAgICAgIGlmIChkZXNjcmlwdG9yLmFycmF5TGF5ZXJDb3VudCA9PSAxKQogICAgICAg
ICAgICAgcmV0dXJuIChkZXNjcmlwdG9yLnNhbXBsZUNvdW50ID09IDEpID8gTVRMVGV4dHVyZVR5
cGUyRCA6IE1UTFRleHR1cmVUeXBlMkRNdWx0aXNhbXBsZTsKIAotICAgICAgICByZXR1cm4gTVRM
VGV4dHVyZVR5cGUyREFycmF5OworICAgICAgICByZXR1cm4gTVRMVGV4dHVyZVR5cGUyREFycmF5
OyAvLyBGSVhNRTogV2hhdCBhYm91dCBNVExUZXh0dXJlVHlwZTJETXVsdGlzYW1wbGVBcnJheT8K
ICAgICB9CiAgICAgY2FzZSBHUFVUZXh0dXJlRGltZW5zaW9uOjpfM2Q6CisgICAgICAgIGlmIChk
ZXNjcmlwdG9yLnNhbXBsZUNvdW50ICE9IDEpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICBpZiAoZGVzY3JpcHRvci5hcnJheUxheWVyQ291bnQgIT0gMSkKKyAgICAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgICAgIHJldHVybiBNVExUZXh0dXJlVHlw
ZTNEOwogICAgIH0KIH0KQEAgLTY1LDcgKzcyLDcgQEAgc3RhdGljIE9wdGlvbmFsPE1UTFRleHR1
cmVVc2FnZT4gbXRsVGV4dHVyZVVzYWdlRm9yR1BVVGV4dHVyZVVzYWdlRmxhZ3MoT3B0aW9uU2UK
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICB9CiAKLSAgICBNVExUZXh0dXJlVXNh
Z2UgcmVzdWx0ID0gTVRMVGV4dHVyZVVzYWdlUGl4ZWxGb3JtYXRWaWV3OworICAgIE1UTFRleHR1
cmVVc2FnZSByZXN1bHQgPSAwOwogICAgIGlmIChmbGFncy5jb250YWlucyhHUFVUZXh0dXJlVXNh
Z2U6OkZsYWdzOjpPdXRwdXRBdHRhY2htZW50KSkKICAgICAgICAgcmVzdWx0IHw9IE1UTFRleHR1
cmVVc2FnZVJlbmRlclRhcmdldDsKICAgICBpZiAoZmxhZ3MuY29udGFpbnNBbnkoeyBHUFVUZXh0
dXJlVXNhZ2U6OkZsYWdzOjpTdG9yYWdlLCBHUFVUZXh0dXJlVXNhZ2U6OkZsYWdzOjpTYW1wbGVk
IH0pKQpAQCAtMTA1LDYgKzExMiwxMiBAQCBzdGF0aWMgUmV0YWluUHRyPE1UTFRleHR1cmVEZXNj
cmlwdG9yPiB0cnlDcmVhdGVNdGxUZXh0dXJlRGVzY3JpcHRvcihjb25zdCBjaGFyKgogICAgIC8v
IEZJWE1FOiBBZGQgbW9yZSB2YWxpZGF0aW9uIGFzIGNvbnN0cmFpbnRzIGFyZSBhZGRlZCB0byBz
cGVjLgogICAgIGF1dG8gcGl4ZWxGb3JtYXQgPSBzdGF0aWNfY2FzdDxNVExQaXhlbEZvcm1hdD4o
cGxhdGZvcm1UZXh0dXJlRm9ybWF0Rm9yR1BVVGV4dHVyZUZvcm1hdChkZXNjcmlwdG9yLmZvcm1h
dCkpOwogCisgICAgYXV0byB0ZXh0dXJlVHlwZSA9IG10bFRleHR1cmVUeXBlRm9yR1BVVGV4dHVy
ZURlc2NyaXB0b3IoZGVzY3JpcHRvcik7CisgICAgaWYgKCF0ZXh0dXJlVHlwZSkgeworICAgICAg
ICBMT0coV2ViR1BVLCAiJXM6IFRleHR1cmUgZGVzY3JpcHRvciBpcyBub3QgY29tcGF0aWJsZSB3
aXRoIHRoYXQgdGV4dHVyZSBkaW1lbnNpb24hIiwgZnVuY3Rpb25OYW1lKTsKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgfQorCiAgICAgYXV0byBtdGxVc2FnZSA9IG10bFRleHR1cmVVc2Fn
ZUZvckdQVVRleHR1cmVVc2FnZUZsYWdzKHVzYWdlLCBmdW5jdGlvbk5hbWUpOwogICAgIGlmICgh
bXRsVXNhZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTIzLDkgKzEzNiw5IEBAIHN0
YXRpYyBSZXRhaW5QdHI8TVRMVGV4dHVyZURlc2NyaXB0b3I+IHRyeUNyZWF0ZU10bFRleHR1cmVE
ZXNjcmlwdG9yKGNvbnN0IGNoYXIqCiAgICAgW210bERlc2NyaXB0b3Igc2V0QXJyYXlMZW5ndGg6
ZGVzY3JpcHRvci5hcnJheUxheWVyQ291bnRdOwogICAgIFttdGxEZXNjcmlwdG9yIHNldE1pcG1h
cExldmVsQ291bnQ6ZGVzY3JpcHRvci5taXBMZXZlbENvdW50XTsKICAgICBbbXRsRGVzY3JpcHRv
ciBzZXRTYW1wbGVDb3VudDpkZXNjcmlwdG9yLnNhbXBsZUNvdW50XTsKLSAgICBbbXRsRGVzY3Jp
cHRvciBzZXRUZXh0dXJlVHlwZTptdGxUZXh0dXJlVHlwZUZvckdQVVRleHR1cmVEZXNjcmlwdG9y
KGRlc2NyaXB0b3IpXTsKKyAgICBbbXRsRGVzY3JpcHRvciBzZXRUZXh0dXJlVHlwZTp0ZXh0dXJl
VHlwZS52YWx1ZSgpXTsKICAgICBbbXRsRGVzY3JpcHRvciBzZXRQaXhlbEZvcm1hdDpwaXhlbEZv
cm1hdF07Ci0gICAgW210bERlc2NyaXB0b3Igc2V0VXNhZ2U6Km10bFVzYWdlXTsKKyAgICBbbXRs
RGVzY3JpcHRvciBzZXRVc2FnZTptdGxVc2FnZS52YWx1ZSgpXTsKIAogICAgIFttdGxEZXNjcmlw
dG9yIHNldFN0b3JhZ2VNb2RlOnN0b3JhZ2VNb2RlXTsKIApAQCAtMTYxLDE2ICsxNzQsMTggQEAg
UmVmUHRyPEdQVVRleHR1cmU+IEdQVVRleHR1cmU6OnRyeUNyZWF0ZShjb25zdCBHUFVEZXZpY2Um
IGRldmljZSwgY29uc3QgR1BVVGV4dHUKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQog
Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBHUFVUZXh0dXJlKFdURk1vdmUobXRsVGV4dHVyZSks
IHVzYWdlKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBHUFVUZXh0dXJlKFdURk1vdmUobXRs
VGV4dHVyZSksIGRlc2NyaXB0b3IuZm9ybWF0LCBkZXNjcmlwdG9yLmRpbWVuc2lvbiwgdXNhZ2Up
KTsKIH0KIAotUmVmPEdQVVRleHR1cmU+IEdQVVRleHR1cmU6OmNyZWF0ZShSZXRhaW5QdHI8TVRM
VGV4dHVyZT4mJiB0ZXh0dXJlLCBPcHRpb25TZXQ8R1BVVGV4dHVyZVVzYWdlOjpGbGFncz4gdXNh
Z2UpCitSZWY8R1BVVGV4dHVyZT4gR1BVVGV4dHVyZTo6Y3JlYXRlKFJldGFpblB0cjxNVExUZXh0
dXJlPiYmIHRleHR1cmUsIEdQVVRleHR1cmVGb3JtYXQgZm9ybWF0LCBHUFVUZXh0dXJlRGltZW5z
aW9uIGRpbWVuc2lvbiwgT3B0aW9uU2V0PEdQVVRleHR1cmVVc2FnZTo6RmxhZ3M+IHVzYWdlKQog
ewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEdQVVRleHR1cmUoV1RGTW92ZSh0ZXh0dXJlKSwg
dXNhZ2UpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBHUFVUZXh0dXJlKFdURk1vdmUodGV4
dHVyZSksIGZvcm1hdCwgZGltZW5zaW9uLCB1c2FnZSkpOwogfQogCi1HUFVUZXh0dXJlOjpHUFVU
ZXh0dXJlKFJldGFpblB0cjxNVExUZXh0dXJlPiYmIHRleHR1cmUsIE9wdGlvblNldDxHUFVUZXh0
dXJlVXNhZ2U6OkZsYWdzPiB1c2FnZSkKK0dQVVRleHR1cmU6OkdQVVRleHR1cmUoUmV0YWluUHRy
PE1UTFRleHR1cmU+JiYgdGV4dHVyZSwgR1BVVGV4dHVyZUZvcm1hdCBmb3JtYXQsIEdQVVRleHR1
cmVEaW1lbnNpb24gZGltZW5zaW9uLCBPcHRpb25TZXQ8R1BVVGV4dHVyZVVzYWdlOjpGbGFncz4g
dXNhZ2UpCiAgICAgOiBtX3BsYXRmb3JtVGV4dHVyZShXVEZNb3ZlKHRleHR1cmUpKQorICAgICwg
bV9mb3JtYXQoZm9ybWF0KQorICAgICwgbV9kaW1lbnNpb24oZGltZW5zaW9uKQogICAgICwgbV91
c2FnZSh1c2FnZSkKIHsKICAgICBtX3BsYXRmb3JtVXNhZ2UgPSBNVExSZXNvdXJjZVVzYWdlUmVh
ZDsKQEAgLTE5MSwxMSArMjA2LDE2NyBAQCBSZWZQdHI8R1BVVGV4dHVyZT4gR1BVVGV4dHVyZTo6
dHJ5Q3JlYXRlRGVmYXVsdFRleHR1cmVWaWV3KCkKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJ
T05TOwogCiAgICAgaWYgKCF0ZXh0dXJlKSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICJHUFVUZXh0
dXJlOjpjcmVhdGVEZWZhdWx0VGV4dHVyZVZpZXcoKTogVW5hYmxlIHRvIGNyZWF0ZSBNVExUZXh0
dXJlIHZpZXchIik7CisgICAgICAgIExPRyhXZWJHUFUsICJHUFVUZXh0dXJlOjp0cnlDcmVhdGVE
ZWZhdWx0VGV4dHVyZVZpZXcoKTogVW5hYmxlIHRvIGNyZWF0ZSBNVExUZXh0dXJlIHZpZXchIik7
CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIHJldHVybiBHUFVUZXh0dXJl
OjpjcmVhdGUoV1RGTW92ZSh0ZXh0dXJlKSwgbV9mb3JtYXQsIG1fZGltZW5zaW9uLCBtX3VzYWdl
KTsKK30KKworc3RhdGljIE9wdGlvbmFsPEdQVVRleHR1cmVGb3JtYXQ+IGNhbGN1bGF0ZVZpZXdQ
aXhlbEZvcm1hdChHUFVUZXh0dXJlRm9ybWF0IHBhcmVudFBpeGVsRm9ybWF0LCBjb25zdCBPcHRp
b25hbDxHUFVUZXh0dXJlRm9ybWF0PiYgaW5wdXRGb3JtYXQpCit7CisgICAgaWYgKCFpbnB1dEZv
cm1hdCkKKyAgICAgICAgcmV0dXJuIHBhcmVudFBpeGVsRm9ybWF0OworCisgICAgc3dpdGNoIChw
YXJlbnRQaXhlbEZvcm1hdCkgeworICAgIGNhc2UgR1BVVGV4dHVyZUZvcm1hdDo6UmdiYTh1bm9y
bToKKyAgICAgICAgaWYgKGlucHV0Rm9ybWF0LnZhbHVlKCkgIT0gR1BVVGV4dHVyZUZvcm1hdDo6
UmdiYTh1bm9ybSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBpbnB1dEZvcm1hdC52YWx1ZSgpOworICAgIGNhc2UgR1BVVGV4dHVyZUZvcm1hdDo6Umdi
YTh1aW50OgorICAgICAgICBpZiAoaW5wdXRGb3JtYXQudmFsdWUoKSAhPSBHUFVUZXh0dXJlRm9y
bWF0OjpSZ2JhOHVpbnQpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gaW5wdXRGb3JtYXQudmFsdWUoKTsKKyAgICBjYXNlIEdQVVRleHR1cmVGb3JtYXQ6
OkJncmE4dW5vcm06CisgICAgICAgIGlmIChpbnB1dEZvcm1hdC52YWx1ZSgpICE9IEdQVVRleHR1
cmVGb3JtYXQ6OkJncmE4dW5vcm0gJiYgaW5wdXRGb3JtYXQudmFsdWUoKSAhPSBHUFVUZXh0dXJl
Rm9ybWF0OjpCZ3JhOHVub3JtU1JHQikKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBpbnB1dEZvcm1hdC52YWx1ZSgpOworICAgIGNhc2UgR1BVVGV4dHVy
ZUZvcm1hdDo6RGVwdGgzMmZsb2F0U3RlbmNpbDg6CisgICAgICAgIGlmIChpbnB1dEZvcm1hdC52
YWx1ZSgpICE9IEdQVVRleHR1cmVGb3JtYXQ6OkRlcHRoMzJmbG9hdFN0ZW5jaWw4KQorICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIGlucHV0Rm9ybWF0LnZh
bHVlKCk7CisgICAgY2FzZSBHUFVUZXh0dXJlRm9ybWF0OjpCZ3JhOHVub3JtU1JHQjoKKyAgICAg
ICAgaWYgKGlucHV0Rm9ybWF0LnZhbHVlKCkgIT0gR1BVVGV4dHVyZUZvcm1hdDo6QmdyYTh1bm9y
bVNSR0IgJiYgaW5wdXRGb3JtYXQudmFsdWUoKSAhPSBHUFVUZXh0dXJlRm9ybWF0OjpCZ3JhOHVu
b3JtKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIGlu
cHV0Rm9ybWF0LnZhbHVlKCk7CisgICAgY2FzZSBHUFVUZXh0dXJlRm9ybWF0OjpSZ2JhMTZmbG9h
dDoKKyAgICAgICAgaWYgKGlucHV0Rm9ybWF0LnZhbHVlKCkgIT0gR1BVVGV4dHVyZUZvcm1hdDo6
UmdiYTE2ZmxvYXQpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gaW5wdXRGb3JtYXQudmFsdWUoKTsKKyAgICB9Cit9CisKK3N0YXRpYyBPcHRpb25hbDxO
U1JhbmdlPiBjYWxjdWxhdGVMZXZlbHModW5zaWduZWQgcGFyZW50TWlwbWFwTGV2ZWxDb3VudCwg
dW5zaWduZWQgYmFzZU1pcExldmVsLCB1bnNpZ25lZCBtaXBMZXZlbENvdW50KQoreworICAgIGlm
IChiYXNlTWlwTGV2ZWwgPiBwYXJlbnRNaXBtYXBMZXZlbENvdW50KQorICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworCisgICAgaWYgKCFtaXBMZXZlbENvdW50KQorICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworCisgICAgcmV0dXJuIE5TTWFrZVJhbmdlKGJhc2VNaXBMZXZlbCwgbWlw
TGV2ZWxDb3VudCk7Cit9CisKK3N0YXRpYyBPcHRpb25hbDxOU1JhbmdlPiBjYWxjdWxhdGVTbGlj
ZXModW5zaWduZWQgcGFyZW50QXJyYXlMZW5ndGgsIHVuc2lnbmVkIGJhc2VBcnJheUxheWVyLCB1
bnNpZ25lZCBhcnJheUxheWVyQ291bnQpCit7CisgICAgaWYgKGJhc2VBcnJheUxheWVyID4gcGFy
ZW50QXJyYXlMZW5ndGgpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBpZiAo
IWFycmF5TGF5ZXJDb3VudCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIHJl
dHVybiBOU01ha2VSYW5nZShiYXNlQXJyYXlMYXllciwgYXJyYXlMYXllckNvdW50KTsKK30KKwor
c3RhdGljIE9wdGlvbmFsPE1UTFRleHR1cmVUeXBlPiBjYWxjdWxhdGVNZXRhbFRleHR1cmVUeXBl
KEdQVVRleHR1cmVEaW1lbnNpb24gcGFyZW50RGltZW5zaW9uLCB1bnNpZ25lZCBwYXJlbnRTYW1w
bGVDb3VudCwgY29uc3QgT3B0aW9uYWw8R1BVVGV4dHVyZVZpZXdEaW1lbnNpb24+JiBkaW1lbnNp
b24sIHVuc2lnbmVkIGFycmF5TGF5ZXJDb3VudCkKK3sKKyAgICBhdXRvIHJlcXVlc3RlZERpbWVu
c2lvbiA9IHZhbHVlT3JDb21wdXRlKGRpbWVuc2lvbiwgWyZdKCkgLT4gR1BVVGV4dHVyZVZpZXdE
aW1lbnNpb24geworICAgICAgICBzd2l0Y2ggKHBhcmVudERpbWVuc2lvbikgeworICAgICAgICBj
YXNlIEdQVVRleHR1cmVEaW1lbnNpb246Ol8xZDoKKyAgICAgICAgICAgIHJldHVybiBHUFVUZXh0
dXJlVmlld0RpbWVuc2lvbjo6XzFkOworICAgICAgICBjYXNlIEdQVVRleHR1cmVEaW1lbnNpb246
Ol8yZDoKKyAgICAgICAgICAgIHJldHVybiBHUFVUZXh0dXJlVmlld0RpbWVuc2lvbjo6XzJkOwor
ICAgICAgICBjYXNlIEdQVVRleHR1cmVEaW1lbnNpb246Ol8zZDoKKyAgICAgICAgICAgIHJldHVy
biBHUFVUZXh0dXJlVmlld0RpbWVuc2lvbjo6XzNkOworICAgICAgICB9CisgICAgfSk7CisKKyAg
ICBzd2l0Y2ggKHBhcmVudERpbWVuc2lvbikgeworICAgIGNhc2UgR1BVVGV4dHVyZURpbWVuc2lv
bjo6XzFkOgorICAgICAgICBBU1NFUlQocGFyZW50U2FtcGxlQ291bnQgPT0gMSk7CisgICAgICAg
IGlmIChyZXF1ZXN0ZWREaW1lbnNpb24gIT0gR1BVVGV4dHVyZVZpZXdEaW1lbnNpb246Ol8xZCkK
KyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBhcnJheUxh
eWVyQ291bnQgPT0gMSA/IE1UTFRleHR1cmVUeXBlMUQgOiBNVExUZXh0dXJlVHlwZTFEQXJyYXk7
CisgICAgY2FzZSBHUFVUZXh0dXJlRGltZW5zaW9uOjpfMmQ6CisgICAgICAgIHN3aXRjaCAocmVx
dWVzdGVkRGltZW5zaW9uKSB7CisgICAgICAgIGNhc2UgR1BVVGV4dHVyZVZpZXdEaW1lbnNpb246
Ol8yZDoKKyAgICAgICAgICAgIGlmIChhcnJheUxheWVyQ291bnQgPiAxKQorICAgICAgICAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gcGFyZW50U2FtcGxl
Q291bnQgPT0gMSA/IE1UTFRleHR1cmVUeXBlMkQgOiBNVExUZXh0dXJlVHlwZTJETXVsdGlzYW1w
bGU7CisgICAgICAgIGNhc2UgR1BVVGV4dHVyZVZpZXdEaW1lbnNpb246Ol8yZEFycmF5OgorICAg
ICAgICAgICAgcmV0dXJuIHBhcmVudFNhbXBsZUNvdW50ID09IDEgPyBNVExUZXh0dXJlVHlwZTJE
QXJyYXkgOiBNVExUZXh0dXJlVHlwZTJETXVsdGlzYW1wbGVBcnJheTsKKyAgICAgICAgY2FzZSBH
UFVUZXh0dXJlVmlld0RpbWVuc2lvbjo6Q3ViZToKKyAgICAgICAgICAgIGlmIChhcnJheUxheWVy
Q291bnQgIT0gNikKKyAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICAgICAgaWYgKHBhcmVudFNhbXBsZUNvdW50ICE9IDEpCisgICAgICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBNVExUZXh0dXJlVHlwZUN1YmU7Cisg
ICAgICAgIGNhc2UgR1BVVGV4dHVyZVZpZXdEaW1lbnNpb246OkN1YmVBcnJheToKKyAgICAgICAg
ICAgIGlmIChhcnJheUxheWVyQ291bnQgJSA2KQorICAgICAgICAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgICAgICBpZiAocGFyZW50U2FtcGxlQ291bnQgIT0gMSkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIE1UTFRl
eHR1cmVUeXBlQ3ViZUFycmF5OworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICBjYXNlIEdQVVRl
eHR1cmVEaW1lbnNpb246Ol8zZDoKKyAgICAgICAgQVNTRVJUKHBhcmVudFNhbXBsZUNvdW50ID09
IDEpOworICAgICAgICBpZiAocmVxdWVzdGVkRGltZW5zaW9uICE9IEdQVVRleHR1cmVWaWV3RGlt
ZW5zaW9uOjpfM2QpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBp
ZiAoYXJyYXlMYXllckNvdW50ICE9IDEpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gTVRMVGV4dHVyZVR5cGUzRDsKKyAgICB9Cit9CisKK1JlZlB0cjxH
UFVUZXh0dXJlPiBHUFVUZXh0dXJlOjp0cnlDcmVhdGVUZXh0dXJlVmlldyhjb25zdCBHUFVUZXh0
dXJlVmlld0Rlc2NyaXB0b3ImIHZpZXdEZXNjcmlwdG9yKQoreworICAgIFJldGFpblB0cjxNVExU
ZXh0dXJlPiB0ZXh0dXJlOworCisgICAgaWYgKHZpZXdEZXNjcmlwdG9yLmFzcGVjdCAhPSBHUFVU
ZXh0dXJlQXNwZWN0OjpBbGwpIHsKKyAgICAgICAgTE9HKFdlYkdQVSwgIkdQVVRleHR1cmU6OnRy
eUNyZWF0ZVRleHR1cmVWaWV3KCk6IEdQVVRleHR1cmVBc3BlY3RzIGFyZSBub3QgaW1wbGVtZW50
ZWQgeWV0ISIpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICBhdXRvIHBp
eGVsRm9ybWF0ID0gY2FsY3VsYXRlVmlld1BpeGVsRm9ybWF0KG1fZm9ybWF0LCB2aWV3RGVzY3Jp
cHRvci5mb3JtYXQpOworICAgIGlmICghcGl4ZWxGb3JtYXQpIHsKKyAgICAgICAgTE9HKFdlYkdQ
VSwgIkdQVVRleHR1cmU6OnRyeUNyZWF0ZVRleHR1cmVWaWV3KCk6IEludmFsaWQgcGl4ZWxGb3Jt
YXQhIik7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKyAgICBhdXRvIG1ldGFsUGl4
ZWxGb3JtYXQgPSBzdGF0aWNfY2FzdDxNVExQaXhlbEZvcm1hdD4ocGxhdGZvcm1UZXh0dXJlRm9y
bWF0Rm9yR1BVVGV4dHVyZUZvcm1hdChwaXhlbEZvcm1hdC52YWx1ZSgpKSk7CisKKyAgICBhdXRv
IGxldmVscyA9IGNhbGN1bGF0ZUxldmVscyhtX3BsYXRmb3JtVGV4dHVyZS5nZXQoKS5taXBtYXBM
ZXZlbENvdW50LCB2aWV3RGVzY3JpcHRvci5iYXNlTWlwTGV2ZWwsIHZpZXdEZXNjcmlwdG9yLm1p
cExldmVsQ291bnQpOworICAgIGlmICghbGV2ZWxzKSB7CisgICAgICAgIExPRyhXZWJHUFUsICJH
UFVUZXh0dXJlOjp0cnlDcmVhdGVUZXh0dXJlVmlldygpOiBJbnZhbGlkIGxldmVscyEiKTsKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgYXV0byBzbGljZXMgPSBjYWxjdWxh
dGVTbGljZXMobV9wbGF0Zm9ybVRleHR1cmUuZ2V0KCkuYXJyYXlMZW5ndGgsIHZpZXdEZXNjcmlw
dG9yLmJhc2VBcnJheUxheWVyLCB2aWV3RGVzY3JpcHRvci5hcnJheUxheWVyQ291bnQpOworICAg
IGlmICghc2xpY2VzKSB7CisgICAgICAgIExPRyhXZWJHUFUsICJHUFVUZXh0dXJlOjp0cnlDcmVh
dGVUZXh0dXJlVmlldygpOiBJbnZhbGlkIHNsaWNlcyEiKTsKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgfQorCisgICAgYXV0byB0ZXh0dXJlVHlwZSA9IGNhbGN1bGF0ZU1ldGFsVGV4dHVy
ZVR5cGUobV9kaW1lbnNpb24sIG1fcGxhdGZvcm1UZXh0dXJlLmdldCgpLnNhbXBsZUNvdW50LCB2
aWV3RGVzY3JpcHRvci5kaW1lbnNpb24sIHNsaWNlcy0+bGVuZ3RoKTsKKyAgICBpZiAoIXRleHR1
cmVUeXBlKSB7CisgICAgICAgIExPRyhXZWJHUFUsICJHUFVUZXh0dXJlOjp0cnlDcmVhdGVUZXh0
dXJlVmlldygpOiBJbnZhbGlkIHRleHR1cmVUeXBlISIpOworICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICB9CisKKyAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CisKKyAgICB0ZXh0
dXJlID0gYWRvcHROUyhbbV9wbGF0Zm9ybVRleHR1cmUgbmV3VGV4dHVyZVZpZXdXaXRoUGl4ZWxG
b3JtYXQ6bWV0YWxQaXhlbEZvcm1hdCB0ZXh0dXJlVHlwZTp0ZXh0dXJlVHlwZS52YWx1ZSgpIGxl
dmVsczpsZXZlbHMudmFsdWUoKSBzbGljZXM6c2xpY2VzLnZhbHVlKCldKTsKKworICAgIEVORF9C
TE9DS19PQkpDX0VYQ0VQVElPTlM7CisKKyAgICBpZiAoIXRleHR1cmUpIHsKKyAgICAgICAgTE9H
KFdlYkdQVSwgIkdQVVRleHR1cmU6OnRyeUNyZWF0ZVRleHR1cmVWaWV3KCk6IFVuYWJsZSB0byBj
cmVhdGUgTVRMVGV4dHVyZSB2aWV3ISIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9
CiAKLSAgICByZXR1cm4gR1BVVGV4dHVyZTo6Y3JlYXRlKFdURk1vdmUodGV4dHVyZSksIG1fdXNh
Z2UpOworICAgIHJldHVybiBHUFVUZXh0dXJlOjpjcmVhdGUoV1RGTW92ZSh0ZXh0dXJlKSwgcGl4
ZWxGb3JtYXQudmFsdWUoKSwgbV9kaW1lbnNpb24sIG1fdXNhZ2UpOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399714</attachid>
            <date>2020-05-19 00:15:48 -0700</date>
            <delta_ts>2020-05-19 00:15:48 -0700</delta_ts>
            <desc>Rebased</desc>
            <filename>bug-211691-20200519001547.patch</filename>
            <type>text/plain</type>
            <size>31539</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxODUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTQ4OGUxMTc2OGJkZWI2
ZWNjODQzNzNiODQ0YzA2YzhiMjgwYjAzNC4uYmNlNmVmODNkZjM0ZDFiOGU3YjFiYjE3OTJmZDNi
MDM4MTEwMjg5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDIwLTA1LTE4ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkdQVV0g
SW1wbGVtZW50IHRleHR1cmUgdmlld3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIxMTY5MQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTQ1MzM2NTI+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGFza3Mg
cmVtYWluaW5nOgorICAgICAgICAtIEV4aGF1c3RpdmUgdGVzdGluZworICAgICAgICAtIEZpZ3Vy
ZSBvdXQgd2hhdCB0byBkbyBhYm91dCBHUFVUZXh0dXJlQXNwZWN0CisgICAgICAgIC0gVXBkYXRl
IHRoZSBzcGVjCisgICAgICAgIC0gRGVsZXRlIGNyZWF0ZURlZmF1bHRWaWV3KCkKKyAgICAgICAg
LSBBdm9pZCB0aGUgY3JlYXRpb24gb2YgdGhlIHZpZXcgaWYgaXQncyBpZGVudGljYWwgdG8gdGhl
IHVuZGVybHlpbmcgdmlldworCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoT09QUyEpLgorCisgICAg
ICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNm
aWxlbGlzdDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdDoKKyAg
ICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L0dQ
VVRleHR1cmVWaWV3RGVzY3JpcHRvci5pZGw6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmUuaWRsLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1
L1dlYkdQVVRleHR1cmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR1BVVGV4dHVyZTo6Y3Jl
YXRlVGV4dHVyZVZpZXcpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmUu
aDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0dXJlLmlkbDoKKyAgICAgICAg
KiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVN3YXBDaGFpbi5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVUZXh0dXJlLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVRleHR1cmVWaWV3RGVzY3JpcHRvci5oOiBDb3BpZWQgZnJv
bSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0dXJlLmguCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVN3YXBDaGFpbk1ldGFsLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6R1BVU3dhcENoYWluOjp0cnlDcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6R1BVU3dhcENoYWluOjpHUFVTd2FwQ2hhaW4pOgorICAgICAgICAoV2ViQ29yZTo6R1BVU3dh
cENoYWluOjp0cnlHZXRDdXJyZW50VGV4dHVyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L2NvY29hL0dQVVRleHR1cmVNZXRhbC5tbToKKyAgICAgICAgKFdlYkNvcmU6Om10bFRl
eHR1cmVUeXBlRm9yR1BVVGV4dHVyZURlc2NyaXB0b3IpOgorICAgICAgICAoV2ViQ29yZTo6bXRs
VGV4dHVyZVVzYWdlRm9yR1BVVGV4dHVyZVVzYWdlRmxhZ3MpOgorICAgICAgICAoV2ViQ29yZTo6
dHJ5Q3JlYXRlTXRsVGV4dHVyZURlc2NyaXB0b3IpOgorICAgICAgICAoV2ViQ29yZTo6R1BVVGV4
dHVyZTo6dHJ5Q3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdQVVRleHR1cmU6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpHUFVUZXh0dXJlOjpHUFVUZXh0dXJlKToKKyAgICAgICAgKFdl
YkNvcmU6OkdQVVRleHR1cmU6OnRyeUNyZWF0ZURlZmF1bHRUZXh0dXJlVmlldyk6CisgICAgICAg
IChXZWJDb3JlOjpjYWxjdWxhdGVWaWV3UGl4ZWxGb3JtYXQpOgorICAgICAgICAoV2ViQ29yZTo6
Y2FsY3VsYXRlTGV2ZWxzKToKKyAgICAgICAgKFdlYkNvcmU6OmNhbGN1bGF0ZVNsaWNlcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpjYWxjdWxhdGVNZXRhbFRleHR1cmVUeXBlKToKKyAgICAgICAgKFdl
YkNvcmU6OkdQVVRleHR1cmU6OnRyeUNyZWF0ZVRleHR1cmVWaWV3KToKKwogMjAyMC0wNS0xOCAg
U2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBNb3ZlIHNv
bWUgb2YgdGhlIG1vcmUgY2hhdHR5IFNjcm9sbGluZyBsb2dnaW5nIHRvIGEgU2Nyb2xsaW5nVHJl
ZSBjaGFubmVsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1Nv
dXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDFiYjYyYjE3Yzc1ZWZiN2MyNDllODgz
MGFmODgxN2JkMDdkNTBkZDEuLmY4MGEyYTU5MWM1MGZjMzUyMmE3MmQ2N2NmZjgzNjhlYWY3Yzkx
ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJj
ZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC01MDQsNiArNTA0LDcgQEAgc2V0KFdlYkNvcmVf
Tk9OX1NWR19JRExfRklMRVMKICAgICBNb2R1bGVzL3dlYmdwdS9HUFVUZXh0dXJlRGVzY3JpcHRv
ci5pZGwKICAgICBNb2R1bGVzL3dlYmdwdS9HUFVUZXh0dXJlRm9ybWF0LmlkbAogICAgIE1vZHVs
ZXMvd2ViZ3B1L0dQVVRleHR1cmVVc2FnZS5pZGwKKyAgICBNb2R1bGVzL3dlYmdwdS9HUFVUZXh0
dXJlVmlld0Rlc2NyaXB0b3IuaWRsCiAgICAgTW9kdWxlcy93ZWJncHUvR1BVVW5jYXB0dXJlZEVy
cm9yRXZlbnQuaWRsCiAgICAgTW9kdWxlcy93ZWJncHUvR1BVVmFsaWRhdGlvbkVycm9yLmlkbAog
ICAgIE1vZHVsZXMvd2ViZ3B1L0dQVVZlcnRleEF0dHJpYnV0ZURlc2NyaXB0b3IuaWRsCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0IGIv
U291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAppbmRleCA1YThk
YTZhNmZjMTc4ZjY3ODc5MTRkODg0YmFiZDFmNzlkNjQ3MjY2Li4zOTMwM2Y1Mzg4MTcxYzU2OTNm
MjA4NTViOWFmNmFhYjFhM2RmYWVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVk
U291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3Vy
Y2VzLWlucHV0LnhjZmlsZWxpc3QKQEAgLTM2OSw2ICszNjksNyBAQCAkKFBST0pFQ1RfRElSKS9N
b2R1bGVzL3dlYmdwdS9HUFVTdG9yZU9wLmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJn
cHUvR1BVVGV4dHVyZURlc2NyaXB0b3IuaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdw
dS9HUFVUZXh0dXJlRm9ybWF0LmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJncHUvR1BV
VGV4dHVyZVVzYWdlLmlkbAorJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJncHUvR1BVVGV4dHVy
ZVZpZXdEZXNjcmlwdG9yLmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJncHUvR1BVVW5j
YXB0dXJlZEVycm9yRXZlbnQuaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9HUFVW
YWxpZGF0aW9uRXJyb3IuaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9HUFVWZXJ0
ZXhBdHRyaWJ1dGVEZXNjcmlwdG9yLmlkbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVy
aXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291
cmNlcy1vdXRwdXQueGNmaWxlbGlzdAppbmRleCBmM2U5NzYyNTNjOTMwMTMzNDhlOTE2ZDg2ODUx
ZmZjZTQzZmI5NWI5Li5hNGNlNTAyMWMyMDZjZTkyYzg3YmNkYzNhZTkwZDU0ZTY0MjdlODQ4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlz
dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdApA
QCAtNjc0LDYgKzY3NCw4IEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0pTR1BVVGV4dHVyZUZvcm1hdC5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJDb3JlL0pTR1BVVGV4dHVyZUZvcm1hdC5oCiAkKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVVRleHR1cmVVc2FnZS5jcHAKICQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR1BVVGV4dHVyZVVzYWdl
LmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR1BVVGV4
dHVyZVZpZXdEZXNjcmlwdG9yLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvSlNHUFVUZXh0dXJlVmlld0Rlc2NyaXB0b3IuaAogJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVVbmNhcHR1cmVkRXJyb3JFdmVudC5j
cHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR1BVVW5j
YXB0dXJlZEVycm9yRXZlbnQuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2Vz
L1dlYkNvcmUvSlNHUFVWYWxpZGF0aW9uRXJyb3IuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMu
bWFrZQppbmRleCAyYTNlZjkwYjg0NzQ1NTlmNTRjMTEyZjQwZGM2OWE3MGU3MmRmNzk1Li45ZjQy
OGNmY2MyYzM3M2M2ZjQwYzFlYjZhNGY0MDk4MTcyYmM5NTk3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRT
b3VyY2VzLm1ha2UKQEAgLTEsNCArMSw0IEBACi0jIENvcHlyaWdodCAoQykgMjAwNi0yMDE4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDA2LTIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIyBDb3B5cmlnaHQgKEMpIDIwMDYgU2Ft
dWVsIFdlaW5pZyA8c2FtLndlaW5pZ0BnbWFpbC5jb20+CiAjIENvcHlyaWdodCAoQykgMjAwOSBD
YW1lcm9uIE1jQ29ybWFjayA8Y2FtQG1jYy5pZC5hdT4KICMKQEAgLTQyNCw2ICs0MjQsNyBAQCBK
U19CSU5ESU5HX0lETFMgPSBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9HUFVUZXh0
dXJlRGVzY3JpcHRvci5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvR1BVVGV4
dHVyZUZvcm1hdC5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvR1BVVGV4dHVy
ZVVzYWdlLmlkbCBcCisgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9HUFVUZXh0dXJlVmll
d0Rlc2NyaXB0b3IuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L0dQVVVuY2Fw
dHVyZWRFcnJvckV2ZW50LmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9HUFVW
YWxpZGF0aW9uRXJyb3IuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L0dQVVZl
cnRleEF0dHJpYnV0ZURlc2NyaXB0b3IuaWRsIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L0dQVVRleHR1cmVWaWV3RGVzY3JpcHRvci5pZGwgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVUZXh0dXJlVmlld0Rlc2NyaXB0b3IuaWRsCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmE1MDIwZTk4ZWY3OTI4NzJjZTk3NjMxZDdiM2MzNGNhNDgzMjgyNjIKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVUZXh0dXJlVmlld0Rlc2Ny
aXB0b3IuaWRsCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworLy8gaHR0cHM6Ly9ncHV3ZWIu
Z2l0aHViLmlvL2dwdXdlYgorCit0eXBlZGVmIFtFbmZvcmNlUmFuZ2VdIHVuc2lnbmVkIGxvbmcg
R1BVSW50ZWdlckNvb3JkaW5hdGU7CisKK1sKKyAgICBJbXBsZW1lbnRlZEFzPUdQVVRleHR1cmVW
aWV3RGltZW5zaW9uCitdIGVudW0gR1BVVGV4dHVyZVZpZXdEaW1lbnNpb24geworICAgICIxZCIs
CisgICAgIjJkIiwKKyAgICAiMmQtYXJyYXkiLAorICAgICJjdWJlIiwKKyAgICAiY3ViZS1hcnJh
eSIsCisgICAgIjNkIgorfTsKKworWworICAgIEltcGxlbWVudGVkQXM9R1BVVGV4dHVyZUFzcGVj
dAorXSBlbnVtIEdQVVRleHR1cmVBc3BlY3QgeworICAgICJhbGwiLAorICAgICJzdGVuY2lsLW9u
bHkiLAorICAgICJkZXB0aC1vbmx5IgorfTsKKworWworICAgIENvbmRpdGlvbmFsPVdFQkdQVSwK
KyAgICBFbmFibGVkQXRSdW50aW1lPVdlYkdQVQorXSBkaWN0aW9uYXJ5IEdQVVRleHR1cmVWaWV3
RGVzY3JpcHRvciB7CisgICAgR1BVVGV4dHVyZUZvcm1hdCBmb3JtYXQ7CisgICAgR1BVVGV4dHVy
ZVZpZXdEaW1lbnNpb24gZGltZW5zaW9uOworICAgIEdQVVRleHR1cmVBc3BlY3QgYXNwZWN0ID0g
ImFsbCI7CisgICAgR1BVSW50ZWdlckNvb3JkaW5hdGUgYmFzZU1pcExldmVsID0gMDsKKyAgICBH
UFVJbnRlZ2VyQ29vcmRpbmF0ZSBtaXBMZXZlbENvdW50ID0gMDsKKyAgICBHUFVJbnRlZ2VyQ29v
cmRpbmF0ZSBiYXNlQXJyYXlMYXllciA9IDA7CisgICAgR1BVSW50ZWdlckNvb3JkaW5hdGUgYXJy
YXlMYXllckNvdW50ID0gMDsKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XZWJHUFVUZXh0dXJlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dlYkdQVVRleHR1cmUuY3BwCmluZGV4IDA3ZGEwNjAxMjMxZTdlOGY1ODM5NGM3YzQyMzk1MTg0
ZWI3YTM3YzYuLjdkYjM5Y2JjYzllMDJhNjdhNDRlMzcyYjljN2M5Nzk3YWVhYzA3ODQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmUuY3BwCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTU0LDYg
KzU0LDE4IEBAIFJlZjxXZWJHUFVUZXh0dXJlVmlldz4gV2ViR1BVVGV4dHVyZTo6Y3JlYXRlRGVm
YXVsdFZpZXcoKQogICAgIHJldHVybiB2aWV3OwogfQogCitSZWY8V2ViR1BVVGV4dHVyZVZpZXc+
IFdlYkdQVVRleHR1cmU6OmNyZWF0ZVRleHR1cmVWaWV3KGNvbnN0IEdQVVRleHR1cmVWaWV3RGVz
Y3JpcHRvciYgZGVzY3JpcHRvcikKK3sKKyAgICBpZiAoIW1fdGV4dHVyZSkgeworICAgICAgICBM
T0coV2ViR1BVLCAiR1BVVGV4dHVyZTo6Y3JlYXRlRGVmYXVsdFZpZXcoKTogSW52YWxpZCBvcGVy
YXRpb24hIik7CisgICAgICAgIHJldHVybiBXZWJHUFVUZXh0dXJlVmlldzo6Y3JlYXRlKG51bGxw
dHIpOworICAgIH0KKworICAgIGF1dG8gdmlldyA9IFdlYkdQVVRleHR1cmVWaWV3OjpjcmVhdGUo
bV90ZXh0dXJlLT50cnlDcmVhdGVUZXh0dXJlVmlldyhkZXNjcmlwdG9yKSk7CisgICAgbV90ZXh0
dXJlVmlld3MuYXBwZW5kKHZpZXcuY29weVJlZigpKTsKKyAgICByZXR1cm4gdmlldzsKK30KKwog
dm9pZCBXZWJHUFVUZXh0dXJlOjpkZXN0cm95KCkKIHsKICAgICBpZiAoIW1fdGV4dHVyZSkgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZS5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZS5oCmluZGV4IDZm
ZDU4YzI2NDJmY2M2YTYyZjM3MmFjYjRhMjczOGUxYzZiNzI1MmIuLjEzNDUxMmJkZGRiMjE1MzE0
NzgwNDBkODU4MTlhMTZjNDVkYWZkNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XZWJHUFVUZXh0dXJlLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxOC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMzUsNiArMzUsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKK3N0cnVjdCBHUFVUZXh0dXJlVmlld0Rlc2NyaXB0b3I7CisKIGNsYXNzIFdlYkdQVVRleHR1
cmUgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJHUFVUZXh0dXJlPiB7CiBwdWJsaWM6CiAgICAgc3Rh
dGljIFJlZjxXZWJHUFVUZXh0dXJlPiBjcmVhdGUoUmVmUHRyPEdQVVRleHR1cmU+JiYpOwpAQCAt
NDIsNiArNDQsNyBAQCBwdWJsaWM6CiAgICAgR1BVVGV4dHVyZSogdGV4dHVyZSgpIHsgcmV0dXJu
IG1fdGV4dHVyZS5nZXQoKTsgfQogCiAgICAgUmVmPFdlYkdQVVRleHR1cmVWaWV3PiBjcmVhdGVE
ZWZhdWx0VmlldygpOworICAgIFJlZjxXZWJHUFVUZXh0dXJlVmlldz4gY3JlYXRlVGV4dHVyZVZp
ZXcoY29uc3QgR1BVVGV4dHVyZVZpZXdEZXNjcmlwdG9yJik7CiAgICAgdm9pZCBkZXN0cm95KCk7
CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
ZWJHUFVUZXh0dXJlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVRl
eHR1cmUuaWRsCmluZGV4IGE1ZGI4NTA2Yjc2YTMyMzZlMWJjZTU4OWJlOWMzYjgyZjlhMWM0MDcu
LmZhN2U2YTViY2VjZGQ3MjU3MDQ5YmUzMWVkMzg0M2FjYzBjZDg5OWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmUuaWRsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmUuaWRsCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMxLDggKzMxLDYgQEAK
ICAgICBJbnRlcmZhY2VOYW1lPUdQVVRleHR1cmUKIF0gaW50ZXJmYWNlIFdlYkdQVVRleHR1cmUg
ewogICAgIFdlYkdQVVRleHR1cmVWaWV3IGNyZWF0ZURlZmF1bHRWaWV3KCk7CisgICAgV2ViR1BV
VGV4dHVyZVZpZXcgY3JlYXRlVGV4dHVyZVZpZXcoR1BVVGV4dHVyZVZpZXdEZXNjcmlwdG9yIGRl
c2MpOwogICAgIHZvaWQgZGVzdHJveSgpOwotCi0gICAgLy8gTm90IFlldCBJbXBsZW1lbnRlZDoK
LSAgICAvLyBXZWJHUFVUZXh0dXJlVmlldyBjcmVhdGVUZXh0dXJlVmlldyhXZWJHUFVUZXh0dXJl
Vmlld0Rlc2NyaXB0b3IgZGVzYyk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291
cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCBjZTZhMTE0Nzc5NGUz
NDM0M2RkNTNhNmZhYzY1YjI5ODFlMTM0MDI3Li45ZDVmZDE1MTRjYmJmZTA1MGI2MWRjYWUyMjBk
ZjhiYzhhNzU0Y2FjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMjk2MCw2ICsyOTYwLDcgQEAgSlNHUFVT
dG9yZU9wLmNwcAogSlNHUFVUZXh0dXJlRGVzY3JpcHRvci5jcHAKIEpTR1BVVGV4dHVyZUZvcm1h
dC5jcHAKIEpTR1BVVGV4dHVyZVVzYWdlLmNwcAorSlNHUFVUZXh0dXJlVmlld0Rlc2NyaXB0b3Iu
Y3BwCiBKU0dQVVVuY2FwdHVyZWRFcnJvckV2ZW50LmNwcAogSlNHUFVWYWxpZGF0aW9uRXJyb3Iu
Y3BwCiBKU0dQVVZlcnRleEF0dHJpYnV0ZURlc2NyaXB0b3IuY3BwCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggM2ZiMTViZWI0N2Rm
MjAyMGM4NzMzNmI0NGVmNTE3YzQyNDU0NTkyNi4uOTM5MDFmNGJmOTY2N2IxNjJkZWFhZjFjNDkx
OWFkYzRhODg1MjRjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtNjU4NSw2ICs2NTg1LDggQEAKIAkJMUNBRjM0N0UwQTZDNDA1
MjAwQUJFMDZFIC8qIFdlYlNjcmlwdE9iamVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXZWJTY3JpcHRPYmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MUNBRjM0N0YwQTZDNDA1MjAwQUJFMDZFIC8qIFdlYlNjcmlwdE9iamVjdC5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYlNjcmlwdE9iamVjdC5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNBRjM0ODAwQTZDNDA1MjAwQUJFMDZFIC8qIFdlYlNj
cmlwdE9iamVjdFByaXZhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vi
U2NyaXB0T2JqZWN0UHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQ0Iw
MTc5NTI0NjdEQTdBMDAxNTBGQjAgLyogR1BVVGV4dHVyZVZpZXdEZXNjcmlwdG9yLmlkbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBHUFVUZXh0dXJlVmlld0Rlc2NyaXB0b3IuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkxQ0IwMTc5NzI0NjdEQzkwMDAxNTBGQjAgLyogR1BVVGV4dHVyZVZpZXdEZXNjcmlwdG9y
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEdQVVRleHR1cmVWaWV3RGVzY3JpcHRvci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkxQ0I1RkU4ODIyREVCQzhCMDA5NDQwRTIgLyogV0hMU0xFcnJv
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTEVycm9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTFDQjY5QjMyMjFERUQ0MEIwMDZFODQ2QSAvKiBXSExTTFJlc29sdmFibGVUeXBlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdITFNMUmVzb2x2YWJsZVR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMUNCNjlCMzQyMURFRDYzQTAwNkU4NDZBIC8qIFdITFNMRmxvYXRMaXRlcmFs
VHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTEZsb2F0TGl0ZXJhbFR5cGUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE5MTEwLDYgKzE5MTEyLDcgQEAKIAkJCQlEMDI2RjQ4QzIy
MEE1QkFEMDBBQzVGNDkgLyogR1BVVGV4dHVyZURlc2NyaXB0b3IuaCAqLywKIAkJCQkzMTJGRjhD
MzIxQTRDMkYzMDBFQjE5OUQgLyogR1BVVGV4dHVyZUZvcm1hdC5oICovLAogCQkJCUQwMjZGNDg1
MjIwQTQ3NzIwMEFDNUY0OSAvKiBHUFVUZXh0dXJlVXNhZ2UuaCAqLywKKwkJCQkxQ0IwMTc5NzI0
NjdEQzkwMDAxNTBGQjAgLyogR1BVVGV4dHVyZVZpZXdEZXNjcmlwdG9yLmggKi8sCiAJCQkJRDA2
RUY1NTIyMjBCQTI2QTAwMTg3MjRFIC8qIEdQVVV0aWxzLmggKi8sCiAJCQkJRDA5QUZCMEUyMkQ1
NUZGNTAwQzQ1MzhDIC8qIEdQVVZhbGlkYXRpb25FcnJvci5jcHAgKi8sCiAJCQkJRDA5QUZCMEQy
MkQ1NUYzQjAwQzQ1MzhDIC8qIEdQVVZhbGlkYXRpb25FcnJvci5oICovLApAQCAtMjcwMTUsNiAr
MjcwMTgsNyBAQAogCQkJCUQwMjZGNDhCMjIwQTVCMEIwMEFDNUY0OSAvKiBHUFVUZXh0dXJlRGVz
Y3JpcHRvci5pZGwgKi8sCiAJCQkJRDBFQUNGQUUyMTlFMzBGRDAwMEZBNzVDIC8qIEdQVVRleHR1
cmVGb3JtYXQuaWRsICovLAogCQkJCUQwMjZGNDgzMjIwQTQ3MkYwMEFDNUY0OSAvKiBHUFVUZXh0
dXJlVXNhZ2UuaWRsICovLAorCQkJCTFDQjAxNzk1MjQ2N0RBN0EwMDE1MEZCMCAvKiBHUFVUZXh0
dXJlVmlld0Rlc2NyaXB0b3IuaWRsICovLAogCQkJCUQwOUFDMDA2MjMxNzFGNTIwMDE4Nzc2MiAv
KiBHUFVVbmNhcHR1cmVkRXJyb3JFdmVudC5jcHAgKi8sCiAJCQkJRDA5QUMwMDUyMzE3MUY1MjAw
MTg3NzYyIC8qIEdQVVVuY2FwdHVyZWRFcnJvckV2ZW50LmggKi8sCiAJCQkJRDA5QUMwMDcyMzE3
MUY1MjAwMTg3NzYyIC8qIEdQVVVuY2FwdHVyZWRFcnJvckV2ZW50LmlkbCAqLywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVTd2FwQ2hhaW4uaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVTd2FwQ2hhaW4uaAppbmRl
eCAzMjdmZDY3N2FiNDdhNzJhYjExMTE5ZDA4OTUzNTU0MjgxMzUzMTlmLi5jMGQ5YjlhOWQwZTVj
OTFjY2MxNzI0ODc0ZGIwNjJjNDY0NGVmNWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVU3dhcENoYWluLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVN3YXBDaGFpbi5oCkBAIC02NiwxMCArNjYsMTEgQEAg
cHVibGljOgogICAgIHZvaWQgZGVzdHJveSgpIHsgbV9jdXJyZW50RHJhd2FibGUgPSBudWxscHRy
OyB9CiAKIHByaXZhdGU6Ci0gICAgR1BVU3dhcENoYWluKFBsYXRmb3JtU3dhcExheWVyU21hcnRQ
dHImJiwgT3B0aW9uU2V0PEdQVVRleHR1cmVVc2FnZTo6RmxhZ3M+KTsKKyAgICBHUFVTd2FwQ2hh
aW4oUGxhdGZvcm1Td2FwTGF5ZXJTbWFydFB0ciYmLCBHUFVUZXh0dXJlRm9ybWF0LCBPcHRpb25T
ZXQ8R1BVVGV4dHVyZVVzYWdlOjpGbGFncz4pOwogCiAgICAgUGxhdGZvcm1Td2FwTGF5ZXJTbWFy
dFB0ciBtX3BsYXRmb3JtU3dhcExheWVyOwogICAgIFBsYXRmb3JtRHJhd2FibGVTbWFydFB0ciBt
X2N1cnJlbnREcmF3YWJsZTsKKyAgICBHUFVUZXh0dXJlRm9ybWF0IG1fZm9ybWF0OwogICAgIE9w
dGlvblNldDxHUFVUZXh0dXJlVXNhZ2U6OkZsYWdzPiBtX3VzYWdlOwogfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVRleHR1cmUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVUZXh0dXJlLmgKaW5kZXggYTNi
NDI2YjA1ODBlMTIyOGNlMmZhZmRlZTlmMDkwNGU3ZDE4M2M0Mi4uZmRhMDRjZDIyYjczY2NmZDlk
Nzk0NTE5ZmFkYjg3MjA4ZDliYzVkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L0dQVVRleHR1cmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ncHUvR1BVVGV4dHVyZS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTgtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShX
RUJHUFUpCiAKKyNpbmNsdWRlICJHUFVUZXh0dXJlRGVzY3JpcHRvci5oIgogI2luY2x1ZGUgIkdQ
VVRleHR1cmVVc2FnZS5oIgogI2luY2x1ZGUgPHd0Zi9PcHRpb25TZXQuaD4KICNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZC5oPgpAQCAtNDEsNiArNDIsNyBAQCBjbGFzcyBHUFVEZXZpY2U7CiBjbGFz
cyBHUFVFcnJvclNjb3BlczsKIAogc3RydWN0IEdQVVRleHR1cmVEZXNjcmlwdG9yOworc3RydWN0
IEdQVVRleHR1cmVWaWV3RGVzY3JpcHRvcjsKIAogdXNpbmcgUGxhdGZvcm1UZXh0dXJlID0gTVRM
VGV4dHVyZTsKIHVzaW5nIFBsYXRmb3JtVGV4dHVyZVNtYXJ0UHRyID0gUmV0YWluUHRyPE1UTFRl
eHR1cmU+OwpAQCAtNDgsNyArNTAsNyBAQCB1c2luZyBQbGF0Zm9ybVRleHR1cmVTbWFydFB0ciA9
IFJldGFpblB0cjxNVExUZXh0dXJlPjsKIGNsYXNzIEdQVVRleHR1cmUgOiBwdWJsaWMgUmVmQ291
bnRlZDxHUFVUZXh0dXJlPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZlB0cjxHUFVUZXh0dXJl
PiB0cnlDcmVhdGUoY29uc3QgR1BVRGV2aWNlJiwgY29uc3QgR1BVVGV4dHVyZURlc2NyaXB0b3Im
LCBHUFVFcnJvclNjb3BlcyYpOwotICAgIHN0YXRpYyBSZWY8R1BVVGV4dHVyZT4gY3JlYXRlKFBs
YXRmb3JtVGV4dHVyZVNtYXJ0UHRyJiYsIE9wdGlvblNldDxHUFVUZXh0dXJlVXNhZ2U6OkZsYWdz
Pik7CisgICAgc3RhdGljIFJlZjxHUFVUZXh0dXJlPiBjcmVhdGUoUGxhdGZvcm1UZXh0dXJlU21h
cnRQdHImJiwgR1BVVGV4dHVyZUZvcm1hdCwgR1BVVGV4dHVyZURpbWVuc2lvbiwgT3B0aW9uU2V0
PEdQVVRleHR1cmVVc2FnZTo6RmxhZ3M+KTsKIAogICAgIFBsYXRmb3JtVGV4dHVyZSAqcGxhdGZv
cm1UZXh0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9wbGF0Zm9ybVRleHR1cmUuZ2V0KCk7IH0KICAg
ICBib29sIGlzQ29weVNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fdXNhZ2UuY29udGFpbnMoR1BV
VGV4dHVyZVVzYWdlOjpGbGFnczo6Q29weVNvdXJjZSk7IH0KQEAgLTYwLDEzICs2MiwxNiBAQCBw
dWJsaWM6CiAgICAgdW5zaWduZWQgcGxhdGZvcm1Vc2FnZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGxh
dGZvcm1Vc2FnZTsgfQogCiAgICAgUmVmUHRyPEdQVVRleHR1cmU+IHRyeUNyZWF0ZURlZmF1bHRU
ZXh0dXJlVmlldygpOworICAgIFJlZlB0cjxHUFVUZXh0dXJlPiB0cnlDcmVhdGVUZXh0dXJlVmll
dyhjb25zdCBHUFVUZXh0dXJlVmlld0Rlc2NyaXB0b3ImKTsKICAgICB2b2lkIGRlc3Ryb3koKSB7
IG1fcGxhdGZvcm1UZXh0dXJlID0gbnVsbHB0cjsgfQogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0
IEdQVVRleHR1cmUoUGxhdGZvcm1UZXh0dXJlU21hcnRQdHImJiwgT3B0aW9uU2V0PEdQVVRleHR1
cmVVc2FnZTo6RmxhZ3M+KTsKKyAgICBleHBsaWNpdCBHUFVUZXh0dXJlKFBsYXRmb3JtVGV4dHVy
ZVNtYXJ0UHRyJiYsIEdQVVRleHR1cmVGb3JtYXQsIEdQVVRleHR1cmVEaW1lbnNpb24sIE9wdGlv
blNldDxHUFVUZXh0dXJlVXNhZ2U6OkZsYWdzPik7CiAKICAgICBQbGF0Zm9ybVRleHR1cmVTbWFy
dFB0ciBtX3BsYXRmb3JtVGV4dHVyZTsKIAorICAgIEdQVVRleHR1cmVGb3JtYXQgbV9mb3JtYXQ7
CisgICAgR1BVVGV4dHVyZURpbWVuc2lvbiBtX2RpbWVuc2lvbjsKICAgICBPcHRpb25TZXQ8R1BV
VGV4dHVyZVVzYWdlOjpGbGFncz4gbV91c2FnZTsKICAgICB1bnNpZ25lZCBtX3BsYXRmb3JtVXNh
Z2U7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
L0dQVVRleHR1cmVWaWV3RGVzY3JpcHRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L0dQVVRleHR1cmVWaWV3RGVzY3JpcHRvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY4ODgyNWUw
ZTg5MmNkYjUwMTdkZWUzMTdiN2JlYjY0ODkyYTE4MjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVVGV4dHVyZVZpZXdEZXNjcmlwdG9y
LmgKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5B
QkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIkdQVVRleHR1cmVGb3JtYXQuaCIKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitlbnVtIGNsYXNzIEdQVVRleHR1cmVWaWV3RGltZW5zaW9uIHsKKyAgICBf
MWQsCisgICAgXzJkLAorICAgIF8yZEFycmF5LAorICAgIEN1YmUsCisgICAgQ3ViZUFycmF5LAor
ICAgIF8zZAorfTsKKworZW51bSBjbGFzcyBHUFVUZXh0dXJlQXNwZWN0IHsKKyAgICBBbGwsCisg
ICAgU3RlbmNpbE9ubHksCisgICAgRGVwdGhPbmx5Cit9OworCitzdHJ1Y3QgR1BVVGV4dHVyZVZp
ZXdEZXNjcmlwdG9yIHsKKyAgICBPcHRpb25hbDxHUFVUZXh0dXJlRm9ybWF0PiBmb3JtYXQ7Cisg
ICAgT3B0aW9uYWw8R1BVVGV4dHVyZVZpZXdEaW1lbnNpb24+IGRpbWVuc2lvbjsKKyAgICBHUFVU
ZXh0dXJlQXNwZWN0IGFzcGVjdDsKKyAgICB1bnNpZ25lZCBiYXNlTWlwTGV2ZWw7CisgICAgdW5z
aWduZWQgbWlwTGV2ZWxDb3VudDsKKyAgICB1bnNpZ25lZCBiYXNlQXJyYXlMYXllcjsKKyAgICB1
bnNpZ25lZCBhcnJheUxheWVyQ291bnQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVN3YXBDaGFpbk1ldGFsLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVN3YXBDaGFpbk1ldGFsLm1tCmlu
ZGV4IGJmM2UzNzI5Njg0NWU2ZWZlNTY4NGZiNTAwOGQwNmVlYmEyOTViMjMuLmNkMzkyZTBmODVl
ZTZjMGQwM2E0YWY1ZTYwMTkwM2FiY2QxNjc2MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVTd2FwQ2hhaW5NZXRhbC5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVU3dhcENoYWluTWV0
YWwubW0KQEAgLTEwOCwxMyArMTA4LDE0IEBAIFJlZlB0cjxHUFVTd2FwQ2hhaW4+IEdQVVN3YXBD
aGFpbjo6dHJ5Q3JlYXRlKGNvbnN0IEdQVVN3YXBDaGFpbkRlc2NyaXB0b3ImIGRlc2NyCiAKICAg
ICBzZXRMYXllclNoYXBlKGxheWVyLmdldCgpLCB3aWR0aCwgaGVpZ2h0KTsKIAotICAgIGF1dG8g
c3dhcENoYWluID0gYWRvcHRSZWYobmV3IEdQVVN3YXBDaGFpbihXVEZNb3ZlKGxheWVyKSwgdXNh
Z2VPcHRpb25zKSk7CisgICAgYXV0byBzd2FwQ2hhaW4gPSBhZG9wdFJlZihuZXcgR1BVU3dhcENo
YWluKFdURk1vdmUobGF5ZXIpLCBkZXNjcmlwdG9yLmZvcm1hdCwgdXNhZ2VPcHRpb25zKSk7CiAg
ICAgZGVzY3JpcHRvci5kZXZpY2UtPnNldFN3YXBDaGFpbihzd2FwQ2hhaW4uY29weVJlZigpKTsK
ICAgICByZXR1cm4gc3dhcENoYWluOwogfQogCi1HUFVTd2FwQ2hhaW46OkdQVVN3YXBDaGFpbihS
ZXRhaW5QdHI8V2ViR1BVTGF5ZXI+JiYgcGxhdGZvcm1MYXllciwgT3B0aW9uU2V0PEdQVVRleHR1
cmVVc2FnZTo6RmxhZ3M+IHVzYWdlT3B0aW9ucykKK0dQVVN3YXBDaGFpbjo6R1BVU3dhcENoYWlu
KFJldGFpblB0cjxXZWJHUFVMYXllcj4mJiBwbGF0Zm9ybUxheWVyLCBHUFVUZXh0dXJlRm9ybWF0
IGZvcm1hdCwgT3B0aW9uU2V0PEdQVVRleHR1cmVVc2FnZTo6RmxhZ3M+IHVzYWdlT3B0aW9ucykK
ICAgICA6IG1fcGxhdGZvcm1Td2FwTGF5ZXIoV1RGTW92ZShwbGF0Zm9ybUxheWVyKSkKKyAgICAs
IG1fZm9ybWF0KGZvcm1hdCkKICAgICAsIG1fdXNhZ2UodXNhZ2VPcHRpb25zKQogewogICAgIFtt
X3BsYXRmb3JtU3dhcExheWVyIHNldFN3YXBDaGFpbjp0aGlzXTsKQEAgLTEzNiw3ICsxMzcsNyBA
QCBSZWZQdHI8R1BVVGV4dHVyZT4gR1BVU3dhcENoYWluOjp0cnlHZXRDdXJyZW50VGV4dHVyZSgp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIHJldHVybiBHUFVUZXh0dXJl
OjpjcmVhdGUoV1RGTW92ZShtdGxUZXh0dXJlKSwgbV91c2FnZSk7CisgICAgcmV0dXJuIEdQVVRl
eHR1cmU6OmNyZWF0ZShXVEZNb3ZlKG10bFRleHR1cmUpLCBtX2Zvcm1hdCwgR1BVVGV4dHVyZURp
bWVuc2lvbjo6XzJkLCBtX3VzYWdlKTsKIH0KIAogdm9pZCBHUFVTd2FwQ2hhaW46OnByZXNlbnQo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29h
L0dQVVRleHR1cmVNZXRhbC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dw
dS9jb2NvYS9HUFVUZXh0dXJlTWV0YWwubW0KaW5kZXggYzI5MTc2YmQ5MjM4NTU2MWQyN2NmY2Iz
ZTUxNDJmMjJmMjM3Y2Y4Zi4uNzA0Nzk1MjJiMmMxMmU2YTk4OTllOWNjZGU4OTAyZmJlNWJiYzll
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29h
L0dQVVRleHR1cmVNZXRhbC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvY29jb2EvR1BVVGV4dHVyZU1ldGFsLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTgtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2ltcG9ydCAi
R1BVRGV2aWNlLmgiCiAjaW1wb3J0ICJHUFVUZXh0dXJlRGVzY3JpcHRvci5oIgorI2ltcG9ydCAi
R1BVVGV4dHVyZVZpZXdEZXNjcmlwdG9yLmgiCiAjaW1wb3J0ICJHUFVVdGlscy5oIgogI2ltcG9y
dCAiTG9nZ2luZy5oIgogI2ltcG9ydCA8TWV0YWwvTWV0YWwuaD4KQEAgLTEyMSw2ICsxMjIsOCBA
QCBzdGF0aWMgUmV0YWluUHRyPE1UTFRleHR1cmVEZXNjcmlwdG9yPiB0cnlDcmVhdGVNdGxUZXh0
dXJlRGVzY3JpcHRvcihjb25zdCBjaGFyKgogCiAgICAgYXV0byBwaXhlbEZvcm1hdCA9IHN0YXRp
Y19jYXN0PE1UTFBpeGVsRm9ybWF0PihwbGF0Zm9ybVRleHR1cmVGb3JtYXRGb3JHUFVUZXh0dXJl
Rm9ybWF0KGRlc2NyaXB0b3IuZm9ybWF0KSk7CiAKKyAgICBhdXRvIHRleHR1cmVUeXBlID0gbXRs
VGV4dHVyZVR5cGVGb3JHUFVUZXh0dXJlRGVzY3JpcHRvcihkZXNjcmlwdG9yKTsKKwogICAgIGF1
dG8gbXRsVXNhZ2UgPSBtdGxUZXh0dXJlVXNhZ2VGb3JHUFVUZXh0dXJlVXNhZ2VGbGFncyh1c2Fn
ZSwgZnVuY3Rpb25OYW1lKTsKICAgICBpZiAoIW10bFVzYWdlKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKQEAgLTEzOSw5ICsxNDIsOSBAQCBzdGF0aWMgUmV0YWluUHRyPE1UTFRleHR1cmVEZXNj
cmlwdG9yPiB0cnlDcmVhdGVNdGxUZXh0dXJlRGVzY3JpcHRvcihjb25zdCBjaGFyKgogICAgIFtt
dGxEZXNjcmlwdG9yIHNldEFycmF5TGVuZ3RoOmFycmF5TGVuZ3RoXTsKICAgICBbbXRsRGVzY3Jp
cHRvciBzZXRNaXBtYXBMZXZlbENvdW50OmRlc2NyaXB0b3IubWlwTGV2ZWxDb3VudF07CiAgICAg
W210bERlc2NyaXB0b3Igc2V0U2FtcGxlQ291bnQ6ZGVzY3JpcHRvci5zYW1wbGVDb3VudF07Ci0g
ICAgW210bERlc2NyaXB0b3Igc2V0VGV4dHVyZVR5cGU6bXRsVGV4dHVyZVR5cGVGb3JHUFVUZXh0
dXJlRGVzY3JpcHRvcihkZXNjcmlwdG9yKV07CisgICAgW210bERlc2NyaXB0b3Igc2V0VGV4dHVy
ZVR5cGU6dGV4dHVyZVR5cGVdOwogICAgIFttdGxEZXNjcmlwdG9yIHNldFBpeGVsRm9ybWF0OnBp
eGVsRm9ybWF0XTsKLSAgICBbbXRsRGVzY3JpcHRvciBzZXRVc2FnZToqbXRsVXNhZ2VdOworICAg
IFttdGxEZXNjcmlwdG9yIHNldFVzYWdlOm10bFVzYWdlLnZhbHVlKCldOwogCiAgICAgW210bERl
c2NyaXB0b3Igc2V0U3RvcmFnZU1vZGU6c3RvcmFnZU1vZGVdOwogCkBAIC0xODIsMTYgKzE4NSwx
OCBAQCBSZWZQdHI8R1BVVGV4dHVyZT4gR1BVVGV4dHVyZTo6dHJ5Q3JlYXRlKGNvbnN0IEdQVURl
dmljZSYgZGV2aWNlLCBjb25zdCBHUFVUZXh0dQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICB9CiAKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IEdQVVRleHR1cmUoV1RGTW92ZShtdGxUZXh0
dXJlKSwgdXNhZ2UpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEdQVVRleHR1cmUoV1RGTW92
ZShtdGxUZXh0dXJlKSwgZGVzY3JpcHRvci5mb3JtYXQsIGRlc2NyaXB0b3IuZGltZW5zaW9uLCB1
c2FnZSkpOwogfQogCi1SZWY8R1BVVGV4dHVyZT4gR1BVVGV4dHVyZTo6Y3JlYXRlKFJldGFpblB0
cjxNVExUZXh0dXJlPiYmIHRleHR1cmUsIE9wdGlvblNldDxHUFVUZXh0dXJlVXNhZ2U6OkZsYWdz
PiB1c2FnZSkKK1JlZjxHUFVUZXh0dXJlPiBHUFVUZXh0dXJlOjpjcmVhdGUoUmV0YWluUHRyPE1U
TFRleHR1cmU+JiYgdGV4dHVyZSwgR1BVVGV4dHVyZUZvcm1hdCBmb3JtYXQsIEdQVVRleHR1cmVE
aW1lbnNpb24gZGltZW5zaW9uLCBPcHRpb25TZXQ8R1BVVGV4dHVyZVVzYWdlOjpGbGFncz4gdXNh
Z2UpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgR1BVVGV4dHVyZShXVEZNb3ZlKHRleHR1
cmUpLCB1c2FnZSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEdQVVRleHR1cmUoV1RGTW92
ZSh0ZXh0dXJlKSwgZm9ybWF0LCBkaW1lbnNpb24sIHVzYWdlKSk7CiB9CiAKLUdQVVRleHR1cmU6
OkdQVVRleHR1cmUoUmV0YWluUHRyPE1UTFRleHR1cmU+JiYgdGV4dHVyZSwgT3B0aW9uU2V0PEdQ
VVRleHR1cmVVc2FnZTo6RmxhZ3M+IHVzYWdlKQorR1BVVGV4dHVyZTo6R1BVVGV4dHVyZShSZXRh
aW5QdHI8TVRMVGV4dHVyZT4mJiB0ZXh0dXJlLCBHUFVUZXh0dXJlRm9ybWF0IGZvcm1hdCwgR1BV
VGV4dHVyZURpbWVuc2lvbiBkaW1lbnNpb24sIE9wdGlvblNldDxHUFVUZXh0dXJlVXNhZ2U6OkZs
YWdzPiB1c2FnZSkKICAgICA6IG1fcGxhdGZvcm1UZXh0dXJlKFdURk1vdmUodGV4dHVyZSkpCisg
ICAgLCBtX2Zvcm1hdChmb3JtYXQpCisgICAgLCBtX2RpbWVuc2lvbihkaW1lbnNpb24pCiAgICAg
LCBtX3VzYWdlKHVzYWdlKQogewogICAgIG1fcGxhdGZvcm1Vc2FnZSA9IE1UTFJlc291cmNlVXNh
Z2VSZWFkOwpAQCAtMjEyLDExICsyMTcsMTY3IEBAIFJlZlB0cjxHUFVUZXh0dXJlPiBHUFVUZXh0
dXJlOjp0cnlDcmVhdGVEZWZhdWx0VGV4dHVyZVZpZXcoKQogICAgIEVORF9CTE9DS19PQkpDX0VY
Q0VQVElPTlM7CiAKICAgICBpZiAoIXRleHR1cmUpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIkdQ
VVRleHR1cmU6OmNyZWF0ZURlZmF1bHRUZXh0dXJlVmlldygpOiBVbmFibGUgdG8gY3JlYXRlIE1U
TFRleHR1cmUgdmlldyEiKTsKKyAgICAgICAgTE9HKFdlYkdQVSwgIkdQVVRleHR1cmU6OnRyeUNy
ZWF0ZURlZmF1bHRUZXh0dXJlVmlldygpOiBVbmFibGUgdG8gY3JlYXRlIE1UTFRleHR1cmUgdmll
dyEiKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgcmV0dXJuIEdQVVRl
eHR1cmU6OmNyZWF0ZShXVEZNb3ZlKHRleHR1cmUpLCBtX2Zvcm1hdCwgbV9kaW1lbnNpb24sIG1f
dXNhZ2UpOworfQorCitzdGF0aWMgT3B0aW9uYWw8R1BVVGV4dHVyZUZvcm1hdD4gY2FsY3VsYXRl
Vmlld1BpeGVsRm9ybWF0KEdQVVRleHR1cmVGb3JtYXQgcGFyZW50UGl4ZWxGb3JtYXQsIGNvbnN0
IE9wdGlvbmFsPEdQVVRleHR1cmVGb3JtYXQ+JiBpbnB1dEZvcm1hdCkKK3sKKyAgICBpZiAoIWlu
cHV0Rm9ybWF0KQorICAgICAgICByZXR1cm4gcGFyZW50UGl4ZWxGb3JtYXQ7CisKKyAgICBzd2l0
Y2ggKHBhcmVudFBpeGVsRm9ybWF0KSB7CisgICAgY2FzZSBHUFVUZXh0dXJlRm9ybWF0OjpSZ2Jh
OHVub3JtOgorICAgICAgICBpZiAoaW5wdXRGb3JtYXQudmFsdWUoKSAhPSBHUFVUZXh0dXJlRm9y
bWF0OjpSZ2JhOHVub3JtKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIGlucHV0Rm9ybWF0LnZhbHVlKCk7CisgICAgY2FzZSBHUFVUZXh0dXJlRm9ybWF0
OjpSZ2JhOHVpbnQ6CisgICAgICAgIGlmIChpbnB1dEZvcm1hdC52YWx1ZSgpICE9IEdQVVRleHR1
cmVGb3JtYXQ6OlJnYmE4dWludCkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBpbnB1dEZvcm1hdC52YWx1ZSgpOworICAgIGNhc2UgR1BVVGV4dHVyZUZv
cm1hdDo6QmdyYTh1bm9ybToKKyAgICAgICAgaWYgKGlucHV0Rm9ybWF0LnZhbHVlKCkgIT0gR1BV
VGV4dHVyZUZvcm1hdDo6QmdyYTh1bm9ybSAmJiBpbnB1dEZvcm1hdC52YWx1ZSgpICE9IEdQVVRl
eHR1cmVGb3JtYXQ6OkJncmE4dW5vcm1TUkdCKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIGlucHV0Rm9ybWF0LnZhbHVlKCk7CisgICAgY2FzZSBHUFVU
ZXh0dXJlRm9ybWF0OjpEZXB0aDMyZmxvYXRTdGVuY2lsODoKKyAgICAgICAgaWYgKGlucHV0Rm9y
bWF0LnZhbHVlKCkgIT0gR1BVVGV4dHVyZUZvcm1hdDo6RGVwdGgzMmZsb2F0U3RlbmNpbDgpCisg
ICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gaW5wdXRGb3Jt
YXQudmFsdWUoKTsKKyAgICBjYXNlIEdQVVRleHR1cmVGb3JtYXQ6OkJncmE4dW5vcm1TUkdCOgor
ICAgICAgICBpZiAoaW5wdXRGb3JtYXQudmFsdWUoKSAhPSBHUFVUZXh0dXJlRm9ybWF0OjpCZ3Jh
OHVub3JtU1JHQiAmJiBpbnB1dEZvcm1hdC52YWx1ZSgpICE9IEdQVVRleHR1cmVGb3JtYXQ6OkJn
cmE4dW5vcm0pCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gaW5wdXRGb3JtYXQudmFsdWUoKTsKKyAgICBjYXNlIEdQVVRleHR1cmVGb3JtYXQ6OlJnYmEx
NmZsb2F0OgorICAgICAgICBpZiAoaW5wdXRGb3JtYXQudmFsdWUoKSAhPSBHUFVUZXh0dXJlRm9y
bWF0OjpSZ2JhMTZmbG9hdCkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBpbnB1dEZvcm1hdC52YWx1ZSgpOworICAgIH0KK30KKworc3RhdGljIE9wdGlv
bmFsPE5TUmFuZ2U+IGNhbGN1bGF0ZUxldmVscyh1bnNpZ25lZCBwYXJlbnRNaXBtYXBMZXZlbENv
dW50LCB1bnNpZ25lZCBiYXNlTWlwTGV2ZWwsIHVuc2lnbmVkIG1pcExldmVsQ291bnQpCit7Cisg
ICAgaWYgKGJhc2VNaXBMZXZlbCA+IHBhcmVudE1pcG1hcExldmVsQ291bnQpCisgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBpZiAoIW1pcExldmVsQ291bnQpCisgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICByZXR1cm4gTlNNYWtlUmFuZ2UoYmFzZU1pcExldmVs
LCBtaXBMZXZlbENvdW50KTsKK30KKworc3RhdGljIE9wdGlvbmFsPE5TUmFuZ2U+IGNhbGN1bGF0
ZVNsaWNlcyh1bnNpZ25lZCBwYXJlbnRBcnJheUxlbmd0aCwgdW5zaWduZWQgYmFzZUFycmF5TGF5
ZXIsIHVuc2lnbmVkIGFycmF5TGF5ZXJDb3VudCkKK3sKKyAgICBpZiAoYmFzZUFycmF5TGF5ZXIg
PiBwYXJlbnRBcnJheUxlbmd0aCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAg
IGlmICghYXJyYXlMYXllckNvdW50KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisg
ICAgcmV0dXJuIE5TTWFrZVJhbmdlKGJhc2VBcnJheUxheWVyLCBhcnJheUxheWVyQ291bnQpOwor
fQorCitzdGF0aWMgT3B0aW9uYWw8TVRMVGV4dHVyZVR5cGU+IGNhbGN1bGF0ZU1ldGFsVGV4dHVy
ZVR5cGUoR1BVVGV4dHVyZURpbWVuc2lvbiBwYXJlbnREaW1lbnNpb24sIHVuc2lnbmVkIHBhcmVu
dFNhbXBsZUNvdW50LCBjb25zdCBPcHRpb25hbDxHUFVUZXh0dXJlVmlld0RpbWVuc2lvbj4mIGRp
bWVuc2lvbiwgdW5zaWduZWQgYXJyYXlMYXllckNvdW50KQoreworICAgIGF1dG8gcmVxdWVzdGVk
RGltZW5zaW9uID0gdmFsdWVPckNvbXB1dGUoZGltZW5zaW9uLCBbJl0oKSAtPiBHUFVUZXh0dXJl
Vmlld0RpbWVuc2lvbiB7CisgICAgICAgIHN3aXRjaCAocGFyZW50RGltZW5zaW9uKSB7CisgICAg
ICAgIGNhc2UgR1BVVGV4dHVyZURpbWVuc2lvbjo6XzFkOgorICAgICAgICAgICAgcmV0dXJuIEdQ
VVRleHR1cmVWaWV3RGltZW5zaW9uOjpfMWQ7CisgICAgICAgIGNhc2UgR1BVVGV4dHVyZURpbWVu
c2lvbjo6XzJkOgorICAgICAgICAgICAgcmV0dXJuIEdQVVRleHR1cmVWaWV3RGltZW5zaW9uOjpf
MmQ7CisgICAgICAgIGNhc2UgR1BVVGV4dHVyZURpbWVuc2lvbjo6XzNkOgorICAgICAgICAgICAg
cmV0dXJuIEdQVVRleHR1cmVWaWV3RGltZW5zaW9uOjpfM2Q7CisgICAgICAgIH0KKyAgICB9KTsK
KworICAgIHN3aXRjaCAocGFyZW50RGltZW5zaW9uKSB7CisgICAgY2FzZSBHUFVUZXh0dXJlRGlt
ZW5zaW9uOjpfMWQ6CisgICAgICAgIEFTU0VSVChwYXJlbnRTYW1wbGVDb3VudCA9PSAxKTsKKyAg
ICAgICAgaWYgKHJlcXVlc3RlZERpbWVuc2lvbiAhPSBHUFVUZXh0dXJlVmlld0RpbWVuc2lvbjo6
XzFkKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIGFy
cmF5TGF5ZXJDb3VudCA9PSAxID8gTVRMVGV4dHVyZVR5cGUxRCA6IE1UTFRleHR1cmVUeXBlMURB
cnJheTsKKyAgICBjYXNlIEdQVVRleHR1cmVEaW1lbnNpb246Ol8yZDoKKyAgICAgICAgc3dpdGNo
IChyZXF1ZXN0ZWREaW1lbnNpb24pIHsKKyAgICAgICAgY2FzZSBHUFVUZXh0dXJlVmlld0RpbWVu
c2lvbjo6XzJkOgorICAgICAgICAgICAgaWYgKGFycmF5TGF5ZXJDb3VudCA+IDEpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBwYXJlbnRT
YW1wbGVDb3VudCA9PSAxID8gTVRMVGV4dHVyZVR5cGUyRCA6IE1UTFRleHR1cmVUeXBlMkRNdWx0
aXNhbXBsZTsKKyAgICAgICAgY2FzZSBHUFVUZXh0dXJlVmlld0RpbWVuc2lvbjo6XzJkQXJyYXk6
CisgICAgICAgICAgICByZXR1cm4gcGFyZW50U2FtcGxlQ291bnQgPT0gMSA/IE1UTFRleHR1cmVU
eXBlMkRBcnJheSA6IE1UTFRleHR1cmVUeXBlMkRNdWx0aXNhbXBsZUFycmF5OworICAgICAgICBj
YXNlIEdQVVRleHR1cmVWaWV3RGltZW5zaW9uOjpDdWJlOgorICAgICAgICAgICAgaWYgKGFycmF5
TGF5ZXJDb3VudCAhPSA2KQorICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgICAgICBpZiAocGFyZW50U2FtcGxlQ291bnQgIT0gMSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIE1UTFRleHR1cmVUeXBlQ3Vi
ZTsKKyAgICAgICAgY2FzZSBHUFVUZXh0dXJlVmlld0RpbWVuc2lvbjo6Q3ViZUFycmF5OgorICAg
ICAgICAgICAgaWYgKGFycmF5TGF5ZXJDb3VudCAlIDYpCisgICAgICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIGlmIChwYXJlbnRTYW1wbGVDb3VudCAhPSAxKQor
ICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4g
TVRMVGV4dHVyZVR5cGVDdWJlQXJyYXk7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
R1BVVGV4dHVyZURpbWVuc2lvbjo6XzNkOgorICAgICAgICBBU1NFUlQocGFyZW50U2FtcGxlQ291
bnQgPT0gMSk7CisgICAgICAgIGlmIChyZXF1ZXN0ZWREaW1lbnNpb24gIT0gR1BVVGV4dHVyZVZp
ZXdEaW1lbnNpb246Ol8zZCkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIGlmIChhcnJheUxheWVyQ291bnQgIT0gMSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBNVExUZXh0dXJlVHlwZTNEOworICAgIH0KK30KKworUmVm
UHRyPEdQVVRleHR1cmU+IEdQVVRleHR1cmU6OnRyeUNyZWF0ZVRleHR1cmVWaWV3KGNvbnN0IEdQ
VVRleHR1cmVWaWV3RGVzY3JpcHRvciYgdmlld0Rlc2NyaXB0b3IpCit7CisgICAgUmV0YWluUHRy
PE1UTFRleHR1cmU+IHRleHR1cmU7CisKKyAgICBpZiAodmlld0Rlc2NyaXB0b3IuYXNwZWN0ICE9
IEdQVVRleHR1cmVBc3BlY3Q6OkFsbCkgeworICAgICAgICBMT0coV2ViR1BVLCAiR1BVVGV4dHVy
ZTo6dHJ5Q3JlYXRlVGV4dHVyZVZpZXcoKTogR1BVVGV4dHVyZUFzcGVjdHMgYXJlIG5vdCBpbXBs
ZW1lbnRlZCB5ZXQhIik7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIGF1
dG8gcGl4ZWxGb3JtYXQgPSBjYWxjdWxhdGVWaWV3UGl4ZWxGb3JtYXQobV9mb3JtYXQsIHZpZXdE
ZXNjcmlwdG9yLmZvcm1hdCk7CisgICAgaWYgKCFwaXhlbEZvcm1hdCkgeworICAgICAgICBMT0co
V2ViR1BVLCAiR1BVVGV4dHVyZTo6dHJ5Q3JlYXRlVGV4dHVyZVZpZXcoKTogSW52YWxpZCBwaXhl
bEZvcm1hdCEiKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorICAgIGF1dG8gbWV0
YWxQaXhlbEZvcm1hdCA9IHN0YXRpY19jYXN0PE1UTFBpeGVsRm9ybWF0PihwbGF0Zm9ybVRleHR1
cmVGb3JtYXRGb3JHUFVUZXh0dXJlRm9ybWF0KHBpeGVsRm9ybWF0LnZhbHVlKCkpKTsKKworICAg
IGF1dG8gbGV2ZWxzID0gY2FsY3VsYXRlTGV2ZWxzKG1fcGxhdGZvcm1UZXh0dXJlLmdldCgpLm1p
cG1hcExldmVsQ291bnQsIHZpZXdEZXNjcmlwdG9yLmJhc2VNaXBMZXZlbCwgdmlld0Rlc2NyaXB0
b3IubWlwTGV2ZWxDb3VudCk7CisgICAgaWYgKCFsZXZlbHMpIHsKKyAgICAgICAgTE9HKFdlYkdQ
VSwgIkdQVVRleHR1cmU6OnRyeUNyZWF0ZVRleHR1cmVWaWV3KCk6IEludmFsaWQgbGV2ZWxzISIp
OworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICBhdXRvIHNsaWNlcyA9IGNh
bGN1bGF0ZVNsaWNlcyhtX3BsYXRmb3JtVGV4dHVyZS5nZXQoKS5hcnJheUxlbmd0aCwgdmlld0Rl
c2NyaXB0b3IuYmFzZUFycmF5TGF5ZXIsIHZpZXdEZXNjcmlwdG9yLmFycmF5TGF5ZXJDb3VudCk7
CisgICAgaWYgKCFzbGljZXMpIHsKKyAgICAgICAgTE9HKFdlYkdQVSwgIkdQVVRleHR1cmU6OnRy
eUNyZWF0ZVRleHR1cmVWaWV3KCk6IEludmFsaWQgc2xpY2VzISIpOworICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICB9CisKKyAgICBhdXRvIHRleHR1cmVUeXBlID0gY2FsY3VsYXRlTWV0YWxU
ZXh0dXJlVHlwZShtX2RpbWVuc2lvbiwgbV9wbGF0Zm9ybVRleHR1cmUuZ2V0KCkuc2FtcGxlQ291
bnQsIHZpZXdEZXNjcmlwdG9yLmRpbWVuc2lvbiwgc2xpY2VzLT5sZW5ndGgpOworICAgIGlmICgh
dGV4dHVyZVR5cGUpIHsKKyAgICAgICAgTE9HKFdlYkdQVSwgIkdQVVRleHR1cmU6OnRyeUNyZWF0
ZVRleHR1cmVWaWV3KCk6IEludmFsaWQgdGV4dHVyZVR5cGUhIik7CisgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgIH0KKworICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKKworICAg
IHRleHR1cmUgPSBhZG9wdE5TKFttX3BsYXRmb3JtVGV4dHVyZSBuZXdUZXh0dXJlVmlld1dpdGhQ
aXhlbEZvcm1hdDptZXRhbFBpeGVsRm9ybWF0IHRleHR1cmVUeXBlOnRleHR1cmVUeXBlLnZhbHVl
KCkgbGV2ZWxzOmxldmVscy52YWx1ZSgpIHNsaWNlczpzbGljZXMudmFsdWUoKV0pOworCisgICAg
RU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKKworICAgIGlmICghdGV4dHVyZSkgeworICAgICAg
ICBMT0coV2ViR1BVLCAiR1BVVGV4dHVyZTo6dHJ5Q3JlYXRlVGV4dHVyZVZpZXcoKTogVW5hYmxl
IHRvIGNyZWF0ZSBNVExUZXh0dXJlIHZpZXchIik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgIH0KIAotICAgIHJldHVybiBHUFVUZXh0dXJlOjpjcmVhdGUoV1RGTW92ZSh0ZXh0dXJlKSwg
bV91c2FnZSk7CisgICAgcmV0dXJuIEdQVVRleHR1cmU6OmNyZWF0ZShXVEZNb3ZlKHRleHR1cmUp
LCBwaXhlbEZvcm1hdC52YWx1ZSgpLCBtX2RpbWVuc2lvbiwgbV91c2FnZSk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUK
</data>

          </attachment>
      

    </bug>

</bugzilla>