<?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>193131</bug_id>
          
          <creation_ts>2019-01-03 19:29:36 -0800</creation_ts>
          <short_desc>[LFC] ComputedHorizontalMargin should have optional members</short_desc>
          <delta_ts>2019-01-04 07:33:52 -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>1491586</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2019-01-03 19:29:36 -0800</bug_when>
    <thetext>Since they are optional</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1491587</commentid>
    <comment_count>1</comment_count>
      <attachid>358302</attachid>
    <who name="alan">zalan</who>
    <bug_when>2019-01-03 19:34:51 -0800</bug_when>
    <thetext>Created attachment 358302
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1491598</commentid>
    <comment_count>2</comment_count>
      <attachid>358309</attachid>
    <who name="alan">zalan</who>
    <bug_when>2019-01-03 21:48:17 -0800</bug_when>
    <thetext>Created attachment 358309
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1491635</commentid>
    <comment_count>3</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2019-01-04 07:32:09 -0800</bug_when>
    <thetext>Committed r239609: &lt;https://trac.webkit.org/changeset/239609&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1491636</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-01-04 07:33:52 -0800</bug_when>
    <thetext>&lt;rdar://problem/47048044&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>358302</attachid>
            <date>2019-01-03 19:34:51 -0800</date>
            <delta_ts>2019-01-03 21:48:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>Patch.txt</filename>
            <type>text/plain</type>
            <size>25076</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA3ZTMyNzVhOWIwYy4uMGI5M2Y5NDQ5OWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MSBAQAorMjAxOS0wMS0wMyAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgor
CisgICAgICAgIFtMRkNdIENvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbiBzaG91bGQgaGF2ZSBvcHRp
b25hbCBtZW1iZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xOTMxMzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBTcGxpdCBIb3Jpem9udGFsTWFyZ2luIGludG8gVXNlZEhvcml6b250YWxNYXJnaW4gYW5k
IENvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbi4gQ29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luJ3MgbWVt
YmVycyBhcmUgb3B0aW9uYWwuCisgICAgICAgIChzZWUgY29tcHV0ZWQgdnMgdXNlZCB2YWx1ZXMp
CisKKyAgICAgICAgKiBsYXlvdXQvRm9ybWF0dGluZ0NvbnRleHQuaDoKKyAgICAgICAgKiBsYXlv
dXQvRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlv
dXQ6OkZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6b3V0T2ZGbG93Tm9uUmVwbGFjZWRIb3Jp
em9udGFsR2VvbWV0cnkpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29u
dGV4dDo6R2VvbWV0cnk6Om91dE9mRmxvd1JlcGxhY2VkSG9yaXpvbnRhbEdlb21ldHJ5KToKKyAg
ICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpmbG9h
dGluZ05vblJlcGxhY2VkV2lkdGhBbmRNYXJnaW4pOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0
OjpGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmZsb2F0aW5nUmVwbGFjZWRXaWR0aEFuZE1h
cmdpbik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0OjpHZW9t
ZXRyeTo6aW5saW5lUmVwbGFjZWRXaWR0aEFuZE1hcmdpbik6CisgICAgICAgIChXZWJDb3JlOjpM
YXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6Y29tcHV0ZWRIb3Jpem9udGFsTWFy
Z2luKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21l
dHJ5Ojpjb21wdXRlZE5vbkNvbGxhcHNlZEhvcml6b250YWxNYXJnaW5WYWx1ZSk6IERlbGV0ZWQu
CisgICAgICAgICogbGF5b3V0L0xheW91dFVuaXRzLmg6CisgICAgICAgICogbGF5b3V0L01hcmdp
blR5cGVzLmg6CisgICAgICAgICogbGF5b3V0L1ZlcmlmaWNhdGlvbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpMYXlvdXQ6Om91dHB1dE1pc21hdGNoaW5nQmxvY2tCb3hJbmZvcm1hdGlvbklmTmVl
ZGVkKToKKyAgICAgICAgKiBsYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0Nv
bnRleHRHZW9tZXRyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0
dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbkZsb3dOb25SZXBsYWNlZFdpZHRoQW5kTWFyZ2luKToK
KyAgICAgICAgKiBsYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheUJveC5oOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheTo6Qm94OjpzZXRIb3Jpem9udGFsTWFyZ2luKToKKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXk6OkJveDo6c2V0SG9yaXpvbnRhbENvbXB1dGVkTWFyZ2luKToKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXk6OkJveDo6Y29tcHV0ZWRNYXJnaW5TdGFydCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5OjpCb3g6OmNvbXB1dGVkTWFyZ2luRW5kIGNvbnN0KToKKyAg
ICAgICAgKiBsYXlvdXQvZmxvYXRzL0Zsb2F0QXZvaWRlci5oOgorICAgICAgICAoV2ViQ29yZTo6
TGF5b3V0OjpGbG9hdEF2b2lkZXI6Om1hcmdpblN0YXJ0IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dDo6RmxvYXRBdm9pZGVyOjptYXJnaW5FbmQgY29uc3QpOgorICAgICAgICAqIGxh
eW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNvbGxlY3RJbmxp
bmVDb250ZW50Rm9yU3VidHJlZSBjb25zdCk6CisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1h
dHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5saW5lQmxv
Y2tXaWR0aEFuZE1hcmdpbik6CisKIDIwMTktMDEtMDMgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFw
cGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtCRkNdIFVzZSBjb21wdXRlZFZhbHVlIGFuZCB1c2Vk
VmFsdWUgY29uc2lzdGVudGx5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9y
bWF0dGluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4
dC5oCmluZGV4IDdmNzQzY2IyYzYyLi41MGJiYmE1YjYxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L0Zvcm1hdHRpbmdDb250ZXh0LmgKQEAgLTk2LDcgKzk2LDcgQEAgcHJvdGVjdGVkOgogICAg
ICAgICBzdGF0aWMgRWRnZXMgY29tcHV0ZWRCb3JkZXIoY29uc3QgTGF5b3V0U3RhdGUmLCBjb25z
dCBCb3gmKTsKICAgICAgICAgc3RhdGljIE9wdGlvbmFsPEVkZ2VzPiBjb21wdXRlZFBhZGRpbmco
Y29uc3QgTGF5b3V0U3RhdGUmLCBjb25zdCBCb3gmKTsKIAotICAgICAgICBzdGF0aWMgSG9yaXpv
bnRhbE1hcmdpbiBjb21wdXRlZE5vbkNvbGxhcHNlZEhvcml6b250YWxNYXJnaW5WYWx1ZShjb25z
dCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYpOworICAgICAgICBzdGF0aWMgQ29tcHV0ZWRIb3Jp
em9udGFsTWFyZ2luIGNvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbihjb25zdCBMYXlvdXRTdGF0ZSYs
IGNvbnN0IEJveCYpOwogICAgICAgICBzdGF0aWMgVmVydGljYWxNYXJnaW46OkNvbXB1dGVkVmFs
dWVzIGNvbXB1dGVkTm9uQ29sbGFwc2VkVmVydGljYWxNYXJnaW5WYWx1ZShjb25zdCBMYXlvdXRT
dGF0ZSYsIGNvbnN0IEJveCYpOwogCiAgICAgICAgIHN0YXRpYyBPcHRpb25hbDxMYXlvdXRVbml0
PiBjb21wdXRlZFZhbHVlSWZOb3RBdXRvKGNvbnN0IExlbmd0aCYgZ2VvbWV0cnlQcm9wZXJ0eSwg
TGF5b3V0VW5pdCBjb250YWluaW5nQmxvY2tXaWR0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAKaW5kZXggY2YyZTM3N2YzZDgu
LjJhNmEzZDA1OTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGlu
Z0NvbnRleHRHZW9tZXRyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRp
bmdDb250ZXh0R2VvbWV0cnkuY3BwCkBAIC00MDAsMTAgKzQwMCw5IEBAIEhvcml6b250YWxHZW9t
ZXRyeSBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Om91dE9mRmxvd05vblJlcGxhY2VkSG9y
aXpvbnRhbEdlCiAgICAgYXV0byBsZWZ0ID0gY29tcHV0ZWRWYWx1ZUlmTm90QXV0byhzdHlsZS5s
b2dpY2FsTGVmdCgpLCBjb250YWluaW5nQmxvY2tXaWR0aCk7CiAgICAgYXV0byByaWdodCA9IGNv
bXB1dGVkVmFsdWVJZk5vdEF1dG8oc3R5bGUubG9naWNhbFJpZ2h0KCksIGNvbnRhaW5pbmdCbG9j
a1dpZHRoKTsKICAgICBhdXRvIHdpZHRoID0gY29tcHV0ZWRWYWx1ZUlmTm90QXV0byh1c2VkV2lk
dGggPyBMZW5ndGggeyB1c2VkV2lkdGgudmFsdWUoKSwgRml4ZWQgfSA6IHN0eWxlLmxvZ2ljYWxX
aWR0aCgpLCBjb250YWluaW5nQmxvY2tXaWR0aCk7Ci0gICAgYXV0byBjb21wdXRlZE1hcmdpblN0
YXJ0ID0gY29tcHV0ZWRWYWx1ZUlmTm90QXV0byhzdHlsZS5tYXJnaW5TdGFydCgpLCBjb250YWlu
aW5nQmxvY2tXaWR0aCk7Ci0gICAgYXV0byBjb21wdXRlZE1hcmdpbkVuZCA9IGNvbXB1dGVkVmFs
dWVJZk5vdEF1dG8oc3R5bGUubWFyZ2luRW5kKCksIGNvbnRhaW5pbmdCbG9ja1dpZHRoKTsKLSAg
ICBhdXRvIHVzZWRNYXJnaW5TdGFydCA9IGNvbXB1dGVkTWFyZ2luU3RhcnQ7Ci0gICAgYXV0byB1
c2VkTWFyZ2luRW5kID0gY29tcHV0ZWRNYXJnaW5FbmQ7CisgICAgYXV0byBjb21wdXRlZEhvcml6
b250YWxNYXJnaW4gPSBHZW9tZXRyeTo6Y29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luKGxheW91dFN0
YXRlLCBsYXlvdXRCb3gpOworICAgIGF1dG8gdXNlZE1hcmdpblN0YXJ0ID0gY29tcHV0ZWRIb3Jp
em9udGFsTWFyZ2luLnN0YXJ0OworICAgIGF1dG8gdXNlZE1hcmdpbkVuZCA9IGNvbXB1dGVkSG9y
aXpvbnRhbE1hcmdpbi5lbmQ7CiAgICAgYXV0byBwYWRkaW5nTGVmdCA9IGRpc3BsYXlCb3gucGFk
ZGluZ0xlZnQoKS52YWx1ZU9yKDApOwogICAgIGF1dG8gcGFkZGluZ1JpZ2h0ID0gZGlzcGxheUJv
eC5wYWRkaW5nUmlnaHQoKS52YWx1ZU9yKDApOwogICAgIGF1dG8gYm9yZGVyTGVmdCA9IGRpc3Bs
YXlCb3guYm9yZGVyTGVmdCgpOwpAQCAtNTA0LDcgKzUwMyw3IEBAIEhvcml6b250YWxHZW9tZXRy
eSBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Om91dE9mRmxvd05vblJlcGxhY2VkSG9yaXpv
bnRhbEdlCiAgICAgQVNTRVJUKHVzZWRNYXJnaW5FbmQpOwogCiAgICAgTE9HX1dJVEhfU1RSRUFN
KEZvcm1hdHRpbmdDb250ZXh0TGF5b3V0LCBzdHJlYW0gPDwgIltQb3NpdGlvbl1bV2lkdGhdW01h
cmdpbl0gLT4gb3V0LW9mLWZsb3cgbm9uLXJlcGxhY2VkIC0+IGxlZnQoIiA8PCAqbGVmdCA8PCAi
cHgpIHJpZ2h0KCIgIDw8ICpyaWdodCA8PCAicHgpIHdpZHRoKCIgPDwgKndpZHRoIDw8ICJweCkg
bWFyZ2luKCIgPDwgKnVzZWRNYXJnaW5TdGFydCA8PCAicHgsICIgIDw8ICp1c2VkTWFyZ2luRW5k
IDw8ICJweCkgbGF5b3V0Qm94KCIgPDwgJmxheW91dEJveCA8PCAiKSIpOwotICAgIHJldHVybiB7
ICpsZWZ0LCAqcmlnaHQsIHsgKndpZHRoLCB7ICp1c2VkTWFyZ2luU3RhcnQsICp1c2VkTWFyZ2lu
RW5kIH0sIHsgY29tcHV0ZWRNYXJnaW5TdGFydC52YWx1ZU9yKDApLCBjb21wdXRlZE1hcmdpbkVu
ZC52YWx1ZU9yKDApIH0gfSB9OworICAgIHJldHVybiB7ICpsZWZ0LCAqcmlnaHQsIHsgKndpZHRo
LCB7ICp1c2VkTWFyZ2luU3RhcnQsICp1c2VkTWFyZ2luRW5kIH0sIGNvbXB1dGVkSG9yaXpvbnRh
bE1hcmdpbiB9IH07CiB9CiAKIFZlcnRpY2FsR2VvbWV0cnkgRm9ybWF0dGluZ0NvbnRleHQ6Okdl
b21ldHJ5OjpvdXRPZkZsb3dSZXBsYWNlZFZlcnRpY2FsR2VvbWV0cnkoY29uc3QgTGF5b3V0U3Rh
dGUmIGxheW91dFN0YXRlLCBjb25zdCBCb3gmIGxheW91dEJveCwgT3B0aW9uYWw8TGF5b3V0VW5p
dD4gdXNlZEhlaWdodCkKQEAgLTYwNCwxMCArNjAzLDkgQEAgSG9yaXpvbnRhbEdlb21ldHJ5IEZv
cm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6b3V0T2ZGbG93UmVwbGFjZWRIb3Jpem9udGFsR2Vv
bWUKIAogICAgIGF1dG8gbGVmdCA9IGNvbXB1dGVkVmFsdWVJZk5vdEF1dG8oc3R5bGUubG9naWNh
bExlZnQoKSwgY29udGFpbmluZ0Jsb2NrV2lkdGgpOwogICAgIGF1dG8gcmlnaHQgPSBjb21wdXRl
ZFZhbHVlSWZOb3RBdXRvKHN0eWxlLmxvZ2ljYWxSaWdodCgpLCBjb250YWluaW5nQmxvY2tXaWR0
aCk7Ci0gICAgYXV0byBjb21wdXRlZE1hcmdpblN0YXJ0ID0gY29tcHV0ZWRWYWx1ZUlmTm90QXV0
byhzdHlsZS5tYXJnaW5TdGFydCgpLCBjb250YWluaW5nQmxvY2tXaWR0aCk7Ci0gICAgYXV0byBj
b21wdXRlZE1hcmdpbkVuZCA9IGNvbXB1dGVkVmFsdWVJZk5vdEF1dG8oc3R5bGUubWFyZ2luRW5k
KCksIGNvbnRhaW5pbmdCbG9ja1dpZHRoKTsKLSAgICBhdXRvIHVzZWRNYXJnaW5TdGFydCA9IGNv
bXB1dGVkTWFyZ2luU3RhcnQ7Ci0gICAgYXV0byB1c2VkTWFyZ2luRW5kID0gY29tcHV0ZWRNYXJn
aW5FbmQ7CisgICAgYXV0byBjb21wdXRlZEhvcml6b250YWxNYXJnaW4gPSBHZW9tZXRyeTo6Y29t
cHV0ZWRIb3Jpem9udGFsTWFyZ2luKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpOworICAgIGF1dG8g
dXNlZE1hcmdpblN0YXJ0ID0gY29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luLnN0YXJ0OworICAgIGF1
dG8gdXNlZE1hcmdpbkVuZCA9IGNvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbi5lbmQ7CiAgICAgYXV0
byB3aWR0aCA9IGlubGluZVJlcGxhY2VkV2lkdGhBbmRNYXJnaW4obGF5b3V0U3RhdGUsIGxheW91
dEJveCwgdXNlZFdpZHRoKS53aWR0aDsKICAgICBhdXRvIHBhZGRpbmdMZWZ0ID0gZGlzcGxheUJv
eC5wYWRkaW5nTGVmdCgpLnZhbHVlT3IoMCk7CiAgICAgYXV0byBwYWRkaW5nUmlnaHQgPSBkaXNw
bGF5Qm94LnBhZGRpbmdSaWdodCgpLnZhbHVlT3IoMCk7CkBAIC02NzMsNyArNjcxLDcgQEAgSG9y
aXpvbnRhbEdlb21ldHJ5IEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6b3V0T2ZGbG93UmVw
bGFjZWRIb3Jpem9udGFsR2VvbWUKICAgICBBU1NFUlQodXNlZE1hcmdpbkVuZCk7CiAKICAgICBM
T0dfV0lUSF9TVFJFQU0oRm9ybWF0dGluZ0NvbnRleHRMYXlvdXQsIHN0cmVhbSA8PCAiW1Bvc2l0
aW9uXVtXaWR0aF1bTWFyZ2luXSAtPiBvdXQtb2YtZmxvdyByZXBsYWNlZCAtPiBsZWZ0KCIgPDwg
KmxlZnQgPDwgInB4KSByaWdodCgiICA8PCAqcmlnaHQgPDwgInB4KSB3aWR0aCgiIDw8IHdpZHRo
IDw8ICJweCkgbWFyZ2luKCIgPDwgKnVzZWRNYXJnaW5TdGFydCA8PCAicHgsICIgIDw8ICp1c2Vk
TWFyZ2luRW5kIDw8ICJweCkgbGF5b3V0Qm94KCIgPDwgJmxheW91dEJveCA8PCAiKSIpOwotICAg
IHJldHVybiB7ICpsZWZ0LCAqcmlnaHQsIHsgd2lkdGgsIHsgKnVzZWRNYXJnaW5TdGFydCwgKnVz
ZWRNYXJnaW5FbmQgfSwgeyBjb21wdXRlZE1hcmdpblN0YXJ0LnZhbHVlT3IoMCksIGNvbXB1dGVk
TWFyZ2luRW5kLnZhbHVlT3IoMCkgfSB9IH07CisgICAgcmV0dXJuIHsgKmxlZnQsICpyaWdodCwg
eyB3aWR0aCwgeyAqdXNlZE1hcmdpblN0YXJ0LCAqdXNlZE1hcmdpbkVuZCB9LCBjb21wdXRlZEhv
cml6b250YWxNYXJnaW4gfSB9OwogfQogCiBIZWlnaHRBbmRNYXJnaW4gRm9ybWF0dGluZ0NvbnRl
eHQ6Okdlb21ldHJ5Ojpjb21wbGljYXRlZENhc2VzKGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRT
dGF0ZSwgY29uc3QgQm94JiBsYXlvdXRCb3gsIE9wdGlvbmFsPExheW91dFVuaXQ+IHVzZWRIZWln
aHQpCkBAIC03MjksMTQgKzcyNywxNCBAQCBXaWR0aEFuZE1hcmdpbiBGb3JtYXR0aW5nQ29udGV4
dDo6R2VvbWV0cnk6OmZsb2F0aW5nTm9uUmVwbGFjZWRXaWR0aEFuZE1hcmdpbihMYQogICAgIGF1
dG8gY29udGFpbmluZ0Jsb2NrV2lkdGggPSBsYXlvdXRTdGF0ZS5kaXNwbGF5Qm94Rm9yTGF5b3V0
Qm94KGNvbnRhaW5pbmdCbG9jaykuY29udGVudEJveFdpZHRoKCk7CiAKICAgICAvLyAjMQotICAg
IGF1dG8gbWFyZ2luID0gY29tcHV0ZWROb25Db2xsYXBzZWRIb3Jpem9udGFsTWFyZ2luVmFsdWUo
bGF5b3V0U3RhdGUsIGxheW91dEJveCk7CisgICAgYXV0byBjb21wdXRlZEhvcml6b250YWxNYXJn
aW4gPSBHZW9tZXRyeTo6Y29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luKGxheW91dFN0YXRlLCBsYXlv
dXRCb3gpOwogICAgIC8vICMyCiAgICAgYXV0byB3aWR0aCA9IGNvbXB1dGVkVmFsdWVJZk5vdEF1
dG8odXNlZFdpZHRoID8gTGVuZ3RoIHsgdXNlZFdpZHRoLnZhbHVlKCksIEZpeGVkIH0gOiBsYXlv
dXRCb3guc3R5bGUoKS5sb2dpY2FsV2lkdGgoKSwgY29udGFpbmluZ0Jsb2NrV2lkdGgpOwogICAg
IGlmICghd2lkdGgpCiAgICAgICAgIHdpZHRoID0gc2hyaW5rVG9GaXRXaWR0aChsYXlvdXRTdGF0
ZSwgbGF5b3V0Qm94KTsKIAotICAgIExPR19XSVRIX1NUUkVBTShGb3JtYXR0aW5nQ29udGV4dExh
eW91dCwgc3RyZWFtIDw8ICJbV2lkdGhdW01hcmdpbl0gLT4gZmxvYXRpbmcgbm9uLXJlcGxhY2Vk
IC0+IHdpZHRoKCIgPDwgKndpZHRoIDw8ICJweCkgbWFyZ2luKCIgPDwgbWFyZ2luLnN0YXJ0IDw8
ICJweCwgIiA8PCBtYXJnaW4uZW5kIDw8ICJweCkgLT4gbGF5b3V0Qm94KCIgPDwgJmxheW91dEJv
eCA8PCAiKSIpOwotICAgIHJldHVybiBXaWR0aEFuZE1hcmdpbiB7ICp3aWR0aCwgbWFyZ2luLCBt
YXJnaW4gfTsKKyAgICBMT0dfV0lUSF9TVFJFQU0oRm9ybWF0dGluZ0NvbnRleHRMYXlvdXQsIHN0
cmVhbSA8PCAiW1dpZHRoXVtNYXJnaW5dIC0+IGZsb2F0aW5nIG5vbi1yZXBsYWNlZCAtPiB3aWR0
aCgiIDw8ICp3aWR0aCA8PCAicHgpIG1hcmdpbigiIDw8IGNvbXB1dGVkSG9yaXpvbnRhbE1hcmdp
bi5zdGFydC52YWx1ZU9yKDBfbHUpIDw8ICJweCwgIiA8PCBjb21wdXRlZEhvcml6b250YWxNYXJn
aW4uZW5kLnZhbHVlT3IoMF9sdSkgPDwgInB4KSAtPiBsYXlvdXRCb3goIiA8PCAmbGF5b3V0Qm94
IDw8ICIpIik7CisgICAgcmV0dXJuIFdpZHRoQW5kTWFyZ2luIHsgKndpZHRoLCB7IGNvbXB1dGVk
SG9yaXpvbnRhbE1hcmdpbi5zdGFydC52YWx1ZU9yKDBfbHUpLCBjb21wdXRlZEhvcml6b250YWxN
YXJnaW4uZW5kLnZhbHVlT3IoMF9sdSkgfSwgY29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luIH07CiB9
CiAKIEhlaWdodEFuZE1hcmdpbiBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmZsb2F0aW5n
UmVwbGFjZWRIZWlnaHRBbmRNYXJnaW4oY29uc3QgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBj
b25zdCBCb3gmIGxheW91dEJveCwgT3B0aW9uYWw8TGF5b3V0VW5pdD4gdXNlZEhlaWdodCkKQEAg
LTc1NywxMCArNzU1LDEwIEBAIFdpZHRoQW5kTWFyZ2luIEZvcm1hdHRpbmdDb250ZXh0OjpHZW9t
ZXRyeTo6ZmxvYXRpbmdSZXBsYWNlZFdpZHRoQW5kTWFyZ2luKGNvbnN0CiAgICAgLy8KICAgICAv
LyAxLiBJZiAnbWFyZ2luLWxlZnQnIG9yICdtYXJnaW4tcmlnaHQnIGFyZSBjb21wdXRlZCBhcyAn
YXV0bycsIHRoZWlyIHVzZWQgdmFsdWUgaXMgJzAnLgogICAgIC8vIDIuIFRoZSB1c2VkIHZhbHVl
IG9mICd3aWR0aCcgaXMgZGV0ZXJtaW5lZCBhcyBmb3IgaW5saW5lIHJlcGxhY2VkIGVsZW1lbnRz
LgotICAgIGF1dG8gbWFyZ2luID0gY29tcHV0ZWROb25Db2xsYXBzZWRIb3Jpem9udGFsTWFyZ2lu
VmFsdWUobGF5b3V0U3RhdGUsIGxheW91dEJveCk7CisgICAgYXV0byBjb21wdXRlZEhvcml6b250
YWxNYXJnaW4gPSBHZW9tZXRyeTo6Y29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luKGxheW91dFN0YXRl
LCBsYXlvdXRCb3gpOwogCiAgICAgTE9HX1dJVEhfU1RSRUFNKEZvcm1hdHRpbmdDb250ZXh0TGF5
b3V0LCBzdHJlYW0gPDwgIltIZWlnaHRdW01hcmdpbl0gLT4gZmxvYXRpbmcgcmVwbGFjZWQgLT4g
cmVkaXJlY3RlZCB0byBpbmxpbmUgcmVwbGFjZWQiKTsKLSAgICByZXR1cm4gaW5saW5lUmVwbGFj
ZWRXaWR0aEFuZE1hcmdpbihsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94LCB1c2VkV2lkdGgsIG1hcmdp
bi5zdGFydCwgbWFyZ2luLmVuZCk7CisgICAgcmV0dXJuIGlubGluZVJlcGxhY2VkV2lkdGhBbmRN
YXJnaW4obGF5b3V0U3RhdGUsIGxheW91dEJveCwgdXNlZFdpZHRoLCBjb21wdXRlZEhvcml6b250
YWxNYXJnaW4uc3RhcnQsIGNvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbi5lbmQpOwogfQogCiBWZXJ0
aWNhbEdlb21ldHJ5IEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6b3V0T2ZGbG93VmVydGlj
YWxHZW9tZXRyeShjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IEJveCYgbGF5
b3V0Qm94LCBPcHRpb25hbDxMYXlvdXRVbml0PiB1c2VkSGVpZ2h0KQpAQCAtODcxLDE5ICs4Njks
MTQgQEAgV2lkdGhBbmRNYXJnaW4gRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbmxpbmVS
ZXBsYWNlZFdpZHRoQW5kTWFyZ2luKGNvbnN0IEwKICAgICBhdXRvJiBzdHlsZSA9IGxheW91dEJv
eC5zdHlsZSgpOwogICAgIGF1dG8mIGNvbnRhaW5pbmdCbG9ja0Rpc3BsYXlCb3ggPSBsYXlvdXRT
dGF0ZS5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KCpsYXlvdXRCb3guY29udGFpbmluZ0Jsb2NrKCkp
OwogICAgIGF1dG8gY29udGFpbmluZ0Jsb2NrV2lkdGggPSBjb250YWluaW5nQmxvY2tEaXNwbGF5
Qm94LndpZHRoKCk7CisgICAgYXV0byBjb21wdXRlZEhvcml6b250YWxNYXJnaW4gPSBHZW9tZXRy
eTo6Y29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpOwogCiAg
ICAgYXV0byB1c2VkTWFyZ2luU3RhcnQgPSBbJl0gewotICAgICAgICBpZiAocHJlY29tcHV0ZWRN
YXJnaW5TdGFydCkKLSAgICAgICAgICAgIHJldHVybiBwcmVjb21wdXRlZE1hcmdpblN0YXJ0LnZh
bHVlKCk7Ci0gICAgICAgIGF1dG8gbWFyZ2luU3RhcnQgPSBjb21wdXRlZFZhbHVlSWZOb3RBdXRv
KHN0eWxlLm1hcmdpblN0YXJ0KCksIGNvbnRhaW5pbmdCbG9ja1dpZHRoKTsKLSAgICAgICAgcmV0
dXJuIG1hcmdpblN0YXJ0LnZhbHVlT3IoMF9sdSk7CisgICAgICAgIHJldHVybiBwcmVjb21wdXRl
ZE1hcmdpblN0YXJ0LnZhbHVlT3IoY29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luLnN0YXJ0LnZhbHVl
T3IoMF9sdSkpOwogICAgIH07CiAKICAgICBhdXRvIHVzZWRNYXJnaW5FbmQgPSBbJl0gewotICAg
ICAgICBpZiAocHJlY29tcHV0ZWRNYXJnaW5FbmQpCi0gICAgICAgICAgICByZXR1cm4gcHJlY29t
cHV0ZWRNYXJnaW5FbmQudmFsdWUoKTsKLSAgICAgICAgYXV0byBtYXJnaW5FbmQgPSBjb21wdXRl
ZFZhbHVlSWZOb3RBdXRvKHN0eWxlLm1hcmdpbkVuZCgpLCBjb250YWluaW5nQmxvY2tXaWR0aCk7
Ci0gICAgICAgIHJldHVybiBtYXJnaW5FbmQudmFsdWVPcigwX2x1KTsKKyAgICAgICAgcmV0dXJu
IHByZWNvbXB1dGVkTWFyZ2luRW5kLnZhbHVlT3IoY29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luLmVu
ZC52YWx1ZU9yKDBfbHUpKTsKICAgICB9OwogCiAgICAgYXV0byByZXBsYWNlZCA9IGxheW91dEJv
eC5yZXBsYWNlZCgpOwpAQCAtOTE1LDkgKzkwOCw3IEBAIFdpZHRoQW5kTWFyZ2luIEZvcm1hdHRp
bmdDb250ZXh0OjpHZW9tZXRyeTo6aW5saW5lUmVwbGFjZWRXaWR0aEFuZE1hcmdpbihjb25zdCBM
CiAgICAgQVNTRVJUKHdpZHRoKTsKIAogICAgIExPR19XSVRIX1NUUkVBTShGb3JtYXR0aW5nQ29u
dGV4dExheW91dCwgc3RyZWFtIDw8ICJbV2lkdGhdW01hcmdpbl0gLT4gaW5mbG93IHJlcGxhY2Vk
IC0+IHdpZHRoKCIgPDwgKndpZHRoIDw8ICJweCkgbWFyZ2luKCIgPDwgdXNlZE1hcmdpblN0YXJ0
KCkgPDwgInB4LCAiIDw8IHVzZWRNYXJnaW5FbmQoKSA8PCAicHgpIC0+IGxheW91dEJveCgiIDw8
ICZsYXlvdXRCb3ggPDwgIikiKTsKLSAgICBhdXRvIGNvbXB1dGVkTWFyZ2luU3RhcnQgPSBjb21w
dXRlZFZhbHVlSWZOb3RBdXRvKHN0eWxlLm1hcmdpblN0YXJ0KCksIGNvbnRhaW5pbmdCbG9ja1dp
ZHRoKTsKLSAgICBhdXRvIGNvbXB1dGVkTWFyZ2luRW5kID0gY29tcHV0ZWRWYWx1ZUlmTm90QXV0
byhzdHlsZS5tYXJnaW5FbmQoKSwgY29udGFpbmluZ0Jsb2NrV2lkdGgpOwotICAgIHJldHVybiB7
ICp3aWR0aCwgeyB1c2VkTWFyZ2luU3RhcnQoKSwgdXNlZE1hcmdpbkVuZCgpIH0sIHsgY29tcHV0
ZWRNYXJnaW5TdGFydC52YWx1ZU9yKDApLCBjb21wdXRlZE1hcmdpbkVuZC52YWx1ZU9yKDApIH0g
fTsKKyAgICByZXR1cm4geyAqd2lkdGgsIHsgdXNlZE1hcmdpblN0YXJ0KCksIHVzZWRNYXJnaW5F
bmQoKSB9LCBjb21wdXRlZEhvcml6b250YWxNYXJnaW4gfTsKIH0KIAogTGF5b3V0U2l6ZSBGb3Jt
YXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmluRmxvd1Bvc2l0aW9uZWRQb3NpdGlvbk9mZnNldChj
b25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IEJveCYgbGF5b3V0Qm94KQpAQCAt
MTAyMCwxNiArMTAxMSwxMSBAQCBPcHRpb25hbDxFZGdlcz4gRm9ybWF0dGluZ0NvbnRleHQ6Okdl
b21ldHJ5Ojpjb21wdXRlZFBhZGRpbmcoY29uc3QgTGF5b3V0U3RhdGUmCiAgICAgfTsKIH0KIAot
SG9yaXpvbnRhbE1hcmdpbiBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmNvbXB1dGVkTm9u
Q29sbGFwc2VkSG9yaXpvbnRhbE1hcmdpblZhbHVlKGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRT
dGF0ZSwgY29uc3QgQm94JiBsYXlvdXRCb3gpCitDb21wdXRlZEhvcml6b250YWxNYXJnaW4gRm9y
bWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5Ojpjb21wdXRlZEhvcml6b250YWxNYXJnaW4oY29uc3Qg
TGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjb25zdCBCb3gmIGxheW91dEJveCkKIHsKICAgICBh
dXRvJiBzdHlsZSA9IGxheW91dEJveC5zdHlsZSgpOwogICAgIGF1dG8gY29udGFpbmluZ0Jsb2Nr
V2lkdGggPSBsYXlvdXRTdGF0ZS5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KCpsYXlvdXRCb3guY29u
dGFpbmluZ0Jsb2NrKCkpLmNvbnRlbnRCb3hXaWR0aCgpOwotCi0gICAgYXV0byBtYXJnaW5TdGFy
dCA9IGNvbXB1dGVkVmFsdWVJZk5vdEF1dG8oc3R5bGUubWFyZ2luU3RhcnQoKSwgY29udGFpbmlu
Z0Jsb2NrV2lkdGgpLnZhbHVlT3IoMF9sdSk7Ci0gICAgYXV0byBtYXJnaW5FbmQgPSBjb21wdXRl
ZFZhbHVlSWZOb3RBdXRvKHN0eWxlLm1hcmdpbkVuZCgpLCBjb250YWluaW5nQmxvY2tXaWR0aCku
dmFsdWVPcigwX2x1KTsKLQotICAgIExPR19XSVRIX1NUUkVBTShGb3JtYXR0aW5nQ29udGV4dExh
eW91dCwgc3RyZWFtIDw8ICJbTWFyZ2luXSAtPiBub24gY29sbGFwc2VkIGhvcml6b250YWwgLT4g
bWFyZ2luKCIgPDwgbWFyZ2luU3RhcnQgPDwgInB4LCAiIDw8IG1hcmdpbkVuZCA8PCAicHgpIC0+
IGxheW91dEJveDogIiA8PCAmbGF5b3V0Qm94KTsKLSAgICByZXR1cm4geyBtYXJnaW5TdGFydCwg
bWFyZ2luRW5kIH07CisgICAgcmV0dXJuIHsgY29tcHV0ZWRWYWx1ZUlmTm90QXV0byhzdHlsZS5t
YXJnaW5TdGFydCgpLCBjb250YWluaW5nQmxvY2tXaWR0aCksIGNvbXB1dGVkVmFsdWVJZk5vdEF1
dG8oc3R5bGUubWFyZ2luRW5kKCksIGNvbnRhaW5pbmdCbG9ja1dpZHRoKSB9OwogfQogCiBWZXJ0
aWNhbE1hcmdpbjo6Q29tcHV0ZWRWYWx1ZXMgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5Ojpj
b21wdXRlZE5vbkNvbGxhcHNlZFZlcnRpY2FsTWFyZ2luVmFsdWUoY29uc3QgTGF5b3V0U3RhdGUm
IGxheW91dFN0YXRlLCBjb25zdCBCb3gmIGxheW91dEJveCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9MYXlvdXRVbml0cy5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91
dFVuaXRzLmgKaW5kZXggNzBhZTJiYzQxMTIuLjNiNDgyOWFmZTcwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0VW5pdHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvTGF5b3V0VW5pdHMuaApAQCAtMTAzLDggKzEwMyw4IEBAIHN0cnVjdCBFZGdlcyB7CiAKIHN0
cnVjdCBXaWR0aEFuZE1hcmdpbiB7CiAgICAgTGF5b3V0VW5pdCB3aWR0aDsKLSAgICBIb3Jpem9u
dGFsTWFyZ2luIHVzZWRNYXJnaW47Ci0gICAgSG9yaXpvbnRhbE1hcmdpbiBjb21wdXRlZE1hcmdp
bjsKKyAgICBVc2VkSG9yaXpvbnRhbE1hcmdpbiB1c2VkTWFyZ2luOworICAgIENvbXB1dGVkSG9y
aXpvbnRhbE1hcmdpbiBjb21wdXRlZE1hcmdpbjsKIH07CiAKIHN0cnVjdCBIZWlnaHRBbmRNYXJn
aW4gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L01hcmdpblR5cGVzLmggYi9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvTWFyZ2luVHlwZXMuaAppbmRleCA4NWZmZWQ2NTk2OC4uZmUx
ZmMxOGZhNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9NYXJnaW5UeXBlcy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9NYXJnaW5UeXBlcy5oCkBAIC01Niw3ICs1Niwx
MiBAQCBwcml2YXRlOgogICAgIE9wdGlvbmFsPENvbGxhcHNlZFZhbHVlcz4gbV9jb2xsYXBzZWQ7
CiB9OwogCi1zdHJ1Y3QgSG9yaXpvbnRhbE1hcmdpbiB7CitzdHJ1Y3QgQ29tcHV0ZWRIb3Jpem9u
dGFsTWFyZ2luIHsKKyAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBzdGFydDsKKyAgICBPcHRpb25h
bDxMYXlvdXRVbml0PiBlbmQ7Cit9OworCitzdHJ1Y3QgVXNlZEhvcml6b250YWxNYXJnaW4gewog
ICAgIExheW91dFVuaXQgc3RhcnQ7CiAgICAgTGF5b3V0VW5pdCBlbmQ7CiB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L1ZlcmlmaWNhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvVmVyaWZpY2F0aW9uLmNwcAppbmRleCA0OTQxNTdhOWVlNy4uNjRmN2E4NGYzNDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9WZXJpZmljYXRpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9WZXJpZmljYXRpb24uY3BwCkBAIC0yNDcsOCArMjQ3LDgg
QEAgc3RhdGljIGJvb2wgb3V0cHV0TWlzbWF0Y2hpbmdCbG9ja0JveEluZm9ybWF0aW9uSWZOZWVk
ZWQoVGV4dFN0cmVhbSYgc3RyZWFtLCBjb24KIAogICAgICAgICByZXR1cm4gRGlzcGxheTo6Qm94
OjpSZWN0IHsKICAgICAgICAgICAgIGJvcmRlckJveC50b3AoKSAtIGRpc3BsYXlCb3gubm9uQ29s
bGFwc2VkTWFyZ2luQmVmb3JlKCksCi0gICAgICAgICAgICBib3JkZXJCb3gubGVmdCgpIC0gZGlz
cGxheUJveC5jb21wdXRlZE1hcmdpblN0YXJ0KCksCi0gICAgICAgICAgICBkaXNwbGF5Qm94LmNv
bXB1dGVkTWFyZ2luU3RhcnQoKSArIGJvcmRlckJveC53aWR0aCgpICsgZGlzcGxheUJveC5jb21w
dXRlZE1hcmdpbkVuZCgpLAorICAgICAgICAgICAgYm9yZGVyQm94LmxlZnQoKSAtIGRpc3BsYXlC
b3guY29tcHV0ZWRNYXJnaW5TdGFydCgpLnZhbHVlT3IoMCksCisgICAgICAgICAgICBkaXNwbGF5
Qm94LmNvbXB1dGVkTWFyZ2luU3RhcnQoKS52YWx1ZU9yKDApICsgYm9yZGVyQm94LndpZHRoKCkg
KyBkaXNwbGF5Qm94LmNvbXB1dGVkTWFyZ2luRW5kKCkudmFsdWVPcigwKSwKICAgICAgICAgICAg
IGRpc3BsYXlCb3gubm9uQ29sbGFwc2VkTWFyZ2luQmVmb3JlKCkgKyBib3JkZXJCb3guaGVpZ2h0
KCkgKyBkaXNwbGF5Qm94Lm5vbkNvbGxhcHNlZE1hcmdpbkFmdGVyKCkKICAgICAgICAgfTsKICAg
ICB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9C
bG9ja0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwCmluZGV4
IDY0YTc3NTg0OTYwLi5iZWMwNmU1MTkxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5n
Q29udGV4dEdlb21ldHJ5LmNwcApAQCAtMTQxLDEwICsxNDEsOSBAQCBXaWR0aEFuZE1hcmdpbiBC
bG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5GbG93Tm9uUmVwbGFjZWRXaWR0aEFu
ZE1hcmdpbgogICAgICAgICBhdXRvJiBkaXNwbGF5Qm94ID0gbGF5b3V0U3RhdGUuZGlzcGxheUJv
eEZvckxheW91dEJveChsYXlvdXRCb3gpOwogCiAgICAgICAgIGF1dG8gd2lkdGggPSBjb21wdXRl
ZFZhbHVlSWZOb3RBdXRvKHVzZWRXaWR0aCA/IExlbmd0aCB7IHVzZWRXaWR0aC52YWx1ZSgpLCBG
aXhlZCB9IDogc3R5bGUubG9naWNhbFdpZHRoKCksIGNvbnRhaW5pbmdCbG9ja1dpZHRoKTsKLSAg
ICAgICAgYXV0byBjb21wdXRlZE1hcmdpblN0YXJ0ID0gY29tcHV0ZWRWYWx1ZUlmTm90QXV0byhz
dHlsZS5tYXJnaW5TdGFydCgpLCBjb250YWluaW5nQmxvY2tXaWR0aCk7Ci0gICAgICAgIGF1dG8g
Y29tcHV0ZWRNYXJnaW5FbmQgPSBjb21wdXRlZFZhbHVlSWZOb3RBdXRvKHN0eWxlLm1hcmdpbkVu
ZCgpLCBjb250YWluaW5nQmxvY2tXaWR0aCk7Ci0gICAgICAgIGF1dG8gdXNlZE1hcmdpblN0YXJ0
ID0gY29tcHV0ZWRNYXJnaW5TdGFydDsKLSAgICAgICAgYXV0byB1c2VkTWFyZ2luRW5kID0gY29t
cHV0ZWRNYXJnaW5FbmQ7CisgICAgICAgIGF1dG8gY29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luID0g
R2VvbWV0cnk6OmNvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbihsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94
KTsKKyAgICAgICAgYXV0byB1c2VkTWFyZ2luU3RhcnQgPSBjb21wdXRlZEhvcml6b250YWxNYXJn
aW4uc3RhcnQ7CisgICAgICAgIGF1dG8gdXNlZE1hcmdpbkVuZCA9IGNvbXB1dGVkSG9yaXpvbnRh
bE1hcmdpbi5lbmQ7CiAgICAgICAgIGF1dG8gYm9yZGVyTGVmdCA9IGRpc3BsYXlCb3guYm9yZGVy
TGVmdCgpOwogICAgICAgICBhdXRvIGJvcmRlclJpZ2h0ID0gZGlzcGxheUJveC5ib3JkZXJSaWdo
dCgpOwogICAgICAgICBhdXRvIHBhZGRpbmdMZWZ0ID0gZGlzcGxheUJveC5wYWRkaW5nTGVmdCgp
LnZhbHVlT3IoMCk7CkBAIC0xOTIsNyArMTkxLDcgQEAgV2lkdGhBbmRNYXJnaW4gQmxvY2tGb3Jt
YXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmluRmxvd05vblJlcGxhY2VkV2lkdGhBbmRNYXJnaW4K
ICAgICAgICAgQVNTRVJUKHVzZWRNYXJnaW5TdGFydCk7CiAgICAgICAgIEFTU0VSVCh1c2VkTWFy
Z2luRW5kKTsKIAotICAgICAgICByZXR1cm4gV2lkdGhBbmRNYXJnaW4geyAqd2lkdGgsIHsgKnVz
ZWRNYXJnaW5TdGFydCwgKnVzZWRNYXJnaW5FbmQgfSwgeyBjb21wdXRlZE1hcmdpblN0YXJ0LnZh
bHVlT3IoMCksIGNvbXB1dGVkTWFyZ2luRW5kLnZhbHVlT3IoMCkgfSB9OworICAgICAgICByZXR1
cm4gV2lkdGhBbmRNYXJnaW4geyAqd2lkdGgsIHsgKnVzZWRNYXJnaW5TdGFydCwgKnVzZWRNYXJn
aW5FbmQgfSwgY29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luIH07CiAgICAgfTsKIAogICAgIGF1dG8g
d2lkdGhBbmRNYXJnaW4gPSBjb21wdXRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheUJveC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rp
c3BsYXl0cmVlL0Rpc3BsYXlCb3guaAppbmRleCA3NWVjNzcxODdhNC4uOWJjMWI5ZmViMGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5Qm94LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlCb3guaApAQCAt
MTQ2LDggKzE0Niw4IEBAIHB1YmxpYzoKIAogICAgIExheW91dFVuaXQgbm9uQ29sbGFwc2VkTWFy
Z2luQmVmb3JlKCkgY29uc3Q7CiAgICAgTGF5b3V0VW5pdCBub25Db2xsYXBzZWRNYXJnaW5BZnRl
cigpIGNvbnN0OwotICAgIExheW91dFVuaXQgY29tcHV0ZWRNYXJnaW5TdGFydCgpIGNvbnN0Owot
ICAgIExheW91dFVuaXQgY29tcHV0ZWRNYXJnaW5FbmQoKSBjb25zdDsKKyAgICBPcHRpb25hbDxM
YXlvdXRVbml0PiBjb21wdXRlZE1hcmdpblN0YXJ0KCkgY29uc3Q7CisgICAgT3B0aW9uYWw8TGF5
b3V0VW5pdD4gY29tcHV0ZWRNYXJnaW5FbmQoKSBjb25zdDsKIAogICAgIE9wdGlvbmFsPExheW91
dFVuaXQ+IGVzdGltYXRlZE1hcmdpbkJlZm9yZSgpIGNvbnN0IHsgcmV0dXJuIG1fZXN0aW1hdGVk
TWFyZ2luQmVmb3JlOyB9CiAKQEAgLTE5MSw5ICsxOTEsOSBAQCBwcml2YXRlOgogICAgIHZvaWQg
c2V0Q29udGVudEJveEhlaWdodChMYXlvdXRVbml0KTsKICAgICB2b2lkIHNldENvbnRlbnRCb3hX
aWR0aChMYXlvdXRVbml0KTsKIAotICAgIHZvaWQgc2V0SG9yaXpvbnRhbE1hcmdpbihMYXlvdXQ6
Okhvcml6b250YWxNYXJnaW4pOworICAgIHZvaWQgc2V0SG9yaXpvbnRhbE1hcmdpbihMYXlvdXQ6
OlVzZWRIb3Jpem9udGFsTWFyZ2luKTsKICAgICB2b2lkIHNldFZlcnRpY2FsTWFyZ2luKExheW91
dDo6VmVydGljYWxNYXJnaW4pOwotICAgIHZvaWQgc2V0SG9yaXpvbnRhbENvbXB1dGVkTWFyZ2lu
KExheW91dDo6SG9yaXpvbnRhbE1hcmdpbik7CisgICAgdm9pZCBzZXRIb3Jpem9udGFsQ29tcHV0
ZWRNYXJnaW4oTGF5b3V0OjpDb21wdXRlZEhvcml6b250YWxNYXJnaW4pOwogICAgIHZvaWQgc2V0
RXN0aW1hdGVkTWFyZ2luQmVmb3JlKExheW91dFVuaXQgbWFyZ2luQmVmb3JlKSB7IG1fZXN0aW1h
dGVkTWFyZ2luQmVmb3JlID0gbWFyZ2luQmVmb3JlOyB9CiAKICAgICB2b2lkIHNldEJvcmRlcihM
YXlvdXQ6OkVkZ2VzKTsKQEAgLTIyNCw5ICsyMjQsOSBAQCBwcml2YXRlOgogICAgIExheW91dFVu
aXQgbV9jb250ZW50V2lkdGg7CiAgICAgTGF5b3V0VW5pdCBtX2NvbnRlbnRIZWlnaHQ7CiAKLSAg
ICBMYXlvdXQ6Okhvcml6b250YWxNYXJnaW4gbV9ob3Jpem9udGFsTWFyZ2luOworICAgIExheW91
dDo6VXNlZEhvcml6b250YWxNYXJnaW4gbV9ob3Jpem9udGFsTWFyZ2luOwogICAgIExheW91dDo6
VmVydGljYWxNYXJnaW4gbV92ZXJ0aWNhbE1hcmdpbjsKLSAgICBMYXlvdXQ6Okhvcml6b250YWxN
YXJnaW4gbV9ob3Jpem9udGFsQ29tcHV0ZWRNYXJnaW47CisgICAgTGF5b3V0OjpDb21wdXRlZEhv
cml6b250YWxNYXJnaW4gbV9ob3Jpem9udGFsQ29tcHV0ZWRNYXJnaW47CiAgICAgT3B0aW9uYWw8
TGF5b3V0VW5pdD4gbV9lc3RpbWF0ZWRNYXJnaW5CZWZvcmU7CiAKICAgICBMYXlvdXQ6OkVkZ2Vz
IG1fYm9yZGVyOwpAQCAtNTA3LDcgKzUwNyw3IEBAIGlubGluZSBMYXlvdXRVbml0IEJveDo6Y29u
dGVudEJveFdpZHRoKCkgY29uc3QKICAgICByZXR1cm4gbV9jb250ZW50V2lkdGg7CiB9CiAKLWlu
bGluZSB2b2lkIEJveDo6c2V0SG9yaXpvbnRhbE1hcmdpbihMYXlvdXQ6Okhvcml6b250YWxNYXJn
aW4gbWFyZ2luKQoraW5saW5lIHZvaWQgQm94OjpzZXRIb3Jpem9udGFsTWFyZ2luKExheW91dDo6
VXNlZEhvcml6b250YWxNYXJnaW4gbWFyZ2luKQogewogI2lmICFBU1NFUlRfRElTQUJMRUQKICAg
ICBzZXRIYXNWYWxpZEhvcml6b250YWxNYXJnaW4oKTsKQEAgLTUyNSw3ICs1MjUsNyBAQCBpbmxp
bmUgdm9pZCBCb3g6OnNldFZlcnRpY2FsTWFyZ2luKExheW91dDo6VmVydGljYWxNYXJnaW4gbWFy
Z2luKQogICAgIG1fdmVydGljYWxNYXJnaW4gPSBtYXJnaW47CiB9CiAKLWlubGluZSB2b2lkIEJv
eDo6c2V0SG9yaXpvbnRhbENvbXB1dGVkTWFyZ2luKExheW91dDo6SG9yaXpvbnRhbE1hcmdpbiBt
YXJnaW4pCitpbmxpbmUgdm9pZCBCb3g6OnNldEhvcml6b250YWxDb21wdXRlZE1hcmdpbihMYXlv
dXQ6OkNvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbiBtYXJnaW4pCiB7CiAjaWYgIUFTU0VSVF9ESVNB
QkxFRAogICAgIHNldEhhc1ZhbGlkSG9yaXpvbnRhbENvbXB1dGVkTWFyZ2luKCk7CkBAIC01OTEs
MTMgKzU5MSwxMyBAQCBpbmxpbmUgTGF5b3V0VW5pdCBCb3g6Om5vbkNvbGxhcHNlZE1hcmdpbkFm
dGVyKCkgY29uc3QKICAgICByZXR1cm4gbV92ZXJ0aWNhbE1hcmdpbi5ub25Db2xsYXBzZWRWYWx1
ZXMoKS5hZnRlcjsKIH0KIAotaW5saW5lIExheW91dFVuaXQgQm94Ojpjb21wdXRlZE1hcmdpblN0
YXJ0KCkgY29uc3QKK2lubGluZSBPcHRpb25hbDxMYXlvdXRVbml0PiBCb3g6OmNvbXB1dGVkTWFy
Z2luU3RhcnQoKSBjb25zdAogewogICAgIEFTU0VSVChtX2hhc1ZhbGlkSG9yaXpvbnRhbENvbXB1
dGVkTWFyZ2luKTsKICAgICByZXR1cm4gbV9ob3Jpem9udGFsQ29tcHV0ZWRNYXJnaW4uc3RhcnQ7
CiB9CiAKLWlubGluZSBMYXlvdXRVbml0IEJveDo6Y29tcHV0ZWRNYXJnaW5FbmQoKSBjb25zdAor
aW5saW5lIE9wdGlvbmFsPExheW91dFVuaXQ+IEJveDo6Y29tcHV0ZWRNYXJnaW5FbmQoKSBjb25z
dAogewogICAgIEFTU0VSVChtX2hhc1ZhbGlkSG9yaXpvbnRhbENvbXB1dGVkTWFyZ2luKTsKICAg
ICByZXR1cm4gbV9ob3Jpem9udGFsQ29tcHV0ZWRNYXJnaW4uZW5kOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Zsb2F0cy9GbG9hdEF2b2lkZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9mbG9hdHMvRmxvYXRBdm9pZGVyLmgKaW5kZXggOGI1Y2Q4ODQwNTguLjY3Yzk0Mjk2
MDIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZmxvYXRzL0Zsb2F0QXZvaWRl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mbG9hdHMvRmxvYXRBdm9pZGVyLmgKQEAg
LTczLDggKzczLDggQEAgcHJvdGVjdGVkOgogICAgIExheW91dFVuaXQgbWFyZ2luQmVmb3JlKCkg
Y29uc3QgeyByZXR1cm4gZGlzcGxheUJveCgpLm1hcmdpbkJlZm9yZSgpOyB9CiAgICAgTGF5b3V0
VW5pdCBtYXJnaW5BZnRlcigpIGNvbnN0IHsgcmV0dXJuIGRpc3BsYXlCb3goKS5tYXJnaW5BZnRl
cigpOyB9CiAgICAgLy8gRG8gbm90IHVzZSB0aGUgdXNlZCB2YWx1ZXMgaGVyZSBiZWNhdXNlIHRo
ZXkgY29tcHV0ZWQgYXMgaWYgdGhpcyBib3ggd2FzIG5vdCBhIGZsb2F0IGF2b2lkZXIuCi0gICAg
TGF5b3V0VW5pdCBtYXJnaW5TdGFydCgpIGNvbnN0IHsgcmV0dXJuIGRpc3BsYXlCb3goKS5jb21w
dXRlZE1hcmdpblN0YXJ0KCk7IH0KLSAgICBMYXlvdXRVbml0IG1hcmdpbkVuZCgpIGNvbnN0IHsg
cmV0dXJuIGRpc3BsYXlCb3goKS5jb21wdXRlZE1hcmdpbkVuZCgpOyB9CisgICAgTGF5b3V0VW5p
dCBtYXJnaW5TdGFydCgpIGNvbnN0IHsgcmV0dXJuIGRpc3BsYXlCb3goKS5jb21wdXRlZE1hcmdp
blN0YXJ0KCkudmFsdWVPcigwKTsgfQorICAgIExheW91dFVuaXQgbWFyZ2luRW5kKCkgY29uc3Qg
eyByZXR1cm4gZGlzcGxheUJveCgpLmNvbXB1dGVkTWFyZ2luRW5kKCkudmFsdWVPcigwKTsgfQog
CiAgICAgTGF5b3V0VW5pdCBtYXJnaW5Cb3hXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1hcmdpblN0
YXJ0KCkgKyBkaXNwbGF5Qm94KCkud2lkdGgoKSArIG1hcmdpbkVuZCgpOyB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRp
bmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lu
bGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcAppbmRleCA1YzVmM2VkYjcyMy4uYjM2ZTY4ZThhN2Qg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGlu
ZUZvcm1hdHRpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5l
Zm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAKQEAgLTQ0MiwxMCArNDQyLDEw
IEBAIHZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNvbGxlY3RJbmxpbmVDb250ZW50Rm9y
U3VidHJlZShjb25zdCBCb3gmIHJvb3QsIEluCiAgICAgICAgIGNyZWF0ZUFuZEFwcGVuZElubGlu
ZUl0ZW0oKTsKICAgICAgICAgYXV0byYgaW5saW5lUnVuID0gKmlubGluZUZvcm1hdHRpbmdTdGF0
ZS5pbmxpbmVDb250ZW50KCkubGFzdCgpOwogCi0gICAgICAgIGF1dG8gaG9yaXpvbnRhbE1hcmdp
biA9IEdlb21ldHJ5Ojpjb21wdXRlZE5vbkNvbGxhcHNlZEhvcml6b250YWxNYXJnaW5WYWx1ZShs
YXlvdXRTdGF0ZSgpLCByb290KTsKKyAgICAgICAgYXV0byBob3Jpem9udGFsTWFyZ2luID0gR2Vv
bWV0cnk6OmNvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbihsYXlvdXRTdGF0ZSgpLCByb290KTsKICAg
ICAgICAgaW5saW5lUnVuLmFkZERldGFjaGluZ1J1bGUoeyBJbmxpbmVJdGVtOjpEZXRhY2hpbmdS
dWxlOjpCcmVha0F0U3RhcnQsIElubGluZUl0ZW06OkRldGFjaGluZ1J1bGU6OkJyZWFrQXRFbmQg
fSk7Ci0gICAgICAgIGlubGluZVJ1bi5hZGROb25CcmVha2FibGVTdGFydChob3Jpem9udGFsTWFy
Z2luLnN0YXJ0KTsKLSAgICAgICAgaW5saW5lUnVuLmFkZE5vbkJyZWFrYWJsZUVuZChob3Jpem9u
dGFsTWFyZ2luLmVuZCk7CisgICAgICAgIGlubGluZVJ1bi5hZGROb25CcmVha2FibGVTdGFydCho
b3Jpem9udGFsTWFyZ2luLnN0YXJ0LnZhbHVlT3IoMCkpOworICAgICAgICBpbmxpbmVSdW4uYWRk
Tm9uQnJlYWthYmxlRW5kKGhvcml6b250YWxNYXJnaW4uZW5kLnZhbHVlT3IoMCkpOwogICAgICAg
ICAvLyBTa2lwIGZvcm1hdHRpbmcgcm9vdCBzdWJ0cmVlLiBUaGV5IGFyZSBub3QgcGFydCBvZiB0
aGlzIGlubGluZSBmb3JtYXR0aW5nIGNvbnRleHQuCiAgICAgICAgIHJldHVybjsKICAgICB9CkBA
IC00NjUsNyArNDY1LDcgQEAgdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6Y29sbGVjdElu
bGluZUNvbnRlbnRGb3JTdWJ0cmVlKGNvbnN0IEJveCYgcm9vdCwgSW4KICAgICAvLyBGSVhNRTog
UmV2aXNpdCB0aGlzIHdoZW4gd2UgZmlndXJlZCBvdXQgaG93IGlubGluZSBib3hlcyBmaXQgdGhl
IGRpc3BsYXkgdHJlZS4KICAgICBhdXRvIHBhZGRpbmcgPSBHZW9tZXRyeTo6Y29tcHV0ZWRQYWRk
aW5nKGxheW91dFN0YXRlKCksIHJvb3QpOwogICAgIGF1dG8gYm9yZGVyID0gR2VvbWV0cnk6OmNv
bXB1dGVkQm9yZGVyKGxheW91dFN0YXRlKCksIHJvb3QpOwotICAgIGF1dG8gaG9yaXpvbnRhbE1h
cmdpbiA9IEdlb21ldHJ5Ojpjb21wdXRlZE5vbkNvbGxhcHNlZEhvcml6b250YWxNYXJnaW5WYWx1
ZShsYXlvdXRTdGF0ZSgpLCByb290KTsKKyAgICBhdXRvIGhvcml6b250YWxNYXJnaW4gPSBHZW9t
ZXRyeTo6Y29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luKGxheW91dFN0YXRlKCksIHJvb3QpOwogICAg
IC8vIFNldHVwIGJyZWFraW5nIGJvdW5kYXJpZXMgZm9yIHRoaXMgc3VidHJlZS4KICAgICBhdXRv
KiBsYXN0RGVzY2VuZGFudElubGluZUJveCA9IGlubGluZUZvcm1hdHRpbmdTdGF0ZS5sYXN0SW5s
aW5lSXRlbSgpOwogICAgIC8vIEVtcHR5IGNvbnRhaW5lcj8KQEAgLTQ5Niw3ICs0OTYsNyBAQCB2
b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0Ojpjb2xsZWN0SW5saW5lQ29udGVudEZvclN1YnRy
ZWUoY29uc3QgQm94JiByb290LCBJbgogCiAgICAgICAgIEFTU0VSVChmaXJzdERlc2NlbmRhbnRJ
bmxpbmVCb3gpOwogICAgICAgICBmaXJzdERlc2NlbmRhbnRJbmxpbmVCb3gtPmFkZERldGFjaGlu
Z1J1bGUoSW5saW5lSXRlbTo6RGV0YWNoaW5nUnVsZTo6QnJlYWtBdFN0YXJ0KTsKLSAgICAgICAg
YXV0byBzdGFydE9mZnNldCA9IGJvcmRlci5ob3Jpem9udGFsLmxlZnQgKyBob3Jpem9udGFsTWFy
Z2luLnN0YXJ0OworICAgICAgICBhdXRvIHN0YXJ0T2Zmc2V0ID0gYm9yZGVyLmhvcml6b250YWwu
bGVmdCArIGhvcml6b250YWxNYXJnaW4uc3RhcnQudmFsdWVPcigwKTsKICAgICAgICAgaWYgKHBh
ZGRpbmcpCiAgICAgICAgICAgICBzdGFydE9mZnNldCArPSBwYWRkaW5nLT5ob3Jpem9udGFsLmxl
ZnQ7CiAgICAgICAgIGZpcnN0RGVzY2VuZGFudElubGluZUJveC0+YWRkTm9uQnJlYWthYmxlU3Rh
cnQoc3RhcnRPZmZzZXQpOwpAQCAtNTA0LDcgKzUwNCw3IEBAIHZvaWQgSW5saW5lRm9ybWF0dGlu
Z0NvbnRleHQ6OmNvbGxlY3RJbmxpbmVDb250ZW50Rm9yU3VidHJlZShjb25zdCBCb3gmIHJvb3Qs
IEluCiAKICAgICBpZiAocm9vdEJyZWFrc0F0RW5kKCkpIHsKICAgICAgICAgbGFzdERlc2NlbmRh
bnRJbmxpbmVCb3gtPmFkZERldGFjaGluZ1J1bGUoSW5saW5lSXRlbTo6RGV0YWNoaW5nUnVsZTo6
QnJlYWtBdEVuZCk7Ci0gICAgICAgIGF1dG8gZW5kT2Zmc2V0ID0gYm9yZGVyLmhvcml6b250YWwu
cmlnaHQgKyBob3Jpem9udGFsTWFyZ2luLmVuZDsKKyAgICAgICAgYXV0byBlbmRPZmZzZXQgPSBi
b3JkZXIuaG9yaXpvbnRhbC5yaWdodCArIGhvcml6b250YWxNYXJnaW4uZW5kLnZhbHVlT3IoMCk7
CiAgICAgICAgIGlmIChwYWRkaW5nKQogICAgICAgICAgICAgZW5kT2Zmc2V0ICs9IHBhZGRpbmct
Pmhvcml6b250YWwucmlnaHQ7CiAgICAgICAgIGxhc3REZXNjZW5kYW50SW5saW5lQm94LT5hZGRO
b25CcmVha2FibGVFbmQoZW5kT2Zmc2V0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGlu
Z0NvbnRleHRHZW9tZXRyeS5jcHAKaW5kZXggYjY1Yzg5ZmM1NWYuLmUyNWU1YjJjMjM1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3Jt
YXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5s
aW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcApAQCAtNjAs
OSArNjAsOSBAQCBXaWR0aEFuZE1hcmdpbiBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0
cnk6OmlubGluZUJsb2NrV2lkdGhBbmRNYXJnaW4oTGF5bwogICAgICAgICB3aWR0aCA9IHNocmlu
a1RvRml0V2lkdGgobGF5b3V0U3RhdGUsIGZvcm1hdHRpbmdDb250ZXh0Um9vdCk7CiAKICAgICAv
LyAjMgotICAgIGF1dG8gbWFyZ2luID0gY29tcHV0ZWROb25Db2xsYXBzZWRIb3Jpem9udGFsTWFy
Z2luVmFsdWUobGF5b3V0U3RhdGUsIGZvcm1hdHRpbmdDb250ZXh0Um9vdCk7CisgICAgYXV0byBj
b21wdXRlZEhvcml6b250YWxNYXJnaW4gPSBHZW9tZXRyeTo6Y29tcHV0ZWRIb3Jpem9udGFsTWFy
Z2luKGxheW91dFN0YXRlLCBmb3JtYXR0aW5nQ29udGV4dFJvb3QpOwogCi0gICAgcmV0dXJuIFdp
ZHRoQW5kTWFyZ2luIHsgKndpZHRoLCBtYXJnaW4sIG1hcmdpbiB9OworICAgIHJldHVybiBXaWR0
aEFuZE1hcmdpbiB7ICp3aWR0aCwgeyBjb21wdXRlZEhvcml6b250YWxNYXJnaW4uc3RhcnQudmFs
dWVPcigwX2x1KSwgY29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luLmVuZC52YWx1ZU9yKDBfbHUpIH0s
IGNvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbiB9OwogfQogCiBIZWlnaHRBbmRNYXJnaW4gSW5saW5l
Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbmxpbmVCbG9ja0hlaWdodEFuZE1hcmdpbihj
b25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IEJveCYgbGF5b3V0Qm94KQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>358309</attachid>
            <date>2019-01-03 21:48:17 -0800</date>
            <delta_ts>2019-01-04 00:33:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>Patch.txt</filename>
            <type>text/plain</type>
            <size>43515</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA3ZTMyNzVhOWIwYy4uMGI5M2Y5NDQ5OWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MSBAQAorMjAxOS0wMS0wMyAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgor
CisgICAgICAgIFtMRkNdIENvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbiBzaG91bGQgaGF2ZSBvcHRp
b25hbCBtZW1iZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xOTMxMzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBTcGxpdCBIb3Jpem9udGFsTWFyZ2luIGludG8gVXNlZEhvcml6b250YWxNYXJnaW4gYW5k
IENvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbi4gQ29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luJ3MgbWVt
YmVycyBhcmUgb3B0aW9uYWwuCisgICAgICAgIChzZWUgY29tcHV0ZWQgdnMgdXNlZCB2YWx1ZXMp
CisKKyAgICAgICAgKiBsYXlvdXQvRm9ybWF0dGluZ0NvbnRleHQuaDoKKyAgICAgICAgKiBsYXlv
dXQvRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlv
dXQ6OkZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6b3V0T2ZGbG93Tm9uUmVwbGFjZWRIb3Jp
em9udGFsR2VvbWV0cnkpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29u
dGV4dDo6R2VvbWV0cnk6Om91dE9mRmxvd1JlcGxhY2VkSG9yaXpvbnRhbEdlb21ldHJ5KToKKyAg
ICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpmbG9h
dGluZ05vblJlcGxhY2VkV2lkdGhBbmRNYXJnaW4pOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0
OjpGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmZsb2F0aW5nUmVwbGFjZWRXaWR0aEFuZE1h
cmdpbik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0OjpHZW9t
ZXRyeTo6aW5saW5lUmVwbGFjZWRXaWR0aEFuZE1hcmdpbik6CisgICAgICAgIChXZWJDb3JlOjpM
YXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6Y29tcHV0ZWRIb3Jpem9udGFsTWFy
Z2luKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21l
dHJ5Ojpjb21wdXRlZE5vbkNvbGxhcHNlZEhvcml6b250YWxNYXJnaW5WYWx1ZSk6IERlbGV0ZWQu
CisgICAgICAgICogbGF5b3V0L0xheW91dFVuaXRzLmg6CisgICAgICAgICogbGF5b3V0L01hcmdp
blR5cGVzLmg6CisgICAgICAgICogbGF5b3V0L1ZlcmlmaWNhdGlvbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpMYXlvdXQ6Om91dHB1dE1pc21hdGNoaW5nQmxvY2tCb3hJbmZvcm1hdGlvbklmTmVl
ZGVkKToKKyAgICAgICAgKiBsYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0Nv
bnRleHRHZW9tZXRyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0
dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbkZsb3dOb25SZXBsYWNlZFdpZHRoQW5kTWFyZ2luKToK
KyAgICAgICAgKiBsYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheUJveC5oOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheTo6Qm94OjpzZXRIb3Jpem9udGFsTWFyZ2luKToKKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXk6OkJveDo6c2V0SG9yaXpvbnRhbENvbXB1dGVkTWFyZ2luKToKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXk6OkJveDo6Y29tcHV0ZWRNYXJnaW5TdGFydCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5OjpCb3g6OmNvbXB1dGVkTWFyZ2luRW5kIGNvbnN0KToKKyAg
ICAgICAgKiBsYXlvdXQvZmxvYXRzL0Zsb2F0QXZvaWRlci5oOgorICAgICAgICAoV2ViQ29yZTo6
TGF5b3V0OjpGbG9hdEF2b2lkZXI6Om1hcmdpblN0YXJ0IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dDo6RmxvYXRBdm9pZGVyOjptYXJnaW5FbmQgY29uc3QpOgorICAgICAgICAqIGxh
eW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNvbGxlY3RJbmxp
bmVDb250ZW50Rm9yU3VidHJlZSBjb25zdCk6CisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1h
dHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5saW5lQmxv
Y2tXaWR0aEFuZE1hcmdpbik6CisKIDIwMTktMDEtMDMgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFw
cGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtCRkNdIFVzZSBjb21wdXRlZFZhbHVlIGFuZCB1c2Vk
VmFsdWUgY29uc2lzdGVudGx5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9y
bWF0dGluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4
dC5oCmluZGV4IDdmNzQzY2IyYzYyLi41MGJiYmE1YjYxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L0Zvcm1hdHRpbmdDb250ZXh0LmgKQEAgLTk2LDcgKzk2LDcgQEAgcHJvdGVjdGVkOgogICAg
ICAgICBzdGF0aWMgRWRnZXMgY29tcHV0ZWRCb3JkZXIoY29uc3QgTGF5b3V0U3RhdGUmLCBjb25z
dCBCb3gmKTsKICAgICAgICAgc3RhdGljIE9wdGlvbmFsPEVkZ2VzPiBjb21wdXRlZFBhZGRpbmco
Y29uc3QgTGF5b3V0U3RhdGUmLCBjb25zdCBCb3gmKTsKIAotICAgICAgICBzdGF0aWMgSG9yaXpv
bnRhbE1hcmdpbiBjb21wdXRlZE5vbkNvbGxhcHNlZEhvcml6b250YWxNYXJnaW5WYWx1ZShjb25z
dCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYpOworICAgICAgICBzdGF0aWMgQ29tcHV0ZWRIb3Jp
em9udGFsTWFyZ2luIGNvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbihjb25zdCBMYXlvdXRTdGF0ZSYs
IGNvbnN0IEJveCYpOwogICAgICAgICBzdGF0aWMgVmVydGljYWxNYXJnaW46OkNvbXB1dGVkVmFs
dWVzIGNvbXB1dGVkTm9uQ29sbGFwc2VkVmVydGljYWxNYXJnaW5WYWx1ZShjb25zdCBMYXlvdXRT
dGF0ZSYsIGNvbnN0IEJveCYpOwogCiAgICAgICAgIHN0YXRpYyBPcHRpb25hbDxMYXlvdXRVbml0
PiBjb21wdXRlZFZhbHVlSWZOb3RBdXRvKGNvbnN0IExlbmd0aCYgZ2VvbWV0cnlQcm9wZXJ0eSwg
TGF5b3V0VW5pdCBjb250YWluaW5nQmxvY2tXaWR0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAKaW5kZXggY2YyZTM3N2YzZDgu
LmNiYTk1MTVjMTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGlu
Z0NvbnRleHRHZW9tZXRyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRp
bmdDb250ZXh0R2VvbWV0cnkuY3BwCkBAIC00MDAsMTAgKzQwMCw4IEBAIEhvcml6b250YWxHZW9t
ZXRyeSBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Om91dE9mRmxvd05vblJlcGxhY2VkSG9y
aXpvbnRhbEdlCiAgICAgYXV0byBsZWZ0ID0gY29tcHV0ZWRWYWx1ZUlmTm90QXV0byhzdHlsZS5s
b2dpY2FsTGVmdCgpLCBjb250YWluaW5nQmxvY2tXaWR0aCk7CiAgICAgYXV0byByaWdodCA9IGNv
bXB1dGVkVmFsdWVJZk5vdEF1dG8oc3R5bGUubG9naWNhbFJpZ2h0KCksIGNvbnRhaW5pbmdCbG9j
a1dpZHRoKTsKICAgICBhdXRvIHdpZHRoID0gY29tcHV0ZWRWYWx1ZUlmTm90QXV0byh1c2VkV2lk
dGggPyBMZW5ndGggeyB1c2VkV2lkdGgudmFsdWUoKSwgRml4ZWQgfSA6IHN0eWxlLmxvZ2ljYWxX
aWR0aCgpLCBjb250YWluaW5nQmxvY2tXaWR0aCk7Ci0gICAgYXV0byBjb21wdXRlZE1hcmdpblN0
YXJ0ID0gY29tcHV0ZWRWYWx1ZUlmTm90QXV0byhzdHlsZS5tYXJnaW5TdGFydCgpLCBjb250YWlu
aW5nQmxvY2tXaWR0aCk7Ci0gICAgYXV0byBjb21wdXRlZE1hcmdpbkVuZCA9IGNvbXB1dGVkVmFs
dWVJZk5vdEF1dG8oc3R5bGUubWFyZ2luRW5kKCksIGNvbnRhaW5pbmdCbG9ja1dpZHRoKTsKLSAg
ICBhdXRvIHVzZWRNYXJnaW5TdGFydCA9IGNvbXB1dGVkTWFyZ2luU3RhcnQ7Ci0gICAgYXV0byB1
c2VkTWFyZ2luRW5kID0gY29tcHV0ZWRNYXJnaW5FbmQ7CisgICAgYXV0byBjb21wdXRlZEhvcml6
b250YWxNYXJnaW4gPSBHZW9tZXRyeTo6Y29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luKGxheW91dFN0
YXRlLCBsYXlvdXRCb3gpOworICAgIFVzZWRIb3Jpem9udGFsTWFyZ2luIHVzZWRIb3Jpem9udGFs
TWFyZ2luOwogICAgIGF1dG8gcGFkZGluZ0xlZnQgPSBkaXNwbGF5Qm94LnBhZGRpbmdMZWZ0KCku
dmFsdWVPcigwKTsKICAgICBhdXRvIHBhZGRpbmdSaWdodCA9IGRpc3BsYXlCb3gucGFkZGluZ1Jp
Z2h0KCkudmFsdWVPcigwKTsKICAgICBhdXRvIGJvcmRlckxlZnQgPSBkaXNwbGF5Qm94LmJvcmRl
ckxlZnQoKTsKQEAgLTQxMyw4ICs0MTEsNyBAQCBIb3Jpem9udGFsR2VvbWV0cnkgRm9ybWF0dGlu
Z0NvbnRleHQ6Okdlb21ldHJ5OjpvdXRPZkZsb3dOb25SZXBsYWNlZEhvcml6b250YWxHZQogICAg
ICAgICAvLyBJZiBhbGwgdGhyZWUgb2YgJ2xlZnQnLCAnd2lkdGgnLCBhbmQgJ3JpZ2h0JyBhcmUg
J2F1dG8nOiBGaXJzdCBzZXQgYW55ICdhdXRvJyB2YWx1ZXMgZm9yICdtYXJnaW4tbGVmdCcgYW5k
ICdtYXJnaW4tcmlnaHQnIHRvIDAuCiAgICAgICAgIC8vIFRoZW4sIGlmIHRoZSAnZGlyZWN0aW9u
JyBwcm9wZXJ0eSBvZiB0aGUgZWxlbWVudCBlc3RhYmxpc2hpbmcgdGhlIHN0YXRpYy1wb3NpdGlv
biBjb250YWluaW5nIGJsb2NrIGlzICdsdHInIHNldCAnbGVmdCcgdG8gdGhlIHN0YXRpYwogICAg
ICAgICAvLyBwb3NpdGlvbiBhbmQgYXBwbHkgcnVsZSBudW1iZXIgdGhyZWUgYmVsb3c7IG90aGVy
d2lzZSwgc2V0ICdyaWdodCcgdG8gdGhlIHN0YXRpYyBwb3NpdGlvbiBhbmQgYXBwbHkgcnVsZSBu
dW1iZXIgb25lIGJlbG93LgotICAgICAgICB1c2VkTWFyZ2luU3RhcnQgPSB1c2VkTWFyZ2luU3Rh
cnQudmFsdWVPcigwKTsKLSAgICAgICAgdXNlZE1hcmdpbkVuZCA9IHVzZWRNYXJnaW5FbmQudmFs
dWVPcigwKTsKKyAgICAgICAgdXNlZEhvcml6b250YWxNYXJnaW4gPSB7IGNvbXB1dGVkSG9yaXpv
bnRhbE1hcmdpbi5zdGFydC52YWx1ZU9yKDApLCBjb21wdXRlZEhvcml6b250YWxNYXJnaW4uZW5k
LnZhbHVlT3IoMCkgfTsKIAogICAgICAgICBhdXRvIHN0YXRpY0hvcml6b250YWxQb3NpdGlvbiA9
IHN0YXRpY0hvcml6b250YWxQb3NpdGlvbkZvck91dE9mRmxvd1Bvc2l0aW9uZWQobGF5b3V0U3Rh
dGUsIGxheW91dEJveCk7CiAgICAgICAgIGlmIChpc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKQpAQCAt
NDI3LDg0ICs0MjQsODAgQEAgSG9yaXpvbnRhbEdlb21ldHJ5IEZvcm1hdHRpbmdDb250ZXh0OjpH
ZW9tZXRyeTo6b3V0T2ZGbG93Tm9uUmVwbGFjZWRIb3Jpem9udGFsR2UKICAgICAgICAgLy8gc29s
dmUgZm9yICdtYXJnaW4tcmlnaHQnICgnbWFyZ2luLWxlZnQnKS4gSWYgb25lIG9mICdtYXJnaW4t
bGVmdCcgb3IgJ21hcmdpbi1yaWdodCcgaXMgJ2F1dG8nLCBzb2x2ZSB0aGUgZXF1YXRpb24gZm9y
IHRoYXQgdmFsdWUuCiAgICAgICAgIC8vIElmIHRoZSB2YWx1ZXMgYXJlIG92ZXItY29uc3RyYWlu
ZWQsIGlnbm9yZSB0aGUgdmFsdWUgZm9yICdsZWZ0JyAoaW4gY2FzZSB0aGUgJ2RpcmVjdGlvbicg
cHJvcGVydHkgb2YgdGhlIGNvbnRhaW5pbmcgYmxvY2sgaXMgJ3J0bCcpIG9yICdyaWdodCcKICAg
ICAgICAgLy8gKGluIGNhc2UgJ2RpcmVjdGlvbicgaXMgJ2x0cicpIGFuZCBzb2x2ZSBmb3IgdGhh
dCB2YWx1ZS4KLSAgICAgICAgaWYgKCF1c2VkTWFyZ2luU3RhcnQgJiYgIXVzZWRNYXJnaW5FbmQp
IHsKKyAgICAgICAgaWYgKCFjb21wdXRlZEhvcml6b250YWxNYXJnaW4uc3RhcnQgJiYgIWNvbXB1
dGVkSG9yaXpvbnRhbE1hcmdpbi5lbmQpIHsKICAgICAgICAgICAgIGF1dG8gbWFyZ2luU3RhcnRB
bmRFbmQgPSBjb250YWluaW5nQmxvY2tXaWR0aCAtICgqbGVmdCArIGJvcmRlckxlZnQgKyBwYWRk
aW5nTGVmdCArICp3aWR0aCArIHBhZGRpbmdSaWdodCArIGJvcmRlclJpZ2h0ICsgKnJpZ2h0KTsK
ICAgICAgICAgICAgIGlmIChtYXJnaW5TdGFydEFuZEVuZCA+PSAwKQotICAgICAgICAgICAgICAg
IHVzZWRNYXJnaW5TdGFydCA9IHVzZWRNYXJnaW5FbmQgPSBtYXJnaW5TdGFydEFuZEVuZCAvIDI7
ICAKKyAgICAgICAgICAgICAgICB1c2VkSG9yaXpvbnRhbE1hcmdpbiA9IHsgbWFyZ2luU3RhcnRB
bmRFbmQgLyAyLCBtYXJnaW5TdGFydEFuZEVuZCAvIDIgfTsgIAogICAgICAgICAgICAgZWxzZSB7
CiAgICAgICAgICAgICAgICAgaWYgKGlzTGVmdFRvUmlnaHREaXJlY3Rpb24pIHsKLSAgICAgICAg
ICAgICAgICAgICAgdXNlZE1hcmdpblN0YXJ0ID0gMF9sdTsKLSAgICAgICAgICAgICAgICAgICAg
dXNlZE1hcmdpbkVuZCA9IGNvbnRhaW5pbmdCbG9ja1dpZHRoIC0gKCpsZWZ0ICsgKnVzZWRNYXJn
aW5TdGFydCArIGJvcmRlckxlZnQgKyBwYWRkaW5nTGVmdCArICp3aWR0aCArIHBhZGRpbmdSaWdo
dCArIGJvcmRlclJpZ2h0ICsgKnJpZ2h0KTsKKyAgICAgICAgICAgICAgICAgICAgdXNlZEhvcml6
b250YWxNYXJnaW4uc3RhcnQgPSAwX2x1OworICAgICAgICAgICAgICAgICAgICB1c2VkSG9yaXpv
bnRhbE1hcmdpbi5lbmQgPSBjb250YWluaW5nQmxvY2tXaWR0aCAtICgqbGVmdCArIHVzZWRIb3Jp
em9udGFsTWFyZ2luLnN0YXJ0ICsgYm9yZGVyTGVmdCArIHBhZGRpbmdMZWZ0ICsgKndpZHRoICsg
cGFkZGluZ1JpZ2h0ICsgYm9yZGVyUmlnaHQgKyAqcmlnaHQpOwogICAgICAgICAgICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIHVzZWRNYXJnaW5FbmQgPSAwX2x1OwotICAgICAg
ICAgICAgICAgICAgICB1c2VkTWFyZ2luU3RhcnQgPSBjb250YWluaW5nQmxvY2tXaWR0aCAtICgq
bGVmdCArIGJvcmRlckxlZnQgKyBwYWRkaW5nTGVmdCArICp3aWR0aCArIHBhZGRpbmdSaWdodCAr
IGJvcmRlclJpZ2h0ICsgKnVzZWRNYXJnaW5FbmQgKyAqcmlnaHQpOworICAgICAgICAgICAgICAg
ICAgICB1c2VkSG9yaXpvbnRhbE1hcmdpbi5lbmQgPSAwX2x1OworICAgICAgICAgICAgICAgICAg
ICB1c2VkSG9yaXpvbnRhbE1hcmdpbi5zdGFydCA9IGNvbnRhaW5pbmdCbG9ja1dpZHRoIC0gKCps
ZWZ0ICsgYm9yZGVyTGVmdCArIHBhZGRpbmdMZWZ0ICsgKndpZHRoICsgcGFkZGluZ1JpZ2h0ICsg
Ym9yZGVyUmlnaHQgKyB1c2VkSG9yaXpvbnRhbE1hcmdpbi5lbmQgKyAqcmlnaHQpOwogICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIGlmICghdXNlZE1hcmdp
blN0YXJ0KSB7Ci0gICAgICAgICAgICB1c2VkTWFyZ2luU3RhcnQgPSBjb250YWluaW5nQmxvY2tX
aWR0aCAtICgqbGVmdCArIGJvcmRlckxlZnQgKyBwYWRkaW5nTGVmdCArICp3aWR0aCArIHBhZGRp
bmdSaWdodCArIGJvcmRlclJpZ2h0ICsgKnVzZWRNYXJnaW5FbmQgKyAqcmlnaHQpOworICAgICAg
ICB9IGVsc2UgaWYgKCFjb21wdXRlZEhvcml6b250YWxNYXJnaW4uc3RhcnQpIHsKKyAgICAgICAg
ICAgIHVzZWRIb3Jpem9udGFsTWFyZ2luLmVuZCA9ICpjb21wdXRlZEhvcml6b250YWxNYXJnaW4u
ZW5kOworICAgICAgICAgICAgdXNlZEhvcml6b250YWxNYXJnaW4uc3RhcnQgPSBjb250YWluaW5n
QmxvY2tXaWR0aCAtICgqbGVmdCArIGJvcmRlckxlZnQgKyBwYWRkaW5nTGVmdCArICp3aWR0aCAr
IHBhZGRpbmdSaWdodCArIGJvcmRlclJpZ2h0ICsgdXNlZEhvcml6b250YWxNYXJnaW4uZW5kICsg
KnJpZ2h0KTsKICAgICAgICAgICAgIC8vIE92ZXJjb25zdHJhaW5lZD8gSWdub3JlIHJpZ2h0IChs
ZWZ0KS4KLSAgICAgICAgICAgIGlmICgqdXNlZE1hcmdpblN0YXJ0IDwgMCkgeworICAgICAgICAg
ICAgaWYgKHVzZWRIb3Jpem9udGFsTWFyZ2luLnN0YXJ0IDwgMCkgewogICAgICAgICAgICAgICAg
IGlmIChpc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKQotICAgICAgICAgICAgICAgICAgICB1c2VkTWFy
Z2luU3RhcnQgPSBjb250YWluaW5nQmxvY2tXaWR0aCAtICgqbGVmdCArIGJvcmRlckxlZnQgKyBw
YWRkaW5nTGVmdCArICp3aWR0aCArIHBhZGRpbmdSaWdodCArIGJvcmRlclJpZ2h0ICsgKnVzZWRN
YXJnaW5FbmQpOworICAgICAgICAgICAgICAgICAgICB1c2VkSG9yaXpvbnRhbE1hcmdpbi5zdGFy
dCA9IGNvbnRhaW5pbmdCbG9ja1dpZHRoIC0gKCpsZWZ0ICsgYm9yZGVyTGVmdCArIHBhZGRpbmdM
ZWZ0ICsgKndpZHRoICsgcGFkZGluZ1JpZ2h0ICsgYm9yZGVyUmlnaHQgKyB1c2VkSG9yaXpvbnRh
bE1hcmdpbi5lbmQpOwogICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAg
dXNlZE1hcmdpblN0YXJ0ID0gY29udGFpbmluZ0Jsb2NrV2lkdGggLSAoYm9yZGVyTGVmdCArIHBh
ZGRpbmdMZWZ0ICsgKndpZHRoICsgcGFkZGluZ1JpZ2h0ICsgYm9yZGVyUmlnaHQgKyAqdXNlZE1h
cmdpbkVuZCArICpyaWdodCk7CisgICAgICAgICAgICAgICAgICAgIHVzZWRIb3Jpem9udGFsTWFy
Z2luLnN0YXJ0ID0gY29udGFpbmluZ0Jsb2NrV2lkdGggLSAoYm9yZGVyTGVmdCArIHBhZGRpbmdM
ZWZ0ICsgKndpZHRoICsgcGFkZGluZ1JpZ2h0ICsgYm9yZGVyUmlnaHQgKyB1c2VkSG9yaXpvbnRh
bE1hcmdpbi5lbmQgKyAqcmlnaHQpOwogICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgaWYg
KCF1c2VkTWFyZ2luRW5kKSB7Ci0gICAgICAgICAgICB1c2VkTWFyZ2luRW5kID0gY29udGFpbmlu
Z0Jsb2NrV2lkdGggLSAoKmxlZnQgKyAqdXNlZE1hcmdpblN0YXJ0ICsgYm9yZGVyTGVmdCArIHBh
ZGRpbmdMZWZ0ICsgKndpZHRoICsgcGFkZGluZ1JpZ2h0ICsgYm9yZGVyUmlnaHQgKyAqcmlnaHQp
OworICAgICAgICB9IGVsc2UgaWYgKCFjb21wdXRlZEhvcml6b250YWxNYXJnaW4uZW5kKSB7Cisg
ICAgICAgICAgICB1c2VkSG9yaXpvbnRhbE1hcmdpbi5zdGFydCA9ICpjb21wdXRlZEhvcml6b250
YWxNYXJnaW4uc3RhcnQ7CisgICAgICAgICAgICB1c2VkSG9yaXpvbnRhbE1hcmdpbi5lbmQgPSBj
b250YWluaW5nQmxvY2tXaWR0aCAtICgqbGVmdCArIHVzZWRIb3Jpem9udGFsTWFyZ2luLnN0YXJ0
ICsgYm9yZGVyTGVmdCArIHBhZGRpbmdMZWZ0ICsgKndpZHRoICsgcGFkZGluZ1JpZ2h0ICsgYm9y
ZGVyUmlnaHQgKyAqcmlnaHQpOwogICAgICAgICAgICAgLy8gT3ZlcmNvbnN0cmFpbmVkPyBJZ25v
cmUgcmlnaHQgKGxlZnQpLgotICAgICAgICAgICAgaWYgKCp1c2VkTWFyZ2luRW5kIDwgMCkgewor
ICAgICAgICAgICAgaWYgKHVzZWRIb3Jpem9udGFsTWFyZ2luLmVuZCA8IDApIHsKICAgICAgICAg
ICAgICAgICBpZiAoaXNMZWZ0VG9SaWdodERpcmVjdGlvbikKLSAgICAgICAgICAgICAgICAgICAg
dXNlZE1hcmdpbkVuZCA9IGNvbnRhaW5pbmdCbG9ja1dpZHRoIC0gKCpsZWZ0ICsgKnVzZWRNYXJn
aW5TdGFydCArIGJvcmRlckxlZnQgKyBwYWRkaW5nTGVmdCArICp3aWR0aCArIHBhZGRpbmdSaWdo
dCArIGJvcmRlclJpZ2h0KTsKKyAgICAgICAgICAgICAgICAgICAgdXNlZEhvcml6b250YWxNYXJn
aW4uZW5kID0gY29udGFpbmluZ0Jsb2NrV2lkdGggLSAoKmxlZnQgKyB1c2VkSG9yaXpvbnRhbE1h
cmdpbi5zdGFydCArIGJvcmRlckxlZnQgKyBwYWRkaW5nTGVmdCArICp3aWR0aCArIHBhZGRpbmdS
aWdodCArIGJvcmRlclJpZ2h0KTsKICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAg
ICAgICAgIHVzZWRNYXJnaW5FbmQgPSBjb250YWluaW5nQmxvY2tXaWR0aCAtICgqdXNlZE1hcmdp
blN0YXJ0ICsgYm9yZGVyTGVmdCArIHBhZGRpbmdMZWZ0ICsgKndpZHRoICsgcGFkZGluZ1JpZ2h0
ICsgYm9yZGVyUmlnaHQgKyAqcmlnaHQpOworICAgICAgICAgICAgICAgICAgICB1c2VkSG9yaXpv
bnRhbE1hcmdpbi5lbmQgPSBjb250YWluaW5nQmxvY2tXaWR0aCAtICh1c2VkSG9yaXpvbnRhbE1h
cmdpbi5zdGFydCArIGJvcmRlckxlZnQgKyBwYWRkaW5nTGVmdCArICp3aWR0aCArIHBhZGRpbmdS
aWdodCArIGJvcmRlclJpZ2h0ICsgKnJpZ2h0KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQog
ICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIE90aGVyd2lzZSwgc2V0ICdhdXRvJyB2YWx1ZXMgZm9y
ICdtYXJnaW4tbGVmdCcgYW5kICdtYXJnaW4tcmlnaHQnIHRvIDAsIGFuZCBwaWNrIHRoZSBvbmUg
b2YgdGhlIGZvbGxvd2luZyBzaXggcnVsZXMgdGhhdCBhcHBsaWVzLgotICAgICAgICB1c2VkTWFy
Z2luU3RhcnQgPSB1c2VkTWFyZ2luU3RhcnQudmFsdWVPcigwKTsKLSAgICAgICAgdXNlZE1hcmdp
bkVuZCA9IHVzZWRNYXJnaW5FbmQudmFsdWVPcigwKTsKKyAgICAgICAgdXNlZEhvcml6b250YWxN
YXJnaW4gPSB7IGNvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbi5zdGFydC52YWx1ZU9yKDApLCBjb21w
dXRlZEhvcml6b250YWxNYXJnaW4uZW5kLnZhbHVlT3IoMCkgfTsKICAgICB9CiAKLSAgICBBU1NF
UlQodXNlZE1hcmdpblN0YXJ0KTsKLSAgICBBU1NFUlQodXNlZE1hcmdpbkVuZCk7Ci0KICAgICBp
ZiAoIWxlZnQgJiYgIXdpZHRoICYmIHJpZ2h0KSB7CiAgICAgICAgIC8vICMxCiAgICAgICAgIHdp
ZHRoID0gc2hyaW5rVG9GaXRXaWR0aChsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KTsKLSAgICAgICAg
bGVmdCA9IGNvbnRhaW5pbmdCbG9ja1dpZHRoIC0gKCp1c2VkTWFyZ2luU3RhcnQgKyBib3JkZXJM
ZWZ0ICsgcGFkZGluZ0xlZnQgKyAqd2lkdGggKyBwYWRkaW5nUmlnaHQgICsgYm9yZGVyUmlnaHQg
KyAqdXNlZE1hcmdpbkVuZCArICpyaWdodCk7CisgICAgICAgIGxlZnQgPSBjb250YWluaW5nQmxv
Y2tXaWR0aCAtICh1c2VkSG9yaXpvbnRhbE1hcmdpbi5zdGFydCArIGJvcmRlckxlZnQgKyBwYWRk
aW5nTGVmdCArICp3aWR0aCArIHBhZGRpbmdSaWdodCAgKyBib3JkZXJSaWdodCArIHVzZWRIb3Jp
em9udGFsTWFyZ2luLmVuZCArICpyaWdodCk7CiAgICAgfSBlbHNlIGlmICghbGVmdCAmJiAhcmln
aHQgJiYgd2lkdGgpIHsKICAgICAgICAgLy8gIzIKICAgICAgICAgYXV0byBzdGF0aWNIb3Jpem9u
dGFsUG9zaXRpb24gPSBzdGF0aWNIb3Jpem9udGFsUG9zaXRpb25Gb3JPdXRPZkZsb3dQb3NpdGlv
bmVkKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpOwogICAgICAgICBpZiAoaXNMZWZ0VG9SaWdodERp
cmVjdGlvbikgewogICAgICAgICAgICAgbGVmdCA9IHN0YXRpY0hvcml6b250YWxQb3NpdGlvbjsK
LSAgICAgICAgICAgIHJpZ2h0ID0gY29udGFpbmluZ0Jsb2NrV2lkdGggLSAoKmxlZnQgKyAqdXNl
ZE1hcmdpblN0YXJ0ICsgYm9yZGVyTGVmdCArIHBhZGRpbmdMZWZ0ICsgKndpZHRoICsgcGFkZGlu
Z1JpZ2h0ICsgYm9yZGVyUmlnaHQgKyAqdXNlZE1hcmdpbkVuZCk7CisgICAgICAgICAgICByaWdo
dCA9IGNvbnRhaW5pbmdCbG9ja1dpZHRoIC0gKCpsZWZ0ICsgdXNlZEhvcml6b250YWxNYXJnaW4u
c3RhcnQgKyBib3JkZXJMZWZ0ICsgcGFkZGluZ0xlZnQgKyAqd2lkdGggKyBwYWRkaW5nUmlnaHQg
KyBib3JkZXJSaWdodCArIHVzZWRIb3Jpem9udGFsTWFyZ2luLmVuZCk7CiAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICByaWdodCA9IHN0YXRpY0hvcml6b250YWxQb3NpdGlvbjsKLSAgICAg
ICAgICAgIGxlZnQgPSBjb250YWluaW5nQmxvY2tXaWR0aCAtICgqdXNlZE1hcmdpblN0YXJ0ICsg
Ym9yZGVyTGVmdCArIHBhZGRpbmdMZWZ0ICsgKndpZHRoICsgcGFkZGluZ1JpZ2h0ICsgYm9yZGVy
UmlnaHQgKyAqdXNlZE1hcmdpbkVuZCArICpyaWdodCk7CisgICAgICAgICAgICBsZWZ0ID0gY29u
dGFpbmluZ0Jsb2NrV2lkdGggLSAodXNlZEhvcml6b250YWxNYXJnaW4uc3RhcnQgKyBib3JkZXJM
ZWZ0ICsgcGFkZGluZ0xlZnQgKyAqd2lkdGggKyBwYWRkaW5nUmlnaHQgKyBib3JkZXJSaWdodCAr
IHVzZWRIb3Jpem9udGFsTWFyZ2luLmVuZCArICpyaWdodCk7CiAgICAgICAgIH0KICAgICB9IGVs
c2UgaWYgKCF3aWR0aCAmJiAhcmlnaHQgJiYgbGVmdCkgewogICAgICAgICAvLyAjMwogICAgICAg
ICB3aWR0aCA9IHNocmlua1RvRml0V2lkdGgobGF5b3V0U3RhdGUsIGxheW91dEJveCk7Ci0gICAg
ICAgIHJpZ2h0ID0gY29udGFpbmluZ0Jsb2NrV2lkdGggLSAoKmxlZnQgKyAqdXNlZE1hcmdpblN0
YXJ0ICsgYm9yZGVyTGVmdCArIHBhZGRpbmdMZWZ0ICsgKndpZHRoICsgcGFkZGluZ1JpZ2h0ICsg
Ym9yZGVyUmlnaHQgKyAqdXNlZE1hcmdpbkVuZCk7CisgICAgICAgIHJpZ2h0ID0gY29udGFpbmlu
Z0Jsb2NrV2lkdGggLSAoKmxlZnQgKyB1c2VkSG9yaXpvbnRhbE1hcmdpbi5zdGFydCArIGJvcmRl
ckxlZnQgKyBwYWRkaW5nTGVmdCArICp3aWR0aCArIHBhZGRpbmdSaWdodCArIGJvcmRlclJpZ2h0
ICsgdXNlZEhvcml6b250YWxNYXJnaW4uZW5kKTsKICAgICB9IGVsc2UgaWYgKCFsZWZ0ICYmIHdp
ZHRoICYmIHJpZ2h0KSB7CiAgICAgICAgIC8vICM0Ci0gICAgICAgIGxlZnQgPSBjb250YWluaW5n
QmxvY2tXaWR0aCAtICgqdXNlZE1hcmdpblN0YXJ0ICsgYm9yZGVyTGVmdCArIHBhZGRpbmdMZWZ0
ICsgKndpZHRoICsgcGFkZGluZ1JpZ2h0ICsgYm9yZGVyUmlnaHQgKyAqdXNlZE1hcmdpbkVuZCAr
ICpyaWdodCk7CisgICAgICAgIGxlZnQgPSBjb250YWluaW5nQmxvY2tXaWR0aCAtICh1c2VkSG9y
aXpvbnRhbE1hcmdpbi5zdGFydCArIGJvcmRlckxlZnQgKyBwYWRkaW5nTGVmdCArICp3aWR0aCAr
IHBhZGRpbmdSaWdodCArIGJvcmRlclJpZ2h0ICsgdXNlZEhvcml6b250YWxNYXJnaW4uZW5kICsg
KnJpZ2h0KTsKICAgICB9IGVsc2UgaWYgKCF3aWR0aCAmJiBsZWZ0ICYmIHJpZ2h0KSB7CiAgICAg
ICAgIC8vICM1Ci0gICAgICAgIHdpZHRoID0gY29udGFpbmluZ0Jsb2NrV2lkdGggLSAoKmxlZnQg
KyAqdXNlZE1hcmdpblN0YXJ0ICsgYm9yZGVyTGVmdCArIHBhZGRpbmdMZWZ0ICsgcGFkZGluZ1Jp
Z2h0ICArIGJvcmRlclJpZ2h0ICsgKnVzZWRNYXJnaW5FbmQgKyAqcmlnaHQpOworICAgICAgICB3
aWR0aCA9IGNvbnRhaW5pbmdCbG9ja1dpZHRoIC0gKCpsZWZ0ICsgdXNlZEhvcml6b250YWxNYXJn
aW4uc3RhcnQgKyBib3JkZXJMZWZ0ICsgcGFkZGluZ0xlZnQgKyBwYWRkaW5nUmlnaHQgICsgYm9y
ZGVyUmlnaHQgKyB1c2VkSG9yaXpvbnRhbE1hcmdpbi5lbmQgKyAqcmlnaHQpOwogICAgIH0gZWxz
ZSBpZiAoIXJpZ2h0ICYmIGxlZnQgJiYgd2lkdGgpIHsKICAgICAgICAgLy8gIzYKLSAgICAgICAg
cmlnaHQgPSBjb250YWluaW5nQmxvY2tXaWR0aCAtICgqbGVmdCArICp1c2VkTWFyZ2luU3RhcnQg
KyBib3JkZXJMZWZ0ICsgcGFkZGluZ0xlZnQgKyAqd2lkdGggKyBwYWRkaW5nUmlnaHQgKyBib3Jk
ZXJSaWdodCArICp1c2VkTWFyZ2luRW5kKTsKKyAgICAgICAgcmlnaHQgPSBjb250YWluaW5nQmxv
Y2tXaWR0aCAtICgqbGVmdCArIHVzZWRIb3Jpem9udGFsTWFyZ2luLnN0YXJ0ICsgYm9yZGVyTGVm
dCArIHBhZGRpbmdMZWZ0ICsgKndpZHRoICsgcGFkZGluZ1JpZ2h0ICsgYm9yZGVyUmlnaHQgKyB1
c2VkSG9yaXpvbnRhbE1hcmdpbi5lbmQpOwogICAgIH0KIAogICAgIEFTU0VSVChsZWZ0KTsKICAg
ICBBU1NFUlQocmlnaHQpOwogICAgIEFTU0VSVCh3aWR0aCk7Ci0gICAgQVNTRVJUKHVzZWRNYXJn
aW5TdGFydCk7Ci0gICAgQVNTRVJUKHVzZWRNYXJnaW5FbmQpOwogCi0gICAgTE9HX1dJVEhfU1RS
RUFNKEZvcm1hdHRpbmdDb250ZXh0TGF5b3V0LCBzdHJlYW0gPDwgIltQb3NpdGlvbl1bV2lkdGhd
W01hcmdpbl0gLT4gb3V0LW9mLWZsb3cgbm9uLXJlcGxhY2VkIC0+IGxlZnQoIiA8PCAqbGVmdCA8
PCAicHgpIHJpZ2h0KCIgIDw8ICpyaWdodCA8PCAicHgpIHdpZHRoKCIgPDwgKndpZHRoIDw8ICJw
eCkgbWFyZ2luKCIgPDwgKnVzZWRNYXJnaW5TdGFydCA8PCAicHgsICIgIDw8ICp1c2VkTWFyZ2lu
RW5kIDw8ICJweCkgbGF5b3V0Qm94KCIgPDwgJmxheW91dEJveCA8PCAiKSIpOwotICAgIHJldHVy
biB7ICpsZWZ0LCAqcmlnaHQsIHsgKndpZHRoLCB7ICp1c2VkTWFyZ2luU3RhcnQsICp1c2VkTWFy
Z2luRW5kIH0sIHsgY29tcHV0ZWRNYXJnaW5TdGFydC52YWx1ZU9yKDApLCBjb21wdXRlZE1hcmdp
bkVuZC52YWx1ZU9yKDApIH0gfSB9OworICAgIExPR19XSVRIX1NUUkVBTShGb3JtYXR0aW5nQ29u
dGV4dExheW91dCwgc3RyZWFtIDw8ICJbUG9zaXRpb25dW1dpZHRoXVtNYXJnaW5dIC0+IG91dC1v
Zi1mbG93IG5vbi1yZXBsYWNlZCAtPiBsZWZ0KCIgPDwgKmxlZnQgPDwgInB4KSByaWdodCgiICA8
PCAqcmlnaHQgPDwgInB4KSB3aWR0aCgiIDw8ICp3aWR0aCA8PCAicHgpIG1hcmdpbigiIDw8IHVz
ZWRIb3Jpem9udGFsTWFyZ2luLnN0YXJ0IDw8ICJweCwgIiAgPDwgdXNlZEhvcml6b250YWxNYXJn
aW4uZW5kIDw8ICJweCkgbGF5b3V0Qm94KCIgPDwgJmxheW91dEJveCA8PCAiKSIpOworICAgIHJl
dHVybiB7ICpsZWZ0LCAqcmlnaHQsIHsgKndpZHRoLCB1c2VkSG9yaXpvbnRhbE1hcmdpbiwgY29t
cHV0ZWRIb3Jpem9udGFsTWFyZ2luIH0gfTsKIH0KIAogVmVydGljYWxHZW9tZXRyeSBGb3JtYXR0
aW5nQ29udGV4dDo6R2VvbWV0cnk6Om91dE9mRmxvd1JlcGxhY2VkVmVydGljYWxHZW9tZXRyeShj
b25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IEJveCYgbGF5b3V0Qm94LCBPcHRp
b25hbDxMYXlvdXRVbml0PiB1c2VkSGVpZ2h0KQpAQCAtNjA0LDEwICs1OTcsOCBAQCBIb3Jpem9u
dGFsR2VvbWV0cnkgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpvdXRPZkZsb3dSZXBsYWNl
ZEhvcml6b250YWxHZW9tZQogCiAgICAgYXV0byBsZWZ0ID0gY29tcHV0ZWRWYWx1ZUlmTm90QXV0
byhzdHlsZS5sb2dpY2FsTGVmdCgpLCBjb250YWluaW5nQmxvY2tXaWR0aCk7CiAgICAgYXV0byBy
aWdodCA9IGNvbXB1dGVkVmFsdWVJZk5vdEF1dG8oc3R5bGUubG9naWNhbFJpZ2h0KCksIGNvbnRh
aW5pbmdCbG9ja1dpZHRoKTsKLSAgICBhdXRvIGNvbXB1dGVkTWFyZ2luU3RhcnQgPSBjb21wdXRl
ZFZhbHVlSWZOb3RBdXRvKHN0eWxlLm1hcmdpblN0YXJ0KCksIGNvbnRhaW5pbmdCbG9ja1dpZHRo
KTsKLSAgICBhdXRvIGNvbXB1dGVkTWFyZ2luRW5kID0gY29tcHV0ZWRWYWx1ZUlmTm90QXV0byhz
dHlsZS5tYXJnaW5FbmQoKSwgY29udGFpbmluZ0Jsb2NrV2lkdGgpOwotICAgIGF1dG8gdXNlZE1h
cmdpblN0YXJ0ID0gY29tcHV0ZWRNYXJnaW5TdGFydDsKLSAgICBhdXRvIHVzZWRNYXJnaW5FbmQg
PSBjb21wdXRlZE1hcmdpbkVuZDsKKyAgICBhdXRvIGNvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbiA9
IEdlb21ldHJ5Ojpjb21wdXRlZEhvcml6b250YWxNYXJnaW4obGF5b3V0U3RhdGUsIGxheW91dEJv
eCk7CisgICAgVXNlZEhvcml6b250YWxNYXJnaW4gdXNlZEhvcml6b250YWxNYXJnaW47CiAgICAg
YXV0byB3aWR0aCA9IGlubGluZVJlcGxhY2VkV2lkdGhBbmRNYXJnaW4obGF5b3V0U3RhdGUsIGxh
eW91dEJveCwgdXNlZFdpZHRoKS53aWR0aDsKICAgICBhdXRvIHBhZGRpbmdMZWZ0ID0gZGlzcGxh
eUJveC5wYWRkaW5nTGVmdCgpLnZhbHVlT3IoMCk7CiAgICAgYXV0byBwYWRkaW5nUmlnaHQgPSBk
aXNwbGF5Qm94LnBhZGRpbmdSaWdodCgpLnZhbHVlT3IoMCk7CkBAIC02MjUsNTUgKzYxNiw1MiBA
QCBIb3Jpem9udGFsR2VvbWV0cnkgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpvdXRPZkZs
b3dSZXBsYWNlZEhvcml6b250YWxHZW9tZQogCiAgICAgaWYgKCFsZWZ0IHx8ICFyaWdodCkgewog
ICAgICAgICAvLyAjMgotICAgICAgICB1c2VkTWFyZ2luU3RhcnQgPSB1c2VkTWFyZ2luU3RhcnQu
dmFsdWVPcigwKTsgCi0gICAgICAgIHVzZWRNYXJnaW5FbmQgPSB1c2VkTWFyZ2luRW5kLnZhbHVl
T3IoMCk7IAorICAgICAgICB1c2VkSG9yaXpvbnRhbE1hcmdpbiA9IHsgY29tcHV0ZWRIb3Jpem9u
dGFsTWFyZ2luLnN0YXJ0LnZhbHVlT3IoMCksIGNvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbi5lbmQu
dmFsdWVPcigwKSB9OyAKICAgICB9CiAKLSAgICBpZiAoIXVzZWRNYXJnaW5TdGFydCAmJiAhdXNl
ZE1hcmdpbkVuZCkgeworICAgIGlmICghY29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luLnN0YXJ0ICYm
ICFjb21wdXRlZEhvcml6b250YWxNYXJnaW4uZW5kKSB7CiAgICAgICAgIC8vICMzCiAgICAgICAg
IGF1dG8gbWFyZ2luU3RhcnRBbmRFbmQgPSBjb250YWluaW5nQmxvY2tXaWR0aCAtICgqbGVmdCAr
IGJvcmRlckxlZnQgKyBwYWRkaW5nTGVmdCArIHdpZHRoICsgcGFkZGluZ1JpZ2h0ICsgYm9yZGVy
UmlnaHQgKyAqcmlnaHQpOwogICAgICAgICBpZiAobWFyZ2luU3RhcnRBbmRFbmQgPj0gMCkKLSAg
ICAgICAgICAgIHVzZWRNYXJnaW5TdGFydCA9IHVzZWRNYXJnaW5FbmQgPSBtYXJnaW5TdGFydEFu
ZEVuZCAvIDI7CisgICAgICAgICAgICB1c2VkSG9yaXpvbnRhbE1hcmdpbiA9IHsgbWFyZ2luU3Rh
cnRBbmRFbmQgLyAyLCBtYXJnaW5TdGFydEFuZEVuZCAvIDIgfTsKICAgICAgICAgZWxzZSB7CiAg
ICAgICAgICAgICBpZiAoaXNMZWZ0VG9SaWdodERpcmVjdGlvbikgewotICAgICAgICAgICAgICAg
IHVzZWRNYXJnaW5TdGFydCA9IDBfbHU7Ci0gICAgICAgICAgICAgICAgdXNlZE1hcmdpbkVuZCA9
IGNvbnRhaW5pbmdCbG9ja1dpZHRoIC0gKCpsZWZ0ICsgKnVzZWRNYXJnaW5TdGFydCArIGJvcmRl
ckxlZnQgKyBwYWRkaW5nTGVmdCArIHdpZHRoICsgcGFkZGluZ1JpZ2h0ICsgYm9yZGVyUmlnaHQg
KyAqcmlnaHQpOworICAgICAgICAgICAgICAgIHVzZWRIb3Jpem9udGFsTWFyZ2luLnN0YXJ0ID0g
MF9sdTsKKyAgICAgICAgICAgICAgICB1c2VkSG9yaXpvbnRhbE1hcmdpbi5lbmQgPSBjb250YWlu
aW5nQmxvY2tXaWR0aCAtICgqbGVmdCArIHVzZWRIb3Jpem9udGFsTWFyZ2luLnN0YXJ0ICsgYm9y
ZGVyTGVmdCArIHBhZGRpbmdMZWZ0ICsgd2lkdGggKyBwYWRkaW5nUmlnaHQgKyBib3JkZXJSaWdo
dCArICpyaWdodCk7CiAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHVzZWRN
YXJnaW5FbmQgPSAwX2x1OwotICAgICAgICAgICAgICAgIHVzZWRNYXJnaW5TdGFydCA9IGNvbnRh
aW5pbmdCbG9ja1dpZHRoIC0gKCpsZWZ0ICsgYm9yZGVyTGVmdCArIHBhZGRpbmdMZWZ0ICsgd2lk
dGggKyBwYWRkaW5nUmlnaHQgKyBib3JkZXJSaWdodCArICp1c2VkTWFyZ2luRW5kICsgKnJpZ2h0
KTsKKyAgICAgICAgICAgICAgICB1c2VkSG9yaXpvbnRhbE1hcmdpbi5lbmQgPSAwX2x1OworICAg
ICAgICAgICAgICAgIHVzZWRIb3Jpem9udGFsTWFyZ2luLnN0YXJ0ID0gY29udGFpbmluZ0Jsb2Nr
V2lkdGggLSAoKmxlZnQgKyBib3JkZXJMZWZ0ICsgcGFkZGluZ0xlZnQgKyB3aWR0aCArIHBhZGRp
bmdSaWdodCArIGJvcmRlclJpZ2h0ICsgdXNlZEhvcml6b250YWxNYXJnaW4uZW5kICsgKnJpZ2h0
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIAogICAgIC8vICM0CiAgICAgaWYg
KCFsZWZ0KQotICAgICAgICBsZWZ0ID0gY29udGFpbmluZ0Jsb2NrV2lkdGggLSAoKnVzZWRNYXJn
aW5TdGFydCArIGJvcmRlckxlZnQgKyBwYWRkaW5nTGVmdCArIHdpZHRoICsgcGFkZGluZ1JpZ2h0
ICsgYm9yZGVyUmlnaHQgKyAqdXNlZE1hcmdpbkVuZCArICpyaWdodCk7CisgICAgICAgIGxlZnQg
PSBjb250YWluaW5nQmxvY2tXaWR0aCAtICh1c2VkSG9yaXpvbnRhbE1hcmdpbi5zdGFydCArIGJv
cmRlckxlZnQgKyBwYWRkaW5nTGVmdCArIHdpZHRoICsgcGFkZGluZ1JpZ2h0ICsgYm9yZGVyUmln
aHQgKyB1c2VkSG9yaXpvbnRhbE1hcmdpbi5lbmQgKyAqcmlnaHQpOwogCiAgICAgaWYgKCFyaWdo
dCkKLSAgICAgICAgcmlnaHQgPSBjb250YWluaW5nQmxvY2tXaWR0aCAtICgqbGVmdCArICp1c2Vk
TWFyZ2luU3RhcnQgKyBib3JkZXJMZWZ0ICsgcGFkZGluZ0xlZnQgKyB3aWR0aCArIHBhZGRpbmdS
aWdodCArIGJvcmRlclJpZ2h0ICsgKnVzZWRNYXJnaW5FbmQpOworICAgICAgICByaWdodCA9IGNv
bnRhaW5pbmdCbG9ja1dpZHRoIC0gKCpsZWZ0ICsgdXNlZEhvcml6b250YWxNYXJnaW4uc3RhcnQg
KyBib3JkZXJMZWZ0ICsgcGFkZGluZ0xlZnQgKyB3aWR0aCArIHBhZGRpbmdSaWdodCArIGJvcmRl
clJpZ2h0ICsgdXNlZEhvcml6b250YWxNYXJnaW4uZW5kKTsKIAotICAgIGlmICghdXNlZE1hcmdp
blN0YXJ0KQotICAgICAgICB1c2VkTWFyZ2luU3RhcnQgPSBjb250YWluaW5nQmxvY2tXaWR0aCAt
ICgqbGVmdCArIGJvcmRlckxlZnQgKyBwYWRkaW5nTGVmdCArIHdpZHRoICsgcGFkZGluZ1JpZ2h0
ICsgYm9yZGVyUmlnaHQgKyAqdXNlZE1hcmdpbkVuZCArICpyaWdodCk7CisgICAgaWYgKCFjb21w
dXRlZEhvcml6b250YWxNYXJnaW4uc3RhcnQpCisgICAgICAgIHVzZWRIb3Jpem9udGFsTWFyZ2lu
LnN0YXJ0ID0gY29udGFpbmluZ0Jsb2NrV2lkdGggLSAoKmxlZnQgKyBib3JkZXJMZWZ0ICsgcGFk
ZGluZ0xlZnQgKyB3aWR0aCArIHBhZGRpbmdSaWdodCArIGJvcmRlclJpZ2h0ICsgdXNlZEhvcml6
b250YWxNYXJnaW4uZW5kICsgKnJpZ2h0KTsKIAotICAgIGlmICghdXNlZE1hcmdpbkVuZCkKLSAg
ICAgICAgdXNlZE1hcmdpbkVuZCA9IGNvbnRhaW5pbmdCbG9ja1dpZHRoIC0gKCpsZWZ0ICsgKnVz
ZWRNYXJnaW5TdGFydCArIGJvcmRlckxlZnQgKyBwYWRkaW5nTGVmdCArIHdpZHRoICsgcGFkZGlu
Z1JpZ2h0ICsgYm9yZGVyUmlnaHQgKyAqcmlnaHQpOworICAgIGlmICghY29tcHV0ZWRIb3Jpem9u
dGFsTWFyZ2luLmVuZCkKKyAgICAgICAgdXNlZEhvcml6b250YWxNYXJnaW4uZW5kID0gY29udGFp
bmluZ0Jsb2NrV2lkdGggLSAoKmxlZnQgKyB1c2VkSG9yaXpvbnRhbE1hcmdpbi5zdGFydCArIGJv
cmRlckxlZnQgKyBwYWRkaW5nTGVmdCArIHdpZHRoICsgcGFkZGluZ1JpZ2h0ICsgYm9yZGVyUmln
aHQgKyAqcmlnaHQpOwogCi0gICAgYXV0byBib3hXaWR0aCA9ICgqbGVmdCArICp1c2VkTWFyZ2lu
U3RhcnQgKyBib3JkZXJMZWZ0ICsgcGFkZGluZ0xlZnQgKyB3aWR0aCArIHBhZGRpbmdSaWdodCAr
IGJvcmRlclJpZ2h0ICsgKnVzZWRNYXJnaW5FbmQgKyAqcmlnaHQpOworICAgIGF1dG8gYm94V2lk
dGggPSAoKmxlZnQgKyB1c2VkSG9yaXpvbnRhbE1hcmdpbi5zdGFydCArIGJvcmRlckxlZnQgKyBw
YWRkaW5nTGVmdCArIHdpZHRoICsgcGFkZGluZ1JpZ2h0ICsgYm9yZGVyUmlnaHQgKyB1c2VkSG9y
aXpvbnRhbE1hcmdpbi5lbmQgKyAqcmlnaHQpOwogICAgIGlmIChib3hXaWR0aCA+IGNvbnRhaW5p
bmdCbG9ja1dpZHRoKSB7CiAgICAgICAgIC8vICM1IE92ZXItY29uc3RyYWluZWQ/CiAgICAgICAg
IGlmIChpc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKQotICAgICAgICAgICAgcmlnaHQgPSBjb250YWlu
aW5nQmxvY2tXaWR0aCAtICgqbGVmdCArICp1c2VkTWFyZ2luU3RhcnQgKyBib3JkZXJMZWZ0ICsg
cGFkZGluZ0xlZnQgKyB3aWR0aCArIHBhZGRpbmdSaWdodCArIGJvcmRlclJpZ2h0ICsgKnVzZWRN
YXJnaW5FbmQpOworICAgICAgICAgICAgcmlnaHQgPSBjb250YWluaW5nQmxvY2tXaWR0aCAtICgq
bGVmdCArIHVzZWRIb3Jpem9udGFsTWFyZ2luLnN0YXJ0ICsgYm9yZGVyTGVmdCArIHBhZGRpbmdM
ZWZ0ICsgd2lkdGggKyBwYWRkaW5nUmlnaHQgKyBib3JkZXJSaWdodCArIHVzZWRIb3Jpem9udGFs
TWFyZ2luLmVuZCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGxlZnQgPSBjb250YWluaW5n
QmxvY2tXaWR0aCAtICgqdXNlZE1hcmdpblN0YXJ0ICsgYm9yZGVyTGVmdCArIHBhZGRpbmdMZWZ0
ICsgd2lkdGggKyBwYWRkaW5nUmlnaHQgKyBib3JkZXJSaWdodCArICp1c2VkTWFyZ2luRW5kICsg
KnJpZ2h0KTsKKyAgICAgICAgICAgIGxlZnQgPSBjb250YWluaW5nQmxvY2tXaWR0aCAtICh1c2Vk
SG9yaXpvbnRhbE1hcmdpbi5zdGFydCArIGJvcmRlckxlZnQgKyBwYWRkaW5nTGVmdCArIHdpZHRo
ICsgcGFkZGluZ1JpZ2h0ICsgYm9yZGVyUmlnaHQgKyB1c2VkSG9yaXpvbnRhbE1hcmdpbi5lbmQg
KyAqcmlnaHQpOwogICAgIH0KIAogICAgIEFTU0VSVChsZWZ0KTsKICAgICBBU1NFUlQocmlnaHQp
OwotICAgIEFTU0VSVCh1c2VkTWFyZ2luU3RhcnQpOwotICAgIEFTU0VSVCh1c2VkTWFyZ2luRW5k
KTsKIAotICAgIExPR19XSVRIX1NUUkVBTShGb3JtYXR0aW5nQ29udGV4dExheW91dCwgc3RyZWFt
IDw8ICJbUG9zaXRpb25dW1dpZHRoXVtNYXJnaW5dIC0+IG91dC1vZi1mbG93IHJlcGxhY2VkIC0+
IGxlZnQoIiA8PCAqbGVmdCA8PCAicHgpIHJpZ2h0KCIgIDw8ICpyaWdodCA8PCAicHgpIHdpZHRo
KCIgPDwgd2lkdGggPDwgInB4KSBtYXJnaW4oIiA8PCAqdXNlZE1hcmdpblN0YXJ0IDw8ICJweCwg
IiAgPDwgKnVzZWRNYXJnaW5FbmQgPDwgInB4KSBsYXlvdXRCb3goIiA8PCAmbGF5b3V0Qm94IDw8
ICIpIik7Ci0gICAgcmV0dXJuIHsgKmxlZnQsICpyaWdodCwgeyB3aWR0aCwgeyAqdXNlZE1hcmdp
blN0YXJ0LCAqdXNlZE1hcmdpbkVuZCB9LCB7IGNvbXB1dGVkTWFyZ2luU3RhcnQudmFsdWVPcigw
KSwgY29tcHV0ZWRNYXJnaW5FbmQudmFsdWVPcigwKSB9IH0gfTsKKyAgICBMT0dfV0lUSF9TVFJF
QU0oRm9ybWF0dGluZ0NvbnRleHRMYXlvdXQsIHN0cmVhbSA8PCAiW1Bvc2l0aW9uXVtXaWR0aF1b
TWFyZ2luXSAtPiBvdXQtb2YtZmxvdyByZXBsYWNlZCAtPiBsZWZ0KCIgPDwgKmxlZnQgPDwgInB4
KSByaWdodCgiICA8PCAqcmlnaHQgPDwgInB4KSB3aWR0aCgiIDw8IHdpZHRoIDw8ICJweCkgbWFy
Z2luKCIgPDwgdXNlZEhvcml6b250YWxNYXJnaW4uc3RhcnQgPDwgInB4LCAiICA8PCB1c2VkSG9y
aXpvbnRhbE1hcmdpbi5lbmQgPDwgInB4KSBsYXlvdXRCb3goIiA8PCAmbGF5b3V0Qm94IDw8ICIp
Iik7CisgICAgcmV0dXJuIHsgKmxlZnQsICpyaWdodCwgeyB3aWR0aCwgdXNlZEhvcml6b250YWxN
YXJnaW4sIGNvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbiB9IH07CiB9CiAKIEhlaWdodEFuZE1hcmdp
biBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmNvbXBsaWNhdGVkQ2FzZXMoY29uc3QgTGF5
b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjb25zdCBCb3gmIGxheW91dEJveCwgT3B0aW9uYWw8TGF5
b3V0VW5pdD4gdXNlZEhlaWdodCkKQEAgLTcyOSwxNCArNzE3LDE0IEBAIFdpZHRoQW5kTWFyZ2lu
IEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6ZmxvYXRpbmdOb25SZXBsYWNlZFdpZHRoQW5k
TWFyZ2luKExhCiAgICAgYXV0byBjb250YWluaW5nQmxvY2tXaWR0aCA9IGxheW91dFN0YXRlLmRp
c3BsYXlCb3hGb3JMYXlvdXRCb3goY29udGFpbmluZ0Jsb2NrKS5jb250ZW50Qm94V2lkdGgoKTsK
IAogICAgIC8vICMxCi0gICAgYXV0byBtYXJnaW4gPSBjb21wdXRlZE5vbkNvbGxhcHNlZEhvcml6
b250YWxNYXJnaW5WYWx1ZShsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KTsKKyAgICBhdXRvIGNvbXB1
dGVkSG9yaXpvbnRhbE1hcmdpbiA9IEdlb21ldHJ5Ojpjb21wdXRlZEhvcml6b250YWxNYXJnaW4o
bGF5b3V0U3RhdGUsIGxheW91dEJveCk7CiAgICAgLy8gIzIKICAgICBhdXRvIHdpZHRoID0gY29t
cHV0ZWRWYWx1ZUlmTm90QXV0byh1c2VkV2lkdGggPyBMZW5ndGggeyB1c2VkV2lkdGgudmFsdWUo
KSwgRml4ZWQgfSA6IGxheW91dEJveC5zdHlsZSgpLmxvZ2ljYWxXaWR0aCgpLCBjb250YWluaW5n
QmxvY2tXaWR0aCk7CiAgICAgaWYgKCF3aWR0aCkKICAgICAgICAgd2lkdGggPSBzaHJpbmtUb0Zp
dFdpZHRoKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpOwogCi0gICAgTE9HX1dJVEhfU1RSRUFNKEZv
cm1hdHRpbmdDb250ZXh0TGF5b3V0LCBzdHJlYW0gPDwgIltXaWR0aF1bTWFyZ2luXSAtPiBmbG9h
dGluZyBub24tcmVwbGFjZWQgLT4gd2lkdGgoIiA8PCAqd2lkdGggPDwgInB4KSBtYXJnaW4oIiA8
PCBtYXJnaW4uc3RhcnQgPDwgInB4LCAiIDw8IG1hcmdpbi5lbmQgPDwgInB4KSAtPiBsYXlvdXRC
b3goIiA8PCAmbGF5b3V0Qm94IDw8ICIpIik7Ci0gICAgcmV0dXJuIFdpZHRoQW5kTWFyZ2luIHsg
KndpZHRoLCBtYXJnaW4sIG1hcmdpbiB9OworICAgIExPR19XSVRIX1NUUkVBTShGb3JtYXR0aW5n
Q29udGV4dExheW91dCwgc3RyZWFtIDw8ICJbV2lkdGhdW01hcmdpbl0gLT4gZmxvYXRpbmcgbm9u
LXJlcGxhY2VkIC0+IHdpZHRoKCIgPDwgKndpZHRoIDw8ICJweCkgbWFyZ2luKCIgPDwgY29tcHV0
ZWRIb3Jpem9udGFsTWFyZ2luLnN0YXJ0LnZhbHVlT3IoMF9sdSkgPDwgInB4LCAiIDw8IGNvbXB1
dGVkSG9yaXpvbnRhbE1hcmdpbi5lbmQudmFsdWVPcigwX2x1KSA8PCAicHgpIC0+IGxheW91dEJv
eCgiIDw8ICZsYXlvdXRCb3ggPDwgIikiKTsKKyAgICByZXR1cm4gV2lkdGhBbmRNYXJnaW4geyAq
d2lkdGgsIHsgY29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luLnN0YXJ0LnZhbHVlT3IoMF9sdSksIGNv
bXB1dGVkSG9yaXpvbnRhbE1hcmdpbi5lbmQudmFsdWVPcigwX2x1KSB9LCBjb21wdXRlZEhvcml6
b250YWxNYXJnaW4gfTsKIH0KIAogSGVpZ2h0QW5kTWFyZ2luIEZvcm1hdHRpbmdDb250ZXh0OjpH
ZW9tZXRyeTo6ZmxvYXRpbmdSZXBsYWNlZEhlaWdodEFuZE1hcmdpbihjb25zdCBMYXlvdXRTdGF0
ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IEJveCYgbGF5b3V0Qm94LCBPcHRpb25hbDxMYXlvdXRVbml0
PiB1c2VkSGVpZ2h0KQpAQCAtNzU3LDEwICs3NDUsMTAgQEAgV2lkdGhBbmRNYXJnaW4gRm9ybWF0
dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpmbG9hdGluZ1JlcGxhY2VkV2lkdGhBbmRNYXJnaW4oY29u
c3QKICAgICAvLwogICAgIC8vIDEuIElmICdtYXJnaW4tbGVmdCcgb3IgJ21hcmdpbi1yaWdodCcg
YXJlIGNvbXB1dGVkIGFzICdhdXRvJywgdGhlaXIgdXNlZCB2YWx1ZSBpcyAnMCcuCiAgICAgLy8g
Mi4gVGhlIHVzZWQgdmFsdWUgb2YgJ3dpZHRoJyBpcyBkZXRlcm1pbmVkIGFzIGZvciBpbmxpbmUg
cmVwbGFjZWQgZWxlbWVudHMuCi0gICAgYXV0byBtYXJnaW4gPSBjb21wdXRlZE5vbkNvbGxhcHNl
ZEhvcml6b250YWxNYXJnaW5WYWx1ZShsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KTsKKyAgICBhdXRv
IGNvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbiA9IEdlb21ldHJ5Ojpjb21wdXRlZEhvcml6b250YWxN
YXJnaW4obGF5b3V0U3RhdGUsIGxheW91dEJveCk7CiAKICAgICBMT0dfV0lUSF9TVFJFQU0oRm9y
bWF0dGluZ0NvbnRleHRMYXlvdXQsIHN0cmVhbSA8PCAiW0hlaWdodF1bTWFyZ2luXSAtPiBmbG9h
dGluZyByZXBsYWNlZCAtPiByZWRpcmVjdGVkIHRvIGlubGluZSByZXBsYWNlZCIpOwotICAgIHJl
dHVybiBpbmxpbmVSZXBsYWNlZFdpZHRoQW5kTWFyZ2luKGxheW91dFN0YXRlLCBsYXlvdXRCb3gs
IHVzZWRXaWR0aCwgbWFyZ2luLnN0YXJ0LCBtYXJnaW4uZW5kKTsKKyAgICByZXR1cm4gaW5saW5l
UmVwbGFjZWRXaWR0aEFuZE1hcmdpbihsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94LCB1c2VkV2lkdGgs
IGNvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbi5zdGFydCwgY29tcHV0ZWRIb3Jpem9udGFsTWFyZ2lu
LmVuZCk7CiB9CiAKIFZlcnRpY2FsR2VvbWV0cnkgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5
OjpvdXRPZkZsb3dWZXJ0aWNhbEdlb21ldHJ5KGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0
ZSwgY29uc3QgQm94JiBsYXlvdXRCb3gsIE9wdGlvbmFsPExheW91dFVuaXQ+IHVzZWRIZWlnaHQp
CkBAIC04NzEsMTkgKzg1OSwxNCBAQCBXaWR0aEFuZE1hcmdpbiBGb3JtYXR0aW5nQ29udGV4dDo6
R2VvbWV0cnk6OmlubGluZVJlcGxhY2VkV2lkdGhBbmRNYXJnaW4oY29uc3QgTAogICAgIGF1dG8m
IHN0eWxlID0gbGF5b3V0Qm94LnN0eWxlKCk7CiAgICAgYXV0byYgY29udGFpbmluZ0Jsb2NrRGlz
cGxheUJveCA9IGxheW91dFN0YXRlLmRpc3BsYXlCb3hGb3JMYXlvdXRCb3goKmxheW91dEJveC5j
b250YWluaW5nQmxvY2soKSk7CiAgICAgYXV0byBjb250YWluaW5nQmxvY2tXaWR0aCA9IGNvbnRh
aW5pbmdCbG9ja0Rpc3BsYXlCb3gud2lkdGgoKTsKKyAgICBhdXRvIGNvbXB1dGVkSG9yaXpvbnRh
bE1hcmdpbiA9IEdlb21ldHJ5Ojpjb21wdXRlZEhvcml6b250YWxNYXJnaW4obGF5b3V0U3RhdGUs
IGxheW91dEJveCk7CiAKICAgICBhdXRvIHVzZWRNYXJnaW5TdGFydCA9IFsmXSB7Ci0gICAgICAg
IGlmIChwcmVjb21wdXRlZE1hcmdpblN0YXJ0KQotICAgICAgICAgICAgcmV0dXJuIHByZWNvbXB1
dGVkTWFyZ2luU3RhcnQudmFsdWUoKTsKLSAgICAgICAgYXV0byBtYXJnaW5TdGFydCA9IGNvbXB1
dGVkVmFsdWVJZk5vdEF1dG8oc3R5bGUubWFyZ2luU3RhcnQoKSwgY29udGFpbmluZ0Jsb2NrV2lk
dGgpOwotICAgICAgICByZXR1cm4gbWFyZ2luU3RhcnQudmFsdWVPcigwX2x1KTsKKyAgICAgICAg
cmV0dXJuIHByZWNvbXB1dGVkTWFyZ2luU3RhcnQudmFsdWVPcihjb21wdXRlZEhvcml6b250YWxN
YXJnaW4uc3RhcnQudmFsdWVPcigwX2x1KSk7CiAgICAgfTsKIAogICAgIGF1dG8gdXNlZE1hcmdp
bkVuZCA9IFsmXSB7Ci0gICAgICAgIGlmIChwcmVjb21wdXRlZE1hcmdpbkVuZCkKLSAgICAgICAg
ICAgIHJldHVybiBwcmVjb21wdXRlZE1hcmdpbkVuZC52YWx1ZSgpOwotICAgICAgICBhdXRvIG1h
cmdpbkVuZCA9IGNvbXB1dGVkVmFsdWVJZk5vdEF1dG8oc3R5bGUubWFyZ2luRW5kKCksIGNvbnRh
aW5pbmdCbG9ja1dpZHRoKTsKLSAgICAgICAgcmV0dXJuIG1hcmdpbkVuZC52YWx1ZU9yKDBfbHUp
OworICAgICAgICByZXR1cm4gcHJlY29tcHV0ZWRNYXJnaW5FbmQudmFsdWVPcihjb21wdXRlZEhv
cml6b250YWxNYXJnaW4uZW5kLnZhbHVlT3IoMF9sdSkpOwogICAgIH07CiAKICAgICBhdXRvIHJl
cGxhY2VkID0gbGF5b3V0Qm94LnJlcGxhY2VkKCk7CkBAIC05MTUsOSArODk4LDcgQEAgV2lkdGhB
bmRNYXJnaW4gRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbmxpbmVSZXBsYWNlZFdpZHRo
QW5kTWFyZ2luKGNvbnN0IEwKICAgICBBU1NFUlQod2lkdGgpOwogCiAgICAgTE9HX1dJVEhfU1RS
RUFNKEZvcm1hdHRpbmdDb250ZXh0TGF5b3V0LCBzdHJlYW0gPDwgIltXaWR0aF1bTWFyZ2luXSAt
PiBpbmZsb3cgcmVwbGFjZWQgLT4gd2lkdGgoIiA8PCAqd2lkdGggPDwgInB4KSBtYXJnaW4oIiA8
PCB1c2VkTWFyZ2luU3RhcnQoKSA8PCAicHgsICIgPDwgdXNlZE1hcmdpbkVuZCgpIDw8ICJweCkg
LT4gbGF5b3V0Qm94KCIgPDwgJmxheW91dEJveCA8PCAiKSIpOwotICAgIGF1dG8gY29tcHV0ZWRN
YXJnaW5TdGFydCA9IGNvbXB1dGVkVmFsdWVJZk5vdEF1dG8oc3R5bGUubWFyZ2luU3RhcnQoKSwg
Y29udGFpbmluZ0Jsb2NrV2lkdGgpOwotICAgIGF1dG8gY29tcHV0ZWRNYXJnaW5FbmQgPSBjb21w
dXRlZFZhbHVlSWZOb3RBdXRvKHN0eWxlLm1hcmdpbkVuZCgpLCBjb250YWluaW5nQmxvY2tXaWR0
aCk7Ci0gICAgcmV0dXJuIHsgKndpZHRoLCB7IHVzZWRNYXJnaW5TdGFydCgpLCB1c2VkTWFyZ2lu
RW5kKCkgfSwgeyBjb21wdXRlZE1hcmdpblN0YXJ0LnZhbHVlT3IoMCksIGNvbXB1dGVkTWFyZ2lu
RW5kLnZhbHVlT3IoMCkgfSB9OworICAgIHJldHVybiB7ICp3aWR0aCwgeyB1c2VkTWFyZ2luU3Rh
cnQoKSwgdXNlZE1hcmdpbkVuZCgpIH0sIGNvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbiB9OwogfQog
CiBMYXlvdXRTaXplIEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5GbG93UG9zaXRpb25l
ZFBvc2l0aW9uT2Zmc2V0KGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgQm94
JiBsYXlvdXRCb3gpCkBAIC0xMDIwLDE2ICsxMDAxLDExIEBAIE9wdGlvbmFsPEVkZ2VzPiBGb3Jt
YXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmNvbXB1dGVkUGFkZGluZyhjb25zdCBMYXlvdXRTdGF0
ZSYKICAgICB9OwogfQogCi1Ib3Jpem9udGFsTWFyZ2luIEZvcm1hdHRpbmdDb250ZXh0OjpHZW9t
ZXRyeTo6Y29tcHV0ZWROb25Db2xsYXBzZWRIb3Jpem9udGFsTWFyZ2luVmFsdWUoY29uc3QgTGF5
b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjb25zdCBCb3gmIGxheW91dEJveCkKK0NvbXB1dGVkSG9y
aXpvbnRhbE1hcmdpbiBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmNvbXB1dGVkSG9yaXpv
bnRhbE1hcmdpbihjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IEJveCYgbGF5
b3V0Qm94KQogewogICAgIGF1dG8mIHN0eWxlID0gbGF5b3V0Qm94LnN0eWxlKCk7CiAgICAgYXV0
byBjb250YWluaW5nQmxvY2tXaWR0aCA9IGxheW91dFN0YXRlLmRpc3BsYXlCb3hGb3JMYXlvdXRC
b3goKmxheW91dEJveC5jb250YWluaW5nQmxvY2soKSkuY29udGVudEJveFdpZHRoKCk7Ci0KLSAg
ICBhdXRvIG1hcmdpblN0YXJ0ID0gY29tcHV0ZWRWYWx1ZUlmTm90QXV0byhzdHlsZS5tYXJnaW5T
dGFydCgpLCBjb250YWluaW5nQmxvY2tXaWR0aCkudmFsdWVPcigwX2x1KTsKLSAgICBhdXRvIG1h
cmdpbkVuZCA9IGNvbXB1dGVkVmFsdWVJZk5vdEF1dG8oc3R5bGUubWFyZ2luRW5kKCksIGNvbnRh
aW5pbmdCbG9ja1dpZHRoKS52YWx1ZU9yKDBfbHUpOwotCi0gICAgTE9HX1dJVEhfU1RSRUFNKEZv
cm1hdHRpbmdDb250ZXh0TGF5b3V0LCBzdHJlYW0gPDwgIltNYXJnaW5dIC0+IG5vbiBjb2xsYXBz
ZWQgaG9yaXpvbnRhbCAtPiBtYXJnaW4oIiA8PCBtYXJnaW5TdGFydCA8PCAicHgsICIgPDwgbWFy
Z2luRW5kIDw8ICJweCkgLT4gbGF5b3V0Qm94OiAiIDw8ICZsYXlvdXRCb3gpOwotICAgIHJldHVy
biB7IG1hcmdpblN0YXJ0LCBtYXJnaW5FbmQgfTsKKyAgICByZXR1cm4geyBjb21wdXRlZFZhbHVl
SWZOb3RBdXRvKHN0eWxlLm1hcmdpblN0YXJ0KCksIGNvbnRhaW5pbmdCbG9ja1dpZHRoKSwgY29t
cHV0ZWRWYWx1ZUlmTm90QXV0byhzdHlsZS5tYXJnaW5FbmQoKSwgY29udGFpbmluZ0Jsb2NrV2lk
dGgpIH07CiB9CiAKIFZlcnRpY2FsTWFyZ2luOjpDb21wdXRlZFZhbHVlcyBGb3JtYXR0aW5nQ29u
dGV4dDo6R2VvbWV0cnk6OmNvbXB1dGVkTm9uQ29sbGFwc2VkVmVydGljYWxNYXJnaW5WYWx1ZShj
b25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IEJveCYgbGF5b3V0Qm94KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dFVuaXRzLmggYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvTGF5b3V0VW5pdHMuaAppbmRleCA3MGFlMmJjNDExMi4uM2I0ODI5YWZlNzAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRVbml0cy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRVbml0cy5oCkBAIC0xMDMsOCArMTAzLDggQEAgc3Ry
dWN0IEVkZ2VzIHsKIAogc3RydWN0IFdpZHRoQW5kTWFyZ2luIHsKICAgICBMYXlvdXRVbml0IHdp
ZHRoOwotICAgIEhvcml6b250YWxNYXJnaW4gdXNlZE1hcmdpbjsKLSAgICBIb3Jpem9udGFsTWFy
Z2luIGNvbXB1dGVkTWFyZ2luOworICAgIFVzZWRIb3Jpem9udGFsTWFyZ2luIHVzZWRNYXJnaW47
CisgICAgQ29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luIGNvbXB1dGVkTWFyZ2luOwogfTsKIAogc3Ry
dWN0IEhlaWdodEFuZE1hcmdpbiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
TWFyZ2luVHlwZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9NYXJnaW5UeXBlcy5oCmluZGV4
IDg1ZmZlZDY1OTY4Li5mZTFmYzE4ZmE2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L01hcmdpblR5cGVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L01hcmdpblR5cGVz
LmgKQEAgLTU2LDcgKzU2LDEyIEBAIHByaXZhdGU6CiAgICAgT3B0aW9uYWw8Q29sbGFwc2VkVmFs
dWVzPiBtX2NvbGxhcHNlZDsKIH07CiAKLXN0cnVjdCBIb3Jpem9udGFsTWFyZ2luIHsKK3N0cnVj
dCBDb21wdXRlZEhvcml6b250YWxNYXJnaW4geworICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IHN0
YXJ0OworICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IGVuZDsKK307CisKK3N0cnVjdCBVc2VkSG9y
aXpvbnRhbE1hcmdpbiB7CiAgICAgTGF5b3V0VW5pdCBzdGFydDsKICAgICBMYXlvdXRVbml0IGVu
ZDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvVmVyaWZpY2F0aW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9WZXJpZmljYXRpb24uY3BwCmluZGV4IDQ5NDE1N2E5
ZWU3Li42NGY3YTg0ZjM0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L1Zlcmlm
aWNhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L1ZlcmlmaWNhdGlvbi5jcHAK
QEAgLTI0Nyw4ICsyNDcsOCBAQCBzdGF0aWMgYm9vbCBvdXRwdXRNaXNtYXRjaGluZ0Jsb2NrQm94
SW5mb3JtYXRpb25JZk5lZWRlZChUZXh0U3RyZWFtJiBzdHJlYW0sIGNvbgogCiAgICAgICAgIHJl
dHVybiBEaXNwbGF5OjpCb3g6OlJlY3QgewogICAgICAgICAgICAgYm9yZGVyQm94LnRvcCgpIC0g
ZGlzcGxheUJveC5ub25Db2xsYXBzZWRNYXJnaW5CZWZvcmUoKSwKLSAgICAgICAgICAgIGJvcmRl
ckJveC5sZWZ0KCkgLSBkaXNwbGF5Qm94LmNvbXB1dGVkTWFyZ2luU3RhcnQoKSwKLSAgICAgICAg
ICAgIGRpc3BsYXlCb3guY29tcHV0ZWRNYXJnaW5TdGFydCgpICsgYm9yZGVyQm94LndpZHRoKCkg
KyBkaXNwbGF5Qm94LmNvbXB1dGVkTWFyZ2luRW5kKCksCisgICAgICAgICAgICBib3JkZXJCb3gu
bGVmdCgpIC0gZGlzcGxheUJveC5jb21wdXRlZE1hcmdpblN0YXJ0KCkudmFsdWVPcigwKSwKKyAg
ICAgICAgICAgIGRpc3BsYXlCb3guY29tcHV0ZWRNYXJnaW5TdGFydCgpLnZhbHVlT3IoMCkgKyBi
b3JkZXJCb3gud2lkdGgoKSArIGRpc3BsYXlCb3guY29tcHV0ZWRNYXJnaW5FbmQoKS52YWx1ZU9y
KDApLAogICAgICAgICAgICAgZGlzcGxheUJveC5ub25Db2xsYXBzZWRNYXJnaW5CZWZvcmUoKSAr
IGJvcmRlckJveC5oZWlnaHQoKSArIGRpc3BsYXlCb3gubm9uQ29sbGFwc2VkTWFyZ2luQWZ0ZXIo
KQogICAgICAgICB9OwogICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
YmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRH
ZW9tZXRyeS5jcHAKaW5kZXggNjRhNzc1ODQ5NjAuLjYzZTA2ODJkNWU5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRl
eHRHZW9tZXRyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGlu
Zy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwCkBAIC0xNDEsMTAgKzE0MSw4IEBA
IFdpZHRoQW5kTWFyZ2luIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbkZsb3dO
b25SZXBsYWNlZFdpZHRoQW5kTWFyZ2luCiAgICAgICAgIGF1dG8mIGRpc3BsYXlCb3ggPSBsYXlv
dXRTdGF0ZS5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGxheW91dEJveCk7CiAKICAgICAgICAgYXV0
byB3aWR0aCA9IGNvbXB1dGVkVmFsdWVJZk5vdEF1dG8odXNlZFdpZHRoID8gTGVuZ3RoIHsgdXNl
ZFdpZHRoLnZhbHVlKCksIEZpeGVkIH0gOiBzdHlsZS5sb2dpY2FsV2lkdGgoKSwgY29udGFpbmlu
Z0Jsb2NrV2lkdGgpOwotICAgICAgICBhdXRvIGNvbXB1dGVkTWFyZ2luU3RhcnQgPSBjb21wdXRl
ZFZhbHVlSWZOb3RBdXRvKHN0eWxlLm1hcmdpblN0YXJ0KCksIGNvbnRhaW5pbmdCbG9ja1dpZHRo
KTsKLSAgICAgICAgYXV0byBjb21wdXRlZE1hcmdpbkVuZCA9IGNvbXB1dGVkVmFsdWVJZk5vdEF1
dG8oc3R5bGUubWFyZ2luRW5kKCksIGNvbnRhaW5pbmdCbG9ja1dpZHRoKTsKLSAgICAgICAgYXV0
byB1c2VkTWFyZ2luU3RhcnQgPSBjb21wdXRlZE1hcmdpblN0YXJ0OwotICAgICAgICBhdXRvIHVz
ZWRNYXJnaW5FbmQgPSBjb21wdXRlZE1hcmdpbkVuZDsKKyAgICAgICAgYXV0byBjb21wdXRlZEhv
cml6b250YWxNYXJnaW4gPSBHZW9tZXRyeTo6Y29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luKGxheW91
dFN0YXRlLCBsYXlvdXRCb3gpOworICAgICAgICBVc2VkSG9yaXpvbnRhbE1hcmdpbiB1c2VkSG9y
aXpvbnRhbE1hcmdpbjsKICAgICAgICAgYXV0byBib3JkZXJMZWZ0ID0gZGlzcGxheUJveC5ib3Jk
ZXJMZWZ0KCk7CiAgICAgICAgIGF1dG8gYm9yZGVyUmlnaHQgPSBkaXNwbGF5Qm94LmJvcmRlclJp
Z2h0KCk7CiAgICAgICAgIGF1dG8gcGFkZGluZ0xlZnQgPSBkaXNwbGF5Qm94LnBhZGRpbmdMZWZ0
KCkudmFsdWVPcigwKTsKQEAgLTE1Miw0NyArMTUwLDQ5IEBAIFdpZHRoQW5kTWFyZ2luIEJsb2Nr
Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbkZsb3dOb25SZXBsYWNlZFdpZHRoQW5kTWFy
Z2luCiAKICAgICAgICAgLy8gIzEKICAgICAgICAgaWYgKHdpZHRoKSB7Ci0gICAgICAgICAgICBh
dXRvIGhvcml6b250YWxTcGFjZUZvck1hcmdpbiA9IGNvbnRhaW5pbmdCbG9ja1dpZHRoIC0gKHVz
ZWRNYXJnaW5TdGFydC52YWx1ZU9yKDApICsgYm9yZGVyTGVmdCArIHBhZGRpbmdMZWZ0ICsgKndp
ZHRoICsgcGFkZGluZ1JpZ2h0ICsgYm9yZGVyUmlnaHQgKyB1c2VkTWFyZ2luRW5kLnZhbHVlT3Io
MCkpOwotICAgICAgICAgICAgaWYgKGhvcml6b250YWxTcGFjZUZvck1hcmdpbiA8IDApIHsKLSAg
ICAgICAgICAgICAgICB1c2VkTWFyZ2luU3RhcnQgPSB1c2VkTWFyZ2luU3RhcnQudmFsdWVPcigw
KTsKLSAgICAgICAgICAgICAgICB1c2VkTWFyZ2luRW5kID0gdXNlZE1hcmdpbkVuZC52YWx1ZU9y
KDApOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgYXV0byBob3Jpem9udGFsU3BhY2VGb3JN
YXJnaW4gPSBjb250YWluaW5nQmxvY2tXaWR0aCAtIChjb21wdXRlZEhvcml6b250YWxNYXJnaW4u
c3RhcnQudmFsdWVPcigwKSArIGJvcmRlckxlZnQgKyBwYWRkaW5nTGVmdCArICp3aWR0aCArIHBh
ZGRpbmdSaWdodCArIGJvcmRlclJpZ2h0ICsgY29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luLmVuZC52
YWx1ZU9yKDApKTsKKyAgICAgICAgICAgIGlmIChob3Jpem9udGFsU3BhY2VGb3JNYXJnaW4gPCAw
KQorICAgICAgICAgICAgICAgIHVzZWRIb3Jpem9udGFsTWFyZ2luID0geyBjb21wdXRlZEhvcml6
b250YWxNYXJnaW4uc3RhcnQudmFsdWVPcigwKSwgY29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luLmVu
ZC52YWx1ZU9yKDApIH07CiAgICAgICAgIH0KIAogICAgICAgICAvLyAjMgotICAgICAgICBpZiAo
d2lkdGggJiYgdXNlZE1hcmdpblN0YXJ0ICYmIHVzZWRNYXJnaW5FbmQpIHsKLSAgICAgICAgICAg
IGlmIChjb250YWluaW5nQmxvY2stPnN0eWxlKCkuaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpKQot
ICAgICAgICAgICAgICAgIHVzZWRNYXJnaW5FbmQgPSBjb250YWluaW5nQmxvY2tXaWR0aCAtICgq
dXNlZE1hcmdpblN0YXJ0ICsgYm9yZGVyTGVmdCArIHBhZGRpbmdMZWZ0ICArICp3aWR0aCArIHBh
ZGRpbmdSaWdodCArIGJvcmRlclJpZ2h0KTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
ICAgICB1c2VkTWFyZ2luU3RhcnQgPSBjb250YWluaW5nQmxvY2tXaWR0aCAtIChib3JkZXJMZWZ0
ICsgcGFkZGluZ0xlZnQgKyAqd2lkdGggKyBwYWRkaW5nUmlnaHQgKyBib3JkZXJSaWdodCArICp1
c2VkTWFyZ2luRW5kKTsKKyAgICAgICAgaWYgKHdpZHRoICYmIGNvbXB1dGVkSG9yaXpvbnRhbE1h
cmdpbi5zdGFydCAmJiBjb21wdXRlZEhvcml6b250YWxNYXJnaW4uZW5kKSB7CisgICAgICAgICAg
ICBpZiAoY29udGFpbmluZ0Jsb2NrLT5zdHlsZSgpLmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSkg
eworICAgICAgICAgICAgICAgIHVzZWRIb3Jpem9udGFsTWFyZ2luLnN0YXJ0ID0gKmNvbXB1dGVk
SG9yaXpvbnRhbE1hcmdpbi5zdGFydDsKKyAgICAgICAgICAgICAgICB1c2VkSG9yaXpvbnRhbE1h
cmdpbi5lbmQgPSBjb250YWluaW5nQmxvY2tXaWR0aCAtICh1c2VkSG9yaXpvbnRhbE1hcmdpbi5z
dGFydCArIGJvcmRlckxlZnQgKyBwYWRkaW5nTGVmdCAgKyAqd2lkdGggKyBwYWRkaW5nUmlnaHQg
KyBib3JkZXJSaWdodCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHVz
ZWRIb3Jpem9udGFsTWFyZ2luLmVuZCA9ICpjb21wdXRlZEhvcml6b250YWxNYXJnaW4uZW5kOwor
ICAgICAgICAgICAgICAgIHVzZWRIb3Jpem9udGFsTWFyZ2luLnN0YXJ0ID0gY29udGFpbmluZ0Js
b2NrV2lkdGggLSAoYm9yZGVyTGVmdCArIHBhZGRpbmdMZWZ0ICsgKndpZHRoICsgcGFkZGluZ1Jp
Z2h0ICsgYm9yZGVyUmlnaHQgKyB1c2VkSG9yaXpvbnRhbE1hcmdpbi5lbmQpOworICAgICAgICAg
ICAgfQogICAgICAgICB9CiAKICAgICAgICAgLy8gIzMKLSAgICAgICAgaWYgKCF1c2VkTWFyZ2lu
U3RhcnQgJiYgd2lkdGggJiYgdXNlZE1hcmdpbkVuZCkKLSAgICAgICAgICAgIHVzZWRNYXJnaW5T
dGFydCA9IGNvbnRhaW5pbmdCbG9ja1dpZHRoIC0gKGJvcmRlckxlZnQgKyBwYWRkaW5nTGVmdCAg
KyAqd2lkdGggKyBwYWRkaW5nUmlnaHQgKyBib3JkZXJSaWdodCArICp1c2VkTWFyZ2luRW5kKTsK
LSAgICAgICAgZWxzZSBpZiAodXNlZE1hcmdpblN0YXJ0ICYmICF3aWR0aCAmJiB1c2VkTWFyZ2lu
RW5kKQotICAgICAgICAgICAgd2lkdGggPSBjb250YWluaW5nQmxvY2tXaWR0aCAtICgqdXNlZE1h
cmdpblN0YXJ0ICsgYm9yZGVyTGVmdCArIHBhZGRpbmdMZWZ0ICsgcGFkZGluZ1JpZ2h0ICsgYm9y
ZGVyUmlnaHQgKyAqdXNlZE1hcmdpbkVuZCk7Ci0gICAgICAgIGVsc2UgaWYgKHVzZWRNYXJnaW5T
dGFydCAmJiB3aWR0aCAmJiAhdXNlZE1hcmdpbkVuZCkKLSAgICAgICAgICAgIHVzZWRNYXJnaW5F
bmQgPSBjb250YWluaW5nQmxvY2tXaWR0aCAtICgqdXNlZE1hcmdpblN0YXJ0ICsgYm9yZGVyTGVm
dCArIHBhZGRpbmdMZWZ0ICsgKndpZHRoICsgcGFkZGluZ1JpZ2h0ICsgYm9yZGVyUmlnaHQpOwor
ICAgICAgICBpZiAoIWNvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbi5zdGFydCAmJiB3aWR0aCAmJiBj
b21wdXRlZEhvcml6b250YWxNYXJnaW4uZW5kKSB7CisgICAgICAgICAgICB1c2VkSG9yaXpvbnRh
bE1hcmdpbi5lbmQgPSAqY29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luLmVuZDsKKyAgICAgICAgICAg
IHVzZWRIb3Jpem9udGFsTWFyZ2luLnN0YXJ0ID0gY29udGFpbmluZ0Jsb2NrV2lkdGggLSAoYm9y
ZGVyTGVmdCArIHBhZGRpbmdMZWZ0ICArICp3aWR0aCArIHBhZGRpbmdSaWdodCArIGJvcmRlclJp
Z2h0ICsgdXNlZEhvcml6b250YWxNYXJnaW4uZW5kKTsKKyAgICAgICAgfSBlbHNlIGlmIChjb21w
dXRlZEhvcml6b250YWxNYXJnaW4uc3RhcnQgJiYgIXdpZHRoICYmIGNvbXB1dGVkSG9yaXpvbnRh
bE1hcmdpbi5lbmQpIHsKKyAgICAgICAgICAgIHVzZWRIb3Jpem9udGFsTWFyZ2luID0geyAqY29t
cHV0ZWRIb3Jpem9udGFsTWFyZ2luLnN0YXJ0LCAqY29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luLmVu
ZCB9OworICAgICAgICAgICAgd2lkdGggPSBjb250YWluaW5nQmxvY2tXaWR0aCAtICh1c2VkSG9y
aXpvbnRhbE1hcmdpbi5zdGFydCArIGJvcmRlckxlZnQgKyBwYWRkaW5nTGVmdCArIHBhZGRpbmdS
aWdodCArIGJvcmRlclJpZ2h0ICsgdXNlZEhvcml6b250YWxNYXJnaW4uZW5kKTsKKyAgICAgICAg
fSBlbHNlIGlmIChjb21wdXRlZEhvcml6b250YWxNYXJnaW4uc3RhcnQgJiYgd2lkdGggJiYgIWNv
bXB1dGVkSG9yaXpvbnRhbE1hcmdpbi5lbmQpIHsKKyAgICAgICAgICAgIHVzZWRIb3Jpem9udGFs
TWFyZ2luLnN0YXJ0ID0gKmNvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbi5zdGFydDsKKyAgICAgICAg
ICAgIHVzZWRIb3Jpem9udGFsTWFyZ2luLmVuZCA9IGNvbnRhaW5pbmdCbG9ja1dpZHRoIC0gKHVz
ZWRIb3Jpem9udGFsTWFyZ2luLnN0YXJ0ICsgYm9yZGVyTGVmdCArIHBhZGRpbmdMZWZ0ICsgKndp
ZHRoICsgcGFkZGluZ1JpZ2h0ICsgYm9yZGVyUmlnaHQpOworICAgICAgICB9CiAKICAgICAgICAg
Ly8gIzQKICAgICAgICAgaWYgKCF3aWR0aCkgewotICAgICAgICAgICAgdXNlZE1hcmdpblN0YXJ0
ID0gdXNlZE1hcmdpblN0YXJ0LnZhbHVlT3IoMCk7Ci0gICAgICAgICAgICB1c2VkTWFyZ2luRW5k
ID0gdXNlZE1hcmdpbkVuZC52YWx1ZU9yKDApOwotICAgICAgICAgICAgd2lkdGggPSBjb250YWlu
aW5nQmxvY2tXaWR0aCAtICgqdXNlZE1hcmdpblN0YXJ0ICsgYm9yZGVyTGVmdCArIHBhZGRpbmdM
ZWZ0ICsgcGFkZGluZ1JpZ2h0ICsgYm9yZGVyUmlnaHQgKyAqdXNlZE1hcmdpbkVuZCk7CisgICAg
ICAgICAgICB1c2VkSG9yaXpvbnRhbE1hcmdpbiA9IHsgY29tcHV0ZWRIb3Jpem9udGFsTWFyZ2lu
LnN0YXJ0LnZhbHVlT3IoMCksIGNvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbi5lbmQudmFsdWVPcigw
KSB9OworICAgICAgICAgICAgd2lkdGggPSBjb250YWluaW5nQmxvY2tXaWR0aCAtICh1c2VkSG9y
aXpvbnRhbE1hcmdpbi5zdGFydCArIGJvcmRlckxlZnQgKyBwYWRkaW5nTGVmdCArIHBhZGRpbmdS
aWdodCArIGJvcmRlclJpZ2h0ICsgdXNlZEhvcml6b250YWxNYXJnaW4uZW5kKTsKICAgICAgICAg
fQogCiAgICAgICAgIC8vICM1Ci0gICAgICAgIGlmICghdXNlZE1hcmdpblN0YXJ0ICYmICF1c2Vk
TWFyZ2luRW5kKSB7CisgICAgICAgIGlmICghY29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luLnN0YXJ0
ICYmICFjb21wdXRlZEhvcml6b250YWxNYXJnaW4uZW5kKSB7CiAgICAgICAgICAgICBhdXRvIGhv
cml6b250YWxTcGFjZUZvck1hcmdpbiA9IGNvbnRhaW5pbmdCbG9ja1dpZHRoIC0gKGJvcmRlckxl
ZnQgKyBwYWRkaW5nTGVmdCAgKyAqd2lkdGggKyBwYWRkaW5nUmlnaHQgKyBib3JkZXJSaWdodCk7
Ci0gICAgICAgICAgICB1c2VkTWFyZ2luU3RhcnQgPSB1c2VkTWFyZ2luRW5kID0gaG9yaXpvbnRh
bFNwYWNlRm9yTWFyZ2luIC8gMjsKKyAgICAgICAgICAgIHVzZWRIb3Jpem9udGFsTWFyZ2luID0g
eyBob3Jpem9udGFsU3BhY2VGb3JNYXJnaW4gLyAyLCBob3Jpem9udGFsU3BhY2VGb3JNYXJnaW4g
LyAyIH07CiAgICAgICAgIH0KIAogICAgICAgICBBU1NFUlQod2lkdGgpOwotICAgICAgICBBU1NF
UlQodXNlZE1hcmdpblN0YXJ0KTsKLSAgICAgICAgQVNTRVJUKHVzZWRNYXJnaW5FbmQpOwogCi0g
ICAgICAgIHJldHVybiBXaWR0aEFuZE1hcmdpbiB7ICp3aWR0aCwgeyAqdXNlZE1hcmdpblN0YXJ0
LCAqdXNlZE1hcmdpbkVuZCB9LCB7IGNvbXB1dGVkTWFyZ2luU3RhcnQudmFsdWVPcigwKSwgY29t
cHV0ZWRNYXJnaW5FbmQudmFsdWVPcigwKSB9IH07CisgICAgICAgIHJldHVybiBXaWR0aEFuZE1h
cmdpbiB7ICp3aWR0aCwgdXNlZEhvcml6b250YWxNYXJnaW4sIGNvbXB1dGVkSG9yaXpvbnRhbE1h
cmdpbiB9OwogICAgIH07CiAKICAgICBhdXRvIHdpZHRoQW5kTWFyZ2luID0gY29tcHV0ZSgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlCb3gu
aCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5Qm94LmgKaW5kZXgg
NzVlYzc3MTg3YTQuLjliYzFiOWZlYjBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvZGlzcGxheXRyZWUvRGlzcGxheUJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9k
aXNwbGF5dHJlZS9EaXNwbGF5Qm94LmgKQEAgLTE0Niw4ICsxNDYsOCBAQCBwdWJsaWM6CiAKICAg
ICBMYXlvdXRVbml0IG5vbkNvbGxhcHNlZE1hcmdpbkJlZm9yZSgpIGNvbnN0OwogICAgIExheW91
dFVuaXQgbm9uQ29sbGFwc2VkTWFyZ2luQWZ0ZXIoKSBjb25zdDsKLSAgICBMYXlvdXRVbml0IGNv
bXB1dGVkTWFyZ2luU3RhcnQoKSBjb25zdDsKLSAgICBMYXlvdXRVbml0IGNvbXB1dGVkTWFyZ2lu
RW5kKCkgY29uc3Q7CisgICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gY29tcHV0ZWRNYXJnaW5TdGFy
dCgpIGNvbnN0OworICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IGNvbXB1dGVkTWFyZ2luRW5kKCkg
Y29uc3Q7CiAKICAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBlc3RpbWF0ZWRNYXJnaW5CZWZvcmUo
KSBjb25zdCB7IHJldHVybiBtX2VzdGltYXRlZE1hcmdpbkJlZm9yZTsgfQogCkBAIC0xOTEsOSAr
MTkxLDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldENvbnRlbnRCb3hIZWlnaHQoTGF5b3V0VW5p
dCk7CiAgICAgdm9pZCBzZXRDb250ZW50Qm94V2lkdGgoTGF5b3V0VW5pdCk7CiAKLSAgICB2b2lk
IHNldEhvcml6b250YWxNYXJnaW4oTGF5b3V0OjpIb3Jpem9udGFsTWFyZ2luKTsKKyAgICB2b2lk
IHNldEhvcml6b250YWxNYXJnaW4oTGF5b3V0OjpVc2VkSG9yaXpvbnRhbE1hcmdpbik7CiAgICAg
dm9pZCBzZXRWZXJ0aWNhbE1hcmdpbihMYXlvdXQ6OlZlcnRpY2FsTWFyZ2luKTsKLSAgICB2b2lk
IHNldEhvcml6b250YWxDb21wdXRlZE1hcmdpbihMYXlvdXQ6Okhvcml6b250YWxNYXJnaW4pOwor
ICAgIHZvaWQgc2V0SG9yaXpvbnRhbENvbXB1dGVkTWFyZ2luKExheW91dDo6Q29tcHV0ZWRIb3Jp
em9udGFsTWFyZ2luKTsKICAgICB2b2lkIHNldEVzdGltYXRlZE1hcmdpbkJlZm9yZShMYXlvdXRV
bml0IG1hcmdpbkJlZm9yZSkgeyBtX2VzdGltYXRlZE1hcmdpbkJlZm9yZSA9IG1hcmdpbkJlZm9y
ZTsgfQogCiAgICAgdm9pZCBzZXRCb3JkZXIoTGF5b3V0OjpFZGdlcyk7CkBAIC0yMjQsOSArMjI0
LDkgQEAgcHJpdmF0ZToKICAgICBMYXlvdXRVbml0IG1fY29udGVudFdpZHRoOwogICAgIExheW91
dFVuaXQgbV9jb250ZW50SGVpZ2h0OwogCi0gICAgTGF5b3V0OjpIb3Jpem9udGFsTWFyZ2luIG1f
aG9yaXpvbnRhbE1hcmdpbjsKKyAgICBMYXlvdXQ6OlVzZWRIb3Jpem9udGFsTWFyZ2luIG1faG9y
aXpvbnRhbE1hcmdpbjsKICAgICBMYXlvdXQ6OlZlcnRpY2FsTWFyZ2luIG1fdmVydGljYWxNYXJn
aW47Ci0gICAgTGF5b3V0OjpIb3Jpem9udGFsTWFyZ2luIG1faG9yaXpvbnRhbENvbXB1dGVkTWFy
Z2luOworICAgIExheW91dDo6Q29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luIG1faG9yaXpvbnRhbENv
bXB1dGVkTWFyZ2luOwogICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IG1fZXN0aW1hdGVkTWFyZ2lu
QmVmb3JlOwogCiAgICAgTGF5b3V0OjpFZGdlcyBtX2JvcmRlcjsKQEAgLTUwNyw3ICs1MDcsNyBA
QCBpbmxpbmUgTGF5b3V0VW5pdCBCb3g6OmNvbnRlbnRCb3hXaWR0aCgpIGNvbnN0CiAgICAgcmV0
dXJuIG1fY29udGVudFdpZHRoOwogfQogCi1pbmxpbmUgdm9pZCBCb3g6OnNldEhvcml6b250YWxN
YXJnaW4oTGF5b3V0OjpIb3Jpem9udGFsTWFyZ2luIG1hcmdpbikKK2lubGluZSB2b2lkIEJveDo6
c2V0SG9yaXpvbnRhbE1hcmdpbihMYXlvdXQ6OlVzZWRIb3Jpem9udGFsTWFyZ2luIG1hcmdpbikK
IHsKICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgc2V0SGFzVmFsaWRIb3Jpem9udGFsTWFyZ2lu
KCk7CkBAIC01MjUsNyArNTI1LDcgQEAgaW5saW5lIHZvaWQgQm94OjpzZXRWZXJ0aWNhbE1hcmdp
bihMYXlvdXQ6OlZlcnRpY2FsTWFyZ2luIG1hcmdpbikKICAgICBtX3ZlcnRpY2FsTWFyZ2luID0g
bWFyZ2luOwogfQogCi1pbmxpbmUgdm9pZCBCb3g6OnNldEhvcml6b250YWxDb21wdXRlZE1hcmdp
bihMYXlvdXQ6Okhvcml6b250YWxNYXJnaW4gbWFyZ2luKQoraW5saW5lIHZvaWQgQm94OjpzZXRI
b3Jpem9udGFsQ29tcHV0ZWRNYXJnaW4oTGF5b3V0OjpDb21wdXRlZEhvcml6b250YWxNYXJnaW4g
bWFyZ2luKQogewogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICBzZXRIYXNWYWxpZEhvcml6b250
YWxDb21wdXRlZE1hcmdpbigpOwpAQCAtNTkxLDEzICs1OTEsMTMgQEAgaW5saW5lIExheW91dFVu
aXQgQm94Ojpub25Db2xsYXBzZWRNYXJnaW5BZnRlcigpIGNvbnN0CiAgICAgcmV0dXJuIG1fdmVy
dGljYWxNYXJnaW4ubm9uQ29sbGFwc2VkVmFsdWVzKCkuYWZ0ZXI7CiB9CiAKLWlubGluZSBMYXlv
dXRVbml0IEJveDo6Y29tcHV0ZWRNYXJnaW5TdGFydCgpIGNvbnN0CitpbmxpbmUgT3B0aW9uYWw8
TGF5b3V0VW5pdD4gQm94Ojpjb21wdXRlZE1hcmdpblN0YXJ0KCkgY29uc3QKIHsKICAgICBBU1NF
UlQobV9oYXNWYWxpZEhvcml6b250YWxDb21wdXRlZE1hcmdpbik7CiAgICAgcmV0dXJuIG1faG9y
aXpvbnRhbENvbXB1dGVkTWFyZ2luLnN0YXJ0OwogfQogCi1pbmxpbmUgTGF5b3V0VW5pdCBCb3g6
OmNvbXB1dGVkTWFyZ2luRW5kKCkgY29uc3QKK2lubGluZSBPcHRpb25hbDxMYXlvdXRVbml0PiBC
b3g6OmNvbXB1dGVkTWFyZ2luRW5kKCkgY29uc3QKIHsKICAgICBBU1NFUlQobV9oYXNWYWxpZEhv
cml6b250YWxDb21wdXRlZE1hcmdpbik7CiAgICAgcmV0dXJuIG1faG9yaXpvbnRhbENvbXB1dGVk
TWFyZ2luLmVuZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mbG9hdHMvRmxv
YXRBdm9pZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZmxvYXRzL0Zsb2F0QXZvaWRlci5o
CmluZGV4IDhiNWNkODg0MDU4Li42N2M5NDI5NjAyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Zsb2F0cy9GbG9hdEF2b2lkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvZmxvYXRzL0Zsb2F0QXZvaWRlci5oCkBAIC03Myw4ICs3Myw4IEBAIHByb3RlY3RlZDoKICAg
ICBMYXlvdXRVbml0IG1hcmdpbkJlZm9yZSgpIGNvbnN0IHsgcmV0dXJuIGRpc3BsYXlCb3goKS5t
YXJnaW5CZWZvcmUoKTsgfQogICAgIExheW91dFVuaXQgbWFyZ2luQWZ0ZXIoKSBjb25zdCB7IHJl
dHVybiBkaXNwbGF5Qm94KCkubWFyZ2luQWZ0ZXIoKTsgfQogICAgIC8vIERvIG5vdCB1c2UgdGhl
IHVzZWQgdmFsdWVzIGhlcmUgYmVjYXVzZSB0aGV5IGNvbXB1dGVkIGFzIGlmIHRoaXMgYm94IHdh
cyBub3QgYSBmbG9hdCBhdm9pZGVyLgotICAgIExheW91dFVuaXQgbWFyZ2luU3RhcnQoKSBjb25z
dCB7IHJldHVybiBkaXNwbGF5Qm94KCkuY29tcHV0ZWRNYXJnaW5TdGFydCgpOyB9Ci0gICAgTGF5
b3V0VW5pdCBtYXJnaW5FbmQoKSBjb25zdCB7IHJldHVybiBkaXNwbGF5Qm94KCkuY29tcHV0ZWRN
YXJnaW5FbmQoKTsgfQorICAgIExheW91dFVuaXQgbWFyZ2luU3RhcnQoKSBjb25zdCB7IHJldHVy
biBkaXNwbGF5Qm94KCkuY29tcHV0ZWRNYXJnaW5TdGFydCgpLnZhbHVlT3IoMCk7IH0KKyAgICBM
YXlvdXRVbml0IG1hcmdpbkVuZCgpIGNvbnN0IHsgcmV0dXJuIGRpc3BsYXlCb3goKS5jb21wdXRl
ZE1hcmdpbkVuZCgpLnZhbHVlT3IoMCk7IH0KIAogICAgIExheW91dFVuaXQgbWFyZ2luQm94V2lk
dGgoKSBjb25zdCB7IHJldHVybiBtYXJnaW5TdGFydCgpICsgZGlzcGxheUJveCgpLndpZHRoKCkg
KyBtYXJnaW5FbmQoKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5s
aW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAKaW5k
ZXggNWM1ZjNlZGI3MjMuLmIzNmU2OGU4YTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0Nv
bnRleHQuY3BwCkBAIC00NDIsMTAgKzQ0MiwxMCBAQCB2b2lkIElubGluZUZvcm1hdHRpbmdDb250
ZXh0Ojpjb2xsZWN0SW5saW5lQ29udGVudEZvclN1YnRyZWUoY29uc3QgQm94JiByb290LCBJbgog
ICAgICAgICBjcmVhdGVBbmRBcHBlbmRJbmxpbmVJdGVtKCk7CiAgICAgICAgIGF1dG8mIGlubGlu
ZVJ1biA9ICppbmxpbmVGb3JtYXR0aW5nU3RhdGUuaW5saW5lQ29udGVudCgpLmxhc3QoKTsKIAot
ICAgICAgICBhdXRvIGhvcml6b250YWxNYXJnaW4gPSBHZW9tZXRyeTo6Y29tcHV0ZWROb25Db2xs
YXBzZWRIb3Jpem9udGFsTWFyZ2luVmFsdWUobGF5b3V0U3RhdGUoKSwgcm9vdCk7CisgICAgICAg
IGF1dG8gaG9yaXpvbnRhbE1hcmdpbiA9IEdlb21ldHJ5Ojpjb21wdXRlZEhvcml6b250YWxNYXJn
aW4obGF5b3V0U3RhdGUoKSwgcm9vdCk7CiAgICAgICAgIGlubGluZVJ1bi5hZGREZXRhY2hpbmdS
dWxlKHsgSW5saW5lSXRlbTo6RGV0YWNoaW5nUnVsZTo6QnJlYWtBdFN0YXJ0LCBJbmxpbmVJdGVt
OjpEZXRhY2hpbmdSdWxlOjpCcmVha0F0RW5kIH0pOwotICAgICAgICBpbmxpbmVSdW4uYWRkTm9u
QnJlYWthYmxlU3RhcnQoaG9yaXpvbnRhbE1hcmdpbi5zdGFydCk7Ci0gICAgICAgIGlubGluZVJ1
bi5hZGROb25CcmVha2FibGVFbmQoaG9yaXpvbnRhbE1hcmdpbi5lbmQpOworICAgICAgICBpbmxp
bmVSdW4uYWRkTm9uQnJlYWthYmxlU3RhcnQoaG9yaXpvbnRhbE1hcmdpbi5zdGFydC52YWx1ZU9y
KDApKTsKKyAgICAgICAgaW5saW5lUnVuLmFkZE5vbkJyZWFrYWJsZUVuZChob3Jpem9udGFsTWFy
Z2luLmVuZC52YWx1ZU9yKDApKTsKICAgICAgICAgLy8gU2tpcCBmb3JtYXR0aW5nIHJvb3Qgc3Vi
dHJlZS4gVGhleSBhcmUgbm90IHBhcnQgb2YgdGhpcyBpbmxpbmUgZm9ybWF0dGluZyBjb250ZXh0
LgogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNDY1LDcgKzQ2NSw3IEBAIHZvaWQgSW5saW5l
Rm9ybWF0dGluZ0NvbnRleHQ6OmNvbGxlY3RJbmxpbmVDb250ZW50Rm9yU3VidHJlZShjb25zdCBC
b3gmIHJvb3QsIEluCiAgICAgLy8gRklYTUU6IFJldmlzaXQgdGhpcyB3aGVuIHdlIGZpZ3VyZWQg
b3V0IGhvdyBpbmxpbmUgYm94ZXMgZml0IHRoZSBkaXNwbGF5IHRyZWUuCiAgICAgYXV0byBwYWRk
aW5nID0gR2VvbWV0cnk6OmNvbXB1dGVkUGFkZGluZyhsYXlvdXRTdGF0ZSgpLCByb290KTsKICAg
ICBhdXRvIGJvcmRlciA9IEdlb21ldHJ5Ojpjb21wdXRlZEJvcmRlcihsYXlvdXRTdGF0ZSgpLCBy
b290KTsKLSAgICBhdXRvIGhvcml6b250YWxNYXJnaW4gPSBHZW9tZXRyeTo6Y29tcHV0ZWROb25D
b2xsYXBzZWRIb3Jpem9udGFsTWFyZ2luVmFsdWUobGF5b3V0U3RhdGUoKSwgcm9vdCk7CisgICAg
YXV0byBob3Jpem9udGFsTWFyZ2luID0gR2VvbWV0cnk6OmNvbXB1dGVkSG9yaXpvbnRhbE1hcmdp
bihsYXlvdXRTdGF0ZSgpLCByb290KTsKICAgICAvLyBTZXR1cCBicmVha2luZyBib3VuZGFyaWVz
IGZvciB0aGlzIHN1YnRyZWUuCiAgICAgYXV0byogbGFzdERlc2NlbmRhbnRJbmxpbmVCb3ggPSBp
bmxpbmVGb3JtYXR0aW5nU3RhdGUubGFzdElubGluZUl0ZW0oKTsKICAgICAvLyBFbXB0eSBjb250
YWluZXI/CkBAIC00OTYsNyArNDk2LDcgQEAgdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6
Y29sbGVjdElubGluZUNvbnRlbnRGb3JTdWJ0cmVlKGNvbnN0IEJveCYgcm9vdCwgSW4KIAogICAg
ICAgICBBU1NFUlQoZmlyc3REZXNjZW5kYW50SW5saW5lQm94KTsKICAgICAgICAgZmlyc3REZXNj
ZW5kYW50SW5saW5lQm94LT5hZGREZXRhY2hpbmdSdWxlKElubGluZUl0ZW06OkRldGFjaGluZ1J1
bGU6OkJyZWFrQXRTdGFydCk7Ci0gICAgICAgIGF1dG8gc3RhcnRPZmZzZXQgPSBib3JkZXIuaG9y
aXpvbnRhbC5sZWZ0ICsgaG9yaXpvbnRhbE1hcmdpbi5zdGFydDsKKyAgICAgICAgYXV0byBzdGFy
dE9mZnNldCA9IGJvcmRlci5ob3Jpem9udGFsLmxlZnQgKyBob3Jpem9udGFsTWFyZ2luLnN0YXJ0
LnZhbHVlT3IoMCk7CiAgICAgICAgIGlmIChwYWRkaW5nKQogICAgICAgICAgICAgc3RhcnRPZmZz
ZXQgKz0gcGFkZGluZy0+aG9yaXpvbnRhbC5sZWZ0OwogICAgICAgICBmaXJzdERlc2NlbmRhbnRJ
bmxpbmVCb3gtPmFkZE5vbkJyZWFrYWJsZVN0YXJ0KHN0YXJ0T2Zmc2V0KTsKQEAgLTUwNCw3ICs1
MDQsNyBAQCB2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0Ojpjb2xsZWN0SW5saW5lQ29udGVu
dEZvclN1YnRyZWUoY29uc3QgQm94JiByb290LCBJbgogCiAgICAgaWYgKHJvb3RCcmVha3NBdEVu
ZCgpKSB7CiAgICAgICAgIGxhc3REZXNjZW5kYW50SW5saW5lQm94LT5hZGREZXRhY2hpbmdSdWxl
KElubGluZUl0ZW06OkRldGFjaGluZ1J1bGU6OkJyZWFrQXRFbmQpOwotICAgICAgICBhdXRvIGVu
ZE9mZnNldCA9IGJvcmRlci5ob3Jpem9udGFsLnJpZ2h0ICsgaG9yaXpvbnRhbE1hcmdpbi5lbmQ7
CisgICAgICAgIGF1dG8gZW5kT2Zmc2V0ID0gYm9yZGVyLmhvcml6b250YWwucmlnaHQgKyBob3Jp
em9udGFsTWFyZ2luLmVuZC52YWx1ZU9yKDApOwogICAgICAgICBpZiAocGFkZGluZykKICAgICAg
ICAgICAgIGVuZE9mZnNldCArPSBwYWRkaW5nLT5ob3Jpem9udGFsLnJpZ2h0OwogICAgICAgICBs
YXN0RGVzY2VuZGFudElubGluZUJveC0+YWRkTm9uQnJlYWthYmxlRW5kKGVuZE9mZnNldCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVG
b3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxp
bmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwCmluZGV4IGI2
NWM4OWZjNTVmLi5lMjVlNWIyYzIzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGlu
Z0NvbnRleHRHZW9tZXRyeS5jcHAKQEAgLTYwLDkgKzYwLDkgQEAgV2lkdGhBbmRNYXJnaW4gSW5s
aW5lRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbmxpbmVCbG9ja1dpZHRoQW5kTWFyZ2lu
KExheW8KICAgICAgICAgd2lkdGggPSBzaHJpbmtUb0ZpdFdpZHRoKGxheW91dFN0YXRlLCBmb3Jt
YXR0aW5nQ29udGV4dFJvb3QpOwogCiAgICAgLy8gIzIKLSAgICBhdXRvIG1hcmdpbiA9IGNvbXB1
dGVkTm9uQ29sbGFwc2VkSG9yaXpvbnRhbE1hcmdpblZhbHVlKGxheW91dFN0YXRlLCBmb3JtYXR0
aW5nQ29udGV4dFJvb3QpOworICAgIGF1dG8gY29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luID0gR2Vv
bWV0cnk6OmNvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbihsYXlvdXRTdGF0ZSwgZm9ybWF0dGluZ0Nv
bnRleHRSb290KTsKIAotICAgIHJldHVybiBXaWR0aEFuZE1hcmdpbiB7ICp3aWR0aCwgbWFyZ2lu
LCBtYXJnaW4gfTsKKyAgICByZXR1cm4gV2lkdGhBbmRNYXJnaW4geyAqd2lkdGgsIHsgY29tcHV0
ZWRIb3Jpem9udGFsTWFyZ2luLnN0YXJ0LnZhbHVlT3IoMF9sdSksIGNvbXB1dGVkSG9yaXpvbnRh
bE1hcmdpbi5lbmQudmFsdWVPcigwX2x1KSB9LCBjb21wdXRlZEhvcml6b250YWxNYXJnaW4gfTsK
IH0KIAogSGVpZ2h0QW5kTWFyZ2luIElubGluZUZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6
aW5saW5lQmxvY2tIZWlnaHRBbmRNYXJnaW4oY29uc3QgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRl
LCBjb25zdCBCb3gmIGxheW91dEJveCkK
</data>
<flag name="review"
          id="375149"
          type_id="1"
          status="+"
          setter="koivisto"
    />
          </attachment>
      

    </bug>

</bugzilla>