<?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>127464</bug_id>
          
          <creation_ts>2014-01-22 23:23:44 -0800</creation_ts>
          <short_desc>[CSS Regions] Convert regions iterator loops to range-based loops</short_desc>
          <delta_ts>2014-01-23 01:57:48 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>AdobeTracked</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>57312</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Andrei Bucur">abucur</reporter>
          <assigned_to name="Andrei Bucur">abucur</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>WebkitBugTracker</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>971041</commentid>
    <comment_count>0</comment_count>
    <who name="Andrei Bucur">abucur</who>
    <bug_when>2014-01-22 23:23:44 -0800</bug_when>
    <thetext>Simplify the code a bit by converting all the iterator based loops to range-based loops.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>971070</commentid>
    <comment_count>1</comment_count>
      <attachid>221958</attachid>
    <who name="Andrei Bucur">abucur</who>
    <bug_when>2014-01-23 01:10:11 -0800</bug_when>
    <thetext>Created attachment 221958
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>971071</commentid>
    <comment_count>2</comment_count>
      <attachid>221959</attachid>
    <who name="Andrei Bucur">abucur</who>
    <bug_when>2014-01-23 01:12:29 -0800</bug_when>
    <thetext>Created attachment 221959
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>971073</commentid>
    <comment_count>3</comment_count>
      <attachid>221959</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2014-01-23 01:15:07 -0800</bug_when>
    <thetext>Comment on attachment 221959
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>971083</commentid>
    <comment_count>4</comment_count>
      <attachid>221959</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-01-23 01:57:45 -0800</bug_when>
    <thetext>Comment on attachment 221959
Patch

Clearing flags on attachment: 221959

Committed r162602: &lt;http://trac.webkit.org/changeset/162602&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>971084</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-01-23 01:57:48 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>221958</attachid>
            <date>2014-01-23 01:10:11 -0800</date>
            <delta_ts>2014-01-23 01:12:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-127464-20140123111336.patch</filename>
            <type>text/plain</type>
            <size>27996</size>
            <attacher name="Andrei Bucur">abucur</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYyNTk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjNjZjM4OTQ0NTgxMTRi
