<?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>171156</bug_id>
          
          <creation_ts>2017-04-21 18:23:05 -0700</creation_ts>
          <short_desc>Support reading NSURL titles from the pasteboard when performing data interaction</short_desc>
          <delta_ts>2017-04-25 14:47:13 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</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>
          <dependson>171155</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1300050</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-04-21 18:23:05 -0700</bug_when>
    <thetext>Work towards &lt;rdar://problem/31356937&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1300185</commentid>
    <comment_count>1</comment_count>
      <attachid>307907</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-04-22 03:54:29 -0700</bug_when>
    <thetext>Created attachment 307907
Dependent on wkbug.com/171155</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1300576</commentid>
    <comment_count>2</comment_count>
      <attachid>307907</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2017-04-24 11:15:54 -0700</bug_when>
    <thetext>Comment on attachment 307907
Dependent on wkbug.com/171155

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

&gt; Source/WebCore/platform/ios/PlatformPasteboardIOS.mm:407
&gt; +    if ([value respondsToSelector:@selector(_title)])

Can this be an SDK/deployment/something version check instead?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1300855</commentid>
    <comment_count>3</comment_count>
      <attachid>308055</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-04-24 20:10:02 -0700</bug_when>
    <thetext>Created attachment 308055
Rebased on master</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1300875</commentid>
    <comment_count>4</comment_count>
      <attachid>308059</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-04-24 21:03:40 -0700</bug_when>
    <thetext>Created attachment 308059
Fix OpenSource iOS build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1300876</commentid>
    <comment_count>5</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-04-24 21:04:59 -0700</bug_when>
    <thetext>&lt;rdar://problem/31356937&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1300921</commentid>
    <comment_count>6</comment_count>
      <attachid>308059</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-04-25 00:01:02 -0700</bug_when>
    <thetext>Comment on attachment 308059
Fix OpenSource iOS build

Clearing flags on attachment: 308059

Committed r215724: &lt;http://trac.webkit.org/changeset/215724&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>307907</attachid>
            <date>2017-04-22 03:54:29 -0700</date>
            <delta_ts>2017-04-24 11:15:15 -0700</delta_ts>
            <desc>Dependent on wkbug.com/171155</desc>
            <filename>bug-171156-20170422035429.patch</filename>
            <type>text/plain</type>
            <size>27409</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE1NjYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTllZjUwMmQzMmZlOTgw
Yzg1YzczZWYxOGYzN2VmYmViNjgwOTFiMy4uOTkyYTU4OTkwYzRhZWI1ZGRjODBhZTNmMWI5YjBl
MjY5NzhiMzZjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDE3LTA0LTIyICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFN1cHBvcnQgcmVh
ZGluZyBOU1VSTCB0aXRsZXMgZnJvbSB0aGUgcGFzdGVib2FyZCB3aGVuIHBlcmZvcm1pbmcgZGF0
YSBpbnRlcmFjdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTcxMTU2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zMTM1NjkzNz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTdXBwb3J0IHJlYWRpbmcg
bGluayB0aXRsZXMgZnJvbSB0aGUgcGFzdGVib2FyZCB3aGVuIHBlcmZvcm1pbmcgZGF0YSBpbnRl
cmFjdGlvbi4gVG8gZG8gdGhpcywgd2UgcmVmYWN0b3IKKyAgICAgICAgUGFzdGVib2FyZDo6cmVh
ZFVSTCB0byB0YWtlIGluIGFuIGFkZGl0aW9uYWwgU3RyaW5nJiB0aXRsZSB3aGljaCBpcyB1bHRp
bWF0ZWx5IHBsdW1iZWQgdG8gdGhlIFBsYXRmb3JtUGFzdGVib2FyZAorICAgICAgICB3aGVyZSBp
dCBpcyBzZXQgdG8gdGhlIHZhbHVlIG9mIC1bTlNVUkwgX3RpdGxlXS4KKworICAgICAgICBUZXN0
OiBEYXRhSW50ZXJhY3Rpb25UZXN0cy5FeHRlcm5hbFNvdXJjZVRpdGxlZE5TVVJMLgorCisgICAg
ICAgICogZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5oOgorICAgICAgICAqIGVkaXRpbmcvaW9zL0Vk
aXRvcklPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6V2ViQ29udGVudFJlYWRlcjo6
cmVhZFVSTCk6CisgICAgICAgICogcGFnZS9EcmFnQ29udHJvbGxlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6cGVyZm9ybURyYWdPcGVyYXRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OmNvbmNsdWRlRWRpdERyYWcpOgorCisgICAgICAgIE1v
dmUgY2FsbHMgdG8gY2xlYXJEcmFnQ2FyZXQoKSBvdXQgb2YgY29uY2x1ZGVFZGl0RHJhZyBhbmQg
aW50byB0aGUgY2FsbCBzaXRlLCBpbiBwZXJmb3JtRHJhZ09wZXJhdGlvbiBhZnRlcgorICAgICAg
ICBhdHRlbXB0aW5nIHRvIGNvbmNsdWRlRWRpdERyYWcuIFRoaXMgaXMgZG9uZSBzbyB0aGF0IGlm
IHRoZSBXZWJFZGl0b3JDbGllbnQgcXVlcmllcyB3aGV0aGVyIHRoZSBkcmFnIGNhcmV0IGlzCisg
ICAgICAgIGluIHJpY2hseSBlZGl0YWJsZSBjb250ZW50IGZvciB0aGUgcHVycG9zZXMgb2YgZ2Vu
ZXJhdGluZyBhIGRvY3VtZW50IGZyYWdtZW50IHRvIGluc2VydCwgdGhlIGFuc3dlciB3aWxsIG5v
dAorICAgICAgICBhbHdheXMgYmUgZmFsc2UgYXMgYSBkcm9wIGlzIG9jY3VycmluZy4KKworICAg
ICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oOgorICAgICAgICAqIHBsYXRmb3Jt
L1BsYXRmb3JtUGFzdGVib2FyZC5oOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9QYXN0ZWJvYXJk
SU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6cmVzcGVjdHNVVElGaWRlbGl0
aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnJlYWRTdHJpbmcpOgorICAgICAg
ICAqIHBsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW06CisgICAgICAgIChXZWJD
b3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRVUkwpOgorCiAyMDE3LTA0LTIxICBXZW5zb24g
SHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFJlc3BlY3QgZmlkZWxp
dHkgb3JkZXIgd2hlbiByZWFkaW5nIHdlYiBjb250ZW50IGZyb20gaXRlbSBwcm92aWRlcnMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFj
L0NoYW5nZUxvZwppbmRleCAwNjQ3OWRmZDhmZWJjMDU4MjJiYWQzYTcxM2ZjMmI2N2U4OTFmNmY5
Li4wYTM4OGU1OTJhM2M5N2Y2MjgyYzQwNzM1NGQzZjJlZTEwNWU1ZDIwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTctMDQtMjIgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9o
c2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9ydCByZWFkaW5nIE5TVVJMIHRpdGxlcyBm
cm9tIHRoZSBwYXN0ZWJvYXJkIHdoZW4gcGVyZm9ybWluZyBkYXRhIGludGVyYWN0aW9uCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzExNTYKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzMxMzU2OTM3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIG5ldyBXSzEgU1BJIHByb3BlcnR5LCAtW1dlYkZy
YW1lIGhhc1JpY2hseUVkaXRhYmxlRHJhZ0NhcmV0XS4KKworICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dl
YlBsYXRmb3JtU3RyYXRlZ2llcy5tbToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
cmVhZFVSTEZyb21QYXN0ZWJvYXJkKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkZyYW1lLm1tOgor
ICAgICAgICAoLVtXZWJGcmFtZSBoYXNSaWNobHlFZGl0YWJsZURyYWdDYXJldF0pOgorICAgICAg
ICAqIFdlYlZpZXcvV2ViRnJhbWVQcml2YXRlLmg6CisKIDIwMTctMDQtMjEgIFdlbnNvbiBIc2ll
aCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgUmVzcGVjdCBmaWRlbGl0eSBv
cmRlciB3aGVuIHJlYWRpbmcgd2ViIGNvbnRlbnQgZnJvbSBpdGVtIHByb3ZpZGVycwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CmluZGV4IGZjMmQyZjNhNDk2MWYxZjc4OThkMzQ5ODk3YmIzYjFjZWIyZGQ0OTguLmQyZDI3MzMw
MDBjNDNjNTVmN2QyNGJjMzZkYzFjNDM5ZWNiZDc5ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwy
OSBAQAorMjAxNy0wNC0yMiAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4K
KworICAgICAgICBTdXBwb3J0IHJlYWRpbmcgTlNVUkwgdGl0bGVzIGZyb20gdGhlIHBhc3RlYm9h
cmQgd2hlbiBwZXJmb3JtaW5nIGRhdGEgaW50ZXJhY3Rpb24KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MTE1NgorICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vMzEzNTY5Mzc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQWRqdXN0IGZvciBpbnRlcmZhY2UgY2hhbmdlcyBpbiBXZWJDb3JlIHRvIHN1cHBvcnQg
cGx1bWJpbmcgdGhlIHRpdGxlIG9mIGFuIE5TVVJMIGZyb20gdGhlIHBsYXRmb3JtIHBhc3RlYm9h
cmQKKyAgICAgICAgYmFjayB0byBXZWJDb3JlLiBBZGRpdGlvbmFsbHksIGltcGxlbWVudCBXZWJF
ZGl0b3JDbGllbnQ6Omhhc1JpY2hseUVkaXRhYmxlU2VsZWN0aW9uICh3aGljaCBwcmV2aW91c2x5
IHJldHVybmVkCisgICAgICAgIGZhbHNlKSB0byBjaGVjayB3aGV0aGVyIHRoZSBjdXJyZW50IHNl
bGVjdGlvbiBpcyByaWNobHkgZWRpdGFibGUsIG9yIHRoZSBkcm9wIGNhcmV0IGlzIGluIHJpY2hs
eSBlZGl0YWJsZSBjb250ZW50LgorICAgICAgICBTZWUgV2ViQ29yZSBDaGFuZ2VMb2cgZm9yIG1v
cmUgZGV0YWlscy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJv
eHlDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2FyZFByb3h5OjpyZWFkVVJM
RnJvbVBhc3RlYm9hcmQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHku
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5Lm1lc3NhZ2VzLmluOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVz
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkVVJMRnJv
bVBhc3RlYm9hcmQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxh
dGZvcm1TdHJhdGVnaWVzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9p
b3MvV2ViRWRpdG9yQ2xpZW50SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJFZGl0b3JDbGll
bnQ6Omhhc1JpY2hseUVkaXRhYmxlU2VsZWN0aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6Omhhc1JpY2hseUVk
aXRhYmxlU2VsZWN0aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
OgorCiAyMDE3LTA0LTIxICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgog
CiAgICAgICAgIFJlc3BlY3QgZmlkZWxpdHkgb3JkZXIgd2hlbiByZWFkaW5nIHdlYiBjb250ZW50
IGZyb20gaXRlbSBwcm92aWRlcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RnJhbWVTZWxlY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24u
aAppbmRleCAzNGQ4YmJjODExNTNlYjIwZDI0OGUyYzdmMGRlOGMxNGU3ZjY4ZjQzLi5iZjEyN2M5
ZWI3YzEyZTk1ZTBjNmRiNzI4ZTY3NjIzZjczMTc3NGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9GcmFtZVNlbGVjdGlvbi5oCkBAIC05Nyw3ICs5Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHBh
aW50RHJhZ0NhcmV0KEZyYW1lKiwgR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgTGF5b3V0UG9pbnQm
LCBjb25zdCBMYXlvdXRSZWN0JiBjbGlwUmVjdCkgY29uc3Q7CiAKICAgICBib29sIGlzQ29udGVu
dEVkaXRhYmxlKCkgY29uc3QgeyByZXR1cm4gbV9wb3NpdGlvbi5yb290RWRpdGFibGVFbGVtZW50
KCk7IH0KLSAgICBib29sIGlzQ29udGVudFJpY2hseUVkaXRhYmxlKCkgY29uc3Q7CisgICAgV0VC
Q09SRV9FWFBPUlQgYm9vbCBpc0NvbnRlbnRSaWNobHlFZGl0YWJsZSgpIGNvbnN0OwogCiAgICAg
Ym9vbCBoYXNDYXJldCgpIGNvbnN0IHsgcmV0dXJuIG1fcG9zaXRpb24uaXNOb3ROdWxsKCk7IH0K
ICAgICBjb25zdCBWaXNpYmxlUG9zaXRpb24mIGNhcmV0UG9zaXRpb24oKSB7IHJldHVybiBtX3Bv
c2l0aW9uOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJ
T1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0KaW5kZXggZWYx
NWNiNTU1OGQwNzc1MmNhMDI5NDcwMjY1MzRlYTcyZWMyMWUwMi4uYjFjZmRlZTU4YjUzOTdmODU0
NjcxNTk3ZWYxMmNmMjJmY2NhNGI5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9pb3MvRWRpdG9ySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRv
cklPUy5tbQpAQCAtMzIwLDcgKzMyMCw3IEBAIGJvb2wgRWRpdG9yOjpXZWJDb250ZW50UmVhZGVy
OjpyZWFkSW1hZ2UoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluCiAgICAg
cmV0dXJuIGZyYWdtZW50OwogfQogCi1ib29sIEVkaXRvcjo6V2ViQ29udGVudFJlYWRlcjo6cmVh
ZFVSTChjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJikKK2Jvb2wgRWRpdG9yOjpXZWJDb250
ZW50UmVhZGVyOjpyZWFkVVJMKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHRpdGxlKQog
ewogICAgIGlmICh1cmwuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0zNDgs
NyArMzQ4LDkgQEAgYm9vbCBFZGl0b3I6OldlYkNvbnRlbnRSZWFkZXI6OnJlYWRVUkwoY29uc3Qg
VVJMJiB1cmwsIGNvbnN0IFN0cmluZyYpCiAgICAgfSBlbHNlIHsKICAgICAgICAgYXV0byBhbmNo
b3IgPSBIVE1MQW5jaG9yRWxlbWVudDo6Y3JlYXRlKCpmcmFtZS5kb2N1bWVudCgpKTsKICAgICAg
ICAgYW5jaG9yLT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6
aHJlZkF0dHIsIHVybC5zdHJpbmcoKSk7Ci0gICAgICAgIGFuY2hvci0+YXBwZW5kQ2hpbGQoZnJh
bWUuZG9jdW1lbnQoKS0+Y3JlYXRlVGV4dE5vZGUoW1soTlNVUkwgKil1cmwgYWJzb2x1dGVTdHJp
bmddIHByZWNvbXBvc2VkU3RyaW5nV2l0aENhbm9uaWNhbE1hcHBpbmddKSk7CisKKyAgICAgICAg
U3RyaW5nIGxpbmtUZXh0ID0gdGl0bGUubGVuZ3RoKCkgPyB0aXRsZSA6IFN0cmluZyhbWyhOU1VS
TCAqKXVybCBhYnNvbHV0ZVN0cmluZ10gcHJlY29tcG9zZWRTdHJpbmdXaXRoQ2Fub25pY2FsTWFw
cGluZ10pOworICAgICAgICBhbmNob3ItPmFwcGVuZENoaWxkKGZyYW1lLmRvY3VtZW50KCktPmNy
ZWF0ZVRleHROb2RlKGxpbmtUZXh0KSk7CiAKICAgICAgICAgYXV0byBuZXdGcmFnbWVudCA9IGZy
YW1lLmRvY3VtZW50KCktPmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTsKICAgICAgICAgbmV3RnJh
Z21lbnQtPmFwcGVuZENoaWxkKGFuY2hvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0RyYWdDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xs
ZXIuY3BwCmluZGV4IDY2NjQzZTgxMWY0YmIzMTc1ZjVhOTgxZGNmNjg0MjFiZjgyMWRmOGEuLjJl
MjQ2NzE1ZDI0N2IxYzY5NTU2YTY4NmE2ODg1YTRjNzM5ZWQ1OTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRHJhZ0NvbnRyb2xsZXIuY3BwCkBAIC0yNDksMTAgKzI0OSwxMiBAQCBib29sIERyYWdDb250
cm9sbGVyOjpwZXJmb3JtRHJhZ09wZXJhdGlvbihjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEpCiAg
ICAgaWYgKChtX2RyYWdEZXN0aW5hdGlvbkFjdGlvbiAmIERyYWdEZXN0aW5hdGlvbkFjdGlvbkVk
aXQpICYmIGNvbmNsdWRlRWRpdERyYWcoZHJhZ0RhdGEpKSB7CiAgICAgICAgIG1fY2xpZW50LmRp
ZENvbmNsdWRlRWRpdERyYWcoKTsKICAgICAgICAgbV9kb2N1bWVudFVuZGVyTW91c2UgPSBudWxs
cHRyOworICAgICAgICBjbGVhckRyYWdDYXJldCgpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICB9CiAKICAgICBtX2RvY3VtZW50VW5kZXJNb3VzZSA9IG51bGxwdHI7CisgICAgY2xlYXJEcmFn
Q2FyZXQoKTsKIAogICAgIGlmIChvcGVyYXRpb25Gb3JMb2FkKGRyYWdEYXRhKSA9PSBEcmFnT3Bl
cmF0aW9uTm9uZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNTA4LDEzICs1MTAsMTAgQEAg
Ym9vbCBEcmFnQ29udHJvbGxlcjo6Y29uY2x1ZGVFZGl0RHJhZyhjb25zdCBEcmFnRGF0YSYgZHJh
Z0RhdGEpCiAgICAgICAgIHJldHVybiBmaWxlSW5wdXQtPnJlY2VpdmVEcm9wcGVkRmlsZXMoZHJh
Z0RhdGEpOwogICAgIH0KIAotICAgIGlmICghbV9wYWdlLmRyYWdDb250cm9sbGVyKCkuY2FuUHJv
Y2Vzc0RyYWcoZHJhZ0RhdGEpKSB7Ci0gICAgICAgIGNsZWFyRHJhZ0NhcmV0KCk7CisgICAgaWYg
KCFtX3BhZ2UuZHJhZ0NvbnRyb2xsZXIoKS5jYW5Qcm9jZXNzRHJhZyhkcmFnRGF0YSkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICB9CiAKICAgICBWaXNpYmxlU2VsZWN0aW9uIGRyYWdDYXJl
dCA9IG1fcGFnZS5kcmFnQ2FyZXRDb250cm9sbGVyKCkuY2FyZXRQb3NpdGlvbigpOwotICAgIGNs
ZWFyRHJhZ0NhcmV0KCk7CiAgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IGRyYWdDYXJldC50b05v
cm1hbGl6ZWRSYW5nZSgpOwogICAgIFJlZlB0cjxFbGVtZW50PiByb290RWRpdGFibGVFbGVtZW50
ID0gaW5uZXJGcmFtZS0+c2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkucm9vdEVkaXRhYmxlRWxlbWVu
dCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3Ry
YXRlZ3kuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oCmlu
ZGV4IDdkNTljZDUyMTYyMjRjZTBkZDg1ZTUzNzEyYzMyYWEzODdjOWY3ZGMuLmU1ZDg5MWQyNmU2
YzM1M2Y5MTViMGVjM2U3NzI4OTU0OTYzNzRiZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oCkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIGludCBnZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lKSA9IDA7CiAgICAgdmlydHVhbCBTdHJpbmcgcmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJk
KGludCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSkgPSAwOwogICAgIHZpcnR1YWwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVh
ZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGludCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
VHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwotICAgIHZpcnR1YWwgVVJM
IHJlYWRVUkxGcm9tUGFzdGVib2FyZChpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKKyAgICB2aXJ0dWFsIFVS
TCByZWFkVVJMRnJvbVBhc3RlYm9hcmQoaW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxlKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIGdldEZpbGVuYW1lc0ZvckRhdGFJbnRlcmFjdGlvbihWZWN0b3I8
U3RyaW5nPiYgZmlsZW5hbWVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIGdldFR5cGVzQnlGaWRlbGl0eUZvckl0ZW1BdEluZGV4KFZlY3RvcjxT
dHJpbmc+JiB0eXBlcywgdWludDY0X3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUpID0gMDsKICNlbmRpZiAvLyBQTEFURk9STShJT1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oCmluZGV4IDUzYjJjZDk0NmVhZGQ5MWYzYTk0NDhiZDZh
ZTE2YWM2MWI2MWMxOTAuLjMyMTMyNGNmODFhN2E4ZmNhOWZmOTAyNjExNmZkMWNmZDg4ODRlZjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oCkBAIC04
Myw3ICs4Myw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHdyaXRlKGNvbnN0
IFBhc3RlYm9hcmRVUkwmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8U2hhcmVkQnVmZmVy
PiByZWFkQnVmZmVyKGludCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHJlYWRTdHJpbmcoaW50IGluZGV4LCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmRUeXBlKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBVUkwgcmVhZFVSTChpbnQg
aW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpOworICAgIFdFQkNPUkVfRVhQT1JU
IFVSTCByZWFkVVJMKGludCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgU3Ry
aW5nJiB0aXRsZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgaW50IGNvdW50KCk7CiAgICAgV0VCQ09S
RV9FWFBPUlQgaW50IG51bWJlck9mRmlsZXMoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvUGFzdGVib2FyZElPUy5tbQppbmRleCAzOWNhNTdiODE5NmQ1YjJlYmI0ODZmMjMzMWUw
NDdjYzNiMzI3N2YzLi42NWE3Njc4NTExMDAwOWFmMmZiYzEzOGMyZjVlMDE0MzViMzNkZTljIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQpAQCAtMTkz
LDggKzE5Myw5IEBAIHN0YXRpYyBib29sIHJlYWRQYXN0ZWJvYXJkV2ViQ29udGVudERhdGFGb3JU
eXBlKFBhc3RlYm9hcmRXZWJDb250ZW50UmVhZGVyJiByZWFkCiAgICAgfQogCiAgICAgaWYgKFt0
eXBlIGlzRXF1YWxUb1N0cmluZzooTlNTdHJpbmcgKilrVVRUeXBlVVJMXSkgewotICAgICAgICBV
UkwgdXJsID0gc3RyYXRlZ3kucmVhZFVSTEZyb21QYXN0ZWJvYXJkKGl0ZW1JbmRleCwga1VUVHlw
ZVVSTCwgcGFzdGVib2FyZE5hbWUpOwotICAgICAgICByZXR1cm4gIXVybC5pc051bGwoKSAmJiBy
ZWFkZXIucmVhZFVSTCh1cmwsIFN0cmluZygpKTsKKyAgICAgICAgU3RyaW5nIHRpdGxlOworICAg
ICAgICBVUkwgdXJsID0gc3RyYXRlZ3kucmVhZFVSTEZyb21QYXN0ZWJvYXJkKGl0ZW1JbmRleCwg
a1VUVHlwZVVSTCwgcGFzdGVib2FyZE5hbWUsIHRpdGxlKTsKKyAgICAgICAgcmV0dXJuICF1cmwu
aXNOdWxsKCkgJiYgcmVhZGVyLnJlYWRVUkwodXJsLCB0aXRsZSk7CiAgICAgfQogCiAgICAgaWYg
KFVUVHlwZUNvbmZvcm1zVG8oKENGU3RyaW5nUmVmKXR5cGUsIGtVVFR5cGVUZXh0KSkgewpAQCAt
MzI4LDcgKzMyOSw4IEBAIFN0cmluZyBQYXN0ZWJvYXJkOjpyZWFkU3RyaW5nKGNvbnN0IFN0cmlu
ZyYgdHlwZSkKICAgICBOU1N0cmluZyAqY29jb2FWYWx1ZSA9IG5pbDsKIAogICAgIGlmIChbY29j
b2FUeXBlIGlzRXF1YWxUb1N0cmluZzooTlNTdHJpbmcgKilrVVRUeXBlVVJMXSkgewotICAgICAg
ICBVUkwgdXJsID0gc3RyYXRlZ3kucmVhZFVSTEZyb21QYXN0ZWJvYXJkKDAsIGtVVFR5cGVVUkws
IG1fcGFzdGVib2FyZE5hbWUpOworICAgICAgICBTdHJpbmcgdGl0bGU7CisgICAgICAgIFVSTCB1
cmwgPSBzdHJhdGVneS5yZWFkVVJMRnJvbVBhc3RlYm9hcmQoMCwga1VUVHlwZVVSTCwgbV9wYXN0
ZWJvYXJkTmFtZSwgdGl0bGUpOwogICAgICAgICBpZiAoIXVybC5pc051bGwoKSkKICAgICAgICAg
ICAgIGNvY29hVmFsdWUgPSBbKE5TVVJMICopdXJsIGFic29sdXRlU3RyaW5nXTsKICAgICB9IGVs
c2UgaWYgKFtjb2NvYVR5cGUgaXNFcXVhbFRvU3RyaW5nOihOU1N0cmluZyAqKWtVVFR5cGVUZXh0
XSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFz
dGVib2FyZElPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3Rl
Ym9hcmRJT1MubW0KaW5kZXggYWU5MzBlMjBmMzZhNzQ0M2U2NjVhOWIyNzE5MDFkMjA4NDk4ZDA0
NS4uY2QxOTMyZmZkZjE2YTlmYjk2MDM3YTYzZTUyYjMzNjE4MzkwOTZmZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tCkBA
IC0zODksNyArMzg5LDcgQEAgU3RyaW5nIFBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZFN0cmluZyhp
bnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAK
LVVSTCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRVUkwoaW50IGluZGV4LCBjb25zdCBTdHJpbmcm
IHR5cGUpCitVUkwgUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkVVJMKGludCBpbmRleCwgY29uc3Qg
U3RyaW5nJiB0eXBlLCBTdHJpbmcmIHRpdGxlKQogewogICAgIE5TSW5kZXhTZXQgKmluZGV4U2V0
ID0gW05TSW5kZXhTZXQgaW5kZXhTZXRXaXRoSW5kZXg6aW5kZXhdOwogCkBAIC00MDMsNyArNDAz
LDExIEBAIFVSTCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRVUkwoaW50IGluZGV4LCBjb25zdCBT
dHJpbmcmIHR5cGUpCiAgICAgaWYgKCFbdmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNVUkwgY2xhc3Nd
XSkKICAgICAgICAgcmV0dXJuIFVSTCgpOwogCi0gICAgcmV0dXJuIChOU1VSTCAqKXZhbHVlOwor
ICAgIFVSTCB3ZWJjb3JlVVJMID0gKE5TVVJMICopdmFsdWU7CisgICAgaWYgKFt2YWx1ZSByZXNw
b25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF90aXRsZSldKQorICAgICAgICB0aXRsZSA9IFt2YWx1
ZSBfdGl0bGVdOworCisgICAgcmV0dXJuIHdlYmNvcmVVUkw7CiB9CiAKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5o
IGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVz
LmgKaW5kZXggZmEzODM0ODA0ZWNiMGQyMDE2YzMxMzUwNjM1ZjMzZjkwZmJkY2VlOS4uZGE0ZWM0
NzQxMzZhZDE3ZTEyMGJhNmJhM2Y3NWMwMWJmNzBkNmM0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKKysrIGIvU291
cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKQEAg
LTY1LDcgKzY1LDcgQEAgcHJpdmF0ZToKICAgICBpbnQgZ2V0UGFzdGVib2FyZEl0ZW1zQ291bnQo
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIHJlYWRT
dHJpbmdGcm9tUGFzdGVib2FyZChpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwogICAgIFJlZlB0cjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChpbnQgaW5kZXgs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUpIG92ZXJyaWRlOwotICAgIFdlYkNvcmU6OlVSTCByZWFkVVJMRnJvbVBhc3RlYm9hcmQoaW50
IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lKSBvdmVycmlkZTsKKyAgICBXZWJDb3JlOjpVUkwgcmVhZFVSTEZyb21QYXN0ZWJv
YXJkKGludCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRsZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRG
aWxlbmFtZXNGb3JEYXRhSW50ZXJhY3Rpb24oVmVjdG9yPFN0cmluZz4mIGZpbGVuYW1lcywgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRUeXBlc0J5
RmlkZWxpdHlGb3JJdGVtQXRJbmRleChWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIHVpbnQ2NF90IGlu
ZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJh
dGVnaWVzLm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1T
dHJhdGVnaWVzLm1tCmluZGV4IGFmNDBlMTc2MzNiZDBiZjc2NTE0OWNkMTc0NTJjZWE3MTJhNWYz
ZjkuLjc0YmM3YWZlNGUwZDRjZTQ3NGNkN2YyZDcxM2M0YzgwYjI0NDE5Y2IgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0
ZWdpZXMubW0KQEAgLTIyMSw5ICsyMjEsOSBAQCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChpbgogICAg
IHJldHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnJlYWRCdWZmZXIoaW5k
ZXgsIHR5cGUpOwogfQogCi1XZWJDb3JlOjpVUkwgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFk
VVJMRnJvbVBhc3RlYm9hcmQoaW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUpCitXZWJDb3JlOjpVUkwgV2ViUGxhdGZvcm1TdHJhdGVnaWVz
OjpyZWFkVVJMRnJvbVBhc3RlYm9hcmQoaW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUpCiB7Ci0gICAgcmV0dXJu
IFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkucmVhZFVSTChpbmRleCwgdHlwZSk7
CisgICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkucmVhZFVSTChp
bmRleCwgdHlwZSwgdGl0bGUpOwogfQogCiBTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpy
ZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoaW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYkZyYW1lLm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFt
ZS5tbQppbmRleCBiMmMyN2I1NTc5NDFmNmI4ZGEyOWFhZmEzNDM4NzNkMDcxNjMxMGJhLi43NTY1
MmQyOGNiY2ZlZTU1ODc3ODM1MWE5MTk5MGY0NzQwMGFhNzdlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViRnJhbWUubW0KQEAgLTIyMTYsNiArMjIxNiwxMyBAQCBzdGF0aWMgV2ViRnJhbWVM
b2FkVHlwZSB0b1dlYkZyYW1lTG9hZFR5cGUoRnJhbWVMb2FkVHlwZSBmcmFtZUxvYWRUeXBlKQog
ICAgICAgICBjb3JlRnJhbWUtPmxvYWRlcigpLnNldE9wZW5lcigwKTsKIH0KIAorLSAoQk9PTClo
YXNSaWNobHlFZGl0YWJsZURyYWdDYXJldAoreworICAgIGlmIChhdXRvKiBwYWdlID0gY29yZShz
ZWxmKS0+cGFnZSgpKQorICAgICAgICByZXR1cm4gcGFnZS0+ZHJhZ0NhcmV0Q29udHJvbGxlcigp
LmlzQ29udGVudFJpY2hseUVkaXRhYmxlKCk7CisgICAgcmV0dXJuIE5POworfQorCiAvLyBVc2Vk
IGJ5IHBhZ2luYXRpb24gY29kZSBjYWxsZWQgZnJvbSBBcHBLaXQgd2hlbiBhIHN0YW5kYWxvbmUg
d2ViIHBhZ2UgaXMgcHJpbnRlZC4KIC0gKE5TQXJyYXkgKilfY29tcHV0ZVBhZ2VSZWN0c1dpdGhQ
cmludFNjYWxlRmFjdG9yOihmbG9hdClwcmludFNjYWxlRmFjdG9yIHBhZ2VTaXplOihOU1NpemUp
cGFnZVNpemUKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJh
bWVQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lUHJpdmF0ZS5o
CmluZGV4IDViZjAyNGE3YzQ0Y2RmN2UzOTE0MTYyODdlYWNjY2ZjNzhmYzdhNmYuLjZhOTM4YzI0
NDc4MjkyODE2NzBiNmIxMWM5YzBkMDgwMGRkZjY3NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYlZpZXcvV2ViRnJhbWVQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMv
V2ViVmlldy9XZWJGcmFtZVByaXZhdGUuaApAQCAtMjc3LDYgKzI3Nyw5IEBAIHR5cGVkZWYgZW51
bSB7CiAvLyBQcmludGluZy4KIC0gKE5TQXJyYXkgKilfY29tcHV0ZVBhZ2VSZWN0c1dpdGhQcmlu
dFNjYWxlRmFjdG9yOihmbG9hdClwcmludFdpZHRoU2NhbGVGYWN0b3IgcGFnZVNpemU6KE5TU2l6
ZSlwYWdlU2l6ZTsKIAorLy8gRHJhZyBhbmQgZHJvcCBzdXBwb3J0LgorQHByb3BlcnR5IChub25h
dG9taWMsIHJlYWRvbmx5KSBCT09MIGhhc1JpY2hseUVkaXRhYmxlRHJhZ0NhcmV0OworCiAjaWYg
VEFSR0VUX09TX0lQSE9ORQogLSAoRE9NRG9jdW1lbnRGcmFnbWVudCAqKV9kb2N1bWVudEZyYWdt
ZW50Rm9yVGV4dDooTlNTdHJpbmcgKil0ZXh0OwogLy8gVGhlc2UgaGF2ZSB0aGUgc2lkZSBlZmZl
Y3Qgb2YgYWRkaW5nIHN1YnJlc291cmNlcyB0byBvdXIgV2ViRGF0YVNvdXJjZSB3aGVyZSBhcHBy
b3ByaWF0ZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQ
YXN0ZWJvYXJkUHJveHlDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9X
ZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbQppbmRleCBjOTY4MTk3YmZhMDQzZDkzN2ViMjdjOWM0
NjQ3MzI2NjY0Y2NjY2NlLi45Y2MxYjg3OTRmZmZjYzU2YWIzMDZkMTkxYTE2NjJjOThjYjYyMzQw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2Fy
ZFByb3h5Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlBh
c3RlYm9hcmRQcm94eUNvY29hLm1tCkBAIC0xNzAsOSArMTcwLDkgQEAgdm9pZCBXZWJQYXN0ZWJv
YXJkUHJveHk6OnJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZCh1aW50NjRfdCBpbmRleCwgY29uc3Qg
U3RyaW5nJgogICAgIHZhbHVlID0gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5y
ZWFkU3RyaW5nKGluZGV4LCBwYXN0ZWJvYXJkVHlwZSk7CiB9CiAKLXZvaWQgV2ViUGFzdGVib2Fy
ZFByb3h5OjpyZWFkVVJMRnJvbVBhc3RlYm9hcmQodWludDY0X3QgaW5kZXgsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYg
dXJsKQordm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnJlYWRVUkxGcm9tUGFzdGVib2FyZCh1aW50
NjRfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB1cmwsIFN0cmluZyYgdGl0bGUpCiB7Ci0gICAgdXJsID0g
UGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5yZWFkVVJMKGluZGV4LCBwYXN0ZWJv
YXJkVHlwZSk7CisgICAgdXJsID0gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5y
ZWFkVVJMKGluZGV4LCBwYXN0ZWJvYXJkVHlwZSwgdGl0bGUpOwogfQogCiB2b2lkIFdlYlBhc3Rl
Ym9hcmRQcm94eTo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHVpbnQ2NF90IGluZGV4LCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBT
aGFyZWRNZW1vcnk6OkhhbmRsZSYgaGFuZGxlLCB1aW50NjRfdCYgc2l6ZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkuaCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkuaAppbmRleCBiZjk0NmM0NWY2NDc5
MzM1YTNiODY2NWNjOWFjNGE1NWVmNjE2MzMyLi5iNWE1MzFhOTYwMjRhZWE5NzY5M2M0NmE3NjBm
MjczNDc3YTk0NzEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFz
dGVib2FyZFByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhc3RlYm9h
cmRQcm94eS5oCkBAIC03NSw3ICs3NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3cml0ZUltYWdl
VG9QYXN0ZWJvYXJkKGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRJbWFnZSYsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUpOwogICAgIHZvaWQgd3JpdGVTdHJpbmdUb1Bhc3RlYm9hcmQoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSk7CiAgICAgdm9pZCByZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQodWludDY0
X3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIFdURjo6U3RyaW5nJik7Ci0gICAgdm9pZCByZWFkVVJMRnJvbVBhc3RlYm9h
cmQodWludDY0X3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYpOworICAgIHZvaWQgcmVhZFVSTEZyb21QYXN0
ZWJvYXJkKHVpbnQ2NF90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHVybCwgU3RyaW5nJiB0aXRsZSk7CiAg
ICAgdm9pZCByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQodWludDY0X3QgaW5kZXgsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFNoYXJl
ZE1lbW9yeTo6SGFuZGxlJiwgdWludDY0X3QmIHNpemUpOwogICAgIHZvaWQgZ2V0UGFzdGVib2Fy
ZEl0ZW1zQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgdWludDY0X3QmIGl0ZW1z
Q291bnQpOwogICAgIHZvaWQgZ2V0RmlsZW5hbWVzRm9yRGF0YUludGVyYWN0aW9uKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIFZlY3RvcjxTdHJpbmc+JiBmaWxlbmFtZXMpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5tZXNzYWdl
cy5pbiBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkubWVzc2Fn
ZXMuaW4KaW5kZXggOGE5MzZjNTMwNDdmZjMzM2M1MGUxYWYxNjE2ZmY1MWQzZjBmNTk0NC4uMjQx
NDI1ZGFiNDFhZGQxNGI1MDlmMDZmNzZkMTgwNjBjM2YxMDc0YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5tZXNzYWdlcy5pbgorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5Lm1lc3NhZ2VzLmluCkBA
IC0yNyw3ICsyNyw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhc3RlYm9hcmRQcm94eSB7CiAgICAgV3Jp
dGVJbWFnZVRvUGFzdGVib2FyZChzdHJ1Y3QgV2ViQ29yZTo6UGFzdGVib2FyZEltYWdlIHBhc3Rl
Ym9hcmRJbWFnZSwgU3RyaW5nIHBhc3RlYm9hcmROYW1lKQogICAgIFdyaXRlU3RyaW5nVG9QYXN0
ZWJvYXJkKFN0cmluZyBwYXN0ZWJvYXJkVHlwZSwgU3RyaW5nIHRleHQsIFN0cmluZyBwYXN0ZWJv
YXJkTmFtZSkKICAgICBSZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQodWludDY0X3QgaW5kZXgsIFN0
cmluZyBwYXN0ZWJvYXJkVHlwZSwgU3RyaW5nIHBhc3RlYm9hcmROYW1lKSAtPiAoU3RyaW5nIHN0
cmluZykKLSAgICBSZWFkVVJMRnJvbVBhc3RlYm9hcmQodWludDY0X3QgaW5kZXgsIFN0cmluZyBw
YXN0ZWJvYXJkVHlwZSwgU3RyaW5nIHBhc3RlYm9hcmROYW1lKSAtPiAoU3RyaW5nIHN0cmluZykK
KyAgICBSZWFkVVJMRnJvbVBhc3RlYm9hcmQodWludDY0X3QgaW5kZXgsIFN0cmluZyBwYXN0ZWJv
YXJkVHlwZSwgU3RyaW5nIHBhc3RlYm9hcmROYW1lKSAtPiAoU3RyaW5nIHVybCwgU3RyaW5nIHRp
dGxlKQogICAgIFJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZCh1aW50NjRfdCBpbmRleCwgU3RyaW5n
IHBhc3RlYm9hcmRUeXBlLCBTdHJpbmcgcGFzdGVib2FyZE5hbWUpIC0+IChXZWJLaXQ6OlNoYXJl
ZE1lbW9yeTo6SGFuZGxlIGhhbmRsZSwgdWludDY0X3Qgc2l6ZSkKICAgICBHZXRQYXN0ZWJvYXJk
SXRlbXNDb3VudChTdHJpbmcgcGFzdGVib2FyZE5hbWUpIC0+ICh1aW50NjRfdCBpdGVtc0NvdW50
KQogICAgIEdldEZpbGVuYW1lc0ZvckRhdGFJbnRlcmFjdGlvbihTdHJpbmcgcGFzdGVib2FyZE5h
bWUpIC0+IChWZWN0b3I8U3RyaW5nPiBmaWxlbmFtZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3Ry
YXRlZ2llcy5jcHAKaW5kZXggM2Q0Zjk2MGU1M2I3ZTdmYzk2NjkyMzViMjZmNTQxZTMyNmYxMmZj
Zi4uMjQ4NjJiZDQxYTZmYTM3NTMxZjc3N2E3OTdkYzE0N2IwZGJmMjNiYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0
ZWdpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcApAQCAtMzM1LDEwICszMzUsMTAgQEAgUmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJv
bVBhc3RlYm9hcmQoaW4KICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nh
c3Q8dW5zaWduZWQgY2hhciAqPihzaGFyZWRNZW1vcnlCdWZmZXItPmRhdGEoKSksIHNpemUpOwog
fQogCi1XZWJDb3JlOjpVUkwgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkVVJMRnJvbVBhc3Rl
Ym9hcmQoaW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lKQorV2ViQ29yZTo6VVJMIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
cmVhZFVSTEZyb21QYXN0ZWJvYXJkKGludCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
VHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRsZSkKIHsKICAg
ICBTdHJpbmcgdXJsU3RyaW5nOwotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFBy
b2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6
OlJlYWRVUkxGcm9tUGFzdGVib2FyZChpbmRleCwgcGFzdGVib2FyZFR5cGUsIHBhc3RlYm9hcmRO
YW1lKSwgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6UmVhZFVSTEZyb21QYXN0ZWJvYXJk
OjpSZXBseSh1cmxTdHJpbmcpLCAwKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJl
bnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFzdGVib2FyZFBy
b3h5OjpSZWFkVVJMRnJvbVBhc3RlYm9hcmQoaW5kZXgsIHBhc3RlYm9hcmRUeXBlLCBwYXN0ZWJv
YXJkTmFtZSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OlJlYWRVUkxGcm9tUGFzdGVi
b2FyZDo6UmVwbHkodXJsU3RyaW5nLCB0aXRsZSksIDApOwogICAgIHJldHVybiBVUkwoUGFyc2Vk
VVJMU3RyaW5nLCB1cmxTdHJpbmcpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMu
aAppbmRleCAyM2I0ZmVjNDhhZmVlNWFmMWEwZGY3MGM4NTIwZWIxOGNkYjAxNzZhLi5jODBmYWZj
YWFlMzNjYmI2NDEzNjMzZDFmNjdiMGVhYmY0NDcyYmY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1T
dHJhdGVnaWVzLmgKQEAgLTY2LDcgKzY2LDcgQEAgcHJpdmF0ZToKICAgICBpbnQgZ2V0UGFzdGVi
b2FyZEl0ZW1zQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAg
ICAgU3RyaW5nIHJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChpbnQgaW5kZXgsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRl
OwogICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVi
b2FyZChpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwotICAgIFdlYkNvcmU6OlVSTCByZWFkVVJMRnJv
bVBhc3RlYm9hcmQoaW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKKyAgICBXZWJDb3JlOjpVUkwgcmVh
ZFVSTEZyb21QYXN0ZWJvYXJkKGludCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlw
ZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRsZSkgb3ZlcnJpZGU7
CiAgICAgdm9pZCBnZXRGaWxlbmFtZXNGb3JEYXRhSW50ZXJhY3Rpb24oVmVjdG9yPFN0cmluZz4m
IGZpbGVuYW1lcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAgICAg
dm9pZCBnZXRUeXBlc0J5RmlkZWxpdHlGb3JJdGVtQXRJbmRleChWZWN0b3I8U3RyaW5nPiYgdHlw
ZXMsIHVpbnQ2NF90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlk
ZTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9pb3MvV2ViRWRpdG9yQ2xpZW50SU9TLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViRWRpdG9yQ2xpZW50SU9TLm1tCmluZGV4IDQwODc4
N2ZlMmE1NTJiNDIxODg4NDI1YTdjNGNlNDM2ZjNmYmQzYzMuLjM3YzlmN2YzMmRiMDNiYTVkM2Rh
NTlhZjg0NTgxOTUxMDgwNGJhZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYkVkaXRvckNsaWVudElPUy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJFZGl0b3JDbGllbnRJT1Mu
bW0KQEAgLTEwMSw4ICsxMDEsNyBAQCBOU0FycmF5KiBXZWJFZGl0b3JDbGllbnQ6OnJlYWREYXRh
RnJvbVBhc3RlYm9hcmQoTlNTdHJpbmcqLCBpbnQpCiAKIGJvb2wgV2ViRWRpdG9yQ2xpZW50Ojpo
YXNSaWNobHlFZGl0YWJsZVNlbGVjdGlvbigpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAg
ICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIG1fcGFnZS0+aGFzUmljaGx5RWRpdGFibGVTZWxl
Y3Rpb24oKTsKIH0KIAogaW50IFdlYkVkaXRvckNsaWVudDo6Z2V0UGFzdGVib2FyZEl0ZW1zQ291
bnQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmlu
ZGV4IDQ5NDc5ZjFmMzM0MTM0ZTk3ZjNiZDdhMWZkMWI1NTI3ODFiNTBlYjQuLmM3MjM5NjkyYzNj
MWUwNmEzYzYxMTMyYzIwMDQxNjFmMWZjZmJmZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTM4NjksNiArMzg2OSwxNSBAQCB2b2lkIFdl
YlBhZ2U6OmFkdmFuY2VUb05leHRNaXNzcGVsbGluZyhib29sIHN0YXJ0QmVmb3JlU2VsZWN0aW9u
KQogfQogI2VuZGlmCiAKK2Jvb2wgV2ViUGFnZTo6aGFzUmljaGx5RWRpdGFibGVTZWxlY3Rpb24o
KSBjb25zdAoreworICAgIGF1dG8mIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5m
b2N1c2VkT3JNYWluRnJhbWUoKTsKKyAgICBpZiAobV9wYWdlLT5kcmFnQ2FyZXRDb250cm9sbGVy
KCkuaXNDb250ZW50UmljaGx5RWRpdGFibGUoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAg
ICByZXR1cm4gZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuaXNDb250ZW50UmljaGx5RWRp
dGFibGUoKTsKK30KKwogdm9pZCBXZWJQYWdlOjpjaGFuZ2VTcGVsbGluZ1RvV29yZChjb25zdCBT
dHJpbmcmIHdvcmQpCiB7CiAgICAgcmVwbGFjZVNlbGVjdGlvbldpdGhUZXh0KCZtX3BhZ2UtPmZv
Y3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpLCB3b3JkKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDBiMDU2MWJiMTY3ZDUwMTE1
ZjMxMTQxZjIzNGE1N2RkNGIxNGNjNjcuLmFiOGM3ODBjYjVmMmY2OGM2M2MwMzI4ZGQ0ZDBkZDM0
OTQ2ZDg4OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aApAQCAtNTk5LDYgKzU5OSw3IEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lkIHNldEZvcmNlQWx3
YXlzVXNlclNjYWxhYmxlKGJvb2wpOwogI2VuZGlmCisgICAgYm9vbCBoYXNSaWNobHlFZGl0YWJs
ZVNlbGVjdGlvbigpIGNvbnN0OwogCiAgICAgdm9pZCBzZXRMYXllclRyZWVTdGF0ZUlzRnJvemVu
KGJvb2wpOwogICAgIHZvaWQgbWFya0xheWVyc1ZvbGF0aWxlKHN0ZDo6ZnVuY3Rpb248dm9pZCAo
KT4gY29tcGxldGlvbkhhbmRsZXIgPSB7IH0pOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9n
IGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGVlOWRiMzJhOGRlMDc1YjdhOTE3Y2MyZTA4YzZiZDFj
MmUyMTczZTIuLjQ3OGQzNGE1NmU3ODE1OTY1Nzk2Mjk4YjM4NmExZDU5YjM3YWI2OTYgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NiBAQAorMjAxNy0wNC0yMiAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4K
KworICAgICAgICBTdXBwb3J0IHJlYWRpbmcgTlNVUkwgdGl0bGVzIGZyb20gdGhlIHBhc3RlYm9h
cmQgd2hlbiBwZXJmb3JtaW5nIGRhdGEgaW50ZXJhY3Rpb24KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MTE1NgorICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vMzEzNTY5Mzc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQWRkcyBhIG5ldyB1bml0IHRlc3QsIERhdGFJbnRlcmFjdGlvblRlc3RzLkV4dGVybmFs
U291cmNlVGl0bGVkTlNVUkwuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9E
YXRhSW50ZXJhY3Rpb25UZXN0cy5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgor
CiAyMDE3LTA0LTIxICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAg
ICAgICAgIFJlc3BlY3QgZmlkZWxpdHkgb3JkZXIgd2hlbiByZWFkaW5nIHdlYiBjb250ZW50IGZy
b20gaXRlbSBwcm92aWRlcnMKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
aW9zL0RhdGFJbnRlcmFjdGlvblRlc3RzLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9p
b3MvRGF0YUludGVyYWN0aW9uVGVzdHMubW0KaW5kZXggZmRmZWRlMWE0NTVlOWM2OTRjYjNkMGRm
MzY3ZjBiNTY2ZjY1MTUzMS4uYzk3YmI4OTgxMjBjYjViYjI1NGUyYzk4NTNmZDRmZDYwMWEyYmVl
ZSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvRGF0YUludGVyYWN0
aW9uVGVzdHMubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvRGF0YUludGVy
YWN0aW9uVGVzdHMubW0KQEAgLTUxNyw2ICs1MTcsMjUgQEAgVEVTVChEYXRhSW50ZXJhY3Rpb25U
ZXN0cywgRXh0ZXJuYWxTb3VyY2VKUEVHT25seSkKICAgICBjaGVja1NlbGVjdGlvblJlY3RzV2l0
aExvZ2dpbmcoQFsgbWFrZUNHUmVjdFZhbHVlKDEsIDIwMSwgMjE1LCAxNzQpIF0sIFtkYXRhSW50
ZXJhY3Rpb25TaW11bGF0b3IgZmluYWxTZWxlY3Rpb25SZWN0c10pOwogfQogCitURVNUKERhdGFJ
bnRlcmFjdGlvblRlc3RzLCBFeHRlcm5hbFNvdXJjZVRpdGxlZE5TVVJMKQoreworICAgIGF1dG8g
d2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNH
UmVjdE1ha2UoMCwgMCwgMzIwLCA1MDApXSk7CisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxv
YWRUZXN0UGFnZU5hbWVkOkAiYXV0b2ZvY3VzLWNvbnRlbnRlZGl0YWJsZSJdOworICAgIFt3ZWJW
aWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJnZXRTZWxlY3Rpb24oKS5yZW1vdmVB
bGxSYW5nZXMoKSJdOworCisgICAgTlNVUkwgKnRpdGxlZFVSTCA9IFtOU1VSTCBVUkxXaXRoU3Ry
aW5nOkAiaHR0cHM6Ly93d3cuYXBwbGUuY29tIl07CisgICAgdGl0bGVkVVJMLl90aXRsZSA9IEAi
QXBwbGUiOworICAgIGF1dG8gc2ltdWxhdGVkSXRlbVByb3ZpZGVyID0gYWRvcHROUyhbW1VJSXRl
bVByb3ZpZGVyIGFsbG9jXSBpbml0XSk7CisgICAgW3NpbXVsYXRlZEl0ZW1Qcm92aWRlciByZWdp
c3Rlck9iamVjdDp0aXRsZWRVUkwgdmlzaWJpbGl0eTpOU0l0ZW1Qcm92aWRlclJlcHJlc2VudGF0
aW9uVmlzaWJpbGl0eUFsbF07CisKKyAgICBhdXRvIGRhdGFJbnRlcmFjdGlvblNpbXVsYXRvciA9
IGFkb3B0TlMoW1tEYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IgYWxsb2NdIGluaXRXaXRoV2ViVmll
dzp3ZWJWaWV3LmdldCgpXSk7CisgICAgW2RhdGFJbnRlcmFjdGlvblNpbXVsYXRvciBzZXRFeHRl
cm5hbEl0ZW1Qcm92aWRlcnM6QFsgc2ltdWxhdGVkSXRlbVByb3ZpZGVyLmdldCgpIF1dOworICAg
IFtkYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IgcnVuRnJvbTpDR1BvaW50TWFrZSgzMDAsIDQwMCkg
dG86Q0dQb2ludE1ha2UoMTAwLCAzMDApXTsKKworICAgIEVYUEVDVF9XS19TVFJFUSgiQXBwbGUi
LCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZWRpdG9yLnF1ZXJ5U2Vs
ZWN0b3IoJ2EnKS50ZXh0Q29udGVudCJdKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoImh0dHBzOi8v
d3d3LmFwcGxlLmNvbS8iLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAi
ZWRpdG9yLnF1ZXJ5U2VsZWN0b3IoJ2EnKS5ocmVmIl0pOworfQorCiBURVNUKERhdGFJbnRlcmFj
dGlvblRlc3RzLCBPdmVycmlkZURhdGFJbnRlcmFjdGlvbk9wZXJhdGlvbikKIHsKICAgICBSZXRh
aW5QdHI8VGVzdFdLV2ViVmlldz4gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFs
bG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1MDApXSk7Cg==
</data>
<flag name="review"
          id="329111"
          type_id="1"
          status="+"
          setter="thorton"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>308055</attachid>
            <date>2017-04-24 20:10:02 -0700</date>
            <delta_ts>2017-04-24 21:03:57 -0700</delta_ts>
            <desc>Rebased on master</desc>
            <filename>bug-171156-20170424201001.patch</filename>
            <type>text/plain</type>
            <size>27333</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE1NzE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmY4MDM5OGRlYzVlNzk2
