<?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>202965</bug_id>
          
          <creation_ts>2019-10-14 20:20:05 -0700</creation_ts>
          <short_desc>[LFC] Adjust computed height value when box sizing is border-box</short_desc>
          <delta_ts>2019-10-15 07:47:19 -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>Layout and Rendering</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="alan">zalan</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>koivisto</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1579959</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2019-10-14 20:20:05 -0700</bug_when>
    <thetext>ssia</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1579962</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-10-14 20:25:36 -0700</bug_when>
    <thetext>&lt;rdar://problem/56276771&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1579965</commentid>
    <comment_count>2</comment_count>
      <attachid>380953</attachid>
    <who name="alan">zalan</who>
    <bug_when>2019-10-14 20:29:09 -0700</bug_when>
    <thetext>Created attachment 380953
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1580095</commentid>
    <comment_count>3</comment_count>
      <attachid>380953</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-10-15 07:47:17 -0700</bug_when>
    <thetext>Comment on attachment 380953
Patch

Clearing flags on attachment: 380953

Committed r251135: &lt;https://trac.webkit.org/changeset/251135&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1580096</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-10-15 07:47:19 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380953</attachid>
            <date>2019-10-14 20:29:09 -0700</date>
            <delta_ts>2019-10-15 07:47:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202965-20191014202907.patch</filename>
            <type>text/plain</type>
            <size>64766</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxMTE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzY3ODlmNGZiYjMzMjc3