OTc0ZjkwMzg2ODUzMzU5ZjY3YmEzNzg2My4uNWYzY2ZjNjAxNzBmMGQzMDVkMWE2MjM3NDJiZWZj
ZjFiMzcwYzYyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1IEBACisyMDE0LTAxLTIzICBBbmRy
ZWkgQnVjdXIgIDxhYnVjdXJAYWRvYmUuY29tPgorCisgICAgICAgIFtDU1MgUmVnaW9uc10gQ29u
dmVydCByZWdpb25zIGl0ZXJhdG9yIGxvb3BzIHRvIHJhbmdlLWJhc2VkIGxvb3BzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjc0NjQKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXBsYWNlIG1vc3Qgb2Yg
dGhlIGl0ZXJhdG9yIGxvb3BzIGluIHRoZSByZWdpb24gaW1wbGVtZW50YXRpb24gd2l0aAorICAg
ICAgICByYW5nZSBiYXNlZCBmb3IgbG9vcHMuIFRoZSBmb3IgbG9vcHMgdGhhdCBpdGVyYXRlIG9u
bHkgb3ZlciBzdWJzZXRzCisgICAgICAgIG9mIGNvbGxlY3Rpb25zIGhhdmUgbm90IGJlZW4gY2hh
bmdlZC4KKworICAgICAgICBUZXN0czogbm8gbmV3IHRlc3RzLCB0aGlzIGlzIGEgcmVmYWN0b3Jp
emF0aW9uIHBhdGNoLgorCisgICAgICAgICogZG9tL1dlYktpdE5hbWVkRmxvdy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJLaXROYW1lZEZsb3c6OmZpcnN0RW1wdHlSZWdpb25JbmRleCk6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJLaXROYW1lZEZsb3c6OmdldFJlZ2lvbnNCeUNvbnRlbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViS2l0TmFtZWRGbG93OjpnZXRSZWdpb25zKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYktpdE5hbWVkRmxvdzo6Z2V0Q29udGVudCk6CisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRPYmplY3RG
b3JDU1NSZWdpb25zSGlnaGxpZ2h0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRmxvd1Ro
cmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbG93VGhyZWFkOjp2YWxpZGF0ZVJl
Z2lvbnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxvd1RocmVhZDo6dXBkYXRlTG9naWNh
bFdpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsb3dUaHJlYWQ6OmNvbXB1dGVMb2dp
Y2FsSGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsb3dUaHJlYWQ6OnJlcGFpbnRS
ZWN0YW5nbGVJblJlZ2lvbnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxvd1RocmVhZDo6
cmVtb3ZlUmVuZGVyQm94UmVnaW9uSW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbG93
VGhyZWFkOjpsb2dpY2FsV2lkdGhDaGFuZ2VkSW5SZWdpb25zRm9yQmxvY2spOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyRmxvd1RocmVhZDo6Y2xlYXJSZW5kZXJCb3hSZWdpb25JbmZvQW5kQ3Vz
dG9tU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxvd1RocmVhZDo6aXNBdXRvTG9n
aWNhbEhlaWdodFJlZ2lvbnNDb3VudENvbnNpc3RlbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyRmxvd1RocmVhZDo6bWFya0F1dG9Mb2dpY2FsSGVpZ2h0UmVnaW9uc0ZvckxheW91dCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbG93VGhyZWFkOjptYXJrUmVnaW9uc0Zvck92ZXJmbG93
TGF5b3V0SWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxvd1RocmVhZDo6dXBk
YXRlUmVnaW9uc0Zsb3dUaHJlYWRQb3J0aW9uUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJGbG93VGhyZWFkOjpjb2xsZWN0TGF5ZXJGcmFnbWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyRmxvd1RocmVhZDo6ZnJhZ21lbnRzQm91bmRpbmdCb3gpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJOYW1lZEZsb3dGcmFnbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJOYW1lZEZsb3dGcmFnbWVudDo6c2V0UmVnaW9uT2JqZWN0c1JlZ2lvblN0eWxlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlck5hbWVkRmxvd0ZyYWdtZW50OjpyZXN0b3JlUmVnaW9uT2JqZWN0
c09yaWdpbmFsU3R5bGUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dUaHJl
YWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTmFtZWRGbG93VGhyZWFkOjpjbGVhckNv
bnRlbnRFbGVtZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6
Om5leHRSZW5kZXJlckZvck5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTmFtZWRGbG93
VGhyZWFkOjpkZXBlbmRzT24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTmFtZWRGbG93VGhy
ZWFkOjpjb21wdXRlT3ZlcnNldFN0YXRlRm9yUmVnaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OmNoZWNrSW52YWxpZFJlZ2lvbnMpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTmFtZWRGbG93VGhyZWFkOjpwdXNoRGVwZW5kZW5jaWVzKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlck5hbWVkRmxvd1RocmVhZDo6cmVnaXN0ZXJOYW1lZEZsb3dDb250ZW50
RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjppc0NvbnRhaW5lZEluRWxlbWVudHMpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTmFtZWRGbG93VGhyZWFkOjpnZXRSYW5nZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTmFtZWRGbG93VGhyZWFkOjpjaGVja1JlZ2lvbnNXaXRoU3R5bGlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OmNsZWFyUmVuZGVy
T2JqZWN0Q3VzdG9tU3R5bGUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OndyaXRlUmVuZGVyUmVnaW9uTGlzdCk6CisKIDIwMTQt
MDEtMjIgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAg
U3Vycm91bmQgZml4ZWRWaXNpYmxlQ29udGVudFJlY3QgY29kZSB3aXRoIFVTRShUSUxFRF9CQUNL
SU5HX1NUT1JFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1dlYktpdE5hbWVkRmxv
dy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vV2ViS2l0TmFtZWRGbG93LmNwcAppbmRleCA3NzU5
Mjg2NjllYzU1NDc2NDNhZTczNTQ4YmM3ZGIxMTVmMGM1ZjU1Li5jZmYyZGQ2NTk2OTEyYTAzM2E5
M2M5YWM1YTgxMWE4OGY0ZGQwMmFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vV2Vi
S2l0TmFtZWRGbG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vV2ViS2l0TmFtZWRGbG93
LmNwcApAQCAtOTksMTYgKzk5LDE1IEBAIGludCBXZWJLaXROYW1lZEZsb3c6OmZpcnN0RW1wdHlS
ZWdpb25JbmRleCgpIGNvbnN0CiAgICAgICAgIHJldHVybiAtMTsKIAogICAgIGludCBjb3VudE5v
blBzZXVkb1JlZ2lvbnMgPSAtMTsKLSAgICBhdXRvIGl0ZXIgPSByZWdpb25MaXN0LmJlZ2luKCk7
Ci0gICAgZm9yIChpbnQgaW5kZXggPSAwOyBpdGVyICE9IHJlZ2lvbkxpc3QuZW5kKCk7ICsraW5k
ZXgsICsraXRlcikgeworICAgIGZvciAoY29uc3QgYXV0byYgcmVuZGVyUmVnaW9uIDogcmVnaW9u
TGlzdCkgeworICAgICAgICBjb25zdCBSZW5kZXJOYW1lZEZsb3dGcmFnbWVudCogbmFtZWRGbG93
RnJhZ21lbnQgPSB0b1JlbmRlck5hbWVkRmxvd0ZyYWdtZW50KHJlbmRlclJlZ2lvbik7CiAgICAg
ICAgIC8vIEZJWE1FOiBQc2V1ZG8tZWxlbWVudHMgYXJlIG5vdCBpbmNsdWRlZCBpbiB0aGUgbGlz
dC4KICAgICAgICAgLy8gVGhleSB3aWxsIGJlIGluY2x1ZGVkIHdoZW4gd2Ugd2lsbCBwcm9wZXJs
eSBzdXBwb3J0IHRoZSBSZWdpb24gaW50ZXJmYWNlCiAgICAgICAgIC8vIGh0dHA6Ly9kZXYudzMu
b3JnL2Nzc3dnL2Nzcy1yZWdpb25zLyN0aGUtcmVnaW9uLWludGVyZmFjZQotICAgICAgICBjb25z
dCBSZW5kZXJOYW1lZEZsb3dGcmFnbWVudCogcmVuZGVyUmVnaW9uID0gdG9SZW5kZXJOYW1lZEZs
b3dGcmFnbWVudCgqaXRlcik7Ci0gICAgICAgIGlmIChyZW5kZXJSZWdpb24tPmlzUHNldWRvRWxl
bWVudFJlZ2lvbigpKQorICAgICAgICBpZiAobmFtZWRGbG93RnJhZ21lbnQtPmlzUHNldWRvRWxl
bWVudFJlZ2lvbigpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGNvdW50Tm9uUHNl
dWRvUmVnaW9ucysrOwotICAgICAgICBpZiAocmVuZGVyUmVnaW9uLT5yZWdpb25PdmVyc2V0U3Rh
dGUoKSA9PSBSZWdpb25FbXB0eSkKKyAgICAgICAgaWYgKG5hbWVkRmxvd0ZyYWdtZW50LT5yZWdp
b25PdmVyc2V0U3RhdGUoKSA9PSBSZWdpb25FbXB0eSkKICAgICAgICAgICAgIHJldHVybiBjb3Vu
dE5vblBzZXVkb1JlZ2lvbnM7CiAgICAgfQogICAgIHJldHVybiAtMTsKQEAgLTEzMSwxNiArMTMw
LDE2IEBAIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IFdlYktpdE5hbWVkRmxvdzo6Z2V0UmVnaW9uc0J5
Q29udGVudChOb2RlKiBjb250ZW50Tm9kZSkKIAogICAgIGlmIChpbkZsb3dUaHJlYWQoY29udGVu
dE5vZGUtPnJlbmRlcmVyKCksIG1fcGFyZW50Rmxvd1RocmVhZCkpIHsKICAgICAgICAgY29uc3Qg
UmVuZGVyUmVnaW9uTGlzdCYgcmVnaW9uTGlzdCA9IG1fcGFyZW50Rmxvd1RocmVhZC0+cmVuZGVy
UmVnaW9uTGlzdCgpOwotICAgICAgICBmb3IgKGF1dG8gaXRlciA9IHJlZ2lvbkxpc3QuYmVnaW4o
KSwgZW5kID0gcmVnaW9uTGlzdC5lbmQoKTsgaXRlciAhPSBlbmQ7ICsraXRlcikgeworICAgICAg
ICBmb3IgKGNvbnN0IGF1dG8mIHJlbmRlclJlZ2lvbiA6IHJlZ2lvbkxpc3QpIHsKKyAgICAgICAg
ICAgIGNvbnN0IFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KiBuYW1lZEZsb3dGcmFnbWVudCA9IHRv
UmVuZGVyTmFtZWRGbG93RnJhZ21lbnQocmVuZGVyUmVnaW9uKTsKICAgICAgICAgICAgIC8vIEZJ
WE1FOiBQc2V1ZG8tZWxlbWVudHMgYXJlIG5vdCBpbmNsdWRlZCBpbiB0aGUgbGlzdC4KICAgICAg
ICAgICAgIC8vIFRoZXkgd2lsbCBiZSBpbmNsdWRlZCB3aGVuIHdlIHdpbGwgcHJvcGVybHkgc3Vw
cG9ydCB0aGUgUmVnaW9uIGludGVyZmFjZQogICAgICAgICAgICAgLy8gaHR0cDovL2Rldi53My5v
cmcvY3Nzd2cvY3NzLXJlZ2lvbnMvI3RoZS1yZWdpb24taW50ZXJmYWNlCi0gICAgICAgICAgICBj
b25zdCBSZW5kZXJOYW1lZEZsb3dGcmFnbWVudCogcmVuZGVyUmVnaW9uID0gdG9SZW5kZXJOYW1l
ZEZsb3dGcmFnbWVudCgqaXRlcik7Ci0gICAgICAgICAgICBpZiAocmVuZGVyUmVnaW9uLT5pc1Bz
ZXVkb0VsZW1lbnRSZWdpb24oKSkKKyAgICAgICAgICAgIGlmIChuYW1lZEZsb3dGcmFnbWVudC0+
aXNQc2V1ZG9FbGVtZW50UmVnaW9uKCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAg
ICAgICAgICBpZiAobV9wYXJlbnRGbG93VGhyZWFkLT5vYmplY3RJbkZsb3dSZWdpb24oY29udGVu
dE5vZGUtPnJlbmRlcmVyKCksIHJlbmRlclJlZ2lvbikpIHsKLSAgICAgICAgICAgICAgICBBU1NF
UlQocmVuZGVyUmVnaW9uLT5nZW5lcmF0aW5nRWxlbWVudCgpKTsKLSAgICAgICAgICAgICAgICBy
ZWdpb25FbGVtZW50cy5hcHBlbmQoKnJlbmRlclJlZ2lvbi0+Z2VuZXJhdGluZ0VsZW1lbnQoKSk7
CisgICAgICAgICAgICBpZiAobV9wYXJlbnRGbG93VGhyZWFkLT5vYmplY3RJbkZsb3dSZWdpb24o
Y29udGVudE5vZGUtPnJlbmRlcmVyKCksIG5hbWVkRmxvd0ZyYWdtZW50KSkgeworICAgICAgICAg
ICAgICAgIEFTU0VSVChuYW1lZEZsb3dGcmFnbWVudC0+Z2VuZXJhdGluZ0VsZW1lbnQoKSk7Cisg
ICAgICAgICAgICAgICAgcmVnaW9uRWxlbWVudHMuYXBwZW5kKCpuYW1lZEZsb3dGcmFnbWVudC0+
Z2VuZXJhdGluZ0VsZW1lbnQoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CkBA
IC0xNjEsMTUgKzE2MCwxNSBAQCBQYXNzUmVmUHRyPE5vZGVMaXN0PiBXZWJLaXROYW1lZEZsb3c6
OmdldFJlZ2lvbnMoKQogICAgIFZlY3RvcjxSZWY8RWxlbWVudD4+IHJlZ2lvbkVsZW1lbnRzOwog
CiAgICAgY29uc3QgUmVuZGVyUmVnaW9uTGlzdCYgcmVnaW9uTGlzdCA9IG1fcGFyZW50Rmxvd1Ro
cmVhZC0+cmVuZGVyUmVnaW9uTGlzdCgpOwotICAgIGZvciAoYXV0byBpdGVyID0gcmVnaW9uTGlz
dC5iZWdpbigpLCBlbmQgPSByZWdpb25MaXN0LmVuZCgpOyBpdGVyICE9IGVuZDsgKytpdGVyKSB7
CisgICAgZm9yIChjb25zdCBhdXRvJiByZW5kZXJSZWdpb24gOiByZWdpb25MaXN0KSB7CisgICAg
ICAgIGNvbnN0IFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KiBuYW1lZEZsb3dGcmFnbWVudCA9IHRv
UmVuZGVyTmFtZWRGbG93RnJhZ21lbnQocmVuZGVyUmVnaW9uKTsKICAgICAgICAgLy8gRklYTUU6
IFBzZXVkby1lbGVtZW50cyBhcmUgbm90IGluY2x1ZGVkIGluIHRoZSBsaXN0LgogICAgICAgICAv
LyBUaGV5IHdpbGwgYmUgaW5jbHVkZWQgd2hlbiB3ZSB3aWxsIHByb3Blcmx5IHN1cHBvcnQgdGhl
IFJlZ2lvbiBpbnRlcmZhY2UKICAgICAgICAgLy8gaHR0cDovL2Rldi53My5vcmcvY3Nzd2cvY3Nz
LXJlZ2lvbnMvI3RoZS1yZWdpb24taW50ZXJmYWNlCi0gICAgICAgIGNvbnN0IFJlbmRlck5hbWVk
Rmxvd0ZyYWdtZW50KiByZW5kZXJSZWdpb24gPSB0b1JlbmRlck5hbWVkRmxvd0ZyYWdtZW50KCpp
dGVyKTsKLSAgICAgICAgaWYgKHJlbmRlclJlZ2lvbi0+aXNQc2V1ZG9FbGVtZW50UmVnaW9uKCkp
CisgICAgICAgIGlmIChuYW1lZEZsb3dGcmFnbWVudC0+aXNQc2V1ZG9FbGVtZW50UmVnaW9uKCkp
CiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgQVNTRVJUKHJlbmRlclJlZ2lvbi0+Z2Vu
ZXJhdGluZ0VsZW1lbnQoKSk7Ci0gICAgICAgIHJlZ2lvbkVsZW1lbnRzLmFwcGVuZCgqcmVuZGVy
UmVnaW9uLT5nZW5lcmF0aW5nRWxlbWVudCgpKTsKKyAgICAgICAgQVNTRVJUKG5hbWVkRmxvd0Zy
YWdtZW50LT5nZW5lcmF0aW5nRWxlbWVudCgpKTsKKyAgICAgICAgcmVnaW9uRWxlbWVudHMuYXBw
ZW5kKCpuYW1lZEZsb3dGcmFnbWVudC0+Z2VuZXJhdGluZ0VsZW1lbnQoKSk7CiAgICAgfQogCiAg
ICAgcmV0dXJuIFN0YXRpY0VsZW1lbnRMaXN0OjphZG9wdChyZWdpb25FbGVtZW50cyk7CkBAIC0x
ODgsOCArMTg3LDcgQEAgUGFzc1JlZlB0cjxOb2RlTGlzdD4gV2ViS2l0TmFtZWRGbG93OjpnZXRD
b250ZW50KCkKICAgICBWZWN0b3I8UmVmPEVsZW1lbnQ+PiBjb250ZW50RWxlbWVudHM7CiAKICAg
ICBjb25zdCBOYW1lZEZsb3dDb250ZW50RWxlbWVudHMmIGNvbnRlbnRFbGVtZW50c0xpc3QgPSBt
X3BhcmVudEZsb3dUaHJlYWQtPmNvbnRlbnRFbGVtZW50cygpOwotICAgIGZvciAoYXV0byBpdCA9
IGNvbnRlbnRFbGVtZW50c0xpc3QuYmVnaW4oKSwgZW5kID0gY29udGVudEVsZW1lbnRzTGlzdC5l
bmQoKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgIEVsZW1lbnQqIGVsZW1lbnQgPSAqaXQ7
CisgICAgZm9yIChhdXRvJiBlbGVtZW50IDogY29udGVudEVsZW1lbnRzTGlzdCkgewogICAgICAg
ICBBU1NFUlQoZWxlbWVudC0+Y29tcHV0ZWRTdHlsZSgpLT5mbG93VGhyZWFkKCkgPT0gbV9wYXJl
bnRGbG93VGhyZWFkLT5mbG93VGhyZWFkTmFtZSgpKTsKICAgICAgICAgY29udGVudEVsZW1lbnRz
LmFwcGVuZCgqZWxlbWVudCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3Rvck92ZXJsYXkuY3BwCmluZGV4IDBjYWFkN2YwZjk1M2U4ODY3ZDYyNDAwNGQ4YzU4NDVk
OGI0OGQxMjIuLmQ2OTdlNTE4MTg5OTBlNjBkOWUxMjkzMTdlMWYwMGVkYjJmMDZiN2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAKQEAgLTQzNCw4
ICs0MzQsNyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJheT4gYnVpbGRPYmplY3RG
b3JDU1NSZWdpb25zSGlnaGxpZ2h0KFJlbmRlclJlZ2lvbgogICAgIFJlZlB0cjxJbnNwZWN0b3JB
cnJheT4gYXJyYXkgPSBJbnNwZWN0b3JBcnJheTo6Y3JlYXRlKCk7CiAKICAgICBjb25zdCBSZW5k
ZXJSZWdpb25MaXN0JiByZWdpb25MaXN0ID0gZmxvd1RocmVhZC0+cmVuZGVyUmVnaW9uTGlzdCgp
OwotICAgIGZvciAoUmVuZGVyUmVnaW9uTGlzdDo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IHJlZ2lv
bkxpc3QuYmVnaW4oKTsgaXRlciAhPSByZWdpb25MaXN0LmVuZCgpOyArK2l0ZXIpIHsKLSAgICAg
ICAgUmVuZGVyUmVnaW9uKiBpdGVyUmVnaW9uID0gKml0ZXI7CisgICAgZm9yIChhdXRvJiBpdGVy
UmVnaW9uIDogcmVnaW9uTGlzdCkgewogICAgICAgICBpZiAoIWl0ZXJSZWdpb24tPmlzVmFsaWQo
KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0
PiByZWdpb25IaWdobGlnaHRPYmplY3QgPSBidWlsZE9iamVjdEZvclJlZ2lvbkhpZ2hsaWdodCht
YWluRnJhbWVWaWV3LCBpdGVyUmVnaW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJGbG93VGhyZWFkLmNwcAppbmRleCA1Y2ZkMThlZDMyOWVjYWEzNmEwY2YwMGVlNjVmN2M5
ZDUzNDNiOGZlLi44ZDU1MmU3YThhYWQyMTk2OTJmYWIzNzY3M2U3NDIyYjBkNTRjYjRlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuY3BwCkBAIC0xNjEs
OCArMTYxLDcgQEAgdm9pZCBSZW5kZXJGbG93VGhyZWFkOjp2YWxpZGF0ZVJlZ2lvbnMoKQogICAg
ICAgICAgICAgTGF5b3V0VW5pdCBwcmV2aW91c1JlZ2lvbkxvZ2ljYWxIZWlnaHQgPSAwOwogICAg
ICAgICAgICAgYm9vbCBmaXJzdFJlZ2lvblZpc2l0ZWQgPSBmYWxzZTsKICAgICAgICAgICAgIAot
ICAgICAgICAgICAgZm9yIChhdXRvIGl0ZXIgPSBtX3JlZ2lvbkxpc3QuYmVnaW4oKSwgZW5kID0g
bV9yZWdpb25MaXN0LmVuZCgpOyBpdGVyICE9IGVuZDsgKytpdGVyKSB7Ci0gICAgICAgICAgICAg
ICAgUmVuZGVyUmVnaW9uKiByZWdpb24gPSAqaXRlcjsKKyAgICAgICAgICAgIGZvciAoYXV0byYg
cmVnaW9uIDogbV9yZWdpb25MaXN0KSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKCFyZWdpb24t
Pm5lZWRzTGF5b3V0KCkgfHwgcmVnaW9uLT5pc1JlbmRlclJlZ2lvblNldCgpKTsKIAogICAgICAg
ICAgICAgICAgIHJlZ2lvbi0+ZGVsZXRlQWxsUmVuZGVyQm94UmVnaW9uSW5mbygpOwpAQCAtMzY1
LDE2ICszNjQsMTQgQEAgYm9vbCBSZW5kZXJGbG93VGhyZWFkOjpjb2xsZWN0c0dyYXBoaWNzTGF5
ZXJzVW5kZXJSZWdpb25zKCkgY29uc3QKIHZvaWQgUmVuZGVyRmxvd1RocmVhZDo6dXBkYXRlTG9n
aWNhbFdpZHRoKCkKIHsKICAgICBMYXlvdXRVbml0IGxvZ2ljYWxXaWR0aCA9IGluaXRpYWxMb2dp
Y2FsV2lkdGgoKTsKLSAgICBmb3IgKGF1dG8gaXRlciA9IG1fcmVnaW9uTGlzdC5iZWdpbigpLCBl
bmQgPSBtX3JlZ2lvbkxpc3QuZW5kKCk7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpIHsKLSAgICAgICAg
UmVuZGVyUmVnaW9uKiByZWdpb24gPSAqaXRlcjsKKyAgICBmb3IgKGF1dG8mIHJlZ2lvbiA6IG1f
cmVnaW9uTGlzdCkgewogICAgICAgICBBU1NFUlQoIXJlZ2lvbi0+bmVlZHNMYXlvdXQoKSB8fCBy
ZWdpb24tPmlzUmVuZGVyUmVnaW9uU2V0KCkpOwogICAgICAgICBsb2dpY2FsV2lkdGggPSBzdGQ6
Om1heChyZWdpb24tPnBhZ2VMb2dpY2FsV2lkdGgoKSwgbG9naWNhbFdpZHRoKTsKICAgICB9CiAg
ICAgc2V0TG9naWNhbFdpZHRoKGxvZ2ljYWxXaWR0aCk7CiAKICAgICAvLyBJZiB0aGUgcmVnaW9u
cyBoYXZlIG5vbi11bmlmb3JtIGxvZ2ljYWwgd2lkdGhzLCB0aGVuIGluc2VydCBpbnNldCBpbmZv
cm1hdGlvbiBmb3IgdGhlIFJlbmRlckZsb3dUaHJlYWQuCi0gICAgZm9yIChhdXRvIGl0ZXIgPSBt
X3JlZ2lvbkxpc3QuYmVnaW4oKSwgZW5kID0gbV9yZWdpb25MaXN0LmVuZCgpOyBpdGVyICE9IGVu
ZDsgKytpdGVyKSB7Ci0gICAgICAgIFJlbmRlclJlZ2lvbiogcmVnaW9uID0gKml0ZXI7CisgICAg
Zm9yIChhdXRvJiByZWdpb24gOiBtX3JlZ2lvbkxpc3QpIHsKICAgICAgICAgTGF5b3V0VW5pdCBy
ZWdpb25Mb2dpY2FsV2lkdGggPSByZWdpb24tPnBhZ2VMb2dpY2FsV2lkdGgoKTsKICAgICAgICAg
TGF5b3V0VW5pdCBsb2dpY2FsTGVmdCA9IHN0eWxlKCkuZGlyZWN0aW9uKCkgPT0gTFRSID8gTGF5
b3V0VW5pdCgpIDogbG9naWNhbFdpZHRoIC0gcmVnaW9uTG9naWNhbFdpZHRoOwogICAgICAgICBy
ZWdpb24tPnNldFJlbmRlckJveFJlZ2lvbkluZm8odGhpcywgbG9naWNhbExlZnQsIHJlZ2lvbkxv
Z2ljYWxXaWR0aCwgZmFsc2UpOwpAQCAtMzg3LDggKzM4NCw3IEBAIHZvaWQgUmVuZGVyRmxvd1Ro
cmVhZDo6Y29tcHV0ZUxvZ2ljYWxIZWlnaHQoTGF5b3V0VW5pdCwgTGF5b3V0VW5pdCBsb2dpY2Fs
VG9wLCBMCiAgICAgY29tcHV0ZWRWYWx1ZXMubV9leHRlbnQgPSAwOwogCiAgICAgY29uc3QgTGF5
b3V0VW5pdCBtYXhGbG93U2l6ZSA9IFJlbmRlckZsb3dUaHJlYWQ6Om1heExvZ2ljYWxIZWlnaHQo
KTsKLSAgICBmb3IgKGF1dG8gaXRlciA9IG1fcmVnaW9uTGlzdC5iZWdpbigpLCBlbmQgPSBtX3Jl
Z2lvbkxpc3QuZW5kKCk7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpIHsKLSAgICAgICAgUmVuZGVyUmVn
aW9uKiByZWdpb24gPSAqaXRlcjsKKyAgICBmb3IgKGF1dG8mIHJlZ2lvbiA6IG1fcmVnaW9uTGlz
dCkgewogICAgICAgICBBU1NFUlQoIXJlZ2lvbi0+bmVlZHNMYXlvdXQoKSB8fCByZWdpb24tPmlz
UmVuZGVyUmVnaW9uU2V0KCkpOwogCiAgICAgICAgIExheW91dFVuaXQgZGlzdGFuY2VUb01heFNp
emUgPSBtYXhGbG93U2l6ZSAtIGNvbXB1dGVkVmFsdWVzLm1fZXh0ZW50OwpAQCAtNDM0LDExICs0
MzAsOCBAQCB2b2lkIFJlbmRlckZsb3dUaHJlYWQ6OnJlcGFpbnRSZWN0YW5nbGVJblJlZ2lvbnMo
Y29uc3QgTGF5b3V0UmVjdCYgcmVwYWludFJlY3QsCiAgICAgLy8gTGV0IGVhY2ggcmVnaW9uIGZp
Z3VyZSBvdXQgdGhlIHByb3BlciBlbmNsb3NpbmcgZmxvdyB0aHJlYWQuCiAgICAgQ3VycmVudFJl
bmRlckZsb3dUaHJlYWREaXNhYmxlciBkaXNhYmxlcigmdmlldygpKTsKICAgICAKLSAgICBmb3Ig
KGF1dG8gaXRlciA9IG1fcmVnaW9uTGlzdC5iZWdpbigpLCBlbmQgPSBtX3JlZ2lvbkxpc3QuZW5k
KCk7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpIHsKLSAgICAgICAgUmVuZGVyUmVnaW9uKiByZWdpb24g
PSAqaXRlcjsKLQorICAgIGZvciAoYXV0byYgcmVnaW9uIDogbV9yZWdpb25MaXN0KQogICAgICAg
ICByZWdpb24tPnJlcGFpbnRGbG93VGhyZWFkQ29udGVudChyZXBhaW50UmVjdCwgaW1tZWRpYXRl
KTsKLSAgICB9CiB9CiAKIFJlbmRlclJlZ2lvbiogUmVuZGVyRmxvd1RocmVhZDo6cmVnaW9uQXRC
bG9ja09mZnNldChjb25zdCBSZW5kZXJCb3gqIGNsYW1wQm94LCBMYXlvdXRVbml0IG9mZnNldCwg
Ym9vbCBleHRlbmRMYXN0UmVnaW9uLCBSZWdpb25BdXRvR2VuZXJhdGlvblBvbGljeSBhdXRvR2Vu
ZXJhdGlvblBvbGljeSkKQEAgLTYyOSw4ICs2MjIsNyBAQCB2b2lkIFJlbmRlckZsb3dUaHJlYWQ6
OnJlbW92ZVJlbmRlckJveFJlZ2lvbkluZm8oUmVuZGVyQm94KiBib3gpCiAgICAgUmVuZGVyUmVn
aW9uKiBlbmRSZWdpb247CiAgICAgZ2V0UmVnaW9uUmFuZ2VGb3JCb3goYm94LCBzdGFydFJlZ2lv
biwgZW5kUmVnaW9uKTsKIAotICAgIGZvciAoYXV0byBpdGVyID0gbV9yZWdpb25MaXN0LmZpbmQo
c3RhcnRSZWdpb24pLCBlbmQgPSBtX3JlZ2lvbkxpc3QuZW5kKCk7IGl0ZXIgIT0gZW5kOyArK2l0
ZXIpIHsKLSAgICAgICAgUmVuZGVyUmVnaW9uKiByZWdpb24gPSAqaXRlcjsKKyAgICBmb3IgKGF1
dG8mIHJlZ2lvbiA6IG1fcmVnaW9uTGlzdCkgewogICAgICAgICByZWdpb24tPnJlbW92ZVJlbmRl
ckJveFJlZ2lvbkluZm8oYm94KTsKICAgICAgICAgaWYgKHJlZ2lvbiA9PSBlbmRSZWdpb24pCiAg
ICAgICAgICAgICBicmVhazsKQEAgLTYzOCwxMCArNjMwLDggQEAgdm9pZCBSZW5kZXJGbG93VGhy
ZWFkOjpyZW1vdmVSZW5kZXJCb3hSZWdpb25JbmZvKFJlbmRlckJveCogYm94KQogCiAjaWZuZGVm
IE5ERUJVRwogICAgIC8vIFdlIGhhdmUgdG8gbWFrZSBzdXJlIHdlIGRpZCBub3QgbGVhdmUgYW55
IFJlbmRlckJveFJlZ2lvbkluZm8gYXR0YWNoZWQuCi0gICAgZm9yIChhdXRvIGl0ZXIgPSBtX3Jl
Z2lvbkxpc3QuYmVnaW4oKSwgZW5kID0gbV9yZWdpb25MaXN0LmVuZCgpOyBpdGVyICE9IGVuZDsg
KytpdGVyKSB7Ci0gICAgICAgIFJlbmRlclJlZ2lvbiogcmVnaW9uID0gKml0ZXI7CisgICAgZm9y
IChhdXRvJiByZWdpb24gOiBtX3JlZ2lvbkxpc3QpCiAgICAgICAgIEFTU0VSVCghcmVnaW9uLT5y
ZW5kZXJCb3hSZWdpb25JbmZvKGJveCkpOwotICAgIH0KICNlbmRpZgogCiAgICAgbV9yZWdpb25S
YW5nZU1hcC5yZW1vdmUoYm94KTsKQEAgLTY3Niw4ICs2NjYsNyBAQCB2b2lkIFJlbmRlckZsb3dU
aHJlYWQ6OmxvZ2ljYWxXaWR0aENoYW5nZWRJblJlZ2lvbnNGb3JCbG9jayhjb25zdCBSZW5kZXJC
bG9jayogYgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgZm9yIChhdXRvIGl0ZXIgPSBt
X3JlZ2lvbkxpc3QuZmluZChzdGFydFJlZ2lvbiksIGVuZCA9IG1fcmVnaW9uTGlzdC5lbmQoKTsg
aXRlciAhPSBlbmQ7ICsraXRlcikgewotICAgICAgICBSZW5kZXJSZWdpb24qIHJlZ2lvbiA9ICpp
dGVyOworICAgIGZvciAoYXV0byYgcmVnaW9uIDogbV9yZWdpb25MaXN0KSB7CiAgICAgICAgIEFT
U0VSVCghcmVnaW9uLT5uZWVkc0xheW91dCgpIHx8IHJlZ2lvbi0+aXNSZW5kZXJSZWdpb25TZXQo
KSk7CiAKICAgICAgICAgLy8gV2UgaGF2ZSBubyBpbmZvcm1hdGlvbiBjb21wdXRlZCBmb3IgdGhp
cyByZWdpb24gc28gd2UgbmVlZCB0byBkbyBpdC4KQEAgLTc0NSw5ICs3MzQsNyBAQCB2b2lkIFJl
bmRlckZsb3dUaHJlYWQ6OmNsZWFyUmVuZGVyQm94UmVnaW9uSW5mb0FuZEN1c3RvbVN0eWxlKGNv
bnN0IFJlbmRlckJveCogYgogCiAgICAgYm9vbCBpbnNpZGVPbGRSZWdpb25SYW5nZSA9IGZhbHNl
OwogICAgIGJvb2wgaW5zaWRlTmV3UmVnaW9uUmFuZ2UgPSBmYWxzZTsKLSAgICBmb3IgKGF1dG8g
aXRlciA9IG1fcmVnaW9uTGlzdC5iZWdpbigpLCBlbmQgPSBtX3JlZ2lvbkxpc3QuZW5kKCk7IGl0
ZXIgIT0gZW5kOyArK2l0ZXIpIHsKLSAgICAgICAgUmVuZGVyUmVnaW9uKiByZWdpb24gPSAqaXRl
cjsKLQorICAgIGZvciAoYXV0byYgcmVnaW9uIDogbV9yZWdpb25MaXN0KSB7CiAgICAgICAgIGlm
IChvbGRTdGFydFJlZ2lvbiA9PSByZWdpb24pCiAgICAgICAgICAgICBpbnNpZGVPbGRSZWdpb25S
YW5nZSA9IHRydWU7CiAgICAgICAgIGlmIChuZXdTdGFydFJlZ2lvbiA9PSByZWdpb24pCkBAIC04
OTYsOCArODgzLDcgQEAgYm9vbCBSZW5kZXJGbG93VGhyZWFkOjpvYmplY3RJbkZsb3dSZWdpb24o
Y29uc3QgUmVuZGVyT2JqZWN0KiBvYmplY3QsIGNvbnN0IFJlbmQKIGJvb2wgUmVuZGVyRmxvd1Ro
cmVhZDo6aXNBdXRvTG9naWNhbEhlaWdodFJlZ2lvbnNDb3VudENvbnNpc3RlbnQoKSBjb25zdAog
ewogICAgIHVuc2lnbmVkIGF1dG9Mb2dpY2FsSGVpZ2h0UmVnaW9ucyA9IDA7Ci0gICAgZm9yIChh
dXRvIGl0ZXIgPSBtX3JlZ2lvbkxpc3QuYmVnaW4oKSwgZW5kID0gbV9yZWdpb25MaXN0LmVuZCgp
OyBpdGVyICE9IGVuZDsgKytpdGVyKSB7Ci0gICAgICAgIGNvbnN0IFJlbmRlclJlZ2lvbiogcmVn
aW9uID0gKml0ZXI7CisgICAgZm9yIChjb25zdCBhdXRvJiByZWdpb24gOiBtX3JlZ2lvbkxpc3Qp
IHsKICAgICAgICAgaWYgKHJlZ2lvbi0+aGFzQXV0b0xvZ2ljYWxIZWlnaHQoKSkKICAgICAgICAg
ICAgIGF1dG9Mb2dpY2FsSGVpZ2h0UmVnaW9ucysrOwogICAgIH0KQEAgLTkyOSw4ICs5MTUsNyBA
QCB2b2lkIFJlbmRlckZsb3dUaHJlYWQ6Om1hcmtBdXRvTG9naWNhbEhlaWdodFJlZ2lvbnNGb3JM
YXlvdXQoKQogewogICAgIEFTU0VSVChoYXNBdXRvTG9naWNhbEhlaWdodFJlZ2lvbnMoKSk7CiAK
LSAgICBmb3IgKGF1dG8gaXRlciA9IG1fcmVnaW9uTGlzdC5iZWdpbigpLCBlbmQgPSBtX3JlZ2lv
bkxpc3QuZW5kKCk7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpIHsKLSAgICAgICAgUmVuZGVyUmVnaW9u
KiByZWdpb24gPSAqaXRlcjsKKyAgICBmb3IgKGF1dG8mIHJlZ2lvbiA6IG1fcmVnaW9uTGlzdCkg
ewogICAgICAgICBpZiAoIXJlZ2lvbi0+aGFzQXV0b0xvZ2ljYWxIZWlnaHQoKSkKICAgICAgICAg
ICAgIGNvbnRpbnVlOwogCkBAIC05NDUsMTAgKzkzMCw4IEBAIHZvaWQgUmVuZGVyRmxvd1RocmVh
ZDo6bWFya1JlZ2lvbnNGb3JPdmVyZmxvd0xheW91dElmTmVlZGVkKCkKICAgICBpZiAoIWhhc1Jl
Z2lvbnMoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZm9yIChhdXRvIGl0ZXIgPSBtX3JlZ2lv
bkxpc3QuYmVnaW4oKSwgZW5kID0gbV9yZWdpb25MaXN0LmVuZCgpOyBpdGVyICE9IGVuZDsgKytp
dGVyKSB7Ci0gICAgICAgIFJlbmRlclJlZ2lvbiogcmVnaW9uID0gKml0ZXI7CisgICAgZm9yIChh
dXRvJiByZWdpb24gOiBtX3JlZ2lvbkxpc3QpCiAgICAgICAgIHJlZ2lvbi0+c2V0TmVlZHNTaW1w
bGlmaWVkTm9ybWFsRmxvd0xheW91dCgpOwotICAgIH0KIH0KIAogdm9pZCBSZW5kZXJGbG93VGhy
ZWFkOjp1cGRhdGVSZWdpb25zRmxvd1RocmVhZFBvcnRpb25SZWN0KGNvbnN0IFJlbmRlclJlZ2lv
biogbGFzdFJlZ2lvbldpdGhDb250ZW50KQpAQCAtOTU5LDkgKzk0Miw3IEBAIHZvaWQgUmVuZGVy
Rmxvd1RocmVhZDo6dXBkYXRlUmVnaW9uc0Zsb3dUaHJlYWRQb3J0aW9uUmVjdChjb25zdCBSZW5k
ZXJSZWdpb24qIGxhCiAgICAgLy8gRklYTUU6IE9wdGltaXplIG5vdCB0byBjbGVhciB0aGUgaW50
ZXJ2YWwgYWxsIHRoZSB0aW1lLiBUaGlzIGltcGxpZXMgbWFudWFsbHkgbWFuYWdpbmcgdGhlIHRy
ZWUgbm9kZXMgbGlmZWN5Y2xlLgogICAgIG1fcmVnaW9uSW50ZXJ2YWxUcmVlLmNsZWFyKCk7CiAg
ICAgbV9yZWdpb25JbnRlcnZhbFRyZWUuaW5pdElmTmVlZGVkKCk7Ci0gICAgZm9yIChhdXRvIGl0
ZXIgPSBtX3JlZ2lvbkxpc3QuYmVnaW4oKSwgZW5kID0gbV9yZWdpb25MaXN0LmVuZCgpOyBpdGVy
ICE9IGVuZDsgKytpdGVyKSB7Ci0gICAgICAgIFJlbmRlclJlZ2lvbiogcmVnaW9uID0gKml0ZXI7
Ci0KKyAgICBmb3IgKGF1dG8mIHJlZ2lvbiA6IG1fcmVnaW9uTGlzdCkgewogICAgICAgICAvLyBJ
ZiB3ZSBmaW5kIGFuIGVtcHR5IGF1dG8taGVpZ2h0IHJlZ2lvbiwgY2xlYXIgdGhlIGNvbXB1dGVk
QXV0b0hlaWdodCB2YWx1ZS4KICAgICAgICAgaWYgKGVtcHR5UmVnaW9uc1NlZ21lbnQgJiYgcmVn
aW9uLT5oYXNBdXRvTG9naWNhbEhlaWdodCgpKQogICAgICAgICAgICAgdG9SZW5kZXJOYW1lZEZs
b3dGcmFnbWVudChyZWdpb24pLT5jbGVhckNvbXB1dGVkQXV0b0hlaWdodCgpOwpAQCAtMTA4MSwx
MCArMTA2Miw4IEBAIHZvaWQgUmVuZGVyRmxvd1RocmVhZDo6Y29sbGVjdExheWVyRnJhZ21lbnRz
KExheWVyRnJhZ21lbnRzJiBsYXllckZyYWdtZW50cywgY29uCiB7CiAgICAgQVNTRVJUKCFtX3Jl
Z2lvbnNJbnZhbGlkYXRlZCk7CiAgICAgCi0gICAgZm9yIChhdXRvIGl0ZXIgPSBtX3JlZ2lvbkxp
c3QuYmVnaW4oKSwgZW5kID0gbV9yZWdpb25MaXN0LmVuZCgpOyBpdGVyICE9IGVuZDsgKytpdGVy
KSB7Ci0gICAgICAgIFJlbmRlclJlZ2lvbiogcmVnaW9uID0gKml0ZXI7CisgICAgZm9yIChhdXRv
JiByZWdpb24gOiBtX3JlZ2lvbkxpc3QpCiAgICAgICAgIHJlZ2lvbi0+Y29sbGVjdExheWVyRnJh
Z21lbnRzKGxheWVyRnJhZ21lbnRzLCBsYXllckJvdW5kaW5nQm94LCBkaXJ0eVJlY3QpOwotICAg
IH0KIH0KIAogTGF5b3V0UmVjdCBSZW5kZXJGbG93VGhyZWFkOjpmcmFnbWVudHNCb3VuZGluZ0Jv
eChjb25zdCBMYXlvdXRSZWN0JiBsYXllckJvdW5kaW5nQm94KQpAQCAtMTA5MiwxMiArMTA3MSwx
MCBAQCBMYXlvdXRSZWN0IFJlbmRlckZsb3dUaHJlYWQ6OmZyYWdtZW50c0JvdW5kaW5nQm94KGNv
bnN0IExheW91dFJlY3QmIGxheWVyQm91bmRpbgogICAgIEFTU0VSVCghbV9yZWdpb25zSW52YWxp
ZGF0ZWQpOwogICAgIAogICAgIExheW91dFJlY3QgcmVzdWx0OwotICAgIGZvciAoYXV0byBpdGVy
ID0gbV9yZWdpb25MaXN0LmJlZ2luKCksIGVuZCA9IG1fcmVnaW9uTGlzdC5lbmQoKTsgaXRlciAh
PSBlbmQ7ICsraXRlcikgewotICAgICAgICBSZW5kZXJSZWdpb24qIHJlZ2lvbiA9ICppdGVyOwor
ICAgIGZvciAoYXV0byYgcmVnaW9uIDogbV9yZWdpb25MaXN0KSB7CiAgICAgICAgIExheWVyRnJh
Z21lbnRzIGZyYWdtZW50czsKICAgICAgICAgcmVnaW9uLT5jb2xsZWN0TGF5ZXJGcmFnbWVudHMo
ZnJhZ21lbnRzLCBsYXllckJvdW5kaW5nQm94LCBMYXlvdXRSZWN0OjppbmZpbml0ZVJlY3QoKSk7
Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZnJhZ21lbnRzLnNpemUoKTsgKytpKSB7
Ci0gICAgICAgICAgICBjb25zdCBMYXllckZyYWdtZW50JiBmcmFnbWVudCA9IGZyYWdtZW50cy5h
dChpKTsKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiBmcmFnbWVudCA6IGZyYWdtZW50cykgewog
ICAgICAgICAgICAgTGF5b3V0UmVjdCBmcmFnbWVudFJlY3QobGF5ZXJCb3VuZGluZ0JveCk7CiAg
ICAgICAgICAgICBmcmFnbWVudFJlY3QuaW50ZXJzZWN0KGZyYWdtZW50LnBhZ2luYXRpb25DbGlw
KTsKICAgICAgICAgICAgIGZyYWdtZW50UmVjdC5tb3ZlQnkoZnJhZ21lbnQucGFnaW5hdGlvbk9m
ZnNldCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRG
bG93RnJhZ21lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxv
d0ZyYWdtZW50LmNwcAppbmRleCA1YzVlZDUxMWMxYTBmYzM4MjlkYjk4MGU1NTUwODBlODhhMGQy
MWE0Li5lZjAwY2RmODEwY2ZmNmJhZGMzMmFjYTFhNmVjOGM3MmNmYzQ3OTA1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dGcmFnbWVudC5jcHAK
QEAgLTMwOCw4ICszMDgsNyBAQCB2b2lkIFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50OjpzZXRSZWdp
b25PYmplY3RzUmVnaW9uU3R5bGUoKQogICAgIGNvbnN0IFJlbmRlck5hbWVkRmxvd1RocmVhZCYg
bmFtZWRGbG93ID0gdmlldygpLmZsb3dUaHJlYWRDb250cm9sbGVyKCkuZW5zdXJlUmVuZGVyRmxv
d1RocmVhZFdpdGhOYW1lKHN0eWxlKCkucmVnaW9uVGhyZWFkKCkpOwogICAgIGNvbnN0IE5hbWVk
Rmxvd0NvbnRlbnRFbGVtZW50cyYgY29udGVudEVsZW1lbnRzID0gbmFtZWRGbG93LmNvbnRlbnRF
bGVtZW50cygpOwogCi0gICAgZm9yIChhdXRvIGl0ZXIgPSBjb250ZW50RWxlbWVudHMuYmVnaW4o
KSwgZW5kID0gY29udGVudEVsZW1lbnRzLmVuZCgpOyBpdGVyICE9IGVuZDsgKytpdGVyKSB7Ci0g
ICAgICAgIGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQgPSAqaXRlcjsKKyAgICBmb3IgKGNvbnN0IGF1
dG8mIGVsZW1lbnQgOiBjb250ZW50RWxlbWVudHMpIHsKICAgICAgICAgLy8gVGhlIGxpc3Qgb2Yg
Y29udGVudCBub2RlcyBjb250YWlucyBhbHNvIHRoZSBub2RlcyB3aXRoIGRpc3BsYXk6bm9uZS4K
ICAgICAgICAgaWYgKCFlbGVtZW50LT5yZW5kZXJlcigpKQogICAgICAgICAgICAgY29udGludWU7
CkBAIC0zNDMsMTQgKzM0MiwxNCBAQCB2b2lkIFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50OjpyZXN0
b3JlUmVnaW9uT2JqZWN0c09yaWdpbmFsU3R5bGUoKQogICAgICAgICByZXR1cm47CiAKICAgICBS
ZW5kZXJPYmplY3RSZWdpb25TdHlsZU1hcCB0ZW1wOwotICAgIGZvciAoYXV0byBpdGVyID0gbV9y
ZW5kZXJPYmplY3RSZWdpb25TdHlsZS5iZWdpbigpLCBlbmQgPSBtX3JlbmRlck9iamVjdFJlZ2lv
blN0eWxlLmVuZCgpOyBpdGVyICE9IGVuZDsgKytpdGVyKSB7Ci0gICAgICAgIFJlbmRlck9iamVj
dCogb2JqZWN0ID0gY29uc3RfY2FzdDxSZW5kZXJPYmplY3QqPihpdGVyLT5rZXkpOworICAgIGZv
ciAoYXV0byYgb2JqZWN0UGFpciA6IG1fcmVuZGVyT2JqZWN0UmVnaW9uU3R5bGUpIHsKKyAgICAg
ICAgUmVuZGVyT2JqZWN0KiBvYmplY3QgPSBjb25zdF9jYXN0PFJlbmRlck9iamVjdCo+KG9iamVj
dFBhaXIua2V5KTsKICAgICAgICAgUmVmUHRyPFJlbmRlclN0eWxlPiBvYmplY3RSZWdpb25TdHls
ZSA9ICZvYmplY3QtPnN0eWxlKCk7Ci0gICAgICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4gb2JqZWN0
T3JpZ2luYWxTdHlsZSA9IGl0ZXItPnZhbHVlLnN0eWxlOworICAgICAgICBSZWZQdHI8UmVuZGVy
U3R5bGU+IG9iamVjdE9yaWdpbmFsU3R5bGUgPSBvYmplY3RQYWlyLnZhbHVlLnN0eWxlOwogICAg
ICAgICBpZiAob2JqZWN0LT5pc1JlbmRlckVsZW1lbnQoKSkKICAgICAgICAgICAgIHRvUmVuZGVy
RWxlbWVudChvYmplY3QpLT5zZXRTdHlsZUludGVybmFsKCpvYmplY3RPcmlnaW5hbFN0eWxlKTsK
IAotICAgICAgICBib29sIHNob3VsZENhY2hlUmVnaW9uU3R5bGUgPSBpdGVyLT52YWx1ZS5jYWNo
ZWQ7CisgICAgICAgIGJvb2wgc2hvdWxkQ2FjaGVSZWdpb25TdHlsZSA9IG9iamVjdFBhaXIudmFs
dWUuY2FjaGVkOwogICAgICAgICBpZiAoIXNob3VsZENhY2hlUmVnaW9uU3R5bGUpIHsKICAgICAg
ICAgICAgIC8vIENoZWNrIHdoZXRoZXIgd2Ugc2hvdWxkIGNhY2hlIHRoZSBjb21wdXRlZCBzdHls
ZSBpbiByZWdpb24uCiAgICAgICAgICAgICB1bnNpZ25lZCBjaGFuZ2VkQ29udGV4dFNlbnNpdGl2
ZVByb3BlcnRpZXMgPSBDb250ZXh0U2Vuc2l0aXZlUHJvcGVydHlOb25lOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd1RocmVhZC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93VGhyZWFkLmNwcAppbmRleCBjZWM1
MTYzNjE2N2E0YWI2NWQ2MzlkYzZlYTQ5ZTEwZDk4YTE0ODQ4Li4xZmI1YmEzMThhMWU2N2UyMTAx
Zjg3YmQ0YWJlMTIwZDk3ZGYyMzU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTmFtZWRGbG93VGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTmFtZWRGbG93VGhyZWFkLmNwcApAQCAtNzMsOSArNzMsNyBAQCBjb25zdCBjaGFy
KiBSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OnJlbmRlck5hbWUoKSBjb25zdAogICAgIAogdm9pZCBS
ZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OmNsZWFyQ29udGVudEVsZW1lbnRzKCkKIHsKLSAgICBmb3Ig
KGF1dG8gaXQgPSBtX2NvbnRlbnRFbGVtZW50cy5iZWdpbigpLCBlbmQgPSBtX2NvbnRlbnRFbGVt
ZW50cy5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgIEVsZW1lbnQqIGNvbnRlbnRF
bGVtZW50ID0gKml0OwotICAgICAgICAKKyAgICBmb3IgKGF1dG8mIGNvbnRlbnRFbGVtZW50IDog
bV9jb250ZW50RWxlbWVudHMpIHsKICAgICAgICAgQVNTRVJUKGNvbnRlbnRFbGVtZW50KTsKICAg
ICAgICAgQVNTRVJUKGNvbnRlbnRFbGVtZW50LT5pbk5hbWVkRmxvdygpKTsKICAgICAgICAgQVNT
RVJUKCZjb250ZW50RWxlbWVudC0+ZG9jdW1lbnQoKSA9PSAmZG9jdW1lbnQoKSk7CkBAIC0xMDIs
OCArMTAwLDggQEAgdm9pZCBSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OnVwZGF0ZVdyaXRpbmdNb2Rl
KCkKIAogUmVuZGVyT2JqZWN0KiBSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6Om5leHRSZW5kZXJlckZv
ck5vZGUoTm9kZSogbm9kZSkgY29uc3QKIHsKLSAgICBmb3IgKGF1dG8gaXQgPSBtX2Zsb3dUaHJl
YWRDaGlsZExpc3QtPmJlZ2luKCksIGVuZCA9IG1fZmxvd1RocmVhZENoaWxkTGlzdC0+ZW5kKCk7
IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICBSZW5kZXJPYmplY3QqIGNoaWxkID0gKml0Owor
ICAgIGNvbnN0IEZsb3dUaHJlYWRDaGlsZExpc3QmIGNoaWxkTGlzdCA9ICoobV9mbG93VGhyZWFk
Q2hpbGRMaXN0LmdldCgpKTsKKyAgICBmb3IgKGF1dG8mIGNoaWxkIDogY2hpbGRMaXN0KSB7CiAg
ICAgICAgIEFTU0VSVChjaGlsZC0+bm9kZSgpKTsKICAgICAgICAgdW5zaWduZWQgc2hvcnQgcG9z
aXRpb24gPSBub2RlLT5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihjaGlsZC0+bm9kZSgpKTsKICAg
ICAgICAgaWYgKHBvc2l0aW9uICYgTm9kZTo6RE9DVU1FTlRfUE9TSVRJT05fRk9MTE9XSU5HKQpA
QCAtMTY1LDggKzE2Myw4IEBAIGJvb2wgUmVuZGVyTmFtZWRGbG93VGhyZWFkOjpkZXBlbmRzT24o
UmVuZGVyTmFtZWRGbG93VGhyZWFkKiBvdGhlclJlbmRlckZsb3dUaHJlCiAgICAgICAgIHJldHVy
biB0cnVlOwogCiAgICAgLy8gUmVjdXJzaXZlbHkgdHJhdmVyc2UgdGhlIG1fbGF5b3V0QmVmb3Jl
VGhyZWFkc1NldC4KLSAgICBmb3IgKGF1dG8gaXRlcmF0b3IgPSBtX2xheW91dEJlZm9yZVRocmVh
ZHNTZXQuYmVnaW4oKSwgZW5kID0gbV9sYXlvdXRCZWZvcmVUaHJlYWRzU2V0LmVuZCgpOyBpdGVy
YXRvciAhPSBlbmQ7ICsraXRlcmF0b3IpIHsKLSAgICAgICAgY29uc3QgUmVuZGVyTmFtZWRGbG93
VGhyZWFkKiBiZWZvcmVGbG93VGhyZWFkID0gKCppdGVyYXRvcikua2V5OworICAgIGZvciAoY29u
c3QgYXV0byYgYmVmb3JlRmxvd1RocmVhZFBhaXIgOiBtX2xheW91dEJlZm9yZVRocmVhZHNTZXQp
IHsKKyAgICAgICAgY29uc3QgYXV0byYgYmVmb3JlRmxvd1RocmVhZCA9IGJlZm9yZUZsb3dUaHJl
YWRQYWlyLmtleTsKICAgICAgICAgaWYgKGJlZm9yZUZsb3dUaHJlYWQtPmRlcGVuZHNPbihvdGhl
clJlbmRlckZsb3dUaHJlYWQpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAt
MzI2LDggKzMyNCw3IEBAIHZvaWQgUmVuZGVyTmFtZWRGbG93VGhyZWFkOjpjb21wdXRlT3ZlcnNl
dFN0YXRlRm9yUmVnaW9ucyhMYXlvdXRVbml0IG9sZENsaWVudEFmCiAgICAgICAgIGhlaWdodCA9
IGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyB2aXN1YWxPdmVyZmxvd1JlY3QoKS5tYXhZKCkg
OiB2aXN1YWxPdmVyZmxvd1JlY3QoKS5tYXhYKCk7CiAKICAgICBSZW5kZXJSZWdpb24qIGxhc3RS
ZWcgPSBsYXN0UmVnaW9uKCk7Ci0gICAgZm9yIChhdXRvIGl0ZXIgPSBtX3JlZ2lvbkxpc3QuYmVn
aW4oKSwgZW5kID0gbV9yZWdpb25MaXN0LmVuZCgpOyBpdGVyICE9IGVuZDsgKytpdGVyKSB7Ci0g
ICAgICAgIFJlbmRlclJlZ2lvbiogcmVnaW9uID0gKml0ZXI7CisgICAgZm9yIChhdXRvJiByZWdp
b24gOiBtX3JlZ2lvbkxpc3QpIHsKICAgICAgICAgTGF5b3V0VW5pdCBmbG93TWluID0gaGVpZ2h0
IC0gKGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyByZWdpb24tPmZsb3dUaHJlYWRQb3J0aW9u
UmVjdCgpLnkoKSA6IHJlZ2lvbi0+Zmxvd1RocmVhZFBvcnRpb25SZWN0KCkueCgpKTsKICAgICAg
ICAgTGF5b3V0VW5pdCBmbG93TWF4ID0gaGVpZ2h0IC0gKGlzSG9yaXpvbnRhbFdyaXRpbmdNb2Rl
KCkgPyByZWdpb24tPmZsb3dUaHJlYWRQb3J0aW9uUmVjdCgpLm1heFkoKSA6IHJlZ2lvbi0+Zmxv
d1RocmVhZFBvcnRpb25SZWN0KCkubWF4WCgpKTsKICAgICAgICAgUmVnaW9uT3ZlcnNldFN0YXRl
IHByZXZpb3VzU3RhdGUgPSByZWdpb24tPnJlZ2lvbk92ZXJzZXRTdGF0ZSgpOwpAQCAtMzYzLDgg
KzM2MCw3IEBAIHZvaWQgUmVuZGVyTmFtZWRGbG93VGhyZWFkOjpjb21wdXRlT3ZlcnNldFN0YXRl
Rm9yUmVnaW9ucyhMYXlvdXRVbml0IG9sZENsaWVudEFmCiB2b2lkIFJlbmRlck5hbWVkRmxvd1Ro
cmVhZDo6Y2hlY2tJbnZhbGlkUmVnaW9ucygpCiB7CiAgICAgVmVjdG9yPFJlbmRlclJlZ2lvbio+
IG5ld1ZhbGlkUmVnaW9uczsKLSAgICBmb3IgKGF1dG8gaXRlciA9IG1faW52YWxpZFJlZ2lvbkxp
c3QuYmVnaW4oKSwgZW5kID0gbV9pbnZhbGlkUmVnaW9uTGlzdC5lbmQoKTsgaXRlciAhPSBlbmQ7
ICsraXRlcikgewotICAgICAgICBSZW5kZXJSZWdpb24qIHJlZ2lvbiA9ICppdGVyOworICAgIGZv
ciAoYXV0byYgcmVnaW9uIDogbV9pbnZhbGlkUmVnaW9uTGlzdCkgewogICAgICAgICAvLyBUaGUg
b25seSByZWFzb24gYSByZWdpb24gd291bGQgYmUgaW52YWxpZCBpcyBiZWNhdXNlIGl0IGhhcyBh
IHBhcmVudCBmbG93IHRocmVhZC4KICAgICAgICAgQVNTRVJUKCFyZWdpb24tPmlzVmFsaWQoKSAm
JiByZWdpb24tPnBhcmVudE5hbWVkRmxvd1RocmVhZCgpKTsKICAgICAgICAgaWYgKHJlZ2lvbi0+
cGFyZW50TmFtZWRGbG93VGhyZWFkKCktPmRlcGVuZHNPbih0aGlzKSkKQEAgLTM3Myw4ICszNjks
NyBAQCB2b2lkIFJlbmRlck5hbWVkRmxvd1RocmVhZDo6Y2hlY2tJbnZhbGlkUmVnaW9ucygpCiAg
ICAgICAgIG5ld1ZhbGlkUmVnaW9ucy5hcHBlbmQocmVnaW9uKTsKICAgICB9CiAKLSAgICBmb3Ig
KGF1dG8gaXRlciA9IG5ld1ZhbGlkUmVnaW9ucy5iZWdpbigpLCBlbmQgPSBuZXdWYWxpZFJlZ2lv
bnMuZW5kKCk7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpIHsKLSAgICAgICAgUmVuZGVyUmVnaW9uKiBy
ZWdpb24gPSAqaXRlcjsKKyAgICBmb3IgKGF1dG8mIHJlZ2lvbiA6IG5ld1ZhbGlkUmVnaW9ucykg
ewogICAgICAgICBtX2ludmFsaWRSZWdpb25MaXN0LnJlbW92ZShyZWdpb24pOwogICAgICAgICBy
ZWdpb24tPnBhcmVudE5hbWVkRmxvd1RocmVhZCgpLT5tX29ic2VydmVyVGhyZWFkc1NldC5yZW1v
dmUodGhpcyk7CiAgICAgICAgIGFkZFJlZ2lvblRvTmFtZWRGbG93VGhyZWFkKHJlZ2lvbik7CkBA
IC0zOTIsMTAgKzM4Nyw4IEBAIHZvaWQgUmVuZGVyTmFtZWRGbG93VGhyZWFkOjpjaGVja0ludmFs
aWRSZWdpb25zKCkKICAgICBWZWN0b3I8UmVuZGVyTmFtZWRGbG93VGhyZWFkKj4gb2JzZXJ2ZXJz
OwogICAgIGNvcHlUb1ZlY3RvcihtX29ic2VydmVyVGhyZWFkc1NldCwgb2JzZXJ2ZXJzKTsKIAot
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgb2JzZXJ2ZXJzLnNpemUoKTsgKytpKSB7Ci0gICAg
ICAgIFJlbmRlck5hbWVkRmxvd1RocmVhZCogZmxvd1RocmVhZCA9IG9ic2VydmVycy5hdChpKTsK
KyAgICBmb3IgKGF1dG8mIGZsb3dUaHJlYWQgOiBvYnNlcnZlcnMpCiAgICAgICAgIGZsb3dUaHJl
YWQtPmNoZWNrSW52YWxpZFJlZ2lvbnMoKTsKLSAgICB9CiB9CiAKIHZvaWQgUmVuZGVyTmFtZWRG
bG93VGhyZWFkOjphZGREZXBlbmRlbmN5T25GbG93VGhyZWFkKFJlbmRlck5hbWVkRmxvd1RocmVh
ZCogb3RoZXJGbG93VGhyZWFkKQpAQCAtNDE4LDggKzQxMSw4IEBAIHZvaWQgUmVuZGVyTmFtZWRG
bG93VGhyZWFkOjpyZW1vdmVEZXBlbmRlbmN5T25GbG93VGhyZWFkKFJlbmRlck5hbWVkRmxvd1Ro
cmVhZCoKIAogdm9pZCBSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OnB1c2hEZXBlbmRlbmNpZXMoUmVu
ZGVyTmFtZWRGbG93VGhyZWFkTGlzdCYgbGlzdCkKIHsKLSAgICBmb3IgKGF1dG8gaXRlciA9IG1f
bGF5b3V0QmVmb3JlVGhyZWFkc1NldC5iZWdpbigpLCBlbmQgPSBtX2xheW91dEJlZm9yZVRocmVh
ZHNTZXQuZW5kKCk7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpIHsKLSAgICAgICAgUmVuZGVyTmFtZWRG
bG93VGhyZWFkKiBmbG93VGhyZWFkID0gKCppdGVyKS5rZXk7CisgICAgZm9yIChhdXRvJiBmbG93
VGhyZWFkUGFpciA6IG1fbGF5b3V0QmVmb3JlVGhyZWFkc1NldCkgeworICAgICAgICBhdXRvJiBm
bG93VGhyZWFkID0gZmxvd1RocmVhZFBhaXIua2V5OwogICAgICAgICBpZiAobGlzdC5jb250YWlu
cyhmbG93VGhyZWFkKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBmbG93VGhyZWFk
LT5wdXNoRGVwZW5kZW5jaWVzKGxpc3QpOwpAQCAtNDM5LDggKzQzMiw3IEBAIHZvaWQgUmVuZGVy
TmFtZWRGbG93VGhyZWFkOjpyZWdpc3Rlck5hbWVkRmxvd0NvbnRlbnRFbGVtZW50KEVsZW1lbnQm
IGNvbnRlbnRFbGVtCiAgICAgcmVzZXRNYXJrRm9yRGVzdHJ1Y3Rpb24oKTsKIAogICAgIC8vIEZp
bmQgdGhlIGZpcnN0IGNvbnRlbnQgbm9kZSBmb2xsb3dpbmcgdGhlIG5ldyBjb250ZW50IG5vZGUu
Ci0gICAgZm9yIChhdXRvIGl0ID0gbV9jb250ZW50RWxlbWVudHMuYmVnaW4oKSwgZW5kID0gbV9j
b250ZW50RWxlbWVudHMuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICBFbGVtZW50
KiBlbGVtZW50ID0gKml0OworICAgIGZvciAoYXV0byYgZWxlbWVudCA6IG1fY29udGVudEVsZW1l
bnRzKSB7CiAgICAgICAgIHVuc2lnbmVkIHNob3J0IHBvc2l0aW9uID0gY29udGVudEVsZW1lbnQu
Y29tcGFyZURvY3VtZW50UG9zaXRpb24oZWxlbWVudCk7CiAgICAgICAgIGlmIChwb3NpdGlvbiAm
IE5vZGU6OkRPQ1VNRU5UX1BPU0lUSU9OX0ZPTExPV0lORykgewogICAgICAgICAgICAgbV9jb250
ZW50RWxlbWVudHMuaW5zZXJ0QmVmb3JlKGVsZW1lbnQsICZjb250ZW50RWxlbWVudCk7CkBAIC01
NTAsOCArNTQyLDcgQEAgYm9vbCBSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OmlzTWFya2VkRm9yRGVz
dHJ1Y3Rpb24oKSBjb25zdAogCiBzdGF0aWMgYm9vbCBpc0NvbnRhaW5lZEluRWxlbWVudHMoY29u
c3QgVmVjdG9yPEVsZW1lbnQqPiYgb3RoZXJzLCBFbGVtZW50KiBlbGVtZW50KQogewotICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgb3RoZXJzLnNpemUoKTsgaSsrKSB7Ci0gICAgICAgIEVsZW1l
bnQqIG90aGVyID0gb3RoZXJzLmF0KGkpOworICAgIGZvciAoYXV0byYgb3RoZXIgOiBvdGhlcnMp
IHsKICAgICAgICAgaWYgKG90aGVyLT5jb250YWlucyhlbGVtZW50KSkKICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0KQEAgLTU5OSwxNCArNTkwLDEyIEBAIHZvaWQgUmVuZGVyTmFtZWRG
bG93VGhyZWFkOjpnZXRSYW5nZXMoVmVjdG9yPFJlZlB0cjxSYW5nZT4+JiByYW5nZU9iamVjdHMs
IGNvbnN0CiAKICAgICBWZWN0b3I8RWxlbWVudCo+IGVsZW1lbnRzOwogICAgIC8vIGVsaW1pbmF0
ZSB0aGUgY29udGVudEVsZW1lbnRzIHRoYXQgYXJlIGRlc2NlbmRhbnRzIG9mIG90aGVyIGNvbnRl
bnRFbGVtZW50cwotICAgIGZvciAoYXV0byBpdCA9IGNvbnRlbnRFbGVtZW50cygpLmJlZ2luKCks
IGVuZCA9IGNvbnRlbnRFbGVtZW50cygpLmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAg
ICAgRWxlbWVudCogZWxlbWVudCA9ICppdDsKKyAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBjb250
ZW50RWxlbWVudHMoKSkgewogICAgICAgICBpZiAoIWlzQ29udGFpbmVkSW5FbGVtZW50cyhlbGVt
ZW50cywgZWxlbWVudCkpCiAgICAgICAgICAgICBlbGVtZW50cy5hcHBlbmQoZWxlbWVudCk7CiAg
ICAgfQogCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBlbGVtZW50cy5zaXplKCk7IGkrKykg
ewotICAgICAgICBFbGVtZW50KiBjb250ZW50RWxlbWVudCA9IGVsZW1lbnRzLmF0KGkpOworICAg
IGZvciAoYXV0byYgY29udGVudEVsZW1lbnQgOiBlbGVtZW50cykgewogICAgICAgICBpZiAoIWNv
bnRlbnRFbGVtZW50LT5yZW5kZXJlcigpKQogICAgICAgICAgICAgY29udGludWU7CiAKQEAgLTc0
NCw5ICs3MzMsOSBAQCBib29sIFJlbmRlck5hbWVkRmxvd1RocmVhZDo6Y29sbGVjdHNHcmFwaGlj
c0xheWVyc1VuZGVyUmVnaW9ucygpIGNvbnN0CiB2b2lkIFJlbmRlck5hbWVkRmxvd1RocmVhZDo6
Y2hlY2tSZWdpb25zV2l0aFN0eWxpbmcoKQogewogICAgIGJvb2wgaGFzUmVnaW9uc1dpdGhTdHls
aW5nID0gZmFsc2U7Ci0gICAgZm9yIChhdXRvIGl0ZXIgPSBtX3JlZ2lvbkxpc3QuYmVnaW4oKSwg
ZW5kID0gbV9yZWdpb25MaXN0LmVuZCgpOyBpdGVyICE9IGVuZDsgKytpdGVyKSB7Ci0gICAgICAg
IFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KiByZWdpb24gPSB0b1JlbmRlck5hbWVkRmxvd0ZyYWdt
ZW50KCppdGVyKTsKLSAgICAgICAgaWYgKHJlZ2lvbi0+aGFzQ3VzdG9tUmVnaW9uU3R5bGUoKSkg
eworICAgIGZvciAoY29uc3QgYXV0byYgcmVnaW9uIDogbV9yZWdpb25MaXN0KSB7CisgICAgICAg
IGNvbnN0IFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KiBuYW1lZEZsb3dGcmFnbWVudCA9IHRvUmVu
ZGVyTmFtZWRGbG93RnJhZ21lbnQocmVnaW9uKTsKKyAgICAgICAgaWYgKG5hbWVkRmxvd0ZyYWdt
ZW50LT5oYXNDdXN0b21SZWdpb25TdHlsZSgpKSB7CiAgICAgICAgICAgICBoYXNSZWdpb25zV2l0
aFN0eWxpbmcgPSB0cnVlOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTc1OCw5
ICs3NDcsOSBAQCB2b2lkIFJlbmRlck5hbWVkRmxvd1RocmVhZDo6Y2xlYXJSZW5kZXJPYmplY3RD
dXN0b21TdHlsZShjb25zdCBSZW5kZXJPYmplY3QqIG9iagogewogICAgIC8vIENsZWFyIHRoZSBz
dHlsZXMgZm9yIHRoZSBvYmplY3QgaW4gdGhlIHJlZ2lvbnMuCiAgICAgLy8gRklYTUU6IFJlZ2lv
biBzdHlsaW5nIGlzIG5vdCBjb21wdXRlZCBvbmx5IGZvciB0aGUgcmVnaW9uIHJhbmdlIG9mIHRo
ZSBvYmplY3Qgc28gdGhpcyBpcyB3aHkgd2UgbmVlZCB0byB3YWxrIHRoZSB3aG9sZSBjaGFpbi4K
LSAgICBmb3IgKGF1dG8gaXRlciA9IG1fcmVnaW9uTGlzdC5iZWdpbigpLCBlbmQgPSBtX3JlZ2lv
bkxpc3QuZW5kKCk7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpIHsKLSAgICAgICAgUmVuZGVyTmFtZWRG
bG93RnJhZ21lbnQqIHJlZ2lvbiA9IHRvUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQoKml0ZXIpOwot
ICAgICAgICByZWdpb24tPmNsZWFyT2JqZWN0U3R5bGVJblJlZ2lvbihvYmplY3QpOworICAgIGZv
ciAoYXV0byYgcmVnaW9uIDogbV9yZWdpb25MaXN0KSB7CisgICAgICAgIFJlbmRlck5hbWVkRmxv
d0ZyYWdtZW50KiBuYW1lZEZsb3dGcmFnbWVudCA9IHRvUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQo
cmVnaW9uKTsKKyAgICAgICAgbmFtZWRGbG93RnJhZ21lbnQtPmNsZWFyT2JqZWN0U3R5bGVJblJl
Z2lvbihvYmplY3QpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRyZWVBc1RleHQuY3BwCmluZGV4IDI1MGMwNDhhODgxOTZmMzhhYTllOWQxNjkyZjJjZDI3
ZTUwOGRkMWMuLmQ4NjZiYzY0ZDBiYTYzNjgwMDc3OWE3MWI0YzI4NGRhNjA4NTQ0NDAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAKQEAgLTY1Nyw5
ICs2NTcsNyBAQCBzdGF0aWMgdm9pZCB3cml0ZShUZXh0U3RyZWFtJiB0cywgUmVuZGVyTGF5ZXIm
IGwsCiAKIHN0YXRpYyB2b2lkIHdyaXRlUmVuZGVyUmVnaW9uTGlzdChjb25zdCBSZW5kZXJSZWdp
b25MaXN0JiBmbG93VGhyZWFkUmVnaW9uTGlzdCwgVGV4dFN0cmVhbSYgdHMsIGludCBpbmRlbnQp
CiB7Ci0gICAgZm9yIChSZW5kZXJSZWdpb25MaXN0Ojpjb25zdF9pdGVyYXRvciBpdFJSID0gZmxv
d1RocmVhZFJlZ2lvbkxpc3QuYmVnaW4oKTsgaXRSUiAhPSBmbG93VGhyZWFkUmVnaW9uTGlzdC5l
bmQoKTsgKytpdFJSKSB7Ci0gICAgICAgIFJlbmRlclJlZ2lvbiogcmVuZGVyUmVnaW9uID0gKml0
UlI7Ci0KKyAgICBmb3IgKGNvbnN0IGF1dG8mIHJlbmRlclJlZ2lvbiA6IGZsb3dUaHJlYWRSZWdp
b25MaXN0KSB7CiAgICAgICAgIHdyaXRlSW5kZW50KHRzLCBpbmRlbnQpOwogICAgICAgICB0cyA8
PCBzdGF0aWNfY2FzdDxjb25zdCBSZW5kZXJPYmplY3QqPihyZW5kZXJSZWdpb24pLT5yZW5kZXJO
YW1lKCk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>221959</attachid>
            <date>2014-01-23 01:12:29 -0800</date>
            <delta_ts>2014-01-23 01:57:45 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-127464-20140123111554.patch</filename>
            <type>text/plain</type>
            <size>27992</size>
            <attacher name="Andrei Bucur">abucur</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYyNTk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjNjZjM4OTQ0NTgxMTRi
