<?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>137751</bug_id>
          
          <creation_ts>2014-10-15 13:00:14 -0700</creation_ts>
          <short_desc>Use a single allocation for the Arguments object</short_desc>
          <delta_ts>2014-10-16 15:02:17 -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>New Bugs</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="Oliver Hunt">oliver</reporter>
          <assigned_to name="Oliver Hunt">oliver</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1041930</commentid>
    <comment_count>0</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2014-10-15 13:00:14 -0700</bug_when>
    <thetext>Perform Arguments object allocation inline</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1041932</commentid>
    <comment_count>1</comment_count>
      <attachid>239887</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2014-10-15 13:03:17 -0700</bug_when>
    <thetext>Created attachment 239887
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1041935</commentid>
    <comment_count>2</comment_count>
      <attachid>239889</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2014-10-15 13:11:46 -0700</bug_when>
    <thetext>Created attachment 239889
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1042000</commentid>
    <comment_count>3</comment_count>
      <attachid>239905</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2014-10-15 16:18:45 -0700</bug_when>
    <thetext>Created attachment 239905
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1042195</commentid>
    <comment_count>4</comment_count>
      <attachid>239972</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2014-10-16 14:40:07 -0700</bug_when>
    <thetext>Created attachment 239972
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1042214</commentid>
    <comment_count>5</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2014-10-16 15:02:17 -0700</bug_when>
    <thetext>Committed r174795: &lt;http://trac.webkit.org/changeset/174795&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>239887</attachid>
            <date>2014-10-15 13:03:17 -0700</date>
            <delta_ts>2014-10-15 13:11:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137751-20141015130322.patch</filename>
            <type>text/plain</type>
            <size>20080</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc0NzAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