YTI2MWQxOGRhMTAwNWY4Zjk4YmY5ZGY3Ni4uMmVjNDhlYWJlMDE0ZjkxYzkxYWRlM2FjMzc0NWM5
ZTc1NGJiZDNhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDE5LTEwLTE0ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ10gQWRqdXN0IGNvbXB1
dGVkIGhlaWdodCB2YWx1ZSB3aGVuIGJveCBzaXppbmcgaXMgYm9yZGVyLWJveAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyOTY1CisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS81NjI3Njc3MT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OyBtZWFucyB0aGUgaGVpZ2h0
IHZhbHVlIHNldHMgdGhlIHNpemUgb2YgdGhlIGJvcmRlciBib3ggKGFuZCBub3QgdGhlIGNvbnRl
bnQgYm94KS4gIAorCisgICAgICAgICogbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVPdXRPZkZs
b3dIb3Jpem9udGFsR2VvbWV0cnkpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0
aW5nQ29udGV4dDo6Y29tcHV0ZU91dE9mRmxvd1ZlcnRpY2FsR2VvbWV0cnkpOgorICAgICAgICAq
IGxheW91dC9Gb3JtYXR0aW5nQ29udGV4dC5oOgorICAgICAgICAqIGxheW91dC9Gb3JtYXR0aW5n
Q29udGV4dEdlb21ldHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGlu
Z0NvbnRleHQ6Okdlb21ldHJ5Ojpjb21wdXRlZENvbnRlbnRIZWlnaHQgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Om91dE9mRmxv
d05vblJlcGxhY2VkVmVydGljYWxHZW9tZXRyeSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpM
YXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6b3V0T2ZGbG93UmVwbGFjZWRWZXJ0
aWNhbEdlb21ldHJ5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGlu
Z0NvbnRleHQ6Okdlb21ldHJ5OjpvdXRPZkZsb3dSZXBsYWNlZEhvcml6b250YWxHZW9tZXRyeSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0OjpHZW9t
ZXRyeTo6Y29tcGxpY2F0ZWRDYXNlcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6
OkZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6ZmxvYXRpbmdOb25SZXBsYWNlZFdpZHRoQW5k
TWFyZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6Okdl
b21ldHJ5OjpmbG9hdGluZ1JlcGxhY2VkSGVpZ2h0QW5kTWFyZ2luIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpmbG9hdGluZ1Jl
cGxhY2VkV2lkdGhBbmRNYXJnaW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpG
b3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmZsb2F0aW5nSGVpZ2h0QW5kTWFyZ2luIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5
OjpmbG9hdGluZ1dpZHRoQW5kTWFyZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9y
bWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbmxpbmVSZXBsYWNlZEhlaWdodEFuZE1hcmdpbiBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0OjpHZW9t
ZXRyeTo6aW5saW5lUmVwbGFjZWRXaWR0aEFuZE1hcmdpbiBjb25zdCk6CisgICAgICAgICogbGF5
b3V0L0xheW91dFN0YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGF5b3V0U3Rh
dGU6OmRpc3BsYXlCb3hGb3JMYXlvdXRCb3gpOgorICAgICAgICAqIGxheW91dC9MYXlvdXRVbml0
cy5oOgorICAgICAgICAqIGxheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29u
dGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRl
eHQ6OmNvbXB1dGVXaWR0aEFuZE1hcmdpbik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJs
b2NrRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVIZWlnaHRBbmRNYXJnaW4pOgorICAgICAgICAq
IGxheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5oOgorICAgICAg
ICAqIGxheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6
R2VvbWV0cnk6OmluRmxvd05vblJlcGxhY2VkSGVpZ2h0QW5kTWFyZ2luKToKKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmluRmxvd05v
blJlcGxhY2VkV2lkdGhBbmRNYXJnaW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0
OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5GbG93UmVwbGFjZWRXaWR0aEFu
ZE1hcmdpbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGlu
Z0NvbnRleHQ6Okdlb21ldHJ5OjppbkZsb3dIZWlnaHRBbmRNYXJnaW4pOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5GbG93V2lk
dGhBbmRNYXJnaW4pOgorICAgICAgICAqIGxheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3Jt
YXR0aW5nQ29udGV4dFF1aXJrcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2Nr
Rm9ybWF0dGluZ0NvbnRleHQ6OlF1aXJrczo6c3RyZXRjaGVkSW5GbG93SGVpZ2h0KToKKyAgICAg
ICAgKiBsYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheUJveC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5OjpCb3g6OkJveCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpCb3g6OlN0
eWxlOjpTdHlsZSk6IERlbGV0ZWQuCisgICAgICAgICogbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3Bs
YXlCb3guaDoKKyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0
aW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZUZvcm1hdHRp
bmdDb250ZXh0Ojpjb21wdXRlV2lkdGhBbmRNYXJnaW4pOgorICAgICAgICAoV2ViQ29yZTo6TGF5
b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZUhlaWdodEFuZE1hcmdpbik6Cisg
ICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQu
aDoKKyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29u
dGV4dEdlb21ldHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0
dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbmxpbmVCbG9ja1dpZHRoQW5kTWFyZ2luKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5Ojpp
bmxpbmVCbG9ja0hlaWdodEFuZE1hcmdpbiBjb25zdCk6CisgICAgICAgICogbGF5b3V0L3RhYmxl
Zm9ybWF0dGluZy9UYWJsZUZvcm1hdHRpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dDo6VGFibGVGb3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0VGFibGVDZWxsQm94KToKKyAg
ICAgICAgKiBsYXlvdXQvdGFibGVmb3JtYXR0aW5nL1RhYmxlRm9ybWF0dGluZ0NvbnRleHQuaDoK
KyAgICAgICAgKiBsYXlvdXQvdGFibGVmb3JtYXR0aW5nL1RhYmxlRm9ybWF0dGluZ0NvbnRleHRH
ZW9tZXRyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlRhYmxlRm9ybWF0dGluZ0Nv
bnRleHQ6Okdlb21ldHJ5Ojp0YWJsZUNlbGxIZWlnaHRBbmRNYXJnaW4gY29uc3QpOgorCiAyMDE5
LTEwLTE0ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIERlcGxv
eSBzbWFydCBwb2ludGVycyBpbiBSYWRpb0J1dHRvbkdyb3VwcyBhbmQgUmFkaW9CdXR0b25Hcm91
cApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dC5jcHAKaW5kZXggYmI1
NDBiNDdkNzBjZjU2MWExOGVmNmIzZDczZTY3OTY3NDg5OGZlYy4uMzlhZmVlYTE1MzI0NDdkZjY4
MGI4NTJkYzQ1Y2Q0NjI1Y2E0MDgzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L0Zvcm1hdHRpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0
dGluZ0NvbnRleHQuY3BwCkBAIC04OSwyMSArODksMjEgQEAgdm9pZCBGb3JtYXR0aW5nQ29udGV4
dDo6Y29tcHV0ZU91dE9mRmxvd0hvcml6b250YWxHZW9tZXRyeShjb25zdCBCb3gmIGxheW91dEJv
eCkKICAgICBhdXRvIGhvcml6b250YWxHZW9tZXRyeSA9IGNvbXB1dGUoeyB9KTsKICAgICBpZiAo
YXV0byBtYXhXaWR0aCA9IGdlb21ldHJ5KCkuY29tcHV0ZWRWYWx1ZUlmTm90QXV0byhsYXlvdXRC
b3guc3R5bGUoKS5sb2dpY2FsTWF4V2lkdGgoKSwgY29udGFpbmluZ0Jsb2NrV2lkdGgpKSB7CiAg
ICAgICAgIGF1dG8gbWF4SG9yaXpvbnRhbEdlb21ldHJ5ID0gY29tcHV0ZShtYXhXaWR0aCk7Ci0g
ICAgICAgIGlmIChob3Jpem9udGFsR2VvbWV0cnkud2lkdGhBbmRNYXJnaW4ud2lkdGggPiBtYXhI
b3Jpem9udGFsR2VvbWV0cnkud2lkdGhBbmRNYXJnaW4ud2lkdGgpCisgICAgICAgIGlmIChob3Jp
em9udGFsR2VvbWV0cnkuY29udGVudFdpZHRoQW5kTWFyZ2luLmNvbnRlbnRXaWR0aCA+IG1heEhv
cml6b250YWxHZW9tZXRyeS5jb250ZW50V2lkdGhBbmRNYXJnaW4uY29udGVudFdpZHRoKQogICAg
ICAgICAgICAgaG9yaXpvbnRhbEdlb21ldHJ5ID0gbWF4SG9yaXpvbnRhbEdlb21ldHJ5OwogICAg
IH0KIAogICAgIGlmIChhdXRvIG1pbldpZHRoID0gZ2VvbWV0cnkoKS5jb21wdXRlZFZhbHVlSWZO
b3RBdXRvKGxheW91dEJveC5zdHlsZSgpLmxvZ2ljYWxNaW5XaWR0aCgpLCBjb250YWluaW5nQmxv
Y2tXaWR0aCkpIHsKICAgICAgICAgYXV0byBtaW5Ib3Jpem9udGFsR2VvbWV0cnkgPSBjb21wdXRl
KG1pbldpZHRoKTsKLSAgICAgICAgaWYgKGhvcml6b250YWxHZW9tZXRyeS53aWR0aEFuZE1hcmdp
bi53aWR0aCA8IG1pbkhvcml6b250YWxHZW9tZXRyeS53aWR0aEFuZE1hcmdpbi53aWR0aCkKKyAg
ICAgICAgaWYgKGhvcml6b250YWxHZW9tZXRyeS5jb250ZW50V2lkdGhBbmRNYXJnaW4uY29udGVu
dFdpZHRoIDwgbWluSG9yaXpvbnRhbEdlb21ldHJ5LmNvbnRlbnRXaWR0aEFuZE1hcmdpbi5jb250
ZW50V2lkdGgpCiAgICAgICAgICAgICBob3Jpem9udGFsR2VvbWV0cnkgPSBtaW5Ib3Jpem9udGFs
R2VvbWV0cnk7CiAgICAgfQogCiAgICAgYXV0byYgZGlzcGxheUJveCA9IGZvcm1hdHRpbmdTdGF0
ZSgpLmRpc3BsYXlCb3gobGF5b3V0Qm94KTsKLSAgICBkaXNwbGF5Qm94LnNldExlZnQoaG9yaXpv
bnRhbEdlb21ldHJ5LmxlZnQgKyBob3Jpem9udGFsR2VvbWV0cnkud2lkdGhBbmRNYXJnaW4udXNl
ZE1hcmdpbi5zdGFydCk7Ci0gICAgZGlzcGxheUJveC5zZXRDb250ZW50Qm94V2lkdGgoaG9yaXpv
bnRhbEdlb21ldHJ5LndpZHRoQW5kTWFyZ2luLndpZHRoKTsKLSAgICBkaXNwbGF5Qm94LnNldEhv
cml6b250YWxNYXJnaW4oaG9yaXpvbnRhbEdlb21ldHJ5LndpZHRoQW5kTWFyZ2luLnVzZWRNYXJn
aW4pOwotICAgIGRpc3BsYXlCb3guc2V0SG9yaXpvbnRhbENvbXB1dGVkTWFyZ2luKGhvcml6b250
YWxHZW9tZXRyeS53aWR0aEFuZE1hcmdpbi5jb21wdXRlZE1hcmdpbik7CisgICAgZGlzcGxheUJv
eC5zZXRMZWZ0KGhvcml6b250YWxHZW9tZXRyeS5sZWZ0ICsgaG9yaXpvbnRhbEdlb21ldHJ5LmNv
bnRlbnRXaWR0aEFuZE1hcmdpbi51c2VkTWFyZ2luLnN0YXJ0KTsKKyAgICBkaXNwbGF5Qm94LnNl
dENvbnRlbnRCb3hXaWR0aChob3Jpem9udGFsR2VvbWV0cnkuY29udGVudFdpZHRoQW5kTWFyZ2lu
LmNvbnRlbnRXaWR0aCk7CisgICAgZGlzcGxheUJveC5zZXRIb3Jpem9udGFsTWFyZ2luKGhvcml6
b250YWxHZW9tZXRyeS5jb250ZW50V2lkdGhBbmRNYXJnaW4udXNlZE1hcmdpbik7CisgICAgZGlz
cGxheUJveC5zZXRIb3Jpem9udGFsQ29tcHV0ZWRNYXJnaW4oaG9yaXpvbnRhbEdlb21ldHJ5LmNv
bnRlbnRXaWR0aEFuZE1hcmdpbi5jb21wdXRlZE1hcmdpbik7CiB9CiAKIHZvaWQgRm9ybWF0dGlu
Z0NvbnRleHQ6OmNvbXB1dGVPdXRPZkZsb3dWZXJ0aWNhbEdlb21ldHJ5KGNvbnN0IEJveCYgbGF5
b3V0Qm94KQpAQCAtMTIxLDIxICsxMjEsMjEgQEAgdm9pZCBGb3JtYXR0aW5nQ29udGV4dDo6Y29t
cHV0ZU91dE9mRmxvd1ZlcnRpY2FsR2VvbWV0cnkoY29uc3QgQm94JiBsYXlvdXRCb3gpCiAgICAg
aWYgKGF1dG8gbWF4SGVpZ2h0ID0gZ2VvbWV0cnkoKS5jb21wdXRlZE1heEhlaWdodChsYXlvdXRC
b3gsIGNvbnRhaW5pbmdCbG9ja0hlaWdodCkpIHsKICAgICAgICAgYXV0byB1c2VkVmFsdWVzRm9y
TWF4SGVpZ2h0ID0gVXNlZFZlcnRpY2FsVmFsdWVzIHsgb3V0T2ZGbG93VmVydGljYWxDb25zdHJh
aW50cyhjb250YWluaW5nQmxvY2tHZW9tZXRyeSksIG1heEhlaWdodCB9OwogICAgICAgICBhdXRv
IG1heFZlcnRpY2FsR2VvbWV0cnkgPSBjb21wdXRlKHVzZWRIb3Jpem9udGFsVmFsdWVzLCB1c2Vk
VmFsdWVzRm9yTWF4SGVpZ2h0KTsKLSAgICAgICAgaWYgKHZlcnRpY2FsR2VvbWV0cnkuaGVpZ2h0
QW5kTWFyZ2luLmhlaWdodCA+IG1heFZlcnRpY2FsR2VvbWV0cnkuaGVpZ2h0QW5kTWFyZ2luLmhl
aWdodCkKKyAgICAgICAgaWYgKHZlcnRpY2FsR2VvbWV0cnkuY29udGVudEhlaWdodEFuZE1hcmdp
bi5jb250ZW50SGVpZ2h0ID4gbWF4VmVydGljYWxHZW9tZXRyeS5jb250ZW50SGVpZ2h0QW5kTWFy
Z2luLmNvbnRlbnRIZWlnaHQpCiAgICAgICAgICAgICB2ZXJ0aWNhbEdlb21ldHJ5ID0gbWF4VmVy
dGljYWxHZW9tZXRyeTsKICAgICB9CiAKICAgICBpZiAoYXV0byBtaW5IZWlnaHQgPSBnZW9tZXRy
eSgpLmNvbXB1dGVkTWluSGVpZ2h0KGxheW91dEJveCwgY29udGFpbmluZ0Jsb2NrSGVpZ2h0KSkg
ewogICAgICAgICBhdXRvIHVzZWRWYWx1ZXNGb3JNaW5IZWlnaHQgPSBVc2VkVmVydGljYWxWYWx1
ZXMgeyBvdXRPZkZsb3dWZXJ0aWNhbENvbnN0cmFpbnRzKGNvbnRhaW5pbmdCbG9ja0dlb21ldHJ5
KSwgbWluSGVpZ2h0IH07CiAgICAgICAgIGF1dG8gbWluVmVydGljYWxHZW9tZXRyeSA9IGNvbXB1
dGUodXNlZEhvcml6b250YWxWYWx1ZXMsIHVzZWRWYWx1ZXNGb3JNaW5IZWlnaHQpOwotICAgICAg
ICBpZiAodmVydGljYWxHZW9tZXRyeS5oZWlnaHRBbmRNYXJnaW4uaGVpZ2h0IDwgbWluVmVydGlj
YWxHZW9tZXRyeS5oZWlnaHRBbmRNYXJnaW4uaGVpZ2h0KQorICAgICAgICBpZiAodmVydGljYWxH
ZW9tZXRyeS5jb250ZW50SGVpZ2h0QW5kTWFyZ2luLmNvbnRlbnRIZWlnaHQgPCBtaW5WZXJ0aWNh
bEdlb21ldHJ5LmNvbnRlbnRIZWlnaHRBbmRNYXJnaW4uY29udGVudEhlaWdodCkKICAgICAgICAg
ICAgIHZlcnRpY2FsR2VvbWV0cnkgPSBtaW5WZXJ0aWNhbEdlb21ldHJ5OwogICAgIH0KIAogICAg
IGF1dG8mIGRpc3BsYXlCb3ggPSBmb3JtYXR0aW5nU3RhdGUoKS5kaXNwbGF5Qm94KGxheW91dEJv
eCk7Ci0gICAgYXV0byBub25Db2xsYXBzZWRWZXJ0aWNhbE1hcmdpbiA9IHZlcnRpY2FsR2VvbWV0
cnkuaGVpZ2h0QW5kTWFyZ2luLm5vbkNvbGxhcHNlZE1hcmdpbjsKKyAgICBhdXRvIG5vbkNvbGxh
cHNlZFZlcnRpY2FsTWFyZ2luID0gdmVydGljYWxHZW9tZXRyeS5jb250ZW50SGVpZ2h0QW5kTWFy
Z2luLm5vbkNvbGxhcHNlZE1hcmdpbjsKICAgICBkaXNwbGF5Qm94LnNldFRvcCh2ZXJ0aWNhbEdl
b21ldHJ5LnRvcCArIG5vbkNvbGxhcHNlZFZlcnRpY2FsTWFyZ2luLmJlZm9yZSk7Ci0gICAgZGlz
cGxheUJveC5zZXRDb250ZW50Qm94SGVpZ2h0KHZlcnRpY2FsR2VvbWV0cnkuaGVpZ2h0QW5kTWFy
Z2luLmhlaWdodCk7CisgICAgZGlzcGxheUJveC5zZXRDb250ZW50Qm94SGVpZ2h0KHZlcnRpY2Fs
R2VvbWV0cnkuY29udGVudEhlaWdodEFuZE1hcmdpbi5jb250ZW50SGVpZ2h0KTsKICAgICAvLyBN
YXJnaW5zIG9mIGFic29sdXRlbHkgcG9zaXRpb25lZCBib3hlcyBkbyBub3QgY29sbGFwc2UKICAg
ICBkaXNwbGF5Qm94LnNldFZlcnRpY2FsTWFyZ2luKHsgbm9uQ29sbGFwc2VkVmVydGljYWxNYXJn
aW4sIHsgfSB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0
aW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0LmgK
aW5kZXggNTE2ZjEwMTJjMTdiYjBmZjkyMGEyNzU1NjYyY2RjNGM1MTYxYzhlYS4uZDAyYzhjMjE0
M2I5MjUwMzZjYjFjMWE1Y2RkNDQ4ZmM5ZTMwMDE5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L0Zvcm1hdHRpbmdDb250ZXh0LmgKQEAgLTUwLDEyICs1MCwxMiBAQCBjbGFzcyBMYXlvdXRTdGF0
ZTsKIHN0cnVjdCBDb21wdXRlZEhvcml6b250YWxNYXJnaW47CiBzdHJ1Y3QgQ29tcHV0ZWRWZXJ0
aWNhbE1hcmdpbjsKIHN0cnVjdCBFZGdlczsKLXN0cnVjdCBIZWlnaHRBbmRNYXJnaW47CitzdHJ1
Y3QgQ29udGVudEhlaWdodEFuZE1hcmdpbjsKIHN0cnVjdCBIb3Jpem9udGFsR2VvbWV0cnk7CiBz
dHJ1Y3QgVXNlZEhvcml6b250YWxWYWx1ZXM7CiBzdHJ1Y3QgVXNlZFZlcnRpY2FsVmFsdWVzOwog
c3RydWN0IFZlcnRpY2FsR2VvbWV0cnk7Ci1zdHJ1Y3QgV2lkdGhBbmRNYXJnaW47CitzdHJ1Y3Qg
Q29udGVudFdpZHRoQW5kTWFyZ2luOwogCiBjbGFzcyBGb3JtYXR0aW5nQ29udGV4dCB7CiAgICAg
V1RGX01BS0VfSVNPX0FMTE9DQVRFRChGb3JtYXR0aW5nQ29udGV4dCk7CkBAIC0xMTAsMTUgKzEx
MCwxNSBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIFZlcnRpY2FsR2VvbWV0cnkgb3V0T2ZGbG93VmVy
dGljYWxHZW9tZXRyeShjb25zdCBCb3gmLCBVc2VkSG9yaXpvbnRhbFZhbHVlcywgVXNlZFZlcnRp
Y2FsVmFsdWVzKSBjb25zdDsKICAgICAgICAgSG9yaXpvbnRhbEdlb21ldHJ5IG91dE9mRmxvd0hv
cml6b250YWxHZW9tZXRyeShjb25zdCBCb3gmLCBVc2VkSG9yaXpvbnRhbFZhbHVlcywgVXNlZFZl
cnRpY2FsVmFsdWVzKTsKIAotICAgICAgICBIZWlnaHRBbmRNYXJnaW4gZmxvYXRpbmdIZWlnaHRB
bmRNYXJnaW4oY29uc3QgQm94JiwgVXNlZEhvcml6b250YWxWYWx1ZXMsIFVzZWRWZXJ0aWNhbFZh
bHVlcykgY29uc3Q7Ci0gICAgICAgIFdpZHRoQW5kTWFyZ2luIGZsb2F0aW5nV2lkdGhBbmRNYXJn
aW4oY29uc3QgQm94JiwgVXNlZEhvcml6b250YWxWYWx1ZXMpOworICAgICAgICBDb250ZW50SGVp
Z2h0QW5kTWFyZ2luIGZsb2F0aW5nSGVpZ2h0QW5kTWFyZ2luKGNvbnN0IEJveCYsIFVzZWRIb3Jp
em9udGFsVmFsdWVzLCBVc2VkVmVydGljYWxWYWx1ZXMpIGNvbnN0OworICAgICAgICBDb250ZW50
V2lkdGhBbmRNYXJnaW4gZmxvYXRpbmdXaWR0aEFuZE1hcmdpbihjb25zdCBCb3gmLCBVc2VkSG9y
aXpvbnRhbFZhbHVlcyk7CiAKLSAgICAgICAgSGVpZ2h0QW5kTWFyZ2luIGlubGluZVJlcGxhY2Vk
SGVpZ2h0QW5kTWFyZ2luKGNvbnN0IEJveCYsIFVzZWRIb3Jpem9udGFsVmFsdWVzLCBVc2VkVmVy
dGljYWxWYWx1ZXMpIGNvbnN0OwotICAgICAgICBXaWR0aEFuZE1hcmdpbiBpbmxpbmVSZXBsYWNl
ZFdpZHRoQW5kTWFyZ2luKGNvbnN0IEJveCYsIFVzZWRIb3Jpem9udGFsVmFsdWVzLCBPcHRpb25h
bDxVc2VkVmVydGljYWxWYWx1ZXM+ID0gV1RGOjpudWxsb3B0KSBjb25zdDsKKyAgICAgICAgQ29u
dGVudEhlaWdodEFuZE1hcmdpbiBpbmxpbmVSZXBsYWNlZEhlaWdodEFuZE1hcmdpbihjb25zdCBC
b3gmLCBVc2VkSG9yaXpvbnRhbFZhbHVlcywgVXNlZFZlcnRpY2FsVmFsdWVzKSBjb25zdDsKKyAg
ICAgICAgQ29udGVudFdpZHRoQW5kTWFyZ2luIGlubGluZVJlcGxhY2VkV2lkdGhBbmRNYXJnaW4o
Y29uc3QgQm94JiwgVXNlZEhvcml6b250YWxWYWx1ZXMsIE9wdGlvbmFsPFVzZWRWZXJ0aWNhbFZh
bHVlcz4gPSBXVEY6Om51bGxvcHQpIGNvbnN0OwogCiAgICAgICAgIExheW91dFNpemUgaW5GbG93
UG9zaXRpb25lZFBvc2l0aW9uT2Zmc2V0KGNvbnN0IEJveCYsIFVzZWRIb3Jpem9udGFsVmFsdWVz
KSBjb25zdDsKIAotICAgICAgICBIZWlnaHRBbmRNYXJnaW4gY29tcGxpY2F0ZWRDYXNlcyhjb25z
dCBCb3gmLCBVc2VkSG9yaXpvbnRhbFZhbHVlcywgVXNlZFZlcnRpY2FsVmFsdWVzKSBjb25zdDsK
KyAgICAgICAgQ29udGVudEhlaWdodEFuZE1hcmdpbiBjb21wbGljYXRlZENhc2VzKGNvbnN0IEJv
eCYsIFVzZWRIb3Jpem9udGFsVmFsdWVzLCBVc2VkVmVydGljYWxWYWx1ZXMpIGNvbnN0OwogICAg
ICAgICBMYXlvdXRVbml0IHNocmlua1RvRml0V2lkdGgoY29uc3QgQm94JiwgTGF5b3V0VW5pdCBh
dmFpbGFibGVXaWR0aCk7CiAKICAgICAgICAgRWRnZXMgY29tcHV0ZWRCb3JkZXIoY29uc3QgQm94
JikgY29uc3Q7CkBAIC0xNDIsNyArMTQyLDggQEAgcHJvdGVjdGVkOgogICAgICAgICBHZW9tZXRy
eShjb25zdCBGb3JtYXR0aW5nQ29udGV4dCYpOwogCiAgICAgICAgIGVudW0gY2xhc3MgSGVpZ2h0
VHlwZSB7IE1pbiwgTWF4LCBOb3JtYWwgfTsKLSAgICAgICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4g
Y29tcHV0ZWRIZWlnaHRWYWx1ZShjb25zdCBCb3gmLCBIZWlnaHRUeXBlLCBPcHRpb25hbDxMYXlv
dXRVbml0PiBjb250YWluaW5nQmxvY2tIZWlnaHQgPSBXVEY6Om51bGxvcHQpIGNvbnN0OworICAg
ICAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBjb21wdXRlZEhlaWdodFZhbHVlKGNvbnN0IEJveCYs
IEhlaWdodFR5cGUsIE9wdGlvbmFsPExheW91dFVuaXQ+IGNvbnRhaW5pbmdCbG9ja0hlaWdodCkg
Y29uc3Q7CisgICAgICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IGNvbXB1dGVkQ29udGVudEhlaWdo
dChjb25zdCBCb3gmLCBPcHRpb25hbDxMYXlvdXRVbml0PiBjb250YWluaW5nQmxvY2tIZWlnaHQg
PSBXVEY6Om51bGxvcHQpIGNvbnN0OwogCiAgICAgICAgIGNvbnN0IExheW91dFN0YXRlJiBsYXlv
dXRTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZm9ybWF0dGluZ0NvbnRleHQubGF5b3V0U3RhdGUo
KTsgfQogICAgICAgICBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUoKSB7IHJldHVybiBtX2Zvcm1h
dHRpbmdDb250ZXh0LmxheW91dFN0YXRlKCk7IH0KQEAgLTE1NSwxMCArMTU2LDEwIEBAIHByb3Rl
Y3RlZDoKICAgICAgICAgVmVydGljYWxHZW9tZXRyeSBvdXRPZkZsb3dOb25SZXBsYWNlZFZlcnRp
Y2FsR2VvbWV0cnkoY29uc3QgQm94JiwgVXNlZEhvcml6b250YWxWYWx1ZXMsIFVzZWRWZXJ0aWNh
bFZhbHVlcykgY29uc3Q7CiAgICAgICAgIEhvcml6b250YWxHZW9tZXRyeSBvdXRPZkZsb3dOb25S
ZXBsYWNlZEhvcml6b250YWxHZW9tZXRyeShjb25zdCBCb3gmLCBVc2VkSG9yaXpvbnRhbFZhbHVl
cyk7CiAKLSAgICAgICAgSGVpZ2h0QW5kTWFyZ2luIGZsb2F0aW5nUmVwbGFjZWRIZWlnaHRBbmRN
YXJnaW4oY29uc3QgQm94JiwgVXNlZEhvcml6b250YWxWYWx1ZXMsIFVzZWRWZXJ0aWNhbFZhbHVl
cykgY29uc3Q7Ci0gICAgICAgIFdpZHRoQW5kTWFyZ2luIGZsb2F0aW5nUmVwbGFjZWRXaWR0aEFu
ZE1hcmdpbihjb25zdCBCb3gmLCBVc2VkSG9yaXpvbnRhbFZhbHVlcykgY29uc3Q7CisgICAgICAg
IENvbnRlbnRIZWlnaHRBbmRNYXJnaW4gZmxvYXRpbmdSZXBsYWNlZEhlaWdodEFuZE1hcmdpbihj
b25zdCBCb3gmLCBVc2VkSG9yaXpvbnRhbFZhbHVlcywgVXNlZFZlcnRpY2FsVmFsdWVzKSBjb25z
dDsKKyAgICAgICAgQ29udGVudFdpZHRoQW5kTWFyZ2luIGZsb2F0aW5nUmVwbGFjZWRXaWR0aEFu
ZE1hcmdpbihjb25zdCBCb3gmLCBVc2VkSG9yaXpvbnRhbFZhbHVlcykgY29uc3Q7CiAKLSAgICAg
ICAgV2lkdGhBbmRNYXJnaW4gZmxvYXRpbmdOb25SZXBsYWNlZFdpZHRoQW5kTWFyZ2luKGNvbnN0
IEJveCYsIFVzZWRIb3Jpem9udGFsVmFsdWVzKTsKKyAgICAgICAgQ29udGVudFdpZHRoQW5kTWFy
Z2luIGZsb2F0aW5nTm9uUmVwbGFjZWRXaWR0aEFuZE1hcmdpbihjb25zdCBCb3gmLCBVc2VkSG9y
aXpvbnRhbFZhbHVlcyk7CiAKICAgICAgICAgTGF5b3V0VW5pdCBzdGF0aWNWZXJ0aWNhbFBvc2l0
aW9uRm9yT3V0T2ZGbG93UG9zaXRpb25lZChjb25zdCBCb3gmLCBVc2VkVmVydGljYWxWYWx1ZXMp
IGNvbnN0OwogICAgICAgICBMYXlvdXRVbml0IHN0YXRpY0hvcml6b250YWxQb3NpdGlvbkZvck91
dE9mRmxvd1Bvc2l0aW9uZWQoY29uc3QgQm94JiwgVXNlZEhvcml6b250YWxWYWx1ZXMpIGNvbnN0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0R2Vv
bWV0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0
cnkuY3BwCmluZGV4IDg4OTI0ODM1NDMwMTBkNmM3NTY2NzBlNjdhNzczZTFhNDYzODE5YmEuLmY1
NzZkNTYzNWE2YjUxYmVmODFhOGM5NWI0OGVlZDg0ZjQ5OWYwMWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAKQEAgLTg1LDYg
Kzg1LDE3IEBAIE9wdGlvbmFsPExheW91dFVuaXQ+IEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRy
eTo6Y29tcHV0ZWRIZWlnaHRWYWx1ZShjb25zdCBCb3gmCiAgICAgcmV0dXJuIHZhbHVlRm9yTGVu
Z3RoKGhlaWdodCwgKmNvbnRhaW5pbmdCbG9ja0hlaWdodCk7CiB9CiAKK09wdGlvbmFsPExheW91
dFVuaXQ+IEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6Y29tcHV0ZWRDb250ZW50SGVpZ2h0
KGNvbnN0IEJveCYgbGF5b3V0Qm94LCBPcHRpb25hbDxMYXlvdXRVbml0PiBjb250YWluaW5nQmxv
Y2tIZWlnaHQpIGNvbnN0Cit7CisgICAgaWYgKGF1dG8gaGVpZ2h0ID0gY29tcHV0ZWRIZWlnaHRW
YWx1ZShsYXlvdXRCb3gsIEhlaWdodFR5cGU6Ok5vcm1hbCwgY29udGFpbmluZ0Jsb2NrSGVpZ2h0
KSkgeworICAgICAgICBpZiAobGF5b3V0Qm94LnN0eWxlKCkuYm94U2l6aW5nKCkgPT0gQm94U2l6
aW5nOjpDb250ZW50Qm94KQorICAgICAgICAgICAgcmV0dXJuIGhlaWdodDsKKyAgICAgICAgYXV0
byYgYm94R2VvbWV0cnkgPSBmb3JtYXR0aW5nQ29udGV4dCgpLmdlb21ldHJ5Rm9yQm94KGxheW91
dEJveCk7CisgICAgICAgIHJldHVybiAqaGVpZ2h0IC0gKGJveEdlb21ldHJ5LnZlcnRpY2FsQm9y
ZGVyKCkgKyBib3hHZW9tZXRyeS52ZXJ0aWNhbFBhZGRpbmcoKS52YWx1ZU9yKDApKTsKKyAgICB9
CisgICAgcmV0dXJuIHsgfTsKK30KKwogTGF5b3V0VW5pdCBGb3JtYXR0aW5nQ29udGV4dDo6R2Vv
bWV0cnk6OmNvbnRlbnRIZWlnaHRGb3JGb3JtYXR0aW5nQ29udGV4dFJvb3QoY29uc3QgQm94JiBs
YXlvdXRCb3gpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGlzSGVpZ2h0QXV0byhsYXlvdXRCb3gpICYm
IChsYXlvdXRCb3guZXN0YWJsaXNoZXNGb3JtYXR0aW5nQ29udGV4dCgpIHx8IGxheW91dEJveC5p
c0RvY3VtZW50Qm94KCkpKTsKQEAgLTMwMCwzNyArMzExLDMzIEBAIFZlcnRpY2FsR2VvbWV0cnkg
Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpvdXRPZkZsb3dOb25SZXBsYWNlZFZlcnRpY2Fs
R2VvbWV0CiAKICAgICBhdXRvIHRvcCA9IGNvbXB1dGVkVmFsdWVJZk5vdEF1dG8oc3R5bGUubG9n
aWNhbFRvcCgpLCBjb250YWluaW5nQmxvY2tXaWR0aCk7CiAgICAgYXV0byBib3R0b20gPSBjb21w
dXRlZFZhbHVlSWZOb3RBdXRvKHN0eWxlLmxvZ2ljYWxCb3R0b20oKSwgY29udGFpbmluZ0Jsb2Nr
V2lkdGgpOwotICAgIGF1dG8gaGVpZ2h0ID0gdXNlZFZlcnRpY2FsVmFsdWVzLmhlaWdodCA/IHVz
ZWRWZXJ0aWNhbFZhbHVlcy5oZWlnaHQudmFsdWUoKSA6IGNvbXB1dGVkSGVpZ2h0VmFsdWUobGF5
b3V0Qm94LCBIZWlnaHRUeXBlOjpOb3JtYWwsIGNvbnRhaW5pbmdCbG9ja0hlaWdodCk7CisgICAg
YXV0byBoZWlnaHQgPSB1c2VkVmVydGljYWxWYWx1ZXMuaGVpZ2h0ID8gdXNlZFZlcnRpY2FsVmFs
dWVzLmhlaWdodC52YWx1ZSgpIDogY29tcHV0ZWRDb250ZW50SGVpZ2h0KGxheW91dEJveCwgY29u
dGFpbmluZ0Jsb2NrSGVpZ2h0KTsKICAgICBhdXRvIGNvbXB1dGVkVmVydGljYWxNYXJnaW4gPSBH
ZW9tZXRyeTo6Y29tcHV0ZWRWZXJ0aWNhbE1hcmdpbihsYXlvdXRCb3gsIHVzZWRIb3Jpem9udGFs
VmFsdWVzKTsKICAgICBVc2VkVmVydGljYWxNYXJnaW46Ok5vbkNvbGxhcHNlZFZhbHVlcyB1c2Vk
VmVydGljYWxNYXJnaW47IAogICAgIGF1dG8gcGFkZGluZ1RvcCA9IGJveEdlb21ldHJ5LnBhZGRp
bmdUb3AoKS52YWx1ZU9yKDApOwogICAgIGF1dG8gcGFkZGluZ0JvdHRvbSA9IGJveEdlb21ldHJ5
LnBhZGRpbmdCb3R0b20oKS52YWx1ZU9yKDApOwogICAgIGF1dG8gYm9yZGVyVG9wID0gYm94R2Vv
bWV0cnkuYm9yZGVyVG9wKCk7CiAgICAgYXV0byBib3JkZXJCb3R0b20gPSBib3hHZW9tZXRyeS5i
b3JkZXJCb3R0b20oKTsKLSAgICBhdXRvIGNvbnRlbnRIZWlnaHQgPSBbJl0gewotICAgICAgICBB
U1NFUlQoaGVpZ2h0KTsKLSAgICAgICAgcmV0dXJuIHN0eWxlLmJveFNpemluZygpID09IEJveFNp
emluZzo6Q29udGVudEJveCA/ICpoZWlnaHQgOiAqaGVpZ2h0IC0gKGJvcmRlclRvcCArIHBhZGRp
bmdUb3AgKyBwYWRkaW5nQm90dG9tICsgYm9yZGVyQm90dG9tKTsgIAotICAgIH07CiAKICAgICBp
ZiAoIXRvcCAmJiAhaGVpZ2h0ICYmICFib3R0b20pCiAgICAgICAgIHRvcCA9IHN0YXRpY1ZlcnRp
Y2FsUG9zaXRpb25Gb3JPdXRPZkZsb3dQb3NpdGlvbmVkKGxheW91dEJveCwgdXNlZFZlcnRpY2Fs
VmFsdWVzKTsKIAogICAgIGlmICh0b3AgJiYgaGVpZ2h0ICYmIGJvdHRvbSkgewogICAgICAgICBp
ZiAoIWNvbXB1dGVkVmVydGljYWxNYXJnaW4uYmVmb3JlICYmICFjb21wdXRlZFZlcnRpY2FsTWFy
Z2luLmFmdGVyKSB7Ci0gICAgICAgICAgICBhdXRvIG1hcmdpbkJlZm9yZUFuZEFmdGVyID0gY29u
dGFpbmluZ0Jsb2NrSGVpZ2h0IC0gKCp0b3AgKyBib3JkZXJUb3AgKyBwYWRkaW5nVG9wICsgY29u
dGVudEhlaWdodCgpICsgcGFkZGluZ0JvdHRvbSArIGJvcmRlckJvdHRvbSArICpib3R0b20pOwor
ICAgICAgICAgICAgYXV0byBtYXJnaW5CZWZvcmVBbmRBZnRlciA9IGNvbnRhaW5pbmdCbG9ja0hl
aWdodCAtICgqdG9wICsgYm9yZGVyVG9wICsgcGFkZGluZ1RvcCArICpoZWlnaHQgKyBwYWRkaW5n
Qm90dG9tICsgYm9yZGVyQm90dG9tICsgKmJvdHRvbSk7CiAgICAgICAgICAgICB1c2VkVmVydGlj
YWxNYXJnaW4gPSB7IG1hcmdpbkJlZm9yZUFuZEFmdGVyIC8gMiwgbWFyZ2luQmVmb3JlQW5kQWZ0
ZXIgLyAyIH07CiAgICAgICAgIH0gZWxzZSBpZiAoIWNvbXB1dGVkVmVydGljYWxNYXJnaW4uYmVm
b3JlKSB7CiAgICAgICAgICAgICB1c2VkVmVydGljYWxNYXJnaW4uYWZ0ZXIgPSAqY29tcHV0ZWRW
ZXJ0aWNhbE1hcmdpbi5hZnRlcjsKLSAgICAgICAgICAgIHVzZWRWZXJ0aWNhbE1hcmdpbi5iZWZv
cmUgPSBjb250YWluaW5nQmxvY2tIZWlnaHQgLSAoKnRvcCArIGJvcmRlclRvcCArIHBhZGRpbmdU
b3AgKyBjb250ZW50SGVpZ2h0KCkgKyBwYWRkaW5nQm90dG9tICsgYm9yZGVyQm90dG9tICsgdXNl
ZFZlcnRpY2FsTWFyZ2luLmFmdGVyICsgKmJvdHRvbSk7CisgICAgICAgICAgICB1c2VkVmVydGlj
YWxNYXJnaW4uYmVmb3JlID0gY29udGFpbmluZ0Jsb2NrSGVpZ2h0IC0gKCp0b3AgKyBib3JkZXJU
b3AgKyBwYWRkaW5nVG9wICsgKmhlaWdodCArIHBhZGRpbmdCb3R0b20gKyBib3JkZXJCb3R0b20g
KyB1c2VkVmVydGljYWxNYXJnaW4uYWZ0ZXIgKyAqYm90dG9tKTsKICAgICAgICAgfSBlbHNlIGlm
ICghY29tcHV0ZWRWZXJ0aWNhbE1hcmdpbi5hZnRlcikgewogICAgICAgICAgICAgdXNlZFZlcnRp
Y2FsTWFyZ2luLmJlZm9yZSA9ICpjb21wdXRlZFZlcnRpY2FsTWFyZ2luLmJlZm9yZTsKLSAgICAg
ICAgICAgIHVzZWRWZXJ0aWNhbE1hcmdpbi5hZnRlciA9IGNvbnRhaW5pbmdCbG9ja0hlaWdodCAt
ICgqdG9wICsgdXNlZFZlcnRpY2FsTWFyZ2luLmJlZm9yZSArIGJvcmRlclRvcCArIHBhZGRpbmdU
b3AgKyBjb250ZW50SGVpZ2h0KCkgKyBwYWRkaW5nQm90dG9tICsgYm9yZGVyQm90dG9tICsgKmJv
dHRvbSk7CisgICAgICAgICAgICB1c2VkVmVydGljYWxNYXJnaW4uYWZ0ZXIgPSBjb250YWluaW5n
QmxvY2tIZWlnaHQgLSAoKnRvcCArIHVzZWRWZXJ0aWNhbE1hcmdpbi5iZWZvcmUgKyBib3JkZXJU
b3AgKyBwYWRkaW5nVG9wICsgKmhlaWdodCArIHBhZGRpbmdCb3R0b20gKyBib3JkZXJCb3R0b20g
KyAqYm90dG9tKTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICB1c2VkVmVydGljYWxNYXJn
aW4gPSB7ICpjb21wdXRlZFZlcnRpY2FsTWFyZ2luLmJlZm9yZSwgKmNvbXB1dGVkVmVydGljYWxN
YXJnaW4uYWZ0ZXIgfTsKICAgICAgICAgLy8gT3Zlci1jb25zdHJhaW5lZD8KLSAgICAgICAgYXV0
byBib3hIZWlnaHQgPSAqdG9wICsgdXNlZFZlcnRpY2FsTWFyZ2luLmJlZm9yZSArIGJvcmRlclRv
cCArIHBhZGRpbmdUb3AgKyBjb250ZW50SGVpZ2h0KCkgKyBwYWRkaW5nQm90dG9tICsgYm9yZGVy
Qm90dG9tICsgdXNlZFZlcnRpY2FsTWFyZ2luLmFmdGVyICsgKmJvdHRvbTsKKyAgICAgICAgYXV0
byBib3hIZWlnaHQgPSAqdG9wICsgdXNlZFZlcnRpY2FsTWFyZ2luLmJlZm9yZSArIGJvcmRlclRv
cCArIHBhZGRpbmdUb3AgKyAqaGVpZ2h0ICsgcGFkZGluZ0JvdHRvbSArIGJvcmRlckJvdHRvbSAr
IHVzZWRWZXJ0aWNhbE1hcmdpbi5hZnRlciArICpib3R0b207CiAgICAgICAgIGlmIChib3hIZWln
aHQgIT0gY29udGFpbmluZ0Jsb2NrSGVpZ2h0KQotICAgICAgICAgICAgYm90dG9tID0gY29udGFp
bmluZ0Jsb2NrSGVpZ2h0IC0gKCp0b3AgKyB1c2VkVmVydGljYWxNYXJnaW4uYmVmb3JlICsgYm9y
ZGVyVG9wICsgcGFkZGluZ1RvcCArIGNvbnRlbnRIZWlnaHQoKSArIHBhZGRpbmdCb3R0b20gKyBi
b3JkZXJCb3R0b20gKyB1c2VkVmVydGljYWxNYXJnaW4uYWZ0ZXIpOworICAgICAgICAgICAgYm90
dG9tID0gY29udGFpbmluZ0Jsb2NrSGVpZ2h0IC0gKCp0b3AgKyB1c2VkVmVydGljYWxNYXJnaW4u
YmVmb3JlICsgYm9yZGVyVG9wICsgcGFkZGluZ1RvcCArICpoZWlnaHQgKyBwYWRkaW5nQm90dG9t
ICsgYm9yZGVyQm90dG9tICsgdXNlZFZlcnRpY2FsTWFyZ2luLmFmdGVyKTsKICAgICB9CiAKICAg
ICBpZiAoIXRvcCAmJiAhaGVpZ2h0ICYmIGJvdHRvbSkgewpAQCAtMzQ0LDcgKzM1MSw3IEBAIFZl
cnRpY2FsR2VvbWV0cnkgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpvdXRPZkZsb3dOb25S
ZXBsYWNlZFZlcnRpY2FsR2VvbWV0CiAgICAgICAgIC8vICMyCiAgICAgICAgIHRvcCA9IHN0YXRp
Y1ZlcnRpY2FsUG9zaXRpb25Gb3JPdXRPZkZsb3dQb3NpdGlvbmVkKGxheW91dEJveCwgdXNlZFZl
cnRpY2FsVmFsdWVzKTsKICAgICAgICAgdXNlZFZlcnRpY2FsTWFyZ2luID0geyBjb21wdXRlZFZl
cnRpY2FsTWFyZ2luLmJlZm9yZS52YWx1ZU9yKDApLCBjb21wdXRlZFZlcnRpY2FsTWFyZ2luLmFm
dGVyLnZhbHVlT3IoMCkgfTsKLSAgICAgICAgYm90dG9tID0gY29udGFpbmluZ0Jsb2NrSGVpZ2h0
IC0gKCp0b3AgKyB1c2VkVmVydGljYWxNYXJnaW4uYmVmb3JlICsgYm9yZGVyVG9wICsgcGFkZGlu
Z1RvcCArIGNvbnRlbnRIZWlnaHQoKSArIHBhZGRpbmdCb3R0b20gKyBib3JkZXJCb3R0b20gKyB1
c2VkVmVydGljYWxNYXJnaW4uYWZ0ZXIpOworICAgICAgICBib3R0b20gPSBjb250YWluaW5nQmxv
Y2tIZWlnaHQgLSAoKnRvcCArIHVzZWRWZXJ0aWNhbE1hcmdpbi5iZWZvcmUgKyBib3JkZXJUb3Ag
KyBwYWRkaW5nVG9wICsgKmhlaWdodCArIHBhZGRpbmdCb3R0b20gKyBib3JkZXJCb3R0b20gKyB1
c2VkVmVydGljYWxNYXJnaW4uYWZ0ZXIpOwogICAgIH0KIAogICAgIGlmICghaGVpZ2h0ICYmICFi
b3R0b20gJiYgdG9wKSB7CkBAIC0zNTcsNyArMzY0LDcgQEAgVmVydGljYWxHZW9tZXRyeSBGb3Jt
YXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Om91dE9mRmxvd05vblJlcGxhY2VkVmVydGljYWxHZW9t
ZXQKICAgICBpZiAoIXRvcCAmJiBoZWlnaHQgJiYgYm90dG9tKSB7CiAgICAgICAgIC8vICM0CiAg
ICAgICAgIHVzZWRWZXJ0aWNhbE1hcmdpbiA9IHsgY29tcHV0ZWRWZXJ0aWNhbE1hcmdpbi5iZWZv
cmUudmFsdWVPcigwKSwgY29tcHV0ZWRWZXJ0aWNhbE1hcmdpbi5hZnRlci52YWx1ZU9yKDApIH07
Ci0gICAgICAgIHRvcCA9IGNvbnRhaW5pbmdCbG9ja0hlaWdodCAtICh1c2VkVmVydGljYWxNYXJn
aW4uYmVmb3JlICsgYm9yZGVyVG9wICsgcGFkZGluZ1RvcCArIGNvbnRlbnRIZWlnaHQoKSArIHBh
ZGRpbmdCb3R0b20gKyBib3JkZXJCb3R0b20gKyB1c2VkVmVydGljYWxNYXJnaW4uYWZ0ZXIgKyAq
Ym90dG9tKTsKKyAgICAgICAgdG9wID0gY29udGFpbmluZ0Jsb2NrSGVpZ2h0IC0gKHVzZWRWZXJ0
aWNhbE1hcmdpbi5iZWZvcmUgKyBib3JkZXJUb3AgKyBwYWRkaW5nVG9wICsgKmhlaWdodCArIHBh
ZGRpbmdCb3R0b20gKyBib3JkZXJCb3R0b20gKyB1c2VkVmVydGljYWxNYXJnaW4uYWZ0ZXIgKyAq
Ym90dG9tKTsKICAgICB9CiAKICAgICBpZiAoIWhlaWdodCAmJiB0b3AgJiYgYm90dG9tKSB7CkBA
IC0zNjksNyArMzc2LDcgQEAgVmVydGljYWxHZW9tZXRyeSBGb3JtYXR0aW5nQ29udGV4dDo6R2Vv
bWV0cnk6Om91dE9mRmxvd05vblJlcGxhY2VkVmVydGljYWxHZW9tZXQKICAgICBpZiAoIWJvdHRv
bSAmJiB0b3AgJiYgaGVpZ2h0KSB7CiAgICAgICAgIC8vICM2CiAgICAgICAgIHVzZWRWZXJ0aWNh
bE1hcmdpbiA9IHsgY29tcHV0ZWRWZXJ0aWNhbE1hcmdpbi5iZWZvcmUudmFsdWVPcigwKSwgY29t
cHV0ZWRWZXJ0aWNhbE1hcmdpbi5hZnRlci52YWx1ZU9yKDApIH07Ci0gICAgICAgIGJvdHRvbSA9
IGNvbnRhaW5pbmdCbG9ja0hlaWdodCAtICgqdG9wICsgdXNlZFZlcnRpY2FsTWFyZ2luLmJlZm9y
ZSArIGJvcmRlclRvcCArIHBhZGRpbmdUb3AgKyBjb250ZW50SGVpZ2h0KCkgKyBwYWRkaW5nQm90
dG9tICsgYm9yZGVyQm90dG9tICsgdXNlZFZlcnRpY2FsTWFyZ2luLmFmdGVyKTsKKyAgICAgICAg
Ym90dG9tID0gY29udGFpbmluZ0Jsb2NrSGVpZ2h0IC0gKCp0b3AgKyB1c2VkVmVydGljYWxNYXJn
aW4uYmVmb3JlICsgYm9yZGVyVG9wICsgcGFkZGluZ1RvcCArICpoZWlnaHQgKyBwYWRkaW5nQm90
dG9tICsgYm9yZGVyQm90dG9tICsgdXNlZFZlcnRpY2FsTWFyZ2luLmFmdGVyKTsKICAgICB9CiAK
ICAgICBBU1NFUlQodG9wKTsKQEAgLTM4Myw3ICszOTAsNyBAQCBWZXJ0aWNhbEdlb21ldHJ5IEZv
cm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6b3V0T2ZGbG93Tm9uUmVwbGFjZWRWZXJ0aWNhbEdl
b21ldAogICAgICpib3R0b20gKz0gY29udGFpbmluZ0Jsb2NrUGFkZGluZ1ZlcnRpY2FsRWRnZTsK
IAogICAgIExPR19XSVRIX1NUUkVBTShGb3JtYXR0aW5nQ29udGV4dExheW91dCwgc3RyZWFtIDw8
ICJbUG9zaXRpb25dW0hlaWdodF1bTWFyZ2luXSAtPiBvdXQtb2YtZmxvdyBub24tcmVwbGFjZWQg
LT4gdG9wKCIgPDwgKnRvcCA8PCAicHgpIGJvdHRvbSgiICA8PCAqYm90dG9tIDw8ICJweCkgaGVp
Z2h0KCIgPDwgKmhlaWdodCA8PCAicHgpIG1hcmdpbigiIDw8IHVzZWRWZXJ0aWNhbE1hcmdpbi5i
ZWZvcmUgPDwgInB4LCAiICA8PCB1c2VkVmVydGljYWxNYXJnaW4uYWZ0ZXIgPDwgInB4KSBsYXlv
dXRCb3goIiA8PCAmbGF5b3V0Qm94IDw8ICIpIik7Ci0gICAgcmV0dXJuIHsgKnRvcCwgKmJvdHRv
bSwgeyBjb250ZW50SGVpZ2h0KCksIHVzZWRWZXJ0aWNhbE1hcmdpbiB9IH07CisgICAgcmV0dXJu
IHsgKnRvcCwgKmJvdHRvbSwgeyAqaGVpZ2h0LCB1c2VkVmVydGljYWxNYXJnaW4gfSB9OwogfQog
CiBIb3Jpem9udGFsR2VvbWV0cnkgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpvdXRPZkZs
b3dOb25SZXBsYWNlZEhvcml6b250YWxHZW9tZXRyeShjb25zdCBCb3gmIGxheW91dEJveCwgVXNl
ZEhvcml6b250YWxWYWx1ZXMgdXNlZEhvcml6b250YWxWYWx1ZXMpCkBAIC01NTcsNyArNTY0LDcg
QEAgVmVydGljYWxHZW9tZXRyeSBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Om91dE9mRmxv
d1JlcGxhY2VkVmVydGljYWxHZW9tZXRyeSgKIAogICAgIGF1dG8gdG9wID0gY29tcHV0ZWRWYWx1
ZUlmTm90QXV0byhzdHlsZS5sb2dpY2FsVG9wKCksIGNvbnRhaW5pbmdCbG9ja1dpZHRoKTsKICAg
ICBhdXRvIGJvdHRvbSA9IGNvbXB1dGVkVmFsdWVJZk5vdEF1dG8oc3R5bGUubG9naWNhbEJvdHRv
bSgpLCBjb250YWluaW5nQmxvY2tXaWR0aCk7Ci0gICAgYXV0byBoZWlnaHQgPSBpbmxpbmVSZXBs
YWNlZEhlaWdodEFuZE1hcmdpbihsYXlvdXRCb3gsIHVzZWRIb3Jpem9udGFsVmFsdWVzLCB1c2Vk
VmVydGljYWxWYWx1ZXMpLmhlaWdodDsKKyAgICBhdXRvIGhlaWdodCA9IGlubGluZVJlcGxhY2Vk
SGVpZ2h0QW5kTWFyZ2luKGxheW91dEJveCwgdXNlZEhvcml6b250YWxWYWx1ZXMsIHVzZWRWZXJ0
aWNhbFZhbHVlcykuY29udGVudEhlaWdodDsKICAgICBhdXRvIGNvbXB1dGVkVmVydGljYWxNYXJn
aW4gPSBHZW9tZXRyeTo6Y29tcHV0ZWRWZXJ0aWNhbE1hcmdpbihsYXlvdXRCb3gsIHVzZWRIb3Jp
em9udGFsVmFsdWVzKTsKICAgICBPcHRpb25hbDxMYXlvdXRVbml0PiB1c2VkTWFyZ2luQmVmb3Jl
ID0gY29tcHV0ZWRWZXJ0aWNhbE1hcmdpbi5iZWZvcmU7CiAgICAgT3B0aW9uYWw8TGF5b3V0VW5p
dD4gdXNlZE1hcmdpbkFmdGVyID0gY29tcHV0ZWRWZXJ0aWNhbE1hcmdpbi5hZnRlcjsKQEAgLTY0
NSw3ICs2NTIsNyBAQCBIb3Jpem9udGFsR2VvbWV0cnkgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21l
dHJ5OjpvdXRPZkZsb3dSZXBsYWNlZEhvcml6b250YWxHZW9tZQogICAgIGF1dG8gY29tcHV0ZWRI
b3Jpem9udGFsTWFyZ2luID0gR2VvbWV0cnk6OmNvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbihsYXlv
dXRCb3gsIHVzZWRIb3Jpem9udGFsVmFsdWVzKTsKICAgICBPcHRpb25hbDxMYXlvdXRVbml0PiB1
c2VkTWFyZ2luU3RhcnQgPSBjb21wdXRlZEhvcml6b250YWxNYXJnaW4uc3RhcnQ7CiAgICAgT3B0
aW9uYWw8TGF5b3V0VW5pdD4gdXNlZE1hcmdpbkVuZCA9IGNvbXB1dGVkSG9yaXpvbnRhbE1hcmdp
bi5lbmQ7Ci0gICAgYXV0byB3aWR0aCA9IGlubGluZVJlcGxhY2VkV2lkdGhBbmRNYXJnaW4obGF5
b3V0Qm94LCB1c2VkSG9yaXpvbnRhbFZhbHVlcywgdXNlZFZlcnRpY2FsVmFsdWVzKS53aWR0aDsK
KyAgICBhdXRvIHdpZHRoID0gaW5saW5lUmVwbGFjZWRXaWR0aEFuZE1hcmdpbihsYXlvdXRCb3gs
IHVzZWRIb3Jpem9udGFsVmFsdWVzLCB1c2VkVmVydGljYWxWYWx1ZXMpLmNvbnRlbnRXaWR0aDsK
ICAgICBhdXRvIHBhZGRpbmdMZWZ0ID0gYm94R2VvbWV0cnkucGFkZGluZ0xlZnQoKS52YWx1ZU9y
KDApOwogICAgIGF1dG8gcGFkZGluZ1JpZ2h0ID0gYm94R2VvbWV0cnkucGFkZGluZ1JpZ2h0KCku
dmFsdWVPcigwKTsKICAgICBhdXRvIGJvcmRlckxlZnQgPSBib3hHZW9tZXRyeS5ib3JkZXJMZWZ0
KCk7CkBAIC03MjAsNyArNzI3LDcgQEAgSG9yaXpvbnRhbEdlb21ldHJ5IEZvcm1hdHRpbmdDb250
ZXh0OjpHZW9tZXRyeTo6b3V0T2ZGbG93UmVwbGFjZWRIb3Jpem9udGFsR2VvbWUKICAgICByZXR1
cm4geyAqbGVmdCwgKnJpZ2h0LCB7IHdpZHRoLCB7ICp1c2VkTWFyZ2luU3RhcnQsICp1c2VkTWFy
Z2luRW5kIH0sIGNvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbiB9IH07CiB9CiAKLUhlaWdodEFuZE1h
cmdpbiBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmNvbXBsaWNhdGVkQ2FzZXMoY29uc3Qg
Qm94JiBsYXlvdXRCb3gsIFVzZWRIb3Jpem9udGFsVmFsdWVzIHVzZWRIb3Jpem9udGFsVmFsdWVz
LCBVc2VkVmVydGljYWxWYWx1ZXMgdXNlZFZlcnRpY2FsVmFsdWVzKSBjb25zdAorQ29udGVudEhl
aWdodEFuZE1hcmdpbiBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmNvbXBsaWNhdGVkQ2Fz
ZXMoY29uc3QgQm94JiBsYXlvdXRCb3gsIFVzZWRIb3Jpem9udGFsVmFsdWVzIHVzZWRIb3Jpem9u
dGFsVmFsdWVzLCBVc2VkVmVydGljYWxWYWx1ZXMgdXNlZFZlcnRpY2FsVmFsdWVzKSBjb25zdAog
ewogICAgIEFTU0VSVCghbGF5b3V0Qm94LnJlcGxhY2VkKCkpOwogICAgIC8vIFRPRE86IFVzZSBj
b21wbGljYXRlZC1jYXNlIGZvciBkb2N1bWVudCByZW5kZXJlciBmb3Igbm93IChzZWUgQmxvY2tG
b3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmluRmxvd0hlaWdodEFuZE1hcmdpbikuCkBAIC03
MzUsNyArNzQyLDcgQEAgSGVpZ2h0QW5kTWFyZ2luIEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRy
eTo6Y29tcGxpY2F0ZWRDYXNlcyhjb25zdCBCb3gmIGxheW91dEIKICAgICAvLyAxLiBJZiAnbWFy
Z2luLXRvcCcsIG9yICdtYXJnaW4tYm90dG9tJyBhcmUgJ2F1dG8nLCB0aGVpciB1c2VkIHZhbHVl
IGlzIDAuCiAgICAgLy8gMi4gSWYgJ2hlaWdodCcgaXMgJ2F1dG8nLCB0aGUgaGVpZ2h0IGRlcGVu
ZHMgb24gdGhlIGVsZW1lbnQncyBkZXNjZW5kYW50cyBwZXIgMTAuNi43LgogCi0gICAgYXV0byBo
ZWlnaHQgPSB1c2VkVmVydGljYWxWYWx1ZXMuaGVpZ2h0ID8gdXNlZFZlcnRpY2FsVmFsdWVzLmhl
aWdodC52YWx1ZSgpIDogY29tcHV0ZWRIZWlnaHRWYWx1ZShsYXlvdXRCb3gsIEhlaWdodFR5cGU6
Ok5vcm1hbCk7CisgICAgYXV0byBoZWlnaHQgPSB1c2VkVmVydGljYWxWYWx1ZXMuaGVpZ2h0ID8g
dXNlZFZlcnRpY2FsVmFsdWVzLmhlaWdodC52YWx1ZSgpIDogY29tcHV0ZWRDb250ZW50SGVpZ2h0
KGxheW91dEJveCk7CiAgICAgYXV0byBjb21wdXRlZFZlcnRpY2FsTWFyZ2luID0gR2VvbWV0cnk6
OmNvbXB1dGVkVmVydGljYWxNYXJnaW4obGF5b3V0Qm94LCB1c2VkSG9yaXpvbnRhbFZhbHVlcyk7
CiAgICAgLy8gIzEKICAgICBhdXRvIHVzZWRWZXJ0aWNhbE1hcmdpbiA9IFVzZWRWZXJ0aWNhbE1h
cmdpbjo6Tm9uQ29sbGFwc2VkVmFsdWVzIHsgY29tcHV0ZWRWZXJ0aWNhbE1hcmdpbi5iZWZvcmUu
dmFsdWVPcigwKSwgY29tcHV0ZWRWZXJ0aWNhbE1hcmdpbi5hZnRlci52YWx1ZU9yKDApIH07IApA
QCAtNzQ4LDEwICs3NTUsMTAgQEAgSGVpZ2h0QW5kTWFyZ2luIEZvcm1hdHRpbmdDb250ZXh0OjpH
ZW9tZXRyeTo6Y29tcGxpY2F0ZWRDYXNlcyhjb25zdCBCb3gmIGxheW91dEIKICAgICBBU1NFUlQo
aGVpZ2h0KTsKIAogICAgIExPR19XSVRIX1NUUkVBTShGb3JtYXR0aW5nQ29udGV4dExheW91dCwg
c3RyZWFtIDw8ICJbSGVpZ2h0XVtNYXJnaW5dIC0+IGZsb2F0aW5nIG5vbi1yZXBsYWNlZCAtPiBo
ZWlnaHQoIiA8PCAqaGVpZ2h0IDw8ICJweCkgbWFyZ2luKCIgPDwgdXNlZFZlcnRpY2FsTWFyZ2lu
LmJlZm9yZSA8PCAicHgsICIgPDwgdXNlZFZlcnRpY2FsTWFyZ2luLmFmdGVyIDw8ICJweCkgLT4g
bGF5b3V0Qm94KCIgPDwgJmxheW91dEJveCA8PCAiKSIpOwotICAgIHJldHVybiBIZWlnaHRBbmRN
YXJnaW4geyAqaGVpZ2h0LCB1c2VkVmVydGljYWxNYXJnaW4gfTsKKyAgICByZXR1cm4gQ29udGVu
dEhlaWdodEFuZE1hcmdpbiB7ICpoZWlnaHQsIHVzZWRWZXJ0aWNhbE1hcmdpbiB9OwogfQogCi1X
aWR0aEFuZE1hcmdpbiBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmZsb2F0aW5nTm9uUmVw
bGFjZWRXaWR0aEFuZE1hcmdpbihjb25zdCBCb3gmIGxheW91dEJveCwgVXNlZEhvcml6b250YWxW
YWx1ZXMgdXNlZEhvcml6b250YWxWYWx1ZXMpCitDb250ZW50V2lkdGhBbmRNYXJnaW4gRm9ybWF0
dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpmbG9hdGluZ05vblJlcGxhY2VkV2lkdGhBbmRNYXJnaW4o
Y29uc3QgQm94JiBsYXlvdXRCb3gsIFVzZWRIb3Jpem9udGFsVmFsdWVzIHVzZWRIb3Jpem9udGFs
VmFsdWVzKQogewogICAgIEFTU0VSVChsYXlvdXRCb3guaXNGbG9hdGluZ1Bvc2l0aW9uZWQoKSAm
JiAhbGF5b3V0Qm94LnJlcGxhY2VkKCkpOwogCkBAIC03NzAsMTAgKzc3NywxMCBAQCBXaWR0aEFu
ZE1hcmdpbiBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmZsb2F0aW5nTm9uUmVwbGFjZWRX
aWR0aEFuZE1hcmdpbihjbwogICAgICAgICB3aWR0aCA9IHNocmlua1RvRml0V2lkdGgobGF5b3V0
Qm94LCB1c2VkSG9yaXpvbnRhbFZhbHVlcy5jb25zdHJhaW50cy53aWR0aCk7CiAKICAgICBMT0df
V0lUSF9TVFJFQU0oRm9ybWF0dGluZ0NvbnRleHRMYXlvdXQsIHN0cmVhbSA8PCAiW1dpZHRoXVtN
YXJnaW5dIC0+IGZsb2F0aW5nIG5vbi1yZXBsYWNlZCAtPiB3aWR0aCgiIDw8ICp3aWR0aCA8PCAi
cHgpIG1hcmdpbigiIDw8IHVzZWRIb3Jpem9udGFsbE1hcmdpbi5zdGFydCA8PCAicHgsICIgPDwg
dXNlZEhvcml6b250YWxsTWFyZ2luLmVuZCA8PCAicHgpIC0+IGxheW91dEJveCgiIDw8ICZsYXlv
dXRCb3ggPDwgIikiKTsKLSAgICByZXR1cm4gV2lkdGhBbmRNYXJnaW4geyAqd2lkdGgsIHVzZWRI
b3Jpem9udGFsbE1hcmdpbiwgY29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luIH07CisgICAgcmV0dXJu
IENvbnRlbnRXaWR0aEFuZE1hcmdpbiB7ICp3aWR0aCwgdXNlZEhvcml6b250YWxsTWFyZ2luLCBj
b21wdXRlZEhvcml6b250YWxNYXJnaW4gfTsKIH0KIAotSGVpZ2h0QW5kTWFyZ2luIEZvcm1hdHRp
bmdDb250ZXh0OjpHZW9tZXRyeTo6ZmxvYXRpbmdSZXBsYWNlZEhlaWdodEFuZE1hcmdpbihjb25z
dCBCb3gmIGxheW91dEJveCwgVXNlZEhvcml6b250YWxWYWx1ZXMgdXNlZEhvcml6b250YWxWYWx1
ZXMsIFVzZWRWZXJ0aWNhbFZhbHVlcyB1c2VkVmVydGljYWxWYWx1ZXMpIGNvbnN0CitDb250ZW50
SGVpZ2h0QW5kTWFyZ2luIEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6ZmxvYXRpbmdSZXBs
YWNlZEhlaWdodEFuZE1hcmdpbihjb25zdCBCb3gmIGxheW91dEJveCwgVXNlZEhvcml6b250YWxW
YWx1ZXMgdXNlZEhvcml6b250YWxWYWx1ZXMsIFVzZWRWZXJ0aWNhbFZhbHVlcyB1c2VkVmVydGlj
YWxWYWx1ZXMpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGxheW91dEJveC5pc0Zsb2F0aW5nUG9zaXRp
b25lZCgpICYmIGxheW91dEJveC5yZXBsYWNlZCgpKTsKIApAQCAtNzgzLDcgKzc5MCw3IEBAIEhl
aWdodEFuZE1hcmdpbiBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmZsb2F0aW5nUmVwbGFj
ZWRIZWlnaHRBbmRNYXJnaW4oY29uCiAgICAgcmV0dXJuIGlubGluZVJlcGxhY2VkSGVpZ2h0QW5k
TWFyZ2luKGxheW91dEJveCwgdXNlZEhvcml6b250YWxWYWx1ZXMsIHVzZWRWZXJ0aWNhbFZhbHVl
cyk7CiB9CiAKLVdpZHRoQW5kTWFyZ2luIEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6Zmxv
YXRpbmdSZXBsYWNlZFdpZHRoQW5kTWFyZ2luKGNvbnN0IEJveCYgbGF5b3V0Qm94LCBVc2VkSG9y
aXpvbnRhbFZhbHVlcyB1c2VkSG9yaXpvbnRhbFZhbHVlcykgY29uc3QKK0NvbnRlbnRXaWR0aEFu
ZE1hcmdpbiBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmZsb2F0aW5nUmVwbGFjZWRXaWR0
aEFuZE1hcmdpbihjb25zdCBCb3gmIGxheW91dEJveCwgVXNlZEhvcml6b250YWxWYWx1ZXMgdXNl
ZEhvcml6b250YWxWYWx1ZXMpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGxheW91dEJveC5pc0Zsb2F0
aW5nUG9zaXRpb25lZCgpICYmIGxheW91dEJveC5yZXBsYWNlZCgpKTsKIApAQCAtODE2LDcgKzgy
Myw3IEBAIEhvcml6b250YWxHZW9tZXRyeSBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Om91
dE9mRmxvd0hvcml6b250YWxHZW9tZXRyeShjb25zCiAgICAgcmV0dXJuIG91dE9mRmxvd1JlcGxh
Y2VkSG9yaXpvbnRhbEdlb21ldHJ5KGxheW91dEJveCwgdXNlZEhvcml6b250YWxWYWx1ZXMsIHVz
ZWRWZXJ0aWNhbFZhbHVlcyk7CiB9CiAKLUhlaWdodEFuZE1hcmdpbiBGb3JtYXR0aW5nQ29udGV4
dDo6R2VvbWV0cnk6OmZsb2F0aW5nSGVpZ2h0QW5kTWFyZ2luKGNvbnN0IEJveCYgbGF5b3V0Qm94
LCBVc2VkSG9yaXpvbnRhbFZhbHVlcyB1c2VkSG9yaXpvbnRhbFZhbHVlcywgVXNlZFZlcnRpY2Fs
VmFsdWVzIHVzZWRWZXJ0aWNhbFZhbHVlcykgY29uc3QKK0NvbnRlbnRIZWlnaHRBbmRNYXJnaW4g
Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpmbG9hdGluZ0hlaWdodEFuZE1hcmdpbihjb25z
dCBCb3gmIGxheW91dEJveCwgVXNlZEhvcml6b250YWxWYWx1ZXMgdXNlZEhvcml6b250YWxWYWx1
ZXMsIFVzZWRWZXJ0aWNhbFZhbHVlcyB1c2VkVmVydGljYWxWYWx1ZXMpIGNvbnN0CiB7CiAgICAg
QVNTRVJUKGxheW91dEJveC5pc0Zsb2F0aW5nUG9zaXRpb25lZCgpKTsKIApAQCAtODI1LDcgKzgz
Miw3IEBAIEhlaWdodEFuZE1hcmdpbiBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmZsb2F0
aW5nSGVpZ2h0QW5kTWFyZ2luKGNvbnN0IEJveCYKICAgICByZXR1cm4gZmxvYXRpbmdSZXBsYWNl
ZEhlaWdodEFuZE1hcmdpbihsYXlvdXRCb3gsIHVzZWRIb3Jpem9udGFsVmFsdWVzLCB1c2VkVmVy
dGljYWxWYWx1ZXMpOwogfQogCi1XaWR0aEFuZE1hcmdpbiBGb3JtYXR0aW5nQ29udGV4dDo6R2Vv
bWV0cnk6OmZsb2F0aW5nV2lkdGhBbmRNYXJnaW4oY29uc3QgQm94JiBsYXlvdXRCb3gsIFVzZWRI
b3Jpem9udGFsVmFsdWVzIHVzZWRWYWx1ZXMpCitDb250ZW50V2lkdGhBbmRNYXJnaW4gRm9ybWF0
dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpmbG9hdGluZ1dpZHRoQW5kTWFyZ2luKGNvbnN0IEJveCYg
bGF5b3V0Qm94LCBVc2VkSG9yaXpvbnRhbFZhbHVlcyB1c2VkVmFsdWVzKQogewogICAgIEFTU0VS
VChsYXlvdXRCb3guaXNGbG9hdGluZ1Bvc2l0aW9uZWQoKSk7CiAKQEAgLTgzNCw3ICs4NDEsNyBA
QCBXaWR0aEFuZE1hcmdpbiBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmZsb2F0aW5nV2lk
dGhBbmRNYXJnaW4oY29uc3QgQm94JiBsYQogICAgIHJldHVybiBmbG9hdGluZ1JlcGxhY2VkV2lk
dGhBbmRNYXJnaW4obGF5b3V0Qm94LCB1c2VkVmFsdWVzKTsKIH0KIAotSGVpZ2h0QW5kTWFyZ2lu
IEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5saW5lUmVwbGFjZWRIZWlnaHRBbmRNYXJn
aW4oY29uc3QgQm94JiBsYXlvdXRCb3gsIFVzZWRIb3Jpem9udGFsVmFsdWVzIHVzZWRIb3Jpem9u
dGFsVmFsdWVzLCBVc2VkVmVydGljYWxWYWx1ZXMgdXNlZFZlcnRpY2FsVmFsdWVzKSBjb25zdAor
Q29udGVudEhlaWdodEFuZE1hcmdpbiBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmlubGlu
ZVJlcGxhY2VkSGVpZ2h0QW5kTWFyZ2luKGNvbnN0IEJveCYgbGF5b3V0Qm94LCBVc2VkSG9yaXpv
bnRhbFZhbHVlcyB1c2VkSG9yaXpvbnRhbFZhbHVlcywgVXNlZFZlcnRpY2FsVmFsdWVzIHVzZWRW
ZXJ0aWNhbFZhbHVlcykgY29uc3QKIHsKICAgICBBU1NFUlQoKGxheW91dEJveC5pc091dE9mRmxv
d1Bvc2l0aW9uZWQoKSB8fCBsYXlvdXRCb3guaXNGbG9hdGluZ1Bvc2l0aW9uZWQoKSB8fCBsYXlv
dXRCb3guaXNJbkZsb3coKSkgJiYgbGF5b3V0Qm94LnJlcGxhY2VkKCkpOwogCkBAIC04NTUsNyAr
ODYyLDcgQEAgSGVpZ2h0QW5kTWFyZ2luIEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5s
aW5lUmVwbGFjZWRIZWlnaHRBbmRNYXJnaW4oY29uc3QKICAgICBhdXRvJiBzdHlsZSA9IGxheW91
dEJveC5zdHlsZSgpOwogICAgIGF1dG8gcmVwbGFjZWQgPSBsYXlvdXRCb3gucmVwbGFjZWQoKTsK
IAotICAgIGF1dG8gaGVpZ2h0ID0gdXNlZFZlcnRpY2FsVmFsdWVzLmhlaWdodCA/IHVzZWRWZXJ0
aWNhbFZhbHVlcy5oZWlnaHQudmFsdWUoKSA6IGNvbXB1dGVkSGVpZ2h0VmFsdWUobGF5b3V0Qm94
LCBIZWlnaHRUeXBlOjpOb3JtYWwsIHVzZWRWZXJ0aWNhbFZhbHVlcy5jb25zdHJhaW50cy5oZWln
aHQpOworICAgIGF1dG8gaGVpZ2h0ID0gdXNlZFZlcnRpY2FsVmFsdWVzLmhlaWdodCA/IHVzZWRW
ZXJ0aWNhbFZhbHVlcy5oZWlnaHQudmFsdWUoKSA6IGNvbXB1dGVkQ29udGVudEhlaWdodChsYXlv
dXRCb3gsIHVzZWRWZXJ0aWNhbFZhbHVlcy5jb25zdHJhaW50cy5oZWlnaHQpOwogICAgIGF1dG8g
aGVpZ2h0SXNBdXRvID0gIXVzZWRWZXJ0aWNhbFZhbHVlcy5oZWlnaHQgJiYgaXNIZWlnaHRBdXRv
KGxheW91dEJveCk7CiAgICAgYXV0byB3aWR0aElzQXV0byA9IHN0eWxlLmxvZ2ljYWxXaWR0aCgp
LmlzQXV0bygpOwogCkBAIC04ODAsNyArODg3LDcgQEAgSGVpZ2h0QW5kTWFyZ2luIEZvcm1hdHRp
bmdDb250ZXh0OjpHZW9tZXRyeTo6aW5saW5lUmVwbGFjZWRIZWlnaHRBbmRNYXJnaW4oY29uc3QK
ICAgICByZXR1cm4geyAqaGVpZ2h0LCB1c2VkVmVydGljYWxNYXJnaW4gfTsKIH0KIAotV2lkdGhB
bmRNYXJnaW4gRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbmxpbmVSZXBsYWNlZFdpZHRo
QW5kTWFyZ2luKGNvbnN0IEJveCYgbGF5b3V0Qm94LCBVc2VkSG9yaXpvbnRhbFZhbHVlcyB1c2Vk
SG9yaXpvbnRhbFZhbHVlcywgT3B0aW9uYWw8VXNlZFZlcnRpY2FsVmFsdWVzPiB1c2VkVmVydGlj
YWxWYWx1ZXMpIGNvbnN0CitDb250ZW50V2lkdGhBbmRNYXJnaW4gRm9ybWF0dGluZ0NvbnRleHQ6
Okdlb21ldHJ5OjppbmxpbmVSZXBsYWNlZFdpZHRoQW5kTWFyZ2luKGNvbnN0IEJveCYgbGF5b3V0
Qm94LCBVc2VkSG9yaXpvbnRhbFZhbHVlcyB1c2VkSG9yaXpvbnRhbFZhbHVlcywgT3B0aW9uYWw8
VXNlZFZlcnRpY2FsVmFsdWVzPiB1c2VkVmVydGljYWxWYWx1ZXMpIGNvbnN0CiB7CiAgICAgQVNT
RVJUKChsYXlvdXRCb3guaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkgfHwgbGF5b3V0Qm94LmlzRmxv
YXRpbmdQb3NpdGlvbmVkKCkgfHwgbGF5b3V0Qm94LmlzSW5GbG93KCkpICYmIGxheW91dEJveC5y
ZXBsYWNlZCgpKTsKIApAQCAtOTI0LDcgKzkzMSw3IEBAIFdpZHRoQW5kTWFyZ2luIEZvcm1hdHRp
bmdDb250ZXh0OjpHZW9tZXRyeTo6aW5saW5lUmVwbGFjZWRXaWR0aEFuZE1hcmdpbihjb25zdCBC
CiAKICAgICBhdXRvIHdpZHRoID0gY29tcHV0ZWRWYWx1ZUlmTm90QXV0byh1c2VkSG9yaXpvbnRh
bFZhbHVlcy53aWR0aCA/IExlbmd0aCB7IHVzZWRIb3Jpem9udGFsVmFsdWVzLndpZHRoLnZhbHVl
KCksIEZpeGVkIH0gOiBzdHlsZS5sb2dpY2FsV2lkdGgoKSwgY29udGFpbmluZ0Jsb2NrV2lkdGgp
OwogICAgIGF1dG8gaGVpZ2h0SXNBdXRvID0gaXNIZWlnaHRBdXRvKGxheW91dEJveCk7Ci0gICAg
YXV0byBoZWlnaHQgPSBjb21wdXRlZEhlaWdodFZhbHVlKGxheW91dEJveCwgSGVpZ2h0VHlwZTo6
Tm9ybWFsLCB1c2VkVmVydGljYWxWYWx1ZXMgPyB1c2VkVmVydGljYWxWYWx1ZXMtPmNvbnN0cmFp
bnRzLmhlaWdodCA6IFdURjo6bnVsbG9wdCk7CisgICAgYXV0byBoZWlnaHQgPSBjb21wdXRlZENv
bnRlbnRIZWlnaHQobGF5b3V0Qm94LCB1c2VkVmVydGljYWxWYWx1ZXMgPyB1c2VkVmVydGljYWxW
YWx1ZXMtPmNvbnN0cmFpbnRzLmhlaWdodCA6IFdURjo6bnVsbG9wdCk7CiAKICAgICBpZiAoIXdp
ZHRoICYmIGhlaWdodElzQXV0byAmJiByZXBsYWNlZC0+aGFzSW50cmluc2ljV2lkdGgoKSkgewog
ICAgICAgICAvLyAjMQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dFN0
YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRTdGF0ZS5jcHAKaW5kZXggMjk2
ODIxMDUwOTVhY2ExZjc2NWI5N2MzMGJjNmU2Y2JhN2FjYmY1ZC4uNjY2NjJkOGI4OTM2MWVjYzMw
NmJkOTNkZjZkNDY0ZDQ2Nzc5YzIzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L0xheW91dFN0YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0U3RhdGUu
Y3BwCkBAIC00Nyw4ICs0Nyw4IEBAIExheW91dFN0YXRlOjpMYXlvdXRTdGF0ZShjb25zdCBDb250
YWluZXImIHJvb3QpCiAKIERpc3BsYXk6OkJveCYgTGF5b3V0U3RhdGU6OmRpc3BsYXlCb3hGb3JM
YXlvdXRCb3goY29uc3QgQm94JiBsYXlvdXRCb3gpCiB7Ci0gICAgcmV0dXJuICptX2xheW91dFRv
RGlzcGxheUJveC5lbnN1cmUoJmxheW91dEJveCwgWyZsYXlvdXRCb3hdIHsKLSAgICAgICAgcmV0
dXJuIG1ha2VVbmlxdWU8RGlzcGxheTo6Qm94PihsYXlvdXRCb3guc3R5bGUoKSk7CisgICAgcmV0
dXJuICptX2xheW91dFRvRGlzcGxheUJveC5lbnN1cmUoJmxheW91dEJveCwgW10geworICAgICAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxEaXNwbGF5OjpCb3g+KCk7CiAgICAgfSkuaXRlcmF0b3ItPnZh
bHVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0VW5pdHMu
aCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRVbml0cy5oCmluZGV4IDViMGViNzJhYWMx
MmQ4Y2M5NTY2NDFhMDkxY2QzYzQzODY4N2JlOWEuLmRiZTk0MDA3Y2E3N2IwMjA2NDkyMjM1NTE0
ZmI4N2EzZDIyZDZmYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRV
bml0cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRVbml0cy5oCkBAIC0xMTgs
MjcgKzExOCwyNyBAQCBzdHJ1Y3QgRWRnZXMgewogICAgIFZlcnRpY2FsRWRnZXMgdmVydGljYWw7
CiB9OwogCi1zdHJ1Y3QgV2lkdGhBbmRNYXJnaW4gewotICAgIExheW91dFVuaXQgd2lkdGg7Citz
dHJ1Y3QgQ29udGVudFdpZHRoQW5kTWFyZ2luIHsKKyAgICBMYXlvdXRVbml0IGNvbnRlbnRXaWR0
aDsKICAgICBVc2VkSG9yaXpvbnRhbE1hcmdpbiB1c2VkTWFyZ2luOwogICAgIENvbXB1dGVkSG9y
aXpvbnRhbE1hcmdpbiBjb21wdXRlZE1hcmdpbjsKIH07CiAKLXN0cnVjdCBIZWlnaHRBbmRNYXJn
aW4gewotICAgIExheW91dFVuaXQgaGVpZ2h0Oworc3RydWN0IENvbnRlbnRIZWlnaHRBbmRNYXJn
aW4geworICAgIExheW91dFVuaXQgY29udGVudEhlaWdodDsKICAgICBVc2VkVmVydGljYWxNYXJn
aW46Ok5vbkNvbGxhcHNlZFZhbHVlcyBub25Db2xsYXBzZWRNYXJnaW47CiB9OwogCiBzdHJ1Y3Qg
SG9yaXpvbnRhbEdlb21ldHJ5IHsKICAgICBMYXlvdXRVbml0IGxlZnQ7CiAgICAgTGF5b3V0VW5p
dCByaWdodDsKLSAgICBXaWR0aEFuZE1hcmdpbiB3aWR0aEFuZE1hcmdpbjsKKyAgICBDb250ZW50
V2lkdGhBbmRNYXJnaW4gY29udGVudFdpZHRoQW5kTWFyZ2luOwogfTsKIAogc3RydWN0IFZlcnRp
Y2FsR2VvbWV0cnkgewogICAgIExheW91dFVuaXQgdG9wOwogICAgIExheW91dFVuaXQgYm90dG9t
OwotICAgIEhlaWdodEFuZE1hcmdpbiBoZWlnaHRBbmRNYXJnaW47CisgICAgQ29udGVudEhlaWdo
dEFuZE1hcmdpbiBjb250ZW50SGVpZ2h0QW5kTWFyZ2luOwogfTsKIAogc3RydWN0IFVzZWRIb3Jp
em9udGFsVmFsdWVzIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zv
cm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuY3BwCmluZGV4IGZlYWJi
MmVkYjQ5NWU4NjJiNTExZDllMjI1OTViOGE3ZmNlM2M5YTAuLjdmMTFkMThiYWI2Yjk4ZWRjZTc1
YmY2MDIxYjk3NmMzZWZlMzBlN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9i
bG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmNwcApA
QCAtMzYwLDcgKzM2MCw3IEBAIHZvaWQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZVdp
ZHRoQW5kTWFyZ2luKGNvbnN0IEJveCYgbGF5b3V0Qm94LCBPcHRpb25hCiAgICAgICAgIGF2YWls
YWJsZVdpZHRoID0gY29udGFpbmluZ0Jsb2NrR2VvbWV0cnkuY29udGVudEJveFdpZHRoKCk7CiAg
ICAgYXV0byBjb25zdHJhaW50cyA9IFVzZWRIb3Jpem9udGFsVmFsdWVzOjpDb25zdHJhaW50cyB7
IGNvbnRhaW5pbmdCbG9ja0dlb21ldHJ5LmNvbnRlbnRCb3hMZWZ0KCksIGF2YWlsYWJsZVdpZHRo
IH07CiAKLSAgICBhdXRvIGNvbXB1dGUgPSBbJl0oT3B0aW9uYWw8TGF5b3V0VW5pdD4gdXNlZFdp
ZHRoKSAtPiBXaWR0aEFuZE1hcmdpbiB7CisgICAgYXV0byBjb21wdXRlID0gWyZdKE9wdGlvbmFs
PExheW91dFVuaXQ+IHVzZWRXaWR0aCkgLT4gQ29udGVudFdpZHRoQW5kTWFyZ2luIHsKICAgICAg
ICAgYXV0byB1c2VkVmFsdWVzID0gVXNlZEhvcml6b250YWxWYWx1ZXMgeyBjb25zdHJhaW50cywg
dXNlZFdpZHRoLCB7IH0gfTsKICAgICAgICAgaWYgKGxheW91dEJveC5pc0luRmxvdygpKQogICAg
ICAgICAgICAgcmV0dXJuIGdlb21ldHJ5KCkuaW5GbG93V2lkdGhBbmRNYXJnaW4obGF5b3V0Qm94
LCB1c2VkVmFsdWVzKTsKQEAgLTM3MiwyOSArMzcyLDI5IEBAIHZvaWQgQmxvY2tGb3JtYXR0aW5n
Q29udGV4dDo6Y29tcHV0ZVdpZHRoQW5kTWFyZ2luKGNvbnN0IEJveCYgbGF5b3V0Qm94LCBPcHRp
b25hCiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfTsKIAotICAgIGF1dG8gd2lkdGhBbmRNYXJn
aW4gPSBjb21wdXRlKHsgfSk7CisgICAgYXV0byBjb250ZW50V2lkdGhBbmRNYXJnaW4gPSBjb21w
dXRlKHsgfSk7CiAKICAgICBpZiAoYXV0byBtYXhXaWR0aCA9IGdlb21ldHJ5KCkuY29tcHV0ZWRW
YWx1ZUlmTm90QXV0byhsYXlvdXRCb3guc3R5bGUoKS5sb2dpY2FsTWF4V2lkdGgoKSwgYXZhaWxh
YmxlV2lkdGgpKSB7CiAgICAgICAgIGF1dG8gbWF4V2lkdGhBbmRNYXJnaW4gPSBjb21wdXRlKG1h
eFdpZHRoKTsKLSAgICAgICAgaWYgKHdpZHRoQW5kTWFyZ2luLndpZHRoID4gbWF4V2lkdGhBbmRN
YXJnaW4ud2lkdGgpCi0gICAgICAgICAgICB3aWR0aEFuZE1hcmdpbiA9IG1heFdpZHRoQW5kTWFy
Z2luOworICAgICAgICBpZiAoY29udGVudFdpZHRoQW5kTWFyZ2luLmNvbnRlbnRXaWR0aCA+IG1h
eFdpZHRoQW5kTWFyZ2luLmNvbnRlbnRXaWR0aCkKKyAgICAgICAgICAgIGNvbnRlbnRXaWR0aEFu
ZE1hcmdpbiA9IG1heFdpZHRoQW5kTWFyZ2luOwogICAgIH0KIAogICAgIGF1dG8gbWluV2lkdGgg
PSBnZW9tZXRyeSgpLmNvbXB1dGVkVmFsdWVJZk5vdEF1dG8obGF5b3V0Qm94LnN0eWxlKCkubG9n
aWNhbE1pbldpZHRoKCksIGF2YWlsYWJsZVdpZHRoKS52YWx1ZU9yKDApOwogICAgIGF1dG8gbWlu
V2lkdGhBbmRNYXJnaW4gPSBjb21wdXRlKG1pbldpZHRoKTsKLSAgICBpZiAod2lkdGhBbmRNYXJn
aW4ud2lkdGggPCBtaW5XaWR0aEFuZE1hcmdpbi53aWR0aCkKLSAgICAgICAgd2lkdGhBbmRNYXJn
aW4gPSBtaW5XaWR0aEFuZE1hcmdpbjsKKyAgICBpZiAoY29udGVudFdpZHRoQW5kTWFyZ2luLmNv
bnRlbnRXaWR0aCA8IG1pbldpZHRoQW5kTWFyZ2luLmNvbnRlbnRXaWR0aCkKKyAgICAgICAgY29u
dGVudFdpZHRoQW5kTWFyZ2luID0gbWluV2lkdGhBbmRNYXJnaW47CiAKICAgICBhdXRvJiBkaXNw
bGF5Qm94ID0gZm9ybWF0dGluZ1N0YXRlKCkuZGlzcGxheUJveChsYXlvdXRCb3gpOwotICAgIGRp
c3BsYXlCb3guc2V0Q29udGVudEJveFdpZHRoKHdpZHRoQW5kTWFyZ2luLndpZHRoKTsKLSAgICBk
aXNwbGF5Qm94LnNldEhvcml6b250YWxNYXJnaW4od2lkdGhBbmRNYXJnaW4udXNlZE1hcmdpbik7
Ci0gICAgZGlzcGxheUJveC5zZXRIb3Jpem9udGFsQ29tcHV0ZWRNYXJnaW4od2lkdGhBbmRNYXJn
aW4uY29tcHV0ZWRNYXJnaW4pOworICAgIGRpc3BsYXlCb3guc2V0Q29udGVudEJveFdpZHRoKGNv
bnRlbnRXaWR0aEFuZE1hcmdpbi5jb250ZW50V2lkdGgpOworICAgIGRpc3BsYXlCb3guc2V0SG9y
aXpvbnRhbE1hcmdpbihjb250ZW50V2lkdGhBbmRNYXJnaW4udXNlZE1hcmdpbik7CisgICAgZGlz
cGxheUJveC5zZXRIb3Jpem9udGFsQ29tcHV0ZWRNYXJnaW4oY29udGVudFdpZHRoQW5kTWFyZ2lu
LmNvbXB1dGVkTWFyZ2luKTsKIH0KIAogdm9pZCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojpjb21w
dXRlSGVpZ2h0QW5kTWFyZ2luKGNvbnN0IEJveCYgbGF5b3V0Qm94KQogewogICAgIGF1dG8mIGNv
bnRhaW5pbmdCbG9ja0dlb21ldHJ5ID0gZ2VvbWV0cnlGb3JCb3goKmxheW91dEJveC5jb250YWlu
aW5nQmxvY2soKSk7Ci0gICAgYXV0byBjb21wdXRlID0gWyZdKGF1dG8gdXNlZFZlcnRpY2FsVmFs
dWVzKSAtPiBIZWlnaHRBbmRNYXJnaW4geworICAgIGF1dG8gY29tcHV0ZSA9IFsmXShhdXRvIHVz
ZWRWZXJ0aWNhbFZhbHVlcykgLT4gQ29udGVudEhlaWdodEFuZE1hcmdpbiB7CiAKICAgICAgICAg
YXV0byB1c2VkSG9yaXpvbnRhbFZhbHVlcyA9IFVzZWRIb3Jpem9udGFsVmFsdWVzIHsgVXNlZEhv
cml6b250YWxWYWx1ZXM6OkNvbnN0cmFpbnRzIHsgY29udGFpbmluZ0Jsb2NrR2VvbWV0cnkgfSB9
OwogICAgICAgICBpZiAobGF5b3V0Qm94LmlzSW5GbG93KCkpCkBAIC00MDgsMzYgKzQwOCwzNiBA
QCB2b2lkIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVIZWlnaHRBbmRNYXJnaW4oY29u
c3QgQm94JiBsYXlvdXRCb3gpCiAgICAgfTsKIAogICAgIGF1dG8gdmVydGljYWxDb25zdHJhaW50
cyA9IFVzZWRWZXJ0aWNhbFZhbHVlczo6Q29uc3RyYWludHMgeyBjb250YWluaW5nQmxvY2tHZW9t
ZXRyeSB9OwotICAgIGF1dG8gaGVpZ2h0QW5kTWFyZ2luID0gY29tcHV0ZShVc2VkVmVydGljYWxW
YWx1ZXMgeyB2ZXJ0aWNhbENvbnN0cmFpbnRzIH0pOworICAgIGF1dG8gY29udGVudEhlaWdodEFu
ZE1hcmdpbiA9IGNvbXB1dGUoVXNlZFZlcnRpY2FsVmFsdWVzIHsgdmVydGljYWxDb25zdHJhaW50
cyB9KTsKICAgICBpZiAoYXV0byBtYXhIZWlnaHQgPSBnZW9tZXRyeSgpLmNvbXB1dGVkTWF4SGVp
Z2h0KGxheW91dEJveCkpIHsKLSAgICAgICAgaWYgKGhlaWdodEFuZE1hcmdpbi5oZWlnaHQgPiAq
bWF4SGVpZ2h0KSB7CisgICAgICAgIGlmIChjb250ZW50SGVpZ2h0QW5kTWFyZ2luLmNvbnRlbnRI
ZWlnaHQgPiAqbWF4SGVpZ2h0KSB7CiAgICAgICAgICAgICBhdXRvIG1heEhlaWdodEFuZE1hcmdp
biA9IGNvbXB1dGUoVXNlZFZlcnRpY2FsVmFsdWVzIHsgdmVydGljYWxDb25zdHJhaW50cywgbWF4
SGVpZ2h0IH0pOwogICAgICAgICAgICAgLy8gVXNlZCBoZWlnaHQgc2hvdWxkIHJlbWFpbiB0aGUg
c2FtZS4KLSAgICAgICAgICAgIEFTU0VSVCgobGF5b3V0U3RhdGUoKS5pblF1aXJrc01vZGUoKSAm
JiAobGF5b3V0Qm94LmlzQm9keUJveCgpIHx8IGxheW91dEJveC5pc0RvY3VtZW50Qm94KCkpKSB8
fCBtYXhIZWlnaHRBbmRNYXJnaW4uaGVpZ2h0ID09ICptYXhIZWlnaHQpOwotICAgICAgICAgICAg
aGVpZ2h0QW5kTWFyZ2luID0geyAqbWF4SGVpZ2h0LCBtYXhIZWlnaHRBbmRNYXJnaW4ubm9uQ29s
bGFwc2VkTWFyZ2luIH07CisgICAgICAgICAgICBBU1NFUlQoKGxheW91dFN0YXRlKCkuaW5RdWly
a3NNb2RlKCkgJiYgKGxheW91dEJveC5pc0JvZHlCb3goKSB8fCBsYXlvdXRCb3guaXNEb2N1bWVu
dEJveCgpKSkgfHwgbWF4SGVpZ2h0QW5kTWFyZ2luLmNvbnRlbnRIZWlnaHQgPT0gKm1heEhlaWdo
dCk7CisgICAgICAgICAgICBjb250ZW50SGVpZ2h0QW5kTWFyZ2luID0geyAqbWF4SGVpZ2h0LCBt
YXhIZWlnaHRBbmRNYXJnaW4ubm9uQ29sbGFwc2VkTWFyZ2luIH07CiAgICAgICAgIH0KICAgICB9
CiAKICAgICBpZiAoYXV0byBtaW5IZWlnaHQgPSBnZW9tZXRyeSgpLmNvbXB1dGVkTWluSGVpZ2h0
KGxheW91dEJveCkpIHsKLSAgICAgICAgaWYgKGhlaWdodEFuZE1hcmdpbi5oZWlnaHQgPCAqbWlu
SGVpZ2h0KSB7CisgICAgICAgIGlmIChjb250ZW50SGVpZ2h0QW5kTWFyZ2luLmNvbnRlbnRIZWln
aHQgPCAqbWluSGVpZ2h0KSB7CiAgICAgICAgICAgICBhdXRvIG1pbkhlaWdodEFuZE1hcmdpbiA9
IGNvbXB1dGUoVXNlZFZlcnRpY2FsVmFsdWVzIHsgdmVydGljYWxDb25zdHJhaW50cywgbWluSGVp
Z2h0IH0pOwogICAgICAgICAgICAgLy8gVXNlZCBoZWlnaHQgc2hvdWxkIHJlbWFpbiB0aGUgc2Ft
ZS4KLSAgICAgICAgICAgIEFTU0VSVCgobGF5b3V0U3RhdGUoKS5pblF1aXJrc01vZGUoKSAmJiAo
bGF5b3V0Qm94LmlzQm9keUJveCgpIHx8IGxheW91dEJveC5pc0RvY3VtZW50Qm94KCkpKSB8fCBt
aW5IZWlnaHRBbmRNYXJnaW4uaGVpZ2h0ID09ICptaW5IZWlnaHQpOwotICAgICAgICAgICAgaGVp
Z2h0QW5kTWFyZ2luID0geyAqbWluSGVpZ2h0LCBtaW5IZWlnaHRBbmRNYXJnaW4ubm9uQ29sbGFw
c2VkTWFyZ2luIH07CisgICAgICAgICAgICBBU1NFUlQoKGxheW91dFN0YXRlKCkuaW5RdWlya3NN
b2RlKCkgJiYgKGxheW91dEJveC5pc0JvZHlCb3goKSB8fCBsYXlvdXRCb3guaXNEb2N1bWVudEJv
eCgpKSkgfHwgbWluSGVpZ2h0QW5kTWFyZ2luLmNvbnRlbnRIZWlnaHQgPT0gKm1pbkhlaWdodCk7
CisgICAgICAgICAgICBjb250ZW50SGVpZ2h0QW5kTWFyZ2luID0geyAqbWluSGVpZ2h0LCBtaW5I
ZWlnaHRBbmRNYXJnaW4ubm9uQ29sbGFwc2VkTWFyZ2luIH07CiAgICAgICAgIH0KICAgICB9CiAK
ICAgICAvLyAxLiBDb21wdXRlIGNvbGxhcHNlZCBtYXJnaW5zLgogICAgIC8vIDIuIEFkanVzdCB2
ZXJ0aWNhbCBwb3NpdGlvbiB1c2luZyB0aGUgY29sbGFwc2VkIHZhbHVlcwogICAgIC8vIDMuIEFk
anVzdCBwcmV2aW91cyBpbi1mbG93IHNpYmxpbmcgbWFyZ2luIGFmdGVyIHVzaW5nIHRoaXMgbWFy
Z2luLgotICAgIGF1dG8gY29sbGFwc2VkTWFyZ2luID0gbWFyZ2luQ29sbGFwc2UoKS5jb2xsYXBz
ZWRWZXJ0aWNhbFZhbHVlcyhsYXlvdXRCb3gsIGhlaWdodEFuZE1hcmdpbi5ub25Db2xsYXBzZWRN
YXJnaW4pOwotICAgIGF1dG8gdmVydGljYWxNYXJnaW4gPSBVc2VkVmVydGljYWxNYXJnaW4geyBo
ZWlnaHRBbmRNYXJnaW4ubm9uQ29sbGFwc2VkTWFyZ2luLCBjb2xsYXBzZWRNYXJnaW4gfTsKKyAg
ICBhdXRvIGNvbGxhcHNlZE1hcmdpbiA9IG1hcmdpbkNvbGxhcHNlKCkuY29sbGFwc2VkVmVydGlj
YWxWYWx1ZXMobGF5b3V0Qm94LCBjb250ZW50SGVpZ2h0QW5kTWFyZ2luLm5vbkNvbGxhcHNlZE1h
cmdpbik7CisgICAgYXV0byB2ZXJ0aWNhbE1hcmdpbiA9IFVzZWRWZXJ0aWNhbE1hcmdpbiB7IGNv
bnRlbnRIZWlnaHRBbmRNYXJnaW4ubm9uQ29sbGFwc2VkTWFyZ2luLCBjb2xsYXBzZWRNYXJnaW4g
fTsKICAgICBhdXRvJiBkaXNwbGF5Qm94ID0gZm9ybWF0dGluZ1N0YXRlKCkuZGlzcGxheUJveChs
YXlvdXRCb3gpOwogCiAgICAgLy8gT3V0IG9mIGZsb3cgYm94ZXMgZG9uJ3QgbmVlZCB2ZXJ0aWNh
bCBhZGp1c3RtZW50IGFmdGVyIG1hcmdpbiBjb2xsYXBzaW5nLgogICAgIGlmIChsYXlvdXRCb3gu
aXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkpIHsKICAgICAgICAgQVNTRVJUKCFoYXNFc3RpbWF0ZWRN
YXJnaW5CZWZvcmUobGF5b3V0Qm94KSk7Ci0gICAgICAgIGRpc3BsYXlCb3guc2V0Q29udGVudEJv
eEhlaWdodChoZWlnaHRBbmRNYXJnaW4uaGVpZ2h0KTsKKyAgICAgICAgZGlzcGxheUJveC5zZXRD
b250ZW50Qm94SGVpZ2h0KGNvbnRlbnRIZWlnaHRBbmRNYXJnaW4uY29udGVudEhlaWdodCk7CiAg
ICAgICAgIGRpc3BsYXlCb3guc2V0VmVydGljYWxNYXJnaW4odmVydGljYWxNYXJnaW4pOwogICAg
ICAgICByZXR1cm47CiAgICAgfQpAQCAtNDQ1LDcgKzQ0NSw3IEBAIHZvaWQgQmxvY2tGb3JtYXR0
aW5nQ29udGV4dDo6Y29tcHV0ZUhlaWdodEFuZE1hcmdpbihjb25zdCBCb3gmIGxheW91dEJveCkK
ICAgICBBU1NFUlQoIWhhc0VzdGltYXRlZE1hcmdpbkJlZm9yZShsYXlvdXRCb3gpIHx8IGVzdGlt
YXRlZE1hcmdpbkJlZm9yZShsYXlvdXRCb3gpLnVzZWRWYWx1ZSgpID09IHZlcnRpY2FsTWFyZ2lu
LmJlZm9yZSgpKTsKICAgICByZW1vdmVFc3RpbWF0ZWRNYXJnaW5CZWZvcmUobGF5b3V0Qm94KTsK
ICAgICBkaXNwbGF5Qm94LnNldFRvcCh2ZXJ0aWNhbFBvc2l0aW9uV2l0aE1hcmdpbihsYXlvdXRC
b3gsIHZlcnRpY2FsTWFyZ2luKSk7Ci0gICAgZGlzcGxheUJveC5zZXRDb250ZW50Qm94SGVpZ2h0
KGhlaWdodEFuZE1hcmdpbi5oZWlnaHQpOworICAgIGRpc3BsYXlCb3guc2V0Q29udGVudEJveEhl
aWdodChjb250ZW50SGVpZ2h0QW5kTWFyZ2luLmNvbnRlbnRIZWlnaHQpOwogICAgIGRpc3BsYXlC
b3guc2V0VmVydGljYWxNYXJnaW4odmVydGljYWxNYXJnaW4pOwogCiAgICAgYXV0byBtYXJnaW5D
b2xsYXBzZSA9IHRoaXMtPm1hcmdpbkNvbGxhcHNlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4
dC5oCmluZGV4IDg4NjFkYjRiZDI3ZjY2ZTk0ZjdiMjk4MzU3MmY0NGM1YmEzZjNhN2UuLmZhMDMy
ZjQ2MWYyMDE4YzBhNTA1NDg2ZDY1ODc5MTM5MWRmYjAzNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5n
Q29udGV4dC5oCkBAIC03NCw4ICs3NCw4IEBAIHByaXZhdGU6CiAgICAgLy8gVGhpcyBjbGFzcyBp
bXBsZW1lbnRzIHBvc2l0aW9uaW5nIGFuZCBzaXppbmcgZm9yIGJveGVzIHBhcnRpY2lwYXRpbmcg
aW4gYSBibG9jayBmb3JtYXR0aW5nIGNvbnRleHQuCiAgICAgY2xhc3MgR2VvbWV0cnkgOiBwdWJs
aWMgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEhl
aWdodEFuZE1hcmdpbiBpbkZsb3dIZWlnaHRBbmRNYXJnaW4oY29uc3QgQm94JiwgVXNlZEhvcml6
b250YWxWYWx1ZXMsIFVzZWRWZXJ0aWNhbFZhbHVlcyk7Ci0gICAgICAgIFdpZHRoQW5kTWFyZ2lu
IGluRmxvd1dpZHRoQW5kTWFyZ2luKGNvbnN0IEJveCYsIFVzZWRIb3Jpem9udGFsVmFsdWVzKTsK
KyAgICAgICAgQ29udGVudEhlaWdodEFuZE1hcmdpbiBpbkZsb3dIZWlnaHRBbmRNYXJnaW4oY29u
c3QgQm94JiwgVXNlZEhvcml6b250YWxWYWx1ZXMsIFVzZWRWZXJ0aWNhbFZhbHVlcyk7CisgICAg
ICAgIENvbnRlbnRXaWR0aEFuZE1hcmdpbiBpbkZsb3dXaWR0aEFuZE1hcmdpbihjb25zdCBCb3gm
LCBVc2VkSG9yaXpvbnRhbFZhbHVlcyk7CiAKICAgICAgICAgUG9pbnQgc3RhdGljUG9zaXRpb24o
Y29uc3QgQm94JiwgVXNlZEhvcml6b250YWxWYWx1ZXMsIFVzZWRWZXJ0aWNhbFZhbHVlcykgY29u
c3Q7CiAgICAgICAgIExheW91dFVuaXQgc3RhdGljVmVydGljYWxQb3NpdGlvbihjb25zdCBCb3gm
LCBVc2VkVmVydGljYWxWYWx1ZXMpIGNvbnN0OwpAQCAtODcsOSArODcsOSBAQCBwcml2YXRlOgog
ICAgICAgICBmcmllbmQgY2xhc3MgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDsKICAgICAgICAgR2Vv
bWV0cnkoY29uc3QgQmxvY2tGb3JtYXR0aW5nQ29udGV4dCYpOwogCi0gICAgICAgIEhlaWdodEFu
ZE1hcmdpbiBpbkZsb3dOb25SZXBsYWNlZEhlaWdodEFuZE1hcmdpbihjb25zdCBCb3gmLCBVc2Vk
SG9yaXpvbnRhbFZhbHVlcywgVXNlZFZlcnRpY2FsVmFsdWVzKTsKLSAgICAgICAgV2lkdGhBbmRN
YXJnaW4gaW5GbG93Tm9uUmVwbGFjZWRXaWR0aEFuZE1hcmdpbihjb25zdCBCb3gmLCBVc2VkSG9y
aXpvbnRhbFZhbHVlcykgY29uc3Q7Ci0gICAgICAgIFdpZHRoQW5kTWFyZ2luIGluRmxvd1JlcGxh
Y2VkV2lkdGhBbmRNYXJnaW4oY29uc3QgQm94JiwgVXNlZEhvcml6b250YWxWYWx1ZXMpIGNvbnN0
OworICAgICAgICBDb250ZW50SGVpZ2h0QW5kTWFyZ2luIGluRmxvd05vblJlcGxhY2VkSGVpZ2h0
QW5kTWFyZ2luKGNvbnN0IEJveCYsIFVzZWRIb3Jpem9udGFsVmFsdWVzLCBVc2VkVmVydGljYWxW
YWx1ZXMpOworICAgICAgICBDb250ZW50V2lkdGhBbmRNYXJnaW4gaW5GbG93Tm9uUmVwbGFjZWRX
aWR0aEFuZE1hcmdpbihjb25zdCBCb3gmLCBVc2VkSG9yaXpvbnRhbFZhbHVlcykgY29uc3Q7Cisg
ICAgICAgIENvbnRlbnRXaWR0aEFuZE1hcmdpbiBpbkZsb3dSZXBsYWNlZFdpZHRoQW5kTWFyZ2lu
KGNvbnN0IEJveCYsIFVzZWRIb3Jpem9udGFsVmFsdWVzKSBjb25zdDsKICAgICAgICAgUG9pbnQg
c3RhdGljUG9zaXRpb25Gb3JPdXRPZkZsb3dQb3NpdGlvbmVkKGNvbnN0IEJveCYpIGNvbnN0Owog
CiAgICAgICAgIGNvbnN0IEJsb2NrRm9ybWF0dGluZ0NvbnRleHQmIGZvcm1hdHRpbmdDb250ZXh0
KCkgY29uc3QgeyByZXR1cm4gZG93bmNhc3Q8QmxvY2tGb3JtYXR0aW5nQ29udGV4dD4oRm9ybWF0
dGluZ0NvbnRleHQ6Okdlb21ldHJ5Ojpmb3JtYXR0aW5nQ29udGV4dCgpKTsgfQpAQCAtMTQwLDcg
KzE0MCw3IEBAIHByaXZhdGU6CiAgICAgY2xhc3MgUXVpcmtzIDogcHVibGljIEZvcm1hdHRpbmdD
b250ZXh0OjpRdWlya3MgewogICAgIHB1YmxpYzoKICAgICAgICAgYm9vbCBuZWVkc1N0cmV0Y2hp
bmcoY29uc3QgQm94JikgY29uc3Q7Ci0gICAgICAgIEhlaWdodEFuZE1hcmdpbiBzdHJldGNoZWRJ
bkZsb3dIZWlnaHQoY29uc3QgQm94JiwgSGVpZ2h0QW5kTWFyZ2luKTsKKyAgICAgICAgQ29udGVu
dEhlaWdodEFuZE1hcmdpbiBzdHJldGNoZWRJbkZsb3dIZWlnaHQoY29uc3QgQm94JiwgQ29udGVu
dEhlaWdodEFuZE1hcmdpbik7CiAKICAgICAgICAgYm9vbCBzaG91bGRJZ25vcmVDb2xsYXBzZWRR
dWlya01hcmdpbihjb25zdCBCb3gmKSBjb25zdDsKICAgICAgICAgYm9vbCBzaG91bGRJZ25vcmVN
YXJnaW5CZWZvcmUoY29uc3QgQm94JikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGlu
Z0NvbnRleHRHZW9tZXRyeS5jcHAKaW5kZXggODExYjE2M2Q3OGZmYTExOGRmNDFkZGYwYTU1ODQ2
ZGVlZDBmNDIyNi4uZjI3NTEwOWVmYzk5N2M4MmFlOWM1NWZjYmYxM2I3YmU5YmRlZjIxNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1h
dHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9j
a2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcApAQCAtMzcsMTIg
KzM3LDEyIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgTGF5b3V0IHsKIAotSGVp
Z2h0QW5kTWFyZ2luIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbkZsb3dOb25S
ZXBsYWNlZEhlaWdodEFuZE1hcmdpbihjb25zdCBCb3gmIGxheW91dEJveCwgVXNlZEhvcml6b250
YWxWYWx1ZXMgdXNlZEhvcml6b250YWxWYWx1ZXMsIFVzZWRWZXJ0aWNhbFZhbHVlcyB1c2VkVmFs
dWVzKQorQ29udGVudEhlaWdodEFuZE1hcmdpbiBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9t
ZXRyeTo6aW5GbG93Tm9uUmVwbGFjZWRIZWlnaHRBbmRNYXJnaW4oY29uc3QgQm94JiBsYXlvdXRC
b3gsIFVzZWRIb3Jpem9udGFsVmFsdWVzIHVzZWRIb3Jpem9udGFsVmFsdWVzLCBVc2VkVmVydGlj
YWxWYWx1ZXMgdXNlZFZhbHVlcykKIHsKICAgICBBU1NFUlQobGF5b3V0Qm94LmlzSW5GbG93KCkg
JiYgIWxheW91dEJveC5yZXBsYWNlZCgpKTsKICAgICBBU1NFUlQobGF5b3V0Qm94LmlzT3ZlcmZs
b3dWaXNpYmxlKCkpOwogCi0gICAgYXV0byBjb21wdXRlID0gWyZdKCkgLT4gSGVpZ2h0QW5kTWFy
Z2luIHsKKyAgICBhdXRvIGNvbXB1dGUgPSBbJl0oKSAtPiBDb250ZW50SGVpZ2h0QW5kTWFyZ2lu
IHsKIAogICAgICAgICAvLyAxMC42LjMgQmxvY2stbGV2ZWwgbm9uLXJlcGxhY2VkIGVsZW1lbnRz
IGluIG5vcm1hbCBmbG93IHdoZW4gJ292ZXJmbG93JyBjb21wdXRlcyB0byAndmlzaWJsZScKICAg
ICAgICAgLy8KQEAgLTYxLDEzICs2MSwxMCBAQCBIZWlnaHRBbmRNYXJnaW4gQmxvY2tGb3JtYXR0
aW5nQ29udGV4dDo6R2VvbWV0cnk6OmluRmxvd05vblJlcGxhY2VkSGVpZ2h0QW5kTWFyZwogICAg
ICAgICBhdXRvIGNvbXB1dGVkVmVydGljYWxNYXJnaW4gPSBHZW9tZXRyeTo6Y29tcHV0ZWRWZXJ0
aWNhbE1hcmdpbihsYXlvdXRCb3gsIHVzZWRIb3Jpem9udGFsVmFsdWVzKTsKICAgICAgICAgYXV0
byBub25Db2xsYXBzZWRNYXJnaW4gPSBVc2VkVmVydGljYWxNYXJnaW46Ok5vbkNvbGxhcHNlZFZh
bHVlcyB7IGNvbXB1dGVkVmVydGljYWxNYXJnaW4uYmVmb3JlLnZhbHVlT3IoMCksIGNvbXB1dGVk
VmVydGljYWxNYXJnaW4uYWZ0ZXIudmFsdWVPcigwKSB9OyAKICAgICAgICAgYXV0byBib3JkZXJB
bmRQYWRkaW5nVG9wID0gYm94R2VvbWV0cnkuYm9yZGVyVG9wKCkgKyBib3hHZW9tZXRyeS5wYWRk
aW5nVG9wKCkudmFsdWVPcigwKTsKLSAgICAgICAgYXV0byBoZWlnaHQgPSB1c2VkVmFsdWVzLmhl
aWdodCA/IHVzZWRWYWx1ZXMuaGVpZ2h0LnZhbHVlKCkgOiBjb21wdXRlZEhlaWdodFZhbHVlKGxh
eW91dEJveCwgSGVpZ2h0VHlwZTo6Tm9ybWFsKTsKKyAgICAgICAgYXV0byBoZWlnaHQgPSB1c2Vk
VmFsdWVzLmhlaWdodCA/IHVzZWRWYWx1ZXMuaGVpZ2h0LnZhbHVlKCkgOiBjb21wdXRlZENvbnRl
bnRIZWlnaHQobGF5b3V0Qm94KTsKIAotICAgICAgICBpZiAoaGVpZ2h0KSB7Ci0gICAgICAgICAg
ICBhdXRvIGJvcmRlckFuZFBhZGRpbmdCb3R0b20gPSBib3hHZW9tZXRyeS5ib3JkZXJCb3R0b20o
KSArIGJveEdlb21ldHJ5LnBhZGRpbmdCb3R0b20oKS52YWx1ZU9yKDApOwotICAgICAgICAgICAg
YXV0byBjb250ZW50SGVpZ2h0ID0gbGF5b3V0Qm94LnN0eWxlKCkuYm94U2l6aW5nKCkgPT0gQm94
U2l6aW5nOjpDb250ZW50Qm94ID8gKmhlaWdodCA6ICpoZWlnaHQgLSAoYm9yZGVyQW5kUGFkZGlu
Z1RvcCArIGJvcmRlckFuZFBhZGRpbmdCb3R0b20pOyAgCi0gICAgICAgICAgICByZXR1cm4geyBj
b250ZW50SGVpZ2h0LCBub25Db2xsYXBzZWRNYXJnaW4gfTsKLSAgICAgICAgfQorICAgICAgICBp
ZiAoaGVpZ2h0KQorICAgICAgICAgICAgcmV0dXJuIHsgKmhlaWdodCwgbm9uQ29sbGFwc2VkTWFy
Z2luIH07CiAKICAgICAgICAgaWYgKCFpczxDb250YWluZXI+KGxheW91dEJveCkgfHwgIWRvd25j
YXN0PENvbnRhaW5lcj4obGF5b3V0Qm94KS5oYXNJbkZsb3dDaGlsZCgpKQogICAgICAgICAgICAg
cmV0dXJuIHsgMCwgbm9uQ29sbGFwc2VkTWFyZ2luIH07CkBAIC0xMDMsMTIgKzEwMCwxMiBAQCBI
ZWlnaHRBbmRNYXJnaW4gQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmluRmxvd05v
blJlcGxhY2VkSGVpZ2h0QW5kTWFyZwogICAgICAgICByZXR1cm4geyAwLCBub25Db2xsYXBzZWRN
YXJnaW4gfTsKICAgICB9OwogCi0gICAgYXV0byBoZWlnaHRBbmRNYXJnaW4gPSBjb21wdXRlKCk7
Ci0gICAgTE9HX1dJVEhfU1RSRUFNKEZvcm1hdHRpbmdDb250ZXh0TGF5b3V0LCBzdHJlYW0gPDwg
IltIZWlnaHRdW01hcmdpbl0gLT4gaW5mbG93IG5vbi1yZXBsYWNlZCAtPiBoZWlnaHQoIiA8PCBo
ZWlnaHRBbmRNYXJnaW4uaGVpZ2h0IDw8ICJweCkgbWFyZ2luKCIgPDwgaGVpZ2h0QW5kTWFyZ2lu
Lm5vbkNvbGxhcHNlZE1hcmdpbi5iZWZvcmUgPDwgInB4LCAiIDw8IGhlaWdodEFuZE1hcmdpbi5u
b25Db2xsYXBzZWRNYXJnaW4uYWZ0ZXIgPDwgInB4KSAtPiBsYXlvdXRCb3goIiA8PCAmbGF5b3V0
Qm94IDw8ICIpIik7Ci0gICAgcmV0dXJuIGhlaWdodEFuZE1hcmdpbjsKKyAgICBhdXRvIGNvbnRl
bnRIZWlnaHRBbmRNYXJnaW4gPSBjb21wdXRlKCk7CisgICAgTE9HX1dJVEhfU1RSRUFNKEZvcm1h
dHRpbmdDb250ZXh0TGF5b3V0LCBzdHJlYW0gPDwgIltIZWlnaHRdW01hcmdpbl0gLT4gaW5mbG93
IG5vbi1yZXBsYWNlZCAtPiBoZWlnaHQoIiA8PCBjb250ZW50SGVpZ2h0QW5kTWFyZ2luLmNvbnRl
bnRIZWlnaHQgPDwgInB4KSBtYXJnaW4oIiA8PCBjb250ZW50SGVpZ2h0QW5kTWFyZ2luLm5vbkNv
bGxhcHNlZE1hcmdpbi5iZWZvcmUgPDwgInB4LCAiIDw8IGNvbnRlbnRIZWlnaHRBbmRNYXJnaW4u
bm9uQ29sbGFwc2VkTWFyZ2luLmFmdGVyIDw8ICJweCkgLT4gbGF5b3V0Qm94KCIgPDwgJmxheW91
dEJveCA8PCAiKSIpOworICAgIHJldHVybiBjb250ZW50SGVpZ2h0QW5kTWFyZ2luOwogfQogCi1X
aWR0aEFuZE1hcmdpbiBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5GbG93Tm9u
UmVwbGFjZWRXaWR0aEFuZE1hcmdpbihjb25zdCBCb3gmIGxheW91dEJveCwgVXNlZEhvcml6b250
YWxWYWx1ZXMgdXNlZEhvcml6b250YWxWYWx1ZXMpIGNvbnN0CitDb250ZW50V2lkdGhBbmRNYXJn
aW4gQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmluRmxvd05vblJlcGxhY2VkV2lk
dGhBbmRNYXJnaW4oY29uc3QgQm94JiBsYXlvdXRCb3gsIFVzZWRIb3Jpem9udGFsVmFsdWVzIHVz
ZWRIb3Jpem9udGFsVmFsdWVzKSBjb25zdAogewogICAgIEFTU0VSVChsYXlvdXRCb3guaXNJbkZs
b3coKSk7CiAKQEAgLTE5NSwxNSArMTkyLDE1IEBAIFdpZHRoQW5kTWFyZ2luIEJsb2NrRm9ybWF0
dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbkZsb3dOb25SZXBsYWNlZFdpZHRoQW5kTWFyZ2luCiAK
ICAgICAgICAgQVNTRVJUKHdpZHRoKTsKIAotICAgICAgICByZXR1cm4gV2lkdGhBbmRNYXJnaW4g
eyBjb250ZW50V2lkdGgoKSwgdXNlZEhvcml6b250YWxNYXJnaW4sIGNvbXB1dGVkSG9yaXpvbnRh
bE1hcmdpbiB9OworICAgICAgICByZXR1cm4gQ29udGVudFdpZHRoQW5kTWFyZ2luIHsgY29udGVu
dFdpZHRoKCksIHVzZWRIb3Jpem9udGFsTWFyZ2luLCBjb21wdXRlZEhvcml6b250YWxNYXJnaW4g
fTsKICAgICB9OwogCi0gICAgYXV0byB3aWR0aEFuZE1hcmdpbiA9IGNvbXB1dGUoKTsKLSAgICBM
T0dfV0lUSF9TVFJFQU0oRm9ybWF0dGluZ0NvbnRleHRMYXlvdXQsIHN0cmVhbSA8PCAiW1dpZHRo
XVtNYXJnaW5dIC0+IGluZmxvdyBub24tcmVwbGFjZWQgLT4gd2lkdGgoIiA8PCB3aWR0aEFuZE1h
cmdpbi53aWR0aCA8PCAicHgpIG1hcmdpbigiIDw8IHdpZHRoQW5kTWFyZ2luLnVzZWRNYXJnaW4u
c3RhcnQgPDwgInB4LCAiIDw8IHdpZHRoQW5kTWFyZ2luLnVzZWRNYXJnaW4uZW5kIDw8ICJweCkg
LT4gbGF5b3V0Qm94KCIgPDwgJmxheW91dEJveCA8PCAiKSIpOwotICAgIHJldHVybiB3aWR0aEFu
ZE1hcmdpbjsKKyAgICBhdXRvIGNvbnRlbnRXaWR0aEFuZE1hcmdpbiA9IGNvbXB1dGUoKTsKKyAg
ICBMT0dfV0lUSF9TVFJFQU0oRm9ybWF0dGluZ0NvbnRleHRMYXlvdXQsIHN0cmVhbSA8PCAiW1dp
ZHRoXVtNYXJnaW5dIC0+IGluZmxvdyBub24tcmVwbGFjZWQgLT4gd2lkdGgoIiA8PCBjb250ZW50
V2lkdGhBbmRNYXJnaW4uY29udGVudFdpZHRoIDw8ICJweCkgbWFyZ2luKCIgPDwgY29udGVudFdp
ZHRoQW5kTWFyZ2luLnVzZWRNYXJnaW4uc3RhcnQgPDwgInB4LCAiIDw8IGNvbnRlbnRXaWR0aEFu
ZE1hcmdpbi51c2VkTWFyZ2luLmVuZCA8PCAicHgpIC0+IGxheW91dEJveCgiIDw8ICZsYXlvdXRC
b3ggPDwgIikiKTsKKyAgICByZXR1cm4gY29udGVudFdpZHRoQW5kTWFyZ2luOwogfQogCi1XaWR0
aEFuZE1hcmdpbiBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5GbG93UmVwbGFj
ZWRXaWR0aEFuZE1hcmdpbihjb25zdCBCb3gmIGxheW91dEJveCwgVXNlZEhvcml6b250YWxWYWx1
ZXMgdXNlZFZhbHVlcykgY29uc3QKK0NvbnRlbnRXaWR0aEFuZE1hcmdpbiBCbG9ja0Zvcm1hdHRp
bmdDb250ZXh0OjpHZW9tZXRyeTo6aW5GbG93UmVwbGFjZWRXaWR0aEFuZE1hcmdpbihjb25zdCBC
b3gmIGxheW91dEJveCwgVXNlZEhvcml6b250YWxWYWx1ZXMgdXNlZFZhbHVlcykgY29uc3QKIHsK
ICAgICBBU1NFUlQobGF5b3V0Qm94LmlzSW5GbG93KCkgJiYgbGF5b3V0Qm94LnJlcGxhY2VkKCkp
OwogCkBAIC0yMTMsNyArMjEwLDcgQEAgV2lkdGhBbmRNYXJnaW4gQmxvY2tGb3JtYXR0aW5nQ29u
dGV4dDo6R2VvbWV0cnk6OmluRmxvd1JlcGxhY2VkV2lkdGhBbmRNYXJnaW4oY28KICAgICAvLyAy
LiBUaGVuIHRoZSBydWxlcyBmb3Igbm9uLXJlcGxhY2VkIGJsb2NrLWxldmVsIGVsZW1lbnRzIGFy
ZSBhcHBsaWVkIHRvIGRldGVybWluZSB0aGUgbWFyZ2lucy4KIAogICAgIC8vICMxCi0gICAgdXNl
ZFZhbHVlcy53aWR0aCA9IGlubGluZVJlcGxhY2VkV2lkdGhBbmRNYXJnaW4obGF5b3V0Qm94LCB1
c2VkVmFsdWVzKS53aWR0aDsKKyAgICB1c2VkVmFsdWVzLndpZHRoID0gaW5saW5lUmVwbGFjZWRX
aWR0aEFuZE1hcmdpbihsYXlvdXRCb3gsIHVzZWRWYWx1ZXMpLmNvbnRlbnRXaWR0aDsKICAgICAv
LyAjMgogICAgIGF1dG8gbm9uUmVwbGFjZWRXaWR0aEFuZE1hcmdpbiA9IGluRmxvd05vblJlcGxh
Y2VkV2lkdGhBbmRNYXJnaW4obGF5b3V0Qm94LCB1c2VkVmFsdWVzKTsKIApAQCAtMjQ2LDcgKzI0
Myw3IEBAIFBvaW50IEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpzdGF0aWNQb3Np
dGlvbihjb25zdCBCb3gmIGxheW91dEJveCwgVXNlCiAgICAgcmV0dXJuIHsgc3RhdGljSG9yaXpv
bnRhbFBvc2l0aW9uKGxheW91dEJveCwgdXNlZEhvcml6b250YWxWYWx1ZXMpLCBzdGF0aWNWZXJ0
aWNhbFBvc2l0aW9uKGxheW91dEJveCwgdXNlZFZlcnRpY2FsVmFsdWVzKSB9OwogfQogCi1IZWln
aHRBbmRNYXJnaW4gQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmluRmxvd0hlaWdo
dEFuZE1hcmdpbihjb25zdCBCb3gmIGxheW91dEJveCwgVXNlZEhvcml6b250YWxWYWx1ZXMgdXNl
ZEhvcml6b250YWxWYWx1ZXMsIFVzZWRWZXJ0aWNhbFZhbHVlcyB1c2VkVmVydGljYWxWYWx1ZXMp
CitDb250ZW50SGVpZ2h0QW5kTWFyZ2luIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5
OjppbkZsb3dIZWlnaHRBbmRNYXJnaW4oY29uc3QgQm94JiBsYXlvdXRCb3gsIFVzZWRIb3Jpem9u
dGFsVmFsdWVzIHVzZWRIb3Jpem9udGFsVmFsdWVzLCBVc2VkVmVydGljYWxWYWx1ZXMgdXNlZFZl
cnRpY2FsVmFsdWVzKQogewogICAgIEFTU0VSVChsYXlvdXRCb3guaXNJbkZsb3coKSk7CiAKQEAg
LTI1NSwzMCArMjUyLDMwIEBAIEhlaWdodEFuZE1hcmdpbiBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0
OjpHZW9tZXRyeTo6aW5GbG93SGVpZ2h0QW5kTWFyZ2luKGNvbnN0IEJvCiAgICAgaWYgKGxheW91
dEJveC5yZXBsYWNlZCgpKQogICAgICAgICByZXR1cm4gaW5saW5lUmVwbGFjZWRIZWlnaHRBbmRN
YXJnaW4obGF5b3V0Qm94LCB1c2VkSG9yaXpvbnRhbFZhbHVlcywgdXNlZFZlcnRpY2FsVmFsdWVz
KTsKIAotICAgIEhlaWdodEFuZE1hcmdpbiBoZWlnaHRBbmRNYXJnaW47CisgICAgQ29udGVudEhl
aWdodEFuZE1hcmdpbiBjb250ZW50SGVpZ2h0QW5kTWFyZ2luOwogICAgIC8vIEZJWE1FOiBMZXQn
cyBzcGVjaWFsIGNhc2UgdGhlIHRhYmxlIGhlaWdodCBjb21wdXRhdGlvbiBmb3Igbm93IC0+IGZp
Z3VyZSBvdXQgd2hldGhlciB0YWJsZXMgZmFsbCBpbnRvIHRoZSAiaW5GbG93Tm9uUmVwbGFjZWRI
ZWlnaHRBbmRNYXJnaW4iIGNhdGVnb3J5LgogICAgIGlmIChsYXlvdXRCb3guZXN0YWJsaXNoZXNU
YWJsZUZvcm1hdHRpbmdDb250ZXh0KCkpCi0gICAgICAgIGhlaWdodEFuZE1hcmdpbiA9IGNvbXBs
aWNhdGVkQ2FzZXMobGF5b3V0Qm94LCB1c2VkSG9yaXpvbnRhbFZhbHVlcywgdXNlZFZlcnRpY2Fs
VmFsdWVzKTsKKyAgICAgICAgY29udGVudEhlaWdodEFuZE1hcmdpbiA9IGNvbXBsaWNhdGVkQ2Fz
ZXMobGF5b3V0Qm94LCB1c2VkSG9yaXpvbnRhbFZhbHVlcywgdXNlZFZlcnRpY2FsVmFsdWVzKTsK
ICAgICBlbHNlIGlmIChsYXlvdXRCb3guaXNPdmVyZmxvd1Zpc2libGUoKSAmJiAhbGF5b3V0Qm94
LmlzRG9jdW1lbnRCb3goKSkgewogICAgICAgICAvLyBUT0RPOiBGaWd1cmUgb3V0IHRoZSBjYXNl
IGZvciB0aGUgZG9jdW1lbnQgZWxlbWVudC4gTGV0J3MganVzdCBjb21wbGljYXRlZC1jYXNlIGl0
IGZvciBub3cuCi0gICAgICAgIGhlaWdodEFuZE1hcmdpbiA9IGluRmxvd05vblJlcGxhY2VkSGVp
Z2h0QW5kTWFyZ2luKGxheW91dEJveCwgdXNlZEhvcml6b250YWxWYWx1ZXMsIHVzZWRWZXJ0aWNh
bFZhbHVlcyk7CisgICAgICAgIGNvbnRlbnRIZWlnaHRBbmRNYXJnaW4gPSBpbkZsb3dOb25SZXBs
YWNlZEhlaWdodEFuZE1hcmdpbihsYXlvdXRCb3gsIHVzZWRIb3Jpem9udGFsVmFsdWVzLCB1c2Vk
VmVydGljYWxWYWx1ZXMpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIDEwLjYuNiBDb21wbGlj
YXRlZCBjYXNlcwogICAgICAgICAvLyBCbG9jay1sZXZlbCwgbm9uLXJlcGxhY2VkIGVsZW1lbnRz
IGluIG5vcm1hbCBmbG93IHdoZW4gJ292ZXJmbG93JyBkb2VzIG5vdCBjb21wdXRlIHRvICd2aXNp
YmxlJyAoZXhjZXB0IGlmIHRoZSAnb3ZlcmZsb3cnIHByb3BlcnR5J3MgdmFsdWUgaGFzIGJlZW4g
cHJvcGFnYXRlZCB0byB0aGUgdmlld3BvcnQpLgotICAgICAgICBoZWlnaHRBbmRNYXJnaW4gPSBj
b21wbGljYXRlZENhc2VzKGxheW91dEJveCwgdXNlZEhvcml6b250YWxWYWx1ZXMsIHVzZWRWZXJ0
aWNhbFZhbHVlcyk7CisgICAgICAgIGNvbnRlbnRIZWlnaHRBbmRNYXJnaW4gPSBjb21wbGljYXRl
ZENhc2VzKGxheW91dEJveCwgdXNlZEhvcml6b250YWxWYWx1ZXMsIHVzZWRWZXJ0aWNhbFZhbHVl
cyk7CiAgICAgfQogCiAgICAgYXV0byBxdWlya3MgPSBmb3JtYXR0aW5nQ29udGV4dCgpLnF1aXJr
cygpOwogICAgIGlmICghcXVpcmtzLm5lZWRzU3RyZXRjaGluZyhsYXlvdXRCb3gpKQotICAgICAg
ICByZXR1cm4gaGVpZ2h0QW5kTWFyZ2luOworICAgICAgICByZXR1cm4gY29udGVudEhlaWdodEFu
ZE1hcmdpbjsKIAotICAgIGhlaWdodEFuZE1hcmdpbiA9IHF1aXJrcy5zdHJldGNoZWRJbkZsb3dI
ZWlnaHQobGF5b3V0Qm94LCBoZWlnaHRBbmRNYXJnaW4pOworICAgIGNvbnRlbnRIZWlnaHRBbmRN
YXJnaW4gPSBxdWlya3Muc3RyZXRjaGVkSW5GbG93SGVpZ2h0KGxheW91dEJveCwgY29udGVudEhl
aWdodEFuZE1hcmdpbik7CiAKLSAgICBMT0dfV0lUSF9TVFJFQU0oRm9ybWF0dGluZ0NvbnRleHRM
YXlvdXQsIHN0cmVhbSA8PCAiW0hlaWdodF1bTWFyZ2luXSAtPiBpbmZsb3cgbm9uLXJlcGxhY2Vk
IC0+IHN0cmVjaGVkIHRvIHZpZXdwb3J0IC0+IGhlaWdodCgiIDw8IGhlaWdodEFuZE1hcmdpbi5o
ZWlnaHQgPDwgInB4KSBtYXJnaW4oIiA8PCBoZWlnaHRBbmRNYXJnaW4ubm9uQ29sbGFwc2VkTWFy
Z2luLmJlZm9yZSA8PCAicHgsICIgPDwgaGVpZ2h0QW5kTWFyZ2luLm5vbkNvbGxhcHNlZE1hcmdp
bi5hZnRlciA8PCAicHgpIC0+IGxheW91dEJveCgiIDw8ICZsYXlvdXRCb3ggPDwgIikiKTsKLSAg
ICByZXR1cm4gaGVpZ2h0QW5kTWFyZ2luOworICAgIExPR19XSVRIX1NUUkVBTShGb3JtYXR0aW5n
Q29udGV4dExheW91dCwgc3RyZWFtIDw8ICJbSGVpZ2h0XVtNYXJnaW5dIC0+IGluZmxvdyBub24t
cmVwbGFjZWQgLT4gc3RyZWNoZWQgdG8gdmlld3BvcnQgLT4gaGVpZ2h0KCIgPDwgY29udGVudEhl
aWdodEFuZE1hcmdpbi5jb250ZW50SGVpZ2h0IDw8ICJweCkgbWFyZ2luKCIgPDwgY29udGVudEhl
aWdodEFuZE1hcmdpbi5ub25Db2xsYXBzZWRNYXJnaW4uYmVmb3JlIDw8ICJweCwgIiA8PCBjb250
ZW50SGVpZ2h0QW5kTWFyZ2luLm5vbkNvbGxhcHNlZE1hcmdpbi5hZnRlciA8PCAicHgpIC0+IGxh
eW91dEJveCgiIDw8ICZsYXlvdXRCb3ggPDwgIikiKTsKKyAgICByZXR1cm4gY29udGVudEhlaWdo
dEFuZE1hcmdpbjsKIH0KIAotV2lkdGhBbmRNYXJnaW4gQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6
R2VvbWV0cnk6OmluRmxvd1dpZHRoQW5kTWFyZ2luKGNvbnN0IEJveCYgbGF5b3V0Qm94LCBVc2Vk
SG9yaXpvbnRhbFZhbHVlcyB1c2VkSG9yaXpvbnRhbFZhbHVlcykKK0NvbnRlbnRXaWR0aEFuZE1h
cmdpbiBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5GbG93V2lkdGhBbmRNYXJn
aW4oY29uc3QgQm94JiBsYXlvdXRCb3gsIFVzZWRIb3Jpem9udGFsVmFsdWVzIHVzZWRIb3Jpem9u
dGFsVmFsdWVzKQogewogICAgIEFTU0VSVChsYXlvdXRCb3guaXNJbkZsb3coKSk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0
aW5nQ29udGV4dFF1aXJrcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0
aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRRdWlya3MuY3BwCmluZGV4IDMyNDk1ZjhiZGM2ZGY1
YzRhNjY4MmFjNzExYjQ2NTBkZTVmY2Y1ZGIuLjVkOTZjMmIyMmVjYWZjOGE0ZDdlNzgwNWMzYTBj
Yzk3NjM5MDNlOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1h
dHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dFF1aXJrcy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0UXVpcmtzLmNw
cApAQCAtNjAsNyArNjAsNyBAQCBib29sIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OlF1aXJrczo6
bmVlZHNTdHJldGNoaW5nKGNvbnN0IEJveCYgbGF5b3V0Qm94KSBjb25zdAogICAgIHJldHVybiBs
YXlvdXRCb3guc3R5bGUoKS5sb2dpY2FsSGVpZ2h0KCkuaXNBdXRvKCk7CiB9CiAKLUhlaWdodEFu
ZE1hcmdpbiBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpRdWlya3M6OnN0cmV0Y2hlZEluRmxvd0hl
aWdodChjb25zdCBCb3gmIGxheW91dEJveCwgSGVpZ2h0QW5kTWFyZ2luIGhlaWdodEFuZE1hcmdp
bikKK0NvbnRlbnRIZWlnaHRBbmRNYXJnaW4gQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6UXVpcmtz
OjpzdHJldGNoZWRJbkZsb3dIZWlnaHQoY29uc3QgQm94JiBsYXlvdXRCb3gsIENvbnRlbnRIZWln
aHRBbmRNYXJnaW4gY29udGVudEhlaWdodEFuZE1hcmdpbikKIHsKICAgICBBU1NFUlQobGF5b3V0
Qm94LmlzSW5GbG93KCkpOwogICAgIEFTU0VSVChsYXlvdXRCb3guaXNEb2N1bWVudEJveCgpIHx8
IGxheW91dEJveC5pc0JvZHlCb3goKSk7CkBAIC03Niw3ICs3Niw3IEBAIEhlaWdodEFuZE1hcmdp
biBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpRdWlya3M6OnN0cmV0Y2hlZEluRmxvd0hlaWdodChj
b25zdCBCb3gmCiAgICAgTGF5b3V0VW5pdCB0b3RhbFZlcnRpY2FsTWFyZ2luOwogICAgIGlmIChs
YXlvdXRCb3guaXNEb2N1bWVudEJveCgpKSB7CiAgICAgICAgIC8vIERvY3VtZW50IGJveCdzIG1h
cmdpbnMgZG8gbm90IGNvbGxhcHNlLgotICAgICAgICBhdXRvIHZlcnRpY2FsTWFyZ2luID0gaGVp
Z2h0QW5kTWFyZ2luLm5vbkNvbGxhcHNlZE1hcmdpbjsKKyAgICAgICAgYXV0byB2ZXJ0aWNhbE1h
cmdpbiA9IGNvbnRlbnRIZWlnaHRBbmRNYXJnaW4ubm9uQ29sbGFwc2VkTWFyZ2luOwogICAgICAg
ICB0b3RhbFZlcnRpY2FsTWFyZ2luID0gdmVydGljYWxNYXJnaW4uYmVmb3JlICsgdmVydGljYWxN
YXJnaW4uYWZ0ZXI7CiAgICAgfSBlbHNlIGlmIChsYXlvdXRCb3guaXNCb2R5Qm94KCkpIHsKICAg
ICAgICAgLy8gSGVyZSBpcyB0aGUgcXVpcmt5IHBhcnQgZm9yIGJvZHkgYm94OgpAQCAtODgsMTcg
Kzg4LDE3IEBAIEhlaWdodEFuZE1hcmdpbiBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpRdWlya3M6
OnN0cmV0Y2hlZEluRmxvd0hlaWdodChjb25zdCBCb3gmCiAgICAgICAgIGF1dG8mIGJvZHlCb3hH
ZW9tZXRyeSA9IGZvcm1hdHRpbmdDb250ZXh0Lmdlb21ldHJ5Rm9yQm94KGxheW91dEJveCk7CiAg
ICAgICAgIHN0cmVjaGVkSGVpZ2h0IC09IGJvZHlCb3hHZW9tZXRyeS52ZXJ0aWNhbEJvcmRlcigp
ICsgYm9keUJveEdlb21ldHJ5LnZlcnRpY2FsUGFkZGluZygpLnZhbHVlT3IoMCk7CiAKLSAgICAg
ICAgYXV0byBub25Db2xsYXBzZWRNYXJnaW4gPSBoZWlnaHRBbmRNYXJnaW4ubm9uQ29sbGFwc2Vk
TWFyZ2luOworICAgICAgICBhdXRvIG5vbkNvbGxhcHNlZE1hcmdpbiA9IGNvbnRlbnRIZWlnaHRB
bmRNYXJnaW4ubm9uQ29sbGFwc2VkTWFyZ2luOwogICAgICAgICBhdXRvIGNvbGxhcHNlZE1hcmdp
biA9IGZvcm1hdHRpbmdDb250ZXh0Lm1hcmdpbkNvbGxhcHNlKCkuY29sbGFwc2VkVmVydGljYWxW
YWx1ZXMobGF5b3V0Qm94LCBub25Db2xsYXBzZWRNYXJnaW4pOwogICAgICAgICB0b3RhbFZlcnRp
Y2FsTWFyZ2luID0gY29sbGFwc2VkTWFyZ2luLmJlZm9yZS52YWx1ZU9yKG5vbkNvbGxhcHNlZE1h
cmdpbi5iZWZvcmUpOwogICAgICAgICB0b3RhbFZlcnRpY2FsTWFyZ2luICs9IGNvbGxhcHNlZE1h
cmdpbi5pc0NvbGxhcHNlZFRocm91Z2ggPyBub25Db2xsYXBzZWRNYXJnaW4uYWZ0ZXIgOiBjb2xs
YXBzZWRNYXJnaW4uYWZ0ZXIudmFsdWVPcihub25Db2xsYXBzZWRNYXJnaW4uYWZ0ZXIpOwogICAg
IH0KIAogICAgIC8vIFN0cmV0Y2ggYnV0IG5ldmVyIG92ZXJzdHJldGNoIHdpdGggdGhlIG1hcmdp
bnMuCi0gICAgaWYgKGhlaWdodEFuZE1hcmdpbi5oZWlnaHQgKyB0b3RhbFZlcnRpY2FsTWFyZ2lu
IDwgc3RyZWNoZWRIZWlnaHQpCi0gICAgICAgIGhlaWdodEFuZE1hcmdpbi5oZWlnaHQgPSBzdHJl
Y2hlZEhlaWdodCAtIHRvdGFsVmVydGljYWxNYXJnaW47CisgICAgaWYgKGNvbnRlbnRIZWlnaHRB
bmRNYXJnaW4uY29udGVudEhlaWdodCArIHRvdGFsVmVydGljYWxNYXJnaW4gPCBzdHJlY2hlZEhl
aWdodCkKKyAgICAgICAgY29udGVudEhlaWdodEFuZE1hcmdpbi5jb250ZW50SGVpZ2h0ID0gc3Ry
ZWNoZWRIZWlnaHQgLSB0b3RhbFZlcnRpY2FsTWFyZ2luOwogCi0gICAgcmV0dXJuIGhlaWdodEFu
ZE1hcmdpbjsKKyAgICByZXR1cm4gY29udGVudEhlaWdodEFuZE1hcmdpbjsKIH0KIAogYm9vbCBC
bG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpRdWlya3M6OnNob3VsZElnbm9yZUNvbGxhcHNlZFF1aXJr
TWFyZ2luKGNvbnN0IEJveCYgbGF5b3V0Qm94KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlCb3guY3BwIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlCb3guY3BwCmluZGV4IDZhZGU0MDZkNWM0Mjc1ZWFk
NWJmMzVlMDJkNDc2NjhlMDZhNTM1MDMuLjg0YTk5M2FhNTlkZTU1YzM1ZWY2YWYxMjMzYTBlYjgz
NDZlZWVlYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9E
aXNwbGF5Qm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlz
cGxheUJveC5jcHAKQEAgLTI4LDcgKzI4LDYgQEAKIAogI2lmIEVOQUJMRShMQVlPVVRfRk9STUFU
VElOR19DT05URVhUKQogCi0jaW5jbHVkZSAiUmVuZGVyU3R5bGUuaCIKICNpbmNsdWRlIDx3dGYv
SXNvTWFsbG9jSW5saW5lcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zNiwxNCArMzUs
OCBAQCBuYW1lc3BhY2UgRGlzcGxheSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChC
b3gpOwogCi1Cb3g6OkJveChjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCi0gICAgOiBtX3N0eWxl
KHN0eWxlKQotewotfQotCiBCb3g6OkJveChjb25zdCBCb3gmIG90aGVyKQotICAgIDogbV9zdHls
ZShvdGhlci5tX3N0eWxlKQotICAgICwgbV90b3BMZWZ0KG90aGVyLm1fdG9wTGVmdCkKKyAgICA6
IG1fdG9wTGVmdChvdGhlci5tX3RvcExlZnQpCiAgICAgLCBtX2NvbnRlbnRXaWR0aChvdGhlci5t
X2NvbnRlbnRXaWR0aCkKICAgICAsIG1fY29udGVudEhlaWdodChvdGhlci5tX2NvbnRlbnRIZWln
aHQpCiAgICAgLCBtX2hvcml6b250YWxNYXJnaW4ob3RoZXIubV9ob3Jpem9udGFsTWFyZ2luKQpA
QCAtNzIsMTEgKzY1LDYgQEAgQm94Ojp+Qm94KCkKIHsKIH0KIAotQm94OjpTdHlsZTo6U3R5bGUo
Y29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQotICAgIDogYm94U2l6aW5nKHN0eWxlLmJveFNpemlu
ZygpKQotewotfQotCiBSZWN0IEJveDo6bWFyZ2luQm94KCkgY29uc3QKIHsKICAgICBhdXRvIGJv
cmRlckJveCA9IHRoaXMtPmJvcmRlckJveCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlCb3guaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9k
aXNwbGF5dHJlZS9EaXNwbGF5Qm94LmgKaW5kZXggMmMzMWNhNzY2OWM2MTFhZThkMDU2ZTBhZjRk
MjhmNjVjZTMzMWQ3NS4uMWY4OTEyODBjMzU3MDlhM2EzZDQ3OWY1OTEzOWU0ZmFkYzc1MzMwZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlCb3gu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheUJveC5oCkBA
IC0yOSwyMCArMjksMTYgQEAKIAogI2luY2x1ZGUgIkRpc3BsYXlSZWN0LmgiCiAjaW5jbHVkZSAi
TGF5b3V0VW5pdHMuaCIKLSNpbmNsdWRlICJSZW5kZXJTdHlsZUNvbnN0YW50cy5oIgogI2luY2x1
ZGUgPHd0Zi9Jc29NYWxsb2MuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBSZW5k
ZXJTdHlsZTsKLQogbmFtZXNwYWNlIERpc3BsYXkgewogCiBjbGFzcyBCb3ggewogICAgIFdURl9N
QUtFX0lTT19BTExPQ0FURUQoQm94KTsKIHB1YmxpYzoKLSAgICBCb3goY29uc3QgUmVuZGVyU3R5
bGUmKTsKICAgICBCb3goY29uc3QgQm94Jik7CisgICAgQm94KCkgPSBkZWZhdWx0OwogICAgIH5C
b3goKTsKIAogICAgIExheW91dFVuaXQgdG9wKCkgY29uc3Q7CkBAIC0xMzgsMTIgKzEzNCw2IEBA
IHB1YmxpYzoKICAgICB2b2lkIHNldFBhZGRpbmcoT3B0aW9uYWw8TGF5b3V0OjpFZGdlcz4pOwog
CiBwcml2YXRlOgotICAgIHN0cnVjdCBTdHlsZSB7Ci0gICAgICAgIFN0eWxlKGNvbnN0IFJlbmRl
clN0eWxlJik7Ci0KLSAgICAgICAgQm94U2l6aW5nIGJveFNpemluZyB7IEJveFNpemluZzo6Q29u
dGVudEJveCB9OwotICAgIH07Ci0KICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgdm9pZCBpbnZh
bGlkYXRlTWFyZ2luKCk7CiAgICAgdm9pZCBpbnZhbGlkYXRlQm9yZGVyKCkgeyBtX2hhc1ZhbGlk
Qm9yZGVyID0gZmFsc2U7IH0KQEAgLTE2NCw4ICsxNTQsNiBAQCBwcml2YXRlOgogICAgIHZvaWQg
c2V0SGFzVmFsaWRDb250ZW50V2lkdGgoKSB7IG1faGFzVmFsaWRDb250ZW50V2lkdGggPSB0cnVl
OyB9CiAjZW5kaWYKIAotICAgIGNvbnN0IFN0eWxlIG1fc3R5bGU7Ci0KICAgICBMYXlvdXRQb2lu
dCBtX3RvcExlZnQ7CiAgICAgTGF5b3V0VW5pdCBtX2NvbnRlbnRXaWR0aDsKICAgICBMYXlvdXRV
bml0IG1fY29udGVudEhlaWdodDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9p
bmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcApp
bmRleCBlNjFiZjAzNDc1MzU3YjUxYTk5N2ZjZWQxMWI5YjhkMzExZWZiYjRhLi5kNGQ4OWU4NTc0
NjUwZmRlMmE0ODNjZWM0ZGQzNDAzZDZmNGM1ZTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGlu
Z0NvbnRleHQuY3BwCkBAIC0yNjksMzcgKzI2OSwzNyBAQCB2b2lkIElubGluZUZvcm1hdHRpbmdD
b250ZXh0Ojpjb21wdXRlSG9yaXpvbnRhbE1hcmdpbihjb25zdCBCb3gmIGxheW91dEJveCwgVXNl
ZAogCiB2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlV2lkdGhBbmRNYXJnaW4o
Y29uc3QgQm94JiBsYXlvdXRCb3gsIFVzZWRIb3Jpem9udGFsVmFsdWVzIHVzZWRIb3Jpem9udGFs
VmFsdWVzKQogewotICAgIFdpZHRoQW5kTWFyZ2luIHdpZHRoQW5kTWFyZ2luOworICAgIENvbnRl
bnRXaWR0aEFuZE1hcmdpbiBjb250ZW50V2lkdGhBbmRNYXJnaW47CiAgICAgaWYgKGxheW91dEJv
eC5pc0Zsb2F0aW5nUG9zaXRpb25lZCgpKQotICAgICAgICB3aWR0aEFuZE1hcmdpbiA9IGdlb21l
dHJ5KCkuZmxvYXRpbmdXaWR0aEFuZE1hcmdpbihsYXlvdXRCb3gsIHVzZWRIb3Jpem9udGFsVmFs
dWVzKTsKKyAgICAgICAgY29udGVudFdpZHRoQW5kTWFyZ2luID0gZ2VvbWV0cnkoKS5mbG9hdGlu
Z1dpZHRoQW5kTWFyZ2luKGxheW91dEJveCwgdXNlZEhvcml6b250YWxWYWx1ZXMpOwogICAgIGVs
c2UgaWYgKGxheW91dEJveC5pc0lubGluZUJsb2NrQm94KCkpCi0gICAgICAgIHdpZHRoQW5kTWFy
Z2luID0gZ2VvbWV0cnkoKS5pbmxpbmVCbG9ja1dpZHRoQW5kTWFyZ2luKGxheW91dEJveCwgdXNl
ZEhvcml6b250YWxWYWx1ZXMpOworICAgICAgICBjb250ZW50V2lkdGhBbmRNYXJnaW4gPSBnZW9t
ZXRyeSgpLmlubGluZUJsb2NrV2lkdGhBbmRNYXJnaW4obGF5b3V0Qm94LCB1c2VkSG9yaXpvbnRh
bFZhbHVlcyk7CiAgICAgZWxzZSBpZiAobGF5b3V0Qm94LnJlcGxhY2VkKCkpCi0gICAgICAgIHdp
ZHRoQW5kTWFyZ2luID0gZ2VvbWV0cnkoKS5pbmxpbmVSZXBsYWNlZFdpZHRoQW5kTWFyZ2luKGxh
eW91dEJveCwgdXNlZEhvcml6b250YWxWYWx1ZXMpOworICAgICAgICBjb250ZW50V2lkdGhBbmRN
YXJnaW4gPSBnZW9tZXRyeSgpLmlubGluZVJlcGxhY2VkV2lkdGhBbmRNYXJnaW4obGF5b3V0Qm94
LCB1c2VkSG9yaXpvbnRhbFZhbHVlcyk7CiAgICAgZWxzZQogICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKIAogICAgIGF1dG8mIGRpc3BsYXlCb3ggPSBmb3JtYXR0aW5nU3RhdGUoKS5kaXNw
bGF5Qm94KGxheW91dEJveCk7Ci0gICAgZGlzcGxheUJveC5zZXRDb250ZW50Qm94V2lkdGgod2lk
dGhBbmRNYXJnaW4ud2lkdGgpOwotICAgIGRpc3BsYXlCb3guc2V0SG9yaXpvbnRhbE1hcmdpbih3
aWR0aEFuZE1hcmdpbi51c2VkTWFyZ2luKTsKLSAgICBkaXNwbGF5Qm94LnNldEhvcml6b250YWxD
b21wdXRlZE1hcmdpbih3aWR0aEFuZE1hcmdpbi5jb21wdXRlZE1hcmdpbik7CisgICAgZGlzcGxh
eUJveC5zZXRDb250ZW50Qm94V2lkdGgoY29udGVudFdpZHRoQW5kTWFyZ2luLmNvbnRlbnRXaWR0
aCk7CisgICAgZGlzcGxheUJveC5zZXRIb3Jpem9udGFsTWFyZ2luKGNvbnRlbnRXaWR0aEFuZE1h
cmdpbi51c2VkTWFyZ2luKTsKKyAgICBkaXNwbGF5Qm94LnNldEhvcml6b250YWxDb21wdXRlZE1h
cmdpbihjb250ZW50V2lkdGhBbmRNYXJnaW4uY29tcHV0ZWRNYXJnaW4pOwogfQogCiB2b2lkIElu
bGluZUZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlSGVpZ2h0QW5kTWFyZ2luKGNvbnN0IEJveCYg
bGF5b3V0Qm94LCBVc2VkSG9yaXpvbnRhbFZhbHVlcyB1c2VkSG9yaXpvbnRhbFZhbHVlcywgVXNl
ZFZlcnRpY2FsVmFsdWVzIHVzZWRWZXJ0aWNhbFZhbHVlcykKIHsKLSAgICBIZWlnaHRBbmRNYXJn
aW4gaGVpZ2h0QW5kTWFyZ2luOworICAgIENvbnRlbnRIZWlnaHRBbmRNYXJnaW4gY29udGVudEhl
aWdodEFuZE1hcmdpbjsKICAgICBpZiAobGF5b3V0Qm94LmlzRmxvYXRpbmdQb3NpdGlvbmVkKCkp
Ci0gICAgICAgIGhlaWdodEFuZE1hcmdpbiA9IGdlb21ldHJ5KCkuZmxvYXRpbmdIZWlnaHRBbmRN
YXJnaW4obGF5b3V0Qm94LCB1c2VkSG9yaXpvbnRhbFZhbHVlcywgdXNlZFZlcnRpY2FsVmFsdWVz
KTsKKyAgICAgICAgY29udGVudEhlaWdodEFuZE1hcmdpbiA9IGdlb21ldHJ5KCkuZmxvYXRpbmdI
ZWlnaHRBbmRNYXJnaW4obGF5b3V0Qm94LCB1c2VkSG9yaXpvbnRhbFZhbHVlcywgdXNlZFZlcnRp
Y2FsVmFsdWVzKTsKICAgICBlbHNlIGlmIChsYXlvdXRCb3guaXNJbmxpbmVCbG9ja0JveCgpKQot
ICAgICAgICBoZWlnaHRBbmRNYXJnaW4gPSBnZW9tZXRyeSgpLmlubGluZUJsb2NrSGVpZ2h0QW5k
TWFyZ2luKGxheW91dEJveCwgdXNlZEhvcml6b250YWxWYWx1ZXMsIHVzZWRWZXJ0aWNhbFZhbHVl
cyk7CisgICAgICAgIGNvbnRlbnRIZWlnaHRBbmRNYXJnaW4gPSBnZW9tZXRyeSgpLmlubGluZUJs
b2NrSGVpZ2h0QW5kTWFyZ2luKGxheW91dEJveCwgdXNlZEhvcml6b250YWxWYWx1ZXMsIHVzZWRW
ZXJ0aWNhbFZhbHVlcyk7CiAgICAgZWxzZSBpZiAobGF5b3V0Qm94LnJlcGxhY2VkKCkpCi0gICAg
ICAgIGhlaWdodEFuZE1hcmdpbiA9IGdlb21ldHJ5KCkuaW5saW5lUmVwbGFjZWRIZWlnaHRBbmRN
YXJnaW4obGF5b3V0Qm94LCB1c2VkSG9yaXpvbnRhbFZhbHVlcywgdXNlZFZlcnRpY2FsVmFsdWVz
KTsKKyAgICAgICAgY29udGVudEhlaWdodEFuZE1hcmdpbiA9IGdlb21ldHJ5KCkuaW5saW5lUmVw
bGFjZWRIZWlnaHRBbmRNYXJnaW4obGF5b3V0Qm94LCB1c2VkSG9yaXpvbnRhbFZhbHVlcywgdXNl
ZFZlcnRpY2FsVmFsdWVzKTsKICAgICBlbHNlCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogCiAgICAgYXV0byYgZGlzcGxheUJveCA9IGZvcm1hdHRpbmdTdGF0ZSgpLmRpc3BsYXlCb3go
bGF5b3V0Qm94KTsKLSAgICBkaXNwbGF5Qm94LnNldENvbnRlbnRCb3hIZWlnaHQoaGVpZ2h0QW5k
TWFyZ2luLmhlaWdodCk7Ci0gICAgZGlzcGxheUJveC5zZXRWZXJ0aWNhbE1hcmdpbih7IGhlaWdo
dEFuZE1hcmdpbi5ub25Db2xsYXBzZWRNYXJnaW4sIHsgfSB9KTsKKyAgICBkaXNwbGF5Qm94LnNl
dENvbnRlbnRCb3hIZWlnaHQoY29udGVudEhlaWdodEFuZE1hcmdpbi5jb250ZW50SGVpZ2h0KTsK
KyAgICBkaXNwbGF5Qm94LnNldFZlcnRpY2FsTWFyZ2luKHsgY29udGVudEhlaWdodEFuZE1hcmdp
bi5ub25Db2xsYXBzZWRNYXJnaW4sIHsgfSB9KTsKIH0KIAogdm9pZCBJbmxpbmVGb3JtYXR0aW5n
Q29udGV4dDo6Y29tcHV0ZVdpZHRoQW5kSGVpZ2h0Rm9yUmVwbGFjZWRJbmxpbmVCb3goY29uc3Qg
Qm94JiBsYXlvdXRCb3gsIFVzZWRIb3Jpem9udGFsVmFsdWVzIHVzZWRIb3Jpem9udGFsVmFsdWVz
LCBVc2VkVmVydGljYWxWYWx1ZXMgdXNlZFZlcnRpY2FsVmFsdWVzKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRl
eHQuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1h
dHRpbmdDb250ZXh0LmgKaW5kZXggN2MxMTYxOWRkZmJmOTcyZGNiNTU4ZThkZjc0ZmQ0NjY3NTlj
NDk1Zi4uYjY5ODg0MzBlYTJkNmMyYWQyNzY3MjIxNzc1MDhmODk2NjA2NTBlMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGlu
Z0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9J
bmxpbmVGb3JtYXR0aW5nQ29udGV4dC5oCkBAIC02Myw4ICs2Myw4IEBAIHByaXZhdGU6CiAKICAg
ICBjbGFzcyBHZW9tZXRyeSA6IHB1YmxpYyBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnkgewog
ICAgIHB1YmxpYzoKLSAgICAgICAgSGVpZ2h0QW5kTWFyZ2luIGlubGluZUJsb2NrSGVpZ2h0QW5k
TWFyZ2luKGNvbnN0IEJveCYsIFVzZWRIb3Jpem9udGFsVmFsdWVzLCBVc2VkVmVydGljYWxWYWx1
ZXMpIGNvbnN0OwotICAgICAgICBXaWR0aEFuZE1hcmdpbiBpbmxpbmVCbG9ja1dpZHRoQW5kTWFy
Z2luKGNvbnN0IEJveCYsIFVzZWRIb3Jpem9udGFsVmFsdWVzKTsKKyAgICAgICAgQ29udGVudEhl
aWdodEFuZE1hcmdpbiBpbmxpbmVCbG9ja0hlaWdodEFuZE1hcmdpbihjb25zdCBCb3gmLCBVc2Vk
SG9yaXpvbnRhbFZhbHVlcywgVXNlZFZlcnRpY2FsVmFsdWVzKSBjb25zdDsKKyAgICAgICAgQ29u
dGVudFdpZHRoQW5kTWFyZ2luIGlubGluZUJsb2NrV2lkdGhBbmRNYXJnaW4oY29uc3QgQm94Jiwg
VXNlZEhvcml6b250YWxWYWx1ZXMpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgZnJpZW5kIGNs
YXNzIElubGluZUZvcm1hdHRpbmdDb250ZXh0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0
aW5nQ29udGV4dEdlb21ldHJ5LmNwcAppbmRleCBkYWZlMWM1M2MxMTc4MGEwODYxNDVlNDk4M2Q2
ZDA4N2E3YzNlNDdjLi42MjZlZTRlYmU2MjIzMmJmMDZiMzkyMjY4OWQzOGIxMWI2OWJlODA3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVG
b3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
aW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcApAQCAt
MzUsNyArMzUsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIExheW91dCB7CiAK
LVdpZHRoQW5kTWFyZ2luIElubGluZUZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5saW5l
QmxvY2tXaWR0aEFuZE1hcmdpbihjb25zdCBCb3gmIGZvcm1hdHRpbmdDb250ZXh0Um9vdCwgVXNl
ZEhvcml6b250YWxWYWx1ZXMgdXNlZEhvcml6b250YWxWYWx1ZXMpCitDb250ZW50V2lkdGhBbmRN
YXJnaW4gSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbmxpbmVCbG9ja1dpZHRo
QW5kTWFyZ2luKGNvbnN0IEJveCYgZm9ybWF0dGluZ0NvbnRleHRSb290LCBVc2VkSG9yaXpvbnRh
bFZhbHVlcyB1c2VkSG9yaXpvbnRhbFZhbHVlcykKIHsKICAgICBBU1NFUlQoZm9ybWF0dGluZ0Nv
bnRleHRSb290LmlzSW5GbG93KCkpOwogCkBAIC01NywxMCArNTcsMTAgQEAgV2lkdGhBbmRNYXJn
aW4gSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbmxpbmVCbG9ja1dpZHRoQW5k
TWFyZ2luKGNvbnMKICAgICAvLyAjMgogICAgIGF1dG8gY29tcHV0ZWRIb3Jpem9udGFsTWFyZ2lu
ID0gR2VvbWV0cnk6OmNvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbihmb3JtYXR0aW5nQ29udGV4dFJv
b3QsIHVzZWRIb3Jpem9udGFsVmFsdWVzKTsKIAotICAgIHJldHVybiBXaWR0aEFuZE1hcmdpbiB7
ICp3aWR0aCwgeyBjb21wdXRlZEhvcml6b250YWxNYXJnaW4uc3RhcnQudmFsdWVPcigwX2x1KSwg
Y29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luLmVuZC52YWx1ZU9yKDBfbHUpIH0sIGNvbXB1dGVkSG9y
aXpvbnRhbE1hcmdpbiB9OworICAgIHJldHVybiBDb250ZW50V2lkdGhBbmRNYXJnaW4geyAqd2lk
dGgsIHsgY29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luLnN0YXJ0LnZhbHVlT3IoMF9sdSksIGNvbXB1
dGVkSG9yaXpvbnRhbE1hcmdpbi5lbmQudmFsdWVPcigwX2x1KSB9LCBjb21wdXRlZEhvcml6b250
YWxNYXJnaW4gfTsKIH0KIAotSGVpZ2h0QW5kTWFyZ2luIElubGluZUZvcm1hdHRpbmdDb250ZXh0
OjpHZW9tZXRyeTo6aW5saW5lQmxvY2tIZWlnaHRBbmRNYXJnaW4oY29uc3QgQm94JiBsYXlvdXRC
b3gsIFVzZWRIb3Jpem9udGFsVmFsdWVzIHVzZWRIb3Jpem9udGFsVmFsdWVzLCBVc2VkVmVydGlj
YWxWYWx1ZXMgdXNlZFZlcnRpY2FsVmFsdWVzKSBjb25zdAorQ29udGVudEhlaWdodEFuZE1hcmdp
biBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmlubGluZUJsb2NrSGVpZ2h0QW5k
TWFyZ2luKGNvbnN0IEJveCYgbGF5b3V0Qm94LCBVc2VkSG9yaXpvbnRhbFZhbHVlcyB1c2VkSG9y
aXpvbnRhbFZhbHVlcywgVXNlZFZlcnRpY2FsVmFsdWVzIHVzZWRWZXJ0aWNhbFZhbHVlcykgY29u
c3QKIHsKICAgICBBU1NFUlQobGF5b3V0Qm94LmlzSW5GbG93KCkpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvdGFibGVmb3JtYXR0aW5nL1RhYmxlRm9ybWF0dGluZ0NvbnRl
eHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L3RhYmxlZm9ybWF0dGluZy9UYWJsZUZvcm1h
dHRpbmdDb250ZXh0LmNwcAppbmRleCAwNjQyMWI2NmE2NzcwNjlmMDIzODU5ZDU5ZWJkNDcwM2U0
ZTgwMTViLi4yZWUwMTljMzQ2MmJiODJlMGEwOTk2ZjExN2MzYWMxN2I3NWNiMzhlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvdGFibGVmb3JtYXR0aW5nL1RhYmxlRm9ybWF0dGlu
Z0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC90YWJsZWZvcm1hdHRpbmcv
VGFibGVGb3JtYXR0aW5nQ29udGV4dC5jcHAKQEAgLTk5LDcgKzk5LDcgQEAgdm9pZCBUYWJsZUZv
cm1hdHRpbmdDb250ZXh0OjpsYXlvdXRUYWJsZUNlbGxCb3goY29uc3QgQm94JiBjZWxsTGF5b3V0
Qm94LCBjb25zdAogICAgIGlmIChpczxDb250YWluZXI+KGNlbGxMYXlvdXRCb3gpKQogICAgICAg
ICBMYXlvdXRDb250ZXh0OjpjcmVhdGVGb3JtYXR0aW5nQ29udGV4dChkb3duY2FzdDxDb250YWlu
ZXI+KGNlbGxMYXlvdXRCb3gpLCBsYXlvdXRTdGF0ZSgpKS0+bGF5b3V0SW5GbG93Q29udGVudCgp
OwogICAgIGNlbGxEaXNwbGF5Qm94LnNldFZlcnRpY2FsTWFyZ2luKHsgeyB9LCB7IH0gfSk7Ci0g
ICAgY2VsbERpc3BsYXlCb3guc2V0Q29udGVudEJveEhlaWdodChnZW9tZXRyeSgpLnRhYmxlQ2Vs
bEhlaWdodEFuZE1hcmdpbihjZWxsTGF5b3V0Qm94KS5oZWlnaHQpOworICAgIGNlbGxEaXNwbGF5
Qm94LnNldENvbnRlbnRCb3hIZWlnaHQoZ2VvbWV0cnkoKS50YWJsZUNlbGxIZWlnaHRBbmRNYXJn
aW4oY2VsbExheW91dEJveCkuY29udGVudEhlaWdodCk7CiAgICAgLy8gRklYTUU6IENoZWNrIHdo
YXQgdG8gZG8gd2l0aCBvdXQtb2YtZmxvdyBjb250ZW50LgogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvdGFibGVmb3JtYXR0aW5nL1RhYmxlRm9ybWF0dGluZ0NvbnRleHQu
aCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC90YWJsZWZvcm1hdHRpbmcvVGFibGVGb3JtYXR0aW5n
Q29udGV4dC5oCmluZGV4IDk4MzMxOWRlMTdmNDU5NjE2NGFiYTUyY2YyZTdlNGVlZjYwMjFkNmMu
LjRhNmU2MDMxNWNlNDEwOGU0YjQzZDI2MDliMTY1ZmE5YzY5MTZkM2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC90YWJsZWZvcm1hdHRpbmcvVGFibGVGb3JtYXR0aW5nQ29udGV4
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC90YWJsZWZvcm1hdHRpbmcvVGFibGVGb3Jt
YXR0aW5nQ29udGV4dC5oCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAg
Y2xhc3MgR2VvbWV0cnkgOiBwdWJsaWMgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5IHsKICAg
ICBwdWJsaWM6Ci0gICAgICAgIEhlaWdodEFuZE1hcmdpbiB0YWJsZUNlbGxIZWlnaHRBbmRNYXJn
aW4oY29uc3QgQm94JikgY29uc3Q7CisgICAgICAgIENvbnRlbnRIZWlnaHRBbmRNYXJnaW4gdGFi
bGVDZWxsSGVpZ2h0QW5kTWFyZ2luKGNvbnN0IEJveCYpIGNvbnN0OwogCiAgICAgcHJpdmF0ZToK
ICAgICAgICAgZnJpZW5kIGNsYXNzIFRhYmxlRm9ybWF0dGluZ0NvbnRleHQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvdGFibGVmb3JtYXR0aW5nL1RhYmxlRm9ybWF0dGluZ0Nv
bnRleHRHZW9tZXRyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvdGFibGVmb3JtYXR0aW5n
L1RhYmxlRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAKaW5kZXggZmVjMjJmODRhZGU0NGRk
NDk0NDU0NDNiNjJhYjM5OGUwMjQ3NDRjNy4uNDIxMTk1ZWI0ZWZjMjZmYmJiNWFjY2ZlN2NkMzEy
YWZmZWIyMmQ1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L3RhYmxlZm9ybWF0
dGluZy9UYWJsZUZvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC90YWJsZWZvcm1hdHRpbmcvVGFibGVGb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5
LmNwcApAQCAtMzMsMTYgKzMzLDE2IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2Ug
TGF5b3V0IHsKIAotSGVpZ2h0QW5kTWFyZ2luIFRhYmxlRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21l
dHJ5Ojp0YWJsZUNlbGxIZWlnaHRBbmRNYXJnaW4oY29uc3QgQm94JiBsYXlvdXRCb3gpIGNvbnN0
CitDb250ZW50SGVpZ2h0QW5kTWFyZ2luIFRhYmxlRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5
Ojp0YWJsZUNlbGxIZWlnaHRBbmRNYXJnaW4oY29uc3QgQm94JiBsYXlvdXRCb3gpIGNvbnN0CiB7
CiAgICAgQVNTRVJUKGxheW91dEJveC5pc0luRmxvdygpKTsKIAotICAgIGF1dG8gaGVpZ2h0ID0g
Y29tcHV0ZWRIZWlnaHRWYWx1ZShsYXlvdXRCb3gsIEhlaWdodFR5cGU6Ok5vcm1hbCk7CisgICAg
YXV0byBoZWlnaHQgPSBjb21wdXRlZENvbnRlbnRIZWlnaHQobGF5b3V0Qm94KTsKICAgICBpZiAo
IWhlaWdodCkKICAgICAgICAgaGVpZ2h0ID0gY29udGVudEhlaWdodEZvckZvcm1hdHRpbmdDb250
ZXh0Um9vdChsYXlvdXRCb3gpOwogCiAgICAgLy8gTWFyZ2lucyBkb24ndCBhcHBseSB0byBpbnRl
cm5hbCB0YWJsZSBlbGVtZW50cy4KLSAgICByZXR1cm4gSGVpZ2h0QW5kTWFyZ2luIHsgKmhlaWdo
dCwgeyB9IH07CisgICAgcmV0dXJuIENvbnRlbnRIZWlnaHRBbmRNYXJnaW4geyAqaGVpZ2h0LCB7
IH0gfTsKIH0KIAogfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>