OTc0ZjkwMzg2ODUzMzU5ZjY3YmEzNzg2My4uY2EyY2IxMzE4ZTFiZGM2NjMxZDIxMWZjOWIyYzJk
N2VhMjdmOGRlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1IEBACisyMDE0LTAxLTIzICBBbmRy
ZWkgQnVjdXIgIDxhYnVjdXJAYWRvYmUuY29tPgorCisgICAgICAgIFtDU1MgUmVnaW9uc10gQ29u
dmVydCByZWdpb25zIGl0ZXJhdG9yIGxvb3BzIHRvIHJhbmdlLWJhc2VkIGxvb3BzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjc0NjQKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXBsYWNlIG1vc3Qgb2Yg
dGhlIGl0ZXJhdG9yIGxvb3BzIGluIHRoZSByZWdpb24gaW1wbGVtZW50YXRpb24gd2l0aAorICAg
ICAgICByYW5nZSBiYXNlZCBmb3IgbG9vcHMuIFRoZSBmb3IgbG9vcHMgdGhhdCBpdGVyYXRlIG9u
bHkgb3ZlciBzdWJzZXRzCisgICAgICAgIG9mIGNvbGxlY3Rpb25zIGhhdmUgbm90IGJlZW4gY2hh
bmdlZC4KKworICAgICAgICBUZXN0czogbm8gbmV3IHRlc3RzLCB0aGlzIGlzIGEgcmVmYWN0b3Jp
bmcgcGF0Y2guCisKKyAgICAgICAgKiBkb20vV2ViS2l0TmFtZWRGbG93LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OldlYktpdE5hbWVkRmxvdzo6Zmlyc3RFbXB0eVJlZ2lvbkluZGV4KToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYktpdE5hbWVkRmxvdzo6Z2V0UmVnaW9uc0J5Q29udGVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJLaXROYW1lZEZsb3c6OmdldFJlZ2lvbnMpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViS2l0TmFtZWRGbG93OjpnZXRDb250ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5zcGVjdG9yT3ZlcmxheS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpidWlsZE9iamVjdEZvckNT
U1JlZ2lvbnNIaWdobGlnaHQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGbG93VGhyZWFk
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsb3dUaHJlYWQ6OnZhbGlkYXRlUmVnaW9u
cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbG93VGhyZWFkOjp1cGRhdGVMb2dpY2FsV2lk
dGgpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxvd1RocmVhZDo6Y29tcHV0ZUxvZ2ljYWxI
ZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxvd1RocmVhZDo6cmVwYWludFJlY3Rh
bmdsZUluUmVnaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbG93VGhyZWFkOjpyZW1v
dmVSZW5kZXJCb3hSZWdpb25JbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsb3dUaHJl
YWQ6OmxvZ2ljYWxXaWR0aENoYW5nZWRJblJlZ2lvbnNGb3JCbG9jayk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJGbG93VGhyZWFkOjpjbGVhclJlbmRlckJveFJlZ2lvbkluZm9BbmRDdXN0b21T
dHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbG93VGhyZWFkOjppc0F1dG9Mb2dpY2Fs
SGVpZ2h0UmVnaW9uc0NvdW50Q29uc2lzdGVudCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJG
bG93VGhyZWFkOjptYXJrQXV0b0xvZ2ljYWxIZWlnaHRSZWdpb25zRm9yTGF5b3V0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckZsb3dUaHJlYWQ6Om1hcmtSZWdpb25zRm9yT3ZlcmZsb3dMYXlv
dXRJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbG93VGhyZWFkOjp1cGRhdGVS
ZWdpb25zRmxvd1RocmVhZFBvcnRpb25SZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZs
b3dUaHJlYWQ6OmNvbGxlY3RMYXllckZyYWdtZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJGbG93VGhyZWFkOjpmcmFnbWVudHNCb3VuZGluZ0JveCk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlck5hbWVkRmxvd0ZyYWdtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck5h
bWVkRmxvd0ZyYWdtZW50OjpzZXRSZWdpb25PYmplY3RzUmVnaW9uU3R5bGUpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyTmFtZWRGbG93RnJhZ21lbnQ6OnJlc3RvcmVSZWdpb25PYmplY3RzT3Jp
Z2luYWxTdHlsZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd1RocmVhZC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OmNsZWFyQ29udGVu
dEVsZW1lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck5hbWVkRmxvd1RocmVhZDo6bmV4
dFJlbmRlcmVyRm9yTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJOYW1lZEZsb3dUaHJl
YWQ6OmRlcGVuZHNPbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6
OmNvbXB1dGVPdmVyc2V0U3RhdGVGb3JSZWdpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ck5hbWVkRmxvd1RocmVhZDo6Y2hlY2tJbnZhbGlkUmVnaW9ucyk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OnB1c2hEZXBlbmRlbmNpZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTmFtZWRGbG93VGhyZWFkOjpyZWdpc3Rlck5hbWVkRmxvd0NvbnRlbnRFbGVt
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OmlzQ29udGFpbmVkSW5FbGVtZW50cyk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OmdldFJhbmdlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OmNoZWNrUmVnaW9uc1dpdGhTdHlsaW5nKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck5hbWVkRmxvd1RocmVhZDo6Y2xlYXJSZW5kZXJPYmpl
Y3RDdXN0b21TdHlsZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6d3JpdGVSZW5kZXJSZWdpb25MaXN0KToKKwogMjAxNC0wMS0y
MiAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBTdXJy
b3VuZCBmaXhlZFZpc2libGVDb250ZW50UmVjdCBjb2RlIHdpdGggVVNFKFRJTEVEX0JBQ0tJTkdf
U1RPUkUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vV2ViS2l0TmFtZWRGbG93LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9XZWJLaXROYW1lZEZsb3cuY3BwCmluZGV4IDc3NTkyODY2
OWVjNTU0NzY0M2FlNzM1NDhiYzdkYjExNWYwYzVmNTUuLmNmZjJkZDY1OTY5MTJhMDMzYTkzYzlh
YzVhODExYTg4ZjRkZDAyYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9XZWJLaXRO
YW1lZEZsb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9XZWJLaXROYW1lZEZsb3cuY3Bw
CkBAIC05OSwxNiArOTksMTUgQEAgaW50IFdlYktpdE5hbWVkRmxvdzo6Zmlyc3RFbXB0eVJlZ2lv
bkluZGV4KCkgY29uc3QKICAgICAgICAgcmV0dXJuIC0xOwogCiAgICAgaW50IGNvdW50Tm9uUHNl
dWRvUmVnaW9ucyA9IC0xOwotICAgIGF1dG8gaXRlciA9IHJlZ2lvbkxpc3QuYmVnaW4oKTsKLSAg
ICBmb3IgKGludCBpbmRleCA9IDA7IGl0ZXIgIT0gcmVnaW9uTGlzdC5lbmQoKTsgKytpbmRleCwg
KytpdGVyKSB7CisgICAgZm9yIChjb25zdCBhdXRvJiByZW5kZXJSZWdpb24gOiByZWdpb25MaXN0
KSB7CisgICAgICAgIGNvbnN0IFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KiBuYW1lZEZsb3dGcmFn
bWVudCA9IHRvUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQocmVuZGVyUmVnaW9uKTsKICAgICAgICAg
Ly8gRklYTUU6IFBzZXVkby1lbGVtZW50cyBhcmUgbm90IGluY2x1ZGVkIGluIHRoZSBsaXN0Lgog
ICAgICAgICAvLyBUaGV5IHdpbGwgYmUgaW5jbHVkZWQgd2hlbiB3ZSB3aWxsIHByb3Blcmx5IHN1
cHBvcnQgdGhlIFJlZ2lvbiBpbnRlcmZhY2UKICAgICAgICAgLy8gaHR0cDovL2Rldi53My5vcmcv
Y3Nzd2cvY3NzLXJlZ2lvbnMvI3RoZS1yZWdpb24taW50ZXJmYWNlCi0gICAgICAgIGNvbnN0IFJl
bmRlck5hbWVkRmxvd0ZyYWdtZW50KiByZW5kZXJSZWdpb24gPSB0b1JlbmRlck5hbWVkRmxvd0Zy
YWdtZW50KCppdGVyKTsKLSAgICAgICAgaWYgKHJlbmRlclJlZ2lvbi0+aXNQc2V1ZG9FbGVtZW50
UmVnaW9uKCkpCisgICAgICAgIGlmIChuYW1lZEZsb3dGcmFnbWVudC0+aXNQc2V1ZG9FbGVtZW50
UmVnaW9uKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgY291bnROb25Qc2V1ZG9S
ZWdpb25zKys7Ci0gICAgICAgIGlmIChyZW5kZXJSZWdpb24tPnJlZ2lvbk92ZXJzZXRTdGF0ZSgp
ID09IFJlZ2lvbkVtcHR5KQorICAgICAgICBpZiAobmFtZWRGbG93RnJhZ21lbnQtPnJlZ2lvbk92
ZXJzZXRTdGF0ZSgpID09IFJlZ2lvbkVtcHR5KQogICAgICAgICAgICAgcmV0dXJuIGNvdW50Tm9u
UHNldWRvUmVnaW9uczsKICAgICB9CiAgICAgcmV0dXJuIC0xOwpAQCAtMTMxLDE2ICsxMzAsMTYg
QEAgUGFzc1JlZlB0cjxOb2RlTGlzdD4gV2ViS2l0TmFtZWRGbG93OjpnZXRSZWdpb25zQnlDb250
ZW50KE5vZGUqIGNvbnRlbnROb2RlKQogCiAgICAgaWYgKGluRmxvd1RocmVhZChjb250ZW50Tm9k
ZS0+cmVuZGVyZXIoKSwgbV9wYXJlbnRGbG93VGhyZWFkKSkgewogICAgICAgICBjb25zdCBSZW5k
ZXJSZWdpb25MaXN0JiByZWdpb25MaXN0ID0gbV9wYXJlbnRGbG93VGhyZWFkLT5yZW5kZXJSZWdp
b25MaXN0KCk7Ci0gICAgICAgIGZvciAoYXV0byBpdGVyID0gcmVnaW9uTGlzdC5iZWdpbigpLCBl
bmQgPSByZWdpb25MaXN0LmVuZCgpOyBpdGVyICE9IGVuZDsgKytpdGVyKSB7CisgICAgICAgIGZv
ciAoY29uc3QgYXV0byYgcmVuZGVyUmVnaW9uIDogcmVnaW9uTGlzdCkgeworICAgICAgICAgICAg
Y29uc3QgUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQqIG5hbWVkRmxvd0ZyYWdtZW50ID0gdG9SZW5k
ZXJOYW1lZEZsb3dGcmFnbWVudChyZW5kZXJSZWdpb24pOwogICAgICAgICAgICAgLy8gRklYTUU6
IFBzZXVkby1lbGVtZW50cyBhcmUgbm90IGluY2x1ZGVkIGluIHRoZSBsaXN0LgogICAgICAgICAg
ICAgLy8gVGhleSB3aWxsIGJlIGluY2x1ZGVkIHdoZW4gd2Ugd2lsbCBwcm9wZXJseSBzdXBwb3J0
IHRoZSBSZWdpb24gaW50ZXJmYWNlCiAgICAgICAgICAgICAvLyBodHRwOi8vZGV2LnczLm9yZy9j
c3N3Zy9jc3MtcmVnaW9ucy8jdGhlLXJlZ2lvbi1pbnRlcmZhY2UKLSAgICAgICAgICAgIGNvbnN0
IFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KiByZW5kZXJSZWdpb24gPSB0b1JlbmRlck5hbWVkRmxv
d0ZyYWdtZW50KCppdGVyKTsKLSAgICAgICAgICAgIGlmIChyZW5kZXJSZWdpb24tPmlzUHNldWRv
RWxlbWVudFJlZ2lvbigpKQorICAgICAgICAgICAgaWYgKG5hbWVkRmxvd0ZyYWdtZW50LT5pc1Bz
ZXVkb0VsZW1lbnRSZWdpb24oKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAg
ICAgIGlmIChtX3BhcmVudEZsb3dUaHJlYWQtPm9iamVjdEluRmxvd1JlZ2lvbihjb250ZW50Tm9k
ZS0+cmVuZGVyZXIoKSwgcmVuZGVyUmVnaW9uKSkgewotICAgICAgICAgICAgICAgIEFTU0VSVChy
ZW5kZXJSZWdpb24tPmdlbmVyYXRpbmdFbGVtZW50KCkpOwotICAgICAgICAgICAgICAgIHJlZ2lv
bkVsZW1lbnRzLmFwcGVuZCgqcmVuZGVyUmVnaW9uLT5nZW5lcmF0aW5nRWxlbWVudCgpKTsKKyAg
ICAgICAgICAgIGlmIChtX3BhcmVudEZsb3dUaHJlYWQtPm9iamVjdEluRmxvd1JlZ2lvbihjb250
ZW50Tm9kZS0+cmVuZGVyZXIoKSwgbmFtZWRGbG93RnJhZ21lbnQpKSB7CisgICAgICAgICAgICAg
ICAgQVNTRVJUKG5hbWVkRmxvd0ZyYWdtZW50LT5nZW5lcmF0aW5nRWxlbWVudCgpKTsKKyAgICAg
ICAgICAgICAgICByZWdpb25FbGVtZW50cy5hcHBlbmQoKm5hbWVkRmxvd0ZyYWdtZW50LT5nZW5l
cmF0aW5nRWxlbWVudCgpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KQEAgLTE2
MSwxNSArMTYwLDE1IEBAIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IFdlYktpdE5hbWVkRmxvdzo6Z2V0
UmVnaW9ucygpCiAgICAgVmVjdG9yPFJlZjxFbGVtZW50Pj4gcmVnaW9uRWxlbWVudHM7CiAKICAg
ICBjb25zdCBSZW5kZXJSZWdpb25MaXN0JiByZWdpb25MaXN0ID0gbV9wYXJlbnRGbG93VGhyZWFk
LT5yZW5kZXJSZWdpb25MaXN0KCk7Ci0gICAgZm9yIChhdXRvIGl0ZXIgPSByZWdpb25MaXN0LmJl
Z2luKCksIGVuZCA9IHJlZ2lvbkxpc3QuZW5kKCk7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpIHsKKyAg
ICBmb3IgKGNvbnN0IGF1dG8mIHJlbmRlclJlZ2lvbiA6IHJlZ2lvbkxpc3QpIHsKKyAgICAgICAg
Y29uc3QgUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQqIG5hbWVkRmxvd0ZyYWdtZW50ID0gdG9SZW5k
ZXJOYW1lZEZsb3dGcmFnbWVudChyZW5kZXJSZWdpb24pOwogICAgICAgICAvLyBGSVhNRTogUHNl
dWRvLWVsZW1lbnRzIGFyZSBub3QgaW5jbHVkZWQgaW4gdGhlIGxpc3QuCiAgICAgICAgIC8vIFRo
ZXkgd2lsbCBiZSBpbmNsdWRlZCB3aGVuIHdlIHdpbGwgcHJvcGVybHkgc3VwcG9ydCB0aGUgUmVn
aW9uIGludGVyZmFjZQogICAgICAgICAvLyBodHRwOi8vZGV2LnczLm9yZy9jc3N3Zy9jc3MtcmVn
aW9ucy8jdGhlLXJlZ2lvbi1pbnRlcmZhY2UKLSAgICAgICAgY29uc3QgUmVuZGVyTmFtZWRGbG93
RnJhZ21lbnQqIHJlbmRlclJlZ2lvbiA9IHRvUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQoKml0ZXIp
OwotICAgICAgICBpZiAocmVuZGVyUmVnaW9uLT5pc1BzZXVkb0VsZW1lbnRSZWdpb24oKSkKKyAg
ICAgICAgaWYgKG5hbWVkRmxvd0ZyYWdtZW50LT5pc1BzZXVkb0VsZW1lbnRSZWdpb24oKSkKICAg
ICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBBU1NFUlQocmVuZGVyUmVnaW9uLT5nZW5lcmF0
aW5nRWxlbWVudCgpKTsKLSAgICAgICAgcmVnaW9uRWxlbWVudHMuYXBwZW5kKCpyZW5kZXJSZWdp
b24tPmdlbmVyYXRpbmdFbGVtZW50KCkpOworICAgICAgICBBU1NFUlQobmFtZWRGbG93RnJhZ21l
bnQtPmdlbmVyYXRpbmdFbGVtZW50KCkpOworICAgICAgICByZWdpb25FbGVtZW50cy5hcHBlbmQo
Km5hbWVkRmxvd0ZyYWdtZW50LT5nZW5lcmF0aW5nRWxlbWVudCgpKTsKICAgICB9CiAKICAgICBy
ZXR1cm4gU3RhdGljRWxlbWVudExpc3Q6OmFkb3B0KHJlZ2lvbkVsZW1lbnRzKTsKQEAgLTE4OCw4
ICsxODcsNyBAQCBQYXNzUmVmUHRyPE5vZGVMaXN0PiBXZWJLaXROYW1lZEZsb3c6OmdldENvbnRl
bnQoKQogICAgIFZlY3RvcjxSZWY8RWxlbWVudD4+IGNvbnRlbnRFbGVtZW50czsKIAogICAgIGNv
bnN0IE5hbWVkRmxvd0NvbnRlbnRFbGVtZW50cyYgY29udGVudEVsZW1lbnRzTGlzdCA9IG1fcGFy
ZW50Rmxvd1RocmVhZC0+Y29udGVudEVsZW1lbnRzKCk7Ci0gICAgZm9yIChhdXRvIGl0ID0gY29u
dGVudEVsZW1lbnRzTGlzdC5iZWdpbigpLCBlbmQgPSBjb250ZW50RWxlbWVudHNMaXN0LmVuZCgp
OyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgRWxlbWVudCogZWxlbWVudCA9ICppdDsKKyAg
ICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBjb250ZW50RWxlbWVudHNMaXN0KSB7CiAgICAgICAgIEFT
U0VSVChlbGVtZW50LT5jb21wdXRlZFN0eWxlKCktPmZsb3dUaHJlYWQoKSA9PSBtX3BhcmVudEZs
b3dUaHJlYWQtPmZsb3dUaHJlYWROYW1lKCkpOwogICAgICAgICBjb250ZW50RWxlbWVudHMuYXBw
ZW5kKCplbGVtZW50KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yT3ZlcmxheS5jcHAKaW5kZXggMGNhYWQ3ZjBmOTUzZTg4NjdkNjI0MDA0ZDhjNTg0NWQ4YjQ4
ZDEyMi4uZDY5N2U1MTgxODk5MGU2MGQ5ZTEyOTMxN2UxZjAwZWRiMmYwNmI3YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcApAQCAtNDM0LDggKzQz
NCw3IEBAIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3RvckFycmF5PiBidWlsZE9iamVjdEZvckNT
U1JlZ2lvbnNIaWdobGlnaHQoUmVuZGVyUmVnaW9uCiAgICAgUmVmUHRyPEluc3BlY3RvckFycmF5
PiBhcnJheSA9IEluc3BlY3RvckFycmF5OjpjcmVhdGUoKTsKIAogICAgIGNvbnN0IFJlbmRlclJl
Z2lvbkxpc3QmIHJlZ2lvbkxpc3QgPSBmbG93VGhyZWFkLT5yZW5kZXJSZWdpb25MaXN0KCk7Ci0g
ICAgZm9yIChSZW5kZXJSZWdpb25MaXN0Ojpjb25zdF9pdGVyYXRvciBpdGVyID0gcmVnaW9uTGlz
dC5iZWdpbigpOyBpdGVyICE9IHJlZ2lvbkxpc3QuZW5kKCk7ICsraXRlcikgewotICAgICAgICBS
ZW5kZXJSZWdpb24qIGl0ZXJSZWdpb24gPSAqaXRlcjsKKyAgICBmb3IgKGF1dG8mIGl0ZXJSZWdp
b24gOiByZWdpb25MaXN0KSB7CiAgICAgICAgIGlmICghaXRlclJlZ2lvbi0+aXNWYWxpZCgpKQog
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHJl
Z2lvbkhpZ2hsaWdodE9iamVjdCA9IGJ1aWxkT2JqZWN0Rm9yUmVnaW9uSGlnaGxpZ2h0KG1haW5G
cmFtZVZpZXcsIGl0ZXJSZWdpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckZsb3dUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckZsb3dUaHJlYWQuY3BwCmluZGV4IDVjZmQxOGVkMzI5ZWNhYTM2YTBjZjAwZWU2NWY3YzlkNTM0
M2I4ZmUuLjhkNTUyZTdhOGFhZDIxOTY5MmZhYjM3NjczZTc0MjJiMGQ1NGNiNGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5jcHAKQEAgLTE2MSw4ICsx
NjEsNyBAQCB2b2lkIFJlbmRlckZsb3dUaHJlYWQ6OnZhbGlkYXRlUmVnaW9ucygpCiAgICAgICAg
ICAgICBMYXlvdXRVbml0IHByZXZpb3VzUmVnaW9uTG9naWNhbEhlaWdodCA9IDA7CiAgICAgICAg
ICAgICBib29sIGZpcnN0UmVnaW9uVmlzaXRlZCA9IGZhbHNlOwogICAgICAgICAgICAgCi0gICAg
ICAgICAgICBmb3IgKGF1dG8gaXRlciA9IG1fcmVnaW9uTGlzdC5iZWdpbigpLCBlbmQgPSBtX3Jl
Z2lvbkxpc3QuZW5kKCk7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpIHsKLSAgICAgICAgICAgICAgICBS
ZW5kZXJSZWdpb24qIHJlZ2lvbiA9ICppdGVyOworICAgICAgICAgICAgZm9yIChhdXRvJiByZWdp
b24gOiBtX3JlZ2lvbkxpc3QpIHsKICAgICAgICAgICAgICAgICBBU1NFUlQoIXJlZ2lvbi0+bmVl
ZHNMYXlvdXQoKSB8fCByZWdpb24tPmlzUmVuZGVyUmVnaW9uU2V0KCkpOwogCiAgICAgICAgICAg
ICAgICAgcmVnaW9uLT5kZWxldGVBbGxSZW5kZXJCb3hSZWdpb25JbmZvKCk7CkBAIC0zNjUsMTYg
KzM2NCwxNCBAQCBib29sIFJlbmRlckZsb3dUaHJlYWQ6OmNvbGxlY3RzR3JhcGhpY3NMYXllcnNV
bmRlclJlZ2lvbnMoKSBjb25zdAogdm9pZCBSZW5kZXJGbG93VGhyZWFkOjp1cGRhdGVMb2dpY2Fs
V2lkdGgoKQogewogICAgIExheW91dFVuaXQgbG9naWNhbFdpZHRoID0gaW5pdGlhbExvZ2ljYWxX
aWR0aCgpOwotICAgIGZvciAoYXV0byBpdGVyID0gbV9yZWdpb25MaXN0LmJlZ2luKCksIGVuZCA9
IG1fcmVnaW9uTGlzdC5lbmQoKTsgaXRlciAhPSBlbmQ7ICsraXRlcikgewotICAgICAgICBSZW5k
ZXJSZWdpb24qIHJlZ2lvbiA9ICppdGVyOworICAgIGZvciAoYXV0byYgcmVnaW9uIDogbV9yZWdp
b25MaXN0KSB7CiAgICAgICAgIEFTU0VSVCghcmVnaW9uLT5uZWVkc0xheW91dCgpIHx8IHJlZ2lv
bi0+aXNSZW5kZXJSZWdpb25TZXQoKSk7CiAgICAgICAgIGxvZ2ljYWxXaWR0aCA9IHN0ZDo6bWF4
KHJlZ2lvbi0+cGFnZUxvZ2ljYWxXaWR0aCgpLCBsb2dpY2FsV2lkdGgpOwogICAgIH0KICAgICBz
ZXRMb2dpY2FsV2lkdGgobG9naWNhbFdpZHRoKTsKIAogICAgIC8vIElmIHRoZSByZWdpb25zIGhh
dmUgbm9uLXVuaWZvcm0gbG9naWNhbCB3aWR0aHMsIHRoZW4gaW5zZXJ0IGluc2V0IGluZm9ybWF0
aW9uIGZvciB0aGUgUmVuZGVyRmxvd1RocmVhZC4KLSAgICBmb3IgKGF1dG8gaXRlciA9IG1fcmVn
aW9uTGlzdC5iZWdpbigpLCBlbmQgPSBtX3JlZ2lvbkxpc3QuZW5kKCk7IGl0ZXIgIT0gZW5kOyAr
K2l0ZXIpIHsKLSAgICAgICAgUmVuZGVyUmVnaW9uKiByZWdpb24gPSAqaXRlcjsKKyAgICBmb3Ig
KGF1dG8mIHJlZ2lvbiA6IG1fcmVnaW9uTGlzdCkgewogICAgICAgICBMYXlvdXRVbml0IHJlZ2lv
bkxvZ2ljYWxXaWR0aCA9IHJlZ2lvbi0+cGFnZUxvZ2ljYWxXaWR0aCgpOwogICAgICAgICBMYXlv
dXRVbml0IGxvZ2ljYWxMZWZ0ID0gc3R5bGUoKS5kaXJlY3Rpb24oKSA9PSBMVFIgPyBMYXlvdXRV
bml0KCkgOiBsb2dpY2FsV2lkdGggLSByZWdpb25Mb2dpY2FsV2lkdGg7CiAgICAgICAgIHJlZ2lv
bi0+c2V0UmVuZGVyQm94UmVnaW9uSW5mbyh0aGlzLCBsb2dpY2FsTGVmdCwgcmVnaW9uTG9naWNh
bFdpZHRoLCBmYWxzZSk7CkBAIC0zODcsOCArMzg0LDcgQEAgdm9pZCBSZW5kZXJGbG93VGhyZWFk
Ojpjb21wdXRlTG9naWNhbEhlaWdodChMYXlvdXRVbml0LCBMYXlvdXRVbml0IGxvZ2ljYWxUb3As
IEwKICAgICBjb21wdXRlZFZhbHVlcy5tX2V4dGVudCA9IDA7CiAKICAgICBjb25zdCBMYXlvdXRV
bml0IG1heEZsb3dTaXplID0gUmVuZGVyRmxvd1RocmVhZDo6bWF4TG9naWNhbEhlaWdodCgpOwot
ICAgIGZvciAoYXV0byBpdGVyID0gbV9yZWdpb25MaXN0LmJlZ2luKCksIGVuZCA9IG1fcmVnaW9u
TGlzdC5lbmQoKTsgaXRlciAhPSBlbmQ7ICsraXRlcikgewotICAgICAgICBSZW5kZXJSZWdpb24q
IHJlZ2lvbiA9ICppdGVyOworICAgIGZvciAoYXV0byYgcmVnaW9uIDogbV9yZWdpb25MaXN0KSB7
CiAgICAgICAgIEFTU0VSVCghcmVnaW9uLT5uZWVkc0xheW91dCgpIHx8IHJlZ2lvbi0+aXNSZW5k
ZXJSZWdpb25TZXQoKSk7CiAKICAgICAgICAgTGF5b3V0VW5pdCBkaXN0YW5jZVRvTWF4U2l6ZSA9
IG1heEZsb3dTaXplIC0gY29tcHV0ZWRWYWx1ZXMubV9leHRlbnQ7CkBAIC00MzQsMTEgKzQzMCw4
IEBAIHZvaWQgUmVuZGVyRmxvd1RocmVhZDo6cmVwYWludFJlY3RhbmdsZUluUmVnaW9ucyhjb25z
dCBMYXlvdXRSZWN0JiByZXBhaW50UmVjdCwKICAgICAvLyBMZXQgZWFjaCByZWdpb24gZmlndXJl
IG91dCB0aGUgcHJvcGVyIGVuY2xvc2luZyBmbG93IHRocmVhZC4KICAgICBDdXJyZW50UmVuZGVy
Rmxvd1RocmVhZERpc2FibGVyIGRpc2FibGVyKCZ2aWV3KCkpOwogICAgIAotICAgIGZvciAoYXV0
byBpdGVyID0gbV9yZWdpb25MaXN0LmJlZ2luKCksIGVuZCA9IG1fcmVnaW9uTGlzdC5lbmQoKTsg
aXRlciAhPSBlbmQ7ICsraXRlcikgewotICAgICAgICBSZW5kZXJSZWdpb24qIHJlZ2lvbiA9ICpp
dGVyOwotCisgICAgZm9yIChhdXRvJiByZWdpb24gOiBtX3JlZ2lvbkxpc3QpCiAgICAgICAgIHJl
Z2lvbi0+cmVwYWludEZsb3dUaHJlYWRDb250ZW50KHJlcGFpbnRSZWN0LCBpbW1lZGlhdGUpOwot
ICAgIH0KIH0KIAogUmVuZGVyUmVnaW9uKiBSZW5kZXJGbG93VGhyZWFkOjpyZWdpb25BdEJsb2Nr
T2Zmc2V0KGNvbnN0IFJlbmRlckJveCogY2xhbXBCb3gsIExheW91dFVuaXQgb2Zmc2V0LCBib29s
IGV4dGVuZExhc3RSZWdpb24sIFJlZ2lvbkF1dG9HZW5lcmF0aW9uUG9saWN5IGF1dG9HZW5lcmF0
aW9uUG9saWN5KQpAQCAtNjI5LDggKzYyMiw3IEBAIHZvaWQgUmVuZGVyRmxvd1RocmVhZDo6cmVt
b3ZlUmVuZGVyQm94UmVnaW9uSW5mbyhSZW5kZXJCb3gqIGJveCkKICAgICBSZW5kZXJSZWdpb24q
IGVuZFJlZ2lvbjsKICAgICBnZXRSZWdpb25SYW5nZUZvckJveChib3gsIHN0YXJ0UmVnaW9uLCBl
bmRSZWdpb24pOwogCi0gICAgZm9yIChhdXRvIGl0ZXIgPSBtX3JlZ2lvbkxpc3QuZmluZChzdGFy
dFJlZ2lvbiksIGVuZCA9IG1fcmVnaW9uTGlzdC5lbmQoKTsgaXRlciAhPSBlbmQ7ICsraXRlcikg
ewotICAgICAgICBSZW5kZXJSZWdpb24qIHJlZ2lvbiA9ICppdGVyOworICAgIGZvciAoYXV0byYg
cmVnaW9uIDogbV9yZWdpb25MaXN0KSB7CiAgICAgICAgIHJlZ2lvbi0+cmVtb3ZlUmVuZGVyQm94
UmVnaW9uSW5mbyhib3gpOwogICAgICAgICBpZiAocmVnaW9uID09IGVuZFJlZ2lvbikKICAgICAg
ICAgICAgIGJyZWFrOwpAQCAtNjM4LDEwICs2MzAsOCBAQCB2b2lkIFJlbmRlckZsb3dUaHJlYWQ6
OnJlbW92ZVJlbmRlckJveFJlZ2lvbkluZm8oUmVuZGVyQm94KiBib3gpCiAKICNpZm5kZWYgTkRF
QlVHCiAgICAgLy8gV2UgaGF2ZSB0byBtYWtlIHN1cmUgd2UgZGlkIG5vdCBsZWF2ZSBhbnkgUmVu
ZGVyQm94UmVnaW9uSW5mbyBhdHRhY2hlZC4KLSAgICBmb3IgKGF1dG8gaXRlciA9IG1fcmVnaW9u
TGlzdC5iZWdpbigpLCBlbmQgPSBtX3JlZ2lvbkxpc3QuZW5kKCk7IGl0ZXIgIT0gZW5kOyArK2l0
ZXIpIHsKLSAgICAgICAgUmVuZGVyUmVnaW9uKiByZWdpb24gPSAqaXRlcjsKKyAgICBmb3IgKGF1
dG8mIHJlZ2lvbiA6IG1fcmVnaW9uTGlzdCkKICAgICAgICAgQVNTRVJUKCFyZWdpb24tPnJlbmRl
ckJveFJlZ2lvbkluZm8oYm94KSk7Ci0gICAgfQogI2VuZGlmCiAKICAgICBtX3JlZ2lvblJhbmdl
TWFwLnJlbW92ZShib3gpOwpAQCAtNjc2LDggKzY2Niw3IEBAIHZvaWQgUmVuZGVyRmxvd1RocmVh
ZDo6bG9naWNhbFdpZHRoQ2hhbmdlZEluUmVnaW9uc0ZvckJsb2NrKGNvbnN0IFJlbmRlckJsb2Nr
KiBiCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBmb3IgKGF1dG8gaXRlciA9IG1fcmVn
aW9uTGlzdC5maW5kKHN0YXJ0UmVnaW9uKSwgZW5kID0gbV9yZWdpb25MaXN0LmVuZCgpOyBpdGVy
ICE9IGVuZDsgKytpdGVyKSB7Ci0gICAgICAgIFJlbmRlclJlZ2lvbiogcmVnaW9uID0gKml0ZXI7
CisgICAgZm9yIChhdXRvJiByZWdpb24gOiBtX3JlZ2lvbkxpc3QpIHsKICAgICAgICAgQVNTRVJU
KCFyZWdpb24tPm5lZWRzTGF5b3V0KCkgfHwgcmVnaW9uLT5pc1JlbmRlclJlZ2lvblNldCgpKTsK
IAogICAgICAgICAvLyBXZSBoYXZlIG5vIGluZm9ybWF0aW9uIGNvbXB1dGVkIGZvciB0aGlzIHJl
Z2lvbiBzbyB3ZSBuZWVkIHRvIGRvIGl0LgpAQCAtNzQ1LDkgKzczNCw3IEBAIHZvaWQgUmVuZGVy
Rmxvd1RocmVhZDo6Y2xlYXJSZW5kZXJCb3hSZWdpb25JbmZvQW5kQ3VzdG9tU3R5bGUoY29uc3Qg
UmVuZGVyQm94KiBiCiAKICAgICBib29sIGluc2lkZU9sZFJlZ2lvblJhbmdlID0gZmFsc2U7CiAg
ICAgYm9vbCBpbnNpZGVOZXdSZWdpb25SYW5nZSA9IGZhbHNlOwotICAgIGZvciAoYXV0byBpdGVy
ID0gbV9yZWdpb25MaXN0LmJlZ2luKCksIGVuZCA9IG1fcmVnaW9uTGlzdC5lbmQoKTsgaXRlciAh
PSBlbmQ7ICsraXRlcikgewotICAgICAgICBSZW5kZXJSZWdpb24qIHJlZ2lvbiA9ICppdGVyOwot
CisgICAgZm9yIChhdXRvJiByZWdpb24gOiBtX3JlZ2lvbkxpc3QpIHsKICAgICAgICAgaWYgKG9s
ZFN0YXJ0UmVnaW9uID09IHJlZ2lvbikKICAgICAgICAgICAgIGluc2lkZU9sZFJlZ2lvblJhbmdl
ID0gdHJ1ZTsKICAgICAgICAgaWYgKG5ld1N0YXJ0UmVnaW9uID09IHJlZ2lvbikKQEAgLTg5Niw4
ICs4ODMsNyBAQCBib29sIFJlbmRlckZsb3dUaHJlYWQ6Om9iamVjdEluRmxvd1JlZ2lvbihjb25z
dCBSZW5kZXJPYmplY3QqIG9iamVjdCwgY29uc3QgUmVuZAogYm9vbCBSZW5kZXJGbG93VGhyZWFk
Ojppc0F1dG9Mb2dpY2FsSGVpZ2h0UmVnaW9uc0NvdW50Q29uc2lzdGVudCgpIGNvbnN0CiB7CiAg
ICAgdW5zaWduZWQgYXV0b0xvZ2ljYWxIZWlnaHRSZWdpb25zID0gMDsKLSAgICBmb3IgKGF1dG8g
aXRlciA9IG1fcmVnaW9uTGlzdC5iZWdpbigpLCBlbmQgPSBtX3JlZ2lvbkxpc3QuZW5kKCk7IGl0
ZXIgIT0gZW5kOyArK2l0ZXIpIHsKLSAgICAgICAgY29uc3QgUmVuZGVyUmVnaW9uKiByZWdpb24g
PSAqaXRlcjsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIHJlZ2lvbiA6IG1fcmVnaW9uTGlzdCkgewog
ICAgICAgICBpZiAocmVnaW9uLT5oYXNBdXRvTG9naWNhbEhlaWdodCgpKQogICAgICAgICAgICAg
YXV0b0xvZ2ljYWxIZWlnaHRSZWdpb25zKys7CiAgICAgfQpAQCAtOTI5LDggKzkxNSw3IEBAIHZv
aWQgUmVuZGVyRmxvd1RocmVhZDo6bWFya0F1dG9Mb2dpY2FsSGVpZ2h0UmVnaW9uc0ZvckxheW91
dCgpCiB7CiAgICAgQVNTRVJUKGhhc0F1dG9Mb2dpY2FsSGVpZ2h0UmVnaW9ucygpKTsKIAotICAg
IGZvciAoYXV0byBpdGVyID0gbV9yZWdpb25MaXN0LmJlZ2luKCksIGVuZCA9IG1fcmVnaW9uTGlz
dC5lbmQoKTsgaXRlciAhPSBlbmQ7ICsraXRlcikgewotICAgICAgICBSZW5kZXJSZWdpb24qIHJl
Z2lvbiA9ICppdGVyOworICAgIGZvciAoYXV0byYgcmVnaW9uIDogbV9yZWdpb25MaXN0KSB7CiAg
ICAgICAgIGlmICghcmVnaW9uLT5oYXNBdXRvTG9naWNhbEhlaWdodCgpKQogICAgICAgICAgICAg
Y29udGludWU7CiAKQEAgLTk0NSwxMCArOTMwLDggQEAgdm9pZCBSZW5kZXJGbG93VGhyZWFkOjpt
YXJrUmVnaW9uc0Zvck92ZXJmbG93TGF5b3V0SWZOZWVkZWQoKQogICAgIGlmICghaGFzUmVnaW9u
cygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBmb3IgKGF1dG8gaXRlciA9IG1fcmVnaW9uTGlz
dC5iZWdpbigpLCBlbmQgPSBtX3JlZ2lvbkxpc3QuZW5kKCk7IGl0ZXIgIT0gZW5kOyArK2l0ZXIp
IHsKLSAgICAgICAgUmVuZGVyUmVnaW9uKiByZWdpb24gPSAqaXRlcjsKKyAgICBmb3IgKGF1dG8m
IHJlZ2lvbiA6IG1fcmVnaW9uTGlzdCkKICAgICAgICAgcmVnaW9uLT5zZXROZWVkc1NpbXBsaWZp
ZWROb3JtYWxGbG93TGF5b3V0KCk7Ci0gICAgfQogfQogCiB2b2lkIFJlbmRlckZsb3dUaHJlYWQ6
OnVwZGF0ZVJlZ2lvbnNGbG93VGhyZWFkUG9ydGlvblJlY3QoY29uc3QgUmVuZGVyUmVnaW9uKiBs
YXN0UmVnaW9uV2l0aENvbnRlbnQpCkBAIC05NTksOSArOTQyLDcgQEAgdm9pZCBSZW5kZXJGbG93
VGhyZWFkOjp1cGRhdGVSZWdpb25zRmxvd1RocmVhZFBvcnRpb25SZWN0KGNvbnN0IFJlbmRlclJl
Z2lvbiogbGEKICAgICAvLyBGSVhNRTogT3B0aW1pemUgbm90IHRvIGNsZWFyIHRoZSBpbnRlcnZh
bCBhbGwgdGhlIHRpbWUuIFRoaXMgaW1wbGllcyBtYW51YWxseSBtYW5hZ2luZyB0aGUgdHJlZSBu
b2RlcyBsaWZlY3ljbGUuCiAgICAgbV9yZWdpb25JbnRlcnZhbFRyZWUuY2xlYXIoKTsKICAgICBt
X3JlZ2lvbkludGVydmFsVHJlZS5pbml0SWZOZWVkZWQoKTsKLSAgICBmb3IgKGF1dG8gaXRlciA9
IG1fcmVnaW9uTGlzdC5iZWdpbigpLCBlbmQgPSBtX3JlZ2lvbkxpc3QuZW5kKCk7IGl0ZXIgIT0g
ZW5kOyArK2l0ZXIpIHsKLSAgICAgICAgUmVuZGVyUmVnaW9uKiByZWdpb24gPSAqaXRlcjsKLQor
ICAgIGZvciAoYXV0byYgcmVnaW9uIDogbV9yZWdpb25MaXN0KSB7CiAgICAgICAgIC8vIElmIHdl
IGZpbmQgYW4gZW1wdHkgYXV0by1oZWlnaHQgcmVnaW9uLCBjbGVhciB0aGUgY29tcHV0ZWRBdXRv
SGVpZ2h0IHZhbHVlLgogICAgICAgICBpZiAoZW1wdHlSZWdpb25zU2VnbWVudCAmJiByZWdpb24t
Pmhhc0F1dG9Mb2dpY2FsSGVpZ2h0KCkpCiAgICAgICAgICAgICB0b1JlbmRlck5hbWVkRmxvd0Zy
YWdtZW50KHJlZ2lvbiktPmNsZWFyQ29tcHV0ZWRBdXRvSGVpZ2h0KCk7CkBAIC0xMDgxLDEwICsx
MDYyLDggQEAgdm9pZCBSZW5kZXJGbG93VGhyZWFkOjpjb2xsZWN0TGF5ZXJGcmFnbWVudHMoTGF5
ZXJGcmFnbWVudHMmIGxheWVyRnJhZ21lbnRzLCBjb24KIHsKICAgICBBU1NFUlQoIW1fcmVnaW9u
c0ludmFsaWRhdGVkKTsKICAgICAKLSAgICBmb3IgKGF1dG8gaXRlciA9IG1fcmVnaW9uTGlzdC5i
ZWdpbigpLCBlbmQgPSBtX3JlZ2lvbkxpc3QuZW5kKCk7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpIHsK
LSAgICAgICAgUmVuZGVyUmVnaW9uKiByZWdpb24gPSAqaXRlcjsKKyAgICBmb3IgKGF1dG8mIHJl
Z2lvbiA6IG1fcmVnaW9uTGlzdCkKICAgICAgICAgcmVnaW9uLT5jb2xsZWN0TGF5ZXJGcmFnbWVu
dHMobGF5ZXJGcmFnbWVudHMsIGxheWVyQm91bmRpbmdCb3gsIGRpcnR5UmVjdCk7Ci0gICAgfQog
fQogCiBMYXlvdXRSZWN0IFJlbmRlckZsb3dUaHJlYWQ6OmZyYWdtZW50c0JvdW5kaW5nQm94KGNv
bnN0IExheW91dFJlY3QmIGxheWVyQm91bmRpbmdCb3gpCkBAIC0xMDkyLDEyICsxMDcxLDEwIEBA
IExheW91dFJlY3QgUmVuZGVyRmxvd1RocmVhZDo6ZnJhZ21lbnRzQm91bmRpbmdCb3goY29uc3Qg
TGF5b3V0UmVjdCYgbGF5ZXJCb3VuZGluCiAgICAgQVNTRVJUKCFtX3JlZ2lvbnNJbnZhbGlkYXRl
ZCk7CiAgICAgCiAgICAgTGF5b3V0UmVjdCByZXN1bHQ7Ci0gICAgZm9yIChhdXRvIGl0ZXIgPSBt
X3JlZ2lvbkxpc3QuYmVnaW4oKSwgZW5kID0gbV9yZWdpb25MaXN0LmVuZCgpOyBpdGVyICE9IGVu
ZDsgKytpdGVyKSB7Ci0gICAgICAgIFJlbmRlclJlZ2lvbiogcmVnaW9uID0gKml0ZXI7CisgICAg
Zm9yIChhdXRvJiByZWdpb24gOiBtX3JlZ2lvbkxpc3QpIHsKICAgICAgICAgTGF5ZXJGcmFnbWVu
dHMgZnJhZ21lbnRzOwogICAgICAgICByZWdpb24tPmNvbGxlY3RMYXllckZyYWdtZW50cyhmcmFn
bWVudHMsIGxheWVyQm91bmRpbmdCb3gsIExheW91dFJlY3Q6OmluZmluaXRlUmVjdCgpKTsKLSAg
ICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmcmFnbWVudHMuc2l6ZSgpOyArK2kpIHsKLSAg
ICAgICAgICAgIGNvbnN0IExheWVyRnJhZ21lbnQmIGZyYWdtZW50ID0gZnJhZ21lbnRzLmF0KGkp
OworICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGZyYWdtZW50IDogZnJhZ21lbnRzKSB7CiAgICAg
ICAgICAgICBMYXlvdXRSZWN0IGZyYWdtZW50UmVjdChsYXllckJvdW5kaW5nQm94KTsKICAgICAg
ICAgICAgIGZyYWdtZW50UmVjdC5pbnRlcnNlY3QoZnJhZ21lbnQucGFnaW5hdGlvbkNsaXApOwog
ICAgICAgICAgICAgZnJhZ21lbnRSZWN0Lm1vdmVCeShmcmFnbWVudC5wYWdpbmF0aW9uT2Zmc2V0
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dG
cmFnbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93RnJh
Z21lbnQuY3BwCmluZGV4IDVjNWVkNTExYzFhMGZjMzgyOWRiOTgwZTU1NTA4MGU4OGEwZDIxYTQu
LmVmMDBjZGY4MTBjZmY2YmFkYzMyYWNhMWE2ZWM4YzcyY2ZjNDc5MDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dGcmFnbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd0ZyYWdtZW50LmNwcApAQCAt
MzA4LDggKzMwOCw3IEBAIHZvaWQgUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQ6OnNldFJlZ2lvbk9i
amVjdHNSZWdpb25TdHlsZSgpCiAgICAgY29uc3QgUmVuZGVyTmFtZWRGbG93VGhyZWFkJiBuYW1l
ZEZsb3cgPSB2aWV3KCkuZmxvd1RocmVhZENvbnRyb2xsZXIoKS5lbnN1cmVSZW5kZXJGbG93VGhy
ZWFkV2l0aE5hbWUoc3R5bGUoKS5yZWdpb25UaHJlYWQoKSk7CiAgICAgY29uc3QgTmFtZWRGbG93
Q29udGVudEVsZW1lbnRzJiBjb250ZW50RWxlbWVudHMgPSBuYW1lZEZsb3cuY29udGVudEVsZW1l
bnRzKCk7CiAKLSAgICBmb3IgKGF1dG8gaXRlciA9IGNvbnRlbnRFbGVtZW50cy5iZWdpbigpLCBl
bmQgPSBjb250ZW50RWxlbWVudHMuZW5kKCk7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpIHsKLSAgICAg
ICAgY29uc3QgRWxlbWVudCogZWxlbWVudCA9ICppdGVyOworICAgIGZvciAoY29uc3QgYXV0byYg
ZWxlbWVudCA6IGNvbnRlbnRFbGVtZW50cykgewogICAgICAgICAvLyBUaGUgbGlzdCBvZiBjb250
ZW50IG5vZGVzIGNvbnRhaW5zIGFsc28gdGhlIG5vZGVzIHdpdGggZGlzcGxheTpub25lLgogICAg
ICAgICBpZiAoIWVsZW1lbnQtPnJlbmRlcmVyKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKQEAg
LTM0MywxNCArMzQyLDE0IEBAIHZvaWQgUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQ6OnJlc3RvcmVS
ZWdpb25PYmplY3RzT3JpZ2luYWxTdHlsZSgpCiAgICAgICAgIHJldHVybjsKIAogICAgIFJlbmRl
ck9iamVjdFJlZ2lvblN0eWxlTWFwIHRlbXA7Ci0gICAgZm9yIChhdXRvIGl0ZXIgPSBtX3JlbmRl
ck9iamVjdFJlZ2lvblN0eWxlLmJlZ2luKCksIGVuZCA9IG1fcmVuZGVyT2JqZWN0UmVnaW9uU3R5
bGUuZW5kKCk7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpIHsKLSAgICAgICAgUmVuZGVyT2JqZWN0KiBv
YmplY3QgPSBjb25zdF9jYXN0PFJlbmRlck9iamVjdCo+KGl0ZXItPmtleSk7CisgICAgZm9yIChh
dXRvJiBvYmplY3RQYWlyIDogbV9yZW5kZXJPYmplY3RSZWdpb25TdHlsZSkgeworICAgICAgICBS
ZW5kZXJPYmplY3QqIG9iamVjdCA9IGNvbnN0X2Nhc3Q8UmVuZGVyT2JqZWN0Kj4ob2JqZWN0UGFp
ci5rZXkpOwogICAgICAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IG9iamVjdFJlZ2lvblN0eWxlID0g
Jm9iamVjdC0+c3R5bGUoKTsKLSAgICAgICAgUmVmUHRyPFJlbmRlclN0eWxlPiBvYmplY3RPcmln
aW5hbFN0eWxlID0gaXRlci0+dmFsdWUuc3R5bGU7CisgICAgICAgIFJlZlB0cjxSZW5kZXJTdHls
ZT4gb2JqZWN0T3JpZ2luYWxTdHlsZSA9IG9iamVjdFBhaXIudmFsdWUuc3R5bGU7CiAgICAgICAg
IGlmIChvYmplY3QtPmlzUmVuZGVyRWxlbWVudCgpKQogICAgICAgICAgICAgdG9SZW5kZXJFbGVt
ZW50KG9iamVjdCktPnNldFN0eWxlSW50ZXJuYWwoKm9iamVjdE9yaWdpbmFsU3R5bGUpOwogCi0g
ICAgICAgIGJvb2wgc2hvdWxkQ2FjaGVSZWdpb25TdHlsZSA9IGl0ZXItPnZhbHVlLmNhY2hlZDsK
KyAgICAgICAgYm9vbCBzaG91bGRDYWNoZVJlZ2lvblN0eWxlID0gb2JqZWN0UGFpci52YWx1ZS5j
YWNoZWQ7CiAgICAgICAgIGlmICghc2hvdWxkQ2FjaGVSZWdpb25TdHlsZSkgewogICAgICAgICAg
ICAgLy8gQ2hlY2sgd2hldGhlciB3ZSBzaG91bGQgY2FjaGUgdGhlIGNvbXB1dGVkIHN0eWxlIGlu
IHJlZ2lvbi4KICAgICAgICAgICAgIHVuc2lnbmVkIGNoYW5nZWRDb250ZXh0U2Vuc2l0aXZlUHJv
cGVydGllcyA9IENvbnRleHRTZW5zaXRpdmVQcm9wZXJ0eU5vbmU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93VGhyZWFkLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dUaHJlYWQuY3BwCmluZGV4IGNlYzUxNjM2
MTY3YTRhYjY1ZDYzOWRjNmVhNDllMTBkOThhMTQ4NDguLjFmYjViYTMxOGExZTY3ZTIxMDFmODdi
ZDRhYmUxMjBkOTdkZjIzNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJOYW1lZEZsb3dUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJOYW1lZEZsb3dUaHJlYWQuY3BwCkBAIC03Myw5ICs3Myw3IEBAIGNvbnN0IGNoYXIqIFJl
bmRlck5hbWVkRmxvd1RocmVhZDo6cmVuZGVyTmFtZSgpIGNvbnN0CiAgICAgCiB2b2lkIFJlbmRl
ck5hbWVkRmxvd1RocmVhZDo6Y2xlYXJDb250ZW50RWxlbWVudHMoKQogewotICAgIGZvciAoYXV0
byBpdCA9IG1fY29udGVudEVsZW1lbnRzLmJlZ2luKCksIGVuZCA9IG1fY29udGVudEVsZW1lbnRz
LmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgRWxlbWVudCogY29udGVudEVsZW1l
bnQgPSAqaXQ7Ci0gICAgICAgIAorICAgIGZvciAoYXV0byYgY29udGVudEVsZW1lbnQgOiBtX2Nv
bnRlbnRFbGVtZW50cykgewogICAgICAgICBBU1NFUlQoY29udGVudEVsZW1lbnQpOwogICAgICAg
ICBBU1NFUlQoY29udGVudEVsZW1lbnQtPmluTmFtZWRGbG93KCkpOwogICAgICAgICBBU1NFUlQo
JmNvbnRlbnRFbGVtZW50LT5kb2N1bWVudCgpID09ICZkb2N1bWVudCgpKTsKQEAgLTEwMiw4ICsx
MDAsOCBAQCB2b2lkIFJlbmRlck5hbWVkRmxvd1RocmVhZDo6dXBkYXRlV3JpdGluZ01vZGUoKQog
CiBSZW5kZXJPYmplY3QqIFJlbmRlck5hbWVkRmxvd1RocmVhZDo6bmV4dFJlbmRlcmVyRm9yTm9k
ZShOb2RlKiBub2RlKSBjb25zdAogewotICAgIGZvciAoYXV0byBpdCA9IG1fZmxvd1RocmVhZENo
aWxkTGlzdC0+YmVnaW4oKSwgZW5kID0gbV9mbG93VGhyZWFkQ2hpbGRMaXN0LT5lbmQoKTsgaXQg
IT0gZW5kOyArK2l0KSB7Ci0gICAgICAgIFJlbmRlck9iamVjdCogY2hpbGQgPSAqaXQ7CisgICAg
Y29uc3QgRmxvd1RocmVhZENoaWxkTGlzdCYgY2hpbGRMaXN0ID0gKihtX2Zsb3dUaHJlYWRDaGls
ZExpc3QuZ2V0KCkpOworICAgIGZvciAoYXV0byYgY2hpbGQgOiBjaGlsZExpc3QpIHsKICAgICAg
ICAgQVNTRVJUKGNoaWxkLT5ub2RlKCkpOwogICAgICAgICB1bnNpZ25lZCBzaG9ydCBwb3NpdGlv
biA9IG5vZGUtPmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGNoaWxkLT5ub2RlKCkpOwogICAgICAg
ICBpZiAocG9zaXRpb24gJiBOb2RlOjpET0NVTUVOVF9QT1NJVElPTl9GT0xMT1dJTkcpCkBAIC0x
NjUsOCArMTYzLDggQEAgYm9vbCBSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OmRlcGVuZHNPbihSZW5k
ZXJOYW1lZEZsb3dUaHJlYWQqIG90aGVyUmVuZGVyRmxvd1RocmUKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAKICAgICAvLyBSZWN1cnNpdmVseSB0cmF2ZXJzZSB0aGUgbV9sYXlvdXRCZWZvcmVUaHJl
YWRzU2V0LgotICAgIGZvciAoYXV0byBpdGVyYXRvciA9IG1fbGF5b3V0QmVmb3JlVGhyZWFkc1Nl
dC5iZWdpbigpLCBlbmQgPSBtX2xheW91dEJlZm9yZVRocmVhZHNTZXQuZW5kKCk7IGl0ZXJhdG9y
ICE9IGVuZDsgKytpdGVyYXRvcikgewotICAgICAgICBjb25zdCBSZW5kZXJOYW1lZEZsb3dUaHJl
YWQqIGJlZm9yZUZsb3dUaHJlYWQgPSAoKml0ZXJhdG9yKS5rZXk7CisgICAgZm9yIChjb25zdCBh
dXRvJiBiZWZvcmVGbG93VGhyZWFkUGFpciA6IG1fbGF5b3V0QmVmb3JlVGhyZWFkc1NldCkgewor
ICAgICAgICBjb25zdCBhdXRvJiBiZWZvcmVGbG93VGhyZWFkID0gYmVmb3JlRmxvd1RocmVhZFBh
aXIua2V5OwogICAgICAgICBpZiAoYmVmb3JlRmxvd1RocmVhZC0+ZGVwZW5kc09uKG90aGVyUmVu
ZGVyRmxvd1RocmVhZCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0zMjYs
OCArMzI0LDcgQEAgdm9pZCBSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OmNvbXB1dGVPdmVyc2V0U3Rh
dGVGb3JSZWdpb25zKExheW91dFVuaXQgb2xkQ2xpZW50QWYKICAgICAgICAgaGVpZ2h0ID0gaXNI
b3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IHZpc3VhbE92ZXJmbG93UmVjdCgpLm1heFkoKSA6IHZp
c3VhbE92ZXJmbG93UmVjdCgpLm1heFgoKTsKIAogICAgIFJlbmRlclJlZ2lvbiogbGFzdFJlZyA9
IGxhc3RSZWdpb24oKTsKLSAgICBmb3IgKGF1dG8gaXRlciA9IG1fcmVnaW9uTGlzdC5iZWdpbigp
LCBlbmQgPSBtX3JlZ2lvbkxpc3QuZW5kKCk7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpIHsKLSAgICAg
ICAgUmVuZGVyUmVnaW9uKiByZWdpb24gPSAqaXRlcjsKKyAgICBmb3IgKGF1dG8mIHJlZ2lvbiA6
IG1fcmVnaW9uTGlzdCkgewogICAgICAgICBMYXlvdXRVbml0IGZsb3dNaW4gPSBoZWlnaHQgLSAo
aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IHJlZ2lvbi0+Zmxvd1RocmVhZFBvcnRpb25SZWN0
KCkueSgpIDogcmVnaW9uLT5mbG93VGhyZWFkUG9ydGlvblJlY3QoKS54KCkpOwogICAgICAgICBM
YXlvdXRVbml0IGZsb3dNYXggPSBoZWlnaHQgLSAoaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/
IHJlZ2lvbi0+Zmxvd1RocmVhZFBvcnRpb25SZWN0KCkubWF4WSgpIDogcmVnaW9uLT5mbG93VGhy
ZWFkUG9ydGlvblJlY3QoKS5tYXhYKCkpOwogICAgICAgICBSZWdpb25PdmVyc2V0U3RhdGUgcHJl
dmlvdXNTdGF0ZSA9IHJlZ2lvbi0+cmVnaW9uT3ZlcnNldFN0YXRlKCk7CkBAIC0zNjMsOCArMzYw
LDcgQEAgdm9pZCBSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OmNvbXB1dGVPdmVyc2V0U3RhdGVGb3JS
ZWdpb25zKExheW91dFVuaXQgb2xkQ2xpZW50QWYKIHZvaWQgUmVuZGVyTmFtZWRGbG93VGhyZWFk
OjpjaGVja0ludmFsaWRSZWdpb25zKCkKIHsKICAgICBWZWN0b3I8UmVuZGVyUmVnaW9uKj4gbmV3
VmFsaWRSZWdpb25zOwotICAgIGZvciAoYXV0byBpdGVyID0gbV9pbnZhbGlkUmVnaW9uTGlzdC5i
ZWdpbigpLCBlbmQgPSBtX2ludmFsaWRSZWdpb25MaXN0LmVuZCgpOyBpdGVyICE9IGVuZDsgKytp
dGVyKSB7Ci0gICAgICAgIFJlbmRlclJlZ2lvbiogcmVnaW9uID0gKml0ZXI7CisgICAgZm9yIChh
dXRvJiByZWdpb24gOiBtX2ludmFsaWRSZWdpb25MaXN0KSB7CiAgICAgICAgIC8vIFRoZSBvbmx5
IHJlYXNvbiBhIHJlZ2lvbiB3b3VsZCBiZSBpbnZhbGlkIGlzIGJlY2F1c2UgaXQgaGFzIGEgcGFy
ZW50IGZsb3cgdGhyZWFkLgogICAgICAgICBBU1NFUlQoIXJlZ2lvbi0+aXNWYWxpZCgpICYmIHJl
Z2lvbi0+cGFyZW50TmFtZWRGbG93VGhyZWFkKCkpOwogICAgICAgICBpZiAocmVnaW9uLT5wYXJl
bnROYW1lZEZsb3dUaHJlYWQoKS0+ZGVwZW5kc09uKHRoaXMpKQpAQCAtMzczLDggKzM2OSw3IEBA
IHZvaWQgUmVuZGVyTmFtZWRGbG93VGhyZWFkOjpjaGVja0ludmFsaWRSZWdpb25zKCkKICAgICAg
ICAgbmV3VmFsaWRSZWdpb25zLmFwcGVuZChyZWdpb24pOwogICAgIH0KIAotICAgIGZvciAoYXV0
byBpdGVyID0gbmV3VmFsaWRSZWdpb25zLmJlZ2luKCksIGVuZCA9IG5ld1ZhbGlkUmVnaW9ucy5l
bmQoKTsgaXRlciAhPSBlbmQ7ICsraXRlcikgewotICAgICAgICBSZW5kZXJSZWdpb24qIHJlZ2lv
biA9ICppdGVyOworICAgIGZvciAoYXV0byYgcmVnaW9uIDogbmV3VmFsaWRSZWdpb25zKSB7CiAg
ICAgICAgIG1faW52YWxpZFJlZ2lvbkxpc3QucmVtb3ZlKHJlZ2lvbik7CiAgICAgICAgIHJlZ2lv
bi0+cGFyZW50TmFtZWRGbG93VGhyZWFkKCktPm1fb2JzZXJ2ZXJUaHJlYWRzU2V0LnJlbW92ZSh0
aGlzKTsKICAgICAgICAgYWRkUmVnaW9uVG9OYW1lZEZsb3dUaHJlYWQocmVnaW9uKTsKQEAgLTM5
MiwxMCArMzg3LDggQEAgdm9pZCBSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OmNoZWNrSW52YWxpZFJl
Z2lvbnMoKQogICAgIFZlY3RvcjxSZW5kZXJOYW1lZEZsb3dUaHJlYWQqPiBvYnNlcnZlcnM7CiAg
ICAgY29weVRvVmVjdG9yKG1fb2JzZXJ2ZXJUaHJlYWRzU2V0LCBvYnNlcnZlcnMpOwogCi0gICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBvYnNlcnZlcnMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAg
UmVuZGVyTmFtZWRGbG93VGhyZWFkKiBmbG93VGhyZWFkID0gb2JzZXJ2ZXJzLmF0KGkpOworICAg
IGZvciAoYXV0byYgZmxvd1RocmVhZCA6IG9ic2VydmVycykKICAgICAgICAgZmxvd1RocmVhZC0+
Y2hlY2tJbnZhbGlkUmVnaW9ucygpOwotICAgIH0KIH0KIAogdm9pZCBSZW5kZXJOYW1lZEZsb3dU
aHJlYWQ6OmFkZERlcGVuZGVuY3lPbkZsb3dUaHJlYWQoUmVuZGVyTmFtZWRGbG93VGhyZWFkKiBv
dGhlckZsb3dUaHJlYWQpCkBAIC00MTgsOCArNDExLDggQEAgdm9pZCBSZW5kZXJOYW1lZEZsb3dU
aHJlYWQ6OnJlbW92ZURlcGVuZGVuY3lPbkZsb3dUaHJlYWQoUmVuZGVyTmFtZWRGbG93VGhyZWFk
KgogCiB2b2lkIFJlbmRlck5hbWVkRmxvd1RocmVhZDo6cHVzaERlcGVuZGVuY2llcyhSZW5kZXJO
YW1lZEZsb3dUaHJlYWRMaXN0JiBsaXN0KQogewotICAgIGZvciAoYXV0byBpdGVyID0gbV9sYXlv
dXRCZWZvcmVUaHJlYWRzU2V0LmJlZ2luKCksIGVuZCA9IG1fbGF5b3V0QmVmb3JlVGhyZWFkc1Nl
dC5lbmQoKTsgaXRlciAhPSBlbmQ7ICsraXRlcikgewotICAgICAgICBSZW5kZXJOYW1lZEZsb3dU
aHJlYWQqIGZsb3dUaHJlYWQgPSAoKml0ZXIpLmtleTsKKyAgICBmb3IgKGF1dG8mIGZsb3dUaHJl
YWRQYWlyIDogbV9sYXlvdXRCZWZvcmVUaHJlYWRzU2V0KSB7CisgICAgICAgIGF1dG8mIGZsb3dU
aHJlYWQgPSBmbG93VGhyZWFkUGFpci5rZXk7CiAgICAgICAgIGlmIChsaXN0LmNvbnRhaW5zKGZs
b3dUaHJlYWQpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGZsb3dUaHJlYWQtPnB1
c2hEZXBlbmRlbmNpZXMobGlzdCk7CkBAIC00MzksOCArNDMyLDcgQEAgdm9pZCBSZW5kZXJOYW1l
ZEZsb3dUaHJlYWQ6OnJlZ2lzdGVyTmFtZWRGbG93Q29udGVudEVsZW1lbnQoRWxlbWVudCYgY29u
dGVudEVsZW0KICAgICByZXNldE1hcmtGb3JEZXN0cnVjdGlvbigpOwogCiAgICAgLy8gRmluZCB0
aGUgZmlyc3QgY29udGVudCBub2RlIGZvbGxvd2luZyB0aGUgbmV3IGNvbnRlbnQgbm9kZS4KLSAg
ICBmb3IgKGF1dG8gaXQgPSBtX2NvbnRlbnRFbGVtZW50cy5iZWdpbigpLCBlbmQgPSBtX2NvbnRl
bnRFbGVtZW50cy5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgIEVsZW1lbnQqIGVs
ZW1lbnQgPSAqaXQ7CisgICAgZm9yIChhdXRvJiBlbGVtZW50IDogbV9jb250ZW50RWxlbWVudHMp
IHsKICAgICAgICAgdW5zaWduZWQgc2hvcnQgcG9zaXRpb24gPSBjb250ZW50RWxlbWVudC5jb21w
YXJlRG9jdW1lbnRQb3NpdGlvbihlbGVtZW50KTsKICAgICAgICAgaWYgKHBvc2l0aW9uICYgTm9k
ZTo6RE9DVU1FTlRfUE9TSVRJT05fRk9MTE9XSU5HKSB7CiAgICAgICAgICAgICBtX2NvbnRlbnRF
bGVtZW50cy5pbnNlcnRCZWZvcmUoZWxlbWVudCwgJmNvbnRlbnRFbGVtZW50KTsKQEAgLTU1MCw4
ICs1NDIsNyBAQCBib29sIFJlbmRlck5hbWVkRmxvd1RocmVhZDo6aXNNYXJrZWRGb3JEZXN0cnVj
dGlvbigpIGNvbnN0CiAKIHN0YXRpYyBib29sIGlzQ29udGFpbmVkSW5FbGVtZW50cyhjb25zdCBW
ZWN0b3I8RWxlbWVudCo+JiBvdGhlcnMsIEVsZW1lbnQqIGVsZW1lbnQpCiB7Ci0gICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBvdGhlcnMuc2l6ZSgpOyBpKyspIHsKLSAgICAgICAgRWxlbWVudCog
b3RoZXIgPSBvdGhlcnMuYXQoaSk7CisgICAgZm9yIChhdXRvJiBvdGhlciA6IG90aGVycykgewog
ICAgICAgICBpZiAob3RoZXItPmNvbnRhaW5zKGVsZW1lbnQpKQogICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQpAQCAtNTk5LDE0ICs1OTAsMTIgQEAgdm9pZCBSZW5kZXJOYW1lZEZsb3dU
aHJlYWQ6OmdldFJhbmdlcyhWZWN0b3I8UmVmUHRyPFJhbmdlPj4mIHJhbmdlT2JqZWN0cywgY29u
c3QKIAogICAgIFZlY3RvcjxFbGVtZW50Kj4gZWxlbWVudHM7CiAgICAgLy8gZWxpbWluYXRlIHRo
ZSBjb250ZW50RWxlbWVudHMgdGhhdCBhcmUgZGVzY2VuZGFudHMgb2Ygb3RoZXIgY29udGVudEVs
ZW1lbnRzCi0gICAgZm9yIChhdXRvIGl0ID0gY29udGVudEVsZW1lbnRzKCkuYmVnaW4oKSwgZW5k
ID0gY29udGVudEVsZW1lbnRzKCkuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICBF
bGVtZW50KiBlbGVtZW50ID0gKml0OworICAgIGZvciAoYXV0byYgZWxlbWVudCA6IGNvbnRlbnRF
bGVtZW50cygpKSB7CiAgICAgICAgIGlmICghaXNDb250YWluZWRJbkVsZW1lbnRzKGVsZW1lbnRz
LCBlbGVtZW50KSkKICAgICAgICAgICAgIGVsZW1lbnRzLmFwcGVuZChlbGVtZW50KTsKICAgICB9
CiAKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGVsZW1lbnRzLnNpemUoKTsgaSsrKSB7Ci0g
ICAgICAgIEVsZW1lbnQqIGNvbnRlbnRFbGVtZW50ID0gZWxlbWVudHMuYXQoaSk7CisgICAgZm9y
IChhdXRvJiBjb250ZW50RWxlbWVudCA6IGVsZW1lbnRzKSB7CiAgICAgICAgIGlmICghY29udGVu
dEVsZW1lbnQtPnJlbmRlcmVyKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIApAQCAtNzQ0LDkg
KzczMyw5IEBAIGJvb2wgUmVuZGVyTmFtZWRGbG93VGhyZWFkOjpjb2xsZWN0c0dyYXBoaWNzTGF5
ZXJzVW5kZXJSZWdpb25zKCkgY29uc3QKIHZvaWQgUmVuZGVyTmFtZWRGbG93VGhyZWFkOjpjaGVj
a1JlZ2lvbnNXaXRoU3R5bGluZygpCiB7CiAgICAgYm9vbCBoYXNSZWdpb25zV2l0aFN0eWxpbmcg
PSBmYWxzZTsKLSAgICBmb3IgKGF1dG8gaXRlciA9IG1fcmVnaW9uTGlzdC5iZWdpbigpLCBlbmQg
PSBtX3JlZ2lvbkxpc3QuZW5kKCk7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpIHsKLSAgICAgICAgUmVu
ZGVyTmFtZWRGbG93RnJhZ21lbnQqIHJlZ2lvbiA9IHRvUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQo
Kml0ZXIpOwotICAgICAgICBpZiAocmVnaW9uLT5oYXNDdXN0b21SZWdpb25TdHlsZSgpKSB7Cisg
ICAgZm9yIChjb25zdCBhdXRvJiByZWdpb24gOiBtX3JlZ2lvbkxpc3QpIHsKKyAgICAgICAgY29u
c3QgUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQqIG5hbWVkRmxvd0ZyYWdtZW50ID0gdG9SZW5kZXJO
YW1lZEZsb3dGcmFnbWVudChyZWdpb24pOworICAgICAgICBpZiAobmFtZWRGbG93RnJhZ21lbnQt
Pmhhc0N1c3RvbVJlZ2lvblN0eWxlKCkpIHsKICAgICAgICAgICAgIGhhc1JlZ2lvbnNXaXRoU3R5
bGluZyA9IHRydWU7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtNzU4LDkgKzc0
Nyw5IEBAIHZvaWQgUmVuZGVyTmFtZWRGbG93VGhyZWFkOjpjbGVhclJlbmRlck9iamVjdEN1c3Rv
bVN0eWxlKGNvbnN0IFJlbmRlck9iamVjdCogb2JqCiB7CiAgICAgLy8gQ2xlYXIgdGhlIHN0eWxl
cyBmb3IgdGhlIG9iamVjdCBpbiB0aGUgcmVnaW9ucy4KICAgICAvLyBGSVhNRTogUmVnaW9uIHN0
eWxpbmcgaXMgbm90IGNvbXB1dGVkIG9ubHkgZm9yIHRoZSByZWdpb24gcmFuZ2Ugb2YgdGhlIG9i
amVjdCBzbyB0aGlzIGlzIHdoeSB3ZSBuZWVkIHRvIHdhbGsgdGhlIHdob2xlIGNoYWluLgotICAg
IGZvciAoYXV0byBpdGVyID0gbV9yZWdpb25MaXN0LmJlZ2luKCksIGVuZCA9IG1fcmVnaW9uTGlz
dC5lbmQoKTsgaXRlciAhPSBlbmQ7ICsraXRlcikgewotICAgICAgICBSZW5kZXJOYW1lZEZsb3dG
cmFnbWVudCogcmVnaW9uID0gdG9SZW5kZXJOYW1lZEZsb3dGcmFnbWVudCgqaXRlcik7Ci0gICAg
ICAgIHJlZ2lvbi0+Y2xlYXJPYmplY3RTdHlsZUluUmVnaW9uKG9iamVjdCk7CisgICAgZm9yIChh
dXRvJiByZWdpb24gOiBtX3JlZ2lvbkxpc3QpIHsKKyAgICAgICAgUmVuZGVyTmFtZWRGbG93RnJh
Z21lbnQqIG5hbWVkRmxvd0ZyYWdtZW50ID0gdG9SZW5kZXJOYW1lZEZsb3dGcmFnbWVudChyZWdp
b24pOworICAgICAgICBuYW1lZEZsb3dGcmFnbWVudC0+Y2xlYXJPYmplY3RTdHlsZUluUmVnaW9u
KG9iamVjdCk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VHJlZUFzVGV4dC5jcHAKaW5kZXggMjUwYzA0OGE4ODE5NmYzOGFhOWU5ZDE2OTJmMmNkMjdlNTA4
ZGQxYy4uZDg2NmJjNjRkMGJhNjM2ODAwNzc5YTcxYjRjMjg0ZGE2MDg1NDQ0MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcApAQCAtNjU3LDkgKzY1
Nyw3IEBAIHN0YXRpYyB2b2lkIHdyaXRlKFRleHRTdHJlYW0mIHRzLCBSZW5kZXJMYXllciYgbCwK
IAogc3RhdGljIHZvaWQgd3JpdGVSZW5kZXJSZWdpb25MaXN0KGNvbnN0IFJlbmRlclJlZ2lvbkxp
c3QmIGZsb3dUaHJlYWRSZWdpb25MaXN0LCBUZXh0U3RyZWFtJiB0cywgaW50IGluZGVudCkKIHsK
LSAgICBmb3IgKFJlbmRlclJlZ2lvbkxpc3Q6OmNvbnN0X2l0ZXJhdG9yIGl0UlIgPSBmbG93VGhy
ZWFkUmVnaW9uTGlzdC5iZWdpbigpOyBpdFJSICE9IGZsb3dUaHJlYWRSZWdpb25MaXN0LmVuZCgp
OyArK2l0UlIpIHsKLSAgICAgICAgUmVuZGVyUmVnaW9uKiByZW5kZXJSZWdpb24gPSAqaXRSUjsK
LQorICAgIGZvciAoY29uc3QgYXV0byYgcmVuZGVyUmVnaW9uIDogZmxvd1RocmVhZFJlZ2lvbkxp
c3QpIHsKICAgICAgICAgd3JpdGVJbmRlbnQodHMsIGluZGVudCk7CiAgICAgICAgIHRzIDw8IHN0
YXRpY19jYXN0PGNvbnN0IFJlbmRlck9iamVjdCo+KHJlbmRlclJlZ2lvbiktPnJlbmRlck5hbWUo
KTsKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>