MTM5YmJlNmNlMTk1NmY2NjYzYTczNzQ0OWE4YjdlOTZmZGQ5OGU2Li4zNzBiYzY2YzE3ZmYxYTk5
MmUyZDYxN2UwOGJhYjAwMDE0MmE3YmRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MyBAQAorMjAxNC0xMC0xNSAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgor
CisgICAgICAgIFBlcmZvcm0gQXJndW1lbnRzIG9iamVjdCBhbGxvY2F0aW9uIGlubGluZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3NzUxCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBt
YWtlcyB0aGUgREZHIGVtaXQgQXJndW1lbnRzIG9iamVjdCBjcmVhdGlvbiBpbmxpbmUuCisgICAg
ICAgIFRvIGRvIHRoaXMgaSd2ZSBhZGRlZCBhIG5ldyBlbWl0QWxsb2NhdGVWYXJpYWJsZVNpemVk
SlNPYmplY3QgZnVuY3Rpb24KKyAgICAgICAgdG8gdGhlIEpJVCB0aGF0IGRvZXMgdGhlIHdvcmsg
dG8gZmluZCB0aGUgY29ycmVjdCBoZWFwIGZvciBhIHZhcmlhYmxlCisgICAgICAgIHNpemVkIGFs
bG9jYXRpb24gYW5kIHRoZW4gYnVtcCB0aGF0IGFsbG9jYXRvci4KKworICAgICAgICAqIGRmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmVtaXRBbGxvY2F0ZUFyZ3VtZW50cyk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklU
Lmg6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRBbGxvY2F0ZVZhcmlh
YmxlU2l6ZWRKU09iamVjdCk6CisgICAgICAgICogaGVhcC9Db3B5VG9rZW4uaDoKKyAgICAgICAg
KiBoZWFwL0hlYXAuaDoKKyAgICAgICAgKEpTQzo6SGVhcDo6c3Vic3BhY2VGb3JPYmplY3RXaXRo
b3V0RGVzdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OkhlYXA6OnN1YnNwYWNlRm9yT2JqZWN0Tm9y
bWFsRGVzdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OkhlYXA6OnN1YnNwYWNlRm9yT2JqZWN0c1dp
dGhJbW1vcnRhbFN0cnVjdHVyZSk6CisgICAgICAgICogaGVhcC9NYXJrZWRTcGFjZS5oOgorICAg
ICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6c3Vic3BhY2VGb3JPYmplY3RzV2l0aE5vcm1hbERlc3Ry
dWN0b3IpOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6c3Vic3BhY2VGb3JPYmplY3RzV2l0
aEltbW9ydGFsU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6OnN1YnNwYWNl
Rm9yT2JqZWN0c1dpdGhvdXREZXN0cnVjdG9yKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9TdGFj
a1Zpc2l0b3IuY3BwOgorICAgICAgICAoSlNDOjpTdGFja1Zpc2l0b3I6OkZyYW1lOjpjcmVhdGVB
cmd1bWVudHMpOgorICAgICAgICAqIHJ1bnRpbWUvQXJndW1lbnRzLmNwcDoKKyAgICAgICAgKEpT
Qzo6QXJndW1lbnRzOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKEpTQzo6QXJndW1lbnRzOjpj
b3B5QmFja2luZ1N0b3JlKToKKyAgICAgICAgKEpTQzo6QXJndW1lbnRzOjp0ZWFyT2ZmKToKKyAg
ICAgICAgKEpTQzo6QXJndW1lbnRzOjphbGxvY2F0ZVJlZ2lzdGVyQXJyYXkpOiBEZWxldGVkLgor
ICAgICAgICAqIHJ1bnRpbWUvQXJndW1lbnRzLmg6CisgICAgICAgIChKU0M6OkFyZ3VtZW50czo6
Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6QXJndW1lbnRzOjppc1Rvcm5PZmYpOgorICAgICAgICAo
SlNDOjpBcmd1bWVudHM6Om9mZnNldE9mUmVnaXN0ZXJBcnJheSk6CisgICAgICAgIChKU0M6OkFy
Z3VtZW50czo6cmVnaXN0ZXJBcnJheVNpemVJbkJ5dGVzKToKKyAgICAgICAgKEpTQzo6QXJndW1l
bnRzOjpyZWdpc3RlckFycmF5KToKKyAgICAgICAgKEpTQzo6QXJndW1lbnRzOjphbGxvY2F0aW9u
U2l6ZSk6IERlbGV0ZWQuCisKIDIwMTQtMTAtMTQgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBh
cHBsZS5jb20+CiAKICAgICAgICAgW1dpbl0gVW5yZXZpZXdlZCBnYXJkZW5pbmcuIElnbm9yZSBW
aXN1YWwgU3R1ZGlvICouc2RmIGZpbGVzLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmNwcAppbmRleCA0Y2Y2OWJmYjMwYzkzYWM0NzkzODE5MzBjYmZh
ZmY4ZTY3MDQwNjA3Li4yZWMyNWUwY2ViY2NmYzkwOWRhNDZhY2EzOTI1NmU4MDA1NWY4ODgzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApA
QCAtMTExLDcgKzExMSwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0QWxsb2NhdGVKU0Fy
cmF5KEdQUlJlZyByZXN1bHRHUFIsIFN0cnVjdHVyZSogc3RydWN0dXJlLAogdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6ZW1pdEFsbG9jYXRlQXJndW1lbnRzKEdQUlJlZyByZXN1bHRHUFIsIEdQUlJlZyBz
Y3JhdGNoR1BSMSwgR1BSUmVnIHNjcmF0Y2hHUFIyLCBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3Qm
IHNsb3dQYXRoKQogewogICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gbV9qaXQuZ3JhcGgoKS5n
bG9iYWxPYmplY3RGb3IobV9jdXJyZW50Tm9kZS0+b3JpZ2luLnNlbWFudGljKS0+YXJndW1lbnRz
U3RydWN0dXJlKCk7Ci0gICAgZW1pdEFsbG9jYXRlRGVzdHJ1Y3RpYmxlT2JqZWN0PEFyZ3VtZW50
cz4ocmVzdWx0R1BSLCBzdHJ1Y3R1cmUsIHNjcmF0Y2hHUFIxLCBzY3JhdGNoR1BSMiwgc2xvd1Bh
dGgpOworCisgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjpwYXlsb2FkRm9yKEpTU3RhY2s6
OkFyZ3VtZW50Q291bnQpLCBzY3JhdGNoR1BSMSk7CisgICAgbV9qaXQubXVsMzIoVHJ1c3RlZElt
bTMyKHNpemVvZihKU1ZhbHVlKSksIHNjcmF0Y2hHUFIxLCBzY3JhdGNoR1BSMSk7CisgICAgbV9q
aXQuYWRkMzIoVHJ1c3RlZEltbTMyKEFyZ3VtZW50czo6b2Zmc2V0T2ZSZWdpc3RlckFycmF5KCkp
LCBzY3JhdGNoR1BSMSk7CisgICAgZW1pdEFsbG9jYXRlVmFyaWFibGVTaXplZEpTT2JqZWN0PEFy
Z3VtZW50cz4ocmVzdWx0R1BSLCBzdHJ1Y3R1cmUsIHNjcmF0Y2hHUFIxLCBzY3JhdGNoR1BSMSwg
c2NyYXRjaEdQUjIsIHNsb3dQYXRoKTsKIAogICAgIG1faml0LnN0b3JlUHRyKFRydXN0ZWRJbW1Q
dHIoMCksIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgQXJndW1lbnRzOjpvZmZz
ZXRPZkFjdGl2YXRpb24oKSkpOwogCkBAIC0xMjksNiArMTMzLDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6ZW1pdEFsbG9jYXRlQXJndW1lbnRzKEdQUlJlZyByZXN1bHRHUFIsIEdQUlJlZyBzY3Jh
dGNoR1BSMSwKIAogICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IoSlNT
dGFjazo6Q2FsbGVlKSwgc2NyYXRjaEdQUjEpOwogICAgIG1faml0LnN0b3JlUHRyKHNjcmF0Y2hH
UFIxLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIEFyZ3VtZW50czo6b2Zmc2V0
T2ZDYWxsZWUoKSkpOworCiB9CiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0aW9uQ2hl
Y2soRXhpdEtpbmQga2luZCwgSlNWYWx1ZVNvdXJjZSBqc1ZhbHVlU291cmNlLCBOb2RlKiBub2Rl
LCBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBqdW1wVG9GYWlsKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCmluZGV4IGVkNjU5MjJhY2VhMzJiM2I2M2UxZmM4
YTU0MWYzYmM2NDlmYjNlM2EuLjNmMGQwNjQ1MzU2ZjU5OTA1ZjY5NmRjMTg5OTNiMmExYzQ5ZDA5
NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgK
QEAgLTIyNTIsNiArMjI1MiwzOSBAQCBwdWJsaWM6CiAgICAgICAgIGVtaXRBbGxvY2F0ZUpTT2Jq
ZWN0KHJlc3VsdEdQUiwgc2NyYXRjaEdQUjEsIHN0cnVjdHVyZSwgc3RvcmFnZSwgc2NyYXRjaEdQ
UjIsIHNsb3dQYXRoKTsKICAgICB9CiAKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2xhc3NUeXBl
LCB0eXBlbmFtZSBTdHJ1Y3R1cmVUeXBlPiAvLyBTdHJ1Y3R1cmVUeXBlIGFuZCBTdG9yYWdlVHlw
ZSBjYW4gYmUgR1BSIG9yIEltbVB0ci4KKyAgICB2b2lkIGVtaXRBbGxvY2F0ZVZhcmlhYmxlU2l6
ZWRKU09iamVjdChHUFJSZWcgcmVzdWx0R1BSLCBTdHJ1Y3R1cmVUeXBlIHN0cnVjdHVyZSwgR1BS
UmVnIGFsbG9jYXRpb25TaXplLCBHUFJSZWcgc2NyYXRjaEdQUjEsIEdQUlJlZyBzY3JhdGNoR1BS
MiwgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0JiBzbG93UGF0aCkKKyAgICB7CisgICAgICAgIHN0
YXRpY19hc3NlcnQoIShNYXJrZWRTcGFjZTo6cHJlY2lzZVN0ZXAgJiAoTWFya2VkU3BhY2U6OnBy
ZWNpc2VTdGVwIC0gMSkpLCAiTWFya2VkU3BhY2U6OnByZWNpc2VTdGVwIG11c3QgYmUgYSBwb3dl
ciBvZiB0d28uIik7CisgICAgICAgIHN0YXRpY19hc3NlcnQoIShNYXJrZWRTcGFjZTo6aW1wcmVj
aXNlU3RlcCAmIChNYXJrZWRTcGFjZTo6aW1wcmVjaXNlU3RlcCAtIDEpKSwgIk1hcmtlZFNwYWNl
OjppbXByZWNpc2VTdGVwIG11c3QgYmUgYSBwb3dlciBvZiB0d28uIik7CisKKyAgICAgICAgTWFy
a2VkU3BhY2U6OlN1YnNwYWNlKiBzdWJzcGFjZTsKKyAgICAgICAgaWYgKENsYXNzVHlwZTo6bmVl
ZHNEZXN0cnVjdGlvbiAmJiBDbGFzc1R5cGU6Omhhc0ltbW9ydGFsU3RydWN0dXJlKQorICAgICAg
ICAgICAgc3Vic3BhY2UgPSAmbV9qaXQudm0oKS0+aGVhcC5zdWJzcGFjZUZvck9iamVjdHNXaXRo
SW1tb3J0YWxTdHJ1Y3R1cmUoKTsKKyAgICAgICAgZWxzZSBpZiAoQ2xhc3NUeXBlOjpuZWVkc0Rl
c3RydWN0aW9uKQorICAgICAgICAgICAgc3Vic3BhY2UgPSAmbV9qaXQudm0oKS0+aGVhcC5zdWJz
cGFjZUZvck9iamVjdE5vcm1hbERlc3RydWN0b3IoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgc3Vic3BhY2UgPSAmbV9qaXQudm0oKS0+aGVhcC5zdWJzcGFjZUZvck9iamVjdFdpdGhvdXRE
ZXN0cnVjdG9yKCk7CisgICAgICAgIG1faml0LmFkZDMyKFRydXN0ZWRJbW0zMihNYXJrZWRTcGFj
ZTo6cHJlY2lzZVN0ZXAgLSAxKSwgYWxsb2NhdGlvblNpemUpOworICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6SnVtcCBub3RTbWFsbCA9IG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpBYm92
ZU9yRXF1YWwsIGFsbG9jYXRpb25TaXplLCBUcnVzdGVkSW1tMzIoTWFya2VkU3BhY2U6OnByZWNp
c2VDdXRvZmYpKTsKKyAgICAgICAgbV9qaXQucnNoaWZ0MzIoYWxsb2NhdGlvblNpemUsIFRydXN0
ZWRJbW0zMihnZXRMU0JTZXQoTWFya2VkU3BhY2U6OnByZWNpc2VTdGVwKSksIHNjcmF0Y2hHUFIx
KTsKKyAgICAgICAgbV9qaXQubXVsMzIoVHJ1c3RlZEltbTMyKHNpemVvZihNYXJrZWRBbGxvY2F0
b3IpKSwgc2NyYXRjaEdQUjEsIHNjcmF0Y2hHUFIxKTsKKyAgICAgICAgbV9qaXQuYWRkUHRyKE1h
Y3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKCZzdWJzcGFjZS0+cHJlY2lzZUFsbG9jYXRvcnNb
MF0pLCBzY3JhdGNoR1BSMSk7CisKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgc2VsZWN0
ZWRTbWFsbFNwYWNlID0gbV9qaXQuanVtcCgpOworICAgICAgICBub3RTbWFsbC5saW5rKCZtX2pp
dCk7CisgICAgICAgIHNsb3dQYXRoLmFwcGVuZChtX2ppdC5qdW1wKCkpOworICAgICAgICBzbG93
UGF0aC5hcHBlbmQobV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwg
YWxsb2NhdGlvblNpemUsIFRydXN0ZWRJbW0zMihNYXJrZWRTcGFjZTo6aW1wcmVjaXNlQ3V0b2Zm
KSkpOworICAgICAgICBtX2ppdC5yc2hpZnQzMihhbGxvY2F0aW9uU2l6ZSwgVHJ1c3RlZEltbTMy
KGdldExTQlNldChNYXJrZWRTcGFjZTo6aW1wcmVjaXNlU3RlcCkpLCBzY3JhdGNoR1BSMSk7Cisg
ICAgICAgIG1faml0Lm11bDMyKFRydXN0ZWRJbW0zMihzaXplb2YoTWFya2VkQWxsb2NhdG9yKSks
IHNjcmF0Y2hHUFIxLCBzY3JhdGNoR1BSMSk7CisgICAgICAgIG1faml0LmFkZFB0cihNYWNyb0Fz
c2VtYmxlcjo6VHJ1c3RlZEltbVB0cigmc3Vic3BhY2UtPmltcHJlY2lzZUFsbG9jYXRvcnNbMF0p
LCBzY3JhdGNoR1BSMSk7CisKKyAgICAgICAgc2VsZWN0ZWRTbWFsbFNwYWNlLmxpbmsoJm1faml0
KTsKKworICAgICAgICBlbWl0QWxsb2NhdGVKU09iamVjdChyZXN1bHRHUFIsIHNjcmF0Y2hHUFIx
LCBUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksIFRydXN0ZWRJbW1QdHIoMCksIHNjcmF0Y2hHUFIy
LCBzbG93UGF0aCk7CisgICAgICAgIG1faml0LnN0b3JlUHRyKFRydXN0ZWRJbW1QdHIoc3RydWN0
dXJlLT5jbGFzc0luZm8oKSksIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNE
ZXN0cnVjdGlibGVPYmplY3Q6OmNsYXNzSW5mb09mZnNldCgpKSk7CisgICAgfQorCiAgICAgdGVt
cGxhdGUgPHR5cGVuYW1lIFQ+CiAgICAgdm9pZCBlbWl0QWxsb2NhdGVEZXN0cnVjdGlibGVPYmpl
Y3QoR1BSUmVnIHJlc3VsdEdQUiwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIAogICAgICAgICBHUFJS
ZWcgc2NyYXRjaEdQUjEsIEdQUlJlZyBzY3JhdGNoR1BSMiwgTWFjcm9Bc3NlbWJsZXI6Okp1bXBM
aXN0JiBzbG93UGF0aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Nv
cHlUb2tlbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29weVRva2VuLmgKaW5kZXgg
YmJhNWU5MWE4MGI5NTE5OTdmZDIyM2ExYWM1ZjllODE2MzFkYjExMC4uM2UxNjc5YTZjNzI2YzAz
NmY0N2JmYThlZmNkMzFkMzYwMmIzZGM3NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvQ29weVRva2VuLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29w
eVRva2VuLmgKQEAgLTMyLDcgKzMyLDYgQEAgZW51bSBDb3B5VG9rZW4gewogICAgIEJ1dHRlcmZs
eUNvcHlUb2tlbiwKICAgICBUeXBlZEFycmF5VmVjdG9yQ29weVRva2VuLAogICAgIE1hcEJhY2tp
bmdTdG9yZUNvcHlUb2tlbiwKLSAgICBBcmd1bWVudHNSZWdpc3RlckFycmF5Q29weVRva2VuLAog
ICAgIEFyZ3VtZW50c1Nsb3dBcmd1bWVudERhdGFDb3B5VG9rZW4KIH07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0hlYXAuaAppbmRleCAxODU4ZjFiNjYzODE4YzVhYzQzMWE5YTk2ZjI0YWQ4OTQ2MDdi
YzgzLi4wZGMxZTJlMzllZDI3YWQ1YzIwZWVmMGJjZTk2NDAzZTc5ZGI0NjQyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSGVhcC5oCkBAIC0xMzUsNyArMTM1LDkgQEAgcHVibGljOgogICAgIEhlYXBP
cGVyYXRpb24gb3BlcmF0aW9uSW5Qcm9ncmVzcygpIHsgcmV0dXJuIG1fb3BlcmF0aW9uSW5Qcm9n
cmVzczsgfQogICAgIC8vIHRydWUgaWYgYW4gYWxsb2NhdGlvbiBvciBjb2xsZWN0aW9uIGlzIGlu
IHByb2dyZXNzCiAgICAgYm9vbCBpc0J1c3koKTsKLSAgICAKKyAgICBNYXJrZWRTcGFjZTo6U3Vi
c3BhY2UmIHN1YnNwYWNlRm9yT2JqZWN0V2l0aG91dERlc3RydWN0b3IoKSB7IHJldHVybiBtX29i
amVjdFNwYWNlLnN1YnNwYWNlRm9yT2JqZWN0c1dpdGhvdXREZXN0cnVjdG9yKCk7IH0KKyAgICBN
YXJrZWRTcGFjZTo6U3Vic3BhY2UmIHN1YnNwYWNlRm9yT2JqZWN0Tm9ybWFsRGVzdHJ1Y3Rvcigp
IHsgcmV0dXJuIG1fb2JqZWN0U3BhY2Uuc3Vic3BhY2VGb3JPYmplY3RzV2l0aE5vcm1hbERlc3Ry
dWN0b3IoKTsgfQorICAgIE1hcmtlZFNwYWNlOjpTdWJzcGFjZSYgc3Vic3BhY2VGb3JPYmplY3Rz
V2l0aEltbW9ydGFsU3RydWN0dXJlKCkgeyByZXR1cm4gbV9vYmplY3RTcGFjZS5zdWJzcGFjZUZv
ck9iamVjdHNXaXRoSW1tb3J0YWxTdHJ1Y3R1cmUoKTsgfQogICAgIE1hcmtlZEFsbG9jYXRvciYg
YWxsb2NhdG9yRm9yT2JqZWN0V2l0aG91dERlc3RydWN0b3Ioc2l6ZV90IGJ5dGVzKSB7IHJldHVy
biBtX29iamVjdFNwYWNlLmFsbG9jYXRvckZvcihieXRlcyk7IH0KICAgICBNYXJrZWRBbGxvY2F0
b3ImIGFsbG9jYXRvckZvck9iamVjdFdpdGhOb3JtYWxEZXN0cnVjdG9yKHNpemVfdCBieXRlcykg
eyByZXR1cm4gbV9vYmplY3RTcGFjZS5ub3JtYWxEZXN0cnVjdG9yQWxsb2NhdG9yRm9yKGJ5dGVz
KTsgfQogICAgIE1hcmtlZEFsbG9jYXRvciYgYWxsb2NhdG9yRm9yT2JqZWN0V2l0aEltbW9ydGFs
U3RydWN0dXJlRGVzdHJ1Y3RvcihzaXplX3QgYnl0ZXMpIHsgcmV0dXJuIG1fb2JqZWN0U3BhY2Uu
aW1tb3J0YWxTdHJ1Y3R1cmVEZXN0cnVjdG9yQWxsb2NhdG9yRm9yKGJ5dGVzKTsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmgKaW5kZXggMjUzZDJmMTQ1NGQ0NzYxYmQw
YzdlNmNjNjVlN2RhMmQ1MjhjYjcwNC4uZmYwYmE1MGRlY2E1Yjk3ZDExYzBjOGQ4MjBhMDNlM2E1
ZTAwMTc5YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3Bh
Y2UuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5oCkBAIC04
Miw2ICs4MiwyMiBAQCBzdHJ1Y3QgU2l6ZSA6IE1hcmtlZEJsb2NrOjpDb3VudEZ1bmN0b3Igewog
Y2xhc3MgTWFya2VkU3BhY2UgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE1hcmtlZFNwYWNl
KTsKIHB1YmxpYzoKKyAgICAvLyBbIDMyLi4uIDEyOCBdCisgICAgc3RhdGljIGNvbnN0IHNpemVf
dCBwcmVjaXNlU3RlcCA9IE1hcmtlZEJsb2NrOjphdG9tU2l6ZTsKKyAgICBzdGF0aWMgY29uc3Qg
c2l6ZV90IHByZWNpc2VDdXRvZmYgPSAxMjg7CisgICAgc3RhdGljIGNvbnN0IHNpemVfdCBwcmVj
aXNlQ291bnQgPSBwcmVjaXNlQ3V0b2ZmIC8gcHJlY2lzZVN0ZXA7CisKKyAgICAvLyBbIDEwMjQu
Li4gYmxvY2tTaXplIF0KKyAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGltcHJlY2lzZVN0ZXAgPSAy
ICogcHJlY2lzZUN1dG9mZjsKKyAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGltcHJlY2lzZUN1dG9m
ZiA9IE1hcmtlZEJsb2NrOjpibG9ja1NpemUgLyAyOworICAgIHN0YXRpYyBjb25zdCBzaXplX3Qg
aW1wcmVjaXNlQ291bnQgPSBpbXByZWNpc2VDdXRvZmYgLyBpbXByZWNpc2VTdGVwOworCisgICAg
c3RydWN0IFN1YnNwYWNlIHsKKyAgICAgICAgc3RkOjphcnJheTxNYXJrZWRBbGxvY2F0b3IsIHBy
ZWNpc2VDb3VudD4gcHJlY2lzZUFsbG9jYXRvcnM7CisgICAgICAgIHN0ZDo6YXJyYXk8TWFya2Vk
QWxsb2NhdG9yLCBpbXByZWNpc2VDb3VudD4gaW1wcmVjaXNlQWxsb2NhdG9yczsKKyAgICAgICAg
TWFya2VkQWxsb2NhdG9yIGxhcmdlQWxsb2NhdG9yOworICAgIH07CisKICAgICBNYXJrZWRTcGFj
ZShIZWFwKik7CiAgICAgfk1hcmtlZFNwYWNlKCk7CiAgICAgdm9pZCBsYXN0Q2hhbmNlVG9GaW5h
bGl6ZSgpOwpAQCAtOTMsNyArMTA5LDExIEBAIHB1YmxpYzoKICAgICB2b2lkKiBhbGxvY2F0ZVdp
dGhOb3JtYWxEZXN0cnVjdG9yKHNpemVfdCk7CiAgICAgdm9pZCogYWxsb2NhdGVXaXRoSW1tb3J0
YWxTdHJ1Y3R1cmVEZXN0cnVjdG9yKHNpemVfdCk7CiAgICAgdm9pZCogYWxsb2NhdGVXaXRob3V0
RGVzdHJ1Y3RvcihzaXplX3QpOwotIAorCisgICAgU3Vic3BhY2UmIHN1YnNwYWNlRm9yT2JqZWN0
c1dpdGhOb3JtYWxEZXN0cnVjdG9yKCkgeyByZXR1cm4gbV9ub3JtYWxEZXN0cnVjdG9yU3BhY2U7
IH0KKyAgICBTdWJzcGFjZSYgc3Vic3BhY2VGb3JPYmplY3RzV2l0aEltbW9ydGFsU3RydWN0dXJl
KCkgeyByZXR1cm4gbV9pbW1vcnRhbFN0cnVjdHVyZURlc3RydWN0b3JTcGFjZTsgfQorICAgIFN1
YnNwYWNlJiBzdWJzcGFjZUZvck9iamVjdHNXaXRob3V0RGVzdHJ1Y3RvcigpIHsgcmV0dXJuIG1f
bm9ybWFsU3BhY2U7IH0KKwogICAgIHZvaWQgcmVzZXRBbGxvY2F0b3JzKCk7CiAKICAgICB2b2lk
IHZpc2l0V2Vha1NldHMoSGVhcFJvb3RWaXNpdG9yJik7CkBAIC0xNDMsMjYgKzE2MywxMSBAQCBw
dWJsaWM6CiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBEZWxheWVkUmVsZWFzZVNjb3BlOwog
ICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgZnJpZW5kIGNsYXNz
IEpJVDsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHZvaWQgZm9yRWFjaEFsbG9j
YXRvcihGdW5jdG9yJik7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gdm9pZCBmb3JF
YWNoQWxsb2NhdG9yKCk7CiAKLSAgICAvLyBbIDMyLi4uIDEyOCBdCi0gICAgc3RhdGljIGNvbnN0
IHNpemVfdCBwcmVjaXNlU3RlcCA9IE1hcmtlZEJsb2NrOjphdG9tU2l6ZTsKLSAgICBzdGF0aWMg
Y29uc3Qgc2l6ZV90IHByZWNpc2VDdXRvZmYgPSAxMjg7Ci0gICAgc3RhdGljIGNvbnN0IHNpemVf
dCBwcmVjaXNlQ291bnQgPSBwcmVjaXNlQ3V0b2ZmIC8gcHJlY2lzZVN0ZXA7Ci0KLSAgICAvLyBb
IDEwMjQuLi4gYmxvY2tTaXplIF0KLSAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGltcHJlY2lzZVN0
ZXAgPSAyICogcHJlY2lzZUN1dG9mZjsKLSAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGltcHJlY2lz
ZUN1dG9mZiA9IE1hcmtlZEJsb2NrOjpibG9ja1NpemUgLyAyOwotICAgIHN0YXRpYyBjb25zdCBz
aXplX3QgaW1wcmVjaXNlQ291bnQgPSBpbXByZWNpc2VDdXRvZmYgLyBpbXByZWNpc2VTdGVwOwot
Ci0gICAgc3RydWN0IFN1YnNwYWNlIHsKLSAgICAgICAgc3RkOjphcnJheTxNYXJrZWRBbGxvY2F0
b3IsIHByZWNpc2VDb3VudD4gcHJlY2lzZUFsbG9jYXRvcnM7Ci0gICAgICAgIHN0ZDo6YXJyYXk8
TWFya2VkQWxsb2NhdG9yLCBpbXByZWNpc2VDb3VudD4gaW1wcmVjaXNlQWxsb2NhdG9yczsKLSAg
ICAgICAgTWFya2VkQWxsb2NhdG9yIGxhcmdlQWxsb2NhdG9yOwotICAgIH07Ci0KICAgICBTdWJz
cGFjZSBtX25vcm1hbERlc3RydWN0b3JTcGFjZTsKICAgICBTdWJzcGFjZSBtX2ltbW9ydGFsU3Ry
dWN0dXJlRGVzdHJ1Y3RvclNwYWNlOwogICAgIFN1YnNwYWNlIG1fbm9ybWFsU3BhY2U7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TdGFja1Zpc2l0b3IuY3BwCmlu
ZGV4IDI5ZGM5NjdmNDg0ZGRlZWYxMWZhYWE1ODVhZWJjZWRjZDI2YmQ1YmIuLmUxMzM4NWZlMWJk
ZDEzOWRhM2JmMzcxNmUzOWU2YmRiYTk1MzE0MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnRlcnByZXRlci9TdGFja1Zpc2l0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnRlcnByZXRlci9TdGFja1Zpc2l0b3IuY3BwCkBAIC0yNzEsNiArMjcxLDcgQEAg
QXJndW1lbnRzKiBTdGFja1Zpc2l0b3I6OkZyYW1lOjpjcmVhdGVBcmd1bWVudHMoKQogICAgICAg
ICBBU1NFUlQobV9pbmxpbmVDYWxsRnJhbWUpOwogICAgICAgICBhcmd1bWVudHMgPSBBcmd1bWVu
dHM6OmNyZWF0ZSh2bSwgcGh5c2ljYWxGcmFtZSwgbV9pbmxpbmVDYWxsRnJhbWUsIG1vZGUpOwog
ICAgICAgICBhcmd1bWVudHMtPnRlYXJPZmYocGh5c2ljYWxGcmFtZSwgbV9pbmxpbmVDYWxsRnJh
bWUpOworICAgICAgICBqc0Nhc3Q8QXJndW1lbnRzKj4oKEpTQ2VsbCopYXJndW1lbnRzKTsKICAg
ICB9IGVsc2UgCiAjZW5kaWYKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Bcmd1bWVudHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QXJndW1lbnRzLmNwcAppbmRleCAxNzI3OTUxZWZlZTRlYzE3ZTkxNTI2MzE1MjA2NGRmZjNkY2Vm
OTlkLi41NGQxNDUzMzRlZGI5MjQ2ZjU0N2NmMDYzMzMwOTAyZmQ3NmE3YTI0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5jcHAKQEAgLTQ2LDExICs0Niw5IEBA
IHZvaWQgQXJndW1lbnRzOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3Im
IHZpc2l0b3IpCiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZv
KCkpOwogICAgIEpTT2JqZWN0Ojp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwog
Ci0gICAgaWYgKHRoaXNPYmplY3QtPm1fcmVnaXN0ZXJBcnJheSkgewotICAgICAgICB2aXNpdG9y
LmNvcHlMYXRlcih0aGlzT2JqZWN0LCBBcmd1bWVudHNSZWdpc3RlckFycmF5Q29weVRva2VuLCAK
LSAgICAgICAgICAgIHRoaXNPYmplY3QtPm1fcmVnaXN0ZXJBcnJheS5nZXQoKSwgdGhpc09iamVj
dC0+cmVnaXN0ZXJBcnJheVNpemVJbkJ5dGVzKCkpOwotICAgICAgICB2aXNpdG9yLmFwcGVuZFZh
bHVlcyh0aGlzT2JqZWN0LT5tX3JlZ2lzdGVyQXJyYXkuZ2V0KCksIHRoaXNPYmplY3QtPm1fbnVt
QXJndW1lbnRzKTsKLSAgICB9CisgICAgaWYgKHRoaXNPYmplY3QtPmlzVG9ybk9mZigpKQorICAg
ICAgICB2aXNpdG9yLmFwcGVuZFZhbHVlcygmdGhpc09iamVjdC0+cmVnaXN0ZXJBcnJheSgpLCB0
aGlzT2JqZWN0LT5tX251bUFyZ3VtZW50cyk7CisKICAgICBpZiAodGhpc09iamVjdC0+bV9zbG93
QXJndW1lbnREYXRhKSB7CiAgICAgICAgIHZpc2l0b3IuY29weUxhdGVyKHRoaXNPYmplY3QsIEFy
Z3VtZW50c1Nsb3dBcmd1bWVudERhdGFDb3B5VG9rZW4sCiAgICAgICAgICAgICB0aGlzT2JqZWN0
LT5tX3Nsb3dBcmd1bWVudERhdGEuZ2V0KCksIFNsb3dBcmd1bWVudERhdGE6OnNpemVGb3JOdW1B
cmd1bWVudHModGhpc09iamVjdC0+bV9udW1Bcmd1bWVudHMpKTsKQEAgLTY2LDIyICs2NCw2IEBA
IHZvaWQgQXJndW1lbnRzOjpjb3B5QmFja2luZ1N0b3JlKEpTQ2VsbCogY2VsbCwgQ29weVZpc2l0
b3ImIHZpc2l0b3IsIENvcHlUb2tlbiB0CiAgICAgCiAKICAgICBzd2l0Y2ggKHRva2VuKSB7Ci0g
ICAgY2FzZSBBcmd1bWVudHNSZWdpc3RlckFycmF5Q29weVRva2VuOiB7Ci0gICAgICAgIFdyaXRl
QmFycmllcjxVbmtub3duPiogcmVnaXN0ZXJBcnJheSA9IHRoaXNPYmplY3QtPm1fcmVnaXN0ZXJB
cnJheS5nZXQoKTsKLSAgICAgICAgaWYgKCFyZWdpc3RlckFycmF5KQotICAgICAgICAgICAgcmV0
dXJuOwotCi0gICAgICAgIGlmICh2aXNpdG9yLmNoZWNrSWZTaG91bGRDb3B5KHJlZ2lzdGVyQXJy
YXkpKSB7Ci0gICAgICAgICAgICBzaXplX3QgYnl0ZXMgPSB0aGlzT2JqZWN0LT5yZWdpc3RlckFy
cmF5U2l6ZUluQnl0ZXMoKTsKLSAgICAgICAgICAgIFdyaXRlQmFycmllcjxVbmtub3duPiogbmV3
UmVnaXN0ZXJBcnJheSA9IHN0YXRpY19jYXN0PFdyaXRlQmFycmllcjxVbmtub3duPio+KHZpc2l0
b3IuYWxsb2NhdGVOZXdTcGFjZShieXRlcykpOwotICAgICAgICAgICAgbWVtY3B5KG5ld1JlZ2lz
dGVyQXJyYXksIHJlZ2lzdGVyQXJyYXksIGJ5dGVzKTsKLSAgICAgICAgICAgIHRoaXNPYmplY3Qt
Pm1fcmVnaXN0ZXJBcnJheS5zZXRXaXRob3V0V3JpdGVCYXJyaWVyKG5ld1JlZ2lzdGVyQXJyYXkp
OwotICAgICAgICAgICAgdGhpc09iamVjdC0+bV9yZWdpc3RlcnMgPSBuZXdSZWdpc3RlckFycmF5
IC0gQ2FsbEZyYW1lOjpvZmZzZXRGb3IoMSkgLSAxOwotICAgICAgICAgICAgdmlzaXRvci5kaWRD
b3B5KHJlZ2lzdGVyQXJyYXksIGJ5dGVzKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCiAgICAgY2FzZSBBcmd1bWVudHNTbG93QXJndW1lbnREYXRhQ29weVRva2VuOiB7CiAg
ICAgICAgIFNsb3dBcmd1bWVudERhdGEqIHNsb3dBcmd1bWVudERhdGEgPSB0aGlzT2JqZWN0LT5t
X3Nsb3dBcmd1bWVudERhdGEuZ2V0KCk7CiAgICAgICAgIGlmICghc2xvd0FyZ3VtZW50RGF0YSkK
QEAgLTM2MCwxNSArMzQyLDEyIEBAIGJvb2wgQXJndW1lbnRzOjpkZWZpbmVPd25Qcm9wZXJ0eShK
U09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtCiAKICAgICByZXR1
cm4gQmFzZTo6ZGVmaW5lT3duUHJvcGVydHkob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIGRl
c2NyaXB0b3IsIHNob3VsZFRocm93KTsKIH0KLQorLyoKIHZvaWQgQXJndW1lbnRzOjphbGxvY2F0
ZVJlZ2lzdGVyQXJyYXkoVk0mIHZtKQogewotICAgIEFTU0VSVCghbV9yZWdpc3RlckFycmF5KTsK
LSAgICB2b2lkKiBiYWNraW5nU3RvcmU7Ci0gICAgaWYgKCF2bS5oZWFwLnRyeUFsbG9jYXRlU3Rv
cmFnZSh0aGlzLCByZWdpc3RlckFycmF5U2l6ZUluQnl0ZXMoKSwgJmJhY2tpbmdTdG9yZSkpCisg
ICAgaWYgKCFyZWdpc3RlckFycmF5U2l6ZUluQnl0ZXMoKSkKICAgICAgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSAgICBtX3JlZ2lzdGVyQXJyYXkuc2V0KHZtLCB0aGlzLCBzdGF0
aWNfY2FzdDxXcml0ZUJhcnJpZXI8VW5rbm93bj4qPihiYWNraW5nU3RvcmUpKTsKLX0KK30qLwog
CiB2b2lkIEFyZ3VtZW50czo6dGVhck9mZihDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKQEAgLTM4
MCw5ICszNTksOCBAQCB2b2lkIEFyZ3VtZW50czo6dGVhck9mZihDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKIAogICAgIC8vIE11c3QgYmUgY2FsbGVkIGZvciB0aGUgc2FtZSBjYWxsIGZyYW1lIGZyb20g
d2hpY2ggaXQgd2FzIGNyZWF0ZWQuCiAgICAgQVNTRVJUKGJpdHdpc2VfY2FzdDxXcml0ZUJhcnJp
ZXI8VW5rbm93bj4qPihjYWxsRnJhbWUpID09IG1fcmVnaXN0ZXJzKTsKLSAgICAKLSAgICBhbGxv
Y2F0ZVJlZ2lzdGVyQXJyYXkoY2FsbEZyYW1lLT52bSgpKTsKLSAgICBtX3JlZ2lzdGVycyA9IG1f
cmVnaXN0ZXJBcnJheS5nZXQoKSAtIENhbGxGcmFtZTo6b2Zmc2V0Rm9yKDEpIC0gMTsKKworICAg
IG1fcmVnaXN0ZXJzID0gJnJlZ2lzdGVyQXJyYXkoKSAtIENhbGxGcmFtZTo6b2Zmc2V0Rm9yKDEp
IC0gMTsKIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9udW1Bcmd1bWVudHM7ICsraSkg
ewogICAgICAgICBpZiAobV9zbG93QXJndW1lbnREYXRhICYmIG1fc2xvd0FyZ3VtZW50RGF0YS0+
c2xvd0FyZ3VtZW50cygpW2ldLnN0YXR1cyA9PSBTbG93QXJndW1lbnQ6OkNhcHR1cmVkKQpAQCAt
Mzk5LDkgKzM3Nyw4IEBAIHZvaWQgQXJndW1lbnRzOjp0ZWFyT2ZmKENhbGxGcmFtZSogY2FsbEZy
YW1lLCBJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSkKICAgICAKICAgICBpZiAoIW1f
bnVtQXJndW1lbnRzKQogICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgYWxsb2NhdGVSZWdpc3Rl
ckFycmF5KGNhbGxGcmFtZS0+dm0oKSk7Ci0gICAgbV9yZWdpc3RlcnMgPSBtX3JlZ2lzdGVyQXJy
YXkuZ2V0KCkgLSBDYWxsRnJhbWU6Om9mZnNldEZvcigxKSAtIDE7CisKKyAgICBtX3JlZ2lzdGVy
cyA9ICZyZWdpc3RlckFycmF5KCkgLSBDYWxsRnJhbWU6Om9mZnNldEZvcigxKSAtIDE7CiAKICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fbnVtQXJndW1lbnRzOyArK2kpIHsKICAgICAgICAg
VmFsdWVSZWNvdmVyeSYgcmVjb3ZlcnkgPSBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50c1tpICsg
MV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5oCmluZGV4IDhjNDgw
MzVlOGVmMzU2ZDU0M2RkNjIyMzFlN2ZhMzZhNzE3ZTU1NGYuLjViNGEzOTQwMGVlMzBkMGZmODY0
MTcxMWJmNDUyZjE0ZTAxMmMwNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0FyZ3VtZW50cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fy
Z3VtZW50cy5oCkBAIC00OCwxNCArNDgsMTQgQEAgcHVibGljOgogCiAgICAgc3RhdGljIEFyZ3Vt
ZW50cyogY3JlYXRlKFZNJiB2bSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEFyZ3VtZW50c01vZGUg
bW9kZSA9IE5vcm1hbEFyZ3VtZW50c0NyZWF0aW9uTW9kZSkKICAgICB7Ci0gICAgICAgIEFyZ3Vt
ZW50cyogYXJndW1lbnRzID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8QXJndW1lbnRzPih2
bS5oZWFwKSkgQXJndW1lbnRzKGNhbGxGcmFtZSk7CisgICAgICAgIEFyZ3VtZW50cyogYXJndW1l
bnRzID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8QXJndW1lbnRzPih2bS5oZWFwLCBvZmZz
ZXRPZlJlZ2lzdGVyQXJyYXkoKSArIHJlZ2lzdGVyQXJyYXlTaXplSW5CeXRlcyhjYWxsRnJhbWUp
KSkgQXJndW1lbnRzKGNhbGxGcmFtZSk7CiAgICAgICAgIGFyZ3VtZW50cy0+ZmluaXNoQ3JlYXRp
b24oY2FsbEZyYW1lLCBtb2RlKTsKICAgICAgICAgcmV0dXJuIGFyZ3VtZW50czsKICAgICB9CiAg
ICAgICAgIAogICAgIHN0YXRpYyBBcmd1bWVudHMqIGNyZWF0ZShWTSYgdm0sIENhbGxGcmFtZSog
Y2FsbEZyYW1lLCBJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSwgQXJndW1lbnRzTW9k
ZSBtb2RlID0gTm9ybWFsQXJndW1lbnRzQ3JlYXRpb25Nb2RlKQogICAgIHsKLSAgICAgICAgQXJn
dW1lbnRzKiBhcmd1bWVudHMgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxBcmd1bWVudHM+
KHZtLmhlYXApKSBBcmd1bWVudHMoY2FsbEZyYW1lKTsKKyAgICAgICAgQXJndW1lbnRzKiBhcmd1
bWVudHMgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxBcmd1bWVudHM+KHZtLmhlYXAsIG9m
ZnNldE9mUmVnaXN0ZXJBcnJheSgpICsgMiAqIHJlZ2lzdGVyQXJyYXlTaXplSW5CeXRlcyhpbmxp
bmVDYWxsRnJhbWUpKSkgQXJndW1lbnRzKGNhbGxGcmFtZSk7CiAgICAgICAgIGFyZ3VtZW50cy0+
ZmluaXNoQ3JlYXRpb24oY2FsbEZyYW1lLCBpbmxpbmVDYWxsRnJhbWUsIG1vZGUpOwogICAgICAg
ICByZXR1cm4gYXJndW1lbnRzOwogICAgIH0KQEAgLTg2LDcgKzg2LDcgQEAgcHVibGljOgogICAg
IHZvaWQgY29weVRvQXJndW1lbnRzKEV4ZWNTdGF0ZSosIENhbGxGcmFtZSosIHVpbnQzMl90IGNv
cHlMZW5ndGgsIGludDMyX3QgZmlyc3RBcmd1bWVudE9mZnNldCk7CiAgICAgdm9pZCB0ZWFyT2Zm
KENhbGxGcmFtZSopOwogICAgIHZvaWQgdGVhck9mZihDYWxsRnJhbWUqLCBJbmxpbmVDYWxsRnJh
bWUqKTsKLSAgICBib29sIGlzVG9ybk9mZigpIGNvbnN0IHsgcmV0dXJuIG1fcmVnaXN0ZXJBcnJh
eS5nZXQoKTsgfQorICAgIGJvb2wgaXNUb3JuT2ZmKCkgY29uc3QgeyByZXR1cm4gbV9yZWdpc3Rl
cnMgPT0gKCZyZWdpc3RlckFycmF5KCkgLSBDYWxsRnJhbWU6Om9mZnNldEZvcigxKSAtIDEpOyB9
CiAKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkgCiAgICAgeyAKQEAgLTk4
LDE1ICs5OCw5IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mT3ZlcnJv
ZGVMZW5ndGgoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoQXJndW1lbnRzLCBtX292ZXJyb2Rl
TGVuZ3RoKTsgfQogICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZJc1N0cmljdE1vZGUoKSB7
IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoQXJndW1lbnRzLCBtX2lzU3RyaWN0TW9kZSk7IH0KICAg
ICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mUmVnaXN0ZXJzKCkgeyByZXR1cm4gT0JKRUNUX09G
RlNFVE9GKEFyZ3VtZW50cywgbV9yZWdpc3RlcnMpOyB9Ci0gICAgc3RhdGljIHB0cmRpZmZfdCBv
ZmZzZXRPZlJlZ2lzdGVyQXJyYXkoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoQXJndW1lbnRz
LCBtX3JlZ2lzdGVyQXJyYXkpOyB9CisgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZlJlZ2lz
dGVyQXJyYXkoKSB7IHJldHVybiBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Y8OD4oc2l6ZW9mKEFy
Z3VtZW50cykpOyB9CiAgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZlNsb3dBcmd1bWVudERh
dGEoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoQXJndW1lbnRzLCBtX3Nsb3dBcmd1bWVudERh
dGEpOyB9CiAgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkNhbGxlZSgpIHsgcmV0dXJuIE9C
SkVDVF9PRkZTRVRPRihBcmd1bWVudHMsIG1fY2FsbGVlKTsgfQotCi0gICAgc3RhdGljIHNpemVf
dCBhbGxvY2F0aW9uU2l6ZShzaXplX3QgaW5saW5lQ2FwYWNpdHkpCi0gICAgewotICAgICAgICBB
U1NFUlRfVU5VU0VEKGlubGluZUNhcGFjaXR5LCAhaW5saW5lQ2FwYWNpdHkpOwotICAgICAgICBy
ZXR1cm4gc2l6ZW9mKEFyZ3VtZW50cyk7Ci0gICAgfQogICAgIAogcHJvdGVjdGVkOgogICAgIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dldE93blByb3Bl
cnR5U2xvdCB8IEludGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5MZW5n
dGhJc05vdFplcm8gfCBPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzIHwgSlNPYmplY3Q6OlN0cnVj
dHVyZUZsYWdzOwpAQCAtMTI2LDggKzEyMCw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjcmVhdGVT
dHJpY3RNb2RlQ2FsbGVySWZOZWNlc3NhcnkoRXhlY1N0YXRlKik7CiAgICAgdm9pZCBjcmVhdGVT
dHJpY3RNb2RlQ2FsbGVlSWZOZWNlc3NhcnkoRXhlY1N0YXRlKik7CiAKLSAgICBzaXplX3QgcmVn
aXN0ZXJBcnJheVNpemVJbkJ5dGVzKCkgY29uc3QgeyByZXR1cm4gc2l6ZW9mKFdyaXRlQmFycmll
cjxVbmtub3duPikgKiBtX251bUFyZ3VtZW50czsgfQotICAgIHZvaWQgYWxsb2NhdGVSZWdpc3Rl
ckFycmF5KFZNJik7CisgICAgc3RhdGljIHNpemVfdCByZWdpc3RlckFycmF5U2l6ZUluQnl0ZXMo
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpIHsgcmV0dXJuIHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93
bj4pICogY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCk7IH0KKyAgICBzdGF0aWMgc2l6ZV90IHJl
Z2lzdGVyQXJyYXlTaXplSW5CeXRlcyhJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSkg
eyByZXR1cm4gc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPikgKiAoaW5saW5lQ2FsbEZyYW1l
LT5hcmd1bWVudHMuc2l6ZSgpIC0gMSk7IH0KICAgICBib29sIGlzQXJndW1lbnQoc2l6ZV90KTsK
ICAgICBib29sIHRyeVNldEFyZ3VtZW50KFZNJiwgc2l6ZV90IGFyZ3VtZW50LCBKU1ZhbHVlKTsK
ICAgICBKU1ZhbHVlIHRyeUdldEFyZ3VtZW50KHNpemVfdCBhcmd1bWVudCk7CkBAIC0xNTEsNyAr
MTQ1LDggQEAgcHJpdmF0ZToKICAgICBib29sIG1faXNTdHJpY3RNb2RlOwogCiAgICAgV3JpdGVC
YXJyaWVyQmFzZTxVbmtub3duPiogbV9yZWdpc3RlcnM7Ci0gICAgQ29weVdyaXRlQmFycmllcjxX
cml0ZUJhcnJpZXI8VW5rbm93bj4+IG1fcmVnaXN0ZXJBcnJheTsKKyAgICBXcml0ZUJhcnJpZXI8
VW5rbm93bj4mIHJlZ2lzdGVyQXJyYXkoKSB7IHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDxXcml0
ZUJhcnJpZXI8VW5rbm93bj4qPihyZWludGVycHJldF9jYXN0PGNoYXIqPih0aGlzKSArIG9mZnNl
dE9mUmVnaXN0ZXJBcnJheSgpKTsgfQorICAgIGNvbnN0IFdyaXRlQmFycmllcjxVbmtub3duPiYg
cmVnaXN0ZXJBcnJheSgpIGNvbnN0IHsgcmV0dXJuICpyZWludGVycHJldF9jYXN0PGNvbnN0IFdy
aXRlQmFycmllcjxVbmtub3duPio+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KHRoaXMp
ICsgb2Zmc2V0T2ZSZWdpc3RlckFycmF5KCkpOyB9CiAKIHB1YmxpYzoKICAgICBzdHJ1Y3QgU2xv
d0FyZ3VtZW50RGF0YSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>239889</attachid>
            <date>2014-10-15 13:11:46 -0700</date>
            <delta_ts>2014-10-15 16:18:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137751-20141015131151.patch</filename>
            <type>text/plain</type>
            <size>20225</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc0NzAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
