<?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>85724</bug_id>
          
          <creation_ts>2012-05-05 17:58:45 -0700</creation_ts>
          <short_desc>Implement the simple constructors WTFURL&apos;s KURL</short_desc>
          <delta_ts>2012-06-13 14:46:20 -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>Web Template Framework</component>
          <version>528+ (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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Benjamin Poulain">benjamin</reporter>
          <assigned_to name="Benjamin Poulain">benjamin</assigned_to>
          <cc>abarth</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>617067</commentid>
    <comment_count>0</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-05-05 17:58:45 -0700</bug_when>
    <thetext>Next step: be able to build KURL based on NSUrl and relative URL parsed from page.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>617068</commentid>
    <comment_count>1</comment_count>
      <attachid>140416</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-05-05 18:33:02 -0700</bug_when>
    <thetext>Created attachment 140416
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>617069</commentid>
    <comment_count>2</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-05-05 18:33:51 -0700</bug_when>
    <thetext>Work in progress, I still need to add parsing of relative URLs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>628528</commentid>
    <comment_count>3</comment_count>
      <attachid>142888</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-05-19 19:00:52 -0700</bug_when>
    <thetext>Created attachment 142888
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>645626</commentid>
    <comment_count>4</comment_count>
      <attachid>146750</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-06-10 15:02:10 -0700</bug_when>
    <thetext>Created attachment 146750
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>645628</commentid>
    <comment_count>5</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-06-10 15:17:53 -0700</bug_when>
    <thetext>Unfortunately, even the simplest URL test require relative URL to work. So although I can now run the tests, none of them succeed.

Next I&apos;ll have to fix parsing of relative URL.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>645629</commentid>
    <comment_count>6</comment_count>
      <attachid>146750</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-06-10 15:18:06 -0700</bug_when>
    <thetext>Comment on attachment 146750
Patch

Attachment 146750 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/12938237</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>645632</commentid>
    <comment_count>7</comment_count>
      <attachid>146753</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-06-10 15:25:08 -0700</bug_when>
    <thetext>Created attachment 146753
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>645815</commentid>
    <comment_count>8</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-06-11 01:07:29 -0700</bug_when>
    <thetext>Yeah, adding relative URLs is probably high on the TODO list.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>648481</commentid>
    <comment_count>9</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-06-13 14:46:20 -0700</bug_when>
    <thetext>Committed r120250: &lt;http://trac.webkit.org/changeset/120250&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>140416</attachid>
            <date>2012-05-05 18:33:02 -0700</date>
            <delta_ts>2012-05-19 19:00:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-85724-20120505183301.patch</filename>
            <type>text/plain</type>
            <size>11277</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE2MTQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDg1NTBmZjQ2YWZlNGE4YWFiYjg5MmUx
NjlhMjJlNGIxYTFiOWRlYTMuLjM4NGZiYTFmODg3OTQ1YTRiNzAwNjNkNmE3MWIxOTlhZmM4OTlm
ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTItMDUtMDUgIEJlbmphbWluIFBvdWxhaW4gIDxi
ZW5qYW1pbkB3ZWJraXQub3JnPgorCisgICAgICAgIEltcGxlbWVudCB0aGUgY29uc3RydWN0b3Jz
IG9mIEtVUkwgYmFzZWQgb24gV1RGVVJMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD04NTcyNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogd3RmL3VybC9hcGkvUGFyc2VkVVJMLmNwcDoKKyAgICAgICAgKFdU
Rjo6UGFyc2VkVVJMOjpQYXJzZWRVUkwpOgorICAgICAgICAoV1RGKToKKyAgICAgICAgKiB3dGYv
dXJsL2FwaS9QYXJzZWRVUkwuaDoKKyAgICAgICAgKFBhcnNlZFVSTCk6CisgICAgICAgICogd3Rm
L3VybC9zcmMvVVJMUGFyc2VyLmg6CisgICAgICAgIChVUkxQYXJzZXIpOgorICAgICAgICAoV1RG
OjpVUkxQYXJzZXI6OnBhcnNlUmVsYXRpdmVVUkwpOgorCiAyMDEyLTA1LTAzICBZb25nIExpICA8
eW9saUByaW0uY29tPgogCiAgICAgICAgIE11dGV4IGZhaWx1cmUgd2hlbiBIYXNoVGFibGUgaXMg
bWVtb3J5IG1vdmVkIGluIGRlYnVnIGJ1aWxkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTlmZGZhZWQxMDI4YTRl
YzQ0MmU3Y2QyNzJmMGQ2YTE4MTQ0NWM2OC4uMjE5ODBiZWExNDFjNzVlZjA1NDdhYmZmMGY4NGZj
MzlmNWI3NWRhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDEyLTA1LTA1ICBCZW5q
YW1pbiBQb3VsYWluICA8YmVuamFtaW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBJbXBsZW1lbnQg
dGhlIGNvbnN0cnVjdG9ycyBvZiBLVVJMIGJhc2VkIG9uIFdURlVSTAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODU3MjQKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMuIChPT1BTISkKKwor
ICAgICAgICAqIHBsYXRmb3JtL0tVUkxXVEZVUkwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S1VS
TDo6S1VSTCk6CisgICAgICAgIChXZWJDb3JlOjpLVVJMOjpzdHJpbmcpOgorICAgICAgICAoV2Vi
Q29yZTo6S1VSTDo6cHJvdG9jb2xJcyk6CisgICAgICAgICogcGxhdGZvcm0vY2YvS1VSTENGTmV0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktVUkw6OktVUkwpOgorICAgICAgICAoV2ViQ29yZTo6
S1VSTDo6Y3JlYXRlQ0ZVUkwpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGxhdGZv
cm0vbWFjL0tVUkxNYWMubW06CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OktVUkw6OktVUkwpOgorICAgICAgICAoV2ViQ29yZTo6S1VSTDo6Y3JlYXRlQ0ZVUkwpOgorCiAy
MDEyLTA1LTA0ICBSb2IgQnVpcyAgPHJidWlzQHJpbS5jb20+CiAKICAgICAgICAgW0JsYWNrQmVy
cnldIFJlbmRlcmluZyBibXAgZmlsZSBhcyB0ZXh0IGZpbGUgd2hlbiBDb250ZW50LVR5cGU6aW1h
Z2UveC1tcy1ibXAgZnJvbSBhcGFjaGUgd2ViIHNlcnZlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL3VybC9hcGkvUGFyc2VkVVJMLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3VybC9hcGkvUGFy
c2VkVVJMLmNwcAppbmRleCBmNjkxNjJhNjc4Mjg5MTUzZDZjZjc2OWQyMDE1Y2EzYmQ0NDI4MTZk
Li5mY2NkMzExYTYwNDdjYmJkMDM1NjMyZWJmZmEyMjAzNjVjM2M2YmY3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi91cmwvYXBpL1BhcnNlZFVSTC5jcHAKKysrIGIvU291cmNlL1dURi93dGYv
dXJsL2FwaS9QYXJzZWRVUkwuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBVU0UoV1RGVVJM
KQogCisjaW5jbHVkZSAiUmF3VVJMQnVmZmVyLmgiCiAjaW5jbHVkZSAiVVJMQ29tcG9uZW50Lmgi
CiAjaW5jbHVkZSAiVVJMUGFyc2VyLmgiCiAKQEAgLTM2LDEyICszNywyNSBAQCBuYW1lc3BhY2Ug
V1RGIHsKIFBhcnNlZFVSTDo6UGFyc2VkVVJMKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKQogICAg
IDogbV9zcGVjKHVybFN0cmluZykKIHsKLSAgICAvLyBGSVhNRTogSGFuZGxlIG5vbi1zdGFuZGFy
ZCBVUkxzLgotICAgIGlmICh1cmxTdHJpbmcuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Cisg
ICAgLy8gRklYTUU6IGhhbmRsZSBpbnZhbGlkIHVybFN0cmluZy4KICAgICBVUkxQYXJzZXI8VUNo
YXI+OjpwYXJzZVN0YW5kYXJkVVJMKHVybFN0cmluZy5jaGFyYWN0ZXJzKCksIHVybFN0cmluZy5s
ZW5ndGgoKSwgbV9zZWdtZW50cyk7CiB9CiAKK1BhcnNlZFVSTDo6UGFyc2VkVVJMKGNvbnN0IFBh
cnNlZFVSTCYgYmFzZSwgY29uc3QgU3RyaW5nJiByZWxhdGl2ZSkKK3sKKyAgICAvLyBGSVhNRTog
aGFuZGxlIGludmFsaWQgdXJsU3RyaW5nLgorICAgIGlmICghYmFzZS5pc1ZhbGlkKCkpIHsKKyAg
ICAgICAgbV9zcGVjID0gVVJMU3RyaW5nKHJlbGF0aXZlKTsKKyAgICAgICAgVVJMUGFyc2VyPFVD
aGFyPjo6cGFyc2VTdGFuZGFyZFVSTChyZWxhdGl2ZS5jaGFyYWN0ZXJzKCksIHJlbGF0aXZlLmxl
bmd0aCgpLCBtX3NlZ21lbnRzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBjb25zdCBT
dHJpbmcmIGJhc2VTdHJpbmcgPSBiYXNlLm1fc3BlYy5zdHJpbmcoKTsKKyAgICBSYXdVUkxCdWZm
ZXI8Y2hhciwgMTAyND4gb3V0cHV0QnVmZmVyOworICAgIFVSTFBhcnNlcjxVQ2hhcj46OnBhcnNl
UmVsYXRpdmVVUkwoYmFzZVN0cmluZy5jaGFyYWN0ZXJzKCksIGJhc2VTdHJpbmcubGVuZ3RoKCks
IGJhc2UubV9zZWdtZW50cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJlbGF0aXZlLmNoYXJhY3RlcnMoKSwgcmVsYXRpdmUubGVuZ3RoKCksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRCdWZmZXIsIG1fc2VnbWVudHMpOworfQor
CiBQYXJzZWRVUkwgUGFyc2VkVVJMOjppc29sYXRlZENvcHkoKSBjb25zdAogewogICAgIFBhcnNl
ZFVSTCBjb3B5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdXJsL2FwaS9QYXJzZWRVUkwu
aCBiL1NvdXJjZS9XVEYvd3RmL3VybC9hcGkvUGFyc2VkVVJMLmgKaW5kZXggMmJiMzMzMGNmYzEx
MzIwNjgxNDM5MTMwZTMzMWQzNDhiOGRiMzdkOC4uNjhkNzNlY2I1ZTJhZjc3OWJiYjJmNGYwOTcw
YzcxNmUzZmYwODliYiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdXJsL2FwaS9QYXJzZWRV
UkwuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi91cmwvYXBpL1BhcnNlZFVSTC5oCkBAIC0zOCw5ICsz
OCw5IEBAIGNsYXNzIFVSTENvbXBvbmVudDsKIC8vIFBhcnNlZFVSTCByZXByZXNlbnRzIGEgdmFs
aWQgVVJMIGRlY29tcG9zZWQgYnkgY29tcG9uZW50cy4KIGNsYXNzIFBhcnNlZFVSTCB7CiBwdWJs
aWM6Ci0gICAgLy8gRklYTUU6IEFkZCBhIG1ldGhvZCBmb3IgcGFyc2luZyBub24tY2Fub25pY2Fs
aXplZCBVUkxzLgogICAgIFBhcnNlZFVSTCgpIHsgfTsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
ZXhwbGljaXQgUGFyc2VkVVJMKGNvbnN0IFN0cmluZyYpOworICAgIFdURl9FWFBPUlRfUFJJVkFU
RSBleHBsaWNpdCBQYXJzZWRVUkwoY29uc3QgUGFyc2VkVVJMJiBiYXNlLCBjb25zdCBTdHJpbmcm
IHJlbGF0aXZlKTsKIAogICAgIFdURl9FWFBPUlRfUFJJVkFURSBQYXJzZWRVUkwgaXNvbGF0ZWRD
b3B5KCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3VybC9zcmMvVVJMUGFy
c2VyLmggYi9Tb3VyY2UvV1RGL3d0Zi91cmwvc3JjL1VSTFBhcnNlci5oCmluZGV4IDAxZjczOGNm
MzljODQ0ZDljNzFlYzdiNWQ2ZDEwMTI1OTAyYThjZTMuLjYwOTM0OWU5NDY0MTVjMGUyZWI0Y2U2
NjYyM2Q5ZmFkNzUwZDk4ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3VybC9zcmMvVVJM
UGFyc2VyLmgKKysrIGIvU291cmNlL1dURi93dGYvdXJsL3NyYy9VUkxQYXJzZXIuaApAQCAtMzks
NiArMzksNyBAQAogCiAjaW5jbHVkZSAiVVJMQ29tcG9uZW50LmgiCiAjaW5jbHVkZSAiVVJMU2Vn
bWVudHMuaCIKKyNpbmNsdWRlICJVbnVzZWRQYXJhbS5oIgogCiAjaWYgVVNFKFdURlVSTCkKIApA
QCAtMTY4LDYgKzE2OSwyMCBAQCBwdWJsaWM6CiAgICAgICAgIHBhcnNlQWZ0ZXJTY2hlbWUoc3Bl
Yywgc3BlY0xlbmd0aCwgYWZ0ZXJTY2hlbWUsIHBhcnNlZCk7CiAgICAgfQogCisgICAgLy8gVGhl
IG1haW4gcGFyc2luZyBmdW5jdGlvbiBmb3IgKG1heSBiZSkgcmVsYXRpdmUgVVJMcy4KKyAgICBz
dGF0aWMgdm9pZCBwYXJzZVJlbGF0aXZlVVJMKGNvbnN0IENoYXJhY3RlclR5cGUqIGJhc2VTdHJp
bmdTcGVjLCBpbnQgYmFzZVN0cmluZ1NwZWNMZW5ndGgsIGNvbnN0IFVSTFNlZ21lbnRzJiBiYXNl
U3RyaW5nU2VnbWVudHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBD
aGFyYWN0ZXJUeXBlKiBzcGVjLCBpbnQgc3BlY0xlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFVSTEJ1ZmZlcjxjaGFyPiZvdXRwdXRCdWZmZXIsIFVSTFNlZ21lbnRzJiBw
YXJzZWQpCisgICAgeworICAgICAgICBVTlVTRURfUEFSQU0oYmFzZVN0cmluZ1NwZWMpOworICAg
ICAgICBVTlVTRURfUEFSQU0oYmFzZVN0cmluZ1NwZWNMZW5ndGgpOworICAgICAgICBVTlVTRURf
UEFSQU0oYmFzZVN0cmluZ1NlZ21lbnRzKTsKKyAgICAgICAgVU5VU0VEX1BBUkFNKHNwZWMpOwor
ICAgICAgICBVTlVTRURfUEFSQU0oc3BlY0xlbmd0aCk7CisgICAgICAgIFVOVVNFRF9QQVJBTShv
dXRwdXRCdWZmZXIpOworICAgICAgICBVTlVTRURfUEFSQU0ocGFyc2VkKTsKKyAgICB9CisKICAg
ICBzdGF0aWMgdm9pZCBwYXJzZVBhdGgoY29uc3QgQ2hhcmFjdGVyVHlwZSogc3BlYywgY29uc3Qg
VVJMQ29tcG9uZW50JiBwYXRoLCBVUkxDb21wb25lbnQmIGZpbGVwYXRoLCBVUkxDb21wb25lbnQm
IHF1ZXJ5LCBVUkxDb21wb25lbnQmIGZyYWdtZW50KQogICAgIHsKICAgICAgICAgLy8gcGF0aCA9
IFsvXTxzZWdtZW50MT4vPHNlZ21lbnQyPi88Li4uPi88c2VnbWVudE4+OzxwYXJhbT4/PHF1ZXJ5
PiM8ZnJhZ21lbnQ+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LVVJMV1RG
VVJMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tVUkxXVEZVUkwuY3BwCmluZGV4IDRm
ZjEzZDk0OGE4N2M1Y2UyM2UyM2YxMGZkYzRkMTg1YzRmYTIwOGIuLmJjMzczZTVjZTkyYzkxYTMz
OGI5ZDczNTNlNTE0N2Y3ODhkNDUxZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0tVUkxXVEZVUkwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tVUkxXVEZV
UkwuY3BwCkBAIC01MCwxMiArNTAsMTggQEAgS1VSTDo6S1VSTChQYXJzZWRVUkxTdHJpbmdUYWcs
IGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKQogICAgIDogbV91cmxJbXBsKGFkb3B0UmVmKG5ldyBL
VVJMV1RGVVJMSW1wbCgpKSkKIHsKICAgICBtX3VybEltcGwtPm1fcGFyc2VkVVJMID0gUGFyc2Vk
VVJMKHVybFN0cmluZyk7Ci0gICAgQVNTRVJUKG1fdXJsSW1wbC0+bV9wYXJzZWRVUkwuaXNWYWxp
ZCgpKTsKKworICAgIC8vIEZJWE1FOiBGcmFtZTo6aW5pdCgpIGFjdHVhbGx5IGNyZWF0ZSBlbXB0
eSBVUkwsIGludmVzdGlnYXRlIHdoeSBub3QganVzdCBudWxsIFVSTC4KKyAgICAvLyBBU1NFUlQo
bV91cmxJbXBsLT5tX3BhcnNlZFVSTC5pc1ZhbGlkKCkpOwogfQogCi1LVVJMOjpLVVJMKGNvbnN0
IEtVUkwmLCBjb25zdCBTdHJpbmcmKQorS1VSTDo6S1VSTChjb25zdCBLVVJMJiBiYXNlVVJMLCBj
b25zdCBTdHJpbmcmIHJlbGF0aXZlKQorICAgIDogbV91cmxJbXBsKGFkb3B0UmVmKG5ldyBLVVJM
V1RGVVJMSW1wbCgpKSkKIHsKLSAgICAvLyBGSVhNRTogQWRkIFdURlVSTCBJbXBsZW1lbnRhdGlv
bi4KKyAgICAvLyBGSVhNRTogdGhlIGNhc2Ugd2l0aCBhIG51bGwgYmFzZVVSTCBpcyBzdHVwaWQg
YW5kIGl0IGlzIGNvbW1vbi4gV2Ugc2hvdWxkIGhhdmUgYSBzZXBhcmF0ZSBjb25zdHJ1Y3RvciBp
biBLVVJMLgorICAgIG1fdXJsSW1wbC0+bV9wYXJzZWRVUkwgPSBQYXJzZWRVUkwoYmFzZVVSTC5t
X3VybEltcGwtPm1fcGFyc2VkVVJMLCByZWxhdGl2ZSk7CisgICAgaWYgKG1fdXJsSW1wbC0+bV9w
YXJzZWRVUkwuaXNWYWxpZCgpKQorICAgICAgICBtX3VybEltcGwtPm1faW52YWxpZFVybFN0cmlu
ZyA9IHJlbGF0aXZlOwogfQogCiBLVVJMOjpLVVJMKGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcm
LCBjb25zdCBUZXh0RW5jb2RpbmcmKQpAQCAtMTA5LDcgKzExNSw2IEBAIGNvbnN0IFN0cmluZyAm
S1VSTDo6c3RyaW5nKCkgY29uc3QKICAgICAgICAgcmV0dXJuIG1fdXJsSW1wbC0+bV9pbnZhbGlk
VXJsU3RyaW5nOwogICAgIH0KIAotICAgIEFTU0VSVChpc1ZhbGlkKCkpOwogICAgIHJldHVybiBt
X3VybEltcGwtPm1fcGFyc2VkVVJMLnNwZWMoKS5zdHJpbmcoKTsKIH0KIApAQCAtMjE1LDcgKzIy
MCw4IEBAIFN0cmluZyBLVVJMOjpmaWxlU3lzdGVtUGF0aCgpIGNvbnN0CiAKIGJvb2wgS1VSTDo6
cHJvdG9jb2xJcyhjb25zdCBjaGFyKiB0ZXN0UHJvdG9jb2wpIGNvbnN0CiB7Ci0gICAgQVNTRVJU
KGlzVmFsaWQoKSk7CisgICAgaWYgKCFpc1ZhbGlkKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICByZXR1cm4gV2ViQ29yZTo6cHJvdG9jb2xJcyhwcm90b2NvbCgpLCB0ZXN0UHJvdG9jb2wp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LVVJMQ0ZOZXQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS1VSTENGTmV0LmNwcAppbmRleCBmZDgw
ODRiOTBkZGViMzRjYzc2Yzc3NmFhNjhiZDcyZWQxMDEwMDg1Li43ZWYzZGJmYWQ1YjIwODEzODUy
N2UzZDNiNWI1NjljOTY5NTU4MmFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jZi9LVVJMQ0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tVUkxD
Rk5ldC5jcHAKQEAgLTMzLDE0ICszMywxMyBAQCB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLSNpZiAhVVNFKFdURlVSTCkKLQogdHlwZWRlZiBWZWN0b3I8Y2hh
ciwgNTEyPiBDaGFyQnVmZmVyOwogCiBDRlVSTFJlZiBjcmVhdGVDRlVSTEZyb21CdWZmZXIoY29u
c3QgQ2hhckJ1ZmZlciYpOwogCiBLVVJMOjpLVVJMKENGVVJMUmVmIHVybCkKIHsKKyNpZiAhVVNF
KFdURlVSTCkKICAgICBpZiAoIXVybCkgewogICAgICAgICBwYXJzZSgwKTsKICAgICAgICAgcmV0
dXJuOwpAQCAtNTIsNiArNTEsMTEgQEAgS1VSTDo6S1VSTChDRlVSTFJlZiB1cmwpCiAgICAgQ0ZV
UkxHZXRCeXRlcyh1cmwsIHJlaW50ZXJwcmV0X2Nhc3Q8VUludDgqPihieXRlcyksIGJ5dGVzTGVu
Z3RoKTsKICAgICBieXRlc1tieXRlc0xlbmd0aF0gPSAnXDAnOwogICAgIHBhcnNlKGJ5dGVzKTsK
KyNlbHNlIC8vIFVTRShXVEZVUkwpCisgICAgLy8gRklYTUU6IEFkZCBXVEZVUkwgSW1wbGVtZW50
YXRpb24uCisgICAgVU5VU0VEX1BBUkFNKHVybCk7CisgICAgaW52YWxpZGF0ZSgpOworI2VuZGlm
CiB9CiAKIENGVVJMUmVmIGNyZWF0ZUNGVVJMRnJvbUJ1ZmZlcihjb25zdCBDaGFyQnVmZmVyJiBi
dWZmZXIpCkBAIC02OSwxNiArNzMsMjEgQEAgQ0ZVUkxSZWYgY3JlYXRlQ0ZVUkxGcm9tQnVmZmVy
KGNvbnN0IENoYXJCdWZmZXImIGJ1ZmZlcikKICNpZiAhUExBVEZPUk0oTUFDKSAmJiAhKFBMQVRG
T1JNKFFUKSAmJiBVU0UoUVRLSVQpKQogQ0ZVUkxSZWYgS1VSTDo6Y3JlYXRlQ0ZVUkwoKSBjb25z
dAogeworI2lmICFVU0UoV1RGVVJMKQogICAgIC8vIEZJWE1FOiBXaGF0IHNob3VsZCB0aGlzIHJl
dHVybiBmb3IgaW52YWxpZCBVUkxzPwogICAgIC8vIEN1cnJlbnRseSBpdCB0aHJvd3MgYXdheSB0
aGUgaGlnaCBieXRlcyBvZiB0aGUgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIGluIHRoYXQgY2Fz
ZSwKICAgICAvLyB3aGljaCBpcyBjbGVhcmx5IHdyb25nLgogICAgIENoYXJCdWZmZXIgYnVmZmVy
OwogICAgIGNvcHlUb0J1ZmZlcihidWZmZXIpOwogICAgIHJldHVybiBjcmVhdGVDRlVSTEZyb21C
dWZmZXIoYnVmZmVyKTsKKyNlbHNlIC8vIFVTRShXVEZVUkwpCisgICAgLy8gRklYTUU6IEFkZCBX
VEZVUkwgSW1wbGVtZW50YXRpb24uCisgICAgcmV0dXJuIDA7CisjZW5kaWYKIH0KICNlbmRpZgog
Ci0jaWYgIShQTEFURk9STShRVCkgJiYgVVNFKFFUS0lUKSkKKyNpZiAhVVNFKFdURlVSTCkgJiYg
IShQTEFURk9STShRVCkgJiYgVVNFKFFUS0lUKSkKIFN0cmluZyBLVVJMOjpmaWxlU3lzdGVtUGF0
aCgpIGNvbnN0CiB7CiAgICAgUmV0YWluUHRyPENGVVJMUmVmPiBjZlVSTChBZG9wdENGLCBjcmVh
dGVDRlVSTCgpKTsKQEAgLTk0LDIwICsxMDMsNCBAQCBTdHJpbmcgS1VSTDo6ZmlsZVN5c3RlbVBh
dGgoKSBjb25zdAogfQogI2VuZGlmCiAKLSNlbHNlIC8vIFVTRShXVEZVUkwpCi0KLUtVUkw6OktV
UkwoQ0ZVUkxSZWYpCi17Ci0gICAgLy8gRklYTUU6IEFkZCBXVEZVUkwgSW1wbGVtZW50YXRpb24u
Ci0gICAgaW52YWxpZGF0ZSgpOwotfQotCi1DRlVSTFJlZiBLVVJMOjpjcmVhdGVDRlVSTCgpIGNv
bnN0Ci17Ci0gICAgLy8gRklYTUU6IEFkZCBXVEZVUkwgSW1wbGVtZW50YXRpb24uCi0gICAgcmV0
dXJuIDA7Ci19Ci0KLSNlbmRpZiAvLyBVU0UoV1RGVVJMKQotCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvS1VSTE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9LVVJMTWFjLm1tCmluZGV4IGM2OWQ3YWNjZWY5M2U2NTk2MDMxNzJiMTA5ZTc4YjQ4
Y2ZmZWJlOTUuLjVhMmI2OGMzOTQ4MGE3ZGQwNzVmZWE4MWYzYjY0MGYyYzYzMmJjZDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9LVVJMTWFjLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9LVVJMTWFjLm1tCkBAIC0yOSwxMyArMjksMTQgQEAKICNp
bXBvcnQgIkZvdW5kYXRpb25FeHRyYXMuaCIKICNpbXBvcnQgPENvcmVGb3VuZGF0aW9uL0NGVVJM
Lmg+CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKK3VzaW5nIG5hbWVzcGFjZSBXVEY7CiAKLSNpZiAh
VVNFKFdURlVSTCkKK25hbWVzcGFjZSBXZWJDb3JlIHsKIAogdHlwZWRlZiBWZWN0b3I8Y2hhciwg
NTEyPiBDaGFyQnVmZmVyOwogZXh0ZXJuIENGVVJMUmVmIGNyZWF0ZUNGVVJMRnJvbUJ1ZmZlcihj
b25zdCBDaGFyQnVmZmVyJiBidWZmZXIpOwogCisjaWYgIVVTRShXVEZVUkwpCiBLVVJMOjpLVVJM
KE5TVVJMICp1cmwpCiB7CiAgICAgaWYgKCF1cmwpIHsKQEAgLTUwLDYgKzUxLDI4IEBAIEtVUkw6
OktVUkwoTlNVUkwgKnVybCkKICAgICBieXRlc1tieXRlc0xlbmd0aF0gPSAnXDAnOwogICAgIHBh
cnNlKGJ5dGVzKTsKIH0KKyNlbHNlCitLVVJMOjpLVVJMKE5TVVJMICp1cmwpCisgICAgOiBtX3Vy
bEltcGwoYWRvcHRSZWYobmV3IEtVUkxXVEZVUkxJbXBsKCkpKQoreworICAgIGlmICghdXJsKSB7
CisgICAgICAgIGludmFsaWRhdGUoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8v
IEZJWE1FOiBBZGQgYSBwcm9wZXIgV1RGVVJMIEltcGxlbWVudGF0aW9uLgorICAgIENGSW5kZXgg
Ynl0ZXNMZW5ndGggPSBDRlVSTEdldEJ5dGVzKHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZVUkxSZWY+KHVy
bCksIDAsIDApOworICAgIFZlY3RvcjxjaGFyLCA1MTI+IGJ1ZmZlcihieXRlc0xlbmd0aCArIDEp
OworICAgIGNoYXIqIGJ5dGVzID0gJmJ1ZmZlclswXTsKKyAgICBDRlVSTEdldEJ5dGVzKHJlaW50
ZXJwcmV0X2Nhc3Q8Q0ZVUkxSZWY+KHVybCksIHJlaW50ZXJwcmV0X2Nhc3Q8VUludDgqPihieXRl
cyksIGJ5dGVzTGVuZ3RoKTsKKyAgICBieXRlc1tieXRlc0xlbmd0aF0gPSAnXDAnOworCisgICAg
U3RyaW5nIHVybFN0cmluZyhieXRlcywgYnl0ZXNMZW5ndGgpOworICAgIG1fdXJsSW1wbC0+bV9w
YXJzZWRVUkwgPSBQYXJzZWRVUkwodXJsU3RyaW5nKTsKKyAgICBpZiAobV91cmxJbXBsLT5tX3Bh
cnNlZFVSTC5pc1ZhbGlkKCkpCisgICAgICAgIG1fdXJsSW1wbC0+bV9pbnZhbGlkVXJsU3RyaW5n
ID0gdXJsU3RyaW5nOworfQorI2VuZGlmCiAKIEtVUkw6Om9wZXJhdG9yIE5TVVJMICooKSBjb25z
dAogewpAQCAtNjYsMjUgKzg5LDIxIEBAIENGVVJMUmVmIEtVUkw6OmNyZWF0ZUNGVVJMKCkgY29u
c3QKICAgICBpZiAoaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxD
RlVSTFJlZj4oW1tOU1VSTCBhbGxvY10gaW5pdFdpdGhTdHJpbmc6QCIiXSk7CiAKKyAgICAvLyBG
SVhNRTogQWRkIGEgcHJvcGVyIFdURlVSTCBJbXBsZW1lbnRhdGlvbi4KICAgICBDaGFyQnVmZmVy
IGJ1ZmZlcjsKKyNpZiAhVVNFKFdURlVSTCkKICAgICBjb3B5VG9CdWZmZXIoYnVmZmVyKTsKLSAg
ICByZXR1cm4gY3JlYXRlQ0ZVUkxGcm9tQnVmZmVyKGJ1ZmZlcik7Ci19Ci0KICNlbHNlCi0KLUtV
Ukw6OktVUkwoTlNVUkwgKikKLXsKLSAgICAvLyBGSVhNRTogQWRkIFdURlVSTCBJbXBsZW1lbnRh
dGlvbi4KLSAgICBpbnZhbGlkYXRlKCk7CisgICAgU3RyaW5nIHVybFN0cmluZyA9IHN0cmluZygp
OworICAgIGJ1ZmZlci5yZXNpemUodXJsU3RyaW5nLmxlbmd0aCgpKTsKKyAgICBjb25zdCBVQ2hh
ciogc3JjID0gdXJsU3RyaW5nLmNoYXJhY3RlcnMxNigpOworICAgIHNpemVfdCBsZW5ndGggPSB1
cmxTdHJpbmcubGVuZ3RoKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsZW5ndGg7IGkr
KykKKyAgICAgICAgYnVmZmVyW2ldID0gc3RhdGljX2Nhc3Q8Y2hhcj4oc3JjW2ldKTsKKyNlbmRp
ZgorICAgIHJldHVybiBjcmVhdGVDRlVSTEZyb21CdWZmZXIoYnVmZmVyKTsKIH0KIAotS1VSTDo6
b3BlcmF0b3IgTlNVUkwgKigpIGNvbnN0Ci17Ci0gICAgLy8gRklYTUU6IEFkZCBXVEZVUkwgSW1w
bGVtZW50YXRpb24uCi0gICAgcmV0dXJuIG5pbDsKLX0KIAotI2VuZGlmCiAKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>142888</attachid>
            <date>2012-05-19 19:00:52 -0700</date>
            <delta_ts>2012-06-10 15:02:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-85724-20120519190051.patch</filename>
            <type>text/plain</type>
            <size>23842</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE3Njk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDE4OThhMmFhNzljMzZjM2QwNTVlOGY3
NTk0OWE1ZGI1NDJiNWZkZGMuLmFlZWU3ZTUxNmNjZmQ4NzFlNzEzMDIxYzgzYjlmMzVmMTZkYTNi
ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTItMDUtMTkgIEJlbmphbWluIFBvdWxhaW4gIDxi
ZW5qYW1pbkB3ZWJraXQub3JnPgorCisgICAgICAgIEltcGxlbWVudCB0aGUgY29uc3RydWN0b3Jz
IG9mIEtVUkwgYmFzZWQgb24gV1RGVVJMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD04NTcyNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogd3RmL3VybC9hcGkvUGFyc2VkVVJMLmNwcDoKKyAgICAgICAgKFdU
Rjo6UGFyc2VkVVJMOjpQYXJzZWRVUkwpOgorICAgICAgICAoV1RGKToKKyAgICAgICAgKiB3dGYv
dXJsL2FwaS9QYXJzZWRVUkwuaDoKKyAgICAgICAgKFBhcnNlZFVSTCk6CisgICAgICAgICogd3Rm
L3VybC9zcmMvVVJMUGFyc2VyLmg6CisgICAgICAgIChVUkxQYXJzZXIpOgorICAgICAgICAoV1RG
OjpVUkxQYXJzZXI6OnBhcnNlUmVsYXRpdmVVUkwpOgorCiAyMDEyLTA1LTE2ICBHZW9mZnJleSBH
YXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CiAKICAgICAgICAgVGhpcyBpcyBub3QgYSBqb2tlOiAz
LjdYIHNwZWVkdXAgZnJvbSByZW1vdmluZyBhIGNhbGwgdG8gc2xlZXAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA4
NjY4MjQxMzljMWNjMzUxYjBkNjgwZmI4ODc1NzNmNTA1ODExOWMzLi5iNDg0ZTI3ZDVjMjY1MzQz
NjM4NDYyMDIwNWI1YzdlOTE4MzY0MDQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIw
MTItMDUtMTkgIEJlbmphbWluIFBvdWxhaW4gIDxiZW5qYW1pbkB3ZWJraXQub3JnPgorCisgICAg
ICAgIEltcGxlbWVudCB0aGUgY29uc3RydWN0b3JzIG9mIEtVUkwgYmFzZWQgb24gV1RGVVJMCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NTcyNAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0
cy4gKE9PUFMhKQorCisgICAgICAgICogcGxhdGZvcm0vS1VSTFdURlVSTC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpLVVJMOjpLVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OktVUkw6OnN0cmluZyk6
CisgICAgICAgIChXZWJDb3JlOjpLVVJMOjpwcm90b2NvbElzKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9jZi9LVVJMQ0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S1VSTDo6S1VSTCk6CisgICAg
ICAgIChXZWJDb3JlOjpLVVJMOjpjcmVhdGVDRlVSTCk6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tYWMvS1VSTE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6S1VSTDo6S1VSTCk6CisgICAgICAgIChXZWJDb3JlOjpLVVJMOjpjcmVh
dGVDRlVSTCk6CisKIDIwMTItMDUtMTkgIEVtaWwgQSBFa2x1bmQgIDxlYWVAY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFNpbXBsaWZ5IFJlbmRlck92ZXJmbG93IGJ5IHVzaW5nIFJlY3RzCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAyNmI5MmJiMDc5NDIxZDJk
MWFmNzVlNWI2NTk0NmJkMDdkMmIzNTI3Li42NmQyMDA0MzkwY2Q3ODdjNzBjZDFjN2EyMzRjMjZi
NjkyY2ZjNmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTcsNiArNyw3IEBACiAJb2JqZWN0cyA9IHsKIAogLyogQmVnaW4gUEJYQnVpbGRGaWxlIHNlY3Rp
b24gKi8KKwkJMjY0NkNGNzkxNTY4NzVEODAwRkY2Q0E5IC8qIFVSTFN0cmluZy5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyNjQ2Q0Y3ODE1Njg3NUQ4
MDBGRjZDQTkgLyogVVJMU3RyaW5nLmNwcCAqLzsgfTsKIAkJQTg3NkRCRDgxNTE4MTZFNTAwREFE
Qjk1IC8qIFBsYXRmb3JtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBODc2REJENzE1MTgxNkU1MDBEQURCOTUgLyogUGxhdGZvcm0uaCAqLzsgfTsKIAkJ
QThBNDczN0YxNTFBODI1QjAwNDEyM0ZGIC8qIEFsaWdubWVudC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThBNDcyNTQxNTFBODI1QTAwNDEyM0ZGIC8q
IEFsaWdubWVudC5oICovOyB9OwogCQlBOEE0NzM4MDE1MUE4MjVCMDA0MTIzRkYgLyogQWx3YXlz
SW5saW5lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
OEE0NzI1NTE1MUE4MjVBMDA0MTIzRkYgLyogQWx3YXlzSW5saW5lLmggKi87IH07CkBAIC0yNDAs
NiArMjQxLDcgQEAKIC8qIEVuZCBQQlhCdWlsZEZpbGUgc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQ
QlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KKwkJMjY0NkNGNzgxNTY4NzVEODAwRkY2Q0E5IC8q
IFVSTFN0cmluZy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBVUkxT
dHJpbmcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1RDI0N0I2MjE0Njg5Qjg2
MDBFNzhCNzYgLyogbGliV1RGLmEgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGlj
aXRGaWxlVHlwZSA9IGFyY2hpdmUuYXI7IGluY2x1ZGVJbkluZGV4ID0gMDsgcGF0aCA9IGxpYldU
Ri5hOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQk1RDI0N0I2RTE0Njg5
QzQ3MDBFNzhCNzYgLyogQmFzZS54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBCYXNlLnhjY29uZmln
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1RDI0N0I2RjE0Njg5QzQ3MDBFNzhCNzYg
LyogQ29tcGlsZXJWZXJzaW9uLnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IENvbXBpbGVyVmVyc2lv
bi54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTgyMCw2ICs4MjIsNyBA
QAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJQThBNDczNjAxNTFBODI1QjAwNDEyM0ZGIC8qIFBhcnNl
ZFVSTC5jcHAgKi8sCiAJCQkJQThBNDczNjExNTFBODI1QjAwNDEyM0ZGIC8qIFBhcnNlZFVSTC5o
ICovLAorCQkJCTI2NDZDRjc4MTU2ODc1RDgwMEZGNkNBOSAvKiBVUkxTdHJpbmcuY3BwICovLAog
CQkJCUE4QTQ3MzYyMTUxQTgyNUIwMDQxMjNGRiAvKiBVUkxTdHJpbmcuaCAqLywKIAkJCSk7CiAJ
CQlwYXRoID0gYXBpOwpAQCAtMTE2OCw2ICsxMTcxLDcgQEAKIAkJCQlBOEE0NzQ3NzE1MUE4MjVC
MDA0MTIzRkYgLyogVVJMRXNjYXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3NDdCMTUx
QTgyNUIwMDQxMjNGRiAvKiBVUkxTZWdtZW50cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEE0
NzQ4NjE1MUE4MjVCMDA0MTIzRkYgLyogV1RGVGhyZWFkRGF0YS5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQkyNjQ2Q0Y3OTE1Njg3NUQ4MDBGRjZDQTkgLyogVVJMU3RyaW5nLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwog
CQl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRGF0YUxvZy5oIGIvU291cmNlL1dURi93
dGYvRGF0YUxvZy5oCmluZGV4IGJjYmViYjllMjNiMzllZjk1ZDFhN2U3ZjVkMGJhMWMxNzI4MjBl
ZmQuLmI1NDM3ZDJiZWQ3ZmYyNGM1Y2MzN2FmN2UwY2M0YzJiYjJlNTU5NjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL0RhdGFMb2cuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9EYXRhTG9nLmgK
QEAgLTM1LDEyICszNSwxMSBAQCBuYW1lc3BhY2UgV1RGIHsKIAogRklMRSogZGF0YUZpbGUoKTsK
IAotdm9pZCBkYXRhTG9nVihjb25zdCBjaGFyKiBmb3JtYXQsIHZhX2xpc3QpIFdURl9BVFRSSUJV
VEVfUFJJTlRGKDEsIDApOwotdm9pZCBkYXRhTG9nKGNvbnN0IGNoYXIqIGZvcm1hdCwgLi4uKSBX
VEZfQVRUUklCVVRFX1BSSU5URigxLCAyKTsKK1dURl9FWFBPUlRfUFJJVkFURSB2b2lkIGRhdGFM
b2dWKGNvbnN0IGNoYXIqIGZvcm1hdCwgdmFfbGlzdCkgV1RGX0FUVFJJQlVURV9QUklOVEYoMSwg
MCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBkYXRhTG9nKGNvbnN0IGNoYXIqIGZvcm1hdCwg
Li4uKSBXVEZfQVRUUklCVVRFX1BSSU5URigxLCAyKTsKIAogfSAvLyBuYW1lc3BhY2UgV1RGCiAK
IHVzaW5nIFdURjo6ZGF0YUxvZzsKIAogI2VuZGlmIC8vIERhdGFMb2dfaAotCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaApp
bmRleCBjZmM3N2U5NTY3N2YzNGQ3ZjU4NzhhYzA4MDI2NmUxYmIxNmEwMjg1Li5mYmI0NTY3MDA0
MTVkY2M5NTY5ZmFhZDkwMzY0MjE3OTQ4OWVlYzgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi9QbGF0Zm9ybS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKQEAgLTk0LDYgKzk0
LDggQEAKICNkZWZpbmUgV1RGX1VTRV9BUkVOQV9BTExPQ19BTElHTk1FTlRfSU5URUdFUiAxCiAj
ZW5kaWYgLyogTUlQUyAqLwogCisjZGVmaW5lIFdURl9VU0VfV1RGVVJMIDEKKwogLyogQ1BVKFBQ
QykgLSBQb3dlclBDIDMyLWJpdCAqLwogI2lmICAgZGVmaW5lZChfX3BwY19fKSAgICAgXAogICAg
IHx8IGRlZmluZWQoX19QUENfXykgICAgIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvV1RGU3RyaW5nLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCmluZGV4IDVl
MTc2M2FkNzVlZTQ0YmZjNzEyZmIzZWUzYjFjNTU1M2I0Y2Y0OWIuLjIyYmEyMDdhZjgwNWEwMGVj
ZmJhNDY2YjUwOTdiMDNjNDEzOGZlYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQv
V1RGU3RyaW5nLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaApAQCAtNDA2
LDcgKzQwNiw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkg
Y29uc3QgeyByZXR1cm4gbV9pbXBsLmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCk7IH0KIAogI2lm
bmRlZiBOREVCVUcKLSAgICB2b2lkIHNob3coKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgdm9pZCBzaG93KCkgY29uc3Q7CiAjZW5kaWYKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL3VybC9hcGkvUGFyc2VkVVJMLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3VybC9h
cGkvUGFyc2VkVVJMLmNwcAppbmRleCBmNjkxNjJhNjc4Mjg5MTUzZDZjZjc2OWQyMDE1Y2EzYmQ0
NDI4MTZkLi5kY2RiYzNiYmUzZWMwZGViMWNiYjMyMjRiMTNhYzg5NjdiZmY3OGE2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi91cmwvYXBpL1BhcnNlZFVSTC5jcHAKKysrIGIvU291cmNlL1dU
Ri93dGYvdXJsL2FwaS9QYXJzZWRVUkwuY3BwCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHly
aWdodCAoQykgMjAxMCBHb29nbGUsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI4LDE4ICsyOSw1OSBAQAogCiAjaWYgVVNFKFdURlVS
TCkKIAotI2luY2x1ZGUgIlVSTENvbXBvbmVudC5oIgotI2luY2x1ZGUgIlVSTFBhcnNlci5oIgor
I2luY2x1ZGUgPHd0Zi9EYXRhTG9nLmg+CisjaW5jbHVkZSA8d3RmL1Jhd1VSTEJ1ZmZlci5oPgor
I2luY2x1ZGUgPHd0Zi9VUkxDb21wb25lbnQuaD4KKyNpbmNsdWRlIDx3dGYvVVJMUGFyc2VyLmg+
CiAKIG5hbWVzcGFjZSBXVEYgewogCiBQYXJzZWRVUkw6OlBhcnNlZFVSTChjb25zdCBTdHJpbmcm
IHVybFN0cmluZykKICAgICA6IG1fc3BlYyh1cmxTdHJpbmcpCiB7Ci0gICAgLy8gRklYTUU6IEhh
bmRsZSBub24tc3RhbmRhcmQgVVJMcy4KLSAgICBpZiAodXJsU3RyaW5nLmlzRW1wdHkoKSkKKyAg
ICAvLyBGSVhNRTogaGFuZGxlIGludmFsaWQgdXJsU3RyaW5nLgorICAgIGlmICh1cmxTdHJpbmcu
aXM4Qml0KCkpCisgICAgICAgIFVSTFBhcnNlcjxMQ2hhcj46OnBhcnNlU3RhbmRhcmRVUkwodXJs
U3RyaW5nLmNoYXJhY3RlcnM4KCksIHVybFN0cmluZy5sZW5ndGgoKSwgbV9zZWdtZW50cyk7Cisg
ICAgZWxzZQorICAgICAgICBVUkxQYXJzZXI8VUNoYXI+OjpwYXJzZVN0YW5kYXJkVVJMKHVybFN0
cmluZy5jaGFyYWN0ZXJzMTYoKSwgdXJsU3RyaW5nLmxlbmd0aCgpLCBtX3NlZ21lbnRzKTsKK30K
KworUGFyc2VkVVJMOjpQYXJzZWRVUkwoY29uc3QgUGFyc2VkVVJMJiBiYXNlLCBjb25zdCBTdHJp
bmcmIHJlbGF0aXZlKQoreworICAgIC8vIEZJWE1FOiBoYW5kbGUgaW52YWxpZCBVUkxzLgorICAg
IGlmICghYmFzZS5pc1ZhbGlkKCkpIHsKKyAgICAgICAgbV9zcGVjID0gVVJMU3RyaW5nKHJlbGF0
aXZlKTsKKyAgICAgICAgaWYgKHJlbGF0aXZlLmlzOEJpdCgpKQorICAgICAgICAgICAgVVJMUGFy
c2VyPExDaGFyPjo6cGFyc2VTdGFuZGFyZFVSTChyZWxhdGl2ZS5jaGFyYWN0ZXJzOCgpLCByZWxh
dGl2ZS5sZW5ndGgoKSwgbV9zZWdtZW50cyk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIFVS
TFBhcnNlcjxVQ2hhcj46OnBhcnNlU3RhbmRhcmRVUkwocmVsYXRpdmUuY2hhcmFjdGVyczE2KCks
IHJlbGF0aXZlLmxlbmd0aCgpLCBtX3NlZ21lbnRzKTsKICAgICAgICAgcmV0dXJuOwotICAgIFVS
TFBhcnNlcjxVQ2hhcj46OnBhcnNlU3RhbmRhcmRVUkwodXJsU3RyaW5nLmNoYXJhY3RlcnMoKSwg
dXJsU3RyaW5nLmxlbmd0aCgpLCBtX3NlZ21lbnRzKTsKKyAgICB9CisKKyAgICBjb25zdCBTdHJp
bmcmIGJhc2VTdHJpbmcgPSBiYXNlLm1fc3BlYy5zdHJpbmcoKTsKKyAgICBSYXdVUkxCdWZmZXI8
Y2hhciwgMTAyND4gb3V0cHV0QnVmZmVyOworICAgIGlmIChyZWxhdGl2ZS5pczhCaXQoKSkgewor
ICAgICAgICBpZiAoYmFzZVN0cmluZy5pczhCaXQoKSkgeworICAgICAgICAgICAgVVJMUGFyc2Vy
PExDaGFyLCBMQ2hhcj46OnBhcnNlVVJMV2l0aEJhc2UocmVsYXRpdmUuY2hhcmFjdGVyczgoKSwg
cmVsYXRpdmUubGVuZ3RoKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBiYXNlU3RyaW5nLmNoYXJhY3RlcnM4KCksIGJhc2VTdHJpbmcubGVu
Z3RoKCksIGJhc2UubV9zZWdtZW50cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG91dHB1dEJ1ZmZlciwgbV9zZWdtZW50cyk7CisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICBVUkxQYXJzZXI8TENoYXIsIFVDaGFyPjo6cGFyc2VVUkxX
aXRoQmFzZShyZWxhdGl2ZS5jaGFyYWN0ZXJzOCgpLCByZWxhdGl2ZS5sZW5ndGgoKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2VTdHJp
bmcuY2hhcmFjdGVyczE2KCksIGJhc2VTdHJpbmcubGVuZ3RoKCksIGJhc2UubV9zZWdtZW50cywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91
dHB1dEJ1ZmZlciwgbV9zZWdtZW50cyk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAg
ICBpZiAoYmFzZVN0cmluZy5pczhCaXQoKSkgeworICAgICAgICAgICAgVVJMUGFyc2VyPFVDaGFy
LCBMQ2hhcj46OnBhcnNlVVJMV2l0aEJhc2UocmVsYXRpdmUuY2hhcmFjdGVyczE2KCksIHJlbGF0
aXZlLmxlbmd0aCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYmFzZVN0cmluZy5jaGFyYWN0ZXJzOCgpLCBiYXNlU3RyaW5nLmxlbmd0aCgp
LCBiYXNlLm1fc2VnbWVudHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBvdXRwdXRCdWZmZXIsIG1fc2VnbWVudHMpOworICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgVVJMUGFyc2VyPFVDaGFyLCBVQ2hhcj46OnBhcnNlVVJMV2l0aEJh
c2UocmVsYXRpdmUuY2hhcmFjdGVyczE2KCksIHJlbGF0aXZlLmxlbmd0aCgpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZVN0cmluZy5j
aGFyYWN0ZXJzMTYoKSwgYmFzZVN0cmluZy5sZW5ndGgoKSwgYmFzZS5tX3NlZ21lbnRzLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0
QnVmZmVyLCBtX3NlZ21lbnRzKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBtX3NwZWMgPSBVUkxT
dHJpbmcoU3RyaW5nKG91dHB1dEJ1ZmZlci5kYXRhKCksIG91dHB1dEJ1ZmZlci5sZW5ndGgoKSkp
OwogfQogCiBQYXJzZWRVUkwgUGFyc2VkVVJMOjppc29sYXRlZENvcHkoKSBjb25zdApAQCAtMTA4
LDYgKzE1MCwzNiBAQCBTdHJpbmcgUGFyc2VkVVJMOjpzZWdtZW50KGNvbnN0IFVSTENvbXBvbmVu
dCYgY29tcG9uZW50KSBjb25zdAogICAgIHJldHVybiBzZWdtZW50OwogfQogCisjaWZuZGVmIE5E
RUJVRworCisjZGVmaW5lIFNIT1dfQ09NUE9ORU5UKHBhcnNlZFVSTCwgY29tcG9uZW50TmFtZSkg
XAorICAgIGlmICghcGFyc2VkVVJMLT5jb21wb25lbnROYW1lKCkuaXNOdWxsKCkpIHsgXAorICAg
ICAgICBkYXRhTG9nKCIgICAgIiAjY29tcG9uZW50TmFtZSAiID0gIik7IFwKKyAgICAgICAgcGFy
c2VkVVJMLT5jb21wb25lbnROYW1lKCkuc2hvdygpOyBcCisgICAgfQorCit2b2lkIFBhcnNlZFVS
TDo6cHJpbnQoKSBjb25zdAoreworICAgIGlmICghaXNWYWxpZCgpKSB7CisgICAgICAgIGRhdGFM
b2coIkludmFsaWQgUGFyc2VkVVJMLlxuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBkYXRhTG9nKCJWYWxpZCBQYXJzZWRVUkwgd2l0aDpcbiIpOworICAgIGRhdGFMb2coIiAgICBt
X3NwZWMgPSAiKTsKKyAgICBtX3NwZWMucHJpbnQoKTsKKworICAgIFNIT1dfQ09NUE9ORU5UKHRo
aXMsIHNjaGVtZSk7CisgICAgU0hPV19DT01QT05FTlQodGhpcywgdXNlcm5hbWUpOworICAgIFNI
T1dfQ09NUE9ORU5UKHRoaXMsIHBhc3N3b3JkKTsKKyAgICBTSE9XX0NPTVBPTkVOVCh0aGlzLCBo
b3N0KTsKKyAgICBTSE9XX0NPTVBPTkVOVCh0aGlzLCBwb3J0KTsKKyAgICBTSE9XX0NPTVBPTkVO
VCh0aGlzLCBwYXRoKTsKKyAgICBTSE9XX0NPTVBPTkVOVCh0aGlzLCBxdWVyeSk7CisgICAgU0hP
V19DT01QT05FTlQodGhpcywgZnJhZ21lbnQpOworfQorI2VuZGlmCisKIH0KIAogI2VuZGlmIC8v
IFVTRShXVEZVUkwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi91cmwvYXBpL1BhcnNlZFVS
TC5oIGIvU291cmNlL1dURi93dGYvdXJsL2FwaS9QYXJzZWRVUkwuaAppbmRleCAyYmIzMzMwY2Zj
MTEzMjA2ODE0MzkxMzBlMzMxZDM0OGI4ZGIzN2Q4Li5lMTRlYWVlNTg4YmZhYzcwZWU2ZDIzOWEy
MDE1MTlkNGRiZDdkODJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi91cmwvYXBpL1BhcnNl
ZFVSTC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3VybC9hcGkvUGFyc2VkVVJMLmgKQEAgLTEsNSAr
MSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSwgSW5jLiBBbGwgUmlnaHRz
IFJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzgsOSArMzksOSBA
QCBjbGFzcyBVUkxDb21wb25lbnQ7CiAvLyBQYXJzZWRVUkwgcmVwcmVzZW50cyBhIHZhbGlkIFVS
TCBkZWNvbXBvc2VkIGJ5IGNvbXBvbmVudHMuCiBjbGFzcyBQYXJzZWRVUkwgewogcHVibGljOgot
ICAgIC8vIEZJWE1FOiBBZGQgYSBtZXRob2QgZm9yIHBhcnNpbmcgbm9uLWNhbm9uaWNhbGl6ZWQg
VVJMcy4KICAgICBQYXJzZWRVUkwoKSB7IH07CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIGV4cGxp
Y2l0IFBhcnNlZFVSTChjb25zdCBTdHJpbmcmKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgZXhw
bGljaXQgUGFyc2VkVVJMKGNvbnN0IFBhcnNlZFVSTCYgYmFzZSwgY29uc3QgU3RyaW5nJiByZWxh
dGl2ZSk7CiAKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgUGFyc2VkVVJMIGlzb2xhdGVkQ29weSgp
IGNvbnN0OwogCkBAIC01OCw3ICs1OSwxMSBAQCBwdWJsaWM6CiAKICAgICBXVEZfRVhQT1JUX1BS
SVZBVEUgU3RyaW5nIGJhc2VBc1N0cmluZygpIGNvbnN0OwogCi0gICAgVVJMU3RyaW5nIHNwZWMo
KSB7IHJldHVybiBtX3NwZWM7IH0KKyAgICBjb25zdCBVUkxTdHJpbmcmIHNwZWMoKSB7IHJldHVy
biBtX3NwZWM7IH0KKworI2lmbmRlZiBOREVCVUcKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9p
ZCBwcmludCgpIGNvbnN0OworI2VuZGlmCiAKIHByaXZhdGU6CiAgICAgaW5saW5lIFN0cmluZyBz
ZWdtZW50KGNvbnN0IFVSTENvbXBvbmVudCYpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvdXJsL2FwaS9VUkxTdHJpbmcuY3BwIGIvU291cmNlL1dURi93dGYvdXJsL2FwaS9VUkxT
dHJpbmcuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkxNDdmZTM5OWYyOWRlYTQyMzJlZmIxYmRmMjc3YWUyNmNk
N2UzOWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi91cmwvYXBpL1VSTFN0cmlu
Zy5jcHAKQEAgLTAsMCArMSw0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJVUkxTdHJpbmcuaCIK
KworI2lmIFVTRShXVEZVUkwpCisKK25hbWVzcGFjZSBXVEYgeworCisjaWZuZGVmIE5ERUJVRwor
dm9pZCBVUkxTdHJpbmc6OnByaW50KCkgY29uc3QKK3sKKyAgICBtX3N0cmluZy5zaG93KCk7Cit9
CisjZW5kaWYgLy8gbmRlZiBOREVCVUcKKworfQorCisjZW5kaWYgLy8gVVNFKFdURlVSTCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3VybC9hcGkvVVJMU3RyaW5nLmggYi9Tb3VyY2UvV1RG
L3d0Zi91cmwvYXBpL1VSTFN0cmluZy5oCmluZGV4IDlhZTMwZDdhOTdjNDEyZmUxZjNmMTRjZDcw
OGNkMDgxZGNiMWQ4ODYuLjcwZWYyMTkxMGUyYWRkNGMzMDNmYmY4NGMwZmQyNzBjOTM1MWNmODMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3VybC9hcGkvVVJMU3RyaW5nLmgKKysrIGIvU291
cmNlL1dURi93dGYvdXJsL2FwaS9VUkxTdHJpbmcuaApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBD
b3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlLCBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOSw2ICs0MCwxMCBAQCBwdWJsaWM6CiAKICAg
ICBjb25zdCBTdHJpbmcmIHN0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nO30KIAorI2lm
bmRlZiBOREVCVUcKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBwcmludCgpIGNvbnN0Owor
I2VuZGlmCisKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFBhcnNlZFVSTDsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvdXJsL3NyYy9VUkxQYXJzZXIuaCBiL1NvdXJjZS9XVEYvd3Rm
L3VybC9zcmMvVVJMUGFyc2VyLmgKaW5kZXggMDFmNzM4Y2YzOWM4NDRkOWM3MWVjN2I1ZDZkMTAx
MjU5MDJhOGNlMy4uMmI0ZDU5OGEzMTlhM2NhMjdmODY1OTRiZTdjMGI4ZmIxYTA3MThiNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvdXJsL3NyYy9VUkxQYXJzZXIuaAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi91cmwvc3JjL1VSTFBhcnNlci5oCkBAIC0xLDYgKzEsNyBAQAogLyogQmFzZWQgb24g
bnNVUkxQYXJzZXJzLmNjIGZyb20gTW96aWxsYQogICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQogICogQ29weXJpZ2h0IChDKSAxOTk4IE5ldHNjYXBlIENvbW11bmljYXRp
b25zIENvcnBvcmF0aW9uLgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBPdGhlciBjb250cmlidXRvcnM6CiAgKiAgIERhcmluIEZp
c2hlciAob3JpZ2luYWwgYXV0aG9yKQpAQCAtMzksMTIgKzQwLDEzIEBACiAKICNpbmNsdWRlICJV
UkxDb21wb25lbnQuaCIKICNpbmNsdWRlICJVUkxTZWdtZW50cy5oIgorI2luY2x1ZGUgIlVudXNl
ZFBhcmFtLmgiCiAKICNpZiBVU0UoV1RGVVJMKQogCiBuYW1lc3BhY2UgV1RGIHsKIAotdGVtcGxh
dGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5
cGUsIHR5cGVuYW1lIEJhc2VDaGFyYWN0ZXJUeXBlID0gQ2hhcmFjdGVyVHlwZT4KIGNsYXNzIFVS
TFBhcnNlciB7CiBwdWJsaWM6CiAgICAgZW51bSBTcGVjaWFsUG9ydCB7CkBAIC0xNjgsNiArMTcw
LDIxIEBAIHB1YmxpYzoKICAgICAgICAgcGFyc2VBZnRlclNjaGVtZShzcGVjLCBzcGVjTGVuZ3Ro
LCBhZnRlclNjaGVtZSwgcGFyc2VkKTsKICAgICB9CiAKKyAgICAvLyBUaGUgbWFpbiBwYXJzaW5n
IGZ1bmN0aW9uIGZvciAobWF5IGJlKSByZWxhdGl2ZSBVUkxzLgorICAgIHN0YXRpYyB2b2lkIHBh
cnNlVVJMV2l0aEJhc2UoY29uc3QgQ2hhcmFjdGVyVHlwZSogc3BlYywgaW50IHNwZWNMZW5ndGgs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBCYXNlQ2hhcmFjdGVyVHlw
ZSogYmFzZVN0cmluZ1NwZWMsIGludCBiYXNlU3RyaW5nU3BlY0xlbmd0aCwgY29uc3QgVVJMU2Vn
bWVudHMmIGJhc2VTdHJpbmdTZWdtZW50cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFVSTEJ1ZmZlcjxjaGFyPiZvdXRwdXRCdWZmZXIsIFVSTFNlZ21lbnRzJiBwYXJzZWQpCisg
ICAgeworICAgICAgICBVTlVTRURfUEFSQU0oYmFzZVN0cmluZ1NwZWMpOworICAgICAgICBVTlVT
RURfUEFSQU0oYmFzZVN0cmluZ1NwZWNMZW5ndGgpOworICAgICAgICBVTlVTRURfUEFSQU0oYmFz
ZVN0cmluZ1NlZ21lbnRzKTsKKyAgICAgICAgVU5VU0VEX1BBUkFNKHNwZWMpOworICAgICAgICBV
TlVTRURfUEFSQU0oc3BlY0xlbmd0aCk7CisgICAgICAgIFVOVVNFRF9QQVJBTShvdXRwdXRCdWZm
ZXIpOworICAgICAgICBVTlVTRURfUEFSQU0ocGFyc2VkKTsKKyAgICAgICAgLy8gRklYTUU6IFRv
IGltcGxlbWVudC4KKyAgICB9CisKICAgICBzdGF0aWMgdm9pZCBwYXJzZVBhdGgoY29uc3QgQ2hh
cmFjdGVyVHlwZSogc3BlYywgY29uc3QgVVJMQ29tcG9uZW50JiBwYXRoLCBVUkxDb21wb25lbnQm
IGZpbGVwYXRoLCBVUkxDb21wb25lbnQmIHF1ZXJ5LCBVUkxDb21wb25lbnQmIGZyYWdtZW50KQog
ICAgIHsKICAgICAgICAgLy8gcGF0aCA9IFsvXTxzZWdtZW50MT4vPHNlZ21lbnQyPi88Li4uPi88
c2VnbWVudE4+OzxwYXJhbT4/PHF1ZXJ5PiM8ZnJhZ21lbnQ+CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi91cmwvc3JjL1VSTFNlZ21lbnRzLmggYi9Tb3VyY2UvV1RGL3d0Zi91cmwvc3JjL1VS
TFNlZ21lbnRzLmgKaW5kZXggNjRkMDYxOWI4NjliM2Q5YTY2ZjNjOWI4ZDQyYzllNzQyZGU2ZjAw
OS4uZWE5MWRiMmM3NmMzMDQ2MDAyMGM3NjFmNGVjYjdhMjJmNmY0NmU4YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvdXJsL3NyYy9VUkxTZWdtZW50cy5oCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L3VybC9zcmMvVVJMU2VnbWVudHMuaApAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAgICAgICAg
IFBvcnQsCiAgICAgICAgIFBhdGgsCiAgICAgICAgIFF1ZXJ5LAotICAgICAgICBGcmFnbWVudCwK
KyAgICAgICAgRnJhZ21lbnQKICAgICB9OwogCiAgICAgVVJMU2VnbWVudHMoKSB7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tVUkwuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vS1VSTC5jcHAKaW5kZXggMGI0NmVjMGZjNzZmMGY3OWM4OTk0Y2UzMzBiNjAxMzE1
YTE0YTUxNS4uOGQzZDgxYTliZDE5Yjc5YjNiMTlkMzlmOTc0YTI4Y2JjMWJiOGM1OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS1VSTC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vS1VSTC5jcHAKQEAgLTE3MzcsNyArMTczNyw3IEBAIGJvb2wgaXNWYWxpZFBy
b3RvY29sKGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpCiAjaWZuZGVmIE5ERUJVRwogdm9pZCBLVVJM
OjpwcmludCgpIGNvbnN0CiB7Ci0gICAgcHJpbnRmKCIlc1xuIiwgbV9zdHJpbmcudXRmOCgpLmRh
dGEoKSk7CisgICAgbV9zdHJpbmcuc2hvdygpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tVUkxXVEZVUkwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vS1VSTFdURlVSTC5jcHAKaW5kZXggNGZmMTNkOTQ4YTg3YzVjZTIzZTIzZjEwZmRjNGQx
ODVjNGZhMjA4Yi4uMWU1M2Y2MmYwN2YyMmYyMzU0YzkyZTA1ODM2MGZjYTZmYzdkMDU4MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS1VSTFdURlVSTC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vS1VSTFdURlVSTC5jcHAKQEAgLTI2LDYgKzI2LDggQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJLVVJMLmgiCiAKKyNpbmNsdWRlIDx3dGYvRGF0
YUxvZy5oPgorCiAjaWYgVVNFKFdURlVSTCkKIAogdXNpbmcgbmFtZXNwYWNlIFdURjsKQEAgLTUw
LDEyICs1MiwyMyBAQCBLVVJMOjpLVVJMKFBhcnNlZFVSTFN0cmluZ1RhZywgY29uc3QgU3RyaW5n
JiB1cmxTdHJpbmcpCiAgICAgOiBtX3VybEltcGwoYWRvcHRSZWYobmV3IEtVUkxXVEZVUkxJbXBs
KCkpKQogewogICAgIG1fdXJsSW1wbC0+bV9wYXJzZWRVUkwgPSBQYXJzZWRVUkwodXJsU3RyaW5n
KTsKLSAgICBBU1NFUlQobV91cmxJbXBsLT5tX3BhcnNlZFVSTC5pc1ZhbGlkKCkpOworCisgICAg
Ly8gRklYTUU6IEZyYW1lOjppbml0KCkgYWN0dWFsbHkgY3JlYXRlIGVtcHR5IFVSTCwgaW52ZXN0
aWdhdGUgd2h5IG5vdCBqdXN0IG51bGwgVVJMLgorICAgIC8vIEFTU0VSVChtX3VybEltcGwtPm1f
cGFyc2VkVVJMLmlzVmFsaWQoKSk7CiB9CiAKLUtVUkw6OktVUkwoY29uc3QgS1VSTCYsIGNvbnN0
IFN0cmluZyYpCitLVVJMOjpLVVJMKGNvbnN0IEtVUkwmIGJhc2VVUkwsIGNvbnN0IFN0cmluZyYg
cmVsYXRpdmUpCisgICAgOiBtX3VybEltcGwoYWRvcHRSZWYobmV3IEtVUkxXVEZVUkxJbXBsKCkp
KQogewotICAgIC8vIEZJWE1FOiBBZGQgV1RGVVJMIEltcGxlbWVudGF0aW9uLgorICAgIC8vIEZJ
WE1FOiB0aGUgY2FzZSB3aXRoIGEgbnVsbCBiYXNlVVJMIGlzIGNvbW1vbi4gV2Ugc2hvdWxkIGhh
dmUgYSBzZXBhcmF0ZSBjb25zdHJ1Y3RvciBpbiBLVVJMLgorICAgIC8vIEZJWE1FOiB0aGUgY2Fz
ZSBvZiBhbiBlbXB0eSBCYXNlIGlzIHVzZWxlc3MsIHdlIHNob3VsZCBnZXQgcmlkIG9mIGVtcHR5
IFVSTHMuCisgICAgaWYgKGJhc2VVUkwuaXNOdWxsKCkgfHwgYmFzZVVSTC5pc0VtcHR5KCkpCisg
ICAgICAgIG1fdXJsSW1wbC0+bV9wYXJzZWRVUkwgPSBQYXJzZWRVUkwocmVsYXRpdmUpOworICAg
IGVsc2UKKyAgICAgICAgbV91cmxJbXBsLT5tX3BhcnNlZFVSTCA9IFBhcnNlZFVSTChiYXNlVVJM
Lm1fdXJsSW1wbC0+bV9wYXJzZWRVUkwsIHJlbGF0aXZlKTsKKworICAgIGlmICghbV91cmxJbXBs
LT5tX3BhcnNlZFVSTC5pc1ZhbGlkKCkpCisgICAgICAgIG1fdXJsSW1wbC0+bV9pbnZhbGlkVXJs
U3RyaW5nID0gcmVsYXRpdmU7CiB9CiAKIEtVUkw6OktVUkwoY29uc3QgS1VSTCYsIGNvbnN0IFN0
cmluZyYsIGNvbnN0IFRleHRFbmNvZGluZyYpCkBAIC05Miw3ICsxMDUsNyBAQCBib29sIEtVUkw6
OmlzVmFsaWQoKSBjb25zdAogICAgIGJvb2wgaXNQYXJzZWRVUkxWYWxpZCA9IG1fdXJsSW1wbC0+
bV9wYXJzZWRVUkwuaXNWYWxpZCgpOwogI2lmbmRlZiBOREVCVUcKICAgICBpZiAoaXNQYXJzZWRV
UkxWYWxpZCkKLSAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShtX3VybEltcGwtPm1faW52YWxp
ZFVybFN0cmluZy5pc051bGwoKSwgIkEgdmFsaWQgVVJMIHNob3VsZCBuZXZlciBoYXZlIGEgdmFs
aWQgaW52YWxpZFVybFN0cmluZy4iKTsKKyAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShtX3Vy
bEltcGwtPm1faW52YWxpZFVybFN0cmluZy5pc051bGwoKSwgIkEgdmFsaWQgVVJMIG11c3QgaGF2
ZSBhIG51bGwgaW52YWxpZFVybFN0cmluZy4iKTsKICNlbmRpZgogICAgIHJldHVybiBpc1BhcnNl
ZFVSTFZhbGlkOwogfQpAQCAtMTA0LDEzICsxMTcsMTAgQEAgY29uc3QgU3RyaW5nICZLVVJMOjpz
dHJpbmcoKSBjb25zdAogICAgICAgICByZXR1cm4gbnVsbFN0cmluZzsKICAgICB9CiAKLSAgICBp
ZiAoIW1fdXJsSW1wbC0+bV9pbnZhbGlkVXJsU3RyaW5nLmlzTnVsbCgpKSB7Ci0gICAgICAgIEFT
U0VSVCghaXNWYWxpZCgpKTsKLSAgICAgICAgcmV0dXJuIG1fdXJsSW1wbC0+bV9pbnZhbGlkVXJs
U3RyaW5nOwotICAgIH0KKyAgICBpZiAoaXNWYWxpZCgpKQorICAgICAgICByZXR1cm4gbV91cmxJ
bXBsLT5tX3BhcnNlZFVSTC5zcGVjKCkuc3RyaW5nKCk7CiAKLSAgICBBU1NFUlQoaXNWYWxpZCgp
KTsKLSAgICByZXR1cm4gbV91cmxJbXBsLT5tX3BhcnNlZFVSTC5zcGVjKCkuc3RyaW5nKCk7Cisg
ICAgcmV0dXJuIG1fdXJsSW1wbC0+bV9pbnZhbGlkVXJsU3RyaW5nOwogfQogCiBTdHJpbmcgS1VS
TDo6cHJvdG9jb2woKSBjb25zdApAQCAtMjE1LDcgKzIyNSw4IEBAIFN0cmluZyBLVVJMOjpmaWxl
U3lzdGVtUGF0aCgpIGNvbnN0CiAKIGJvb2wgS1VSTDo6cHJvdG9jb2xJcyhjb25zdCBjaGFyKiB0
ZXN0UHJvdG9jb2wpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKGlzVmFsaWQoKSk7CisgICAgaWYgKCFp
c1ZhbGlkKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1cm4gV2ViQ29yZTo6cHJv
dG9jb2xJcyhwcm90b2NvbCgpLCB0ZXN0UHJvdG9jb2wpOwogfQogCkBAIC0zMjEsNiArMzMyLDI0
IEBAIHVuc2lnbmVkIEtVUkw6OnBhdGhBZnRlckxhc3RTbGFzaCgpIGNvbnN0CiAgICAgcmV0dXJu
IDA7CiB9CiAKKyNpZm5kZWYgTkRFQlVHCit2b2lkIEtVUkw6OnByaW50KCkgY29uc3QKK3sKKyAg
ICBpZiAoaXNWYWxpZCgpKQorICAgICAgICBtX3VybEltcGwtPm1fcGFyc2VkVVJMLnByaW50KCk7
CisgICAgZWxzZSB7CisgICAgICAgIGlmIChpc051bGwoKSkKKyAgICAgICAgICAgIGRhdGFMb2co
Ik51bGwgS1VSTCIpOworICAgICAgICBlbHNlIGlmIChpc0VtcHR5KCkpCisgICAgICAgICAgICBk
YXRhTG9nKCJFbXB0eSBLVVJMIik7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgZGF0YUxv
ZygiSW52YWxpZCBLVVJMIGZyb20gc3RyaW5nID0iKTsKKyAgICAgICAgICAgIG1fdXJsSW1wbC0+
bV9pbnZhbGlkVXJsU3RyaW5nLnNob3coKTsKKyAgICAgICAgfQorICAgIH0KK30KKyNlbmRpZgor
CiB2b2lkIEtVUkw6OmludmFsaWRhdGUoKQogewogICAgIG1fdXJsSW1wbCA9IG51bGxwdHI7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LVVJMQ0ZOZXQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS1VSTENGTmV0LmNwcAppbmRleCBmZDgwODRiOTBkZGVi
MzRjYzc2Yzc3NmFhNjhiZDcyZWQxMDEwMDg1Li40NThkOTg3ZjE5ZTE1NDFmZTcwN2ViODhiMjQ2
MmQwODkxM2E3MTUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LVVJM
Q0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tVUkxDRk5ldC5jcHAK
QEAgLTMzLDggKzMzLDYgQEAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi0jaWYgIVVTRShXVEZVUkwpCi0KIHR5cGVkZWYgVmVjdG9yPGNoYXIsIDUxMj4gQ2hh
ckJ1ZmZlcjsKIAogQ0ZVUkxSZWYgY3JlYXRlQ0ZVUkxGcm9tQnVmZmVyKGNvbnN0IENoYXJCdWZm
ZXImKTsKQEAgLTQyLDcgKzQwLDcgQEAgQ0ZVUkxSZWYgY3JlYXRlQ0ZVUkxGcm9tQnVmZmVyKGNv
bnN0IENoYXJCdWZmZXImKTsKIEtVUkw6OktVUkwoQ0ZVUkxSZWYgdXJsKQogewogICAgIGlmICgh
dXJsKSB7Ci0gICAgICAgIHBhcnNlKDApOworICAgICAgICBpbnZhbGlkYXRlKCk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKQEAgLTUxLDcgKzQ5LDEzIEBAIEtVUkw6OktVUkwoQ0ZVUkxSZWYg
dXJsKQogICAgIGNoYXIqIGJ5dGVzID0gJmJ1ZmZlclswXTsKICAgICBDRlVSTEdldEJ5dGVzKHVy
bCwgcmVpbnRlcnByZXRfY2FzdDxVSW50OCo+KGJ5dGVzKSwgYnl0ZXNMZW5ndGgpOwogICAgIGJ5
dGVzW2J5dGVzTGVuZ3RoXSA9ICdcMCc7CisjaWYgIVVTRShXVEZVUkwpCiAgICAgcGFyc2UoYnl0
ZXMpOworI2Vsc2UKKyAgICAvLyBGSVhNRTogQWRkIFdURlVSTCBJbXBsZW1lbnRhdGlvbi4KKyAg
ICBVTlVTRURfUEFSQU0odXJsKTsKKyAgICBpbnZhbGlkYXRlKCk7CisjZW5kaWYgLy8gVVNFKFdU
RlVSTCkKIH0KIAogQ0ZVUkxSZWYgY3JlYXRlQ0ZVUkxGcm9tQnVmZmVyKGNvbnN0IENoYXJCdWZm
ZXImIGJ1ZmZlcikKQEAgLTY5LDE2ICs3MywyMSBAQCBDRlVSTFJlZiBjcmVhdGVDRlVSTEZyb21C
dWZmZXIoY29uc3QgQ2hhckJ1ZmZlciYgYnVmZmVyKQogI2lmICFQTEFURk9STShNQUMpICYmICEo
UExBVEZPUk0oUVQpICYmIFVTRShRVEtJVCkpCiBDRlVSTFJlZiBLVVJMOjpjcmVhdGVDRlVSTCgp
IGNvbnN0CiB7CisjaWYgIVVTRShXVEZVUkwpCiAgICAgLy8gRklYTUU6IFdoYXQgc2hvdWxkIHRo
aXMgcmV0dXJuIGZvciBpbnZhbGlkIFVSTHM/CiAgICAgLy8gQ3VycmVudGx5IGl0IHRocm93cyBh
d2F5IHRoZSBoaWdoIGJ5dGVzIG9mIHRoZSBjaGFyYWN0ZXJzIGluIHRoZSBzdHJpbmcgaW4gdGhh
dCBjYXNlLAogICAgIC8vIHdoaWNoIGlzIGNsZWFybHkgd3JvbmcuCiAgICAgQ2hhckJ1ZmZlciBi
dWZmZXI7CiAgICAgY29weVRvQnVmZmVyKGJ1ZmZlcik7CiAgICAgcmV0dXJuIGNyZWF0ZUNGVVJM
RnJvbUJ1ZmZlcihidWZmZXIpOworI2Vsc2UgLy8gVVNFKFdURlVSTCkKKyAgICAvLyBGSVhNRTog
QWRkIFdURlVSTCBJbXBsZW1lbnRhdGlvbi4KKyAgICByZXR1cm4gMDsKKyNlbmRpZgogfQogI2Vu
ZGlmCiAKLSNpZiAhKFBMQVRGT1JNKFFUKSAmJiBVU0UoUVRLSVQpKQorI2lmICFVU0UoV1RGVVJM
KSAmJiAhKFBMQVRGT1JNKFFUKSAmJiBVU0UoUVRLSVQpKQogU3RyaW5nIEtVUkw6OmZpbGVTeXN0
ZW1QYXRoKCkgY29uc3QKIHsKICAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGNmVVJMKEFkb3B0Q0Ys
IGNyZWF0ZUNGVVJMKCkpOwpAQCAtOTQsMjAgKzEwMyw0IEBAIFN0cmluZyBLVVJMOjpmaWxlU3lz
dGVtUGF0aCgpIGNvbnN0CiB9CiAjZW5kaWYKIAotI2Vsc2UgLy8gVVNFKFdURlVSTCkKLQotS1VS
TDo6S1VSTChDRlVSTFJlZikKLXsKLSAgICAvLyBGSVhNRTogQWRkIFdURlVSTCBJbXBsZW1lbnRh
dGlvbi4KLSAgICBpbnZhbGlkYXRlKCk7Ci19Ci0KLUNGVVJMUmVmIEtVUkw6OmNyZWF0ZUNGVVJM
KCkgY29uc3QKLXsKLSAgICAvLyBGSVhNRTogQWRkIFdURlVSTCBJbXBsZW1lbnRhdGlvbi4KLSAg
ICByZXR1cm4gMDsKLX0KLQotI2VuZGlmIC8vIFVTRShXVEZVUkwpCi0KIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9LVVJMTWFjLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL0tVUkxNYWMubW0KaW5kZXggYzY5ZDdhY2NlZjkzZTY1OTYwMzE3MmIxMDll
NzhiNDhjZmZlYmU5NS4uOWVmYmVlMGQ4N2RmZjA5N2JjMThiMWQzMmNjYjZlM2Y0Zjk4OTk0MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0tVUkxNYWMubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0tVUkxNYWMubW0KQEAgLTI5LDkgKzI5LDkgQEAK
ICNpbXBvcnQgIkZvdW5kYXRpb25FeHRyYXMuaCIKICNpbXBvcnQgPENvcmVGb3VuZGF0aW9uL0NG
VVJMLmg+CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKK3VzaW5nIG5hbWVzcGFjZSBXVEY7CiAKLSNp
ZiAhVVNFKFdURlVSTCkKK25hbWVzcGFjZSBXZWJDb3JlIHsKIAogdHlwZWRlZiBWZWN0b3I8Y2hh
ciwgNTEyPiBDaGFyQnVmZmVyOwogZXh0ZXJuIENGVVJMUmVmIGNyZWF0ZUNGVVJMRnJvbUJ1ZmZl
cihjb25zdCBDaGFyQnVmZmVyJiBidWZmZXIpOwpAQCAtMzksNyArMzksNyBAQCBleHRlcm4gQ0ZV
UkxSZWYgY3JlYXRlQ0ZVUkxGcm9tQnVmZmVyKGNvbnN0IENoYXJCdWZmZXImIGJ1ZmZlcik7CiBL
VVJMOjpLVVJMKE5TVVJMICp1cmwpCiB7CiAgICAgaWYgKCF1cmwpIHsKLSAgICAgICAgcGFyc2Uo
MCk7CisgICAgICAgIGludmFsaWRhdGUoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAt
NDgsNyArNDgsMTUgQEAgS1VSTDo6S1VSTChOU1VSTCAqdXJsKQogICAgIGNoYXIqIGJ5dGVzID0g
JmJ1ZmZlclswXTsKICAgICBDRlVSTEdldEJ5dGVzKHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZVUkxSZWY+
KHVybCksIHJlaW50ZXJwcmV0X2Nhc3Q8VUludDgqPihieXRlcyksIGJ5dGVzTGVuZ3RoKTsKICAg
ICBieXRlc1tieXRlc0xlbmd0aF0gPSAnXDAnOworI2lmICFVU0UoV1RGVVJMKQogICAgIHBhcnNl
KGJ5dGVzKTsKKyNlbHNlCisgICAgbV91cmxJbXBsID0gYWRvcHRSZWYobmV3IEtVUkxXVEZVUkxJ
bXBsKCkpOworICAgIFN0cmluZyB1cmxTdHJpbmcoYnl0ZXMsIGJ5dGVzTGVuZ3RoKTsKKyAgICBt
X3VybEltcGwtPm1fcGFyc2VkVVJMID0gUGFyc2VkVVJMKHVybFN0cmluZyk7CisgICAgaWYgKCFt
X3VybEltcGwtPm1fcGFyc2VkVVJMLmlzVmFsaWQoKSkKKyAgICAgICAgbV91cmxJbXBsLT5tX2lu
dmFsaWRVcmxTdHJpbmcgPSB1cmxTdHJpbmc7CisjZW5kaWYgLy8gVVNFKFdURlVSTCkKIH0KIAog
S1VSTDo6b3BlcmF0b3IgTlNVUkwgKigpIGNvbnN0CkBAIC02NywyNCArNzUsMTggQEAgQ0ZVUkxS
ZWYgS1VSTDo6Y3JlYXRlQ0ZVUkwoKSBjb25zdAogICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdDxDRlVSTFJlZj4oW1tOU1VSTCBhbGxvY10gaW5pdFdpdGhTdHJpbmc6QCIiXSk7CiAKICAg
ICBDaGFyQnVmZmVyIGJ1ZmZlcjsKKyNpZiAhVVNFKFdURlVSTCkKICAgICBjb3B5VG9CdWZmZXIo
YnVmZmVyKTsKLSAgICByZXR1cm4gY3JlYXRlQ0ZVUkxGcm9tQnVmZmVyKGJ1ZmZlcik7Ci19Ci0K
ICNlbHNlCi0KLUtVUkw6OktVUkwoTlNVUkwgKikKLXsKLSAgICAvLyBGSVhNRTogQWRkIFdURlVS
TCBJbXBsZW1lbnRhdGlvbi4KLSAgICBpbnZhbGlkYXRlKCk7CisgICAgU3RyaW5nIHVybFN0cmlu
ZyA9IHN0cmluZygpOworICAgIGJ1ZmZlci5yZXNpemUodXJsU3RyaW5nLmxlbmd0aCgpKTsKKyAg
ICBzaXplX3QgbGVuZ3RoID0gdXJsU3RyaW5nLmxlbmd0aCgpOworICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgbGVuZ3RoOyBpKyspCisgICAgICAgIGJ1ZmZlcltpXSA9IHN0YXRpY19jYXN0PGNo
YXI+KHVybFN0cmluZ1tpXSk7CisjZW5kaWYKKyAgICByZXR1cm4gY3JlYXRlQ0ZVUkxGcm9tQnVm
ZmVyKGJ1ZmZlcik7CiB9CiAKLUtVUkw6Om9wZXJhdG9yIE5TVVJMICooKSBjb25zdAotewotICAg
IC8vIEZJWE1FOiBBZGQgV1RGVVJMIEltcGxlbWVudGF0aW9uLgotICAgIHJldHVybiBuaWw7Ci19
CiAKLSNlbmRpZgogCiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>146750</attachid>
            <date>2012-06-10 15:02:10 -0700</date>
            <delta_ts>2012-06-10 15:25:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-85724-20120610150210.patch</filename>
            <type>text/plain</type>
            <size>29152</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE5OTQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGUyYzkxMmUwNTg2OTU2OGNhZjBlOTg5
ZjU2YWE0MTFhYmY4ZjY1MmIuLjNjYjhmZDdhN2EzOGIxNDI1YWQxMzZiNzNhM2NjZDFlMzUzMzY2
NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNDIgQEAKKzIwMTItMDYtMTAgIEJlbmphbWluIFBvdWxhaW4gIDxi
ZW5qYW1pbkB3ZWJraXQub3JnPgorCisgICAgICAgIEltcGxlbWVudCB0aGUgc2ltcGxlIGNvbnN0
cnVjdG9ycyBXVEZVUkwncyBLVVJMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD04NTcyNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFRoaXMgcGF0Y2ggZXh0ZW5kcyBXVEZVUkwgd2l0aDoKKyAgICAgICAgLXN1
cHBvcnQgYmFzaWMgZGVidWdnaW5nIHVzaW5nIHByaW50KCkgbWV0aG9kcworICAgICAgICAtcGFy
c2luZyBpbiB0aGUgaW5jb21taW5nIHN0cmluZyBjaGFyYWN0ZXIgc2V0ICg4Yml0cyBvciAxNmJp
dHMpCisgICAgICAgIC1hZGQgYSBmdW5jdGlvbiBmb3IgcGFyc2luZyBvZiByZWxhdGl2ZSBVUkwg
KGJ1dCBubyBpbXBsZW1lbnRhdGlvbiB5ZXQpCisKKyAgICAgICAgKiBXVEYueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiB3dGYvdGV4dC9XVEZTdHJpbmcuaDoKKyAgICAgICAg
KFN0cmluZyk6CisgICAgICAgICogd3RmL3VybC9hcGkvUGFyc2VkVVJMLmNwcDoKKyAgICAgICAg
KFdURjo6UGFyc2VkVVJMOjpQYXJzZWRVUkwpOgorICAgICAgICAoV1RGKToKKyAgICAgICAgKFdU
Rjo6UGFyc2VkVVJMOjpoYXNGcmFnbWVudCk6IEFkZCB0aGlzIG1ldGhvZCB0byBxdWVyeSB0aGUg
ZnJhbWdlbnQgYXZhaWxhYmlsaXR5IHdpdGhvdXQKKyAgICAgICAgYWxsb2NhdGluZyBhIG5ldyBT
dHJpbmcuCisgICAgICAgIChXVEY6OlBhcnNlZFVSTDo6d2l0aG91dEZyYWdtZW50KTogVGhpcyBt
ZXRob2QgaXMgYWRkZWQgdG8gaW1wbGVtZW50IEtVUkw6OnJlbW92ZUZyYWdtZW50SWRlbnRpZmll
cigpIGFuZAorICAgICAgICB0aGUgcGFyc2luZyBvZiBlbXB0eSByZWxhdGl2ZSBVUkwgKHdoZXJl
IHdlIHJldHVybiB0aGUgYmFzZSB3aXRob3V0IGZyYWdtZW50KS4KKyAgICAgICAgKFdURjo6UGFy
c2VkVVJMOjpwcmludCk6CisgICAgICAgICogd3RmL3VybC9hcGkvUGFyc2VkVVJMLmg6CisgICAg
ICAgIChQYXJzZWRVUkwpOgorICAgICAgICAoV1RGOjpQYXJzZWRVUkw6OnNwZWMpOgorICAgICAg
ICAqIHd0Zi91cmwvYXBpL1VSTFN0cmluZy5oOgorICAgICAgICAoVVJMU3RyaW5nKToKKyAgICAg
ICAgKiB3dGYvdXJsL3NyYy9VUkxQYXJzZXIuaDoKKyAgICAgICAgKFdURik6CisgICAgICAgIChV
UkxQYXJzZXIpOgorICAgICAgICAoV1RGOjpVUkxQYXJzZXI6OnBhcnNlVVJMV2l0aEJhc2UpOgor
ICAgICAgICAqIHd0Zi91cmwvc3JjL1VSTFNlZ21lbnRzLmNwcDoKKyAgICAgICAgKFdURjo6VVJM
U2VnbWVudHM6Omxlbmd0aCk6CisgICAgICAgIChXVEY6OlVSTFNlZ21lbnRzOjpjaGFyYWN0ZXJz
QmVmb3JlKToKKyAgICAgICAgKiB3dGYvdXJsL3NyYy9VUkxTZWdtZW50cy5oOgorICAgICAgICAo
VVJMU2VnbWVudHMpOgorICAgICAgICBDaGFuZ2UgdGhlIGJvb2xlYW4gYXJndW1lbnQgaW5jbHVk
ZURlbGltaXRlciBpbiBmYXZvciBvZiBhbiBlbnVtIHRvIGltcHJvdmUgcmVhZGFiaWxpdHkuCisK
IDIwMTItMDYtMDkgIERvbWluaWMgQ29vbmV5ICA8ZG9taW5pY2NAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFtDaHJvbWl1bV0gUmVtb3ZlIEphdmFTY3JpcHRDb3JlIGRlcGVuZGVuY2llcyBmcm9t
IGd5cApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCmluZGV4IDQ1OTQ3NjIzZTBjOTliNjBjOGMwMmNlYzIxYjlmZGNlODJhODk5
ZGEuLjc4ZmUzOWM3NWU3OGI0YWYxNTI1ZDgxZGM2MGU0ZDMzZTk4YTFlMDkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwzNiBAQAorMjAxMi0wNi0xMCAgQmVuamFtaW4gUG91bGFpbiAgPGJlbmphbWlu
QHdlYmtpdC5vcmc+CisKKyAgICAgICAgSW1wbGVtZW50IHRoZSBzaW1wbGUgY29uc3RydWN0b3Jz
IFdURlVSTCdzIEtVUkwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTg1NzI0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVGhpcyBwYXRjaCBpbXBsZW1lbnQgdGhlIGNvcnJlY3QgaW5pdGlhbGl6YXRpb24gb2Yg
S1VSTCBmcm9tIGFuIGFic29sdXRlIFVSTC4KKyAgICAgICAgVGhlIFVSTCBjb3JyZWN0bmVzcyBp
cyBhbHNvIHJlbGF4ZWQgaW4gb3JkZXIgdG8gaGF2ZSBLVVJMV1RGVVJMIHdvcmtzIHNpbWlsYXJp
bHkgdG8gS1VSTC4KKworICAgICAgICAqIHBsYXRmb3JtL0tVUkxXVEZVUkwuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6S1VSTDo6S1VSTCk6CisgICAgICAgIChXZWJDb3JlOjpLVVJMOjppc1ZhbGlk
KToKKyAgICAgICAgKFdlYkNvcmU6OktVUkw6OnN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpL
VVJMOjpwcm90b2NvbCk6CisgICAgICAgIChXZWJDb3JlOjpLVVJMOjpob3N0KToKKyAgICAgICAg
KFdlYkNvcmU6OktVUkw6OnBvcnQpOiBGaXggYSBidWcgd2hlcmUgaW52YWxpZFBvcnROdW1iZXIg
d2FzIHJldHVybmVkIGlmIG5vIHBvcnQgd2FzIGRlZmluZWQuCisgICAgICAgIChXZWJDb3JlOjpL
VVJMOjpoYXNGcmFnbWVudElkZW50aWZpZXIpOgorICAgICAgICAoV2ViQ29yZTo6S1VSTDo6ZnJh
Z21lbnRJZGVudGlmaWVyKToKKyAgICAgICAgKFdlYkNvcmU6OktVUkw6OnByb3RvY29sSXMpOgor
ICAgICAgICAoV2ViQ29yZTo6S1VSTDo6cmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVyKToKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6S1VSTDo6cHJpbnQpOgorICAgICAgICAq
IHBsYXRmb3JtL2NmL0tVUkxDRk5ldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLVVJMOjpLVVJM
KToKKyAgICAgICAgKFdlYkNvcmU6OktVUkw6OmNyZWF0ZUNGVVJMKToKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9LVVJMTWFjLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6S1VSTDo6S1VSTCk6CisgICAgICAgIChXZWJDb3JlOjpLVVJMOjpjcmVhdGVDRlVSTCk6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgVXNlIHRoZSBjb2RlIG9mIEtVUkwgdG8gbWFrZSB0
aGUgY29udmVyc2lvbiBmcm9tIFdURlVSTCB0byBOU1VSTC4KKwogMjAxMi0wNi0xMCAgRGFyaW4g
QWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgU29tZSBhZGRpdGlvbmFsIHR3ZWFr
cyB0byBrZWVwIFRyZWVTaGFyZWQgY29kZSBzaW1wbGUvY2xlYW4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV1RGL1dURi54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGJhNDU3NjQzZmIzYmExZDUxNmIzZWY5MTE2OWFh
YTFiYzcwYTU1N2UuLjc3MjA0NjFlMjY0NjYxZmM4ZTk0MzVlOTA4ODE2NzRiY2QxYjc2NTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
U291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTAsNiArMTAsNyBA
QAogCQkxNDNGNjExRjE1NjVGMEY5MDBEQjUxNEEgLyogUkFNU2l6ZS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDNGNjExRDE1NjVGMEY5MDBEQjUx
NEEgLyogUkFNU2l6ZS5jcHAgKi87IH07CiAJCTE0M0Y2MTIwMTU2NUYwRjkwMERCNTE0QSAvKiBS
QU1TaXplLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
NDNGNjExRTE1NjVGMEY5MDBEQjUxNEEgLyogUkFNU2l6ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGRDgxQUM1MTU0RkIyMkUwMDk4M0U3MiAv
KiBGYXN0Qml0VmVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRkQ4MUFDNDE1NEZCMjJFMDA5ODNFNzIgLyogRmFzdEJpdFZlY3Rvci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKCk7IH07IH07CisJCTQzMzBGMzhGMTU3NDVCMDUwMEFB
RkE4RiAvKiBVUkxTdHJpbmcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDMzMEYzOEUxNTc0NUIwNTAwQUFGQThGIC8qIFVSTFN0cmluZy5jcHAgKi87
IH07CiAJCTRGMDMyMUJDMTU2QUE4RDEwMDZFQkFGNiAvKiBCaXRBcnJheS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEYwMzIxQkIxNTZBQThEMTAwNkVC
QUY2IC8qIEJpdEFycmF5LmggKi87IH07CiAJCUE4NzZEQkQ4MTUxODE2RTUwMERBREI5NSAvKiBQ
bGF0Zm9ybS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTg3NkRCRDcxNTE4MTZFNTAwREFEQjk1IC8qIFBsYXRmb3JtLmggKi87IH07CiAJCUE4QTQ3MzdG
MTUxQTgyNUIwMDQxMjNGRiAvKiBBbGlnbm1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QTQ3MjU0MTUxQTgyNUEwMDQxMjNGRiAvKiBBbGlnbm1l
bnQuaCAqLzsgfTsKQEAgLTI0Nyw2ICsyNDgsNyBAQAogCQkxNDNGNjExRDE1NjVGMEY5MDBEQjUx
NEEgLyogUkFNU2l6ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBS
QU1TaXplLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQzRjYxMUUxNTY1RjBG
OTAwREI1MTRBIC8qIFJBTVNpemUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UkFNU2l6ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkQ4MUFDNDE1NEZCMjJF
MDA5ODNFNzIgLyogRmFzdEJpdFZlY3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBGYXN0Qml0VmVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQzMzBG
MzhFMTU3NDVCMDUwMEFBRkE4RiAvKiBVUkxTdHJpbmcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gVVJMU3RyaW5nLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNEYwMzIxQkIxNTZBQThEMTAwNkVCQUY2IC8qIEJpdEFycmF5LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJpdEFycmF5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTVEMjQ3QjYyMTQ2ODlCODYwMEU3OEI3NiAvKiBsaWJXVEYuYSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gYXJjaGl2ZS5hcjsgaW5jbHVkZUlu
SW5kZXggPSAwOyBwYXRoID0gbGliV1RGLmE7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19E
SVI7IH07CiAJCTVEMjQ3QjZFMTQ2ODlDNDcwMEU3OEI3NiAvKiBCYXNlLnhjY29uZmlnICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZp
ZzsgcGF0aCA9IEJhc2UueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04
MzIsNiArODM0LDcgQEAKIAkJCWNoaWxkcmVuID0gKAogCQkJCUE4QTQ3MzYwMTUxQTgyNUIwMDQx
MjNGRiAvKiBQYXJzZWRVUkwuY3BwICovLAogCQkJCUE4QTQ3MzYxMTUxQTgyNUIwMDQxMjNGRiAv
KiBQYXJzZWRVUkwuaCAqLywKKwkJCQk0MzMwRjM4RTE1NzQ1QjA1MDBBQUZBOEYgLyogVVJMU3Ry
aW5nLmNwcCAqLywKIAkJCQlBOEE0NzM2MjE1MUE4MjVCMDA0MTIzRkYgLyogVVJMU3RyaW5nLmgg
Ki8sCiAJCQkpOwogCQkJcGF0aCA9IGFwaTsKQEAgLTExNjksNiArMTE3Miw3IEBACiAJCQkJQThB
NDc0M0MxNTFBODI1QjAwNDEyM0ZGIC8qIFN0cmluZ0J1aWxkZXIuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQThBNDc0NDAxNTFBODI1QjAwNDEyM0ZGIC8qIFN0cmluZ0ltcGwuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQThBNDc0NDMxNTFBODI1QjAwNDEyM0ZGIC8qIFN0cmluZ1N0YXRpY3MuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJNDMzMEYzOEYxNTc0NUIwNTAwQUFGQThGIC8qIFVSTFN0cmlu
Zy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzQ0NTE1MUE4MjVCMDA0MTIzRkYgLyogV1RG
U3RyaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3NDQ4MTUxQTgyNUIwMDQxMjNGRiAv
KiBUaHJlYWRJZGVudGlmaWVyRGF0YVB0aHJlYWRzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4
QTQ3NDRBMTUxQTgyNUIwMDQxMjNGRiAvKiBUaHJlYWRpbmcuY3BwIGluIFNvdXJjZXMgKi8sCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oIGIvU291cmNlL1dURi93
dGYvdGV4dC9XVEZTdHJpbmcuaAppbmRleCBiZmJmZGE0ZDQ1M2QzM2NhYTczZDBjNzI0NmNjNmFj
NGIxZTI0NmFmLi42Y2ViZjgwM2RhMjEyOWIyNGVhZTI3YzhmMmYzMTgzMWVmNWE5MjQwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCisrKyBiL1NvdXJjZS9XVEYv
d3RmL3RleHQvV1RGU3RyaW5nLmgKQEAgLTQxNSw3ICs0MTUsNyBAQCBwdWJsaWM6CiAgICAgYm9v
bCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1faW1wbC5pc0hhc2hU
YWJsZURlbGV0ZWRWYWx1ZSgpOyB9CiAKICNpZm5kZWYgTkRFQlVHCi0gICAgdm9pZCBzaG93KCkg
Y29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgc2hvdygpIGNvbnN0OwogI2VuZGlm
CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi91cmwvYXBpL1BhcnNlZFVS
TC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi91cmwvYXBpL1BhcnNlZFVSTC5jcHAKaW5kZXggZjY5MTYy
YTY3ODI4OTE1M2Q2Y2Y3NjlkMjAxNWNhM2JkNDQyODE2ZC4uOGEyOWQ1NjUwZjJmZGFmY2RmNDRj
YmYzZDdlOGE3YWNiZGUxMjMwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdXJsL2FwaS9Q
YXJzZWRVUkwuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3VybC9hcGkvUGFyc2VkVVJMLmNwcApA
QCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlLCBJbmMuIEFs
bCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOCwx
OCArMjksNjMgQEAKIAogI2lmIFVTRShXVEZVUkwpCiAKLSNpbmNsdWRlICJVUkxDb21wb25lbnQu
aCIKLSNpbmNsdWRlICJVUkxQYXJzZXIuaCIKKyNpbmNsdWRlIDx3dGYvRGF0YUxvZy5oPgorI2lu
Y2x1ZGUgPHd0Zi9SYXdVUkxCdWZmZXIuaD4KKyNpbmNsdWRlIDx3dGYvVVJMQ29tcG9uZW50Lmg+
CisjaW5jbHVkZSA8d3RmL1VSTFBhcnNlci5oPgogCiBuYW1lc3BhY2UgV1RGIHsKIAogUGFyc2Vk
VVJMOjpQYXJzZWRVUkwoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpCi0gICAgOiBtX3NwZWModXJs
U3RyaW5nKQogewotICAgIC8vIEZJWE1FOiBIYW5kbGUgbm9uLXN0YW5kYXJkIFVSTHMuCi0gICAg
aWYgKHVybFN0cmluZy5pc0VtcHR5KCkpCisgICAgaWYgKHVybFN0cmluZy5pc0VtcHR5KCkpIHsK
KyAgICAgICAgbV9zcGVjID0gVVJMU3RyaW5nKCk7CiAgICAgICAgIHJldHVybjsKLSAgICBVUkxQ
YXJzZXI8VUNoYXI+OjpwYXJzZVN0YW5kYXJkVVJMKHVybFN0cmluZy5jaGFyYWN0ZXJzKCksIHVy
bFN0cmluZy5sZW5ndGgoKSwgbV9zZWdtZW50cyk7CisgICAgfQorCisgICAgLy8gRklYTUU6IGhh
bmRsZSBpbnZhbGlkIHVybFN0cmluZy4KKyAgICBtX3NwZWMgPSBVUkxTdHJpbmcodXJsU3RyaW5n
KTsKKyAgICBpZiAodXJsU3RyaW5nLmlzOEJpdCgpKQorICAgICAgICBVUkxQYXJzZXI8TENoYXI+
OjpwYXJzZVN0YW5kYXJkVVJMKHVybFN0cmluZy5jaGFyYWN0ZXJzOCgpLCB1cmxTdHJpbmcubGVu
Z3RoKCksIG1fc2VnbWVudHMpOworICAgIGVsc2UKKyAgICAgICAgVVJMUGFyc2VyPFVDaGFyPjo6
cGFyc2VTdGFuZGFyZFVSTCh1cmxTdHJpbmcuY2hhcmFjdGVyczE2KCksIHVybFN0cmluZy5sZW5n
dGgoKSwgbV9zZWdtZW50cyk7Cit9CisKK1BhcnNlZFVSTDo6UGFyc2VkVVJMKGNvbnN0IFBhcnNl
ZFVSTCYgYmFzZSwgY29uc3QgU3RyaW5nJiByZWxhdGl2ZSkKK3sKKyAgICBpZiAoIWJhc2UuaXNW
YWxpZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAocmVsYXRpdmUuaXNFbXB0eSgpKSB7
CisgICAgICAgICp0aGlzID0gYmFzZS53aXRob3V0RnJhZ21lbnQoKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIC8vIEZJWE1FOiBoYW5kbGUgaW52YWxpZCBVUkxzLgorICAgIGNvbnN0
IFN0cmluZyYgYmFzZVN0cmluZyA9IGJhc2UubV9zcGVjLnN0cmluZygpOworICAgIFJhd1VSTEJ1
ZmZlcjxjaGFyLCAxMDI0PiBvdXRwdXRCdWZmZXI7CisgICAgaWYgKHJlbGF0aXZlLmlzOEJpdCgp
KSB7CisgICAgICAgIGlmIChiYXNlU3RyaW5nLmlzOEJpdCgpKSB7CisgICAgICAgICAgICBVUkxQ
YXJzZXI8TENoYXIsIExDaGFyPjo6cGFyc2VVUkxXaXRoQmFzZShyZWxhdGl2ZS5jaGFyYWN0ZXJz
OCgpLCByZWxhdGl2ZS5sZW5ndGgoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJhc2VTdHJpbmcuY2hhcmFjdGVyczgoKSwgYmFzZVN0cmlu
Zy5sZW5ndGgoKSwgYmFzZS5tX3NlZ21lbnRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0QnVmZmVyLCBtX3NlZ21lbnRzKTsKKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFVSTFBhcnNlcjxMQ2hhciwgVUNoYXI+OjpwYXJz
ZVVSTFdpdGhCYXNlKHJlbGF0aXZlLmNoYXJhY3RlcnM4KCksIHJlbGF0aXZlLmxlbmd0aCgpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFz
ZVN0cmluZy5jaGFyYWN0ZXJzMTYoKSwgYmFzZVN0cmluZy5sZW5ndGgoKSwgYmFzZS5tX3NlZ21l
bnRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgb3V0cHV0QnVmZmVyLCBtX3NlZ21lbnRzKTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7Cisg
ICAgICAgIGlmIChiYXNlU3RyaW5nLmlzOEJpdCgpKSB7CisgICAgICAgICAgICBVUkxQYXJzZXI8
VUNoYXIsIExDaGFyPjo6cGFyc2VVUkxXaXRoQmFzZShyZWxhdGl2ZS5jaGFyYWN0ZXJzMTYoKSwg
cmVsYXRpdmUubGVuZ3RoKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBiYXNlU3RyaW5nLmNoYXJhY3RlcnM4KCksIGJhc2VTdHJpbmcubGVu
Z3RoKCksIGJhc2UubV9zZWdtZW50cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG91dHB1dEJ1ZmZlciwgbV9zZWdtZW50cyk7CisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICBVUkxQYXJzZXI8VUNoYXIsIFVDaGFyPjo6cGFyc2VVUkxX
aXRoQmFzZShyZWxhdGl2ZS5jaGFyYWN0ZXJzMTYoKSwgcmVsYXRpdmUubGVuZ3RoKCksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlU3Ry
aW5nLmNoYXJhY3RlcnMxNigpLCBiYXNlU3RyaW5nLmxlbmd0aCgpLCBiYXNlLm1fc2VnbWVudHMs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBv
dXRwdXRCdWZmZXIsIG1fc2VnbWVudHMpOworICAgICAgICB9CisgICAgfQorICAgIG1fc3BlYyA9
IFVSTFN0cmluZyhTdHJpbmcob3V0cHV0QnVmZmVyLmRhdGEoKSwgb3V0cHV0QnVmZmVyLmxlbmd0
aCgpKSk7CiB9CiAKIFBhcnNlZFVSTCBQYXJzZWRVUkw6Omlzb2xhdGVkQ29weSgpIGNvbnN0CkBA
IC04NSwxMSArMTMxLDMxIEBAIFN0cmluZyBQYXJzZWRVUkw6OnF1ZXJ5KCkgY29uc3QKICAgICBy
ZXR1cm4gc2VnbWVudChtX3NlZ21lbnRzLnF1ZXJ5KTsKIH0KIAorYm9vbCBQYXJzZWRVUkw6Omhh
c0ZyYWdtZW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zZWdtZW50cy5mcmFnbWVudC5pc1Zh
bGlkKCk7Cit9CisKIFN0cmluZyBQYXJzZWRVUkw6OmZyYWdtZW50KCkgY29uc3QKIHsKICAgICBy
ZXR1cm4gc2VnbWVudChtX3NlZ21lbnRzLmZyYWdtZW50KTsKIH0KIAorUGFyc2VkVVJMIFBhcnNl
ZFVSTDo6d2l0aG91dEZyYWdtZW50KCkgY29uc3QKK3sKKyAgICBpZiAoIWhhc0ZyYWdtZW50KCkp
CisgICAgICAgIHJldHVybiAqdGhpczsKKworICAgIFBhcnNlZFVSTCBuZXdVUkw7CisKKyAgICBp
bnQgY2hhcmFjdGVyc0JlZm9yZUZyYWdlbW50ID0gbV9zZWdtZW50cy5jaGFyYWN0ZXJzQmVmb3Jl
KFVSTFNlZ21lbnRzOjpGcmFnbWVudCwgVVJMU2VnbWVudHM6OkRlbGltaXRlckV4Y2x1ZGVkKTsK
KyAgICBuZXdVUkwubV9zcGVjID0gVVJMU3RyaW5nKG1fc3BlYy5zdHJpbmcoKS5zdWJzdHJpbmdT
aGFyaW5nSW1wbCgwLCBjaGFyYWN0ZXJzQmVmb3JlRnJhZ2VtbnQpKTsKKworICAgIG5ld1VSTC5t
X3NlZ21lbnRzID0gbV9zZWdtZW50czsKKyAgICBuZXdVUkwubV9zZWdtZW50cy5mcmFnbWVudCA9
IFVSTENvbXBvbmVudCgpOworICAgIHJldHVybiBuZXdVUkw7Cit9CisKIFN0cmluZyBQYXJzZWRV
Ukw6OmJhc2VBc1N0cmluZygpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IEFkZCBXVEZVUkwgSW1w
bGVtZW50YXRpb24uCkBAIC0xMDgsNiArMTc0LDM2IEBAIFN0cmluZyBQYXJzZWRVUkw6OnNlZ21l
bnQoY29uc3QgVVJMQ29tcG9uZW50JiBjb21wb25lbnQpIGNvbnN0CiAgICAgcmV0dXJuIHNlZ21l
bnQ7CiB9CiAKKyNpZm5kZWYgTkRFQlVHCisKKyNkZWZpbmUgU0hPV19DT01QT05FTlQocGFyc2Vk
VVJMLCBjb21wb25lbnROYW1lKSBcCisgICAgaWYgKCFwYXJzZWRVUkwtPmNvbXBvbmVudE5hbWUo
KS5pc051bGwoKSkgeyBcCisgICAgICAgIGRhdGFMb2coIiAgICAiICNjb21wb25lbnROYW1lICIg
PSAiKTsgXAorICAgICAgICBwYXJzZWRVUkwtPmNvbXBvbmVudE5hbWUoKS5zaG93KCk7IFwKKyAg
ICB9CisKK3ZvaWQgUGFyc2VkVVJMOjpwcmludCgpIGNvbnN0Cit7CisgICAgaWYgKCFpc1ZhbGlk
KCkpIHsKKyAgICAgICAgZGF0YUxvZygiSW52YWxpZCBQYXJzZWRVUkwuXG4iKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIGRhdGFMb2coIlZhbGlkIFBhcnNlZFVSTCB3aXRoOlxuIik7
CisgICAgZGF0YUxvZygiICAgIG1fc3BlYyA9ICIpOworICAgIG1fc3BlYy5wcmludCgpOworCisg
ICAgU0hPV19DT01QT05FTlQodGhpcywgc2NoZW1lKTsKKyAgICBTSE9XX0NPTVBPTkVOVCh0aGlz
LCB1c2VybmFtZSk7CisgICAgU0hPV19DT01QT05FTlQodGhpcywgcGFzc3dvcmQpOworICAgIFNI
T1dfQ09NUE9ORU5UKHRoaXMsIGhvc3QpOworICAgIFNIT1dfQ09NUE9ORU5UKHRoaXMsIHBvcnQp
OworICAgIFNIT1dfQ09NUE9ORU5UKHRoaXMsIHBhdGgpOworICAgIFNIT1dfQ09NUE9ORU5UKHRo
aXMsIHF1ZXJ5KTsKKyAgICBTSE9XX0NPTVBPTkVOVCh0aGlzLCBmcmFnbWVudCk7Cit9CisjZW5k
aWYKKwogfQogCiAjZW5kaWYgLy8gVVNFKFdURlVSTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL3VybC9hcGkvUGFyc2VkVVJMLmggYi9Tb3VyY2UvV1RGL3d0Zi91cmwvYXBpL1BhcnNlZFVS
TC5oCmluZGV4IDJiYjMzMzBjZmMxMTMyMDY4MTQzOTEzMGUzMzFkMzQ4YjhkYjM3ZDguLjBjNDk3
MWJiMTIzOGVmYTMzOTFiN2FkZTE4OTdjODA1NGMyZjdmYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL3VybC9hcGkvUGFyc2VkVVJMLmgKKysrIGIvU291cmNlL1dURi93dGYvdXJsL2FwaS9Q
YXJzZWRVUkwuaApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29v
Z2xlLCBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0zOCw5ICszOSw5IEBAIGNsYXNzIFVSTENvbXBvbmVudDsKIC8vIFBhcnNlZFVSTCBy
ZXByZXNlbnRzIGEgdmFsaWQgVVJMIGRlY29tcG9zZWQgYnkgY29tcG9uZW50cy4KIGNsYXNzIFBh
cnNlZFVSTCB7CiBwdWJsaWM6Ci0gICAgLy8gRklYTUU6IEFkZCBhIG1ldGhvZCBmb3IgcGFyc2lu
ZyBub24tY2Fub25pY2FsaXplZCBVUkxzLgogICAgIFBhcnNlZFVSTCgpIHsgfTsKICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgZXhwbGljaXQgUGFyc2VkVVJMKGNvbnN0IFN0cmluZyYpOworICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSBleHBsaWNpdCBQYXJzZWRVUkwoY29uc3QgUGFyc2VkVVJMJiBiYXNl
LCBjb25zdCBTdHJpbmcmIHJlbGF0aXZlKTsKIAogICAgIFdURl9FWFBPUlRfUFJJVkFURSBQYXJz
ZWRVUkwgaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CiAKQEAgLTU0LDExICs1NSwxOCBAQCBwdWJsaWM6
CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBwb3J0KCkgY29uc3Q7CiAgICAgV1RGX0VY
UE9SVF9QUklWQVRFIFN0cmluZyBwYXRoKCkgY29uc3Q7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRF
IFN0cmluZyBxdWVyeSgpIGNvbnN0OworCisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgaGFz
RnJhZ21lbnQoKSBjb25zdDsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIGZyYWdtZW50
KCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFBhcnNlZFVSTCB3aXRob3V0RnJhZ21l
bnQoKSBjb25zdDsKIAogICAgIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgYmFzZUFzU3RyaW5n
KCkgY29uc3Q7CiAKLSAgICBVUkxTdHJpbmcgc3BlYygpIHsgcmV0dXJuIG1fc3BlYzsgfQorICAg
IGNvbnN0IFVSTFN0cmluZyYgc3BlYygpIHsgcmV0dXJuIG1fc3BlYzsgfQorCisjaWZuZGVmIE5E
RUJVRworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHByaW50KCkgY29uc3Q7CisjZW5kaWYK
IAogcHJpdmF0ZToKICAgICBpbmxpbmUgU3RyaW5nIHNlZ21lbnQoY29uc3QgVVJMQ29tcG9uZW50
JikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi91cmwvYXBpL1VSTFN0cmluZy5o
IGIvU291cmNlL1dURi93dGYvdXJsL2FwaS9VUkxTdHJpbmcuaAppbmRleCA5YWUzMGQ3YTk3YzQx
MmZlMWYzZjE0Y2Q3MDhjZDA4MWRjYjFkODg2Li43MGVmMjE5MTBlMmFkZDRjMzAzZmJmODRjMGZk
MjcwYzkzNTFjZjgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi91cmwvYXBpL1VSTFN0cmlu
Zy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3VybC9hcGkvVVJMU3RyaW5nLmgKQEAgLTEsNSArMSw2
IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSwgSW5jLiBBbGwgUmlnaHRzIFJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzksNiArNDAsMTAgQEAg
cHVibGljOgogCiAgICAgY29uc3QgU3RyaW5nJiBzdHJpbmcoKSBjb25zdCB7IHJldHVybiBtX3N0
cmluZzt9CiAKKyNpZm5kZWYgTkRFQlVHCisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgcHJp
bnQoKSBjb25zdDsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBQYXJzZWRV
Ukw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3VybC9zcmMvVVJMUGFyc2VyLmggYi9T
b3VyY2UvV1RGL3d0Zi91cmwvc3JjL1VSTFBhcnNlci5oCmluZGV4IDAxZjczOGNmMzljODQ0ZDlj
NzFlYzdiNWQ2ZDEwMTI1OTAyYThjZTMuLjJiNGQ1OThhMzE5YTNjYTI3Zjg2NTk0YmU3YzBiOGZi
MWEwNzE4YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3VybC9zcmMvVVJMUGFyc2VyLmgK
KysrIGIvU291cmNlL1dURi93dGYvdXJsL3NyYy9VUkxQYXJzZXIuaApAQCAtMSw2ICsxLDcgQEAK
IC8qIEJhc2VkIG9uIG5zVVJMUGFyc2Vycy5jYyBmcm9tIE1vemlsbGEKICAqIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqIENvcHlyaWdodCAoQykgMTk5OCBOZXRzY2Fw
ZSBDb21tdW5pY2F0aW9ucyBDb3Jwb3JhdGlvbi4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogT3RoZXIgY29udHJpYnV0b3JzOgog
ICogICBEYXJpbiBGaXNoZXIgKG9yaWdpbmFsIGF1dGhvcikKQEAgLTM5LDEyICs0MCwxMyBAQAog
CiAjaW5jbHVkZSAiVVJMQ29tcG9uZW50LmgiCiAjaW5jbHVkZSAiVVJMU2VnbWVudHMuaCIKKyNp
bmNsdWRlICJVbnVzZWRQYXJhbS5oIgogCiAjaWYgVVNFKFdURlVSTCkKIAogbmFtZXNwYWNlIFdU
RiB7CiAKLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Cit0ZW1wbGF0ZTx0eXBlbmFt
ZSBDaGFyYWN0ZXJUeXBlLCB0eXBlbmFtZSBCYXNlQ2hhcmFjdGVyVHlwZSA9IENoYXJhY3RlclR5
cGU+CiBjbGFzcyBVUkxQYXJzZXIgewogcHVibGljOgogICAgIGVudW0gU3BlY2lhbFBvcnQgewpA
QCAtMTY4LDYgKzE3MCwyMSBAQCBwdWJsaWM6CiAgICAgICAgIHBhcnNlQWZ0ZXJTY2hlbWUoc3Bl
Yywgc3BlY0xlbmd0aCwgYWZ0ZXJTY2hlbWUsIHBhcnNlZCk7CiAgICAgfQogCisgICAgLy8gVGhl
IG1haW4gcGFyc2luZyBmdW5jdGlvbiBmb3IgKG1heSBiZSkgcmVsYXRpdmUgVVJMcy4KKyAgICBz
dGF0aWMgdm9pZCBwYXJzZVVSTFdpdGhCYXNlKGNvbnN0IENoYXJhY3RlclR5cGUqIHNwZWMsIGlu
dCBzcGVjTGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQmFz
ZUNoYXJhY3RlclR5cGUqIGJhc2VTdHJpbmdTcGVjLCBpbnQgYmFzZVN0cmluZ1NwZWNMZW5ndGgs
IGNvbnN0IFVSTFNlZ21lbnRzJiBiYXNlU3RyaW5nU2VnbWVudHMsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBVUkxCdWZmZXI8Y2hhcj4mb3V0cHV0QnVmZmVyLCBVUkxTZWdtZW50
cyYgcGFyc2VkKQorICAgIHsKKyAgICAgICAgVU5VU0VEX1BBUkFNKGJhc2VTdHJpbmdTcGVjKTsK
KyAgICAgICAgVU5VU0VEX1BBUkFNKGJhc2VTdHJpbmdTcGVjTGVuZ3RoKTsKKyAgICAgICAgVU5V
U0VEX1BBUkFNKGJhc2VTdHJpbmdTZWdtZW50cyk7CisgICAgICAgIFVOVVNFRF9QQVJBTShzcGVj
KTsKKyAgICAgICAgVU5VU0VEX1BBUkFNKHNwZWNMZW5ndGgpOworICAgICAgICBVTlVTRURfUEFS
QU0ob3V0cHV0QnVmZmVyKTsKKyAgICAgICAgVU5VU0VEX1BBUkFNKHBhcnNlZCk7CisgICAgICAg
IC8vIEZJWE1FOiBUbyBpbXBsZW1lbnQuCisgICAgfQorCiAgICAgc3RhdGljIHZvaWQgcGFyc2VQ
YXRoKGNvbnN0IENoYXJhY3RlclR5cGUqIHNwZWMsIGNvbnN0IFVSTENvbXBvbmVudCYgcGF0aCwg
VVJMQ29tcG9uZW50JiBmaWxlcGF0aCwgVVJMQ29tcG9uZW50JiBxdWVyeSwgVVJMQ29tcG9uZW50
JiBmcmFnbWVudCkKICAgICB7CiAgICAgICAgIC8vIHBhdGggPSBbL108c2VnbWVudDE+LzxzZWdt
ZW50Mj4vPC4uLj4vPHNlZ21lbnROPjs8cGFyYW0+PzxxdWVyeT4jPGZyYWdtZW50PgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvdXJsL3NyYy9VUkxTZWdtZW50cy5jcHAgYi9Tb3VyY2UvV1RG
L3d0Zi91cmwvc3JjL1VSTFNlZ21lbnRzLmNwcAppbmRleCAxODJiMGQ0NWIzOTllZDFiMzBhNDFm
MDUxY2Q5N2QyNzQxOWJhZjViLi4xNThlNWQ5ZDQ4Y2VjYjYyNTUwNjM3ODMwMTU0YzkyNzVkOTUw
ZjgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi91cmwvc3JjL1VSTFNlZ21lbnRzLmNwcAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi91cmwvc3JjL1VSTFNlZ21lbnRzLmNwcApAQCAtMSw2ICsxLDcg
QEAKIC8qIEJhc2VkIG9uIG5zVVJMUGFyc2Vycy5jYyBmcm9tIE1vemlsbGEKICAqIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqIENvcHlyaWdodCAoQykgMTk5OCBOZXRz
Y2FwZSBDb21tdW5pY2F0aW9ucyBDb3Jwb3JhdGlvbi4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogT3RoZXIgY29udHJpYnV0b3Jz
OgogICogICBEYXJpbiBGaXNoZXIgKG9yaWdpbmFsIGF1dGhvcikKQEAgLTQ1LDEwICs0NiwxMCBA
QCBpbnQgVVJMU2VnbWVudHM6Omxlbmd0aCgpIGNvbnN0CiB7CiAgICAgaWYgKGZyYWdtZW50Lmlz
VmFsaWQoKSkKICAgICAgICAgcmV0dXJuIGZyYWdtZW50LmVuZCgpOwotICAgIHJldHVybiBjaGFy
YWN0ZXJzQmVmb3JlKEZyYWdtZW50LCBmYWxzZSk7CisgICAgcmV0dXJuIGNoYXJhY3RlcnNCZWZv
cmUoRnJhZ21lbnQsIERlbGltaXRlckV4Y2x1ZGVkKTsKIH0KIAotaW50IFVSTFNlZ21lbnRzOjpj
aGFyYWN0ZXJzQmVmb3JlKENvbXBvbmVudFR5cGUgdHlwZSwgYm9vbCBpbmNsdWRlRGVsaW1pdGVy
KSBjb25zdAoraW50IFVSTFNlZ21lbnRzOjpjaGFyYWN0ZXJzQmVmb3JlKENvbXBvbmVudFR5cGUg
dHlwZSwgRGVsaW1pdGVySW5jbHVzaW9uIGluY2x1ZGVEZWxpbWl0ZXIpIGNvbnN0CiB7CiAgICAg
aWYgKHR5cGUgPT0gU2NoZW1lKQogICAgICAgICByZXR1cm4gc2NoZW1lLmJlZ2luKCk7CkBAIC03
Niw3ICs3Nyw3IEBAIGludCBVUkxTZWdtZW50czo6Y2hhcmFjdGVyc0JlZm9yZShDb21wb25lbnRU
eXBlIHR5cGUsIGJvb2wgaW5jbHVkZURlbGltaXRlcikgY29uCiAgICAgfQogCiAgICAgaWYgKHBv
cnQuaXNWYWxpZCgpKSB7Ci0gICAgICAgIGlmICh0eXBlIDwgUG9ydCB8fCAodHlwZSA9PSBQb3J0
ICYmIGluY2x1ZGVEZWxpbWl0ZXIpKQorICAgICAgICBpZiAodHlwZSA8IFBvcnQgfHwgKHR5cGUg
PT0gUG9ydCAmJiBpbmNsdWRlRGVsaW1pdGVyID09IERlbGltaXRlckluY2x1ZGVkKSkKICAgICAg
ICAgICAgIHJldHVybiBwb3J0LmJlZ2luKCkgLSAxOyAvLyBCYWNrIG92ZXIgZGVsaW1pdGVyLgog
ICAgICAgICBpZiAodHlwZSA9PSBQb3J0KQogICAgICAgICAgICAgcmV0dXJuIHBvcnQuYmVnaW4o
KTsgLy8gRG9uJ3Qgd2FudCBkZWxpbWl0ZXIgY291bnRlZC4KQEAgLTkwLDcgKzkxLDcgQEAgaW50
IFVSTFNlZ21lbnRzOjpjaGFyYWN0ZXJzQmVmb3JlKENvbXBvbmVudFR5cGUgdHlwZSwgYm9vbCBp
bmNsdWRlRGVsaW1pdGVyKSBjb24KICAgICB9CiAKICAgICBpZiAocXVlcnkuaXNWYWxpZCgpKSB7
Ci0gICAgICAgIGlmICh0eXBlIDwgUXVlcnkgfHwgKHR5cGUgPT0gUXVlcnkgJiYgaW5jbHVkZURl
bGltaXRlcikpCisgICAgICAgIGlmICh0eXBlIDwgUXVlcnkgfHwgKHR5cGUgPT0gUXVlcnkgJiYg
aW5jbHVkZURlbGltaXRlciA9PSBEZWxpbWl0ZXJJbmNsdWRlZCkpCiAgICAgICAgICAgICByZXR1
cm4gcXVlcnkuYmVnaW4oKSAtIDE7IC8vIEJhY2sgb3ZlciBkZWxpbWl0ZXIuCiAgICAgICAgIGlm
ICh0eXBlID09IFF1ZXJ5KQogICAgICAgICAgICAgcmV0dXJuIHF1ZXJ5LmJlZ2luKCk7IC8vIERv
bid0IHdhbnQgZGVsaW1pdGVyIGNvdW50ZWQuCkBAIC05OCw3ICs5OSw3IEBAIGludCBVUkxTZWdt
ZW50czo6Y2hhcmFjdGVyc0JlZm9yZShDb21wb25lbnRUeXBlIHR5cGUsIGJvb2wgaW5jbHVkZURl
bGltaXRlcikgY29uCiAgICAgfQogCiAgICAgaWYgKGZyYWdtZW50LmlzVmFsaWQoKSkgewotICAg
ICAgICBpZiAodHlwZSA9PSBGcmFnbWVudCAmJiAhaW5jbHVkZURlbGltaXRlcikKKyAgICAgICAg
aWYgKHR5cGUgPT0gRnJhZ21lbnQgJiYgaW5jbHVkZURlbGltaXRlciA9PSBEZWxpbWl0ZXJFeGNs
dWRlZCkKICAgICAgICAgICAgIHJldHVybiBmcmFnbWVudC5iZWdpbigpOyAvLyBCYWNrIG92ZXIg
ZGVsaW1pdGVyLgogCiAgICAgICAgIC8vIFdoZW4gdGhlcmUgaXMgYSBmcmFnbWVudCBhbmQgd2Ug
Z2V0IGhlcmUsIHRoZSBjb21wb25lbnQgd2Ugd2FudGVkIHdhcyBiZWZvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL3VybC9zcmMvVVJMU2VnbWVudHMuaCBiL1NvdXJjZS9XVEYvd3RmL3Vy
bC9zcmMvVVJMU2VnbWVudHMuaAppbmRleCA2NGQwNjE5Yjg2OWIzZDlhNjZmM2M5YjhkNDJjOWU3
NDJkZTZmMDA5Li45ZjE3MjI4ZDZjMDZiMGQ1Y2QyMDEwNjMyOWIzYWZkMjhhNDA5YWQ5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi91cmwvc3JjL1VSTFNlZ21lbnRzLmgKKysrIGIvU291cmNl
L1dURi93dGYvdXJsL3NyYy9VUkxTZWdtZW50cy5oCkBAIC0xLDQgKzEsNSBAQAogLy8gQ29weXJp
Z2h0IDIwMDcsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBDb3B5cmlnaHQg
MjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAvLwogLy8gUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAv
LyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCkBAIC01MSw2ICs1MiwxMCBAQCBwdWJsaWM6CiAgICAgICAgIFF1ZXJ5
LAogICAgICAgICBGcmFnbWVudCwKICAgICB9OworICAgIGVudW0gRGVsaW1pdGVySW5jbHVzaW9u
IHsKKyAgICAgICAgRGVsaW1pdGVyRXhjbHVkZWQsCisgICAgICAgIERlbGltaXRlckluY2x1ZGVk
CisgICAgfTsKIAogICAgIFVSTFNlZ21lbnRzKCkgeyB9CiAKQEAgLTg4LDcgKzkzLDcgQEAgcHVi
bGljOgogICAgIC8vICAgICAgKlF1ZXJ5OiAxNCAgICAgICAgICAgICAgICAgICAxNSA8LQogICAg
IC8vICAgICAgICAqRnJhZ21lbnQ6IDIwICAgICAgICAgICAgICAgICAgIDIwCiAgICAgLy8KLSAg
ICBpbnQgY2hhcmFjdGVyc0JlZm9yZShDb21wb25lbnRUeXBlLCBib29sIGluY2x1ZGVEZWxpbWl0
ZXIpIGNvbnN0OworICAgIGludCBjaGFyYWN0ZXJzQmVmb3JlKENvbXBvbmVudFR5cGUsIERlbGlt
aXRlckluY2x1c2lvbikgY29uc3Q7CiAKICAgICAvLyBFYWNoIGNvbXBvbmVudCBleGNsdWRlcyB0
aGUgcmVsYXRlZCBkZWxpbWl0ZXJzIGFuZCBoYXMgYSBsZW5ndGggb2YgLTEKICAgICAvLyBpZiB0
aGF0IGNvbXBvbmVudCBpcyBhYnNlbnQgYnV0IDAgaWYgdGhlIGNvbXBvbmVudCBleGlzdHMgYnV0
IGlzIGVtcHR5LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS1VSTFdURlVS
TC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LVVJMV1RGVVJMLmNwcAppbmRleCA0ZmYx
M2Q5NDhhODdjNWNlMjNlMjNmMTBmZGM0ZDE4NWM0ZmEyMDhiLi42MjM0NDE5Y2I2ZjY4MDk2YjA1
ZTliZjA5YTZmZDdkMWVmYTE5Nzc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9LVVJMV1RGVVJMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LVVJMV1RGVVJM
LmNwcApAQCAtMjYsNiArMjYsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIktV
UkwuaCIKIAorI2luY2x1ZGUgPHd0Zi9EYXRhTG9nLmg+CisKICNpZiBVU0UoV1RGVVJMKQogCiB1
c2luZyBuYW1lc3BhY2UgV1RGOwpAQCAtNTAsMTIgKzUyLDIzIEBAIEtVUkw6OktVUkwoUGFyc2Vk
VVJMU3RyaW5nVGFnLCBjb25zdCBTdHJpbmcmIHVybFN0cmluZykKICAgICA6IG1fdXJsSW1wbChh
ZG9wdFJlZihuZXcgS1VSTFdURlVSTEltcGwoKSkpCiB7CiAgICAgbV91cmxJbXBsLT5tX3BhcnNl
ZFVSTCA9IFBhcnNlZFVSTCh1cmxTdHJpbmcpOwotICAgIEFTU0VSVChtX3VybEltcGwtPm1fcGFy
c2VkVVJMLmlzVmFsaWQoKSk7CisKKyAgICAvLyBGSVhNRTogRnJhbWU6OmluaXQoKSBhY3R1YWxs
eSBjcmVhdGUgZW1wdHkgVVJMLCBpbnZlc3RpZ2F0ZSB3aHkgbm90IGp1c3QgbnVsbCBVUkwuCisg
ICAgLy8gQVNTRVJUKG1fdXJsSW1wbC0+bV9wYXJzZWRVUkwuaXNWYWxpZCgpKTsKIH0KIAotS1VS
TDo6S1VSTChjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJikKK0tVUkw6OktVUkwoY29uc3QgS1VS
TCYgYmFzZVVSTCwgY29uc3QgU3RyaW5nJiByZWxhdGl2ZSkKKyAgICA6IG1fdXJsSW1wbChhZG9w
dFJlZihuZXcgS1VSTFdURlVSTEltcGwoKSkpCiB7Ci0gICAgLy8gRklYTUU6IEFkZCBXVEZVUkwg
SW1wbGVtZW50YXRpb24uCisgICAgLy8gRklYTUU6IHRoZSBjYXNlIHdpdGggYSBudWxsIGJhc2VV
UkwgaXMgY29tbW9uLiBXZSBzaG91bGQgaGF2ZSBhIHNlcGFyYXRlIGNvbnN0cnVjdG9yIGluIEtV
UkwuCisgICAgLy8gRklYTUU6IHRoZSBjYXNlIG9mIGFuIGVtcHR5IEJhc2UgaXMgdXNlbGVzcywg
d2Ugc2hvdWxkIGdldCByaWQgb2YgZW1wdHkgVVJMcy4KKyAgICBpZiAoYmFzZVVSTC5pc0VtcHR5
KCkpCisgICAgICAgIG1fdXJsSW1wbC0+bV9wYXJzZWRVUkwgPSBQYXJzZWRVUkwocmVsYXRpdmUp
OworICAgIGVsc2UKKyAgICAgICAgbV91cmxJbXBsLT5tX3BhcnNlZFVSTCA9IFBhcnNlZFVSTChi
YXNlVVJMLm1fdXJsSW1wbC0+bV9wYXJzZWRVUkwsIHJlbGF0aXZlKTsKKworICAgIGlmICghbV91
cmxJbXBsLT5tX3BhcnNlZFVSTC5pc1ZhbGlkKCkpCisgICAgICAgIG1fdXJsSW1wbC0+bV9pbnZh
bGlkVXJsU3RyaW5nID0gcmVsYXRpdmU7CiB9CiAKIEtVUkw6OktVUkwoY29uc3QgS1VSTCYsIGNv
bnN0IFN0cmluZyYsIGNvbnN0IFRleHRFbmNvZGluZyYpCkBAIC05Miw3ICsxMDUsNyBAQCBib29s
IEtVUkw6OmlzVmFsaWQoKSBjb25zdAogICAgIGJvb2wgaXNQYXJzZWRVUkxWYWxpZCA9IG1fdXJs
SW1wbC0+bV9wYXJzZWRVUkwuaXNWYWxpZCgpOwogI2lmbmRlZiBOREVCVUcKICAgICBpZiAoaXNQ
YXJzZWRVUkxWYWxpZCkKLSAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShtX3VybEltcGwtPm1f
aW52YWxpZFVybFN0cmluZy5pc051bGwoKSwgIkEgdmFsaWQgVVJMIHNob3VsZCBuZXZlciBoYXZl
IGEgdmFsaWQgaW52YWxpZFVybFN0cmluZy4iKTsKKyAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FH
RShtX3VybEltcGwtPm1faW52YWxpZFVybFN0cmluZy5pc051bGwoKSwgIkEgdmFsaWQgVVJMIG11
c3QgaGF2ZSBhIG51bGwgaW52YWxpZFVybFN0cmluZy4iKTsKICNlbmRpZgogICAgIHJldHVybiBp
c1BhcnNlZFVSTFZhbGlkOwogfQpAQCAtMTA0LDI0ICsxMTcsMjcgQEAgY29uc3QgU3RyaW5nICZL
VVJMOjpzdHJpbmcoKSBjb25zdAogICAgICAgICByZXR1cm4gbnVsbFN0cmluZzsKICAgICB9CiAK
LSAgICBpZiAoIW1fdXJsSW1wbC0+bV9pbnZhbGlkVXJsU3RyaW5nLmlzTnVsbCgpKSB7Ci0gICAg
ICAgIEFTU0VSVCghaXNWYWxpZCgpKTsKLSAgICAgICAgcmV0dXJuIG1fdXJsSW1wbC0+bV9pbnZh
bGlkVXJsU3RyaW5nOwotICAgIH0KKyAgICBpZiAoaXNWYWxpZCgpKQorICAgICAgICByZXR1cm4g
bV91cmxJbXBsLT5tX3BhcnNlZFVSTC5zcGVjKCkuc3RyaW5nKCk7CiAKLSAgICBBU1NFUlQoaXNW
YWxpZCgpKTsKLSAgICByZXR1cm4gbV91cmxJbXBsLT5tX3BhcnNlZFVSTC5zcGVjKCkuc3RyaW5n
KCk7CisgICAgcmV0dXJuIG1fdXJsSW1wbC0+bV9pbnZhbGlkVXJsU3RyaW5nOwogfQogCiBTdHJp
bmcgS1VSTDo6cHJvdG9jb2woKSBjb25zdAogewotICAgIEFTU0VSVChpc1ZhbGlkKCkpOworICAg
IC8vIFNraXAgdGhlIEFTU0VSVCBmb3Igbm93LCBTdWJmcmFtZUxvYWRlcjo6cmVxdWVzdEZyYW1l
KCkgZG9lcyBub3QgY2hlY2sgdGhlIHZhbGlkaXR5IG9mIFVSTHMuCisgICAgLy8gQVNTRVJUKGlz
VmFsaWQoKSk7CisgICAgaWYgKCFpc1ZhbGlkKCkpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsK
ICAgICByZXR1cm4gbV91cmxJbXBsLT5tX3BhcnNlZFVSTC5zY2hlbWUoKTsKIH0KIAogU3RyaW5n
IEtVUkw6Omhvc3QoKSBjb25zdAogewotICAgIEFTU0VSVChpc1ZhbGlkKCkpOworICAgIC8vIFNr
aXAgdGhlIEFTU0VSVCBmb3Igbm93LCBIVE1MQW5jaG9yRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUo
KSBkb2VzIG5vdCBjaGVjayB0aGUgdmFsaWRpdHkgb2YgVVJMcy4KKyAgICAvLyBBU1NFUlQoaXNW
YWxpZCgpKTsKKyAgICBpZiAoIWlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOwog
ICAgIHJldHVybiBtX3VybEltcGwtPm1fcGFyc2VkVVJMLmhvc3QoKTsKIH0KIApAQCAtMTM2LDYg
KzE1Miw5IEBAIHVuc2lnbmVkIHNob3J0IEtVUkw6OnBvcnQoKSBjb25zdAogICAgIEFTU0VSVChp
c1ZhbGlkKCkpOwogCiAgICAgU3RyaW5nIHBvcnRTdHJpbmcgPSBtX3VybEltcGwtPm1fcGFyc2Vk
VVJMLnBvcnQoKTsKKyAgICBpZiAocG9ydFN0cmluZy5pc051bGwoKSkKKyAgICAgICAgcmV0dXJu
IDA7CisKICAgICBib29sIG9rID0gZmFsc2U7CiAgICAgdW5zaWduZWQgcG9ydFZhbHVlID0gcG9y
dFN0cmluZy50b1VJbnRTdHJpY3QoJm9rKTsKIApAQCAtMTkwLDEzICsyMDksMjAgQEAgU3RyaW5n
IEtVUkw6OnF1ZXJ5KCkgY29uc3QKIAogYm9vbCBLVVJMOjpoYXNGcmFnbWVudElkZW50aWZpZXIo
KSBjb25zdAogewotICAgIEFTU0VSVChpc1ZhbGlkKCkpOwotICAgIHJldHVybiAhZnJhZ21lbnRJ
ZGVudGlmaWVyKCkuaXNOdWxsKCk7CisgICAgLy8gU2tpcCB0aGUgQVNTRVJUIGZvciBub3csIFNj
cmlwdEVsZW1lbnQ6OnJlcXVlc3RTY3JpcHQoKSBjcmVhdGUgcmVxdWVzdHMgZm9yIGludmFsaWQg
VVJMcy4KKyAgICAvLyBBU1NFUlQoaXNWYWxpZCgpKTsKKyAgICBpZiAoIWlzVmFsaWQoKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIG1fdXJsSW1wbC0+bV9wYXJzZWRVUkwu
aGFzRnJhZ21lbnQoKTsKIH0KIAogU3RyaW5nIEtVUkw6OmZyYWdtZW50SWRlbnRpZmllcigpIGNv
bnN0CiB7Ci0gICAgQVNTRVJUKGlzVmFsaWQoKSk7CisgICAgLy8gU2tpcCB0aGUgQVNTRVJUIGZv
ciBub3csIFNjcmlwdEVsZW1lbnQ6OnJlcXVlc3RTY3JpcHQoKSBjcmVhdGUgcmVxdWVzdHMgZm9y
IGludmFsaWQgVVJMcy4KKyAgICAvLyBBU1NFUlQoaXNWYWxpZCgpKTsKKyAgICBpZiAoIWlzVmFs
aWQoKSkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgIHJldHVybiBtX3VybEltcGwtPm1f
cGFyc2VkVVJMLmZyYWdtZW50KCk7CiB9CiAKQEAgLTIxNSw3ICsyNDEsOCBAQCBTdHJpbmcgS1VS
TDo6ZmlsZVN5c3RlbVBhdGgoKSBjb25zdAogCiBib29sIEtVUkw6OnByb3RvY29sSXMoY29uc3Qg
Y2hhciogdGVzdFByb3RvY29sKSBjb25zdAogewotICAgIEFTU0VSVChpc1ZhbGlkKCkpOworICAg
IGlmICghaXNWYWxpZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJuIFdlYkNv
cmU6OnByb3RvY29sSXMocHJvdG9jb2woKSwgdGVzdFByb3RvY29sKTsKIH0KIApAQCAtMjg3LDgg
KzMxNCwxMSBAQCB2b2lkIEtVUkw6OnNldEZyYWdtZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcm
KQogCiB2b2lkIEtVUkw6OnJlbW92ZUZyYWdtZW50SWRlbnRpZmllcigpCiB7CisgICAgaWYgKCFo
YXNGcmFnbWVudElkZW50aWZpZXIoKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgZGV0YWNoKG1f
dXJsSW1wbCk7Ci0gICAgLy8gRklYTUU6IEFkZCBXVEZVUkwgSW1wbGVtZW50YXRpb24uCisgICAg
bV91cmxJbXBsLT5tX3BhcnNlZFVSTCA9IG1fdXJsSW1wbC0+bV9wYXJzZWRVUkwud2l0aG91dEZy
YWdtZW50KCk7CiB9CiAKIHVuc2lnbmVkIEtVUkw6Omhvc3RTdGFydCgpIGNvbnN0CkBAIC0zMjEs
NiArMzUxLDI0IEBAIHVuc2lnbmVkIEtVUkw6OnBhdGhBZnRlckxhc3RTbGFzaCgpIGNvbnN0CiAg
ICAgcmV0dXJuIDA7CiB9CiAKKyNpZm5kZWYgTkRFQlVHCit2b2lkIEtVUkw6OnByaW50KCkgY29u
c3QKK3sKKyAgICBpZiAoaXNWYWxpZCgpKQorICAgICAgICBtX3VybEltcGwtPm1fcGFyc2VkVVJM
LnByaW50KCk7CisgICAgZWxzZSB7CisgICAgICAgIGlmIChpc051bGwoKSkKKyAgICAgICAgICAg
IGRhdGFMb2coIk51bGwgS1VSTCIpOworICAgICAgICBlbHNlIGlmIChpc0VtcHR5KCkpCisgICAg
ICAgICAgICBkYXRhTG9nKCJFbXB0eSBLVVJMIik7CisgICAgICAgIGVsc2UgeworICAgICAgICAg
ICAgZGF0YUxvZygiSW52YWxpZCBLVVJMIGZyb20gc3RyaW5nID0iKTsKKyAgICAgICAgICAgIG1f
dXJsSW1wbC0+bV9pbnZhbGlkVXJsU3RyaW5nLnNob3coKTsKKyAgICAgICAgfQorICAgIH0KK30K
KyNlbmRpZgorCiB2b2lkIEtVUkw6OmludmFsaWRhdGUoKQogewogICAgIG1fdXJsSW1wbCA9IG51
bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LVVJMQ0ZOZXQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS1VSTENGTmV0LmNwcAppbmRleCBmZDgw
ODRiOTBkZGViMzRjYzc2Yzc3NmFhNjhiZDcyZWQxMDEwMDg1Li40NThkOTg3ZjE5ZTE1NDFmZTcw
N2ViODhiMjQ2MmQwODkxM2E3MTUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jZi9LVVJMQ0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tVUkxD
Rk5ldC5jcHAKQEAgLTMzLDggKzMzLDYgQEAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi0jaWYgIVVTRShXVEZVUkwpCi0KIHR5cGVkZWYgVmVjdG9yPGNoYXIs
IDUxMj4gQ2hhckJ1ZmZlcjsKIAogQ0ZVUkxSZWYgY3JlYXRlQ0ZVUkxGcm9tQnVmZmVyKGNvbnN0
IENoYXJCdWZmZXImKTsKQEAgLTQyLDcgKzQwLDcgQEAgQ0ZVUkxSZWYgY3JlYXRlQ0ZVUkxGcm9t
QnVmZmVyKGNvbnN0IENoYXJCdWZmZXImKTsKIEtVUkw6OktVUkwoQ0ZVUkxSZWYgdXJsKQogewog
ICAgIGlmICghdXJsKSB7Ci0gICAgICAgIHBhcnNlKDApOworICAgICAgICBpbnZhbGlkYXRlKCk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTUxLDcgKzQ5LDEzIEBAIEtVUkw6OktVUkwo
Q0ZVUkxSZWYgdXJsKQogICAgIGNoYXIqIGJ5dGVzID0gJmJ1ZmZlclswXTsKICAgICBDRlVSTEdl
dEJ5dGVzKHVybCwgcmVpbnRlcnByZXRfY2FzdDxVSW50OCo+KGJ5dGVzKSwgYnl0ZXNMZW5ndGgp
OwogICAgIGJ5dGVzW2J5dGVzTGVuZ3RoXSA9ICdcMCc7CisjaWYgIVVTRShXVEZVUkwpCiAgICAg
cGFyc2UoYnl0ZXMpOworI2Vsc2UKKyAgICAvLyBGSVhNRTogQWRkIFdURlVSTCBJbXBsZW1lbnRh
dGlvbi4KKyAgICBVTlVTRURfUEFSQU0odXJsKTsKKyAgICBpbnZhbGlkYXRlKCk7CisjZW5kaWYg
Ly8gVVNFKFdURlVSTCkKIH0KIAogQ0ZVUkxSZWYgY3JlYXRlQ0ZVUkxGcm9tQnVmZmVyKGNvbnN0
IENoYXJCdWZmZXImIGJ1ZmZlcikKQEAgLTY5LDE2ICs3MywyMSBAQCBDRlVSTFJlZiBjcmVhdGVD
RlVSTEZyb21CdWZmZXIoY29uc3QgQ2hhckJ1ZmZlciYgYnVmZmVyKQogI2lmICFQTEFURk9STShN
QUMpICYmICEoUExBVEZPUk0oUVQpICYmIFVTRShRVEtJVCkpCiBDRlVSTFJlZiBLVVJMOjpjcmVh
dGVDRlVSTCgpIGNvbnN0CiB7CisjaWYgIVVTRShXVEZVUkwpCiAgICAgLy8gRklYTUU6IFdoYXQg
c2hvdWxkIHRoaXMgcmV0dXJuIGZvciBpbnZhbGlkIFVSTHM/CiAgICAgLy8gQ3VycmVudGx5IGl0
IHRocm93cyBhd2F5IHRoZSBoaWdoIGJ5dGVzIG9mIHRoZSBjaGFyYWN0ZXJzIGluIHRoZSBzdHJp
bmcgaW4gdGhhdCBjYXNlLAogICAgIC8vIHdoaWNoIGlzIGNsZWFybHkgd3JvbmcuCiAgICAgQ2hh
ckJ1ZmZlciBidWZmZXI7CiAgICAgY29weVRvQnVmZmVyKGJ1ZmZlcik7CiAgICAgcmV0dXJuIGNy
ZWF0ZUNGVVJMRnJvbUJ1ZmZlcihidWZmZXIpOworI2Vsc2UgLy8gVVNFKFdURlVSTCkKKyAgICAv
LyBGSVhNRTogQWRkIFdURlVSTCBJbXBsZW1lbnRhdGlvbi4KKyAgICByZXR1cm4gMDsKKyNlbmRp
ZgogfQogI2VuZGlmCiAKLSNpZiAhKFBMQVRGT1JNKFFUKSAmJiBVU0UoUVRLSVQpKQorI2lmICFV
U0UoV1RGVVJMKSAmJiAhKFBMQVRGT1JNKFFUKSAmJiBVU0UoUVRLSVQpKQogU3RyaW5nIEtVUkw6
OmZpbGVTeXN0ZW1QYXRoKCkgY29uc3QKIHsKICAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGNmVVJM
KEFkb3B0Q0YsIGNyZWF0ZUNGVVJMKCkpOwpAQCAtOTQsMjAgKzEwMyw0IEBAIFN0cmluZyBLVVJM
OjpmaWxlU3lzdGVtUGF0aCgpIGNvbnN0CiB9CiAjZW5kaWYKIAotI2Vsc2UgLy8gVVNFKFdURlVS
TCkKLQotS1VSTDo6S1VSTChDRlVSTFJlZikKLXsKLSAgICAvLyBGSVhNRTogQWRkIFdURlVSTCBJ
bXBsZW1lbnRhdGlvbi4KLSAgICBpbnZhbGlkYXRlKCk7Ci19Ci0KLUNGVVJMUmVmIEtVUkw6OmNy
ZWF0ZUNGVVJMKCkgY29uc3QKLXsKLSAgICAvLyBGSVhNRTogQWRkIFdURlVSTCBJbXBsZW1lbnRh
dGlvbi4KLSAgICByZXR1cm4gMDsKLX0KLQotI2VuZGlmIC8vIFVTRShXVEZVUkwpCi0KIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9LVVJMTWFjLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL0tVUkxNYWMubW0KaW5kZXggYzY5ZDdhY2NlZjkzZTY1OTYw
MzE3MmIxMDllNzhiNDhjZmZlYmU5NS4uOWVmYmVlMGQ4N2RmZjA5N2JjMThiMWQzMmNjYjZlM2Y0
Zjk4OTk0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0tVUkxNYWMu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0tVUkxNYWMubW0KQEAgLTI5LDkg
KzI5LDkgQEAKICNpbXBvcnQgIkZvdW5kYXRpb25FeHRyYXMuaCIKICNpbXBvcnQgPENvcmVGb3Vu
ZGF0aW9uL0NGVVJMLmg+CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKK3VzaW5nIG5hbWVzcGFjZSBX
VEY7CiAKLSNpZiAhVVNFKFdURlVSTCkKK25hbWVzcGFjZSBXZWJDb3JlIHsKIAogdHlwZWRlZiBW
ZWN0b3I8Y2hhciwgNTEyPiBDaGFyQnVmZmVyOwogZXh0ZXJuIENGVVJMUmVmIGNyZWF0ZUNGVVJM
RnJvbUJ1ZmZlcihjb25zdCBDaGFyQnVmZmVyJiBidWZmZXIpOwpAQCAtMzksNyArMzksNyBAQCBl
eHRlcm4gQ0ZVUkxSZWYgY3JlYXRlQ0ZVUkxGcm9tQnVmZmVyKGNvbnN0IENoYXJCdWZmZXImIGJ1
ZmZlcik7CiBLVVJMOjpLVVJMKE5TVVJMICp1cmwpCiB7CiAgICAgaWYgKCF1cmwpIHsKLSAgICAg
ICAgcGFyc2UoMCk7CisgICAgICAgIGludmFsaWRhdGUoKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIApAQCAtNDgsNyArNDgsMTUgQEAgS1VSTDo6S1VSTChOU1VSTCAqdXJsKQogICAgIGNoYXIq
IGJ5dGVzID0gJmJ1ZmZlclswXTsKICAgICBDRlVSTEdldEJ5dGVzKHJlaW50ZXJwcmV0X2Nhc3Q8
Q0ZVUkxSZWY+KHVybCksIHJlaW50ZXJwcmV0X2Nhc3Q8VUludDgqPihieXRlcyksIGJ5dGVzTGVu
Z3RoKTsKICAgICBieXRlc1tieXRlc0xlbmd0aF0gPSAnXDAnOworI2lmICFVU0UoV1RGVVJMKQog
ICAgIHBhcnNlKGJ5dGVzKTsKKyNlbHNlCisgICAgbV91cmxJbXBsID0gYWRvcHRSZWYobmV3IEtV
UkxXVEZVUkxJbXBsKCkpOworICAgIFN0cmluZyB1cmxTdHJpbmcoYnl0ZXMsIGJ5dGVzTGVuZ3Ro
KTsKKyAgICBtX3VybEltcGwtPm1fcGFyc2VkVVJMID0gUGFyc2VkVVJMKHVybFN0cmluZyk7Cisg
ICAgaWYgKCFtX3VybEltcGwtPm1fcGFyc2VkVVJMLmlzVmFsaWQoKSkKKyAgICAgICAgbV91cmxJ
bXBsLT5tX2ludmFsaWRVcmxTdHJpbmcgPSB1cmxTdHJpbmc7CisjZW5kaWYgLy8gVVNFKFdURlVS
TCkKIH0KIAogS1VSTDo6b3BlcmF0b3IgTlNVUkwgKigpIGNvbnN0CkBAIC02NywyNCArNzUsMTgg
QEAgQ0ZVUkxSZWYgS1VSTDo6Y3JlYXRlQ0ZVUkwoKSBjb25zdAogICAgICAgICByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDxDRlVSTFJlZj4oW1tOU1VSTCBhbGxvY10gaW5pdFdpdGhTdHJpbmc6QCIi
XSk7CiAKICAgICBDaGFyQnVmZmVyIGJ1ZmZlcjsKKyNpZiAhVVNFKFdURlVSTCkKICAgICBjb3B5
VG9CdWZmZXIoYnVmZmVyKTsKLSAgICByZXR1cm4gY3JlYXRlQ0ZVUkxGcm9tQnVmZmVyKGJ1ZmZl
cik7Ci19Ci0KICNlbHNlCi0KLUtVUkw6OktVUkwoTlNVUkwgKikKLXsKLSAgICAvLyBGSVhNRTog
QWRkIFdURlVSTCBJbXBsZW1lbnRhdGlvbi4KLSAgICBpbnZhbGlkYXRlKCk7CisgICAgU3RyaW5n
IHVybFN0cmluZyA9IHN0cmluZygpOworICAgIGJ1ZmZlci5yZXNpemUodXJsU3RyaW5nLmxlbmd0
aCgpKTsKKyAgICBzaXplX3QgbGVuZ3RoID0gdXJsU3RyaW5nLmxlbmd0aCgpOworICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspCisgICAgICAgIGJ1ZmZlcltpXSA9IHN0YXRp
Y19jYXN0PGNoYXI+KHVybFN0cmluZ1tpXSk7CisjZW5kaWYKKyAgICByZXR1cm4gY3JlYXRlQ0ZV
UkxGcm9tQnVmZmVyKGJ1ZmZlcik7CiB9CiAKLUtVUkw6Om9wZXJhdG9yIE5TVVJMICooKSBjb25z
dAotewotICAgIC8vIEZJWE1FOiBBZGQgV1RGVVJMIEltcGxlbWVudGF0aW9uLgotICAgIHJldHVy
biBuaWw7Ci19CiAKLSNlbmRpZgogCiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>146753</attachid>
            <date>2012-06-10 15:25:08 -0700</date>
            <delta_ts>2012-06-11 01:06:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-85724-20120610152507.patch</filename>
            <type>text/plain</type>
            <size>30995</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE5OTQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGUyYzkxMmUwNTg2OTU2OGNhZjBlOTg5
ZjU2YWE0MTFhYmY4ZjY1MmIuLjNjYjhmZDdhN2EzOGIxNDI1YWQxMzZiNzNhM2NjZDFlMzUzMzY2
NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNDIgQEAKKzIwMTItMDYtMTAgIEJlbmphbWluIFBvdWxhaW4gIDxi
ZW5qYW1pbkB3ZWJraXQub3JnPgorCisgICAgICAgIEltcGxlbWVudCB0aGUgc2ltcGxlIGNvbnN0
cnVjdG9ycyBXVEZVUkwncyBLVVJMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD04NTcyNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFRoaXMgcGF0Y2ggZXh0ZW5kcyBXVEZVUkwgd2l0aDoKKyAgICAgICAgLXN1
cHBvcnQgYmFzaWMgZGVidWdnaW5nIHVzaW5nIHByaW50KCkgbWV0aG9kcworICAgICAgICAtcGFy
c2luZyBpbiB0aGUgaW5jb21taW5nIHN0cmluZyBjaGFyYWN0ZXIgc2V0ICg4Yml0cyBvciAxNmJp
dHMpCisgICAgICAgIC1hZGQgYSBmdW5jdGlvbiBmb3IgcGFyc2luZyBvZiByZWxhdGl2ZSBVUkwg
KGJ1dCBubyBpbXBsZW1lbnRhdGlvbiB5ZXQpCisKKyAgICAgICAgKiBXVEYueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiB3dGYvdGV4dC9XVEZTdHJpbmcuaDoKKyAgICAgICAg
KFN0cmluZyk6CisgICAgICAgICogd3RmL3VybC9hcGkvUGFyc2VkVVJMLmNwcDoKKyAgICAgICAg
KFdURjo6UGFyc2VkVVJMOjpQYXJzZWRVUkwpOgorICAgICAgICAoV1RGKToKKyAgICAgICAgKFdU
Rjo6UGFyc2VkVVJMOjpoYXNGcmFnbWVudCk6IEFkZCB0aGlzIG1ldGhvZCB0byBxdWVyeSB0aGUg
ZnJhbWdlbnQgYXZhaWxhYmlsaXR5IHdpdGhvdXQKKyAgICAgICAgYWxsb2NhdGluZyBhIG5ldyBT
dHJpbmcuCisgICAgICAgIChXVEY6OlBhcnNlZFVSTDo6d2l0aG91dEZyYWdtZW50KTogVGhpcyBt
ZXRob2QgaXMgYWRkZWQgdG8gaW1wbGVtZW50IEtVUkw6OnJlbW92ZUZyYWdtZW50SWRlbnRpZmll
cigpIGFuZAorICAgICAgICB0aGUgcGFyc2luZyBvZiBlbXB0eSByZWxhdGl2ZSBVUkwgKHdoZXJl
IHdlIHJldHVybiB0aGUgYmFzZSB3aXRob3V0IGZyYWdtZW50KS4KKyAgICAgICAgKFdURjo6UGFy
c2VkVVJMOjpwcmludCk6CisgICAgICAgICogd3RmL3VybC9hcGkvUGFyc2VkVVJMLmg6CisgICAg
ICAgIChQYXJzZWRVUkwpOgorICAgICAgICAoV1RGOjpQYXJzZWRVUkw6OnNwZWMpOgorICAgICAg
ICAqIHd0Zi91cmwvYXBpL1VSTFN0cmluZy5oOgorICAgICAgICAoVVJMU3RyaW5nKToKKyAgICAg
ICAgKiB3dGYvdXJsL3NyYy9VUkxQYXJzZXIuaDoKKyAgICAgICAgKFdURik6CisgICAgICAgIChV
UkxQYXJzZXIpOgorICAgICAgICAoV1RGOjpVUkxQYXJzZXI6OnBhcnNlVVJMV2l0aEJhc2UpOgor
ICAgICAgICAqIHd0Zi91cmwvc3JjL1VSTFNlZ21lbnRzLmNwcDoKKyAgICAgICAgKFdURjo6VVJM
U2VnbWVudHM6Omxlbmd0aCk6CisgICAgICAgIChXVEY6OlVSTFNlZ21lbnRzOjpjaGFyYWN0ZXJz
QmVmb3JlKToKKyAgICAgICAgKiB3dGYvdXJsL3NyYy9VUkxTZWdtZW50cy5oOgorICAgICAgICAo
VVJMU2VnbWVudHMpOgorICAgICAgICBDaGFuZ2UgdGhlIGJvb2xlYW4gYXJndW1lbnQgaW5jbHVk
ZURlbGltaXRlciBpbiBmYXZvciBvZiBhbiBlbnVtIHRvIGltcHJvdmUgcmVhZGFiaWxpdHkuCisK
IDIwMTItMDYtMDkgIERvbWluaWMgQ29vbmV5ICA8ZG9taW5pY2NAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFtDaHJvbWl1bV0gUmVtb3ZlIEphdmFTY3JpcHRDb3JlIGRlcGVuZGVuY2llcyBmcm9t
IGd5cApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCmluZGV4IDQ1OTQ3NjIzZTBjOTliNjBjOGMwMmNlYzIxYjlmZGNlODJhODk5
ZGEuLjc4ZmUzOWM3NWU3OGI0YWYxNTI1ZDgxZGM2MGU0ZDMzZTk4YTFlMDkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwzNiBAQAorMjAxMi0wNi0xMCAgQmVuamFtaW4gUG91bGFpbiAgPGJlbmphbWlu
QHdlYmtpdC5vcmc+CisKKyAgICAgICAgSW1wbGVtZW50IHRoZSBzaW1wbGUgY29uc3RydWN0b3Jz
IFdURlVSTCdzIEtVUkwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTg1NzI0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVGhpcyBwYXRjaCBpbXBsZW1lbnQgdGhlIGNvcnJlY3QgaW5pdGlhbGl6YXRpb24gb2Yg
S1VSTCBmcm9tIGFuIGFic29sdXRlIFVSTC4KKyAgICAgICAgVGhlIFVSTCBjb3JyZWN0bmVzcyBp
cyBhbHNvIHJlbGF4ZWQgaW4gb3JkZXIgdG8gaGF2ZSBLVVJMV1RGVVJMIHdvcmtzIHNpbWlsYXJp
bHkgdG8gS1VSTC4KKworICAgICAgICAqIHBsYXRmb3JtL0tVUkxXVEZVUkwuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6S1VSTDo6S1VSTCk6CisgICAgICAgIChXZWJDb3JlOjpLVVJMOjppc1ZhbGlk
KToKKyAgICAgICAgKFdlYkNvcmU6OktVUkw6OnN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpL
VVJMOjpwcm90b2NvbCk6CisgICAgICAgIChXZWJDb3JlOjpLVVJMOjpob3N0KToKKyAgICAgICAg
KFdlYkNvcmU6OktVUkw6OnBvcnQpOiBGaXggYSBidWcgd2hlcmUgaW52YWxpZFBvcnROdW1iZXIg
d2FzIHJldHVybmVkIGlmIG5vIHBvcnQgd2FzIGRlZmluZWQuCisgICAgICAgIChXZWJDb3JlOjpL
VVJMOjpoYXNGcmFnbWVudElkZW50aWZpZXIpOgorICAgICAgICAoV2ViQ29yZTo6S1VSTDo6ZnJh
Z21lbnRJZGVudGlmaWVyKToKKyAgICAgICAgKFdlYkNvcmU6OktVUkw6OnByb3RvY29sSXMpOgor
ICAgICAgICAoV2ViQ29yZTo6S1VSTDo6cmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVyKToKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6S1VSTDo6cHJpbnQpOgorICAgICAgICAq
IHBsYXRmb3JtL2NmL0tVUkxDRk5ldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLVVJMOjpLVVJM
KToKKyAgICAgICAgKFdlYkNvcmU6OktVUkw6OmNyZWF0ZUNGVVJMKToKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9LVVJMTWFjLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6S1VSTDo6S1VSTCk6CisgICAgICAgIChXZWJDb3JlOjpLVVJMOjpjcmVhdGVDRlVSTCk6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgVXNlIHRoZSBjb2RlIG9mIEtVUkwgdG8gbWFrZSB0
aGUgY29udmVyc2lvbiBmcm9tIFdURlVSTCB0byBOU1VSTC4KKwogMjAxMi0wNi0xMCAgRGFyaW4g
QWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgU29tZSBhZGRpdGlvbmFsIHR3ZWFr
cyB0byBrZWVwIFRyZWVTaGFyZWQgY29kZSBzaW1wbGUvY2xlYW4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV1RGL1dURi54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGJhNDU3NjQzZmIzYmExZDUxNmIzZWY5MTE2OWFh
YTFiYzcwYTU1N2UuLjc3MjA0NjFlMjY0NjYxZmM4ZTk0MzVlOTA4ODE2NzRiY2QxYjc2NTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
U291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTAsNiArMTAsNyBA
QAogCQkxNDNGNjExRjE1NjVGMEY5MDBEQjUxNEEgLyogUkFNU2l6ZS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDNGNjExRDE1NjVGMEY5MDBEQjUx
NEEgLyogUkFNU2l6ZS5jcHAgKi87IH07CiAJCTE0M0Y2MTIwMTU2NUYwRjkwMERCNTE0QSAvKiBS
QU1TaXplLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
NDNGNjExRTE1NjVGMEY5MDBEQjUxNEEgLyogUkFNU2l6ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGRDgxQUM1MTU0RkIyMkUwMDk4M0U3MiAv
KiBGYXN0Qml0VmVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRkQ4MUFDNDE1NEZCMjJFMDA5ODNFNzIgLyogRmFzdEJpdFZlY3Rvci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKCk7IH07IH07CisJCTQzMzBGMzhGMTU3NDVCMDUwMEFB
RkE4RiAvKiBVUkxTdHJpbmcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDMzMEYzOEUxNTc0NUIwNTAwQUFGQThGIC8qIFVSTFN0cmluZy5jcHAgKi87
IH07CiAJCTRGMDMyMUJDMTU2QUE4RDEwMDZFQkFGNiAvKiBCaXRBcnJheS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEYwMzIxQkIxNTZBQThEMTAwNkVC
QUY2IC8qIEJpdEFycmF5LmggKi87IH07CiAJCUE4NzZEQkQ4MTUxODE2RTUwMERBREI5NSAvKiBQ
bGF0Zm9ybS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTg3NkRCRDcxNTE4MTZFNTAwREFEQjk1IC8qIFBsYXRmb3JtLmggKi87IH07CiAJCUE4QTQ3MzdG
MTUxQTgyNUIwMDQxMjNGRiAvKiBBbGlnbm1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QTQ3MjU0MTUxQTgyNUEwMDQxMjNGRiAvKiBBbGlnbm1l
bnQuaCAqLzsgfTsKQEAgLTI0Nyw2ICsyNDgsNyBAQAogCQkxNDNGNjExRDE1NjVGMEY5MDBEQjUx
NEEgLyogUkFNU2l6ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBS
QU1TaXplLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQzRjYxMUUxNTY1RjBG
OTAwREI1MTRBIC8qIFJBTVNpemUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UkFNU2l6ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkQ4MUFDNDE1NEZCMjJF
MDA5ODNFNzIgLyogRmFzdEJpdFZlY3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBGYXN0Qml0VmVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQzMzBG
MzhFMTU3NDVCMDUwMEFBRkE4RiAvKiBVUkxTdHJpbmcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gVVJMU3RyaW5nLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNEYwMzIxQkIxNTZBQThEMTAwNkVCQUY2IC8qIEJpdEFycmF5LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJpdEFycmF5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTVEMjQ3QjYyMTQ2ODlCODYwMEU3OEI3NiAvKiBsaWJXVEYuYSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gYXJjaGl2ZS5hcjsgaW5jbHVkZUlu
SW5kZXggPSAwOyBwYXRoID0gbGliV1RGLmE7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19E
SVI7IH07CiAJCTVEMjQ3QjZFMTQ2ODlDNDcwMEU3OEI3NiAvKiBCYXNlLnhjY29uZmlnICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZp
ZzsgcGF0aCA9IEJhc2UueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04
MzIsNiArODM0LDcgQEAKIAkJCWNoaWxkcmVuID0gKAogCQkJCUE4QTQ3MzYwMTUxQTgyNUIwMDQx
MjNGRiAvKiBQYXJzZWRVUkwuY3BwICovLAogCQkJCUE4QTQ3MzYxMTUxQTgyNUIwMDQxMjNGRiAv
KiBQYXJzZWRVUkwuaCAqLywKKwkJCQk0MzMwRjM4RTE1NzQ1QjA1MDBBQUZBOEYgLyogVVJMU3Ry
aW5nLmNwcCAqLywKIAkJCQlBOEE0NzM2MjE1MUE4MjVCMDA0MTIzRkYgLyogVVJMU3RyaW5nLmgg
Ki8sCiAJCQkpOwogCQkJcGF0aCA9IGFwaTsKQEAgLTExNjksNiArMTE3Miw3IEBACiAJCQkJQThB
NDc0M0MxNTFBODI1QjAwNDEyM0ZGIC8qIFN0cmluZ0J1aWxkZXIuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQThBNDc0NDAxNTFBODI1QjAwNDEyM0ZGIC8qIFN0cmluZ0ltcGwuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQThBNDc0NDMxNTFBODI1QjAwNDEyM0ZGIC8qIFN0cmluZ1N0YXRpY3MuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJNDMzMEYzOEYxNTc0NUIwNTAwQUFGQThGIC8qIFVSTFN0cmlu
Zy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzQ0NTE1MUE4MjVCMDA0MTIzRkYgLyogV1RG
U3RyaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3NDQ4MTUxQTgyNUIwMDQxMjNGRiAv
KiBUaHJlYWRJZGVudGlmaWVyRGF0YVB0aHJlYWRzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4
QTQ3NDRBMTUxQTgyNUIwMDQxMjNGRiAvKiBUaHJlYWRpbmcuY3BwIGluIFNvdXJjZXMgKi8sCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oIGIvU291cmNlL1dURi93
dGYvdGV4dC9XVEZTdHJpbmcuaAppbmRleCBiZmJmZGE0ZDQ1M2QzM2NhYTczZDBjNzI0NmNjNmFj
NGIxZTI0NmFmLi42Y2ViZjgwM2RhMjEyOWIyNGVhZTI3YzhmMmYzMTgzMWVmNWE5MjQwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCisrKyBiL1NvdXJjZS9XVEYv
d3RmL3RleHQvV1RGU3RyaW5nLmgKQEAgLTQxNSw3ICs0MTUsNyBAQCBwdWJsaWM6CiAgICAgYm9v
bCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1faW1wbC5pc0hhc2hU
YWJsZURlbGV0ZWRWYWx1ZSgpOyB9CiAKICNpZm5kZWYgTkRFQlVHCi0gICAgdm9pZCBzaG93KCkg
Y29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgc2hvdygpIGNvbnN0OwogI2VuZGlm
CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi91cmwvYXBpL1BhcnNlZFVS
TC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi91cmwvYXBpL1BhcnNlZFVSTC5jcHAKaW5kZXggZjY5MTYy
YTY3ODI4OTE1M2Q2Y2Y3NjlkMjAxNWNhM2JkNDQyODE2ZC4uOGEyOWQ1NjUwZjJmZGFmY2RmNDRj
YmYzZDdlOGE3YWNiZGUxMjMwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdXJsL2FwaS9Q
YXJzZWRVUkwuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3VybC9hcGkvUGFyc2VkVVJMLmNwcApA
QCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlLCBJbmMuIEFs
bCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOCwx
OCArMjksNjMgQEAKIAogI2lmIFVTRShXVEZVUkwpCiAKLSNpbmNsdWRlICJVUkxDb21wb25lbnQu
aCIKLSNpbmNsdWRlICJVUkxQYXJzZXIuaCIKKyNpbmNsdWRlIDx3dGYvRGF0YUxvZy5oPgorI2lu
Y2x1ZGUgPHd0Zi9SYXdVUkxCdWZmZXIuaD4KKyNpbmNsdWRlIDx3dGYvVVJMQ29tcG9uZW50Lmg+
CisjaW5jbHVkZSA8d3RmL1VSTFBhcnNlci5oPgogCiBuYW1lc3BhY2UgV1RGIHsKIAogUGFyc2Vk
VVJMOjpQYXJzZWRVUkwoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpCi0gICAgOiBtX3NwZWModXJs
U3RyaW5nKQogewotICAgIC8vIEZJWE1FOiBIYW5kbGUgbm9uLXN0YW5kYXJkIFVSTHMuCi0gICAg
aWYgKHVybFN0cmluZy5pc0VtcHR5KCkpCisgICAgaWYgKHVybFN0cmluZy5pc0VtcHR5KCkpIHsK
KyAgICAgICAgbV9zcGVjID0gVVJMU3RyaW5nKCk7CiAgICAgICAgIHJldHVybjsKLSAgICBVUkxQ
YXJzZXI8VUNoYXI+OjpwYXJzZVN0YW5kYXJkVVJMKHVybFN0cmluZy5jaGFyYWN0ZXJzKCksIHVy
bFN0cmluZy5sZW5ndGgoKSwgbV9zZWdtZW50cyk7CisgICAgfQorCisgICAgLy8gRklYTUU6IGhh
bmRsZSBpbnZhbGlkIHVybFN0cmluZy4KKyAgICBtX3NwZWMgPSBVUkxTdHJpbmcodXJsU3RyaW5n
KTsKKyAgICBpZiAodXJsU3RyaW5nLmlzOEJpdCgpKQorICAgICAgICBVUkxQYXJzZXI8TENoYXI+
OjpwYXJzZVN0YW5kYXJkVVJMKHVybFN0cmluZy5jaGFyYWN0ZXJzOCgpLCB1cmxTdHJpbmcubGVu
Z3RoKCksIG1fc2VnbWVudHMpOworICAgIGVsc2UKKyAgICAgICAgVVJMUGFyc2VyPFVDaGFyPjo6
cGFyc2VTdGFuZGFyZFVSTCh1cmxTdHJpbmcuY2hhcmFjdGVyczE2KCksIHVybFN0cmluZy5sZW5n
dGgoKSwgbV9zZWdtZW50cyk7Cit9CisKK1BhcnNlZFVSTDo6UGFyc2VkVVJMKGNvbnN0IFBhcnNl
ZFVSTCYgYmFzZSwgY29uc3QgU3RyaW5nJiByZWxhdGl2ZSkKK3sKKyAgICBpZiAoIWJhc2UuaXNW
YWxpZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAocmVsYXRpdmUuaXNFbXB0eSgpKSB7
CisgICAgICAgICp0aGlzID0gYmFzZS53aXRob3V0RnJhZ21lbnQoKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIC8vIEZJWE1FOiBoYW5kbGUgaW52YWxpZCBVUkxzLgorICAgIGNvbnN0
IFN0cmluZyYgYmFzZVN0cmluZyA9IGJhc2UubV9zcGVjLnN0cmluZygpOworICAgIFJhd1VSTEJ1
ZmZlcjxjaGFyLCAxMDI0PiBvdXRwdXRCdWZmZXI7CisgICAgaWYgKHJlbGF0aXZlLmlzOEJpdCgp
KSB7CisgICAgICAgIGlmIChiYXNlU3RyaW5nLmlzOEJpdCgpKSB7CisgICAgICAgICAgICBVUkxQ
YXJzZXI8TENoYXIsIExDaGFyPjo6cGFyc2VVUkxXaXRoQmFzZShyZWxhdGl2ZS5jaGFyYWN0ZXJz
OCgpLCByZWxhdGl2ZS5sZW5ndGgoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJhc2VTdHJpbmcuY2hhcmFjdGVyczgoKSwgYmFzZVN0cmlu
Zy5sZW5ndGgoKSwgYmFzZS5tX3NlZ21lbnRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0QnVmZmVyLCBtX3NlZ21lbnRzKTsKKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFVSTFBhcnNlcjxMQ2hhciwgVUNoYXI+OjpwYXJz
ZVVSTFdpdGhCYXNlKHJlbGF0aXZlLmNoYXJhY3RlcnM4KCksIHJlbGF0aXZlLmxlbmd0aCgpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFz
ZVN0cmluZy5jaGFyYWN0ZXJzMTYoKSwgYmFzZVN0cmluZy5sZW5ndGgoKSwgYmFzZS5tX3NlZ21l
bnRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgb3V0cHV0QnVmZmVyLCBtX3NlZ21lbnRzKTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7Cisg
ICAgICAgIGlmIChiYXNlU3RyaW5nLmlzOEJpdCgpKSB7CisgICAgICAgICAgICBVUkxQYXJzZXI8
VUNoYXIsIExDaGFyPjo6cGFyc2VVUkxXaXRoQmFzZShyZWxhdGl2ZS5jaGFyYWN0ZXJzMTYoKSwg
cmVsYXRpdmUubGVuZ3RoKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBiYXNlU3RyaW5nLmNoYXJhY3RlcnM4KCksIGJhc2VTdHJpbmcubGVu
Z3RoKCksIGJhc2UubV9zZWdtZW50cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG91dHB1dEJ1ZmZlciwgbV9zZWdtZW50cyk7CisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICBVUkxQYXJzZXI8VUNoYXIsIFVDaGFyPjo6cGFyc2VVUkxX
aXRoQmFzZShyZWxhdGl2ZS5jaGFyYWN0ZXJzMTYoKSwgcmVsYXRpdmUubGVuZ3RoKCksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlU3Ry
aW5nLmNoYXJhY3RlcnMxNigpLCBiYXNlU3RyaW5nLmxlbmd0aCgpLCBiYXNlLm1fc2VnbWVudHMs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBv
dXRwdXRCdWZmZXIsIG1fc2VnbWVudHMpOworICAgICAgICB9CisgICAgfQorICAgIG1fc3BlYyA9
IFVSTFN0cmluZyhTdHJpbmcob3V0cHV0QnVmZmVyLmRhdGEoKSwgb3V0cHV0QnVmZmVyLmxlbmd0
aCgpKSk7CiB9CiAKIFBhcnNlZFVSTCBQYXJzZWRVUkw6Omlzb2xhdGVkQ29weSgpIGNvbnN0CkBA
IC04NSwxMSArMTMxLDMxIEBAIFN0cmluZyBQYXJzZWRVUkw6OnF1ZXJ5KCkgY29uc3QKICAgICBy
ZXR1cm4gc2VnbWVudChtX3NlZ21lbnRzLnF1ZXJ5KTsKIH0KIAorYm9vbCBQYXJzZWRVUkw6Omhh
c0ZyYWdtZW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zZWdtZW50cy5mcmFnbWVudC5pc1Zh
bGlkKCk7Cit9CisKIFN0cmluZyBQYXJzZWRVUkw6OmZyYWdtZW50KCkgY29uc3QKIHsKICAgICBy
ZXR1cm4gc2VnbWVudChtX3NlZ21lbnRzLmZyYWdtZW50KTsKIH0KIAorUGFyc2VkVVJMIFBhcnNl
ZFVSTDo6d2l0aG91dEZyYWdtZW50KCkgY29uc3QKK3sKKyAgICBpZiAoIWhhc0ZyYWdtZW50KCkp
CisgICAgICAgIHJldHVybiAqdGhpczsKKworICAgIFBhcnNlZFVSTCBuZXdVUkw7CisKKyAgICBp
bnQgY2hhcmFjdGVyc0JlZm9yZUZyYWdlbW50ID0gbV9zZWdtZW50cy5jaGFyYWN0ZXJzQmVmb3Jl
KFVSTFNlZ21lbnRzOjpGcmFnbWVudCwgVVJMU2VnbWVudHM6OkRlbGltaXRlckV4Y2x1ZGVkKTsK
KyAgICBuZXdVUkwubV9zcGVjID0gVVJMU3RyaW5nKG1fc3BlYy5zdHJpbmcoKS5zdWJzdHJpbmdT
aGFyaW5nSW1wbCgwLCBjaGFyYWN0ZXJzQmVmb3JlRnJhZ2VtbnQpKTsKKworICAgIG5ld1VSTC5t
X3NlZ21lbnRzID0gbV9zZWdtZW50czsKKyAgICBuZXdVUkwubV9zZWdtZW50cy5mcmFnbWVudCA9
IFVSTENvbXBvbmVudCgpOworICAgIHJldHVybiBuZXdVUkw7Cit9CisKIFN0cmluZyBQYXJzZWRV
Ukw6OmJhc2VBc1N0cmluZygpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IEFkZCBXVEZVUkwgSW1w
bGVtZW50YXRpb24uCkBAIC0xMDgsNiArMTc0LDM2IEBAIFN0cmluZyBQYXJzZWRVUkw6OnNlZ21l
bnQoY29uc3QgVVJMQ29tcG9uZW50JiBjb21wb25lbnQpIGNvbnN0CiAgICAgcmV0dXJuIHNlZ21l
bnQ7CiB9CiAKKyNpZm5kZWYgTkRFQlVHCisKKyNkZWZpbmUgU0hPV19DT01QT05FTlQocGFyc2Vk
VVJMLCBjb21wb25lbnROYW1lKSBcCisgICAgaWYgKCFwYXJzZWRVUkwtPmNvbXBvbmVudE5hbWUo
KS5pc051bGwoKSkgeyBcCisgICAgICAgIGRhdGFMb2coIiAgICAiICNjb21wb25lbnROYW1lICIg
PSAiKTsgXAorICAgICAgICBwYXJzZWRVUkwtPmNvbXBvbmVudE5hbWUoKS5zaG93KCk7IFwKKyAg
ICB9CisKK3ZvaWQgUGFyc2VkVVJMOjpwcmludCgpIGNvbnN0Cit7CisgICAgaWYgKCFpc1ZhbGlk
KCkpIHsKKyAgICAgICAgZGF0YUxvZygiSW52YWxpZCBQYXJzZWRVUkwuXG4iKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIGRhdGFMb2coIlZhbGlkIFBhcnNlZFVSTCB3aXRoOlxuIik7
CisgICAgZGF0YUxvZygiICAgIG1fc3BlYyA9ICIpOworICAgIG1fc3BlYy5wcmludCgpOworCisg
ICAgU0hPV19DT01QT05FTlQodGhpcywgc2NoZW1lKTsKKyAgICBTSE9XX0NPTVBPTkVOVCh0aGlz
LCB1c2VybmFtZSk7CisgICAgU0hPV19DT01QT05FTlQodGhpcywgcGFzc3dvcmQpOworICAgIFNI
T1dfQ09NUE9ORU5UKHRoaXMsIGhvc3QpOworICAgIFNIT1dfQ09NUE9ORU5UKHRoaXMsIHBvcnQp
OworICAgIFNIT1dfQ09NUE9ORU5UKHRoaXMsIHBhdGgpOworICAgIFNIT1dfQ09NUE9ORU5UKHRo
aXMsIHF1ZXJ5KTsKKyAgICBTSE9XX0NPTVBPTkVOVCh0aGlzLCBmcmFnbWVudCk7Cit9CisjZW5k
aWYKKwogfQogCiAjZW5kaWYgLy8gVVNFKFdURlVSTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL3VybC9hcGkvUGFyc2VkVVJMLmggYi9Tb3VyY2UvV1RGL3d0Zi91cmwvYXBpL1BhcnNlZFVS
TC5oCmluZGV4IDJiYjMzMzBjZmMxMTMyMDY4MTQzOTEzMGUzMzFkMzQ4YjhkYjM3ZDguLjBjNDk3
MWJiMTIzOGVmYTMzOTFiN2FkZTE4OTdjODA1NGMyZjdmYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL3VybC9hcGkvUGFyc2VkVVJMLmgKKysrIGIvU291cmNlL1dURi93dGYvdXJsL2FwaS9Q
YXJzZWRVUkwuaApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29v
Z2xlLCBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0zOCw5ICszOSw5IEBAIGNsYXNzIFVSTENvbXBvbmVudDsKIC8vIFBhcnNlZFVSTCBy
ZXByZXNlbnRzIGEgdmFsaWQgVVJMIGRlY29tcG9zZWQgYnkgY29tcG9uZW50cy4KIGNsYXNzIFBh
cnNlZFVSTCB7CiBwdWJsaWM6Ci0gICAgLy8gRklYTUU6IEFkZCBhIG1ldGhvZCBmb3IgcGFyc2lu
ZyBub24tY2Fub25pY2FsaXplZCBVUkxzLgogICAgIFBhcnNlZFVSTCgpIHsgfTsKICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgZXhwbGljaXQgUGFyc2VkVVJMKGNvbnN0IFN0cmluZyYpOworICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSBleHBsaWNpdCBQYXJzZWRVUkwoY29uc3QgUGFyc2VkVVJMJiBiYXNl
LCBjb25zdCBTdHJpbmcmIHJlbGF0aXZlKTsKIAogICAgIFdURl9FWFBPUlRfUFJJVkFURSBQYXJz
ZWRVUkwgaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CiAKQEAgLTU0LDExICs1NSwxOCBAQCBwdWJsaWM6
CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBwb3J0KCkgY29uc3Q7CiAgICAgV1RGX0VY
UE9SVF9QUklWQVRFIFN0cmluZyBwYXRoKCkgY29uc3Q7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRF
IFN0cmluZyBxdWVyeSgpIGNvbnN0OworCisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgaGFz
RnJhZ21lbnQoKSBjb25zdDsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIGZyYWdtZW50
KCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFBhcnNlZFVSTCB3aXRob3V0RnJhZ21l
bnQoKSBjb25zdDsKIAogICAgIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgYmFzZUFzU3RyaW5n
KCkgY29uc3Q7CiAKLSAgICBVUkxTdHJpbmcgc3BlYygpIHsgcmV0dXJuIG1fc3BlYzsgfQorICAg
IGNvbnN0IFVSTFN0cmluZyYgc3BlYygpIHsgcmV0dXJuIG1fc3BlYzsgfQorCisjaWZuZGVmIE5E
RUJVRworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHByaW50KCkgY29uc3Q7CisjZW5kaWYK
IAogcHJpdmF0ZToKICAgICBpbmxpbmUgU3RyaW5nIHNlZ21lbnQoY29uc3QgVVJMQ29tcG9uZW50
JikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi91cmwvYXBpL1VSTFN0cmluZy5j
cHAgYi9Tb3VyY2UvV1RGL3d0Zi91cmwvYXBpL1VSTFN0cmluZy5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTE0
N2ZlMzk5ZjI5ZGVhNDIzMmVmYjFiZGYyNzdhZTI2Y2Q3ZTM5YQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XVEYvd3RmL3VybC9hcGkvVVJMU3RyaW5nLmNwcApAQCAtMCwwICsxLDQyIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIlVSTFN0cmluZy5oIgorCisjaWYgVVNFKFdURlVSTCkKKworbmFt
ZXNwYWNlIFdURiB7CisKKyNpZm5kZWYgTkRFQlVHCit2b2lkIFVSTFN0cmluZzo6cHJpbnQoKSBj
b25zdAoreworICAgIG1fc3RyaW5nLnNob3coKTsKK30KKyNlbmRpZiAvLyBuZGVmIE5ERUJVRwor
Cit9CisKKyNlbmRpZiAvLyBVU0UoV1RGVVJMKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
dXJsL2FwaS9VUkxTdHJpbmcuaCBiL1NvdXJjZS9XVEYvd3RmL3VybC9hcGkvVVJMU3RyaW5nLmgK
aW5kZXggOWFlMzBkN2E5N2M0MTJmZTFmM2YxNGNkNzA4Y2QwODFkY2IxZDg4Ni4uNzBlZjIxOTEw
ZTJhZGQ0YzMwM2ZiZjg0YzBmZDI3MGM5MzUxY2Y4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvdXJsL2FwaS9VUkxTdHJpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi91cmwvYXBpL1VSTFN0
cmluZy5oCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUs
IEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTM5LDYgKzQwLDEwIEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IFN0cmluZyYgc3RyaW5nKCkg
Y29uc3QgeyByZXR1cm4gbV9zdHJpbmc7fQogCisjaWZuZGVmIE5ERUJVRworICAgIFdURl9FWFBP
UlRfUFJJVkFURSB2b2lkIHByaW50KCkgY29uc3Q7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBm
cmllbmQgY2xhc3MgUGFyc2VkVVJMOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi91cmwv
c3JjL1VSTFBhcnNlci5oIGIvU291cmNlL1dURi93dGYvdXJsL3NyYy9VUkxQYXJzZXIuaAppbmRl
eCAwMWY3MzhjZjM5Yzg0NGQ5YzcxZWM3YjVkNmQxMDEyNTkwMmE4Y2UzLi4yYjRkNTk4YTMxOWEz
Y2EyN2Y4NjU5NGJlN2MwYjhmYjFhMDcxOGI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi91
cmwvc3JjL1VSTFBhcnNlci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3VybC9zcmMvVVJMUGFyc2Vy
LmgKQEAgLTEsNiArMSw3IEBACiAvKiBCYXNlZCBvbiBuc1VSTFBhcnNlcnMuY2MgZnJvbSBNb3pp
bGxhCiAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKiBDb3B5cmln
aHQgKEMpIDE5OTggTmV0c2NhcGUgQ29tbXVuaWNhdGlvbnMgQ29ycG9yYXRpb24uCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIE90
aGVyIGNvbnRyaWJ1dG9yczoKICAqICAgRGFyaW4gRmlzaGVyIChvcmlnaW5hbCBhdXRob3IpCkBA
IC0zOSwxMiArNDAsMTMgQEAKIAogI2luY2x1ZGUgIlVSTENvbXBvbmVudC5oIgogI2luY2x1ZGUg
IlVSTFNlZ21lbnRzLmgiCisjaW5jbHVkZSAiVW51c2VkUGFyYW0uaCIKIAogI2lmIFVTRShXVEZV
UkwpCiAKIG5hbWVzcGFjZSBXVEYgewogCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBl
PgordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZSwgdHlwZW5hbWUgQmFzZUNoYXJhY3Rl
clR5cGUgPSBDaGFyYWN0ZXJUeXBlPgogY2xhc3MgVVJMUGFyc2VyIHsKIHB1YmxpYzoKICAgICBl
bnVtIFNwZWNpYWxQb3J0IHsKQEAgLTE2OCw2ICsxNzAsMjEgQEAgcHVibGljOgogICAgICAgICBw
YXJzZUFmdGVyU2NoZW1lKHNwZWMsIHNwZWNMZW5ndGgsIGFmdGVyU2NoZW1lLCBwYXJzZWQpOwog
ICAgIH0KIAorICAgIC8vIFRoZSBtYWluIHBhcnNpbmcgZnVuY3Rpb24gZm9yIChtYXkgYmUpIHJl
bGF0aXZlIFVSTHMuCisgICAgc3RhdGljIHZvaWQgcGFyc2VVUkxXaXRoQmFzZShjb25zdCBDaGFy
YWN0ZXJUeXBlKiBzcGVjLCBpbnQgc3BlY0xlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IEJhc2VDaGFyYWN0ZXJUeXBlKiBiYXNlU3RyaW5nU3BlYywgaW50IGJh
c2VTdHJpbmdTcGVjTGVuZ3RoLCBjb25zdCBVUkxTZWdtZW50cyYgYmFzZVN0cmluZ1NlZ21lbnRz
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVVJMQnVmZmVyPGNoYXI+Jm91dHB1
dEJ1ZmZlciwgVVJMU2VnbWVudHMmIHBhcnNlZCkKKyAgICB7CisgICAgICAgIFVOVVNFRF9QQVJB
TShiYXNlU3RyaW5nU3BlYyk7CisgICAgICAgIFVOVVNFRF9QQVJBTShiYXNlU3RyaW5nU3BlY0xl
bmd0aCk7CisgICAgICAgIFVOVVNFRF9QQVJBTShiYXNlU3RyaW5nU2VnbWVudHMpOworICAgICAg
ICBVTlVTRURfUEFSQU0oc3BlYyk7CisgICAgICAgIFVOVVNFRF9QQVJBTShzcGVjTGVuZ3RoKTsK
KyAgICAgICAgVU5VU0VEX1BBUkFNKG91dHB1dEJ1ZmZlcik7CisgICAgICAgIFVOVVNFRF9QQVJB
TShwYXJzZWQpOworICAgICAgICAvLyBGSVhNRTogVG8gaW1wbGVtZW50LgorICAgIH0KKwogICAg
IHN0YXRpYyB2b2lkIHBhcnNlUGF0aChjb25zdCBDaGFyYWN0ZXJUeXBlKiBzcGVjLCBjb25zdCBV
UkxDb21wb25lbnQmIHBhdGgsIFVSTENvbXBvbmVudCYgZmlsZXBhdGgsIFVSTENvbXBvbmVudCYg
cXVlcnksIFVSTENvbXBvbmVudCYgZnJhZ21lbnQpCiAgICAgewogICAgICAgICAvLyBwYXRoID0g
Wy9dPHNlZ21lbnQxPi88c2VnbWVudDI+LzwuLi4+LzxzZWdtZW50Tj47PHBhcmFtPj88cXVlcnk+
IzxmcmFnbWVudD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3VybC9zcmMvVVJMU2VnbWVu
dHMuY3BwIGIvU291cmNlL1dURi93dGYvdXJsL3NyYy9VUkxTZWdtZW50cy5jcHAKaW5kZXggMTgy
YjBkNDViMzk5ZWQxYjMwYTQxZjA1MWNkOTdkMjc0MTliYWY1Yi4uMTU4ZTVkOWQ0OGNlY2I2MjU1
MDYzNzgzMDE1NGM5Mjc1ZDk1MGY4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdXJsL3Ny
Yy9VUkxTZWdtZW50cy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdXJsL3NyYy9VUkxTZWdtZW50
cy5jcHAKQEAgLTEsNiArMSw3IEBACiAvKiBCYXNlZCBvbiBuc1VSTFBhcnNlcnMuY2MgZnJvbSBN
b3ppbGxhCiAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKiBDb3B5
cmlnaHQgKEMpIDE5OTggTmV0c2NhcGUgQ29tbXVuaWNhdGlvbnMgQ29ycG9yYXRpb24uCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IE90aGVyIGNvbnRyaWJ1dG9yczoKICAqICAgRGFyaW4gRmlzaGVyIChvcmlnaW5hbCBhdXRob3Ip
CkBAIC00NSwxMCArNDYsMTAgQEAgaW50IFVSTFNlZ21lbnRzOjpsZW5ndGgoKSBjb25zdAogewog
ICAgIGlmIChmcmFnbWVudC5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBmcmFnbWVudC5lbmQo
KTsKLSAgICByZXR1cm4gY2hhcmFjdGVyc0JlZm9yZShGcmFnbWVudCwgZmFsc2UpOworICAgIHJl
dHVybiBjaGFyYWN0ZXJzQmVmb3JlKEZyYWdtZW50LCBEZWxpbWl0ZXJFeGNsdWRlZCk7CiB9CiAK
LWludCBVUkxTZWdtZW50czo6Y2hhcmFjdGVyc0JlZm9yZShDb21wb25lbnRUeXBlIHR5cGUsIGJv
b2wgaW5jbHVkZURlbGltaXRlcikgY29uc3QKK2ludCBVUkxTZWdtZW50czo6Y2hhcmFjdGVyc0Jl
Zm9yZShDb21wb25lbnRUeXBlIHR5cGUsIERlbGltaXRlckluY2x1c2lvbiBpbmNsdWRlRGVsaW1p
dGVyKSBjb25zdAogewogICAgIGlmICh0eXBlID09IFNjaGVtZSkKICAgICAgICAgcmV0dXJuIHNj
aGVtZS5iZWdpbigpOwpAQCAtNzYsNyArNzcsNyBAQCBpbnQgVVJMU2VnbWVudHM6OmNoYXJhY3Rl
cnNCZWZvcmUoQ29tcG9uZW50VHlwZSB0eXBlLCBib29sIGluY2x1ZGVEZWxpbWl0ZXIpIGNvbgog
ICAgIH0KIAogICAgIGlmIChwb3J0LmlzVmFsaWQoKSkgewotICAgICAgICBpZiAodHlwZSA8IFBv
cnQgfHwgKHR5cGUgPT0gUG9ydCAmJiBpbmNsdWRlRGVsaW1pdGVyKSkKKyAgICAgICAgaWYgKHR5
cGUgPCBQb3J0IHx8ICh0eXBlID09IFBvcnQgJiYgaW5jbHVkZURlbGltaXRlciA9PSBEZWxpbWl0
ZXJJbmNsdWRlZCkpCiAgICAgICAgICAgICByZXR1cm4gcG9ydC5iZWdpbigpIC0gMTsgLy8gQmFj
ayBvdmVyIGRlbGltaXRlci4KICAgICAgICAgaWYgKHR5cGUgPT0gUG9ydCkKICAgICAgICAgICAg
IHJldHVybiBwb3J0LmJlZ2luKCk7IC8vIERvbid0IHdhbnQgZGVsaW1pdGVyIGNvdW50ZWQuCkBA
IC05MCw3ICs5MSw3IEBAIGludCBVUkxTZWdtZW50czo6Y2hhcmFjdGVyc0JlZm9yZShDb21wb25l
bnRUeXBlIHR5cGUsIGJvb2wgaW5jbHVkZURlbGltaXRlcikgY29uCiAgICAgfQogCiAgICAgaWYg
KHF1ZXJ5LmlzVmFsaWQoKSkgewotICAgICAgICBpZiAodHlwZSA8IFF1ZXJ5IHx8ICh0eXBlID09
IFF1ZXJ5ICYmIGluY2x1ZGVEZWxpbWl0ZXIpKQorICAgICAgICBpZiAodHlwZSA8IFF1ZXJ5IHx8
ICh0eXBlID09IFF1ZXJ5ICYmIGluY2x1ZGVEZWxpbWl0ZXIgPT0gRGVsaW1pdGVySW5jbHVkZWQp
KQogICAgICAgICAgICAgcmV0dXJuIHF1ZXJ5LmJlZ2luKCkgLSAxOyAvLyBCYWNrIG92ZXIgZGVs
aW1pdGVyLgogICAgICAgICBpZiAodHlwZSA9PSBRdWVyeSkKICAgICAgICAgICAgIHJldHVybiBx
dWVyeS5iZWdpbigpOyAvLyBEb24ndCB3YW50IGRlbGltaXRlciBjb3VudGVkLgpAQCAtOTgsNyAr
OTksNyBAQCBpbnQgVVJMU2VnbWVudHM6OmNoYXJhY3RlcnNCZWZvcmUoQ29tcG9uZW50VHlwZSB0
eXBlLCBib29sIGluY2x1ZGVEZWxpbWl0ZXIpIGNvbgogICAgIH0KIAogICAgIGlmIChmcmFnbWVu
dC5pc1ZhbGlkKCkpIHsKLSAgICAgICAgaWYgKHR5cGUgPT0gRnJhZ21lbnQgJiYgIWluY2x1ZGVE
ZWxpbWl0ZXIpCisgICAgICAgIGlmICh0eXBlID09IEZyYWdtZW50ICYmIGluY2x1ZGVEZWxpbWl0
ZXIgPT0gRGVsaW1pdGVyRXhjbHVkZWQpCiAgICAgICAgICAgICByZXR1cm4gZnJhZ21lbnQuYmVn
aW4oKTsgLy8gQmFjayBvdmVyIGRlbGltaXRlci4KIAogICAgICAgICAvLyBXaGVuIHRoZXJlIGlz
IGEgZnJhZ21lbnQgYW5kIHdlIGdldCBoZXJlLCB0aGUgY29tcG9uZW50IHdlIHdhbnRlZCB3YXMg
YmVmb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi91cmwvc3JjL1VSTFNlZ21lbnRzLmgg
Yi9Tb3VyY2UvV1RGL3d0Zi91cmwvc3JjL1VSTFNlZ21lbnRzLmgKaW5kZXggNjRkMDYxOWI4Njli
M2Q5YTY2ZjNjOWI4ZDQyYzllNzQyZGU2ZjAwOS4uOWYxNzIyOGQ2YzA2YjBkNWNkMjAxMDYzMjli
M2FmZDI4YTQwOWFkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdXJsL3NyYy9VUkxTZWdt
ZW50cy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3VybC9zcmMvVVJMU2VnbWVudHMuaApAQCAtMSw0
ICsxLDUgQEAKIC8vIENvcHlyaWdodCAyMDA3LCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorLy8gQ29weXJpZ2h0IDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
Ly8KIC8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtNTEsNiArNTIsMTAgQEAgcHVi
bGljOgogICAgICAgICBRdWVyeSwKICAgICAgICAgRnJhZ21lbnQsCiAgICAgfTsKKyAgICBlbnVt
IERlbGltaXRlckluY2x1c2lvbiB7CisgICAgICAgIERlbGltaXRlckV4Y2x1ZGVkLAorICAgICAg
ICBEZWxpbWl0ZXJJbmNsdWRlZAorICAgIH07CiAKICAgICBVUkxTZWdtZW50cygpIHsgfQogCkBA
IC04OCw3ICs5Myw3IEBAIHB1YmxpYzoKICAgICAvLyAgICAgICpRdWVyeTogMTQgICAgICAgICAg
ICAgICAgICAgMTUgPC0KICAgICAvLyAgICAgICAgKkZyYWdtZW50OiAyMCAgICAgICAgICAgICAg
ICAgICAyMAogICAgIC8vCi0gICAgaW50IGNoYXJhY3RlcnNCZWZvcmUoQ29tcG9uZW50VHlwZSwg
Ym9vbCBpbmNsdWRlRGVsaW1pdGVyKSBjb25zdDsKKyAgICBpbnQgY2hhcmFjdGVyc0JlZm9yZShD
b21wb25lbnRUeXBlLCBEZWxpbWl0ZXJJbmNsdXNpb24pIGNvbnN0OwogCiAgICAgLy8gRWFjaCBj
b21wb25lbnQgZXhjbHVkZXMgdGhlIHJlbGF0ZWQgZGVsaW1pdGVycyBhbmQgaGFzIGEgbGVuZ3Ro
IG9mIC0xCiAgICAgLy8gaWYgdGhhdCBjb21wb25lbnQgaXMgYWJzZW50IGJ1dCAwIGlmIHRoZSBj
b21wb25lbnQgZXhpc3RzIGJ1dCBpcyBlbXB0eS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0tVUkxXVEZVUkwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS1VSTFdU
RlVSTC5jcHAKaW5kZXggNGZmMTNkOTQ4YTg3YzVjZTIzZTIzZjEwZmRjNGQxODVjNGZhMjA4Yi4u
NjIzNDQxOWNiNmY2ODA5NmIwNWU5YmYwOWE2ZmQ3ZDFlZmExOTc3OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vS1VSTFdURlVSTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vS1VSTFdURlVSTC5jcHAKQEAgLTI2LDYgKzI2LDggQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJLVVJMLmgiCiAKKyNpbmNsdWRlIDx3dGYvRGF0YUxvZy5oPgorCiAj
aWYgVVNFKFdURlVSTCkKIAogdXNpbmcgbmFtZXNwYWNlIFdURjsKQEAgLTUwLDEyICs1MiwyMyBA
QCBLVVJMOjpLVVJMKFBhcnNlZFVSTFN0cmluZ1RhZywgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcp
CiAgICAgOiBtX3VybEltcGwoYWRvcHRSZWYobmV3IEtVUkxXVEZVUkxJbXBsKCkpKQogewogICAg
IG1fdXJsSW1wbC0+bV9wYXJzZWRVUkwgPSBQYXJzZWRVUkwodXJsU3RyaW5nKTsKLSAgICBBU1NF
UlQobV91cmxJbXBsLT5tX3BhcnNlZFVSTC5pc1ZhbGlkKCkpOworCisgICAgLy8gRklYTUU6IEZy
YW1lOjppbml0KCkgYWN0dWFsbHkgY3JlYXRlIGVtcHR5IFVSTCwgaW52ZXN0aWdhdGUgd2h5IG5v
dCBqdXN0IG51bGwgVVJMLgorICAgIC8vIEFTU0VSVChtX3VybEltcGwtPm1fcGFyc2VkVVJMLmlz
VmFsaWQoKSk7CiB9CiAKLUtVUkw6OktVUkwoY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYpCitL
VVJMOjpLVVJMKGNvbnN0IEtVUkwmIGJhc2VVUkwsIGNvbnN0IFN0cmluZyYgcmVsYXRpdmUpCisg
ICAgOiBtX3VybEltcGwoYWRvcHRSZWYobmV3IEtVUkxXVEZVUkxJbXBsKCkpKQogewotICAgIC8v
IEZJWE1FOiBBZGQgV1RGVVJMIEltcGxlbWVudGF0aW9uLgorICAgIC8vIEZJWE1FOiB0aGUgY2Fz
ZSB3aXRoIGEgbnVsbCBiYXNlVVJMIGlzIGNvbW1vbi4gV2Ugc2hvdWxkIGhhdmUgYSBzZXBhcmF0
ZSBjb25zdHJ1Y3RvciBpbiBLVVJMLgorICAgIC8vIEZJWE1FOiB0aGUgY2FzZSBvZiBhbiBlbXB0
eSBCYXNlIGlzIHVzZWxlc3MsIHdlIHNob3VsZCBnZXQgcmlkIG9mIGVtcHR5IFVSTHMuCisgICAg
aWYgKGJhc2VVUkwuaXNFbXB0eSgpKQorICAgICAgICBtX3VybEltcGwtPm1fcGFyc2VkVVJMID0g
UGFyc2VkVVJMKHJlbGF0aXZlKTsKKyAgICBlbHNlCisgICAgICAgIG1fdXJsSW1wbC0+bV9wYXJz
ZWRVUkwgPSBQYXJzZWRVUkwoYmFzZVVSTC5tX3VybEltcGwtPm1fcGFyc2VkVVJMLCByZWxhdGl2
ZSk7CisKKyAgICBpZiAoIW1fdXJsSW1wbC0+bV9wYXJzZWRVUkwuaXNWYWxpZCgpKQorICAgICAg
ICBtX3VybEltcGwtPm1faW52YWxpZFVybFN0cmluZyA9IHJlbGF0aXZlOwogfQogCiBLVVJMOjpL
VVJMKGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBUZXh0RW5jb2RpbmcmKQpAQCAt
OTIsNyArMTA1LDcgQEAgYm9vbCBLVVJMOjppc1ZhbGlkKCkgY29uc3QKICAgICBib29sIGlzUGFy
c2VkVVJMVmFsaWQgPSBtX3VybEltcGwtPm1fcGFyc2VkVVJMLmlzVmFsaWQoKTsKICNpZm5kZWYg
TkRFQlVHCiAgICAgaWYgKGlzUGFyc2VkVVJMVmFsaWQpCi0gICAgICAgIEFTU0VSVF9XSVRIX01F
U1NBR0UobV91cmxJbXBsLT5tX2ludmFsaWRVcmxTdHJpbmcuaXNOdWxsKCksICJBIHZhbGlkIFVS
TCBzaG91bGQgbmV2ZXIgaGF2ZSBhIHZhbGlkIGludmFsaWRVcmxTdHJpbmcuIik7CisgICAgICAg
IEFTU0VSVF9XSVRIX01FU1NBR0UobV91cmxJbXBsLT5tX2ludmFsaWRVcmxTdHJpbmcuaXNOdWxs
KCksICJBIHZhbGlkIFVSTCBtdXN0IGhhdmUgYSBudWxsIGludmFsaWRVcmxTdHJpbmcuIik7CiAj
ZW5kaWYKICAgICByZXR1cm4gaXNQYXJzZWRVUkxWYWxpZDsKIH0KQEAgLTEwNCwyNCArMTE3LDI3
IEBAIGNvbnN0IFN0cmluZyAmS1VSTDo6c3RyaW5nKCkgY29uc3QKICAgICAgICAgcmV0dXJuIG51
bGxTdHJpbmc7CiAgICAgfQogCi0gICAgaWYgKCFtX3VybEltcGwtPm1faW52YWxpZFVybFN0cmlu
Zy5pc051bGwoKSkgewotICAgICAgICBBU1NFUlQoIWlzVmFsaWQoKSk7Ci0gICAgICAgIHJldHVy
biBtX3VybEltcGwtPm1faW52YWxpZFVybFN0cmluZzsKLSAgICB9CisgICAgaWYgKGlzVmFsaWQo
KSkKKyAgICAgICAgcmV0dXJuIG1fdXJsSW1wbC0+bV9wYXJzZWRVUkwuc3BlYygpLnN0cmluZygp
OwogCi0gICAgQVNTRVJUKGlzVmFsaWQoKSk7Ci0gICAgcmV0dXJuIG1fdXJsSW1wbC0+bV9wYXJz
ZWRVUkwuc3BlYygpLnN0cmluZygpOworICAgIHJldHVybiBtX3VybEltcGwtPm1faW52YWxpZFVy
bFN0cmluZzsKIH0KIAogU3RyaW5nIEtVUkw6OnByb3RvY29sKCkgY29uc3QKIHsKLSAgICBBU1NF
UlQoaXNWYWxpZCgpKTsKKyAgICAvLyBTa2lwIHRoZSBBU1NFUlQgZm9yIG5vdywgU3ViZnJhbWVM
b2FkZXI6OnJlcXVlc3RGcmFtZSgpIGRvZXMgbm90IGNoZWNrIHRoZSB2YWxpZGl0eSBvZiBVUkxz
LgorICAgIC8vIEFTU0VSVChpc1ZhbGlkKCkpOworICAgIGlmICghaXNWYWxpZCgpKQorICAgICAg
ICByZXR1cm4gU3RyaW5nKCk7CiAgICAgcmV0dXJuIG1fdXJsSW1wbC0+bV9wYXJzZWRVUkwuc2No
ZW1lKCk7CiB9CiAKIFN0cmluZyBLVVJMOjpob3N0KCkgY29uc3QKIHsKLSAgICBBU1NFUlQoaXNW
YWxpZCgpKTsKKyAgICAvLyBTa2lwIHRoZSBBU1NFUlQgZm9yIG5vdywgSFRNTEFuY2hvckVsZW1l
bnQ6OnBhcnNlQXR0cmlidXRlKCkgZG9lcyBub3QgY2hlY2sgdGhlIHZhbGlkaXR5IG9mIFVSTHMu
CisgICAgLy8gQVNTRVJUKGlzVmFsaWQoKSk7CisgICAgaWYgKCFpc1ZhbGlkKCkpCisgICAgICAg
IHJldHVybiBTdHJpbmcoKTsKICAgICByZXR1cm4gbV91cmxJbXBsLT5tX3BhcnNlZFVSTC5ob3N0
KCk7CiB9CiAKQEAgLTEzNiw2ICsxNTIsOSBAQCB1bnNpZ25lZCBzaG9ydCBLVVJMOjpwb3J0KCkg
Y29uc3QKICAgICBBU1NFUlQoaXNWYWxpZCgpKTsKIAogICAgIFN0cmluZyBwb3J0U3RyaW5nID0g
bV91cmxJbXBsLT5tX3BhcnNlZFVSTC5wb3J0KCk7CisgICAgaWYgKHBvcnRTdHJpbmcuaXNOdWxs
KCkpCisgICAgICAgIHJldHVybiAwOworCiAgICAgYm9vbCBvayA9IGZhbHNlOwogICAgIHVuc2ln
bmVkIHBvcnRWYWx1ZSA9IHBvcnRTdHJpbmcudG9VSW50U3RyaWN0KCZvayk7CiAKQEAgLTE5MCwx
MyArMjA5LDIwIEBAIFN0cmluZyBLVVJMOjpxdWVyeSgpIGNvbnN0CiAKIGJvb2wgS1VSTDo6aGFz
RnJhZ21lbnRJZGVudGlmaWVyKCkgY29uc3QKIHsKLSAgICBBU1NFUlQoaXNWYWxpZCgpKTsKLSAg
ICByZXR1cm4gIWZyYWdtZW50SWRlbnRpZmllcigpLmlzTnVsbCgpOworICAgIC8vIFNraXAgdGhl
IEFTU0VSVCBmb3Igbm93LCBTY3JpcHRFbGVtZW50OjpyZXF1ZXN0U2NyaXB0KCkgY3JlYXRlIHJl
cXVlc3RzIGZvciBpbnZhbGlkIFVSTHMuCisgICAgLy8gQVNTRVJUKGlzVmFsaWQoKSk7CisgICAg
aWYgKCFpc1ZhbGlkKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBtX3Vy
bEltcGwtPm1fcGFyc2VkVVJMLmhhc0ZyYWdtZW50KCk7CiB9CiAKIFN0cmluZyBLVVJMOjpmcmFn
bWVudElkZW50aWZpZXIoKSBjb25zdAogewotICAgIEFTU0VSVChpc1ZhbGlkKCkpOworICAgIC8v
IFNraXAgdGhlIEFTU0VSVCBmb3Igbm93LCBTY3JpcHRFbGVtZW50OjpyZXF1ZXN0U2NyaXB0KCkg
Y3JlYXRlIHJlcXVlc3RzIGZvciBpbnZhbGlkIFVSTHMuCisgICAgLy8gQVNTRVJUKGlzVmFsaWQo
KSk7CisgICAgaWYgKCFpc1ZhbGlkKCkpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICBy
ZXR1cm4gbV91cmxJbXBsLT5tX3BhcnNlZFVSTC5mcmFnbWVudCgpOwogfQogCkBAIC0yMTUsNyAr
MjQxLDggQEAgU3RyaW5nIEtVUkw6OmZpbGVTeXN0ZW1QYXRoKCkgY29uc3QKIAogYm9vbCBLVVJM
Ojpwcm90b2NvbElzKGNvbnN0IGNoYXIqIHRlc3RQcm90b2NvbCkgY29uc3QKIHsKLSAgICBBU1NF
UlQoaXNWYWxpZCgpKTsKKyAgICBpZiAoIWlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIHJldHVybiBXZWJDb3JlOjpwcm90b2NvbElzKHByb3RvY29sKCksIHRlc3RQcm90b2Nv
bCk7CiB9CiAKQEAgLTI4Nyw4ICszMTQsMTEgQEAgdm9pZCBLVVJMOjpzZXRGcmFnbWVudElkZW50
aWZpZXIoY29uc3QgU3RyaW5nJikKIAogdm9pZCBLVVJMOjpyZW1vdmVGcmFnbWVudElkZW50aWZp
ZXIoKQogeworICAgIGlmICghaGFzRnJhZ21lbnRJZGVudGlmaWVyKCkpCisgICAgICAgIHJldHVy
bjsKKwogICAgIGRldGFjaChtX3VybEltcGwpOwotICAgIC8vIEZJWE1FOiBBZGQgV1RGVVJMIElt
cGxlbWVudGF0aW9uLgorICAgIG1fdXJsSW1wbC0+bV9wYXJzZWRVUkwgPSBtX3VybEltcGwtPm1f
cGFyc2VkVVJMLndpdGhvdXRGcmFnbWVudCgpOwogfQogCiB1bnNpZ25lZCBLVVJMOjpob3N0U3Rh
cnQoKSBjb25zdApAQCAtMzIxLDYgKzM1MSwyNCBAQCB1bnNpZ25lZCBLVVJMOjpwYXRoQWZ0ZXJM
YXN0U2xhc2goKSBjb25zdAogICAgIHJldHVybiAwOwogfQogCisjaWZuZGVmIE5ERUJVRwordm9p
ZCBLVVJMOjpwcmludCgpIGNvbnN0Cit7CisgICAgaWYgKGlzVmFsaWQoKSkKKyAgICAgICAgbV91
cmxJbXBsLT5tX3BhcnNlZFVSTC5wcmludCgpOworICAgIGVsc2UgeworICAgICAgICBpZiAoaXNO
dWxsKCkpCisgICAgICAgICAgICBkYXRhTG9nKCJOdWxsIEtVUkwiKTsKKyAgICAgICAgZWxzZSBp
ZiAoaXNFbXB0eSgpKQorICAgICAgICAgICAgZGF0YUxvZygiRW1wdHkgS1VSTCIpOworICAgICAg
ICBlbHNlIHsKKyAgICAgICAgICAgIGRhdGFMb2coIkludmFsaWQgS1VSTCBmcm9tIHN0cmluZyA9
Iik7CisgICAgICAgICAgICBtX3VybEltcGwtPm1faW52YWxpZFVybFN0cmluZy5zaG93KCk7Cisg
ICAgICAgIH0KKyAgICB9Cit9CisjZW5kaWYKKwogdm9pZCBLVVJMOjppbnZhbGlkYXRlKCkKIHsK
ICAgICBtX3VybEltcGwgPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY2YvS1VSTENGTmV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tVUkxD
Rk5ldC5jcHAKaW5kZXggZmQ4MDg0YjkwZGRlYjM0Y2M3NmM3NzZhYTY4YmQ3MmVkMTAxMDA4NS4u
NDU4ZDk4N2YxOWUxNTQxZmU3MDdlYjg4YjI0NjJkMDg5MTNhNzE1MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS1VSTENGTmV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jZi9LVVJMQ0ZOZXQuY3BwCkBAIC0zMyw4ICszMyw2IEBAIHVzaW5nIG5hbWVz
cGFjZSBzdGQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotI2lmICFVU0UoV1RGVVJMKQotCiB0
eXBlZGVmIFZlY3RvcjxjaGFyLCA1MTI+IENoYXJCdWZmZXI7CiAKIENGVVJMUmVmIGNyZWF0ZUNG
VVJMRnJvbUJ1ZmZlcihjb25zdCBDaGFyQnVmZmVyJik7CkBAIC00Miw3ICs0MCw3IEBAIENGVVJM
UmVmIGNyZWF0ZUNGVVJMRnJvbUJ1ZmZlcihjb25zdCBDaGFyQnVmZmVyJik7CiBLVVJMOjpLVVJM
KENGVVJMUmVmIHVybCkKIHsKICAgICBpZiAoIXVybCkgewotICAgICAgICBwYXJzZSgwKTsKKyAg
ICAgICAgaW52YWxpZGF0ZSgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC01MSw3ICs0
OSwxMyBAQCBLVVJMOjpLVVJMKENGVVJMUmVmIHVybCkKICAgICBjaGFyKiBieXRlcyA9ICZidWZm
ZXJbMF07CiAgICAgQ0ZVUkxHZXRCeXRlcyh1cmwsIHJlaW50ZXJwcmV0X2Nhc3Q8VUludDgqPihi
eXRlcyksIGJ5dGVzTGVuZ3RoKTsKICAgICBieXRlc1tieXRlc0xlbmd0aF0gPSAnXDAnOworI2lm
ICFVU0UoV1RGVVJMKQogICAgIHBhcnNlKGJ5dGVzKTsKKyNlbHNlCisgICAgLy8gRklYTUU6IEFk
ZCBXVEZVUkwgSW1wbGVtZW50YXRpb24uCisgICAgVU5VU0VEX1BBUkFNKHVybCk7CisgICAgaW52
YWxpZGF0ZSgpOworI2VuZGlmIC8vIFVTRShXVEZVUkwpCiB9CiAKIENGVVJMUmVmIGNyZWF0ZUNG
VVJMRnJvbUJ1ZmZlcihjb25zdCBDaGFyQnVmZmVyJiBidWZmZXIpCkBAIC02OSwxNiArNzMsMjEg
QEAgQ0ZVUkxSZWYgY3JlYXRlQ0ZVUkxGcm9tQnVmZmVyKGNvbnN0IENoYXJCdWZmZXImIGJ1ZmZl
cikKICNpZiAhUExBVEZPUk0oTUFDKSAmJiAhKFBMQVRGT1JNKFFUKSAmJiBVU0UoUVRLSVQpKQog
Q0ZVUkxSZWYgS1VSTDo6Y3JlYXRlQ0ZVUkwoKSBjb25zdAogeworI2lmICFVU0UoV1RGVVJMKQog
ICAgIC8vIEZJWE1FOiBXaGF0IHNob3VsZCB0aGlzIHJldHVybiBmb3IgaW52YWxpZCBVUkxzPwog
ICAgIC8vIEN1cnJlbnRseSBpdCB0aHJvd3MgYXdheSB0aGUgaGlnaCBieXRlcyBvZiB0aGUgY2hh
cmFjdGVycyBpbiB0aGUgc3RyaW5nIGluIHRoYXQgY2FzZSwKICAgICAvLyB3aGljaCBpcyBjbGVh
cmx5IHdyb25nLgogICAgIENoYXJCdWZmZXIgYnVmZmVyOwogICAgIGNvcHlUb0J1ZmZlcihidWZm
ZXIpOwogICAgIHJldHVybiBjcmVhdGVDRlVSTEZyb21CdWZmZXIoYnVmZmVyKTsKKyNlbHNlIC8v
IFVTRShXVEZVUkwpCisgICAgLy8gRklYTUU6IEFkZCBXVEZVUkwgSW1wbGVtZW50YXRpb24uCisg
ICAgcmV0dXJuIDA7CisjZW5kaWYKIH0KICNlbmRpZgogCi0jaWYgIShQTEFURk9STShRVCkgJiYg
VVNFKFFUS0lUKSkKKyNpZiAhVVNFKFdURlVSTCkgJiYgIShQTEFURk9STShRVCkgJiYgVVNFKFFU
S0lUKSkKIFN0cmluZyBLVVJMOjpmaWxlU3lzdGVtUGF0aCgpIGNvbnN0CiB7CiAgICAgUmV0YWlu
UHRyPENGVVJMUmVmPiBjZlVSTChBZG9wdENGLCBjcmVhdGVDRlVSTCgpKTsKQEAgLTk0LDIwICsx
MDMsNCBAQCBTdHJpbmcgS1VSTDo6ZmlsZVN5c3RlbVBhdGgoKSBjb25zdAogfQogI2VuZGlmCiAK
LSNlbHNlIC8vIFVTRShXVEZVUkwpCi0KLUtVUkw6OktVUkwoQ0ZVUkxSZWYpCi17Ci0gICAgLy8g
RklYTUU6IEFkZCBXVEZVUkwgSW1wbGVtZW50YXRpb24uCi0gICAgaW52YWxpZGF0ZSgpOwotfQot
Ci1DRlVSTFJlZiBLVVJMOjpjcmVhdGVDRlVSTCgpIGNvbnN0Ci17Ci0gICAgLy8gRklYTUU6IEFk
ZCBXVEZVUkwgSW1wbGVtZW50YXRpb24uCi0gICAgcmV0dXJuIDA7Ci19Ci0KLSNlbmRpZiAvLyBV
U0UoV1RGVVJMKQotCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
S1VSTE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9LVVJMTWFjLm1tCmluZGV4
IGM2OWQ3YWNjZWY5M2U2NTk2MDMxNzJiMTA5ZTc4YjQ4Y2ZmZWJlOTUuLjllZmJlZTBkODdkZmYw
OTdiYzE4YjFkMzJjY2I2ZTNmNGY5ODk5NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9LVVJMTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9L
VVJMTWFjLm1tCkBAIC0yOSw5ICsyOSw5IEBACiAjaW1wb3J0ICJGb3VuZGF0aW9uRXh0cmFzLmgi
CiAjaW1wb3J0IDxDb3JlRm91bmRhdGlvbi9DRlVSTC5oPgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Cit1c2luZyBuYW1lc3BhY2UgV1RGOwogCi0jaWYgIVVTRShXVEZVUkwpCituYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIHR5cGVkZWYgVmVjdG9yPGNoYXIsIDUxMj4gQ2hhckJ1ZmZlcjsKIGV4dGVybiBD
RlVSTFJlZiBjcmVhdGVDRlVSTEZyb21CdWZmZXIoY29uc3QgQ2hhckJ1ZmZlciYgYnVmZmVyKTsK
QEAgLTM5LDcgKzM5LDcgQEAgZXh0ZXJuIENGVVJMUmVmIGNyZWF0ZUNGVVJMRnJvbUJ1ZmZlcihj
b25zdCBDaGFyQnVmZmVyJiBidWZmZXIpOwogS1VSTDo6S1VSTChOU1VSTCAqdXJsKQogewogICAg
IGlmICghdXJsKSB7Ci0gICAgICAgIHBhcnNlKDApOworICAgICAgICBpbnZhbGlkYXRlKCk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTQ4LDcgKzQ4LDE1IEBAIEtVUkw6OktVUkwoTlNV
UkwgKnVybCkKICAgICBjaGFyKiBieXRlcyA9ICZidWZmZXJbMF07CiAgICAgQ0ZVUkxHZXRCeXRl
cyhyZWludGVycHJldF9jYXN0PENGVVJMUmVmPih1cmwpLCByZWludGVycHJldF9jYXN0PFVJbnQ4
Kj4oYnl0ZXMpLCBieXRlc0xlbmd0aCk7CiAgICAgYnl0ZXNbYnl0ZXNMZW5ndGhdID0gJ1wwJzsK
KyNpZiAhVVNFKFdURlVSTCkKICAgICBwYXJzZShieXRlcyk7CisjZWxzZQorICAgIG1fdXJsSW1w
bCA9IGFkb3B0UmVmKG5ldyBLVVJMV1RGVVJMSW1wbCgpKTsKKyAgICBTdHJpbmcgdXJsU3RyaW5n
KGJ5dGVzLCBieXRlc0xlbmd0aCk7CisgICAgbV91cmxJbXBsLT5tX3BhcnNlZFVSTCA9IFBhcnNl
ZFVSTCh1cmxTdHJpbmcpOworICAgIGlmICghbV91cmxJbXBsLT5tX3BhcnNlZFVSTC5pc1ZhbGlk
KCkpCisgICAgICAgIG1fdXJsSW1wbC0+bV9pbnZhbGlkVXJsU3RyaW5nID0gdXJsU3RyaW5nOwor
I2VuZGlmIC8vIFVTRShXVEZVUkwpCiB9CiAKIEtVUkw6Om9wZXJhdG9yIE5TVVJMICooKSBjb25z
dApAQCAtNjcsMjQgKzc1LDE4IEBAIENGVVJMUmVmIEtVUkw6OmNyZWF0ZUNGVVJMKCkgY29uc3QK
ICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZVUkxSZWY+KFtbTlNVUkwgYWxsb2Nd
IGluaXRXaXRoU3RyaW5nOkAiIl0pOwogCiAgICAgQ2hhckJ1ZmZlciBidWZmZXI7CisjaWYgIVVT
RShXVEZVUkwpCiAgICAgY29weVRvQnVmZmVyKGJ1ZmZlcik7Ci0gICAgcmV0dXJuIGNyZWF0ZUNG
VVJMRnJvbUJ1ZmZlcihidWZmZXIpOwotfQotCiAjZWxzZQotCi1LVVJMOjpLVVJMKE5TVVJMICop
Ci17Ci0gICAgLy8gRklYTUU6IEFkZCBXVEZVUkwgSW1wbGVtZW50YXRpb24uCi0gICAgaW52YWxp
ZGF0ZSgpOworICAgIFN0cmluZyB1cmxTdHJpbmcgPSBzdHJpbmcoKTsKKyAgICBidWZmZXIucmVz
aXplKHVybFN0cmluZy5sZW5ndGgoKSk7CisgICAgc2l6ZV90IGxlbmd0aCA9IHVybFN0cmluZy5s
ZW5ndGgoKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKQorICAgICAg
ICBidWZmZXJbaV0gPSBzdGF0aWNfY2FzdDxjaGFyPih1cmxTdHJpbmdbaV0pOworI2VuZGlmCisg
ICAgcmV0dXJuIGNyZWF0ZUNGVVJMRnJvbUJ1ZmZlcihidWZmZXIpOwogfQogCi1LVVJMOjpvcGVy
YXRvciBOU1VSTCAqKCkgY29uc3QKLXsKLSAgICAvLyBGSVhNRTogQWRkIFdURlVSTCBJbXBsZW1l
bnRhdGlvbi4KLSAgICByZXR1cm4gbmlsOwotfQogCi0jZW5kaWYKIAogfQo=
</data>
<flag name="review"
          id="154094"
          type_id="1"
          status="+"
          setter="abarth"
    />
          </attachment>
      

    </bug>

</bugzilla>