<?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>206008</bug_id>
          
          <creation_ts>2020-01-09 07:49:27 -0800</creation_ts>
          <short_desc>[LFC] Rename UsedHorizontal(Vertical)Values to OverrideHorizontal(Vertical)values</short_desc>
          <delta_ts>2020-01-09 10:40:03 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="alan">zalan</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>bfulgham</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>1604623</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2020-01-09 07:49:27 -0800</bug_when>
    <thetext>ssia</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1604624</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-01-09 07:49:49 -0800</bug_when>
    <thetext>&lt;rdar://problem/58443375&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1604631</commentid>
    <comment_count>2</comment_count>
      <attachid>387231</attachid>
    <who name="alan">zalan</who>
    <bug_when>2020-01-09 08:11:38 -0800</bug_when>
    <thetext>Created attachment 387231
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1604633</commentid>
    <comment_count>3</comment_count>
      <attachid>387231</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2020-01-09 08:15:04 -0800</bug_when>
    <thetext>Comment on attachment 387231
Patch

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

&gt; Source/WebCore/ChangeLog:16
&gt; +        values for the &quot;compute geometry&quot; functions (e.g. computing the width of a floating box follows
&gt; +        the same set of steps as computing the width of an inline replaced box. So whenever we need to
&gt; +        compute the width of a floating box, we could just call the computeInlineReplacedWidth() function.
&gt; +        However their horizontal margin computations are different and since width and horizontal margins are being computed together,
&gt; +        we need to make sure that inlineReplacedWidthAndMargin() takes a set of pre-computed margin values
&gt; +        and uses them while computing the width value. Same applies to min/max-width/heigh computations.)