MTM5YmJlNmNlMTk1NmY2NjYzYTczNzQ0OWE4YjdlOTZmZGQ5OGU2Li44ODEwYWVkZDZkZDUyYjU0
YTRjMDQyYzUxYWQ3YWMyMjEzYjVhZDMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NSBAQAorMjAxNC0xMC0xNSAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgor
CisgICAgICAgIFVzZSBhIHNpbmdsZSBhbGxvY2F0aW9uIGZvciB0aGUgQXJndW1lbnRzIG9iamVj
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3NzUx
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBw
YXRjaCByZW1vdmVzIHRoZSBzZWNvbmRhcnkgYWxsb2NhdGlvbiBmb3IgcGFyYW1ldGVycyBpbiB0
aGUgQXJndW1lbnRzCisgICAgICAgIG9iamVjdC4gIFRoaXMgaXMgZmFpbHkgc2ltcGxlLCBidXQg
d2UgbmVlZGVkIHRvIG1ha2UgaXQgcG9zc2libGUgZm9yIHRoZSBKSVQKKyAgICAgICAgdG8gYWxs
b2NhdGUgYSB2YXJpYWJsZSBHQyBvYmplY3QuICBUbyBkbyB0aGlzIGkndmUgYWRkZWQgYSBuZXcg
CisgICAgICAgIGVtaXRBbGxvY2F0ZVZhcmlhYmxlU2l6ZWRKU09iamVjdCBmdW5jdGlvbiB0byB0
aGUgSklUIHRoYXQgZG9lcyB0aGUgd29yayB0bworICAgICAgICBmaW5kIHRoZSBjb3JyZWN0IGhl
YXAgZm9yIGEgdmFyaWFibGUgc2l6ZWQgYWxsb2NhdGlvbiBhbmQgdGhlbiBidW1wIHRoYXQKKyAg
ICAgICAgYWxsb2NhdG9yLgorCisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdEFsbG9jYXRlQXJndW1lbnRz
KToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdEFsbG9jYXRlVmFyaWFibGVTaXplZEpTT2JqZWN0KToKKyAg
ICAgICAgKiBoZWFwL0NvcHlUb2tlbi5oOgorICAgICAgICAqIGhlYXAvSGVhcC5oOgorICAgICAg
ICAoSlNDOjpIZWFwOjpzdWJzcGFjZUZvck9iamVjdFdpdGhvdXREZXN0cnVjdG9yKToKKyAgICAg
ICAgKEpTQzo6SGVhcDo6c3Vic3BhY2VGb3JPYmplY3ROb3JtYWxEZXN0cnVjdG9yKToKKyAgICAg
ICAgKEpTQzo6SGVhcDo6c3Vic3BhY2VGb3JPYmplY3RzV2l0aEltbW9ydGFsU3RydWN0dXJlKToK
KyAgICAgICAgKiBoZWFwL01hcmtlZFNwYWNlLmg6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNl
OjpzdWJzcGFjZUZvck9iamVjdHNXaXRoTm9ybWFsRGVzdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6
Ok1hcmtlZFNwYWNlOjpzdWJzcGFjZUZvck9iamVjdHNXaXRoSW1tb3J0YWxTdHJ1Y3R1cmUpOgor
ICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6c3Vic3BhY2VGb3JPYmplY3RzV2l0aG91dERlc3Ry
dWN0b3IpOgorICAgICAgICAqIGludGVycHJldGVyL1N0YWNrVmlzaXRvci5jcHA6CisgICAgICAg
IChKU0M6OlN0YWNrVmlzaXRvcjo6RnJhbWU6OmNyZWF0ZUFyZ3VtZW50cyk6CisgICAgICAgICog
cnVudGltZS9Bcmd1bWVudHMuY3BwOgorICAgICAgICAoSlNDOjpBcmd1bWVudHM6OnZpc2l0Q2hp
bGRyZW4pOgorICAgICAgICAoSlNDOjpBcmd1bWVudHM6OmNvcHlCYWNraW5nU3RvcmUpOgorICAg
ICAgICAoSlNDOjpBcmd1bWVudHM6OnRlYXJPZmYpOgorICAgICAgICAoSlNDOjpBcmd1bWVudHM6
OmFsbG9jYXRlUmVnaXN0ZXJBcnJheSk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9Bcmd1
bWVudHMuaDoKKyAgICAgICAgKEpTQzo6QXJndW1lbnRzOjpjcmVhdGUpOgorICAgICAgICAoSlND
OjpBcmd1bWVudHM6OmlzVG9ybk9mZik6CisgICAgICAgIChKU0M6OkFyZ3VtZW50czo6b2Zmc2V0
T2ZSZWdpc3RlckFycmF5KToKKyAgICAgICAgKEpTQzo6QXJndW1lbnRzOjpyZWdpc3RlckFycmF5
U2l6ZUluQnl0ZXMpOgorICAgICAgICAoSlNDOjpBcmd1bWVudHM6OnJlZ2lzdGVyQXJyYXkpOgor
ICAgICAgICAoSlNDOjpBcmd1bWVudHM6OmFsbG9jYXRpb25TaXplKTogRGVsZXRlZC4KKwogMjAx
NC0xMC0xNCAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBb
V2luXSBVbnJldmlld2VkIGdhcmRlbmluZy4gSWdub3JlIFZpc3VhbCBTdHVkaW8gKi5zZGYgZmls
ZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3Bw
CmluZGV4IDRjZjY5YmZiMzBjOTNhYzQ3OTM4MTkzMGNiZmFmZjhlNjcwNDA2MDcuLjJlYzI1ZTBj
ZWJjY2ZjOTA5ZGE0NmFjYTM5MjU2ZTgwMDU1Zjg4ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC0xMTEsNyArMTExLDExIEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRBbGxvY2F0ZUpTQXJyYXkoR1BSUmVnIHJlc3VsdEdQUiwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsCiB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0QWxsb2NhdGVB
cmd1bWVudHMoR1BSUmVnIHJlc3VsdEdQUiwgR1BSUmVnIHNjcmF0Y2hHUFIxLCBHUFJSZWcgc2Ny
YXRjaEdQUjIsIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCYgc2xvd1BhdGgpCiB7CiAgICAgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUgPSBtX2ppdC5ncmFwaCgpLmdsb2JhbE9iamVjdEZvcihtX2N1cnJl
bnROb2RlLT5vcmlnaW4uc2VtYW50aWMpLT5hcmd1bWVudHNTdHJ1Y3R1cmUoKTsKLSAgICBlbWl0
QWxsb2NhdGVEZXN0cnVjdGlibGVPYmplY3Q8QXJndW1lbnRzPihyZXN1bHRHUFIsIHN0cnVjdHVy
ZSwgc2NyYXRjaEdQUjEsIHNjcmF0Y2hHUFIyLCBzbG93UGF0aCk7CisKKyAgICBtX2ppdC5sb2Fk
MzIoSklUQ29tcGlsZXI6OnBheWxvYWRGb3IoSlNTdGFjazo6QXJndW1lbnRDb3VudCksIHNjcmF0
Y2hHUFIxKTsKKyAgICBtX2ppdC5tdWwzMihUcnVzdGVkSW1tMzIoc2l6ZW9mKEpTVmFsdWUpKSwg
c2NyYXRjaEdQUjEsIHNjcmF0Y2hHUFIxKTsKKyAgICBtX2ppdC5hZGQzMihUcnVzdGVkSW1tMzIo
QXJndW1lbnRzOjpvZmZzZXRPZlJlZ2lzdGVyQXJyYXkoKSksIHNjcmF0Y2hHUFIxKTsKKyAgICBl
bWl0QWxsb2NhdGVWYXJpYWJsZVNpemVkSlNPYmplY3Q8QXJndW1lbnRzPihyZXN1bHRHUFIsIHN0
cnVjdHVyZSwgc2NyYXRjaEdQUjEsIHNjcmF0Y2hHUFIxLCBzY3JhdGNoR1BSMiwgc2xvd1BhdGgp
OwogCiAgICAgbV9qaXQuc3RvcmVQdHIoVHJ1c3RlZEltbVB0cigwKSwgTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3MocmVzdWx0R1BSLCBBcmd1bWVudHM6Om9mZnNldE9mQWN0aXZhdGlvbigpKSk7CiAK
QEAgLTEyOSw2ICsxMzMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0QWxsb2NhdGVBcmd1
bWVudHMoR1BSUmVnIHJlc3VsdEdQUiwgR1BSUmVnIHNjcmF0Y2hHUFIxLAogCiAgICAgbV9qaXQu
bG9hZFB0cihKSVRDb21waWxlcjo6YWRkcmVzc0ZvcihKU1N0YWNrOjpDYWxsZWUpLCBzY3JhdGNo
R1BSMSk7CiAgICAgbV9qaXQuc3RvcmVQdHIoc2NyYXRjaEdQUjEsIE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKHJlc3VsdEdQUiwgQXJndW1lbnRzOjpvZmZzZXRPZkNhbGxlZSgpKSk7CisKIH0KIAog
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRpb25DaGVjayhFeGl0S2luZCBraW5kLCBKU1Zh
bHVlU291cmNlIGpzVmFsdWVTb3VyY2UsIE5vZGUqIG5vZGUsIE1hY3JvQXNzZW1ibGVyOjpKdW1w
IGp1bXBUb0ZhaWwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklULmgKaW5kZXggZWQ2NTkyMmFjZWEzMmIzYjYzZTFmYzhhNTQxZjNiYzY0OWZiM2UzYS4uM2Yw
ZDA2NDUzNTZmNTk5MDVmNjk2ZGMxODk5M2IyYTFjNDlkMDk0ZCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaApAQCAtMjI1Miw2ICsyMjUyLDM5IEBA
IHB1YmxpYzoKICAgICAgICAgZW1pdEFsbG9jYXRlSlNPYmplY3QocmVzdWx0R1BSLCBzY3JhdGNo
R1BSMSwgc3RydWN0dXJlLCBzdG9yYWdlLCBzY3JhdGNoR1BSMiwgc2xvd1BhdGgpOwogICAgIH0K
IAorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDbGFzc1R5cGUsIHR5cGVuYW1lIFN0cnVjdHVyZVR5
cGU+IC8vIFN0cnVjdHVyZVR5cGUgYW5kIFN0b3JhZ2VUeXBlIGNhbiBiZSBHUFIgb3IgSW1tUHRy
LgorICAgIHZvaWQgZW1pdEFsbG9jYXRlVmFyaWFibGVTaXplZEpTT2JqZWN0KEdQUlJlZyByZXN1
bHRHUFIsIFN0cnVjdHVyZVR5cGUgc3RydWN0dXJlLCBHUFJSZWcgYWxsb2NhdGlvblNpemUsIEdQ
UlJlZyBzY3JhdGNoR1BSMSwgR1BSUmVnIHNjcmF0Y2hHUFIyLCBNYWNyb0Fzc2VtYmxlcjo6SnVt
cExpc3QmIHNsb3dQYXRoKQorICAgIHsKKyAgICAgICAgc3RhdGljX2Fzc2VydCghKE1hcmtlZFNw
YWNlOjpwcmVjaXNlU3RlcCAmIChNYXJrZWRTcGFjZTo6cHJlY2lzZVN0ZXAgLSAxKSksICJNYXJr
ZWRTcGFjZTo6cHJlY2lzZVN0ZXAgbXVzdCBiZSBhIHBvd2VyIG9mIHR3by4iKTsKKyAgICAgICAg
c3RhdGljX2Fzc2VydCghKE1hcmtlZFNwYWNlOjppbXByZWNpc2VTdGVwICYgKE1hcmtlZFNwYWNl
OjppbXByZWNpc2VTdGVwIC0gMSkpLCAiTWFya2VkU3BhY2U6OmltcHJlY2lzZVN0ZXAgbXVzdCBi
ZSBhIHBvd2VyIG9mIHR3by4iKTsKKworICAgICAgICBNYXJrZWRTcGFjZTo6U3Vic3BhY2UqIHN1
YnNwYWNlOworICAgICAgICBpZiAoQ2xhc3NUeXBlOjpuZWVkc0Rlc3RydWN0aW9uICYmIENsYXNz
VHlwZTo6aGFzSW1tb3J0YWxTdHJ1Y3R1cmUpCisgICAgICAgICAgICBzdWJzcGFjZSA9ICZtX2pp
dC52bSgpLT5oZWFwLnN1YnNwYWNlRm9yT2JqZWN0c1dpdGhJbW1vcnRhbFN0cnVjdHVyZSgpOwor
ICAgICAgICBlbHNlIGlmIChDbGFzc1R5cGU6Om5lZWRzRGVzdHJ1Y3Rpb24pCisgICAgICAgICAg
ICBzdWJzcGFjZSA9ICZtX2ppdC52bSgpLT5oZWFwLnN1YnNwYWNlRm9yT2JqZWN0Tm9ybWFsRGVz
dHJ1Y3RvcigpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBzdWJzcGFjZSA9ICZtX2ppdC52
bSgpLT5oZWFwLnN1YnNwYWNlRm9yT2JqZWN0V2l0aG91dERlc3RydWN0b3IoKTsKKyAgICAgICAg
bV9qaXQuYWRkMzIoVHJ1c3RlZEltbTMyKE1hcmtlZFNwYWNlOjpwcmVjaXNlU3RlcCAtIDEpLCBh
bGxvY2F0aW9uU2l6ZSk7CisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG5vdFNtYWxsID0g
bV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgYWxsb2NhdGlvblNp
emUsIFRydXN0ZWRJbW0zMihNYXJrZWRTcGFjZTo6cHJlY2lzZUN1dG9mZikpOworICAgICAgICBt
X2ppdC5yc2hpZnQzMihhbGxvY2F0aW9uU2l6ZSwgVHJ1c3RlZEltbTMyKGdldExTQlNldChNYXJr
ZWRTcGFjZTo6cHJlY2lzZVN0ZXApKSwgc2NyYXRjaEdQUjEpOworICAgICAgICBtX2ppdC5tdWwz
MihUcnVzdGVkSW1tMzIoc2l6ZW9mKE1hcmtlZEFsbG9jYXRvcikpLCBzY3JhdGNoR1BSMSwgc2Ny
YXRjaEdQUjEpOworICAgICAgICBtX2ppdC5hZGRQdHIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJ
bW1QdHIoJnN1YnNwYWNlLT5wcmVjaXNlQWxsb2NhdG9yc1swXSksIHNjcmF0Y2hHUFIxKTsKKwor
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBzZWxlY3RlZFNtYWxsU3BhY2UgPSBtX2ppdC5q
dW1wKCk7CisgICAgICAgIG5vdFNtYWxsLmxpbmsoJm1faml0KTsKKyAgICAgICAgc2xvd1BhdGgu
YXBwZW5kKG1faml0Lmp1bXAoKSk7CisgICAgICAgIHNsb3dQYXRoLmFwcGVuZChtX2ppdC5icmFu
Y2gzMihNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCBhbGxvY2F0aW9uU2l6ZSwgVHJ1c3Rl
ZEltbTMyKE1hcmtlZFNwYWNlOjppbXByZWNpc2VDdXRvZmYpKSk7CisgICAgICAgIG1faml0LnJz
aGlmdDMyKGFsbG9jYXRpb25TaXplLCBUcnVzdGVkSW1tMzIoZ2V0TFNCU2V0KE1hcmtlZFNwYWNl
OjppbXByZWNpc2VTdGVwKSksIHNjcmF0Y2hHUFIxKTsKKyAgICAgICAgbV9qaXQubXVsMzIoVHJ1
c3RlZEltbTMyKHNpemVvZihNYXJrZWRBbGxvY2F0b3IpKSwgc2NyYXRjaEdQUjEsIHNjcmF0Y2hH
UFIxKTsKKyAgICAgICAgbV9qaXQuYWRkUHRyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRy
KCZzdWJzcGFjZS0+aW1wcmVjaXNlQWxsb2NhdG9yc1swXSksIHNjcmF0Y2hHUFIxKTsKKworICAg
ICAgICBzZWxlY3RlZFNtYWxsU3BhY2UubGluaygmbV9qaXQpOworCisgICAgICAgIGVtaXRBbGxv
Y2F0ZUpTT2JqZWN0KHJlc3VsdEdQUiwgc2NyYXRjaEdQUjEsIFRydXN0ZWRJbW1QdHIoc3RydWN0
dXJlKSwgVHJ1c3RlZEltbVB0cigwKSwgc2NyYXRjaEdQUjIsIHNsb3dQYXRoKTsKKyAgICAgICAg
bV9qaXQuc3RvcmVQdHIoVHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUtPmNsYXNzSW5mbygpKSwgTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBKU0Rlc3RydWN0aWJsZU9iamVjdDo6Y2xh
c3NJbmZvT2Zmc2V0KCkpKTsKKyAgICB9CisKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAg
ICB2b2lkIGVtaXRBbGxvY2F0ZURlc3RydWN0aWJsZU9iamVjdChHUFJSZWcgcmVzdWx0R1BSLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgCiAgICAgICAgIEdQUlJlZyBzY3JhdGNoR1BSMSwgR1BSUmVn
IHNjcmF0Y2hHUFIyLCBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QmIHNsb3dQYXRoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29weVRva2VuLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9Db3B5VG9rZW4uaAppbmRleCBiYmE1ZTkxYTgwYjk1MTk5N2ZkMjIz
YTFhYzVmOWU4MTYzMWRiMTEwLi4zZTE2NzlhNmM3MjZjMDM2ZjQ3YmZhOGVmY2QzMWQzNjAyYjNk
Yzc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db3B5VG9rZW4uaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db3B5VG9rZW4uaApAQCAtMzIsNyArMzIs
NiBAQCBlbnVtIENvcHlUb2tlbiB7CiAgICAgQnV0dGVyZmx5Q29weVRva2VuLAogICAgIFR5cGVk
QXJyYXlWZWN0b3JDb3B5VG9rZW4sCiAgICAgTWFwQmFja2luZ1N0b3JlQ29weVRva2VuLAotICAg
IEFyZ3VtZW50c1JlZ2lzdGVyQXJyYXlDb3B5VG9rZW4sCiAgICAgQXJndW1lbnRzU2xvd0FyZ3Vt
ZW50RGF0YUNvcHlUb2tlbgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSGVhcC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCmluZGV4IDE4
NThmMWI2NjM4MThjNWFjNDMxYTlhOTZmMjRhZDg5NDYwN2JjODMuLjBkYzFlMmUzOWVkMjdhZDVj
MjBlZWYwYmNlOTY0MDNlNzlkYjQ2NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0hlYXAuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKQEAg
LTEzNSw3ICsxMzUsOSBAQCBwdWJsaWM6CiAgICAgSGVhcE9wZXJhdGlvbiBvcGVyYXRpb25JblBy
b2dyZXNzKCkgeyByZXR1cm4gbV9vcGVyYXRpb25JblByb2dyZXNzOyB9CiAgICAgLy8gdHJ1ZSBp
ZiBhbiBhbGxvY2F0aW9uIG9yIGNvbGxlY3Rpb24gaXMgaW4gcHJvZ3Jlc3MKICAgICBib29sIGlz
QnVzeSgpOwotICAgIAorICAgIE1hcmtlZFNwYWNlOjpTdWJzcGFjZSYgc3Vic3BhY2VGb3JPYmpl
Y3RXaXRob3V0RGVzdHJ1Y3RvcigpIHsgcmV0dXJuIG1fb2JqZWN0U3BhY2Uuc3Vic3BhY2VGb3JP
YmplY3RzV2l0aG91dERlc3RydWN0b3IoKTsgfQorICAgIE1hcmtlZFNwYWNlOjpTdWJzcGFjZSYg
c3Vic3BhY2VGb3JPYmplY3ROb3JtYWxEZXN0cnVjdG9yKCkgeyByZXR1cm4gbV9vYmplY3RTcGFj
ZS5zdWJzcGFjZUZvck9iamVjdHNXaXRoTm9ybWFsRGVzdHJ1Y3RvcigpOyB9CisgICAgTWFya2Vk
U3BhY2U6OlN1YnNwYWNlJiBzdWJzcGFjZUZvck9iamVjdHNXaXRoSW1tb3J0YWxTdHJ1Y3R1cmUo
KSB7IHJldHVybiBtX29iamVjdFNwYWNlLnN1YnNwYWNlRm9yT2JqZWN0c1dpdGhJbW1vcnRhbFN0
cnVjdHVyZSgpOyB9CiAgICAgTWFya2VkQWxsb2NhdG9yJiBhbGxvY2F0b3JGb3JPYmplY3RXaXRo
b3V0RGVzdHJ1Y3RvcihzaXplX3QgYnl0ZXMpIHsgcmV0dXJuIG1fb2JqZWN0U3BhY2UuYWxsb2Nh
dG9yRm9yKGJ5dGVzKTsgfQogICAgIE1hcmtlZEFsbG9jYXRvciYgYWxsb2NhdG9yRm9yT2JqZWN0
V2l0aE5vcm1hbERlc3RydWN0b3Ioc2l6ZV90IGJ5dGVzKSB7IHJldHVybiBtX29iamVjdFNwYWNl
Lm5vcm1hbERlc3RydWN0b3JBbGxvY2F0b3JGb3IoYnl0ZXMpOyB9CiAgICAgTWFya2VkQWxsb2Nh
dG9yJiBhbGxvY2F0b3JGb3JPYmplY3RXaXRoSW1tb3J0YWxTdHJ1Y3R1cmVEZXN0cnVjdG9yKHNp
emVfdCBieXRlcykgeyByZXR1cm4gbV9vYmplY3RTcGFjZS5pbW1vcnRhbFN0cnVjdHVyZURlc3Ry
dWN0b3JBbGxvY2F0b3JGb3IoYnl0ZXMpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9NYXJrZWRTcGFjZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFy
a2VkU3BhY2UuaAppbmRleCAyNTNkMmYxNDU0ZDQ3NjFiZDBjN2U2Y2M2NWU3ZGEyZDUyOGNiNzA0
Li5mZjBiYTUwZGVjYTViOTdkMTFjMGM4ZDgyMGEwM2UzYTVlMDAxNzliIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmgKQEAgLTgyLDYgKzgyLDIyIEBAIHN0cnVjdCBT
aXplIDogTWFya2VkQmxvY2s6OkNvdW50RnVuY3RvciB7CiBjbGFzcyBNYXJrZWRTcGFjZSB7CiAg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTWFya2VkU3BhY2UpOwogcHVibGljOgorICAgIC8vIFsg
MzIuLi4gMTI4IF0KKyAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IHByZWNpc2VTdGVwID0gTWFya2Vk
QmxvY2s6OmF0b21TaXplOworICAgIHN0YXRpYyBjb25zdCBzaXplX3QgcHJlY2lzZUN1dG9mZiA9
IDEyODsKKyAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IHByZWNpc2VDb3VudCA9IHByZWNpc2VDdXRv
ZmYgLyBwcmVjaXNlU3RlcDsKKworICAgIC8vIFsgMTAyNC4uLiBibG9ja1NpemUgXQorICAgIHN0
YXRpYyBjb25zdCBzaXplX3QgaW1wcmVjaXNlU3RlcCA9IDIgKiBwcmVjaXNlQ3V0b2ZmOworICAg
IHN0YXRpYyBjb25zdCBzaXplX3QgaW1wcmVjaXNlQ3V0b2ZmID0gTWFya2VkQmxvY2s6OmJsb2Nr
U2l6ZSAvIDI7CisgICAgc3RhdGljIGNvbnN0IHNpemVfdCBpbXByZWNpc2VDb3VudCA9IGltcHJl
Y2lzZUN1dG9mZiAvIGltcHJlY2lzZVN0ZXA7CisKKyAgICBzdHJ1Y3QgU3Vic3BhY2UgeworICAg
ICAgICBzdGQ6OmFycmF5PE1hcmtlZEFsbG9jYXRvciwgcHJlY2lzZUNvdW50PiBwcmVjaXNlQWxs
b2NhdG9yczsKKyAgICAgICAgc3RkOjphcnJheTxNYXJrZWRBbGxvY2F0b3IsIGltcHJlY2lzZUNv
dW50PiBpbXByZWNpc2VBbGxvY2F0b3JzOworICAgICAgICBNYXJrZWRBbGxvY2F0b3IgbGFyZ2VB
bGxvY2F0b3I7CisgICAgfTsKKwogICAgIE1hcmtlZFNwYWNlKEhlYXAqKTsKICAgICB+TWFya2Vk
U3BhY2UoKTsKICAgICB2b2lkIGxhc3RDaGFuY2VUb0ZpbmFsaXplKCk7CkBAIC05Myw3ICsxMDks
MTEgQEAgcHVibGljOgogICAgIHZvaWQqIGFsbG9jYXRlV2l0aE5vcm1hbERlc3RydWN0b3Ioc2l6
ZV90KTsKICAgICB2b2lkKiBhbGxvY2F0ZVdpdGhJbW1vcnRhbFN0cnVjdHVyZURlc3RydWN0b3Io
c2l6ZV90KTsKICAgICB2b2lkKiBhbGxvY2F0ZVdpdGhvdXREZXN0cnVjdG9yKHNpemVfdCk7Ci0g
CisKKyAgICBTdWJzcGFjZSYgc3Vic3BhY2VGb3JPYmplY3RzV2l0aE5vcm1hbERlc3RydWN0b3Io
KSB7IHJldHVybiBtX25vcm1hbERlc3RydWN0b3JTcGFjZTsgfQorICAgIFN1YnNwYWNlJiBzdWJz
cGFjZUZvck9iamVjdHNXaXRoSW1tb3J0YWxTdHJ1Y3R1cmUoKSB7IHJldHVybiBtX2ltbW9ydGFs
U3RydWN0dXJlRGVzdHJ1Y3RvclNwYWNlOyB9CisgICAgU3Vic3BhY2UmIHN1YnNwYWNlRm9yT2Jq
ZWN0c1dpdGhvdXREZXN0cnVjdG9yKCkgeyByZXR1cm4gbV9ub3JtYWxTcGFjZTsgfQorCiAgICAg
dm9pZCByZXNldEFsbG9jYXRvcnMoKTsKIAogICAgIHZvaWQgdmlzaXRXZWFrU2V0cyhIZWFwUm9v
dFZpc2l0b3ImKTsKQEAgLTE0MywyNiArMTYzLDExIEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAg
ZnJpZW5kIGNsYXNzIERlbGF5ZWRSZWxlYXNlU2NvcGU7CiAgICAgZnJpZW5kIGNsYXNzIExMSW50
T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICBmcmllbmQgY2xhc3MgSklUOwogCiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgRnVuY3Rvcj4gdm9pZCBmb3JFYWNoQWxsb2NhdG9yKEZ1bmN0b3ImKTsKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB2b2lkIGZvckVhY2hBbGxvY2F0b3IoKTsKIAotICAg
IC8vIFsgMzIuLi4gMTI4IF0KLSAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IHByZWNpc2VTdGVwID0g
TWFya2VkQmxvY2s6OmF0b21TaXplOwotICAgIHN0YXRpYyBjb25zdCBzaXplX3QgcHJlY2lzZUN1
dG9mZiA9IDEyODsKLSAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IHByZWNpc2VDb3VudCA9IHByZWNp
c2VDdXRvZmYgLyBwcmVjaXNlU3RlcDsKLQotICAgIC8vIFsgMTAyNC4uLiBibG9ja1NpemUgXQot
ICAgIHN0YXRpYyBjb25zdCBzaXplX3QgaW1wcmVjaXNlU3RlcCA9IDIgKiBwcmVjaXNlQ3V0b2Zm
OwotICAgIHN0YXRpYyBjb25zdCBzaXplX3QgaW1wcmVjaXNlQ3V0b2ZmID0gTWFya2VkQmxvY2s6
OmJsb2NrU2l6ZSAvIDI7Ci0gICAgc3RhdGljIGNvbnN0IHNpemVfdCBpbXByZWNpc2VDb3VudCA9
IGltcHJlY2lzZUN1dG9mZiAvIGltcHJlY2lzZVN0ZXA7Ci0KLSAgICBzdHJ1Y3QgU3Vic3BhY2Ug
ewotICAgICAgICBzdGQ6OmFycmF5PE1hcmtlZEFsbG9jYXRvciwgcHJlY2lzZUNvdW50PiBwcmVj
aXNlQWxsb2NhdG9yczsKLSAgICAgICAgc3RkOjphcnJheTxNYXJrZWRBbGxvY2F0b3IsIGltcHJl
Y2lzZUNvdW50PiBpbXByZWNpc2VBbGxvY2F0b3JzOwotICAgICAgICBNYXJrZWRBbGxvY2F0b3Ig
bGFyZ2VBbGxvY2F0b3I7Ci0gICAgfTsKLQogICAgIFN1YnNwYWNlIG1fbm9ybWFsRGVzdHJ1Y3Rv
clNwYWNlOwogICAgIFN1YnNwYWNlIG1faW1tb3J0YWxTdHJ1Y3R1cmVEZXN0cnVjdG9yU3BhY2U7
CiAgICAgU3Vic3BhY2UgbV9ub3JtYWxTcGFjZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnRlcnByZXRlci9TdGFja1Zpc2l0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ludGVycHJldGVyL1N0YWNrVmlzaXRvci5jcHAKaW5kZXggMjlkYzk2N2Y0ODRkZGVlZjEx
ZmFhYTU4NWFlYmNlZGNkMjZiZDViYi4uZTEzMzg1ZmUxYmRkMTM5ZGEzYmYzNzE2ZTM5ZTZiZGJh
OTUzMTQxYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1N0
YWNrVmlzaXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1N0
YWNrVmlzaXRvci5jcHAKQEAgLTI3MSw2ICsyNzEsNyBAQCBBcmd1bWVudHMqIFN0YWNrVmlzaXRv
cjo6RnJhbWU6OmNyZWF0ZUFyZ3VtZW50cygpCiAgICAgICAgIEFTU0VSVChtX2lubGluZUNhbGxG
cmFtZSk7CiAgICAgICAgIGFyZ3VtZW50cyA9IEFyZ3VtZW50czo6Y3JlYXRlKHZtLCBwaHlzaWNh
bEZyYW1lLCBtX2lubGluZUNhbGxGcmFtZSwgbW9kZSk7CiAgICAgICAgIGFyZ3VtZW50cy0+dGVh
ck9mZihwaHlzaWNhbEZyYW1lLCBtX2lubGluZUNhbGxGcmFtZSk7CisgICAgICAgIGpzQ2FzdDxB
cmd1bWVudHMqPigoSlNDZWxsKilhcmd1bWVudHMpOwogICAgIH0gZWxzZSAKICNlbmRpZgogICAg
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuY3BwCmluZGV4IDE3
Mjc5NTFlZmVlNGVjMTdlOTE1MjYzMTUyMDY0ZGZmM2RjZWY5OWQuLjU0ZDE0NTMzNGVkYjkyNDZm
NTQ3Y2YwNjMzMzA5MDJmZDc2YTdhMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FyZ3VtZW50cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQXJndW1lbnRzLmNwcApAQCAtNDYsMTEgKzQ2LDkgQEAgdm9pZCBBcmd1bWVudHM6OnZpc2l0
Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICBBU1NFUlRf
R0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CiAgICAgSlNPYmplY3Q6OnZp
c2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CiAKLSAgICBpZiAodGhpc09iamVjdC0+
bV9yZWdpc3RlckFycmF5KSB7Ci0gICAgICAgIHZpc2l0b3IuY29weUxhdGVyKHRoaXNPYmplY3Qs
IEFyZ3VtZW50c1JlZ2lzdGVyQXJyYXlDb3B5VG9rZW4sIAotICAgICAgICAgICAgdGhpc09iamVj
dC0+bV9yZWdpc3RlckFycmF5LmdldCgpLCB0aGlzT2JqZWN0LT5yZWdpc3RlckFycmF5U2l6ZUlu
Qnl0ZXMoKSk7Ci0gICAgICAgIHZpc2l0b3IuYXBwZW5kVmFsdWVzKHRoaXNPYmplY3QtPm1fcmVn
aXN0ZXJBcnJheS5nZXQoKSwgdGhpc09iamVjdC0+bV9udW1Bcmd1bWVudHMpOwotICAgIH0KKyAg
ICBpZiAodGhpc09iamVjdC0+aXNUb3JuT2ZmKCkpCisgICAgICAgIHZpc2l0b3IuYXBwZW5kVmFs
dWVzKCZ0aGlzT2JqZWN0LT5yZWdpc3RlckFycmF5KCksIHRoaXNPYmplY3QtPm1fbnVtQXJndW1l
bnRzKTsKKwogICAgIGlmICh0aGlzT2JqZWN0LT5tX3Nsb3dBcmd1bWVudERhdGEpIHsKICAgICAg
ICAgdmlzaXRvci5jb3B5TGF0ZXIodGhpc09iamVjdCwgQXJndW1lbnRzU2xvd0FyZ3VtZW50RGF0
YUNvcHlUb2tlbiwKICAgICAgICAgICAgIHRoaXNPYmplY3QtPm1fc2xvd0FyZ3VtZW50RGF0YS5n
ZXQoKSwgU2xvd0FyZ3VtZW50RGF0YTo6c2l6ZUZvck51bUFyZ3VtZW50cyh0aGlzT2JqZWN0LT5t
X251bUFyZ3VtZW50cykpOwpAQCAtNjYsMjIgKzY0LDYgQEAgdm9pZCBBcmd1bWVudHM6OmNvcHlC
YWNraW5nU3RvcmUoSlNDZWxsKiBjZWxsLCBDb3B5VmlzaXRvciYgdmlzaXRvciwgQ29weVRva2Vu
IHQKICAgICAKIAogICAgIHN3aXRjaCAodG9rZW4pIHsKLSAgICBjYXNlIEFyZ3VtZW50c1JlZ2lz
dGVyQXJyYXlDb3B5VG9rZW46IHsKLSAgICAgICAgV3JpdGVCYXJyaWVyPFVua25vd24+KiByZWdp
c3RlckFycmF5ID0gdGhpc09iamVjdC0+bV9yZWdpc3RlckFycmF5LmdldCgpOwotICAgICAgICBp
ZiAoIXJlZ2lzdGVyQXJyYXkpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgaWYgKHZp
c2l0b3IuY2hlY2tJZlNob3VsZENvcHkocmVnaXN0ZXJBcnJheSkpIHsKLSAgICAgICAgICAgIHNp
emVfdCBieXRlcyA9IHRoaXNPYmplY3QtPnJlZ2lzdGVyQXJyYXlTaXplSW5CeXRlcygpOwotICAg
ICAgICAgICAgV3JpdGVCYXJyaWVyPFVua25vd24+KiBuZXdSZWdpc3RlckFycmF5ID0gc3RhdGlj
X2Nhc3Q8V3JpdGVCYXJyaWVyPFVua25vd24+Kj4odmlzaXRvci5hbGxvY2F0ZU5ld1NwYWNlKGJ5
dGVzKSk7Ci0gICAgICAgICAgICBtZW1jcHkobmV3UmVnaXN0ZXJBcnJheSwgcmVnaXN0ZXJBcnJh
eSwgYnl0ZXMpOwotICAgICAgICAgICAgdGhpc09iamVjdC0+bV9yZWdpc3RlckFycmF5LnNldFdp
dGhvdXRXcml0ZUJhcnJpZXIobmV3UmVnaXN0ZXJBcnJheSk7Ci0gICAgICAgICAgICB0aGlzT2Jq
ZWN0LT5tX3JlZ2lzdGVycyA9IG5ld1JlZ2lzdGVyQXJyYXkgLSBDYWxsRnJhbWU6Om9mZnNldEZv
cigxKSAtIDE7Ci0gICAgICAgICAgICB2aXNpdG9yLmRpZENvcHkocmVnaXN0ZXJBcnJheSwgYnl0
ZXMpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KICAgICBjYXNlIEFyZ3Vt
ZW50c1Nsb3dBcmd1bWVudERhdGFDb3B5VG9rZW46IHsKICAgICAgICAgU2xvd0FyZ3VtZW50RGF0
YSogc2xvd0FyZ3VtZW50RGF0YSA9IHRoaXNPYmplY3QtPm1fc2xvd0FyZ3VtZW50RGF0YS5nZXQo
KTsKICAgICAgICAgaWYgKCFzbG93QXJndW1lbnREYXRhKQpAQCAtMzYwLDE1ICszNDIsMTIgQEAg
Ym9vbCBBcmd1bWVudHM6OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOYW0KIAogICAgIHJldHVybiBCYXNlOjpkZWZpbmVPd25Qcm9w
ZXJ0eShvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgc2hvdWxkVGhyb3cp
OwogfQotCisvKgogdm9pZCBBcmd1bWVudHM6OmFsbG9jYXRlUmVnaXN0ZXJBcnJheShWTSYgdm0p
CiB7Ci0gICAgQVNTRVJUKCFtX3JlZ2lzdGVyQXJyYXkpOwotICAgIHZvaWQqIGJhY2tpbmdTdG9y
ZTsKLSAgICBpZiAoIXZtLmhlYXAudHJ5QWxsb2NhdGVTdG9yYWdlKHRoaXMsIHJlZ2lzdGVyQXJy
YXlTaXplSW5CeXRlcygpLCAmYmFja2luZ1N0b3JlKSkKKyAgICBpZiAoIXJlZ2lzdGVyQXJyYXlT
aXplSW5CeXRlcygpKQogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAg
IG1fcmVnaXN0ZXJBcnJheS5zZXQodm0sIHRoaXMsIHN0YXRpY19jYXN0PFdyaXRlQmFycmllcjxV
bmtub3duPio+KGJhY2tpbmdTdG9yZSkpOwotfQorfSovCiAKIHZvaWQgQXJndW1lbnRzOjp0ZWFy
T2ZmKENhbGxGcmFtZSogY2FsbEZyYW1lKQogewpAQCAtMzgwLDkgKzM1OSw4IEBAIHZvaWQgQXJn
dW1lbnRzOjp0ZWFyT2ZmKENhbGxGcmFtZSogY2FsbEZyYW1lKQogCiAgICAgLy8gTXVzdCBiZSBj
YWxsZWQgZm9yIHRoZSBzYW1lIGNhbGwgZnJhbWUgZnJvbSB3aGljaCBpdCB3YXMgY3JlYXRlZC4K
ICAgICBBU1NFUlQoYml0d2lzZV9jYXN0PFdyaXRlQmFycmllcjxVbmtub3duPio+KGNhbGxGcmFt
ZSkgPT0gbV9yZWdpc3RlcnMpOwotICAgIAotICAgIGFsbG9jYXRlUmVnaXN0ZXJBcnJheShjYWxs
RnJhbWUtPnZtKCkpOwotICAgIG1fcmVnaXN0ZXJzID0gbV9yZWdpc3RlckFycmF5LmdldCgpIC0g
Q2FsbEZyYW1lOjpvZmZzZXRGb3IoMSkgLSAxOworCisgICAgbV9yZWdpc3RlcnMgPSAmcmVnaXN0
ZXJBcnJheSgpIC0gQ2FsbEZyYW1lOjpvZmZzZXRGb3IoMSkgLSAxOwogCiAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBtX251bUFyZ3VtZW50czsgKytpKSB7CiAgICAgICAgIGlmIChtX3Nsb3dB
cmd1bWVudERhdGEgJiYgbV9zbG93QXJndW1lbnREYXRhLT5zbG93QXJndW1lbnRzKClbaV0uc3Rh
dHVzID09IFNsb3dBcmd1bWVudDo6Q2FwdHVyZWQpCkBAIC0zOTksOSArMzc3LDggQEAgdm9pZCBB
cmd1bWVudHM6OnRlYXJPZmYoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIElubGluZUNhbGxGcmFtZSog
aW5saW5lQ2FsbEZyYW1lKQogICAgIAogICAgIGlmICghbV9udW1Bcmd1bWVudHMpCiAgICAgICAg
IHJldHVybjsKLSAgICAKLSAgICBhbGxvY2F0ZVJlZ2lzdGVyQXJyYXkoY2FsbEZyYW1lLT52bSgp
KTsKLSAgICBtX3JlZ2lzdGVycyA9IG1fcmVnaXN0ZXJBcnJheS5nZXQoKSAtIENhbGxGcmFtZTo6
b2Zmc2V0Rm9yKDEpIC0gMTsKKworICAgIG1fcmVnaXN0ZXJzID0gJnJlZ2lzdGVyQXJyYXkoKSAt
IENhbGxGcmFtZTo6b2Zmc2V0Rm9yKDEpIC0gMTsKIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgbV9udW1Bcmd1bWVudHM7ICsraSkgewogICAgICAgICBWYWx1ZVJlY292ZXJ5JiByZWNvdmVy
eSA9IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzW2kgKyAxXTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQXJndW1lbnRzLmgKaW5kZXggOGM0ODAzNWU4ZWYzNTZkNTQzZGQ2MjIzMWU3
ZmEzNmE3MTdlNTU0Zi4uNzg1YjJmYjY2M2U2MzI5ODk5ZDI3NzY5NjMyNTc4N2JkYTkyNmZmMiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmgKQEAgLTQ4LDE0ICs0
OCwxNCBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgQXJndW1lbnRzKiBjcmVhdGUoVk0mIHZtLCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSwgQXJndW1lbnRzTW9kZSBtb2RlID0gTm9ybWFsQXJndW1lbnRz
Q3JlYXRpb25Nb2RlKQogICAgIHsKLSAgICAgICAgQXJndW1lbnRzKiBhcmd1bWVudHMgPSBuZXcg
KE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxBcmd1bWVudHM+KHZtLmhlYXApKSBBcmd1bWVudHMoY2Fs
bEZyYW1lKTsKKyAgICAgICAgQXJndW1lbnRzKiBhcmd1bWVudHMgPSBuZXcgKE5vdE51bGwsIGFs
bG9jYXRlQ2VsbDxBcmd1bWVudHM+KHZtLmhlYXAsIG9mZnNldE9mUmVnaXN0ZXJBcnJheSgpICsg
cmVnaXN0ZXJBcnJheVNpemVJbkJ5dGVzKGNhbGxGcmFtZSkpKSBBcmd1bWVudHMoY2FsbEZyYW1l
KTsKICAgICAgICAgYXJndW1lbnRzLT5maW5pc2hDcmVhdGlvbihjYWxsRnJhbWUsIG1vZGUpOwog
ICAgICAgICByZXR1cm4gYXJndW1lbnRzOwogICAgIH0KICAgICAgICAgCiAgICAgc3RhdGljIEFy
Z3VtZW50cyogY3JlYXRlKFZNJiB2bSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIElubGluZUNhbGxG
cmFtZSogaW5saW5lQ2FsbEZyYW1lLCBBcmd1bWVudHNNb2RlIG1vZGUgPSBOb3JtYWxBcmd1bWVu
dHNDcmVhdGlvbk1vZGUpCiAgICAgewotICAgICAgICBBcmd1bWVudHMqIGFyZ3VtZW50cyA9IG5l
dyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEFyZ3VtZW50cz4odm0uaGVhcCkpIEFyZ3VtZW50cyhj
YWxsRnJhbWUpOworICAgICAgICBBcmd1bWVudHMqIGFyZ3VtZW50cyA9IG5ldyAoTm90TnVsbCwg
YWxsb2NhdGVDZWxsPEFyZ3VtZW50cz4odm0uaGVhcCwgb2Zmc2V0T2ZSZWdpc3RlckFycmF5KCkg
KyByZWdpc3RlckFycmF5U2l6ZUluQnl0ZXMoaW5saW5lQ2FsbEZyYW1lKSkpIEFyZ3VtZW50cyhj
YWxsRnJhbWUpOwogICAgICAgICBhcmd1bWVudHMtPmZpbmlzaENyZWF0aW9uKGNhbGxGcmFtZSwg
aW5saW5lQ2FsbEZyYW1lLCBtb2RlKTsKICAgICAgICAgcmV0dXJuIGFyZ3VtZW50czsKICAgICB9
CkBAIC04Niw3ICs4Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvcHlUb0FyZ3VtZW50cyhFeGVj
U3RhdGUqLCBDYWxsRnJhbWUqLCB1aW50MzJfdCBjb3B5TGVuZ3RoLCBpbnQzMl90IGZpcnN0QXJn
dW1lbnRPZmZzZXQpOwogICAgIHZvaWQgdGVhck9mZihDYWxsRnJhbWUqKTsKICAgICB2b2lkIHRl
YXJPZmYoQ2FsbEZyYW1lKiwgSW5saW5lQ2FsbEZyYW1lKik7Ci0gICAgYm9vbCBpc1Rvcm5PZmYo
KSBjb25zdCB7IHJldHVybiBtX3JlZ2lzdGVyQXJyYXkuZ2V0KCk7IH0KKyAgICBib29sIGlzVG9y
bk9mZigpIGNvbnN0IHsgcmV0dXJuIG1fcmVnaXN0ZXJzID09ICgmcmVnaXN0ZXJBcnJheSgpIC0g
Q2FsbEZyYW1lOjpvZmZzZXRGb3IoMSkgLSAxKTsgfQogCiAgICAgc3RhdGljIFN0cnVjdHVyZSog
Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YWx1ZSBwcm90b3R5cGUpIAogICAgIHsgCkBAIC05OCwxNSArOTgsOSBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZk92ZXJyb2RlTGVuZ3RoKCkgeyByZXR1cm4gT0JKRUNU
X09GRlNFVE9GKEFyZ3VtZW50cywgbV9vdmVycm9kZUxlbmd0aCk7IH0KICAgICBzdGF0aWMgcHRy
ZGlmZl90IG9mZnNldE9mSXNTdHJpY3RNb2RlKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEFy
Z3VtZW50cywgbV9pc1N0cmljdE1vZGUpOyB9CiAgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRP
ZlJlZ2lzdGVycygpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihBcmd1bWVudHMsIG1fcmVnaXN0
ZXJzKTsgfQotICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZSZWdpc3RlckFycmF5KCkgeyBy
ZXR1cm4gT0JKRUNUX09GRlNFVE9GKEFyZ3VtZW50cywgbV9yZWdpc3RlckFycmF5KTsgfQorICAg
IHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZSZWdpc3RlckFycmF5KCkgeyByZXR1cm4gV1RGOjpy
b3VuZFVwVG9NdWx0aXBsZU9mPDg+KHNpemVvZihBcmd1bWVudHMpKTsgfQogICAgIHN0YXRpYyBw
dHJkaWZmX3Qgb2Zmc2V0T2ZTbG93QXJndW1lbnREYXRhKCkgeyByZXR1cm4gT0JKRUNUX09GRlNF
VE9GKEFyZ3VtZW50cywgbV9zbG93QXJndW1lbnREYXRhKTsgfQogICAgIHN0YXRpYyBwdHJkaWZm
X3Qgb2Zmc2V0T2ZDYWxsZWUoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoQXJndW1lbnRzLCBt
X2NhbGxlZSk7IH0KLQotICAgIHN0YXRpYyBzaXplX3QgYWxsb2NhdGlvblNpemUoc2l6ZV90IGlu
bGluZUNhcGFjaXR5KQotICAgIHsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChpbmxpbmVDYXBhY2l0
eSwgIWlubGluZUNhcGFjaXR5KTsKLSAgICAgICAgcmV0dXJuIHNpemVvZihBcmd1bWVudHMpOwot
ICAgIH0KICAgICAKIHByb3RlY3RlZDoKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0
dXJlRmxhZ3MgPSBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBJbnRlcmNlcHRzR2V0T3du
UHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvIHwgT3ZlcnJpZGVzR2V0
UHJvcGVydHlOYW1lcyB8IEpTT2JqZWN0OjpTdHJ1Y3R1cmVGbGFnczsKQEAgLTEyNiw4ICsxMjAs
OCBAQCBwcml2YXRlOgogICAgIHZvaWQgY3JlYXRlU3RyaWN0TW9kZUNhbGxlcklmTmVjZXNzYXJ5
KEV4ZWNTdGF0ZSopOwogICAgIHZvaWQgY3JlYXRlU3RyaWN0TW9kZUNhbGxlZUlmTmVjZXNzYXJ5
KEV4ZWNTdGF0ZSopOwogCi0gICAgc2l6ZV90IHJlZ2lzdGVyQXJyYXlTaXplSW5CeXRlcygpIGNv
bnN0IHsgcmV0dXJuIHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pICogbV9udW1Bcmd1bWVu
dHM7IH0KLSAgICB2b2lkIGFsbG9jYXRlUmVnaXN0ZXJBcnJheShWTSYpOworICAgIHN0YXRpYyBz
aXplX3QgcmVnaXN0ZXJBcnJheVNpemVJbkJ5dGVzKENhbGxGcmFtZSogY2FsbEZyYW1lKSB7IHJl
dHVybiBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KSAqIGNhbGxGcmFtZS0+YXJndW1lbnRD
b3VudCgpOyB9CisgICAgc3RhdGljIHNpemVfdCByZWdpc3RlckFycmF5U2l6ZUluQnl0ZXMoSW5s
aW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUpIHsgcmV0dXJuIHNpemVvZihXcml0ZUJhcnJp
ZXI8VW5rbm93bj4pICogKGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKSAtIDEpOyB9
CiAgICAgYm9vbCBpc0FyZ3VtZW50KHNpemVfdCk7CiAgICAgYm9vbCB0cnlTZXRBcmd1bWVudChW
TSYsIHNpemVfdCBhcmd1bWVudCwgSlNWYWx1ZSk7CiAgICAgSlNWYWx1ZSB0cnlHZXRBcmd1bWVu
dChzaXplX3QgYXJndW1lbnQpOwpAQCAtMTUxLDcgKzE0NSw4IEBAIHByaXZhdGU6CiAgICAgYm9v
bCBtX2lzU3RyaWN0TW9kZTsKIAogICAgIFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4qIG1fcmVn
aXN0ZXJzOwotICAgIENvcHlXcml0ZUJhcnJpZXI8V3JpdGVCYXJyaWVyPFVua25vd24+PiBtX3Jl
Z2lzdGVyQXJyYXk7CisgICAgV3JpdGVCYXJyaWVyPFVua25vd24+JiByZWdpc3RlckFycmF5KCkg
eyByZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8V3JpdGVCYXJyaWVyPFVua25vd24+Kj4ocmVpbnRl
cnByZXRfY2FzdDxjaGFyKj4odGhpcykgKyBvZmZzZXRPZlJlZ2lzdGVyQXJyYXkoKSk7IH0KKyAg
ICBjb25zdCBXcml0ZUJhcnJpZXI8VW5rbm93bj4mIHJlZ2lzdGVyQXJyYXkoKSBjb25zdCB7IHJl
dHVybiAqcmVpbnRlcnByZXRfY2FzdDxjb25zdCBXcml0ZUJhcnJpZXI8VW5rbm93bj4qPihyZWlu
dGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPih0aGlzKSArIG9mZnNldE9mUmVnaXN0ZXJBcnJheSgp
KTsgfQogCiBwdWJsaWM6CiAgICAgc3RydWN0IFNsb3dBcmd1bWVudERhdGEgewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>239905</attachid>
            <date>2014-10-15 16:18:45 -0700</date>
            <delta_ts>2014-10-16 14:40:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137751-20141015161850.patch</filename>
            <type>text/plain</type>
            <size>21101</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc0NzAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
