<?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>74113</bug_id>
          
          <creation_ts>2011-12-08 11:52:17 -0800</creation_ts>
          <short_desc>[Chromium] Paint and upload in parallel when using threaded compositor.</short_desc>
          <delta_ts>2013-04-12 07:34:34 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</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>
          <dependson>72672</dependson>
    
    <dependson>72752</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="David Reveman">reveman</reporter>
          <assigned_to name="David Reveman">reveman</assigned_to>
          <cc>danakj</cc>
    
    <cc>jamesr</cc>
    
    <cc>levin</cc>
    
    <cc>nduca</cc>
    
    <cc>schenney</cc>
    
    <cc>vangelis</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>517632</commentid>
    <comment_count>0</comment_count>
    <who name="David Reveman">reveman</who>
    <bug_when>2011-12-08 11:52:17 -0800</bug_when>
    <thetext>Adds support for updating textures before beginFrameComplete in scheduler.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>517650</commentid>
    <comment_count>1</comment_count>
      <attachid>118441</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2011-12-08 12:05:49 -0800</bug_when>
    <thetext>Created attachment 118441
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>530754</commentid>
    <comment_count>2</comment_count>
      <attachid>121362</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-01-05 16:23:05 -0800</bug_when>
    <thetext>Created attachment 121362
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>541837</commentid>
    <comment_count>3</comment_count>
      <attachid>123840</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-01-24 16:38:30 -0800</bug_when>
    <thetext>Created attachment 123840
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>541926</commentid>
    <comment_count>4</comment_count>
      <attachid>123865</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-01-24 18:06:03 -0800</bug_when>
    <thetext>Created attachment 123865
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542032</commentid>
    <comment_count>5</comment_count>
      <attachid>123888</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-01-24 23:23:27 -0800</bug_when>
    <thetext>Created attachment 123888
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>548984</commentid>
    <comment_count>6</comment_count>
      <attachid>125388</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-02-03 13:01:16 -0800</bug_when>
    <thetext>Created attachment 125388
Patch</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>118441</attachid>
            <date>2011-12-08 12:05:49 -0800</date>
            <delta_ts>2012-01-05 16:23:05 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>threaded-parallel-upload.diff</filename>
            <type>text/plain</type>
            <size>26207</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">Y29tbWl0IDVhM2IzNjJlYWNjODU5N2YxZjAwZmUwNjdhNzA3MTY0MzkyYjIzM2UKQXV0aG9yOiBE
YXZpZCBSZXZlbWFuIDxyZXZlbWFuQGNocm9taXVtLm9yZz4KRGF0ZTogICBUaHUgRGVjIDggMTQ6
NTM6MjUgMjAxMSAtMDUwMAoKICAgIFtDaHJvbWl1bV0gUGFpbnQgYW5kIHVwbG9hZCBpbiBwYXJh
bGxlbCB3aGVuIHVzaW5nIHRocmVhZGVkIGNvbXBvc2l0b3IuCiAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQxMTMKICAgIAogICAgU291cmNlL1dlYkNvcmU6CiAg
ICAKICAgIEFkZCBzY2hlZHVsZXIgc3VwcG9ydCBmb3IgdXBkYXRpbmcgdGV4dHVyZXMgYmVmb3Jl
IGJlZ2luRnJhbWVDb21wbGV0ZSBoYXMKICAgIGJlZW4gcmVjZWl2ZWQuCiAgICAKICAgIFVwZGF0
ZSBzY2hlZHVsZXIgdGVzdHMuCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXIuY3BwCmluZGV4IDUwMWEwMGMu
LmM4OTVhNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDU2NoZWR1bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5jcHAKQEAgLTY4LDYgKzY4LDEyIEBAIHZv
aWQgQ0NTY2hlZHVsZXI6OnNldE5lZWRzRm9yY2VkUmVkcmF3KCkKICAgICBwcm9jZXNzU2NoZWR1
bGVkQWN0aW9ucygpOwogfQogCit2b2lkIENDU2NoZWR1bGVyOjpzZXRSZXNvdXJjZVVwZGF0ZXNQ
ZW5kaW5nKCkKK3sKKyAgICBtX3N0YXRlTWFjaGluZS5zZXRSZXNvdXJjZVVwZGF0ZXNQZW5kaW5n
KCk7CisgICAgcHJvY2Vzc1NjaGVkdWxlZEFjdGlvbnMoKTsKK30KKwogdm9pZCBDQ1NjaGVkdWxl
cjo6YmVnaW5GcmFtZUNvbXBsZXRlKCkKIHsKICAgICBUUkFDRV9FVkVOVCgiQ0NTY2hlZHVsZXI6
OmJlZ2luRnJhbWVDb21wbGV0ZSIsIHRoaXMsIDApOwpAQCAtOTYsNyArMTAyLDcgQEAgdm9pZCBD
Q1NjaGVkdWxlcjo6YmVnaW5GcmFtZSgpCiB7CiAgICAgaWYgKG1fdXBkYXRlTW9yZVJlc291cmNl
c1BlbmRpbmcpIHsKICAgICAgICAgbV91cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZyA9IGZhbHNl
OwotICAgICAgICBtX3N0YXRlTWFjaGluZS5iZWdpblVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0
ZShtX2NsaWVudC0+aGFzTW9yZVJlc291cmNlVXBkYXRlcygpKTsKKyAgICAgICAgbV9zdGF0ZU1h
Y2hpbmUudXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRlKG1fY2xpZW50LT5oYXNNb3JlUmVzb3Vy
Y2VVcGRhdGVzKCkpOwogICAgIH0KICAgICBUUkFDRV9FVkVOVCgiQ0NTY2hlZHVsZXI6OmJlZ2lu
RnJhbWUiLCB0aGlzLCAwKTsKIApAQCAtMTA1LDYgKzExMSwxNCBAQCB2b2lkIENDU2NoZWR1bGVy
OjpiZWdpbkZyYW1lKCkKICAgICBtX3N0YXRlTWFjaGluZS5kaWRMZWF2ZVZTeW5jKCk7CiB9CiAK
K3ZvaWQgQ0NTY2hlZHVsZXI6OnVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZSgpCit7CisgICAg
QVNTRVJUKG1fdXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmcpOworICAgIG1fdXBkYXRlTW9yZVJl
c291cmNlc1BlbmRpbmcgPSBmYWxzZTsKKyAgICBtX3N0YXRlTWFjaGluZS51cGRhdGVNb3JlUmVz
b3VyY2VzQ29tcGxldGUobV9jbGllbnQtPmhhc01vcmVSZXNvdXJjZVVwZGF0ZXMoKSk7CisgICAg
cHJvY2Vzc1NjaGVkdWxlZEFjdGlvbnMoKTsKK30KKwogdm9pZCBDQ1NjaGVkdWxlcjo6cHJvY2Vz
c1NjaGVkdWxlZEFjdGlvbnMoKQogewogICAgIC8vIEVhcmx5IG91dCBzbyB3ZSBkb24ndCBzcGFt
IFRSQUNFX0VWRU5UUyB3aXRoIHVzZWxlc3MgcHJvY2Vzc1NjaGVkdWxlZEFjdGlvbnMuCkBAIC0x
MjUsNiArMTM5LDcgQEAgdm9pZCBDQ1NjaGVkdWxlcjo6cHJvY2Vzc1NjaGVkdWxlZEFjdGlvbnMo
KQogICAgICAgICAgICAgbV9jbGllbnQtPnNjaGVkdWxlZEFjdGlvbkJlZ2luRnJhbWUoKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpB
Q1RJT05fQkVHSU5fVVBEQVRFX01PUkVfUkVTT1VSQ0VTOgorICAgICAgICAgICAgQVNTRVJUKG1f
Y2xpZW50LT5oYXNNb3JlUmVzb3VyY2VVcGRhdGVzKCkpOwogICAgICAgICAgICAgbV9jbGllbnQt
PnNjaGVkdWxlZEFjdGlvblVwZGF0ZU1vcmVSZXNvdXJjZXMoKTsKICAgICAgICAgICAgIGlmICgh
bV9jbGllbnQtPmhhc01vcmVSZXNvdXJjZVVwZGF0ZXMoKSkgewogICAgICAgICAgICAgICAgIC8v
IElmIHdlIHdlcmUganVzdCB0b2xkIHRvIHVwZGF0ZSByZXNvdXJjZXMsIGJ1dCB0aGVyZSBhcmUg
bm8KQEAgLTEzMiw3ICsxNDcsNyBAQCB2b2lkIENDU2NoZWR1bGVyOjpwcm9jZXNzU2NoZWR1bGVk
QWN0aW9ucygpCiAgICAgICAgICAgICAgICAgLy8gYmVnaW5VcGRhdGVNb3JlUmVzb3VyY2VzIGNv
bXBsZXRlZC4gSWYgbW9yZSBhcmUgcGVuZGluZywKICAgICAgICAgICAgICAgICAvLyB0aGVuIHdl
IHdpbGwgYWNrIHRoZSB1cGRhdGUgYXQgdGhlIG5leHQgZHJhdy4KICAgICAgICAgICAgICAgICBt
X3VwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgbV9z
dGF0ZU1hY2hpbmUuYmVnaW5VcGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUoZmFsc2UpOworICAg
ICAgICAgICAgICAgIG1fc3RhdGVNYWNoaW5lLnVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZShm
YWxzZSk7CiAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICBtX3VwZGF0ZU1vcmVS
ZXNvdXJjZXNQZW5kaW5nID0gdHJ1ZTsKICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1
bGVyLmgKaW5kZXggOTVlOTk1Zi4uODI4MjI4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5oCkBAIC02
NiwxMSArNjYsMTIgQEAgcHVibGljOgogICAgIC8vIEFzIHNldE5lZWRzUmVkcmF3KCksIGJ1dCBl
bnN1cmVzIHRoZSBkcmF3IHdpbGwgZGVmaW5pdGVseSBoYXBwZW4gZXZlbiBpZiB3ZSBhcmUgbm90
IHZpc2libGUuCiAgICAgdm9pZCBzZXROZWVkc0ZvcmNlZFJlZHJhdygpOwogCisgICAgdm9pZCBz
ZXRSZXNvdXJjZVVwZGF0ZXNQZW5kaW5nKCk7CiAgICAgdm9pZCBiZWdpbkZyYW1lQ29tcGxldGUo
KTsKLQogICAgIHZvaWQgc2V0TWF4RnJhbWVzUGVuZGluZyhpbnQpOwogICAgIHZvaWQgZGlkU3dh
cEJ1ZmZlcnNDb21wbGV0ZSgpOwogICAgIHZvaWQgZGlkU3dhcEJ1ZmZlcnNBYm9ydCgpOworICAg
IHZvaWQgdXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRlKCk7CiAKICAgICBib29sIGNvbW1pdFBl
bmRpbmcoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlTWFjaGluZS5jb21taXRQZW5kaW5nKCk7IH0K
ICAgICBib29sIHJlZHJhd1BlbmRpbmcoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlTWFjaGluZS5y
ZWRyYXdQZW5kaW5nKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyU3RhdGVNYWNo
aW5lLmNwcAppbmRleCA0Y2ZmNjczLi5mZjY1ZmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NT
Y2hlZHVsZXJTdGF0ZU1hY2hpbmUuY3BwCkBAIC0zNyw3ICszNyw5IEBAIENDU2NoZWR1bGVyU3Rh
dGVNYWNoaW5lOjpDQ1NjaGVkdWxlclN0YXRlTWFjaGluZSgpCiAgICAgLCBtX25lZWRzQ29tbWl0
KGZhbHNlKQogICAgICwgbV91cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZyhmYWxzZSkKICAgICAs
IG1faW5zaWRlVlN5bmMoZmFsc2UpCi0gICAgLCBtX3Zpc2libGUoZmFsc2UpIHsgfQorICAgICwg
bV92aXNpYmxlKGZhbHNlKQorICAgICwgbV9yZXNvdXJjZVVwZGF0ZXNQZW5kaW5nKGZhbHNlKQor
ICAgICwgbV9mcmFtZUNvbXBsZXRlKGZhbHNlKSB7IH0KIAogQ0NTY2hlZHVsZXJTdGF0ZU1hY2hp
bmU6OkFjdGlvbiBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6bmV4dEFjdGlvbigpIGNvbnN0CiB7
CkBAIC01MSwxNSArNTMsMTAgQEAgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFjdGlvbiBDQ1Nj
aGVkdWxlclN0YXRlTWFjaGluZTo6bmV4dEFjdGlvbigpIGNvbnN0CiAgICAgICAgICAgICByZXR1
cm4gQUNUSU9OX0JFR0lOX0ZSQU1FOwogICAgICAgICByZXR1cm4gQUNUSU9OX05PTkU7CiAKLSAg
ICBjYXNlIENPTU1JVF9TVEFURV9GUkFNRV9JTl9QUk9HUkVTUzoKLSAgICAgICAgaWYgKHNob3Vs
ZERyYXcpCi0gICAgICAgICAgICByZXR1cm4gQUNUSU9OX0RSQVc7Ci0gICAgICAgIHJldHVybiBB
Q1RJT05fTk9ORTsKLQogICAgIGNhc2UgQ09NTUlUX1NUQVRFX1VQREFUSU5HX1JFU09VUkNFUzoK
ICAgICAgICAgaWYgKHNob3VsZERyYXcpCiAgICAgICAgICAgICByZXR1cm4gQUNUSU9OX0RSQVc7
Ci0gICAgICAgIGlmICghbV91cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZykKKyAgICAgICAgaWYg
KCFtX3VwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nICYmIG1fcmVzb3VyY2VVcGRhdGVzUGVuZGlu
ZykKICAgICAgICAgICAgIHJldHVybiBBQ1RJT05fQkVHSU5fVVBEQVRFX01PUkVfUkVTT1VSQ0VT
OwogICAgICAgICByZXR1cm4gQUNUSU9OX05PTkU7CiAKQEAgLTgzLDggKzgwLDEwIEBAIHZvaWQg
Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OnVwZGF0ZVN0YXRlKEFjdGlvbiBhY3Rpb24pCiAKICAg
ICBjYXNlIEFDVElPTl9CRUdJTl9GUkFNRToKICAgICAgICAgQVNTRVJUKG1fdmlzaWJsZSk7Ci0g
ICAgICAgIG1fY29tbWl0U3RhdGUgPSBDT01NSVRfU1RBVEVfRlJBTUVfSU5fUFJPR1JFU1M7Cisg
ICAgICAgIEFTU0VSVCghbV9yZXNvdXJjZVVwZGF0ZXNQZW5kaW5nKTsKKyAgICAgICAgbV9jb21t
aXRTdGF0ZSA9IENPTU1JVF9TVEFURV9VUERBVElOR19SRVNPVVJDRVM7CiAgICAgICAgIG1fbmVl
ZHNDb21taXQgPSBmYWxzZTsKKyAgICAgICAgbV9mcmFtZUNvbXBsZXRlID0gZmFsc2U7CiAgICAg
ICAgIHJldHVybjsKIAogICAgIGNhc2UgQUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNF
UzoKQEAgLTE0NCwxOCArMTQzLDI2IEBAIHZvaWQgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OnNl
dE5lZWRzQ29tbWl0KCkKICAgICBtX25lZWRzQ29tbWl0ID0gdHJ1ZTsKIH0KIAordm9pZCBDQ1Nj
aGVkdWxlclN0YXRlTWFjaGluZTo6c2V0UmVzb3VyY2VVcGRhdGVzUGVuZGluZygpCit7CisgICAg
bV9yZXNvdXJjZVVwZGF0ZXNQZW5kaW5nID0gdHJ1ZTsKK30KKwogdm9pZCBDQ1NjaGVkdWxlclN0
YXRlTWFjaGluZTo6YmVnaW5GcmFtZUNvbXBsZXRlKCkKIHsKLSAgICBBU1NFUlQobV9jb21taXRT
dGF0ZSA9PSBDT01NSVRfU1RBVEVfRlJBTUVfSU5fUFJPR1JFU1MpOwotICAgIG1fY29tbWl0U3Rh
dGUgPSBDT01NSVRfU1RBVEVfVVBEQVRJTkdfUkVTT1VSQ0VTOworICAgIEFTU0VSVChtX2NvbW1p
dFN0YXRlID09IENPTU1JVF9TVEFURV9VUERBVElOR19SRVNPVVJDRVMpOworICAgIG1fZnJhbWVD
b21wbGV0ZSA9IHRydWU7CisgICAgaWYgKCFtX3VwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nICYm
ICFtX3Jlc291cmNlVXBkYXRlc1BlbmRpbmcpCisgICAgICAgIG1fY29tbWl0U3RhdGUgPSBDT01N
SVRfU1RBVEVfUkVBRFlfVE9fQ09NTUlUOwogfQogCi12b2lkIENDU2NoZWR1bGVyU3RhdGVNYWNo
aW5lOjpiZWdpblVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZShib29sIG1vcmVQZW5kaW5nKQor
dm9pZCBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6dXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRl
KGJvb2wgbW9yZVBlbmRpbmcpCiB7CiAgICAgQVNTRVJUKG1fY29tbWl0U3RhdGUgPT0gQ09NTUlU
X1NUQVRFX1VQREFUSU5HX1JFU09VUkNFUyk7CiAgICAgQVNTRVJUKG1fdXBkYXRlTW9yZVJlc291
cmNlc1BlbmRpbmcpOwogICAgIG1fdXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmcgPSBmYWxzZTsK
LSAgICBpZiAoIW1vcmVQZW5kaW5nKQorICAgIG1fcmVzb3VyY2VVcGRhdGVzUGVuZGluZyA9IG1v
cmVQZW5kaW5nOworICAgIGlmICghbW9yZVBlbmRpbmcgJiYgbV9mcmFtZUNvbXBsZXRlKQogICAg
ICAgICBtX2NvbW1pdFN0YXRlID0gQ09NTUlUX1NUQVRFX1JFQURZX1RPX0NPTU1JVDsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lLmgKaW5kZXggNWEyN2JkMi4u
MGQ5ZWIxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZS5oCkBA
IC00NSw3ICs0NSw2IEBAIHB1YmxpYzoKIAogICAgIGVudW0gQ29tbWl0U3RhdGUgewogICAgICAg
ICBDT01NSVRfU1RBVEVfSURMRSwKLSAgICAgICAgQ09NTUlUX1NUQVRFX0ZSQU1FX0lOX1BST0dS
RVNTLAogICAgICAgICBDT01NSVRfU1RBVEVfVVBEQVRJTkdfUkVTT1VSQ0VTLAogICAgICAgICBD
T01NSVRfU1RBVEVfUkVBRFlfVE9fQ09NTUlULAogICAgICAgICBDT01NSVRfU1RBVEVfV0FJVElO
R19GT1JfRklSU1RfRFJBVywKQEAgLTg5LDE0ICs4OCwxNyBAQCBwdWJsaWM6CiAgICAgLy8gdGhy
ZWFkIHRvIG1haW4uCiAgICAgdm9pZCBzZXROZWVkc0NvbW1pdCgpOwogCisgICAgLy8gSW5kaWNh
dGVzIHRoYXQgY29tcG9zaXRvciByZXNvdXJjZXMgdGhhdCBuZWVkIHVwZGF0aW5nIGFyZSBwZW5k
aW5nLgorICAgIHZvaWQgc2V0UmVzb3VyY2VVcGRhdGVzUGVuZGluZygpOworCiAgICAgLy8gQ2Fs
bCB0aGlzIG9ubHkgaW4gcmVzcG9uc2UgdG8gcmVjZWl2aW5nIGFuIEFDVElPTl9CRUdJTl9GUkFN
RQogICAgIC8vIGZyb20gbmV4dFN0YXRlLiBJbmRpY2F0ZXMgdGhhdCBhbGwgcGFpbnRpbmcgaXMg
Y29tcGxldGUgYW5kIHRoYXQKLSAgICAvLyB1cGRhdGluZyBvZiBjb21wb3NpdG9yIHJlc291cmNl
cyBjYW4gYmVnaW4uCisgICAgLy8gb25seSB1cGRhdGluZyBvZiBjb21wb3NpdG9yIHJlc291cmNl
cyBpcyBsZWZ0LgogICAgIHZvaWQgYmVnaW5GcmFtZUNvbXBsZXRlKCk7CiAKICAgICAvLyBDYWxs
IHRoaXMgb25seSBpbiByZXNwb25zZSB0byByZWNlaXZpbmcgYW4gQUNUSU9OX1VQREFURV9NT1JF
X1JFU09VUkNFUwogICAgIC8vIGZyb20gbmV4dFN0YXRlLiBJbmRpY2F0ZXMgdGhhdCB0aGUgc3Bl
Y2lmaWMgdXBkYXRlIHJlcXVlc3QgY29tcGxldGVkLgotICAgIHZvaWQgYmVnaW5VcGRhdGVNb3Jl
UmVzb3VyY2VzQ29tcGxldGUoYm9vbCBtb3JlUGVuZGluZyk7CisgICAgdm9pZCB1cGRhdGVNb3Jl
UmVzb3VyY2VzQ29tcGxldGUoYm9vbCBtb3JlUGVuZGluZyk7CiAKIHByb3RlY3RlZDoKICAgICBD
b21taXRTdGF0ZSBtX2NvbW1pdFN0YXRlOwpAQCAtMTA5LDYgKzExMSw4IEBAIHByb3RlY3RlZDoK
ICAgICBib29sIG1fdXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmc7CiAgICAgYm9vbCBtX2luc2lk
ZVZTeW5jOwogICAgIGJvb2wgbV92aXNpYmxlOworICAgIGJvb2wgbV9yZXNvdXJjZVVwZGF0ZXNQ
ZW5kaW5nOworICAgIGJvb2wgbV9mcmFtZUNvbXBsZXRlOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Ro
cmVhZFByb3h5LmNwcAppbmRleCBhNGYwNmRiLi5lNmVmYjNhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVh
ZFByb3h5LmNwcApAQCAtNDY4LDYgKzQ2OCw5IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6dXBkYXRl
VGV4dHVyZU9uSW1wbFRocmVhZChQYXNzT3duUHRyPFVwZGF0ZUVudHJ5PiBlbnRyeSkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgbV90ZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZC5hcHBlbmQoZW50
cnktPm1fdGV4dHVyZSwgZW50cnktPm1fc291cmNlUmVjdCwgZW50cnktPm1fZGVzdFJlY3QpOwor
CisgICAgaWYgKCFtX2xheWVyVHJlZUhvc3RJbXBsLT5zZXR0aW5ncygpLmRlbGF5VGV4dHVyZVVw
ZGF0ZXMpCisgICAgICAgIG1fc2NoZWR1bGVyT25JbXBsVGhyZWFkLT5zZXRSZXNvdXJjZVVwZGF0
ZXNQZW5kaW5nKCk7CiB9CiAKIHZvaWQgQ0NUaHJlYWRQcm94eTo6YmVnaW5GcmFtZUNvbXBsZXRl
T25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiBjb21wbGV0aW9uKQpAQCAtNDgzLDYgKzQ4
NiwxMCBAQCB2b2lkIENDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWVDb21wbGV0ZU9uSW1wbFRocmVh
ZChDQ0NvbXBsZXRpb25FdmVudCogY29tcGxldGlvbgogCiAgICAgbV9jb21taXRDb21wbGV0aW9u
RXZlbnRPbkltcGxUaHJlYWQgPSBjb21wbGV0aW9uOwogCisgICAgaWYgKG1fbGF5ZXJUcmVlSG9z
dEltcGwtPnNldHRpbmdzKCkuZGVsYXlUZXh0dXJlVXBkYXRlcworICAgICAgICAmJiBoYXNNb3Jl
UmVzb3VyY2VVcGRhdGVzKCkpCisgICAgICAgIG1fc2NoZWR1bGVyT25JbXBsVGhyZWFkLT5zZXRS
ZXNvdXJjZVVwZGF0ZXNQZW5kaW5nKCk7CisKICAgICBtX3NjaGVkdWxlck9uSW1wbFRocmVhZC0+
YmVnaW5GcmFtZUNvbXBsZXRlKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LmNwcCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LmNwcAppbmRleCBm
MzQ2OTc3Li5kYmMzN2RkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QuY3BwCkBAIC0zNyw3ICszNyw2
IEBAIG5hbWVzcGFjZSB7CiAKIGNvbnN0IENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDb21taXRT
dGF0ZSBhbGxDb21taXRTdGF0ZXNbXSA9IHsKICAgICBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6
Q09NTUlUX1NUQVRFX0lETEUsCi0gICAgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9T
VEFURV9GUkFNRV9JTl9QUk9HUkVTUywKICAgICBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09N
TUlUX1NUQVRFX1VQREFUSU5HX1JFU09VUkNFUywKICAgICBDQ1NjaGVkdWxlclN0YXRlTWFjaGlu
ZTo6Q09NTUlUX1NUQVRFX1JFQURZX1RPX0NPTU1JVCwKICAgICBDQ1NjaGVkdWxlclN0YXRlTWFj
aGluZTo6Q09NTUlUX1NUQVRFX1dBSVRJTkdfRk9SX0ZJUlNUX0RSQVcKQEAgLTYzLDYgKzYyLDEy
IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0VXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmcoYm9v
bCBiKSB7IG1fdXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmcgPSBiOyB9CiAgICAgYm9vbCB1cGRh
dGVNb3JlUmVzb3VyY2VzUGVuZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fdXBkYXRlTW9yZVJlc291
cmNlc1BlbmRpbmc7IH0KKworICAgIHZvaWQgc2V0UmVzb3VyY2VVcGRhdGVzUGVuZGluZyhib29s
IGIpIHsgbV9yZXNvdXJjZVVwZGF0ZXNQZW5kaW5nID0gYjsgfQorICAgIGJvb2wgcmVzb3VyY2VV
cGRhdGVzUGVuZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb3VyY2VVcGRhdGVzUGVuZGluZzsg
fQorCisgICAgdm9pZCBzZXRGcmFtZUNvbXBsZXRlKGJvb2wgYikgeyBtX2ZyYW1lQ29tcGxldGUg
PSBiOyB9CisgICAgYm9vbCBmcmFtZUNvbXBsZXRlKCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZUNv
bXBsZXRlOyB9CiB9OwogCiBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdE5l
eHRBY3Rpb25CZWdpbnNGcmFtZUlmTmVlZGVkKQpAQCAtOTcsNyArMTAyLDcgQEAgVEVTVChDQ1Nj
aGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3ROZXh0QWN0aW9uQmVnaW5zRnJhbWVJZk5lZWRl
ZCkKICAgICAgICAgU3RhdGVNYWNoaW5lIHN0YXRlOwogICAgICAgICBzdGF0ZS5zZXRWaXNpYmxl
KHRydWUpOwogICAgICAgICBzdGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGlu
ZTo6QUNUSU9OX0JFR0lOX0ZSQU1FKTsKLSAgICAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3Rh
dGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfRlJBTUVfSU5fUFJPR1JFU1MsIHN0YXRlLmNvbW1pdFN0
YXRlKCkpOworICAgICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1J
VF9TVEFURV9VUERBVElOR19SRVNPVVJDRVMsIHN0YXRlLmNvbW1pdFN0YXRlKCkpOwogICAgICAg
ICBFWFBFQ1RfRkFMU0Uoc3RhdGUubmVlZHNDb21taXQoKSk7CiAgICAgfQogfQpAQCAtMjUxLDYg
KzI1Niw4IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0VXBkYXRlc19O
b1JlZHJhd19PbmVSb3VuZE9mVXBkYXRlcykKICAgICBzdGF0ZS5zZXROZWVkc1JlZHJhdyhmYWxz
ZSk7CiAgICAgc3RhdGUuc2V0VXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmcoZmFsc2UpOwogICAg
IHN0YXRlLnNldFZpc2libGUodHJ1ZSk7CisgICAgc3RhdGUuc2V0UmVzb3VyY2VVcGRhdGVzUGVu
ZGluZyh0cnVlKTsKKyAgICBzdGF0ZS5zZXRGcmFtZUNvbXBsZXRlKHRydWUpOwogCiAgICAgLy8g
VmVyaWZ5IHdlIGJlZ2luIHVwZGF0ZSwgYm90aCBmb3IgdnN5bmMgYW5kIG5vdCB2c3luYy4KICAg
ICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9VUERBVEVf
TU9SRV9SRVNPVVJDRVMsIHN0YXRlLm5leHRBY3Rpb24oKSk7CkBAIC0yNjcsNyArMjc0LDcgQEAg
VEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RVcGRhdGVzX05vUmVkcmF3X09u
ZVJvdW5kT2ZVcGRhdGVzKQogICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6
QUNUSU9OX05PTkUsIHN0YXRlLm5leHRBY3Rpb24oKSk7CiAKICAgICAvLyBFbmQgdXBkYXRlIHdp
dGggbm8gbW9yZSB1cGRhdGVzIHBlbmRpbmcuCi0gICAgc3RhdGUuYmVnaW5VcGRhdGVNb3JlUmVz
b3VyY2VzQ29tcGxldGUoZmFsc2UpOworICAgIHN0YXRlLnVwZGF0ZU1vcmVSZXNvdXJjZXNDb21w
bGV0ZShmYWxzZSk7CiAgICAgc3RhdGUuZGlkTGVhdmVWU3luYygpOwogICAgIEVYUEVDVF9FUShD
Q1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0NPTU1JVCwgc3RhdGUubmV4dEFjdGlvbigp
KTsKIH0KQEAgLTI3OSw2ICsyODYsOCBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVz
dCwgVGVzdFVwZGF0ZXNfTm9SZWRyYXdfVHdvUm91bmRzT2ZVcGRhdGVzKQogICAgIHN0YXRlLnNl
dE5lZWRzUmVkcmF3KGZhbHNlKTsKICAgICBzdGF0ZS5zZXRVcGRhdGVNb3JlUmVzb3VyY2VzUGVu
ZGluZyhmYWxzZSk7CiAgICAgc3RhdGUuc2V0VmlzaWJsZSh0cnVlKTsKKyAgICBzdGF0ZS5zZXRS
ZXNvdXJjZVVwZGF0ZXNQZW5kaW5nKHRydWUpOworICAgIHN0YXRlLnNldEZyYW1lQ29tcGxldGUo
dHJ1ZSk7CiAKICAgICAvLyBWZXJpZnkgdGhlIHVwZGF0ZSBiZWdpbnMsIGJvdGggZm9yIHZzeW5j
IGFuZCBub3QgdnN5bmMuCiAgICAgc3RhdGUuZGlkRW50ZXJWU3luYygpOwpAQCAtMjk1LDcgKzMw
NCw3IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0VXBkYXRlc19Ob1Jl
ZHJhd19Ud29Sb3VuZHNPZlVwZGF0ZXMpCiAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVN
YWNoaW5lOjpBQ1RJT05fTk9ORSwgc3RhdGUubmV4dEFjdGlvbigpKTsKIAogICAgIC8vIEFjayB0
aGUgdXBkYXRlIHdpdGggbW9yZSBwZW5kaW5nLgotICAgIHN0YXRlLmJlZ2luVXBkYXRlTW9yZVJl
c291cmNlc0NvbXBsZXRlKHRydWUpOworICAgIHN0YXRlLnVwZGF0ZU1vcmVSZXNvdXJjZXNDb21w
bGV0ZSh0cnVlKTsKIAogICAgIC8vIFZlcmlmeSB3ZSB1cGRhdGUgbW9yZSwgYm90aCBmb3IgdnN5
bmMgYW5kIG5vdCB2c3luYy4KICAgICBzdGF0ZS5kaWRMZWF2ZVZTeW5jKCk7CkBAIC0zMDUsNyAr
MzE0LDcgQEAgVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RVcGRhdGVzX05v
UmVkcmF3X1R3b1JvdW5kc09mVXBkYXRlcykKIAogICAgIC8vIEJlZ2luIGFub3RoZXIgdXBkYXRl
LCB3aGlsZSBpbnNpZGUgdnN5bmMuIEFuZCwgaXQgdXBkYXRpbmcuCiAgICAgc3RhdGUudXBkYXRl
U3RhdGUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9VUERBVEVfTU9SRV9S
RVNPVVJDRVMpOwotICAgIHN0YXRlLmJlZ2luVXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRlKGZh
bHNlKTsKKyAgICBzdGF0ZS51cGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUoZmFsc2UpOwogCiAg
ICAgLy8gTWFrZSBzdXJlIHdlIGNvbW1pdCwgaW5kZXBlbmRlbnQgb2YgdnN5bmMuCiAgICAgc3Rh
dGUuZGlkTGVhdmVWU3luYygpOwpAQCAtMzIxLDYgKzMzMCw5IEBAIFRFU1QoQ0NTY2hlZHVsZXJT
dGF0ZU1hY2hpbmVUZXN0LCBUZXN0VXBkYXRlc19XaXRoUmVkcmF3X09uZVJvdW5kT2ZVcGRhdGVz
KQogICAgIHN0YXRlLnNldE5lZWRzUmVkcmF3KHRydWUpOwogICAgIHN0YXRlLnNldFVwZGF0ZU1v
cmVSZXNvdXJjZXNQZW5kaW5nKGZhbHNlKTsKICAgICBzdGF0ZS5zZXRWaXNpYmxlKHRydWUpOwor
ICAgIHN0YXRlLnNldFJlc291cmNlVXBkYXRlc1BlbmRpbmcodHJ1ZSk7CisgICAgc3RhdGUuc2V0
RnJhbWVDb21wbGV0ZSh0cnVlKTsKKwogICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFj
aGluZTo6QUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUywgc3RhdGUubmV4dEFjdGlv
bigpKTsKIAogICAgIC8vIEJlZ2luIGFuIHVwZGF0ZS4KQEAgLTMzOCw3ICszNTAsNyBAQCBURVNU
KENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdFVwZGF0ZXNfV2l0aFJlZHJhd19PbmVS
b3VuZE9mVXBkYXRlcykKICAgICBzdGF0ZS5kaWRMZWF2ZVZTeW5jKCk7CiAKICAgICAvLyBGaW5p
c2ggdXBkYXRlIGJ1dCBsZWF2ZSBtb3JlIHJlc291cmNlcyBwZW5kaW5nLgotICAgIHN0YXRlLmJl
Z2luVXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRlKHRydWUpOworICAgIHN0YXRlLnVwZGF0ZU1v
cmVSZXNvdXJjZXNDb21wbGV0ZSh0cnVlKTsKIAogICAgIC8vIFZlcmlmeSB0aGF0IHJlZ2FyZGxl
c3Mgb2YgdnN5bmMsIHdlIHVwZGF0ZSBzb21lIG1vcmUuCiAgICAgc3RhdGUuZGlkTGVhdmVWU3lu
YygpOwpAQCAtMzUyLDcgKzM2NCw3IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0
LCBUZXN0VXBkYXRlc19XaXRoUmVkcmF3X09uZVJvdW5kT2ZVcGRhdGVzKQogICAgIHN0YXRlLmRp
ZEVudGVyVlN5bmMoKTsKICAgICBzdGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFj
aGluZTo6QUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUyk7CiAgICAgc3RhdGUuZGlk
TGVhdmVWU3luYygpOwotICAgIHN0YXRlLmJlZ2luVXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRl
KGZhbHNlKTsKKyAgICBzdGF0ZS51cGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUoZmFsc2UpOwog
CiAgICAgLy8gVmVyaWZ5IHdlIGNvbW1pdCByZWdhcmRsZXNzIG9mIHZzeW5jIHN0YXRlCiAgICAg
c3RhdGUuZGlkTGVhdmVWU3luYygpOwpAQCAtMzcwLDcgKzM4MiwxMSBAQCBURVNUKENDU2NoZWR1
bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdFNldE5lZWRzQ29tbWl0SXNOb3RMb3N0KQogICAgIC8v
IEJlZ2luIHRoZSBmcmFtZS4KICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6
OkFDVElPTl9CRUdJTl9GUkFNRSwgc3RhdGUubmV4dEFjdGlvbigpKTsKICAgICBzdGF0ZS51cGRh
dGVTdGF0ZShzdGF0ZS5uZXh0QWN0aW9uKCkpOwotICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0
YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX0ZSQU1FX0lOX1BST0dSRVNTLCBzdGF0ZS5jb21taXRT
dGF0ZSgpKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9T
VEFURV9VUERBVElOR19SRVNPVVJDRVMsIHN0YXRlLmNvbW1pdFN0YXRlKCkpOworCisgICAgLy8g
UmVjZWl2ZSByZXNvdXJjZSB0aGF0IG5lZWQgdXBkYXRlLgorICAgIHN0YXRlLnNldFJlc291cmNl
VXBkYXRlc1BlbmRpbmcodHJ1ZSk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNo
aW5lOjpDT01NSVRfU1RBVEVfVVBEQVRJTkdfUkVTT1VSQ0VTLCBzdGF0ZS5jb21taXRTdGF0ZSgp
KTsKIAogICAgIC8vIE5vdywgd2hpbGUgdGhlIGZyYW1lIGlzIGluIHByb2dyZXNzLCBzZXQgYW5v
dGhlciBjb21taXQuCiAgICAgc3RhdGUuc2V0TmVlZHNDb21taXQodHJ1ZSk7CkBAIC0zODIsNyAr
Mzk4LDcgQEAgVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RTZXROZWVkc0Nv
bW1pdElzTm90TG9zdCkKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFD
VElPTl9CRUdJTl9VUERBVEVfTU9SRV9SRVNPVVJDRVMsIHN0YXRlLm5leHRBY3Rpb24oKSk7CiAg
ICAgc3RhdGUudXBkYXRlU3RhdGUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJ
Tl9VUERBVEVfTU9SRV9SRVNPVVJDRVMpOwogICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRl
TWFjaGluZTo6QUNUSU9OX05PTkUsIHN0YXRlLm5leHRBY3Rpb24oKSk7Ci0gICAgc3RhdGUuYmVn
aW5VcGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUoZmFsc2UpOworICAgIHN0YXRlLnVwZGF0ZU1v
cmVSZXNvdXJjZXNDb21wbGV0ZShmYWxzZSk7CiAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3Rh
dGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfUkVBRFlfVE9fQ09NTUlULCBzdGF0ZS5jb21taXRTdGF0
ZSgpKTsKIAogICAgIC8vIEV4cGVjdCB0byBjb21taXQgcmVnYXJkbGVzcyBvZiB2c3luYyBzdGF0
ZS4KQEAgLTQxMywxMCArNDI5LDE0IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0
LCBUZXN0RnVsbEN5Y2xlKQogCiAgICAgLy8gQmVnaW4gdGhlIGZyYW1lLgogICAgIHN0YXRlLnVw
ZGF0ZVN0YXRlKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fRlJBTUUpOwot
ICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX0ZSQU1F
X0lOX1BST0dSRVNTLCBzdGF0ZS5jb21taXRTdGF0ZSgpKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hl
ZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9VUERBVElOR19SRVNPVVJDRVMsIHN0YXRl
LmNvbW1pdFN0YXRlKCkpOwogICAgIEVYUEVDVF9GQUxTRShzdGF0ZS5uZWVkc0NvbW1pdCgpKTsK
ICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9OT05FLCBzdGF0
ZS5uZXh0QWN0aW9uKCkpOwogCisgICAgLy8gUmVjZWl2ZSByZXNvdXJjZS4KKyAgICBzdGF0ZS5z
ZXRSZXNvdXJjZVVwZGF0ZXNQZW5kaW5nKHRydWUpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxl
clN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX1VQREFUSU5HX1JFU09VUkNFUywgc3RhdGUuY29t
bWl0U3RhdGUoKSk7CisKICAgICAvLyBUZWxsIHRoZSBzY2hlZHVsZXIgdGhlIGZyYW1lIGZpbmlz
aGVkLgogICAgIHN0YXRlLmJlZ2luRnJhbWVDb21wbGV0ZSgpOwogICAgIEVYUEVDVF9FUShDQ1Nj
aGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX1VQREFUSU5HX1JFU09VUkNFUywgc3Rh
dGUuY29tbWl0U3RhdGUoKSk7CkBAIC00MjQsNyArNDQ0LDcgQEAgVEVTVChDQ1NjaGVkdWxlclN0
YXRlTWFjaGluZVRlc3QsIFRlc3RGdWxsQ3ljbGUpCiAKICAgICAvLyBUZWxsIHRoZSBzY2hlZHVs
ZXIgdGhlIHVwZGF0ZSBiZWdhbiBhbmQgZmluaXNoZWQKICAgICBzdGF0ZS51cGRhdGVTdGF0ZShD
Q1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNF
Uyk7Ci0gICAgc3RhdGUuYmVnaW5VcGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUoZmFsc2UpOwor
ICAgIHN0YXRlLnVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZShmYWxzZSk7CiAgICAgRVhQRUNU
X0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfUkVBRFlfVE9fQ09NTUlU
LCBzdGF0ZS5jb21taXRTdGF0ZSgpKTsKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1h
Y2hpbmU6OkFDVElPTl9DT01NSVQsIHN0YXRlLm5leHRBY3Rpb24oKSk7CiAKQEAgLTQ1OSw3ICs0
NzksNyBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdEZ1bGxDeWNsZVdp
dGhDb21taXRSZXF1ZXN0SW5iZXR3ZWVuKQogCiAgICAgLy8gQmVnaW4gdGhlIGZyYW1lLgogICAg
IHN0YXRlLnVwZGF0ZVN0YXRlKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5f
RlJBTUUpOwotICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NU
QVRFX0ZSQU1FX0lOX1BST0dSRVNTLCBzdGF0ZS5jb21taXRTdGF0ZSgpKTsKKyAgICBFWFBFQ1Rf
RVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9VUERBVElOR19SRVNPVVJD
RVMsIHN0YXRlLmNvbW1pdFN0YXRlKCkpOwogICAgIEVYUEVDVF9GQUxTRShzdGF0ZS5uZWVkc0Nv
bW1pdCgpKTsKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9O
T05FLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwogCkBAIC00NjcsNiArNDg3LDEwIEBAIFRFU1QoQ0NT
Y2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0RnVsbEN5Y2xlV2l0aENvbW1pdFJlcXVlc3RJ
bmJldHdlZW4pCiAgICAgc3RhdGUuc2V0TmVlZHNDb21taXQodHJ1ZSk7CiAgICAgRVhQRUNUX0VR
KENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fTk9ORSwgc3RhdGUubmV4dEFjdGlvbigp
KTsKIAorICAgIC8vIFJlY2VpdmUgcmVzb3VyY2UuCisgICAgc3RhdGUuc2V0UmVzb3VyY2VVcGRh
dGVzUGVuZGluZyh0cnVlKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6
OkNPTU1JVF9TVEFURV9VUERBVElOR19SRVNPVVJDRVMsIHN0YXRlLmNvbW1pdFN0YXRlKCkpOwor
CiAgICAgLy8gVGVsbCB0aGUgc2NoZWR1bGVyIHRoZSBmcmFtZSBmaW5pc2hlZC4KICAgICBzdGF0
ZS5iZWdpbkZyYW1lQ29tcGxldGUoKTsKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1h
Y2hpbmU6OkNPTU1JVF9TVEFURV9VUERBVElOR19SRVNPVVJDRVMsIHN0YXRlLmNvbW1pdFN0YXRl
KCkpOwpAQCAtNDc0LDcgKzQ5OCw3IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0
LCBUZXN0RnVsbEN5Y2xlV2l0aENvbW1pdFJlcXVlc3RJbmJldHdlZW4pCiAKICAgICAvLyBUZWxs
IHRoZSBzY2hlZHVsZXIgdGhlIHVwZGF0ZSBiZWdhbiBhbmQgZmluaXNoZWQKICAgICBzdGF0ZS51
cGRhdGVTdGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX1VQREFURV9N
T1JFX1JFU09VUkNFUyk7Ci0gICAgc3RhdGUuYmVnaW5VcGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxl
dGUoZmFsc2UpOworICAgIHN0YXRlLnVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZShmYWxzZSk7
CiAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfUkVB
RFlfVE9fQ09NTUlULCBzdGF0ZS5jb21taXRTdGF0ZSgpKTsKICAgICBFWFBFQ1RfRVEoQ0NTY2hl
ZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9DT01NSVQsIHN0YXRlLm5leHRBY3Rpb24oKSk7CiAK
QEAgLTUxNiwxMyArNTQwLDE3IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBU
ZXN0R29lc0ludmlzaWJsZU1pZENvbW1pdCkKIAogICAgIC8vIEJlZ2luIHRoZSBmcmFtZSB3aGls
ZSB2aXNpYmxlLgogICAgIHN0YXRlLnVwZGF0ZVN0YXRlKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5l
OjpBQ1RJT05fQkVHSU5fRlJBTUUpOwotICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFj
aGluZTo6Q09NTUlUX1NUQVRFX0ZSQU1FX0lOX1BST0dSRVNTLCBzdGF0ZS5jb21taXRTdGF0ZSgp
KTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9V
UERBVElOR19SRVNPVVJDRVMsIHN0YXRlLmNvbW1pdFN0YXRlKCkpOwogICAgIEVYUEVDVF9GQUxT
RShzdGF0ZS5uZWVkc0NvbW1pdCgpKTsKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1h
Y2hpbmU6OkFDVElPTl9OT05FLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwogCiAgICAgLy8gQmVjb21l
IGludmlzaWJsZQogICAgIHN0YXRlLnNldFZpc2libGUoZmFsc2UpOwogCisgICAgLy8gUmVjZWl2
ZSByZXNvdXJjZS4KKyAgICBzdGF0ZS5zZXRSZXNvdXJjZVVwZGF0ZXNQZW5kaW5nKHRydWUpOwor
ICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX1VQREFU
SU5HX1JFU09VUkNFUywgc3RhdGUuY29tbWl0U3RhdGUoKSk7CisKICAgICAvLyBUZWxsIHRoZSBz
Y2hlZHVsZXIgdGhlIGZyYW1lIGZpbmlzaGVkCiAgICAgc3RhdGUuYmVnaW5GcmFtZUNvbXBsZXRl
KCk7CiAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVf
VVBEQVRJTkdfUkVTT1VSQ0VTLCBzdGF0ZS5jb21taXRTdGF0ZSgpKTsKQEAgLTUzMCw3ICs1NTgs
NyBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdEdvZXNJbnZpc2libGVN
aWRDb21taXQpCiAKICAgICAvLyBUZWxsIHRoZSBzY2hlZHVsZXIgdGhlIHVwZGF0ZSBiZWdhbiBh
bmQgZmluaXNoZWQKICAgICBzdGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGlu
ZTo6QUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUyk7Ci0gICAgc3RhdGUuYmVnaW5V
cGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUoZmFsc2UpOworICAgIHN0YXRlLnVwZGF0ZU1vcmVS
ZXNvdXJjZXNDb21wbGV0ZShmYWxzZSk7CiAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVN
YWNoaW5lOjpDT01NSVRfU1RBVEVfUkVBRFlfVE9fQ09NTUlULCBzdGF0ZS5jb21taXRTdGF0ZSgp
KTsKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9DT01NSVQs
IHN0YXRlLm5leHRBY3Rpb24oKSk7CiAKQEAgLTU1MCw0ICs1NzgsNjUgQEAgVEVTVChDQ1NjaGVk
dWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RHb2VzSW52aXNpYmxlTWlkQ29tbWl0KQogICAgIEVY
UEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX05PTkUsIHN0YXRlLm5leHRB
Y3Rpb24oKSk7CiB9CiAKK1RFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0Tm9S
ZXNvdXJjZVVwZGF0ZXMpCit7CisgICAgU3RhdGVNYWNoaW5lIHN0YXRlOworICAgIHN0YXRlLnNl
dFZpc2libGUodHJ1ZSk7CisKKyAgICAvLyBTdGFydCBjbGVhbiBhbmQgc2V0IGNvbW1pdC4KKyAg
ICBzdGF0ZS5zZXROZWVkc0NvbW1pdCh0cnVlKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJT
dGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9GUkFNRSwgc3RhdGUubmV4dEFjdGlvbigpKTsKKwor
ICAgIC8vIEJlZ2luIHRoZSBmcmFtZS4KKyAgICBzdGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxl
clN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX0ZSQU1FKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hl
ZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9VUERBVElOR19SRVNPVVJDRVMsIHN0YXRl
LmNvbW1pdFN0YXRlKCkpOworICAgIEVYUEVDVF9GQUxTRShzdGF0ZS5uZWVkc0NvbW1pdCgpKTsK
KyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9OT05FLCBzdGF0
ZS5uZXh0QWN0aW9uKCkpOworCisgICAgLy8gVGVsbCB0aGUgc2NoZWR1bGVyIHRoZSBmcmFtZSBm
aW5pc2hlZC4KKyAgICBzdGF0ZS5iZWdpbkZyYW1lQ29tcGxldGUoKTsKKyAgICBFWFBFQ1RfRVEo
Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9SRUFEWV9UT19DT01NSVQsIHN0
YXRlLmNvbW1pdFN0YXRlKCkpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGlu
ZTo6QUNUSU9OX0NPTU1JVCwgc3RhdGUubmV4dEFjdGlvbigpKTsKK30KKworVEVTVChDQ1NjaGVk
dWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3ROb1Jlc291cmNlUGVuZGluZykKK3sKKyAgICBTdGF0
ZU1hY2hpbmUgc3RhdGU7CisgICAgc3RhdGUuc2V0VmlzaWJsZSh0cnVlKTsKKworICAgIC8vIFN0
YXJ0IGNsZWFuIGFuZCBzZXQgY29tbWl0LgorICAgIHN0YXRlLnNldE5lZWRzQ29tbWl0KHRydWUp
OworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX0ZS
QU1FLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworCisgICAgLy8gQmVnaW4gdGhlIGZyYW1lLgorICAg
IHN0YXRlLnVwZGF0ZVN0YXRlKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5f
RlJBTUUpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NU
QVRFX1VQREFUSU5HX1JFU09VUkNFUywgc3RhdGUuY29tbWl0U3RhdGUoKSk7CisgICAgRVhQRUNU
X0ZBTFNFKHN0YXRlLm5lZWRzQ29tbWl0KCkpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0
YXRlTWFjaGluZTo6QUNUSU9OX05PTkUsIHN0YXRlLm5leHRBY3Rpb24oKSk7CisKKyAgICAvLyBS
ZWNlaXZlIHJlc291cmNlLgorICAgIHN0YXRlLnNldFJlc291cmNlVXBkYXRlc1BlbmRpbmcodHJ1
ZSk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVf
VVBEQVRJTkdfUkVTT1VSQ0VTLCBzdGF0ZS5jb21taXRTdGF0ZSgpKTsKKworICAgIC8vIFRlbGwg
dGhlIHNjaGVkdWxlciB0aGUgdXBkYXRlIGJlZ2FuIGFuZCBmaW5pc2hlZC4KKyAgICBzdGF0ZS51
cGRhdGVTdGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX1VQREFURV9N
T1JFX1JFU09VUkNFUyk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpD
T01NSVRfU1RBVEVfVVBEQVRJTkdfUkVTT1VSQ0VTLCBzdGF0ZS5jb21taXRTdGF0ZSgpKTsKKyAg
ICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9OT05FLCBzdGF0ZS5u
ZXh0QWN0aW9uKCkpOworICAgIHN0YXRlLnVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZSh0cnVl
KTsKKworICAgIC8vIFRlbGwgdGhlIHNjaGVkdWxlciBhbm90aGVyIHVwZGF0ZSBiZWdhbiBhbmQg
ZmluaXNoZWQuCisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05f
QkVHSU5fVVBEQVRFX01PUkVfUkVTT1VSQ0VTLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworICAgIHN0
YXRlLnVwZGF0ZVN0YXRlKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fVVBE
QVRFX01PUkVfUkVTT1VSQ0VTKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hp
bmU6OkFDVElPTl9OT05FLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworICAgIHN0YXRlLnVwZGF0ZU1v
cmVSZXNvdXJjZXNDb21wbGV0ZShmYWxzZSk7CisKKyAgICAvLyBObyBwZW5kaW5nIHJlc291cmNl
cyB0byB1cGRhdGUuCisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJ
T05fTk9ORSwgc3RhdGUubmV4dEFjdGlvbigpKTsKKworICAgIC8vIFRlbGwgdGhlIHNjaGVkdWxl
ciB0aGUgZnJhbWUgZmluaXNoZWQuCisgICAgc3RhdGUuYmVnaW5GcmFtZUNvbXBsZXRlKCk7Cisg
ICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfUkVBRFlf
VE9fQ09NTUlULCBzdGF0ZS5jb21taXRTdGF0ZSgpKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVs
ZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9DT01NSVQsIHN0YXRlLm5leHRBY3Rpb24oKSk7Cit9CisK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NTY2hlZHVsZXJU
ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NTY2hlZHVsZXJUZXN0LmNw
cAppbmRleCBiNThlZDJjLi5mMzJiMGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0NDU2NoZWR1bGVyVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9DQ1NjaGVkdWxlclRlc3QuY3BwCkBAIC03NiwxMiArNzYsMTAgQEAgVEVTVChDQ1Nj
aGVkdWxlclRlc3QsIFJlcXVlc3RDb21taXQpCiAgICAgY2xpZW50LnJlc2V0KCk7CiAKICAgICAv
LyBTaW5jZSwgaGFzTW9yZVJlc291cmNlVXBkYXRlcyBpcyBzZXQgdG8gZmFsc2UsCi0gICAgLy8g
YmVnaW5GcmFtZUNvbXBsZXRlIHNob3VsZCB1cGRhdGVNb3JlUmVzb3VyY2VzLCB0aGVuCi0gICAg
Ly8gY29tbWl0CisgICAgLy8gYmVnaW5GcmFtZUNvbXBsZXRlIHNob3VsZCBjb21taXQgaW1tZWRp
YXRlbHkuCiAgICAgc2NoZWR1bGVyLT5iZWdpbkZyYW1lQ29tcGxldGUoKTsKLSAgICBFWFBFQ1Rf
RVEoMiwgY2xpZW50Lm51bUFjdGlvbnMoKSk7Ci0gICAgRVhQRUNUX1NUUkVRKCJzY2hlZHVsZWRB
Y3Rpb25VcGRhdGVNb3JlUmVzb3VyY2VzIiwgY2xpZW50LmFjdGlvbigwKSk7Ci0gICAgRVhQRUNU
X1NUUkVRKCJzY2hlZHVsZWRBY3Rpb25Db21taXQiLCBjbGllbnQuYWN0aW9uKDEpKTsKKyAgICBF
WFBFQ1RfRVEoMSwgY2xpZW50Lm51bUFjdGlvbnMoKSk7CisgICAgRVhQRUNUX1NUUkVRKCJzY2hl
ZHVsZWRBY3Rpb25Db21taXQiLCBjbGllbnQuYWN0aW9uKDApKTsKICAgICBjbGllbnQucmVzZXQo
KTsKIAogICAgIC8vIFRpY2sgc2hvdWxkIGRyYXcuCkBAIC0xMTIsMTIgKzExMCwxMCBAQCBURVNU
KENDU2NoZWR1bGVyVGVzdCwgUmVxdWVzdENvbW1pdEFmdGVyQmVnaW5GcmFtZSkKICAgICBzY2hl
ZHVsZXItPnNldE5lZWRzQ29tbWl0KCk7CiAKICAgICAvLyBTaW5jZSwgaGFzTW9yZVJlc291cmNl
VXBkYXRlcyBpcyBzZXQgdG8gZmFsc2UsIGFuZCBhbm90aGVyIGNvbW1pdCBpcwotICAgIC8vIG5l
ZWRlZCwgYmVnaW5GcmFtZUNvbXBsZXRlIHNob3VsZCB1cGRhdGVNb3JlUmVzb3VyY2VzLCB0aGVu
IGNvbW1pdCwgdGhlbgotICAgIC8vIGJlZ2luIGFub3RoZXIgZnJhbWUuCisgICAgLy8gbmVlZGVk
LCBiZWdpbkZyYW1lQ29tcGxldGUgc2hvdWxkIGNvbW1pdCwgdGhlbiBiZWdpbiBhbm90aGVyIGZy
YW1lLgogICAgIHNjaGVkdWxlci0+YmVnaW5GcmFtZUNvbXBsZXRlKCk7Ci0gICAgRVhQRUNUX0VR
KDIsIGNsaWVudC5udW1BY3Rpb25zKCkpOwotICAgIEVYUEVDVF9TVFJFUSgic2NoZWR1bGVkQWN0
aW9uVXBkYXRlTW9yZVJlc291cmNlcyIsIGNsaWVudC5hY3Rpb24oMCkpOwotICAgIEVYUEVDVF9T
VFJFUSgic2NoZWR1bGVkQWN0aW9uQ29tbWl0IiwgY2xpZW50LmFjdGlvbigxKSk7CisgICAgRVhQ
RUNUX0VRKDEsIGNsaWVudC5udW1BY3Rpb25zKCkpOworICAgIEVYUEVDVF9TVFJFUSgic2NoZWR1
bGVkQWN0aW9uQ29tbWl0IiwgY2xpZW50LmFjdGlvbigwKSk7CiAgICAgY2xpZW50LnJlc2V0KCk7
CiAKICAgICAvLyBUaWNrIHNob3VsZCBkcmF3IGJ1dCB0aGVuIGJlZ2luIGFub3RoZXIgZnJhbWUu
CkBAIC0yMzMsNCArMjI5LDUyIEBAIFRFU1QoQ0NTY2hlZHVsZXJUZXN0LCBSZXF1ZXN0Q29tbWl0
SW5zaWRlRHJhdykKICAgICBFWFBFQ1RfRkFMU0Uoc2NoZWR1bGVyLT5yZWRyYXdQZW5kaW5nKCkp
OwogfQogCitURVNUKENDU2NoZWR1bGVyVGVzdCwgVXBkYXRlUmVzb3VyY2VzKQoreworICAgIEZh
a2VDQ1NjaGVkdWxlckNsaWVudCBjbGllbnQ7CisgICAgUmVmUHRyPEZha2VDQ1RpbWVTb3VyY2U+
IHRpbWVTb3VyY2UgPSBhZG9wdFJlZihuZXcgRmFrZUNDVGltZVNvdXJjZSgpKTsKKyAgICBPd25Q
dHI8Q0NTY2hlZHVsZXI+IHNjaGVkdWxlciA9IENDU2NoZWR1bGVyOjpjcmVhdGUoJmNsaWVudCwg
YWRvcHRQdHIobmV3IENDRnJhbWVSYXRlQ29udHJvbGxlcih0aW1lU291cmNlKSkpOworICAgIHNj
aGVkdWxlci0+c2V0VmlzaWJsZSh0cnVlKTsKKworICAgIC8vIFNldE5lZWRzQ29tbWl0IHNob3Vs
ZCBiZWdpbiB0aGUgZnJhbWUuCisgICAgc2NoZWR1bGVyLT5zZXROZWVkc0NvbW1pdCgpOworICAg
IEVYUEVDVF9FUSgxLCBjbGllbnQubnVtQWN0aW9ucygpKTsKKyAgICBFWFBFQ1RfU1RSRVEoInNj
aGVkdWxlZEFjdGlvbkJlZ2luRnJhbWUiLCBjbGllbnQuYWN0aW9uKDApKTsKKyAgICBjbGllbnQu
cmVzZXQoKTsKKworICAgIC8vIE5vdyBzZXROZWVkc0NvbW1pdCBhZ2Fpbi4gQ2FsbGluZyBoZXJl
IG1lYW5zIHdlIG5lZWQgYSBzZWNvbmQgZnJhbWUuCisgICAgc2NoZWR1bGVyLT5zZXROZWVkc0Nv
bW1pdCgpOworCisgICAgLy8gVXBkYXRlIHBlbmRpbmcgcmVzb3VyY2VzLgorICAgIGNsaWVudC5z
ZXRIYXNNb3JlUmVzb3VyY2VVcGRhdGVzKHRydWUpOworICAgIHNjaGVkdWxlci0+c2V0UmVzb3Vy
Y2VVcGRhdGVzUGVuZGluZygpOworICAgIEVYUEVDVF9FUSgxLCBjbGllbnQubnVtQWN0aW9ucygp
KTsKKyAgICBFWFBFQ1RfU1RSRVEoInNjaGVkdWxlZEFjdGlvblVwZGF0ZU1vcmVSZXNvdXJjZXMi
LCBjbGllbnQuYWN0aW9uKDApKTsKKyAgICBjbGllbnQucmVzZXQoKTsKKworICAgIC8vIENsaWVu
dCBmaW5pc2hlZCB1cGRhdGUgYnV0IGhhdmUgbm90IHlldCB0b2xkIHNjaGVkdWxlci4KKyAgICBj
bGllbnQuc2V0SGFzTW9yZVJlc291cmNlVXBkYXRlcyhmYWxzZSk7CisKKyAgICAvLyBiZWdpbkZy
YW1lQ29tcGxldGUgc2hvdWxkIG5vdCBjb21taXQsIGFzIGFuIHVwZGF0ZSBpcyBwZW5kaW5nLgor
ICAgIHNjaGVkdWxlci0+YmVnaW5GcmFtZUNvbXBsZXRlKCk7CisgICAgRVhQRUNUX0VRKDAsIGNs
aWVudC5udW1BY3Rpb25zKCkpOworICAgIGNsaWVudC5yZXNldCgpOworCisgICAgLy8gU2luY2Us
IGhhc01vcmVSZXNvdXJjZVVwZGF0ZXMgaXMgc2V0IHRvIGZhbHNlLCBhbmQgYW5vdGhlciBjb21t
aXQgaXMKKyAgICAvLyBuZWVkZWQsIHVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZSgpIHNob3Vs
ZCBjb21taXQsIHRoZW4gYmVnaW4KKyAgICAvLyBhbm90aGVyIGZyYW1lLgorICAgIHNjaGVkdWxl
ci0+dXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRlKCk7CisgICAgRVhQRUNUX0VRKDEsIGNsaWVu
dC5udW1BY3Rpb25zKCkpOworICAgIEVYUEVDVF9TVFJFUSgic2NoZWR1bGVkQWN0aW9uQ29tbWl0
IiwgY2xpZW50LmFjdGlvbigwKSk7CisgICAgY2xpZW50LnJlc2V0KCk7CisKKyAgICAvLyBUaWNr
IHNob3VsZCBkcmF3IGJ1dCB0aGVuIGJlZ2luIGFub3RoZXIgZnJhbWUuCisgICAgdGltZVNvdXJj
ZS0+dGljaygpOworICAgIEVYUEVDVF9FUSgyLCBjbGllbnQubnVtQWN0aW9ucygpKTsKKyAgICBF
WFBFQ1RfU1RSRVEoInNjaGVkdWxlZEFjdGlvbkRyYXdBbmRTd2FwIiwgY2xpZW50LmFjdGlvbigw
KSk7CisgICAgRVhQRUNUX1NUUkVRKCJzY2hlZHVsZWRBY3Rpb25CZWdpbkZyYW1lIiwgY2xpZW50
LmFjdGlvbigxKSk7CisgICAgY2xpZW50LnJlc2V0KCk7Cit9CisKKwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>121362</attachid>
            <date>2012-01-05 16:23:05 -0800</date>
            <delta_ts>2012-01-24 16:38:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>threaded-parallel-upload.diff</filename>
            <type>text/plain</type>
            <size>26002</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDU2NoZWR1bGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDU2NoZWR1bGVyLmNwcAppbmRleCA4MTJhMGM3Li5iNTE0M2U3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NTY2hlZHVsZXIuY3BwCkBAIC02OCw2ICs2OCwxMiBAQCB2b2lkIENDU2NoZWR1bGVyOjpzZXRO
ZWVkc0ZvcmNlZFJlZHJhdygpCiAgICAgcHJvY2Vzc1NjaGVkdWxlZEFjdGlvbnMoKTsKIH0KIAor
dm9pZCBDQ1NjaGVkdWxlcjo6c2V0UmVzb3VyY2VVcGRhdGVzUGVuZGluZygpCit7CisgICAgbV9z
dGF0ZU1hY2hpbmUuc2V0UmVzb3VyY2VVcGRhdGVzUGVuZGluZygpOworICAgIHByb2Nlc3NTY2hl
ZHVsZWRBY3Rpb25zKCk7Cit9CisKIHZvaWQgQ0NTY2hlZHVsZXI6OmJlZ2luRnJhbWVDb21wbGV0
ZSgpCiB7CiAgICAgVFJBQ0VfRVZFTlQoIkNDU2NoZWR1bGVyOjpiZWdpbkZyYW1lQ29tcGxldGUi
LCB0aGlzLCAwKTsKQEAgLTk2LDcgKzEwMiw3IEBAIHZvaWQgQ0NTY2hlZHVsZXI6OmJlZ2luRnJh
bWUoKQogewogICAgIGlmIChtX3VwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nKSB7CiAgICAgICAg
IG1fdXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmcgPSBmYWxzZTsKLSAgICAgICAgbV9zdGF0ZU1h
Y2hpbmUuYmVnaW5VcGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUobV9jbGllbnQtPmhhc01vcmVS
ZXNvdXJjZVVwZGF0ZXMoKSk7CisgICAgICAgIG1fc3RhdGVNYWNoaW5lLnVwZGF0ZU1vcmVSZXNv
dXJjZXNDb21wbGV0ZShtX2NsaWVudC0+aGFzTW9yZVJlc291cmNlVXBkYXRlcygpKTsKICAgICB9
CiAgICAgVFJBQ0VfRVZFTlQoIkNDU2NoZWR1bGVyOjpiZWdpbkZyYW1lIiwgdGhpcywgMCk7CiAK
QEAgLTExMSw2ICsxMTcsMTQgQEAgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFjdGlvbiBDQ1Nj
aGVkdWxlcjo6bmV4dEFjdGlvbigpCiAgICAgcmV0dXJuIG1fc3RhdGVNYWNoaW5lLm5leHRBY3Rp
b24oKTsKIH0KIAordm9pZCBDQ1NjaGVkdWxlcjo6dXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRl
KCkKK3sKKyAgICBBU1NFUlQobV91cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZyk7CisgICAgbV91
cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZyA9IGZhbHNlOworICAgIG1fc3RhdGVNYWNoaW5lLnVw
ZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZShtX2NsaWVudC0+aGFzTW9yZVJlc291cmNlVXBkYXRl
cygpKTsKKyAgICBwcm9jZXNzU2NoZWR1bGVkQWN0aW9ucygpOworfQorCiB2b2lkIENDU2NoZWR1
bGVyOjpwcm9jZXNzU2NoZWR1bGVkQWN0aW9ucygpCiB7CiAgICAgLy8gRWFybHkgb3V0IHNvIHdl
IGRvbid0IHNwYW0gVFJBQ0VfRVZFTlRTIHdpdGggdXNlbGVzcyBwcm9jZXNzU2NoZWR1bGVkQWN0
aW9ucy4KQEAgLTEzMSw2ICsxNDUsNyBAQCB2b2lkIENDU2NoZWR1bGVyOjpwcm9jZXNzU2NoZWR1
bGVkQWN0aW9ucygpCiAgICAgICAgICAgICBtX2NsaWVudC0+c2NoZWR1bGVkQWN0aW9uQmVnaW5G
cmFtZSgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ0NTY2hlZHVsZXJTdGF0
ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9VUERBVEVfTU9SRV9SRVNPVVJDRVM6CisgICAgICAgICAg
ICBBU1NFUlQobV9jbGllbnQtPmhhc01vcmVSZXNvdXJjZVVwZGF0ZXMoKSk7CiAgICAgICAgICAg
ICBtX2NsaWVudC0+c2NoZWR1bGVkQWN0aW9uVXBkYXRlTW9yZVJlc291cmNlcygpOwogICAgICAg
ICAgICAgaWYgKCFtX2NsaWVudC0+aGFzTW9yZVJlc291cmNlVXBkYXRlcygpKSB7CiAgICAgICAg
ICAgICAgICAgLy8gSWYgd2Ugd2VyZSBqdXN0IHRvbGQgdG8gdXBkYXRlIHJlc291cmNlcywgYnV0
IHRoZXJlIGFyZSBubwpAQCAtMTM4LDcgKzE1Myw3IEBAIHZvaWQgQ0NTY2hlZHVsZXI6OnByb2Nl
c3NTY2hlZHVsZWRBY3Rpb25zKCkKICAgICAgICAgICAgICAgICAvLyBiZWdpblVwZGF0ZU1vcmVS
ZXNvdXJjZXMgY29tcGxldGVkLiBJZiBtb3JlIGFyZSBwZW5kaW5nLAogICAgICAgICAgICAgICAg
IC8vIHRoZW4gd2Ugd2lsbCBhY2sgdGhlIHVwZGF0ZSBhdCB0aGUgbmV4dCBkcmF3LgogICAgICAg
ICAgICAgICAgIG1fdXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmcgPSBmYWxzZTsKLSAgICAgICAg
ICAgICAgICBtX3N0YXRlTWFjaGluZS5iZWdpblVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZShm
YWxzZSk7CisgICAgICAgICAgICAgICAgbV9zdGF0ZU1hY2hpbmUudXBkYXRlTW9yZVJlc291cmNl
c0NvbXBsZXRlKGZhbHNlKTsKICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgIG1f
dXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmcgPSB0cnVlOwogICAgICAgICAgICAgYnJlYWs7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1NjaGVkdWxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NTY2hlZHVsZXIuaAppbmRleCA3MzEwNTgxLi41MDEyYzdmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1
bGVyLmgKQEAgLTY3LDExICs2NywxMiBAQCBwdWJsaWM6CiAgICAgLy8gQXMgc2V0TmVlZHNSZWRy
YXcoKSwgYnV0IGVuc3VyZXMgdGhlIGRyYXcgd2lsbCBkZWZpbml0ZWx5IGhhcHBlbiBldmVuIGlm
IHdlIGFyZSBub3QgdmlzaWJsZS4KICAgICB2b2lkIHNldE5lZWRzRm9yY2VkUmVkcmF3KCk7CiAK
KyAgICB2b2lkIHNldFJlc291cmNlVXBkYXRlc1BlbmRpbmcoKTsKICAgICB2b2lkIGJlZ2luRnJh
bWVDb21wbGV0ZSgpOwotCiAgICAgdm9pZCBzZXRNYXhGcmFtZXNQZW5kaW5nKGludCk7CiAgICAg
dm9pZCBkaWRTd2FwQnVmZmVyc0NvbXBsZXRlKCk7CiAgICAgdm9pZCBkaWRTd2FwQnVmZmVyc0Fi
b3J0KCk7CisgICAgdm9pZCB1cGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUoKTsKIAogICAgIGJv
b2wgY29tbWl0UGVuZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGVNYWNoaW5lLmNvbW1pdFBl
bmRpbmcoKTsgfQogICAgIGJvb2wgcmVkcmF3UGVuZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fc3Rh
dGVNYWNoaW5lLnJlZHJhd1BlbmRpbmcoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVs
ZXJTdGF0ZU1hY2hpbmUuY3BwCmluZGV4IDA1YjRmNmMuLmQwZmY2NjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyU3Rh
dGVNYWNoaW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZS5jcHAKQEAgLTM4LDcgKzM4LDkgQEAgQ0NT
Y2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNDU2NoZWR1bGVyU3RhdGVNYWNoaW5lKCkKICAgICAsIG1f
dXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmcoZmFsc2UpCiAgICAgLCBtX2luc2lkZVZTeW5jKGZh
bHNlKQogICAgICwgbV92aXNpYmxlKGZhbHNlKQotICAgICwgbV9jYW5EcmF3KHRydWUpIHsgfQor
ICAgICwgbV9jYW5EcmF3KHRydWUpCisgICAgLCBtX3Jlc291cmNlVXBkYXRlc1BlbmRpbmcoZmFs
c2UpCisgICAgLCBtX2ZyYW1lQ29tcGxldGUoZmFsc2UpIHsgfQogCiBDQ1NjaGVkdWxlclN0YXRl
TWFjaGluZTo6QWN0aW9uIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpuZXh0QWN0aW9uKCkgY29u
c3QKIHsKQEAgLTUyLDE1ICs1NCwxMCBAQCBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QWN0aW9u
IENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpuZXh0QWN0aW9uKCkgY29uc3QKICAgICAgICAgICAg
IHJldHVybiBBQ1RJT05fQkVHSU5fRlJBTUU7CiAgICAgICAgIHJldHVybiBBQ1RJT05fTk9ORTsK
IAotICAgIGNhc2UgQ09NTUlUX1NUQVRFX0ZSQU1FX0lOX1BST0dSRVNTOgotICAgICAgICBpZiAo
c2hvdWxkRHJhdykKLSAgICAgICAgICAgIHJldHVybiBBQ1RJT05fRFJBVzsKLSAgICAgICAgcmV0
dXJuIEFDVElPTl9OT05FOwotCiAgICAgY2FzZSBDT01NSVRfU1RBVEVfVVBEQVRJTkdfUkVTT1VS
Q0VTOgogICAgICAgICBpZiAoc2hvdWxkRHJhdykKICAgICAgICAgICAgIHJldHVybiBBQ1RJT05f
RFJBVzsKLSAgICAgICAgaWYgKCFtX3VwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nKQorICAgICAg
ICBpZiAoIW1fdXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmcgJiYgbV9yZXNvdXJjZVVwZGF0ZXNQ
ZW5kaW5nKQogICAgICAgICAgICAgcmV0dXJuIEFDVElPTl9CRUdJTl9VUERBVEVfTU9SRV9SRVNP
VVJDRVM7CiAgICAgICAgIHJldHVybiBBQ1RJT05fTk9ORTsKIApAQCAtODgsOCArODUsMTAgQEAg
dm9pZCBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6dXBkYXRlU3RhdGUoQWN0aW9uIGFjdGlvbikK
IAogICAgIGNhc2UgQUNUSU9OX0JFR0lOX0ZSQU1FOgogICAgICAgICBBU1NFUlQobV92aXNpYmxl
KTsKLSAgICAgICAgbV9jb21taXRTdGF0ZSA9IENPTU1JVF9TVEFURV9GUkFNRV9JTl9QUk9HUkVT
UzsKKyAgICAgICAgQVNTRVJUKCFtX3Jlc291cmNlVXBkYXRlc1BlbmRpbmcpOworICAgICAgICBt
X2NvbW1pdFN0YXRlID0gQ09NTUlUX1NUQVRFX1VQREFUSU5HX1JFU09VUkNFUzsKICAgICAgICAg
bV9uZWVkc0NvbW1pdCA9IGZhbHNlOworICAgICAgICBtX2ZyYW1lQ29tcGxldGUgPSBmYWxzZTsK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgY2FzZSBBQ1RJT05fQkVHSU5fVVBEQVRFX01PUkVfUkVT
T1VSQ0VTOgpAQCAtMTQ5LDE4ICsxNDgsMjYgQEAgdm9pZCBDQ1NjaGVkdWxlclN0YXRlTWFjaGlu
ZTo6c2V0TmVlZHNDb21taXQoKQogICAgIG1fbmVlZHNDb21taXQgPSB0cnVlOwogfQogCit2b2lk
IENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpzZXRSZXNvdXJjZVVwZGF0ZXNQZW5kaW5nKCkKK3sK
KyAgICBtX3Jlc291cmNlVXBkYXRlc1BlbmRpbmcgPSB0cnVlOworfQorCiB2b2lkIENDU2NoZWR1
bGVyU3RhdGVNYWNoaW5lOjpiZWdpbkZyYW1lQ29tcGxldGUoKQogewotICAgIEFTU0VSVChtX2Nv
bW1pdFN0YXRlID09IENPTU1JVF9TVEFURV9GUkFNRV9JTl9QUk9HUkVTUyk7Ci0gICAgbV9jb21t
aXRTdGF0ZSA9IENPTU1JVF9TVEFURV9VUERBVElOR19SRVNPVVJDRVM7CisgICAgQVNTRVJUKG1f
Y29tbWl0U3RhdGUgPT0gQ09NTUlUX1NUQVRFX1VQREFUSU5HX1JFU09VUkNFUyk7CisgICAgbV9m
cmFtZUNvbXBsZXRlID0gdHJ1ZTsKKyAgICBpZiAoIW1fdXBkYXRlTW9yZVJlc291cmNlc1BlbmRp
bmcgJiYgIW1fcmVzb3VyY2VVcGRhdGVzUGVuZGluZykKKyAgICAgICAgbV9jb21taXRTdGF0ZSA9
IENPTU1JVF9TVEFURV9SRUFEWV9UT19DT01NSVQ7CiB9CiAKLXZvaWQgQ0NTY2hlZHVsZXJTdGF0
ZU1hY2hpbmU6OmJlZ2luVXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRlKGJvb2wgbW9yZVBlbmRp
bmcpCit2b2lkIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjp1cGRhdGVNb3JlUmVzb3VyY2VzQ29t
cGxldGUoYm9vbCBtb3JlUGVuZGluZykKIHsKICAgICBBU1NFUlQobV9jb21taXRTdGF0ZSA9PSBD
T01NSVRfU1RBVEVfVVBEQVRJTkdfUkVTT1VSQ0VTKTsKICAgICBBU1NFUlQobV91cGRhdGVNb3Jl
UmVzb3VyY2VzUGVuZGluZyk7CiAgICAgbV91cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZyA9IGZh
bHNlOwotICAgIGlmICghbW9yZVBlbmRpbmcpCisgICAgbV9yZXNvdXJjZVVwZGF0ZXNQZW5kaW5n
ID0gbW9yZVBlbmRpbmc7CisgICAgaWYgKCFtb3JlUGVuZGluZyAmJiBtX2ZyYW1lQ29tcGxldGUp
CiAgICAgICAgIG1fY29tbWl0U3RhdGUgPSBDT01NSVRfU1RBVEVfUkVBRFlfVE9fQ09NTUlUOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUuaAppbmRleCAyZDdk
YTdlLi4yYmFjOWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5l
LmgKQEAgLTQ1LDcgKzQ1LDYgQEAgcHVibGljOgogCiAgICAgZW51bSBDb21taXRTdGF0ZSB7CiAg
ICAgICAgIENPTU1JVF9TVEFURV9JRExFLAotICAgICAgICBDT01NSVRfU1RBVEVfRlJBTUVfSU5f
UFJPR1JFU1MsCiAgICAgICAgIENPTU1JVF9TVEFURV9VUERBVElOR19SRVNPVVJDRVMsCiAgICAg
ICAgIENPTU1JVF9TVEFURV9SRUFEWV9UT19DT01NSVQsCiAgICAgICAgIENPTU1JVF9TVEFURV9X
QUlUSU5HX0ZPUl9GSVJTVF9EUkFXLApAQCAtODksMTQgKzg4LDE3IEBAIHB1YmxpYzoKICAgICAv
LyB0aHJlYWQgdG8gbWFpbi4KICAgICB2b2lkIHNldE5lZWRzQ29tbWl0KCk7CiAKKyAgICAvLyBJ
bmRpY2F0ZXMgdGhhdCBjb21wb3NpdG9yIHJlc291cmNlcyB0aGF0IG5lZWQgdXBkYXRpbmcgYXJl
IHBlbmRpbmcuCisgICAgdm9pZCBzZXRSZXNvdXJjZVVwZGF0ZXNQZW5kaW5nKCk7CisKICAgICAv
LyBDYWxsIHRoaXMgb25seSBpbiByZXNwb25zZSB0byByZWNlaXZpbmcgYW4gQUNUSU9OX0JFR0lO
X0ZSQU1FCiAgICAgLy8gZnJvbSBuZXh0U3RhdGUuIEluZGljYXRlcyB0aGF0IGFsbCBwYWludGlu
ZyBpcyBjb21wbGV0ZSBhbmQgdGhhdAotICAgIC8vIHVwZGF0aW5nIG9mIGNvbXBvc2l0b3IgcmVz
b3VyY2VzIGNhbiBiZWdpbi4KKyAgICAvLyBvbmx5IHVwZGF0aW5nIG9mIGNvbXBvc2l0b3IgcmVz
b3VyY2VzIGlzIGxlZnQuCiAgICAgdm9pZCBiZWdpbkZyYW1lQ29tcGxldGUoKTsKIAogICAgIC8v
IENhbGwgdGhpcyBvbmx5IGluIHJlc3BvbnNlIHRvIHJlY2VpdmluZyBhbiBBQ1RJT05fVVBEQVRF
X01PUkVfUkVTT1VSQ0VTCiAgICAgLy8gZnJvbSBuZXh0U3RhdGUuIEluZGljYXRlcyB0aGF0IHRo
ZSBzcGVjaWZpYyB1cGRhdGUgcmVxdWVzdCBjb21wbGV0ZWQuCi0gICAgdm9pZCBiZWdpblVwZGF0
ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZShib29sIG1vcmVQZW5kaW5nKTsKKyAgICB2b2lkIHVwZGF0
ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZShib29sIG1vcmVQZW5kaW5nKTsKIAogICAgIC8vIEluZGlj
YXRlcyB3aGV0aGVyIGRyYXdpbmcgd291bGQsIGF0IHRoaXMgdGltZSwgbWFrZSBzZW5zZS4KICAg
ICAvLyBjYW5EcmF3IGNhbiBiZSB1c2VkIHRvIHN1cHJlc3MgZmxhc2hlcyBvciBjaGVja2VyYm9h
cmRpbmcKQEAgLTExNSw2ICsxMTcsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBtX2luc2lkZVZT
eW5jOwogICAgIGJvb2wgbV92aXNpYmxlOwogICAgIGJvb2wgbV9jYW5EcmF3OworICAgIGJvb2wg
bV9yZXNvdXJjZVVwZGF0ZXNQZW5kaW5nOworICAgIGJvb2wgbV9mcmFtZUNvbXBsZXRlOwogfTsK
IAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcAppbmRleCA0ZTA0Y2M4Li5iOWFkZTAyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1RocmVhZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcApAQCAtNDI3LDYgKzQyNyw5IEBAIHZvaWQgQ0NU
aHJlYWRQcm94eTo6dXBkYXRlVGV4dHVyZU9uSW1wbFRocmVhZChQYXNzT3duUHRyPFVwZGF0ZUVu
dHJ5PiBlbnRyeSkKICAgICAgICAgbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQg
PSBhZG9wdFB0cihuZXcgQ0NUZXh0dXJlVXBkYXRlcihtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250
ZW50c1RleHR1cmVBbGxvY2F0b3IoKSkpOwogCiAgICAgbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJP
bkltcGxUaHJlYWQtPmFwcGVuZChlbnRyeS0+bV90ZXh0dXJlLCBlbnRyeS0+bV9zb3VyY2VSZWN0
LCBlbnRyeS0+bV9kZXN0UmVjdCk7CisKKyAgICBpZiAoIW1fbGF5ZXJUcmVlSG9zdEltcGwtPnNl
dHRpbmdzKCkuZGVsYXlUZXh0dXJlVXBkYXRlcykKKyAgICAgICAgbV9zY2hlZHVsZXJPbkltcGxU
aHJlYWQtPnNldFJlc291cmNlVXBkYXRlc1BlbmRpbmcoKTsKIH0KIAogdm9pZCBDQ1RocmVhZFBy
b3h5OjpiZWdpbkZyYW1lQ29tcGxldGVPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqIGNv
bXBsZXRpb24pCkBAIC00NDIsNiArNDQ1LDEwIEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6YmVnaW5G
cmFtZUNvbXBsZXRlT25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiBjb21wbGV0aW9uCiAK
ICAgICBtX2NvbW1pdENvbXBsZXRpb25FdmVudE9uSW1wbFRocmVhZCA9IGNvbXBsZXRpb247CiAK
KyAgICBpZiAobV9sYXllclRyZWVIb3N0SW1wbC0+c2V0dGluZ3MoKS5kZWxheVRleHR1cmVVcGRh
dGVzCisgICAgICAgICYmIGhhc01vcmVSZXNvdXJjZVVwZGF0ZXMoKSkKKyAgICAgICAgbV9zY2hl
ZHVsZXJPbkltcGxUaHJlYWQtPnNldFJlc291cmNlVXBkYXRlc1BlbmRpbmcoKTsKKwogICAgIG1f
c2NoZWR1bGVyT25JbXBsVGhyZWFkLT5iZWdpbkZyYW1lQ29tcGxldGUoKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1NjaGVkdWxlclN0YXRlTWFjaGlu
ZVRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1NjaGVkdWxlclN0YXRl
TWFjaGluZVRlc3QuY3BwCmluZGV4IDQ4YTNmZGEuLjYwYmMxMTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5l
VGVzdC5jcHAKQEAgLTM3LDcgKzM3LDYgQEAgbmFtZXNwYWNlIHsKIAogY29uc3QgQ0NTY2hlZHVs
ZXJTdGF0ZU1hY2hpbmU6OkNvbW1pdFN0YXRlIGFsbENvbW1pdFN0YXRlc1tdID0gewogICAgIEND
U2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfSURMRSwKLSAgICBDQ1NjaGVkdWxl
clN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX0ZSQU1FX0lOX1BST0dSRVNTLAogICAgIENDU2No
ZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfVVBEQVRJTkdfUkVTT1VSQ0VTLAogICAg
IENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfUkVBRFlfVE9fQ09NTUlULAog
ICAgIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfV0FJVElOR19GT1JfRklS
U1RfRFJBVwpAQCAtNjQsNiArNjMsMTIgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRVcGRhdGVN
b3JlUmVzb3VyY2VzUGVuZGluZyhib29sIGIpIHsgbV91cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGlu
ZyA9IGI7IH0KICAgICBib29sIHVwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nKCkgY29uc3QgeyBy
ZXR1cm4gbV91cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZzsgfQorCisgICAgdm9pZCBzZXRSZXNv
dXJjZVVwZGF0ZXNQZW5kaW5nKGJvb2wgYikgeyBtX3Jlc291cmNlVXBkYXRlc1BlbmRpbmcgPSBi
OyB9CisgICAgYm9vbCByZXNvdXJjZVVwZGF0ZXNQZW5kaW5nKCkgY29uc3QgeyByZXR1cm4gbV9y
ZXNvdXJjZVVwZGF0ZXNQZW5kaW5nOyB9CisKKyAgICB2b2lkIHNldEZyYW1lQ29tcGxldGUoYm9v
bCBiKSB7IG1fZnJhbWVDb21wbGV0ZSA9IGI7IH0KKyAgICBib29sIGZyYW1lQ29tcGxldGUoKSBj
b25zdCB7IHJldHVybiBtX2ZyYW1lQ29tcGxldGU7IH0KIH07CiAKIFRFU1QoQ0NTY2hlZHVsZXJT
dGF0ZU1hY2hpbmVUZXN0LCBUZXN0TmV4dEFjdGlvbkJlZ2luc0ZyYW1lSWZOZWVkZWQpCkBAIC05
OCw3ICsxMDMsNyBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdE5leHRB
Y3Rpb25CZWdpbnNGcmFtZUlmTmVlZGVkKQogICAgICAgICBTdGF0ZU1hY2hpbmUgc3RhdGU7CiAg
ICAgICAgIHN0YXRlLnNldFZpc2libGUodHJ1ZSk7CiAgICAgICAgIHN0YXRlLnVwZGF0ZVN0YXRl
KENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fRlJBTUUpOwotICAgICAgICBF
WFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9GUkFNRV9JTl9Q
Uk9HUkVTUywgc3RhdGUuY29tbWl0U3RhdGUoKSk7CisgICAgICAgIEVYUEVDVF9FUShDQ1NjaGVk
dWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX1VQREFUSU5HX1JFU09VUkNFUywgc3RhdGUu
Y29tbWl0U3RhdGUoKSk7CiAgICAgICAgIEVYUEVDVF9GQUxTRShzdGF0ZS5uZWVkc0NvbW1pdCgp
KTsKICAgICB9CiB9CkBAIC0yODQsNiArMjg5LDggQEAgVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFj
aGluZVRlc3QsIFRlc3RVcGRhdGVzX05vUmVkcmF3X09uZVJvdW5kT2ZVcGRhdGVzKQogICAgIHN0
YXRlLnNldE5lZWRzUmVkcmF3KGZhbHNlKTsKICAgICBzdGF0ZS5zZXRVcGRhdGVNb3JlUmVzb3Vy
Y2VzUGVuZGluZyhmYWxzZSk7CiAgICAgc3RhdGUuc2V0VmlzaWJsZSh0cnVlKTsKKyAgICBzdGF0
ZS5zZXRSZXNvdXJjZVVwZGF0ZXNQZW5kaW5nKHRydWUpOworICAgIHN0YXRlLnNldEZyYW1lQ29t
cGxldGUodHJ1ZSk7CiAKICAgICAvLyBWZXJpZnkgd2UgYmVnaW4gdXBkYXRlLCBib3RoIGZvciB2
c3luYyBhbmQgbm90IHZzeW5jLgogICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGlu
ZTo6QUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUywgc3RhdGUubmV4dEFjdGlvbigp
KTsKQEAgLTMwMCw3ICszMDcsNyBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwg
VGVzdFVwZGF0ZXNfTm9SZWRyYXdfT25lUm91bmRPZlVwZGF0ZXMpCiAgICAgRVhQRUNUX0VRKEND
U2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fTk9ORSwgc3RhdGUubmV4dEFjdGlvbigpKTsK
IAogICAgIC8vIEVuZCB1cGRhdGUgd2l0aCBubyBtb3JlIHVwZGF0ZXMgcGVuZGluZy4KLSAgICBz
dGF0ZS5iZWdpblVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZShmYWxzZSk7CisgICAgc3RhdGUu
dXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRlKGZhbHNlKTsKICAgICBzdGF0ZS5kaWRMZWF2ZVZT
eW5jKCk7CiAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQ09N
TUlULCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwogfQpAQCAtMzEyLDYgKzMxOSw4IEBAIFRFU1QoQ0NT
Y2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0VXBkYXRlc19Ob1JlZHJhd19Ud29Sb3VuZHNP
ZlVwZGF0ZXMpCiAgICAgc3RhdGUuc2V0TmVlZHNSZWRyYXcoZmFsc2UpOwogICAgIHN0YXRlLnNl
dFVwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nKGZhbHNlKTsKICAgICBzdGF0ZS5zZXRWaXNpYmxl
KHRydWUpOworICAgIHN0YXRlLnNldFJlc291cmNlVXBkYXRlc1BlbmRpbmcodHJ1ZSk7CisgICAg
c3RhdGUuc2V0RnJhbWVDb21wbGV0ZSh0cnVlKTsKIAogICAgIC8vIFZlcmlmeSB0aGUgdXBkYXRl
IGJlZ2lucywgYm90aCBmb3IgdnN5bmMgYW5kIG5vdCB2c3luYy4KICAgICBzdGF0ZS5kaWRFbnRl
clZTeW5jKCk7CkBAIC0zMjgsNyArMzM3LDcgQEAgVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGlu
ZVRlc3QsIFRlc3RVcGRhdGVzX05vUmVkcmF3X1R3b1JvdW5kc09mVXBkYXRlcykKICAgICBFWFBF
Q1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9OT05FLCBzdGF0ZS5uZXh0QWN0
aW9uKCkpOwogCiAgICAgLy8gQWNrIHRoZSB1cGRhdGUgd2l0aCBtb3JlIHBlbmRpbmcuCi0gICAg
c3RhdGUuYmVnaW5VcGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUodHJ1ZSk7CisgICAgc3RhdGUu
dXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRlKHRydWUpOwogCiAgICAgLy8gVmVyaWZ5IHdlIHVw
ZGF0ZSBtb3JlLCBib3RoIGZvciB2c3luYyBhbmQgbm90IHZzeW5jLgogICAgIHN0YXRlLmRpZExl
YXZlVlN5bmMoKTsKQEAgLTMzOCw3ICszNDcsNyBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNo
aW5lVGVzdCwgVGVzdFVwZGF0ZXNfTm9SZWRyYXdfVHdvUm91bmRzT2ZVcGRhdGVzKQogCiAgICAg
Ly8gQmVnaW4gYW5vdGhlciB1cGRhdGUsIHdoaWxlIGluc2lkZSB2c3luYy4gQW5kLCBpdCB1cGRh
dGluZy4KICAgICBzdGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNU
SU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUyk7Ci0gICAgc3RhdGUuYmVnaW5VcGRhdGVN
b3JlUmVzb3VyY2VzQ29tcGxldGUoZmFsc2UpOworICAgIHN0YXRlLnVwZGF0ZU1vcmVSZXNvdXJj
ZXNDb21wbGV0ZShmYWxzZSk7CiAKICAgICAvLyBNYWtlIHN1cmUgd2UgY29tbWl0LCBpbmRlcGVu
ZGVudCBvZiB2c3luYy4KICAgICBzdGF0ZS5kaWRMZWF2ZVZTeW5jKCk7CkBAIC0zNTQsNiArMzYz
LDkgQEAgVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RVcGRhdGVzX1dpdGhS
ZWRyYXdfT25lUm91bmRPZlVwZGF0ZXMpCiAgICAgc3RhdGUuc2V0TmVlZHNSZWRyYXcodHJ1ZSk7
CiAgICAgc3RhdGUuc2V0VXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmcoZmFsc2UpOwogICAgIHN0
YXRlLnNldFZpc2libGUodHJ1ZSk7CisgICAgc3RhdGUuc2V0UmVzb3VyY2VVcGRhdGVzUGVuZGlu
Zyh0cnVlKTsKKyAgICBzdGF0ZS5zZXRGcmFtZUNvbXBsZXRlKHRydWUpOworCiAgICAgRVhQRUNU
X0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fVVBEQVRFX01PUkVfUkVT
T1VSQ0VTLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwogCiAgICAgLy8gQmVnaW4gYW4gdXBkYXRlLgpA
QCAtMzcxLDcgKzM4Myw3IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0
VXBkYXRlc19XaXRoUmVkcmF3X09uZVJvdW5kT2ZVcGRhdGVzKQogICAgIHN0YXRlLmRpZExlYXZl
VlN5bmMoKTsKIAogICAgIC8vIEZpbmlzaCB1cGRhdGUgYnV0IGxlYXZlIG1vcmUgcmVzb3VyY2Vz
IHBlbmRpbmcuCi0gICAgc3RhdGUuYmVnaW5VcGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUodHJ1
ZSk7CisgICAgc3RhdGUudXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRlKHRydWUpOwogCiAgICAg
Ly8gVmVyaWZ5IHRoYXQgcmVnYXJkbGVzcyBvZiB2c3luYywgd2UgdXBkYXRlIHNvbWUgbW9yZS4K
ICAgICBzdGF0ZS5kaWRMZWF2ZVZTeW5jKCk7CkBAIC0zODUsNyArMzk3LDcgQEAgVEVTVChDQ1Nj
aGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RVcGRhdGVzX1dpdGhSZWRyYXdfT25lUm91bmRP
ZlVwZGF0ZXMpCiAgICAgc3RhdGUuZGlkRW50ZXJWU3luYygpOwogICAgIHN0YXRlLnVwZGF0ZVN0
YXRlKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fVVBEQVRFX01PUkVfUkVT
T1VSQ0VTKTsKICAgICBzdGF0ZS5kaWRMZWF2ZVZTeW5jKCk7Ci0gICAgc3RhdGUuYmVnaW5VcGRh
dGVNb3JlUmVzb3VyY2VzQ29tcGxldGUoZmFsc2UpOworICAgIHN0YXRlLnVwZGF0ZU1vcmVSZXNv
dXJjZXNDb21wbGV0ZShmYWxzZSk7CiAKICAgICAvLyBWZXJpZnkgd2UgY29tbWl0IHJlZ2FyZGxl
c3Mgb2YgdnN5bmMgc3RhdGUKICAgICBzdGF0ZS5kaWRMZWF2ZVZTeW5jKCk7CkBAIC00MDMsNyAr
NDE1LDExIEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0U2V0TmVlZHND
b21taXRJc05vdExvc3QpCiAgICAgLy8gQmVnaW4gdGhlIGZyYW1lLgogICAgIEVYUEVDVF9FUShD
Q1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX0ZSQU1FLCBzdGF0ZS5uZXh0QWN0
aW9uKCkpOwogICAgIHN0YXRlLnVwZGF0ZVN0YXRlKHN0YXRlLm5leHRBY3Rpb24oKSk7Ci0gICAg
RVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfRlJBTUVfSU5f
UFJPR1JFU1MsIHN0YXRlLmNvbW1pdFN0YXRlKCkpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxl
clN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX1VQREFUSU5HX1JFU09VUkNFUywgc3RhdGUuY29t
bWl0U3RhdGUoKSk7CisKKyAgICAvLyBSZWNlaXZlIHJlc291cmNlIHRoYXQgbmVlZCB1cGRhdGUu
CisgICAgc3RhdGUuc2V0UmVzb3VyY2VVcGRhdGVzUGVuZGluZyh0cnVlKTsKKyAgICBFWFBFQ1Rf
RVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9VUERBVElOR19SRVNPVVJD
RVMsIHN0YXRlLmNvbW1pdFN0YXRlKCkpOwogCiAgICAgLy8gTm93LCB3aGlsZSB0aGUgZnJhbWUg
aXMgaW4gcHJvZ3Jlc3MsIHNldCBhbm90aGVyIGNvbW1pdC4KICAgICBzdGF0ZS5zZXROZWVkc0Nv
bW1pdCh0cnVlKTsKQEAgLTQxNSw3ICs0MzEsNyBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNo
aW5lVGVzdCwgVGVzdFNldE5lZWRzQ29tbWl0SXNOb3RMb3N0KQogICAgIEVYUEVDVF9FUShDQ1Nj
aGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUywg
c3RhdGUubmV4dEFjdGlvbigpKTsKICAgICBzdGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxlclN0
YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUyk7CiAgICAgRVhQ
RUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fTk9ORSwgc3RhdGUubmV4dEFj
dGlvbigpKTsKLSAgICBzdGF0ZS5iZWdpblVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZShmYWxz
ZSk7CisgICAgc3RhdGUudXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRlKGZhbHNlKTsKICAgICBF
WFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9SRUFEWV9UT19D
T01NSVQsIHN0YXRlLmNvbW1pdFN0YXRlKCkpOwogCiAgICAgLy8gRXhwZWN0IHRvIGNvbW1pdCBy
ZWdhcmRsZXNzIG9mIHZzeW5jIHN0YXRlLgpAQCAtNDQ2LDEwICs0NjIsMTQgQEAgVEVTVChDQ1Nj
aGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RGdWxsQ3ljbGUpCiAKICAgICAvLyBCZWdpbiB0
aGUgZnJhbWUuCiAgICAgc3RhdGUudXBkYXRlU3RhdGUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6
OkFDVElPTl9CRUdJTl9GUkFNRSk7Ci0gICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNo
aW5lOjpDT01NSVRfU1RBVEVfRlJBTUVfSU5fUFJPR1JFU1MsIHN0YXRlLmNvbW1pdFN0YXRlKCkp
OworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX1VQ
REFUSU5HX1JFU09VUkNFUywgc3RhdGUuY29tbWl0U3RhdGUoKSk7CiAgICAgRVhQRUNUX0ZBTFNF
KHN0YXRlLm5lZWRzQ29tbWl0KCkpOwogICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFj
aGluZTo6QUNUSU9OX05PTkUsIHN0YXRlLm5leHRBY3Rpb24oKSk7CiAKKyAgICAvLyBSZWNlaXZl
IHJlc291cmNlLgorICAgIHN0YXRlLnNldFJlc291cmNlVXBkYXRlc1BlbmRpbmcodHJ1ZSk7Cisg
ICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfVVBEQVRJ
TkdfUkVTT1VSQ0VTLCBzdGF0ZS5jb21taXRTdGF0ZSgpKTsKKwogICAgIC8vIFRlbGwgdGhlIHNj
aGVkdWxlciB0aGUgZnJhbWUgZmluaXNoZWQuCiAgICAgc3RhdGUuYmVnaW5GcmFtZUNvbXBsZXRl
KCk7CiAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVf
VVBEQVRJTkdfUkVTT1VSQ0VTLCBzdGF0ZS5jb21taXRTdGF0ZSgpKTsKQEAgLTQ1Nyw3ICs0Nzcs
NyBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdEZ1bGxDeWNsZSkKIAog
ICAgIC8vIFRlbGwgdGhlIHNjaGVkdWxlciB0aGUgdXBkYXRlIGJlZ2FuIGFuZCBmaW5pc2hlZAog
ICAgIHN0YXRlLnVwZGF0ZVN0YXRlKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVH
SU5fVVBEQVRFX01PUkVfUkVTT1VSQ0VTKTsKLSAgICBzdGF0ZS5iZWdpblVwZGF0ZU1vcmVSZXNv
dXJjZXNDb21wbGV0ZShmYWxzZSk7CisgICAgc3RhdGUudXBkYXRlTW9yZVJlc291cmNlc0NvbXBs
ZXRlKGZhbHNlKTsKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1J
VF9TVEFURV9SRUFEWV9UT19DT01NSVQsIHN0YXRlLmNvbW1pdFN0YXRlKCkpOwogICAgIEVYUEVD
VF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0NPTU1JVCwgc3RhdGUubmV4dEFj
dGlvbigpKTsKIApAQCAtNDkyLDcgKzUxMiw3IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hp
bmVUZXN0LCBUZXN0RnVsbEN5Y2xlV2l0aENvbW1pdFJlcXVlc3RJbmJldHdlZW4pCiAKICAgICAv
LyBCZWdpbiB0aGUgZnJhbWUuCiAgICAgc3RhdGUudXBkYXRlU3RhdGUoQ0NTY2hlZHVsZXJTdGF0
ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9GUkFNRSk7Ci0gICAgRVhQRUNUX0VRKENDU2NoZWR1bGVy
U3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfRlJBTUVfSU5fUFJPR1JFU1MsIHN0YXRlLmNvbW1p
dFN0YXRlKCkpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlU
X1NUQVRFX1VQREFUSU5HX1JFU09VUkNFUywgc3RhdGUuY29tbWl0U3RhdGUoKSk7CiAgICAgRVhQ
RUNUX0ZBTFNFKHN0YXRlLm5lZWRzQ29tbWl0KCkpOwogICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxl
clN0YXRlTWFjaGluZTo6QUNUSU9OX05PTkUsIHN0YXRlLm5leHRBY3Rpb24oKSk7CiAKQEAgLTUw
MCw2ICs1MjAsMTAgQEAgVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RGdWxs
Q3ljbGVXaXRoQ29tbWl0UmVxdWVzdEluYmV0d2VlbikKICAgICBzdGF0ZS5zZXROZWVkc0NvbW1p
dCh0cnVlKTsKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9O
T05FLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwogCisgICAgLy8gUmVjZWl2ZSByZXNvdXJjZS4KKyAg
ICBzdGF0ZS5zZXRSZXNvdXJjZVVwZGF0ZXNQZW5kaW5nKHRydWUpOworICAgIEVYUEVDVF9FUShD
Q1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX1VQREFUSU5HX1JFU09VUkNFUywg
c3RhdGUuY29tbWl0U3RhdGUoKSk7CisKICAgICAvLyBUZWxsIHRoZSBzY2hlZHVsZXIgdGhlIGZy
YW1lIGZpbmlzaGVkLgogICAgIHN0YXRlLmJlZ2luRnJhbWVDb21wbGV0ZSgpOwogICAgIEVYUEVD
VF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX1VQREFUSU5HX1JFU09V
UkNFUywgc3RhdGUuY29tbWl0U3RhdGUoKSk7CkBAIC01MDcsNyArNTMxLDcgQEAgVEVTVChDQ1Nj
aGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RGdWxsQ3ljbGVXaXRoQ29tbWl0UmVxdWVzdElu
YmV0d2VlbikKIAogICAgIC8vIFRlbGwgdGhlIHNjaGVkdWxlciB0aGUgdXBkYXRlIGJlZ2FuIGFu
ZCBmaW5pc2hlZAogICAgIHN0YXRlLnVwZGF0ZVN0YXRlKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5l
OjpBQ1RJT05fQkVHSU5fVVBEQVRFX01PUkVfUkVTT1VSQ0VTKTsKLSAgICBzdGF0ZS5iZWdpblVw
ZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZShmYWxzZSk7CisgICAgc3RhdGUudXBkYXRlTW9yZVJl
c291cmNlc0NvbXBsZXRlKGZhbHNlKTsKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1h
Y2hpbmU6OkNPTU1JVF9TVEFURV9SRUFEWV9UT19DT01NSVQsIHN0YXRlLmNvbW1pdFN0YXRlKCkp
OwogICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0NPTU1JVCwg
c3RhdGUubmV4dEFjdGlvbigpKTsKIApAQCAtNTQ5LDEzICs1NzMsMTcgQEAgVEVTVChDQ1NjaGVk
dWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RHb2VzSW52aXNpYmxlTWlkQ29tbWl0KQogCiAgICAg
Ly8gQmVnaW4gdGhlIGZyYW1lIHdoaWxlIHZpc2libGUuCiAgICAgc3RhdGUudXBkYXRlU3RhdGUo
Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9GUkFNRSk7Ci0gICAgRVhQRUNU
X0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfRlJBTUVfSU5fUFJPR1JF
U1MsIHN0YXRlLmNvbW1pdFN0YXRlKCkpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRl
TWFjaGluZTo6Q09NTUlUX1NUQVRFX1VQREFUSU5HX1JFU09VUkNFUywgc3RhdGUuY29tbWl0U3Rh
dGUoKSk7CiAgICAgRVhQRUNUX0ZBTFNFKHN0YXRlLm5lZWRzQ29tbWl0KCkpOwogICAgIEVYUEVD
VF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX05PTkUsIHN0YXRlLm5leHRBY3Rp
b24oKSk7CiAKICAgICAvLyBCZWNvbWUgaW52aXNpYmxlCiAgICAgc3RhdGUuc2V0VmlzaWJsZShm
YWxzZSk7CiAKKyAgICAvLyBSZWNlaXZlIHJlc291cmNlLgorICAgIHN0YXRlLnNldFJlc291cmNl
VXBkYXRlc1BlbmRpbmcodHJ1ZSk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNo
aW5lOjpDT01NSVRfU1RBVEVfVVBEQVRJTkdfUkVTT1VSQ0VTLCBzdGF0ZS5jb21taXRTdGF0ZSgp
KTsKKwogICAgIC8vIFRlbGwgdGhlIHNjaGVkdWxlciB0aGUgZnJhbWUgZmluaXNoZWQKICAgICBz
dGF0ZS5iZWdpbkZyYW1lQ29tcGxldGUoKTsKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0
ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9VUERBVElOR19SRVNPVVJDRVMsIHN0YXRlLmNvbW1pdFN0
YXRlKCkpOwpAQCAtNTYzLDcgKzU5MSw3IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVU
ZXN0LCBUZXN0R29lc0ludmlzaWJsZU1pZENvbW1pdCkKIAogICAgIC8vIFRlbGwgdGhlIHNjaGVk
dWxlciB0aGUgdXBkYXRlIGJlZ2FuIGFuZCBmaW5pc2hlZAogICAgIHN0YXRlLnVwZGF0ZVN0YXRl
KENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fVVBEQVRFX01PUkVfUkVTT1VS
Q0VTKTsKLSAgICBzdGF0ZS5iZWdpblVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZShmYWxzZSk7
CisgICAgc3RhdGUudXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRlKGZhbHNlKTsKICAgICBFWFBF
Q1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9SRUFEWV9UT19DT01N
SVQsIHN0YXRlLmNvbW1pdFN0YXRlKCkpOwogICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRl
TWFjaGluZTo6QUNUSU9OX0NPTU1JVCwgc3RhdGUubmV4dEFjdGlvbigpKTsKIApAQCAtNTgzLDQg
KzYxMSw2NSBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdEdvZXNJbnZp
c2libGVNaWRDb21taXQpCiAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpB
Q1RJT05fTk9ORSwgc3RhdGUubmV4dEFjdGlvbigpKTsKIH0KIAorVEVTVChDQ1NjaGVkdWxlclN0
YXRlTWFjaGluZVRlc3QsIFRlc3ROb1Jlc291cmNlVXBkYXRlcykKK3sKKyAgICBTdGF0ZU1hY2hp
bmUgc3RhdGU7CisgICAgc3RhdGUuc2V0VmlzaWJsZSh0cnVlKTsKKworICAgIC8vIFN0YXJ0IGNs
ZWFuIGFuZCBzZXQgY29tbWl0LgorICAgIHN0YXRlLnNldE5lZWRzQ29tbWl0KHRydWUpOworICAg
IEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX0ZSQU1FLCBz
dGF0ZS5uZXh0QWN0aW9uKCkpOworCisgICAgLy8gQmVnaW4gdGhlIGZyYW1lLgorICAgIHN0YXRl
LnVwZGF0ZVN0YXRlKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fRlJBTUUp
OworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX1VQ
REFUSU5HX1JFU09VUkNFUywgc3RhdGUuY29tbWl0U3RhdGUoKSk7CisgICAgRVhQRUNUX0ZBTFNF
KHN0YXRlLm5lZWRzQ29tbWl0KCkpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFj
aGluZTo6QUNUSU9OX05PTkUsIHN0YXRlLm5leHRBY3Rpb24oKSk7CisKKyAgICAvLyBUZWxsIHRo
ZSBzY2hlZHVsZXIgdGhlIGZyYW1lIGZpbmlzaGVkLgorICAgIHN0YXRlLmJlZ2luRnJhbWVDb21w
bGV0ZSgpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NU
QVRFX1JFQURZX1RPX0NPTU1JVCwgc3RhdGUuY29tbWl0U3RhdGUoKSk7CisgICAgRVhQRUNUX0VR
KENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQ09NTUlULCBzdGF0ZS5uZXh0QWN0aW9u
KCkpOworfQorCitURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdE5vUmVzb3Vy
Y2VQZW5kaW5nKQoreworICAgIFN0YXRlTWFjaGluZSBzdGF0ZTsKKyAgICBzdGF0ZS5zZXRWaXNp
YmxlKHRydWUpOworCisgICAgLy8gU3RhcnQgY2xlYW4gYW5kIHNldCBjb21taXQuCisgICAgc3Rh
dGUuc2V0TmVlZHNDb21taXQodHJ1ZSk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVN
YWNoaW5lOjpBQ1RJT05fQkVHSU5fRlJBTUUsIHN0YXRlLm5leHRBY3Rpb24oKSk7CisKKyAgICAv
LyBCZWdpbiB0aGUgZnJhbWUuCisgICAgc3RhdGUudXBkYXRlU3RhdGUoQ0NTY2hlZHVsZXJTdGF0
ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9GUkFNRSk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVy
U3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfVVBEQVRJTkdfUkVTT1VSQ0VTLCBzdGF0ZS5jb21t
aXRTdGF0ZSgpKTsKKyAgICBFWFBFQ1RfRkFMU0Uoc3RhdGUubmVlZHNDb21taXQoKSk7CisgICAg
RVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fTk9ORSwgc3RhdGUubmV4
dEFjdGlvbigpKTsKKworICAgIC8vIFJlY2VpdmUgcmVzb3VyY2UuCisgICAgc3RhdGUuc2V0UmVz
b3VyY2VVcGRhdGVzUGVuZGluZyh0cnVlKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0
ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9VUERBVElOR19SRVNPVVJDRVMsIHN0YXRlLmNvbW1pdFN0
YXRlKCkpOworCisgICAgLy8gVGVsbCB0aGUgc2NoZWR1bGVyIHRoZSB1cGRhdGUgYmVnYW4gYW5k
IGZpbmlzaGVkLgorICAgIHN0YXRlLnVwZGF0ZVN0YXRlKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5l
OjpBQ1RJT05fQkVHSU5fVVBEQVRFX01PUkVfUkVTT1VSQ0VTKTsKKyAgICBFWFBFQ1RfRVEoQ0NT
Y2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9VUERBVElOR19SRVNPVVJDRVMsIHN0
YXRlLmNvbW1pdFN0YXRlKCkpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGlu
ZTo6QUNUSU9OX05PTkUsIHN0YXRlLm5leHRBY3Rpb24oKSk7CisgICAgc3RhdGUudXBkYXRlTW9y
ZVJlc291cmNlc0NvbXBsZXRlKHRydWUpOworCisgICAgLy8gVGVsbCB0aGUgc2NoZWR1bGVyIGFu
b3RoZXIgdXBkYXRlIGJlZ2FuIGFuZCBmaW5pc2hlZC4KKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVs
ZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9VUERBVEVfTU9SRV9SRVNPVVJDRVMsIHN0YXRl
Lm5leHRBY3Rpb24oKSk7CisgICAgc3RhdGUudXBkYXRlU3RhdGUoQ0NTY2hlZHVsZXJTdGF0ZU1h
Y2hpbmU6OkFDVElPTl9CRUdJTl9VUERBVEVfTU9SRV9SRVNPVVJDRVMpOworICAgIEVYUEVDVF9F
UShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX05PTkUsIHN0YXRlLm5leHRBY3Rpb24o
KSk7CisgICAgc3RhdGUudXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRlKGZhbHNlKTsKKworICAg
IC8vIE5vIHBlbmRpbmcgcmVzb3VyY2VzIHRvIHVwZGF0ZS4KKyAgICBFWFBFQ1RfRVEoQ0NTY2hl
ZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9OT05FLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworCisg
ICAgLy8gVGVsbCB0aGUgc2NoZWR1bGVyIHRoZSBmcmFtZSBmaW5pc2hlZC4KKyAgICBzdGF0ZS5i
ZWdpbkZyYW1lQ29tcGxldGUoKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hp
bmU6OkNPTU1JVF9TVEFURV9SRUFEWV9UT19DT01NSVQsIHN0YXRlLmNvbW1pdFN0YXRlKCkpOwor
ICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0NPTU1JVCwgc3Rh
dGUubmV4dEFjdGlvbigpKTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9DQ1NjaGVkdWxlclRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9DQ1NjaGVkdWxlclRlc3QuY3BwCmluZGV4IDBmZTgxMWQuLmZhNDVmMzIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NTY2hlZHVsZXJUZXN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDU2NoZWR1bGVyVGVzdC5jcHAKQEAgLTgw
LDEyICs4MCwxMCBAQCBURVNUKENDU2NoZWR1bGVyVGVzdCwgUmVxdWVzdENvbW1pdCkKICAgICBj
bGllbnQucmVzZXQoKTsKIAogICAgIC8vIFNpbmNlLCBoYXNNb3JlUmVzb3VyY2VVcGRhdGVzIGlz
IHNldCB0byBmYWxzZSwKLSAgICAvLyBiZWdpbkZyYW1lQ29tcGxldGUgc2hvdWxkIHVwZGF0ZU1v
cmVSZXNvdXJjZXMsIHRoZW4KLSAgICAvLyBjb21taXQKKyAgICAvLyBiZWdpbkZyYW1lQ29tcGxl
dGUgc2hvdWxkIGNvbW1pdCBpbW1lZGlhdGVseS4KICAgICBzY2hlZHVsZXItPmJlZ2luRnJhbWVD
b21wbGV0ZSgpOwotICAgIEVYUEVDVF9FUSgyLCBjbGllbnQubnVtQWN0aW9ucygpKTsKLSAgICBF
WFBFQ1RfU1RSRVEoInNjaGVkdWxlZEFjdGlvblVwZGF0ZU1vcmVSZXNvdXJjZXMiLCBjbGllbnQu
YWN0aW9uKDApKTsKLSAgICBFWFBFQ1RfU1RSRVEoInNjaGVkdWxlZEFjdGlvbkNvbW1pdCIsIGNs
aWVudC5hY3Rpb24oMSkpOworICAgIEVYUEVDVF9FUSgxLCBjbGllbnQubnVtQWN0aW9ucygpKTsK
KyAgICBFWFBFQ1RfU1RSRVEoInNjaGVkdWxlZEFjdGlvbkNvbW1pdCIsIGNsaWVudC5hY3Rpb24o
MCkpOwogICAgIGNsaWVudC5yZXNldCgpOwogCiAgICAgLy8gVGljayBzaG91bGQgZHJhdy4KQEAg
LTExNiwxMiArMTE0LDEwIEBAIFRFU1QoQ0NTY2hlZHVsZXJUZXN0LCBSZXF1ZXN0Q29tbWl0QWZ0
ZXJCZWdpbkZyYW1lKQogICAgIHNjaGVkdWxlci0+c2V0TmVlZHNDb21taXQoKTsKIAogICAgIC8v
IFNpbmNlLCBoYXNNb3JlUmVzb3VyY2VVcGRhdGVzIGlzIHNldCB0byBmYWxzZSwgYW5kIGFub3Ro
ZXIgY29tbWl0IGlzCi0gICAgLy8gbmVlZGVkLCBiZWdpbkZyYW1lQ29tcGxldGUgc2hvdWxkIHVw
ZGF0ZU1vcmVSZXNvdXJjZXMsIHRoZW4gY29tbWl0LCB0aGVuCi0gICAgLy8gYmVnaW4gYW5vdGhl
ciBmcmFtZS4KKyAgICAvLyBuZWVkZWQsIGJlZ2luRnJhbWVDb21wbGV0ZSBzaG91bGQgY29tbWl0
LCB0aGVuIGJlZ2luIGFub3RoZXIgZnJhbWUuCiAgICAgc2NoZWR1bGVyLT5iZWdpbkZyYW1lQ29t
cGxldGUoKTsKLSAgICBFWFBFQ1RfRVEoMiwgY2xpZW50Lm51bUFjdGlvbnMoKSk7Ci0gICAgRVhQ
RUNUX1NUUkVRKCJzY2hlZHVsZWRBY3Rpb25VcGRhdGVNb3JlUmVzb3VyY2VzIiwgY2xpZW50LmFj
dGlvbigwKSk7Ci0gICAgRVhQRUNUX1NUUkVRKCJzY2hlZHVsZWRBY3Rpb25Db21taXQiLCBjbGll
bnQuYWN0aW9uKDEpKTsKKyAgICBFWFBFQ1RfRVEoMSwgY2xpZW50Lm51bUFjdGlvbnMoKSk7Cisg
ICAgRVhQRUNUX1NUUkVRKCJzY2hlZHVsZWRBY3Rpb25Db21taXQiLCBjbGllbnQuYWN0aW9uKDAp
KTsKICAgICBjbGllbnQucmVzZXQoKTsKIAogICAgIC8vIFRpY2sgc2hvdWxkIGRyYXcgYnV0IHRo
ZW4gYmVnaW4gYW5vdGhlciBmcmFtZS4KQEAgLTIzOSw0ICsyMzUsNTIgQEAgVEVTVChDQ1NjaGVk
dWxlclRlc3QsIFJlcXVlc3RDb21taXRJbnNpZGVEcmF3KQogICAgIEVYUEVDVF9GQUxTRShzY2hl
ZHVsZXItPnJlZHJhd1BlbmRpbmcoKSk7CiB9CiAKK1RFU1QoQ0NTY2hlZHVsZXJUZXN0LCBVcGRh
dGVSZXNvdXJjZXMpCit7CisgICAgRmFrZUNDU2NoZWR1bGVyQ2xpZW50IGNsaWVudDsKKyAgICBS
ZWZQdHI8RmFrZUNDVGltZVNvdXJjZT4gdGltZVNvdXJjZSA9IGFkb3B0UmVmKG5ldyBGYWtlQ0NU
aW1lU291cmNlKCkpOworICAgIE93blB0cjxDQ1NjaGVkdWxlcj4gc2NoZWR1bGVyID0gQ0NTY2hl
ZHVsZXI6OmNyZWF0ZSgmY2xpZW50LCBhZG9wdFB0cihuZXcgQ0NGcmFtZVJhdGVDb250cm9sbGVy
KHRpbWVTb3VyY2UpKSk7CisgICAgc2NoZWR1bGVyLT5zZXRWaXNpYmxlKHRydWUpOworCisgICAg
Ly8gU2V0TmVlZHNDb21taXQgc2hvdWxkIGJlZ2luIHRoZSBmcmFtZS4KKyAgICBzY2hlZHVsZXIt
PnNldE5lZWRzQ29tbWl0KCk7CisgICAgRVhQRUNUX0VRKDEsIGNsaWVudC5udW1BY3Rpb25zKCkp
OworICAgIEVYUEVDVF9TVFJFUSgic2NoZWR1bGVkQWN0aW9uQmVnaW5GcmFtZSIsIGNsaWVudC5h
Y3Rpb24oMCkpOworICAgIGNsaWVudC5yZXNldCgpOworCisgICAgLy8gTm93IHNldE5lZWRzQ29t
bWl0IGFnYWluLiBDYWxsaW5nIGhlcmUgbWVhbnMgd2UgbmVlZCBhIHNlY29uZCBmcmFtZS4KKyAg
ICBzY2hlZHVsZXItPnNldE5lZWRzQ29tbWl0KCk7CisKKyAgICAvLyBVcGRhdGUgcGVuZGluZyBy
ZXNvdXJjZXMuCisgICAgY2xpZW50LnNldEhhc01vcmVSZXNvdXJjZVVwZGF0ZXModHJ1ZSk7Cisg
ICAgc2NoZWR1bGVyLT5zZXRSZXNvdXJjZVVwZGF0ZXNQZW5kaW5nKCk7CisgICAgRVhQRUNUX0VR
KDEsIGNsaWVudC5udW1BY3Rpb25zKCkpOworICAgIEVYUEVDVF9TVFJFUSgic2NoZWR1bGVkQWN0
aW9uVXBkYXRlTW9yZVJlc291cmNlcyIsIGNsaWVudC5hY3Rpb24oMCkpOworICAgIGNsaWVudC5y
ZXNldCgpOworCisgICAgLy8gQ2xpZW50IGZpbmlzaGVkIHVwZGF0ZSBidXQgaGF2ZSBub3QgeWV0
IHRvbGQgc2NoZWR1bGVyLgorICAgIGNsaWVudC5zZXRIYXNNb3JlUmVzb3VyY2VVcGRhdGVzKGZh
bHNlKTsKKworICAgIC8vIGJlZ2luRnJhbWVDb21wbGV0ZSBzaG91bGQgbm90IGNvbW1pdCwgYXMg
YW4gdXBkYXRlIGlzIHBlbmRpbmcuCisgICAgc2NoZWR1bGVyLT5iZWdpbkZyYW1lQ29tcGxldGUo
KTsKKyAgICBFWFBFQ1RfRVEoMCwgY2xpZW50Lm51bUFjdGlvbnMoKSk7CisgICAgY2xpZW50LnJl
c2V0KCk7CisKKyAgICAvLyBTaW5jZSwgaGFzTW9yZVJlc291cmNlVXBkYXRlcyBpcyBzZXQgdG8g
ZmFsc2UsIGFuZCBhbm90aGVyIGNvbW1pdCBpcworICAgIC8vIG5lZWRlZCwgdXBkYXRlTW9yZVJl
c291cmNlc0NvbXBsZXRlKCkgc2hvdWxkIGNvbW1pdCwgdGhlbiBiZWdpbgorICAgIC8vIGFub3Ro
ZXIgZnJhbWUuCisgICAgc2NoZWR1bGVyLT51cGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUoKTsK
KyAgICBFWFBFQ1RfRVEoMSwgY2xpZW50Lm51bUFjdGlvbnMoKSk7CisgICAgRVhQRUNUX1NUUkVR
KCJzY2hlZHVsZWRBY3Rpb25Db21taXQiLCBjbGllbnQuYWN0aW9uKDApKTsKKyAgICBjbGllbnQu
cmVzZXQoKTsKKworICAgIC8vIFRpY2sgc2hvdWxkIGRyYXcgYnV0IHRoZW4gYmVnaW4gYW5vdGhl
ciBmcmFtZS4KKyAgICB0aW1lU291cmNlLT50aWNrKCk7CisgICAgRVhQRUNUX0VRKDIsIGNsaWVu
dC5udW1BY3Rpb25zKCkpOworICAgIEVYUEVDVF9TVFJFUSgic2NoZWR1bGVkQWN0aW9uRHJhd0Fu
ZFN3YXAiLCBjbGllbnQuYWN0aW9uKDApKTsKKyAgICBFWFBFQ1RfU1RSRVEoInNjaGVkdWxlZEFj
dGlvbkJlZ2luRnJhbWUiLCBjbGllbnQuYWN0aW9uKDEpKTsKKyAgICBjbGllbnQucmVzZXQoKTsK
K30KKworCiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123840</attachid>
            <date>2012-01-24 16:38:30 -0800</date>
            <delta_ts>2012-01-24 18:06:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>threaded-parallel-upload.diff</filename>
            <type>text/plain</type>
            <size>25697</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDU2NoZWR1bGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDU2NoZWR1bGVyLmNwcAppbmRleCA4NTgwNDY3Li5jM2FiM2FmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NTY2hlZHVsZXIuY3BwCkBAIC02OCw2ICs2OCwxMiBAQCB2b2lkIENDU2NoZWR1bGVyOjpzZXRO
ZWVkc0ZvcmNlZFJlZHJhdygpCiAgICAgcHJvY2Vzc1NjaGVkdWxlZEFjdGlvbnMoKTsKIH0KIAor
dm9pZCBDQ1NjaGVkdWxlcjo6c2V0UmVzb3VyY2VVcGRhdGVzUGVuZGluZygpCit7CisgICAgbV9z
dGF0ZU1hY2hpbmUuc2V0UmVzb3VyY2VVcGRhdGVzUGVuZGluZygpOworICAgIHByb2Nlc3NTY2hl
ZHVsZWRBY3Rpb25zKCk7Cit9CisKIHZvaWQgQ0NTY2hlZHVsZXI6OmJlZ2luRnJhbWVDb21wbGV0
ZSgpCiB7CiAgICAgVFJBQ0VfRVZFTlQoIkNDU2NoZWR1bGVyOjpiZWdpbkZyYW1lQ29tcGxldGUi
LCB0aGlzLCAwKTsKQEAgLTk2LDcgKzEwMiw3IEBAIHZvaWQgQ0NTY2hlZHVsZXI6OmJlZ2luRnJh
bWUoKQogewogICAgIGlmIChtX3VwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nKSB7CiAgICAgICAg
IG1fdXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmcgPSBmYWxzZTsKLSAgICAgICAgbV9zdGF0ZU1h
Y2hpbmUuYmVnaW5VcGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUobV9jbGllbnQtPmhhc01vcmVS
ZXNvdXJjZVVwZGF0ZXMoKSk7CisgICAgICAgIG1fc3RhdGVNYWNoaW5lLnVwZGF0ZU1vcmVSZXNv
dXJjZXNDb21wbGV0ZShtX2NsaWVudC0+aGFzTW9yZVJlc291cmNlVXBkYXRlcygpKTsKICAgICB9
CiAgICAgVFJBQ0VfRVZFTlQoIkNDU2NoZWR1bGVyOjpiZWdpbkZyYW1lIiwgdGhpcywgMCk7CiAK
QEAgLTEzMywxNiArMTM5LDEzIEBAIHZvaWQgQ0NTY2hlZHVsZXI6OnByb2Nlc3NTY2hlZHVsZWRB
Y3Rpb25zKCkKICAgICAgICAgICAgIG1fY2xpZW50LT5zY2hlZHVsZWRBY3Rpb25CZWdpbkZyYW1l
KCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDQ1NjaGVkdWxlclN0YXRlTWFj
aGluZTo6QUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUzoKKyAgICAgICAgICAgIEFT
U0VSVChtX2NsaWVudC0+aGFzTW9yZVJlc291cmNlVXBkYXRlcygpKTsKICAgICAgICAgICAgIG1f
Y2xpZW50LT5zY2hlZHVsZWRBY3Rpb25VcGRhdGVNb3JlUmVzb3VyY2VzKCk7Ci0gICAgICAgICAg
ICBpZiAoIW1fY2xpZW50LT5oYXNNb3JlUmVzb3VyY2VVcGRhdGVzKCkpIHsKLSAgICAgICAgICAg
ICAgICAvLyBJZiB3ZSB3ZXJlIGp1c3QgdG9sZCB0byB1cGRhdGUgcmVzb3VyY2VzLCBidXQgdGhl
cmUgYXJlIG5vCi0gICAgICAgICAgICAgICAgLy8gbW9yZSBwZW5kaW5nLCB0aGVuIHRlbGwgdGhl
IHN0YXRlIG1hY2hpbmUgdGhhdCB0aGUKLSAgICAgICAgICAgICAgICAvLyBiZWdpblVwZGF0ZU1v
cmVSZXNvdXJjZXMgY29tcGxldGVkLiBJZiBtb3JlIGFyZSBwZW5kaW5nLAotICAgICAgICAgICAg
ICAgIC8vIHRoZW4gd2Ugd2lsbCBhY2sgdGhlIHVwZGF0ZSBhdCB0aGUgbmV4dCBkcmF3LgotICAg
ICAgICAgICAgICAgIG1fdXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmcgPSBmYWxzZTsKLSAgICAg
ICAgICAgICAgICBtX3N0YXRlTWFjaGluZS5iZWdpblVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0
ZShmYWxzZSk7Ci0gICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBtX3VwZGF0ZU1v
cmVSZXNvdXJjZXNQZW5kaW5nID0gdHJ1ZTsKKyAgICAgICAgICAgIC8vIElmIHdlIHdlcmUganVz
dCB0b2xkIHRvIHVwZGF0ZSByZXNvdXJjZXMsIHRlbGwgdGhlIHN0YXRlCisgICAgICAgICAgICAv
LyBtYWNoaW5lIHRoYXQgdGhlIGJlZ2luVXBkYXRlTW9yZVJlc291cmNlcyBjb21wbGV0ZWQgYW5k
IGlmCisgICAgICAgICAgICAvLyBtb3JlIGFyZSBwZW5kaW5nLgorICAgICAgICAgICAgbV91cGRh
dGVNb3JlUmVzb3VyY2VzUGVuZGluZyA9IG1fY2xpZW50LT5oYXNNb3JlUmVzb3VyY2VVcGRhdGVz
KCk7CisgICAgICAgICAgICBtX3N0YXRlTWFjaGluZS51cGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxl
dGUobV91cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZyk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgY2FzZSBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0NPTU1JVDoKICAgICAg
ICAgICAgIG1fY2xpZW50LT5zY2hlZHVsZWRBY3Rpb25Db21taXQoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxl
ci5oCmluZGV4IDczMTA1ODEuLjc3MjA0M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXIuaApAQCAtNjcs
OCArNjcsOCBAQCBwdWJsaWM6CiAgICAgLy8gQXMgc2V0TmVlZHNSZWRyYXcoKSwgYnV0IGVuc3Vy
ZXMgdGhlIGRyYXcgd2lsbCBkZWZpbml0ZWx5IGhhcHBlbiBldmVuIGlmIHdlIGFyZSBub3Qgdmlz
aWJsZS4KICAgICB2b2lkIHNldE5lZWRzRm9yY2VkUmVkcmF3KCk7CiAKKyAgICB2b2lkIHNldFJl
c291cmNlVXBkYXRlc1BlbmRpbmcoKTsKICAgICB2b2lkIGJlZ2luRnJhbWVDb21wbGV0ZSgpOwot
CiAgICAgdm9pZCBzZXRNYXhGcmFtZXNQZW5kaW5nKGludCk7CiAgICAgdm9pZCBkaWRTd2FwQnVm
ZmVyc0NvbXBsZXRlKCk7CiAgICAgdm9pZCBkaWRTd2FwQnVmZmVyc0Fib3J0KCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVk
dWxlclN0YXRlTWFjaGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZS5jcHAKaW5kZXggZDFhYTVjYy4uYTQ5
NzA3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lLmNwcApA
QCAtMzgsNyArMzgsOSBAQCBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q0NTY2hlZHVsZXJTdGF0
ZU1hY2hpbmUoKQogICAgICwgbV91cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZyhmYWxzZSkKICAg
ICAsIG1faW5zaWRlVlN5bmMoZmFsc2UpCiAgICAgLCBtX3Zpc2libGUoZmFsc2UpCi0gICAgLCBt
X2NhbkRyYXcodHJ1ZSkgeyB9CisgICAgLCBtX2NhbkRyYXcodHJ1ZSkKKyAgICAsIG1fcmVzb3Vy
Y2VVcGRhdGVzUGVuZGluZyhmYWxzZSkKKyAgICAsIG1fZnJhbWVDb21wbGV0ZShmYWxzZSkgeyB9
CiAKIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBY3Rpb24gQ0NTY2hlZHVsZXJTdGF0ZU1hY2hp
bmU6Om5leHRBY3Rpb24oKSBjb25zdAogewpAQCAtNTIsMTUgKzU0LDEwIEBAIENDU2NoZWR1bGVy
U3RhdGVNYWNoaW5lOjpBY3Rpb24gQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6Om5leHRBY3Rpb24o
KSBjb25zdAogICAgICAgICAgICAgcmV0dXJuIEFDVElPTl9CRUdJTl9GUkFNRTsKICAgICAgICAg
cmV0dXJuIEFDVElPTl9OT05FOwogCi0gICAgY2FzZSBDT01NSVRfU1RBVEVfRlJBTUVfSU5fUFJP
R1JFU1M6Ci0gICAgICAgIGlmIChzaG91bGREcmF3KQotICAgICAgICAgICAgcmV0dXJuIEFDVElP
Tl9EUkFXOwotICAgICAgICByZXR1cm4gQUNUSU9OX05PTkU7Ci0KICAgICBjYXNlIENPTU1JVF9T
VEFURV9VUERBVElOR19SRVNPVVJDRVM6CiAgICAgICAgIGlmIChzaG91bGREcmF3KQogICAgICAg
ICAgICAgcmV0dXJuIEFDVElPTl9EUkFXOwotICAgICAgICBpZiAoIW1fdXBkYXRlTW9yZVJlc291
cmNlc1BlbmRpbmcpCisgICAgICAgIGlmICghbV91cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZyAm
JiBtX3Jlc291cmNlVXBkYXRlc1BlbmRpbmcpCiAgICAgICAgICAgICByZXR1cm4gQUNUSU9OX0JF
R0lOX1VQREFURV9NT1JFX1JFU09VUkNFUzsKICAgICAgICAgcmV0dXJuIEFDVElPTl9OT05FOwog
CkBAIC04OCw4ICs4NSwxMCBAQCB2b2lkIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjp1cGRhdGVT
dGF0ZShBY3Rpb24gYWN0aW9uKQogCiAgICAgY2FzZSBBQ1RJT05fQkVHSU5fRlJBTUU6CiAgICAg
ICAgIEFTU0VSVChtX3Zpc2libGUpOwotICAgICAgICBtX2NvbW1pdFN0YXRlID0gQ09NTUlUX1NU
QVRFX0ZSQU1FX0lOX1BST0dSRVNTOworICAgICAgICBBU1NFUlQoIW1fcmVzb3VyY2VVcGRhdGVz
UGVuZGluZyk7CisgICAgICAgIG1fY29tbWl0U3RhdGUgPSBDT01NSVRfU1RBVEVfVVBEQVRJTkdf
UkVTT1VSQ0VTOwogICAgICAgICBtX25lZWRzQ29tbWl0ID0gZmFsc2U7CisgICAgICAgIG1fZnJh
bWVDb21wbGV0ZSA9IGZhbHNlOwogICAgICAgICByZXR1cm47CiAKICAgICBjYXNlIEFDVElPTl9C
RUdJTl9VUERBVEVfTU9SRV9SRVNPVVJDRVM6CkBAIC0xNjEsMTggKzE2MCwyNiBAQCB2b2lkIEND
U2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpzZXROZWVkc0NvbW1pdCgpCiAgICAgbV9uZWVkc0NvbW1p
dCA9IHRydWU7CiB9CiAKK3ZvaWQgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OnNldFJlc291cmNl
VXBkYXRlc1BlbmRpbmcoKQoreworICAgIG1fcmVzb3VyY2VVcGRhdGVzUGVuZGluZyA9IHRydWU7
Cit9CisKIHZvaWQgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OmJlZ2luRnJhbWVDb21wbGV0ZSgp
CiB7Ci0gICAgQVNTRVJUKG1fY29tbWl0U3RhdGUgPT0gQ09NTUlUX1NUQVRFX0ZSQU1FX0lOX1BS
T0dSRVNTKTsKLSAgICBtX2NvbW1pdFN0YXRlID0gQ09NTUlUX1NUQVRFX1VQREFUSU5HX1JFU09V
UkNFUzsKKyAgICBBU1NFUlQobV9jb21taXRTdGF0ZSA9PSBDT01NSVRfU1RBVEVfVVBEQVRJTkdf
UkVTT1VSQ0VTKTsKKyAgICBtX2ZyYW1lQ29tcGxldGUgPSB0cnVlOworICAgIGlmICghbV91cGRh
dGVNb3JlUmVzb3VyY2VzUGVuZGluZyAmJiAhbV9yZXNvdXJjZVVwZGF0ZXNQZW5kaW5nKQorICAg
ICAgICBtX2NvbW1pdFN0YXRlID0gQ09NTUlUX1NUQVRFX1JFQURZX1RPX0NPTU1JVDsKIH0KIAot
dm9pZCBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6YmVnaW5VcGRhdGVNb3JlUmVzb3VyY2VzQ29t
cGxldGUoYm9vbCBtb3JlUGVuZGluZykKK3ZvaWQgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OnVw
ZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZShib29sIG1vcmVQZW5kaW5nKQogewogICAgIEFTU0VS
VChtX2NvbW1pdFN0YXRlID09IENPTU1JVF9TVEFURV9VUERBVElOR19SRVNPVVJDRVMpOwogICAg
IEFTU0VSVChtX3VwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nKTsKICAgICBtX3VwZGF0ZU1vcmVS
ZXNvdXJjZXNQZW5kaW5nID0gZmFsc2U7Ci0gICAgaWYgKCFtb3JlUGVuZGluZykKKyAgICBtX3Jl
c291cmNlVXBkYXRlc1BlbmRpbmcgPSBtb3JlUGVuZGluZzsKKyAgICBpZiAoIW1vcmVQZW5kaW5n
ICYmIG1fZnJhbWVDb21wbGV0ZSkKICAgICAgICAgbV9jb21taXRTdGF0ZSA9IENPTU1JVF9TVEFU
RV9SRUFEWV9UT19DT01NSVQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlclN0YXRl
TWFjaGluZS5oCmluZGV4IDdkZTcxODguLmNhODMxMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5l
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NT
Y2hlZHVsZXJTdGF0ZU1hY2hpbmUuaApAQCAtNDUsNyArNDUsNiBAQCBwdWJsaWM6CiAKICAgICBl
bnVtIENvbW1pdFN0YXRlIHsKICAgICAgICAgQ09NTUlUX1NUQVRFX0lETEUsCi0gICAgICAgIENP
TU1JVF9TVEFURV9GUkFNRV9JTl9QUk9HUkVTUywKICAgICAgICAgQ09NTUlUX1NUQVRFX1VQREFU
SU5HX1JFU09VUkNFUywKICAgICAgICAgQ09NTUlUX1NUQVRFX1JFQURZX1RPX0NPTU1JVCwKICAg
ICAgICAgQ09NTUlUX1NUQVRFX1dBSVRJTkdfRk9SX0ZJUlNUX0RSQVcsCkBAIC05MywxNCArOTIs
MTcgQEAgcHVibGljOgogICAgIC8vIHRocmVhZCB0byBtYWluLgogICAgIHZvaWQgc2V0TmVlZHND
b21taXQoKTsKIAorICAgIC8vIEluZGljYXRlcyB0aGF0IGNvbXBvc2l0b3IgcmVzb3VyY2VzIHRo
YXQgbmVlZCB1cGRhdGluZyBhcmUgcGVuZGluZy4KKyAgICB2b2lkIHNldFJlc291cmNlVXBkYXRl
c1BlbmRpbmcoKTsKKwogICAgIC8vIENhbGwgdGhpcyBvbmx5IGluIHJlc3BvbnNlIHRvIHJlY2Vp
dmluZyBhbiBBQ1RJT05fQkVHSU5fRlJBTUUKICAgICAvLyBmcm9tIG5leHRTdGF0ZS4gSW5kaWNh
dGVzIHRoYXQgYWxsIHBhaW50aW5nIGlzIGNvbXBsZXRlIGFuZCB0aGF0Ci0gICAgLy8gdXBkYXRp
bmcgb2YgY29tcG9zaXRvciByZXNvdXJjZXMgY2FuIGJlZ2luLgorICAgIC8vIG9ubHkgdXBkYXRp
bmcgb2YgY29tcG9zaXRvciByZXNvdXJjZXMgaXMgbGVmdC4KICAgICB2b2lkIGJlZ2luRnJhbWVD
b21wbGV0ZSgpOwogCiAgICAgLy8gQ2FsbCB0aGlzIG9ubHkgaW4gcmVzcG9uc2UgdG8gcmVjZWl2
aW5nIGFuIEFDVElPTl9VUERBVEVfTU9SRV9SRVNPVVJDRVMKICAgICAvLyBmcm9tIG5leHRTdGF0
ZS4gSW5kaWNhdGVzIHRoYXQgdGhlIHNwZWNpZmljIHVwZGF0ZSByZXF1ZXN0IGNvbXBsZXRlZC4K
LSAgICB2b2lkIGJlZ2luVXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRlKGJvb2wgbW9yZVBlbmRp
bmcpOworICAgIHZvaWQgdXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRlKGJvb2wgbW9yZVBlbmRp
bmcpOwogCiAgICAgLy8gSW5kaWNhdGVzIHdoZXRoZXIgZHJhd2luZyB3b3VsZCwgYXQgdGhpcyB0
aW1lLCBtYWtlIHNlbnNlLgogICAgIC8vIGNhbkRyYXcgY2FuIGJlIHVzZWQgdG8gc3VwcmVzcyBm
bGFzaGVzIG9yIGNoZWNrZXJib2FyZGluZwpAQCAtMTE5LDYgKzEyMSw4IEBAIHByb3RlY3RlZDoK
ICAgICBib29sIG1faW5zaWRlVlN5bmM7CiAgICAgYm9vbCBtX3Zpc2libGU7CiAgICAgYm9vbCBt
X2NhbkRyYXc7CisgICAgYm9vbCBtX3Jlc291cmNlVXBkYXRlc1BlbmRpbmc7CisgICAgYm9vbCBt
X2ZyYW1lQ29tcGxldGU7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCmluZGV4
IGU5MjFlOGQuLmI5M2FiZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCkBAIC00MzAs
NiArNDMwLDkgQEAgdm9pZCBDQ1RocmVhZFByb3h5Ojp1cGRhdGVUZXh0dXJlT25JbXBsVGhyZWFk
KFBhc3NPd25QdHI8VXBkYXRlRW50cnk+IGVudHJ5KQogICAgICAgICBtX2N1cnJlbnRUZXh0dXJl
VXBkYXRlck9uSW1wbFRocmVhZCA9IGFkb3B0UHRyKG5ldyBDQ1RleHR1cmVVcGRhdGVyKG1fbGF5
ZXJUcmVlSG9zdEltcGwtPmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcigpKSk7CiAKICAgICBtX2N1
cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZC0+YXBwZW5kKGVudHJ5LT5tX3RleHR1cmUs
IGVudHJ5LT5tX3NvdXJjZVJlY3QsIGVudHJ5LT5tX2Rlc3RSZWN0KTsKKworICAgIGlmICghbV9s
YXllclRyZWVIb3N0SW1wbC0+c2V0dGluZ3MoKS5kZWxheVRleHR1cmVVcGRhdGVzKQorICAgICAg
ICBtX3NjaGVkdWxlck9uSW1wbFRocmVhZC0+c2V0UmVzb3VyY2VVcGRhdGVzUGVuZGluZygpOwog
fQogCiB2b2lkIENDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWVDb21wbGV0ZU9uSW1wbFRocmVhZChD
Q0NvbXBsZXRpb25FdmVudCogY29tcGxldGlvbikKQEAgLTQ0NSw2ICs0NDgsMTAgQEAgdm9pZCBD
Q1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQ29tcGxldGVPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9u
RXZlbnQqIGNvbXBsZXRpb24KIAogICAgIG1fY29tbWl0Q29tcGxldGlvbkV2ZW50T25JbXBsVGhy
ZWFkID0gY29tcGxldGlvbjsKIAorICAgIGlmIChtX2xheWVyVHJlZUhvc3RJbXBsLT5zZXR0aW5n
cygpLmRlbGF5VGV4dHVyZVVwZGF0ZXMKKyAgICAgICAgJiYgaGFzTW9yZVJlc291cmNlVXBkYXRl
cygpKQorICAgICAgICBtX3NjaGVkdWxlck9uSW1wbFRocmVhZC0+c2V0UmVzb3VyY2VVcGRhdGVz
UGVuZGluZygpOworCiAgICAgbV9zY2hlZHVsZXJPbkltcGxUaHJlYWQtPmJlZ2luRnJhbWVDb21w
bGV0ZSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ND
U2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdC5jcHAKaW5kZXggMzkwOGY0MC4uZmFhMTkw
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1NjaGVkdWxlclN0
YXRlTWFjaGluZVRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NT
Y2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LmNwcApAQCAtMzcsNyArMzcsNiBAQCBuYW1lc3BhY2Ug
ewogCiBjb25zdCBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q29tbWl0U3RhdGUgYWxsQ29tbWl0
U3RhdGVzW10gPSB7CiAgICAgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9J
RExFLAotICAgIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfRlJBTUVfSU5f
UFJPR1JFU1MsCiAgICAgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9VUERB
VElOR19SRVNPVVJDRVMsCiAgICAgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFU
RV9SRUFEWV9UT19DT01NSVQsCiAgICAgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9T
VEFURV9XQUlUSU5HX0ZPUl9GSVJTVF9EUkFXCkBAIC02NCw2ICs2MywxMiBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIHNldFVwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nKGJvb2wgYikgeyBtX3VwZGF0
ZU1vcmVSZXNvdXJjZXNQZW5kaW5nID0gYjsgfQogICAgIGJvb2wgdXBkYXRlTW9yZVJlc291cmNl
c1BlbmRpbmcoKSBjb25zdCB7IHJldHVybiBtX3VwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nOyB9
CisKKyAgICB2b2lkIHNldFJlc291cmNlVXBkYXRlc1BlbmRpbmcoYm9vbCBiKSB7IG1fcmVzb3Vy
Y2VVcGRhdGVzUGVuZGluZyA9IGI7IH0KKyAgICBib29sIHJlc291cmNlVXBkYXRlc1BlbmRpbmco
KSBjb25zdCB7IHJldHVybiBtX3Jlc291cmNlVXBkYXRlc1BlbmRpbmc7IH0KKworICAgIHZvaWQg
c2V0RnJhbWVDb21wbGV0ZShib29sIGIpIHsgbV9mcmFtZUNvbXBsZXRlID0gYjsgfQorICAgIGJv
b2wgZnJhbWVDb21wbGV0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVDb21wbGV0ZTsgfQogfTsK
IAogVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3ROZXh0QWN0aW9uQmVnaW5z
RnJhbWVJZk5lZWRlZCkKQEAgLTEwMiw3ICsxMDcsNyBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVN
YWNoaW5lVGVzdCwgVGVzdE5leHRBY3Rpb25CZWdpbnNGcmFtZUlmTmVlZGVkKQogICAgICAgICBT
dGF0ZU1hY2hpbmUgc3RhdGU7CiAgICAgICAgIHN0YXRlLnNldFZpc2libGUodHJ1ZSk7CiAgICAg
ICAgIHN0YXRlLnVwZGF0ZVN0YXRlKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVH
SU5fRlJBTUUpOwotICAgICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNP
TU1JVF9TVEFURV9GUkFNRV9JTl9QUk9HUkVTUywgc3RhdGUuY29tbWl0U3RhdGUoKSk7CisgICAg
ICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX1VQREFU
SU5HX1JFU09VUkNFUywgc3RhdGUuY29tbWl0U3RhdGUoKSk7CiAgICAgICAgIEVYUEVDVF9GQUxT
RShzdGF0ZS5uZWVkc0NvbW1pdCgpKTsKICAgICAgICAgRVhQRUNUX0ZBTFNFKHN0YXRlLnZzeW5j
Q2FsbGJhY2tOZWVkZWQoKSk7CiAgICAgfQpAQCAtMzA1LDYgKzMxMCw4IEBAIFRFU1QoQ0NTY2hl
ZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0VXBkYXRlc19Ob1JlZHJhd19PbmVSb3VuZE9mVXBk
YXRlcykKICAgICBzdGF0ZS5zZXROZWVkc1JlZHJhdyhmYWxzZSk7CiAgICAgc3RhdGUuc2V0VXBk
YXRlTW9yZVJlc291cmNlc1BlbmRpbmcoZmFsc2UpOwogICAgIHN0YXRlLnNldFZpc2libGUodHJ1
ZSk7CisgICAgc3RhdGUuc2V0UmVzb3VyY2VVcGRhdGVzUGVuZGluZyh0cnVlKTsKKyAgICBzdGF0
ZS5zZXRGcmFtZUNvbXBsZXRlKHRydWUpOwogCiAgICAgLy8gVmVyaWZ5IHdlIGJlZ2luIHVwZGF0
ZSwgYm90aCBmb3IgdnN5bmMgYW5kIG5vdCB2c3luYy4KICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVs
ZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9VUERBVEVfTU9SRV9SRVNPVVJDRVMsIHN0YXRl
Lm5leHRBY3Rpb24oKSk7CkBAIC0zMjEsNyArMzI4LDcgQEAgVEVTVChDQ1NjaGVkdWxlclN0YXRl
TWFjaGluZVRlc3QsIFRlc3RVcGRhdGVzX05vUmVkcmF3X09uZVJvdW5kT2ZVcGRhdGVzKQogICAg
IEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX05PTkUsIHN0YXRlLm5l
eHRBY3Rpb24oKSk7CiAKICAgICAvLyBFbmQgdXBkYXRlIHdpdGggbm8gbW9yZSB1cGRhdGVzIHBl
bmRpbmcuCi0gICAgc3RhdGUuYmVnaW5VcGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUoZmFsc2Up
OworICAgIHN0YXRlLnVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZShmYWxzZSk7CiAgICAgc3Rh
dGUuZGlkTGVhdmVWU3luYygpOwogICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGlu
ZTo6QUNUSU9OX0NPTU1JVCwgc3RhdGUubmV4dEFjdGlvbigpKTsKIH0KQEAgLTMzMyw2ICszNDAs
OCBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdFVwZGF0ZXNfTm9SZWRy
YXdfVHdvUm91bmRzT2ZVcGRhdGVzKQogICAgIHN0YXRlLnNldE5lZWRzUmVkcmF3KGZhbHNlKTsK
ICAgICBzdGF0ZS5zZXRVcGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZyhmYWxzZSk7CiAgICAgc3Rh
dGUuc2V0VmlzaWJsZSh0cnVlKTsKKyAgICBzdGF0ZS5zZXRSZXNvdXJjZVVwZGF0ZXNQZW5kaW5n
KHRydWUpOworICAgIHN0YXRlLnNldEZyYW1lQ29tcGxldGUodHJ1ZSk7CiAKICAgICAvLyBWZXJp
ZnkgdGhlIHVwZGF0ZSBiZWdpbnMsIGJvdGggZm9yIHZzeW5jIGFuZCBub3QgdnN5bmMuCiAgICAg
c3RhdGUuZGlkRW50ZXJWU3luYygpOwpAQCAtMzQ5LDcgKzM1OCw3IEBAIFRFU1QoQ0NTY2hlZHVs
ZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0VXBkYXRlc19Ob1JlZHJhd19Ud29Sb3VuZHNPZlVwZGF0
ZXMpCiAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fTk9ORSwg
c3RhdGUubmV4dEFjdGlvbigpKTsKIAogICAgIC8vIEFjayB0aGUgdXBkYXRlIHdpdGggbW9yZSBw
ZW5kaW5nLgotICAgIHN0YXRlLmJlZ2luVXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRlKHRydWUp
OworICAgIHN0YXRlLnVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZSh0cnVlKTsKIAogICAgIC8v
IFZlcmlmeSB3ZSB1cGRhdGUgbW9yZSwgYm90aCBmb3IgdnN5bmMgYW5kIG5vdCB2c3luYy4KICAg
ICBzdGF0ZS5kaWRMZWF2ZVZTeW5jKCk7CkBAIC0zNTksNyArMzY4LDcgQEAgVEVTVChDQ1NjaGVk
dWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RVcGRhdGVzX05vUmVkcmF3X1R3b1JvdW5kc09mVXBk
YXRlcykKIAogICAgIC8vIEJlZ2luIGFub3RoZXIgdXBkYXRlLCB3aGlsZSBpbnNpZGUgdnN5bmMu
IEFuZCwgaXQgdXBkYXRpbmcuCiAgICAgc3RhdGUudXBkYXRlU3RhdGUoQ0NTY2hlZHVsZXJTdGF0
ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9VUERBVEVfTU9SRV9SRVNPVVJDRVMpOwotICAgIHN0YXRl
LmJlZ2luVXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRlKGZhbHNlKTsKKyAgICBzdGF0ZS51cGRh
dGVNb3JlUmVzb3VyY2VzQ29tcGxldGUoZmFsc2UpOwogCiAgICAgLy8gTWFrZSBzdXJlIHdlIGNv
bW1pdCwgaW5kZXBlbmRlbnQgb2YgdnN5bmMuCiAgICAgc3RhdGUuZGlkTGVhdmVWU3luYygpOwpA
QCAtMzc1LDYgKzM4NCw5IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0
VXBkYXRlc19XaXRoUmVkcmF3X09uZVJvdW5kT2ZVcGRhdGVzKQogICAgIHN0YXRlLnNldE5lZWRz
UmVkcmF3KHRydWUpOwogICAgIHN0YXRlLnNldFVwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nKGZh
bHNlKTsKICAgICBzdGF0ZS5zZXRWaXNpYmxlKHRydWUpOworICAgIHN0YXRlLnNldFJlc291cmNl
VXBkYXRlc1BlbmRpbmcodHJ1ZSk7CisgICAgc3RhdGUuc2V0RnJhbWVDb21wbGV0ZSh0cnVlKTsK
KwogICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX1VQ
REFURV9NT1JFX1JFU09VUkNFUywgc3RhdGUubmV4dEFjdGlvbigpKTsKIAogICAgIC8vIEJlZ2lu
IGFuIHVwZGF0ZS4KQEAgLTM5Miw3ICs0MDQsNyBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNo
aW5lVGVzdCwgVGVzdFVwZGF0ZXNfV2l0aFJlZHJhd19PbmVSb3VuZE9mVXBkYXRlcykKICAgICBz
dGF0ZS5kaWRMZWF2ZVZTeW5jKCk7CiAKICAgICAvLyBGaW5pc2ggdXBkYXRlIGJ1dCBsZWF2ZSBt
b3JlIHJlc291cmNlcyBwZW5kaW5nLgotICAgIHN0YXRlLmJlZ2luVXBkYXRlTW9yZVJlc291cmNl
c0NvbXBsZXRlKHRydWUpOworICAgIHN0YXRlLnVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZSh0
cnVlKTsKIAogICAgIC8vIFZlcmlmeSB0aGF0IHJlZ2FyZGxlc3Mgb2YgdnN5bmMsIHdlIHVwZGF0
ZSBzb21lIG1vcmUuCiAgICAgc3RhdGUuZGlkTGVhdmVWU3luYygpOwpAQCAtNDA2LDcgKzQxOCw3
IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0VXBkYXRlc19XaXRoUmVk
cmF3X09uZVJvdW5kT2ZVcGRhdGVzKQogICAgIHN0YXRlLmRpZEVudGVyVlN5bmMoKTsKICAgICBz
dGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX1VQ
REFURV9NT1JFX1JFU09VUkNFUyk7CiAgICAgc3RhdGUuZGlkTGVhdmVWU3luYygpOwotICAgIHN0
YXRlLmJlZ2luVXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRlKGZhbHNlKTsKKyAgICBzdGF0ZS51
cGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUoZmFsc2UpOwogCiAgICAgLy8gVmVyaWZ5IHdlIGNv
bW1pdCByZWdhcmRsZXNzIG9mIHZzeW5jIHN0YXRlCiAgICAgc3RhdGUuZGlkTGVhdmVWU3luYygp
OwpAQCAtNDI0LDcgKzQzNiwxMSBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwg
VGVzdFNldE5lZWRzQ29tbWl0SXNOb3RMb3N0KQogICAgIC8vIEJlZ2luIHRoZSBmcmFtZS4KICAg
ICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9GUkFNRSwg
c3RhdGUubmV4dEFjdGlvbigpKTsKICAgICBzdGF0ZS51cGRhdGVTdGF0ZShzdGF0ZS5uZXh0QWN0
aW9uKCkpOwotICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NU
QVRFX0ZSQU1FX0lOX1BST0dSRVNTLCBzdGF0ZS5jb21taXRTdGF0ZSgpKTsKKyAgICBFWFBFQ1Rf
RVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9VUERBVElOR19SRVNPVVJD
RVMsIHN0YXRlLmNvbW1pdFN0YXRlKCkpOworCisgICAgLy8gUmVjZWl2ZSByZXNvdXJjZSB0aGF0
IG5lZWQgdXBkYXRlLgorICAgIHN0YXRlLnNldFJlc291cmNlVXBkYXRlc1BlbmRpbmcodHJ1ZSk7
CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfVVBE
QVRJTkdfUkVTT1VSQ0VTLCBzdGF0ZS5jb21taXRTdGF0ZSgpKTsKIAogICAgIC8vIE5vdywgd2hp
bGUgdGhlIGZyYW1lIGlzIGluIHByb2dyZXNzLCBzZXQgYW5vdGhlciBjb21taXQuCiAgICAgc3Rh
dGUuc2V0TmVlZHNDb21taXQodHJ1ZSk7CkBAIC00MzYsNyArNDUyLDcgQEAgVEVTVChDQ1NjaGVk
dWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RTZXROZWVkc0NvbW1pdElzTm90TG9zdCkKICAgICBF
WFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9VUERBVEVfTU9S
RV9SRVNPVVJDRVMsIHN0YXRlLm5leHRBY3Rpb24oKSk7CiAgICAgc3RhdGUudXBkYXRlU3RhdGUo
Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9VUERBVEVfTU9SRV9SRVNPVVJD
RVMpOwogICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX05PTkUs
IHN0YXRlLm5leHRBY3Rpb24oKSk7Ci0gICAgc3RhdGUuYmVnaW5VcGRhdGVNb3JlUmVzb3VyY2Vz
Q29tcGxldGUoZmFsc2UpOworICAgIHN0YXRlLnVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZShm
YWxzZSk7CiAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RB
VEVfUkVBRFlfVE9fQ09NTUlULCBzdGF0ZS5jb21taXRTdGF0ZSgpKTsKIAogICAgIC8vIEV4cGVj
dCB0byBjb21taXQgcmVnYXJkbGVzcyBvZiB2c3luYyBzdGF0ZS4KQEAgLTQ2NywxMCArNDgzLDE0
IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0RnVsbEN5Y2xlKQogCiAg
ICAgLy8gQmVnaW4gdGhlIGZyYW1lLgogICAgIHN0YXRlLnVwZGF0ZVN0YXRlKENDU2NoZWR1bGVy
U3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fRlJBTUUpOwotICAgIEVYUEVDVF9FUShDQ1NjaGVk
dWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX0ZSQU1FX0lOX1BST0dSRVNTLCBzdGF0ZS5j
b21taXRTdGF0ZSgpKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNP
TU1JVF9TVEFURV9VUERBVElOR19SRVNPVVJDRVMsIHN0YXRlLmNvbW1pdFN0YXRlKCkpOwogICAg
IEVYUEVDVF9GQUxTRShzdGF0ZS5uZWVkc0NvbW1pdCgpKTsKICAgICBFWFBFQ1RfRVEoQ0NTY2hl
ZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9OT05FLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwogCisg
ICAgLy8gUmVjZWl2ZSByZXNvdXJjZS4KKyAgICBzdGF0ZS5zZXRSZXNvdXJjZVVwZGF0ZXNQZW5k
aW5nKHRydWUpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlU
X1NUQVRFX1VQREFUSU5HX1JFU09VUkNFUywgc3RhdGUuY29tbWl0U3RhdGUoKSk7CisKICAgICAv
LyBUZWxsIHRoZSBzY2hlZHVsZXIgdGhlIGZyYW1lIGZpbmlzaGVkLgogICAgIHN0YXRlLmJlZ2lu
RnJhbWVDb21wbGV0ZSgpOwogICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6
Q09NTUlUX1NUQVRFX1VQREFUSU5HX1JFU09VUkNFUywgc3RhdGUuY29tbWl0U3RhdGUoKSk7CkBA
IC00NzgsNyArNDk4LDcgQEAgVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RG
dWxsQ3ljbGUpCiAKICAgICAvLyBUZWxsIHRoZSBzY2hlZHVsZXIgdGhlIHVwZGF0ZSBiZWdhbiBh
bmQgZmluaXNoZWQKICAgICBzdGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGlu
ZTo6QUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUyk7Ci0gICAgc3RhdGUuYmVnaW5V
cGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUoZmFsc2UpOworICAgIHN0YXRlLnVwZGF0ZU1vcmVS
ZXNvdXJjZXNDb21wbGV0ZShmYWxzZSk7CiAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVN
YWNoaW5lOjpDT01NSVRfU1RBVEVfUkVBRFlfVE9fQ09NTUlULCBzdGF0ZS5jb21taXRTdGF0ZSgp
KTsKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9DT01NSVQs
IHN0YXRlLm5leHRBY3Rpb24oKSk7CiAKQEAgLTUxMyw3ICs1MzMsNyBAQCBURVNUKENDU2NoZWR1
bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdEZ1bGxDeWNsZVdpdGhDb21taXRSZXF1ZXN0SW5iZXR3
ZWVuKQogCiAgICAgLy8gQmVnaW4gdGhlIGZyYW1lLgogICAgIHN0YXRlLnVwZGF0ZVN0YXRlKEND
U2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fRlJBTUUpOwotICAgIEVYUEVDVF9F
UShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX0ZSQU1FX0lOX1BST0dSRVNT
LCBzdGF0ZS5jb21taXRTdGF0ZSgpKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1h
Y2hpbmU6OkNPTU1JVF9TVEFURV9VUERBVElOR19SRVNPVVJDRVMsIHN0YXRlLmNvbW1pdFN0YXRl
KCkpOwogICAgIEVYUEVDVF9GQUxTRShzdGF0ZS5uZWVkc0NvbW1pdCgpKTsKICAgICBFWFBFQ1Rf
RVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9OT05FLCBzdGF0ZS5uZXh0QWN0aW9u
KCkpOwogCkBAIC01MjEsNiArNTQxLDEwIEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVU
ZXN0LCBUZXN0RnVsbEN5Y2xlV2l0aENvbW1pdFJlcXVlc3RJbmJldHdlZW4pCiAgICAgc3RhdGUu
c2V0TmVlZHNDb21taXQodHJ1ZSk7CiAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNo
aW5lOjpBQ1RJT05fTk9ORSwgc3RhdGUubmV4dEFjdGlvbigpKTsKIAorICAgIC8vIFJlY2VpdmUg
cmVzb3VyY2UuCisgICAgc3RhdGUuc2V0UmVzb3VyY2VVcGRhdGVzUGVuZGluZyh0cnVlKTsKKyAg
ICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9VUERBVElO
R19SRVNPVVJDRVMsIHN0YXRlLmNvbW1pdFN0YXRlKCkpOworCiAgICAgLy8gVGVsbCB0aGUgc2No
ZWR1bGVyIHRoZSBmcmFtZSBmaW5pc2hlZC4KICAgICBzdGF0ZS5iZWdpbkZyYW1lQ29tcGxldGUo
KTsKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9V
UERBVElOR19SRVNPVVJDRVMsIHN0YXRlLmNvbW1pdFN0YXRlKCkpOwpAQCAtNTI4LDcgKzU1Miw3
IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0RnVsbEN5Y2xlV2l0aENv
bW1pdFJlcXVlc3RJbmJldHdlZW4pCiAKICAgICAvLyBUZWxsIHRoZSBzY2hlZHVsZXIgdGhlIHVw
ZGF0ZSBiZWdhbiBhbmQgZmluaXNoZWQKICAgICBzdGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxl
clN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUyk7Ci0gICAg
c3RhdGUuYmVnaW5VcGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUoZmFsc2UpOworICAgIHN0YXRl
LnVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZShmYWxzZSk7CiAgICAgRVhQRUNUX0VRKENDU2No
ZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfUkVBRFlfVE9fQ09NTUlULCBzdGF0ZS5j
b21taXRTdGF0ZSgpKTsKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFD
VElPTl9DT01NSVQsIHN0YXRlLm5leHRBY3Rpb24oKSk7CiAKQEAgLTU3MCwxMyArNTk0LDE3IEBA
IFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0R29lc0ludmlzaWJsZU1pZENv
bW1pdCkKIAogICAgIC8vIEJlZ2luIHRoZSBmcmFtZSB3aGlsZSB2aXNpYmxlLgogICAgIHN0YXRl
LnVwZGF0ZVN0YXRlKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fRlJBTUUp
OwotICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX0ZS
QU1FX0lOX1BST0dSRVNTLCBzdGF0ZS5jb21taXRTdGF0ZSgpKTsKKyAgICBFWFBFQ1RfRVEoQ0NT
Y2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9VUERBVElOR19SRVNPVVJDRVMsIHN0
YXRlLmNvbW1pdFN0YXRlKCkpOwogICAgIEVYUEVDVF9GQUxTRShzdGF0ZS5uZWVkc0NvbW1pdCgp
KTsKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9OT05FLCBz
dGF0ZS5uZXh0QWN0aW9uKCkpOwogCiAgICAgLy8gQmVjb21lIGludmlzaWJsZQogICAgIHN0YXRl
LnNldFZpc2libGUoZmFsc2UpOwogCisgICAgLy8gUmVjZWl2ZSByZXNvdXJjZS4KKyAgICBzdGF0
ZS5zZXRSZXNvdXJjZVVwZGF0ZXNQZW5kaW5nKHRydWUpOworICAgIEVYUEVDVF9FUShDQ1NjaGVk
dWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX1VQREFUSU5HX1JFU09VUkNFUywgc3RhdGUu
Y29tbWl0U3RhdGUoKSk7CisKICAgICAvLyBUZWxsIHRoZSBzY2hlZHVsZXIgdGhlIGZyYW1lIGZp
bmlzaGVkCiAgICAgc3RhdGUuYmVnaW5GcmFtZUNvbXBsZXRlKCk7CiAgICAgRVhQRUNUX0VRKEND
U2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfVVBEQVRJTkdfUkVTT1VSQ0VTLCBz
dGF0ZS5jb21taXRTdGF0ZSgpKTsKQEAgLTU4NCw3ICs2MTIsNyBAQCBURVNUKENDU2NoZWR1bGVy
U3RhdGVNYWNoaW5lVGVzdCwgVGVzdEdvZXNJbnZpc2libGVNaWRDb21taXQpCiAKICAgICAvLyBU
ZWxsIHRoZSBzY2hlZHVsZXIgdGhlIHVwZGF0ZSBiZWdhbiBhbmQgZmluaXNoZWQKICAgICBzdGF0
ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX1VQREFU
RV9NT1JFX1JFU09VUkNFUyk7Ci0gICAgc3RhdGUuYmVnaW5VcGRhdGVNb3JlUmVzb3VyY2VzQ29t
cGxldGUoZmFsc2UpOworICAgIHN0YXRlLnVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZShmYWxz
ZSk7CiAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVf
UkVBRFlfVE9fQ09NTUlULCBzdGF0ZS5jb21taXRTdGF0ZSgpKTsKICAgICBFWFBFQ1RfRVEoQ0NT
Y2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9DT01NSVQsIHN0YXRlLm5leHRBY3Rpb24oKSk7
CiAKQEAgLTYwNCw0ICs2MzIsNjUgQEAgVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3Qs
IFRlc3RHb2VzSW52aXNpYmxlTWlkQ29tbWl0KQogICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0
YXRlTWFjaGluZTo6QUNUSU9OX05PTkUsIHN0YXRlLm5leHRBY3Rpb24oKSk7CiB9CiAKK1RFU1Qo
Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0Tm9SZXNvdXJjZVVwZGF0ZXMpCit7Cisg
ICAgU3RhdGVNYWNoaW5lIHN0YXRlOworICAgIHN0YXRlLnNldFZpc2libGUodHJ1ZSk7CisKKyAg
ICAvLyBTdGFydCBjbGVhbiBhbmQgc2V0IGNvbW1pdC4KKyAgICBzdGF0ZS5zZXROZWVkc0NvbW1p
dCh0cnVlKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9C
RUdJTl9GUkFNRSwgc3RhdGUubmV4dEFjdGlvbigpKTsKKworICAgIC8vIEJlZ2luIHRoZSBmcmFt
ZS4KKyAgICBzdGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9O
X0JFR0lOX0ZSQU1FKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNP
TU1JVF9TVEFURV9VUERBVElOR19SRVNPVVJDRVMsIHN0YXRlLmNvbW1pdFN0YXRlKCkpOworICAg
IEVYUEVDVF9GQUxTRShzdGF0ZS5uZWVkc0NvbW1pdCgpKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hl
ZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9OT05FLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworCisg
ICAgLy8gVGVsbCB0aGUgc2NoZWR1bGVyIHRoZSBmcmFtZSBmaW5pc2hlZC4KKyAgICBzdGF0ZS5i
ZWdpbkZyYW1lQ29tcGxldGUoKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hp
bmU6OkNPTU1JVF9TVEFURV9SRUFEWV9UT19DT01NSVQsIHN0YXRlLmNvbW1pdFN0YXRlKCkpOwor
ICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0NPTU1JVCwgc3Rh
dGUubmV4dEFjdGlvbigpKTsKK30KKworVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3Qs
IFRlc3ROb1Jlc291cmNlUGVuZGluZykKK3sKKyAgICBTdGF0ZU1hY2hpbmUgc3RhdGU7CisgICAg
c3RhdGUuc2V0VmlzaWJsZSh0cnVlKTsKKworICAgIC8vIFN0YXJ0IGNsZWFuIGFuZCBzZXQgY29t
bWl0LgorICAgIHN0YXRlLnNldE5lZWRzQ29tbWl0KHRydWUpOworICAgIEVYUEVDVF9FUShDQ1Nj
aGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX0ZSQU1FLCBzdGF0ZS5uZXh0QWN0aW9u
KCkpOworCisgICAgLy8gQmVnaW4gdGhlIGZyYW1lLgorICAgIHN0YXRlLnVwZGF0ZVN0YXRlKEND
U2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fRlJBTUUpOworICAgIEVYUEVDVF9F
UShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX1VQREFUSU5HX1JFU09VUkNF
Uywgc3RhdGUuY29tbWl0U3RhdGUoKSk7CisgICAgRVhQRUNUX0ZBTFNFKHN0YXRlLm5lZWRzQ29t
bWl0KCkpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX05P
TkUsIHN0YXRlLm5leHRBY3Rpb24oKSk7CisKKyAgICAvLyBSZWNlaXZlIHJlc291cmNlLgorICAg
IHN0YXRlLnNldFJlc291cmNlVXBkYXRlc1BlbmRpbmcodHJ1ZSk7CisgICAgRVhQRUNUX0VRKEND
U2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfVVBEQVRJTkdfUkVTT1VSQ0VTLCBz
dGF0ZS5jb21taXRTdGF0ZSgpKTsKKworICAgIC8vIFRlbGwgdGhlIHNjaGVkdWxlciB0aGUgdXBk
YXRlIGJlZ2FuIGFuZCBmaW5pc2hlZC4KKyAgICBzdGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxl
clN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUyk7CisgICAg
RVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfVVBEQVRJTkdf
UkVTT1VSQ0VTLCBzdGF0ZS5jb21taXRTdGF0ZSgpKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVs
ZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9OT05FLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworICAgIHN0
YXRlLnVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZSh0cnVlKTsKKworICAgIC8vIFRlbGwgdGhl
IHNjaGVkdWxlciBhbm90aGVyIHVwZGF0ZSBiZWdhbiBhbmQgZmluaXNoZWQuCisgICAgRVhQRUNU
X0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fVVBEQVRFX01PUkVfUkVT
T1VSQ0VTLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworICAgIHN0YXRlLnVwZGF0ZVN0YXRlKENDU2No
ZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fVVBEQVRFX01PUkVfUkVTT1VSQ0VTKTsK
KyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9OT05FLCBzdGF0
ZS5uZXh0QWN0aW9uKCkpOworICAgIHN0YXRlLnVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZShm
YWxzZSk7CisKKyAgICAvLyBObyBwZW5kaW5nIHJlc291cmNlcyB0byB1cGRhdGUuCisgICAgRVhQ
RUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fTk9ORSwgc3RhdGUubmV4dEFj
dGlvbigpKTsKKworICAgIC8vIFRlbGwgdGhlIHNjaGVkdWxlciB0aGUgZnJhbWUgZmluaXNoZWQu
CisgICAgc3RhdGUuYmVnaW5GcmFtZUNvbXBsZXRlKCk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1
bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfUkVBRFlfVE9fQ09NTUlULCBzdGF0ZS5jb21t
aXRTdGF0ZSgpKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElP
Tl9DT01NSVQsIHN0YXRlLm5leHRBY3Rpb24oKSk7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NTY2hlZHVsZXJUZXN0LmNwcCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvQ0NTY2hlZHVsZXJUZXN0LmNwcAppbmRleCA0NzU5ODdmLi42ZWVm
ZTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDU2NoZWR1bGVy
VGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1NjaGVkdWxlclRl
c3QuY3BwCkBAIC04MSwxMyArODEsMTAgQEAgVEVTVChDQ1NjaGVkdWxlclRlc3QsIFJlcXVlc3RD
b21taXQpCiAgICAgY2xpZW50LnJlc2V0KCk7CiAKICAgICAvLyBTaW5jZSwgaGFzTW9yZVJlc291
cmNlVXBkYXRlcyBpcyBzZXQgdG8gZmFsc2UsCi0gICAgLy8gYmVnaW5GcmFtZUNvbXBsZXRlIHNo
b3VsZCB1cGRhdGVNb3JlUmVzb3VyY2VzLCB0aGVuCi0gICAgLy8gY29tbWl0CisgICAgLy8gYmVn
aW5GcmFtZUNvbXBsZXRlIHNob3VsZCBjb21taXQgaW1tZWRpYXRlbHkuCiAgICAgc2NoZWR1bGVy
LT5iZWdpbkZyYW1lQ29tcGxldGUoKTsKLSAgICBFWFBFQ1RfRVEoMiwgY2xpZW50Lm51bUFjdGlv
bnMoKSk7Ci0gICAgRVhQRUNUX1NUUkVRKCJzY2hlZHVsZWRBY3Rpb25VcGRhdGVNb3JlUmVzb3Vy
Y2VzIiwgY2xpZW50LmFjdGlvbigwKSk7Ci0gICAgRVhQRUNUX1NUUkVRKCJzY2hlZHVsZWRBY3Rp
b25Db21taXQiLCBjbGllbnQuYWN0aW9uKDEpKTsKLSAgICBFWFBFQ1RfVFJVRSh0aW1lU291cmNl
LT5hY3RpdmUoKSk7CisgICAgRVhQRUNUX0VRKDEsIGNsaWVudC5udW1BY3Rpb25zKCkpOworICAg
IEVYUEVDVF9TVFJFUSgic2NoZWR1bGVkQWN0aW9uQ29tbWl0IiwgY2xpZW50LmFjdGlvbigwKSk7
CiAgICAgY2xpZW50LnJlc2V0KCk7CiAKICAgICAvLyBUaWNrIHNob3VsZCBkcmF3LgpAQCAtMTE4
LDEyICsxMTUsMTAgQEAgVEVTVChDQ1NjaGVkdWxlclRlc3QsIFJlcXVlc3RDb21taXRBZnRlckJl
Z2luRnJhbWUpCiAgICAgc2NoZWR1bGVyLT5zZXROZWVkc0NvbW1pdCgpOwogCiAgICAgLy8gU2lu
Y2UsIGhhc01vcmVSZXNvdXJjZVVwZGF0ZXMgaXMgc2V0IHRvIGZhbHNlLCBhbmQgYW5vdGhlciBj
b21taXQgaXMKLSAgICAvLyBuZWVkZWQsIGJlZ2luRnJhbWVDb21wbGV0ZSBzaG91bGQgdXBkYXRl
TW9yZVJlc291cmNlcywgdGhlbiBjb21taXQsIHRoZW4KLSAgICAvLyBiZWdpbiBhbm90aGVyIGZy
YW1lLgorICAgIC8vIG5lZWRlZCwgYmVnaW5GcmFtZUNvbXBsZXRlIHNob3VsZCBjb21taXQsIHRo
ZW4gYmVnaW4gYW5vdGhlciBmcmFtZS4KICAgICBzY2hlZHVsZXItPmJlZ2luRnJhbWVDb21wbGV0
ZSgpOwotICAgIEVYUEVDVF9FUSgyLCBjbGllbnQubnVtQWN0aW9ucygpKTsKLSAgICBFWFBFQ1Rf
U1RSRVEoInNjaGVkdWxlZEFjdGlvblVwZGF0ZU1vcmVSZXNvdXJjZXMiLCBjbGllbnQuYWN0aW9u
KDApKTsKLSAgICBFWFBFQ1RfU1RSRVEoInNjaGVkdWxlZEFjdGlvbkNvbW1pdCIsIGNsaWVudC5h
Y3Rpb24oMSkpOworICAgIEVYUEVDVF9FUSgxLCBjbGllbnQubnVtQWN0aW9ucygpKTsKKyAgICBF
WFBFQ1RfU1RSRVEoInNjaGVkdWxlZEFjdGlvbkNvbW1pdCIsIGNsaWVudC5hY3Rpb24oMCkpOwog
ICAgIGNsaWVudC5yZXNldCgpOwogCiAgICAgLy8gVGljayBzaG91bGQgZHJhdyBidXQgdGhlbiBi
ZWdpbiBhbm90aGVyIGZyYW1lLgpAQCAtMjQ4LDQgKzI0Myw1MyBAQCBURVNUKENDU2NoZWR1bGVy
VGVzdCwgUmVxdWVzdENvbW1pdEluc2lkZURyYXcpCiAgICAgRVhQRUNUX0ZBTFNFKHNjaGVkdWxl
ci0+cmVkcmF3UGVuZGluZygpKTsKIH0KIAorY2xhc3MgU2NoZWR1bGVyQ2xpZW50VGhhdFBlcmZv
cm1zVHdvUmVzb3VyY2VVcGRhdGVzIDogcHVibGljIEZha2VDQ1NjaGVkdWxlckNsaWVudCB7Citw
dWJsaWM6CisgICAgU2NoZWR1bGVyQ2xpZW50VGhhdFBlcmZvcm1zVHdvUmVzb3VyY2VVcGRhdGVz
KCkKKyAgICAgICAgOiBGYWtlQ0NTY2hlZHVsZXJDbGllbnQoKQorICAgICAgICAsIG1fbnVtVXBk
YXRlcygyKSB7IH0KKworICAgIHZpcnR1YWwgYm9vbCBoYXNNb3JlUmVzb3VyY2VVcGRhdGVzKCkg
Y29uc3QgeyByZXR1cm4gISFtX251bVVwZGF0ZXM7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1
bGVkQWN0aW9uVXBkYXRlTW9yZVJlc291cmNlcygpIHsgbV9udW1VcGRhdGVzLS07IH0KKworcHJv
dGVjdGVkOgorICAgIGludCBtX251bVVwZGF0ZXM7Cit9OworCitURVNUKENDU2NoZWR1bGVyVGVz
dCwgVXBkYXRlUmVzb3VyY2VzKQoreworICAgIFNjaGVkdWxlckNsaWVudFRoYXRQZXJmb3Jtc1R3
b1Jlc291cmNlVXBkYXRlcyBjbGllbnQ7CisgICAgUmVmUHRyPEZha2VDQ1RpbWVTb3VyY2U+IHRp
bWVTb3VyY2UgPSBhZG9wdFJlZihuZXcgRmFrZUNDVGltZVNvdXJjZSgpKTsKKyAgICBPd25QdHI8
Q0NTY2hlZHVsZXI+IHNjaGVkdWxlciA9IENDU2NoZWR1bGVyOjpjcmVhdGUoJmNsaWVudCwgYWRv
cHRQdHIobmV3IENDRnJhbWVSYXRlQ29udHJvbGxlcih0aW1lU291cmNlKSkpOworICAgIHNjaGVk
dWxlci0+c2V0VmlzaWJsZSh0cnVlKTsKKworICAgIC8vIFNldE5lZWRzQ29tbWl0IHNob3VsZCBi
ZWdpbiB0aGUgZnJhbWUuCisgICAgc2NoZWR1bGVyLT5zZXROZWVkc0NvbW1pdCgpOworICAgIEVY
UEVDVF9FUSgxLCBjbGllbnQubnVtQWN0aW9ucygpKTsKKyAgICBFWFBFQ1RfU1RSRVEoInNjaGVk
dWxlZEFjdGlvbkJlZ2luRnJhbWUiLCBjbGllbnQuYWN0aW9uKDApKTsKKyAgICBjbGllbnQucmVz
ZXQoKTsKKworICAgIC8vIE5vdyBzZXROZWVkc0NvbW1pdCBhZ2Fpbi4gQ2FsbGluZyBoZXJlIG1l
YW5zIHdlIG5lZWQgYSBzZWNvbmQgZnJhbWUuCisgICAgc2NoZWR1bGVyLT5zZXROZWVkc0NvbW1p
dCgpOworCisgICAgLy8gVXBkYXRlIHBlbmRpbmcgcmVzb3VyY2VzLgorICAgIGNsaWVudC5zZXRI
YXNNb3JlUmVzb3VyY2VVcGRhdGVzKHRydWUpOworICAgIHNjaGVkdWxlci0+c2V0UmVzb3VyY2VV
cGRhdGVzUGVuZGluZygpOworICAgIEVYUEVDVF9FUSgyLCBjbGllbnQubnVtQWN0aW9ucygpKTsK
KyAgICBFWFBFQ1RfU1RSRVEoInNjaGVkdWxlZEFjdGlvblVwZGF0ZU1vcmVSZXNvdXJjZXMiLCBj
bGllbnQuYWN0aW9uKDApKTsKKyAgICBFWFBFQ1RfU1RSRVEoInNjaGVkdWxlZEFjdGlvblVwZGF0
ZU1vcmVSZXNvdXJjZXMiLCBjbGllbnQuYWN0aW9uKDEpKTsKKyAgICBjbGllbnQucmVzZXQoKTsK
KworICAgIHNjaGVkdWxlci0+YmVnaW5GcmFtZUNvbXBsZXRlKCk7CisgICAgRVhQRUNUX0VRKDAs
IGNsaWVudC5udW1BY3Rpb25zKCkpOworICAgIGNsaWVudC5yZXNldCgpOworCisgICAgdGltZVNv
dXJjZS0+dGljaygpOworICAgIEVYUEVDVF9FUSgyLCBjbGllbnQubnVtQWN0aW9ucygpKTsKKyAg
ICBFWFBFQ1RfU1RSRVEoInNjaGVkdWxlZEFjdGlvbkRyYXdBbmRTd2FwIiwgY2xpZW50LmFjdGlv
bigwKSk7CisgICAgRVhQRUNUX1NUUkVRKCJzY2hlZHVsZWRBY3Rpb25CZWdpbkZyYW1lIiwgY2xp
ZW50LmFjdGlvbigxKSk7CisgICAgY2xpZW50LnJlc2V0KCk7Cit9CisKKwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123865</attachid>
            <date>2012-01-24 18:06:03 -0800</date>
            <delta_ts>2012-01-24 23:23:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>threaded-parallel-upload.diff</filename>
            <type>text/plain</type>
            <size>25844</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDU2NoZWR1bGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDU2NoZWR1bGVyLmNwcAppbmRleCA4NTgwNDY3Li5jM2FiM2FmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NTY2hlZHVsZXIuY3BwCkBAIC02OCw2ICs2OCwxMiBAQCB2b2lkIENDU2NoZWR1bGVyOjpzZXRO
ZWVkc0ZvcmNlZFJlZHJhdygpCiAgICAgcHJvY2Vzc1NjaGVkdWxlZEFjdGlvbnMoKTsKIH0KIAor
dm9pZCBDQ1NjaGVkdWxlcjo6c2V0UmVzb3VyY2VVcGRhdGVzUGVuZGluZygpCit7CisgICAgbV9z
dGF0ZU1hY2hpbmUuc2V0UmVzb3VyY2VVcGRhdGVzUGVuZGluZygpOworICAgIHByb2Nlc3NTY2hl
ZHVsZWRBY3Rpb25zKCk7Cit9CisKIHZvaWQgQ0NTY2hlZHVsZXI6OmJlZ2luRnJhbWVDb21wbGV0
ZSgpCiB7CiAgICAgVFJBQ0VfRVZFTlQoIkNDU2NoZWR1bGVyOjpiZWdpbkZyYW1lQ29tcGxldGUi
LCB0aGlzLCAwKTsKQEAgLTk2LDcgKzEwMiw3IEBAIHZvaWQgQ0NTY2hlZHVsZXI6OmJlZ2luRnJh
bWUoKQogewogICAgIGlmIChtX3VwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nKSB7CiAgICAgICAg
IG1fdXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmcgPSBmYWxzZTsKLSAgICAgICAgbV9zdGF0ZU1h
Y2hpbmUuYmVnaW5VcGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUobV9jbGllbnQtPmhhc01vcmVS
ZXNvdXJjZVVwZGF0ZXMoKSk7CisgICAgICAgIG1fc3RhdGVNYWNoaW5lLnVwZGF0ZU1vcmVSZXNv
dXJjZXNDb21wbGV0ZShtX2NsaWVudC0+aGFzTW9yZVJlc291cmNlVXBkYXRlcygpKTsKICAgICB9
CiAgICAgVFJBQ0VfRVZFTlQoIkNDU2NoZWR1bGVyOjpiZWdpbkZyYW1lIiwgdGhpcywgMCk7CiAK
QEAgLTEzMywxNiArMTM5LDEzIEBAIHZvaWQgQ0NTY2hlZHVsZXI6OnByb2Nlc3NTY2hlZHVsZWRB
Y3Rpb25zKCkKICAgICAgICAgICAgIG1fY2xpZW50LT5zY2hlZHVsZWRBY3Rpb25CZWdpbkZyYW1l
KCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDQ1NjaGVkdWxlclN0YXRlTWFj
aGluZTo6QUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUzoKKyAgICAgICAgICAgIEFT
U0VSVChtX2NsaWVudC0+aGFzTW9yZVJlc291cmNlVXBkYXRlcygpKTsKICAgICAgICAgICAgIG1f
Y2xpZW50LT5zY2hlZHVsZWRBY3Rpb25VcGRhdGVNb3JlUmVzb3VyY2VzKCk7Ci0gICAgICAgICAg
ICBpZiAoIW1fY2xpZW50LT5oYXNNb3JlUmVzb3VyY2VVcGRhdGVzKCkpIHsKLSAgICAgICAgICAg
ICAgICAvLyBJZiB3ZSB3ZXJlIGp1c3QgdG9sZCB0byB1cGRhdGUgcmVzb3VyY2VzLCBidXQgdGhl
cmUgYXJlIG5vCi0gICAgICAgICAgICAgICAgLy8gbW9yZSBwZW5kaW5nLCB0aGVuIHRlbGwgdGhl
IHN0YXRlIG1hY2hpbmUgdGhhdCB0aGUKLSAgICAgICAgICAgICAgICAvLyBiZWdpblVwZGF0ZU1v
cmVSZXNvdXJjZXMgY29tcGxldGVkLiBJZiBtb3JlIGFyZSBwZW5kaW5nLAotICAgICAgICAgICAg
ICAgIC8vIHRoZW4gd2Ugd2lsbCBhY2sgdGhlIHVwZGF0ZSBhdCB0aGUgbmV4dCBkcmF3LgotICAg
ICAgICAgICAgICAgIG1fdXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmcgPSBmYWxzZTsKLSAgICAg
ICAgICAgICAgICBtX3N0YXRlTWFjaGluZS5iZWdpblVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0
ZShmYWxzZSk7Ci0gICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBtX3VwZGF0ZU1v
cmVSZXNvdXJjZXNQZW5kaW5nID0gdHJ1ZTsKKyAgICAgICAgICAgIC8vIElmIHdlIHdlcmUganVz
dCB0b2xkIHRvIHVwZGF0ZSByZXNvdXJjZXMsIHRlbGwgdGhlIHN0YXRlCisgICAgICAgICAgICAv
LyBtYWNoaW5lIHRoYXQgdGhlIGJlZ2luVXBkYXRlTW9yZVJlc291cmNlcyBjb21wbGV0ZWQgYW5k
IGlmCisgICAgICAgICAgICAvLyBtb3JlIGFyZSBwZW5kaW5nLgorICAgICAgICAgICAgbV91cGRh
dGVNb3JlUmVzb3VyY2VzUGVuZGluZyA9IG1fY2xpZW50LT5oYXNNb3JlUmVzb3VyY2VVcGRhdGVz
KCk7CisgICAgICAgICAgICBtX3N0YXRlTWFjaGluZS51cGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxl
dGUobV91cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZyk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgY2FzZSBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0NPTU1JVDoKICAgICAg
ICAgICAgIG1fY2xpZW50LT5zY2hlZHVsZWRBY3Rpb25Db21taXQoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxl
ci5oCmluZGV4IDczMTA1ODEuLjc3MjA0M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXIuaApAQCAtNjcs
OCArNjcsOCBAQCBwdWJsaWM6CiAgICAgLy8gQXMgc2V0TmVlZHNSZWRyYXcoKSwgYnV0IGVuc3Vy
ZXMgdGhlIGRyYXcgd2lsbCBkZWZpbml0ZWx5IGhhcHBlbiBldmVuIGlmIHdlIGFyZSBub3Qgdmlz
aWJsZS4KICAgICB2b2lkIHNldE5lZWRzRm9yY2VkUmVkcmF3KCk7CiAKKyAgICB2b2lkIHNldFJl
c291cmNlVXBkYXRlc1BlbmRpbmcoKTsKICAgICB2b2lkIGJlZ2luRnJhbWVDb21wbGV0ZSgpOwot
CiAgICAgdm9pZCBzZXRNYXhGcmFtZXNQZW5kaW5nKGludCk7CiAgICAgdm9pZCBkaWRTd2FwQnVm
ZmVyc0NvbXBsZXRlKCk7CiAgICAgdm9pZCBkaWRTd2FwQnVmZmVyc0Fib3J0KCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVk
dWxlclN0YXRlTWFjaGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZS5jcHAKaW5kZXggZDFhYTVjYy4uYTQ5
NzA3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lLmNwcApA
QCAtMzgsNyArMzgsOSBAQCBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q0NTY2hlZHVsZXJTdGF0
ZU1hY2hpbmUoKQogICAgICwgbV91cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZyhmYWxzZSkKICAg
ICAsIG1faW5zaWRlVlN5bmMoZmFsc2UpCiAgICAgLCBtX3Zpc2libGUoZmFsc2UpCi0gICAgLCBt
X2NhbkRyYXcodHJ1ZSkgeyB9CisgICAgLCBtX2NhbkRyYXcodHJ1ZSkKKyAgICAsIG1fcmVzb3Vy
Y2VVcGRhdGVzUGVuZGluZyhmYWxzZSkKKyAgICAsIG1fZnJhbWVDb21wbGV0ZShmYWxzZSkgeyB9
CiAKIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBY3Rpb24gQ0NTY2hlZHVsZXJTdGF0ZU1hY2hp
bmU6Om5leHRBY3Rpb24oKSBjb25zdAogewpAQCAtNTIsMTUgKzU0LDEwIEBAIENDU2NoZWR1bGVy
U3RhdGVNYWNoaW5lOjpBY3Rpb24gQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6Om5leHRBY3Rpb24o
KSBjb25zdAogICAgICAgICAgICAgcmV0dXJuIEFDVElPTl9CRUdJTl9GUkFNRTsKICAgICAgICAg
cmV0dXJuIEFDVElPTl9OT05FOwogCi0gICAgY2FzZSBDT01NSVRfU1RBVEVfRlJBTUVfSU5fUFJP
R1JFU1M6Ci0gICAgICAgIGlmIChzaG91bGREcmF3KQotICAgICAgICAgICAgcmV0dXJuIEFDVElP
Tl9EUkFXOwotICAgICAgICByZXR1cm4gQUNUSU9OX05PTkU7Ci0KICAgICBjYXNlIENPTU1JVF9T
VEFURV9VUERBVElOR19SRVNPVVJDRVM6CiAgICAgICAgIGlmIChzaG91bGREcmF3KQogICAgICAg
ICAgICAgcmV0dXJuIEFDVElPTl9EUkFXOwotICAgICAgICBpZiAoIW1fdXBkYXRlTW9yZVJlc291
cmNlc1BlbmRpbmcpCisgICAgICAgIGlmICghbV91cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZyAm
JiBtX3Jlc291cmNlVXBkYXRlc1BlbmRpbmcpCiAgICAgICAgICAgICByZXR1cm4gQUNUSU9OX0JF
R0lOX1VQREFURV9NT1JFX1JFU09VUkNFUzsKICAgICAgICAgcmV0dXJuIEFDVElPTl9OT05FOwog
CkBAIC04OCw4ICs4NSwxMCBAQCB2b2lkIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjp1cGRhdGVT
dGF0ZShBY3Rpb24gYWN0aW9uKQogCiAgICAgY2FzZSBBQ1RJT05fQkVHSU5fRlJBTUU6CiAgICAg
ICAgIEFTU0VSVChtX3Zpc2libGUpOwotICAgICAgICBtX2NvbW1pdFN0YXRlID0gQ09NTUlUX1NU
QVRFX0ZSQU1FX0lOX1BST0dSRVNTOworICAgICAgICBBU1NFUlQoIW1fcmVzb3VyY2VVcGRhdGVz
UGVuZGluZyk7CisgICAgICAgIG1fY29tbWl0U3RhdGUgPSBDT01NSVRfU1RBVEVfVVBEQVRJTkdf
UkVTT1VSQ0VTOwogICAgICAgICBtX25lZWRzQ29tbWl0ID0gZmFsc2U7CisgICAgICAgIG1fZnJh
bWVDb21wbGV0ZSA9IGZhbHNlOwogICAgICAgICByZXR1cm47CiAKICAgICBjYXNlIEFDVElPTl9C
RUdJTl9VUERBVEVfTU9SRV9SRVNPVVJDRVM6CkBAIC0xNjEsMTggKzE2MCwyNiBAQCB2b2lkIEND
U2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpzZXROZWVkc0NvbW1pdCgpCiAgICAgbV9uZWVkc0NvbW1p
dCA9IHRydWU7CiB9CiAKK3ZvaWQgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OnNldFJlc291cmNl
VXBkYXRlc1BlbmRpbmcoKQoreworICAgIG1fcmVzb3VyY2VVcGRhdGVzUGVuZGluZyA9IHRydWU7
Cit9CisKIHZvaWQgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OmJlZ2luRnJhbWVDb21wbGV0ZSgp
CiB7Ci0gICAgQVNTRVJUKG1fY29tbWl0U3RhdGUgPT0gQ09NTUlUX1NUQVRFX0ZSQU1FX0lOX1BS
T0dSRVNTKTsKLSAgICBtX2NvbW1pdFN0YXRlID0gQ09NTUlUX1NUQVRFX1VQREFUSU5HX1JFU09V
UkNFUzsKKyAgICBBU1NFUlQobV9jb21taXRTdGF0ZSA9PSBDT01NSVRfU1RBVEVfVVBEQVRJTkdf
UkVTT1VSQ0VTKTsKKyAgICBtX2ZyYW1lQ29tcGxldGUgPSB0cnVlOworICAgIGlmICghbV91cGRh
dGVNb3JlUmVzb3VyY2VzUGVuZGluZyAmJiAhbV9yZXNvdXJjZVVwZGF0ZXNQZW5kaW5nKQorICAg
ICAgICBtX2NvbW1pdFN0YXRlID0gQ09NTUlUX1NUQVRFX1JFQURZX1RPX0NPTU1JVDsKIH0KIAot
dm9pZCBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6YmVnaW5VcGRhdGVNb3JlUmVzb3VyY2VzQ29t
cGxldGUoYm9vbCBtb3JlUGVuZGluZykKK3ZvaWQgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OnVw
ZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZShib29sIG1vcmVQZW5kaW5nKQogewogICAgIEFTU0VS
VChtX2NvbW1pdFN0YXRlID09IENPTU1JVF9TVEFURV9VUERBVElOR19SRVNPVVJDRVMpOwogICAg
IEFTU0VSVChtX3VwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nKTsKICAgICBtX3VwZGF0ZU1vcmVS
ZXNvdXJjZXNQZW5kaW5nID0gZmFsc2U7Ci0gICAgaWYgKCFtb3JlUGVuZGluZykKKyAgICBtX3Jl
c291cmNlVXBkYXRlc1BlbmRpbmcgPSBtb3JlUGVuZGluZzsKKyAgICBpZiAoIW1vcmVQZW5kaW5n
ICYmIG1fZnJhbWVDb21wbGV0ZSkKICAgICAgICAgbV9jb21taXRTdGF0ZSA9IENPTU1JVF9TVEFU
RV9SRUFEWV9UT19DT01NSVQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlclN0YXRl
TWFjaGluZS5oCmluZGV4IDdkZTcxODguLmNhODMxMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5l
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NT
Y2hlZHVsZXJTdGF0ZU1hY2hpbmUuaApAQCAtNDUsNyArNDUsNiBAQCBwdWJsaWM6CiAKICAgICBl
bnVtIENvbW1pdFN0YXRlIHsKICAgICAgICAgQ09NTUlUX1NUQVRFX0lETEUsCi0gICAgICAgIENP
TU1JVF9TVEFURV9GUkFNRV9JTl9QUk9HUkVTUywKICAgICAgICAgQ09NTUlUX1NUQVRFX1VQREFU
SU5HX1JFU09VUkNFUywKICAgICAgICAgQ09NTUlUX1NUQVRFX1JFQURZX1RPX0NPTU1JVCwKICAg
ICAgICAgQ09NTUlUX1NUQVRFX1dBSVRJTkdfRk9SX0ZJUlNUX0RSQVcsCkBAIC05MywxNCArOTIs
MTcgQEAgcHVibGljOgogICAgIC8vIHRocmVhZCB0byBtYWluLgogICAgIHZvaWQgc2V0TmVlZHND
b21taXQoKTsKIAorICAgIC8vIEluZGljYXRlcyB0aGF0IGNvbXBvc2l0b3IgcmVzb3VyY2VzIHRo
YXQgbmVlZCB1cGRhdGluZyBhcmUgcGVuZGluZy4KKyAgICB2b2lkIHNldFJlc291cmNlVXBkYXRl
c1BlbmRpbmcoKTsKKwogICAgIC8vIENhbGwgdGhpcyBvbmx5IGluIHJlc3BvbnNlIHRvIHJlY2Vp
dmluZyBhbiBBQ1RJT05fQkVHSU5fRlJBTUUKICAgICAvLyBmcm9tIG5leHRTdGF0ZS4gSW5kaWNh
dGVzIHRoYXQgYWxsIHBhaW50aW5nIGlzIGNvbXBsZXRlIGFuZCB0aGF0Ci0gICAgLy8gdXBkYXRp
bmcgb2YgY29tcG9zaXRvciByZXNvdXJjZXMgY2FuIGJlZ2luLgorICAgIC8vIG9ubHkgdXBkYXRp
bmcgb2YgY29tcG9zaXRvciByZXNvdXJjZXMgaXMgbGVmdC4KICAgICB2b2lkIGJlZ2luRnJhbWVD
b21wbGV0ZSgpOwogCiAgICAgLy8gQ2FsbCB0aGlzIG9ubHkgaW4gcmVzcG9uc2UgdG8gcmVjZWl2
aW5nIGFuIEFDVElPTl9VUERBVEVfTU9SRV9SRVNPVVJDRVMKICAgICAvLyBmcm9tIG5leHRTdGF0
ZS4gSW5kaWNhdGVzIHRoYXQgdGhlIHNwZWNpZmljIHVwZGF0ZSByZXF1ZXN0IGNvbXBsZXRlZC4K
LSAgICB2b2lkIGJlZ2luVXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRlKGJvb2wgbW9yZVBlbmRp
bmcpOworICAgIHZvaWQgdXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRlKGJvb2wgbW9yZVBlbmRp
bmcpOwogCiAgICAgLy8gSW5kaWNhdGVzIHdoZXRoZXIgZHJhd2luZyB3b3VsZCwgYXQgdGhpcyB0
aW1lLCBtYWtlIHNlbnNlLgogICAgIC8vIGNhbkRyYXcgY2FuIGJlIHVzZWQgdG8gc3VwcmVzcyBm
bGFzaGVzIG9yIGNoZWNrZXJib2FyZGluZwpAQCAtMTE5LDYgKzEyMSw4IEBAIHByb3RlY3RlZDoK
ICAgICBib29sIG1faW5zaWRlVlN5bmM7CiAgICAgYm9vbCBtX3Zpc2libGU7CiAgICAgYm9vbCBt
X2NhbkRyYXc7CisgICAgYm9vbCBtX3Jlc291cmNlVXBkYXRlc1BlbmRpbmc7CisgICAgYm9vbCBt
X2ZyYW1lQ29tcGxldGU7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCmluZGV4
IGU5MjFlOGQuLmI5M2FiZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCkBAIC00MzAs
NiArNDMwLDkgQEAgdm9pZCBDQ1RocmVhZFByb3h5Ojp1cGRhdGVUZXh0dXJlT25JbXBsVGhyZWFk
KFBhc3NPd25QdHI8VXBkYXRlRW50cnk+IGVudHJ5KQogICAgICAgICBtX2N1cnJlbnRUZXh0dXJl
VXBkYXRlck9uSW1wbFRocmVhZCA9IGFkb3B0UHRyKG5ldyBDQ1RleHR1cmVVcGRhdGVyKG1fbGF5
ZXJUcmVlSG9zdEltcGwtPmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcigpKSk7CiAKICAgICBtX2N1
cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZC0+YXBwZW5kKGVudHJ5LT5tX3RleHR1cmUs
IGVudHJ5LT5tX3NvdXJjZVJlY3QsIGVudHJ5LT5tX2Rlc3RSZWN0KTsKKworICAgIGlmICghbV9s
YXllclRyZWVIb3N0SW1wbC0+c2V0dGluZ3MoKS5kZWxheVRleHR1cmVVcGRhdGVzKQorICAgICAg
ICBtX3NjaGVkdWxlck9uSW1wbFRocmVhZC0+c2V0UmVzb3VyY2VVcGRhdGVzUGVuZGluZygpOwog
fQogCiB2b2lkIENDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWVDb21wbGV0ZU9uSW1wbFRocmVhZChD
Q0NvbXBsZXRpb25FdmVudCogY29tcGxldGlvbikKQEAgLTQ0NSw2ICs0NDgsMTAgQEAgdm9pZCBD
Q1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQ29tcGxldGVPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9u
RXZlbnQqIGNvbXBsZXRpb24KIAogICAgIG1fY29tbWl0Q29tcGxldGlvbkV2ZW50T25JbXBsVGhy
ZWFkID0gY29tcGxldGlvbjsKIAorICAgIGlmIChtX2xheWVyVHJlZUhvc3RJbXBsLT5zZXR0aW5n
cygpLmRlbGF5VGV4dHVyZVVwZGF0ZXMKKyAgICAgICAgJiYgaGFzTW9yZVJlc291cmNlVXBkYXRl
cygpKQorICAgICAgICBtX3NjaGVkdWxlck9uSW1wbFRocmVhZC0+c2V0UmVzb3VyY2VVcGRhdGVz
UGVuZGluZygpOworCiAgICAgbV9zY2hlZHVsZXJPbkltcGxUaHJlYWQtPmJlZ2luRnJhbWVDb21w
bGV0ZSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ND
U2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdC5jcHAKaW5kZXggMzkwOGY0MC4uZmFhMTkw
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1NjaGVkdWxlclN0
YXRlTWFjaGluZVRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NT
Y2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LmNwcApAQCAtMzcsNyArMzcsNiBAQCBuYW1lc3BhY2Ug
ewogCiBjb25zdCBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q29tbWl0U3RhdGUgYWxsQ29tbWl0
U3RhdGVzW10gPSB7CiAgICAgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9J
RExFLAotICAgIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfRlJBTUVfSU5f
UFJPR1JFU1MsCiAgICAgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9VUERB
VElOR19SRVNPVVJDRVMsCiAgICAgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFU
RV9SRUFEWV9UT19DT01NSVQsCiAgICAgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9T
VEFURV9XQUlUSU5HX0ZPUl9GSVJTVF9EUkFXCkBAIC02NCw2ICs2MywxMiBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIHNldFVwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nKGJvb2wgYikgeyBtX3VwZGF0
ZU1vcmVSZXNvdXJjZXNQZW5kaW5nID0gYjsgfQogICAgIGJvb2wgdXBkYXRlTW9yZVJlc291cmNl
c1BlbmRpbmcoKSBjb25zdCB7IHJldHVybiBtX3VwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nOyB9
CisKKyAgICB2b2lkIHNldFJlc291cmNlVXBkYXRlc1BlbmRpbmcoYm9vbCBiKSB7IG1fcmVzb3Vy
Y2VVcGRhdGVzUGVuZGluZyA9IGI7IH0KKyAgICBib29sIHJlc291cmNlVXBkYXRlc1BlbmRpbmco
KSBjb25zdCB7IHJldHVybiBtX3Jlc291cmNlVXBkYXRlc1BlbmRpbmc7IH0KKworICAgIHZvaWQg
c2V0RnJhbWVDb21wbGV0ZShib29sIGIpIHsgbV9mcmFtZUNvbXBsZXRlID0gYjsgfQorICAgIGJv
b2wgZnJhbWVDb21wbGV0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVDb21wbGV0ZTsgfQogfTsK
IAogVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3ROZXh0QWN0aW9uQmVnaW5z
RnJhbWVJZk5lZWRlZCkKQEAgLTEwMiw3ICsxMDcsNyBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVN
YWNoaW5lVGVzdCwgVGVzdE5leHRBY3Rpb25CZWdpbnNGcmFtZUlmTmVlZGVkKQogICAgICAgICBT
dGF0ZU1hY2hpbmUgc3RhdGU7CiAgICAgICAgIHN0YXRlLnNldFZpc2libGUodHJ1ZSk7CiAgICAg
ICAgIHN0YXRlLnVwZGF0ZVN0YXRlKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVH
SU5fRlJBTUUpOwotICAgICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNP
TU1JVF9TVEFURV9GUkFNRV9JTl9QUk9HUkVTUywgc3RhdGUuY29tbWl0U3RhdGUoKSk7CisgICAg
ICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX1VQREFU
SU5HX1JFU09VUkNFUywgc3RhdGUuY29tbWl0U3RhdGUoKSk7CiAgICAgICAgIEVYUEVDVF9GQUxT
RShzdGF0ZS5uZWVkc0NvbW1pdCgpKTsKICAgICAgICAgRVhQRUNUX0ZBTFNFKHN0YXRlLnZzeW5j
Q2FsbGJhY2tOZWVkZWQoKSk7CiAgICAgfQpAQCAtMzA1LDYgKzMxMCw4IEBAIFRFU1QoQ0NTY2hl
ZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0VXBkYXRlc19Ob1JlZHJhd19PbmVSb3VuZE9mVXBk
YXRlcykKICAgICBzdGF0ZS5zZXROZWVkc1JlZHJhdyhmYWxzZSk7CiAgICAgc3RhdGUuc2V0VXBk
YXRlTW9yZVJlc291cmNlc1BlbmRpbmcoZmFsc2UpOwogICAgIHN0YXRlLnNldFZpc2libGUodHJ1
ZSk7CisgICAgc3RhdGUuc2V0UmVzb3VyY2VVcGRhdGVzUGVuZGluZyh0cnVlKTsKKyAgICBzdGF0
ZS5zZXRGcmFtZUNvbXBsZXRlKHRydWUpOwogCiAgICAgLy8gVmVyaWZ5IHdlIGJlZ2luIHVwZGF0
ZSwgYm90aCBmb3IgdnN5bmMgYW5kIG5vdCB2c3luYy4KICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVs
ZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9VUERBVEVfTU9SRV9SRVNPVVJDRVMsIHN0YXRl
Lm5leHRBY3Rpb24oKSk7CkBAIC0zMjEsNyArMzI4LDcgQEAgVEVTVChDQ1NjaGVkdWxlclN0YXRl
TWFjaGluZVRlc3QsIFRlc3RVcGRhdGVzX05vUmVkcmF3X09uZVJvdW5kT2ZVcGRhdGVzKQogICAg
IEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX05PTkUsIHN0YXRlLm5l
eHRBY3Rpb24oKSk7CiAKICAgICAvLyBFbmQgdXBkYXRlIHdpdGggbm8gbW9yZSB1cGRhdGVzIHBl
bmRpbmcuCi0gICAgc3RhdGUuYmVnaW5VcGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUoZmFsc2Up
OworICAgIHN0YXRlLnVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZShmYWxzZSk7CiAgICAgc3Rh
dGUuZGlkTGVhdmVWU3luYygpOwogICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGlu
ZTo6QUNUSU9OX0NPTU1JVCwgc3RhdGUubmV4dEFjdGlvbigpKTsKIH0KQEAgLTMzMyw2ICszNDAs
OCBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdFVwZGF0ZXNfTm9SZWRy
YXdfVHdvUm91bmRzT2ZVcGRhdGVzKQogICAgIHN0YXRlLnNldE5lZWRzUmVkcmF3KGZhbHNlKTsK
ICAgICBzdGF0ZS5zZXRVcGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZyhmYWxzZSk7CiAgICAgc3Rh
dGUuc2V0VmlzaWJsZSh0cnVlKTsKKyAgICBzdGF0ZS5zZXRSZXNvdXJjZVVwZGF0ZXNQZW5kaW5n
KHRydWUpOworICAgIHN0YXRlLnNldEZyYW1lQ29tcGxldGUodHJ1ZSk7CiAKICAgICAvLyBWZXJp
ZnkgdGhlIHVwZGF0ZSBiZWdpbnMsIGJvdGggZm9yIHZzeW5jIGFuZCBub3QgdnN5bmMuCiAgICAg
c3RhdGUuZGlkRW50ZXJWU3luYygpOwpAQCAtMzQ5LDcgKzM1OCw3IEBAIFRFU1QoQ0NTY2hlZHVs
ZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0VXBkYXRlc19Ob1JlZHJhd19Ud29Sb3VuZHNPZlVwZGF0
ZXMpCiAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fTk9ORSwg
c3RhdGUubmV4dEFjdGlvbigpKTsKIAogICAgIC8vIEFjayB0aGUgdXBkYXRlIHdpdGggbW9yZSBw
ZW5kaW5nLgotICAgIHN0YXRlLmJlZ2luVXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRlKHRydWUp
OworICAgIHN0YXRlLnVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZSh0cnVlKTsKIAogICAgIC8v
IFZlcmlmeSB3ZSB1cGRhdGUgbW9yZSwgYm90aCBmb3IgdnN5bmMgYW5kIG5vdCB2c3luYy4KICAg
ICBzdGF0ZS5kaWRMZWF2ZVZTeW5jKCk7CkBAIC0zNTksNyArMzY4LDcgQEAgVEVTVChDQ1NjaGVk
dWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RVcGRhdGVzX05vUmVkcmF3X1R3b1JvdW5kc09mVXBk
YXRlcykKIAogICAgIC8vIEJlZ2luIGFub3RoZXIgdXBkYXRlLCB3aGlsZSBpbnNpZGUgdnN5bmMu
IEFuZCwgaXQgdXBkYXRpbmcuCiAgICAgc3RhdGUudXBkYXRlU3RhdGUoQ0NTY2hlZHVsZXJTdGF0
ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9VUERBVEVfTU9SRV9SRVNPVVJDRVMpOwotICAgIHN0YXRl
LmJlZ2luVXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRlKGZhbHNlKTsKKyAgICBzdGF0ZS51cGRh
dGVNb3JlUmVzb3VyY2VzQ29tcGxldGUoZmFsc2UpOwogCiAgICAgLy8gTWFrZSBzdXJlIHdlIGNv
bW1pdCwgaW5kZXBlbmRlbnQgb2YgdnN5bmMuCiAgICAgc3RhdGUuZGlkTGVhdmVWU3luYygpOwpA
QCAtMzc1LDYgKzM4NCw5IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0
VXBkYXRlc19XaXRoUmVkcmF3X09uZVJvdW5kT2ZVcGRhdGVzKQogICAgIHN0YXRlLnNldE5lZWRz
UmVkcmF3KHRydWUpOwogICAgIHN0YXRlLnNldFVwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nKGZh
bHNlKTsKICAgICBzdGF0ZS5zZXRWaXNpYmxlKHRydWUpOworICAgIHN0YXRlLnNldFJlc291cmNl
VXBkYXRlc1BlbmRpbmcodHJ1ZSk7CisgICAgc3RhdGUuc2V0RnJhbWVDb21wbGV0ZSh0cnVlKTsK
KwogICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX1VQ
REFURV9NT1JFX1JFU09VUkNFUywgc3RhdGUubmV4dEFjdGlvbigpKTsKIAogICAgIC8vIEJlZ2lu
IGFuIHVwZGF0ZS4KQEAgLTM5Miw3ICs0MDQsNyBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNo
aW5lVGVzdCwgVGVzdFVwZGF0ZXNfV2l0aFJlZHJhd19PbmVSb3VuZE9mVXBkYXRlcykKICAgICBz
dGF0ZS5kaWRMZWF2ZVZTeW5jKCk7CiAKICAgICAvLyBGaW5pc2ggdXBkYXRlIGJ1dCBsZWF2ZSBt
b3JlIHJlc291cmNlcyBwZW5kaW5nLgotICAgIHN0YXRlLmJlZ2luVXBkYXRlTW9yZVJlc291cmNl
c0NvbXBsZXRlKHRydWUpOworICAgIHN0YXRlLnVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZSh0
cnVlKTsKIAogICAgIC8vIFZlcmlmeSB0aGF0IHJlZ2FyZGxlc3Mgb2YgdnN5bmMsIHdlIHVwZGF0
ZSBzb21lIG1vcmUuCiAgICAgc3RhdGUuZGlkTGVhdmVWU3luYygpOwpAQCAtNDA2LDcgKzQxOCw3
IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0VXBkYXRlc19XaXRoUmVk
cmF3X09uZVJvdW5kT2ZVcGRhdGVzKQogICAgIHN0YXRlLmRpZEVudGVyVlN5bmMoKTsKICAgICBz
dGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX1VQ
REFURV9NT1JFX1JFU09VUkNFUyk7CiAgICAgc3RhdGUuZGlkTGVhdmVWU3luYygpOwotICAgIHN0
YXRlLmJlZ2luVXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRlKGZhbHNlKTsKKyAgICBzdGF0ZS51
cGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUoZmFsc2UpOwogCiAgICAgLy8gVmVyaWZ5IHdlIGNv
bW1pdCByZWdhcmRsZXNzIG9mIHZzeW5jIHN0YXRlCiAgICAgc3RhdGUuZGlkTGVhdmVWU3luYygp
OwpAQCAtNDI0LDcgKzQzNiwxMSBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwg
VGVzdFNldE5lZWRzQ29tbWl0SXNOb3RMb3N0KQogICAgIC8vIEJlZ2luIHRoZSBmcmFtZS4KICAg
ICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9GUkFNRSwg
c3RhdGUubmV4dEFjdGlvbigpKTsKICAgICBzdGF0ZS51cGRhdGVTdGF0ZShzdGF0ZS5uZXh0QWN0
aW9uKCkpOwotICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NU
QVRFX0ZSQU1FX0lOX1BST0dSRVNTLCBzdGF0ZS5jb21taXRTdGF0ZSgpKTsKKyAgICBFWFBFQ1Rf
RVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9VUERBVElOR19SRVNPVVJD
RVMsIHN0YXRlLmNvbW1pdFN0YXRlKCkpOworCisgICAgLy8gUmVjZWl2ZSByZXNvdXJjZSB0aGF0
IG5lZWQgdXBkYXRlLgorICAgIHN0YXRlLnNldFJlc291cmNlVXBkYXRlc1BlbmRpbmcodHJ1ZSk7
CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfVVBE
QVRJTkdfUkVTT1VSQ0VTLCBzdGF0ZS5jb21taXRTdGF0ZSgpKTsKIAogICAgIC8vIE5vdywgd2hp
bGUgdGhlIGZyYW1lIGlzIGluIHByb2dyZXNzLCBzZXQgYW5vdGhlciBjb21taXQuCiAgICAgc3Rh
dGUuc2V0TmVlZHNDb21taXQodHJ1ZSk7CkBAIC00MzYsNyArNDUyLDcgQEAgVEVTVChDQ1NjaGVk
dWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RTZXROZWVkc0NvbW1pdElzTm90TG9zdCkKICAgICBF
WFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9VUERBVEVfTU9S
RV9SRVNPVVJDRVMsIHN0YXRlLm5leHRBY3Rpb24oKSk7CiAgICAgc3RhdGUudXBkYXRlU3RhdGUo
Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9VUERBVEVfTU9SRV9SRVNPVVJD
RVMpOwogICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX05PTkUs
IHN0YXRlLm5leHRBY3Rpb24oKSk7Ci0gICAgc3RhdGUuYmVnaW5VcGRhdGVNb3JlUmVzb3VyY2Vz
Q29tcGxldGUoZmFsc2UpOworICAgIHN0YXRlLnVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZShm
YWxzZSk7CiAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RB
VEVfUkVBRFlfVE9fQ09NTUlULCBzdGF0ZS5jb21taXRTdGF0ZSgpKTsKIAogICAgIC8vIEV4cGVj
dCB0byBjb21taXQgcmVnYXJkbGVzcyBvZiB2c3luYyBzdGF0ZS4KQEAgLTQ2NywxMCArNDgzLDE0
IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0RnVsbEN5Y2xlKQogCiAg
ICAgLy8gQmVnaW4gdGhlIGZyYW1lLgogICAgIHN0YXRlLnVwZGF0ZVN0YXRlKENDU2NoZWR1bGVy
U3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fRlJBTUUpOwotICAgIEVYUEVDVF9FUShDQ1NjaGVk
dWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX0ZSQU1FX0lOX1BST0dSRVNTLCBzdGF0ZS5j
b21taXRTdGF0ZSgpKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNP
TU1JVF9TVEFURV9VUERBVElOR19SRVNPVVJDRVMsIHN0YXRlLmNvbW1pdFN0YXRlKCkpOwogICAg
IEVYUEVDVF9GQUxTRShzdGF0ZS5uZWVkc0NvbW1pdCgpKTsKICAgICBFWFBFQ1RfRVEoQ0NTY2hl
ZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9OT05FLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwogCisg
ICAgLy8gUmVjZWl2ZSByZXNvdXJjZS4KKyAgICBzdGF0ZS5zZXRSZXNvdXJjZVVwZGF0ZXNQZW5k
aW5nKHRydWUpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlU
X1NUQVRFX1VQREFUSU5HX1JFU09VUkNFUywgc3RhdGUuY29tbWl0U3RhdGUoKSk7CisKICAgICAv
LyBUZWxsIHRoZSBzY2hlZHVsZXIgdGhlIGZyYW1lIGZpbmlzaGVkLgogICAgIHN0YXRlLmJlZ2lu
RnJhbWVDb21wbGV0ZSgpOwogICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6
Q09NTUlUX1NUQVRFX1VQREFUSU5HX1JFU09VUkNFUywgc3RhdGUuY29tbWl0U3RhdGUoKSk7CkBA
IC00NzgsNyArNDk4LDcgQEAgVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RG
dWxsQ3ljbGUpCiAKICAgICAvLyBUZWxsIHRoZSBzY2hlZHVsZXIgdGhlIHVwZGF0ZSBiZWdhbiBh
bmQgZmluaXNoZWQKICAgICBzdGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGlu
ZTo6QUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUyk7Ci0gICAgc3RhdGUuYmVnaW5V
cGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUoZmFsc2UpOworICAgIHN0YXRlLnVwZGF0ZU1vcmVS
ZXNvdXJjZXNDb21wbGV0ZShmYWxzZSk7CiAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVN
YWNoaW5lOjpDT01NSVRfU1RBVEVfUkVBRFlfVE9fQ09NTUlULCBzdGF0ZS5jb21taXRTdGF0ZSgp
KTsKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9DT01NSVQs
IHN0YXRlLm5leHRBY3Rpb24oKSk7CiAKQEAgLTUxMyw3ICs1MzMsNyBAQCBURVNUKENDU2NoZWR1
bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdEZ1bGxDeWNsZVdpdGhDb21taXRSZXF1ZXN0SW5iZXR3
ZWVuKQogCiAgICAgLy8gQmVnaW4gdGhlIGZyYW1lLgogICAgIHN0YXRlLnVwZGF0ZVN0YXRlKEND
U2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fRlJBTUUpOwotICAgIEVYUEVDVF9F
UShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX0ZSQU1FX0lOX1BST0dSRVNT
LCBzdGF0ZS5jb21taXRTdGF0ZSgpKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1h
Y2hpbmU6OkNPTU1JVF9TVEFURV9VUERBVElOR19SRVNPVVJDRVMsIHN0YXRlLmNvbW1pdFN0YXRl
KCkpOwogICAgIEVYUEVDVF9GQUxTRShzdGF0ZS5uZWVkc0NvbW1pdCgpKTsKICAgICBFWFBFQ1Rf
RVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9OT05FLCBzdGF0ZS5uZXh0QWN0aW9u
KCkpOwogCkBAIC01MjEsNiArNTQxLDEwIEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVU
ZXN0LCBUZXN0RnVsbEN5Y2xlV2l0aENvbW1pdFJlcXVlc3RJbmJldHdlZW4pCiAgICAgc3RhdGUu
c2V0TmVlZHNDb21taXQodHJ1ZSk7CiAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNo
aW5lOjpBQ1RJT05fTk9ORSwgc3RhdGUubmV4dEFjdGlvbigpKTsKIAorICAgIC8vIFJlY2VpdmUg
cmVzb3VyY2UuCisgICAgc3RhdGUuc2V0UmVzb3VyY2VVcGRhdGVzUGVuZGluZyh0cnVlKTsKKyAg
ICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9VUERBVElO
R19SRVNPVVJDRVMsIHN0YXRlLmNvbW1pdFN0YXRlKCkpOworCiAgICAgLy8gVGVsbCB0aGUgc2No
ZWR1bGVyIHRoZSBmcmFtZSBmaW5pc2hlZC4KICAgICBzdGF0ZS5iZWdpbkZyYW1lQ29tcGxldGUo
KTsKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9V
UERBVElOR19SRVNPVVJDRVMsIHN0YXRlLmNvbW1pdFN0YXRlKCkpOwpAQCAtNTI4LDcgKzU1Miw3
IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0RnVsbEN5Y2xlV2l0aENv
bW1pdFJlcXVlc3RJbmJldHdlZW4pCiAKICAgICAvLyBUZWxsIHRoZSBzY2hlZHVsZXIgdGhlIHVw
ZGF0ZSBiZWdhbiBhbmQgZmluaXNoZWQKICAgICBzdGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxl
clN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUyk7Ci0gICAg
c3RhdGUuYmVnaW5VcGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUoZmFsc2UpOworICAgIHN0YXRl
LnVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZShmYWxzZSk7CiAgICAgRVhQRUNUX0VRKENDU2No
ZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfUkVBRFlfVE9fQ09NTUlULCBzdGF0ZS5j
b21taXRTdGF0ZSgpKTsKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFD
VElPTl9DT01NSVQsIHN0YXRlLm5leHRBY3Rpb24oKSk7CiAKQEAgLTU3MCwxMyArNTk0LDE3IEBA
IFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0R29lc0ludmlzaWJsZU1pZENv
bW1pdCkKIAogICAgIC8vIEJlZ2luIHRoZSBmcmFtZSB3aGlsZSB2aXNpYmxlLgogICAgIHN0YXRl
LnVwZGF0ZVN0YXRlKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fRlJBTUUp
OwotICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX0ZS
QU1FX0lOX1BST0dSRVNTLCBzdGF0ZS5jb21taXRTdGF0ZSgpKTsKKyAgICBFWFBFQ1RfRVEoQ0NT
Y2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9VUERBVElOR19SRVNPVVJDRVMsIHN0
YXRlLmNvbW1pdFN0YXRlKCkpOwogICAgIEVYUEVDVF9GQUxTRShzdGF0ZS5uZWVkc0NvbW1pdCgp
KTsKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9OT05FLCBz
dGF0ZS5uZXh0QWN0aW9uKCkpOwogCiAgICAgLy8gQmVjb21lIGludmlzaWJsZQogICAgIHN0YXRl
LnNldFZpc2libGUoZmFsc2UpOwogCisgICAgLy8gUmVjZWl2ZSByZXNvdXJjZS4KKyAgICBzdGF0
ZS5zZXRSZXNvdXJjZVVwZGF0ZXNQZW5kaW5nKHRydWUpOworICAgIEVYUEVDVF9FUShDQ1NjaGVk
dWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX1VQREFUSU5HX1JFU09VUkNFUywgc3RhdGUu
Y29tbWl0U3RhdGUoKSk7CisKICAgICAvLyBUZWxsIHRoZSBzY2hlZHVsZXIgdGhlIGZyYW1lIGZp
bmlzaGVkCiAgICAgc3RhdGUuYmVnaW5GcmFtZUNvbXBsZXRlKCk7CiAgICAgRVhQRUNUX0VRKEND
U2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfVVBEQVRJTkdfUkVTT1VSQ0VTLCBz
dGF0ZS5jb21taXRTdGF0ZSgpKTsKQEAgLTU4NCw3ICs2MTIsNyBAQCBURVNUKENDU2NoZWR1bGVy
U3RhdGVNYWNoaW5lVGVzdCwgVGVzdEdvZXNJbnZpc2libGVNaWRDb21taXQpCiAKICAgICAvLyBU
ZWxsIHRoZSBzY2hlZHVsZXIgdGhlIHVwZGF0ZSBiZWdhbiBhbmQgZmluaXNoZWQKICAgICBzdGF0
ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX1VQREFU
RV9NT1JFX1JFU09VUkNFUyk7Ci0gICAgc3RhdGUuYmVnaW5VcGRhdGVNb3JlUmVzb3VyY2VzQ29t
cGxldGUoZmFsc2UpOworICAgIHN0YXRlLnVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZShmYWxz
ZSk7CiAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVf
UkVBRFlfVE9fQ09NTUlULCBzdGF0ZS5jb21taXRTdGF0ZSgpKTsKICAgICBFWFBFQ1RfRVEoQ0NT
Y2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9DT01NSVQsIHN0YXRlLm5leHRBY3Rpb24oKSk7
CiAKQEAgLTYwNCw0ICs2MzIsNjUgQEAgVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3Qs
IFRlc3RHb2VzSW52aXNpYmxlTWlkQ29tbWl0KQogICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0
YXRlTWFjaGluZTo6QUNUSU9OX05PTkUsIHN0YXRlLm5leHRBY3Rpb24oKSk7CiB9CiAKK1RFU1Qo
Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0Tm9SZXNvdXJjZVVwZGF0ZXMpCit7Cisg
ICAgU3RhdGVNYWNoaW5lIHN0YXRlOworICAgIHN0YXRlLnNldFZpc2libGUodHJ1ZSk7CisKKyAg
ICAvLyBTdGFydCBjbGVhbiBhbmQgc2V0IGNvbW1pdC4KKyAgICBzdGF0ZS5zZXROZWVkc0NvbW1p
dCh0cnVlKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9C
RUdJTl9GUkFNRSwgc3RhdGUubmV4dEFjdGlvbigpKTsKKworICAgIC8vIEJlZ2luIHRoZSBmcmFt
ZS4KKyAgICBzdGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9O
X0JFR0lOX0ZSQU1FKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNP
TU1JVF9TVEFURV9VUERBVElOR19SRVNPVVJDRVMsIHN0YXRlLmNvbW1pdFN0YXRlKCkpOworICAg
IEVYUEVDVF9GQUxTRShzdGF0ZS5uZWVkc0NvbW1pdCgpKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hl
ZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9OT05FLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworCisg
ICAgLy8gVGVsbCB0aGUgc2NoZWR1bGVyIHRoZSBmcmFtZSBmaW5pc2hlZC4KKyAgICBzdGF0ZS5i
ZWdpbkZyYW1lQ29tcGxldGUoKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hp
bmU6OkNPTU1JVF9TVEFURV9SRUFEWV9UT19DT01NSVQsIHN0YXRlLmNvbW1pdFN0YXRlKCkpOwor
ICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0NPTU1JVCwgc3Rh
dGUubmV4dEFjdGlvbigpKTsKK30KKworVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3Qs
IFRlc3ROb1Jlc291cmNlUGVuZGluZykKK3sKKyAgICBTdGF0ZU1hY2hpbmUgc3RhdGU7CisgICAg
c3RhdGUuc2V0VmlzaWJsZSh0cnVlKTsKKworICAgIC8vIFN0YXJ0IGNsZWFuIGFuZCBzZXQgY29t
bWl0LgorICAgIHN0YXRlLnNldE5lZWRzQ29tbWl0KHRydWUpOworICAgIEVYUEVDVF9FUShDQ1Nj
aGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX0ZSQU1FLCBzdGF0ZS5uZXh0QWN0aW9u
KCkpOworCisgICAgLy8gQmVnaW4gdGhlIGZyYW1lLgorICAgIHN0YXRlLnVwZGF0ZVN0YXRlKEND
U2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fRlJBTUUpOworICAgIEVYUEVDVF9F
UShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX1VQREFUSU5HX1JFU09VUkNF
Uywgc3RhdGUuY29tbWl0U3RhdGUoKSk7CisgICAgRVhQRUNUX0ZBTFNFKHN0YXRlLm5lZWRzQ29t
bWl0KCkpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX05P
TkUsIHN0YXRlLm5leHRBY3Rpb24oKSk7CisKKyAgICAvLyBSZWNlaXZlIHJlc291cmNlLgorICAg
IHN0YXRlLnNldFJlc291cmNlVXBkYXRlc1BlbmRpbmcodHJ1ZSk7CisgICAgRVhQRUNUX0VRKEND
U2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfVVBEQVRJTkdfUkVTT1VSQ0VTLCBz
dGF0ZS5jb21taXRTdGF0ZSgpKTsKKworICAgIC8vIFRlbGwgdGhlIHNjaGVkdWxlciB0aGUgdXBk
YXRlIGJlZ2FuIGFuZCBmaW5pc2hlZC4KKyAgICBzdGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxl
clN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUyk7CisgICAg
RVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfVVBEQVRJTkdf
UkVTT1VSQ0VTLCBzdGF0ZS5jb21taXRTdGF0ZSgpKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVs
ZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9OT05FLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworICAgIHN0
YXRlLnVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZSh0cnVlKTsKKworICAgIC8vIFRlbGwgdGhl
IHNjaGVkdWxlciBhbm90aGVyIHVwZGF0ZSBiZWdhbiBhbmQgZmluaXNoZWQuCisgICAgRVhQRUNU
X0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fVVBEQVRFX01PUkVfUkVT
T1VSQ0VTLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworICAgIHN0YXRlLnVwZGF0ZVN0YXRlKENDU2No
ZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fVVBEQVRFX01PUkVfUkVTT1VSQ0VTKTsK
KyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9OT05FLCBzdGF0
ZS5uZXh0QWN0aW9uKCkpOworICAgIHN0YXRlLnVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZShm
YWxzZSk7CisKKyAgICAvLyBObyBwZW5kaW5nIHJlc291cmNlcyB0byB1cGRhdGUuCisgICAgRVhQ
RUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fTk9ORSwgc3RhdGUubmV4dEFj
dGlvbigpKTsKKworICAgIC8vIFRlbGwgdGhlIHNjaGVkdWxlciB0aGUgZnJhbWUgZmluaXNoZWQu
CisgICAgc3RhdGUuYmVnaW5GcmFtZUNvbXBsZXRlKCk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1
bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfUkVBRFlfVE9fQ09NTUlULCBzdGF0ZS5jb21t
aXRTdGF0ZSgpKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElP
Tl9DT01NSVQsIHN0YXRlLm5leHRBY3Rpb24oKSk7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NTY2hlZHVsZXJUZXN0LmNwcCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvQ0NTY2hlZHVsZXJUZXN0LmNwcAppbmRleCA0NzU5ODdmLi42MDU5
NTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDU2NoZWR1bGVy
VGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1NjaGVkdWxlclRl
c3QuY3BwCkBAIC04MSwxMyArODEsMTAgQEAgVEVTVChDQ1NjaGVkdWxlclRlc3QsIFJlcXVlc3RD
b21taXQpCiAgICAgY2xpZW50LnJlc2V0KCk7CiAKICAgICAvLyBTaW5jZSwgaGFzTW9yZVJlc291
cmNlVXBkYXRlcyBpcyBzZXQgdG8gZmFsc2UsCi0gICAgLy8gYmVnaW5GcmFtZUNvbXBsZXRlIHNo
b3VsZCB1cGRhdGVNb3JlUmVzb3VyY2VzLCB0aGVuCi0gICAgLy8gY29tbWl0CisgICAgLy8gYmVn
aW5GcmFtZUNvbXBsZXRlIHNob3VsZCBjb21taXQgaW1tZWRpYXRlbHkuCiAgICAgc2NoZWR1bGVy
LT5iZWdpbkZyYW1lQ29tcGxldGUoKTsKLSAgICBFWFBFQ1RfRVEoMiwgY2xpZW50Lm51bUFjdGlv
bnMoKSk7Ci0gICAgRVhQRUNUX1NUUkVRKCJzY2hlZHVsZWRBY3Rpb25VcGRhdGVNb3JlUmVzb3Vy
Y2VzIiwgY2xpZW50LmFjdGlvbigwKSk7Ci0gICAgRVhQRUNUX1NUUkVRKCJzY2hlZHVsZWRBY3Rp
b25Db21taXQiLCBjbGllbnQuYWN0aW9uKDEpKTsKLSAgICBFWFBFQ1RfVFJVRSh0aW1lU291cmNl
LT5hY3RpdmUoKSk7CisgICAgRVhQRUNUX0VRKDEsIGNsaWVudC5udW1BY3Rpb25zKCkpOworICAg
IEVYUEVDVF9TVFJFUSgic2NoZWR1bGVkQWN0aW9uQ29tbWl0IiwgY2xpZW50LmFjdGlvbigwKSk7
CiAgICAgY2xpZW50LnJlc2V0KCk7CiAKICAgICAvLyBUaWNrIHNob3VsZCBkcmF3LgpAQCAtMTE4
LDEyICsxMTUsMTAgQEAgVEVTVChDQ1NjaGVkdWxlclRlc3QsIFJlcXVlc3RDb21taXRBZnRlckJl
Z2luRnJhbWUpCiAgICAgc2NoZWR1bGVyLT5zZXROZWVkc0NvbW1pdCgpOwogCiAgICAgLy8gU2lu
Y2UsIGhhc01vcmVSZXNvdXJjZVVwZGF0ZXMgaXMgc2V0IHRvIGZhbHNlLCBhbmQgYW5vdGhlciBj
b21taXQgaXMKLSAgICAvLyBuZWVkZWQsIGJlZ2luRnJhbWVDb21wbGV0ZSBzaG91bGQgdXBkYXRl
TW9yZVJlc291cmNlcywgdGhlbiBjb21taXQsIHRoZW4KLSAgICAvLyBiZWdpbiBhbm90aGVyIGZy
YW1lLgorICAgIC8vIG5lZWRlZCwgYmVnaW5GcmFtZUNvbXBsZXRlIHNob3VsZCBjb21taXQsIHRo
ZW4gYmVnaW4gYW5vdGhlciBmcmFtZS4KICAgICBzY2hlZHVsZXItPmJlZ2luRnJhbWVDb21wbGV0
ZSgpOwotICAgIEVYUEVDVF9FUSgyLCBjbGllbnQubnVtQWN0aW9ucygpKTsKLSAgICBFWFBFQ1Rf
U1RSRVEoInNjaGVkdWxlZEFjdGlvblVwZGF0ZU1vcmVSZXNvdXJjZXMiLCBjbGllbnQuYWN0aW9u
KDApKTsKLSAgICBFWFBFQ1RfU1RSRVEoInNjaGVkdWxlZEFjdGlvbkNvbW1pdCIsIGNsaWVudC5h
Y3Rpb24oMSkpOworICAgIEVYUEVDVF9FUSgxLCBjbGllbnQubnVtQWN0aW9ucygpKTsKKyAgICBF
WFBFQ1RfU1RSRVEoInNjaGVkdWxlZEFjdGlvbkNvbW1pdCIsIGNsaWVudC5hY3Rpb24oMCkpOwog
ICAgIGNsaWVudC5yZXNldCgpOwogCiAgICAgLy8gVGljayBzaG91bGQgZHJhdyBidXQgdGhlbiBi
ZWdpbiBhbm90aGVyIGZyYW1lLgpAQCAtMjQ4LDQgKzI0Myw1OCBAQCBURVNUKENDU2NoZWR1bGVy
VGVzdCwgUmVxdWVzdENvbW1pdEluc2lkZURyYXcpCiAgICAgRVhQRUNUX0ZBTFNFKHNjaGVkdWxl
ci0+cmVkcmF3UGVuZGluZygpKTsKIH0KIAorY2xhc3MgU2NoZWR1bGVyQ2xpZW50VGhhdFBlcmZv
cm1zVHdvUmVzb3VyY2VVcGRhdGVzIDogcHVibGljIEZha2VDQ1NjaGVkdWxlckNsaWVudCB7Citw
dWJsaWM6CisgICAgU2NoZWR1bGVyQ2xpZW50VGhhdFBlcmZvcm1zVHdvUmVzb3VyY2VVcGRhdGVz
KCkKKyAgICAgICAgOiBGYWtlQ0NTY2hlZHVsZXJDbGllbnQoKQorICAgICAgICAsIG1fbnVtVXBk
YXRlcygyKSB7IH0KKworICAgIHZvaWQgcmVzZXQoKSB7IG1fYWN0aW9ucy5jbGVhcigpOyB9Cisg
ICAgdmlydHVhbCBib29sIGhhc01vcmVSZXNvdXJjZVVwZGF0ZXMoKSBjb25zdCB7IHJldHVybiAh
IW1fbnVtVXBkYXRlczsgfQorICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZWRBY3Rpb25VcGRhdGVN
b3JlUmVzb3VyY2VzKCkKKyAgICB7CisgICAgICAgIEZha2VDQ1NjaGVkdWxlckNsaWVudDo6c2No
ZWR1bGVkQWN0aW9uVXBkYXRlTW9yZVJlc291cmNlcygpOworICAgICAgICBtX251bVVwZGF0ZXMt
LTsKKyAgICB9CisKK3Byb3RlY3RlZDoKKyAgICBpbnQgbV9udW1VcGRhdGVzOworfTsKKworVEVT
VChDQ1NjaGVkdWxlclRlc3QsIFVwZGF0ZVJlc291cmNlcykKK3sKKyAgICBTY2hlZHVsZXJDbGll
bnRUaGF0UGVyZm9ybXNUd29SZXNvdXJjZVVwZGF0ZXMgY2xpZW50OworICAgIFJlZlB0cjxGYWtl
Q0NUaW1lU291cmNlPiB0aW1lU291cmNlID0gYWRvcHRSZWYobmV3IEZha2VDQ1RpbWVTb3VyY2Uo
KSk7CisgICAgT3duUHRyPENDU2NoZWR1bGVyPiBzY2hlZHVsZXIgPSBDQ1NjaGVkdWxlcjo6Y3Jl
YXRlKCZjbGllbnQsIGFkb3B0UHRyKG5ldyBDQ0ZyYW1lUmF0ZUNvbnRyb2xsZXIodGltZVNvdXJj
ZSkpKTsKKyAgICBzY2hlZHVsZXItPnNldFZpc2libGUodHJ1ZSk7CisKKyAgICAvLyBTZXROZWVk
c0NvbW1pdCBzaG91bGQgYmVnaW4gdGhlIGZyYW1lLgorICAgIHNjaGVkdWxlci0+c2V0TmVlZHND
b21taXQoKTsKKyAgICBFWFBFQ1RfRVEoMSwgY2xpZW50Lm51bUFjdGlvbnMoKSk7CisgICAgRVhQ
RUNUX1NUUkVRKCJzY2hlZHVsZWRBY3Rpb25CZWdpbkZyYW1lIiwgY2xpZW50LmFjdGlvbigwKSk7
CisgICAgY2xpZW50LnJlc2V0KCk7CisKKyAgICAvLyBOb3cgc2V0TmVlZHNDb21taXQgYWdhaW4u
IENhbGxpbmcgaGVyZSBtZWFucyB3ZSBuZWVkIGEgc2Vjb25kIGZyYW1lLgorICAgIHNjaGVkdWxl
ci0+c2V0TmVlZHNDb21taXQoKTsKKworICAgIC8vIFVwZGF0ZSBwZW5kaW5nIHJlc291cmNlcy4K
KyAgICBzY2hlZHVsZXItPnNldFJlc291cmNlVXBkYXRlc1BlbmRpbmcoKTsKKyAgICBFWFBFQ1Rf
RVEoMiwgY2xpZW50Lm51bUFjdGlvbnMoKSk7CisgICAgRVhQRUNUX1NUUkVRKCJzY2hlZHVsZWRB
Y3Rpb25VcGRhdGVNb3JlUmVzb3VyY2VzIiwgY2xpZW50LmFjdGlvbigwKSk7CisgICAgRVhQRUNU
X1NUUkVRKCJzY2hlZHVsZWRBY3Rpb25VcGRhdGVNb3JlUmVzb3VyY2VzIiwgY2xpZW50LmFjdGlv
bigxKSk7CisgICAgY2xpZW50LnJlc2V0KCk7CisKKyAgICBzY2hlZHVsZXItPmJlZ2luRnJhbWVD
b21wbGV0ZSgpOworICAgIEVYUEVDVF9FUSgxLCBjbGllbnQubnVtQWN0aW9ucygpKTsKKyAgICBF
WFBFQ1RfU1RSRVEoInNjaGVkdWxlZEFjdGlvbkNvbW1pdCIsIGNsaWVudC5hY3Rpb24oMCkpOwor
ICAgIGNsaWVudC5yZXNldCgpOworCisgICAgdGltZVNvdXJjZS0+dGljaygpOworICAgIEVYUEVD
VF9FUSgyLCBjbGllbnQubnVtQWN0aW9ucygpKTsKKyAgICBFWFBFQ1RfU1RSRVEoInNjaGVkdWxl
ZEFjdGlvbkRyYXdBbmRTd2FwIiwgY2xpZW50LmFjdGlvbigwKSk7CisgICAgRVhQRUNUX1NUUkVR
KCJzY2hlZHVsZWRBY3Rpb25CZWdpbkZyYW1lIiwgY2xpZW50LmFjdGlvbigxKSk7CisgICAgY2xp
ZW50LnJlc2V0KCk7Cit9CisKKwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123888</attachid>
            <date>2012-01-24 23:23:27 -0800</date>
            <delta_ts>2012-02-03 13:01:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>threaded-parallel-upload.diff</filename>
            <type>text/plain</type>
            <size>27755</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDU2NoZWR1bGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDU2NoZWR1bGVyLmNwcAppbmRleCA4NTgwNDY3Li5jM2FiM2FmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NTY2hlZHVsZXIuY3BwCkBAIC02OCw2ICs2OCwxMiBAQCB2b2lkIENDU2NoZWR1bGVyOjpzZXRO
ZWVkc0ZvcmNlZFJlZHJhdygpCiAgICAgcHJvY2Vzc1NjaGVkdWxlZEFjdGlvbnMoKTsKIH0KIAor
dm9pZCBDQ1NjaGVkdWxlcjo6c2V0UmVzb3VyY2VVcGRhdGVzUGVuZGluZygpCit7CisgICAgbV9z
dGF0ZU1hY2hpbmUuc2V0UmVzb3VyY2VVcGRhdGVzUGVuZGluZygpOworICAgIHByb2Nlc3NTY2hl
ZHVsZWRBY3Rpb25zKCk7Cit9CisKIHZvaWQgQ0NTY2hlZHVsZXI6OmJlZ2luRnJhbWVDb21wbGV0
ZSgpCiB7CiAgICAgVFJBQ0VfRVZFTlQoIkNDU2NoZWR1bGVyOjpiZWdpbkZyYW1lQ29tcGxldGUi
LCB0aGlzLCAwKTsKQEAgLTk2LDcgKzEwMiw3IEBAIHZvaWQgQ0NTY2hlZHVsZXI6OmJlZ2luRnJh
bWUoKQogewogICAgIGlmIChtX3VwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nKSB7CiAgICAgICAg
IG1fdXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmcgPSBmYWxzZTsKLSAgICAgICAgbV9zdGF0ZU1h
Y2hpbmUuYmVnaW5VcGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUobV9jbGllbnQtPmhhc01vcmVS
ZXNvdXJjZVVwZGF0ZXMoKSk7CisgICAgICAgIG1fc3RhdGVNYWNoaW5lLnVwZGF0ZU1vcmVSZXNv
dXJjZXNDb21wbGV0ZShtX2NsaWVudC0+aGFzTW9yZVJlc291cmNlVXBkYXRlcygpKTsKICAgICB9
CiAgICAgVFJBQ0VfRVZFTlQoIkNDU2NoZWR1bGVyOjpiZWdpbkZyYW1lIiwgdGhpcywgMCk7CiAK
QEAgLTEzMywxNiArMTM5LDEzIEBAIHZvaWQgQ0NTY2hlZHVsZXI6OnByb2Nlc3NTY2hlZHVsZWRB
Y3Rpb25zKCkKICAgICAgICAgICAgIG1fY2xpZW50LT5zY2hlZHVsZWRBY3Rpb25CZWdpbkZyYW1l
KCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDQ1NjaGVkdWxlclN0YXRlTWFj
aGluZTo6QUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUzoKKyAgICAgICAgICAgIEFT
U0VSVChtX2NsaWVudC0+aGFzTW9yZVJlc291cmNlVXBkYXRlcygpKTsKICAgICAgICAgICAgIG1f
Y2xpZW50LT5zY2hlZHVsZWRBY3Rpb25VcGRhdGVNb3JlUmVzb3VyY2VzKCk7Ci0gICAgICAgICAg
ICBpZiAoIW1fY2xpZW50LT5oYXNNb3JlUmVzb3VyY2VVcGRhdGVzKCkpIHsKLSAgICAgICAgICAg
ICAgICAvLyBJZiB3ZSB3ZXJlIGp1c3QgdG9sZCB0byB1cGRhdGUgcmVzb3VyY2VzLCBidXQgdGhl
cmUgYXJlIG5vCi0gICAgICAgICAgICAgICAgLy8gbW9yZSBwZW5kaW5nLCB0aGVuIHRlbGwgdGhl
IHN0YXRlIG1hY2hpbmUgdGhhdCB0aGUKLSAgICAgICAgICAgICAgICAvLyBiZWdpblVwZGF0ZU1v
cmVSZXNvdXJjZXMgY29tcGxldGVkLiBJZiBtb3JlIGFyZSBwZW5kaW5nLAotICAgICAgICAgICAg
ICAgIC8vIHRoZW4gd2Ugd2lsbCBhY2sgdGhlIHVwZGF0ZSBhdCB0aGUgbmV4dCBkcmF3LgotICAg
ICAgICAgICAgICAgIG1fdXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmcgPSBmYWxzZTsKLSAgICAg
ICAgICAgICAgICBtX3N0YXRlTWFjaGluZS5iZWdpblVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0
ZShmYWxzZSk7Ci0gICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBtX3VwZGF0ZU1v
cmVSZXNvdXJjZXNQZW5kaW5nID0gdHJ1ZTsKKyAgICAgICAgICAgIC8vIElmIHdlIHdlcmUganVz
dCB0b2xkIHRvIHVwZGF0ZSByZXNvdXJjZXMsIHRlbGwgdGhlIHN0YXRlCisgICAgICAgICAgICAv
LyBtYWNoaW5lIHRoYXQgdGhlIGJlZ2luVXBkYXRlTW9yZVJlc291cmNlcyBjb21wbGV0ZWQgYW5k
IGlmCisgICAgICAgICAgICAvLyBtb3JlIGFyZSBwZW5kaW5nLgorICAgICAgICAgICAgbV91cGRh
dGVNb3JlUmVzb3VyY2VzUGVuZGluZyA9IG1fY2xpZW50LT5oYXNNb3JlUmVzb3VyY2VVcGRhdGVz
KCk7CisgICAgICAgICAgICBtX3N0YXRlTWFjaGluZS51cGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxl
dGUobV91cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZyk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgY2FzZSBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0NPTU1JVDoKICAgICAg
ICAgICAgIG1fY2xpZW50LT5zY2hlZHVsZWRBY3Rpb25Db21taXQoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxl
ci5oCmluZGV4IDczMTA1ODEuLjc3MjA0M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXIuaApAQCAtNjcs
OCArNjcsOCBAQCBwdWJsaWM6CiAgICAgLy8gQXMgc2V0TmVlZHNSZWRyYXcoKSwgYnV0IGVuc3Vy
ZXMgdGhlIGRyYXcgd2lsbCBkZWZpbml0ZWx5IGhhcHBlbiBldmVuIGlmIHdlIGFyZSBub3Qgdmlz
aWJsZS4KICAgICB2b2lkIHNldE5lZWRzRm9yY2VkUmVkcmF3KCk7CiAKKyAgICB2b2lkIHNldFJl
c291cmNlVXBkYXRlc1BlbmRpbmcoKTsKICAgICB2b2lkIGJlZ2luRnJhbWVDb21wbGV0ZSgpOwot
CiAgICAgdm9pZCBzZXRNYXhGcmFtZXNQZW5kaW5nKGludCk7CiAgICAgdm9pZCBkaWRTd2FwQnVm
ZmVyc0NvbXBsZXRlKCk7CiAgICAgdm9pZCBkaWRTd2FwQnVmZmVyc0Fib3J0KCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVk
dWxlclN0YXRlTWFjaGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZS5jcHAKaW5kZXggZDFhYTVjYy4uYTQ5
NzA3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lLmNwcApA
QCAtMzgsNyArMzgsOSBAQCBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q0NTY2hlZHVsZXJTdGF0
ZU1hY2hpbmUoKQogICAgICwgbV91cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZyhmYWxzZSkKICAg
ICAsIG1faW5zaWRlVlN5bmMoZmFsc2UpCiAgICAgLCBtX3Zpc2libGUoZmFsc2UpCi0gICAgLCBt
X2NhbkRyYXcodHJ1ZSkgeyB9CisgICAgLCBtX2NhbkRyYXcodHJ1ZSkKKyAgICAsIG1fcmVzb3Vy
Y2VVcGRhdGVzUGVuZGluZyhmYWxzZSkKKyAgICAsIG1fZnJhbWVDb21wbGV0ZShmYWxzZSkgeyB9
CiAKIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBY3Rpb24gQ0NTY2hlZHVsZXJTdGF0ZU1hY2hp
bmU6Om5leHRBY3Rpb24oKSBjb25zdAogewpAQCAtNTIsMTUgKzU0LDEwIEBAIENDU2NoZWR1bGVy
U3RhdGVNYWNoaW5lOjpBY3Rpb24gQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6Om5leHRBY3Rpb24o
KSBjb25zdAogICAgICAgICAgICAgcmV0dXJuIEFDVElPTl9CRUdJTl9GUkFNRTsKICAgICAgICAg
cmV0dXJuIEFDVElPTl9OT05FOwogCi0gICAgY2FzZSBDT01NSVRfU1RBVEVfRlJBTUVfSU5fUFJP
R1JFU1M6Ci0gICAgICAgIGlmIChzaG91bGREcmF3KQotICAgICAgICAgICAgcmV0dXJuIEFDVElP
Tl9EUkFXOwotICAgICAgICByZXR1cm4gQUNUSU9OX05PTkU7Ci0KICAgICBjYXNlIENPTU1JVF9T
VEFURV9VUERBVElOR19SRVNPVVJDRVM6CiAgICAgICAgIGlmIChzaG91bGREcmF3KQogICAgICAg
ICAgICAgcmV0dXJuIEFDVElPTl9EUkFXOwotICAgICAgICBpZiAoIW1fdXBkYXRlTW9yZVJlc291
cmNlc1BlbmRpbmcpCisgICAgICAgIGlmICghbV91cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZyAm
JiBtX3Jlc291cmNlVXBkYXRlc1BlbmRpbmcpCiAgICAgICAgICAgICByZXR1cm4gQUNUSU9OX0JF
R0lOX1VQREFURV9NT1JFX1JFU09VUkNFUzsKICAgICAgICAgcmV0dXJuIEFDVElPTl9OT05FOwog
CkBAIC04OCw4ICs4NSwxMCBAQCB2b2lkIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjp1cGRhdGVT
dGF0ZShBY3Rpb24gYWN0aW9uKQogCiAgICAgY2FzZSBBQ1RJT05fQkVHSU5fRlJBTUU6CiAgICAg
ICAgIEFTU0VSVChtX3Zpc2libGUpOwotICAgICAgICBtX2NvbW1pdFN0YXRlID0gQ09NTUlUX1NU
QVRFX0ZSQU1FX0lOX1BST0dSRVNTOworICAgICAgICBBU1NFUlQoIW1fcmVzb3VyY2VVcGRhdGVz
UGVuZGluZyk7CisgICAgICAgIG1fY29tbWl0U3RhdGUgPSBDT01NSVRfU1RBVEVfVVBEQVRJTkdf
UkVTT1VSQ0VTOwogICAgICAgICBtX25lZWRzQ29tbWl0ID0gZmFsc2U7CisgICAgICAgIG1fZnJh
bWVDb21wbGV0ZSA9IGZhbHNlOwogICAgICAgICByZXR1cm47CiAKICAgICBjYXNlIEFDVElPTl9C
RUdJTl9VUERBVEVfTU9SRV9SRVNPVVJDRVM6CkBAIC0xNjEsMTggKzE2MCwyNiBAQCB2b2lkIEND
U2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpzZXROZWVkc0NvbW1pdCgpCiAgICAgbV9uZWVkc0NvbW1p
dCA9IHRydWU7CiB9CiAKK3ZvaWQgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OnNldFJlc291cmNl
VXBkYXRlc1BlbmRpbmcoKQoreworICAgIG1fcmVzb3VyY2VVcGRhdGVzUGVuZGluZyA9IHRydWU7
Cit9CisKIHZvaWQgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OmJlZ2luRnJhbWVDb21wbGV0ZSgp
CiB7Ci0gICAgQVNTRVJUKG1fY29tbWl0U3RhdGUgPT0gQ09NTUlUX1NUQVRFX0ZSQU1FX0lOX1BS
T0dSRVNTKTsKLSAgICBtX2NvbW1pdFN0YXRlID0gQ09NTUlUX1NUQVRFX1VQREFUSU5HX1JFU09V
UkNFUzsKKyAgICBBU1NFUlQobV9jb21taXRTdGF0ZSA9PSBDT01NSVRfU1RBVEVfVVBEQVRJTkdf
UkVTT1VSQ0VTKTsKKyAgICBtX2ZyYW1lQ29tcGxldGUgPSB0cnVlOworICAgIGlmICghbV91cGRh
dGVNb3JlUmVzb3VyY2VzUGVuZGluZyAmJiAhbV9yZXNvdXJjZVVwZGF0ZXNQZW5kaW5nKQorICAg
ICAgICBtX2NvbW1pdFN0YXRlID0gQ09NTUlUX1NUQVRFX1JFQURZX1RPX0NPTU1JVDsKIH0KIAot
dm9pZCBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6YmVnaW5VcGRhdGVNb3JlUmVzb3VyY2VzQ29t
cGxldGUoYm9vbCBtb3JlUGVuZGluZykKK3ZvaWQgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OnVw
ZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZShib29sIG1vcmVQZW5kaW5nKQogewogICAgIEFTU0VS
VChtX2NvbW1pdFN0YXRlID09IENPTU1JVF9TVEFURV9VUERBVElOR19SRVNPVVJDRVMpOwogICAg
IEFTU0VSVChtX3VwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nKTsKICAgICBtX3VwZGF0ZU1vcmVS
ZXNvdXJjZXNQZW5kaW5nID0gZmFsc2U7Ci0gICAgaWYgKCFtb3JlUGVuZGluZykKKyAgICBtX3Jl
c291cmNlVXBkYXRlc1BlbmRpbmcgPSBtb3JlUGVuZGluZzsKKyAgICBpZiAoIW1vcmVQZW5kaW5n
ICYmIG1fZnJhbWVDb21wbGV0ZSkKICAgICAgICAgbV9jb21taXRTdGF0ZSA9IENPTU1JVF9TVEFU
RV9SRUFEWV9UT19DT01NSVQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlclN0YXRl
TWFjaGluZS5oCmluZGV4IDdkZTcxODguLmNhODMxMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5l
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NT
Y2hlZHVsZXJTdGF0ZU1hY2hpbmUuaApAQCAtNDUsNyArNDUsNiBAQCBwdWJsaWM6CiAKICAgICBl
bnVtIENvbW1pdFN0YXRlIHsKICAgICAgICAgQ09NTUlUX1NUQVRFX0lETEUsCi0gICAgICAgIENP
TU1JVF9TVEFURV9GUkFNRV9JTl9QUk9HUkVTUywKICAgICAgICAgQ09NTUlUX1NUQVRFX1VQREFU
SU5HX1JFU09VUkNFUywKICAgICAgICAgQ09NTUlUX1NUQVRFX1JFQURZX1RPX0NPTU1JVCwKICAg
ICAgICAgQ09NTUlUX1NUQVRFX1dBSVRJTkdfRk9SX0ZJUlNUX0RSQVcsCkBAIC05MywxNCArOTIs
MTcgQEAgcHVibGljOgogICAgIC8vIHRocmVhZCB0byBtYWluLgogICAgIHZvaWQgc2V0TmVlZHND
b21taXQoKTsKIAorICAgIC8vIEluZGljYXRlcyB0aGF0IGNvbXBvc2l0b3IgcmVzb3VyY2VzIHRo
YXQgbmVlZCB1cGRhdGluZyBhcmUgcGVuZGluZy4KKyAgICB2b2lkIHNldFJlc291cmNlVXBkYXRl
c1BlbmRpbmcoKTsKKwogICAgIC8vIENhbGwgdGhpcyBvbmx5IGluIHJlc3BvbnNlIHRvIHJlY2Vp
dmluZyBhbiBBQ1RJT05fQkVHSU5fRlJBTUUKICAgICAvLyBmcm9tIG5leHRTdGF0ZS4gSW5kaWNh
dGVzIHRoYXQgYWxsIHBhaW50aW5nIGlzIGNvbXBsZXRlIGFuZCB0aGF0Ci0gICAgLy8gdXBkYXRp
bmcgb2YgY29tcG9zaXRvciByZXNvdXJjZXMgY2FuIGJlZ2luLgorICAgIC8vIG9ubHkgdXBkYXRp
bmcgb2YgY29tcG9zaXRvciByZXNvdXJjZXMgaXMgbGVmdC4KICAgICB2b2lkIGJlZ2luRnJhbWVD
b21wbGV0ZSgpOwogCiAgICAgLy8gQ2FsbCB0aGlzIG9ubHkgaW4gcmVzcG9uc2UgdG8gcmVjZWl2
aW5nIGFuIEFDVElPTl9VUERBVEVfTU9SRV9SRVNPVVJDRVMKICAgICAvLyBmcm9tIG5leHRTdGF0
ZS4gSW5kaWNhdGVzIHRoYXQgdGhlIHNwZWNpZmljIHVwZGF0ZSByZXF1ZXN0IGNvbXBsZXRlZC4K
LSAgICB2b2lkIGJlZ2luVXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRlKGJvb2wgbW9yZVBlbmRp
bmcpOworICAgIHZvaWQgdXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRlKGJvb2wgbW9yZVBlbmRp
bmcpOwogCiAgICAgLy8gSW5kaWNhdGVzIHdoZXRoZXIgZHJhd2luZyB3b3VsZCwgYXQgdGhpcyB0
aW1lLCBtYWtlIHNlbnNlLgogICAgIC8vIGNhbkRyYXcgY2FuIGJlIHVzZWQgdG8gc3VwcmVzcyBm
bGFzaGVzIG9yIGNoZWNrZXJib2FyZGluZwpAQCAtMTE5LDYgKzEyMSw4IEBAIHByb3RlY3RlZDoK
ICAgICBib29sIG1faW5zaWRlVlN5bmM7CiAgICAgYm9vbCBtX3Zpc2libGU7CiAgICAgYm9vbCBt
X2NhbkRyYXc7CisgICAgYm9vbCBtX3Jlc291cmNlVXBkYXRlc1BlbmRpbmc7CisgICAgYm9vbCBt
X2ZyYW1lQ29tcGxldGU7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCmluZGV4
IGU5MjFlOGQuLmI5M2FiZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCkBAIC00MzAs
NiArNDMwLDkgQEAgdm9pZCBDQ1RocmVhZFByb3h5Ojp1cGRhdGVUZXh0dXJlT25JbXBsVGhyZWFk
KFBhc3NPd25QdHI8VXBkYXRlRW50cnk+IGVudHJ5KQogICAgICAgICBtX2N1cnJlbnRUZXh0dXJl
VXBkYXRlck9uSW1wbFRocmVhZCA9IGFkb3B0UHRyKG5ldyBDQ1RleHR1cmVVcGRhdGVyKG1fbGF5
ZXJUcmVlSG9zdEltcGwtPmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcigpKSk7CiAKICAgICBtX2N1
cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZC0+YXBwZW5kKGVudHJ5LT5tX3RleHR1cmUs
IGVudHJ5LT5tX3NvdXJjZVJlY3QsIGVudHJ5LT5tX2Rlc3RSZWN0KTsKKworICAgIGlmICghbV9s
YXllclRyZWVIb3N0SW1wbC0+c2V0dGluZ3MoKS5kZWxheVRleHR1cmVVcGRhdGVzKQorICAgICAg
ICBtX3NjaGVkdWxlck9uSW1wbFRocmVhZC0+c2V0UmVzb3VyY2VVcGRhdGVzUGVuZGluZygpOwog
fQogCiB2b2lkIENDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWVDb21wbGV0ZU9uSW1wbFRocmVhZChD
Q0NvbXBsZXRpb25FdmVudCogY29tcGxldGlvbikKQEAgLTQ0NSw2ICs0NDgsMTAgQEAgdm9pZCBD
Q1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQ29tcGxldGVPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9u
RXZlbnQqIGNvbXBsZXRpb24KIAogICAgIG1fY29tbWl0Q29tcGxldGlvbkV2ZW50T25JbXBsVGhy
ZWFkID0gY29tcGxldGlvbjsKIAorICAgIGlmIChtX2xheWVyVHJlZUhvc3RJbXBsLT5zZXR0aW5n
cygpLmRlbGF5VGV4dHVyZVVwZGF0ZXMKKyAgICAgICAgJiYgaGFzTW9yZVJlc291cmNlVXBkYXRl
cygpKQorICAgICAgICBtX3NjaGVkdWxlck9uSW1wbFRocmVhZC0+c2V0UmVzb3VyY2VVcGRhdGVz
UGVuZGluZygpOworCiAgICAgbV9zY2hlZHVsZXJPbkltcGxUaHJlYWQtPmJlZ2luRnJhbWVDb21w
bGV0ZSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ND
U2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdC5jcHAKaW5kZXggMzkwOGY0MC4uZmFhMTkw
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1NjaGVkdWxlclN0
YXRlTWFjaGluZVRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NT
Y2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LmNwcApAQCAtMzcsNyArMzcsNiBAQCBuYW1lc3BhY2Ug
ewogCiBjb25zdCBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q29tbWl0U3RhdGUgYWxsQ29tbWl0
U3RhdGVzW10gPSB7CiAgICAgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9J
RExFLAotICAgIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfRlJBTUVfSU5f
UFJPR1JFU1MsCiAgICAgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9VUERB
VElOR19SRVNPVVJDRVMsCiAgICAgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFU
RV9SRUFEWV9UT19DT01NSVQsCiAgICAgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9T
VEFURV9XQUlUSU5HX0ZPUl9GSVJTVF9EUkFXCkBAIC02NCw2ICs2MywxMiBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIHNldFVwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nKGJvb2wgYikgeyBtX3VwZGF0
ZU1vcmVSZXNvdXJjZXNQZW5kaW5nID0gYjsgfQogICAgIGJvb2wgdXBkYXRlTW9yZVJlc291cmNl
c1BlbmRpbmcoKSBjb25zdCB7IHJldHVybiBtX3VwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nOyB9
CisKKyAgICB2b2lkIHNldFJlc291cmNlVXBkYXRlc1BlbmRpbmcoYm9vbCBiKSB7IG1fcmVzb3Vy
Y2VVcGRhdGVzUGVuZGluZyA9IGI7IH0KKyAgICBib29sIHJlc291cmNlVXBkYXRlc1BlbmRpbmco
KSBjb25zdCB7IHJldHVybiBtX3Jlc291cmNlVXBkYXRlc1BlbmRpbmc7IH0KKworICAgIHZvaWQg
c2V0RnJhbWVDb21wbGV0ZShib29sIGIpIHsgbV9mcmFtZUNvbXBsZXRlID0gYjsgfQorICAgIGJv
b2wgZnJhbWVDb21wbGV0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVDb21wbGV0ZTsgfQogfTsK
IAogVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3ROZXh0QWN0aW9uQmVnaW5z
RnJhbWVJZk5lZWRlZCkKQEAgLTEwMiw3ICsxMDcsNyBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVN
YWNoaW5lVGVzdCwgVGVzdE5leHRBY3Rpb25CZWdpbnNGcmFtZUlmTmVlZGVkKQogICAgICAgICBT
dGF0ZU1hY2hpbmUgc3RhdGU7CiAgICAgICAgIHN0YXRlLnNldFZpc2libGUodHJ1ZSk7CiAgICAg
ICAgIHN0YXRlLnVwZGF0ZVN0YXRlKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVH
SU5fRlJBTUUpOwotICAgICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNP
TU1JVF9TVEFURV9GUkFNRV9JTl9QUk9HUkVTUywgc3RhdGUuY29tbWl0U3RhdGUoKSk7CisgICAg
ICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX1VQREFU
SU5HX1JFU09VUkNFUywgc3RhdGUuY29tbWl0U3RhdGUoKSk7CiAgICAgICAgIEVYUEVDVF9GQUxT
RShzdGF0ZS5uZWVkc0NvbW1pdCgpKTsKICAgICAgICAgRVhQRUNUX0ZBTFNFKHN0YXRlLnZzeW5j
Q2FsbGJhY2tOZWVkZWQoKSk7CiAgICAgfQpAQCAtMzA1LDYgKzMxMCw4IEBAIFRFU1QoQ0NTY2hl
ZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0VXBkYXRlc19Ob1JlZHJhd19PbmVSb3VuZE9mVXBk
YXRlcykKICAgICBzdGF0ZS5zZXROZWVkc1JlZHJhdyhmYWxzZSk7CiAgICAgc3RhdGUuc2V0VXBk
YXRlTW9yZVJlc291cmNlc1BlbmRpbmcoZmFsc2UpOwogICAgIHN0YXRlLnNldFZpc2libGUodHJ1
ZSk7CisgICAgc3RhdGUuc2V0UmVzb3VyY2VVcGRhdGVzUGVuZGluZyh0cnVlKTsKKyAgICBzdGF0
ZS5zZXRGcmFtZUNvbXBsZXRlKHRydWUpOwogCiAgICAgLy8gVmVyaWZ5IHdlIGJlZ2luIHVwZGF0
ZSwgYm90aCBmb3IgdnN5bmMgYW5kIG5vdCB2c3luYy4KICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVs
ZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9VUERBVEVfTU9SRV9SRVNPVVJDRVMsIHN0YXRl
Lm5leHRBY3Rpb24oKSk7CkBAIC0zMjEsNyArMzI4LDcgQEAgVEVTVChDQ1NjaGVkdWxlclN0YXRl
TWFjaGluZVRlc3QsIFRlc3RVcGRhdGVzX05vUmVkcmF3X09uZVJvdW5kT2ZVcGRhdGVzKQogICAg
IEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX05PTkUsIHN0YXRlLm5l
eHRBY3Rpb24oKSk7CiAKICAgICAvLyBFbmQgdXBkYXRlIHdpdGggbm8gbW9yZSB1cGRhdGVzIHBl
bmRpbmcuCi0gICAgc3RhdGUuYmVnaW5VcGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUoZmFsc2Up
OworICAgIHN0YXRlLnVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZShmYWxzZSk7CiAgICAgc3Rh
dGUuZGlkTGVhdmVWU3luYygpOwogICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGlu
ZTo6QUNUSU9OX0NPTU1JVCwgc3RhdGUubmV4dEFjdGlvbigpKTsKIH0KQEAgLTMzMyw2ICszNDAs
OCBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdFVwZGF0ZXNfTm9SZWRy
YXdfVHdvUm91bmRzT2ZVcGRhdGVzKQogICAgIHN0YXRlLnNldE5lZWRzUmVkcmF3KGZhbHNlKTsK
ICAgICBzdGF0ZS5zZXRVcGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZyhmYWxzZSk7CiAgICAgc3Rh
dGUuc2V0VmlzaWJsZSh0cnVlKTsKKyAgICBzdGF0ZS5zZXRSZXNvdXJjZVVwZGF0ZXNQZW5kaW5n
KHRydWUpOworICAgIHN0YXRlLnNldEZyYW1lQ29tcGxldGUodHJ1ZSk7CiAKICAgICAvLyBWZXJp
ZnkgdGhlIHVwZGF0ZSBiZWdpbnMsIGJvdGggZm9yIHZzeW5jIGFuZCBub3QgdnN5bmMuCiAgICAg
c3RhdGUuZGlkRW50ZXJWU3luYygpOwpAQCAtMzQ5LDcgKzM1OCw3IEBAIFRFU1QoQ0NTY2hlZHVs
ZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0VXBkYXRlc19Ob1JlZHJhd19Ud29Sb3VuZHNPZlVwZGF0
ZXMpCiAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fTk9ORSwg
c3RhdGUubmV4dEFjdGlvbigpKTsKIAogICAgIC8vIEFjayB0aGUgdXBkYXRlIHdpdGggbW9yZSBw
ZW5kaW5nLgotICAgIHN0YXRlLmJlZ2luVXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRlKHRydWUp
OworICAgIHN0YXRlLnVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZSh0cnVlKTsKIAogICAgIC8v
IFZlcmlmeSB3ZSB1cGRhdGUgbW9yZSwgYm90aCBmb3IgdnN5bmMgYW5kIG5vdCB2c3luYy4KICAg
ICBzdGF0ZS5kaWRMZWF2ZVZTeW5jKCk7CkBAIC0zNTksNyArMzY4LDcgQEAgVEVTVChDQ1NjaGVk
dWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RVcGRhdGVzX05vUmVkcmF3X1R3b1JvdW5kc09mVXBk
YXRlcykKIAogICAgIC8vIEJlZ2luIGFub3RoZXIgdXBkYXRlLCB3aGlsZSBpbnNpZGUgdnN5bmMu
IEFuZCwgaXQgdXBkYXRpbmcuCiAgICAgc3RhdGUudXBkYXRlU3RhdGUoQ0NTY2hlZHVsZXJTdGF0
ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9VUERBVEVfTU9SRV9SRVNPVVJDRVMpOwotICAgIHN0YXRl
LmJlZ2luVXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRlKGZhbHNlKTsKKyAgICBzdGF0ZS51cGRh
dGVNb3JlUmVzb3VyY2VzQ29tcGxldGUoZmFsc2UpOwogCiAgICAgLy8gTWFrZSBzdXJlIHdlIGNv
bW1pdCwgaW5kZXBlbmRlbnQgb2YgdnN5bmMuCiAgICAgc3RhdGUuZGlkTGVhdmVWU3luYygpOwpA
QCAtMzc1LDYgKzM4NCw5IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0
VXBkYXRlc19XaXRoUmVkcmF3X09uZVJvdW5kT2ZVcGRhdGVzKQogICAgIHN0YXRlLnNldE5lZWRz
UmVkcmF3KHRydWUpOwogICAgIHN0YXRlLnNldFVwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nKGZh
bHNlKTsKICAgICBzdGF0ZS5zZXRWaXNpYmxlKHRydWUpOworICAgIHN0YXRlLnNldFJlc291cmNl
VXBkYXRlc1BlbmRpbmcodHJ1ZSk7CisgICAgc3RhdGUuc2V0RnJhbWVDb21wbGV0ZSh0cnVlKTsK
KwogICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX1VQ
REFURV9NT1JFX1JFU09VUkNFUywgc3RhdGUubmV4dEFjdGlvbigpKTsKIAogICAgIC8vIEJlZ2lu
IGFuIHVwZGF0ZS4KQEAgLTM5Miw3ICs0MDQsNyBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNo
aW5lVGVzdCwgVGVzdFVwZGF0ZXNfV2l0aFJlZHJhd19PbmVSb3VuZE9mVXBkYXRlcykKICAgICBz
dGF0ZS5kaWRMZWF2ZVZTeW5jKCk7CiAKICAgICAvLyBGaW5pc2ggdXBkYXRlIGJ1dCBsZWF2ZSBt
b3JlIHJlc291cmNlcyBwZW5kaW5nLgotICAgIHN0YXRlLmJlZ2luVXBkYXRlTW9yZVJlc291cmNl
c0NvbXBsZXRlKHRydWUpOworICAgIHN0YXRlLnVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZSh0
cnVlKTsKIAogICAgIC8vIFZlcmlmeSB0aGF0IHJlZ2FyZGxlc3Mgb2YgdnN5bmMsIHdlIHVwZGF0
ZSBzb21lIG1vcmUuCiAgICAgc3RhdGUuZGlkTGVhdmVWU3luYygpOwpAQCAtNDA2LDcgKzQxOCw3
IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0VXBkYXRlc19XaXRoUmVk
cmF3X09uZVJvdW5kT2ZVcGRhdGVzKQogICAgIHN0YXRlLmRpZEVudGVyVlN5bmMoKTsKICAgICBz
dGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX1VQ
REFURV9NT1JFX1JFU09VUkNFUyk7CiAgICAgc3RhdGUuZGlkTGVhdmVWU3luYygpOwotICAgIHN0
YXRlLmJlZ2luVXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRlKGZhbHNlKTsKKyAgICBzdGF0ZS51
cGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUoZmFsc2UpOwogCiAgICAgLy8gVmVyaWZ5IHdlIGNv
bW1pdCByZWdhcmRsZXNzIG9mIHZzeW5jIHN0YXRlCiAgICAgc3RhdGUuZGlkTGVhdmVWU3luYygp
OwpAQCAtNDI0LDcgKzQzNiwxMSBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwg
VGVzdFNldE5lZWRzQ29tbWl0SXNOb3RMb3N0KQogICAgIC8vIEJlZ2luIHRoZSBmcmFtZS4KICAg
ICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9GUkFNRSwg
c3RhdGUubmV4dEFjdGlvbigpKTsKICAgICBzdGF0ZS51cGRhdGVTdGF0ZShzdGF0ZS5uZXh0QWN0
aW9uKCkpOwotICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NU
QVRFX0ZSQU1FX0lOX1BST0dSRVNTLCBzdGF0ZS5jb21taXRTdGF0ZSgpKTsKKyAgICBFWFBFQ1Rf
RVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9VUERBVElOR19SRVNPVVJD
RVMsIHN0YXRlLmNvbW1pdFN0YXRlKCkpOworCisgICAgLy8gUmVjZWl2ZSByZXNvdXJjZSB0aGF0
IG5lZWQgdXBkYXRlLgorICAgIHN0YXRlLnNldFJlc291cmNlVXBkYXRlc1BlbmRpbmcodHJ1ZSk7
CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfVVBE
QVRJTkdfUkVTT1VSQ0VTLCBzdGF0ZS5jb21taXRTdGF0ZSgpKTsKIAogICAgIC8vIE5vdywgd2hp
bGUgdGhlIGZyYW1lIGlzIGluIHByb2dyZXNzLCBzZXQgYW5vdGhlciBjb21taXQuCiAgICAgc3Rh
dGUuc2V0TmVlZHNDb21taXQodHJ1ZSk7CkBAIC00MzYsNyArNDUyLDcgQEAgVEVTVChDQ1NjaGVk
dWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RTZXROZWVkc0NvbW1pdElzTm90TG9zdCkKICAgICBF
WFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9VUERBVEVfTU9S
RV9SRVNPVVJDRVMsIHN0YXRlLm5leHRBY3Rpb24oKSk7CiAgICAgc3RhdGUudXBkYXRlU3RhdGUo
Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9VUERBVEVfTU9SRV9SRVNPVVJD
RVMpOwogICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX05PTkUs
IHN0YXRlLm5leHRBY3Rpb24oKSk7Ci0gICAgc3RhdGUuYmVnaW5VcGRhdGVNb3JlUmVzb3VyY2Vz
Q29tcGxldGUoZmFsc2UpOworICAgIHN0YXRlLnVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZShm
YWxzZSk7CiAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RB
VEVfUkVBRFlfVE9fQ09NTUlULCBzdGF0ZS5jb21taXRTdGF0ZSgpKTsKIAogICAgIC8vIEV4cGVj
dCB0byBjb21taXQgcmVnYXJkbGVzcyBvZiB2c3luYyBzdGF0ZS4KQEAgLTQ2NywxMCArNDgzLDE0
IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0RnVsbEN5Y2xlKQogCiAg
ICAgLy8gQmVnaW4gdGhlIGZyYW1lLgogICAgIHN0YXRlLnVwZGF0ZVN0YXRlKENDU2NoZWR1bGVy
U3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fRlJBTUUpOwotICAgIEVYUEVDVF9FUShDQ1NjaGVk
dWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX0ZSQU1FX0lOX1BST0dSRVNTLCBzdGF0ZS5j
b21taXRTdGF0ZSgpKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNP
TU1JVF9TVEFURV9VUERBVElOR19SRVNPVVJDRVMsIHN0YXRlLmNvbW1pdFN0YXRlKCkpOwogICAg
IEVYUEVDVF9GQUxTRShzdGF0ZS5uZWVkc0NvbW1pdCgpKTsKICAgICBFWFBFQ1RfRVEoQ0NTY2hl
ZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9OT05FLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwogCisg
ICAgLy8gUmVjZWl2ZSByZXNvdXJjZS4KKyAgICBzdGF0ZS5zZXRSZXNvdXJjZVVwZGF0ZXNQZW5k
aW5nKHRydWUpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlU
X1NUQVRFX1VQREFUSU5HX1JFU09VUkNFUywgc3RhdGUuY29tbWl0U3RhdGUoKSk7CisKICAgICAv
LyBUZWxsIHRoZSBzY2hlZHVsZXIgdGhlIGZyYW1lIGZpbmlzaGVkLgogICAgIHN0YXRlLmJlZ2lu
RnJhbWVDb21wbGV0ZSgpOwogICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6
Q09NTUlUX1NUQVRFX1VQREFUSU5HX1JFU09VUkNFUywgc3RhdGUuY29tbWl0U3RhdGUoKSk7CkBA
IC00NzgsNyArNDk4LDcgQEAgVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RG
dWxsQ3ljbGUpCiAKICAgICAvLyBUZWxsIHRoZSBzY2hlZHVsZXIgdGhlIHVwZGF0ZSBiZWdhbiBh
bmQgZmluaXNoZWQKICAgICBzdGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGlu
ZTo6QUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUyk7Ci0gICAgc3RhdGUuYmVnaW5V
cGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUoZmFsc2UpOworICAgIHN0YXRlLnVwZGF0ZU1vcmVS
ZXNvdXJjZXNDb21wbGV0ZShmYWxzZSk7CiAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVN
YWNoaW5lOjpDT01NSVRfU1RBVEVfUkVBRFlfVE9fQ09NTUlULCBzdGF0ZS5jb21taXRTdGF0ZSgp
KTsKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9DT01NSVQs
IHN0YXRlLm5leHRBY3Rpb24oKSk7CiAKQEAgLTUxMyw3ICs1MzMsNyBAQCBURVNUKENDU2NoZWR1
bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdEZ1bGxDeWNsZVdpdGhDb21taXRSZXF1ZXN0SW5iZXR3
ZWVuKQogCiAgICAgLy8gQmVnaW4gdGhlIGZyYW1lLgogICAgIHN0YXRlLnVwZGF0ZVN0YXRlKEND
U2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fRlJBTUUpOwotICAgIEVYUEVDVF9F
UShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX0ZSQU1FX0lOX1BST0dSRVNT
LCBzdGF0ZS5jb21taXRTdGF0ZSgpKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1h
Y2hpbmU6OkNPTU1JVF9TVEFURV9VUERBVElOR19SRVNPVVJDRVMsIHN0YXRlLmNvbW1pdFN0YXRl
KCkpOwogICAgIEVYUEVDVF9GQUxTRShzdGF0ZS5uZWVkc0NvbW1pdCgpKTsKICAgICBFWFBFQ1Rf
RVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9OT05FLCBzdGF0ZS5uZXh0QWN0aW9u
KCkpOwogCkBAIC01MjEsNiArNTQxLDEwIEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVU
ZXN0LCBUZXN0RnVsbEN5Y2xlV2l0aENvbW1pdFJlcXVlc3RJbmJldHdlZW4pCiAgICAgc3RhdGUu
c2V0TmVlZHNDb21taXQodHJ1ZSk7CiAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNo
aW5lOjpBQ1RJT05fTk9ORSwgc3RhdGUubmV4dEFjdGlvbigpKTsKIAorICAgIC8vIFJlY2VpdmUg
cmVzb3VyY2UuCisgICAgc3RhdGUuc2V0UmVzb3VyY2VVcGRhdGVzUGVuZGluZyh0cnVlKTsKKyAg
ICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9VUERBVElO
R19SRVNPVVJDRVMsIHN0YXRlLmNvbW1pdFN0YXRlKCkpOworCiAgICAgLy8gVGVsbCB0aGUgc2No
ZWR1bGVyIHRoZSBmcmFtZSBmaW5pc2hlZC4KICAgICBzdGF0ZS5iZWdpbkZyYW1lQ29tcGxldGUo
KTsKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9V
UERBVElOR19SRVNPVVJDRVMsIHN0YXRlLmNvbW1pdFN0YXRlKCkpOwpAQCAtNTI4LDcgKzU1Miw3
IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0RnVsbEN5Y2xlV2l0aENv
bW1pdFJlcXVlc3RJbmJldHdlZW4pCiAKICAgICAvLyBUZWxsIHRoZSBzY2hlZHVsZXIgdGhlIHVw
ZGF0ZSBiZWdhbiBhbmQgZmluaXNoZWQKICAgICBzdGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxl
clN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUyk7Ci0gICAg
c3RhdGUuYmVnaW5VcGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUoZmFsc2UpOworICAgIHN0YXRl
LnVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZShmYWxzZSk7CiAgICAgRVhQRUNUX0VRKENDU2No
ZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfUkVBRFlfVE9fQ09NTUlULCBzdGF0ZS5j
b21taXRTdGF0ZSgpKTsKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFD
VElPTl9DT01NSVQsIHN0YXRlLm5leHRBY3Rpb24oKSk7CiAKQEAgLTU3MCwxMyArNTk0LDE3IEBA
IFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0R29lc0ludmlzaWJsZU1pZENv
bW1pdCkKIAogICAgIC8vIEJlZ2luIHRoZSBmcmFtZSB3aGlsZSB2aXNpYmxlLgogICAgIHN0YXRl
LnVwZGF0ZVN0YXRlKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fRlJBTUUp
OwotICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX0ZS
QU1FX0lOX1BST0dSRVNTLCBzdGF0ZS5jb21taXRTdGF0ZSgpKTsKKyAgICBFWFBFQ1RfRVEoQ0NT
Y2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9VUERBVElOR19SRVNPVVJDRVMsIHN0
YXRlLmNvbW1pdFN0YXRlKCkpOwogICAgIEVYUEVDVF9GQUxTRShzdGF0ZS5uZWVkc0NvbW1pdCgp
KTsKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9OT05FLCBz
dGF0ZS5uZXh0QWN0aW9uKCkpOwogCiAgICAgLy8gQmVjb21lIGludmlzaWJsZQogICAgIHN0YXRl
LnNldFZpc2libGUoZmFsc2UpOwogCisgICAgLy8gUmVjZWl2ZSByZXNvdXJjZS4KKyAgICBzdGF0
ZS5zZXRSZXNvdXJjZVVwZGF0ZXNQZW5kaW5nKHRydWUpOworICAgIEVYUEVDVF9FUShDQ1NjaGVk
dWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX1VQREFUSU5HX1JFU09VUkNFUywgc3RhdGUu
Y29tbWl0U3RhdGUoKSk7CisKICAgICAvLyBUZWxsIHRoZSBzY2hlZHVsZXIgdGhlIGZyYW1lIGZp
bmlzaGVkCiAgICAgc3RhdGUuYmVnaW5GcmFtZUNvbXBsZXRlKCk7CiAgICAgRVhQRUNUX0VRKEND
U2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfVVBEQVRJTkdfUkVTT1VSQ0VTLCBz
dGF0ZS5jb21taXRTdGF0ZSgpKTsKQEAgLTU4NCw3ICs2MTIsNyBAQCBURVNUKENDU2NoZWR1bGVy
U3RhdGVNYWNoaW5lVGVzdCwgVGVzdEdvZXNJbnZpc2libGVNaWRDb21taXQpCiAKICAgICAvLyBU
ZWxsIHRoZSBzY2hlZHVsZXIgdGhlIHVwZGF0ZSBiZWdhbiBhbmQgZmluaXNoZWQKICAgICBzdGF0
ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX1VQREFU
RV9NT1JFX1JFU09VUkNFUyk7Ci0gICAgc3RhdGUuYmVnaW5VcGRhdGVNb3JlUmVzb3VyY2VzQ29t
cGxldGUoZmFsc2UpOworICAgIHN0YXRlLnVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZShmYWxz
ZSk7CiAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVf
UkVBRFlfVE9fQ09NTUlULCBzdGF0ZS5jb21taXRTdGF0ZSgpKTsKICAgICBFWFBFQ1RfRVEoQ0NT
Y2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9DT01NSVQsIHN0YXRlLm5leHRBY3Rpb24oKSk7
CiAKQEAgLTYwNCw0ICs2MzIsNjUgQEAgVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3Qs
IFRlc3RHb2VzSW52aXNpYmxlTWlkQ29tbWl0KQogICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0
YXRlTWFjaGluZTo6QUNUSU9OX05PTkUsIHN0YXRlLm5leHRBY3Rpb24oKSk7CiB9CiAKK1RFU1Qo
Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0Tm9SZXNvdXJjZVVwZGF0ZXMpCit7Cisg
ICAgU3RhdGVNYWNoaW5lIHN0YXRlOworICAgIHN0YXRlLnNldFZpc2libGUodHJ1ZSk7CisKKyAg
ICAvLyBTdGFydCBjbGVhbiBhbmQgc2V0IGNvbW1pdC4KKyAgICBzdGF0ZS5zZXROZWVkc0NvbW1p
dCh0cnVlKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9C
RUdJTl9GUkFNRSwgc3RhdGUubmV4dEFjdGlvbigpKTsKKworICAgIC8vIEJlZ2luIHRoZSBmcmFt
ZS4KKyAgICBzdGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9O
X0JFR0lOX0ZSQU1FKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNP
TU1JVF9TVEFURV9VUERBVElOR19SRVNPVVJDRVMsIHN0YXRlLmNvbW1pdFN0YXRlKCkpOworICAg
IEVYUEVDVF9GQUxTRShzdGF0ZS5uZWVkc0NvbW1pdCgpKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hl
ZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9OT05FLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworCisg
ICAgLy8gVGVsbCB0aGUgc2NoZWR1bGVyIHRoZSBmcmFtZSBmaW5pc2hlZC4KKyAgICBzdGF0ZS5i
ZWdpbkZyYW1lQ29tcGxldGUoKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hp
bmU6OkNPTU1JVF9TVEFURV9SRUFEWV9UT19DT01NSVQsIHN0YXRlLmNvbW1pdFN0YXRlKCkpOwor
ICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0NPTU1JVCwgc3Rh
dGUubmV4dEFjdGlvbigpKTsKK30KKworVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3Qs
IFRlc3ROb1Jlc291cmNlUGVuZGluZykKK3sKKyAgICBTdGF0ZU1hY2hpbmUgc3RhdGU7CisgICAg
c3RhdGUuc2V0VmlzaWJsZSh0cnVlKTsKKworICAgIC8vIFN0YXJ0IGNsZWFuIGFuZCBzZXQgY29t
bWl0LgorICAgIHN0YXRlLnNldE5lZWRzQ29tbWl0KHRydWUpOworICAgIEVYUEVDVF9FUShDQ1Nj
aGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX0ZSQU1FLCBzdGF0ZS5uZXh0QWN0aW9u
KCkpOworCisgICAgLy8gQmVnaW4gdGhlIGZyYW1lLgorICAgIHN0YXRlLnVwZGF0ZVN0YXRlKEND
U2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fRlJBTUUpOworICAgIEVYUEVDVF9F
UShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX1VQREFUSU5HX1JFU09VUkNF
Uywgc3RhdGUuY29tbWl0U3RhdGUoKSk7CisgICAgRVhQRUNUX0ZBTFNFKHN0YXRlLm5lZWRzQ29t
bWl0KCkpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX05P
TkUsIHN0YXRlLm5leHRBY3Rpb24oKSk7CisKKyAgICAvLyBSZWNlaXZlIHJlc291cmNlLgorICAg
IHN0YXRlLnNldFJlc291cmNlVXBkYXRlc1BlbmRpbmcodHJ1ZSk7CisgICAgRVhQRUNUX0VRKEND
U2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfVVBEQVRJTkdfUkVTT1VSQ0VTLCBz
dGF0ZS5jb21taXRTdGF0ZSgpKTsKKworICAgIC8vIFRlbGwgdGhlIHNjaGVkdWxlciB0aGUgdXBk
YXRlIGJlZ2FuIGFuZCBmaW5pc2hlZC4KKyAgICBzdGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxl
clN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUyk7CisgICAg
RVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfVVBEQVRJTkdf
UkVTT1VSQ0VTLCBzdGF0ZS5jb21taXRTdGF0ZSgpKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVs
ZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9OT05FLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworICAgIHN0
YXRlLnVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZSh0cnVlKTsKKworICAgIC8vIFRlbGwgdGhl
IHNjaGVkdWxlciBhbm90aGVyIHVwZGF0ZSBiZWdhbiBhbmQgZmluaXNoZWQuCisgICAgRVhQRUNU
X0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fVVBEQVRFX01PUkVfUkVT
T1VSQ0VTLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworICAgIHN0YXRlLnVwZGF0ZVN0YXRlKENDU2No
ZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fVVBEQVRFX01PUkVfUkVTT1VSQ0VTKTsK
KyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9OT05FLCBzdGF0
ZS5uZXh0QWN0aW9uKCkpOworICAgIHN0YXRlLnVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZShm
YWxzZSk7CisKKyAgICAvLyBObyBwZW5kaW5nIHJlc291cmNlcyB0byB1cGRhdGUuCisgICAgRVhQ
RUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fTk9ORSwgc3RhdGUubmV4dEFj
dGlvbigpKTsKKworICAgIC8vIFRlbGwgdGhlIHNjaGVkdWxlciB0aGUgZnJhbWUgZmluaXNoZWQu
CisgICAgc3RhdGUuYmVnaW5GcmFtZUNvbXBsZXRlKCk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1
bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfUkVBRFlfVE9fQ09NTUlULCBzdGF0ZS5jb21t
aXRTdGF0ZSgpKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElP
Tl9DT01NSVQsIHN0YXRlLm5leHRBY3Rpb24oKSk7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NTY2hlZHVsZXJUZXN0LmNwcCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvQ0NTY2hlZHVsZXJUZXN0LmNwcAppbmRleCA0NzU5ODdmLi40OWMx
MmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDU2NoZWR1bGVy
VGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1NjaGVkdWxlclRl
c3QuY3BwCkBAIC04MSwxMyArODEsMTAgQEAgVEVTVChDQ1NjaGVkdWxlclRlc3QsIFJlcXVlc3RD
b21taXQpCiAgICAgY2xpZW50LnJlc2V0KCk7CiAKICAgICAvLyBTaW5jZSwgaGFzTW9yZVJlc291
cmNlVXBkYXRlcyBpcyBzZXQgdG8gZmFsc2UsCi0gICAgLy8gYmVnaW5GcmFtZUNvbXBsZXRlIHNo
b3VsZCB1cGRhdGVNb3JlUmVzb3VyY2VzLCB0aGVuCi0gICAgLy8gY29tbWl0CisgICAgLy8gYmVn
aW5GcmFtZUNvbXBsZXRlIHNob3VsZCBjb21taXQgaW1tZWRpYXRlbHkuCiAgICAgc2NoZWR1bGVy
LT5iZWdpbkZyYW1lQ29tcGxldGUoKTsKLSAgICBFWFBFQ1RfRVEoMiwgY2xpZW50Lm51bUFjdGlv
bnMoKSk7Ci0gICAgRVhQRUNUX1NUUkVRKCJzY2hlZHVsZWRBY3Rpb25VcGRhdGVNb3JlUmVzb3Vy
Y2VzIiwgY2xpZW50LmFjdGlvbigwKSk7Ci0gICAgRVhQRUNUX1NUUkVRKCJzY2hlZHVsZWRBY3Rp
b25Db21taXQiLCBjbGllbnQuYWN0aW9uKDEpKTsKLSAgICBFWFBFQ1RfVFJVRSh0aW1lU291cmNl
LT5hY3RpdmUoKSk7CisgICAgRVhQRUNUX0VRKDEsIGNsaWVudC5udW1BY3Rpb25zKCkpOworICAg
IEVYUEVDVF9TVFJFUSgic2NoZWR1bGVkQWN0aW9uQ29tbWl0IiwgY2xpZW50LmFjdGlvbigwKSk7
CiAgICAgY2xpZW50LnJlc2V0KCk7CiAKICAgICAvLyBUaWNrIHNob3VsZCBkcmF3LgpAQCAtMTE4
LDEyICsxMTUsMTAgQEAgVEVTVChDQ1NjaGVkdWxlclRlc3QsIFJlcXVlc3RDb21taXRBZnRlckJl
Z2luRnJhbWUpCiAgICAgc2NoZWR1bGVyLT5zZXROZWVkc0NvbW1pdCgpOwogCiAgICAgLy8gU2lu
Y2UsIGhhc01vcmVSZXNvdXJjZVVwZGF0ZXMgaXMgc2V0IHRvIGZhbHNlLCBhbmQgYW5vdGhlciBj
b21taXQgaXMKLSAgICAvLyBuZWVkZWQsIGJlZ2luRnJhbWVDb21wbGV0ZSBzaG91bGQgdXBkYXRl
TW9yZVJlc291cmNlcywgdGhlbiBjb21taXQsIHRoZW4KLSAgICAvLyBiZWdpbiBhbm90aGVyIGZy
YW1lLgorICAgIC8vIG5lZWRlZCwgYmVnaW5GcmFtZUNvbXBsZXRlIHNob3VsZCBjb21taXQsIHRo
ZW4gYmVnaW4gYW5vdGhlciBmcmFtZS4KICAgICBzY2hlZHVsZXItPmJlZ2luRnJhbWVDb21wbGV0
ZSgpOwotICAgIEVYUEVDVF9FUSgyLCBjbGllbnQubnVtQWN0aW9ucygpKTsKLSAgICBFWFBFQ1Rf
U1RSRVEoInNjaGVkdWxlZEFjdGlvblVwZGF0ZU1vcmVSZXNvdXJjZXMiLCBjbGllbnQuYWN0aW9u
KDApKTsKLSAgICBFWFBFQ1RfU1RSRVEoInNjaGVkdWxlZEFjdGlvbkNvbW1pdCIsIGNsaWVudC5h
Y3Rpb24oMSkpOworICAgIEVYUEVDVF9FUSgxLCBjbGllbnQubnVtQWN0aW9ucygpKTsKKyAgICBF
WFBFQ1RfU1RSRVEoInNjaGVkdWxlZEFjdGlvbkNvbW1pdCIsIGNsaWVudC5hY3Rpb24oMCkpOwog
ICAgIGNsaWVudC5yZXNldCgpOwogCiAgICAgLy8gVGljayBzaG91bGQgZHJhdyBidXQgdGhlbiBi
ZWdpbiBhbm90aGVyIGZyYW1lLgpAQCAtMjQ4LDQgKzI0MywxMTEgQEAgVEVTVChDQ1NjaGVkdWxl
clRlc3QsIFJlcXVlc3RDb21taXRJbnNpZGVEcmF3KQogICAgIEVYUEVDVF9GQUxTRShzY2hlZHVs
ZXItPnJlZHJhd1BlbmRpbmcoKSk7CiB9CiAKK2NsYXNzIFNjaGVkdWxlckNsaWVudFRoYXRQZXJm
b3Jtc1Jlc291cmNlVXBkYXRlcyA6IHB1YmxpYyBGYWtlQ0NTY2hlZHVsZXJDbGllbnQgeworcHVi
bGljOgorICAgIFNjaGVkdWxlckNsaWVudFRoYXRQZXJmb3Jtc1Jlc291cmNlVXBkYXRlcygpCisg
ICAgICAgIDogRmFrZUNDU2NoZWR1bGVyQ2xpZW50KCkKKyAgICAgICAgLCBtX251bVJlc291cmNl
VXBkYXRlc1BlbmRpbmcoMCkgeyB9CisKKyAgICB2b2lkIHNldE51bVJlc291cmNlVXBkYXRlc1Bl
bmRpbmcoaW50IG51bSkKKyAgICB7CisgICAgICAgIG1fbnVtUmVzb3VyY2VVcGRhdGVzUGVuZGlu
ZyA9IG51bTsKKyAgICAgICAgaWYgKG51bSkKKyAgICAgICAgICAgIHNldEhhc01vcmVSZXNvdXJj
ZVVwZGF0ZXModHJ1ZSk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlZEFjdGlv
blVwZGF0ZU1vcmVSZXNvdXJjZXMoKQorICAgIHsKKyAgICAgICAgRmFrZUNDU2NoZWR1bGVyQ2xp
ZW50OjpzY2hlZHVsZWRBY3Rpb25VcGRhdGVNb3JlUmVzb3VyY2VzKCk7CisgICAgICAgIG1fbnVt
UmVzb3VyY2VVcGRhdGVzUGVuZGluZy0tOworICAgICAgICBpZiAoIW1fbnVtUmVzb3VyY2VVcGRh
dGVzUGVuZGluZykKKyAgICAgICAgICAgIHNldEhhc01vcmVSZXNvdXJjZVVwZGF0ZXMoZmFsc2Up
OworICAgIH0KKworcHJvdGVjdGVkOgorICAgIGludCBtX251bVJlc291cmNlVXBkYXRlc1BlbmRp
bmc7Cit9OworCitURVNUKENDU2NoZWR1bGVyVGVzdCwgVXBkYXRlUmVzb3VyY2VzKQoreworICAg
IFNjaGVkdWxlckNsaWVudFRoYXRQZXJmb3Jtc1Jlc291cmNlVXBkYXRlcyBjbGllbnQ7CisgICAg
UmVmUHRyPEZha2VDQ1RpbWVTb3VyY2U+IHRpbWVTb3VyY2UgPSBhZG9wdFJlZihuZXcgRmFrZUND
VGltZVNvdXJjZSgpKTsKKyAgICBPd25QdHI8Q0NTY2hlZHVsZXI+IHNjaGVkdWxlciA9IENDU2No
ZWR1bGVyOjpjcmVhdGUoJmNsaWVudCwgYWRvcHRQdHIobmV3IENDRnJhbWVSYXRlQ29udHJvbGxl
cih0aW1lU291cmNlKSkpOworICAgIHNjaGVkdWxlci0+c2V0VmlzaWJsZSh0cnVlKTsKKworICAg
IC8vIFNldE5lZWRzQ29tbWl0IHNob3VsZCBiZWdpbiB0aGUgZnJhbWUuCisgICAgc2NoZWR1bGVy
LT5zZXROZWVkc0NvbW1pdCgpOworICAgIEVYUEVDVF9FUSgxLCBjbGllbnQubnVtQWN0aW9ucygp
KTsKKyAgICBFWFBFQ1RfU1RSRVEoInNjaGVkdWxlZEFjdGlvbkJlZ2luRnJhbWUiLCBjbGllbnQu
YWN0aW9uKDApKTsKKyAgICBjbGllbnQucmVzZXQoKTsKKworICAgIC8vIFBlcmZvcm0gb25lIHJl
c291cmNlIHVwZGF0ZS4KKyAgICBjbGllbnQuc2V0TnVtUmVzb3VyY2VVcGRhdGVzUGVuZGluZygx
KTsKKyAgICBzY2hlZHVsZXItPnNldFJlc291cmNlVXBkYXRlc1BlbmRpbmcoKTsKKyAgICBFWFBF
Q1RfRVEoMSwgY2xpZW50Lm51bUFjdGlvbnMoKSk7CisgICAgRVhQRUNUX1NUUkVRKCJzY2hlZHVs
ZWRBY3Rpb25VcGRhdGVNb3JlUmVzb3VyY2VzIiwgY2xpZW50LmFjdGlvbigwKSk7CisgICAgY2xp
ZW50LnJlc2V0KCk7CisKKyAgICAvLyBQZXJmb3JtIHR3byByZXNvdXJjZSB1cGRhdGVzLgorICAg
IGNsaWVudC5zZXROdW1SZXNvdXJjZVVwZGF0ZXNQZW5kaW5nKDIpOworICAgIHNjaGVkdWxlci0+
c2V0UmVzb3VyY2VVcGRhdGVzUGVuZGluZygpOworICAgIEVYUEVDVF9FUSgyLCBjbGllbnQubnVt
QWN0aW9ucygpKTsKKyAgICBFWFBFQ1RfU1RSRVEoInNjaGVkdWxlZEFjdGlvblVwZGF0ZU1vcmVS
ZXNvdXJjZXMiLCBjbGllbnQuYWN0aW9uKDApKTsKKyAgICBFWFBFQ1RfU1RSRVEoInNjaGVkdWxl
ZEFjdGlvblVwZGF0ZU1vcmVSZXNvdXJjZXMiLCBjbGllbnQuYWN0aW9uKDEpKTsKKyAgICBjbGll
bnQucmVzZXQoKTsKKworICAgIC8vIENvbW1pdCB3aXRob3V0IGFueSBwZW5kaW5nIHJlc291cmNl
IHVwZGF0ZXMuCisgICAgc2NoZWR1bGVyLT5iZWdpbkZyYW1lQ29tcGxldGUoKTsKKyAgICBFWFBF
Q1RfRVEoMSwgY2xpZW50Lm51bUFjdGlvbnMoKSk7CisgICAgRVhQRUNUX1NUUkVRKCJzY2hlZHVs
ZWRBY3Rpb25Db21taXQiLCBjbGllbnQuYWN0aW9uKDApKTsKKyAgICBjbGllbnQucmVzZXQoKTsK
KworICAgIHRpbWVTb3VyY2UtPnRpY2soKTsKKyAgICBFWFBFQ1RfRVEoMSwgY2xpZW50Lm51bUFj
dGlvbnMoKSk7CisgICAgRVhQRUNUX1NUUkVRKCJzY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcCIs
IGNsaWVudC5hY3Rpb24oMCkpOworICAgIGNsaWVudC5yZXNldCgpOworCisgICAgLy8gU2V0TmVl
ZHNDb21taXQgc2hvdWxkIGJlZ2luIHRoZSBmcmFtZS4KKyAgICBzY2hlZHVsZXItPnNldE5lZWRz
Q29tbWl0KCk7CisgICAgRVhQRUNUX0VRKDEsIGNsaWVudC5udW1BY3Rpb25zKCkpOworICAgIEVY
UEVDVF9TVFJFUSgic2NoZWR1bGVkQWN0aW9uQmVnaW5GcmFtZSIsIGNsaWVudC5hY3Rpb24oMCkp
OworICAgIGNsaWVudC5yZXNldCgpOworCisgICAgLy8gUGVyZm9ybSB0aHJlZSByZXNvdXJjZSB1
cGRhdGVzLgorICAgIGNsaWVudC5zZXROdW1SZXNvdXJjZVVwZGF0ZXNQZW5kaW5nKDMpOworICAg
IHNjaGVkdWxlci0+c2V0UmVzb3VyY2VVcGRhdGVzUGVuZGluZygpOworICAgIEVYUEVDVF9FUSgz
LCBjbGllbnQubnVtQWN0aW9ucygpKTsKKyAgICBFWFBFQ1RfU1RSRVEoInNjaGVkdWxlZEFjdGlv
blVwZGF0ZU1vcmVSZXNvdXJjZXMiLCBjbGllbnQuYWN0aW9uKDApKTsKKyAgICBFWFBFQ1RfU1RS
RVEoInNjaGVkdWxlZEFjdGlvblVwZGF0ZU1vcmVSZXNvdXJjZXMiLCBjbGllbnQuYWN0aW9uKDEp
KTsKKyAgICBFWFBFQ1RfU1RSRVEoInNjaGVkdWxlZEFjdGlvblVwZGF0ZU1vcmVSZXNvdXJjZXMi
LCBjbGllbnQuYWN0aW9uKDIpKTsKKyAgICBjbGllbnQucmVzZXQoKTsKKworICAgIHNjaGVkdWxl
ci0+c2V0TmVlZHNSZWRyYXcoKTsKKyAgICBFWFBFQ1RfVFJVRShzY2hlZHVsZXItPnJlZHJhd1Bl
bmRpbmcoKSk7CisKKyAgICAvLyBEcmF3IGluLWJldHdlZW4gcmVzb3VyY2UgdXBkYXRlcy4KKyAg
ICB0aW1lU291cmNlLT50aWNrKCk7CisgICAgRVhQRUNUX0VRKDEsIGNsaWVudC5udW1BY3Rpb25z
KCkpOworICAgIEVYUEVDVF9TVFJFUSgic2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXAiLCBjbGll
bnQuYWN0aW9uKDApKTsKKyAgICBjbGllbnQucmVzZXQoKTsKKworICAgIC8vIFBlcmZvcm0gb25l
IHJlc291cmNlIHVwZGF0ZS4KKyAgICBjbGllbnQuc2V0TnVtUmVzb3VyY2VVcGRhdGVzUGVuZGlu
ZygxKTsKKyAgICBzY2hlZHVsZXItPnNldFJlc291cmNlVXBkYXRlc1BlbmRpbmcoKTsKKyAgICBF
WFBFQ1RfRVEoMSwgY2xpZW50Lm51bUFjdGlvbnMoKSk7CisgICAgRVhQRUNUX1NUUkVRKCJzY2hl
ZHVsZWRBY3Rpb25VcGRhdGVNb3JlUmVzb3VyY2VzIiwgY2xpZW50LmFjdGlvbigwKSk7CisgICAg
Y2xpZW50LnJlc2V0KCk7CisKKyAgICAvLyBDb21taXQgd2l0aG91dCBhbnkgcGVuZGluZyByZXNv
dXJjZSB1cGRhdGVzLgorICAgIHNjaGVkdWxlci0+YmVnaW5GcmFtZUNvbXBsZXRlKCk7CisgICAg
RVhQRUNUX0VRKDEsIGNsaWVudC5udW1BY3Rpb25zKCkpOworICAgIEVYUEVDVF9TVFJFUSgic2No
ZWR1bGVkQWN0aW9uQ29tbWl0IiwgY2xpZW50LmFjdGlvbigwKSk7CisgICAgY2xpZW50LnJlc2V0
KCk7CisKKyAgICB0aW1lU291cmNlLT50aWNrKCk7CisgICAgRVhQRUNUX0VRKDEsIGNsaWVudC5u
dW1BY3Rpb25zKCkpOworICAgIEVYUEVDVF9TVFJFUSgic2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3
YXAiLCBjbGllbnQuYWN0aW9uKDApKTsKKyAgICBjbGllbnQucmVzZXQoKTsKK30KKwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125388</attachid>
            <date>2012-02-03 13:01:16 -0800</date>
            <delta_ts>2012-02-03 13:01:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>threaded-parallel.diff</filename>
            <type>text/plain</type>
            <size>28355</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDU2NoZWR1bGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDU2NoZWR1bGVyLmNwcAppbmRleCA4NTgwNDY3Li5jM2FiM2FmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NTY2hlZHVsZXIuY3BwCkBAIC02OCw2ICs2OCwxMiBAQCB2b2lkIENDU2NoZWR1bGVyOjpzZXRO
ZWVkc0ZvcmNlZFJlZHJhdygpCiAgICAgcHJvY2Vzc1NjaGVkdWxlZEFjdGlvbnMoKTsKIH0KIAor
dm9pZCBDQ1NjaGVkdWxlcjo6c2V0UmVzb3VyY2VVcGRhdGVzUGVuZGluZygpCit7CisgICAgbV9z
dGF0ZU1hY2hpbmUuc2V0UmVzb3VyY2VVcGRhdGVzUGVuZGluZygpOworICAgIHByb2Nlc3NTY2hl
ZHVsZWRBY3Rpb25zKCk7Cit9CisKIHZvaWQgQ0NTY2hlZHVsZXI6OmJlZ2luRnJhbWVDb21wbGV0
ZSgpCiB7CiAgICAgVFJBQ0VfRVZFTlQoIkNDU2NoZWR1bGVyOjpiZWdpbkZyYW1lQ29tcGxldGUi
LCB0aGlzLCAwKTsKQEAgLTk2LDcgKzEwMiw3IEBAIHZvaWQgQ0NTY2hlZHVsZXI6OmJlZ2luRnJh
bWUoKQogewogICAgIGlmIChtX3VwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nKSB7CiAgICAgICAg
IG1fdXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmcgPSBmYWxzZTsKLSAgICAgICAgbV9zdGF0ZU1h
Y2hpbmUuYmVnaW5VcGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUobV9jbGllbnQtPmhhc01vcmVS
ZXNvdXJjZVVwZGF0ZXMoKSk7CisgICAgICAgIG1fc3RhdGVNYWNoaW5lLnVwZGF0ZU1vcmVSZXNv
dXJjZXNDb21wbGV0ZShtX2NsaWVudC0+aGFzTW9yZVJlc291cmNlVXBkYXRlcygpKTsKICAgICB9
CiAgICAgVFJBQ0VfRVZFTlQoIkNDU2NoZWR1bGVyOjpiZWdpbkZyYW1lIiwgdGhpcywgMCk7CiAK
QEAgLTEzMywxNiArMTM5LDEzIEBAIHZvaWQgQ0NTY2hlZHVsZXI6OnByb2Nlc3NTY2hlZHVsZWRB
Y3Rpb25zKCkKICAgICAgICAgICAgIG1fY2xpZW50LT5zY2hlZHVsZWRBY3Rpb25CZWdpbkZyYW1l
KCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDQ1NjaGVkdWxlclN0YXRlTWFj
aGluZTo6QUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUzoKKyAgICAgICAgICAgIEFT
U0VSVChtX2NsaWVudC0+aGFzTW9yZVJlc291cmNlVXBkYXRlcygpKTsKICAgICAgICAgICAgIG1f
Y2xpZW50LT5zY2hlZHVsZWRBY3Rpb25VcGRhdGVNb3JlUmVzb3VyY2VzKCk7Ci0gICAgICAgICAg
ICBpZiAoIW1fY2xpZW50LT5oYXNNb3JlUmVzb3VyY2VVcGRhdGVzKCkpIHsKLSAgICAgICAgICAg
ICAgICAvLyBJZiB3ZSB3ZXJlIGp1c3QgdG9sZCB0byB1cGRhdGUgcmVzb3VyY2VzLCBidXQgdGhl
cmUgYXJlIG5vCi0gICAgICAgICAgICAgICAgLy8gbW9yZSBwZW5kaW5nLCB0aGVuIHRlbGwgdGhl
IHN0YXRlIG1hY2hpbmUgdGhhdCB0aGUKLSAgICAgICAgICAgICAgICAvLyBiZWdpblVwZGF0ZU1v
cmVSZXNvdXJjZXMgY29tcGxldGVkLiBJZiBtb3JlIGFyZSBwZW5kaW5nLAotICAgICAgICAgICAg
ICAgIC8vIHRoZW4gd2Ugd2lsbCBhY2sgdGhlIHVwZGF0ZSBhdCB0aGUgbmV4dCBkcmF3LgotICAg
ICAgICAgICAgICAgIG1fdXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmcgPSBmYWxzZTsKLSAgICAg
ICAgICAgICAgICBtX3N0YXRlTWFjaGluZS5iZWdpblVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0
ZShmYWxzZSk7Ci0gICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBtX3VwZGF0ZU1v
cmVSZXNvdXJjZXNQZW5kaW5nID0gdHJ1ZTsKKyAgICAgICAgICAgIC8vIElmIHdlIHdlcmUganVz
dCB0b2xkIHRvIHVwZGF0ZSByZXNvdXJjZXMsIHRlbGwgdGhlIHN0YXRlCisgICAgICAgICAgICAv
LyBtYWNoaW5lIHRoYXQgdGhlIGJlZ2luVXBkYXRlTW9yZVJlc291cmNlcyBjb21wbGV0ZWQgYW5k
IGlmCisgICAgICAgICAgICAvLyBtb3JlIGFyZSBwZW5kaW5nLgorICAgICAgICAgICAgbV91cGRh
dGVNb3JlUmVzb3VyY2VzUGVuZGluZyA9IG1fY2xpZW50LT5oYXNNb3JlUmVzb3VyY2VVcGRhdGVz
KCk7CisgICAgICAgICAgICBtX3N0YXRlTWFjaGluZS51cGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxl
dGUobV91cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZyk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgY2FzZSBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0NPTU1JVDoKICAgICAg
ICAgICAgIG1fY2xpZW50LT5zY2hlZHVsZWRBY3Rpb25Db21taXQoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxl
ci5oCmluZGV4IDczMTA1ODEuLjc3MjA0M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXIuaApAQCAtNjcs
OCArNjcsOCBAQCBwdWJsaWM6CiAgICAgLy8gQXMgc2V0TmVlZHNSZWRyYXcoKSwgYnV0IGVuc3Vy
ZXMgdGhlIGRyYXcgd2lsbCBkZWZpbml0ZWx5IGhhcHBlbiBldmVuIGlmIHdlIGFyZSBub3Qgdmlz
aWJsZS4KICAgICB2b2lkIHNldE5lZWRzRm9yY2VkUmVkcmF3KCk7CiAKKyAgICB2b2lkIHNldFJl
c291cmNlVXBkYXRlc1BlbmRpbmcoKTsKICAgICB2b2lkIGJlZ2luRnJhbWVDb21wbGV0ZSgpOwot
CiAgICAgdm9pZCBzZXRNYXhGcmFtZXNQZW5kaW5nKGludCk7CiAgICAgdm9pZCBkaWRTd2FwQnVm
ZmVyc0NvbXBsZXRlKCk7CiAgICAgdm9pZCBkaWRTd2FwQnVmZmVyc0Fib3J0KCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVk
dWxlclN0YXRlTWFjaGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZS5jcHAKaW5kZXggZDFhYTVjYy4uOGQ4
ZTk0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lLmNwcApA
QCAtMzgsNyArMzgsOSBAQCBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q0NTY2hlZHVsZXJTdGF0
ZU1hY2hpbmUoKQogICAgICwgbV91cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZyhmYWxzZSkKICAg
ICAsIG1faW5zaWRlVlN5bmMoZmFsc2UpCiAgICAgLCBtX3Zpc2libGUoZmFsc2UpCi0gICAgLCBt
X2NhbkRyYXcodHJ1ZSkgeyB9CisgICAgLCBtX2NhbkRyYXcodHJ1ZSkKKyAgICAsIG1fcmVzb3Vy
Y2VVcGRhdGVzUGVuZGluZyhmYWxzZSkKKyAgICAsIG1fZnJhbWVDb21wbGV0ZShmYWxzZSkgeyB9
CiAKIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBY3Rpb24gQ0NTY2hlZHVsZXJTdGF0ZU1hY2hp
bmU6Om5leHRBY3Rpb24oKSBjb25zdAogewpAQCAtNTIsMTUgKzU0LDEwIEBAIENDU2NoZWR1bGVy
U3RhdGVNYWNoaW5lOjpBY3Rpb24gQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6Om5leHRBY3Rpb24o
KSBjb25zdAogICAgICAgICAgICAgcmV0dXJuIEFDVElPTl9CRUdJTl9GUkFNRTsKICAgICAgICAg
cmV0dXJuIEFDVElPTl9OT05FOwogCi0gICAgY2FzZSBDT01NSVRfU1RBVEVfRlJBTUVfSU5fUFJP
R1JFU1M6Ci0gICAgICAgIGlmIChzaG91bGREcmF3KQotICAgICAgICAgICAgcmV0dXJuIEFDVElP
Tl9EUkFXOwotICAgICAgICByZXR1cm4gQUNUSU9OX05PTkU7Ci0KICAgICBjYXNlIENPTU1JVF9T
VEFURV9VUERBVElOR19SRVNPVVJDRVM6CiAgICAgICAgIGlmIChzaG91bGREcmF3KQogICAgICAg
ICAgICAgcmV0dXJuIEFDVElPTl9EUkFXOwotICAgICAgICBpZiAoIW1fdXBkYXRlTW9yZVJlc291
cmNlc1BlbmRpbmcpCisgICAgICAgIGlmICghbV91cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZyAm
JiBtX3Jlc291cmNlVXBkYXRlc1BlbmRpbmcpCiAgICAgICAgICAgICByZXR1cm4gQUNUSU9OX0JF
R0lOX1VQREFURV9NT1JFX1JFU09VUkNFUzsKICAgICAgICAgcmV0dXJuIEFDVElPTl9OT05FOwog
CkBAIC04OCw4ICs4NSwxMCBAQCB2b2lkIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjp1cGRhdGVT
dGF0ZShBY3Rpb24gYWN0aW9uKQogCiAgICAgY2FzZSBBQ1RJT05fQkVHSU5fRlJBTUU6CiAgICAg
ICAgIEFTU0VSVChtX3Zpc2libGUpOwotICAgICAgICBtX2NvbW1pdFN0YXRlID0gQ09NTUlUX1NU
QVRFX0ZSQU1FX0lOX1BST0dSRVNTOworICAgICAgICBBU1NFUlQoIW1fcmVzb3VyY2VVcGRhdGVz
UGVuZGluZyk7CisgICAgICAgIG1fY29tbWl0U3RhdGUgPSBDT01NSVRfU1RBVEVfVVBEQVRJTkdf
UkVTT1VSQ0VTOwogICAgICAgICBtX25lZWRzQ29tbWl0ID0gZmFsc2U7CisgICAgICAgIG1fZnJh
bWVDb21wbGV0ZSA9IGZhbHNlOwogICAgICAgICByZXR1cm47CiAKICAgICBjYXNlIEFDVElPTl9C
RUdJTl9VUERBVEVfTU9SRV9SRVNPVVJDRVM6CkBAIC0xMTIsNyArMTExLDEwIEBAIHZvaWQgQ0NT
Y2hlZHVsZXJTdGF0ZU1hY2hpbmU6OnVwZGF0ZVN0YXRlKEFjdGlvbiBhY3Rpb24pCiAgICAgICAg
ICAgICBtX2xhc3RGcmFtZU51bWJlcldoZXJlRHJhd1dhc0NhbGxlZCA9IG1fY3VycmVudEZyYW1l
TnVtYmVyOwogICAgICAgICBpZiAobV9jb21taXRTdGF0ZSA9PSBDT01NSVRfU1RBVEVfV0FJVElO
R19GT1JfRklSU1RfRFJBVykgewogICAgICAgICAgICAgQVNTRVJUKG1fbmVlZHNDb21taXQgfHwg
IW1fdmlzaWJsZSk7Ci0gICAgICAgICAgICBtX2NvbW1pdFN0YXRlID0gQ09NTUlUX1NUQVRFX0lE
TEU7CisgICAgICAgICAgICBpZiAobV9yZXNvdXJjZVVwZGF0ZXNQZW5kaW5nKQorICAgICAgICAg
ICAgICAgIG1fY29tbWl0U3RhdGUgPSBDT01NSVRfU1RBVEVfVVBEQVRJTkdfUkVTT1VSQ0VTOwor
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIG1fY29tbWl0U3RhdGUgPSBDT01NSVRf
U1RBVEVfSURMRTsKICAgICAgICAgfQogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTYxLDE4
ICsxNjMsMjggQEAgdm9pZCBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6c2V0TmVlZHNDb21taXQo
KQogICAgIG1fbmVlZHNDb21taXQgPSB0cnVlOwogfQogCit2b2lkIENDU2NoZWR1bGVyU3RhdGVN
YWNoaW5lOjpzZXRSZXNvdXJjZVVwZGF0ZXNQZW5kaW5nKCkKK3sKKyAgICBtX3Jlc291cmNlVXBk
YXRlc1BlbmRpbmcgPSB0cnVlOworfQorCiB2b2lkIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpi
ZWdpbkZyYW1lQ29tcGxldGUoKQogewotICAgIEFTU0VSVChtX2NvbW1pdFN0YXRlID09IENPTU1J
VF9TVEFURV9GUkFNRV9JTl9QUk9HUkVTUyk7Ci0gICAgbV9jb21taXRTdGF0ZSA9IENPTU1JVF9T
VEFURV9VUERBVElOR19SRVNPVVJDRVM7CisgICAgQVNTRVJUKG1fY29tbWl0U3RhdGUgPT0gQ09N
TUlUX1NUQVRFX1VQREFUSU5HX1JFU09VUkNFUyk7CisgICAgbV9mcmFtZUNvbXBsZXRlID0gdHJ1
ZTsKKyAgICBpZiAoIW1fdXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmcgJiYgIW1fcmVzb3VyY2VV
cGRhdGVzUGVuZGluZykKKyAgICAgICAgbV9jb21taXRTdGF0ZSA9IENPTU1JVF9TVEFURV9SRUFE
WV9UT19DT01NSVQ7CisgICAgZWxzZQorICAgICAgICBtX2NvbW1pdFN0YXRlID0gQ09NTUlUX1NU
QVRFX1VQREFUSU5HX1JFU09VUkNFUzsKIH0KIAotdm9pZCBDQ1NjaGVkdWxlclN0YXRlTWFjaGlu
ZTo6YmVnaW5VcGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUoYm9vbCBtb3JlUGVuZGluZykKK3Zv
aWQgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OnVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZShi
b29sIG1vcmVQZW5kaW5nKQogewogICAgIEFTU0VSVChtX2NvbW1pdFN0YXRlID09IENPTU1JVF9T
VEFURV9VUERBVElOR19SRVNPVVJDRVMpOwogICAgIEFTU0VSVChtX3VwZGF0ZU1vcmVSZXNvdXJj
ZXNQZW5kaW5nKTsKICAgICBtX3VwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nID0gZmFsc2U7Ci0g
ICAgaWYgKCFtb3JlUGVuZGluZykKKyAgICBtX3Jlc291cmNlVXBkYXRlc1BlbmRpbmcgPSBtb3Jl
UGVuZGluZzsKKyAgICBpZiAoIW1vcmVQZW5kaW5nICYmIG1fZnJhbWVDb21wbGV0ZSkKICAgICAg
ICAgbV9jb21taXRTdGF0ZSA9IENPTU1JVF9TVEFURV9SRUFEWV9UT19DT01NSVQ7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
U2NoZWR1bGVyU3RhdGVNYWNoaW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZS5oCmluZGV4IDdkZTcxODguLmNh
ODMxMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUuaApAQCAt
NDUsNyArNDUsNiBAQCBwdWJsaWM6CiAKICAgICBlbnVtIENvbW1pdFN0YXRlIHsKICAgICAgICAg
Q09NTUlUX1NUQVRFX0lETEUsCi0gICAgICAgIENPTU1JVF9TVEFURV9GUkFNRV9JTl9QUk9HUkVT
UywKICAgICAgICAgQ09NTUlUX1NUQVRFX1VQREFUSU5HX1JFU09VUkNFUywKICAgICAgICAgQ09N
TUlUX1NUQVRFX1JFQURZX1RPX0NPTU1JVCwKICAgICAgICAgQ09NTUlUX1NUQVRFX1dBSVRJTkdf
Rk9SX0ZJUlNUX0RSQVcsCkBAIC05MywxNCArOTIsMTcgQEAgcHVibGljOgogICAgIC8vIHRocmVh
ZCB0byBtYWluLgogICAgIHZvaWQgc2V0TmVlZHNDb21taXQoKTsKIAorICAgIC8vIEluZGljYXRl
cyB0aGF0IGNvbXBvc2l0b3IgcmVzb3VyY2VzIHRoYXQgbmVlZCB1cGRhdGluZyBhcmUgcGVuZGlu
Zy4KKyAgICB2b2lkIHNldFJlc291cmNlVXBkYXRlc1BlbmRpbmcoKTsKKwogICAgIC8vIENhbGwg
dGhpcyBvbmx5IGluIHJlc3BvbnNlIHRvIHJlY2VpdmluZyBhbiBBQ1RJT05fQkVHSU5fRlJBTUUK
ICAgICAvLyBmcm9tIG5leHRTdGF0ZS4gSW5kaWNhdGVzIHRoYXQgYWxsIHBhaW50aW5nIGlzIGNv
bXBsZXRlIGFuZCB0aGF0Ci0gICAgLy8gdXBkYXRpbmcgb2YgY29tcG9zaXRvciByZXNvdXJjZXMg
Y2FuIGJlZ2luLgorICAgIC8vIG9ubHkgdXBkYXRpbmcgb2YgY29tcG9zaXRvciByZXNvdXJjZXMg
aXMgbGVmdC4KICAgICB2b2lkIGJlZ2luRnJhbWVDb21wbGV0ZSgpOwogCiAgICAgLy8gQ2FsbCB0
aGlzIG9ubHkgaW4gcmVzcG9uc2UgdG8gcmVjZWl2aW5nIGFuIEFDVElPTl9VUERBVEVfTU9SRV9S
RVNPVVJDRVMKICAgICAvLyBmcm9tIG5leHRTdGF0ZS4gSW5kaWNhdGVzIHRoYXQgdGhlIHNwZWNp
ZmljIHVwZGF0ZSByZXF1ZXN0IGNvbXBsZXRlZC4KLSAgICB2b2lkIGJlZ2luVXBkYXRlTW9yZVJl
c291cmNlc0NvbXBsZXRlKGJvb2wgbW9yZVBlbmRpbmcpOworICAgIHZvaWQgdXBkYXRlTW9yZVJl
c291cmNlc0NvbXBsZXRlKGJvb2wgbW9yZVBlbmRpbmcpOwogCiAgICAgLy8gSW5kaWNhdGVzIHdo
ZXRoZXIgZHJhd2luZyB3b3VsZCwgYXQgdGhpcyB0aW1lLCBtYWtlIHNlbnNlLgogICAgIC8vIGNh
bkRyYXcgY2FuIGJlIHVzZWQgdG8gc3VwcmVzcyBmbGFzaGVzIG9yIGNoZWNrZXJib2FyZGluZwpA
QCAtMTE5LDYgKzEyMSw4IEBAIHByb3RlY3RlZDoKICAgICBib29sIG1faW5zaWRlVlN5bmM7CiAg
ICAgYm9vbCBtX3Zpc2libGU7CiAgICAgYm9vbCBtX2NhbkRyYXc7CisgICAgYm9vbCBtX3Jlc291
cmNlVXBkYXRlc1BlbmRpbmc7CisgICAgYm9vbCBtX2ZyYW1lQ29tcGxldGU7CiB9OwogCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1RocmVhZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCmluZGV4IDI2Mjk5ODUuLmE0MGY4MGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFk
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDVGhyZWFkUHJveHkuY3BwCkBAIC00MzAsNiArNDMwLDkgQEAgdm9pZCBDQ1RocmVhZFBy
b3h5Ojp1cGRhdGVUZXh0dXJlT25JbXBsVGhyZWFkKFBhc3NPd25QdHI8VXBkYXRlRW50cnk+IGVu
dHJ5KQogICAgICAgICBtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZCA9IGFkb3B0
UHRyKG5ldyBDQ1RleHR1cmVVcGRhdGVyKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRlbnRzVGV4
dHVyZUFsbG9jYXRvcigpKSk7CiAKICAgICBtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRo
cmVhZC0+YXBwZW5kKGVudHJ5LT5tX3RleHR1cmUsIGVudHJ5LT5tX3NvdXJjZVJlY3QsIGVudHJ5
LT5tX2Rlc3RSZWN0KTsKKworICAgIGlmICghbV9sYXllclRyZWVIb3N0SW1wbC0+c2V0dGluZ3Mo
KS5kZWxheVRleHR1cmVVcGRhdGVzKQorICAgICAgICBtX3NjaGVkdWxlck9uSW1wbFRocmVhZC0+
c2V0UmVzb3VyY2VVcGRhdGVzUGVuZGluZygpOwogfQogCiB2b2lkIENDVGhyZWFkUHJveHk6OmJl
Z2luRnJhbWVDb21wbGV0ZU9uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCogY29tcGxldGlv
bikKQEAgLTQ0NSw2ICs0NDgsMTAgQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQ29t
cGxldGVPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqIGNvbXBsZXRpb24KIAogICAgIG1f
Y29tbWl0Q29tcGxldGlvbkV2ZW50T25JbXBsVGhyZWFkID0gY29tcGxldGlvbjsKIAorICAgIGlm
IChtX2xheWVyVHJlZUhvc3RJbXBsLT5zZXR0aW5ncygpLmRlbGF5VGV4dHVyZVVwZGF0ZXMKKyAg
ICAgICAgJiYgaGFzTW9yZVJlc291cmNlVXBkYXRlcygpKQorICAgICAgICBtX3NjaGVkdWxlck9u
SW1wbFRocmVhZC0+c2V0UmVzb3VyY2VVcGRhdGVzUGVuZGluZygpOworCiAgICAgbV9zY2hlZHVs
ZXJPbkltcGxUaHJlYWQtPmJlZ2luRnJhbWVDb21wbGV0ZSgpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5l
VGVzdC5jcHAKaW5kZXggMzkwOGY0MC4uZmFhMTkwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LmNw
cApAQCAtMzcsNyArMzcsNiBAQCBuYW1lc3BhY2UgewogCiBjb25zdCBDQ1NjaGVkdWxlclN0YXRl
TWFjaGluZTo6Q29tbWl0U3RhdGUgYWxsQ29tbWl0U3RhdGVzW10gPSB7CiAgICAgQ0NTY2hlZHVs
ZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9JRExFLAotICAgIENDU2NoZWR1bGVyU3RhdGVN
YWNoaW5lOjpDT01NSVRfU1RBVEVfRlJBTUVfSU5fUFJPR1JFU1MsCiAgICAgQ0NTY2hlZHVsZXJT
dGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9VUERBVElOR19SRVNPVVJDRVMsCiAgICAgQ0NTY2hl
ZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9SRUFEWV9UT19DT01NSVQsCiAgICAgQ0NT
Y2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9XQUlUSU5HX0ZPUl9GSVJTVF9EUkFX
CkBAIC02NCw2ICs2MywxMiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldFVwZGF0ZU1vcmVSZXNv
dXJjZXNQZW5kaW5nKGJvb2wgYikgeyBtX3VwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nID0gYjsg
fQogICAgIGJvb2wgdXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmcoKSBjb25zdCB7IHJldHVybiBt
X3VwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nOyB9CisKKyAgICB2b2lkIHNldFJlc291cmNlVXBk
YXRlc1BlbmRpbmcoYm9vbCBiKSB7IG1fcmVzb3VyY2VVcGRhdGVzUGVuZGluZyA9IGI7IH0KKyAg
ICBib29sIHJlc291cmNlVXBkYXRlc1BlbmRpbmcoKSBjb25zdCB7IHJldHVybiBtX3Jlc291cmNl
VXBkYXRlc1BlbmRpbmc7IH0KKworICAgIHZvaWQgc2V0RnJhbWVDb21wbGV0ZShib29sIGIpIHsg
bV9mcmFtZUNvbXBsZXRlID0gYjsgfQorICAgIGJvb2wgZnJhbWVDb21wbGV0ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fZnJhbWVDb21wbGV0ZTsgfQogfTsKIAogVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFj
aGluZVRlc3QsIFRlc3ROZXh0QWN0aW9uQmVnaW5zRnJhbWVJZk5lZWRlZCkKQEAgLTEwMiw3ICsx
MDcsNyBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdE5leHRBY3Rpb25C
ZWdpbnNGcmFtZUlmTmVlZGVkKQogICAgICAgICBTdGF0ZU1hY2hpbmUgc3RhdGU7CiAgICAgICAg
IHN0YXRlLnNldFZpc2libGUodHJ1ZSk7CiAgICAgICAgIHN0YXRlLnVwZGF0ZVN0YXRlKENDU2No
ZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fRlJBTUUpOwotICAgICAgICBFWFBFQ1Rf
RVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9GUkFNRV9JTl9QUk9HUkVT
Uywgc3RhdGUuY29tbWl0U3RhdGUoKSk7CisgICAgICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0
YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX1VQREFUSU5HX1JFU09VUkNFUywgc3RhdGUuY29tbWl0
U3RhdGUoKSk7CiAgICAgICAgIEVYUEVDVF9GQUxTRShzdGF0ZS5uZWVkc0NvbW1pdCgpKTsKICAg
ICAgICAgRVhQRUNUX0ZBTFNFKHN0YXRlLnZzeW5jQ2FsbGJhY2tOZWVkZWQoKSk7CiAgICAgfQpA
QCAtMzA1LDYgKzMxMCw4IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0
VXBkYXRlc19Ob1JlZHJhd19PbmVSb3VuZE9mVXBkYXRlcykKICAgICBzdGF0ZS5zZXROZWVkc1Jl
ZHJhdyhmYWxzZSk7CiAgICAgc3RhdGUuc2V0VXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmcoZmFs
c2UpOwogICAgIHN0YXRlLnNldFZpc2libGUodHJ1ZSk7CisgICAgc3RhdGUuc2V0UmVzb3VyY2VV
cGRhdGVzUGVuZGluZyh0cnVlKTsKKyAgICBzdGF0ZS5zZXRGcmFtZUNvbXBsZXRlKHRydWUpOwog
CiAgICAgLy8gVmVyaWZ5IHdlIGJlZ2luIHVwZGF0ZSwgYm90aCBmb3IgdnN5bmMgYW5kIG5vdCB2
c3luYy4KICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJ
Tl9VUERBVEVfTU9SRV9SRVNPVVJDRVMsIHN0YXRlLm5leHRBY3Rpb24oKSk7CkBAIC0zMjEsNyAr
MzI4LDcgQEAgVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RVcGRhdGVzX05v
UmVkcmF3X09uZVJvdW5kT2ZVcGRhdGVzKQogICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRl
TWFjaGluZTo6QUNUSU9OX05PTkUsIHN0YXRlLm5leHRBY3Rpb24oKSk7CiAKICAgICAvLyBFbmQg
dXBkYXRlIHdpdGggbm8gbW9yZSB1cGRhdGVzIHBlbmRpbmcuCi0gICAgc3RhdGUuYmVnaW5VcGRh
dGVNb3JlUmVzb3VyY2VzQ29tcGxldGUoZmFsc2UpOworICAgIHN0YXRlLnVwZGF0ZU1vcmVSZXNv
dXJjZXNDb21wbGV0ZShmYWxzZSk7CiAgICAgc3RhdGUuZGlkTGVhdmVWU3luYygpOwogICAgIEVY
UEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0NPTU1JVCwgc3RhdGUubmV4
dEFjdGlvbigpKTsKIH0KQEAgLTMzMyw2ICszNDAsOCBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVN
YWNoaW5lVGVzdCwgVGVzdFVwZGF0ZXNfTm9SZWRyYXdfVHdvUm91bmRzT2ZVcGRhdGVzKQogICAg
IHN0YXRlLnNldE5lZWRzUmVkcmF3KGZhbHNlKTsKICAgICBzdGF0ZS5zZXRVcGRhdGVNb3JlUmVz
b3VyY2VzUGVuZGluZyhmYWxzZSk7CiAgICAgc3RhdGUuc2V0VmlzaWJsZSh0cnVlKTsKKyAgICBz
dGF0ZS5zZXRSZXNvdXJjZVVwZGF0ZXNQZW5kaW5nKHRydWUpOworICAgIHN0YXRlLnNldEZyYW1l
Q29tcGxldGUodHJ1ZSk7CiAKICAgICAvLyBWZXJpZnkgdGhlIHVwZGF0ZSBiZWdpbnMsIGJvdGgg
Zm9yIHZzeW5jIGFuZCBub3QgdnN5bmMuCiAgICAgc3RhdGUuZGlkRW50ZXJWU3luYygpOwpAQCAt
MzQ5LDcgKzM1OCw3IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0VXBk
YXRlc19Ob1JlZHJhd19Ud29Sb3VuZHNPZlVwZGF0ZXMpCiAgICAgRVhQRUNUX0VRKENDU2NoZWR1
bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fTk9ORSwgc3RhdGUubmV4dEFjdGlvbigpKTsKIAogICAg
IC8vIEFjayB0aGUgdXBkYXRlIHdpdGggbW9yZSBwZW5kaW5nLgotICAgIHN0YXRlLmJlZ2luVXBk
YXRlTW9yZVJlc291cmNlc0NvbXBsZXRlKHRydWUpOworICAgIHN0YXRlLnVwZGF0ZU1vcmVSZXNv
dXJjZXNDb21wbGV0ZSh0cnVlKTsKIAogICAgIC8vIFZlcmlmeSB3ZSB1cGRhdGUgbW9yZSwgYm90
aCBmb3IgdnN5bmMgYW5kIG5vdCB2c3luYy4KICAgICBzdGF0ZS5kaWRMZWF2ZVZTeW5jKCk7CkBA
IC0zNTksNyArMzY4LDcgQEAgVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RV
cGRhdGVzX05vUmVkcmF3X1R3b1JvdW5kc09mVXBkYXRlcykKIAogICAgIC8vIEJlZ2luIGFub3Ro
ZXIgdXBkYXRlLCB3aGlsZSBpbnNpZGUgdnN5bmMuIEFuZCwgaXQgdXBkYXRpbmcuCiAgICAgc3Rh
dGUudXBkYXRlU3RhdGUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9VUERB
VEVfTU9SRV9SRVNPVVJDRVMpOwotICAgIHN0YXRlLmJlZ2luVXBkYXRlTW9yZVJlc291cmNlc0Nv
bXBsZXRlKGZhbHNlKTsKKyAgICBzdGF0ZS51cGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUoZmFs
c2UpOwogCiAgICAgLy8gTWFrZSBzdXJlIHdlIGNvbW1pdCwgaW5kZXBlbmRlbnQgb2YgdnN5bmMu
CiAgICAgc3RhdGUuZGlkTGVhdmVWU3luYygpOwpAQCAtMzc1LDYgKzM4NCw5IEBAIFRFU1QoQ0NT
Y2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0VXBkYXRlc19XaXRoUmVkcmF3X09uZVJvdW5k
T2ZVcGRhdGVzKQogICAgIHN0YXRlLnNldE5lZWRzUmVkcmF3KHRydWUpOwogICAgIHN0YXRlLnNl
dFVwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nKGZhbHNlKTsKICAgICBzdGF0ZS5zZXRWaXNpYmxl
KHRydWUpOworICAgIHN0YXRlLnNldFJlc291cmNlVXBkYXRlc1BlbmRpbmcodHJ1ZSk7CisgICAg
c3RhdGUuc2V0RnJhbWVDb21wbGV0ZSh0cnVlKTsKKwogICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxl
clN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUywgc3RhdGUu
bmV4dEFjdGlvbigpKTsKIAogICAgIC8vIEJlZ2luIGFuIHVwZGF0ZS4KQEAgLTM5Miw3ICs0MDQs
NyBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdFVwZGF0ZXNfV2l0aFJl
ZHJhd19PbmVSb3VuZE9mVXBkYXRlcykKICAgICBzdGF0ZS5kaWRMZWF2ZVZTeW5jKCk7CiAKICAg
ICAvLyBGaW5pc2ggdXBkYXRlIGJ1dCBsZWF2ZSBtb3JlIHJlc291cmNlcyBwZW5kaW5nLgotICAg
IHN0YXRlLmJlZ2luVXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRlKHRydWUpOworICAgIHN0YXRl
LnVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZSh0cnVlKTsKIAogICAgIC8vIFZlcmlmeSB0aGF0
IHJlZ2FyZGxlc3Mgb2YgdnN5bmMsIHdlIHVwZGF0ZSBzb21lIG1vcmUuCiAgICAgc3RhdGUuZGlk
TGVhdmVWU3luYygpOwpAQCAtNDA2LDcgKzQxOCw3IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1h
Y2hpbmVUZXN0LCBUZXN0VXBkYXRlc19XaXRoUmVkcmF3X09uZVJvdW5kT2ZVcGRhdGVzKQogICAg
IHN0YXRlLmRpZEVudGVyVlN5bmMoKTsKICAgICBzdGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxl
clN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUyk7CiAgICAg
c3RhdGUuZGlkTGVhdmVWU3luYygpOwotICAgIHN0YXRlLmJlZ2luVXBkYXRlTW9yZVJlc291cmNl
c0NvbXBsZXRlKGZhbHNlKTsKKyAgICBzdGF0ZS51cGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUo
ZmFsc2UpOwogCiAgICAgLy8gVmVyaWZ5IHdlIGNvbW1pdCByZWdhcmRsZXNzIG9mIHZzeW5jIHN0
YXRlCiAgICAgc3RhdGUuZGlkTGVhdmVWU3luYygpOwpAQCAtNDI0LDcgKzQzNiwxMSBAQCBURVNU
KENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdFNldE5lZWRzQ29tbWl0SXNOb3RMb3N0
KQogICAgIC8vIEJlZ2luIHRoZSBmcmFtZS4KICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0
ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9GUkFNRSwgc3RhdGUubmV4dEFjdGlvbigpKTsKICAgICBz
dGF0ZS51cGRhdGVTdGF0ZShzdGF0ZS5uZXh0QWN0aW9uKCkpOwotICAgIEVYUEVDVF9FUShDQ1Nj
aGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX0ZSQU1FX0lOX1BST0dSRVNTLCBzdGF0
ZS5jb21taXRTdGF0ZSgpKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6
OkNPTU1JVF9TVEFURV9VUERBVElOR19SRVNPVVJDRVMsIHN0YXRlLmNvbW1pdFN0YXRlKCkpOwor
CisgICAgLy8gUmVjZWl2ZSByZXNvdXJjZSB0aGF0IG5lZWQgdXBkYXRlLgorICAgIHN0YXRlLnNl
dFJlc291cmNlVXBkYXRlc1BlbmRpbmcodHJ1ZSk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVy
U3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfVVBEQVRJTkdfUkVTT1VSQ0VTLCBzdGF0ZS5jb21t
aXRTdGF0ZSgpKTsKIAogICAgIC8vIE5vdywgd2hpbGUgdGhlIGZyYW1lIGlzIGluIHByb2dyZXNz
LCBzZXQgYW5vdGhlciBjb21taXQuCiAgICAgc3RhdGUuc2V0TmVlZHNDb21taXQodHJ1ZSk7CkBA
IC00MzYsNyArNDUyLDcgQEAgVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RT
ZXROZWVkc0NvbW1pdElzTm90TG9zdCkKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1h
Y2hpbmU6OkFDVElPTl9CRUdJTl9VUERBVEVfTU9SRV9SRVNPVVJDRVMsIHN0YXRlLm5leHRBY3Rp
b24oKSk7CiAgICAgc3RhdGUudXBkYXRlU3RhdGUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFD
VElPTl9CRUdJTl9VUERBVEVfTU9SRV9SRVNPVVJDRVMpOwogICAgIEVYUEVDVF9FUShDQ1NjaGVk
dWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX05PTkUsIHN0YXRlLm5leHRBY3Rpb24oKSk7Ci0gICAg
c3RhdGUuYmVnaW5VcGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUoZmFsc2UpOworICAgIHN0YXRl
LnVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZShmYWxzZSk7CiAgICAgRVhQRUNUX0VRKENDU2No
ZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfUkVBRFlfVE9fQ09NTUlULCBzdGF0ZS5j
b21taXRTdGF0ZSgpKTsKIAogICAgIC8vIEV4cGVjdCB0byBjb21taXQgcmVnYXJkbGVzcyBvZiB2
c3luYyBzdGF0ZS4KQEAgLTQ2NywxMCArNDgzLDE0IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1h
Y2hpbmVUZXN0LCBUZXN0RnVsbEN5Y2xlKQogCiAgICAgLy8gQmVnaW4gdGhlIGZyYW1lLgogICAg
IHN0YXRlLnVwZGF0ZVN0YXRlKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5f
RlJBTUUpOwotICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NU
QVRFX0ZSQU1FX0lOX1BST0dSRVNTLCBzdGF0ZS5jb21taXRTdGF0ZSgpKTsKKyAgICBFWFBFQ1Rf
RVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9VUERBVElOR19SRVNPVVJD
RVMsIHN0YXRlLmNvbW1pdFN0YXRlKCkpOwogICAgIEVYUEVDVF9GQUxTRShzdGF0ZS5uZWVkc0Nv
bW1pdCgpKTsKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9O
T05FLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwogCisgICAgLy8gUmVjZWl2ZSByZXNvdXJjZS4KKyAg
ICBzdGF0ZS5zZXRSZXNvdXJjZVVwZGF0ZXNQZW5kaW5nKHRydWUpOworICAgIEVYUEVDVF9FUShD
Q1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX1VQREFUSU5HX1JFU09VUkNFUywg
c3RhdGUuY29tbWl0U3RhdGUoKSk7CisKICAgICAvLyBUZWxsIHRoZSBzY2hlZHVsZXIgdGhlIGZy
YW1lIGZpbmlzaGVkLgogICAgIHN0YXRlLmJlZ2luRnJhbWVDb21wbGV0ZSgpOwogICAgIEVYUEVD
VF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX1VQREFUSU5HX1JFU09V
UkNFUywgc3RhdGUuY29tbWl0U3RhdGUoKSk7CkBAIC00NzgsNyArNDk4LDcgQEAgVEVTVChDQ1Nj
aGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RGdWxsQ3ljbGUpCiAKICAgICAvLyBUZWxsIHRo
ZSBzY2hlZHVsZXIgdGhlIHVwZGF0ZSBiZWdhbiBhbmQgZmluaXNoZWQKICAgICBzdGF0ZS51cGRh
dGVTdGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX1VQREFURV9NT1JF
X1JFU09VUkNFUyk7Ci0gICAgc3RhdGUuYmVnaW5VcGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUo
ZmFsc2UpOworICAgIHN0YXRlLnVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZShmYWxzZSk7CiAg
ICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfUkVBRFlf
VE9fQ09NTUlULCBzdGF0ZS5jb21taXRTdGF0ZSgpKTsKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVs
ZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9DT01NSVQsIHN0YXRlLm5leHRBY3Rpb24oKSk7CiAKQEAg
LTUxMyw3ICs1MzMsNyBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdEZ1
bGxDeWNsZVdpdGhDb21taXRSZXF1ZXN0SW5iZXR3ZWVuKQogCiAgICAgLy8gQmVnaW4gdGhlIGZy
YW1lLgogICAgIHN0YXRlLnVwZGF0ZVN0YXRlKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJ
T05fQkVHSU5fRlJBTUUpOwotICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6
Q09NTUlUX1NUQVRFX0ZSQU1FX0lOX1BST0dSRVNTLCBzdGF0ZS5jb21taXRTdGF0ZSgpKTsKKyAg
ICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9VUERBVElO
R19SRVNPVVJDRVMsIHN0YXRlLmNvbW1pdFN0YXRlKCkpOwogICAgIEVYUEVDVF9GQUxTRShzdGF0
ZS5uZWVkc0NvbW1pdCgpKTsKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6
OkFDVElPTl9OT05FLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwogCkBAIC01MjEsNiArNTQxLDEwIEBA
IFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0RnVsbEN5Y2xlV2l0aENvbW1p
dFJlcXVlc3RJbmJldHdlZW4pCiAgICAgc3RhdGUuc2V0TmVlZHNDb21taXQodHJ1ZSk7CiAgICAg
RVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fTk9ORSwgc3RhdGUubmV4
dEFjdGlvbigpKTsKIAorICAgIC8vIFJlY2VpdmUgcmVzb3VyY2UuCisgICAgc3RhdGUuc2V0UmVz
b3VyY2VVcGRhdGVzUGVuZGluZyh0cnVlKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0
ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9VUERBVElOR19SRVNPVVJDRVMsIHN0YXRlLmNvbW1pdFN0
YXRlKCkpOworCiAgICAgLy8gVGVsbCB0aGUgc2NoZWR1bGVyIHRoZSBmcmFtZSBmaW5pc2hlZC4K
ICAgICBzdGF0ZS5iZWdpbkZyYW1lQ29tcGxldGUoKTsKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVs
ZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9VUERBVElOR19SRVNPVVJDRVMsIHN0YXRlLmNv
bW1pdFN0YXRlKCkpOwpAQCAtNTI4LDcgKzU1Miw3IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1h
Y2hpbmVUZXN0LCBUZXN0RnVsbEN5Y2xlV2l0aENvbW1pdFJlcXVlc3RJbmJldHdlZW4pCiAKICAg
ICAvLyBUZWxsIHRoZSBzY2hlZHVsZXIgdGhlIHVwZGF0ZSBiZWdhbiBhbmQgZmluaXNoZWQKICAg
ICBzdGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lO
X1VQREFURV9NT1JFX1JFU09VUkNFUyk7Ci0gICAgc3RhdGUuYmVnaW5VcGRhdGVNb3JlUmVzb3Vy
Y2VzQ29tcGxldGUoZmFsc2UpOworICAgIHN0YXRlLnVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0
ZShmYWxzZSk7CiAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRf
U1RBVEVfUkVBRFlfVE9fQ09NTUlULCBzdGF0ZS5jb21taXRTdGF0ZSgpKTsKICAgICBFWFBFQ1Rf
RVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9DT01NSVQsIHN0YXRlLm5leHRBY3Rp
b24oKSk7CiAKQEAgLTU3MCwxMyArNTk0LDE3IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hp
bmVUZXN0LCBUZXN0R29lc0ludmlzaWJsZU1pZENvbW1pdCkKIAogICAgIC8vIEJlZ2luIHRoZSBm
cmFtZSB3aGlsZSB2aXNpYmxlLgogICAgIHN0YXRlLnVwZGF0ZVN0YXRlKENDU2NoZWR1bGVyU3Rh
dGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fRlJBTUUpOwotICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxl
clN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX0ZSQU1FX0lOX1BST0dSRVNTLCBzdGF0ZS5jb21t
aXRTdGF0ZSgpKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1J
VF9TVEFURV9VUERBVElOR19SRVNPVVJDRVMsIHN0YXRlLmNvbW1pdFN0YXRlKCkpOwogICAgIEVY
UEVDVF9GQUxTRShzdGF0ZS5uZWVkc0NvbW1pdCgpKTsKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVs
ZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9OT05FLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwogCiAgICAg
Ly8gQmVjb21lIGludmlzaWJsZQogICAgIHN0YXRlLnNldFZpc2libGUoZmFsc2UpOwogCisgICAg
Ly8gUmVjZWl2ZSByZXNvdXJjZS4KKyAgICBzdGF0ZS5zZXRSZXNvdXJjZVVwZGF0ZXNQZW5kaW5n
KHRydWUpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NU
QVRFX1VQREFUSU5HX1JFU09VUkNFUywgc3RhdGUuY29tbWl0U3RhdGUoKSk7CisKICAgICAvLyBU
ZWxsIHRoZSBzY2hlZHVsZXIgdGhlIGZyYW1lIGZpbmlzaGVkCiAgICAgc3RhdGUuYmVnaW5GcmFt
ZUNvbXBsZXRlKCk7CiAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01N
SVRfU1RBVEVfVVBEQVRJTkdfUkVTT1VSQ0VTLCBzdGF0ZS5jb21taXRTdGF0ZSgpKTsKQEAgLTU4
NCw3ICs2MTIsNyBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdEdvZXNJ
bnZpc2libGVNaWRDb21taXQpCiAKICAgICAvLyBUZWxsIHRoZSBzY2hlZHVsZXIgdGhlIHVwZGF0
ZSBiZWdhbiBhbmQgZmluaXNoZWQKICAgICBzdGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxlclN0
YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUyk7Ci0gICAgc3Rh
dGUuYmVnaW5VcGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUoZmFsc2UpOworICAgIHN0YXRlLnVw
ZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZShmYWxzZSk7CiAgICAgRVhQRUNUX0VRKENDU2NoZWR1
bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfUkVBRFlfVE9fQ09NTUlULCBzdGF0ZS5jb21t
aXRTdGF0ZSgpKTsKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElP
Tl9DT01NSVQsIHN0YXRlLm5leHRBY3Rpb24oKSk7CiAKQEAgLTYwNCw0ICs2MzIsNjUgQEAgVEVT
VChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RHb2VzSW52aXNpYmxlTWlkQ29tbWl0
KQogICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX05PTkUsIHN0
YXRlLm5leHRBY3Rpb24oKSk7CiB9CiAKK1RFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0
LCBUZXN0Tm9SZXNvdXJjZVVwZGF0ZXMpCit7CisgICAgU3RhdGVNYWNoaW5lIHN0YXRlOworICAg
IHN0YXRlLnNldFZpc2libGUodHJ1ZSk7CisKKyAgICAvLyBTdGFydCBjbGVhbiBhbmQgc2V0IGNv
bW1pdC4KKyAgICBzdGF0ZS5zZXROZWVkc0NvbW1pdCh0cnVlKTsKKyAgICBFWFBFQ1RfRVEoQ0NT
Y2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9GUkFNRSwgc3RhdGUubmV4dEFjdGlv
bigpKTsKKworICAgIC8vIEJlZ2luIHRoZSBmcmFtZS4KKyAgICBzdGF0ZS51cGRhdGVTdGF0ZShD
Q1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX0ZSQU1FKTsKKyAgICBFWFBFQ1Rf
RVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9VUERBVElOR19SRVNPVVJD
RVMsIHN0YXRlLmNvbW1pdFN0YXRlKCkpOworICAgIEVYUEVDVF9GQUxTRShzdGF0ZS5uZWVkc0Nv
bW1pdCgpKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9O
T05FLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworCisgICAgLy8gVGVsbCB0aGUgc2NoZWR1bGVyIHRo
ZSBmcmFtZSBmaW5pc2hlZC4KKyAgICBzdGF0ZS5iZWdpbkZyYW1lQ29tcGxldGUoKTsKKyAgICBF
WFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9SRUFEWV9UT19D
T01NSVQsIHN0YXRlLmNvbW1pdFN0YXRlKCkpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0
YXRlTWFjaGluZTo6QUNUSU9OX0NPTU1JVCwgc3RhdGUubmV4dEFjdGlvbigpKTsKK30KKworVEVT
VChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3ROb1Jlc291cmNlUGVuZGluZykKK3sK
KyAgICBTdGF0ZU1hY2hpbmUgc3RhdGU7CisgICAgc3RhdGUuc2V0VmlzaWJsZSh0cnVlKTsKKwor
ICAgIC8vIFN0YXJ0IGNsZWFuIGFuZCBzZXQgY29tbWl0LgorICAgIHN0YXRlLnNldE5lZWRzQ29t
bWl0KHRydWUpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9O
X0JFR0lOX0ZSQU1FLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworCisgICAgLy8gQmVnaW4gdGhlIGZy
YW1lLgorICAgIHN0YXRlLnVwZGF0ZVN0YXRlKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJ
T05fQkVHSU5fRlJBTUUpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6
Q09NTUlUX1NUQVRFX1VQREFUSU5HX1JFU09VUkNFUywgc3RhdGUuY29tbWl0U3RhdGUoKSk7Cisg
ICAgRVhQRUNUX0ZBTFNFKHN0YXRlLm5lZWRzQ29tbWl0KCkpOworICAgIEVYUEVDVF9FUShDQ1Nj
aGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX05PTkUsIHN0YXRlLm5leHRBY3Rpb24oKSk7CisK
KyAgICAvLyBSZWNlaXZlIHJlc291cmNlLgorICAgIHN0YXRlLnNldFJlc291cmNlVXBkYXRlc1Bl
bmRpbmcodHJ1ZSk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01N
SVRfU1RBVEVfVVBEQVRJTkdfUkVTT1VSQ0VTLCBzdGF0ZS5jb21taXRTdGF0ZSgpKTsKKworICAg
IC8vIFRlbGwgdGhlIHNjaGVkdWxlciB0aGUgdXBkYXRlIGJlZ2FuIGFuZCBmaW5pc2hlZC4KKyAg
ICBzdGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lO
X1VQREFURV9NT1JFX1JFU09VUkNFUyk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVN
YWNoaW5lOjpDT01NSVRfU1RBVEVfVVBEQVRJTkdfUkVTT1VSQ0VTLCBzdGF0ZS5jb21taXRTdGF0
ZSgpKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9OT05F
LCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworICAgIHN0YXRlLnVwZGF0ZU1vcmVSZXNvdXJjZXNDb21w
bGV0ZSh0cnVlKTsKKworICAgIC8vIFRlbGwgdGhlIHNjaGVkdWxlciBhbm90aGVyIHVwZGF0ZSBi
ZWdhbiBhbmQgZmluaXNoZWQuCisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5l
OjpBQ1RJT05fQkVHSU5fVVBEQVRFX01PUkVfUkVTT1VSQ0VTLCBzdGF0ZS5uZXh0QWN0aW9uKCkp
OworICAgIHN0YXRlLnVwZGF0ZVN0YXRlKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05f
QkVHSU5fVVBEQVRFX01PUkVfUkVTT1VSQ0VTKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJT
dGF0ZU1hY2hpbmU6OkFDVElPTl9OT05FLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworICAgIHN0YXRl
LnVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZShmYWxzZSk7CisKKyAgICAvLyBObyBwZW5kaW5n
IHJlc291cmNlcyB0byB1cGRhdGUuCisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNo
aW5lOjpBQ1RJT05fTk9ORSwgc3RhdGUubmV4dEFjdGlvbigpKTsKKworICAgIC8vIFRlbGwgdGhl
IHNjaGVkdWxlciB0aGUgZnJhbWUgZmluaXNoZWQuCisgICAgc3RhdGUuYmVnaW5GcmFtZUNvbXBs
ZXRlKCk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RB
VEVfUkVBRFlfVE9fQ09NTUlULCBzdGF0ZS5jb21taXRTdGF0ZSgpKTsKKyAgICBFWFBFQ1RfRVEo
Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9DT01NSVQsIHN0YXRlLm5leHRBY3Rpb24o
KSk7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NT
Y2hlZHVsZXJUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NTY2hlZHVs
ZXJUZXN0LmNwcAppbmRleCA0NzU5ODdmLi40OWMxMmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL0NDU2NoZWR1bGVyVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9DQ1NjaGVkdWxlclRlc3QuY3BwCkBAIC04MSwxMyArODEsMTAgQEAg
VEVTVChDQ1NjaGVkdWxlclRlc3QsIFJlcXVlc3RDb21taXQpCiAgICAgY2xpZW50LnJlc2V0KCk7
CiAKICAgICAvLyBTaW5jZSwgaGFzTW9yZVJlc291cmNlVXBkYXRlcyBpcyBzZXQgdG8gZmFsc2Us
Ci0gICAgLy8gYmVnaW5GcmFtZUNvbXBsZXRlIHNob3VsZCB1cGRhdGVNb3JlUmVzb3VyY2VzLCB0
aGVuCi0gICAgLy8gY29tbWl0CisgICAgLy8gYmVnaW5GcmFtZUNvbXBsZXRlIHNob3VsZCBjb21t
aXQgaW1tZWRpYXRlbHkuCiAgICAgc2NoZWR1bGVyLT5iZWdpbkZyYW1lQ29tcGxldGUoKTsKLSAg
ICBFWFBFQ1RfRVEoMiwgY2xpZW50Lm51bUFjdGlvbnMoKSk7Ci0gICAgRVhQRUNUX1NUUkVRKCJz
Y2hlZHVsZWRBY3Rpb25VcGRhdGVNb3JlUmVzb3VyY2VzIiwgY2xpZW50LmFjdGlvbigwKSk7Ci0g
ICAgRVhQRUNUX1NUUkVRKCJzY2hlZHVsZWRBY3Rpb25Db21taXQiLCBjbGllbnQuYWN0aW9uKDEp
KTsKLSAgICBFWFBFQ1RfVFJVRSh0aW1lU291cmNlLT5hY3RpdmUoKSk7CisgICAgRVhQRUNUX0VR
KDEsIGNsaWVudC5udW1BY3Rpb25zKCkpOworICAgIEVYUEVDVF9TVFJFUSgic2NoZWR1bGVkQWN0
aW9uQ29tbWl0IiwgY2xpZW50LmFjdGlvbigwKSk7CiAgICAgY2xpZW50LnJlc2V0KCk7CiAKICAg
ICAvLyBUaWNrIHNob3VsZCBkcmF3LgpAQCAtMTE4LDEyICsxMTUsMTAgQEAgVEVTVChDQ1NjaGVk
dWxlclRlc3QsIFJlcXVlc3RDb21taXRBZnRlckJlZ2luRnJhbWUpCiAgICAgc2NoZWR1bGVyLT5z
ZXROZWVkc0NvbW1pdCgpOwogCiAgICAgLy8gU2luY2UsIGhhc01vcmVSZXNvdXJjZVVwZGF0ZXMg
aXMgc2V0IHRvIGZhbHNlLCBhbmQgYW5vdGhlciBjb21taXQgaXMKLSAgICAvLyBuZWVkZWQsIGJl
Z2luRnJhbWVDb21wbGV0ZSBzaG91bGQgdXBkYXRlTW9yZVJlc291cmNlcywgdGhlbiBjb21taXQs
IHRoZW4KLSAgICAvLyBiZWdpbiBhbm90aGVyIGZyYW1lLgorICAgIC8vIG5lZWRlZCwgYmVnaW5G
cmFtZUNvbXBsZXRlIHNob3VsZCBjb21taXQsIHRoZW4gYmVnaW4gYW5vdGhlciBmcmFtZS4KICAg
ICBzY2hlZHVsZXItPmJlZ2luRnJhbWVDb21wbGV0ZSgpOwotICAgIEVYUEVDVF9FUSgyLCBjbGll
bnQubnVtQWN0aW9ucygpKTsKLSAgICBFWFBFQ1RfU1RSRVEoInNjaGVkdWxlZEFjdGlvblVwZGF0
ZU1vcmVSZXNvdXJjZXMiLCBjbGllbnQuYWN0aW9uKDApKTsKLSAgICBFWFBFQ1RfU1RSRVEoInNj
aGVkdWxlZEFjdGlvbkNvbW1pdCIsIGNsaWVudC5hY3Rpb24oMSkpOworICAgIEVYUEVDVF9FUSgx
LCBjbGllbnQubnVtQWN0aW9ucygpKTsKKyAgICBFWFBFQ1RfU1RSRVEoInNjaGVkdWxlZEFjdGlv
bkNvbW1pdCIsIGNsaWVudC5hY3Rpb24oMCkpOwogICAgIGNsaWVudC5yZXNldCgpOwogCiAgICAg
Ly8gVGljayBzaG91bGQgZHJhdyBidXQgdGhlbiBiZWdpbiBhbm90aGVyIGZyYW1lLgpAQCAtMjQ4
LDQgKzI0MywxMTEgQEAgVEVTVChDQ1NjaGVkdWxlclRlc3QsIFJlcXVlc3RDb21taXRJbnNpZGVE
cmF3KQogICAgIEVYUEVDVF9GQUxTRShzY2hlZHVsZXItPnJlZHJhd1BlbmRpbmcoKSk7CiB9CiAK
K2NsYXNzIFNjaGVkdWxlckNsaWVudFRoYXRQZXJmb3Jtc1Jlc291cmNlVXBkYXRlcyA6IHB1Ymxp
YyBGYWtlQ0NTY2hlZHVsZXJDbGllbnQgeworcHVibGljOgorICAgIFNjaGVkdWxlckNsaWVudFRo
YXRQZXJmb3Jtc1Jlc291cmNlVXBkYXRlcygpCisgICAgICAgIDogRmFrZUNDU2NoZWR1bGVyQ2xp
ZW50KCkKKyAgICAgICAgLCBtX251bVJlc291cmNlVXBkYXRlc1BlbmRpbmcoMCkgeyB9CisKKyAg
ICB2b2lkIHNldE51bVJlc291cmNlVXBkYXRlc1BlbmRpbmcoaW50IG51bSkKKyAgICB7CisgICAg
ICAgIG1fbnVtUmVzb3VyY2VVcGRhdGVzUGVuZGluZyA9IG51bTsKKyAgICAgICAgaWYgKG51bSkK
KyAgICAgICAgICAgIHNldEhhc01vcmVSZXNvdXJjZVVwZGF0ZXModHJ1ZSk7CisgICAgfQorCisg
ICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlZEFjdGlvblVwZGF0ZU1vcmVSZXNvdXJjZXMoKQorICAg
IHsKKyAgICAgICAgRmFrZUNDU2NoZWR1bGVyQ2xpZW50OjpzY2hlZHVsZWRBY3Rpb25VcGRhdGVN
b3JlUmVzb3VyY2VzKCk7CisgICAgICAgIG1fbnVtUmVzb3VyY2VVcGRhdGVzUGVuZGluZy0tOwor
ICAgICAgICBpZiAoIW1fbnVtUmVzb3VyY2VVcGRhdGVzUGVuZGluZykKKyAgICAgICAgICAgIHNl
dEhhc01vcmVSZXNvdXJjZVVwZGF0ZXMoZmFsc2UpOworICAgIH0KKworcHJvdGVjdGVkOgorICAg
IGludCBtX251bVJlc291cmNlVXBkYXRlc1BlbmRpbmc7Cit9OworCitURVNUKENDU2NoZWR1bGVy
VGVzdCwgVXBkYXRlUmVzb3VyY2VzKQoreworICAgIFNjaGVkdWxlckNsaWVudFRoYXRQZXJmb3Jt
c1Jlc291cmNlVXBkYXRlcyBjbGllbnQ7CisgICAgUmVmUHRyPEZha2VDQ1RpbWVTb3VyY2U+IHRp
bWVTb3VyY2UgPSBhZG9wdFJlZihuZXcgRmFrZUNDVGltZVNvdXJjZSgpKTsKKyAgICBPd25QdHI8
Q0NTY2hlZHVsZXI+IHNjaGVkdWxlciA9IENDU2NoZWR1bGVyOjpjcmVhdGUoJmNsaWVudCwgYWRv
cHRQdHIobmV3IENDRnJhbWVSYXRlQ29udHJvbGxlcih0aW1lU291cmNlKSkpOworICAgIHNjaGVk
dWxlci0+c2V0VmlzaWJsZSh0cnVlKTsKKworICAgIC8vIFNldE5lZWRzQ29tbWl0IHNob3VsZCBi
ZWdpbiB0aGUgZnJhbWUuCisgICAgc2NoZWR1bGVyLT5zZXROZWVkc0NvbW1pdCgpOworICAgIEVY
UEVDVF9FUSgxLCBjbGllbnQubnVtQWN0aW9ucygpKTsKKyAgICBFWFBFQ1RfU1RSRVEoInNjaGVk
dWxlZEFjdGlvbkJlZ2luRnJhbWUiLCBjbGllbnQuYWN0aW9uKDApKTsKKyAgICBjbGllbnQucmVz
ZXQoKTsKKworICAgIC8vIFBlcmZvcm0gb25lIHJlc291cmNlIHVwZGF0ZS4KKyAgICBjbGllbnQu
c2V0TnVtUmVzb3VyY2VVcGRhdGVzUGVuZGluZygxKTsKKyAgICBzY2hlZHVsZXItPnNldFJlc291
cmNlVXBkYXRlc1BlbmRpbmcoKTsKKyAgICBFWFBFQ1RfRVEoMSwgY2xpZW50Lm51bUFjdGlvbnMo
KSk7CisgICAgRVhQRUNUX1NUUkVRKCJzY2hlZHVsZWRBY3Rpb25VcGRhdGVNb3JlUmVzb3VyY2Vz
IiwgY2xpZW50LmFjdGlvbigwKSk7CisgICAgY2xpZW50LnJlc2V0KCk7CisKKyAgICAvLyBQZXJm
b3JtIHR3byByZXNvdXJjZSB1cGRhdGVzLgorICAgIGNsaWVudC5zZXROdW1SZXNvdXJjZVVwZGF0
ZXNQZW5kaW5nKDIpOworICAgIHNjaGVkdWxlci0+c2V0UmVzb3VyY2VVcGRhdGVzUGVuZGluZygp
OworICAgIEVYUEVDVF9FUSgyLCBjbGllbnQubnVtQWN0aW9ucygpKTsKKyAgICBFWFBFQ1RfU1RS
RVEoInNjaGVkdWxlZEFjdGlvblVwZGF0ZU1vcmVSZXNvdXJjZXMiLCBjbGllbnQuYWN0aW9uKDAp
KTsKKyAgICBFWFBFQ1RfU1RSRVEoInNjaGVkdWxlZEFjdGlvblVwZGF0ZU1vcmVSZXNvdXJjZXMi
LCBjbGllbnQuYWN0aW9uKDEpKTsKKyAgICBjbGllbnQucmVzZXQoKTsKKworICAgIC8vIENvbW1p
dCB3aXRob3V0IGFueSBwZW5kaW5nIHJlc291cmNlIHVwZGF0ZXMuCisgICAgc2NoZWR1bGVyLT5i
ZWdpbkZyYW1lQ29tcGxldGUoKTsKKyAgICBFWFBFQ1RfRVEoMSwgY2xpZW50Lm51bUFjdGlvbnMo
KSk7CisgICAgRVhQRUNUX1NUUkVRKCJzY2hlZHVsZWRBY3Rpb25Db21taXQiLCBjbGllbnQuYWN0
aW9uKDApKTsKKyAgICBjbGllbnQucmVzZXQoKTsKKworICAgIHRpbWVTb3VyY2UtPnRpY2soKTsK
KyAgICBFWFBFQ1RfRVEoMSwgY2xpZW50Lm51bUFjdGlvbnMoKSk7CisgICAgRVhQRUNUX1NUUkVR
KCJzY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcCIsIGNsaWVudC5hY3Rpb24oMCkpOworICAgIGNs
aWVudC5yZXNldCgpOworCisgICAgLy8gU2V0TmVlZHNDb21taXQgc2hvdWxkIGJlZ2luIHRoZSBm
cmFtZS4KKyAgICBzY2hlZHVsZXItPnNldE5lZWRzQ29tbWl0KCk7CisgICAgRVhQRUNUX0VRKDEs
IGNsaWVudC5udW1BY3Rpb25zKCkpOworICAgIEVYUEVDVF9TVFJFUSgic2NoZWR1bGVkQWN0aW9u
QmVnaW5GcmFtZSIsIGNsaWVudC5hY3Rpb24oMCkpOworICAgIGNsaWVudC5yZXNldCgpOworCisg
ICAgLy8gUGVyZm9ybSB0aHJlZSByZXNvdXJjZSB1cGRhdGVzLgorICAgIGNsaWVudC5zZXROdW1S
ZXNvdXJjZVVwZGF0ZXNQZW5kaW5nKDMpOworICAgIHNjaGVkdWxlci0+c2V0UmVzb3VyY2VVcGRh
dGVzUGVuZGluZygpOworICAgIEVYUEVDVF9FUSgzLCBjbGllbnQubnVtQWN0aW9ucygpKTsKKyAg
ICBFWFBFQ1RfU1RSRVEoInNjaGVkdWxlZEFjdGlvblVwZGF0ZU1vcmVSZXNvdXJjZXMiLCBjbGll
bnQuYWN0aW9uKDApKTsKKyAgICBFWFBFQ1RfU1RSRVEoInNjaGVkdWxlZEFjdGlvblVwZGF0ZU1v
cmVSZXNvdXJjZXMiLCBjbGllbnQuYWN0aW9uKDEpKTsKKyAgICBFWFBFQ1RfU1RSRVEoInNjaGVk
dWxlZEFjdGlvblVwZGF0ZU1vcmVSZXNvdXJjZXMiLCBjbGllbnQuYWN0aW9uKDIpKTsKKyAgICBj
bGllbnQucmVzZXQoKTsKKworICAgIHNjaGVkdWxlci0+c2V0TmVlZHNSZWRyYXcoKTsKKyAgICBF
WFBFQ1RfVFJVRShzY2hlZHVsZXItPnJlZHJhd1BlbmRpbmcoKSk7CisKKyAgICAvLyBEcmF3IGlu
LWJldHdlZW4gcmVzb3VyY2UgdXBkYXRlcy4KKyAgICB0aW1lU291cmNlLT50aWNrKCk7CisgICAg
RVhQRUNUX0VRKDEsIGNsaWVudC5udW1BY3Rpb25zKCkpOworICAgIEVYUEVDVF9TVFJFUSgic2No
ZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXAiLCBjbGllbnQuYWN0aW9uKDApKTsKKyAgICBjbGllbnQu
cmVzZXQoKTsKKworICAgIC8vIFBlcmZvcm0gb25lIHJlc291cmNlIHVwZGF0ZS4KKyAgICBjbGll
bnQuc2V0TnVtUmVzb3VyY2VVcGRhdGVzUGVuZGluZygxKTsKKyAgICBzY2hlZHVsZXItPnNldFJl
c291cmNlVXBkYXRlc1BlbmRpbmcoKTsKKyAgICBFWFBFQ1RfRVEoMSwgY2xpZW50Lm51bUFjdGlv
bnMoKSk7CisgICAgRVhQRUNUX1NUUkVRKCJzY2hlZHVsZWRBY3Rpb25VcGRhdGVNb3JlUmVzb3Vy
Y2VzIiwgY2xpZW50LmFjdGlvbigwKSk7CisgICAgY2xpZW50LnJlc2V0KCk7CisKKyAgICAvLyBD
b21taXQgd2l0aG91dCBhbnkgcGVuZGluZyByZXNvdXJjZSB1cGRhdGVzLgorICAgIHNjaGVkdWxl
ci0+YmVnaW5GcmFtZUNvbXBsZXRlKCk7CisgICAgRVhQRUNUX0VRKDEsIGNsaWVudC5udW1BY3Rp
b25zKCkpOworICAgIEVYUEVDVF9TVFJFUSgic2NoZWR1bGVkQWN0aW9uQ29tbWl0IiwgY2xpZW50
LmFjdGlvbigwKSk7CisgICAgY2xpZW50LnJlc2V0KCk7CisKKyAgICB0aW1lU291cmNlLT50aWNr
KCk7CisgICAgRVhQRUNUX0VRKDEsIGNsaWVudC5udW1BY3Rpb25zKCkpOworICAgIEVYUEVDVF9T
VFJFUSgic2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXAiLCBjbGllbnQuYWN0aW9uKDApKTsKKyAg
ICBjbGllbnQucmVzZXQoKTsKK30KKwogfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>