YjgzOWYxYzZkNTA1MjI2ZjQ5MTlhMTYyZi4uYmIzMmE3MTNjYjMyOTY0MTkyMzBmOTU4ZTYyYTVi
MDI0Mjg1ZTQ3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDE3LTA0LTIyICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFN1cHBvcnQgcmVh
ZGluZyBOU1VSTCB0aXRsZXMgZnJvbSB0aGUgcGFzdGVib2FyZCB3aGVuIHBlcmZvcm1pbmcgZGF0
YSBpbnRlcmFjdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTcxMTU2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zMTM1NjkzNz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBUaW0gSG9ydG9uLgorCisgICAgICAgIFN1cHBvcnQgcmVhZGluZyBsaW5r
IHRpdGxlcyBmcm9tIHRoZSBwYXN0ZWJvYXJkIHdoZW4gcGVyZm9ybWluZyBkYXRhIGludGVyYWN0
aW9uLiBUbyBkbyB0aGlzLCB3ZSByZWZhY3RvcgorICAgICAgICBQYXN0ZWJvYXJkOjpyZWFkVVJM
IHRvIHRha2UgaW4gYW4gYWRkaXRpb25hbCBTdHJpbmcmIHRpdGxlIHdoaWNoIGlzIHVsdGltYXRl
bHkgcGx1bWJlZCB0byB0aGUgUGxhdGZvcm1QYXN0ZWJvYXJkCisgICAgICAgIHdoZXJlIGl0IGlz
IHNldCB0byB0aGUgdmFsdWUgb2YgLVtOU1VSTCBfdGl0bGVdLgorCisgICAgICAgIFRlc3Q6IERh
dGFJbnRlcmFjdGlvblRlc3RzLkV4dGVybmFsU291cmNlVGl0bGVkTlNVUkwuCisKKyAgICAgICAg
KiBlZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmg6CisgICAgICAgICogZWRpdGluZy9pb3MvRWRpdG9y
SU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpXZWJDb250ZW50UmVhZGVyOjpyZWFk
VVJMKToKKyAgICAgICAgKiBwYWdlL0RyYWdDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRyYWdDb250cm9sbGVyOjpwZXJmb3JtRHJhZ09wZXJhdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpEcmFnQ29udHJvbGxlcjo6Y29uY2x1ZGVFZGl0RHJhZyk6CisKKyAgICAgICAgTW92ZSBj
YWxscyB0byBjbGVhckRyYWdDYXJldCgpIG91dCBvZiBjb25jbHVkZUVkaXREcmFnIGFuZCBpbnRv
IHRoZSBjYWxsIHNpdGUsIGluIHBlcmZvcm1EcmFnT3BlcmF0aW9uIGFmdGVyCisgICAgICAgIGF0
dGVtcHRpbmcgdG8gY29uY2x1ZGVFZGl0RHJhZy4gVGhpcyBpcyBkb25lIHNvIHRoYXQgaWYgdGhl
IFdlYkVkaXRvckNsaWVudCBxdWVyaWVzIHdoZXRoZXIgdGhlIGRyYWcgY2FyZXQgaXMKKyAgICAg
ICAgaW4gcmljaGx5IGVkaXRhYmxlIGNvbnRlbnQgZm9yIHRoZSBwdXJwb3NlcyBvZiBnZW5lcmF0
aW5nIGEgZG9jdW1lbnQgZnJhZ21lbnQgdG8gaW5zZXJ0LCB0aGUgYW5zd2VyIHdpbGwgbm90Cisg
ICAgICAgIGFsd2F5cyBiZSBmYWxzZSBhcyBhIGRyb3AgaXMgb2NjdXJyaW5nLgorCisgICAgICAg
ICogcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5Lmg6CisgICAgICAgICogcGxhdGZvcm0vUGxh
dGZvcm1QYXN0ZWJvYXJkLmg6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1Mu
bW06CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpyZXNwZWN0c1VUSUZpZGVsaXRpZXMp
OgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6cmVhZFN0cmluZyk6CisgICAgICAgICog
cGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6
OlBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZFVSTCk6CisKIDIwMTctMDQtMjQgIFdlbnNvbiBIc2ll
aCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgUmVzcGVjdCBmaWRlbGl0eSBv
cmRlciB3aGVuIHJlYWRpbmcgd2ViIGNvbnRlbnQgZnJvbSBpdGVtIHByb3ZpZGVycwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hh
bmdlTG9nCmluZGV4IDU3MThhZDhhYmQ2N2NiOTdlYWIzZDFmYjY1Y2VhZDkxYWRmZWEwMWEuLmUy
MTFhMDY2ODZlNGEwOTNmNTQwNDkwYTY3MGQ4YTAxNzkwZjlmZWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwyMCBAQAorMjAxNy0wNC0yMiAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVo
QGFwcGxlLmNvbT4KKworICAgICAgICBTdXBwb3J0IHJlYWRpbmcgTlNVUkwgdGl0bGVzIGZyb20g
dGhlIHBhc3RlYm9hcmQgd2hlbiBwZXJmb3JtaW5nIGRhdGEgaW50ZXJhY3Rpb24KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MTE1NgorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vMzEzNTY5Mzc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVGltIEhvcnRv
bi4KKworICAgICAgICBBZGQgYSBuZXcgV0sxIFNQSSBwcm9wZXJ0eSwgLVtXZWJGcmFtZSBoYXNS
aWNobHlFZGl0YWJsZURyYWdDYXJldF0uCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXMuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9y
bVN0cmF0ZWdpZXMubW06CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRVUkxG
cm9tUGFzdGVib2FyZCk6CisgICAgICAgICogV2ViVmlldy9XZWJGcmFtZS5tbToKKyAgICAgICAg
KC1bV2ViRnJhbWUgaGFzUmljaGx5RWRpdGFibGVEcmFnQ2FyZXRdKToKKyAgICAgICAgKiBXZWJW
aWV3L1dlYkZyYW1lUHJpdmF0ZS5oOgorCiAyMDE3LTA0LTI0ICBXZW5zb24gSHNpZWggIDx3ZW5z
b25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFJlc3BlY3QgZmlkZWxpdHkgb3JkZXIgd2hl
biByZWFkaW5nIHdlYiBjb250ZW50IGZyb20gaXRlbSBwcm92aWRlcnMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA3
NGNiOGY3MTdlOTVhYjUzYTE1MThhMjdhN2U1OTk0NjJkNmI0ZmRmLi4yY2ZhYzIxNDRhYWI4MDU2
YzQ1YjNhMmQ0ODFkMGRkMzhjYjNkNWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIw
MTctMDQtMjIgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAg
ICAgU3VwcG9ydCByZWFkaW5nIE5TVVJMIHRpdGxlcyBmcm9tIHRoZSBwYXN0ZWJvYXJkIHdoZW4g
cGVyZm9ybWluZyBkYXRhIGludGVyYWN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNzExNTYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMxMzU2
OTM3PgorCisgICAgICAgIFJldmlld2VkIGJ5IFRpbSBIb3J0b24uCisKKyAgICAgICAgQWRqdXN0
IGZvciBpbnRlcmZhY2UgY2hhbmdlcyBpbiBXZWJDb3JlIHRvIHN1cHBvcnQgcGx1bWJpbmcgdGhl
IHRpdGxlIG9mIGFuIE5TVVJMIGZyb20gdGhlIHBsYXRmb3JtIHBhc3RlYm9hcmQKKyAgICAgICAg
YmFjayB0byBXZWJDb3JlLiBBZGRpdGlvbmFsbHksIGltcGxlbWVudCBXZWJFZGl0b3JDbGllbnQ6
Omhhc1JpY2hseUVkaXRhYmxlU2VsZWN0aW9uICh3aGljaCBwcmV2aW91c2x5IHJldHVybmVkCisg
ICAgICAgIGZhbHNlKSB0byBjaGVjayB3aGV0aGVyIHRoZSBjdXJyZW50IHNlbGVjdGlvbiBpcyBy
aWNobHkgZWRpdGFibGUsIG9yIHRoZSBkcm9wIGNhcmV0IGlzIGluIHJpY2hseSBlZGl0YWJsZSBj
b250ZW50LgorICAgICAgICBTZWUgV2ViQ29yZSBDaGFuZ2VMb2cgZm9yIG1vcmUgZGV0YWlscy4K
KworICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2FyZFByb3h5OjpyZWFkVVJMRnJvbVBhc3RlYm9h
cmQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkVVJMRnJvbVBhc3RlYm9hcmQp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVn
aWVzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViRWRpdG9y
Q2xpZW50SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJFZGl0b3JDbGllbnQ6Omhhc1JpY2hs
eUVkaXRhYmxlU2VsZWN0aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6Omhhc1JpY2hseUVkaXRhYmxlU2VsZWN0
aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorCiAyMDE3LTA0
LTI0ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFJl
c3BlY3QgZmlkZWxpdHkgb3JkZXIgd2hlbiByZWFkaW5nIHdlYiBjb250ZW50IGZyb20gaXRlbSBw
cm92aWRlcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rp
b24uaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uaAppbmRleCAzNGQ4
YmJjODExNTNlYjIwZDI0OGUyYzdmMGRlOGMxNGU3ZjY4ZjQzLi5iZjEyN2M5ZWI3YzEyZTk1ZTBj
NmRiNzI4ZTY3NjIzZjczMTc3NGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0ZyYW1lU2VsZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVj
dGlvbi5oCkBAIC05Nyw3ICs5Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHBhaW50RHJhZ0NhcmV0
KEZyYW1lKiwgR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgTGF5b3V0UG9pbnQmLCBjb25zdCBMYXlv
dXRSZWN0JiBjbGlwUmVjdCkgY29uc3Q7CiAKICAgICBib29sIGlzQ29udGVudEVkaXRhYmxlKCkg
Y29uc3QgeyByZXR1cm4gbV9wb3NpdGlvbi5yb290RWRpdGFibGVFbGVtZW50KCk7IH0KLSAgICBi
b29sIGlzQ29udGVudFJpY2hseUVkaXRhYmxlKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQg
Ym9vbCBpc0NvbnRlbnRSaWNobHlFZGl0YWJsZSgpIGNvbnN0OwogCiAgICAgYm9vbCBoYXNDYXJl
dCgpIGNvbnN0IHsgcmV0dXJuIG1fcG9zaXRpb24uaXNOb3ROdWxsKCk7IH0KICAgICBjb25zdCBW
aXNpYmxlUG9zaXRpb24mIGNhcmV0UG9zaXRpb24oKSB7IHJldHVybiBtX3Bvc2l0aW9uOyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0KaW5kZXggODA1ODk4YWYxNmQ2MzY4
YmVjYWUzZjFhYTIyY2IyMjE5MzIzYzc3NS4uMmM1ZDYyMjk4OWVlNzhjMDcxODBhY2Q1ODgyZjA2
OGNhMTM1YjVlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRWRpdG9y
SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRvcklPUy5tbQpAQCAt
MzIwLDcgKzMyMCw3IEBAIGJvb2wgRWRpdG9yOjpXZWJDb250ZW50UmVhZGVyOjpyZWFkSW1hZ2Uo
UmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluCiAgICAgcmV0dXJuIGZyYWdt
ZW50OwogfQogCi1ib29sIEVkaXRvcjo6V2ViQ29udGVudFJlYWRlcjo6cmVhZFVSTChjb25zdCBV
UkwmIHVybCwgY29uc3QgU3RyaW5nJikKK2Jvb2wgRWRpdG9yOjpXZWJDb250ZW50UmVhZGVyOjpy
ZWFkVVJMKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHRpdGxlKQogewogICAgIGlmICh1
cmwuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0zNDgsNyArMzQ4LDkgQEAg
Ym9vbCBFZGl0b3I6OldlYkNvbnRlbnRSZWFkZXI6OnJlYWRVUkwoY29uc3QgVVJMJiB1cmwsIGNv
bnN0IFN0cmluZyYpCiAgICAgfSBlbHNlIHsKICAgICAgICAgYXV0byBhbmNob3IgPSBIVE1MQW5j
aG9yRWxlbWVudDo6Y3JlYXRlKCpmcmFtZS5kb2N1bWVudCgpKTsKICAgICAgICAgYW5jaG9yLT5z
ZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6aHJlZkF0dHIsIHVy
bC5zdHJpbmcoKSk7Ci0gICAgICAgIGFuY2hvci0+YXBwZW5kQ2hpbGQoZnJhbWUuZG9jdW1lbnQo
KS0+Y3JlYXRlVGV4dE5vZGUoW1soTlNVUkwgKil1cmwgYWJzb2x1dGVTdHJpbmddIHByZWNvbXBv
c2VkU3RyaW5nV2l0aENhbm9uaWNhbE1hcHBpbmddKSk7CisKKyAgICAgICAgU3RyaW5nIGxpbmtU
ZXh0ID0gdGl0bGUubGVuZ3RoKCkgPyB0aXRsZSA6IFN0cmluZyhbWyhOU1VSTCAqKXVybCBhYnNv
bHV0ZVN0cmluZ10gcHJlY29tcG9zZWRTdHJpbmdXaXRoQ2Fub25pY2FsTWFwcGluZ10pOworICAg
ICAgICBhbmNob3ItPmFwcGVuZENoaWxkKGZyYW1lLmRvY3VtZW50KCktPmNyZWF0ZVRleHROb2Rl
KGxpbmtUZXh0KSk7CiAKICAgICAgICAgYXV0byBuZXdGcmFnbWVudCA9IGZyYW1lLmRvY3VtZW50
KCktPmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTsKICAgICAgICAgbmV3RnJhZ21lbnQtPmFwcGVu
ZENoaWxkKGFuY2hvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250
cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCmluZGV4
IDQ4MDFjZWM4ZDliYzU5OTdiZmE4MmI1MjFlMDI1NTFiZGJiMDY5YTUuLmQ3Mzk0OGY2YzZlYzE2
ODIyZDliNjg3MTM2YTVmNDM0Nzg5YjhkMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRHJhZ0NvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRy
b2xsZXIuY3BwCkBAIC0yNDksMTAgKzI0OSwxMiBAQCBib29sIERyYWdDb250cm9sbGVyOjpwZXJm
b3JtRHJhZ09wZXJhdGlvbihjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEpCiAgICAgaWYgKChtX2Ry
YWdEZXN0aW5hdGlvbkFjdGlvbiAmIERyYWdEZXN0aW5hdGlvbkFjdGlvbkVkaXQpICYmIGNvbmNs
dWRlRWRpdERyYWcoZHJhZ0RhdGEpKSB7CiAgICAgICAgIG1fY2xpZW50LmRpZENvbmNsdWRlRWRp
dERyYWcoKTsKICAgICAgICAgbV9kb2N1bWVudFVuZGVyTW91c2UgPSBudWxscHRyOworICAgICAg
ICBjbGVhckRyYWdDYXJldCgpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKICAgICBt
X2RvY3VtZW50VW5kZXJNb3VzZSA9IG51bGxwdHI7CisgICAgY2xlYXJEcmFnQ2FyZXQoKTsKIAog
ICAgIGlmIChvcGVyYXRpb25Gb3JMb2FkKGRyYWdEYXRhKSA9PSBEcmFnT3BlcmF0aW9uTm9uZSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNTA4LDEzICs1MTAsMTAgQEAgYm9vbCBEcmFnQ29u
dHJvbGxlcjo6Y29uY2x1ZGVFZGl0RHJhZyhjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEpCiAgICAg
ICAgIHJldHVybiBmaWxlSW5wdXQtPnJlY2VpdmVEcm9wcGVkRmlsZXMoZHJhZ0RhdGEpOwogICAg
IH0KIAotICAgIGlmICghbV9wYWdlLmRyYWdDb250cm9sbGVyKCkuY2FuUHJvY2Vzc0RyYWcoZHJh
Z0RhdGEpKSB7Ci0gICAgICAgIGNsZWFyRHJhZ0NhcmV0KCk7CisgICAgaWYgKCFtX3BhZ2UuZHJh
Z0NvbnRyb2xsZXIoKS5jYW5Qcm9jZXNzRHJhZyhkcmFnRGF0YSkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICB9CiAKICAgICBWaXNpYmxlU2VsZWN0aW9uIGRyYWdDYXJldCA9IG1fcGFnZS5k
cmFnQ2FyZXRDb250cm9sbGVyKCkuY2FyZXRQb3NpdGlvbigpOwotICAgIGNsZWFyRHJhZ0NhcmV0
KCk7CiAgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IGRyYWdDYXJldC50b05vcm1hbGl6ZWRSYW5n
ZSgpOwogICAgIFJlZlB0cjxFbGVtZW50PiByb290RWRpdGFibGVFbGVtZW50ID0gaW5uZXJGcmFt
ZS0+c2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkucm9vdEVkaXRhYmxlRWxlbWVudCgpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oCmluZGV4IDdkNTljZDUy
MTYyMjRjZTBkZDg1ZTUzNzEyYzMyYWEzODdjOWY3ZGMuLmU1ZDg5MWQyNmU2YzM1M2Y5MTViMGVj
M2U3NzI4OTU0OTYzNzRiZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bh
c3RlYm9hcmRTdHJhdGVneS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9h
cmRTdHJhdGVneS5oCkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGludCBn
ZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7
CiAgICAgdmlydHVhbCBTdHJpbmcgcmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKGludCBpbmRleCwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSkgPSAwOwogICAgIHZpcnR1YWwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21Q
YXN0ZWJvYXJkKGludCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwotICAgIHZpcnR1YWwgVVJMIHJlYWRVUkxGcm9t
UGFzdGVib2FyZChpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKKyAgICB2aXJ0dWFsIFVSTCByZWFkVVJMRnJv
bVBhc3RlYm9hcmQoaW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxlKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIGdldEZpbGVuYW1lc0ZvckRhdGFJbnRlcmFjdGlvbihWZWN0b3I8U3RyaW5nPiYgZmls
ZW5hbWVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIGdldFR5cGVzQnlGaWRlbGl0eUZvckl0ZW1BdEluZGV4KFZlY3RvcjxTdHJpbmc+JiB0eXBl
cywgdWludDY0X3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKICNl
bmRpZiAvLyBQTEFURk9STShJT1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QbGF0Zm9ybVBhc3RlYm9hcmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3Jt
UGFzdGVib2FyZC5oCmluZGV4IDUzYjJjZDk0NmVhZGQ5MWYzYTk0NDhiZDZhZTE2YWM2MWI2MWMx
OTAuLjMyMTMyNGNmODFhN2E4ZmNhOWZmOTAyNjExNmZkMWNmZDg4ODRlZjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oCkBAIC04Myw3ICs4Myw3IEBA
IHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHdyaXRlKGNvbnN0IFBhc3RlYm9hcmRV
UkwmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVy
KGludCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7CiAgICAgV0VCQ09SRV9F
WFBPUlQgU3RyaW5nIHJlYWRTdHJpbmcoaW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBVUkwgcmVhZFVSTChpbnQgaW5kZXgsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpOworICAgIFdFQkNPUkVfRVhQT1JUIFVSTCByZWFkVVJM
KGludCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgU3RyaW5nJiB0aXRsZSk7
CiAgICAgV0VCQ09SRV9FWFBPUlQgaW50IGNvdW50KCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgaW50
IG51bWJlck9mRmlsZXMoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL1Bhc3RlYm9hcmRJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVi
b2FyZElPUy5tbQppbmRleCAzOWNhNTdiODE5NmQ1YjJlYmI0ODZmMjMzMWUwNDdjYzNiMzI3N2Yz
Li42NWE3Njc4NTExMDAwOWFmMmZiYzEzOGMyZjVlMDE0MzViMzNkZTljIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQpAQCAtMTkzLDggKzE5Myw5IEBA
IHN0YXRpYyBib29sIHJlYWRQYXN0ZWJvYXJkV2ViQ29udGVudERhdGFGb3JUeXBlKFBhc3RlYm9h
cmRXZWJDb250ZW50UmVhZGVyJiByZWFkCiAgICAgfQogCiAgICAgaWYgKFt0eXBlIGlzRXF1YWxU
b1N0cmluZzooTlNTdHJpbmcgKilrVVRUeXBlVVJMXSkgewotICAgICAgICBVUkwgdXJsID0gc3Ry
YXRlZ3kucmVhZFVSTEZyb21QYXN0ZWJvYXJkKGl0ZW1JbmRleCwga1VUVHlwZVVSTCwgcGFzdGVi
b2FyZE5hbWUpOwotICAgICAgICByZXR1cm4gIXVybC5pc051bGwoKSAmJiByZWFkZXIucmVhZFVS
TCh1cmwsIFN0cmluZygpKTsKKyAgICAgICAgU3RyaW5nIHRpdGxlOworICAgICAgICBVUkwgdXJs
ID0gc3RyYXRlZ3kucmVhZFVSTEZyb21QYXN0ZWJvYXJkKGl0ZW1JbmRleCwga1VUVHlwZVVSTCwg
cGFzdGVib2FyZE5hbWUsIHRpdGxlKTsKKyAgICAgICAgcmV0dXJuICF1cmwuaXNOdWxsKCkgJiYg
cmVhZGVyLnJlYWRVUkwodXJsLCB0aXRsZSk7CiAgICAgfQogCiAgICAgaWYgKFVUVHlwZUNvbmZv
cm1zVG8oKENGU3RyaW5nUmVmKXR5cGUsIGtVVFR5cGVUZXh0KSkgewpAQCAtMzI4LDcgKzMyOSw4
IEBAIFN0cmluZyBQYXN0ZWJvYXJkOjpyZWFkU3RyaW5nKGNvbnN0IFN0cmluZyYgdHlwZSkKICAg
ICBOU1N0cmluZyAqY29jb2FWYWx1ZSA9IG5pbDsKIAogICAgIGlmIChbY29jb2FUeXBlIGlzRXF1
YWxUb1N0cmluZzooTlNTdHJpbmcgKilrVVRUeXBlVVJMXSkgewotICAgICAgICBVUkwgdXJsID0g
c3RyYXRlZ3kucmVhZFVSTEZyb21QYXN0ZWJvYXJkKDAsIGtVVFR5cGVVUkwsIG1fcGFzdGVib2Fy
ZE5hbWUpOworICAgICAgICBTdHJpbmcgdGl0bGU7CisgICAgICAgIFVSTCB1cmwgPSBzdHJhdGVn
eS5yZWFkVVJMRnJvbVBhc3RlYm9hcmQoMCwga1VUVHlwZVVSTCwgbV9wYXN0ZWJvYXJkTmFtZSwg
dGl0bGUpOwogICAgICAgICBpZiAoIXVybC5pc051bGwoKSkKICAgICAgICAgICAgIGNvY29hVmFs
dWUgPSBbKE5TVVJMICopdXJsIGFic29sdXRlU3RyaW5nXTsKICAgICB9IGVsc2UgaWYgKFtjb2Nv
YVR5cGUgaXNFcXVhbFRvU3RyaW5nOihOU1N0cmluZyAqKWtVVFR5cGVUZXh0XSkgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0K
aW5kZXggZDI2NWIxNmM2ZDgzNWNkMzMxYjczNjhhMWY0OGM4MjA4YTRkZGQ5NS4uZjBkZTA4MjE5
NzA5MjlkMjhhMzlhNzNmZTNiNWIyNzgwMzc1NzllNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tCkBAIC0zODksNyArMzg5
LDcgQEAgU3RyaW5nIFBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZFN0cmluZyhpbnQgaW5kZXgsIGNv
bnN0IFN0cmluZyYgdHlwZSkKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKLVVSTCBQbGF0Zm9y
bVBhc3RlYm9hcmQ6OnJlYWRVUkwoaW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpCitVUkwg
UGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkVVJMKGludCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBl
LCBTdHJpbmcmIHRpdGxlKQogewogICAgIE5TSW5kZXhTZXQgKmluZGV4U2V0ID0gW05TSW5kZXhT
ZXQgaW5kZXhTZXRXaXRoSW5kZXg6aW5kZXhdOwogCkBAIC00MDMsNiArNDAzLDExIEBAIFVSTCBQ
bGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRVUkwoaW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUp
CiAgICAgaWYgKCFbdmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNVUkwgY2xhc3NdXSkKICAgICAgICAg
cmV0dXJuIFVSTCgpOwogCisjaWYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0g
MTEwMDAwCisgICAgaWYgKFt2YWx1ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF90aXRs
ZSldKQorICAgICAgICB0aXRsZSA9IFt2YWx1ZSBfdGl0bGVdOworI2VuZGlmCisKICAgICByZXR1
cm4gKE5TVVJMICopdmFsdWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oIGIvU291cmNlL1dlYktpdC9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKaW5kZXggZmEzODM0ODA0ZWNi
MGQyMDE2YzMxMzUwNjM1ZjMzZjkwZmJkY2VlOS4uZGE0ZWM0NzQxMzZhZDE3ZTEyMGJhNmJhM2Y3
NWMwMWJmNzBkNmM0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKQEAgLTY1LDcgKzY1LDcgQEAgcHJpdmF0
ZToKICAgICBpbnQgZ2V0UGFzdGVib2FyZEl0ZW1zQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSkgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIHJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChp
bnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUpIG92ZXJyaWRlOwogICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
IHJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwotICAgIFdl
YkNvcmU6OlVSTCByZWFkVVJMRnJvbVBhc3RlYm9hcmQoaW50IGluZGV4LCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsK
KyAgICBXZWJDb3JlOjpVUkwgcmVhZFVSTEZyb21QYXN0ZWJvYXJkKGludCBpbmRleCwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU3Ry
aW5nJiB0aXRsZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRGaWxlbmFtZXNGb3JEYXRhSW50ZXJh
Y3Rpb24oVmVjdG9yPFN0cmluZz4mIGZpbGVuYW1lcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRUeXBlc0J5RmlkZWxpdHlGb3JJdGVtQXRJbmRl
eChWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIHVpbnQ2NF90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tIGIvU291cmNlL1dl
YktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCmluZGV4IGFm
NDBlMTc2MzNiZDBiZjc2NTE0OWNkMTc0NTJjZWE3MTJhNWYzZjkuLjc0YmM3YWZlNGUwZDRjZTQ3
NGNkN2YyZDcxM2M0YzgwYjI0NDE5Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0KQEAgLTIyMSw5ICsy
MjEsOSBAQCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChpbgogICAgIHJldHVybiBQbGF0Zm9ybVBhc3Rl
Ym9hcmQocGFzdGVib2FyZE5hbWUpLnJlYWRCdWZmZXIoaW5kZXgsIHR5cGUpOwogfQogCi1XZWJD
b3JlOjpVUkwgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkVVJMRnJvbVBhc3RlYm9hcmQoaW50
IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUp
CitXZWJDb3JlOjpVUkwgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkVVJMRnJvbVBhc3RlYm9h
cmQoaW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIFN0cmluZyYgdGl0bGUpCiB7Ci0gICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChw
YXN0ZWJvYXJkTmFtZSkucmVhZFVSTChpbmRleCwgdHlwZSk7CisgICAgcmV0dXJuIFBsYXRmb3Jt
UGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkucmVhZFVSTChpbmRleCwgdHlwZSwgdGl0bGUpOwog
fQogCiBTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkU3RyaW5nRnJvbVBhc3RlYm9h
cmQoaW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1t
IGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQppbmRleCA2ZGE5MzBhYmZl
MjM1ZDk1OGNmYjAwNGIzNjAzMWYxMTVmZDdiNDM4Li5lYzkzODNkZjk2ZmZiZTk4NzA4ZDM1NmY5
YzUyNDY3OGMwOGNkZjhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dl
YkZyYW1lLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KQEAg
LTIyMTYsNiArMjIxNiwxMyBAQCAtICh2b2lkKV9jbGVhck9wZW5lcgogICAgICAgICBjb3JlRnJh
bWUtPmxvYWRlcigpLnNldE9wZW5lcigwKTsKIH0KIAorLSAoQk9PTCloYXNSaWNobHlFZGl0YWJs
ZURyYWdDYXJldAoreworICAgIGlmIChhdXRvKiBwYWdlID0gY29yZShzZWxmKS0+cGFnZSgpKQor
ICAgICAgICByZXR1cm4gcGFnZS0+ZHJhZ0NhcmV0Q29udHJvbGxlcigpLmlzQ29udGVudFJpY2hs
eUVkaXRhYmxlKCk7CisgICAgcmV0dXJuIE5POworfQorCiAvLyBVc2VkIGJ5IHBhZ2luYXRpb24g
Y29kZSBjYWxsZWQgZnJvbSBBcHBLaXQgd2hlbiBhIHN0YW5kYWxvbmUgd2ViIHBhZ2UgaXMgcHJp
bnRlZC4KIC0gKE5TQXJyYXkgKilfY29tcHV0ZVBhZ2VSZWN0c1dpdGhQcmludFNjYWxlRmFjdG9y
OihmbG9hdClwcmludFNjYWxlRmFjdG9yIHBhZ2VTaXplOihOU1NpemUpcGFnZVNpemUKIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWVQcml2YXRlLmggYi9T
b3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lUHJpdmF0ZS5oCmluZGV4IDViZjAyNGE3
YzQ0Y2RmN2UzOTE0MTYyODdlYWNjY2ZjNzhmYzdhNmYuLjZhOTM4YzI0NDc4MjkyODE2NzBiNmIx
MWM5YzBkMDgwMGRkZjY3NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViRnJhbWVQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFt
ZVByaXZhdGUuaApAQCAtMjc3LDYgKzI3Nyw5IEBAIHR5cGVkZWYgZW51bSB7CiAvLyBQcmludGlu
Zy4KIC0gKE5TQXJyYXkgKilfY29tcHV0ZVBhZ2VSZWN0c1dpdGhQcmludFNjYWxlRmFjdG9yOihm
bG9hdClwcmludFdpZHRoU2NhbGVGYWN0b3IgcGFnZVNpemU6KE5TU2l6ZSlwYWdlU2l6ZTsKIAor
Ly8gRHJhZyBhbmQgZHJvcCBzdXBwb3J0LgorQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5
KSBCT09MIGhhc1JpY2hseUVkaXRhYmxlRHJhZ0NhcmV0OworCiAjaWYgVEFSR0VUX09TX0lQSE9O
RQogLSAoRE9NRG9jdW1lbnRGcmFnbWVudCAqKV9kb2N1bWVudEZyYWdtZW50Rm9yVGV4dDooTlNT
dHJpbmcgKil0ZXh0OwogLy8gVGhlc2UgaGF2ZSB0aGUgc2lkZSBlZmZlY3Qgb2YgYWRkaW5nIHN1
YnJlc291cmNlcyB0byBvdXIgV2ViRGF0YVNvdXJjZSB3aGVyZSBhcHByb3ByaWF0ZS4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlD
b2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJv
eHlDb2NvYS5tbQppbmRleCBjOTY4MTk3YmZhMDQzZDkzN2ViMjdjOWM0NjQ3MzI2NjY0Y2NjY2Nl
Li45Y2MxYjg3OTRmZmZjYzU2YWIzMDZkMTkxYTE2NjJjOThjYjYyMzQwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW0K
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlBhc3RlYm9hcmRQcm94eUNv
Y29hLm1tCkBAIC0xNzAsOSArMTcwLDkgQEAgdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnJlYWRT
dHJpbmdGcm9tUGFzdGVib2FyZCh1aW50NjRfdCBpbmRleCwgY29uc3QgU3RyaW5nJgogICAgIHZh
bHVlID0gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5yZWFkU3RyaW5nKGluZGV4
LCBwYXN0ZWJvYXJkVHlwZSk7CiB9CiAKLXZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpyZWFkVVJM
RnJvbVBhc3RlYm9hcmQodWludDY0X3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdXJsKQordm9pZCBXZWJQ
YXN0ZWJvYXJkUHJveHk6OnJlYWRVUkxGcm9tUGFzdGVib2FyZCh1aW50NjRfdCBpbmRleCwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
U3RyaW5nJiB1cmwsIFN0cmluZyYgdGl0bGUpCiB7Ci0gICAgdXJsID0gUGxhdGZvcm1QYXN0ZWJv
YXJkKHBhc3RlYm9hcmROYW1lKS5yZWFkVVJMKGluZGV4LCBwYXN0ZWJvYXJkVHlwZSk7CisgICAg
dXJsID0gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5yZWFkVVJMKGluZGV4LCBw
YXN0ZWJvYXJkVHlwZSwgdGl0bGUpOwogfQogCiB2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6cmVh
ZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHVpbnQ2NF90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTaGFyZWRNZW1vcnk6Okhh
bmRsZSYgaGFuZGxlLCB1aW50NjRfdCYgc2l6ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYXN0ZWJvYXJkUHJveHkuaAppbmRleCBiZjk0NmM0NWY2NDc5MzM1YTNiODY2NWNjOWFj
NGE1NWVmNjE2MzMyLi5iNWE1MzFhOTYwMjRhZWE5NzY5M2M0NmE3NjBmMjczNDc3YTk0NzEzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5LmgK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5oCkBAIC03
NSw3ICs3NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3cml0ZUltYWdlVG9QYXN0ZWJvYXJkKGNv
bnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRJbWFnZSYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUpOwogICAgIHZvaWQgd3JpdGVTdHJpbmdUb1Bhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSk7
CiAgICAgdm9pZCByZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQodWludDY0X3QgaW5kZXgsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFdU
Rjo6U3RyaW5nJik7Ci0gICAgdm9pZCByZWFkVVJMRnJvbVBhc3RlYm9hcmQodWludDY0X3QgaW5k
ZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIFN0cmluZyYpOworICAgIHZvaWQgcmVhZFVSTEZyb21QYXN0ZWJvYXJkKHVpbnQ2NF90
IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBTdHJpbmcmIHVybCwgU3RyaW5nJiB0aXRsZSk7CiAgICAgdm9pZCByZWFkQnVm
ZmVyRnJvbVBhc3RlYm9hcmQodWludDY0X3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFNoYXJlZE1lbW9yeTo6SGFuZGxl
JiwgdWludDY0X3QmIHNpemUpOwogICAgIHZvaWQgZ2V0UGFzdGVib2FyZEl0ZW1zQ291bnQoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgdWludDY0X3QmIGl0ZW1zQ291bnQpOwogICAgIHZv
aWQgZ2V0RmlsZW5hbWVzRm9yRGF0YUludGVyYWN0aW9uKGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIFZlY3RvcjxTdHJpbmc+JiBmaWxlbmFtZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkubWVzc2FnZXMuaW4KaW5kZXggOGE5
MzZjNTMwNDdmZjMzM2M1MGUxYWYxNjE2ZmY1MWQzZjBmNTk0NC4uMjQxNDI1ZGFiNDFhZGQxNGI1
MDlmMDZmNzZkMTgwNjBjM2YxMDc0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5Lm1lc3NhZ2VzLmluCkBAIC0yNyw3ICsyNyw3IEBA
IG1lc3NhZ2VzIC0+IFdlYlBhc3RlYm9hcmRQcm94eSB7CiAgICAgV3JpdGVJbWFnZVRvUGFzdGVi
b2FyZChzdHJ1Y3QgV2ViQ29yZTo6UGFzdGVib2FyZEltYWdlIHBhc3RlYm9hcmRJbWFnZSwgU3Ry
aW5nIHBhc3RlYm9hcmROYW1lKQogICAgIFdyaXRlU3RyaW5nVG9QYXN0ZWJvYXJkKFN0cmluZyBw
YXN0ZWJvYXJkVHlwZSwgU3RyaW5nIHRleHQsIFN0cmluZyBwYXN0ZWJvYXJkTmFtZSkKICAgICBS
ZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQodWludDY0X3QgaW5kZXgsIFN0cmluZyBwYXN0ZWJvYXJk
VHlwZSwgU3RyaW5nIHBhc3RlYm9hcmROYW1lKSAtPiAoU3RyaW5nIHN0cmluZykKLSAgICBSZWFk
VVJMRnJvbVBhc3RlYm9hcmQodWludDY0X3QgaW5kZXgsIFN0cmluZyBwYXN0ZWJvYXJkVHlwZSwg
U3RyaW5nIHBhc3RlYm9hcmROYW1lKSAtPiAoU3RyaW5nIHN0cmluZykKKyAgICBSZWFkVVJMRnJv
bVBhc3RlYm9hcmQodWludDY0X3QgaW5kZXgsIFN0cmluZyBwYXN0ZWJvYXJkVHlwZSwgU3RyaW5n
IHBhc3RlYm9hcmROYW1lKSAtPiAoU3RyaW5nIHVybCwgU3RyaW5nIHRpdGxlKQogICAgIFJlYWRC
dWZmZXJGcm9tUGFzdGVib2FyZCh1aW50NjRfdCBpbmRleCwgU3RyaW5nIHBhc3RlYm9hcmRUeXBl
LCBTdHJpbmcgcGFzdGVib2FyZE5hbWUpIC0+IChXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SGFuZGxl
IGhhbmRsZSwgdWludDY0X3Qgc2l6ZSkKICAgICBHZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChTdHJp
bmcgcGFzdGVib2FyZE5hbWUpIC0+ICh1aW50NjRfdCBpdGVtc0NvdW50KQogICAgIEdldEZpbGVu
YW1lc0ZvckRhdGFJbnRlcmFjdGlvbihTdHJpbmcgcGFzdGVib2FyZE5hbWUpIC0+IChWZWN0b3I8
U3RyaW5nPiBmaWxlbmFtZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKaW5k
ZXggM2Q0Zjk2MGU1M2I3ZTdmYzk2NjkyMzViMjZmNTQxZTMyNmYxMmZjZi4uMjQ4NjJiZDQxYTZm
YTM3NTMxZjc3N2E3OTdkYzE0N2IwZGJmMjNiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJh
dGVnaWVzLmNwcApAQCAtMzM1LDEwICszMzUsMTAgQEAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaW4K
ICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hh
ciAqPihzaGFyZWRNZW1vcnlCdWZmZXItPmRhdGEoKSksIHNpemUpOwogfQogCi1XZWJDb3JlOjpV
UkwgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkVVJMRnJvbVBhc3RlYm9hcmQoaW50IGluZGV4
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lKQorV2ViQ29yZTo6VVJMIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZFVSTEZyb21QYXN0
ZWJvYXJkKGludCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRsZSkKIHsKICAgICBTdHJpbmcgdXJsU3Ry
aW5nOwotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9u
KCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OlJlYWRVUkxGcm9tUGFz
dGVib2FyZChpbmRleCwgcGFzdGVib2FyZFR5cGUsIHBhc3RlYm9hcmROYW1lKSwgTWVzc2FnZXM6
OldlYlBhc3RlYm9hcmRQcm94eTo6UmVhZFVSTEZyb21QYXN0ZWJvYXJkOjpSZXBseSh1cmxTdHJp
bmcpLCAwKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVj
dGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpSZWFkVVJMRnJv
bVBhc3RlYm9hcmQoaW5kZXgsIHBhc3RlYm9hcmRUeXBlLCBwYXN0ZWJvYXJkTmFtZSksIE1lc3Nh
Z2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OlJlYWRVUkxGcm9tUGFzdGVib2FyZDo6UmVwbHkodXJs
U3RyaW5nLCB0aXRsZSksIDApOwogICAgIHJldHVybiBVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmxT
dHJpbmcpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAppbmRleCAyM2I0ZmVj
NDhhZmVlNWFmMWEwZGY3MGM4NTIwZWIxOGNkYjAxNzZhLi5jODBmYWZjYWFlMzNjYmI2NDEzNjMz
ZDFmNjdiMGVhYmY0NDcyYmY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKQEAg
LTY2LDcgKzY2LDcgQEAgcHJpdmF0ZToKICAgICBpbnQgZ2V0UGFzdGVib2FyZEl0ZW1zQ291bnQo
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIHJlYWRT
dHJpbmdGcm9tUGFzdGVib2FyZChpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwogICAgIFJlZlB0cjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChpbnQgaW5kZXgs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUpIG92ZXJyaWRlOwotICAgIFdlYkNvcmU6OlVSTCByZWFkVVJMRnJvbVBhc3RlYm9hcmQoaW50
IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lKSBvdmVycmlkZTsKKyAgICBXZWJDb3JlOjpVUkwgcmVhZFVSTEZyb21QYXN0ZWJv
YXJkKGludCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRsZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRG
aWxlbmFtZXNGb3JEYXRhSW50ZXJhY3Rpb24oVmVjdG9yPFN0cmluZz4mIGZpbGVuYW1lcywgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRUeXBlc0J5
RmlkZWxpdHlGb3JJdGVtQXRJbmRleChWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIHVpbnQ2NF90IGlu
ZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2Vi
RWRpdG9yQ2xpZW50SU9TLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9pb3MvV2ViRWRpdG9yQ2xpZW50SU9TLm1tCmluZGV4IDQwODc4N2ZlMmE1NTJiNDIxODg4
NDI1YTdjNGNlNDM2ZjNmYmQzYzMuLjM3YzlmN2YzMmRiMDNiYTVkM2RhNTlhZjg0NTgxOTUxMDgw
NGJhZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvaW9zL1dlYkVkaXRvckNsaWVudElPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJFZGl0b3JDbGllbnRJT1MubW0KQEAgLTEwMSw4ICsx
MDEsNyBAQCBOU0FycmF5KiBXZWJFZGl0b3JDbGllbnQ6OnJlYWREYXRhRnJvbVBhc3RlYm9hcmQo
TlNTdHJpbmcqLCBpbnQpCiAKIGJvb2wgV2ViRWRpdG9yQ2xpZW50OjpoYXNSaWNobHlFZGl0YWJs
ZVNlbGVjdGlvbigpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gZmFsc2U7
CisgICAgcmV0dXJuIG1fcGFnZS0+aGFzUmljaGx5RWRpdGFibGVTZWxlY3Rpb24oKTsKIH0KIAog
aW50IFdlYkVkaXRvckNsaWVudDo6Z2V0UGFzdGVib2FyZEl0ZW1zQ291bnQoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDQ5NDc5ZjFmMzM0
MTM0ZTk3ZjNiZDdhMWZkMWI1NTI3ODFiNTBlYjQuLmM3MjM5NjkyYzNjMWUwNmEzYzYxMTMyYzIw
MDQxNjFmMWZjZmJmZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAKQEAgLTM4NjksNiArMzg2OSwxNSBAQCB2b2lkIFdlYlBhZ2U6OmFkdmFuY2VU
b05leHRNaXNzcGVsbGluZyhib29sIHN0YXJ0QmVmb3JlU2VsZWN0aW9uKQogfQogI2VuZGlmCiAK
K2Jvb2wgV2ViUGFnZTo6aGFzUmljaGx5RWRpdGFibGVTZWxlY3Rpb24oKSBjb25zdAoreworICAg
IGF1dG8mIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJh
bWUoKTsKKyAgICBpZiAobV9wYWdlLT5kcmFnQ2FyZXRDb250cm9sbGVyKCkuaXNDb250ZW50Umlj
aGx5RWRpdGFibGUoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICByZXR1cm4gZnJhbWUu
c2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuaXNDb250ZW50UmljaGx5RWRpdGFibGUoKTsKK30KKwog
dm9pZCBXZWJQYWdlOjpjaGFuZ2VTcGVsbGluZ1RvV29yZChjb25zdCBTdHJpbmcmIHdvcmQpCiB7
CiAgICAgcmVwbGFjZVNlbGVjdGlvbldpdGhUZXh0KCZtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigp
LmZvY3VzZWRPck1haW5GcmFtZSgpLCB3b3JkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDBiMDU2MWJiMTY3ZDUwMTE1ZjMxMTQxZjIzNGE1N2Rk
NGIxNGNjNjcuLmFiOGM3ODBjYjVmMmY2OGM2M2MwMzI4ZGQ0ZDBkZDM0OTQ2ZDg4OGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtNTk5LDYgKzU5
OSw3IEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lkIHNldEZvcmNlQWx3YXlzVXNlclNjYWxhYmxl
KGJvb2wpOwogI2VuZGlmCisgICAgYm9vbCBoYXNSaWNobHlFZGl0YWJsZVNlbGVjdGlvbigpIGNv
bnN0OwogCiAgICAgdm9pZCBzZXRMYXllclRyZWVTdGF0ZUlzRnJvemVuKGJvb2wpOwogICAgIHZv
aWQgbWFya0xheWVyc1ZvbGF0aWxlKHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4gY29tcGxldGlvbkhh
bmRsZXIgPSB7IH0pOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdl
TG9nCmluZGV4IGY4ZTVmZDM5YWNmOTQwNWZlZjkzMDEzZTY2NDgyYmM2OGE3MGU0OWIuLjMxNjc2
MjM2MjA0OGNiNmFkZTAwNzM5ZDM1MzBhOWU1MDdlODViNzQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0No
YW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxNy0wNC0y
MiAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBTdXBw
b3J0IHJlYWRpbmcgTlNVUkwgdGl0bGVzIGZyb20gdGhlIHBhc3RlYm9hcmQgd2hlbiBwZXJmb3Jt
aW5nIGRhdGEgaW50ZXJhY3Rpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE3MTE1NgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzEzNTY5Mzc+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgVGltIEhvcnRvbi4KKworICAgICAgICBBZGRzIGEgbmV3IHVu
aXQgdGVzdCwgRGF0YUludGVyYWN0aW9uVGVzdHMuRXh0ZXJuYWxTb3VyY2VUaXRsZWROU1VSTC4K
KworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL0RhdGFJbnRlcmFjdGlvblRlc3Rz
Lm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisKIDIwMTctMDQtMjQgIFdlbnNv
biBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgUmVzcGVjdCBmaWRl
bGl0eSBvcmRlciB3aGVuIHJlYWRpbmcgd2ViIGNvbnRlbnQgZnJvbSBpdGVtIHByb3ZpZGVycwpk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvRGF0YUludGVyYWN0aW9u
VGVzdHMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9EYXRhSW50ZXJhY3Rpb25U
ZXN0cy5tbQppbmRleCBmNDBkNmJlM2FmMjAxYWVlM2Y2YzI5NDliOGU3N2MyZWQwMjBiYzgyLi45
NTJkMWM4NDVlZGU0MGJiZDRhY2I1YWE2ZDgwYmQ0Y2Q3NDQ0NDE2IDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9EYXRhSW50ZXJhY3Rpb25UZXN0cy5tbQorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9EYXRhSW50ZXJhY3Rpb25UZXN0cy5tbQpAQCAt
NTM0LDYgKzUzNCwyNSBAQCBURVNUKERhdGFJbnRlcmFjdGlvblRlc3RzLCBFeHRlcm5hbFNvdXJj
ZUpQRUdPbmx5KQogICAgIGNoZWNrU2VsZWN0aW9uUmVjdHNXaXRoTG9nZ2luZyhAWyBtYWtlQ0dS
ZWN0VmFsdWUoMSwgMjAxLCAyMTUsIDE3NCkgXSwgW2RhdGFJbnRlcmFjdGlvblNpbXVsYXRvciBm
aW5hbFNlbGVjdGlvblJlY3RzXSk7CiB9CiAKK1RFU1QoRGF0YUludGVyYWN0aW9uVGVzdHMsIEV4
dGVybmFsU291cmNlVGl0bGVkTlNVUkwpCit7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhb
W1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAzMjAs
IDUwMCldKTsKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZFRlc3RQYWdlTmFtZWQ6QCJh
dXRvZm9jdXMtY29udGVudGVkaXRhYmxlIl07CisgICAgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0
aW5nSmF2YVNjcmlwdDpAImdldFNlbGVjdGlvbigpLnJlbW92ZUFsbFJhbmdlcygpIl07CisKKyAg
ICBOU1VSTCAqdGl0bGVkVVJMID0gW05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwczovL3d3dy5h
cHBsZS5jb20iXTsKKyAgICB0aXRsZWRVUkwuX3RpdGxlID0gQCJBcHBsZSI7CisgICAgYXV0byBz
aW11bGF0ZWRJdGVtUHJvdmlkZXIgPSBhZG9wdE5TKFtbVUlJdGVtUHJvdmlkZXIgYWxsb2NdIGlu
aXRdKTsKKyAgICBbc2ltdWxhdGVkSXRlbVByb3ZpZGVyIHJlZ2lzdGVyT2JqZWN0OnRpdGxlZFVS
TCB2aXNpYmlsaXR5Ok5TSXRlbVByb3ZpZGVyUmVwcmVzZW50YXRpb25WaXNpYmlsaXR5QWxsXTsK
KworICAgIGF1dG8gZGF0YUludGVyYWN0aW9uU2ltdWxhdG9yID0gYWRvcHROUyhbW0RhdGFJbnRl
cmFjdGlvblNpbXVsYXRvciBhbGxvY10gaW5pdFdpdGhXZWJWaWV3OndlYlZpZXcuZ2V0KCldKTsK
KyAgICBbZGF0YUludGVyYWN0aW9uU2ltdWxhdG9yIHNldEV4dGVybmFsSXRlbVByb3ZpZGVyczpA
WyBzaW11bGF0ZWRJdGVtUHJvdmlkZXIuZ2V0KCkgXV07CisgICAgW2RhdGFJbnRlcmFjdGlvblNp
bXVsYXRvciBydW5Gcm9tOkNHUG9pbnRNYWtlKDMwMCwgNDAwKSB0bzpDR1BvaW50TWFrZSgxMDAs
IDMwMCldOworCisgICAgRVhQRUNUX1dLX1NUUkVRKCJBcHBsZSIsIFt3ZWJWaWV3IHN0cmluZ0J5
RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJlZGl0b3IucXVlcnlTZWxlY3RvcignYScpLnRleHRDb250
ZW50Il0pOworICAgIEVYUEVDVF9XS19TVFJFUSgiaHR0cHM6Ly93d3cuYXBwbGUuY29tLyIsIFt3
ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJlZGl0b3IucXVlcnlTZWxlY3Rv
cignYScpLmhyZWYiXSk7Cit9CisKIFRFU1QoRGF0YUludGVyYWN0aW9uVGVzdHMsIE92ZXJyaWRl
RGF0YUludGVyYWN0aW9uT3BlcmF0aW9uKQogewogICAgIFJldGFpblB0cjxUZXN0V0tXZWJWaWV3
PiB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6
Q0dSZWN0TWFrZSgwLCAwLCAzMjAsIDUwMCldKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>308059</attachid>
            <date>2017-04-24 21:03:40 -0700</date>
            <delta_ts>2017-04-25 00:01:02 -0700</delta_ts>
            <desc>Fix OpenSource iOS build</desc>
            <filename>bug-171156-20170424210339.patch</filename>
            <type>text/plain</type>
            <size>27366</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE1NzE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmY4MDM5OGRlYzVlNzk2