MTM5YmJlNmNlMTk1NmY2NjYzYTczNzQ0OWE4YjdlOTZmZGQ5OGU2Li44ODEwYWVkZDZkZDUyYjU0
YTRjMDQyYzUxYWQ3YWMyMjEzYjVhZDMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NSBAQAorMjAxNC0xMC0xNSAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgor
CisgICAgICAgIFVzZSBhIHNpbmdsZSBhbGxvY2F0aW9uIGZvciB0aGUgQXJndW1lbnRzIG9iamVj
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3NzUx
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBw
YXRjaCByZW1vdmVzIHRoZSBzZWNvbmRhcnkgYWxsb2NhdGlvbiBmb3IgcGFyYW1ldGVycyBpbiB0
aGUgQXJndW1lbnRzCisgICAgICAgIG9iamVjdC4gIFRoaXMgaXMgZmFpbHkgc2ltcGxlLCBidXQg
d2UgbmVlZGVkIHRvIG1ha2UgaXQgcG9zc2libGUgZm9yIHRoZSBKSVQKKyAgICAgICAgdG8gYWxs
b2NhdGUgYSB2YXJpYWJsZSBHQyBvYmplY3QuICBUbyBkbyB0aGlzIGkndmUgYWRkZWQgYSBuZXcg
CisgICAgICAgIGVtaXRBbGxvY2F0ZVZhcmlhYmxlU2l6ZWRKU09iamVjdCBmdW5jdGlvbiB0byB0
aGUgSklUIHRoYXQgZG9lcyB0aGUgd29yayB0bworICAgICAgICBmaW5kIHRoZSBjb3JyZWN0IGhl
YXAgZm9yIGEgdmFyaWFibGUgc2l6ZWQgYWxsb2NhdGlvbiBhbmQgdGhlbiBidW1wIHRoYXQKKyAg
ICAgICAgYWxsb2NhdG9yLgorCisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdEFsbG9jYXRlQXJndW1lbnRz
KToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdEFsbG9jYXRlVmFyaWFibGVTaXplZEpTT2JqZWN0KToKKyAg
ICAgICAgKiBoZWFwL0NvcHlUb2tlbi5oOgorICAgICAgICAqIGhlYXAvSGVhcC5oOgorICAgICAg
ICAoSlNDOjpIZWFwOjpzdWJzcGFjZUZvck9iamVjdFdpdGhvdXREZXN0cnVjdG9yKToKKyAgICAg
ICAgKEpTQzo6SGVhcDo6c3Vic3BhY2VGb3JPYmplY3ROb3JtYWxEZXN0cnVjdG9yKToKKyAgICAg
ICAgKEpTQzo6SGVhcDo6c3Vic3BhY2VGb3JPYmplY3RzV2l0aEltbW9ydGFsU3RydWN0dXJlKToK
KyAgICAgICAgKiBoZWFwL01hcmtlZFNwYWNlLmg6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNl
OjpzdWJzcGFjZUZvck9iamVjdHNXaXRoTm9ybWFsRGVzdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6
Ok1hcmtlZFNwYWNlOjpzdWJzcGFjZUZvck9iamVjdHNXaXRoSW1tb3J0YWxTdHJ1Y3R1cmUpOgor
ICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6c3Vic3BhY2VGb3JPYmplY3RzV2l0aG91dERlc3Ry
dWN0b3IpOgorICAgICAgICAqIGludGVycHJldGVyL1N0YWNrVmlzaXRvci5jcHA6CisgICAgICAg
IChKU0M6OlN0YWNrVmlzaXRvcjo6RnJhbWU6OmNyZWF0ZUFyZ3VtZW50cyk6CisgICAgICAgICog
cnVudGltZS9Bcmd1bWVudHMuY3BwOgorICAgICAgICAoSlNDOjpBcmd1bWVudHM6OnZpc2l0Q2hp
bGRyZW4pOgorICAgICAgICAoSlNDOjpBcmd1bWVudHM6OmNvcHlCYWNraW5nU3RvcmUpOgorICAg
ICAgICAoSlNDOjpBcmd1bWVudHM6OnRlYXJPZmYpOgorICAgICAgICAoSlNDOjpBcmd1bWVudHM6
OmFsbG9jYXRlUmVnaXN0ZXJBcnJheSk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9Bcmd1
bWVudHMuaDoKKyAgICAgICAgKEpTQzo6QXJndW1lbnRzOjpjcmVhdGUpOgorICAgICAgICAoSlND
OjpBcmd1bWVudHM6OmlzVG9ybk9mZik6CisgICAgICAgIChKU0M6OkFyZ3VtZW50czo6b2Zmc2V0
T2ZSZWdpc3RlckFycmF5KToKKyAgICAgICAgKEpTQzo6QXJndW1lbnRzOjpyZWdpc3RlckFycmF5
U2l6ZUluQnl0ZXMpOgorICAgICAgICAoSlNDOjpBcmd1bWVudHM6OnJlZ2lzdGVyQXJyYXkpOgor
ICAgICAgICAoSlNDOjpBcmd1bWVudHM6OmFsbG9jYXRpb25TaXplKTogRGVsZXRlZC4KKwogMjAx
NC0xMC0xNCAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBb
V2luXSBVbnJldmlld2VkIGdhcmRlbmluZy4gSWdub3JlIFZpc3VhbCBTdHVkaW8gKi5zZGYgZmls
ZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3Bw
CmluZGV4IDRjZjY5YmZiMzBjOTNhYzQ3OTM4MTkzMGNiZmFmZjhlNjcwNDA2MDcuLmJjYzI0Y2I5
NjMxOWJmNDdmNGQ2NTA5MGJjZDJjODI3NWM4ZjRmYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC0xMTEsNyArMTExLDExIEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRBbGxvY2F0ZUpTQXJyYXkoR1BSUmVnIHJlc3VsdEdQUiwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsCiB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0QWxsb2NhdGVB
cmd1bWVudHMoR1BSUmVnIHJlc3VsdEdQUiwgR1BSUmVnIHNjcmF0Y2hHUFIxLCBHUFJSZWcgc2Ny
YXRjaEdQUjIsIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCYgc2xvd1BhdGgpCiB7CiAgICAgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUgPSBtX2ppdC5ncmFwaCgpLmdsb2JhbE9iamVjdEZvcihtX2N1cnJl
bnROb2RlLT5vcmlnaW4uc2VtYW50aWMpLT5hcmd1bWVudHNTdHJ1Y3R1cmUoKTsKLSAgICBlbWl0
QWxsb2NhdGVEZXN0cnVjdGlibGVPYmplY3Q8QXJndW1lbnRzPihyZXN1bHRHUFIsIHN0cnVjdHVy
ZSwgc2NyYXRjaEdQUjEsIHNjcmF0Y2hHUFIyLCBzbG93UGF0aCk7CisKKyAgICBtX2ppdC5sb2Fk
MzIoSklUQ29tcGlsZXI6OnBheWxvYWRGb3IoSlNTdGFjazo6QXJndW1lbnRDb3VudCksIHNjcmF0
Y2hHUFIxKTsKKyAgICBtX2ppdC5tdWwzMihUcnVzdGVkSW1tMzIoc2l6ZW9mKEpTVmFsdWUpKSwg
c2NyYXRjaEdQUjEsIHNjcmF0Y2hHUFIxKTsKKyAgICBtX2ppdC5hZGQzMihUcnVzdGVkSW1tMzIo
QXJndW1lbnRzOjpvZmZzZXRPZklubGluZVJlZ2lzdGVyQXJyYXkoKSksIHNjcmF0Y2hHUFIxKTsK
KyAgICBlbWl0QWxsb2NhdGVWYXJpYWJsZVNpemVkSlNPYmplY3Q8QXJndW1lbnRzPihyZXN1bHRH
UFIsIHN0cnVjdHVyZSwgc2NyYXRjaEdQUjEsIHNjcmF0Y2hHUFIxLCBzY3JhdGNoR1BSMiwgc2xv
d1BhdGgpOwogCiAgICAgbV9qaXQuc3RvcmVQdHIoVHJ1c3RlZEltbVB0cigwKSwgTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBBcmd1bWVudHM6Om9mZnNldE9mQWN0aXZhdGlvbigp
KSk7CiAKQEAgLTEyNCwxMSArMTI4LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRBbGxv
Y2F0ZUFyZ3VtZW50cyhHUFJSZWcgcmVzdWx0R1BSLCBHUFJSZWcgc2NyYXRjaEdQUjEsCiAgICAg
ICAgIG1faml0LnN0b3JlOChUcnVzdGVkSW1tMzIoMSksIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KHJlc3VsdEdQUiwgQXJndW1lbnRzOjpvZmZzZXRPZklzU3RyaWN0TW9kZSgpKSk7CiAKICAgICBt
X2ppdC5zdG9yZVB0cihHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3MocmVzdWx0R1BSLCBBcmd1bWVudHM6Om9mZnNldE9mUmVnaXN0ZXJzKCkpKTsKLSAg
ICBtX2ppdC5zdG9yZVB0cihUcnVzdGVkSW1tUHRyKDApLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhyZXN1bHRHUFIsIEFyZ3VtZW50czo6b2Zmc2V0T2ZSZWdpc3RlckFycmF5KCkpKTsKICAgICBt
X2ppdC5zdG9yZVB0cihUcnVzdGVkSW1tUHRyKDApLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhy
ZXN1bHRHUFIsIEFyZ3VtZW50czo6b2Zmc2V0T2ZTbG93QXJndW1lbnREYXRhKCkpKTsKIAogICAg
IG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IoSlNTdGFjazo6Q2FsbGVlKSwg
c2NyYXRjaEdQUjEpOwogICAgIG1faml0LnN0b3JlUHRyKHNjcmF0Y2hHUFIxLCBNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIEFyZ3VtZW50czo6b2Zmc2V0T2ZDYWxsZWUoKSkpOwor
CiB9CiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0aW9uQ2hlY2soRXhpdEtpbmQga2lu
ZCwgSlNWYWx1ZVNvdXJjZSBqc1ZhbHVlU291cmNlLCBOb2RlKiBub2RlLCBNYWNyb0Fzc2VtYmxl
cjo6SnVtcCBqdW1wVG9GYWlsKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5oCmluZGV4IGVkNjU5MjJhY2VhMzJiM2I2M2UxZmM4YTU0MWYzYmM2NDlmYjNl
M2EuLjFhNjQyNTMzYWYyMTQwNThiZjkwMzAxNmM4ZTY5MjQ3ODc2OTg0NjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKQEAgLTIyNTIsNiArMjI1
MiwzOCBAQCBwdWJsaWM6CiAgICAgICAgIGVtaXRBbGxvY2F0ZUpTT2JqZWN0KHJlc3VsdEdQUiwg
c2NyYXRjaEdQUjEsIHN0cnVjdHVyZSwgc3RvcmFnZSwgc2NyYXRjaEdQUjIsIHNsb3dQYXRoKTsK
ICAgICB9CiAKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2xhc3NUeXBlLCB0eXBlbmFtZSBTdHJ1
Y3R1cmVUeXBlPiAvLyBTdHJ1Y3R1cmVUeXBlIGFuZCBTdG9yYWdlVHlwZSBjYW4gYmUgR1BSIG9y
IEltbVB0ci4KKyAgICB2b2lkIGVtaXRBbGxvY2F0ZVZhcmlhYmxlU2l6ZWRKU09iamVjdChHUFJS
ZWcgcmVzdWx0R1BSLCBTdHJ1Y3R1cmVUeXBlIHN0cnVjdHVyZSwgR1BSUmVnIGFsbG9jYXRpb25T
aXplLCBHUFJSZWcgc2NyYXRjaEdQUjEsIEdQUlJlZyBzY3JhdGNoR1BSMiwgTWFjcm9Bc3NlbWJs
ZXI6Okp1bXBMaXN0JiBzbG93UGF0aCkKKyAgICB7CisgICAgICAgIHN0YXRpY19hc3NlcnQoIShN
YXJrZWRTcGFjZTo6cHJlY2lzZVN0ZXAgJiAoTWFya2VkU3BhY2U6OnByZWNpc2VTdGVwIC0gMSkp
LCAiTWFya2VkU3BhY2U6OnByZWNpc2VTdGVwIG11c3QgYmUgYSBwb3dlciBvZiB0d28uIik7Cisg
ICAgICAgIHN0YXRpY19hc3NlcnQoIShNYXJrZWRTcGFjZTo6aW1wcmVjaXNlU3RlcCAmIChNYXJr
ZWRTcGFjZTo6aW1wcmVjaXNlU3RlcCAtIDEpKSwgIk1hcmtlZFNwYWNlOjppbXByZWNpc2VTdGVw
IG11c3QgYmUgYSBwb3dlciBvZiB0d28uIik7CisKKyAgICAgICAgTWFya2VkU3BhY2U6OlN1YnNw
YWNlKiBzdWJzcGFjZTsKKyAgICAgICAgaWYgKENsYXNzVHlwZTo6bmVlZHNEZXN0cnVjdGlvbiAm
JiBDbGFzc1R5cGU6Omhhc0ltbW9ydGFsU3RydWN0dXJlKQorICAgICAgICAgICAgc3Vic3BhY2Ug
PSAmbV9qaXQudm0oKS0+aGVhcC5zdWJzcGFjZUZvck9iamVjdHNXaXRoSW1tb3J0YWxTdHJ1Y3R1
cmUoKTsKKyAgICAgICAgZWxzZSBpZiAoQ2xhc3NUeXBlOjpuZWVkc0Rlc3RydWN0aW9uKQorICAg
ICAgICAgICAgc3Vic3BhY2UgPSAmbV9qaXQudm0oKS0+aGVhcC5zdWJzcGFjZUZvck9iamVjdE5v
cm1hbERlc3RydWN0b3IoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgc3Vic3BhY2UgPSAm
bV9qaXQudm0oKS0+aGVhcC5zdWJzcGFjZUZvck9iamVjdFdpdGhvdXREZXN0cnVjdG9yKCk7Cisg
ICAgICAgIG1faml0LmFkZDMyKFRydXN0ZWRJbW0zMihNYXJrZWRTcGFjZTo6cHJlY2lzZVN0ZXAg
LSAxKSwgYWxsb2NhdGlvblNpemUpOworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBub3RT
bWFsbCA9IG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIGFsbG9j
YXRpb25TaXplLCBUcnVzdGVkSW1tMzIoTWFya2VkU3BhY2U6OnByZWNpc2VDdXRvZmYpKTsKKyAg
ICAgICAgbV9qaXQucnNoaWZ0MzIoYWxsb2NhdGlvblNpemUsIFRydXN0ZWRJbW0zMihnZXRMU0JT
ZXQoTWFya2VkU3BhY2U6OnByZWNpc2VTdGVwKSksIHNjcmF0Y2hHUFIxKTsKKyAgICAgICAgbV9q
aXQubXVsMzIoVHJ1c3RlZEltbTMyKHNpemVvZihNYXJrZWRBbGxvY2F0b3IpKSwgc2NyYXRjaEdQ
UjEsIHNjcmF0Y2hHUFIxKTsKKyAgICAgICAgbV9qaXQuYWRkUHRyKE1hY3JvQXNzZW1ibGVyOjpU
cnVzdGVkSW1tUHRyKCZzdWJzcGFjZS0+cHJlY2lzZUFsbG9jYXRvcnNbMF0pLCBzY3JhdGNoR1BS
MSk7CisKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgc2VsZWN0ZWRTbWFsbFNwYWNlID0g
bV9qaXQuanVtcCgpOworICAgICAgICBub3RTbWFsbC5saW5rKCZtX2ppdCk7CisgICAgICAgIHNs
b3dQYXRoLmFwcGVuZChtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFs
LCBhbGxvY2F0aW9uU2l6ZSwgVHJ1c3RlZEltbTMyKE1hcmtlZFNwYWNlOjppbXByZWNpc2VDdXRv
ZmYpKSk7CisgICAgICAgIG1faml0LnJzaGlmdDMyKGFsbG9jYXRpb25TaXplLCBUcnVzdGVkSW1t
MzIoZ2V0TFNCU2V0KE1hcmtlZFNwYWNlOjppbXByZWNpc2VTdGVwKSksIHNjcmF0Y2hHUFIxKTsK
KyAgICAgICAgbV9qaXQubXVsMzIoVHJ1c3RlZEltbTMyKHNpemVvZihNYXJrZWRBbGxvY2F0b3Ip
KSwgc2NyYXRjaEdQUjEsIHNjcmF0Y2hHUFIxKTsKKyAgICAgICAgbV9qaXQuYWRkUHRyKE1hY3Jv
QXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKCZzdWJzcGFjZS0+aW1wcmVjaXNlQWxsb2NhdG9yc1sw
XSksIHNjcmF0Y2hHUFIxKTsKKworICAgICAgICBzZWxlY3RlZFNtYWxsU3BhY2UubGluaygmbV9q
aXQpOworCisgICAgICAgIGVtaXRBbGxvY2F0ZUpTT2JqZWN0KHJlc3VsdEdQUiwgc2NyYXRjaEdQ
UjEsIFRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwgVHJ1c3RlZEltbVB0cigwKSwgc2NyYXRjaEdQ
UjIsIHNsb3dQYXRoKTsKKyAgICAgICAgbV9qaXQuc3RvcmVQdHIoVHJ1c3RlZEltbVB0cihzdHJ1
Y3R1cmUtPmNsYXNzSW5mbygpKSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBK
U0Rlc3RydWN0aWJsZU9iamVjdDo6Y2xhc3NJbmZvT2Zmc2V0KCkpKTsKKyAgICB9CisKICAgICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgICB2b2lkIGVtaXRBbGxvY2F0ZURlc3RydWN0aWJsZU9i
amVjdChHUFJSZWcgcmVzdWx0R1BSLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgCiAgICAgICAgIEdQ
UlJlZyBzY3JhdGNoR1BSMSwgR1BSUmVnIHNjcmF0Y2hHUFIyLCBNYWNyb0Fzc2VtYmxlcjo6SnVt
cExpc3QmIHNsb3dQYXRoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
Q29weVRva2VuLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db3B5VG9rZW4uaAppbmRl
eCBiYmE1ZTkxYTgwYjk1MTk5N2ZkMjIzYTFhYzVmOWU4MTYzMWRiMTEwLi4zZTE2NzlhNmM3MjZj
MDM2ZjQ3YmZhOGVmY2QzMWQzNjAyYjNkYzc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9Db3B5VG9rZW4uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9D
b3B5VG9rZW4uaApAQCAtMzIsNyArMzIsNiBAQCBlbnVtIENvcHlUb2tlbiB7CiAgICAgQnV0dGVy
Zmx5Q29weVRva2VuLAogICAgIFR5cGVkQXJyYXlWZWN0b3JDb3B5VG9rZW4sCiAgICAgTWFwQmFj
a2luZ1N0b3JlQ29weVRva2VuLAotICAgIEFyZ3VtZW50c1JlZ2lzdGVyQXJyYXlDb3B5VG9rZW4s
CiAgICAgQXJndW1lbnRzU2xvd0FyZ3VtZW50RGF0YUNvcHlUb2tlbgogfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvSGVhcC5oCmluZGV4IDE4NThmMWI2NjM4MThjNWFjNDMxYTlhOTZmMjRhZDg5NDYw
N2JjODMuLjBkYzFlMmUzOWVkMjdhZDVjMjBlZWYwYmNlOTY0MDNlNzlkYjQ2NDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9IZWFwLmgKQEAgLTEzNSw3ICsxMzUsOSBAQCBwdWJsaWM6CiAgICAgSGVh
cE9wZXJhdGlvbiBvcGVyYXRpb25JblByb2dyZXNzKCkgeyByZXR1cm4gbV9vcGVyYXRpb25JblBy
b2dyZXNzOyB9CiAgICAgLy8gdHJ1ZSBpZiBhbiBhbGxvY2F0aW9uIG9yIGNvbGxlY3Rpb24gaXMg
aW4gcHJvZ3Jlc3MKICAgICBib29sIGlzQnVzeSgpOwotICAgIAorICAgIE1hcmtlZFNwYWNlOjpT
dWJzcGFjZSYgc3Vic3BhY2VGb3JPYmplY3RXaXRob3V0RGVzdHJ1Y3RvcigpIHsgcmV0dXJuIG1f
b2JqZWN0U3BhY2Uuc3Vic3BhY2VGb3JPYmplY3RzV2l0aG91dERlc3RydWN0b3IoKTsgfQorICAg
IE1hcmtlZFNwYWNlOjpTdWJzcGFjZSYgc3Vic3BhY2VGb3JPYmplY3ROb3JtYWxEZXN0cnVjdG9y
KCkgeyByZXR1cm4gbV9vYmplY3RTcGFjZS5zdWJzcGFjZUZvck9iamVjdHNXaXRoTm9ybWFsRGVz
dHJ1Y3RvcigpOyB9CisgICAgTWFya2VkU3BhY2U6OlN1YnNwYWNlJiBzdWJzcGFjZUZvck9iamVj
dHNXaXRoSW1tb3J0YWxTdHJ1Y3R1cmUoKSB7IHJldHVybiBtX29iamVjdFNwYWNlLnN1YnNwYWNl
Rm9yT2JqZWN0c1dpdGhJbW1vcnRhbFN0cnVjdHVyZSgpOyB9CiAgICAgTWFya2VkQWxsb2NhdG9y
JiBhbGxvY2F0b3JGb3JPYmplY3RXaXRob3V0RGVzdHJ1Y3RvcihzaXplX3QgYnl0ZXMpIHsgcmV0
dXJuIG1fb2JqZWN0U3BhY2UuYWxsb2NhdG9yRm9yKGJ5dGVzKTsgfQogICAgIE1hcmtlZEFsbG9j
YXRvciYgYWxsb2NhdG9yRm9yT2JqZWN0V2l0aE5vcm1hbERlc3RydWN0b3Ioc2l6ZV90IGJ5dGVz
KSB7IHJldHVybiBtX29iamVjdFNwYWNlLm5vcm1hbERlc3RydWN0b3JBbGxvY2F0b3JGb3IoYnl0
ZXMpOyB9CiAgICAgTWFya2VkQWxsb2NhdG9yJiBhbGxvY2F0b3JGb3JPYmplY3RXaXRoSW1tb3J0
YWxTdHJ1Y3R1cmVEZXN0cnVjdG9yKHNpemVfdCBieXRlcykgeyByZXR1cm4gbV9vYmplY3RTcGFj
ZS5pbW1vcnRhbFN0cnVjdHVyZURlc3RydWN0b3JBbGxvY2F0b3JGb3IoYnl0ZXMpOyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuaAppbmRleCAyNTNkMmYxNDU0ZDQ3NjFi
ZDBjN2U2Y2M2NWU3ZGEyZDUyOGNiNzA0Li5mZjBiYTUwZGVjYTViOTdkMTFjMGM4ZDgyMGEwM2Uz
YTVlMDAxNzliIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRT
cGFjZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmgKQEAg
LTgyLDYgKzgyLDIyIEBAIHN0cnVjdCBTaXplIDogTWFya2VkQmxvY2s6OkNvdW50RnVuY3RvciB7
CiBjbGFzcyBNYXJrZWRTcGFjZSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTWFya2VkU3Bh
Y2UpOwogcHVibGljOgorICAgIC8vIFsgMzIuLi4gMTI4IF0KKyAgICBzdGF0aWMgY29uc3Qgc2l6
ZV90IHByZWNpc2VTdGVwID0gTWFya2VkQmxvY2s6OmF0b21TaXplOworICAgIHN0YXRpYyBjb25z
dCBzaXplX3QgcHJlY2lzZUN1dG9mZiA9IDEyODsKKyAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IHBy
ZWNpc2VDb3VudCA9IHByZWNpc2VDdXRvZmYgLyBwcmVjaXNlU3RlcDsKKworICAgIC8vIFsgMTAy
NC4uLiBibG9ja1NpemUgXQorICAgIHN0YXRpYyBjb25zdCBzaXplX3QgaW1wcmVjaXNlU3RlcCA9
IDIgKiBwcmVjaXNlQ3V0b2ZmOworICAgIHN0YXRpYyBjb25zdCBzaXplX3QgaW1wcmVjaXNlQ3V0
b2ZmID0gTWFya2VkQmxvY2s6OmJsb2NrU2l6ZSAvIDI7CisgICAgc3RhdGljIGNvbnN0IHNpemVf
dCBpbXByZWNpc2VDb3VudCA9IGltcHJlY2lzZUN1dG9mZiAvIGltcHJlY2lzZVN0ZXA7CisKKyAg
ICBzdHJ1Y3QgU3Vic3BhY2UgeworICAgICAgICBzdGQ6OmFycmF5PE1hcmtlZEFsbG9jYXRvciwg
cHJlY2lzZUNvdW50PiBwcmVjaXNlQWxsb2NhdG9yczsKKyAgICAgICAgc3RkOjphcnJheTxNYXJr
ZWRBbGxvY2F0b3IsIGltcHJlY2lzZUNvdW50PiBpbXByZWNpc2VBbGxvY2F0b3JzOworICAgICAg
ICBNYXJrZWRBbGxvY2F0b3IgbGFyZ2VBbGxvY2F0b3I7CisgICAgfTsKKwogICAgIE1hcmtlZFNw
YWNlKEhlYXAqKTsKICAgICB+TWFya2VkU3BhY2UoKTsKICAgICB2b2lkIGxhc3RDaGFuY2VUb0Zp
bmFsaXplKCk7CkBAIC05Myw3ICsxMDksMTEgQEAgcHVibGljOgogICAgIHZvaWQqIGFsbG9jYXRl
V2l0aE5vcm1hbERlc3RydWN0b3Ioc2l6ZV90KTsKICAgICB2b2lkKiBhbGxvY2F0ZVdpdGhJbW1v
cnRhbFN0cnVjdHVyZURlc3RydWN0b3Ioc2l6ZV90KTsKICAgICB2b2lkKiBhbGxvY2F0ZVdpdGhv
dXREZXN0cnVjdG9yKHNpemVfdCk7Ci0gCisKKyAgICBTdWJzcGFjZSYgc3Vic3BhY2VGb3JPYmpl
Y3RzV2l0aE5vcm1hbERlc3RydWN0b3IoKSB7IHJldHVybiBtX25vcm1hbERlc3RydWN0b3JTcGFj
ZTsgfQorICAgIFN1YnNwYWNlJiBzdWJzcGFjZUZvck9iamVjdHNXaXRoSW1tb3J0YWxTdHJ1Y3R1
cmUoKSB7IHJldHVybiBtX2ltbW9ydGFsU3RydWN0dXJlRGVzdHJ1Y3RvclNwYWNlOyB9CisgICAg
U3Vic3BhY2UmIHN1YnNwYWNlRm9yT2JqZWN0c1dpdGhvdXREZXN0cnVjdG9yKCkgeyByZXR1cm4g
bV9ub3JtYWxTcGFjZTsgfQorCiAgICAgdm9pZCByZXNldEFsbG9jYXRvcnMoKTsKIAogICAgIHZv
aWQgdmlzaXRXZWFrU2V0cyhIZWFwUm9vdFZpc2l0b3ImKTsKQEAgLTE0MywyNiArMTYzLDExIEBA
IHB1YmxpYzoKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIERlbGF5ZWRSZWxlYXNlU2NvcGU7
CiAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICBmcmllbmQgY2xh
c3MgSklUOwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gdm9pZCBmb3JFYWNoQWxs
b2NhdG9yKEZ1bmN0b3ImKTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB2b2lkIGZv
ckVhY2hBbGxvY2F0b3IoKTsKIAotICAgIC8vIFsgMzIuLi4gMTI4IF0KLSAgICBzdGF0aWMgY29u
c3Qgc2l6ZV90IHByZWNpc2VTdGVwID0gTWFya2VkQmxvY2s6OmF0b21TaXplOwotICAgIHN0YXRp
YyBjb25zdCBzaXplX3QgcHJlY2lzZUN1dG9mZiA9IDEyODsKLSAgICBzdGF0aWMgY29uc3Qgc2l6
ZV90IHByZWNpc2VDb3VudCA9IHByZWNpc2VDdXRvZmYgLyBwcmVjaXNlU3RlcDsKLQotICAgIC8v
IFsgMTAyNC4uLiBibG9ja1NpemUgXQotICAgIHN0YXRpYyBjb25zdCBzaXplX3QgaW1wcmVjaXNl
U3RlcCA9IDIgKiBwcmVjaXNlQ3V0b2ZmOwotICAgIHN0YXRpYyBjb25zdCBzaXplX3QgaW1wcmVj
aXNlQ3V0b2ZmID0gTWFya2VkQmxvY2s6OmJsb2NrU2l6ZSAvIDI7Ci0gICAgc3RhdGljIGNvbnN0
IHNpemVfdCBpbXByZWNpc2VDb3VudCA9IGltcHJlY2lzZUN1dG9mZiAvIGltcHJlY2lzZVN0ZXA7
Ci0KLSAgICBzdHJ1Y3QgU3Vic3BhY2UgewotICAgICAgICBzdGQ6OmFycmF5PE1hcmtlZEFsbG9j
YXRvciwgcHJlY2lzZUNvdW50PiBwcmVjaXNlQWxsb2NhdG9yczsKLSAgICAgICAgc3RkOjphcnJh
eTxNYXJrZWRBbGxvY2F0b3IsIGltcHJlY2lzZUNvdW50PiBpbXByZWNpc2VBbGxvY2F0b3JzOwot
ICAgICAgICBNYXJrZWRBbGxvY2F0b3IgbGFyZ2VBbGxvY2F0b3I7Ci0gICAgfTsKLQogICAgIFN1
YnNwYWNlIG1fbm9ybWFsRGVzdHJ1Y3RvclNwYWNlOwogICAgIFN1YnNwYWNlIG1faW1tb3J0YWxT
dHJ1Y3R1cmVEZXN0cnVjdG9yU3BhY2U7CiAgICAgU3Vic3BhY2UgbV9ub3JtYWxTcGFjZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TdGFja1Zpc2l0b3Iu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1N0YWNrVmlzaXRvci5jcHAK
aW5kZXggMjlkYzk2N2Y0ODRkZGVlZjExZmFhYTU4NWFlYmNlZGNkMjZiZDViYi4uZTEzMzg1ZmUx
YmRkMTM5ZGEzYmYzNzE2ZTM5ZTZiZGJhOTUzMTQxYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL1N0YWNrVmlzaXRvci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL1N0YWNrVmlzaXRvci5jcHAKQEAgLTI3MSw2ICsyNzEsNyBA
QCBBcmd1bWVudHMqIFN0YWNrVmlzaXRvcjo6RnJhbWU6OmNyZWF0ZUFyZ3VtZW50cygpCiAgICAg
ICAgIEFTU0VSVChtX2lubGluZUNhbGxGcmFtZSk7CiAgICAgICAgIGFyZ3VtZW50cyA9IEFyZ3Vt
ZW50czo6Y3JlYXRlKHZtLCBwaHlzaWNhbEZyYW1lLCBtX2lubGluZUNhbGxGcmFtZSwgbW9kZSk7
CiAgICAgICAgIGFyZ3VtZW50cy0+dGVhck9mZihwaHlzaWNhbEZyYW1lLCBtX2lubGluZUNhbGxG
cmFtZSk7CisgICAgICAgIGpzQ2FzdDxBcmd1bWVudHMqPigoSlNDZWxsKilhcmd1bWVudHMpOwog
ICAgIH0gZWxzZSAKICNlbmRpZgogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Bcmd1bWVudHMuY3BwCmluZGV4IDE3Mjc5NTFlZmVlNGVjMTdlOTE1MjYzMTUyMDY0ZGZmM2Rj
ZWY5OWQuLjY0MGZkOTM3YzQyYzA4YTY4NTkxYTBjM2VkMDAwMTA2YjFhOTUwZjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmNwcApAQCAtNDMsMTQgKzQzLDEz
IEBAIGNvbnN0IENsYXNzSW5mbyBBcmd1bWVudHM6OnNfaW5mbyA9IHsgIkFyZ3VtZW50cyIsICZC
YXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRICiB2b2lkIEFyZ3VtZW50czo6dmlzaXRDaGlsZHJl
bihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewogICAgIEFyZ3VtZW50cyog
dGhpc09iamVjdCA9IGpzQ2FzdDxBcmd1bWVudHMqPihjZWxsKTsKKwogICAgIEFTU0VSVF9HQ19P
QkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKICAgICBKU09iamVjdDo6dmlzaXRD
aGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKIAotICAgIGlmICh0aGlzT2JqZWN0LT5tX3Jl
Z2lzdGVyQXJyYXkpIHsKLSAgICAgICAgdmlzaXRvci5jb3B5TGF0ZXIodGhpc09iamVjdCwgQXJn
dW1lbnRzUmVnaXN0ZXJBcnJheUNvcHlUb2tlbiwgCi0gICAgICAgICAgICB0aGlzT2JqZWN0LT5t
X3JlZ2lzdGVyQXJyYXkuZ2V0KCksIHRoaXNPYmplY3QtPnJlZ2lzdGVyQXJyYXlTaXplSW5CeXRl
cygpKTsKLSAgICAgICAgdmlzaXRvci5hcHBlbmRWYWx1ZXModGhpc09iamVjdC0+bV9yZWdpc3Rl
ckFycmF5LmdldCgpLCB0aGlzT2JqZWN0LT5tX251bUFyZ3VtZW50cyk7Ci0gICAgfQorICAgIGlm
ICh0aGlzT2JqZWN0LT5pc1Rvcm5PZmYoKSkKKyAgICAgICAgdmlzaXRvci5hcHBlbmRWYWx1ZXMo
JnRoaXNPYmplY3QtPnJlZ2lzdGVyQXJyYXkoKSwgdGhpc09iamVjdC0+bV9udW1Bcmd1bWVudHMp
OworCiAgICAgaWYgKHRoaXNPYmplY3QtPm1fc2xvd0FyZ3VtZW50RGF0YSkgewogICAgICAgICB2
aXNpdG9yLmNvcHlMYXRlcih0aGlzT2JqZWN0LCBBcmd1bWVudHNTbG93QXJndW1lbnREYXRhQ29w
eVRva2VuLAogICAgICAgICAgICAgdGhpc09iamVjdC0+bV9zbG93QXJndW1lbnREYXRhLmdldCgp
LCBTbG93QXJndW1lbnREYXRhOjpzaXplRm9yTnVtQXJndW1lbnRzKHRoaXNPYmplY3QtPm1fbnVt
QXJndW1lbnRzKSk7CkBAIC02NiwyMiArNjUsNiBAQCB2b2lkIEFyZ3VtZW50czo6Y29weUJhY2tp
bmdTdG9yZShKU0NlbGwqIGNlbGwsIENvcHlWaXNpdG9yJiB2aXNpdG9yLCBDb3B5VG9rZW4gdAog
ICAgIAogCiAgICAgc3dpdGNoICh0b2tlbikgewotICAgIGNhc2UgQXJndW1lbnRzUmVnaXN0ZXJB
cnJheUNvcHlUb2tlbjogewotICAgICAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4qIHJlZ2lzdGVy
QXJyYXkgPSB0aGlzT2JqZWN0LT5tX3JlZ2lzdGVyQXJyYXkuZ2V0KCk7Ci0gICAgICAgIGlmICgh
cmVnaXN0ZXJBcnJheSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBpZiAodmlzaXRv
ci5jaGVja0lmU2hvdWxkQ29weShyZWdpc3RlckFycmF5KSkgewotICAgICAgICAgICAgc2l6ZV90
IGJ5dGVzID0gdGhpc09iamVjdC0+cmVnaXN0ZXJBcnJheVNpemVJbkJ5dGVzKCk7Ci0gICAgICAg
ICAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4qIG5ld1JlZ2lzdGVyQXJyYXkgPSBzdGF0aWNfY2Fz
dDxXcml0ZUJhcnJpZXI8VW5rbm93bj4qPih2aXNpdG9yLmFsbG9jYXRlTmV3U3BhY2UoYnl0ZXMp
KTsKLSAgICAgICAgICAgIG1lbWNweShuZXdSZWdpc3RlckFycmF5LCByZWdpc3RlckFycmF5LCBi
eXRlcyk7Ci0gICAgICAgICAgICB0aGlzT2JqZWN0LT5tX3JlZ2lzdGVyQXJyYXkuc2V0V2l0aG91
dFdyaXRlQmFycmllcihuZXdSZWdpc3RlckFycmF5KTsKLSAgICAgICAgICAgIHRoaXNPYmplY3Qt
Pm1fcmVnaXN0ZXJzID0gbmV3UmVnaXN0ZXJBcnJheSAtIENhbGxGcmFtZTo6b2Zmc2V0Rm9yKDEp
IC0gMTsKLSAgICAgICAgICAgIHZpc2l0b3IuZGlkQ29weShyZWdpc3RlckFycmF5LCBieXRlcyk7
Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQogICAgIGNhc2UgQXJndW1lbnRz
U2xvd0FyZ3VtZW50RGF0YUNvcHlUb2tlbjogewogICAgICAgICBTbG93QXJndW1lbnREYXRhKiBz
bG93QXJndW1lbnREYXRhID0gdGhpc09iamVjdC0+bV9zbG93QXJndW1lbnREYXRhLmdldCgpOwog
ICAgICAgICBpZiAoIXNsb3dBcmd1bWVudERhdGEpCkBAIC0zNjEsMTUgKzM0NCw2IEBAIGJvb2wg
QXJndW1lbnRzOjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUq
IGV4ZWMsIFByb3BlcnR5TmFtCiAgICAgcmV0dXJuIEJhc2U6OmRlZmluZU93blByb3BlcnR5KG9i
amVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCBzaG91bGRUaHJvdyk7CiB9CiAK
LXZvaWQgQXJndW1lbnRzOjphbGxvY2F0ZVJlZ2lzdGVyQXJyYXkoVk0mIHZtKQotewotICAgIEFT
U0VSVCghbV9yZWdpc3RlckFycmF5KTsKLSAgICB2b2lkKiBiYWNraW5nU3RvcmU7Ci0gICAgaWYg
KCF2bS5oZWFwLnRyeUFsbG9jYXRlU3RvcmFnZSh0aGlzLCByZWdpc3RlckFycmF5U2l6ZUluQnl0
ZXMoKSwgJmJhY2tpbmdTdG9yZSkpCi0gICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci0gICAgbV9yZWdpc3RlckFycmF5LnNldCh2bSwgdGhpcywgc3RhdGljX2Nhc3Q8V3JpdGVC
YXJyaWVyPFVua25vd24+Kj4oYmFja2luZ1N0b3JlKSk7Ci19Ci0KIHZvaWQgQXJndW1lbnRzOjp0
ZWFyT2ZmKENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIGlmIChpc1Rvcm5PZmYoKSkKQEAg
LTM4MCwxMyArMzU0LDE0IEBAIHZvaWQgQXJndW1lbnRzOjp0ZWFyT2ZmKENhbGxGcmFtZSogY2Fs
bEZyYW1lKQogCiAgICAgLy8gTXVzdCBiZSBjYWxsZWQgZm9yIHRoZSBzYW1lIGNhbGwgZnJhbWUg
ZnJvbSB3aGljaCBpdCB3YXMgY3JlYXRlZC4KICAgICBBU1NFUlQoYml0d2lzZV9jYXN0PFdyaXRl
QmFycmllcjxVbmtub3duPio+KGNhbGxGcmFtZSkgPT0gbV9yZWdpc3RlcnMpOwotICAgIAotICAg
IGFsbG9jYXRlUmVnaXN0ZXJBcnJheShjYWxsRnJhbWUtPnZtKCkpOwotICAgIG1fcmVnaXN0ZXJz
ID0gbV9yZWdpc3RlckFycmF5LmdldCgpIC0gQ2FsbEZyYW1lOjpvZmZzZXRGb3IoMSkgLSAxOwor
CisgICAgbV9yZWdpc3RlcnMgPSAmcmVnaXN0ZXJBcnJheSgpIC0gQ2FsbEZyYW1lOjpvZmZzZXRG
b3IoMSkgLSAxOwogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX251bUFyZ3VtZW50czsg
KytpKSB7Ci0gICAgICAgIGlmIChtX3Nsb3dBcmd1bWVudERhdGEgJiYgbV9zbG93QXJndW1lbnRE
YXRhLT5zbG93QXJndW1lbnRzKClbaV0uc3RhdHVzID09IFNsb3dBcmd1bWVudDo6Q2FwdHVyZWQp
CisgICAgICAgIGlmIChtX3Nsb3dBcmd1bWVudERhdGEgJiYgbV9zbG93QXJndW1lbnREYXRhLT5z
bG93QXJndW1lbnRzKClbaV0uc3RhdHVzID09IFNsb3dBcmd1bWVudDo6Q2FwdHVyZWQpIHsKKyAg
ICAgICAgICAgIG1fcmVnaXN0ZXJzW0NhbGxGcmFtZTo6YXJndW1lbnRPZmZzZXQoaSldLnNldFVu
ZGVmaW5lZCgpOwogICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KICAgICAgICAgdHJ5
U2V0QXJndW1lbnQoY2FsbEZyYW1lLT52bSgpLCBpLCBjYWxsRnJhbWUtPmFyZ3VtZW50QWZ0ZXJD
YXB0dXJlKGkpKTsKICAgICB9CiB9CkBAIC0zOTksOSArMzc0LDggQEAgdm9pZCBBcmd1bWVudHM6
OnRlYXJPZmYoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIElubGluZUNhbGxGcmFtZSogaW5saW5lQ2Fs
bEZyYW1lKQogICAgIAogICAgIGlmICghbV9udW1Bcmd1bWVudHMpCiAgICAgICAgIHJldHVybjsK
LSAgICAKLSAgICBhbGxvY2F0ZVJlZ2lzdGVyQXJyYXkoY2FsbEZyYW1lLT52bSgpKTsKLSAgICBt
X3JlZ2lzdGVycyA9IG1fcmVnaXN0ZXJBcnJheS5nZXQoKSAtIENhbGxGcmFtZTo6b2Zmc2V0Rm9y
KDEpIC0gMTsKKworICAgIG1fcmVnaXN0ZXJzID0gJnJlZ2lzdGVyQXJyYXkoKSAtIENhbGxGcmFt
ZTo6b2Zmc2V0Rm9yKDEpIC0gMTsKIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9udW1B
cmd1bWVudHM7ICsraSkgewogICAgICAgICBWYWx1ZVJlY292ZXJ5JiByZWNvdmVyeSA9IGlubGlu
ZUNhbGxGcmFtZS0+YXJndW1lbnRzW2kgKyAxXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQXJndW1lbnRzLmgKaW5kZXggOGM0ODAzNWU4ZWYzNTZkNTQzZGQ2MjIzMWU3ZmEzNmE3MTdl
NTU0Zi4uNjE3MjUxOTFjN2M0OGU4M2QwNzU0NTQwOWQ3Nzk5NTc3YjIyNGU3MyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmgKQEAgLTQ4LDE0ICs0OCwxNCBAQCBw
dWJsaWM6CiAKICAgICBzdGF0aWMgQXJndW1lbnRzKiBjcmVhdGUoVk0mIHZtLCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSwgQXJndW1lbnRzTW9kZSBtb2RlID0gTm9ybWFsQXJndW1lbnRzQ3JlYXRpb25N
b2RlKQogICAgIHsKLSAgICAgICAgQXJndW1lbnRzKiBhcmd1bWVudHMgPSBuZXcgKE5vdE51bGws
IGFsbG9jYXRlQ2VsbDxBcmd1bWVudHM+KHZtLmhlYXApKSBBcmd1bWVudHMoY2FsbEZyYW1lKTsK
KyAgICAgICAgQXJndW1lbnRzKiBhcmd1bWVudHMgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2Vs
bDxBcmd1bWVudHM+KHZtLmhlYXAsIG9mZnNldE9mSW5saW5lUmVnaXN0ZXJBcnJheSgpICsgcmVn
aXN0ZXJBcnJheVNpemVJbkJ5dGVzKGNhbGxGcmFtZSkpKSBBcmd1bWVudHMoY2FsbEZyYW1lKTsK
ICAgICAgICAgYXJndW1lbnRzLT5maW5pc2hDcmVhdGlvbihjYWxsRnJhbWUsIG1vZGUpOwogICAg
ICAgICByZXR1cm4gYXJndW1lbnRzOwogICAgIH0KICAgICAgICAgCiAgICAgc3RhdGljIEFyZ3Vt
ZW50cyogY3JlYXRlKFZNJiB2bSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIElubGluZUNhbGxGcmFt
ZSogaW5saW5lQ2FsbEZyYW1lLCBBcmd1bWVudHNNb2RlIG1vZGUgPSBOb3JtYWxBcmd1bWVudHND
cmVhdGlvbk1vZGUpCiAgICAgewotICAgICAgICBBcmd1bWVudHMqIGFyZ3VtZW50cyA9IG5ldyAo
Tm90TnVsbCwgYWxsb2NhdGVDZWxsPEFyZ3VtZW50cz4odm0uaGVhcCkpIEFyZ3VtZW50cyhjYWxs
RnJhbWUpOworICAgICAgICBBcmd1bWVudHMqIGFyZ3VtZW50cyA9IG5ldyAoTm90TnVsbCwgYWxs
b2NhdGVDZWxsPEFyZ3VtZW50cz4odm0uaGVhcCwgb2Zmc2V0T2ZJbmxpbmVSZWdpc3RlckFycmF5
KCkgKyByZWdpc3RlckFycmF5U2l6ZUluQnl0ZXMoaW5saW5lQ2FsbEZyYW1lKSkpIEFyZ3VtZW50
cyhjYWxsRnJhbWUpOwogICAgICAgICBhcmd1bWVudHMtPmZpbmlzaENyZWF0aW9uKGNhbGxGcmFt
ZSwgaW5saW5lQ2FsbEZyYW1lLCBtb2RlKTsKICAgICAgICAgcmV0dXJuIGFyZ3VtZW50czsKICAg
ICB9CkBAIC04Niw3ICs4Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvcHlUb0FyZ3VtZW50cyhF
eGVjU3RhdGUqLCBDYWxsRnJhbWUqLCB1aW50MzJfdCBjb3B5TGVuZ3RoLCBpbnQzMl90IGZpcnN0
QXJndW1lbnRPZmZzZXQpOwogICAgIHZvaWQgdGVhck9mZihDYWxsRnJhbWUqKTsKICAgICB2b2lk
IHRlYXJPZmYoQ2FsbEZyYW1lKiwgSW5saW5lQ2FsbEZyYW1lKik7Ci0gICAgYm9vbCBpc1Rvcm5P
ZmYoKSBjb25zdCB7IHJldHVybiBtX3JlZ2lzdGVyQXJyYXkuZ2V0KCk7IH0KKyAgICBib29sIGlz
VG9ybk9mZigpIGNvbnN0IHsgcmV0dXJuIG1fcmVnaXN0ZXJzID09ICgmcmVnaXN0ZXJBcnJheSgp
IC0gQ2FsbEZyYW1lOjpvZmZzZXRGb3IoMSkgLSAxKTsgfQogCiAgICAgc3RhdGljIFN0cnVjdHVy
ZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNWYWx1ZSBwcm90b3R5cGUpIAogICAgIHsgCkBAIC05OCwxNSArOTgsOSBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZk92ZXJyb2RlTGVuZ3RoKCkgeyByZXR1cm4gT0JK
RUNUX09GRlNFVE9GKEFyZ3VtZW50cywgbV9vdmVycm9kZUxlbmd0aCk7IH0KICAgICBzdGF0aWMg
cHRyZGlmZl90IG9mZnNldE9mSXNTdHJpY3RNb2RlKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9G
KEFyZ3VtZW50cywgbV9pc1N0cmljdE1vZGUpOyB9CiAgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZz
ZXRPZlJlZ2lzdGVycygpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihBcmd1bWVudHMsIG1fcmVn
aXN0ZXJzKTsgfQotICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZSZWdpc3RlckFycmF5KCkg
eyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEFyZ3VtZW50cywgbV9yZWdpc3RlckFycmF5KTsgfQor
ICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZJbmxpbmVSZWdpc3RlckFycmF5KCkgeyByZXR1
cm4gV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mPDg+KHNpemVvZihBcmd1bWVudHMpKTsgfQogICAg
IHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZTbG93QXJndW1lbnREYXRhKCkgeyByZXR1cm4gT0JK
RUNUX09GRlNFVE9GKEFyZ3VtZW50cywgbV9zbG93QXJndW1lbnREYXRhKTsgfQogICAgIHN0YXRp
YyBwdHJkaWZmX3Qgb2Zmc2V0T2ZDYWxsZWUoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoQXJn
dW1lbnRzLCBtX2NhbGxlZSk7IH0KLQotICAgIHN0YXRpYyBzaXplX3QgYWxsb2NhdGlvblNpemUo
c2l6ZV90IGlubGluZUNhcGFjaXR5KQotICAgIHsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChpbmxp
bmVDYXBhY2l0eSwgIWlubGluZUNhcGFjaXR5KTsKLSAgICAgICAgcmV0dXJuIHNpemVvZihBcmd1
bWVudHMpOwotICAgIH0KICAgICAKIHByb3RlY3RlZDoKICAgICBzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBJbnRlcmNl
cHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvIHwgT3Zl
cnJpZGVzR2V0UHJvcGVydHlOYW1lcyB8IEpTT2JqZWN0OjpTdHJ1Y3R1cmVGbGFnczsKQEAgLTEy
Niw4ICsxMjAsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgY3JlYXRlU3RyaWN0TW9kZUNhbGxlcklm
TmVjZXNzYXJ5KEV4ZWNTdGF0ZSopOwogICAgIHZvaWQgY3JlYXRlU3RyaWN0TW9kZUNhbGxlZUlm
TmVjZXNzYXJ5KEV4ZWNTdGF0ZSopOwogCi0gICAgc2l6ZV90IHJlZ2lzdGVyQXJyYXlTaXplSW5C
eXRlcygpIGNvbnN0IHsgcmV0dXJuIHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pICogbV9u
dW1Bcmd1bWVudHM7IH0KLSAgICB2b2lkIGFsbG9jYXRlUmVnaXN0ZXJBcnJheShWTSYpOworICAg
IHN0YXRpYyBzaXplX3QgcmVnaXN0ZXJBcnJheVNpemVJbkJ5dGVzKENhbGxGcmFtZSogY2FsbEZy
YW1lKSB7IHJldHVybiBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KSAqIGNhbGxGcmFtZS0+
YXJndW1lbnRDb3VudCgpOyB9CisgICAgc3RhdGljIHNpemVfdCByZWdpc3RlckFycmF5U2l6ZUlu
Qnl0ZXMoSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUpIHsgcmV0dXJuIHNpemVvZihX
cml0ZUJhcnJpZXI8VW5rbm93bj4pICogKGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUo
KSAtIDEpOyB9CiAgICAgYm9vbCBpc0FyZ3VtZW50KHNpemVfdCk7CiAgICAgYm9vbCB0cnlTZXRB
cmd1bWVudChWTSYsIHNpemVfdCBhcmd1bWVudCwgSlNWYWx1ZSk7CiAgICAgSlNWYWx1ZSB0cnlH
ZXRBcmd1bWVudChzaXplX3QgYXJndW1lbnQpOwpAQCAtMTUxLDcgKzE0NSw4IEBAIHByaXZhdGU6
CiAgICAgYm9vbCBtX2lzU3RyaWN0TW9kZTsKIAogICAgIFdyaXRlQmFycmllckJhc2U8VW5rbm93
bj4qIG1fcmVnaXN0ZXJzOwotICAgIENvcHlXcml0ZUJhcnJpZXI8V3JpdGVCYXJyaWVyPFVua25v
d24+PiBtX3JlZ2lzdGVyQXJyYXk7CisgICAgV3JpdGVCYXJyaWVyPFVua25vd24+JiByZWdpc3Rl
ckFycmF5KCkgeyByZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8V3JpdGVCYXJyaWVyPFVua25vd24+
Kj4ocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4odGhpcykgKyBvZmZzZXRPZklubGluZVJlZ2lzdGVy
QXJyYXkoKSk7IH0KKyAgICBjb25zdCBXcml0ZUJhcnJpZXI8VW5rbm93bj4mIHJlZ2lzdGVyQXJy
YXkoKSBjb25zdCB7IHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDxjb25zdCBXcml0ZUJhcnJpZXI8
VW5rbm93bj4qPihyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPih0aGlzKSArIG9mZnNldE9m
SW5saW5lUmVnaXN0ZXJBcnJheSgpKTsgfQogCiBwdWJsaWM6CiAgICAgc3RydWN0IFNsb3dBcmd1
bWVudERhdGEgewo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>239972</attachid>
            <date>2014-10-16 14:40:07 -0700</date>
            <delta_ts>2014-10-16 14:41:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137751-20141016144012.patch</filename>
            <type>text/plain</type>
            <size>21094</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc0NzkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