One day you&apos;ll put the entire ChangeLog entry inside parentheses.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1604635</commentid>
    <comment_count>4</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2020-01-09 08:18:09 -0800</bug_when>
    <thetext>(In reply to Antti Koivisto from comment #3)
&gt; Comment on attachment 387231 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=387231&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:16
&gt; &gt; +        values for the &quot;compute geometry&quot; functions (e.g. computing the width of a floating box follows
&gt; &gt; +        the same set of steps as computing the width of an inline replaced box. So whenever we need to
&gt; &gt; +        compute the width of a floating box, we could just call the computeInlineReplacedWidth() function.
&gt; &gt; +        However their horizontal margin computations are different and since width and horizontal margins are being computed together,
&gt; &gt; +        we need to make sure that inlineReplacedWidthAndMargin() takes a set of pre-computed margin values
&gt; &gt; +        and uses them while computing the width value. Same applies to min/max-width/heigh computations.)
&gt; 
&gt; One day you&apos;ll put the entire ChangeLog entry inside parentheses.
That&apos;s one of my 2020 resolutions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1604715</commentid>
    <comment_count>5</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2020-01-09 10:40:03 -0800</bug_when>
    <thetext>Committed r254277: &lt;https://trac.webkit.org/changeset/254277&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387231</attachid>
            <date>2020-01-09 08:11:38 -0800</date>
            <delta_ts>2020-01-09 08:15:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206008-20200109081137.patch</filename>
            <type>text/plain</type>
            <size>47950</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0MTg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDkwYTNlZWM1YjVmODgz
M2IyOWE1YWUzZjdmMDdlZjc5YjA0MTkxOS4uMmYxYjczOWMzZTE1YTAxN2ZmOGVkMTgxZjlhMmY3
M2JhYjBiOTYyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDIwLTAxLTA5ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ10gUmVuYW1lIFVzZWRI
b3Jpem9udGFsKFZlcnRpY2FsKVZhbHVlcyB0byBPdmVycmlkZUhvcml6b250YWwoVmVydGljYWwp
dmFsdWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MDYwMDgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU4NDQzMzc1PgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZXNlIHN0cnVjdHVyZSBhcmUgYSBt
aXh0dXJlIG9mIHNwZWNpZmllZCBhbmQgdXNlZCB2YWx1ZXMuCisgICAgICAgIFdoYXQgdGhlc2Ug
c3BlY2lmaWVkL3VzZWQgdmFsdWVzIG1lYW4gaW4gdGhpcyBjb250ZXh0IGlzIHRoYXQgdGhleSBv
dmVycmlkZSB0aGUgZGVmYXVsdCBpbnB1dAorICAgICAgICB2YWx1ZXMgZm9yIHRoZSAiY29tcHV0
ZSBnZW9tZXRyeSIgZnVuY3Rpb25zIChlLmcuIGNvbXB1dGluZyB0aGUgd2lkdGggb2YgYSBmbG9h
dGluZyBib3ggZm9sbG93cworICAgICAgICB0aGUgc2FtZSBzZXQgb2Ygc3RlcHMgYXMgY29tcHV0
aW5nIHRoZSB3aWR0aCBvZiBhbiBpbmxpbmUgcmVwbGFjZWQgYm94LiBTbyB3aGVuZXZlciB3ZSBu
ZWVkIHRvCisgICAgICAgIGNvbXB1dGUgdGhlIHdpZHRoIG9mIGEgZmxvYXRpbmcgYm94LCB3ZSBj
b3VsZCBqdXN0IGNhbGwgdGhlIGNvbXB1dGVJbmxpbmVSZXBsYWNlZFdpZHRoKCkgZnVuY3Rpb24u
CisgICAgICAgIEhvd2V2ZXIgdGhlaXIgaG9yaXpvbnRhbCBtYXJnaW4gY29tcHV0YXRpb25zIGFy
ZSBkaWZmZXJlbnQgYW5kIHNpbmNlIHdpZHRoIGFuZCBob3Jpem9udGFsIG1hcmdpbnMgYXJlIGJl
aW5nIGNvbXB1dGVkIHRvZ2V0aGVyLAorICAgICAgICB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0
IGlubGluZVJlcGxhY2VkV2lkdGhBbmRNYXJnaW4oKSB0YWtlcyBhIHNldCBvZiBwcmUtY29tcHV0
ZWQgbWFyZ2luIHZhbHVlcworICAgICAgICBhbmQgdXNlcyB0aGVtIHdoaWxlIGNvbXB1dGluZyB0
aGUgd2lkdGggdmFsdWUuIFNhbWUgYXBwbGllcyB0byBtaW4vbWF4LXdpZHRoL2hlaWdoIGNvbXB1
dGF0aW9ucy4pCisKKyAgICAgICAgKiBsYXlvdXQvRm9ybWF0dGluZ0NvbnRleHQuaDoKKyAgICAg
ICAgKiBsYXlvdXQvRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6b3V0T2ZGbG93Tm9uUmVw
bGFjZWRWZXJ0aWNhbEdlb21ldHJ5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpvdXRPZkZsb3dOb25SZXBsYWNlZEhvcml6b250
YWxHZW9tZXRyeSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0
OjpHZW9tZXRyeTo6b3V0T2ZGbG93UmVwbGFjZWRWZXJ0aWNhbEdlb21ldHJ5IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpvdXRP
ZkZsb3dSZXBsYWNlZEhvcml6b250YWxHZW9tZXRyeSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6Y29tcGxpY2F0ZWRDYXNlcyBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0OjpHZW9t
ZXRyeTo6ZmxvYXRpbmdOb25SZXBsYWNlZFdpZHRoQW5kTWFyZ2luKToKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpmbG9hdGluZ1JlcGxhY2Vk
SGVpZ2h0QW5kTWFyZ2luIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0
dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpmbG9hdGluZ1JlcGxhY2VkV2lkdGhBbmRNYXJnaW4gY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0
cnk6Om91dE9mRmxvd1ZlcnRpY2FsR2VvbWV0cnkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Om91dE9mRmxvd0hvcml6b250YWxH
ZW9tZXRyeSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0OjpH
ZW9tZXRyeTo6ZmxvYXRpbmdIZWlnaHRBbmRNYXJnaW4gY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmZsb2F0aW5nV2lkdGhBbmRN
YXJnaW4pOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6R2Vv
bWV0cnk6OmlubGluZVJlcGxhY2VkSGVpZ2h0QW5kTWFyZ2luIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbmxpbmVSZXBsYWNl
ZFdpZHRoQW5kTWFyZ2luIGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQvTGF5b3V0VW5pdHMuaDoK
KyAgICAgICAgKiBsYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQu
aDoKKyAgICAgICAgKiBsYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRl
eHRHZW9tZXRyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGlu
Z0NvbnRleHQ6Okdlb21ldHJ5OjppbkZsb3dOb25SZXBsYWNlZEhlaWdodEFuZE1hcmdpbik6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5
OjppbkZsb3dOb25SZXBsYWNlZFdpZHRoQW5kTWFyZ2luIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmluRmxvd1JlcGxh
Y2VkV2lkdGhBbmRNYXJnaW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9j
a0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5GbG93SGVpZ2h0QW5kTWFyZ2luKToKKyAg
ICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6
OmluRmxvd1dpZHRoQW5kTWFyZ2luKToKKyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGlu
Zy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6
OklubGluZUZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlV2lkdGhBbmRNYXJnaW4pOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZUhlaWdo
dEFuZE1hcmdpbik6CisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9y
bWF0dGluZ0NvbnRleHQuaDoKKyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy9Jbmxp
bmVGb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbmxpbmVCbG9ja1dpZHRoQW5k
TWFyZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRl
eHQ6Okdlb21ldHJ5OjppbmxpbmVCbG9ja0hlaWdodEFuZE1hcmdpbiBjb25zdCk6CisKIDIwMjAt
MDEtMDggIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXSBB
ZGQgbWlzc2luZyBIb3Jpem9udGFsQ29uc3RyYWludHMvVmVydGljYWxDb25zdHJhaW50cwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHQuaAppbmRleCA1ZmJhNWJjMWFkOGYx
Y2E2ZDU0ZDlmY2M4NjljNmQxMTNmZmM1NTc1Li5hZmRmMGEyY2ZiNWExOTE5N2YxODZiNjIwM2Q2
NTMzMzA5YzEzZDFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGlu
Z0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHQu
aApAQCAtNTQsOCArNTQsOCBAQCBjbGFzcyBGb3JtYXR0aW5nU3RhdGU7CiBzdHJ1Y3QgSG9yaXpv
bnRhbEdlb21ldHJ5OwogY2xhc3MgSW52YWxpZGF0aW9uU3RhdGU7CiBjbGFzcyBMYXlvdXRTdGF0
ZTsKLXN0cnVjdCBVc2VkSG9yaXpvbnRhbFZhbHVlczsKLXN0cnVjdCBVc2VkVmVydGljYWxWYWx1
ZXM7CitzdHJ1Y3QgT3ZlcnJpZGVIb3Jpem9udGFsVmFsdWVzOworc3RydWN0IE92ZXJyaWRlVmVy
dGljYWxWYWx1ZXM7CiBzdHJ1Y3QgVmVydGljYWxHZW9tZXRyeTsKIAogY2xhc3MgRm9ybWF0dGlu
Z0NvbnRleHQgewpAQCAtMTA5LDE4ICsxMDksMTggQEAgcHJvdGVjdGVkOgogICAgIC8vIFRoaXMg
Y2xhc3MgaW1wbGVtZW50cyBnZW5lcmljIHBvc2l0aW9uaW5nIGFuZCBzaXppbmcuCiAgICAgY2xh
c3MgR2VvbWV0cnkgewogICAgIHB1YmxpYzoKLSAgICAgICAgVmVydGljYWxHZW9tZXRyeSBvdXRP
ZkZsb3dWZXJ0aWNhbEdlb21ldHJ5KGNvbnN0IEJveCYsIGNvbnN0IEhvcml6b250YWxDb25zdHJh
aW50cyYsIGNvbnN0IFZlcnRpY2FsQ29uc3RyYWludHMmLCBjb25zdCBVc2VkVmVydGljYWxWYWx1
ZXMmKSBjb25zdDsKLSAgICAgICAgSG9yaXpvbnRhbEdlb21ldHJ5IG91dE9mRmxvd0hvcml6b250
YWxHZW9tZXRyeShjb25zdCBCb3gmLCBjb25zdCBIb3Jpem9udGFsQ29uc3RyYWludHMmLCBjb25z
dCBVc2VkSG9yaXpvbnRhbFZhbHVlcyYpOworICAgICAgICBWZXJ0aWNhbEdlb21ldHJ5IG91dE9m
Rmxvd1ZlcnRpY2FsR2VvbWV0cnkoY29uc3QgQm94JiwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFp
bnRzJiwgY29uc3QgVmVydGljYWxDb25zdHJhaW50cyYsIGNvbnN0IE92ZXJyaWRlVmVydGljYWxW
YWx1ZXMmKSBjb25zdDsKKyAgICAgICAgSG9yaXpvbnRhbEdlb21ldHJ5IG91dE9mRmxvd0hvcml6
b250YWxHZW9tZXRyeShjb25zdCBCb3gmLCBjb25zdCBIb3Jpem9udGFsQ29uc3RyYWludHMmLCBj
b25zdCBPdmVycmlkZUhvcml6b250YWxWYWx1ZXMmKTsKIAotICAgICAgICBDb250ZW50SGVpZ2h0
QW5kTWFyZ2luIGZsb2F0aW5nSGVpZ2h0QW5kTWFyZ2luKGNvbnN0IEJveCYsIGNvbnN0IEhvcml6
b250YWxDb25zdHJhaW50cyYsIGNvbnN0IFVzZWRWZXJ0aWNhbFZhbHVlcyYpIGNvbnN0OwotICAg
ICAgICBDb250ZW50V2lkdGhBbmRNYXJnaW4gZmxvYXRpbmdXaWR0aEFuZE1hcmdpbihjb25zdCBC
b3gmLCBjb25zdCBIb3Jpem9udGFsQ29uc3RyYWludHMmLCBjb25zdCBVc2VkSG9yaXpvbnRhbFZh
bHVlcyYpOworICAgICAgICBDb250ZW50SGVpZ2h0QW5kTWFyZ2luIGZsb2F0aW5nSGVpZ2h0QW5k
TWFyZ2luKGNvbnN0IEJveCYsIGNvbnN0IEhvcml6b250YWxDb25zdHJhaW50cyYsIGNvbnN0IE92
ZXJyaWRlVmVydGljYWxWYWx1ZXMmKSBjb25zdDsKKyAgICAgICAgQ29udGVudFdpZHRoQW5kTWFy
Z2luIGZsb2F0aW5nV2lkdGhBbmRNYXJnaW4oY29uc3QgQm94JiwgY29uc3QgSG9yaXpvbnRhbENv
bnN0cmFpbnRzJiwgY29uc3QgT3ZlcnJpZGVIb3Jpem9udGFsVmFsdWVzJik7CiAKLSAgICAgICAg
Q29udGVudEhlaWdodEFuZE1hcmdpbiBpbmxpbmVSZXBsYWNlZEhlaWdodEFuZE1hcmdpbihjb25z
dCBCb3gmLCBjb25zdCBIb3Jpem9udGFsQ29uc3RyYWludHMmLCBPcHRpb25hbDxWZXJ0aWNhbENv
bnN0cmFpbnRzPiwgY29uc3QgVXNlZFZlcnRpY2FsVmFsdWVzJikgY29uc3Q7Ci0gICAgICAgIENv
bnRlbnRXaWR0aEFuZE1hcmdpbiBpbmxpbmVSZXBsYWNlZFdpZHRoQW5kTWFyZ2luKGNvbnN0IEJv
eCYsIGNvbnN0IEhvcml6b250YWxDb25zdHJhaW50cyYsIGNvbnN0IFVzZWRIb3Jpem9udGFsVmFs
dWVzJikgY29uc3Q7CisgICAgICAgIENvbnRlbnRIZWlnaHRBbmRNYXJnaW4gaW5saW5lUmVwbGFj
ZWRIZWlnaHRBbmRNYXJnaW4oY29uc3QgQm94JiwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRz
JiwgT3B0aW9uYWw8VmVydGljYWxDb25zdHJhaW50cz4sIGNvbnN0IE92ZXJyaWRlVmVydGljYWxW
YWx1ZXMmKSBjb25zdDsKKyAgICAgICAgQ29udGVudFdpZHRoQW5kTWFyZ2luIGlubGluZVJlcGxh
Y2VkV2lkdGhBbmRNYXJnaW4oY29uc3QgQm94JiwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRz
JiwgY29uc3QgT3ZlcnJpZGVIb3Jpem9udGFsVmFsdWVzJikgY29uc3Q7CiAKICAgICAgICAgTGF5
b3V0U2l6ZSBpbkZsb3dQb3NpdGlvbmVkUG9zaXRpb25PZmZzZXQoY29uc3QgQm94JiwgY29uc3Qg
SG9yaXpvbnRhbENvbnN0cmFpbnRzJikgY29uc3Q7CiAKLSAgICAgICAgQ29udGVudEhlaWdodEFu
ZE1hcmdpbiBjb21wbGljYXRlZENhc2VzKGNvbnN0IEJveCYsIGNvbnN0IEhvcml6b250YWxDb25z
dHJhaW50cyYsIGNvbnN0IFVzZWRWZXJ0aWNhbFZhbHVlcyYpIGNvbnN0OworICAgICAgICBDb250
ZW50SGVpZ2h0QW5kTWFyZ2luIGNvbXBsaWNhdGVkQ2FzZXMoY29uc3QgQm94JiwgY29uc3QgSG9y
aXpvbnRhbENvbnN0cmFpbnRzJiwgY29uc3QgT3ZlcnJpZGVWZXJ0aWNhbFZhbHVlcyYpIGNvbnN0
OwogICAgICAgICBMYXlvdXRVbml0IHNocmlua1RvRml0V2lkdGgoY29uc3QgQm94JiwgTGF5b3V0
VW5pdCBhdmFpbGFibGVXaWR0aCk7CiAKICAgICAgICAgRWRnZXMgY29tcHV0ZWRCb3JkZXIoY29u
c3QgQm94JikgY29uc3Q7CkBAIC0xNjEsMTYgKzE2MSwxNiBAQCBwcm90ZWN0ZWQ6CiAgICAgICAg
IGNvbnN0IEZvcm1hdHRpbmdDb250ZXh0JiBmb3JtYXR0aW5nQ29udGV4dCgpIGNvbnN0IHsgcmV0
dXJuIG1fZm9ybWF0dGluZ0NvbnRleHQ7IH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIFZlcnRp
Y2FsR2VvbWV0cnkgb3V0T2ZGbG93UmVwbGFjZWRWZXJ0aWNhbEdlb21ldHJ5KGNvbnN0IEJveCYs
IGNvbnN0IEhvcml6b250YWxDb25zdHJhaW50cyYsIGNvbnN0IFZlcnRpY2FsQ29uc3RyYWludHMm
LCBjb25zdCBVc2VkVmVydGljYWxWYWx1ZXMmKSBjb25zdDsKLSAgICAgICAgSG9yaXpvbnRhbEdl
b21ldHJ5IG91dE9mRmxvd1JlcGxhY2VkSG9yaXpvbnRhbEdlb21ldHJ5KGNvbnN0IEJveCYsIGNv
bnN0IEhvcml6b250YWxDb25zdHJhaW50cyYsIGNvbnN0IFVzZWRIb3Jpem9udGFsVmFsdWVzJikg
Y29uc3Q7CisgICAgICAgIFZlcnRpY2FsR2VvbWV0cnkgb3V0T2ZGbG93UmVwbGFjZWRWZXJ0aWNh
bEdlb21ldHJ5KGNvbnN0IEJveCYsIGNvbnN0IEhvcml6b250YWxDb25zdHJhaW50cyYsIGNvbnN0
IFZlcnRpY2FsQ29uc3RyYWludHMmLCBjb25zdCBPdmVycmlkZVZlcnRpY2FsVmFsdWVzJikgY29u
c3Q7CisgICAgICAgIEhvcml6b250YWxHZW9tZXRyeSBvdXRPZkZsb3dSZXBsYWNlZEhvcml6b250
YWxHZW9tZXRyeShjb25zdCBCb3gmLCBjb25zdCBIb3Jpem9udGFsQ29uc3RyYWludHMmLCBjb25z
dCBPdmVycmlkZUhvcml6b250YWxWYWx1ZXMmKSBjb25zdDsKIAotICAgICAgICBWZXJ0aWNhbEdl
b21ldHJ5IG91dE9mRmxvd05vblJlcGxhY2VkVmVydGljYWxHZW9tZXRyeShjb25zdCBCb3gmLCBj
b25zdCBIb3Jpem9udGFsQ29uc3RyYWludHMmLCBjb25zdCBWZXJ0aWNhbENvbnN0cmFpbnRzJiwg
Y29uc3QgVXNlZFZlcnRpY2FsVmFsdWVzJikgY29uc3Q7Ci0gICAgICAgIEhvcml6b250YWxHZW9t
ZXRyeSBvdXRPZkZsb3dOb25SZXBsYWNlZEhvcml6b250YWxHZW9tZXRyeShjb25zdCBCb3gmLCBj
b25zdCBIb3Jpem9udGFsQ29uc3RyYWludHMmLCBjb25zdCBVc2VkSG9yaXpvbnRhbFZhbHVlcyYp
OworICAgICAgICBWZXJ0aWNhbEdlb21ldHJ5IG91dE9mRmxvd05vblJlcGxhY2VkVmVydGljYWxH
ZW9tZXRyeShjb25zdCBCb3gmLCBjb25zdCBIb3Jpem9udGFsQ29uc3RyYWludHMmLCBjb25zdCBW
ZXJ0aWNhbENvbnN0cmFpbnRzJiwgY29uc3QgT3ZlcnJpZGVWZXJ0aWNhbFZhbHVlcyYpIGNvbnN0
OworICAgICAgICBIb3Jpem9udGFsR2VvbWV0cnkgb3V0T2ZGbG93Tm9uUmVwbGFjZWRIb3Jpem9u
dGFsR2VvbWV0cnkoY29uc3QgQm94JiwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJiwgY29u
c3QgT3ZlcnJpZGVIb3Jpem9udGFsVmFsdWVzJik7CiAKLSAgICAgICAgQ29udGVudEhlaWdodEFu
ZE1hcmdpbiBmbG9hdGluZ1JlcGxhY2VkSGVpZ2h0QW5kTWFyZ2luKGNvbnN0IEJveCYsIGNvbnN0
IEhvcml6b250YWxDb25zdHJhaW50cyYsIGNvbnN0IFVzZWRWZXJ0aWNhbFZhbHVlcyYpIGNvbnN0
OwotICAgICAgICBDb250ZW50V2lkdGhBbmRNYXJnaW4gZmxvYXRpbmdSZXBsYWNlZFdpZHRoQW5k
TWFyZ2luKGNvbnN0IEJveCYsIGNvbnN0IEhvcml6b250YWxDb25zdHJhaW50cyYsIGNvbnN0IFVz
ZWRIb3Jpem9udGFsVmFsdWVzJikgY29uc3Q7CisgICAgICAgIENvbnRlbnRIZWlnaHRBbmRNYXJn
aW4gZmxvYXRpbmdSZXBsYWNlZEhlaWdodEFuZE1hcmdpbihjb25zdCBCb3gmLCBjb25zdCBIb3Jp
em9udGFsQ29uc3RyYWludHMmLCBjb25zdCBPdmVycmlkZVZlcnRpY2FsVmFsdWVzJikgY29uc3Q7
CisgICAgICAgIENvbnRlbnRXaWR0aEFuZE1hcmdpbiBmbG9hdGluZ1JlcGxhY2VkV2lkdGhBbmRN
YXJnaW4oY29uc3QgQm94JiwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJiwgY29uc3QgT3Zl
cnJpZGVIb3Jpem9udGFsVmFsdWVzJikgY29uc3Q7CiAKLSAgICAgICAgQ29udGVudFdpZHRoQW5k
TWFyZ2luIGZsb2F0aW5nTm9uUmVwbGFjZWRXaWR0aEFuZE1hcmdpbihjb25zdCBCb3gmLCBjb25z
dCBIb3Jpem9udGFsQ29uc3RyYWludHMmLCBjb25zdCBVc2VkSG9yaXpvbnRhbFZhbHVlcyYpOwor
ICAgICAgICBDb250ZW50V2lkdGhBbmRNYXJnaW4gZmxvYXRpbmdOb25SZXBsYWNlZFdpZHRoQW5k
TWFyZ2luKGNvbnN0IEJveCYsIGNvbnN0IEhvcml6b250YWxDb25zdHJhaW50cyYsIGNvbnN0IE92
ZXJyaWRlSG9yaXpvbnRhbFZhbHVlcyYpOwogCiAgICAgICAgIExheW91dFVuaXQgc3RhdGljVmVy
dGljYWxQb3NpdGlvbkZvck91dE9mRmxvd1Bvc2l0aW9uZWQoY29uc3QgQm94JiwgY29uc3QgVmVy
dGljYWxDb25zdHJhaW50cyYpIGNvbnN0OwogICAgICAgICBMYXlvdXRVbml0IHN0YXRpY0hvcml6
b250YWxQb3NpdGlvbkZvck91dE9mRmxvd1Bvc2l0aW9uZWQoY29uc3QgQm94JiwgY29uc3QgSG9y
aXpvbnRhbENvbnN0cmFpbnRzJikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAKaW5kZXggZWFhM2QyNjdkNDNhNDZlZDJj
NmQ2MWU1OGNkY2MxYmUwNTk5NGU4NC4uZWVmNjY1MjdjNThmOTc5ODJiN2Y5MWRjZDMwMmRhZWI4
MTUwZDNjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250
ZXh0R2VvbWV0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29u
dGV4dEdlb21ldHJ5LmNwcApAQCAtMjk1LDcgKzI5NSw3IEBAIExheW91dFVuaXQgRm9ybWF0dGlu
Z0NvbnRleHQ6Okdlb21ldHJ5OjpzaHJpbmtUb0ZpdFdpZHRoKGNvbnN0IEJveCYgZm9ybWF0dGlu
Z1JvCiAgICAgcmV0dXJuIHN0ZDo6bWluKHN0ZDo6bWF4KGludHJpbnNpY1dpZHRoQ29uc3RyYWlu
dHMubWluaW11bSwgYXZhaWxhYmxlV2lkdGgpLCBpbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzLm1h
eGltdW0pOwogfQogCi1WZXJ0aWNhbEdlb21ldHJ5IEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRy
eTo6b3V0T2ZGbG93Tm9uUmVwbGFjZWRWZXJ0aWNhbEdlb21ldHJ5KGNvbnN0IEJveCYgbGF5b3V0
Qm94LCBjb25zdCBIb3Jpem9udGFsQ29uc3RyYWludHMmIGhvcml6b250YWxDb25zdHJhaW50cywg
Y29uc3QgVmVydGljYWxDb25zdHJhaW50cyYgdmVydGljYWxDb25zdHJhaW50cywgY29uc3QgVXNl
ZFZlcnRpY2FsVmFsdWVzJiB1c2VkVmVydGljYWxWYWx1ZXMpIGNvbnN0CitWZXJ0aWNhbEdlb21l
dHJ5IEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6b3V0T2ZGbG93Tm9uUmVwbGFjZWRWZXJ0
aWNhbEdlb21ldHJ5KGNvbnN0IEJveCYgbGF5b3V0Qm94LCBjb25zdCBIb3Jpem9udGFsQ29uc3Ry
YWludHMmIGhvcml6b250YWxDb25zdHJhaW50cywgY29uc3QgVmVydGljYWxDb25zdHJhaW50cyYg
dmVydGljYWxDb25zdHJhaW50cywgY29uc3QgT3ZlcnJpZGVWZXJ0aWNhbFZhbHVlcyYgb3ZlcnJp
ZGVWZXJ0aWNhbFZhbHVlcykgY29uc3QKIHsKICAgICBBU1NFUlQobGF5b3V0Qm94LmlzT3V0T2ZG
bG93UG9zaXRpb25lZCgpICYmICFsYXlvdXRCb3gucmVwbGFjZWQoKSk7CiAgICAgQVNTRVJUKHZl
cnRpY2FsQ29uc3RyYWludHMubG9naWNhbEhlaWdodCk7CkBAIC0zMzIsNyArMzMyLDcgQEAgVmVy
dGljYWxHZW9tZXRyeSBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Om91dE9mRmxvd05vblJl
cGxhY2VkVmVydGljYWxHZW9tZXQKIAogICAgIGF1dG8gdG9wID0gY29tcHV0ZWRWYWx1ZUlmTm90
QXV0byhzdHlsZS5sb2dpY2FsVG9wKCksIGNvbnRhaW5pbmdCbG9ja1dpZHRoKTsKICAgICBhdXRv
IGJvdHRvbSA9IGNvbXB1dGVkVmFsdWVJZk5vdEF1dG8oc3R5bGUubG9naWNhbEJvdHRvbSgpLCBj
b250YWluaW5nQmxvY2tXaWR0aCk7Ci0gICAgYXV0byBoZWlnaHQgPSB1c2VkVmVydGljYWxWYWx1
ZXMuaGVpZ2h0ID8gdXNlZFZlcnRpY2FsVmFsdWVzLmhlaWdodC52YWx1ZSgpIDogY29tcHV0ZWRD
b250ZW50SGVpZ2h0KGxheW91dEJveCwgY29udGFpbmluZ0Jsb2NrSGVpZ2h0KTsKKyAgICBhdXRv
IGhlaWdodCA9IG92ZXJyaWRlVmVydGljYWxWYWx1ZXMuaGVpZ2h0ID8gb3ZlcnJpZGVWZXJ0aWNh
bFZhbHVlcy5oZWlnaHQudmFsdWUoKSA6IGNvbXB1dGVkQ29udGVudEhlaWdodChsYXlvdXRCb3gs
IGNvbnRhaW5pbmdCbG9ja0hlaWdodCk7CiAgICAgYXV0byBjb21wdXRlZFZlcnRpY2FsTWFyZ2lu
ID0gR2VvbWV0cnk6OmNvbXB1dGVkVmVydGljYWxNYXJnaW4obGF5b3V0Qm94LCBob3Jpem9udGFs
Q29uc3RyYWludHMpOwogICAgIFVzZWRWZXJ0aWNhbE1hcmdpbjo6Tm9uQ29sbGFwc2VkVmFsdWVz
IHVzZWRWZXJ0aWNhbE1hcmdpbjsgCiAgICAgYXV0byBwYWRkaW5nVG9wID0gYm94R2VvbWV0cnku
cGFkZGluZ1RvcCgpLnZhbHVlT3IoMCk7CkBAIC00MTQsNyArNDE0LDcgQEAgVmVydGljYWxHZW9t
ZXRyeSBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Om91dE9mRmxvd05vblJlcGxhY2VkVmVy
dGljYWxHZW9tZXQKICAgICByZXR1cm4geyAqdG9wLCAqYm90dG9tLCB7ICpoZWlnaHQsIHVzZWRW
ZXJ0aWNhbE1hcmdpbiB9IH07CiB9CiAKLUhvcml6b250YWxHZW9tZXRyeSBGb3JtYXR0aW5nQ29u
dGV4dDo6R2VvbWV0cnk6Om91dE9mRmxvd05vblJlcGxhY2VkSG9yaXpvbnRhbEdlb21ldHJ5KGNv
bnN0IEJveCYgbGF5b3V0Qm94LCBjb25zdCBIb3Jpem9udGFsQ29uc3RyYWludHMmIGhvcml6b250
YWxDb25zdHJhaW50cywgY29uc3QgVXNlZEhvcml6b250YWxWYWx1ZXMmIHVzZWRIb3Jpem9udGFs
VmFsdWVzKQorSG9yaXpvbnRhbEdlb21ldHJ5IEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6
b3V0T2ZGbG93Tm9uUmVwbGFjZWRIb3Jpem9udGFsR2VvbWV0cnkoY29uc3QgQm94JiBsYXlvdXRC
b3gsIGNvbnN0IEhvcml6b250YWxDb25zdHJhaW50cyYgaG9yaXpvbnRhbENvbnN0cmFpbnRzLCBj
b25zdCBPdmVycmlkZUhvcml6b250YWxWYWx1ZXMmIG92ZXJyaWRlSG9yaXpvbnRhbFZhbHVlcykK
IHsKICAgICBBU1NFUlQobGF5b3V0Qm94LmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpICYmICFsYXlv
dXRCb3gucmVwbGFjZWQoKSk7CiAgICAgCkBAIC00NTIsNyArNDUyLDcgQEAgSG9yaXpvbnRhbEdl
b21ldHJ5IEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6b3V0T2ZGbG93Tm9uUmVwbGFjZWRI
b3Jpem9udGFsR2UKICAgICAKICAgICBhdXRvIGxlZnQgPSBjb21wdXRlZFZhbHVlSWZOb3RBdXRv
KHN0eWxlLmxvZ2ljYWxMZWZ0KCksIGNvbnRhaW5pbmdCbG9ja1dpZHRoKTsKICAgICBhdXRvIHJp
Z2h0ID0gY29tcHV0ZWRWYWx1ZUlmTm90QXV0byhzdHlsZS5sb2dpY2FsUmlnaHQoKSwgY29udGFp
bmluZ0Jsb2NrV2lkdGgpOwotICAgIGF1dG8gd2lkdGggPSB1c2VkSG9yaXpvbnRhbFZhbHVlcy53
aWR0aCA/IHVzZWRIb3Jpem9udGFsVmFsdWVzLndpZHRoIDogY29tcHV0ZWRDb250ZW50V2lkdGgo
bGF5b3V0Qm94LCBjb250YWluaW5nQmxvY2tXaWR0aCk7CisgICAgYXV0byB3aWR0aCA9IG92ZXJy
aWRlSG9yaXpvbnRhbFZhbHVlcy53aWR0aCA/IG92ZXJyaWRlSG9yaXpvbnRhbFZhbHVlcy53aWR0
aCA6IGNvbXB1dGVkQ29udGVudFdpZHRoKGxheW91dEJveCwgY29udGFpbmluZ0Jsb2NrV2lkdGgp
OwogICAgIGF1dG8gY29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luID0gR2VvbWV0cnk6OmNvbXB1dGVk
SG9yaXpvbnRhbE1hcmdpbihsYXlvdXRCb3gsIGhvcml6b250YWxDb25zdHJhaW50cyk7CiAgICAg
VXNlZEhvcml6b250YWxNYXJnaW4gdXNlZEhvcml6b250YWxNYXJnaW47CiAgICAgYXV0byBwYWRk
aW5nTGVmdCA9IGJveEdlb21ldHJ5LnBhZGRpbmdMZWZ0KCkudmFsdWVPcigwKTsKQEAgLTU1Nyw3
ICs1NTcsNyBAQCBIb3Jpem9udGFsR2VvbWV0cnkgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5
OjpvdXRPZkZsb3dOb25SZXBsYWNlZEhvcml6b250YWxHZQogICAgIHJldHVybiB7ICpsZWZ0LCAq
cmlnaHQsIHsgKndpZHRoLCB1c2VkSG9yaXpvbnRhbE1hcmdpbiwgY29tcHV0ZWRIb3Jpem9udGFs
TWFyZ2luIH0gfTsKIH0KIAotVmVydGljYWxHZW9tZXRyeSBGb3JtYXR0aW5nQ29udGV4dDo6R2Vv
bWV0cnk6Om91dE9mRmxvd1JlcGxhY2VkVmVydGljYWxHZW9tZXRyeShjb25zdCBCb3gmIGxheW91
dEJveCwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJiBob3Jpem9udGFsQ29uc3RyYWludHMs
IGNvbnN0IFZlcnRpY2FsQ29uc3RyYWludHMmIHZlcnRpY2FsQ29uc3RyYWludHMsIGNvbnN0IFVz
ZWRWZXJ0aWNhbFZhbHVlcyYgdXNlZFZlcnRpY2FsVmFsdWVzKSBjb25zdAorVmVydGljYWxHZW9t
ZXRyeSBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Om91dE9mRmxvd1JlcGxhY2VkVmVydGlj
YWxHZW9tZXRyeShjb25zdCBCb3gmIGxheW91dEJveCwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFp
bnRzJiBob3Jpem9udGFsQ29uc3RyYWludHMsIGNvbnN0IFZlcnRpY2FsQ29uc3RyYWludHMmIHZl
cnRpY2FsQ29uc3RyYWludHMsIGNvbnN0IE92ZXJyaWRlVmVydGljYWxWYWx1ZXMmIG92ZXJyaWRl
VmVydGljYWxWYWx1ZXMpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGxheW91dEJveC5pc091dE9mRmxv
d1Bvc2l0aW9uZWQoKSAmJiBsYXlvdXRCb3gucmVwbGFjZWQoKSk7CiAgICAgQVNTRVJUKHZlcnRp
Y2FsQ29uc3RyYWludHMubG9naWNhbEhlaWdodCk7CkBAIC01ODAsNyArNTgwLDcgQEAgVmVydGlj
YWxHZW9tZXRyeSBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Om91dE9mRmxvd1JlcGxhY2Vk
VmVydGljYWxHZW9tZXRyeSgKIAogICAgIGF1dG8gdG9wID0gY29tcHV0ZWRWYWx1ZUlmTm90QXV0
byhzdHlsZS5sb2dpY2FsVG9wKCksIGNvbnRhaW5pbmdCbG9ja1dpZHRoKTsKICAgICBhdXRvIGJv
dHRvbSA9IGNvbXB1dGVkVmFsdWVJZk5vdEF1dG8oc3R5bGUubG9naWNhbEJvdHRvbSgpLCBjb250
YWluaW5nQmxvY2tXaWR0aCk7Ci0gICAgYXV0byBoZWlnaHQgPSBpbmxpbmVSZXBsYWNlZEhlaWdo
dEFuZE1hcmdpbihsYXlvdXRCb3gsIGhvcml6b250YWxDb25zdHJhaW50cywgdmVydGljYWxDb25z
dHJhaW50cywgdXNlZFZlcnRpY2FsVmFsdWVzKS5jb250ZW50SGVpZ2h0OworICAgIGF1dG8gaGVp
Z2h0ID0gaW5saW5lUmVwbGFjZWRIZWlnaHRBbmRNYXJnaW4obGF5b3V0Qm94LCBob3Jpem9udGFs
Q29uc3RyYWludHMsIHZlcnRpY2FsQ29uc3RyYWludHMsIG92ZXJyaWRlVmVydGljYWxWYWx1ZXMp
LmNvbnRlbnRIZWlnaHQ7CiAgICAgYXV0byBjb21wdXRlZFZlcnRpY2FsTWFyZ2luID0gR2VvbWV0
cnk6OmNvbXB1dGVkVmVydGljYWxNYXJnaW4obGF5b3V0Qm94LCBob3Jpem9udGFsQ29uc3RyYWlu
dHMpOwogICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IHVzZWRNYXJnaW5CZWZvcmUgPSBjb21wdXRl
ZFZlcnRpY2FsTWFyZ2luLmJlZm9yZTsKICAgICBPcHRpb25hbDxMYXlvdXRVbml0PiB1c2VkTWFy
Z2luQWZ0ZXIgPSBjb21wdXRlZFZlcnRpY2FsTWFyZ2luLmFmdGVyOwpAQCAtNjM5LDcgKzYzOSw3
IEBAIFZlcnRpY2FsR2VvbWV0cnkgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpvdXRPZkZs
b3dSZXBsYWNlZFZlcnRpY2FsR2VvbWV0cnkoCiAgICAgcmV0dXJuIHsgKnRvcCwgKmJvdHRvbSwg
eyBoZWlnaHQsIHsgKnVzZWRNYXJnaW5CZWZvcmUsICp1c2VkTWFyZ2luQWZ0ZXIgfSB9IH07CiB9
CiAKLUhvcml6b250YWxHZW9tZXRyeSBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Om91dE9m
Rmxvd1JlcGxhY2VkSG9yaXpvbnRhbEdlb21ldHJ5KGNvbnN0IEJveCYgbGF5b3V0Qm94LCBjb25z
dCBIb3Jpem9udGFsQ29uc3RyYWludHMmIGhvcml6b250YWxDb25zdHJhaW50cywgY29uc3QgVXNl
ZEhvcml6b250YWxWYWx1ZXMmIHVzZWRIb3Jpem9udGFsVmFsdWVzKSBjb25zdAorSG9yaXpvbnRh
bEdlb21ldHJ5IEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6b3V0T2ZGbG93UmVwbGFjZWRI
b3Jpem9udGFsR2VvbWV0cnkoY29uc3QgQm94JiBsYXlvdXRCb3gsIGNvbnN0IEhvcml6b250YWxD
b25zdHJhaW50cyYgaG9yaXpvbnRhbENvbnN0cmFpbnRzLCBjb25zdCBPdmVycmlkZUhvcml6b250
YWxWYWx1ZXMmIG92ZXJyaWRlSG9yaXpvbnRhbFZhbHVlcykgY29uc3QKIHsKICAgICBBU1NFUlQo
bGF5b3V0Qm94LmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpICYmIGxheW91dEJveC5yZXBsYWNlZCgp
KTsKIApAQCAtNjY4LDcgKzY2OCw3IEBAIEhvcml6b250YWxHZW9tZXRyeSBGb3JtYXR0aW5nQ29u
dGV4dDo6R2VvbWV0cnk6Om91dE9mRmxvd1JlcGxhY2VkSG9yaXpvbnRhbEdlb21lCiAgICAgYXV0
byBjb21wdXRlZEhvcml6b250YWxNYXJnaW4gPSBHZW9tZXRyeTo6Y29tcHV0ZWRIb3Jpem9udGFs
TWFyZ2luKGxheW91dEJveCwgaG9yaXpvbnRhbENvbnN0cmFpbnRzKTsKICAgICBPcHRpb25hbDxM
YXlvdXRVbml0PiB1c2VkTWFyZ2luU3RhcnQgPSBjb21wdXRlZEhvcml6b250YWxNYXJnaW4uc3Rh
cnQ7CiAgICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gdXNlZE1hcmdpbkVuZCA9IGNvbXB1dGVkSG9y
aXpvbnRhbE1hcmdpbi5lbmQ7Ci0gICAgYXV0byB3aWR0aCA9IGlubGluZVJlcGxhY2VkV2lkdGhB
bmRNYXJnaW4obGF5b3V0Qm94LCBob3Jpem9udGFsQ29uc3RyYWludHMsIHVzZWRIb3Jpem9udGFs
VmFsdWVzKS5jb250ZW50V2lkdGg7CisgICAgYXV0byB3aWR0aCA9IGlubGluZVJlcGxhY2VkV2lk
dGhBbmRNYXJnaW4obGF5b3V0Qm94LCBob3Jpem9udGFsQ29uc3RyYWludHMsIG92ZXJyaWRlSG9y
aXpvbnRhbFZhbHVlcykuY29udGVudFdpZHRoOwogICAgIGF1dG8gcGFkZGluZ0xlZnQgPSBib3hH
ZW9tZXRyeS5wYWRkaW5nTGVmdCgpLnZhbHVlT3IoMCk7CiAgICAgYXV0byBwYWRkaW5nUmlnaHQg
PSBib3hHZW9tZXRyeS5wYWRkaW5nUmlnaHQoKS52YWx1ZU9yKDApOwogICAgIGF1dG8gYm9yZGVy
TGVmdCA9IGJveEdlb21ldHJ5LmJvcmRlckxlZnQoKTsKQEAgLTc0Myw3ICs3NDMsNyBAQCBIb3Jp
em9udGFsR2VvbWV0cnkgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpvdXRPZkZsb3dSZXBs
YWNlZEhvcml6b250YWxHZW9tZQogICAgIHJldHVybiB7ICpsZWZ0LCAqcmlnaHQsIHsgd2lkdGgs
IHsgKnVzZWRNYXJnaW5TdGFydCwgKnVzZWRNYXJnaW5FbmQgfSwgY29tcHV0ZWRIb3Jpem9udGFs
TWFyZ2luIH0gfTsKIH0KIAotQ29udGVudEhlaWdodEFuZE1hcmdpbiBGb3JtYXR0aW5nQ29udGV4
dDo6R2VvbWV0cnk6OmNvbXBsaWNhdGVkQ2FzZXMoY29uc3QgQm94JiBsYXlvdXRCb3gsIGNvbnN0
IEhvcml6b250YWxDb25zdHJhaW50cyYgaG9yaXpvbnRhbENvbnN0cmFpbnRzLCBjb25zdCBVc2Vk
VmVydGljYWxWYWx1ZXMmIHVzZWRWZXJ0aWNhbFZhbHVlcykgY29uc3QKK0NvbnRlbnRIZWlnaHRB
bmRNYXJnaW4gRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5Ojpjb21wbGljYXRlZENhc2VzKGNv
bnN0IEJveCYgbGF5b3V0Qm94LCBjb25zdCBIb3Jpem9udGFsQ29uc3RyYWludHMmIGhvcml6b250
YWxDb25zdHJhaW50cywgY29uc3QgT3ZlcnJpZGVWZXJ0aWNhbFZhbHVlcyYgb3ZlcnJpZGVWZXJ0
aWNhbFZhbHVlcykgY29uc3QKIHsKICAgICBBU1NFUlQoIWxheW91dEJveC5yZXBsYWNlZCgpKTsK
ICAgICAvLyBUT0RPOiBVc2UgY29tcGxpY2F0ZWQtY2FzZSBmb3IgZG9jdW1lbnQgcmVuZGVyZXIg
Zm9yIG5vdyAoc2VlIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbkZsb3dIZWln
aHRBbmRNYXJnaW4pLgpAQCAtNzU4LDcgKzc1OCw3IEBAIENvbnRlbnRIZWlnaHRBbmRNYXJnaW4g
Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5Ojpjb21wbGljYXRlZENhc2VzKGNvbnN0IEJveCYK
ICAgICAvLyAxLiBJZiAnbWFyZ2luLXRvcCcsIG9yICdtYXJnaW4tYm90dG9tJyBhcmUgJ2F1dG8n
LCB0aGVpciB1c2VkIHZhbHVlIGlzIDAuCiAgICAgLy8gMi4gSWYgJ2hlaWdodCcgaXMgJ2F1dG8n
LCB0aGUgaGVpZ2h0IGRlcGVuZHMgb24gdGhlIGVsZW1lbnQncyBkZXNjZW5kYW50cyBwZXIgMTAu
Ni43LgogCi0gICAgYXV0byBoZWlnaHQgPSB1c2VkVmVydGljYWxWYWx1ZXMuaGVpZ2h0ID8gdXNl
ZFZlcnRpY2FsVmFsdWVzLmhlaWdodC52YWx1ZSgpIDogY29tcHV0ZWRDb250ZW50SGVpZ2h0KGxh
eW91dEJveCk7CisgICAgYXV0byBoZWlnaHQgPSBvdmVycmlkZVZlcnRpY2FsVmFsdWVzLmhlaWdo
dCA/IG92ZXJyaWRlVmVydGljYWxWYWx1ZXMuaGVpZ2h0LnZhbHVlKCkgOiBjb21wdXRlZENvbnRl
bnRIZWlnaHQobGF5b3V0Qm94KTsKICAgICBhdXRvIGNvbXB1dGVkVmVydGljYWxNYXJnaW4gPSBH
ZW9tZXRyeTo6Y29tcHV0ZWRWZXJ0aWNhbE1hcmdpbihsYXlvdXRCb3gsIGhvcml6b250YWxDb25z
dHJhaW50cyk7CiAgICAgLy8gIzEKICAgICBhdXRvIHVzZWRWZXJ0aWNhbE1hcmdpbiA9IFVzZWRW
ZXJ0aWNhbE1hcmdpbjo6Tm9uQ29sbGFwc2VkVmFsdWVzIHsgY29tcHV0ZWRWZXJ0aWNhbE1hcmdp
bi5iZWZvcmUudmFsdWVPcigwKSwgY29tcHV0ZWRWZXJ0aWNhbE1hcmdpbi5hZnRlci52YWx1ZU9y
KDApIH07IApAQCAtNzc0LDcgKzc3NCw3IEBAIENvbnRlbnRIZWlnaHRBbmRNYXJnaW4gRm9ybWF0
dGluZ0NvbnRleHQ6Okdlb21ldHJ5Ojpjb21wbGljYXRlZENhc2VzKGNvbnN0IEJveCYKICAgICBy
ZXR1cm4gQ29udGVudEhlaWdodEFuZE1hcmdpbiB7ICpoZWlnaHQsIHVzZWRWZXJ0aWNhbE1hcmdp
biB9OwogfQogCi1Db250ZW50V2lkdGhBbmRNYXJnaW4gRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21l
dHJ5OjpmbG9hdGluZ05vblJlcGxhY2VkV2lkdGhBbmRNYXJnaW4oY29uc3QgQm94JiBsYXlvdXRC
b3gsIGNvbnN0IEhvcml6b250YWxDb25zdHJhaW50cyYgaG9yaXpvbnRhbENvbnN0cmFpbnRzLCBj
b25zdCBVc2VkSG9yaXpvbnRhbFZhbHVlcyYgdXNlZEhvcml6b250YWxWYWx1ZXMpCitDb250ZW50
V2lkdGhBbmRNYXJnaW4gRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpmbG9hdGluZ05vblJl
cGxhY2VkV2lkdGhBbmRNYXJnaW4oY29uc3QgQm94JiBsYXlvdXRCb3gsIGNvbnN0IEhvcml6b250
YWxDb25zdHJhaW50cyYgaG9yaXpvbnRhbENvbnN0cmFpbnRzLCBjb25zdCBPdmVycmlkZUhvcml6
b250YWxWYWx1ZXMmIG92ZXJyaWRlSG9yaXpvbnRhbFZhbHVlcykKIHsKICAgICBBU1NFUlQobGF5
b3V0Qm94LmlzRmxvYXRpbmdQb3NpdGlvbmVkKCkgJiYgIWxheW91dEJveC5yZXBsYWNlZCgpKTsK
IApAQCAtNzg4LDcgKzc4OCw3IEBAIENvbnRlbnRXaWR0aEFuZE1hcmdpbiBGb3JtYXR0aW5nQ29u
dGV4dDo6R2VvbWV0cnk6OmZsb2F0aW5nTm9uUmVwbGFjZWRXaWR0aEFuZE1hCiAgICAgLy8gIzEK
ICAgICBhdXRvIHVzZWRIb3Jpem9udGFsbE1hcmdpbiA9IFVzZWRIb3Jpem9udGFsTWFyZ2luIHsg
Y29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luLnN0YXJ0LnZhbHVlT3IoMCksIGNvbXB1dGVkSG9yaXpv
bnRhbE1hcmdpbi5lbmQudmFsdWVPcigwKSB9OwogICAgIC8vICMyCi0gICAgYXV0byB3aWR0aCA9
IHVzZWRIb3Jpem9udGFsVmFsdWVzLndpZHRoID8gdXNlZEhvcml6b250YWxWYWx1ZXMud2lkdGgg
OiBjb21wdXRlZENvbnRlbnRXaWR0aChsYXlvdXRCb3gsIGhvcml6b250YWxDb25zdHJhaW50cy5s
b2dpY2FsV2lkdGgpOworICAgIGF1dG8gd2lkdGggPSBvdmVycmlkZUhvcml6b250YWxWYWx1ZXMu
d2lkdGggPyBvdmVycmlkZUhvcml6b250YWxWYWx1ZXMud2lkdGggOiBjb21wdXRlZENvbnRlbnRX
aWR0aChsYXlvdXRCb3gsIGhvcml6b250YWxDb25zdHJhaW50cy5sb2dpY2FsV2lkdGgpOwogICAg
IGlmICghd2lkdGgpCiAgICAgICAgIHdpZHRoID0gc2hyaW5rVG9GaXRXaWR0aChsYXlvdXRCb3gs
IGhvcml6b250YWxDb25zdHJhaW50cy5sb2dpY2FsV2lkdGgpOwogCkBAIC03OTYsMTcgKzc5Niwx
NyBAQCBDb250ZW50V2lkdGhBbmRNYXJnaW4gRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5Ojpm
bG9hdGluZ05vblJlcGxhY2VkV2lkdGhBbmRNYQogICAgIHJldHVybiBDb250ZW50V2lkdGhBbmRN
YXJnaW4geyAqd2lkdGgsIHVzZWRIb3Jpem9udGFsbE1hcmdpbiwgY29tcHV0ZWRIb3Jpem9udGFs
TWFyZ2luIH07CiB9CiAKLUNvbnRlbnRIZWlnaHRBbmRNYXJnaW4gRm9ybWF0dGluZ0NvbnRleHQ6
Okdlb21ldHJ5OjpmbG9hdGluZ1JlcGxhY2VkSGVpZ2h0QW5kTWFyZ2luKGNvbnN0IEJveCYgbGF5
b3V0Qm94LCBjb25zdCBIb3Jpem9udGFsQ29uc3RyYWludHMmIGhvcml6b250YWxDb25zdHJhaW50
cywgY29uc3QgVXNlZFZlcnRpY2FsVmFsdWVzJiB1c2VkVmVydGljYWxWYWx1ZXMpIGNvbnN0CitD
b250ZW50SGVpZ2h0QW5kTWFyZ2luIEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6ZmxvYXRp
bmdSZXBsYWNlZEhlaWdodEFuZE1hcmdpbihjb25zdCBCb3gmIGxheW91dEJveCwgY29uc3QgSG9y
aXpvbnRhbENvbnN0cmFpbnRzJiBob3Jpem9udGFsQ29uc3RyYWludHMsIGNvbnN0IE92ZXJyaWRl
VmVydGljYWxWYWx1ZXMmIG92ZXJyaWRlVmVydGljYWxWYWx1ZXMpIGNvbnN0CiB7CiAgICAgQVNT
RVJUKGxheW91dEJveC5pc0Zsb2F0aW5nUG9zaXRpb25lZCgpICYmIGxheW91dEJveC5yZXBsYWNl
ZCgpKTsKIAogICAgIC8vIDEwLjYuMiBJbmxpbmUgcmVwbGFjZWQgZWxlbWVudHMsIGJsb2NrLWxl
dmVsIHJlcGxhY2VkIGVsZW1lbnRzIGluIG5vcm1hbCBmbG93LCAnaW5saW5lLWJsb2NrJwogICAg
IC8vIHJlcGxhY2VkIGVsZW1lbnRzIGluIG5vcm1hbCBmbG93IGFuZCBmbG9hdGluZyByZXBsYWNl
ZCBlbGVtZW50cwogICAgIExPR19XSVRIX1NUUkVBTShGb3JtYXR0aW5nQ29udGV4dExheW91dCwg
c3RyZWFtIDw8ICJbSGVpZ2h0XVtNYXJnaW5dIC0+IGZsb2F0aW5nIHJlcGxhY2VkIC0+IHJlZGly
ZWN0ZWQgdG8gaW5saW5lIHJlcGxhY2VkIik7Ci0gICAgcmV0dXJuIGlubGluZVJlcGxhY2VkSGVp
Z2h0QW5kTWFyZ2luKGxheW91dEJveCwgaG9yaXpvbnRhbENvbnN0cmFpbnRzLCB7IH0sIHVzZWRW
ZXJ0aWNhbFZhbHVlcyk7CisgICAgcmV0dXJuIGlubGluZVJlcGxhY2VkSGVpZ2h0QW5kTWFyZ2lu
KGxheW91dEJveCwgaG9yaXpvbnRhbENvbnN0cmFpbnRzLCB7IH0sIG92ZXJyaWRlVmVydGljYWxW
YWx1ZXMpOwogfQogCi1Db250ZW50V2lkdGhBbmRNYXJnaW4gRm9ybWF0dGluZ0NvbnRleHQ6Okdl
b21ldHJ5OjpmbG9hdGluZ1JlcGxhY2VkV2lkdGhBbmRNYXJnaW4oY29uc3QgQm94JiBsYXlvdXRC
b3gsIGNvbnN0IEhvcml6b250YWxDb25zdHJhaW50cyYgaG9yaXpvbnRhbENvbnN0cmFpbnRzLCBj
b25zdCBVc2VkSG9yaXpvbnRhbFZhbHVlcyYgdXNlZEhvcml6b250YWxWYWx1ZXMpIGNvbnN0CitD
b250ZW50V2lkdGhBbmRNYXJnaW4gRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpmbG9hdGlu
Z1JlcGxhY2VkV2lkdGhBbmRNYXJnaW4oY29uc3QgQm94JiBsYXlvdXRCb3gsIGNvbnN0IEhvcml6
b250YWxDb25zdHJhaW50cyYgaG9yaXpvbnRhbENvbnN0cmFpbnRzLCBjb25zdCBPdmVycmlkZUhv
cml6b250YWxWYWx1ZXMmIG92ZXJyaWRlSG9yaXpvbnRhbFZhbHVlcykgY29uc3QKIHsKICAgICBB
U1NFUlQobGF5b3V0Qm94LmlzRmxvYXRpbmdQb3NpdGlvbmVkKCkgJiYgbGF5b3V0Qm94LnJlcGxh
Y2VkKCkpOwogCkBAIC04MTgsNDYgKzgxOCw0NiBAQCBDb250ZW50V2lkdGhBbmRNYXJnaW4gRm9y
bWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpmbG9hdGluZ1JlcGxhY2VkV2lkdGhBbmRNYXJnaQog
CiAgICAgTE9HX1dJVEhfU1RSRUFNKEZvcm1hdHRpbmdDb250ZXh0TGF5b3V0LCBzdHJlYW0gPDwg
IltIZWlnaHRdW01hcmdpbl0gLT4gZmxvYXRpbmcgcmVwbGFjZWQgLT4gcmVkaXJlY3RlZCB0byBp
bmxpbmUgcmVwbGFjZWQiKTsKICAgICBhdXRvIHVzZWRNYXJnaW4gPSBVc2VkSG9yaXpvbnRhbE1h
cmdpbiB7IGNvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbi5zdGFydC52YWx1ZU9yKDApLCBjb21wdXRl
ZEhvcml6b250YWxNYXJnaW4uZW5kLnZhbHVlT3IoMCkgfTsKLSAgICByZXR1cm4gaW5saW5lUmVw
bGFjZWRXaWR0aEFuZE1hcmdpbihsYXlvdXRCb3gsIGhvcml6b250YWxDb25zdHJhaW50cywgeyB1
c2VkSG9yaXpvbnRhbFZhbHVlcy53aWR0aCwgdXNlZE1hcmdpbiB9KTsKKyAgICByZXR1cm4gaW5s
aW5lUmVwbGFjZWRXaWR0aEFuZE1hcmdpbihsYXlvdXRCb3gsIGhvcml6b250YWxDb25zdHJhaW50
cywgeyBvdmVycmlkZUhvcml6b250YWxWYWx1ZXMud2lkdGgsIHVzZWRNYXJnaW4gfSk7CiB9CiAK
LVZlcnRpY2FsR2VvbWV0cnkgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpvdXRPZkZsb3dW
ZXJ0aWNhbEdlb21ldHJ5KGNvbnN0IEJveCYgbGF5b3V0Qm94LCBjb25zdCBIb3Jpem9udGFsQ29u
c3RyYWludHMmIGhvcml6b250YWxDb25zdHJhaW50cywgY29uc3QgVmVydGljYWxDb25zdHJhaW50
cyYgdmVydGljYWxDb25zdHJhaW50cywgY29uc3QgVXNlZFZlcnRpY2FsVmFsdWVzJiB1c2VkVmVy
dGljYWxWYWx1ZXMpIGNvbnN0CitWZXJ0aWNhbEdlb21ldHJ5IEZvcm1hdHRpbmdDb250ZXh0OjpH
ZW9tZXRyeTo6b3V0T2ZGbG93VmVydGljYWxHZW9tZXRyeShjb25zdCBCb3gmIGxheW91dEJveCwg
Y29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJiBob3Jpem9udGFsQ29uc3RyYWludHMsIGNvbnN0
IFZlcnRpY2FsQ29uc3RyYWludHMmIHZlcnRpY2FsQ29uc3RyYWludHMsIGNvbnN0IE92ZXJyaWRl
VmVydGljYWxWYWx1ZXMmIG92ZXJyaWRlVmVydGljYWxWYWx1ZXMpIGNvbnN0CiB7CiAgICAgQVNT
RVJUKGxheW91dEJveC5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSk7CiAKICAgICBpZiAoIWxheW91
dEJveC5yZXBsYWNlZCgpKQotICAgICAgICByZXR1cm4gb3V0T2ZGbG93Tm9uUmVwbGFjZWRWZXJ0
aWNhbEdlb21ldHJ5KGxheW91dEJveCwgaG9yaXpvbnRhbENvbnN0cmFpbnRzLCB2ZXJ0aWNhbENv
bnN0cmFpbnRzLCB1c2VkVmVydGljYWxWYWx1ZXMpOwotICAgIHJldHVybiBvdXRPZkZsb3dSZXBs
YWNlZFZlcnRpY2FsR2VvbWV0cnkobGF5b3V0Qm94LCBob3Jpem9udGFsQ29uc3RyYWludHMsIHZl
cnRpY2FsQ29uc3RyYWludHMsIHVzZWRWZXJ0aWNhbFZhbHVlcyk7CisgICAgICAgIHJldHVybiBv
dXRPZkZsb3dOb25SZXBsYWNlZFZlcnRpY2FsR2VvbWV0cnkobGF5b3V0Qm94LCBob3Jpem9udGFs
Q29uc3RyYWludHMsIHZlcnRpY2FsQ29uc3RyYWludHMsIG92ZXJyaWRlVmVydGljYWxWYWx1ZXMp
OworICAgIHJldHVybiBvdXRPZkZsb3dSZXBsYWNlZFZlcnRpY2FsR2VvbWV0cnkobGF5b3V0Qm94
LCBob3Jpem9udGFsQ29uc3RyYWludHMsIHZlcnRpY2FsQ29uc3RyYWludHMsIG92ZXJyaWRlVmVy
dGljYWxWYWx1ZXMpOwogfQogCi1Ib3Jpem9udGFsR2VvbWV0cnkgRm9ybWF0dGluZ0NvbnRleHQ6
Okdlb21ldHJ5OjpvdXRPZkZsb3dIb3Jpem9udGFsR2VvbWV0cnkoY29uc3QgQm94JiBsYXlvdXRC
b3gsIGNvbnN0IEhvcml6b250YWxDb25zdHJhaW50cyYgaG9yaXpvbnRhbENvbnN0cmFpbnRzLCBj
b25zdCBVc2VkSG9yaXpvbnRhbFZhbHVlcyYgdXNlZEhvcml6b250YWxWYWx1ZXMpCitIb3Jpem9u
dGFsR2VvbWV0cnkgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpvdXRPZkZsb3dIb3Jpem9u
dGFsR2VvbWV0cnkoY29uc3QgQm94JiBsYXlvdXRCb3gsIGNvbnN0IEhvcml6b250YWxDb25zdHJh
aW50cyYgaG9yaXpvbnRhbENvbnN0cmFpbnRzLCBjb25zdCBPdmVycmlkZUhvcml6b250YWxWYWx1
ZXMmIG92ZXJyaWRlSG9yaXpvbnRhbFZhbHVlcykKIHsKICAgICBBU1NFUlQobGF5b3V0Qm94Lmlz
T3V0T2ZGbG93UG9zaXRpb25lZCgpKTsKIAogICAgIGlmICghbGF5b3V0Qm94LnJlcGxhY2VkKCkp
Ci0gICAgICAgIHJldHVybiBvdXRPZkZsb3dOb25SZXBsYWNlZEhvcml6b250YWxHZW9tZXRyeShs
YXlvdXRCb3gsIGhvcml6b250YWxDb25zdHJhaW50cywgdXNlZEhvcml6b250YWxWYWx1ZXMpOwot
ICAgIHJldHVybiBvdXRPZkZsb3dSZXBsYWNlZEhvcml6b250YWxHZW9tZXRyeShsYXlvdXRCb3gs
IGhvcml6b250YWxDb25zdHJhaW50cywgdXNlZEhvcml6b250YWxWYWx1ZXMpOworICAgICAgICBy
ZXR1cm4gb3V0T2ZGbG93Tm9uUmVwbGFjZWRIb3Jpem9udGFsR2VvbWV0cnkobGF5b3V0Qm94LCBo
b3Jpem9udGFsQ29uc3RyYWludHMsIG92ZXJyaWRlSG9yaXpvbnRhbFZhbHVlcyk7CisgICAgcmV0
dXJuIG91dE9mRmxvd1JlcGxhY2VkSG9yaXpvbnRhbEdlb21ldHJ5KGxheW91dEJveCwgaG9yaXpv
bnRhbENvbnN0cmFpbnRzLCBvdmVycmlkZUhvcml6b250YWxWYWx1ZXMpOwogfQogCi1Db250ZW50
SGVpZ2h0QW5kTWFyZ2luIEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6ZmxvYXRpbmdIZWln
aHRBbmRNYXJnaW4oY29uc3QgQm94JiBsYXlvdXRCb3gsIGNvbnN0IEhvcml6b250YWxDb25zdHJh
aW50cyYgaG9yaXpvbnRhbENvbnN0cmFpbnRzLCBjb25zdCBVc2VkVmVydGljYWxWYWx1ZXMmIHVz
ZWRWZXJ0aWNhbFZhbHVlcykgY29uc3QKK0NvbnRlbnRIZWlnaHRBbmRNYXJnaW4gRm9ybWF0dGlu
Z0NvbnRleHQ6Okdlb21ldHJ5OjpmbG9hdGluZ0hlaWdodEFuZE1hcmdpbihjb25zdCBCb3gmIGxh
eW91dEJveCwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJiBob3Jpem9udGFsQ29uc3RyYWlu
dHMsIGNvbnN0IE92ZXJyaWRlVmVydGljYWxWYWx1ZXMmIG92ZXJyaWRlVmVydGljYWxWYWx1ZXMp
IGNvbnN0CiB7CiAgICAgQVNTRVJUKGxheW91dEJveC5pc0Zsb2F0aW5nUG9zaXRpb25lZCgpKTsK
IAogICAgIGlmICghbGF5b3V0Qm94LnJlcGxhY2VkKCkpCi0gICAgICAgIHJldHVybiBjb21wbGlj
YXRlZENhc2VzKGxheW91dEJveCwgaG9yaXpvbnRhbENvbnN0cmFpbnRzLCB1c2VkVmVydGljYWxW
YWx1ZXMpOwotICAgIHJldHVybiBmbG9hdGluZ1JlcGxhY2VkSGVpZ2h0QW5kTWFyZ2luKGxheW91
dEJveCwgaG9yaXpvbnRhbENvbnN0cmFpbnRzLCB1c2VkVmVydGljYWxWYWx1ZXMpOworICAgICAg
ICByZXR1cm4gY29tcGxpY2F0ZWRDYXNlcyhsYXlvdXRCb3gsIGhvcml6b250YWxDb25zdHJhaW50
cywgb3ZlcnJpZGVWZXJ0aWNhbFZhbHVlcyk7CisgICAgcmV0dXJuIGZsb2F0aW5nUmVwbGFjZWRI
ZWlnaHRBbmRNYXJnaW4obGF5b3V0Qm94LCBob3Jpem9udGFsQ29uc3RyYWludHMsIG92ZXJyaWRl
VmVydGljYWxWYWx1ZXMpOwogfQogCi1Db250ZW50V2lkdGhBbmRNYXJnaW4gRm9ybWF0dGluZ0Nv
bnRleHQ6Okdlb21ldHJ5OjpmbG9hdGluZ1dpZHRoQW5kTWFyZ2luKGNvbnN0IEJveCYgbGF5b3V0
Qm94LCBjb25zdCBIb3Jpem9udGFsQ29uc3RyYWludHMmIGhvcml6b250YWxDb25zdHJhaW50cywg
Y29uc3QgVXNlZEhvcml6b250YWxWYWx1ZXMmIHVzZWRIb3Jpem9udGFsVmFsdWVzKQorQ29udGVu
dFdpZHRoQW5kTWFyZ2luIEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6ZmxvYXRpbmdXaWR0
aEFuZE1hcmdpbihjb25zdCBCb3gmIGxheW91dEJveCwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFp
bnRzJiBob3Jpem9udGFsQ29uc3RyYWludHMsIGNvbnN0IE92ZXJyaWRlSG9yaXpvbnRhbFZhbHVl
cyYgb3ZlcnJpZGVIb3Jpem9udGFsVmFsdWVzKQogewogICAgIEFTU0VSVChsYXlvdXRCb3guaXNG
bG9hdGluZ1Bvc2l0aW9uZWQoKSk7CiAKICAgICBpZiAoIWxheW91dEJveC5yZXBsYWNlZCgpKQot
ICAgICAgICByZXR1cm4gZmxvYXRpbmdOb25SZXBsYWNlZFdpZHRoQW5kTWFyZ2luKGxheW91dEJv
eCwgaG9yaXpvbnRhbENvbnN0cmFpbnRzLCB1c2VkSG9yaXpvbnRhbFZhbHVlcyk7Ci0gICAgcmV0
dXJuIGZsb2F0aW5nUmVwbGFjZWRXaWR0aEFuZE1hcmdpbihsYXlvdXRCb3gsIGhvcml6b250YWxD
b25zdHJhaW50cywgdXNlZEhvcml6b250YWxWYWx1ZXMpOworICAgICAgICByZXR1cm4gZmxvYXRp
bmdOb25SZXBsYWNlZFdpZHRoQW5kTWFyZ2luKGxheW91dEJveCwgaG9yaXpvbnRhbENvbnN0cmFp
bnRzLCBvdmVycmlkZUhvcml6b250YWxWYWx1ZXMpOworICAgIHJldHVybiBmbG9hdGluZ1JlcGxh
Y2VkV2lkdGhBbmRNYXJnaW4obGF5b3V0Qm94LCBob3Jpem9udGFsQ29uc3RyYWludHMsIG92ZXJy
aWRlSG9yaXpvbnRhbFZhbHVlcyk7CiB9CiAKLUNvbnRlbnRIZWlnaHRBbmRNYXJnaW4gRm9ybWF0
dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbmxpbmVSZXBsYWNlZEhlaWdodEFuZE1hcmdpbihjb25z
dCBCb3gmIGxheW91dEJveCwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJiBob3Jpem9udGFs
Q29uc3RyYWludHMsIE9wdGlvbmFsPFZlcnRpY2FsQ29uc3RyYWludHM+IHZlcnRpY2FsQ29uc3Ry
YWludHMsIGNvbnN0IFVzZWRWZXJ0aWNhbFZhbHVlcyYgdXNlZFZlcnRpY2FsVmFsdWVzKSBjb25z
dAorQ29udGVudEhlaWdodEFuZE1hcmdpbiBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Omlu
bGluZVJlcGxhY2VkSGVpZ2h0QW5kTWFyZ2luKGNvbnN0IEJveCYgbGF5b3V0Qm94LCBjb25zdCBI
b3Jpem9udGFsQ29uc3RyYWludHMmIGhvcml6b250YWxDb25zdHJhaW50cywgT3B0aW9uYWw8VmVy
dGljYWxDb25zdHJhaW50cz4gdmVydGljYWxDb25zdHJhaW50cywgY29uc3QgT3ZlcnJpZGVWZXJ0
aWNhbFZhbHVlcyYgb3ZlcnJpZGVWZXJ0aWNhbFZhbHVlcykgY29uc3QKIHsKICAgICBBU1NFUlQo
KGxheW91dEJveC5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSB8fCBsYXlvdXRCb3guaXNGbG9hdGlu
Z1Bvc2l0aW9uZWQoKSB8fCBsYXlvdXRCb3guaXNJbkZsb3coKSkgJiYgbGF5b3V0Qm94LnJlcGxh
Y2VkKCkpOwogCkBAIC04NzgsOCArODc4LDggQEAgQ29udGVudEhlaWdodEFuZE1hcmdpbiBGb3Jt
YXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmlubGluZVJlcGxhY2VkSGVpZ2h0QW5kTWFyZ2kKICAg
ICBhdXRvJiBzdHlsZSA9IGxheW91dEJveC5zdHlsZSgpOwogICAgIGF1dG8gcmVwbGFjZWQgPSBs
YXlvdXRCb3gucmVwbGFjZWQoKTsKIAotICAgIGF1dG8gaGVpZ2h0ID0gdXNlZFZlcnRpY2FsVmFs
dWVzLmhlaWdodCA/IHVzZWRWZXJ0aWNhbFZhbHVlcy5oZWlnaHQudmFsdWUoKSA6IGNvbXB1dGVk
Q29udGVudEhlaWdodChsYXlvdXRCb3gsIHZlcnRpY2FsQ29uc3RyYWludHMgPyB2ZXJ0aWNhbENv
bnN0cmFpbnRzLT5sb2dpY2FsSGVpZ2h0IDogV1RGOjpudWxsb3B0KTsKLSAgICBhdXRvIGhlaWdo
dElzQXV0byA9ICF1c2VkVmVydGljYWxWYWx1ZXMuaGVpZ2h0ICYmIGlzSGVpZ2h0QXV0byhsYXlv
dXRCb3gpOworICAgIGF1dG8gaGVpZ2h0ID0gb3ZlcnJpZGVWZXJ0aWNhbFZhbHVlcy5oZWlnaHQg
PyBvdmVycmlkZVZlcnRpY2FsVmFsdWVzLmhlaWdodC52YWx1ZSgpIDogY29tcHV0ZWRDb250ZW50
SGVpZ2h0KGxheW91dEJveCwgdmVydGljYWxDb25zdHJhaW50cyA/IHZlcnRpY2FsQ29uc3RyYWlu
dHMtPmxvZ2ljYWxIZWlnaHQgOiBXVEY6Om51bGxvcHQpOworICAgIGF1dG8gaGVpZ2h0SXNBdXRv
ID0gIW92ZXJyaWRlVmVydGljYWxWYWx1ZXMuaGVpZ2h0ICYmIGlzSGVpZ2h0QXV0byhsYXlvdXRC
b3gpOwogICAgIGF1dG8gd2lkdGhJc0F1dG8gPSBzdHlsZS5sb2dpY2FsV2lkdGgoKS5pc0F1dG8o
KTsKIAogICAgIGlmIChoZWlnaHRJc0F1dG8gJiYgd2lkdGhJc0F1dG8gJiYgcmVwbGFjZWQtPmhh
c0ludHJpbnNpY0hlaWdodCgpKSB7CkBAIC05MDMsNyArOTAzLDcgQEAgQ29udGVudEhlaWdodEFu
ZE1hcmdpbiBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmlubGluZVJlcGxhY2VkSGVpZ2h0
QW5kTWFyZ2kKICAgICByZXR1cm4geyAqaGVpZ2h0LCB1c2VkVmVydGljYWxNYXJnaW4gfTsKIH0K
IAotQ29udGVudFdpZHRoQW5kTWFyZ2luIEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5s
aW5lUmVwbGFjZWRXaWR0aEFuZE1hcmdpbihjb25zdCBCb3gmIGxheW91dEJveCwgY29uc3QgSG9y
aXpvbnRhbENvbnN0cmFpbnRzJiBob3Jpem9udGFsQ29uc3RyYWludHMsIGNvbnN0IFVzZWRIb3Jp
em9udGFsVmFsdWVzJiB1c2VkSG9yaXpvbnRhbFZhbHVlcykgY29uc3QKK0NvbnRlbnRXaWR0aEFu
ZE1hcmdpbiBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmlubGluZVJlcGxhY2VkV2lkdGhB
bmRNYXJnaW4oY29uc3QgQm94JiBsYXlvdXRCb3gsIGNvbnN0IEhvcml6b250YWxDb25zdHJhaW50
cyYgaG9yaXpvbnRhbENvbnN0cmFpbnRzLCBjb25zdCBPdmVycmlkZUhvcml6b250YWxWYWx1ZXMm
IG92ZXJyaWRlSG9yaXpvbnRhbFZhbHVlcykgY29uc3QKIHsKICAgICBBU1NFUlQoKGxheW91dEJv
eC5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSB8fCBsYXlvdXRCb3guaXNGbG9hdGluZ1Bvc2l0aW9u
ZWQoKSB8fCBsYXlvdXRCb3guaXNJbkZsb3coKSkgJiYgbGF5b3V0Qm94LnJlcGxhY2VkKCkpOwog
CkBAIC05MjksMjEgKzkyOSwyMSBAQCBDb250ZW50V2lkdGhBbmRNYXJnaW4gRm9ybWF0dGluZ0Nv
bnRleHQ6Okdlb21ldHJ5OjppbmxpbmVSZXBsYWNlZFdpZHRoQW5kTWFyZ2luKAogICAgIGF1dG8g
Y29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luID0gR2VvbWV0cnk6OmNvbXB1dGVkSG9yaXpvbnRhbE1h
cmdpbihsYXlvdXRCb3gsIGhvcml6b250YWxDb25zdHJhaW50cyk7CiAKICAgICBhdXRvIHVzZWRN
YXJnaW5TdGFydCA9IFsmXSB7Ci0gICAgICAgIGlmICh1c2VkSG9yaXpvbnRhbFZhbHVlcy5tYXJn
aW4pCi0gICAgICAgICAgICByZXR1cm4gdXNlZEhvcml6b250YWxWYWx1ZXMubWFyZ2luLT5zdGFy
dDsKKyAgICAgICAgaWYgKG92ZXJyaWRlSG9yaXpvbnRhbFZhbHVlcy5tYXJnaW4pCisgICAgICAg
ICAgICByZXR1cm4gb3ZlcnJpZGVIb3Jpem9udGFsVmFsdWVzLm1hcmdpbi0+c3RhcnQ7CiAgICAg
ICAgIHJldHVybiBjb21wdXRlZEhvcml6b250YWxNYXJnaW4uc3RhcnQudmFsdWVPcigwX2x1KTsK
ICAgICB9OwogCiAgICAgYXV0byB1c2VkTWFyZ2luRW5kID0gWyZdIHsKLSAgICAgICAgaWYgKHVz
ZWRIb3Jpem9udGFsVmFsdWVzLm1hcmdpbikKLSAgICAgICAgICAgIHJldHVybiB1c2VkSG9yaXpv
bnRhbFZhbHVlcy5tYXJnaW4tPmVuZDsKKyAgICAgICAgaWYgKG92ZXJyaWRlSG9yaXpvbnRhbFZh
bHVlcy5tYXJnaW4pCisgICAgICAgICAgICByZXR1cm4gb3ZlcnJpZGVIb3Jpem9udGFsVmFsdWVz
Lm1hcmdpbi0+ZW5kOwogICAgICAgICByZXR1cm4gY29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luLmVu
ZC52YWx1ZU9yKDBfbHUpOwogICAgIH07CiAKICAgICBhdXRvIHJlcGxhY2VkID0gbGF5b3V0Qm94
LnJlcGxhY2VkKCk7CiAgICAgQVNTRVJUKHJlcGxhY2VkKTsKIAotICAgIGF1dG8gd2lkdGggPSB1
c2VkSG9yaXpvbnRhbFZhbHVlcy53aWR0aCA/IHVzZWRIb3Jpem9udGFsVmFsdWVzLndpZHRoIDog
Y29tcHV0ZWRDb250ZW50V2lkdGgobGF5b3V0Qm94LCBob3Jpem9udGFsQ29uc3RyYWludHMubG9n
aWNhbFdpZHRoKTsKKyAgICBhdXRvIHdpZHRoID0gb3ZlcnJpZGVIb3Jpem9udGFsVmFsdWVzLndp
ZHRoID8gb3ZlcnJpZGVIb3Jpem9udGFsVmFsdWVzLndpZHRoIDogY29tcHV0ZWRDb250ZW50V2lk
dGgobGF5b3V0Qm94LCBob3Jpem9udGFsQ29uc3RyYWludHMubG9naWNhbFdpZHRoKTsKICAgICBh
dXRvIGhlaWdodElzQXV0byA9IGlzSGVpZ2h0QXV0byhsYXlvdXRCb3gpOwogICAgIGF1dG8gaGVp
Z2h0ID0gY29tcHV0ZWRDb250ZW50SGVpZ2h0KGxheW91dEJveCk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRVbml0cy5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L0xheW91dFVuaXRzLmgKaW5kZXggMzg5MWI0NTZlYjllMGNmY2ViYWJlZDgyZDFiZjYwNzcwYmE0
ZGI5NC4uZmVhNjZlYWRmM2JmM2Y0OGU0NWY5M2FjMjkzNDE4ODRmOTE2Y2U0ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dFVuaXRzLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L0xheW91dFVuaXRzLmgKQEAgLTE2MSwxMiArMTYxLDEyIEBAIHN0cnVjdCBWZXJ0
aWNhbENvbnN0cmFpbnRzIHsKICAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBsb2dpY2FsSGVpZ2h0
OwogfTsKIAotc3RydWN0IFVzZWRIb3Jpem9udGFsVmFsdWVzIHsKK3N0cnVjdCBPdmVycmlkZUhv
cml6b250YWxWYWx1ZXMgewogICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IHdpZHRoOwogICAgIE9w
dGlvbmFsPFVzZWRIb3Jpem9udGFsTWFyZ2luPiBtYXJnaW47CiB9OwogCi1zdHJ1Y3QgVXNlZFZl
cnRpY2FsVmFsdWVzIHsKK3N0cnVjdCBPdmVycmlkZVZlcnRpY2FsVmFsdWVzIHsKICAgICAvLyBD
b25zaWRlciBjb2xsYXBzaW5nIGl0LgogICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IGhlaWdodDsK
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Js
b2NrRm9ybWF0dGluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1h
dHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5oCmluZGV4IGQ2MjM5Yzk0OTc2MjU0Nzk0MzEy
MWNiZmU2ODJiY2NiYjc3YThmNjEuLjBkNzY1NzI3OTk0NWIwMDkwMTRmZWIzOWZhNWI2NjU0NmJi
NTgwZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcv
QmxvY2tGb3JtYXR0aW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9j
a2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5oCkBAIC03NCw4ICs3NCw4IEBAIHBy
aXZhdGU6CiAgICAgLy8gVGhpcyBjbGFzcyBpbXBsZW1lbnRzIHBvc2l0aW9uaW5nIGFuZCBzaXpp
bmcgZm9yIGJveGVzIHBhcnRpY2lwYXRpbmcgaW4gYSBibG9jayBmb3JtYXR0aW5nIGNvbnRleHQu
CiAgICAgY2xhc3MgR2VvbWV0cnkgOiBwdWJsaWMgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5
IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIENvbnRlbnRIZWlnaHRBbmRNYXJnaW4gaW5GbG93SGVp
Z2h0QW5kTWFyZ2luKGNvbnN0IEJveCYsIGNvbnN0IEhvcml6b250YWxDb25zdHJhaW50cyYsIGNv
bnN0IFVzZWRWZXJ0aWNhbFZhbHVlcyYpOwotICAgICAgICBDb250ZW50V2lkdGhBbmRNYXJnaW4g
aW5GbG93V2lkdGhBbmRNYXJnaW4oY29uc3QgQm94JiwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFp
bnRzJiwgY29uc3QgVXNlZEhvcml6b250YWxWYWx1ZXMmKTsKKyAgICAgICAgQ29udGVudEhlaWdo
dEFuZE1hcmdpbiBpbkZsb3dIZWlnaHRBbmRNYXJnaW4oY29uc3QgQm94JiwgY29uc3QgSG9yaXpv
bnRhbENvbnN0cmFpbnRzJiwgY29uc3QgT3ZlcnJpZGVWZXJ0aWNhbFZhbHVlcyYpOworICAgICAg
ICBDb250ZW50V2lkdGhBbmRNYXJnaW4gaW5GbG93V2lkdGhBbmRNYXJnaW4oY29uc3QgQm94Jiwg
Y29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJiwgY29uc3QgT3ZlcnJpZGVIb3Jpem9udGFsVmFs
dWVzJik7CiAKICAgICAgICAgUG9pbnQgc3RhdGljUG9zaXRpb24oY29uc3QgQm94JiwgY29uc3Qg
SG9yaXpvbnRhbENvbnN0cmFpbnRzJiwgY29uc3QgVmVydGljYWxDb25zdHJhaW50cyYpIGNvbnN0
OwogICAgICAgICBMYXlvdXRVbml0IHN0YXRpY1ZlcnRpY2FsUG9zaXRpb24oY29uc3QgQm94Jiwg
Y29uc3QgVmVydGljYWxDb25zdHJhaW50cyYpIGNvbnN0OwpAQCAtODcsOSArODcsOSBAQCBwcml2
YXRlOgogICAgICAgICBmcmllbmQgY2xhc3MgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDsKICAgICAg
ICAgR2VvbWV0cnkoY29uc3QgQmxvY2tGb3JtYXR0aW5nQ29udGV4dCYpOwogCi0gICAgICAgIENv
bnRlbnRIZWlnaHRBbmRNYXJnaW4gaW5GbG93Tm9uUmVwbGFjZWRIZWlnaHRBbmRNYXJnaW4oY29u
c3QgQm94JiwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJiwgY29uc3QgVXNlZFZlcnRpY2Fs
VmFsdWVzJik7Ci0gICAgICAgIENvbnRlbnRXaWR0aEFuZE1hcmdpbiBpbkZsb3dOb25SZXBsYWNl
ZFdpZHRoQW5kTWFyZ2luKGNvbnN0IEJveCYsIGNvbnN0IEhvcml6b250YWxDb25zdHJhaW50cyYs
IGNvbnN0IFVzZWRIb3Jpem9udGFsVmFsdWVzJikgY29uc3Q7Ci0gICAgICAgIENvbnRlbnRXaWR0
aEFuZE1hcmdpbiBpbkZsb3dSZXBsYWNlZFdpZHRoQW5kTWFyZ2luKGNvbnN0IEJveCYsIGNvbnN0
IEhvcml6b250YWxDb25zdHJhaW50cyYsIGNvbnN0IFVzZWRIb3Jpem9udGFsVmFsdWVzJikgY29u
c3Q7CisgICAgICAgIENvbnRlbnRIZWlnaHRBbmRNYXJnaW4gaW5GbG93Tm9uUmVwbGFjZWRIZWln
aHRBbmRNYXJnaW4oY29uc3QgQm94JiwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJiwgY29u
c3QgT3ZlcnJpZGVWZXJ0aWNhbFZhbHVlcyYpOworICAgICAgICBDb250ZW50V2lkdGhBbmRNYXJn
aW4gaW5GbG93Tm9uUmVwbGFjZWRXaWR0aEFuZE1hcmdpbihjb25zdCBCb3gmLCBjb25zdCBIb3Jp
em9udGFsQ29uc3RyYWludHMmLCBjb25zdCBPdmVycmlkZUhvcml6b250YWxWYWx1ZXMmKSBjb25z
dDsKKyAgICAgICAgQ29udGVudFdpZHRoQW5kTWFyZ2luIGluRmxvd1JlcGxhY2VkV2lkdGhBbmRN
YXJnaW4oY29uc3QgQm94JiwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJiwgY29uc3QgT3Zl
cnJpZGVIb3Jpem9udGFsVmFsdWVzJikgY29uc3Q7CiAgICAgICAgIFBvaW50IHN0YXRpY1Bvc2l0
aW9uRm9yT3V0T2ZGbG93UG9zaXRpb25lZChjb25zdCBCb3gmKSBjb25zdDsKIAogICAgICAgICBj
b25zdCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0JiBmb3JtYXR0aW5nQ29udGV4dCgpIGNvbnN0IHsg
cmV0dXJuIGRvd25jYXN0PEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ+KEZvcm1hdHRpbmdDb250ZXh0
OjpHZW9tZXRyeTo6Zm9ybWF0dGluZ0NvbnRleHQoKSk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dEdlb21l
dHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3Jt
YXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcAppbmRleCA3NDI4YTlhNzU3ZDZiYjQ0ZGJjM2RmNzRh
ZGEwOGQwNzQ5ZTkyZGE5Li4wZWY4ZTkwZjk4NGMzMzIwNzkzMTUzMTAxZGQxYWQ1MTk2NTBjMDZj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2Nr
Rm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwCkBAIC0z
NywxMiArMzcsMTIgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBMYXlvdXQgewog
Ci1Db250ZW50SGVpZ2h0QW5kTWFyZ2luIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5
OjppbkZsb3dOb25SZXBsYWNlZEhlaWdodEFuZE1hcmdpbihjb25zdCBCb3gmIGxheW91dEJveCwg
Y29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJiBob3Jpem9udGFsQ29uc3RyYWludHMsIGNvbnN0
IFVzZWRWZXJ0aWNhbFZhbHVlcyYgdXNlZFZlcnRpY2FsVmFsdWVzKQorQ29udGVudEhlaWdodEFu
ZE1hcmdpbiBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5GbG93Tm9uUmVwbGFj
ZWRIZWlnaHRBbmRNYXJnaW4oY29uc3QgQm94JiBsYXlvdXRCb3gsIGNvbnN0IEhvcml6b250YWxD
b25zdHJhaW50cyYgaG9yaXpvbnRhbENvbnN0cmFpbnRzLCBjb25zdCBPdmVycmlkZVZlcnRpY2Fs
VmFsdWVzJiBvdmVycmlkZVZlcnRpY2FsVmFsdWVzKQogewogICAgIEFTU0VSVChsYXlvdXRCb3gu
aXNJbkZsb3coKSAmJiAhbGF5b3V0Qm94LnJlcGxhY2VkKCkpOwogICAgIEFTU0VSVChsYXlvdXRC
b3guaXNPdmVyZmxvd1Zpc2libGUoKSk7CiAKLSAgICBhdXRvIGNvbXB1dGUgPSBbJl0oY29uc3Qg
YXV0byYgdXNlZFZlcnRpY2FsVmFsdWVzKSAtPiBDb250ZW50SGVpZ2h0QW5kTWFyZ2luIHsKKyAg
ICBhdXRvIGNvbXB1dGUgPSBbJl0oY29uc3QgYXV0byYgb3ZlcnJpZGVWZXJ0aWNhbFZhbHVlcykg
LT4gQ29udGVudEhlaWdodEFuZE1hcmdpbiB7CiAKICAgICAgICAgLy8gMTAuNi4zIEJsb2NrLWxl
dmVsIG5vbi1yZXBsYWNlZCBlbGVtZW50cyBpbiBub3JtYWwgZmxvdyB3aGVuICdvdmVyZmxvdycg
Y29tcHV0ZXMgdG8gJ3Zpc2libGUnCiAgICAgICAgIC8vCkBAIC02MSw3ICs2MSw3IEBAIENvbnRl
bnRIZWlnaHRBbmRNYXJnaW4gQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmluRmxv
d05vblJlcGxhY2VkSGVpZ2h0CiAgICAgICAgIGF1dG8gY29tcHV0ZWRWZXJ0aWNhbE1hcmdpbiA9
IEdlb21ldHJ5Ojpjb21wdXRlZFZlcnRpY2FsTWFyZ2luKGxheW91dEJveCwgaG9yaXpvbnRhbENv
bnN0cmFpbnRzKTsKICAgICAgICAgYXV0byBub25Db2xsYXBzZWRNYXJnaW4gPSBVc2VkVmVydGlj
YWxNYXJnaW46Ok5vbkNvbGxhcHNlZFZhbHVlcyB7IGNvbXB1dGVkVmVydGljYWxNYXJnaW4uYmVm
b3JlLnZhbHVlT3IoMCksIGNvbXB1dGVkVmVydGljYWxNYXJnaW4uYWZ0ZXIudmFsdWVPcigwKSB9
OyAKICAgICAgICAgYXV0byBib3JkZXJBbmRQYWRkaW5nVG9wID0gYm94R2VvbWV0cnkuYm9yZGVy
VG9wKCkgKyBib3hHZW9tZXRyeS5wYWRkaW5nVG9wKCkudmFsdWVPcigwKTsKLSAgICAgICAgYXV0
byBoZWlnaHQgPSB1c2VkVmVydGljYWxWYWx1ZXMuaGVpZ2h0ID8gdXNlZFZlcnRpY2FsVmFsdWVz
LmhlaWdodC52YWx1ZSgpIDogY29tcHV0ZWRDb250ZW50SGVpZ2h0KGxheW91dEJveCk7CisgICAg
ICAgIGF1dG8gaGVpZ2h0ID0gb3ZlcnJpZGVWZXJ0aWNhbFZhbHVlcy5oZWlnaHQgPyBvdmVycmlk
ZVZlcnRpY2FsVmFsdWVzLmhlaWdodC52YWx1ZSgpIDogY29tcHV0ZWRDb250ZW50SGVpZ2h0KGxh
eW91dEJveCk7CiAKICAgICAgICAgaWYgKGhlaWdodCkKICAgICAgICAgICAgIHJldHVybiB7ICpo
ZWlnaHQsIG5vbkNvbGxhcHNlZE1hcmdpbiB9OwpAQCAtMTAxLDEzICsxMDEsMTMgQEAgQ29udGVu
dEhlaWdodEFuZE1hcmdpbiBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5GbG93
Tm9uUmVwbGFjZWRIZWlnaHQKICAgICB9OwogCiAgICAgLy8gMTAuNi43ICdBdXRvJyBoZWlnaHRz
IGZvciBibG9jayBmb3JtYXR0aW5nIGNvbnRleHQgcm9vdHMKLSAgICBhdXRvIGlzQXV0b0hlaWdo
dCA9ICF1c2VkVmVydGljYWxWYWx1ZXMuaGVpZ2h0ICYmICFjb21wdXRlZENvbnRlbnRIZWlnaHQo
bGF5b3V0Qm94KTsKKyAgICBhdXRvIGlzQXV0b0hlaWdodCA9ICFvdmVycmlkZVZlcnRpY2FsVmFs
dWVzLmhlaWdodCAmJiAhY29tcHV0ZWRDb250ZW50SGVpZ2h0KGxheW91dEJveCk7CiAgICAgaWYg
KGlzQXV0b0hlaWdodCAmJiBsYXlvdXRCb3guZXN0YWJsaXNoZXNCbG9ja0Zvcm1hdHRpbmdDb250
ZXh0KCkpCi0gICAgICAgIHJldHVybiBjb21wdXRlKCBVc2VkVmVydGljYWxWYWx1ZXMgeyBjb250
ZW50SGVpZ2h0Rm9yRm9ybWF0dGluZ0NvbnRleHRSb290KGxheW91dEJveCkgfSk7Ci0gICAgcmV0
dXJuIGNvbXB1dGUodXNlZFZlcnRpY2FsVmFsdWVzKTsKKyAgICAgICAgcmV0dXJuIGNvbXB1dGUo
IE92ZXJyaWRlVmVydGljYWxWYWx1ZXMgeyBjb250ZW50SGVpZ2h0Rm9yRm9ybWF0dGluZ0NvbnRl
eHRSb290KGxheW91dEJveCkgfSk7CisgICAgcmV0dXJuIGNvbXB1dGUob3ZlcnJpZGVWZXJ0aWNh
bFZhbHVlcyk7CiB9CiAKLUNvbnRlbnRXaWR0aEFuZE1hcmdpbiBCbG9ja0Zvcm1hdHRpbmdDb250
ZXh0OjpHZW9tZXRyeTo6aW5GbG93Tm9uUmVwbGFjZWRXaWR0aEFuZE1hcmdpbihjb25zdCBCb3gm
IGxheW91dEJveCwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJiBob3Jpem9udGFsQ29uc3Ry
YWludHMsIGNvbnN0IFVzZWRIb3Jpem9udGFsVmFsdWVzJiB1c2VkSG9yaXpvbnRhbFZhbHVlcykg
Y29uc3QKK0NvbnRlbnRXaWR0aEFuZE1hcmdpbiBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9t
ZXRyeTo6aW5GbG93Tm9uUmVwbGFjZWRXaWR0aEFuZE1hcmdpbihjb25zdCBCb3gmIGxheW91dEJv
eCwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJiBob3Jpem9udGFsQ29uc3RyYWludHMsIGNv
bnN0IE92ZXJyaWRlSG9yaXpvbnRhbFZhbHVlcyYgb3ZlcnJpZGVIb3Jpem9udGFsVmFsdWVzKSBj
b25zdAogewogICAgIEFTU0VSVChsYXlvdXRCb3guaXNJbkZsb3coKSk7CiAKQEAgLTEzNyw3ICsx
MzcsNyBAQCBDb250ZW50V2lkdGhBbmRNYXJnaW4gQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2Vv
bWV0cnk6OmluRmxvd05vblJlcGxhY2VkV2lkdGhBbgogICAgICAgICBhdXRvIGNvbnRhaW5pbmdC
bG9ja1dpZHRoID0gaG9yaXpvbnRhbENvbnN0cmFpbnRzLmxvZ2ljYWxXaWR0aDsKICAgICAgICAg
YXV0byYgYm94R2VvbWV0cnkgPSBmb3JtYXR0aW5nQ29udGV4dCgpLmdlb21ldHJ5Rm9yQm94KGxh
eW91dEJveCk7CiAKLSAgICAgICAgYXV0byB3aWR0aCA9IHVzZWRIb3Jpem9udGFsVmFsdWVzLndp
ZHRoID8gdXNlZEhvcml6b250YWxWYWx1ZXMud2lkdGggOiBjb21wdXRlZENvbnRlbnRXaWR0aChs
YXlvdXRCb3gsIGNvbnRhaW5pbmdCbG9ja1dpZHRoKTsKKyAgICAgICAgYXV0byB3aWR0aCA9IG92
ZXJyaWRlSG9yaXpvbnRhbFZhbHVlcy53aWR0aCA/IG92ZXJyaWRlSG9yaXpvbnRhbFZhbHVlcy53
aWR0aCA6IGNvbXB1dGVkQ29udGVudFdpZHRoKGxheW91dEJveCwgY29udGFpbmluZ0Jsb2NrV2lk
dGgpOwogICAgICAgICBhdXRvIGNvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbiA9IEdlb21ldHJ5Ojpj
b21wdXRlZEhvcml6b250YWxNYXJnaW4obGF5b3V0Qm94LCBob3Jpem9udGFsQ29uc3RyYWludHMp
OwogICAgICAgICBVc2VkSG9yaXpvbnRhbE1hcmdpbiB1c2VkSG9yaXpvbnRhbE1hcmdpbjsKICAg
ICAgICAgYXV0byBib3JkZXJMZWZ0ID0gYm94R2VvbWV0cnkuYm9yZGVyTGVmdCgpOwpAQCAtMTk3
LDcgKzE5Nyw3IEBAIENvbnRlbnRXaWR0aEFuZE1hcmdpbiBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0
OjpHZW9tZXRyeTo6aW5GbG93Tm9uUmVwbGFjZWRXaWR0aEFuCiAgICAgcmV0dXJuIGNvbnRlbnRX
aWR0aEFuZE1hcmdpbjsKIH0KIAotQ29udGVudFdpZHRoQW5kTWFyZ2luIEJsb2NrRm9ybWF0dGlu
Z0NvbnRleHQ6Okdlb21ldHJ5OjppbkZsb3dSZXBsYWNlZFdpZHRoQW5kTWFyZ2luKGNvbnN0IEJv
eCYgbGF5b3V0Qm94LCBjb25zdCBIb3Jpem9udGFsQ29uc3RyYWludHMmIGhvcml6b250YWxDb25z
dHJhaW50cywgY29uc3QgVXNlZEhvcml6b250YWxWYWx1ZXMmIHVzZWRIb3Jpem9udGFsVmFsdWVz
KSBjb25zdAorQ29udGVudFdpZHRoQW5kTWFyZ2luIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdl
b21ldHJ5OjppbkZsb3dSZXBsYWNlZFdpZHRoQW5kTWFyZ2luKGNvbnN0IEJveCYgbGF5b3V0Qm94
LCBjb25zdCBIb3Jpem9udGFsQ29uc3RyYWludHMmIGhvcml6b250YWxDb25zdHJhaW50cywgY29u
c3QgT3ZlcnJpZGVIb3Jpem9udGFsVmFsdWVzJiBvdmVycmlkZUhvcml6b250YWxWYWx1ZXMpIGNv
bnN0CiB7CiAgICAgQVNTRVJUKGxheW91dEJveC5pc0luRmxvdygpICYmIGxheW91dEJveC5yZXBs
YWNlZCgpKTsKIApAQCAtMjA3LDkgKzIwNyw5IEBAIENvbnRlbnRXaWR0aEFuZE1hcmdpbiBCbG9j
a0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5GbG93UmVwbGFjZWRXaWR0aEFuZE1hCiAg
ICAgLy8gMi4gVGhlbiB0aGUgcnVsZXMgZm9yIG5vbi1yZXBsYWNlZCBibG9jay1sZXZlbCBlbGVt
ZW50cyBhcmUgYXBwbGllZCB0byBkZXRlcm1pbmUgdGhlIG1hcmdpbnMuCiAKICAgICAvLyAjMQot
ICAgIGF1dG8gdXNlZFdpZHRoID0gaW5saW5lUmVwbGFjZWRXaWR0aEFuZE1hcmdpbihsYXlvdXRC
b3gsIGhvcml6b250YWxDb25zdHJhaW50cywgdXNlZEhvcml6b250YWxWYWx1ZXMpLmNvbnRlbnRX
aWR0aDsKKyAgICBhdXRvIHVzZWRXaWR0aCA9IGlubGluZVJlcGxhY2VkV2lkdGhBbmRNYXJnaW4o
bGF5b3V0Qm94LCBob3Jpem9udGFsQ29uc3RyYWludHMsIG92ZXJyaWRlSG9yaXpvbnRhbFZhbHVl
cykuY29udGVudFdpZHRoOwogICAgIC8vICMyCi0gICAgYXV0byBub25SZXBsYWNlZFdpZHRoQW5k
TWFyZ2luID0gaW5GbG93Tm9uUmVwbGFjZWRXaWR0aEFuZE1hcmdpbihsYXlvdXRCb3gsIGhvcml6
b250YWxDb25zdHJhaW50cywgVXNlZEhvcml6b250YWxWYWx1ZXMgeyB1c2VkV2lkdGgsIHVzZWRI
b3Jpem9udGFsVmFsdWVzLm1hcmdpbiB9KTsKKyAgICBhdXRvIG5vblJlcGxhY2VkV2lkdGhBbmRN
YXJnaW4gPSBpbkZsb3dOb25SZXBsYWNlZFdpZHRoQW5kTWFyZ2luKGxheW91dEJveCwgaG9yaXpv
bnRhbENvbnN0cmFpbnRzLCBPdmVycmlkZUhvcml6b250YWxWYWx1ZXMgeyB1c2VkV2lkdGgsIG92
ZXJyaWRlSG9yaXpvbnRhbFZhbHVlcy5tYXJnaW4gfSk7CiAKICAgICBMT0dfV0lUSF9TVFJFQU0o
Rm9ybWF0dGluZ0NvbnRleHRMYXlvdXQsIHN0cmVhbSA8PCAiW1dpZHRoXVtNYXJnaW5dIC0+IGlu
ZmxvdyByZXBsYWNlZCAtPiB3aWR0aCgiIDw8IHVzZWRXaWR0aCAgPDwgInB4KSBtYXJnaW4oIiA8
PCBub25SZXBsYWNlZFdpZHRoQW5kTWFyZ2luLnVzZWRNYXJnaW4uc3RhcnQgPDwgInB4LCAiIDw8
IG5vblJlcGxhY2VkV2lkdGhBbmRNYXJnaW4udXNlZE1hcmdpbi5lbmQgPDwgInB4KSAtPiBsYXlv
dXRCb3goIiA8PCAmbGF5b3V0Qm94IDw8ICIpIik7CiAgICAgcmV0dXJuIHsgdXNlZFdpZHRoLCBu
b25SZXBsYWNlZFdpZHRoQW5kTWFyZ2luLnVzZWRNYXJnaW4sIG5vblJlcGxhY2VkV2lkdGhBbmRN
YXJnaW4uY29tcHV0ZWRNYXJnaW4gfTsKQEAgLTI0MCwyNiArMjQwLDI2IEBAIFBvaW50IEJsb2Nr
Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpzdGF0aWNQb3NpdGlvbihjb25zdCBCb3gmIGxh
eW91dEJveCwgY29uCiAgICAgcmV0dXJuIHsgc3RhdGljSG9yaXpvbnRhbFBvc2l0aW9uKGxheW91
dEJveCwgaG9yaXpvbnRhbENvbnN0cmFpbnRzKSwgc3RhdGljVmVydGljYWxQb3NpdGlvbihsYXlv
dXRCb3gsIHZlcnRpY2FsQ29uc3RyYWludHMpIH07CiB9CiAKLUNvbnRlbnRIZWlnaHRBbmRNYXJn
aW4gQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmluRmxvd0hlaWdodEFuZE1hcmdp
bihjb25zdCBCb3gmIGxheW91dEJveCwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJiBob3Jp
em9udGFsQ29uc3RyYWludHMsIGNvbnN0IFVzZWRWZXJ0aWNhbFZhbHVlcyYgdXNlZFZlcnRpY2Fs
VmFsdWVzKQorQ29udGVudEhlaWdodEFuZE1hcmdpbiBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpH
ZW9tZXRyeTo6aW5GbG93SGVpZ2h0QW5kTWFyZ2luKGNvbnN0IEJveCYgbGF5b3V0Qm94LCBjb25z
dCBIb3Jpem9udGFsQ29uc3RyYWludHMmIGhvcml6b250YWxDb25zdHJhaW50cywgY29uc3QgT3Zl
cnJpZGVWZXJ0aWNhbFZhbHVlcyYgb3ZlcnJpZGVWZXJ0aWNhbFZhbHVlcykKIHsKICAgICBBU1NF
UlQobGF5b3V0Qm94LmlzSW5GbG93KCkpOwogCiAgICAgLy8gMTAuNi4yIElubGluZSByZXBsYWNl
ZCBlbGVtZW50cywgYmxvY2stbGV2ZWwgcmVwbGFjZWQgZWxlbWVudHMgaW4gbm9ybWFsIGZsb3cs
ICdpbmxpbmUtYmxvY2snCiAgICAgLy8gcmVwbGFjZWQgZWxlbWVudHMgaW4gbm9ybWFsIGZsb3cg
YW5kIGZsb2F0aW5nIHJlcGxhY2VkIGVsZW1lbnRzCiAgICAgaWYgKGxheW91dEJveC5yZXBsYWNl
ZCgpKQotICAgICAgICByZXR1cm4gaW5saW5lUmVwbGFjZWRIZWlnaHRBbmRNYXJnaW4obGF5b3V0
Qm94LCBob3Jpem9udGFsQ29uc3RyYWludHMsIHsgfSwgdXNlZFZlcnRpY2FsVmFsdWVzKTsKKyAg
ICAgICAgcmV0dXJuIGlubGluZVJlcGxhY2VkSGVpZ2h0QW5kTWFyZ2luKGxheW91dEJveCwgaG9y
aXpvbnRhbENvbnN0cmFpbnRzLCB7IH0sIG92ZXJyaWRlVmVydGljYWxWYWx1ZXMpOwogCiAgICAg
Q29udGVudEhlaWdodEFuZE1hcmdpbiBjb250ZW50SGVpZ2h0QW5kTWFyZ2luOwogICAgIC8vIEZJ
WE1FOiBMZXQncyBzcGVjaWFsIGNhc2UgdGhlIHRhYmxlIGhlaWdodCBjb21wdXRhdGlvbiBmb3Ig
bm93IC0+IGZpZ3VyZSBvdXQgd2hldGhlciB0YWJsZXMgZmFsbCBpbnRvIHRoZSAiaW5GbG93Tm9u
UmVwbGFjZWRIZWlnaHRBbmRNYXJnaW4iIGNhdGVnb3J5LgogICAgIGlmIChsYXlvdXRCb3guZXN0
YWJsaXNoZXNUYWJsZUZvcm1hdHRpbmdDb250ZXh0KCkpCi0gICAgICAgIGNvbnRlbnRIZWlnaHRB
bmRNYXJnaW4gPSBjb21wbGljYXRlZENhc2VzKGxheW91dEJveCwgaG9yaXpvbnRhbENvbnN0cmFp
bnRzLCB1c2VkVmVydGljYWxWYWx1ZXMpOworICAgICAgICBjb250ZW50SGVpZ2h0QW5kTWFyZ2lu
ID0gY29tcGxpY2F0ZWRDYXNlcyhsYXlvdXRCb3gsIGhvcml6b250YWxDb25zdHJhaW50cywgb3Zl
cnJpZGVWZXJ0aWNhbFZhbHVlcyk7CiAgICAgZWxzZSBpZiAobGF5b3V0Qm94LmlzT3ZlcmZsb3dW
aXNpYmxlKCkgJiYgIWxheW91dEJveC5pc0RvY3VtZW50Qm94KCkpIHsKICAgICAgICAgLy8gVE9E
TzogRmlndXJlIG91dCB0aGUgY2FzZSBmb3IgdGhlIGRvY3VtZW50IGVsZW1lbnQuIExldCdzIGp1
c3QgY29tcGxpY2F0ZWQtY2FzZSBpdCBmb3Igbm93LgotICAgICAgICBjb250ZW50SGVpZ2h0QW5k
TWFyZ2luID0gaW5GbG93Tm9uUmVwbGFjZWRIZWlnaHRBbmRNYXJnaW4obGF5b3V0Qm94LCBob3Jp
em9udGFsQ29uc3RyYWludHMsIHVzZWRWZXJ0aWNhbFZhbHVlcyk7CisgICAgICAgIGNvbnRlbnRI
ZWlnaHRBbmRNYXJnaW4gPSBpbkZsb3dOb25SZXBsYWNlZEhlaWdodEFuZE1hcmdpbihsYXlvdXRC
b3gsIGhvcml6b250YWxDb25zdHJhaW50cywgb3ZlcnJpZGVWZXJ0aWNhbFZhbHVlcyk7CiAgICAg
fSBlbHNlIHsKICAgICAgICAgLy8gMTAuNi42IENvbXBsaWNhdGVkIGNhc2VzCiAgICAgICAgIC8v
IEJsb2NrLWxldmVsLCBub24tcmVwbGFjZWQgZWxlbWVudHMgaW4gbm9ybWFsIGZsb3cgd2hlbiAn
b3ZlcmZsb3cnIGRvZXMgbm90IGNvbXB1dGUgdG8gJ3Zpc2libGUnIChleGNlcHQgaWYgdGhlICdv
dmVyZmxvdycgcHJvcGVydHkncyB2YWx1ZSBoYXMgYmVlbiBwcm9wYWdhdGVkIHRvIHRoZSB2aWV3
cG9ydCkuCi0gICAgICAgIGNvbnRlbnRIZWlnaHRBbmRNYXJnaW4gPSBjb21wbGljYXRlZENhc2Vz
KGxheW91dEJveCwgaG9yaXpvbnRhbENvbnN0cmFpbnRzLCB1c2VkVmVydGljYWxWYWx1ZXMpOwor
ICAgICAgICBjb250ZW50SGVpZ2h0QW5kTWFyZ2luID0gY29tcGxpY2F0ZWRDYXNlcyhsYXlvdXRC
b3gsIGhvcml6b250YWxDb25zdHJhaW50cywgb3ZlcnJpZGVWZXJ0aWNhbFZhbHVlcyk7CiAgICAg
fQogCiAgICAgYXV0byBxdWlya3MgPSBmb3JtYXR0aW5nQ29udGV4dCgpLnF1aXJrcygpOwpAQCAt
MjcyLDE5ICsyNzIsMTkgQEAgQ29udGVudEhlaWdodEFuZE1hcmdpbiBCbG9ja0Zvcm1hdHRpbmdD
b250ZXh0OjpHZW9tZXRyeTo6aW5GbG93SGVpZ2h0QW5kTWFyZ2luKGMKICAgICByZXR1cm4gY29u
dGVudEhlaWdodEFuZE1hcmdpbjsKIH0KIAotQ29udGVudFdpZHRoQW5kTWFyZ2luIEJsb2NrRm9y
bWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbkZsb3dXaWR0aEFuZE1hcmdpbihjb25zdCBCb3gm
IGxheW91dEJveCwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJiBob3Jpem9udGFsQ29uc3Ry
YWludHMsIGNvbnN0IFVzZWRIb3Jpem9udGFsVmFsdWVzJiB1c2VkSG9yaXpvbnRhbFZhbHVlcykK
K0NvbnRlbnRXaWR0aEFuZE1hcmdpbiBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6
aW5GbG93V2lkdGhBbmRNYXJnaW4oY29uc3QgQm94JiBsYXlvdXRCb3gsIGNvbnN0IEhvcml6b250
YWxDb25zdHJhaW50cyYgaG9yaXpvbnRhbENvbnN0cmFpbnRzLCBjb25zdCBPdmVycmlkZUhvcml6
b250YWxWYWx1ZXMmIG92ZXJyaWRlSG9yaXpvbnRhbFZhbHVlcykKIHsKICAgICBBU1NFUlQobGF5
b3V0Qm94LmlzSW5GbG93KCkpOwogCiAgICAgaWYgKCFsYXlvdXRCb3gucmVwbGFjZWQoKSkgewog
ICAgICAgICBpZiAoIWxheW91dEJveC5lc3RhYmxpc2hlc1RhYmxlRm9ybWF0dGluZ0NvbnRleHQo
KSkKLSAgICAgICAgICAgIHJldHVybiBpbkZsb3dOb25SZXBsYWNlZFdpZHRoQW5kTWFyZ2luKGxh
eW91dEJveCwgaG9yaXpvbnRhbENvbnN0cmFpbnRzLCB1c2VkSG9yaXpvbnRhbFZhbHVlcyk7Cisg
ICAgICAgICAgICByZXR1cm4gaW5GbG93Tm9uUmVwbGFjZWRXaWR0aEFuZE1hcmdpbihsYXlvdXRC
b3gsIGhvcml6b250YWxDb25zdHJhaW50cywgb3ZlcnJpZGVIb3Jpem9udGFsVmFsdWVzKTsKICAg
ICAgICAgLy8gVGhpcyBpcyBhIHNwZWNpYWwgdGFibGUgImZpdC1jb250ZW50IHNpemUiIGJlaGF2
aW9yIGhhbmRsaW5nLiBOb3QgaW4gdGhlIHNwZWMgdGhvdWdoLgogICAgICAgICAvLyBUYWJsZSBy
ZXR1cm5zIGl0cyBmaW5hbCB3aWR0aCBhcyBtaW4vbWF4LiBVc2UgdGhpcyBmaW5hbCB3aWR0aCB2
YWx1ZSB0byBjb21wdXRlZCBob3Jpem9udGFsIG1hcmdpbnMgZXRjLgotICAgICAgICBhdXRvIHVz
ZWRXaWR0aCA9IHVzZWRIb3Jpem9udGFsVmFsdWVzLndpZHRoID8gdXNlZEhvcml6b250YWxWYWx1
ZXMud2lkdGggOiBzaHJpbmtUb0ZpdFdpZHRoKGxheW91dEJveCwgaG9yaXpvbnRhbENvbnN0cmFp
bnRzLmxvZ2ljYWxXaWR0aCk7Ci0gICAgICAgIHJldHVybiBpbkZsb3dOb25SZXBsYWNlZFdpZHRo
QW5kTWFyZ2luKGxheW91dEJveCwgaG9yaXpvbnRhbENvbnN0cmFpbnRzLCBVc2VkSG9yaXpvbnRh
bFZhbHVlcyB7IHVzZWRXaWR0aCwgdXNlZEhvcml6b250YWxWYWx1ZXMubWFyZ2luIH0pOworICAg
ICAgICBhdXRvIHVzZWRXaWR0aCA9IG92ZXJyaWRlSG9yaXpvbnRhbFZhbHVlcy53aWR0aCA/IG92
ZXJyaWRlSG9yaXpvbnRhbFZhbHVlcy53aWR0aCA6IHNocmlua1RvRml0V2lkdGgobGF5b3V0Qm94
LCBob3Jpem9udGFsQ29uc3RyYWludHMubG9naWNhbFdpZHRoKTsKKyAgICAgICAgcmV0dXJuIGlu
Rmxvd05vblJlcGxhY2VkV2lkdGhBbmRNYXJnaW4obGF5b3V0Qm94LCBob3Jpem9udGFsQ29uc3Ry
YWludHMsIE92ZXJyaWRlSG9yaXpvbnRhbFZhbHVlcyB7IHVzZWRXaWR0aCwgb3ZlcnJpZGVIb3Jp
em9udGFsVmFsdWVzLm1hcmdpbiB9KTsKICAgICB9Ci0gICAgcmV0dXJuIGluRmxvd1JlcGxhY2Vk
V2lkdGhBbmRNYXJnaW4obGF5b3V0Qm94LCBob3Jpem9udGFsQ29uc3RyYWludHMsIHVzZWRIb3Jp
em9udGFsVmFsdWVzKTsKKyAgICByZXR1cm4gaW5GbG93UmVwbGFjZWRXaWR0aEFuZE1hcmdpbihs
YXlvdXRCb3gsIGhvcml6b250YWxDb25zdHJhaW50cywgb3ZlcnJpZGVIb3Jpem9udGFsVmFsdWVz
KTsKIH0KIAogRm9ybWF0dGluZ0NvbnRleHQ6OkludHJpbnNpY1dpZHRoQ29uc3RyYWludHMgQmxv
Y2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmludHJpbnNpY1dpZHRoQ29uc3RyYWludHMo
Y29uc3QgQm94JiBsYXlvdXRCb3gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
aW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAK
aW5kZXggMmZlYzMzODA0MWQyNTBkM2JjYjMyYjU1YjQ1MmU0MjlmMmJhZGVjMi4uODU4ZGMzYjgz
MjhjNzE0NmQ0NDU0MWYwOWRiOTJhNDgwNmI5NDU2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRp
bmdDb250ZXh0LmNwcApAQCAtMjc4LDcgKzI3OCw3IEBAIHZvaWQgSW5saW5lRm9ybWF0dGluZ0Nv
bnRleHQ6OmNvbXB1dGVXaWR0aEFuZE1hcmdpbihjb25zdCBCb3gmIGxheW91dEJveCwgY29uc3QK
IHsKICAgICBDb250ZW50V2lkdGhBbmRNYXJnaW4gY29udGVudFdpZHRoQW5kTWFyZ2luOwogICAg
IC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3IgbWluL21heC13aWR0aC4KLSAgICBhdXRvIHVzZWRX
aWR0aCA9IFVzZWRIb3Jpem9udGFsVmFsdWVzIHsgfTsgCisgICAgYXV0byB1c2VkV2lkdGggPSBP
dmVycmlkZUhvcml6b250YWxWYWx1ZXMgeyB9OwogICAgIGlmIChsYXlvdXRCb3guaXNGbG9hdGlu
Z1Bvc2l0aW9uZWQoKSkKICAgICAgICAgY29udGVudFdpZHRoQW5kTWFyZ2luID0gZ2VvbWV0cnko
KS5mbG9hdGluZ1dpZHRoQW5kTWFyZ2luKGxheW91dEJveCwgaG9yaXpvbnRhbENvbnN0cmFpbnRz
LCB1c2VkV2lkdGgpOwogICAgIGVsc2UgaWYgKGxheW91dEJveC5pc0lubGluZUJsb2NrQm94KCkp
CkBAIC0yOTgsNyArMjk4LDcgQEAgdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0
ZUhlaWdodEFuZE1hcmdpbihjb25zdCBCb3gmIGxheW91dEJveCwgY29uc3QKIHsKICAgICBDb250
ZW50SGVpZ2h0QW5kTWFyZ2luIGNvbnRlbnRIZWlnaHRBbmRNYXJnaW47CiAgICAgLy8gRklYTUU6
IEFkZCBtaW4vbWF4LWhlaWdodCBzdXBwb3J0LgotICAgIGF1dG8gdXNlZEhlaWdodCA9IFVzZWRW
ZXJ0aWNhbFZhbHVlcyB7IH07CisgICAgYXV0byB1c2VkSGVpZ2h0ID0gT3ZlcnJpZGVWZXJ0aWNh
bFZhbHVlcyB7IH07CiAgICAgaWYgKGxheW91dEJveC5pc0Zsb2F0aW5nUG9zaXRpb25lZCgpKQog
ICAgICAgICBjb250ZW50SGVpZ2h0QW5kTWFyZ2luID0gZ2VvbWV0cnkoKS5mbG9hdGluZ0hlaWdo
dEFuZE1hcmdpbihsYXlvdXRCb3gsIGhvcml6b250YWxDb25zdHJhaW50cywgdXNlZEhlaWdodCk7
CiAgICAgZWxzZSBpZiAobGF5b3V0Qm94LmlzSW5saW5lQmxvY2tCb3goKSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdD
b250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVG
b3JtYXR0aW5nQ29udGV4dC5oCmluZGV4IGNjOTgwZmM3ZmJmY2I2YjkwMmIwMThhNjgwZWE5YzE2
MGEyMzcxMjguLmQyN2U0N2Y4OTYzMjM5NGNmMjc0ZjQwMTQwZjE2OWNjNjllNTA2OTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1h
dHRpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRp
bmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuaApAQCAtNjQsOCArNjQsOCBAQCBwcml2YXRlOgog
CiAgICAgY2xhc3MgR2VvbWV0cnkgOiBwdWJsaWMgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5
IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIENvbnRlbnRIZWlnaHRBbmRNYXJnaW4gaW5saW5lQmxv
Y2tIZWlnaHRBbmRNYXJnaW4oY29uc3QgQm94JiwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRz
JiwgY29uc3QgVXNlZFZlcnRpY2FsVmFsdWVzJikgY29uc3Q7Ci0gICAgICAgIENvbnRlbnRXaWR0
aEFuZE1hcmdpbiBpbmxpbmVCbG9ja1dpZHRoQW5kTWFyZ2luKGNvbnN0IEJveCYsIGNvbnN0IEhv
cml6b250YWxDb25zdHJhaW50cyYsIGNvbnN0IFVzZWRIb3Jpem9udGFsVmFsdWVzJik7CisgICAg
ICAgIENvbnRlbnRIZWlnaHRBbmRNYXJnaW4gaW5saW5lQmxvY2tIZWlnaHRBbmRNYXJnaW4oY29u
c3QgQm94JiwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJiwgY29uc3QgT3ZlcnJpZGVWZXJ0
aWNhbFZhbHVlcyYpIGNvbnN0OworICAgICAgICBDb250ZW50V2lkdGhBbmRNYXJnaW4gaW5saW5l
QmxvY2tXaWR0aEFuZE1hcmdpbihjb25zdCBCb3gmLCBjb25zdCBIb3Jpem9udGFsQ29uc3RyYWlu
dHMmLCBjb25zdCBPdmVycmlkZUhvcml6b250YWxWYWx1ZXMmKTsKICAgICAgICAgT3B0aW9uYWw8
SW5saW5lTGF5b3V0VW5pdD4gY29tcHV0ZWRUZXh0SW5kZW50KGNvbnN0IENvbnRhaW5lciYgZm9y
bWF0dGluZ0NvbnRleHRSb290LCBjb25zdCBIb3Jpem9udGFsQ29uc3RyYWludHMmKSBjb25zdDsK
IAogICAgIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5l
Zm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0R2Vv
bWV0cnkuY3BwCmluZGV4IGQ2YjVkNzYxZGE0Nzk0MzQ3NzUwODYxNTVlY2E4Y2E4YTA3NjczYTQu
LjQ0NWIxOGVhNGQ5ZmQ1MzMyYjQ0YzQ5NDQyNWY4ZjA2M2M0YTUxM2QgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250
ZXh0R2VvbWV0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0
aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwCkBAIC0zNiw3ICszNiw3IEBA
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgTGF5b3V0IHsKIAotQ29udGVudFdpZHRo
QW5kTWFyZ2luIElubGluZUZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5saW5lQmxvY2tX
aWR0aEFuZE1hcmdpbihjb25zdCBCb3gmIGZvcm1hdHRpbmdDb250ZXh0Um9vdCwgY29uc3QgSG9y
aXpvbnRhbENvbnN0cmFpbnRzJiBob3Jpem9udGFsQ29uc3RyYWludHMsIGNvbnN0IFVzZWRIb3Jp
em9udGFsVmFsdWVzJiB1c2VkSG9yaXpvbnRhbFZhbHVlcykKK0NvbnRlbnRXaWR0aEFuZE1hcmdp
biBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmlubGluZUJsb2NrV2lkdGhBbmRN
YXJnaW4oY29uc3QgQm94JiBmb3JtYXR0aW5nQ29udGV4dFJvb3QsIGNvbnN0IEhvcml6b250YWxD
b25zdHJhaW50cyYgaG9yaXpvbnRhbENvbnN0cmFpbnRzLCBjb25zdCBPdmVycmlkZUhvcml6b250
YWxWYWx1ZXMmIG92ZXJyaWRlSG9yaXpvbnRhbFZhbHVlcykKIHsKICAgICBBU1NFUlQoZm9ybWF0
dGluZ0NvbnRleHRSb290LmlzSW5GbG93KCkpOwogCkBAIC00NCw3ICs0NCw3IEBAIENvbnRlbnRX
aWR0aEFuZE1hcmdpbiBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmlubGluZUJs
b2NrV2lkdGhBbmRNYXJnCiAKICAgICAvLyBFeGFjdGx5IGFzIGlubGluZSByZXBsYWNlZCBlbGVt
ZW50cy4KICAgICBpZiAoZm9ybWF0dGluZ0NvbnRleHRSb290LnJlcGxhY2VkKCkpCi0gICAgICAg
IHJldHVybiBpbmxpbmVSZXBsYWNlZFdpZHRoQW5kTWFyZ2luKGZvcm1hdHRpbmdDb250ZXh0Um9v
dCwgaG9yaXpvbnRhbENvbnN0cmFpbnRzLCB1c2VkSG9yaXpvbnRhbFZhbHVlcyk7CisgICAgICAg
IHJldHVybiBpbmxpbmVSZXBsYWNlZFdpZHRoQW5kTWFyZ2luKGZvcm1hdHRpbmdDb250ZXh0Um9v
dCwgaG9yaXpvbnRhbENvbnN0cmFpbnRzLCBvdmVycmlkZUhvcml6b250YWxWYWx1ZXMpOwogCiAg
ICAgLy8gMTAuMy45ICdJbmxpbmUtYmxvY2snLCBub24tcmVwbGFjZWQgZWxlbWVudHMgaW4gbm9y
bWFsIGZsb3cKIApAQCAtNjEsMTcgKzYxLDE3IEBAIENvbnRlbnRXaWR0aEFuZE1hcmdpbiBJbmxp
bmVGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmlubGluZUJsb2NrV2lkdGhBbmRNYXJnCiAg
ICAgcmV0dXJuIENvbnRlbnRXaWR0aEFuZE1hcmdpbiB7ICp3aWR0aCwgeyBjb21wdXRlZEhvcml6
b250YWxNYXJnaW4uc3RhcnQudmFsdWVPcigwX2x1KSwgY29tcHV0ZWRIb3Jpem9udGFsTWFyZ2lu
LmVuZC52YWx1ZU9yKDBfbHUpIH0sIGNvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbiB9OwogfQogCi1D
b250ZW50SGVpZ2h0QW5kTWFyZ2luIElubGluZUZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6
aW5saW5lQmxvY2tIZWlnaHRBbmRNYXJnaW4oY29uc3QgQm94JiBsYXlvdXRCb3gsIGNvbnN0IEhv
cml6b250YWxDb25zdHJhaW50cyYgaG9yaXpvbnRhbENvbnN0cmFpbnRzLCBjb25zdCBVc2VkVmVy
dGljYWxWYWx1ZXMmIHVzZWRWZXJ0aWNhbFZhbHVlcykgY29uc3QKK0NvbnRlbnRIZWlnaHRBbmRN
YXJnaW4gSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbmxpbmVCbG9ja0hlaWdo
dEFuZE1hcmdpbihjb25zdCBCb3gmIGxheW91dEJveCwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFp
bnRzJiBob3Jpem9udGFsQ29uc3RyYWludHMsIGNvbnN0IE92ZXJyaWRlVmVydGljYWxWYWx1ZXMm
IG92ZXJyaWRlVmVydGljYWxWYWx1ZXMpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGxheW91dEJveC5p
c0luRmxvdygpKTsKIAogICAgIC8vIDEwLjYuMiBJbmxpbmUgcmVwbGFjZWQgZWxlbWVudHMsIGJs
b2NrLWxldmVsIHJlcGxhY2VkIGVsZW1lbnRzIGluIG5vcm1hbCBmbG93LCAnaW5saW5lLWJsb2Nr
JyByZXBsYWNlZCBlbGVtZW50cyBpbiBub3JtYWwgZmxvdyBhbmQgZmxvYXRpbmcgcmVwbGFjZWQg
ZWxlbWVudHMKICAgICBpZiAobGF5b3V0Qm94LnJlcGxhY2VkKCkpCi0gICAgICAgIHJldHVybiBp
bmxpbmVSZXBsYWNlZEhlaWdodEFuZE1hcmdpbihsYXlvdXRCb3gsIGhvcml6b250YWxDb25zdHJh
aW50cywgeyB9LCB1c2VkVmVydGljYWxWYWx1ZXMpOworICAgICAgICByZXR1cm4gaW5saW5lUmVw
bGFjZWRIZWlnaHRBbmRNYXJnaW4obGF5b3V0Qm94LCBob3Jpem9udGFsQ29uc3RyYWludHMsIHsg
fSwgb3ZlcnJpZGVWZXJ0aWNhbFZhbHVlcyk7CiAKICAgICAvLyAxMC42LjYgQ29tcGxpY2F0ZWQg
Y2FzZXMKICAgICAvLyAtICdJbmxpbmUtYmxvY2snLCBub24tcmVwbGFjZWQgZWxlbWVudHMuCi0g
ICAgcmV0dXJuIGNvbXBsaWNhdGVkQ2FzZXMobGF5b3V0Qm94LCBob3Jpem9udGFsQ29uc3RyYWlu
dHMsIHVzZWRWZXJ0aWNhbFZhbHVlcyk7CisgICAgcmV0dXJuIGNvbXBsaWNhdGVkQ2FzZXMobGF5
b3V0Qm94LCBob3Jpem9udGFsQ29uc3RyYWludHMsIG92ZXJyaWRlVmVydGljYWxWYWx1ZXMpOwog
fQogCiBPcHRpb25hbDxJbmxpbmVMYXlvdXRVbml0PiBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6
R2VvbWV0cnk6OmNvbXB1dGVkVGV4dEluZGVudChjb25zdCBDb250YWluZXImIGZvcm1hdHRpbmdD
b250ZXh0Um9vdCwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJiBob3Jpem9udGFsQ29uc3Ry
YWludHMpIGNvbnN0Cg==
</data>
<flag name="review"
          id="403005"
          type_id="1"
          status="+"
          setter="koivisto"
    />
          </attachment>
      

    </bug>

</bugzilla>