YjgzOWYxYzZkNTA1MjI2ZjQ5MTlhMTYyZi4uYmIzMmE3MTNjYjMyOTY0MTkyMzBmOTU4ZTYyYTVi
MDI0Mjg1ZTQ3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDE3LTA0LTIyICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFN1cHBvcnQgcmVh
ZGluZyBOU1VSTCB0aXRsZXMgZnJvbSB0aGUgcGFzdGVib2FyZCB3aGVuIHBlcmZvcm1pbmcgZGF0
YSBpbnRlcmFjdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTcxMTU2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zMTM1NjkzNz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBUaW0gSG9ydG9uLgorCisgICAgICAgIFN1cHBvcnQgcmVhZGluZyBsaW5r
IHRpdGxlcyBmcm9tIHRoZSBwYXN0ZWJvYXJkIHdoZW4gcGVyZm9ybWluZyBkYXRhIGludGVyYWN0
aW9uLiBUbyBkbyB0aGlzLCB3ZSByZWZhY3RvcgorICAgICAgICBQYXN0ZWJvYXJkOjpyZWFkVVJM
IHRvIHRha2UgaW4gYW4gYWRkaXRpb25hbCBTdHJpbmcmIHRpdGxlIHdoaWNoIGlzIHVsdGltYXRl
bHkgcGx1bWJlZCB0byB0aGUgUGxhdGZvcm1QYXN0ZWJvYXJkCisgICAgICAgIHdoZXJlIGl0IGlz
IHNldCB0byB0aGUgdmFsdWUgb2YgLVtOU1VSTCBfdGl0bGVdLgorCisgICAgICAgIFRlc3Q6IERh
dGFJbnRlcmFjdGlvblRlc3RzLkV4dGVybmFsU291cmNlVGl0bGVkTlNVUkwuCisKKyAgICAgICAg
KiBlZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmg6CisgICAgICAgICogZWRpdGluZy9pb3MvRWRpdG9y
SU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpXZWJDb250ZW50UmVhZGVyOjpyZWFk
VVJMKToKKyAgICAgICAgKiBwYWdlL0RyYWdDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRyYWdDb250cm9sbGVyOjpwZXJmb3JtRHJhZ09wZXJhdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpEcmFnQ29udHJvbGxlcjo6Y29uY2x1ZGVFZGl0RHJhZyk6CisKKyAgICAgICAgTW92ZSBj
YWxscyB0byBjbGVhckRyYWdDYXJldCgpIG91dCBvZiBjb25jbHVkZUVkaXREcmFnIGFuZCBpbnRv
IHRoZSBjYWxsIHNpdGUsIGluIHBlcmZvcm1EcmFnT3BlcmF0aW9uIGFmdGVyCisgICAgICAgIGF0
dGVtcHRpbmcgdG8gY29uY2x1ZGVFZGl0RHJhZy4gVGhpcyBpcyBkb25lIHNvIHRoYXQgaWYgdGhl
IFdlYkVkaXRvckNsaWVudCBxdWVyaWVzIHdoZXRoZXIgdGhlIGRyYWcgY2FyZXQgaXMKKyAgICAg
ICAgaW4gcmljaGx5IGVkaXRhYmxlIGNvbnRlbnQgZm9yIHRoZSBwdXJwb3NlcyBvZiBnZW5lcmF0
aW5nIGEgZG9jdW1lbnQgZnJhZ21lbnQgdG8gaW5zZXJ0LCB0aGUgYW5zd2VyIHdpbGwgbm90Cisg
ICAgICAgIGFsd2F5cyBiZSBmYWxzZSBhcyBhIGRyb3AgaXMgb2NjdXJyaW5nLgorCisgICAgICAg
ICogcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5Lmg6CisgICAgICAgICogcGxhdGZvcm0vUGxh
dGZvcm1QYXN0ZWJvYXJkLmg6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1Mu
bW06CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpyZXNwZWN0c1VUSUZpZGVsaXRpZXMp
OgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6cmVhZFN0cmluZyk6CisgICAgICAgICog
cGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6
OlBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZFVSTCk6CisKIDIwMTctMDQtMjQgIFdlbnNvbiBIc2ll
aCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgUmVzcGVjdCBmaWRlbGl0eSBv
cmRlciB3aGVuIHJlYWRpbmcgd2ViIGNvbnRlbnQgZnJvbSBpdGVtIHByb3ZpZGVycwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hh
bmdlTG9nCmluZGV4IDU3MThhZDhhYmQ2N2NiOTdlYWIzZDFmYjY1Y2VhZDkxYWRmZWEwMWEuLmUy
MTFhMDY2ODZlNGEwOTNmNTQwNDkwYTY3MGQ4YTAxNzkwZjlmZWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwyMCBAQAorMjAxNy0wNC0yMiAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVo
QGFwcGxlLmNvbT4KKworICAgICAgICBTdXBwb3J0IHJlYWRpbmcgTlNVUkwgdGl0bGVzIGZyb20g
dGhlIHBhc3RlYm9hcmQgd2hlbiBwZXJmb3JtaW5nIGRhdGEgaW50ZXJhY3Rpb24KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MTE1NgorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vMzEzNTY5Mzc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVGltIEhvcnRv
bi4KKworICAgICAgICBBZGQgYSBuZXcgV0sxIFNQSSBwcm9wZXJ0eSwgLVtXZWJGcmFtZSBoYXNS
aWNobHlFZGl0YWJsZURyYWdDYXJldF0uCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXMuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9y
bVN0cmF0ZWdpZXMubW06CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRVUkxG
cm9tUGFzdGVib2FyZCk6CisgICAgICAgICogV2ViVmlldy9XZWJGcmFtZS5tbToKKyAgICAgICAg
KC1bV2ViRnJhbWUgaGFzUmljaGx5RWRpdGFibGVEcmFnQ2FyZXRdKToKKyAgICAgICAgKiBXZWJW
aWV3L1dlYkZyYW1lUHJpdmF0ZS5oOgorCiAyMDE3LTA0LTI0ICBXZW5zb24gSHNpZWggIDx3ZW5z
b25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFJlc3BlY3QgZmlkZWxpdHkgb3JkZXIgd2hl
biByZWFkaW5nIHdlYiBjb250ZW50IGZyb20gaXRlbSBwcm92aWRlcnMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA3
NGNiOGY3MTdlOTVhYjUzYTE1MThhMjdhN2U1OTk0NjJkNmI0ZmRmLi4yY2ZhYzIxNDRhYWI4MDU2
YzQ1YjNhMmQ0ODFkMGRkMzhjYjNkNWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIw
MTctMDQtMjIgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAg
ICAgU3VwcG9ydCByZWFkaW5nIE5TVVJMIHRpdGxlcyBmcm9tIHRoZSBwYXN0ZWJvYXJkIHdoZW4g
cGVyZm9ybWluZyBkYXRhIGludGVyYWN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNzExNTYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMxMzU2
OTM3PgorCisgICAgICAgIFJldmlld2VkIGJ5IFRpbSBIb3J0b24uCisKKyAgICAgICAgQWRqdXN0
IGZvciBpbnRlcmZhY2UgY2hhbmdlcyBpbiBXZWJDb3JlIHRvIHN1cHBvcnQgcGx1bWJpbmcgdGhl
IHRpdGxlIG9mIGFuIE5TVVJMIGZyb20gdGhlIHBsYXRmb3JtIHBhc3RlYm9hcmQKKyAgICAgICAg
YmFjayB0byBXZWJDb3JlLiBBZGRpdGlvbmFsbHksIGltcGxlbWVudCBXZWJFZGl0b3JDbGllbnQ6
Omhhc1JpY2hseUVkaXRhYmxlU2VsZWN0aW9uICh3aGljaCBwcmV2aW91c2x5IHJldHVybmVkCisg
ICAgICAgIGZhbHNlKSB0byBjaGVjayB3aGV0aGVyIHRoZSBjdXJyZW50IHNlbGVjdGlvbiBpcyBy
aWNobHkgZWRpdGFibGUsIG9yIHRoZSBkcm9wIGNhcmV0IGlzIGluIHJpY2hseSBlZGl0YWJsZSBj
b250ZW50LgorICAgICAgICBTZWUgV2ViQ29yZSBDaGFuZ2VMb2cgZm9yIG1vcmUgZGV0YWlscy4K
KworICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2FyZFByb3h5OjpyZWFkVVJMRnJvbVBhc3RlYm9h
cmQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkVVJMRnJvbVBhc3RlYm9hcmQp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVn
aWVzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViRWRpdG9y
Q2xpZW50SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJFZGl0b3JDbGllbnQ6Omhhc1JpY2hs
eUVkaXRhYmxlU2VsZWN0aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6Omhhc1JpY2hseUVkaXRhYmxlU2VsZWN0
aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorCiAyMDE3LTA0
LTI0ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFJl
c3BlY3QgZmlkZWxpdHkgb3JkZXIgd2hlbiByZWFkaW5nIHdlYiBjb250ZW50IGZyb20gaXRlbSBw
cm92aWRlcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rp
b24uaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uaAppbmRleCAzNGQ4
YmJjODExNTNlYjIwZDI0OGUyYzdmMGRlOGMxNGU3ZjY4ZjQzLi5iZjEyN2M5ZWI3YzEyZTk1ZTBj
NmRiNzI4ZTY3NjIzZjczMTc3NGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0ZyYW1lU2VsZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVj
dGlvbi5oCkBAIC05Nyw3ICs5Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHBhaW50RHJhZ0NhcmV0
KEZyYW1lKiwgR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgTGF5b3V0UG9pbnQmLCBjb25zdCBMYXlv
dXRSZWN0JiBjbGlwUmVjdCkgY29uc3Q7CiAKICAgICBib29sIGlzQ29udGVudEVkaXRhYmxlKCkg
Y29uc3QgeyByZXR1cm4gbV9wb3NpdGlvbi5yb290RWRpdGFibGVFbGVtZW50KCk7IH0KLSAgICBi
b29sIGlzQ29udGVudFJpY2hseUVkaXRhYmxlKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQg
Ym9vbCBpc0NvbnRlbnRSaWNobHlFZGl0YWJsZSgpIGNvbnN0OwogCiAgICAgYm9vbCBoYXNDYXJl
dCgpIGNvbnN0IHsgcmV0dXJuIG1fcG9zaXRpb24uaXNOb3ROdWxsKCk7IH0KICAgICBjb25zdCBW
aXNpYmxlUG9zaXRpb24mIGNhcmV0UG9zaXRpb24oKSB7IHJldHVybiBtX3Bvc2l0aW9uOyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0KaW5kZXggODA1ODk4YWYxNmQ2MzY4
YmVjYWUzZjFhYTIyY2IyMjE5MzIzYzc3NS4uMmM1ZDYyMjk4OWVlNzhjMDcxODBhY2Q1ODgyZjA2
OGNhMTM1YjVlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRWRpdG9y
SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRvcklPUy5tbQpAQCAt
MzIwLDcgKzMyMCw3IEBAIGJvb2wgRWRpdG9yOjpXZWJDb250ZW50UmVhZGVyOjpyZWFkSW1hZ2Uo
UmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluCiAgICAgcmV0dXJuIGZyYWdt
ZW50OwogfQogCi1ib29sIEVkaXRvcjo6V2ViQ29udGVudFJlYWRlcjo6cmVhZFVSTChjb25zdCBV
UkwmIHVybCwgY29uc3QgU3RyaW5nJikKK2Jvb2wgRWRpdG9yOjpXZWJDb250ZW50UmVhZGVyOjpy
ZWFkVVJMKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHRpdGxlKQogewogICAgIGlmICh1
cmwuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0zNDgsNyArMzQ4LDkgQEAg
Ym9vbCBFZGl0b3I6OldlYkNvbnRlbnRSZWFkZXI6OnJlYWRVUkwoY29uc3QgVVJMJiB1cmwsIGNv
bnN0IFN0cmluZyYpCiAgICAgfSBlbHNlIHsKICAgICAgICAgYXV0byBhbmNob3IgPSBIVE1MQW5j
aG9yRWxlbWVudDo6Y3JlYXRlKCpmcmFtZS5kb2N1bWVudCgpKTsKICAgICAgICAgYW5jaG9yLT5z
ZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6aHJlZkF0dHIsIHVy
bC5zdHJpbmcoKSk7Ci0gICAgICAgIGFuY2hvci0+YXBwZW5kQ2hpbGQoZnJhbWUuZG9jdW1lbnQo
KS0+Y3JlYXRlVGV4dE5vZGUoW1soTlNVUkwgKil1cmwgYWJzb2x1dGVTdHJpbmddIHByZWNvbXBv
c2VkU3RyaW5nV2l0aENhbm9uaWNhbE1hcHBpbmddKSk7CisKKyAgICAgICAgU3RyaW5nIGxpbmtU
ZXh0ID0gdGl0bGUubGVuZ3RoKCkgPyB0aXRsZSA6IFN0cmluZyhbWyhOU1VSTCAqKXVybCBhYnNv
bHV0ZVN0cmluZ10gcHJlY29tcG9zZWRTdHJpbmdXaXRoQ2Fub25pY2FsTWFwcGluZ10pOworICAg
ICAgICBhbmNob3ItPmFwcGVuZENoaWxkKGZyYW1lLmRvY3VtZW50KCktPmNyZWF0ZVRleHROb2Rl
KGxpbmtUZXh0KSk7CiAKICAgICAgICAgYXV0byBuZXdGcmFnbWVudCA9IGZyYW1lLmRvY3VtZW50
KCktPmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTsKICAgICAgICAgbmV3RnJhZ21lbnQtPmFwcGVu
ZENoaWxkKGFuY2hvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250
cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCmluZGV4
IDQ4MDFjZWM4ZDliYzU5OTdiZmE4MmI1MjFlMDI1NTFiZGJiMDY5YTUuLmQ3Mzk0OGY2YzZlYzE2
ODIyZDliNjg3MTM2YTVmNDM0Nzg5YjhkMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRHJhZ0NvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRy
b2xsZXIuY3BwCkBAIC0yNDksMTAgKzI0OSwxMiBAQCBib29sIERyYWdDb250cm9sbGVyOjpwZXJm
b3JtRHJhZ09wZXJhdGlvbihjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEpCiAgICAgaWYgKChtX2Ry
YWdEZXN0aW5hdGlvbkFjdGlvbiAmIERyYWdEZXN0aW5hdGlvbkFjdGlvbkVkaXQpICYmIGNvbmNs
dWRlRWRpdERyYWcoZHJhZ0RhdGEpKSB7CiAgICAgICAgIG1fY2xpZW50LmRpZENvbmNsdWRlRWRp
dERyYWcoKTsKICAgICAgICAgbV9kb2N1bWVudFVuZGVyTW91c2UgPSBudWxscHRyOworICAgICAg
ICBjbGVhckRyYWdDYXJldCgpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKICAgICBt
X2RvY3VtZW50VW5kZXJNb3VzZSA9IG51bGxwdHI7CisgICAgY2xlYXJEcmFnQ2FyZXQoKTsKIAog
ICAgIGlmIChvcGVyYXRpb25Gb3JMb2FkKGRyYWdEYXRhKSA9PSBEcmFnT3BlcmF0aW9uTm9uZSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNTA4LDEzICs1MTAsMTAgQEAgYm9vbCBEcmFnQ29u
dHJvbGxlcjo6Y29uY2x1ZGVFZGl0RHJhZyhjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEpCiAgICAg
ICAgIHJldHVybiBmaWxlSW5wdXQtPnJlY2VpdmVEcm9wcGVkRmlsZXMoZHJhZ0RhdGEpOwogICAg
IH0KIAotICAgIGlmICghbV9wYWdlLmRyYWdDb250cm9sbGVyKCkuY2FuUHJvY2Vzc0RyYWcoZHJh
Z0RhdGEpKSB7Ci0gICAgICAgIGNsZWFyRHJhZ0NhcmV0KCk7CisgICAgaWYgKCFtX3BhZ2UuZHJh
Z0NvbnRyb2xsZXIoKS5jYW5Qcm9jZXNzRHJhZyhkcmFnRGF0YSkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICB9CiAKICAgICBWaXNpYmxlU2VsZWN0aW9uIGRyYWdDYXJldCA9IG1fcGFnZS5k
cmFnQ2FyZXRDb250cm9sbGVyKCkuY2FyZXRQb3NpdGlvbigpOwotICAgIGNsZWFyRHJhZ0NhcmV0
KCk7CiAgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IGRyYWdDYXJldC50b05vcm1hbGl6ZWRSYW5n
ZSgpOwogICAgIFJlZlB0cjxFbGVtZW50PiByb290RWRpdGFibGVFbGVtZW50ID0gaW5uZXJGcmFt
ZS0+c2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkucm9vdEVkaXRhYmxlRWxlbWVudCgpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oCmluZGV4IDdkNTljZDUy
MTYyMjRjZTBkZDg1ZTUzNzEyYzMyYWEzODdjOWY3ZGMuLmU1ZDg5MWQyNmU2YzM1M2Y5MTViMGVj
M2U3NzI4OTU0OTYzNzRiZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bh
c3RlYm9hcmRTdHJhdGVneS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9h
cmRTdHJhdGVneS5oCkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGludCBn
ZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7
CiAgICAgdmlydHVhbCBTdHJpbmcgcmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKGludCBpbmRleCwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSkgPSAwOwogICAgIHZpcnR1YWwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21Q
YXN0ZWJvYXJkKGludCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwotICAgIHZpcnR1YWwgVVJMIHJlYWRVUkxGcm9t
UGFzdGVib2FyZChpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKKyAgICB2aXJ0dWFsIFVSTCByZWFkVVJMRnJv
bVBhc3RlYm9hcmQoaW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxlKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIGdldEZpbGVuYW1lc0ZvckRhdGFJbnRlcmFjdGlvbihWZWN0b3I8U3RyaW5nPiYgZmls
ZW5hbWVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIGdldFR5cGVzQnlGaWRlbGl0eUZvckl0ZW1BdEluZGV4KFZlY3RvcjxTdHJpbmc+JiB0eXBl
cywgdWludDY0X3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKICNl
bmRpZiAvLyBQTEFURk9STShJT1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QbGF0Zm9ybVBhc3RlYm9hcmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3Jt
UGFzdGVib2FyZC5oCmluZGV4IDUzYjJjZDk0NmVhZGQ5MWYzYTk0NDhiZDZhZTE2YWM2MWI2MWMx
OTAuLjMyMTMyNGNmODFhN2E4ZmNhOWZmOTAyNjExNmZkMWNmZDg4ODRlZjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oCkBAIC04Myw3ICs4Myw3IEBA
IHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHdyaXRlKGNvbnN0IFBhc3RlYm9hcmRV
UkwmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVy
KGludCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7CiAgICAgV0VCQ09SRV9F
WFBPUlQgU3RyaW5nIHJlYWRTdHJpbmcoaW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBVUkwgcmVhZFVSTChpbnQgaW5kZXgsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpOworICAgIFdFQkNPUkVfRVhQT1JUIFVSTCByZWFkVVJM
KGludCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgU3RyaW5nJiB0aXRsZSk7
CiAgICAgV0VCQ09SRV9FWFBPUlQgaW50IGNvdW50KCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgaW50
IG51bWJlck9mRmlsZXMoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL1Bhc3RlYm9hcmRJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVi
b2FyZElPUy5tbQppbmRleCAzOWNhNTdiODE5NmQ1YjJlYmI0ODZmMjMzMWUwNDdjYzNiMzI3N2Yz
Li42NWE3Njc4NTExMDAwOWFmMmZiYzEzOGMyZjVlMDE0MzViMzNkZTljIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQpAQCAtMTkzLDggKzE5Myw5IEBA
IHN0YXRpYyBib29sIHJlYWRQYXN0ZWJvYXJkV2ViQ29udGVudERhdGFGb3JUeXBlKFBhc3RlYm9h
cmRXZWJDb250ZW50UmVhZGVyJiByZWFkCiAgICAgfQogCiAgICAgaWYgKFt0eXBlIGlzRXF1YWxU
b1N0cmluZzooTlNTdHJpbmcgKilrVVRUeXBlVVJMXSkgewotICAgICAgICBVUkwgdXJsID0gc3Ry
YXRlZ3kucmVhZFVSTEZyb21QYXN0ZWJvYXJkKGl0ZW1JbmRleCwga1VUVHlwZVVSTCwgcGFzdGVi
b2FyZE5hbWUpOwotICAgICAgICByZXR1cm4gIXVybC5pc051bGwoKSAmJiByZWFkZXIucmVhZFVS
TCh1cmwsIFN0cmluZygpKTsKKyAgICAgICAgU3RyaW5nIHRpdGxlOworICAgICAgICBVUkwgdXJs
ID0gc3RyYXRlZ3kucmVhZFVSTEZyb21QYXN0ZWJvYXJkKGl0ZW1JbmRleCwga1VUVHlwZVVSTCwg
cGFzdGVib2FyZE5hbWUsIHRpdGxlKTsKKyAgICAgICAgcmV0dXJuICF1cmwuaXNOdWxsKCkgJiYg
cmVhZGVyLnJlYWRVUkwodXJsLCB0aXRsZSk7CiAgICAgfQogCiAgICAgaWYgKFVUVHlwZUNvbmZv
cm1zVG8oKENGU3RyaW5nUmVmKXR5cGUsIGtVVFR5cGVUZXh0KSkgewpAQCAtMzI4LDcgKzMyOSw4
IEBAIFN0cmluZyBQYXN0ZWJvYXJkOjpyZWFkU3RyaW5nKGNvbnN0IFN0cmluZyYgdHlwZSkKICAg
ICBOU1N0cmluZyAqY29jb2FWYWx1ZSA9IG5pbDsKIAogICAgIGlmIChbY29jb2FUeXBlIGlzRXF1
YWxUb1N0cmluZzooTlNTdHJpbmcgKilrVVRUeXBlVVJMXSkgewotICAgICAgICBVUkwgdXJsID0g
c3RyYXRlZ3kucmVhZFVSTEZyb21QYXN0ZWJvYXJkKDAsIGtVVFR5cGVVUkwsIG1fcGFzdGVib2Fy
ZE5hbWUpOworICAgICAgICBTdHJpbmcgdGl0bGU7CisgICAgICAgIFVSTCB1cmwgPSBzdHJhdGVn
eS5yZWFkVVJMRnJvbVBhc3RlYm9hcmQoMCwga1VUVHlwZVVSTCwgbV9wYXN0ZWJvYXJkTmFtZSwg
dGl0bGUpOwogICAgICAgICBpZiAoIXVybC5pc051bGwoKSkKICAgICAgICAgICAgIGNvY29hVmFs
dWUgPSBbKE5TVVJMICopdXJsIGFic29sdXRlU3RyaW5nXTsKICAgICB9IGVsc2UgaWYgKFtjb2Nv
YVR5cGUgaXNFcXVhbFRvU3RyaW5nOihOU1N0cmluZyAqKWtVVFR5cGVUZXh0XSkgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0K
aW5kZXggZDI2NWIxNmM2ZDgzNWNkMzMxYjczNjhhMWY0OGM4MjA4YTRkZGQ5NS4uMDIwMzE5M2I5
MzYzZGEyMjJlMWJiMzU2ZjQyM2EyMzA5MjYxNzI5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tCkBAIC0zODksNyArMzg5
LDcgQEAgU3RyaW5nIFBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZFN0cmluZyhpbnQgaW5kZXgsIGNv
bnN0IFN0cmluZyYgdHlwZSkKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKLVVSTCBQbGF0Zm9y
bVBhc3RlYm9hcmQ6OnJlYWRVUkwoaW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpCitVUkwg
UGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkVVJMKGludCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBl
LCBTdHJpbmcmIHRpdGxlKQogewogICAgIE5TSW5kZXhTZXQgKmluZGV4U2V0ID0gW05TSW5kZXhT
ZXQgaW5kZXhTZXRXaXRoSW5kZXg6aW5kZXhdOwogCkBAIC00MDMsNiArNDAzLDEzIEBAIFVSTCBQ
bGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRVUkwoaW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUp
CiAgICAgaWYgKCFbdmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNVUkwgY2xhc3NdXSkKICAgICAgICAg
cmV0dXJuIFVSTCgpOwogCisjaWYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0g
MTEwMDAwCisgICAgaWYgKFt2YWx1ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF90aXRs
ZSldKQorICAgICAgICB0aXRsZSA9IFt2YWx1ZSBfdGl0bGVdOworI2Vsc2UKKyAgICBVTlVTRURf
UEFSQU0odGl0bGUpOworI2VuZGlmCisKICAgICByZXR1cm4gKE5TVVJMICopdmFsdWU7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3Jt
U3RyYXRlZ2llcy5oIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZv
cm1TdHJhdGVnaWVzLmgKaW5kZXggZmEzODM0ODA0ZWNiMGQyMDE2YzMxMzUwNjM1ZjMzZjkwZmJk
Y2VlOS4uZGE0ZWM0NzQxMzZhZDE3ZTEyMGJhNmJhM2Y3NWMwMWJmNzBkNmM0NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVz
LmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJh
dGVnaWVzLmgKQEAgLTY1LDcgKzY1LDcgQEAgcHJpdmF0ZToKICAgICBpbnQgZ2V0UGFzdGVib2Fy
ZEl0ZW1zQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAgICAg
U3RyaW5nIHJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwog
ICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVib2Fy
ZChpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwotICAgIFdlYkNvcmU6OlVSTCByZWFkVVJMRnJvbVBh
c3RlYm9hcmQoaW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKKyAgICBXZWJDb3JlOjpVUkwgcmVhZFVS
TEZyb21QYXN0ZWJvYXJkKGludCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRsZSkgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBnZXRGaWxlbmFtZXNGb3JEYXRhSW50ZXJhY3Rpb24oVmVjdG9yPFN0cmluZz4mIGZp
bGVuYW1lcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBnZXRUeXBlc0J5RmlkZWxpdHlGb3JJdGVtQXRJbmRleChWZWN0b3I8U3RyaW5nPiYgdHlwZXMs
IHVpbnQ2NF90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzLm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCmluZGV4IGFmNDBlMTc2MzNiZDBiZjc2NTE0OWNkMTc0
NTJjZWE3MTJhNWYzZjkuLjc0YmM3YWZlNGUwZDRjZTQ3NGNkN2YyZDcxM2M0YzgwYjI0NDE5Y2Ig
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3Jt
U3RyYXRlZ2llcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXMubW0KQEAgLTIyMSw5ICsyMjEsOSBAQCBSZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVi
b2FyZChpbgogICAgIHJldHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnJl
YWRCdWZmZXIoaW5kZXgsIHR5cGUpOwogfQogCi1XZWJDb3JlOjpVUkwgV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpyZWFkVVJMRnJvbVBhc3RlYm9hcmQoaW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5
cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCitXZWJDb3JlOjpVUkwgV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpyZWFkVVJMRnJvbVBhc3RlYm9hcmQoaW50IGluZGV4LCBjb25zdCBTdHJp
bmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUpCiB7
Ci0gICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkucmVhZFVSTChp
bmRleCwgdHlwZSk7CisgICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFt
ZSkucmVhZFVSTChpbmRleCwgdHlwZSwgdGl0bGUpOwogfQogCiBTdHJpbmcgV2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjpyZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoaW50IGluZGV4LCBjb25zdCBTdHJp
bmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2Vi
Vmlldy9XZWJGcmFtZS5tbQppbmRleCA2ZGE5MzBhYmZlMjM1ZDk1OGNmYjAwNGIzNjAzMWYxMTVm
ZDdiNDM4Li5lYzkzODNkZjk2ZmZiZTk4NzA4ZDM1NmY5YzUyNDY3OGMwOGNkZjhjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KQEAgLTIyMTYsNiArMjIxNiwxMyBAQCAtICh2
b2lkKV9jbGVhck9wZW5lcgogICAgICAgICBjb3JlRnJhbWUtPmxvYWRlcigpLnNldE9wZW5lcigw
KTsKIH0KIAorLSAoQk9PTCloYXNSaWNobHlFZGl0YWJsZURyYWdDYXJldAoreworICAgIGlmIChh
dXRvKiBwYWdlID0gY29yZShzZWxmKS0+cGFnZSgpKQorICAgICAgICByZXR1cm4gcGFnZS0+ZHJh
Z0NhcmV0Q29udHJvbGxlcigpLmlzQ29udGVudFJpY2hseUVkaXRhYmxlKCk7CisgICAgcmV0dXJu
IE5POworfQorCiAvLyBVc2VkIGJ5IHBhZ2luYXRpb24gY29kZSBjYWxsZWQgZnJvbSBBcHBLaXQg
d2hlbiBhIHN0YW5kYWxvbmUgd2ViIHBhZ2UgaXMgcHJpbnRlZC4KIC0gKE5TQXJyYXkgKilfY29t
cHV0ZVBhZ2VSZWN0c1dpdGhQcmludFNjYWxlRmFjdG9yOihmbG9hdClwcmludFNjYWxlRmFjdG9y
IHBhZ2VTaXplOihOU1NpemUpcGFnZVNpemUKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViRnJhbWVQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3
L1dlYkZyYW1lUHJpdmF0ZS5oCmluZGV4IDViZjAyNGE3YzQ0Y2RmN2UzOTE0MTYyODdlYWNjY2Zj
NzhmYzdhNmYuLjZhOTM4YzI0NDc4MjkyODE2NzBiNmIxMWM5YzBkMDgwMGRkZjY3NjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWVQcml2YXRlLmgKKysrIGIv
U291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZVByaXZhdGUuaApAQCAtMjc3LDYgKzI3
Nyw5IEBAIHR5cGVkZWYgZW51bSB7CiAvLyBQcmludGluZy4KIC0gKE5TQXJyYXkgKilfY29tcHV0
ZVBhZ2VSZWN0c1dpdGhQcmludFNjYWxlRmFjdG9yOihmbG9hdClwcmludFdpZHRoU2NhbGVGYWN0
b3IgcGFnZVNpemU6KE5TU2l6ZSlwYWdlU2l6ZTsKIAorLy8gRHJhZyBhbmQgZHJvcCBzdXBwb3J0
LgorQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBCT09MIGhhc1JpY2hseUVkaXRhYmxl
RHJhZ0NhcmV0OworCiAjaWYgVEFSR0VUX09TX0lQSE9ORQogLSAoRE9NRG9jdW1lbnRGcmFnbWVu
dCAqKV9kb2N1bWVudEZyYWdtZW50Rm9yVGV4dDooTlNTdHJpbmcgKil0ZXh0OwogLy8gVGhlc2Ug
aGF2ZSB0aGUgc2lkZSBlZmZlY3Qgb2YgYWRkaW5nIHN1YnJlc291cmNlcyB0byBvdXIgV2ViRGF0
YVNvdXJjZSB3aGVyZSBhcHByb3ByaWF0ZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbQppbmRleCBjOTY4MTk3
YmZhMDQzZDkzN2ViMjdjOWM0NjQ3MzI2NjY0Y2NjY2NlLi45Y2MxYjg3OTRmZmZjYzU2YWIzMDZk
MTkxYTE2NjJjOThjYjYyMzQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
Q29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0NvY29hL1dlYlBhc3RlYm9hcmRQcm94eUNvY29hLm1tCkBAIC0xNzAsOSArMTcwLDkg
QEAgdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZCh1aW50
NjRfdCBpbmRleCwgY29uc3QgU3RyaW5nJgogICAgIHZhbHVlID0gUGxhdGZvcm1QYXN0ZWJvYXJk
KHBhc3RlYm9hcmROYW1lKS5yZWFkU3RyaW5nKGluZGV4LCBwYXN0ZWJvYXJkVHlwZSk7CiB9CiAK
LXZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpyZWFkVVJMRnJvbVBhc3RlYm9hcmQodWludDY0X3Qg
aW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIFN0cmluZyYgdXJsKQordm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnJlYWRVUkxG
cm9tUGFzdGVib2FyZCh1aW50NjRfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlw
ZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB1cmwsIFN0cmluZyYgdGl0
bGUpCiB7Ci0gICAgdXJsID0gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5yZWFk
VVJMKGluZGV4LCBwYXN0ZWJvYXJkVHlwZSk7CisgICAgdXJsID0gUGxhdGZvcm1QYXN0ZWJvYXJk
KHBhc3RlYm9hcmROYW1lKS5yZWFkVVJMKGluZGV4LCBwYXN0ZWJvYXJkVHlwZSwgdGl0bGUpOwog
fQogCiB2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHVp
bnQ2NF90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBTaGFyZWRNZW1vcnk6OkhhbmRsZSYgaGFuZGxlLCB1aW50NjRfdCYg
c2l6ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJk
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkuaApp
bmRleCBiZjk0NmM0NWY2NDc5MzM1YTNiODY2NWNjOWFjNGE1NWVmNjE2MzMyLi5iNWE1MzFhOTYw
MjRhZWE5NzY5M2M0NmE3NjBmMjczNDc3YTk0NzEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5oCkBAIC03NSw3ICs3NSw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCB3cml0ZUltYWdlVG9QYXN0ZWJvYXJkKGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRJ
bWFnZSYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOwogICAgIHZvaWQgd3JpdGVTdHJp
bmdUb1Bhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5n
JiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSk7CiAgICAgdm9pZCByZWFkU3RyaW5nRnJv
bVBhc3RlYm9hcmQodWludDY0X3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFdURjo6U3RyaW5nJik7Ci0gICAgdm9pZCBy
ZWFkVVJMRnJvbVBhc3RlYm9hcmQodWludDY0X3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYpOworICAgIHZv
aWQgcmVhZFVSTEZyb21QYXN0ZWJvYXJkKHVpbnQ2NF90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHVybCwg
U3RyaW5nJiB0aXRsZSk7CiAgICAgdm9pZCByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQodWludDY0
X3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIFNoYXJlZE1lbW9yeTo6SGFuZGxlJiwgdWludDY0X3QmIHNpemUpOwogICAg
IHZvaWQgZ2V0UGFzdGVib2FyZEl0ZW1zQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgdWludDY0X3QmIGl0ZW1zQ291bnQpOwogICAgIHZvaWQgZ2V0RmlsZW5hbWVzRm9yRGF0YUlu
dGVyYWN0aW9uKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFZlY3RvcjxTdHJpbmc+JiBm
aWxlbmFtZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhc3Rl
Ym9hcmRQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYXN0
ZWJvYXJkUHJveHkubWVzc2FnZXMuaW4KaW5kZXggOGE5MzZjNTMwNDdmZjMzM2M1MGUxYWYxNjE2
ZmY1MWQzZjBmNTk0NC4uMjQxNDI1ZGFiNDFhZGQxNGI1MDlmMDZmNzZkMTgwNjBjM2YxMDc0YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5t
ZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFzdGVib2FyZFBy
b3h5Lm1lc3NhZ2VzLmluCkBAIC0yNyw3ICsyNyw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhc3RlYm9h
cmRQcm94eSB7CiAgICAgV3JpdGVJbWFnZVRvUGFzdGVib2FyZChzdHJ1Y3QgV2ViQ29yZTo6UGFz
dGVib2FyZEltYWdlIHBhc3RlYm9hcmRJbWFnZSwgU3RyaW5nIHBhc3RlYm9hcmROYW1lKQogICAg
IFdyaXRlU3RyaW5nVG9QYXN0ZWJvYXJkKFN0cmluZyBwYXN0ZWJvYXJkVHlwZSwgU3RyaW5nIHRl
eHQsIFN0cmluZyBwYXN0ZWJvYXJkTmFtZSkKICAgICBSZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQo
dWludDY0X3QgaW5kZXgsIFN0cmluZyBwYXN0ZWJvYXJkVHlwZSwgU3RyaW5nIHBhc3RlYm9hcmRO
YW1lKSAtPiAoU3RyaW5nIHN0cmluZykKLSAgICBSZWFkVVJMRnJvbVBhc3RlYm9hcmQodWludDY0
X3QgaW5kZXgsIFN0cmluZyBwYXN0ZWJvYXJkVHlwZSwgU3RyaW5nIHBhc3RlYm9hcmROYW1lKSAt
PiAoU3RyaW5nIHN0cmluZykKKyAgICBSZWFkVVJMRnJvbVBhc3RlYm9hcmQodWludDY0X3QgaW5k
ZXgsIFN0cmluZyBwYXN0ZWJvYXJkVHlwZSwgU3RyaW5nIHBhc3RlYm9hcmROYW1lKSAtPiAoU3Ry
aW5nIHVybCwgU3RyaW5nIHRpdGxlKQogICAgIFJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZCh1aW50
NjRfdCBpbmRleCwgU3RyaW5nIHBhc3RlYm9hcmRUeXBlLCBTdHJpbmcgcGFzdGVib2FyZE5hbWUp
IC0+IChXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SGFuZGxlIGhhbmRsZSwgdWludDY0X3Qgc2l6ZSkK
ICAgICBHZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChTdHJpbmcgcGFzdGVib2FyZE5hbWUpIC0+ICh1
aW50NjRfdCBpdGVtc0NvdW50KQogICAgIEdldEZpbGVuYW1lc0ZvckRhdGFJbnRlcmFjdGlvbihT
dHJpbmcgcGFzdGVib2FyZE5hbWUpIC0+IChWZWN0b3I8U3RyaW5nPiBmaWxlbmFtZXMpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRm
b3JtU3RyYXRlZ2llcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKaW5kZXggM2Q0Zjk2MGU1M2I3ZTdmYzk2Njky
MzViMjZmNTQxZTMyNmYxMmZjZi4uMjQ4NjJiZDQxYTZmYTM3NTMxZjc3N2E3OTdkYzE0N2IwZGJm
MjNiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcApAQCAtMzM1LDEwICsz
MzUsMTAgQEAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaW4KICAgICByZXR1cm4gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhciAqPihzaGFyZWRNZW1vcnlCdWZmZXIt
PmRhdGEoKSksIHNpemUpOwogfQogCi1XZWJDb3JlOjpVUkwgV2ViUGxhdGZvcm1TdHJhdGVnaWVz
OjpyZWFkVVJMRnJvbVBhc3RlYm9hcmQoaW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQorV2ViQ29yZTo6VVJMIFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6cmVhZFVSTEZyb21QYXN0ZWJvYXJkKGludCBpbmRleCwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU3Ry
aW5nJiB0aXRsZSkKIHsKICAgICBTdHJpbmcgdXJsU3RyaW5nOwotICAgIFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpX
ZWJQYXN0ZWJvYXJkUHJveHk6OlJlYWRVUkxGcm9tUGFzdGVib2FyZChpbmRleCwgcGFzdGVib2Fy
ZFR5cGUsIHBhc3RlYm9hcmROYW1lKSwgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6UmVh
ZFVSTEZyb21QYXN0ZWJvYXJkOjpSZXBseSh1cmxTdHJpbmcpLCAwKTsKKyAgICBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdl
czo6V2ViUGFzdGVib2FyZFByb3h5OjpSZWFkVVJMRnJvbVBhc3RlYm9hcmQoaW5kZXgsIHBhc3Rl
Ym9hcmRUeXBlLCBwYXN0ZWJvYXJkTmFtZSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6
OlJlYWRVUkxGcm9tUGFzdGVib2FyZDo6UmVwbHkodXJsU3RyaW5nLCB0aXRsZSksIDApOwogICAg
IHJldHVybiBVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmxTdHJpbmcpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3Ry
YXRlZ2llcy5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXMuaAppbmRleCAyM2I0ZmVjNDhhZmVlNWFmMWEwZGY3MGM4NTIwZWIx
OGNkYjAxNzZhLi5jODBmYWZjYWFlMzNjYmI2NDEzNjMzZDFmNjdiMGVhYmY0NDcyYmY3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRm
b3JtU3RyYXRlZ2llcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKQEAgLTY2LDcgKzY2LDcgQEAgcHJpdmF0ZToK
ICAgICBpbnQgZ2V0UGFzdGVib2FyZEl0ZW1zQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSkgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIHJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChpbnQg
aW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUpIG92ZXJyaWRlOwogICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHJl
YWRCdWZmZXJGcm9tUGFzdGVib2FyZChpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwotICAgIFdlYkNv
cmU6OlVSTCByZWFkVVJMRnJvbVBhc3RlYm9hcmQoaW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKKyAg
ICBXZWJDb3JlOjpVUkwgcmVhZFVSTEZyb21QYXN0ZWJvYXJkKGludCBpbmRleCwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5n
JiB0aXRsZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRGaWxlbmFtZXNGb3JEYXRhSW50ZXJhY3Rp
b24oVmVjdG9yPFN0cmluZz4mIGZpbGVuYW1lcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRUeXBlc0J5RmlkZWxpdHlGb3JJdGVtQXRJbmRleChW
ZWN0b3I8U3RyaW5nPiYgdHlwZXMsIHVpbnQ2NF90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lKSBvdmVycmlkZTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViRWRpdG9yQ2xpZW50SU9TLm1tIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViRWRpdG9yQ2xpZW50
SU9TLm1tCmluZGV4IDQwODc4N2ZlMmE1NTJiNDIxODg4NDI1YTdjNGNlNDM2ZjNmYmQzYzMuLjM3
YzlmN2YzMmRiMDNiYTVkM2RhNTlhZjg0NTgxOTUxMDgwNGJhZGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYkVkaXRvckNsaWVudElP
Uy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9X
ZWJFZGl0b3JDbGllbnRJT1MubW0KQEAgLTEwMSw4ICsxMDEsNyBAQCBOU0FycmF5KiBXZWJFZGl0
b3JDbGllbnQ6OnJlYWREYXRhRnJvbVBhc3RlYm9hcmQoTlNTdHJpbmcqLCBpbnQpCiAKIGJvb2wg
V2ViRWRpdG9yQ2xpZW50OjpoYXNSaWNobHlFZGl0YWJsZVNlbGVjdGlvbigpCiB7Ci0gICAgbm90
SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIG1fcGFnZS0+aGFz
UmljaGx5RWRpdGFibGVTZWxlY3Rpb24oKTsKIH0KIAogaW50IFdlYkVkaXRvckNsaWVudDo6Z2V0
UGFzdGVib2FyZEl0ZW1zQ291bnQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCmluZGV4IDQ5NDc5ZjFmMzM0MTM0ZTk3ZjNiZDdhMWZkMWI1NTI3ODFi
NTBlYjQuLmM3MjM5NjkyYzNjMWUwNmEzYzYxMTMyYzIwMDQxNjFmMWZjZmJmZTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTM4NjksNiAr
Mzg2OSwxNSBAQCB2b2lkIFdlYlBhZ2U6OmFkdmFuY2VUb05leHRNaXNzcGVsbGluZyhib29sIHN0
YXJ0QmVmb3JlU2VsZWN0aW9uKQogfQogI2VuZGlmCiAKK2Jvb2wgV2ViUGFnZTo6aGFzUmljaGx5
RWRpdGFibGVTZWxlY3Rpb24oKSBjb25zdAoreworICAgIGF1dG8mIGZyYW1lID0gbV9wYWdlLT5m
b2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKKyAgICBpZiAobV9wYWdlLT5k
cmFnQ2FyZXRDb250cm9sbGVyKCkuaXNDb250ZW50UmljaGx5RWRpdGFibGUoKSkKKyAgICAgICAg
cmV0dXJuIHRydWU7CisKKyAgICByZXR1cm4gZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCku
aXNDb250ZW50UmljaGx5RWRpdGFibGUoKTsKK30KKwogdm9pZCBXZWJQYWdlOjpjaGFuZ2VTcGVs
bGluZ1RvV29yZChjb25zdCBTdHJpbmcmIHdvcmQpCiB7CiAgICAgcmVwbGFjZVNlbGVjdGlvbldp
dGhUZXh0KCZtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpLCB3
b3JkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4
IDBiMDU2MWJiMTY3ZDUwMTE1ZjMxMTQxZjIzNGE1N2RkNGIxNGNjNjcuLmFiOGM3ODBjYjVmMmY2
OGM2M2MwMzI4ZGQ0ZDBkZDM0OTQ2ZDg4OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtNTk5LDYgKzU5OSw3IEBAIHB1YmxpYzoKICAgICAKICAg
ICB2b2lkIHNldEZvcmNlQWx3YXlzVXNlclNjYWxhYmxlKGJvb2wpOwogI2VuZGlmCisgICAgYm9v
bCBoYXNSaWNobHlFZGl0YWJsZVNlbGVjdGlvbigpIGNvbnN0OwogCiAgICAgdm9pZCBzZXRMYXll
clRyZWVTdGF0ZUlzRnJvemVuKGJvb2wpOwogICAgIHZvaWQgbWFya0xheWVyc1ZvbGF0aWxlKHN0
ZDo6ZnVuY3Rpb248dm9pZCAoKT4gY29tcGxldGlvbkhhbmRsZXIgPSB7IH0pOwpkaWZmIC0tZ2l0
IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGY4ZTVmZDM5YWNmOTQw
NWZlZjkzMDEzZTY2NDgyYmM2OGE3MGU0OWIuLjMxNjc2MjM2MjA0OGNiNmFkZTAwNzM5ZDM1MzBh
OWU1MDdlODViNzQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxNy0wNC0yMiAgV2Vuc29uIEhzaWVoICA8d2Vuc29u
X2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBTdXBwb3J0IHJlYWRpbmcgTlNVUkwgdGl0bGVz
IGZyb20gdGhlIHBhc3RlYm9hcmQgd2hlbiBwZXJmb3JtaW5nIGRhdGEgaW50ZXJhY3Rpb24KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MTE1NgorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vMzEzNTY5Mzc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVGlt
IEhvcnRvbi4KKworICAgICAgICBBZGRzIGEgbmV3IHVuaXQgdGVzdCwgRGF0YUludGVyYWN0aW9u
VGVzdHMuRXh0ZXJuYWxTb3VyY2VUaXRsZWROU1VSTC4KKworICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvaW9zL0RhdGFJbnRlcmFjdGlvblRlc3RzLm1tOgorICAgICAgICAoVGVzdFdlYktp
dEFQSTo6VEVTVCk6CisKIDIwMTctMDQtMjQgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBh
cHBsZS5jb20+CiAKICAgICAgICAgUmVzcGVjdCBmaWRlbGl0eSBvcmRlciB3aGVuIHJlYWRpbmcg
d2ViIGNvbnRlbnQgZnJvbSBpdGVtIHByb3ZpZGVycwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9pb3MvRGF0YUludGVyYWN0aW9uVGVzdHMubW0gYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL2lvcy9EYXRhSW50ZXJhY3Rpb25UZXN0cy5tbQppbmRleCBmNDBkNmJlM2Fm
MjAxYWVlM2Y2YzI5NDliOGU3N2MyZWQwMjBiYzgyLi45NTJkMWM4NDVlZGU0MGJiZDRhY2I1YWE2
ZDgwYmQ0Y2Q3NDQ0NDE2IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lv
cy9EYXRhSW50ZXJhY3Rpb25UZXN0cy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L2lvcy9EYXRhSW50ZXJhY3Rpb25UZXN0cy5tbQpAQCAtNTM0LDYgKzUzNCwyNSBAQCBURVNUKERh
dGFJbnRlcmFjdGlvblRlc3RzLCBFeHRlcm5hbFNvdXJjZUpQRUdPbmx5KQogICAgIGNoZWNrU2Vs
ZWN0aW9uUmVjdHNXaXRoTG9nZ2luZyhAWyBtYWtlQ0dSZWN0VmFsdWUoMSwgMjAxLCAyMTUsIDE3
NCkgXSwgW2RhdGFJbnRlcmFjdGlvblNpbXVsYXRvciBmaW5hbFNlbGVjdGlvblJlY3RzXSk7CiB9
CiAKK1RFU1QoRGF0YUludGVyYWN0aW9uVGVzdHMsIEV4dGVybmFsU291cmNlVGl0bGVkTlNVUkwp
Cit7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGlu
aXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAzMjAsIDUwMCldKTsKKyAgICBbd2ViVmlldyBz
eW5jaHJvbm91c2x5TG9hZFRlc3RQYWdlTmFtZWQ6QCJhdXRvZm9jdXMtY29udGVudGVkaXRhYmxl
Il07CisgICAgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImdldFNlbGVj
dGlvbigpLnJlbW92ZUFsbFJhbmdlcygpIl07CisKKyAgICBOU1VSTCAqdGl0bGVkVVJMID0gW05T
VVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwczovL3d3dy5hcHBsZS5jb20iXTsKKyAgICB0aXRsZWRV
UkwuX3RpdGxlID0gQCJBcHBsZSI7CisgICAgYXV0byBzaW11bGF0ZWRJdGVtUHJvdmlkZXIgPSBh
ZG9wdE5TKFtbVUlJdGVtUHJvdmlkZXIgYWxsb2NdIGluaXRdKTsKKyAgICBbc2ltdWxhdGVkSXRl
bVByb3ZpZGVyIHJlZ2lzdGVyT2JqZWN0OnRpdGxlZFVSTCB2aXNpYmlsaXR5Ok5TSXRlbVByb3Zp
ZGVyUmVwcmVzZW50YXRpb25WaXNpYmlsaXR5QWxsXTsKKworICAgIGF1dG8gZGF0YUludGVyYWN0
aW9uU2ltdWxhdG9yID0gYWRvcHROUyhbW0RhdGFJbnRlcmFjdGlvblNpbXVsYXRvciBhbGxvY10g
aW5pdFdpdGhXZWJWaWV3OndlYlZpZXcuZ2V0KCldKTsKKyAgICBbZGF0YUludGVyYWN0aW9uU2lt
dWxhdG9yIHNldEV4dGVybmFsSXRlbVByb3ZpZGVyczpAWyBzaW11bGF0ZWRJdGVtUHJvdmlkZXIu
Z2V0KCkgXV07CisgICAgW2RhdGFJbnRlcmFjdGlvblNpbXVsYXRvciBydW5Gcm9tOkNHUG9pbnRN
YWtlKDMwMCwgNDAwKSB0bzpDR1BvaW50TWFrZSgxMDAsIDMwMCldOworCisgICAgRVhQRUNUX1dL
X1NUUkVRKCJBcHBsZSIsIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJl
ZGl0b3IucXVlcnlTZWxlY3RvcignYScpLnRleHRDb250ZW50Il0pOworICAgIEVYUEVDVF9XS19T
VFJFUSgiaHR0cHM6Ly93d3cuYXBwbGUuY29tLyIsIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGlu
Z0phdmFTY3JpcHQ6QCJlZGl0b3IucXVlcnlTZWxlY3RvcignYScpLmhyZWYiXSk7Cit9CisKIFRF
U1QoRGF0YUludGVyYWN0aW9uVGVzdHMsIE92ZXJyaWRlRGF0YUludGVyYWN0aW9uT3BlcmF0aW9u
KQogewogICAgIFJldGFpblB0cjxUZXN0V0tXZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rl
c3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAzMjAsIDUw
MCldKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>