MWIzZGY3MTQ0ZWJjNzk0MTVkZDNhODA4NzkzZDM1ZDliMzc2Y2RkLi5mOGY5NDkxMTI5MmMwNDc2
NTk3YjkwYzk3OTg0ZGJmMDA2ODY3YmQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NSBAQAorMjAxNC0xMC0xNSAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgor
CisgICAgICAgIFVzZSBhIHNpbmdsZSBhbGxvY2F0aW9uIGZvciB0aGUgQXJndW1lbnRzIG9iamVj
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3NzUx
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBw
YXRjaCByZW1vdmVzIHRoZSBzZWNvbmRhcnkgYWxsb2NhdGlvbiBmb3IgcGFyYW1ldGVycyBpbiB0
aGUgQXJndW1lbnRzCisgICAgICAgIG9iamVjdC4gIFRoaXMgaXMgZmFpbHkgc2ltcGxlLCBidXQg
d2UgbmVlZGVkIHRvIG1ha2UgaXQgcG9zc2libGUgZm9yIHRoZSBKSVQKKyAgICAgICAgdG8gYWxs
b2NhdGUgYSB2YXJpYWJsZSBHQyBvYmplY3QuICBUbyBkbyB0aGlzIGkndmUgYWRkZWQgYSBuZXcg
CisgICAgICAgIGVtaXRBbGxvY2F0ZVZhcmlhYmxlU2l6ZWRKU09iamVjdCBmdW5jdGlvbiB0byB0
aGUgSklUIHRoYXQgZG9lcyB0aGUgd29yayB0bworICAgICAgICBmaW5kIHRoZSBjb3JyZWN0IGhl
YXAgZm9yIGEgdmFyaWFibGUgc2l6ZWQgYWxsb2NhdGlvbiBhbmQgdGhlbiBidW1wIHRoYXQKKyAg
ICAgICAgYWxsb2NhdG9yLgorCisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdEFsbG9jYXRlQXJndW1lbnRz
KToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdEFsbG9jYXRlVmFyaWFibGVTaXplZEpTT2JqZWN0KToKKyAg
ICAgICAgKiBoZWFwL0NvcHlUb2tlbi5oOgorICAgICAgICAqIGhlYXAvSGVhcC5oOgorICAgICAg
ICAoSlNDOjpIZWFwOjpzdWJzcGFjZUZvck9iamVjdFdpdGhvdXREZXN0cnVjdG9yKToKKyAgICAg
ICAgKEpTQzo6SGVhcDo6c3Vic3BhY2VGb3JPYmplY3ROb3JtYWxEZXN0cnVjdG9yKToKKyAgICAg
ICAgKEpTQzo6SGVhcDo6c3Vic3BhY2VGb3JPYmplY3RzV2l0aEltbW9ydGFsU3RydWN0dXJlKToK
KyAgICAgICAgKiBoZWFwL01hcmtlZFNwYWNlLmg6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNl
OjpzdWJzcGFjZUZvck9iamVjdHNXaXRoTm9ybWFsRGVzdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6
Ok1hcmtlZFNwYWNlOjpzdWJzcGFjZUZvck9iamVjdHNXaXRoSW1tb3J0YWxTdHJ1Y3R1cmUpOgor
ICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6c3Vic3BhY2VGb3JPYmplY3RzV2l0aG91dERlc3Ry
dWN0b3IpOgorICAgICAgICAqIGludGVycHJldGVyL1N0YWNrVmlzaXRvci5jcHA6CisgICAgICAg
IChKU0M6OlN0YWNrVmlzaXRvcjo6RnJhbWU6OmNyZWF0ZUFyZ3VtZW50cyk6CisgICAgICAgICog
cnVudGltZS9Bcmd1bWVudHMuY3BwOgorICAgICAgICAoSlNDOjpBcmd1bWVudHM6OnZpc2l0Q2hp
bGRyZW4pOgorICAgICAgICAoSlNDOjpBcmd1bWVudHM6OmNvcHlCYWNraW5nU3RvcmUpOgorICAg
ICAgICAoSlNDOjpBcmd1bWVudHM6OnRlYXJPZmYpOgorICAgICAgICAoSlNDOjpBcmd1bWVudHM6
OmFsbG9jYXRlUmVnaXN0ZXJBcnJheSk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9Bcmd1
bWVudHMuaDoKKyAgICAgICAgKEpTQzo6QXJndW1lbnRzOjpjcmVhdGUpOgorICAgICAgICAoSlND
OjpBcmd1bWVudHM6OmlzVG9ybk9mZik6CisgICAgICAgIChKU0M6OkFyZ3VtZW50czo6b2Zmc2V0
T2ZSZWdpc3RlckFycmF5KToKKyAgICAgICAgKEpTQzo6QXJndW1lbnRzOjpyZWdpc3RlckFycmF5
U2l6ZUluQnl0ZXMpOgorICAgICAgICAoSlNDOjpBcmd1bWVudHM6OnJlZ2lzdGVyQXJyYXkpOgor
ICAgICAgICAoSlNDOjpBcmd1bWVudHM6OmFsbG9jYXRpb25TaXplKTogRGVsZXRlZC4KKwogMjAx
NC0xMC0xNSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIEFwcGFy
ZW50bHkgd2UndmUgaGFkIGEgaG9sZSBpbiBhcmd1bWVudHMgY2FwdHVyZSBhbGwgYWxvbmcKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXgg
NGNmNjliZmIzMGM5M2FjNDc5MzgxOTMwY2JmYWZmOGU2NzA0MDYwNy4uYmNjMjRjYjk2MzE5YmY0
N2Y0ZDY1MDkwYmNkMmM4Mjc1YzhmNGZhNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTExMSw3ICsxMTEsMTEgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6ZW1pdEFsbG9jYXRlSlNBcnJheShHUFJSZWcgcmVzdWx0R1BSLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRBbGxvY2F0ZUFyZ3VtZW50
cyhHUFJSZWcgcmVzdWx0R1BSLCBHUFJSZWcgc2NyYXRjaEdQUjEsIEdQUlJlZyBzY3JhdGNoR1BS
MiwgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0JiBzbG93UGF0aCkKIHsKICAgICBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSA9IG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG1fY3VycmVudE5vZGUt
Pm9yaWdpbi5zZW1hbnRpYyktPmFyZ3VtZW50c1N0cnVjdHVyZSgpOwotICAgIGVtaXRBbGxvY2F0
ZURlc3RydWN0aWJsZU9iamVjdDxBcmd1bWVudHM+KHJlc3VsdEdQUiwgc3RydWN0dXJlLCBzY3Jh
dGNoR1BSMSwgc2NyYXRjaEdQUjIsIHNsb3dQYXRoKTsKKworICAgIG1faml0LmxvYWQzMihKSVRD
b21waWxlcjo6cGF5bG9hZEZvcihKU1N0YWNrOjpBcmd1bWVudENvdW50KSwgc2NyYXRjaEdQUjEp
OworICAgIG1faml0Lm11bDMyKFRydXN0ZWRJbW0zMihzaXplb2YoSlNWYWx1ZSkpLCBzY3JhdGNo
R1BSMSwgc2NyYXRjaEdQUjEpOworICAgIG1faml0LmFkZDMyKFRydXN0ZWRJbW0zMihBcmd1bWVu
dHM6Om9mZnNldE9mSW5saW5lUmVnaXN0ZXJBcnJheSgpKSwgc2NyYXRjaEdQUjEpOworICAgIGVt
aXRBbGxvY2F0ZVZhcmlhYmxlU2l6ZWRKU09iamVjdDxBcmd1bWVudHM+KHJlc3VsdEdQUiwgc3Ry
dWN0dXJlLCBzY3JhdGNoR1BSMSwgc2NyYXRjaEdQUjEsIHNjcmF0Y2hHUFIyLCBzbG93UGF0aCk7
CiAKICAgICBtX2ppdC5zdG9yZVB0cihUcnVzdGVkSW1tUHRyKDApLCBNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhyZXN1bHRHUFIsIEFyZ3VtZW50czo6b2Zmc2V0T2ZBY3RpdmF0aW9uKCkpKTsKIApA
QCAtMTI0LDExICsxMjgsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdEFsbG9jYXRlQXJn
dW1lbnRzKEdQUlJlZyByZXN1bHRHUFIsIEdQUlJlZyBzY3JhdGNoR1BSMSwKICAgICAgICAgbV9q
aXQuc3RvcmU4KFRydXN0ZWRJbW0zMigxKSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0
R1BSLCBBcmd1bWVudHM6Om9mZnNldE9mSXNTdHJpY3RNb2RlKCkpKTsKIAogICAgIG1faml0LnN0
b3JlUHRyKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhyZXN1bHRHUFIsIEFyZ3VtZW50czo6b2Zmc2V0T2ZSZWdpc3RlcnMoKSkpOwotICAgIG1faml0
LnN0b3JlUHRyKFRydXN0ZWRJbW1QdHIoMCksIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlc3Vs
dEdQUiwgQXJndW1lbnRzOjpvZmZzZXRPZlJlZ2lzdGVyQXJyYXkoKSkpOwogICAgIG1faml0LnN0
b3JlUHRyKFRydXN0ZWRJbW1QdHIoMCksIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlc3VsdEdQ
UiwgQXJndW1lbnRzOjpvZmZzZXRPZlNsb3dBcmd1bWVudERhdGEoKSkpOwogCiAgICAgbV9qaXQu
bG9hZFB0cihKSVRDb21waWxlcjo6YWRkcmVzc0ZvcihKU1N0YWNrOjpDYWxsZWUpLCBzY3JhdGNo
R1BSMSk7CiAgICAgbV9qaXQuc3RvcmVQdHIoc2NyYXRjaEdQUjEsIE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKHJlc3VsdEdQUiwgQXJndW1lbnRzOjpvZmZzZXRPZkNhbGxlZSgpKSk7CisKIH0KIAog
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRpb25DaGVjayhFeGl0S2luZCBraW5kLCBKU1Zh
bHVlU291cmNlIGpzVmFsdWVTb3VyY2UsIE5vZGUqIG5vZGUsIE1hY3JvQXNzZW1ibGVyOjpKdW1w
IGp1bXBUb0ZhaWwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklULmgKaW5kZXggZWQ2NTkyMmFjZWEzMmIzYjYzZTFmYzhhNTQxZjNiYzY0OWZiM2UzYS4uMWE2
NDI1MzNhZjIxNDA1OGJmOTAzMDE2YzhlNjkyNDc4NzY5ODQ2NCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaApAQCAtMjI1Miw2ICsyMjUyLDM4IEBA
IHB1YmxpYzoKICAgICAgICAgZW1pdEFsbG9jYXRlSlNPYmplY3QocmVzdWx0R1BSLCBzY3JhdGNo
R1BSMSwgc3RydWN0dXJlLCBzdG9yYWdlLCBzY3JhdGNoR1BSMiwgc2xvd1BhdGgpOwogICAgIH0K
IAorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDbGFzc1R5cGUsIHR5cGVuYW1lIFN0cnVjdHVyZVR5
cGU+IC8vIFN0cnVjdHVyZVR5cGUgYW5kIFN0b3JhZ2VUeXBlIGNhbiBiZSBHUFIgb3IgSW1tUHRy
LgorICAgIHZvaWQgZW1pdEFsbG9jYXRlVmFyaWFibGVTaXplZEpTT2JqZWN0KEdQUlJlZyByZXN1
bHRHUFIsIFN0cnVjdHVyZVR5cGUgc3RydWN0dXJlLCBHUFJSZWcgYWxsb2NhdGlvblNpemUsIEdQ
UlJlZyBzY3JhdGNoR1BSMSwgR1BSUmVnIHNjcmF0Y2hHUFIyLCBNYWNyb0Fzc2VtYmxlcjo6SnVt
cExpc3QmIHNsb3dQYXRoKQorICAgIHsKKyAgICAgICAgc3RhdGljX2Fzc2VydCghKE1hcmtlZFNw
YWNlOjpwcmVjaXNlU3RlcCAmIChNYXJrZWRTcGFjZTo6cHJlY2lzZVN0ZXAgLSAxKSksICJNYXJr
ZWRTcGFjZTo6cHJlY2lzZVN0ZXAgbXVzdCBiZSBhIHBvd2VyIG9mIHR3by4iKTsKKyAgICAgICAg
c3RhdGljX2Fzc2VydCghKE1hcmtlZFNwYWNlOjppbXByZWNpc2VTdGVwICYgKE1hcmtlZFNwYWNl
OjppbXByZWNpc2VTdGVwIC0gMSkpLCAiTWFya2VkU3BhY2U6OmltcHJlY2lzZVN0ZXAgbXVzdCBi
ZSBhIHBvd2VyIG9mIHR3by4iKTsKKworICAgICAgICBNYXJrZWRTcGFjZTo6U3Vic3BhY2UqIHN1
YnNwYWNlOworICAgICAgICBpZiAoQ2xhc3NUeXBlOjpuZWVkc0Rlc3RydWN0aW9uICYmIENsYXNz
VHlwZTo6aGFzSW1tb3J0YWxTdHJ1Y3R1cmUpCisgICAgICAgICAgICBzdWJzcGFjZSA9ICZtX2pp
dC52bSgpLT5oZWFwLnN1YnNwYWNlRm9yT2JqZWN0c1dpdGhJbW1vcnRhbFN0cnVjdHVyZSgpOwor
ICAgICAgICBlbHNlIGlmIChDbGFzc1R5cGU6Om5lZWRzRGVzdHJ1Y3Rpb24pCisgICAgICAgICAg
ICBzdWJzcGFjZSA9ICZtX2ppdC52bSgpLT5oZWFwLnN1YnNwYWNlRm9yT2JqZWN0Tm9ybWFsRGVz
dHJ1Y3RvcigpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBzdWJzcGFjZSA9ICZtX2ppdC52
bSgpLT5oZWFwLnN1YnNwYWNlRm9yT2JqZWN0V2l0aG91dERlc3RydWN0b3IoKTsKKyAgICAgICAg
bV9qaXQuYWRkMzIoVHJ1c3RlZEltbTMyKE1hcmtlZFNwYWNlOjpwcmVjaXNlU3RlcCAtIDEpLCBh
bGxvY2F0aW9uU2l6ZSk7CisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG5vdFNtYWxsID0g
bV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgYWxsb2NhdGlvblNp
emUsIFRydXN0ZWRJbW0zMihNYXJrZWRTcGFjZTo6cHJlY2lzZUN1dG9mZikpOworICAgICAgICBt
X2ppdC5yc2hpZnQzMihhbGxvY2F0aW9uU2l6ZSwgVHJ1c3RlZEltbTMyKGdldExTQlNldChNYXJr
ZWRTcGFjZTo6cHJlY2lzZVN0ZXApKSwgc2NyYXRjaEdQUjEpOworICAgICAgICBtX2ppdC5tdWwz
MihUcnVzdGVkSW1tMzIoc2l6ZW9mKE1hcmtlZEFsbG9jYXRvcikpLCBzY3JhdGNoR1BSMSwgc2Ny
YXRjaEdQUjEpOworICAgICAgICBtX2ppdC5hZGRQdHIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJ
bW1QdHIoJnN1YnNwYWNlLT5wcmVjaXNlQWxsb2NhdG9yc1swXSksIHNjcmF0Y2hHUFIxKTsKKwor
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBzZWxlY3RlZFNtYWxsU3BhY2UgPSBtX2ppdC5q
dW1wKCk7CisgICAgICAgIG5vdFNtYWxsLmxpbmsoJm1faml0KTsKKyAgICAgICAgc2xvd1BhdGgu
YXBwZW5kKG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIGFsbG9j
YXRpb25TaXplLCBUcnVzdGVkSW1tMzIoTWFya2VkU3BhY2U6OmltcHJlY2lzZUN1dG9mZikpKTsK
KyAgICAgICAgbV9qaXQucnNoaWZ0MzIoYWxsb2NhdGlvblNpemUsIFRydXN0ZWRJbW0zMihnZXRM
U0JTZXQoTWFya2VkU3BhY2U6OmltcHJlY2lzZVN0ZXApKSwgc2NyYXRjaEdQUjEpOworICAgICAg
ICBtX2ppdC5tdWwzMihUcnVzdGVkSW1tMzIoc2l6ZW9mKE1hcmtlZEFsbG9jYXRvcikpLCBzY3Jh
dGNoR1BSMSwgc2NyYXRjaEdQUjEpOworICAgICAgICBtX2ppdC5hZGRQdHIoTWFjcm9Bc3NlbWJs
ZXI6OlRydXN0ZWRJbW1QdHIoJnN1YnNwYWNlLT5pbXByZWNpc2VBbGxvY2F0b3JzWzBdKSwgc2Ny
YXRjaEdQUjEpOworCisgICAgICAgIHNlbGVjdGVkU21hbGxTcGFjZS5saW5rKCZtX2ppdCk7CisK
KyAgICAgICAgZW1pdEFsbG9jYXRlSlNPYmplY3QocmVzdWx0R1BSLCBzY3JhdGNoR1BSMSwgVHJ1
c3RlZEltbVB0cihzdHJ1Y3R1cmUpLCBUcnVzdGVkSW1tUHRyKDApLCBzY3JhdGNoR1BSMiwgc2xv
d1BhdGgpOworICAgICAgICBtX2ppdC5zdG9yZVB0cihUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZS0+
Y2xhc3NJbmZvKCkpLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTRGVzdHJ1
Y3RpYmxlT2JqZWN0OjpjbGFzc0luZm9PZmZzZXQoKSkpOworICAgIH0KKwogICAgIHRlbXBsYXRl
IDx0eXBlbmFtZSBUPgogICAgIHZvaWQgZW1pdEFsbG9jYXRlRGVzdHJ1Y3RpYmxlT2JqZWN0KEdQ
UlJlZyByZXN1bHRHUFIsIFN0cnVjdHVyZSogc3RydWN0dXJlLCAKICAgICAgICAgR1BSUmVnIHNj
cmF0Y2hHUFIxLCBHUFJSZWcgc2NyYXRjaEdQUjIsIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCYg
c2xvd1BhdGgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db3B5VG9r
ZW4uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvcHlUb2tlbi5oCmluZGV4IGJiYTVl
OTFhODBiOTUxOTk3ZmQyMjNhMWFjNWY5ZTgxNjMxZGIxMTAuLjNlMTY3OWE2YzcyNmMwMzZmNDdi
ZmE4ZWZjZDMxZDM2MDJiM2RjNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0NvcHlUb2tlbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvcHlUb2tl
bi5oCkBAIC0zMiw3ICszMiw2IEBAIGVudW0gQ29weVRva2VuIHsKICAgICBCdXR0ZXJmbHlDb3B5
VG9rZW4sCiAgICAgVHlwZWRBcnJheVZlY3RvckNvcHlUb2tlbiwKICAgICBNYXBCYWNraW5nU3Rv
cmVDb3B5VG9rZW4sCi0gICAgQXJndW1lbnRzUmVnaXN0ZXJBcnJheUNvcHlUb2tlbiwKICAgICBB
cmd1bWVudHNTbG93QXJndW1lbnREYXRhQ29weVRva2VuCiB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9IZWFwLmgKaW5kZXggMTg1OGYxYjY2MzgxOGM1YWM0MzFhOWE5NmYyNGFkODk0NjA3YmM4My4u
MGRjMWUyZTM5ZWQyN2FkNWMyMGVlZjBiY2U5NjQwM2U3OWRiNDY0MiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0hlYXAuaApAQCAtMTM1LDcgKzEzNSw5IEBAIHB1YmxpYzoKICAgICBIZWFwT3BlcmF0
aW9uIG9wZXJhdGlvbkluUHJvZ3Jlc3MoKSB7IHJldHVybiBtX29wZXJhdGlvbkluUHJvZ3Jlc3M7
IH0KICAgICAvLyB0cnVlIGlmIGFuIGFsbG9jYXRpb24gb3IgY29sbGVjdGlvbiBpcyBpbiBwcm9n
cmVzcwogICAgIGJvb2wgaXNCdXN5KCk7Ci0gICAgCisgICAgTWFya2VkU3BhY2U6OlN1YnNwYWNl
JiBzdWJzcGFjZUZvck9iamVjdFdpdGhvdXREZXN0cnVjdG9yKCkgeyByZXR1cm4gbV9vYmplY3RT
cGFjZS5zdWJzcGFjZUZvck9iamVjdHNXaXRob3V0RGVzdHJ1Y3RvcigpOyB9CisgICAgTWFya2Vk
U3BhY2U6OlN1YnNwYWNlJiBzdWJzcGFjZUZvck9iamVjdE5vcm1hbERlc3RydWN0b3IoKSB7IHJl
dHVybiBtX29iamVjdFNwYWNlLnN1YnNwYWNlRm9yT2JqZWN0c1dpdGhOb3JtYWxEZXN0cnVjdG9y
KCk7IH0KKyAgICBNYXJrZWRTcGFjZTo6U3Vic3BhY2UmIHN1YnNwYWNlRm9yT2JqZWN0c1dpdGhJ
bW1vcnRhbFN0cnVjdHVyZSgpIHsgcmV0dXJuIG1fb2JqZWN0U3BhY2Uuc3Vic3BhY2VGb3JPYmpl
Y3RzV2l0aEltbW9ydGFsU3RydWN0dXJlKCk7IH0KICAgICBNYXJrZWRBbGxvY2F0b3ImIGFsbG9j
YXRvckZvck9iamVjdFdpdGhvdXREZXN0cnVjdG9yKHNpemVfdCBieXRlcykgeyByZXR1cm4gbV9v
YmplY3RTcGFjZS5hbGxvY2F0b3JGb3IoYnl0ZXMpOyB9CiAgICAgTWFya2VkQWxsb2NhdG9yJiBh
bGxvY2F0b3JGb3JPYmplY3RXaXRoTm9ybWFsRGVzdHJ1Y3RvcihzaXplX3QgYnl0ZXMpIHsgcmV0
dXJuIG1fb2JqZWN0U3BhY2Uubm9ybWFsRGVzdHJ1Y3RvckFsbG9jYXRvckZvcihieXRlcyk7IH0K
ICAgICBNYXJrZWRBbGxvY2F0b3ImIGFsbG9jYXRvckZvck9iamVjdFdpdGhJbW1vcnRhbFN0cnVj
dHVyZURlc3RydWN0b3Ioc2l6ZV90IGJ5dGVzKSB7IHJldHVybiBtX29iamVjdFNwYWNlLmltbW9y
dGFsU3RydWN0dXJlRGVzdHJ1Y3RvckFsbG9jYXRvckZvcihieXRlcyk7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5oCmluZGV4IDI1M2QyZjE0NTRkNDc2MWJkMGM3ZTZj
YzY1ZTdkYTJkNTI4Y2I3MDQuLmZmMGJhNTBkZWNhNWI5N2QxMWMwYzhkODIwYTAzZTNhNWUwMDE3
OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuaApAQCAtODIsNiAr
ODIsMjIgQEAgc3RydWN0IFNpemUgOiBNYXJrZWRCbG9jazo6Q291bnRGdW5jdG9yIHsKIGNsYXNz
IE1hcmtlZFNwYWNlIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShNYXJrZWRTcGFjZSk7CiBw
dWJsaWM6CisgICAgLy8gWyAzMi4uLiAxMjggXQorICAgIHN0YXRpYyBjb25zdCBzaXplX3QgcHJl
Y2lzZVN0ZXAgPSBNYXJrZWRCbG9jazo6YXRvbVNpemU7CisgICAgc3RhdGljIGNvbnN0IHNpemVf
dCBwcmVjaXNlQ3V0b2ZmID0gMTI4OworICAgIHN0YXRpYyBjb25zdCBzaXplX3QgcHJlY2lzZUNv
dW50ID0gcHJlY2lzZUN1dG9mZiAvIHByZWNpc2VTdGVwOworCisgICAgLy8gWyAxMDI0Li4uIGJs
b2NrU2l6ZSBdCisgICAgc3RhdGljIGNvbnN0IHNpemVfdCBpbXByZWNpc2VTdGVwID0gMiAqIHBy
ZWNpc2VDdXRvZmY7CisgICAgc3RhdGljIGNvbnN0IHNpemVfdCBpbXByZWNpc2VDdXRvZmYgPSBN
YXJrZWRCbG9jazo6YmxvY2tTaXplIC8gMjsKKyAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGltcHJl
Y2lzZUNvdW50ID0gaW1wcmVjaXNlQ3V0b2ZmIC8gaW1wcmVjaXNlU3RlcDsKKworICAgIHN0cnVj
dCBTdWJzcGFjZSB7CisgICAgICAgIHN0ZDo6YXJyYXk8TWFya2VkQWxsb2NhdG9yLCBwcmVjaXNl
Q291bnQ+IHByZWNpc2VBbGxvY2F0b3JzOworICAgICAgICBzdGQ6OmFycmF5PE1hcmtlZEFsbG9j
YXRvciwgaW1wcmVjaXNlQ291bnQ+IGltcHJlY2lzZUFsbG9jYXRvcnM7CisgICAgICAgIE1hcmtl
ZEFsbG9jYXRvciBsYXJnZUFsbG9jYXRvcjsKKyAgICB9OworCiAgICAgTWFya2VkU3BhY2UoSGVh
cCopOwogICAgIH5NYXJrZWRTcGFjZSgpOwogICAgIHZvaWQgbGFzdENoYW5jZVRvRmluYWxpemUo
KTsKQEAgLTkzLDcgKzEwOSwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCogYWxsb2NhdGVXaXRoTm9y
bWFsRGVzdHJ1Y3RvcihzaXplX3QpOwogICAgIHZvaWQqIGFsbG9jYXRlV2l0aEltbW9ydGFsU3Ry
dWN0dXJlRGVzdHJ1Y3RvcihzaXplX3QpOwogICAgIHZvaWQqIGFsbG9jYXRlV2l0aG91dERlc3Ry
dWN0b3Ioc2l6ZV90KTsKLSAKKworICAgIFN1YnNwYWNlJiBzdWJzcGFjZUZvck9iamVjdHNXaXRo
Tm9ybWFsRGVzdHJ1Y3RvcigpIHsgcmV0dXJuIG1fbm9ybWFsRGVzdHJ1Y3RvclNwYWNlOyB9Cisg
ICAgU3Vic3BhY2UmIHN1YnNwYWNlRm9yT2JqZWN0c1dpdGhJbW1vcnRhbFN0cnVjdHVyZSgpIHsg
cmV0dXJuIG1faW1tb3J0YWxTdHJ1Y3R1cmVEZXN0cnVjdG9yU3BhY2U7IH0KKyAgICBTdWJzcGFj
ZSYgc3Vic3BhY2VGb3JPYmplY3RzV2l0aG91dERlc3RydWN0b3IoKSB7IHJldHVybiBtX25vcm1h
bFNwYWNlOyB9CisKICAgICB2b2lkIHJlc2V0QWxsb2NhdG9ycygpOwogCiAgICAgdm9pZCB2aXNp
dFdlYWtTZXRzKEhlYXBSb290VmlzaXRvciYpOwpAQCAtMTQzLDI2ICsxNjMsMTEgQEAgcHVibGlj
OgogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgRGVsYXllZFJlbGVhc2VTY29wZTsKICAgICBm
cmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgIGZyaWVuZCBjbGFzcyBKSVQ7
CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB2b2lkIGZvckVhY2hBbGxvY2F0b3Io
RnVuY3RvciYpOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHZvaWQgZm9yRWFjaEFs
bG9jYXRvcigpOwogCi0gICAgLy8gWyAzMi4uLiAxMjggXQotICAgIHN0YXRpYyBjb25zdCBzaXpl
X3QgcHJlY2lzZVN0ZXAgPSBNYXJrZWRCbG9jazo6YXRvbVNpemU7Ci0gICAgc3RhdGljIGNvbnN0
IHNpemVfdCBwcmVjaXNlQ3V0b2ZmID0gMTI4OwotICAgIHN0YXRpYyBjb25zdCBzaXplX3QgcHJl
Y2lzZUNvdW50ID0gcHJlY2lzZUN1dG9mZiAvIHByZWNpc2VTdGVwOwotCi0gICAgLy8gWyAxMDI0
Li4uIGJsb2NrU2l6ZSBdCi0gICAgc3RhdGljIGNvbnN0IHNpemVfdCBpbXByZWNpc2VTdGVwID0g
MiAqIHByZWNpc2VDdXRvZmY7Ci0gICAgc3RhdGljIGNvbnN0IHNpemVfdCBpbXByZWNpc2VDdXRv
ZmYgPSBNYXJrZWRCbG9jazo6YmxvY2tTaXplIC8gMjsKLSAgICBzdGF0aWMgY29uc3Qgc2l6ZV90
IGltcHJlY2lzZUNvdW50ID0gaW1wcmVjaXNlQ3V0b2ZmIC8gaW1wcmVjaXNlU3RlcDsKLQotICAg
IHN0cnVjdCBTdWJzcGFjZSB7Ci0gICAgICAgIHN0ZDo6YXJyYXk8TWFya2VkQWxsb2NhdG9yLCBw
cmVjaXNlQ291bnQ+IHByZWNpc2VBbGxvY2F0b3JzOwotICAgICAgICBzdGQ6OmFycmF5PE1hcmtl
ZEFsbG9jYXRvciwgaW1wcmVjaXNlQ291bnQ+IGltcHJlY2lzZUFsbG9jYXRvcnM7Ci0gICAgICAg
IE1hcmtlZEFsbG9jYXRvciBsYXJnZUFsbG9jYXRvcjsKLSAgICB9OwotCiAgICAgU3Vic3BhY2Ug
bV9ub3JtYWxEZXN0cnVjdG9yU3BhY2U7CiAgICAgU3Vic3BhY2UgbV9pbW1vcnRhbFN0cnVjdHVy
ZURlc3RydWN0b3JTcGFjZTsKICAgICBTdWJzcGFjZSBtX25vcm1hbFNwYWNlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1N0YWNrVmlzaXRvci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmNwcAppbmRleCAy
OWRjOTY3ZjQ4NGRkZWVmMTFmYWFhNTg1YWViY2VkY2QyNmJkNWJiLi5lMTMzODVmZTFiZGQxMzlk
YTNiZjM3MTZlMzllNmJkYmE5NTMxNDFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmNwcApAQCAtMjcxLDYgKzI3MSw3IEBAIEFyZ3Vt
ZW50cyogU3RhY2tWaXNpdG9yOjpGcmFtZTo6Y3JlYXRlQXJndW1lbnRzKCkKICAgICAgICAgQVNT
RVJUKG1faW5saW5lQ2FsbEZyYW1lKTsKICAgICAgICAgYXJndW1lbnRzID0gQXJndW1lbnRzOjpj
cmVhdGUodm0sIHBoeXNpY2FsRnJhbWUsIG1faW5saW5lQ2FsbEZyYW1lLCBtb2RlKTsKICAgICAg
ICAgYXJndW1lbnRzLT50ZWFyT2ZmKHBoeXNpY2FsRnJhbWUsIG1faW5saW5lQ2FsbEZyYW1lKTsK
KyAgICAgICAganNDYXN0PEFyZ3VtZW50cyo+KChKU0NlbGwqKWFyZ3VtZW50cyk7CiAgICAgfSBl
bHNlIAogI2VuZGlmCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQXJndW1lbnRzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3Vt
ZW50cy5jcHAKaW5kZXggMTcyNzk1MWVmZWU0ZWMxN2U5MTUyNjMxNTIwNjRkZmYzZGNlZjk5ZC4u
NjQwZmQ5MzdjNDJjMDhhNjg1OTFhMGMzZWQwMDAxMDZiMWE5NTBmOCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuY3BwCkBAIC00MywxNCArNDMsMTMgQEAgY29u
c3QgQ2xhc3NJbmZvIEFyZ3VtZW50czo6c19pbmZvID0geyAiQXJndW1lbnRzIiwgJkJhc2U6OnNf
aW5mbywgMCwgQ1JFQVRFX01FVEgKIHZvaWQgQXJndW1lbnRzOjp2aXNpdENoaWxkcmVuKEpTQ2Vs
bCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7CiAgICAgQXJndW1lbnRzKiB0aGlzT2Jq
ZWN0ID0ganNDYXN0PEFyZ3VtZW50cyo+KGNlbGwpOworCiAgICAgQVNTRVJUX0dDX09CSkVDVF9J
TkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogICAgIEpTT2JqZWN0Ojp2aXNpdENoaWxkcmVu
KHRoaXNPYmplY3QsIHZpc2l0b3IpOwogCi0gICAgaWYgKHRoaXNPYmplY3QtPm1fcmVnaXN0ZXJB
cnJheSkgewotICAgICAgICB2aXNpdG9yLmNvcHlMYXRlcih0aGlzT2JqZWN0LCBBcmd1bWVudHNS
ZWdpc3RlckFycmF5Q29weVRva2VuLCAKLSAgICAgICAgICAgIHRoaXNPYmplY3QtPm1fcmVnaXN0
ZXJBcnJheS5nZXQoKSwgdGhpc09iamVjdC0+cmVnaXN0ZXJBcnJheVNpemVJbkJ5dGVzKCkpOwot
ICAgICAgICB2aXNpdG9yLmFwcGVuZFZhbHVlcyh0aGlzT2JqZWN0LT5tX3JlZ2lzdGVyQXJyYXku
Z2V0KCksIHRoaXNPYmplY3QtPm1fbnVtQXJndW1lbnRzKTsKLSAgICB9CisgICAgaWYgKHRoaXNP
YmplY3QtPmlzVG9ybk9mZigpKQorICAgICAgICB2aXNpdG9yLmFwcGVuZFZhbHVlcygmdGhpc09i
amVjdC0+cmVnaXN0ZXJBcnJheSgpLCB0aGlzT2JqZWN0LT5tX251bUFyZ3VtZW50cyk7CisKICAg
ICBpZiAodGhpc09iamVjdC0+bV9zbG93QXJndW1lbnREYXRhKSB7CiAgICAgICAgIHZpc2l0b3Iu
Y29weUxhdGVyKHRoaXNPYmplY3QsIEFyZ3VtZW50c1Nsb3dBcmd1bWVudERhdGFDb3B5VG9rZW4s
CiAgICAgICAgICAgICB0aGlzT2JqZWN0LT5tX3Nsb3dBcmd1bWVudERhdGEuZ2V0KCksIFNsb3dB
cmd1bWVudERhdGE6OnNpemVGb3JOdW1Bcmd1bWVudHModGhpc09iamVjdC0+bV9udW1Bcmd1bWVu
dHMpKTsKQEAgLTY2LDIyICs2NSw2IEBAIHZvaWQgQXJndW1lbnRzOjpjb3B5QmFja2luZ1N0b3Jl
KEpTQ2VsbCogY2VsbCwgQ29weVZpc2l0b3ImIHZpc2l0b3IsIENvcHlUb2tlbiB0CiAgICAgCiAK
ICAgICBzd2l0Y2ggKHRva2VuKSB7Ci0gICAgY2FzZSBBcmd1bWVudHNSZWdpc3RlckFycmF5Q29w
eVRva2VuOiB7Ci0gICAgICAgIFdyaXRlQmFycmllcjxVbmtub3duPiogcmVnaXN0ZXJBcnJheSA9
IHRoaXNPYmplY3QtPm1fcmVnaXN0ZXJBcnJheS5nZXQoKTsKLSAgICAgICAgaWYgKCFyZWdpc3Rl
ckFycmF5KQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGlmICh2aXNpdG9yLmNoZWNr
SWZTaG91bGRDb3B5KHJlZ2lzdGVyQXJyYXkpKSB7Ci0gICAgICAgICAgICBzaXplX3QgYnl0ZXMg
PSB0aGlzT2JqZWN0LT5yZWdpc3RlckFycmF5U2l6ZUluQnl0ZXMoKTsKLSAgICAgICAgICAgIFdy
aXRlQmFycmllcjxVbmtub3duPiogbmV3UmVnaXN0ZXJBcnJheSA9IHN0YXRpY19jYXN0PFdyaXRl
QmFycmllcjxVbmtub3duPio+KHZpc2l0b3IuYWxsb2NhdGVOZXdTcGFjZShieXRlcykpOwotICAg
ICAgICAgICAgbWVtY3B5KG5ld1JlZ2lzdGVyQXJyYXksIHJlZ2lzdGVyQXJyYXksIGJ5dGVzKTsK
LSAgICAgICAgICAgIHRoaXNPYmplY3QtPm1fcmVnaXN0ZXJBcnJheS5zZXRXaXRob3V0V3JpdGVC
YXJyaWVyKG5ld1JlZ2lzdGVyQXJyYXkpOwotICAgICAgICAgICAgdGhpc09iamVjdC0+bV9yZWdp
c3RlcnMgPSBuZXdSZWdpc3RlckFycmF5IC0gQ2FsbEZyYW1lOjpvZmZzZXRGb3IoMSkgLSAxOwot
ICAgICAgICAgICAgdmlzaXRvci5kaWRDb3B5KHJlZ2lzdGVyQXJyYXksIGJ5dGVzKTsKLSAgICAg
ICAgfQotICAgICAgICByZXR1cm47Ci0gICAgfQotCiAgICAgY2FzZSBBcmd1bWVudHNTbG93QXJn
dW1lbnREYXRhQ29weVRva2VuOiB7CiAgICAgICAgIFNsb3dBcmd1bWVudERhdGEqIHNsb3dBcmd1
bWVudERhdGEgPSB0aGlzT2JqZWN0LT5tX3Nsb3dBcmd1bWVudERhdGEuZ2V0KCk7CiAgICAgICAg
IGlmICghc2xvd0FyZ3VtZW50RGF0YSkKQEAgLTM2MSwxNSArMzQ0LDYgQEAgYm9vbCBBcmd1bWVu
dHM6OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywg
UHJvcGVydHlOYW0KICAgICByZXR1cm4gQmFzZTo6ZGVmaW5lT3duUHJvcGVydHkob2JqZWN0LCBl
eGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIHNob3VsZFRocm93KTsKIH0KIAotdm9pZCBB
cmd1bWVudHM6OmFsbG9jYXRlUmVnaXN0ZXJBcnJheShWTSYgdm0pCi17Ci0gICAgQVNTRVJUKCFt
X3JlZ2lzdGVyQXJyYXkpOwotICAgIHZvaWQqIGJhY2tpbmdTdG9yZTsKLSAgICBpZiAoIXZtLmhl
YXAudHJ5QWxsb2NhdGVTdG9yYWdlKHRoaXMsIHJlZ2lzdGVyQXJyYXlTaXplSW5CeXRlcygpLCAm
YmFja2luZ1N0b3JlKSkKLSAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAg
ICBtX3JlZ2lzdGVyQXJyYXkuc2V0KHZtLCB0aGlzLCBzdGF0aWNfY2FzdDxXcml0ZUJhcnJpZXI8
VW5rbm93bj4qPihiYWNraW5nU3RvcmUpKTsKLX0KLQogdm9pZCBBcmd1bWVudHM6OnRlYXJPZmYo
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgaWYgKGlzVG9ybk9mZigpKQpAQCAtMzgwLDEz
ICszNTQsMTQgQEAgdm9pZCBBcmd1bWVudHM6OnRlYXJPZmYoQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
CiAKICAgICAvLyBNdXN0IGJlIGNhbGxlZCBmb3IgdGhlIHNhbWUgY2FsbCBmcmFtZSBmcm9tIHdo
aWNoIGl0IHdhcyBjcmVhdGVkLgogICAgIEFTU0VSVChiaXR3aXNlX2Nhc3Q8V3JpdGVCYXJyaWVy
PFVua25vd24+Kj4oY2FsbEZyYW1lKSA9PSBtX3JlZ2lzdGVycyk7Ci0gICAgCi0gICAgYWxsb2Nh
dGVSZWdpc3RlckFycmF5KGNhbGxGcmFtZS0+dm0oKSk7Ci0gICAgbV9yZWdpc3RlcnMgPSBtX3Jl
Z2lzdGVyQXJyYXkuZ2V0KCkgLSBDYWxsRnJhbWU6Om9mZnNldEZvcigxKSAtIDE7CisKKyAgICBt
X3JlZ2lzdGVycyA9ICZyZWdpc3RlckFycmF5KCkgLSBDYWxsRnJhbWU6Om9mZnNldEZvcigxKSAt
IDE7CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fbnVtQXJndW1lbnRzOyArK2kpIHsK
LSAgICAgICAgaWYgKG1fc2xvd0FyZ3VtZW50RGF0YSAmJiBtX3Nsb3dBcmd1bWVudERhdGEtPnNs
b3dBcmd1bWVudHMoKVtpXS5zdGF0dXMgPT0gU2xvd0FyZ3VtZW50OjpDYXB0dXJlZCkKKyAgICAg
ICAgaWYgKG1fc2xvd0FyZ3VtZW50RGF0YSAmJiBtX3Nsb3dBcmd1bWVudERhdGEtPnNsb3dBcmd1
bWVudHMoKVtpXS5zdGF0dXMgPT0gU2xvd0FyZ3VtZW50OjpDYXB0dXJlZCkgeworICAgICAgICAg
ICAgbV9yZWdpc3RlcnNbQ2FsbEZyYW1lOjphcmd1bWVudE9mZnNldChpKV0uc2V0VW5kZWZpbmVk
KCk7CiAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQogICAgICAgICB0cnlTZXRBcmd1
bWVudChjYWxsRnJhbWUtPnZtKCksIGksIGNhbGxGcmFtZS0+YXJndW1lbnRBZnRlckNhcHR1cmUo
aSkpOwogICAgIH0KIH0KQEAgLTM5OSw5ICszNzQsOCBAQCB2b2lkIEFyZ3VtZW50czo6dGVhck9m
ZihDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUp
CiAgICAgCiAgICAgaWYgKCFtX251bUFyZ3VtZW50cykKICAgICAgICAgcmV0dXJuOwotICAgIAot
ICAgIGFsbG9jYXRlUmVnaXN0ZXJBcnJheShjYWxsRnJhbWUtPnZtKCkpOwotICAgIG1fcmVnaXN0
ZXJzID0gbV9yZWdpc3RlckFycmF5LmdldCgpIC0gQ2FsbEZyYW1lOjpvZmZzZXRGb3IoMSkgLSAx
OworCisgICAgbV9yZWdpc3RlcnMgPSAmcmVnaXN0ZXJBcnJheSgpIC0gQ2FsbEZyYW1lOjpvZmZz
ZXRGb3IoMSkgLSAxOwogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX251bUFyZ3VtZW50
czsgKytpKSB7CiAgICAgICAgIFZhbHVlUmVjb3ZlcnkmIHJlY292ZXJ5ID0gaW5saW5lQ2FsbEZy
YW1lLT5hcmd1bWVudHNbaSArIDFdOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXJndW1lbnRzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1
bWVudHMuaAppbmRleCA4YzQ4MDM1ZThlZjM1NmQ1NDNkZDYyMjMxZTdmYTM2YTcxN2U1NTRmLi42
MTcyNTE5MWM3YzQ4ZTgzZDA3NTQ1NDA5ZDc3OTk1NzdiMjI0ZTczIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuaApAQCAtNDgsMTQgKzQ4LDE0IEBAIHB1YmxpYzoK
IAogICAgIHN0YXRpYyBBcmd1bWVudHMqIGNyZWF0ZShWTSYgdm0sIENhbGxGcmFtZSogY2FsbEZy
YW1lLCBBcmd1bWVudHNNb2RlIG1vZGUgPSBOb3JtYWxBcmd1bWVudHNDcmVhdGlvbk1vZGUpCiAg
ICAgewotICAgICAgICBBcmd1bWVudHMqIGFyZ3VtZW50cyA9IG5ldyAoTm90TnVsbCwgYWxsb2Nh
dGVDZWxsPEFyZ3VtZW50cz4odm0uaGVhcCkpIEFyZ3VtZW50cyhjYWxsRnJhbWUpOworICAgICAg
ICBBcmd1bWVudHMqIGFyZ3VtZW50cyA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEFyZ3Vt
ZW50cz4odm0uaGVhcCwgb2Zmc2V0T2ZJbmxpbmVSZWdpc3RlckFycmF5KCkgKyByZWdpc3RlckFy
cmF5U2l6ZUluQnl0ZXMoY2FsbEZyYW1lKSkpIEFyZ3VtZW50cyhjYWxsRnJhbWUpOwogICAgICAg
ICBhcmd1bWVudHMtPmZpbmlzaENyZWF0aW9uKGNhbGxGcmFtZSwgbW9kZSk7CiAgICAgICAgIHJl
dHVybiBhcmd1bWVudHM7CiAgICAgfQogICAgICAgICAKICAgICBzdGF0aWMgQXJndW1lbnRzKiBj
cmVhdGUoVk0mIHZtLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSW5saW5lQ2FsbEZyYW1lKiBpbmxp
bmVDYWxsRnJhbWUsIEFyZ3VtZW50c01vZGUgbW9kZSA9IE5vcm1hbEFyZ3VtZW50c0NyZWF0aW9u
TW9kZSkKICAgICB7Ci0gICAgICAgIEFyZ3VtZW50cyogYXJndW1lbnRzID0gbmV3IChOb3ROdWxs
LCBhbGxvY2F0ZUNlbGw8QXJndW1lbnRzPih2bS5oZWFwKSkgQXJndW1lbnRzKGNhbGxGcmFtZSk7
CisgICAgICAgIEFyZ3VtZW50cyogYXJndW1lbnRzID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNl
bGw8QXJndW1lbnRzPih2bS5oZWFwLCBvZmZzZXRPZklubGluZVJlZ2lzdGVyQXJyYXkoKSArIHJl
Z2lzdGVyQXJyYXlTaXplSW5CeXRlcyhpbmxpbmVDYWxsRnJhbWUpKSkgQXJndW1lbnRzKGNhbGxG
cmFtZSk7CiAgICAgICAgIGFyZ3VtZW50cy0+ZmluaXNoQ3JlYXRpb24oY2FsbEZyYW1lLCBpbmxp
bmVDYWxsRnJhbWUsIG1vZGUpOwogICAgICAgICByZXR1cm4gYXJndW1lbnRzOwogICAgIH0KQEAg
LTg2LDcgKzg2LDcgQEAgcHVibGljOgogICAgIHZvaWQgY29weVRvQXJndW1lbnRzKEV4ZWNTdGF0
ZSosIENhbGxGcmFtZSosIHVpbnQzMl90IGNvcHlMZW5ndGgsIGludDMyX3QgZmlyc3RBcmd1bWVu
dE9mZnNldCk7CiAgICAgdm9pZCB0ZWFyT2ZmKENhbGxGcmFtZSopOwogICAgIHZvaWQgdGVhck9m
ZihDYWxsRnJhbWUqLCBJbmxpbmVDYWxsRnJhbWUqKTsKLSAgICBib29sIGlzVG9ybk9mZigpIGNv
bnN0IHsgcmV0dXJuIG1fcmVnaXN0ZXJBcnJheS5nZXQoKTsgfQorICAgIGJvb2wgaXNUb3JuT2Zm
KCkgY29uc3QgeyByZXR1cm4gbV9yZWdpc3RlcnMgPT0gKCZyZWdpc3RlckFycmF5KCkgLSBDYWxs
RnJhbWU6Om9mZnNldEZvcigxKSAtIDEpOyB9CiAKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVh
dGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVl
IHByb3RvdHlwZSkgCiAgICAgeyAKQEAgLTk4LDE1ICs5OCw5IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgcHRyZGlmZl90IG9mZnNldE9mT3ZlcnJvZGVMZW5ndGgoKSB7IHJldHVybiBPQkpFQ1RfT0ZG
U0VUT0YoQXJndW1lbnRzLCBtX292ZXJyb2RlTGVuZ3RoKTsgfQogICAgIHN0YXRpYyBwdHJkaWZm
X3Qgb2Zmc2V0T2ZJc1N0cmljdE1vZGUoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoQXJndW1l
bnRzLCBtX2lzU3RyaWN0TW9kZSk7IH0KICAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mUmVn
aXN0ZXJzKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEFyZ3VtZW50cywgbV9yZWdpc3RlcnMp
OyB9Ci0gICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZlJlZ2lzdGVyQXJyYXkoKSB7IHJldHVy
biBPQkpFQ1RfT0ZGU0VUT0YoQXJndW1lbnRzLCBtX3JlZ2lzdGVyQXJyYXkpOyB9CisgICAgc3Rh
dGljIHB0cmRpZmZfdCBvZmZzZXRPZklubGluZVJlZ2lzdGVyQXJyYXkoKSB7IHJldHVybiBXVEY6
OnJvdW5kVXBUb011bHRpcGxlT2Y8OD4oc2l6ZW9mKEFyZ3VtZW50cykpOyB9CiAgICAgc3RhdGlj
IHB0cmRpZmZfdCBvZmZzZXRPZlNsb3dBcmd1bWVudERhdGEoKSB7IHJldHVybiBPQkpFQ1RfT0ZG
U0VUT0YoQXJndW1lbnRzLCBtX3Nsb3dBcmd1bWVudERhdGEpOyB9CiAgICAgc3RhdGljIHB0cmRp
ZmZfdCBvZmZzZXRPZkNhbGxlZSgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihBcmd1bWVudHMs
IG1fY2FsbGVlKTsgfQotCi0gICAgc3RhdGljIHNpemVfdCBhbGxvY2F0aW9uU2l6ZShzaXplX3Qg
aW5saW5lQ2FwYWNpdHkpCi0gICAgewotICAgICAgICBBU1NFUlRfVU5VU0VEKGlubGluZUNhcGFj
aXR5LCAhaW5saW5lQ2FwYWNpdHkpOwotICAgICAgICByZXR1cm4gc2l6ZW9mKEFyZ3VtZW50cyk7
Ci0gICAgfQogICAgIAogcHJvdGVjdGVkOgogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1
Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEludGVyY2VwdHNHZXRP
d25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5MZW5ndGhJc05vdFplcm8gfCBPdmVycmlkZXNH
ZXRQcm9wZXJ0eU5hbWVzIHwgSlNPYmplY3Q6OlN0cnVjdHVyZUZsYWdzOwpAQCAtMTI2LDggKzEy
MCw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjcmVhdGVTdHJpY3RNb2RlQ2FsbGVySWZOZWNlc3Nh
cnkoRXhlY1N0YXRlKik7CiAgICAgdm9pZCBjcmVhdGVTdHJpY3RNb2RlQ2FsbGVlSWZOZWNlc3Nh
cnkoRXhlY1N0YXRlKik7CiAKLSAgICBzaXplX3QgcmVnaXN0ZXJBcnJheVNpemVJbkJ5dGVzKCkg
Y29uc3QgeyByZXR1cm4gc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPikgKiBtX251bUFyZ3Vt
ZW50czsgfQotICAgIHZvaWQgYWxsb2NhdGVSZWdpc3RlckFycmF5KFZNJik7CisgICAgc3RhdGlj
IHNpemVfdCByZWdpc3RlckFycmF5U2l6ZUluQnl0ZXMoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpIHsg
cmV0dXJuIHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pICogY2FsbEZyYW1lLT5hcmd1bWVu
dENvdW50KCk7IH0KKyAgICBzdGF0aWMgc2l6ZV90IHJlZ2lzdGVyQXJyYXlTaXplSW5CeXRlcyhJ
bmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSkgeyByZXR1cm4gc2l6ZW9mKFdyaXRlQmFy
cmllcjxVbmtub3duPikgKiAoaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgpIC0gMSk7
IH0KICAgICBib29sIGlzQXJndW1lbnQoc2l6ZV90KTsKICAgICBib29sIHRyeVNldEFyZ3VtZW50
KFZNJiwgc2l6ZV90IGFyZ3VtZW50LCBKU1ZhbHVlKTsKICAgICBKU1ZhbHVlIHRyeUdldEFyZ3Vt
ZW50KHNpemVfdCBhcmd1bWVudCk7CkBAIC0xNTEsNyArMTQ1LDggQEAgcHJpdmF0ZToKICAgICBi
b29sIG1faXNTdHJpY3RNb2RlOwogCiAgICAgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiogbV9y
ZWdpc3RlcnM7Ci0gICAgQ29weVdyaXRlQmFycmllcjxXcml0ZUJhcnJpZXI8VW5rbm93bj4+IG1f
cmVnaXN0ZXJBcnJheTsKKyAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4mIHJlZ2lzdGVyQXJyYXko
KSB7IHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDxXcml0ZUJhcnJpZXI8VW5rbm93bj4qPihyZWlu
dGVycHJldF9jYXN0PGNoYXIqPih0aGlzKSArIG9mZnNldE9mSW5saW5lUmVnaXN0ZXJBcnJheSgp
KTsgfQorICAgIGNvbnN0IFdyaXRlQmFycmllcjxVbmtub3duPiYgcmVnaXN0ZXJBcnJheSgpIGNv
bnN0IHsgcmV0dXJuICpyZWludGVycHJldF9jYXN0PGNvbnN0IFdyaXRlQmFycmllcjxVbmtub3du
Pio+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KHRoaXMpICsgb2Zmc2V0T2ZJbmxpbmVS
ZWdpc3RlckFycmF5KCkpOyB9CiAKIHB1YmxpYzoKICAgICBzdHJ1Y3QgU2xvd0FyZ3VtZW50RGF0
YSB7Cg==
</data>
<flag name="review"
          id="264718"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
          </attachment>
      

    </bug>

</bugzilla>