<?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>160745</bug_id>
          
          <creation_ts>2016-08-10 13:24:45 -0700</creation_ts>
          <short_desc>Move all SQLTransactionBackend member variables to SQLTransaction</short_desc>
          <delta_ts>2016-08-10 13:31:43 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Anders Carlsson">andersca</reporter>
          <assigned_to name="Anders Carlsson">andersca</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1219104</commentid>
    <comment_count>0</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2016-08-10 13:24:45 -0700</bug_when>
    <thetext>Move all SQLTransactionBackend member variables to SQLTransaction</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1219106</commentid>
    <comment_count>1</comment_count>
      <attachid>285751</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2016-08-10 13:25:27 -0700</bug_when>
    <thetext>Created attachment 285751
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1219110</commentid>
    <comment_count>2</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2016-08-10 13:31:43 -0700</bug_when>
    <thetext>Committed r204349: &lt;http://trac.webkit.org/changeset/204349&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>285751</attachid>
            <date>2016-08-10 13:25:27 -0700</date>
            <delta_ts>2016-08-10 13:29:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-160745-20160810132351.patch</filename>
            <type>text/plain</type>
            <size>43185</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA0MzM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTdiODBiOWEzYjlkNDA1
YWYzOTc2ZTQ2NzM5NTRmYjlhNmMzYmM2MS4uZjQxZTZiODI4OWI5MzM2NTU5OGNlOTE3M2RkMGM5
OWJjZTM4MTU5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDYxIEBACiAyMDE2LTA4LTEwICBBbmRl
cnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKKyAgICAgICAgTW92ZSBhbGwgU1FM
VHJhbnNhY3Rpb25CYWNrZW5kIG1lbWJlciB2YXJpYWJsZXMgdG8gU1FMVHJhbnNhY3Rpb24KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDc0NQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTW9kdWxlcy93
ZWJkYXRhYmFzZS9DaGFuZ2VWZXJzaW9uV3JhcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
aGFuZ2VWZXJzaW9uV3JhcHBlcjo6cGVyZm9ybVByZWZsaWdodCk6CisgICAgICAgIChXZWJDb3Jl
OjpDaGFuZ2VWZXJzaW9uV3JhcHBlcjo6cGVyZm9ybVBvc3RmbGlnaHQpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2hhbmdlVmVyc2lvbldyYXBwZXI6OmhhbmRsZUNvbW1pdEZhaWxlZEFmdGVyUG9zdGZs
aWdodCk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9DaGFuZ2VWZXJzaW9uV3JhcHBl
ci5oOgorICAgICAgICAoV2ViQ29yZTo6Q2hhbmdlVmVyc2lvbldyYXBwZXI6OnNxbEVycm9yKTog
RGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uOjpTUUxUcmFuc2FjdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpTUUxUcmFuc2FjdGlvbjo6ZGVsaXZlclRyYW5zYWN0aW9uRXJyb3JD
YWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpTUUxUcmFuc2FjdGlvbjo6ZGVsaXZlclN0YXRl
bWVudENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uOjpkZWxpdmVy
UXVvdGFJbmNyZWFzZUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9u
OjpoYXNDYWxsYmFjayk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTUUxUcmFuc2FjdGlv
bjo6aGFzU3VjY2Vzc0NhbGxiYWNrKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNRTFRy
YW5zYWN0aW9uOjpoYXNFcnJvckNhbGxiYWNrKTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVz
L3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpTUUxUcmFu
c2FjdGlvbjo6aXNSZWFkT25seSk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxU
cmFuc2FjdGlvbkJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rpb25C
YWNrZW5kOjpTUUxUcmFuc2FjdGlvbkJhY2tlbmQpOgorICAgICAgICAoV2ViQ29yZTo6U1FMVHJh
bnNhY3Rpb25CYWNrZW5kOjp+U1FMVHJhbnNhY3Rpb25CYWNrZW5kKToKKyAgICAgICAgKFdlYkNv
cmU6OlNRTFRyYW5zYWN0aW9uQmFja2VuZDo6ZG9DbGVhbnVwKToKKyAgICAgICAgKFdlYkNvcmU6
OlNRTFRyYW5zYWN0aW9uQmFja2VuZDo6ZW5xdWV1ZVN0YXRlbWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpTUUxUcmFuc2FjdGlvbkJhY2tlbmQ6OmNvbXB1dGVOZXh0U3RhdGVBbmRDbGVhbnVwSWZO
ZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rpb25CYWNrZW5kOjpleGVjdXRl
U1FMKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uQmFja2VuZDo6bm90aWZ5RGF0
YWJhc2VUaHJlYWRJc1NodXR0aW5nRG93bik6CisgICAgICAgIChXZWJDb3JlOjpTUUxUcmFuc2Fj
dGlvbkJhY2tlbmQ6OmFjcXVpcmVMb2NrKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0
aW9uQmFja2VuZDo6bG9ja0FjcXVpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0
aW9uQmFja2VuZDo6b3BlblRyYW5zYWN0aW9uQW5kUHJlZmxpZ2h0KToKKyAgICAgICAgKFdlYkNv
cmU6OlNRTFRyYW5zYWN0aW9uQmFja2VuZDo6cnVuU3RhdGVtZW50cyk6CisgICAgICAgIChXZWJD
b3JlOjpTUUxUcmFuc2FjdGlvbkJhY2tlbmQ6OmdldE5leHRTdGF0ZW1lbnQpOgorICAgICAgICAo
V2ViQ29yZTo6U1FMVHJhbnNhY3Rpb25CYWNrZW5kOjpydW5DdXJyZW50U3RhdGVtZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uQmFja2VuZDo6aGFuZGxlQ3VycmVudFN0YXRl
bWVudEVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uQmFja2VuZDo6aGFu
ZGxlVHJhbnNhY3Rpb25FcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpTUUxUcmFuc2FjdGlvbkJh
Y2tlbmQ6OnBvc3RmbGlnaHRBbmRDb21taXQpOgorICAgICAgICAoV2ViQ29yZTo6U1FMVHJhbnNh
Y3Rpb25CYWNrZW5kOjpjbGVhbnVwQW5kVGVybWluYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNR
TFRyYW5zYWN0aW9uQmFja2VuZDo6Y2xlYW51cEFmdGVyVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNr
KToKKyAgICAgICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uQmFja2VuZDo6cmVxdWVzdFRyYW5z
aXRUb1N0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uQmFja2VuZDo6YWNx
dWlyZU9yaWdpbkxvY2spOgorICAgICAgICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rpb25CYWNrZW5k
OjpyZWxlYXNlT3JpZ2luTG9ja0lmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTFRyYW5z
YWN0aW9uQmFja2VuZDo6Y3VycmVudFN0YXRlbWVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpTUUxUcmFuc2FjdGlvbkJhY2tlbmQ6OnRyYW5zYWN0aW9uRXJyb3IpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rpb25CYWNrZW5kOjpzZXRTaG91bGRSZXRyeUN1
cnJlbnRTdGF0ZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rp
b25CYWNrZW5kOjplbnF1ZXVlU3RhdGVtZW50QmFja2VuZCk6IERlbGV0ZWQuCisgICAgICAgICog
TW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbkJhY2tlbmQuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlNRTFRyYW5zYWN0aW9uQmFja2VuZDo6ZGF0YWJhc2UpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rpb25CYWNrZW5kOjppc1JlYWRPbmx5KTogRGVsZXRlZC4K
KyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uQ29vcmRpbmF0b3Iu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rpb25Db29yZGluYXRvcjo6cHJvY2Vz
c1BlbmRpbmdUcmFuc2FjdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rpb25D
b29yZGluYXRvcjo6cmVsZWFzZUxvY2spOgorCisyMDE2LTA4LTEwICBBbmRlcnMgQ2FybHNzb24g
IDxhbmRlcnNjYUBhcHBsZS5jb20+CisKICAgICAgICAgTWFrZSBTUUxUcmFuc2FjdGlvbkJhY2tl
bmQgYSBtZW1iZXIgb2YgU1FMVHJhbnNhY3Rpb24KICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDc0MQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0NoYW5nZVZlcnNpb25XcmFwcGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvQ2hhbmdlVmVyc2lvbldyYXBwZXIuY3BwCmluZGV4
IDMyZDAyZTkwNzBiYTNhOGZmOGQ0NmNlMWYyZThkMzNmNjIxNzMwYWMuLjgyZTc4MDI2NTFlM2Iw
MGNmOTMxMzdiY2M0NTM2MDdmNzEzMTkyYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZGF0YWJhc2UvQ2hhbmdlVmVyc2lvbldyYXBwZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvQ2hhbmdlVmVyc2lvbldyYXBwZXIuY3BwCkBAIC00
MSwxNyArNDEsMTQgQEAgQ2hhbmdlVmVyc2lvbldyYXBwZXI6OkNoYW5nZVZlcnNpb25XcmFwcGVy
KGNvbnN0IFN0cmluZyYgb2xkVmVyc2lvbiwgY29uc3QgU3RyaW4KIHsKIH0KIAotYm9vbCBDaGFu
Z2VWZXJzaW9uV3JhcHBlcjo6cGVyZm9ybVByZWZsaWdodChTUUxUcmFuc2FjdGlvbkJhY2tlbmQq
IHRyYW5zYWN0aW9uKQorYm9vbCBDaGFuZ2VWZXJzaW9uV3JhcHBlcjo6cGVyZm9ybVByZWZsaWdo
dChTUUxUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24pCiB7Ci0gICAgQVNTRVJUKHRyYW5zYWN0aW9u
ICYmIHRyYW5zYWN0aW9uLT5kYXRhYmFzZSgpKTsKLQotICAgIERhdGFiYXNlKiBkYXRhYmFzZSA9
IHRyYW5zYWN0aW9uLT5kYXRhYmFzZSgpOworICAgIERhdGFiYXNlJiBkYXRhYmFzZSA9IHRyYW5z
YWN0aW9uLmRhdGFiYXNlKCk7CiAKICAgICBTdHJpbmcgYWN0dWFsVmVyc2lvbjsKLSAgICBpZiAo
IWRhdGFiYXNlLT5nZXRWZXJzaW9uRnJvbURhdGFiYXNlKGFjdHVhbFZlcnNpb24pKSB7Ci0gICAg
ICAgIGludCBzcWxpdGVFcnJvciA9IGRhdGFiYXNlLT5zcWxpdGVEYXRhYmFzZSgpLmxhc3RFcnJv
cigpOwotICAgICAgICBtX3NxbEVycm9yID0gU1FMRXJyb3I6OmNyZWF0ZShTUUxFcnJvcjo6VU5L
Tk9XTl9FUlIsICJ1bmFibGUgdG8gcmVhZCB0aGUgY3VycmVudCB2ZXJzaW9uIiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3FsaXRlRXJyb3IsIGRhdGFiYXNlLT5zcWxp
dGVEYXRhYmFzZSgpLmxhc3RFcnJvck1zZygpKTsKKyAgICBpZiAoIWRhdGFiYXNlLmdldFZlcnNp
b25Gcm9tRGF0YWJhc2UoYWN0dWFsVmVyc2lvbikpIHsKKyAgICAgICAgaW50IHNxbGl0ZUVycm9y
ID0gZGF0YWJhc2Uuc3FsaXRlRGF0YWJhc2UoKS5sYXN0RXJyb3IoKTsKKyAgICAgICAgbV9zcWxF
cnJvciA9IFNRTEVycm9yOjpjcmVhdGUoU1FMRXJyb3I6OlVOS05PV05fRVJSLCAidW5hYmxlIHRv
IHJlYWQgdGhlIGN1cnJlbnQgdmVyc2lvbiIsIHNxbGl0ZUVycm9yLCBkYXRhYmFzZS5zcWxpdGVE
YXRhYmFzZSgpLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
IApAQCAtNjMsMjYgKzYwLDIzIEBAIGJvb2wgQ2hhbmdlVmVyc2lvbldyYXBwZXI6OnBlcmZvcm1Q
cmVmbGlnaHQoU1FMVHJhbnNhY3Rpb25CYWNrZW5kKiB0cmFuc2FjdGlvbikKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotYm9vbCBDaGFuZ2VWZXJzaW9uV3JhcHBlcjo6cGVyZm9ybVBvc3RmbGlnaHQo
U1FMVHJhbnNhY3Rpb25CYWNrZW5kKiB0cmFuc2FjdGlvbikKK2Jvb2wgQ2hhbmdlVmVyc2lvbldy
YXBwZXI6OnBlcmZvcm1Qb3N0ZmxpZ2h0KFNRTFRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbikKIHsK
LSAgICBBU1NFUlQodHJhbnNhY3Rpb24gJiYgdHJhbnNhY3Rpb24tPmRhdGFiYXNlKCkpOwotCi0g
ICAgRGF0YWJhc2UqIGRhdGFiYXNlID0gdHJhbnNhY3Rpb24tPmRhdGFiYXNlKCk7CisgICAgRGF0
YWJhc2UmIGRhdGFiYXNlID0gdHJhbnNhY3Rpb24uZGF0YWJhc2UoKTsKIAotICAgIGlmICghZGF0
YWJhc2UtPnNldFZlcnNpb25JbkRhdGFiYXNlKG1fbmV3VmVyc2lvbikpIHsKLSAgICAgICAgaW50
IHNxbGl0ZUVycm9yID0gZGF0YWJhc2UtPnNxbGl0ZURhdGFiYXNlKCkubGFzdEVycm9yKCk7Ci0g
ICAgICAgIG1fc3FsRXJyb3IgPSBTUUxFcnJvcjo6Y3JlYXRlKFNRTEVycm9yOjpVTktOT1dOX0VS
UiwgInVuYWJsZSB0byBzZXQgbmV3IHZlcnNpb24gaW4gZGF0YWJhc2UiLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzcWxpdGVFcnJvciwgZGF0YWJhc2UtPnNxbGl0ZURh
dGFiYXNlKCkubGFzdEVycm9yTXNnKCkpOworICAgIGlmICghZGF0YWJhc2Uuc2V0VmVyc2lvbklu
RGF0YWJhc2UobV9uZXdWZXJzaW9uKSkgeworICAgICAgICBpbnQgc3FsaXRlRXJyb3IgPSBkYXRh
YmFzZS5zcWxpdGVEYXRhYmFzZSgpLmxhc3RFcnJvcigpOworICAgICAgICBtX3NxbEVycm9yID0g
U1FMRXJyb3I6OmNyZWF0ZShTUUxFcnJvcjo6VU5LTk9XTl9FUlIsICJ1bmFibGUgdG8gc2V0IG5l
dyB2ZXJzaW9uIGluIGRhdGFiYXNlIiwgc3FsaXRlRXJyb3IsIGRhdGFiYXNlLnNxbGl0ZURhdGFi
YXNlKCkubGFzdEVycm9yTXNnKCkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0g
ICAgZGF0YWJhc2UtPnNldEV4cGVjdGVkVmVyc2lvbihtX25ld1ZlcnNpb24pOworICAgIGRhdGFi
YXNlLnNldEV4cGVjdGVkVmVyc2lvbihtX25ld1ZlcnNpb24pOwogICAgIHJldHVybiB0cnVlOwog
fQogCi12b2lkIENoYW5nZVZlcnNpb25XcmFwcGVyOjpoYW5kbGVDb21taXRGYWlsZWRBZnRlclBv
c3RmbGlnaHQoU1FMVHJhbnNhY3Rpb25CYWNrZW5kKiB0cmFuc2FjdGlvbikKK3ZvaWQgQ2hhbmdl
VmVyc2lvbldyYXBwZXI6OmhhbmRsZUNvbW1pdEZhaWxlZEFmdGVyUG9zdGZsaWdodChTUUxUcmFu
c2FjdGlvbiYgdHJhbnNhY3Rpb24pCiB7Ci0gICAgdHJhbnNhY3Rpb24tPmRhdGFiYXNlKCktPnNl
dENhY2hlZFZlcnNpb24obV9vbGRWZXJzaW9uKTsKKyAgICB0cmFuc2FjdGlvbi5kYXRhYmFzZSgp
LnNldENhY2hlZFZlcnNpb24obV9vbGRWZXJzaW9uKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9DaGFu
Z2VWZXJzaW9uV3JhcHBlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9D
aGFuZ2VWZXJzaW9uV3JhcHBlci5oCmluZGV4IDJjY2U3YTRlYzBkMTk4Y2Y0ZGViMTE5MGQzNWFm
YjhiZGU4ZDJlOGQuLjMxMjFiYWQ1NzUwNDc1MzkwZTU4OTljMjkwMjhkOGNhZWIzZjdmNDYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvQ2hhbmdlVmVyc2lv
bldyYXBwZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0NoYW5n
ZVZlcnNpb25XcmFwcGVyLmgKQEAgLTM5LDEwICszOSwxMCBAQCBjbGFzcyBDaGFuZ2VWZXJzaW9u
V3JhcHBlciA6IHB1YmxpYyBTUUxUcmFuc2FjdGlvbldyYXBwZXIgewogcHVibGljOgogICAgIHN0
YXRpYyBSZWY8Q2hhbmdlVmVyc2lvbldyYXBwZXI+IGNyZWF0ZShjb25zdCBTdHJpbmcmIG9sZFZl
cnNpb24sIGNvbnN0IFN0cmluZyYgbmV3VmVyc2lvbikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBD
aGFuZ2VWZXJzaW9uV3JhcHBlcihvbGRWZXJzaW9uLCBuZXdWZXJzaW9uKSk7IH0KIAotICAgIHZp
cnR1YWwgYm9vbCBwZXJmb3JtUHJlZmxpZ2h0KFNRTFRyYW5zYWN0aW9uQmFja2VuZCopOwotICAg
IHZpcnR1YWwgYm9vbCBwZXJmb3JtUG9zdGZsaWdodChTUUxUcmFuc2FjdGlvbkJhY2tlbmQqKTsK
LSAgICB2aXJ0dWFsIFNRTEVycm9yKiBzcWxFcnJvcigpIGNvbnN0IHsgcmV0dXJuIG1fc3FsRXJy
b3IuZ2V0KCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlQ29tbWl0RmFpbGVkQWZ0ZXJQb3N0
ZmxpZ2h0KFNRTFRyYW5zYWN0aW9uQmFja2VuZCopOworICAgIGJvb2wgcGVyZm9ybVByZWZsaWdo
dChTUUxUcmFuc2FjdGlvbiYpIG92ZXJyaWRlOworICAgIGJvb2wgcGVyZm9ybVBvc3RmbGlnaHQo
U1FMVHJhbnNhY3Rpb24mKSBvdmVycmlkZTsKKyAgICBTUUxFcnJvciogc3FsRXJyb3IoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBtX3NxbEVycm9yLmdldCgpOyB9OworICAgIHZvaWQgaGFuZGxl
Q29tbWl0RmFpbGVkQWZ0ZXJQb3N0ZmxpZ2h0KFNRTFRyYW5zYWN0aW9uJikgb3ZlcnJpZGU7CiAK
IHByaXZhdGU6CiAgICAgQ2hhbmdlVmVyc2lvbldyYXBwZXIoY29uc3QgU3RyaW5nJiBvbGRWZXJz
aW9uLCBjb25zdCBTdHJpbmcmIG5ld1ZlcnNpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uLmNwcAppbmRleCA0NjRhNWIwOTEy
ZDBkZTRmM2NhYmI3ZDY1OTQ4NjM2YWQzYTQyZWQ2Li5mNDEwODI0MGU2ZjM0ZGJiNDE5ZjVmNDcx
ODE2Y2MzMWJlNjNjOGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRh
dGFiYXNlL1NRTFRyYW5zYWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUg
IkRhdGFiYXNlQ29udGV4dC5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRl
ICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiT3JpZ2luTG9jay5oIgogI2luY2x1ZGUgIlNRTEVycm9y
LmgiCiAjaW5jbHVkZSAiU1FMU3RhdGVtZW50LmgiCiAjaW5jbHVkZSAiU1FMU3RhdGVtZW50Q2Fs
bGJhY2suaCIKQEAgLTQyLDYgKzQzLDcgQEAKICNpbmNsdWRlICJTUUxUcmFuc2FjdGlvbkNhbGxi
YWNrLmgiCiAjaW5jbHVkZSAiU1FMVHJhbnNhY3Rpb25DbGllbnQuaCIgLy8gRklYTUU6IFNob3Vs
ZCBiZSB1c2VkIGluIHRoZSBiYWNrZW5kIG9ubHkuCiAjaW5jbHVkZSAiU1FMVHJhbnNhY3Rpb25F
cnJvckNhbGxiYWNrLmgiCisjaW5jbHVkZSAiU1FMaXRlVHJhbnNhY3Rpb24uaCIKICNpbmNsdWRl
ICJWb2lkQ2FsbGJhY2suaCIKICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgpAQCAtNTgsOSArNjAsMTQgQEAgU1FMVHJhbnNhY3Rpb246OlNRTFRy
YW5zYWN0aW9uKFJlZjxEYXRhYmFzZT4mJiBkYXRhYmFzZSwgUmVmUHRyPFNRTFRyYW5zYWN0aW9u
Q2EKICAgICAsIG1fY2FsbGJhY2tXcmFwcGVyKFdURk1vdmUoY2FsbGJhY2spLCBtX2RhdGFiYXNl
LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCiAgICAgLCBtX3N1Y2Nlc3NDYWxsYmFja1dyYXBw
ZXIoV1RGTW92ZShzdWNjZXNzQ2FsbGJhY2spLCBtX2RhdGFiYXNlLT5zY3JpcHRFeGVjdXRpb25D
b250ZXh0KCkpCiAgICAgLCBtX2Vycm9yQ2FsbGJhY2tXcmFwcGVyKFdURk1vdmUoZXJyb3JDYWxs
YmFjayksIG1fZGF0YWJhc2UtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKKyAgICAsIG1fd3Jh
cHBlcihXVEZNb3ZlKHdyYXBwZXIpKQogICAgICwgbV9leGVjdXRlU3FsQWxsb3dlZChmYWxzZSkK
KyAgICAsIG1fc2hvdWxkUmV0cnlDdXJyZW50U3RhdGVtZW50KGZhbHNlKQorICAgICwgbV9tb2Rp
ZmllZERhdGFiYXNlKGZhbHNlKQorICAgICwgbV9sb2NrQWNxdWlyZWQoZmFsc2UpCiAgICAgLCBt
X3JlYWRPbmx5KHJlYWRPbmx5KQotICAgICwgbV9iYWNrZW5kKG1fZGF0YWJhc2UucHRyKCksICp0
aGlzLCBXVEZNb3ZlKHdyYXBwZXIpLCByZWFkT25seSkKKyAgICAsIG1faGFzVmVyc2lvbk1pc21h
dGNoKGZhbHNlKQorICAgICwgbV9iYWNrZW5kKCp0aGlzKQogewogfQogCkBAIC02OCwyMSArNzUs
NiBAQCBTUUxUcmFuc2FjdGlvbjo6flNRTFRyYW5zYWN0aW9uKCkKIHsKIH0KIAotYm9vbCBTUUxU
cmFuc2FjdGlvbjo6aGFzQ2FsbGJhY2soKSBjb25zdAotewotICAgIHJldHVybiBtX2NhbGxiYWNr
V3JhcHBlci5oYXNDYWxsYmFjaygpOwotfQotCi1ib29sIFNRTFRyYW5zYWN0aW9uOjpoYXNTdWNj
ZXNzQ2FsbGJhY2soKSBjb25zdAotewotICAgIHJldHVybiBtX3N1Y2Nlc3NDYWxsYmFja1dyYXBw
ZXIuaGFzQ2FsbGJhY2soKTsKLX0KLQotYm9vbCBTUUxUcmFuc2FjdGlvbjo6aGFzRXJyb3JDYWxs
YmFjaygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fZXJyb3JDYWxsYmFja1dyYXBwZXIuaGFzQ2Fs
bGJhY2soKTsKLX0KLQogU1FMVHJhbnNhY3Rpb246OlN0YXRlRnVuY3Rpb24gU1FMVHJhbnNhY3Rp
b246OnN0YXRlRnVuY3Rpb25Gb3IoU1FMVHJhbnNhY3Rpb25TdGF0ZSBzdGF0ZSkKIHsKICAgICBz
dGF0aWMgY29uc3QgU3RhdGVGdW5jdGlvbiBzdGF0ZUZ1bmN0aW9uc1tdID0gewpAQCAtMTQwLDIz
ICsxMzIsMTQgQEAgdm9pZCBTUUxUcmFuc2FjdGlvbjo6ZGVsaXZlclRyYW5zYWN0aW9uQ2FsbGJh
Y2soKQogCiB2b2lkIFNRTFRyYW5zYWN0aW9uOjpkZWxpdmVyVHJhbnNhY3Rpb25FcnJvckNhbGxi
YWNrKCkKIHsKKyAgICBBU1NFUlQobV90cmFuc2FjdGlvbkVycm9yKTsKKwogICAgIC8vIFNwZWMg
NC4zLjIuMTA6IElmIGV4aXN0cywgaW52b2tlIGVycm9yIGNhbGxiYWNrIHdpdGggdGhlIGxhc3QK
ICAgICAvLyBlcnJvciB0byBoYXZlIG9jY3VycmVkIGluIHRoaXMgdHJhbnNhY3Rpb24uCiAgICAg
UmVmUHRyPFNRTFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjayA9IG1fZXJy
b3JDYWxsYmFja1dyYXBwZXIudW53cmFwKCk7Ci0gICAgaWYgKGVycm9yQ2FsbGJhY2spIHsKLSAg
ICAgICAgLy8gSWYgd2UgZ2V0IGhlcmUgd2l0aCBhbiBlbXB0eSBtX3RyYW5zYWN0aW9uRXJyb3Is
IHRoZW4gdGhlIGJhY2tlbmQKLSAgICAgICAgLy8gbXVzdCBiZSB3YWl0aW5nIGluIHRoZSBpZGxl
IHN0YXRlIHdhaXRpbmcgZm9yIHRoaXMgc3RhdGUgdG8gZmluaXNoLgotICAgICAgICAvLyBIZW5j
ZSwgaXQncyB0aHJlYWQgc2FmZSB0byBmZXRjaCB0aGUgYmFja2VuZCB0cmFuc2FjdGlvbkVycm9y
IHdpdGhvdXQKLSAgICAgICAgLy8gYSBsb2NrLgotICAgICAgICBpZiAoIW1fdHJhbnNhY3Rpb25F
cnJvcikKLSAgICAgICAgICAgIG1fdHJhbnNhY3Rpb25FcnJvciA9IG1fYmFja2VuZC50cmFuc2Fj
dGlvbkVycm9yKCk7Ci0KLSAgICAgICAgQVNTRVJUKG1fdHJhbnNhY3Rpb25FcnJvcik7CisgICAg
aWYgKGVycm9yQ2FsbGJhY2spCiAgICAgICAgIGVycm9yQ2FsbGJhY2stPmhhbmRsZUV2ZW50KG1f
dHJhbnNhY3Rpb25FcnJvci5nZXQoKSk7CiAKLSAgICAgICAgbV90cmFuc2FjdGlvbkVycm9yID0g
bnVsbHB0cjsKLSAgICB9Ci0KICAgICBjbGVhckNhbGxiYWNrV3JhcHBlcnMoKTsKIAogICAgIC8v
IFNwZWMgNC4zLjIuMTA6IFJvbGxiYWNrIHRoZSB0cmFuc2FjdGlvbi4KQEAgLTE2NSwxNSArMTQ4
LDEyIEBAIHZvaWQgU1FMVHJhbnNhY3Rpb246OmRlbGl2ZXJUcmFuc2FjdGlvbkVycm9yQ2FsbGJh
Y2soKQogCiB2b2lkIFNRTFRyYW5zYWN0aW9uOjpkZWxpdmVyU3RhdGVtZW50Q2FsbGJhY2soKQog
eworICAgIEFTU0VSVChtX2N1cnJlbnRTdGF0ZW1lbnQpOworCiAgICAgLy8gU3BlYyA0LjMuMi42
LjYgYW5kIDQuMy4yLjYuMzogSWYgdGhlIHN0YXRlbWVudCBjYWxsYmFjayB3ZW50IHdyb25nLCBq
dW1wIHRvIHRoZSB0cmFuc2FjdGlvbiBlcnJvciBjYWxsYmFjawogICAgIC8vIE90aGVyd2lzZSwg
Y29udGludWUgdG8gbG9vcCB0aHJvdWdoIHRoZSBzdGF0ZW1lbnQgcXVldWUKICAgICBtX2V4ZWN1
dGVTcWxBbGxvd2VkID0gdHJ1ZTsKLQotICAgIFNRTFN0YXRlbWVudCogY3VycmVudFN0YXRlbWVu
dCA9IG1fYmFja2VuZC5jdXJyZW50U3RhdGVtZW50KCk7Ci0gICAgQVNTRVJUKGN1cnJlbnRTdGF0
ZW1lbnQpOwotCi0gICAgYm9vbCByZXN1bHQgPSBjdXJyZW50U3RhdGVtZW50LT5wZXJmb3JtQ2Fs
bGJhY2sodGhpcyk7Ci0KKyAgICBib29sIHJlc3VsdCA9IG1fY3VycmVudFN0YXRlbWVudC0+cGVy
Zm9ybUNhbGxiYWNrKHRoaXMpOwogICAgIG1fZXhlY3V0ZVNxbEFsbG93ZWQgPSBmYWxzZTsKIAog
ICAgIGlmIChyZXN1bHQpIHsKQEAgLTE5MywxMCArMTczLDEwIEBAIHZvaWQgU1FMVHJhbnNhY3Rp
b246OmRlbGl2ZXJTdGF0ZW1lbnRDYWxsYmFjaygpCiAKIHZvaWQgU1FMVHJhbnNhY3Rpb246OmRl
bGl2ZXJRdW90YUluY3JlYXNlQ2FsbGJhY2soKQogewotICAgIEFTU0VSVChtX2JhY2tlbmQuY3Vy
cmVudFN0YXRlbWVudCgpKTsKKyAgICBBU1NFUlQobV9jdXJyZW50U3RhdGVtZW50KTsKKyAgICBB
U1NFUlQoIW1fc2hvdWxkUmV0cnlDdXJyZW50U3RhdGVtZW50KTsKIAotICAgIGJvb2wgc2hvdWxk
UmV0cnlDdXJyZW50U3RhdGVtZW50ID0gbV9kYXRhYmFzZS0+dHJhbnNhY3Rpb25DbGllbnQoKS0+
ZGlkRXhjZWVkUXVvdGEoJmRhdGFiYXNlKCkpOwotICAgIG1fYmFja2VuZC5zZXRTaG91bGRSZXRy
eUN1cnJlbnRTdGF0ZW1lbnQoc2hvdWxkUmV0cnlDdXJyZW50U3RhdGVtZW50KTsKKyAgICBtX3No
b3VsZFJldHJ5Q3VycmVudFN0YXRlbWVudCA9IG1fZGF0YWJhc2UtPnRyYW5zYWN0aW9uQ2xpZW50
KCktPmRpZEV4Y2VlZFF1b3RhKCZkYXRhYmFzZSgpKTsKIAogICAgIG1fYmFja2VuZC5yZXF1ZXN0
VHJhbnNpdFRvU3RhdGUoU1FMVHJhbnNhY3Rpb25TdGF0ZTo6UnVuU3RhdGVtZW50cyk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0
aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9u
LmgKaW5kZXggMTVkMTNhNTdhOWU1NTYxNjQwZDc4N2JmNzEzNmZiN2I2NWMxMDg1Yi4uNDBkZThj
MTQzM2E5NDJmMGY1NjQyNTBlMzA2YjBhMmI2ODFhNGVhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbi5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb24uaApAQCAtNTEsMTAgKzUx
LDEwIEBAIGNsYXNzIFZvaWRDYWxsYmFjazsKIGNsYXNzIFNRTFRyYW5zYWN0aW9uV3JhcHBlciA6
IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTUUxUcmFuc2FjdGlvbldyYXBwZXI+IHsKIHB1
YmxpYzoKICAgICB2aXJ0dWFsIH5TUUxUcmFuc2FjdGlvbldyYXBwZXIoKSB7IH0KLSAgICB2aXJ0
dWFsIGJvb2wgcGVyZm9ybVByZWZsaWdodChTUUxUcmFuc2FjdGlvbkJhY2tlbmQqKSA9IDA7Ci0g
ICAgdmlydHVhbCBib29sIHBlcmZvcm1Qb3N0ZmxpZ2h0KFNRTFRyYW5zYWN0aW9uQmFja2VuZCop
ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgcGVyZm9ybVByZWZsaWdodChTUUxUcmFuc2FjdGlvbiYp
ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgcGVyZm9ybVBvc3RmbGlnaHQoU1FMVHJhbnNhY3Rpb24m
KSA9IDA7CiAgICAgdmlydHVhbCBTUUxFcnJvciogc3FsRXJyb3IoKSBjb25zdCA9IDA7Ci0gICAg
dmlydHVhbCB2b2lkIGhhbmRsZUNvbW1pdEZhaWxlZEFmdGVyUG9zdGZsaWdodChTUUxUcmFuc2Fj
dGlvbkJhY2tlbmQqKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGhhbmRsZUNvbW1pdEZhaWxlZEFm
dGVyUG9zdGZsaWdodChTUUxUcmFuc2FjdGlvbiYpID0gMDsKIH07CiAKIGNsYXNzIFNRTFRyYW5z
YWN0aW9uIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNRTFRyYW5zYWN0aW9uPiwgcHVi
bGljIFNRTFRyYW5zYWN0aW9uU3RhdGVNYWNoaW5lPFNRTFRyYW5zYWN0aW9uPiB7CkBAIC02Nywx
NSArNjcsMTUgQEAgcHVibGljOgogICAgIHZvaWQgcGVyZm9ybVBlbmRpbmdDYWxsYmFjaygpOwog
CiAgICAgRGF0YWJhc2UmIGRhdGFiYXNlKCkgeyByZXR1cm4gbV9kYXRhYmFzZTsgfQorICAgIGJv
b2wgaXNSZWFkT25seSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVhZE9ubHk7IH0KICAgICBTUUxUcmFu
c2FjdGlvbkJhY2tlbmQmIGJhY2tlbmQoKSB7IHJldHVybiBtX2JhY2tlbmQ7IH0KIAogICAgIC8v
IEFQSXMgY2FsbGVkIGZyb20gdGhlIGJhY2tlbmQgcHVibGlzaGVkIHZpYSBTUUxUcmFuc2FjdGlv
bjoKICAgICB2b2lkIHJlcXVlc3RUcmFuc2l0VG9TdGF0ZShTUUxUcmFuc2FjdGlvblN0YXRlKTsK
LSAgICBib29sIGhhc0NhbGxiYWNrKCkgY29uc3Q7Ci0gICAgYm9vbCBoYXNTdWNjZXNzQ2FsbGJh
Y2soKSBjb25zdDsKLSAgICBib29sIGhhc0Vycm9yQ2FsbGJhY2soKSBjb25zdDsKIAogcHJpdmF0
ZToKKyAgICBmcmllbmQgY2xhc3MgU1FMVHJhbnNhY3Rpb25CYWNrZW5kOworCiAgICAgU1FMVHJh
bnNhY3Rpb24oUmVmPERhdGFiYXNlPiYmLCBSZWZQdHI8U1FMVHJhbnNhY3Rpb25DYWxsYmFjaz4m
JiwgUmVmUHRyPFZvaWRDYWxsYmFjaz4mJiBzdWNjZXNzQ2FsbGJhY2ssIFJlZlB0cjxTUUxUcmFu
c2FjdGlvbkVycm9yQ2FsbGJhY2s+JiYsIFJlZlB0cjxTUUxUcmFuc2FjdGlvbldyYXBwZXI+JiYs
IGJvb2wgcmVhZE9ubHkpOwogCiAgICAgdm9pZCBjbGVhckNhbGxiYWNrV3JhcHBlcnMoKTsKQEAg
LTk4LDEwICs5OCwyNCBAQCBwcml2YXRlOgogICAgIFNRTENhbGxiYWNrV3JhcHBlcjxWb2lkQ2Fs
bGJhY2s+IG1fc3VjY2Vzc0NhbGxiYWNrV3JhcHBlcjsKICAgICBTUUxDYWxsYmFja1dyYXBwZXI8
U1FMVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrPiBtX2Vycm9yQ2FsbGJhY2tXcmFwcGVyOwogCisg
ICAgUmVmUHRyPFNRTFRyYW5zYWN0aW9uV3JhcHBlcj4gbV93cmFwcGVyOworCiAgICAgYm9vbCBt
X2V4ZWN1dGVTcWxBbGxvd2VkOwogICAgIFJlZlB0cjxTUUxFcnJvcj4gbV90cmFuc2FjdGlvbkVy
cm9yOwogCisgICAgYm9vbCBtX3Nob3VsZFJldHJ5Q3VycmVudFN0YXRlbWVudDsKKyAgICBib29s
IG1fbW9kaWZpZWREYXRhYmFzZTsKKyAgICBib29sIG1fbG9ja0FjcXVpcmVkOwogICAgIGJvb2wg
bV9yZWFkT25seTsKKyAgICBib29sIG1faGFzVmVyc2lvbk1pc21hdGNoOworCisgICAgTG9jayBt
X3N0YXRlbWVudE11dGV4OworICAgIERlcXVlPHN0ZDo6dW5pcXVlX3B0cjxTUUxTdGF0ZW1lbnQ+
PiBtX3N0YXRlbWVudFF1ZXVlOworCisgICAgc3RkOjp1bmlxdWVfcHRyPFNRTFN0YXRlbWVudD4g
bV9jdXJyZW50U3RhdGVtZW50OworCisgICAgc3RkOjp1bmlxdWVfcHRyPFNRTGl0ZVRyYW5zYWN0
aW9uPiBtX3NxbGl0ZVRyYW5zYWN0aW9uOworICAgIFJlZlB0cjxPcmlnaW5Mb2NrPiBtX29yaWdp
bkxvY2s7CiAKICAgICBTUUxUcmFuc2FjdGlvbkJhY2tlbmQgbV9iYWNrZW5kOwogfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb25C
YWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNh
Y3Rpb25CYWNrZW5kLmNwcAppbmRleCAwZWQ2YWE4ZmI5ZTg1OWY0MGE0ZDcwY2JiZDM2YmI0MTdh
NzJhOGU0Li41YzUxMmQ1ZTEyYmIwNjM0ZTJkZjJjMmQyYWIzZGY3YWMwZjlkYzA4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uQmFj
a2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFu
c2FjdGlvbkJhY2tlbmQuY3BwCkBAIC0zNDMsNDkgKzM0MywzOCBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLVNRTFRyYW5zYWN0aW9uQmFja2VuZDo6U1FMVHJhbnNhY3Rpb25CYWNrZW5kKERh
dGFiYXNlKiBkYiwgU1FMVHJhbnNhY3Rpb24mIGZyb250ZW5kLCBSZWZQdHI8U1FMVHJhbnNhY3Rp
b25XcmFwcGVyPiYmIHdyYXBwZXIsIGJvb2wgcmVhZE9ubHkpCitTUUxUcmFuc2FjdGlvbkJhY2tl
bmQ6OlNRTFRyYW5zYWN0aW9uQmFja2VuZChTUUxUcmFuc2FjdGlvbiYgZnJvbnRlbmQpCiAgICAg
OiBtX2Zyb250ZW5kKGZyb250ZW5kKQotICAgICwgbV9kYXRhYmFzZShkYikKLSAgICAsIG1fd3Jh
cHBlcihXVEZNb3ZlKHdyYXBwZXIpKQotICAgICwgbV9oYXNDYWxsYmFjayhtX2Zyb250ZW5kLmhh
c0NhbGxiYWNrKCkpCi0gICAgLCBtX2hhc1N1Y2Nlc3NDYWxsYmFjayhtX2Zyb250ZW5kLmhhc1N1
Y2Nlc3NDYWxsYmFjaygpKQotICAgICwgbV9oYXNFcnJvckNhbGxiYWNrKG1fZnJvbnRlbmQuaGFz
RXJyb3JDYWxsYmFjaygpKQotICAgICwgbV9zaG91bGRSZXRyeUN1cnJlbnRTdGF0ZW1lbnQoZmFs
c2UpCi0gICAgLCBtX21vZGlmaWVkRGF0YWJhc2UoZmFsc2UpCi0gICAgLCBtX2xvY2tBY3F1aXJl
ZChmYWxzZSkKLSAgICAsIG1fcmVhZE9ubHkocmVhZE9ubHkpCi0gICAgLCBtX2hhc1ZlcnNpb25N
aXNtYXRjaChmYWxzZSkKIHsKLSAgICBBU1NFUlQobV9kYXRhYmFzZSk7CiAgICAgbV9yZXF1ZXN0
ZWRTdGF0ZSA9IFNRTFRyYW5zYWN0aW9uU3RhdGU6OkFjcXVpcmVMb2NrOwogfQogCiBTUUxUcmFu
c2FjdGlvbkJhY2tlbmQ6On5TUUxUcmFuc2FjdGlvbkJhY2tlbmQoKQogewotICAgIEFTU0VSVCgh
bV9zcWxpdGVUcmFuc2FjdGlvbik7CisgICAgQVNTRVJUKCFtX2Zyb250ZW5kLm1fc3FsaXRlVHJh
bnNhY3Rpb24pOwogfQogCiB2b2lkIFNRTFRyYW5zYWN0aW9uQmFja2VuZDo6ZG9DbGVhbnVwKCkK
IHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IGRhdGFiYXNlKCktPmRhdGFiYXNlQ29u
dGV4dCgpLT5kYXRhYmFzZVRocmVhZCgpLT5nZXRUaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoY3Vy
cmVudFRocmVhZCgpID09IG1fZnJvbnRlbmQuZGF0YWJhc2UoKS5kYXRhYmFzZUNvbnRleHQoKS0+
ZGF0YWJhc2VUaHJlYWQoKS0+Z2V0VGhyZWFkSUQoKSk7CiAKICAgICByZWxlYXNlT3JpZ2luTG9j
a0lmTmVlZGVkKCk7CiAKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3N0YXRlbWVudE11dGV4KTsK
LSAgICBtX3N0YXRlbWVudFF1ZXVlLmNsZWFyKCk7CisgICAgTG9ja0hvbGRlciBsb2NrZXIobV9m
cm9udGVuZC5tX3N0YXRlbWVudE11dGV4KTsKKyAgICBtX2Zyb250ZW5kLm1fc3RhdGVtZW50UXVl
dWUuY2xlYXIoKTsKIAotICAgIGlmIChtX3NxbGl0ZVRyYW5zYWN0aW9uKSB7CisgICAgaWYgKG1f
ZnJvbnRlbmQubV9zcWxpdGVUcmFuc2FjdGlvbikgewogICAgICAgICAvLyBJbiB0aGUgZXZlbnQg
d2UgZ290IGhlcmUgYmVjYXVzZSBvZiBhbiBpbnRlcnJ1cHRpb24gb3IgZXJyb3IgKGkuZS4gaWYK
ICAgICAgICAgLy8gdGhlIHRyYW5zYWN0aW9uIGlzIGluIHByb2dyZXNzKSwgd2Ugc2hvdWxkIHJv
bGwgaXQgYmFjayBoZXJlLiBDbGVhcmluZwogICAgICAgICAvLyBtX3NxbGl0ZVRyYW5zYWN0aW9u
IGludm9rZXMgU1FMaXRlVHJhbnNhY3Rpb24ncyBkZXN0cnVjdG9yIHdoaWNoIGRvZXMKICAgICAg
ICAgLy8ganVzdCB0aGF0LiBXZSBtaWdodCBhcyB3ZWxsIGRvIHRoaXMgdW5jb25kaXRpb25hbGx5
IGFuZCBmcmVlIHVwIGl0cwogICAgICAgICAvLyByZXNvdXJjZXMgYmVjYXVzZSB3ZSdyZSBhbHJl
YWR5IHRlcm1pbmF0aW5nLgotICAgICAgICBtX3NxbGl0ZVRyYW5zYWN0aW9uID0gbnVsbHB0cjsK
KyAgICAgICAgbV9mcm9udGVuZC5tX3NxbGl0ZVRyYW5zYWN0aW9uID0gbnVsbHB0cjsKICAgICB9
CiAKICAgICAvLyBSZWxlYXNlIHRoZSBsb2NrIG9uIHRoaXMgZGF0YWJhc2UKLSAgICBpZiAobV9s
b2NrQWNxdWlyZWQpCi0gICAgICAgIG1fZGF0YWJhc2UtPnRyYW5zYWN0aW9uQ29vcmRpbmF0b3Io
KS0+cmVsZWFzZUxvY2sobV9mcm9udGVuZCk7CisgICAgaWYgKG1fZnJvbnRlbmQubV9sb2NrQWNx
dWlyZWQpCisgICAgICAgIG1fZnJvbnRlbmQubV9kYXRhYmFzZS0+dHJhbnNhY3Rpb25Db29yZGlu
YXRvcigpLT5yZWxlYXNlTG9jayhtX2Zyb250ZW5kKTsKIAogICAgIC8vIERvIHNvbWUgYWdncmVz
aXZlIGNsZWFuIHVwIGhlcmUgZXhjZXB0IGZvciBtX2RhdGFiYXNlLgogICAgIC8vCkBAIC00MTAs
MjMgKzM5OSw3IEBAIHZvaWQgU1FMVHJhbnNhY3Rpb25CYWNrZW5kOjpkb0NsZWFudXAoKQogICAg
IC8vIFNRTFRyYW5zYWN0aW9uQmFja2VuZCBpcyBndWFyYW50ZWVkIHRvIG5vdCBkZXN0cnVjdCB1
bnRpbCB0aGUgZnJvbnRlbmQKICAgICAvLyBpcyBhbHNvIGRlc3RydWN0aW5nLgogCi0gICAgbV93
cmFwcGVyID0gbnVsbHB0cjsKLX0KLQotU1FMU3RhdGVtZW50KiBTUUxUcmFuc2FjdGlvbkJhY2tl
bmQ6OmN1cnJlbnRTdGF0ZW1lbnQoKQotewotICAgIHJldHVybiBtX2N1cnJlbnRTdGF0ZW1lbnRC
YWNrZW5kLmdldCgpOwotfQotCi1TUUxFcnJvciogU1FMVHJhbnNhY3Rpb25CYWNrZW5kOjp0cmFu
c2FjdGlvbkVycm9yKCkKLXsKLSAgICByZXR1cm4gbV90cmFuc2FjdGlvbkVycm9yLmdldCgpOwot
fQotCi12b2lkIFNRTFRyYW5zYWN0aW9uQmFja2VuZDo6c2V0U2hvdWxkUmV0cnlDdXJyZW50U3Rh
dGVtZW50KGJvb2wgc2hvdWxkUmV0cnkpCi17Ci0gICAgQVNTRVJUKCFtX3Nob3VsZFJldHJ5Q3Vy
cmVudFN0YXRlbWVudCk7Ci0gICAgbV9zaG91bGRSZXRyeUN1cnJlbnRTdGF0ZW1lbnQgPSBzaG91
bGRSZXRyeTsKKyAgICBtX2Zyb250ZW5kLm1fd3JhcHBlciA9IG51bGxwdHI7CiB9CiAKIFNRTFRy
YW5zYWN0aW9uQmFja2VuZDo6U3RhdGVGdW5jdGlvbiBTUUxUcmFuc2FjdGlvbkJhY2tlbmQ6OnN0
YXRlRnVuY3Rpb25Gb3IoU1FMVHJhbnNhY3Rpb25TdGF0ZSBzdGF0ZSkKQEAgLTQ1MywxNyArNDI2
LDE3IEBAIFNRTFRyYW5zYWN0aW9uQmFja2VuZDo6U3RhdGVGdW5jdGlvbiBTUUxUcmFuc2FjdGlv
bkJhY2tlbmQ6OnN0YXRlRnVuY3Rpb25Gb3IoU1FMCiAgICAgcmV0dXJuIHN0YXRlRnVuY3Rpb25z
W3N0YXRpY19jYXN0PGludD4oc3RhdGUpXTsKIH0KIAotdm9pZCBTUUxUcmFuc2FjdGlvbkJhY2tl
bmQ6OmVucXVldWVTdGF0ZW1lbnRCYWNrZW5kKHN0ZDo6dW5pcXVlX3B0cjxTUUxTdGF0ZW1lbnQ+
IHN0YXRlbWVudEJhY2tlbmQpCit2b2lkIFNRTFRyYW5zYWN0aW9uQmFja2VuZDo6ZW5xdWV1ZVN0
YXRlbWVudChzdGQ6OnVuaXF1ZV9wdHI8U1FMU3RhdGVtZW50PiBzdGF0ZW1lbnQpCiB7Ci0gICAg
TG9ja0hvbGRlciBsb2NrZXIobV9zdGF0ZW1lbnRNdXRleCk7Ci0gICAgbV9zdGF0ZW1lbnRRdWV1
ZS5hcHBlbmQoV1RGTW92ZShzdGF0ZW1lbnRCYWNrZW5kKSk7CisgICAgTG9ja0hvbGRlciBsb2Nr
ZXIobV9mcm9udGVuZC5tX3N0YXRlbWVudE11dGV4KTsKKyAgICBtX2Zyb250ZW5kLm1fc3RhdGVt
ZW50UXVldWUuYXBwZW5kKFdURk1vdmUoc3RhdGVtZW50KSk7CiB9CiAKIHZvaWQgU1FMVHJhbnNh
Y3Rpb25CYWNrZW5kOjpjb21wdXRlTmV4dFN0YXRlQW5kQ2xlYW51cElmTmVlZGVkKCkKIHsKICAg
ICAvLyBPbmx5IGhvbm9yIHRoZSByZXF1ZXN0ZWQgc3RhdGUgdHJhbnNpdGlvbiBpZiB3ZSdyZSBu
b3Qgc3VwcG9zZWQgdG8gYmUKICAgICAvLyBjbGVhbmluZyB1cCBhbmQgc2h1dHRpbmcgZG93bjoK
LSAgICBpZiAobV9kYXRhYmFzZS0+b3BlbmVkKCkpIHsKKyAgICBpZiAobV9mcm9udGVuZC5tX2Rh
dGFiYXNlLT5vcGVuZWQoKSkgewogICAgICAgICBzZXRTdGF0ZVRvUmVxdWVzdGVkU3RhdGUoKTsK
ICAgICAgICAgQVNTRVJUKG1fbmV4dFN0YXRlID09IFNRTFRyYW5zYWN0aW9uU3RhdGU6OkFjcXVp
cmVMb2NrCiAgICAgICAgICAgICB8fCBtX25leHRTdGF0ZSA9PSBTUUxUcmFuc2FjdGlvblN0YXRl
OjpPcGVuVHJhbnNhY3Rpb25BbmRQcmVmbGlnaHQKQEAgLTQ4NSw5ICs0NTgsOSBAQCB2b2lkIFNR
TFRyYW5zYWN0aW9uQmFja2VuZDo6Y29tcHV0ZU5leHRTdGF0ZUFuZENsZWFudXBJZk5lZWRlZCgp
CiAgICAgTE9HKFN0b3JhZ2VBUEksICJEYXRhYmFzZSB3YXMgc3RvcHBlZCBvciBpbnRlcnJ1cHRl
ZCAtIGNhbmNlbGxpbmcgd29yayBmb3IgdGhpcyB0cmFuc2FjdGlvbiIpOwogCiAgICAgLy8gVGhl
IGN1cnJlbnQgU1FMaXRlIHRyYW5zYWN0aW9uIHNob3VsZCBiZSBzdG9wcGVkLCBhcyB3ZWxsCi0g
ICAgaWYgKG1fc3FsaXRlVHJhbnNhY3Rpb24pIHsKLSAgICAgICAgbV9zcWxpdGVUcmFuc2FjdGlv
bi0+c3RvcCgpOwotICAgICAgICBtX3NxbGl0ZVRyYW5zYWN0aW9uID0gbnVsbHB0cjsKKyAgICBp
ZiAobV9mcm9udGVuZC5tX3NxbGl0ZVRyYW5zYWN0aW9uKSB7CisgICAgICAgIG1fZnJvbnRlbmQu
bV9zcWxpdGVUcmFuc2FjdGlvbi0+c3RvcCgpOworICAgICAgICBtX2Zyb250ZW5kLm1fc3FsaXRl
VHJhbnNhY3Rpb24gPSBudWxscHRyOwogICAgIH0KIAogICAgIC8vIFRlcm1pbmF0ZSB0aGUgZnJv
bnRlbmQgc3RhdGUgbWFjaGluZS4gVGhpcyBhbHNvIGdldHMgdGhlIGZyb250ZW5kIHRvCkBAIC01
MDUsMTcgKzQ3OCwxNyBAQCB2b2lkIFNRTFRyYW5zYWN0aW9uQmFja2VuZDo6cGVyZm9ybU5leHRT
dGVwKCkKICAgICBydW5TdGF0ZU1hY2hpbmUoKTsKIH0KIAotdm9pZCBTUUxUcmFuc2FjdGlvbkJh
Y2tlbmQ6OmV4ZWN1dGVTUUwoc3RkOjp1bmlxdWVfcHRyPFNRTFN0YXRlbWVudD4gc3RhdGVtZW50
QmFja2VuZCkKK3ZvaWQgU1FMVHJhbnNhY3Rpb25CYWNrZW5kOjpleGVjdXRlU1FMKHN0ZDo6dW5p
cXVlX3B0cjxTUUxTdGF0ZW1lbnQ+IHN0YXRlbWVudCkKIHsKLSAgICBpZiAobV9kYXRhYmFzZS0+
ZGVsZXRlZCgpKQotICAgICAgICBzdGF0ZW1lbnRCYWNrZW5kLT5zZXREYXRhYmFzZURlbGV0ZWRF
cnJvcigpOworICAgIGlmIChtX2Zyb250ZW5kLm1fZGF0YWJhc2UtPmRlbGV0ZWQoKSkKKyAgICAg
ICAgc3RhdGVtZW50LT5zZXREYXRhYmFzZURlbGV0ZWRFcnJvcigpOwogCi0gICAgZW5xdWV1ZVN0
YXRlbWVudEJhY2tlbmQoV1RGTW92ZShzdGF0ZW1lbnRCYWNrZW5kKSk7CisgICAgZW5xdWV1ZVN0
YXRlbWVudChXVEZNb3ZlKHN0YXRlbWVudCkpOwogfQogCiB2b2lkIFNRTFRyYW5zYWN0aW9uQmFj
a2VuZDo6bm90aWZ5RGF0YWJhc2VUaHJlYWRJc1NodXR0aW5nRG93bigpCiB7Ci0gICAgQVNTRVJU
KGN1cnJlbnRUaHJlYWQoKSA9PSBkYXRhYmFzZSgpLT5kYXRhYmFzZUNvbnRleHQoKS0+ZGF0YWJh
c2VUaHJlYWQoKS0+Z2V0VGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9
PSBtX2Zyb250ZW5kLm1fZGF0YWJhc2UtPmRhdGFiYXNlQ29udGV4dCgpLT5kYXRhYmFzZVRocmVh
ZCgpLT5nZXRUaHJlYWRJRCgpKTsKIAogICAgIC8vIElmIHRoZSB0cmFuc2FjdGlvbiBpcyBpbiBw
cm9ncmVzcywgd2Ugc2hvdWxkIHJvbGwgaXQgYmFjayBoZXJlLCBzaW5jZSB0aGlzCiAgICAgLy8g
aXMgb3VyIGxhc3Qgb3Bwb3J0dW5pdHkgdG8gZG8gc29tZXRoaW5nIHJlbGF0ZWQgdG8gdGhpcyB0
cmFuc2FjdGlvbiBvbiB0aGUKQEAgLTUyNyw1MyArNTAwLDUyIEBAIHZvaWQgU1FMVHJhbnNhY3Rp
b25CYWNrZW5kOjpub3RpZnlEYXRhYmFzZVRocmVhZElzU2h1dHRpbmdEb3duKCkKIAogdm9pZCBT
UUxUcmFuc2FjdGlvbkJhY2tlbmQ6OmFjcXVpcmVMb2NrKCkKIHsKLSAgICBtX2RhdGFiYXNlLT50
cmFuc2FjdGlvbkNvb3JkaW5hdG9yKCktPmFjcXVpcmVMb2NrKG1fZnJvbnRlbmQpOworICAgIG1f
ZnJvbnRlbmQubV9kYXRhYmFzZS0+dHJhbnNhY3Rpb25Db29yZGluYXRvcigpLT5hY3F1aXJlTG9j
ayhtX2Zyb250ZW5kKTsKIH0KIAogdm9pZCBTUUxUcmFuc2FjdGlvbkJhY2tlbmQ6OmxvY2tBY3F1
aXJlZCgpCiB7Ci0gICAgbV9sb2NrQWNxdWlyZWQgPSB0cnVlOworICAgIG1fZnJvbnRlbmQubV9s
b2NrQWNxdWlyZWQgPSB0cnVlOwogCiAgICAgbV9yZXF1ZXN0ZWRTdGF0ZSA9IFNRTFRyYW5zYWN0
aW9uU3RhdGU6Ok9wZW5UcmFuc2FjdGlvbkFuZFByZWZsaWdodDsKICAgICBBU1NFUlQobV9yZXF1
ZXN0ZWRTdGF0ZSAhPSBTUUxUcmFuc2FjdGlvblN0YXRlOjpFbmQpOwotICAgIG1fZGF0YWJhc2Ut
PnNjaGVkdWxlVHJhbnNhY3Rpb25TdGVwKG1fZnJvbnRlbmQpOworICAgIG1fZnJvbnRlbmQubV9k
YXRhYmFzZS0+c2NoZWR1bGVUcmFuc2FjdGlvblN0ZXAobV9mcm9udGVuZCk7CiB9CiAKIHZvaWQg
U1FMVHJhbnNhY3Rpb25CYWNrZW5kOjpvcGVuVHJhbnNhY3Rpb25BbmRQcmVmbGlnaHQoKQogewot
ICAgIEFTU0VSVCghbV9kYXRhYmFzZS0+c3FsaXRlRGF0YWJhc2UoKS50cmFuc2FjdGlvbkluUHJv
Z3Jlc3MoKSk7Ci0gICAgQVNTRVJUKG1fbG9ja0FjcXVpcmVkKTsKKyAgICBBU1NFUlQoIW1fZnJv
bnRlbmQubV9kYXRhYmFzZS0+c3FsaXRlRGF0YWJhc2UoKS50cmFuc2FjdGlvbkluUHJvZ3Jlc3Mo
KSk7CisgICAgQVNTRVJUKG1fZnJvbnRlbmQubV9sb2NrQWNxdWlyZWQpOwogCiAgICAgTE9HKFN0
b3JhZ2VBUEksICJPcGVuaW5nIGFuZCBwcmVmbGlnaHRpbmcgdHJhbnNhY3Rpb24gJXAiLCB0aGlz
KTsKIAogICAgIC8vIElmIHRoZSBkYXRhYmFzZSB3YXMgZGVsZXRlZCwganVtcCB0byB0aGUgZXJy
b3IgY2FsbGJhY2sKLSAgICBpZiAobV9kYXRhYmFzZS0+ZGVsZXRlZCgpKSB7Ci0gICAgICAgIG1f
dHJhbnNhY3Rpb25FcnJvciA9IFNRTEVycm9yOjpjcmVhdGUoU1FMRXJyb3I6OlVOS05PV05fRVJS
LCAidW5hYmxlIHRvIG9wZW4gYSB0cmFuc2FjdGlvbiwgYmVjYXVzZSB0aGUgdXNlciBkZWxldGVk
IHRoZSBkYXRhYmFzZSIpOworICAgIGlmIChtX2Zyb250ZW5kLm1fZGF0YWJhc2UtPmRlbGV0ZWQo
KSkgeworICAgICAgICBtX2Zyb250ZW5kLm1fdHJhbnNhY3Rpb25FcnJvciA9IFNRTEVycm9yOjpj
cmVhdGUoU1FMRXJyb3I6OlVOS05PV05fRVJSLCAidW5hYmxlIHRvIG9wZW4gYSB0cmFuc2FjdGlv
biwgYmVjYXVzZSB0aGUgdXNlciBkZWxldGVkIHRoZSBkYXRhYmFzZSIpOwogCiAgICAgICAgIGhh
bmRsZVRyYW5zYWN0aW9uRXJyb3IoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIC8v
IFNldCB0aGUgbWF4aW11bSB1c2FnZSBmb3IgdGhpcyB0cmFuc2FjdGlvbiBpZiB0aGlzIHRyYW5z
YWN0aW9ucyBpcyBub3QgcmVhZC1vbmx5Ci0gICAgaWYgKCFtX3JlYWRPbmx5KSB7CisgICAgaWYg
KCFtX2Zyb250ZW5kLm1fcmVhZE9ubHkpIHsKICAgICAgICAgYWNxdWlyZU9yaWdpbkxvY2soKTsK
LSAgICAgICAgbV9kYXRhYmFzZS0+c3FsaXRlRGF0YWJhc2UoKS5zZXRNYXhpbXVtU2l6ZShtX2Rh
dGFiYXNlLT5tYXhpbXVtU2l6ZSgpKTsKKyAgICAgICAgbV9mcm9udGVuZC5tX2RhdGFiYXNlLT5z
cWxpdGVEYXRhYmFzZSgpLnNldE1heGltdW1TaXplKG1fZnJvbnRlbmQubV9kYXRhYmFzZS0+bWF4
aW11bVNpemUoKSk7CiAgICAgfQogCi0gICAgQVNTRVJUKCFtX3NxbGl0ZVRyYW5zYWN0aW9uKTsK
LSAgICBtX3NxbGl0ZVRyYW5zYWN0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxTUUxpdGVUcmFuc2Fj
dGlvbj4obV9kYXRhYmFzZS0+c3FsaXRlRGF0YWJhc2UoKSwgbV9yZWFkT25seSk7CisgICAgQVNT
RVJUKCFtX2Zyb250ZW5kLm1fc3FsaXRlVHJhbnNhY3Rpb24pOworICAgIG1fZnJvbnRlbmQubV9z
cWxpdGVUcmFuc2FjdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8U1FMaXRlVHJhbnNhY3Rpb24+KG1f
ZnJvbnRlbmQubV9kYXRhYmFzZS0+c3FsaXRlRGF0YWJhc2UoKSwgbV9mcm9udGVuZC5tX3JlYWRP
bmx5KTsKIAotICAgIG1fZGF0YWJhc2UtPnJlc2V0RGVsZXRlcygpOwotICAgIG1fZGF0YWJhc2Ut
PmRpc2FibGVBdXRob3JpemVyKCk7Ci0gICAgbV9zcWxpdGVUcmFuc2FjdGlvbi0+YmVnaW4oKTsK
LSAgICBtX2RhdGFiYXNlLT5lbmFibGVBdXRob3JpemVyKCk7CisgICAgbV9mcm9udGVuZC5tX2Rh
dGFiYXNlLT5yZXNldERlbGV0ZXMoKTsKKyAgICBtX2Zyb250ZW5kLm1fZGF0YWJhc2UtPmRpc2Fi
bGVBdXRob3JpemVyKCk7CisgICAgbV9mcm9udGVuZC5tX3NxbGl0ZVRyYW5zYWN0aW9uLT5iZWdp
bigpOworICAgIG1fZnJvbnRlbmQubV9kYXRhYmFzZS0+ZW5hYmxlQXV0aG9yaXplcigpOwogCiAg
ICAgLy8gU3BlYyA0LjMuMi4xKzI6IE9wZW4gYSB0cmFuc2FjdGlvbiB0byB0aGUgZGF0YWJhc2Us
IGp1bXBpbmcgdG8gdGhlIGVycm9yIGNhbGxiYWNrIGlmIHRoYXQgZmFpbHMKLSAgICBpZiAoIW1f
c3FsaXRlVHJhbnNhY3Rpb24tPmluUHJvZ3Jlc3MoKSkgewotICAgICAgICBBU1NFUlQoIW1fZGF0
YWJhc2UtPnNxbGl0ZURhdGFiYXNlKCkudHJhbnNhY3Rpb25JblByb2dyZXNzKCkpOwotICAgICAg
ICBtX3RyYW5zYWN0aW9uRXJyb3IgPSBTUUxFcnJvcjo6Y3JlYXRlKFNRTEVycm9yOjpEQVRBQkFT
RV9FUlIsICJ1bmFibGUgdG8gYmVnaW4gdHJhbnNhY3Rpb24iLAotICAgICAgICAgICAgbV9kYXRh
YmFzZS0+c3FsaXRlRGF0YWJhc2UoKS5sYXN0RXJyb3IoKSwgbV9kYXRhYmFzZS0+c3FsaXRlRGF0
YWJhc2UoKS5sYXN0RXJyb3JNc2coKSk7Ci0gICAgICAgIG1fc3FsaXRlVHJhbnNhY3Rpb24gPSBu
dWxscHRyOworICAgIGlmICghbV9mcm9udGVuZC5tX3NxbGl0ZVRyYW5zYWN0aW9uLT5pblByb2dy
ZXNzKCkpIHsKKyAgICAgICAgQVNTRVJUKCFtX2Zyb250ZW5kLm1fZGF0YWJhc2UtPnNxbGl0ZURh
dGFiYXNlKCkudHJhbnNhY3Rpb25JblByb2dyZXNzKCkpOworICAgICAgICBtX2Zyb250ZW5kLm1f
dHJhbnNhY3Rpb25FcnJvciA9IFNRTEVycm9yOjpjcmVhdGUoU1FMRXJyb3I6OkRBVEFCQVNFX0VS
UiwgInVuYWJsZSB0byBiZWdpbiB0cmFuc2FjdGlvbiIsIG1fZnJvbnRlbmQubV9kYXRhYmFzZS0+
c3FsaXRlRGF0YWJhc2UoKS5sYXN0RXJyb3IoKSwgbV9mcm9udGVuZC5tX2RhdGFiYXNlLT5zcWxp
dGVEYXRhYmFzZSgpLmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgbV9mcm9udGVuZC5tX3NxbGl0
ZVRyYW5zYWN0aW9uID0gbnVsbHB0cjsKIAogICAgICAgICBoYW5kbGVUcmFuc2FjdGlvbkVycm9y
KCk7CiAgICAgICAgIHJldHVybjsKQEAgLTU4MywzNCArNTU1LDMzIEBAIHZvaWQgU1FMVHJhbnNh
Y3Rpb25CYWNrZW5kOjpvcGVuVHJhbnNhY3Rpb25BbmRQcmVmbGlnaHQoKQogICAgIC8vIEluIG11
bHRpLXByb2Nlc3MgYnJvd3NlcnMsIHdlIHRha2UgdGhpcyBvcHBvcnRpbnV0aXkgdG8gdXBkYXRl
IHRoZSBjYWNoZWQgdmFsdWUgZm9yCiAgICAgLy8gdGhlIGFjdHVhbCB2ZXJzaW9uLiBJbiBzaW5n
bGUtcHJvY2VzcyBicm93c2VycywgdGhpcyBpcyBqdXN0IGEgbWFwIGxvb2t1cC4KICAgICBTdHJp
bmcgYWN0dWFsVmVyc2lvbjsKLSAgICBpZiAoIW1fZGF0YWJhc2UtPmdldEFjdHVhbFZlcnNpb25G
b3JUcmFuc2FjdGlvbihhY3R1YWxWZXJzaW9uKSkgewotICAgICAgICBtX3RyYW5zYWN0aW9uRXJy
b3IgPSBTUUxFcnJvcjo6Y3JlYXRlKFNRTEVycm9yOjpEQVRBQkFTRV9FUlIsICJ1bmFibGUgdG8g
cmVhZCB2ZXJzaW9uIiwKLSAgICAgICAgICAgIG1fZGF0YWJhc2UtPnNxbGl0ZURhdGFiYXNlKCku
bGFzdEVycm9yKCksIG1fZGF0YWJhc2UtPnNxbGl0ZURhdGFiYXNlKCkubGFzdEVycm9yTXNnKCkp
OwotICAgICAgICBtX2RhdGFiYXNlLT5kaXNhYmxlQXV0aG9yaXplcigpOwotICAgICAgICBtX3Nx
bGl0ZVRyYW5zYWN0aW9uID0gbnVsbHB0cjsKLSAgICAgICAgbV9kYXRhYmFzZS0+ZW5hYmxlQXV0
aG9yaXplcigpOworICAgIGlmICghbV9mcm9udGVuZC5tX2RhdGFiYXNlLT5nZXRBY3R1YWxWZXJz
aW9uRm9yVHJhbnNhY3Rpb24oYWN0dWFsVmVyc2lvbikpIHsKKyAgICAgICAgbV9mcm9udGVuZC5t
X3RyYW5zYWN0aW9uRXJyb3IgPSBTUUxFcnJvcjo6Y3JlYXRlKFNRTEVycm9yOjpEQVRBQkFTRV9F
UlIsICJ1bmFibGUgdG8gcmVhZCB2ZXJzaW9uIiwgbV9mcm9udGVuZC5tX2RhdGFiYXNlLT5zcWxp
dGVEYXRhYmFzZSgpLmxhc3RFcnJvcigpLCBtX2Zyb250ZW5kLm1fZGF0YWJhc2UtPnNxbGl0ZURh
dGFiYXNlKCkubGFzdEVycm9yTXNnKCkpOworICAgICAgICBtX2Zyb250ZW5kLm1fZGF0YWJhc2Ut
PmRpc2FibGVBdXRob3JpemVyKCk7CisgICAgICAgIG1fZnJvbnRlbmQubV9zcWxpdGVUcmFuc2Fj
dGlvbiA9IG51bGxwdHI7CisgICAgICAgIG1fZnJvbnRlbmQubV9kYXRhYmFzZS0+ZW5hYmxlQXV0
aG9yaXplcigpOwogCiAgICAgICAgIGhhbmRsZVRyYW5zYWN0aW9uRXJyb3IoKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIG1faGFzVmVyc2lvbk1pc21hdGNoID0gIW1fZGF0YWJhc2Ut
PmV4cGVjdGVkVmVyc2lvbigpLmlzRW1wdHkoKSAmJiAobV9kYXRhYmFzZS0+ZXhwZWN0ZWRWZXJz
aW9uKCkgIT0gYWN0dWFsVmVyc2lvbik7CisgICAgbV9mcm9udGVuZC5tX2hhc1ZlcnNpb25NaXNt
YXRjaCA9ICFtX2Zyb250ZW5kLm1fZGF0YWJhc2UtPmV4cGVjdGVkVmVyc2lvbigpLmlzRW1wdHko
KSAmJiAobV9mcm9udGVuZC5tX2RhdGFiYXNlLT5leHBlY3RlZFZlcnNpb24oKSAhPSBhY3R1YWxW
ZXJzaW9uKTsKIAogICAgIC8vIFNwZWMgNC4zLjIuMzogUGVyZm9ybSBwcmVmbGlnaHQgc3RlcHMs
IGp1bXBpbmcgdG8gdGhlIGVycm9yIGNhbGxiYWNrIGlmIHRoZXkgZmFpbAotICAgIGlmIChtX3dy
YXBwZXIgJiYgIW1fd3JhcHBlci0+cGVyZm9ybVByZWZsaWdodCh0aGlzKSkgewotICAgICAgICBt
X2RhdGFiYXNlLT5kaXNhYmxlQXV0aG9yaXplcigpOwotICAgICAgICBtX3NxbGl0ZVRyYW5zYWN0
aW9uID0gbnVsbHB0cjsKLSAgICAgICAgbV9kYXRhYmFzZS0+ZW5hYmxlQXV0aG9yaXplcigpOwot
ICAgICAgICBtX3RyYW5zYWN0aW9uRXJyb3IgPSBtX3dyYXBwZXItPnNxbEVycm9yKCk7Ci0gICAg
ICAgIGlmICghbV90cmFuc2FjdGlvbkVycm9yKQotICAgICAgICAgICAgbV90cmFuc2FjdGlvbkVy
cm9yID0gU1FMRXJyb3I6OmNyZWF0ZShTUUxFcnJvcjo6VU5LTk9XTl9FUlIsICJ1bmtub3duIGVy
cm9yIG9jY3VycmVkIGR1cmluZyB0cmFuc2FjdGlvbiBwcmVmbGlnaHQiKTsKKyAgICBpZiAobV9m
cm9udGVuZC5tX3dyYXBwZXIgJiYgIW1fZnJvbnRlbmQubV93cmFwcGVyLT5wZXJmb3JtUHJlZmxp
Z2h0KG1fZnJvbnRlbmQpKSB7CisgICAgICAgIG1fZnJvbnRlbmQubV9kYXRhYmFzZS0+ZGlzYWJs
ZUF1dGhvcml6ZXIoKTsKKyAgICAgICAgbV9mcm9udGVuZC5tX3NxbGl0ZVRyYW5zYWN0aW9uID0g
bnVsbHB0cjsKKyAgICAgICAgbV9mcm9udGVuZC5tX2RhdGFiYXNlLT5lbmFibGVBdXRob3JpemVy
KCk7CisgICAgICAgIG1fZnJvbnRlbmQubV90cmFuc2FjdGlvbkVycm9yID0gbV9mcm9udGVuZC5t
X3dyYXBwZXItPnNxbEVycm9yKCk7CisgICAgICAgIGlmICghbV9mcm9udGVuZC5tX3RyYW5zYWN0
aW9uRXJyb3IpCisgICAgICAgICAgICBtX2Zyb250ZW5kLm1fdHJhbnNhY3Rpb25FcnJvciA9IFNR
TEVycm9yOjpjcmVhdGUoU1FMRXJyb3I6OlVOS05PV05fRVJSLCAidW5rbm93biBlcnJvciBvY2N1
cnJlZCBkdXJpbmcgdHJhbnNhY3Rpb24gcHJlZmxpZ2h0Iik7CiAKICAgICAgICAgaGFuZGxlVHJh
bnNhY3Rpb25FcnJvcigpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgLy8gU3BlYyA0
LjMuMi40OiBJbnZva2UgdGhlIHRyYW5zYWN0aW9uIGNhbGxiYWNrIHdpdGggdGhlIG5ldyBTUUxU
cmFuc2FjdGlvbiBvYmplY3QKLSAgICBpZiAobV9oYXNDYWxsYmFjaykgeworICAgIGlmIChtX2Zy
b250ZW5kLm1fY2FsbGJhY2tXcmFwcGVyLmhhc0NhbGxiYWNrKCkpIHsKICAgICAgICAgbV9mcm9u
dGVuZC5yZXF1ZXN0VHJhbnNpdFRvU3RhdGUoU1FMVHJhbnNhY3Rpb25TdGF0ZTo6RGVsaXZlclRy
YW5zYWN0aW9uQ2FsbGJhY2spOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNjIxLDEzICs1
OTIsMTMgQEAgdm9pZCBTUUxUcmFuc2FjdGlvbkJhY2tlbmQ6Om9wZW5UcmFuc2FjdGlvbkFuZFBy
ZWZsaWdodCgpCiAKIHZvaWQgU1FMVHJhbnNhY3Rpb25CYWNrZW5kOjpydW5TdGF0ZW1lbnRzKCkK
IHsKLSAgICBBU1NFUlQobV9sb2NrQWNxdWlyZWQpOworICAgIEFTU0VSVChtX2Zyb250ZW5kLm1f
bG9ja0FjcXVpcmVkKTsKIAogICAgIC8vIElmIHRoZXJlIGlzIGEgc2VyaWVzIG9mIHN0YXRlbWVu
dHMgcXVldWVkIHVwIHRoYXQgYXJlIGFsbCBzdWNjZXNzZnVsIGFuZCBoYXZlIG5vIGFzc29jaWF0
ZWQKICAgICAvLyBTUUxTdGF0ZW1lbnRDYWxsYmFjayBvYmplY3RzLCB0aGVuIHdlIGNhbiBidXJu
IHRocm91Z2ggdGhlIHF1ZXVlCiAgICAgZG8gewotICAgICAgICBpZiAobV9zaG91bGRSZXRyeUN1
cnJlbnRTdGF0ZW1lbnQgJiYgIW1fc3FsaXRlVHJhbnNhY3Rpb24tPndhc1JvbGxlZEJhY2tCeVNx
bGl0ZSgpKSB7Ci0gICAgICAgICAgICBtX3Nob3VsZFJldHJ5Q3VycmVudFN0YXRlbWVudCA9IGZh
bHNlOworICAgICAgICBpZiAobV9mcm9udGVuZC5tX3Nob3VsZFJldHJ5Q3VycmVudFN0YXRlbWVu
dCAmJiAhbV9mcm9udGVuZC5tX3NxbGl0ZVRyYW5zYWN0aW9uLT53YXNSb2xsZWRCYWNrQnlTcWxp
dGUoKSkgeworICAgICAgICAgICAgbV9mcm9udGVuZC5tX3Nob3VsZFJldHJ5Q3VycmVudFN0YXRl
bWVudCA9IGZhbHNlOwogICAgICAgICAgICAgLy8gRklYTUUgLSBBbm90aGVyIHBsYWNlIHRoYXQg
bmVlZHMgZml4aW5nIHVwIGFmdGVyIDxyZGFyOi8vcHJvYmxlbS81NjI4NDY4PiBpcyBhZGRyZXNz
ZWQuCiAgICAgICAgICAgICAvLyBTZWUgOjpvcGVuVHJhbnNhY3Rpb25BbmRQcmVmbGlnaHQoKSBm
b3IgZGlzY3Vzc2lvbgogCkBAIC02MzUsMTEgKzYwNiwxMSBAQCB2b2lkIFNRTFRyYW5zYWN0aW9u
QmFja2VuZDo6cnVuU3RhdGVtZW50cygpCiAgICAgICAgICAgICAvLyBtX3Nob3VsZFJldHJ5Q3Vy
cmVudFN0YXRlbWVudCBpcyBzZXQgdG8gdHJ1ZSBvbmx5IHdoZW4gYSBzdGF0ZW1lbnQgZXhjZWVk
cwogICAgICAgICAgICAgLy8gdGhlIHF1b3RhLCB3aGljaCBjYW4gaGFwcGVuIG9ubHkgaW4gYSBy
ZWFkLXdyaXRlIHRyYW5zYWN0aW9uLiBUaGVyZWZvcmUsIHRoZXJlCiAgICAgICAgICAgICAvLyBp
cyBubyBuZWVkIHRvIGNoZWNrIGhlcmUgaWYgdGhlIHRyYW5zYWN0aW9uIGlzIHJlYWQtd3JpdGUu
Ci0gICAgICAgICAgICBtX2RhdGFiYXNlLT5zcWxpdGVEYXRhYmFzZSgpLnNldE1heGltdW1TaXpl
KG1fZGF0YWJhc2UtPm1heGltdW1TaXplKCkpOworICAgICAgICAgICAgbV9mcm9udGVuZC5tX2Rh
dGFiYXNlLT5zcWxpdGVEYXRhYmFzZSgpLnNldE1heGltdW1TaXplKG1fZnJvbnRlbmQubV9kYXRh
YmFzZS0+bWF4aW11bVNpemUoKSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAvLyBJ
ZiB0aGUgY3VycmVudCBzdGF0ZW1lbnQgaGFzIGFscmVhZHkgYmVlbiBydW4sIGZhaWxlZCBkdWUg
dG8gcXVvdGEgY29uc3RyYWludHMsIGFuZCB3ZSdyZSBub3QgcmV0cnlpbmcgaXQsCiAgICAgICAg
ICAgICAvLyB0aGF0IG1lYW5zIGl0IGVuZGVkIGluIGFuIGVycm9yLiBIYW5kbGUgaXQgbm93Ci0g
ICAgICAgICAgICBpZiAobV9jdXJyZW50U3RhdGVtZW50QmFja2VuZCAmJiBtX2N1cnJlbnRTdGF0
ZW1lbnRCYWNrZW5kLT5sYXN0RXhlY3V0aW9uRmFpbGVkRHVlVG9RdW90YSgpKSB7CisgICAgICAg
ICAgICBpZiAobV9mcm9udGVuZC5tX2N1cnJlbnRTdGF0ZW1lbnQgJiYgbV9mcm9udGVuZC5tX2N1
cnJlbnRTdGF0ZW1lbnQtPmxhc3RFeGVjdXRpb25GYWlsZWREdWVUb1F1b3RhKCkpIHsKICAgICAg
ICAgICAgICAgICBoYW5kbGVDdXJyZW50U3RhdGVtZW50RXJyb3IoKTsKICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIH0KQEAgLTY1MiwzOCArNjIzLDM4IEBAIHZvaWQgU1FMVHJh
bnNhY3Rpb25CYWNrZW5kOjpydW5TdGF0ZW1lbnRzKCkKICAgICAvLyBJZiBydW5DdXJyZW50U3Rh
dGVtZW50KCkgcmV0dXJuZWQgZmFsc2UsIHRoYXQgbWVhbnMgZWl0aGVyIHRoZXJlIHdhcyBubyBj
dXJyZW50IHN0YXRlbWVudCB0byBydW4sCiAgICAgLy8gb3IgdGhlIGN1cnJlbnQgc3RhdGVtZW50
IHJlcXVpcmVzIGEgY2FsbGJhY2sgdG8gY29tcGxldGUuIEluIHRoZSBsYXRlciBjYXNlLCBpdCBh
bHNvIHNjaGVkdWxlZAogICAgIC8vIHRoZSBjYWxsYmFjayBvciBwZXJmb3JtZWQgYW55IG90aGVy
IGFkZGl0aW9uYWwgd29yayBzbyB3ZSBjYW4gcmV0dXJuLgotICAgIGlmICghbV9jdXJyZW50U3Rh
dGVtZW50QmFja2VuZCkKKyAgICBpZiAoIW1fZnJvbnRlbmQubV9jdXJyZW50U3RhdGVtZW50KQog
ICAgICAgICBwb3N0ZmxpZ2h0QW5kQ29tbWl0KCk7CiB9CiAKIHZvaWQgU1FMVHJhbnNhY3Rpb25C
YWNrZW5kOjpnZXROZXh0U3RhdGVtZW50KCkKIHsKLSAgICBtX2N1cnJlbnRTdGF0ZW1lbnRCYWNr
ZW5kID0gbnVsbHB0cjsKKyAgICBtX2Zyb250ZW5kLm1fY3VycmVudFN0YXRlbWVudCA9IG51bGxw
dHI7CiAKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3N0YXRlbWVudE11dGV4KTsKLSAgICBpZiAo
IW1fc3RhdGVtZW50UXVldWUuaXNFbXB0eSgpKQotICAgICAgICBtX2N1cnJlbnRTdGF0ZW1lbnRC
YWNrZW5kID0gbV9zdGF0ZW1lbnRRdWV1ZS50YWtlRmlyc3QoKTsKKyAgICBMb2NrSG9sZGVyIGxv
Y2tlcihtX2Zyb250ZW5kLm1fc3RhdGVtZW50TXV0ZXgpOworICAgIGlmICghbV9mcm9udGVuZC5t
X3N0YXRlbWVudFF1ZXVlLmlzRW1wdHkoKSkKKyAgICAgICAgbV9mcm9udGVuZC5tX2N1cnJlbnRT
dGF0ZW1lbnQgPSBtX2Zyb250ZW5kLm1fc3RhdGVtZW50UXVldWUudGFrZUZpcnN0KCk7CiB9CiAK
IGJvb2wgU1FMVHJhbnNhY3Rpb25CYWNrZW5kOjpydW5DdXJyZW50U3RhdGVtZW50KCkKIHsKLSAg
ICBpZiAoIW1fY3VycmVudFN0YXRlbWVudEJhY2tlbmQpIHsKKyAgICBpZiAoIW1fZnJvbnRlbmQu
bV9jdXJyZW50U3RhdGVtZW50KSB7CiAgICAgICAgIC8vIE5vIG1vcmUgc3RhdGVtZW50cyB0byBy
dW4uIFNvIG1vdmUgb24gdG8gdGhlIG5leHQgc3RhdGUuCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CiAKLSAgICBtX2RhdGFiYXNlLT5yZXNldEF1dGhvcml6ZXIoKTsKKyAgICBtX2Zyb250
ZW5kLm1fZGF0YWJhc2UtPnJlc2V0QXV0aG9yaXplcigpOwogCi0gICAgaWYgKG1faGFzVmVyc2lv
bk1pc21hdGNoKQotICAgICAgICBtX2N1cnJlbnRTdGF0ZW1lbnRCYWNrZW5kLT5zZXRWZXJzaW9u
TWlzbWF0Y2hlZEVycm9yKCk7CisgICAgaWYgKG1fZnJvbnRlbmQubV9oYXNWZXJzaW9uTWlzbWF0
Y2gpCisgICAgICAgIG1fZnJvbnRlbmQubV9jdXJyZW50U3RhdGVtZW50LT5zZXRWZXJzaW9uTWlz
bWF0Y2hlZEVycm9yKCk7CiAKLSAgICBpZiAobV9jdXJyZW50U3RhdGVtZW50QmFja2VuZC0+ZXhl
Y3V0ZSgqbV9kYXRhYmFzZSkpIHsKLSAgICAgICAgaWYgKG1fZGF0YWJhc2UtPmxhc3RBY3Rpb25D
aGFuZ2VkRGF0YWJhc2UoKSkgeworICAgIGlmIChtX2Zyb250ZW5kLm1fY3VycmVudFN0YXRlbWVu
dC0+ZXhlY3V0ZShtX2Zyb250ZW5kLm1fZGF0YWJhc2UpKSB7CisgICAgICAgIGlmIChtX2Zyb250
ZW5kLm1fZGF0YWJhc2UtPmxhc3RBY3Rpb25DaGFuZ2VkRGF0YWJhc2UoKSkgewogICAgICAgICAg
ICAgLy8gRmxhZyB0aGlzIHRyYW5zYWN0aW9uIGFzIGhhdmluZyBjaGFuZ2VkIHRoZSBkYXRhYmFz
ZSBmb3IgbGF0ZXIgZGVsZWdhdGUgbm90aWZpY2F0aW9uCi0gICAgICAgICAgICBtX21vZGlmaWVk
RGF0YWJhc2UgPSB0cnVlOworICAgICAgICAgICAgbV9mcm9udGVuZC5tX21vZGlmaWVkRGF0YWJh
c2UgPSB0cnVlOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKG1fY3VycmVudFN0YXRlbWVudEJh
Y2tlbmQtPmhhc1N0YXRlbWVudENhbGxiYWNrKCkpIHsKKyAgICAgICAgaWYgKG1fZnJvbnRlbmQu
bV9jdXJyZW50U3RhdGVtZW50LT5oYXNTdGF0ZW1lbnRDYWxsYmFjaygpKSB7CiAgICAgICAgICAg
ICBtX2Zyb250ZW5kLnJlcXVlc3RUcmFuc2l0VG9TdGF0ZShTUUxUcmFuc2FjdGlvblN0YXRlOjpE
ZWxpdmVyU3RhdGVtZW50Q2FsbGJhY2spOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICB9CkBAIC02OTMsNyArNjY0LDcgQEAgYm9vbCBTUUxUcmFuc2FjdGlvbkJhY2tlbmQ6OnJ1
bkN1cnJlbnRTdGF0ZW1lbnQoKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBp
ZiAobV9jdXJyZW50U3RhdGVtZW50QmFja2VuZC0+bGFzdEV4ZWN1dGlvbkZhaWxlZER1ZVRvUXVv
dGEoKSkgeworICAgIGlmIChtX2Zyb250ZW5kLm1fY3VycmVudFN0YXRlbWVudC0+bGFzdEV4ZWN1
dGlvbkZhaWxlZER1ZVRvUXVvdGEoKSkgewogICAgICAgICBtX2Zyb250ZW5kLnJlcXVlc3RUcmFu
c2l0VG9TdGF0ZShTUUxUcmFuc2FjdGlvblN0YXRlOjpEZWxpdmVyUXVvdGFJbmNyZWFzZUNhbGxi
YWNrKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KQEAgLTcwNiwyMiArNjc3LDIyIEBA
IHZvaWQgU1FMVHJhbnNhY3Rpb25CYWNrZW5kOjpoYW5kbGVDdXJyZW50U3RhdGVtZW50RXJyb3Io
KQogewogICAgIC8vIFNwZWMgNC4zLjIuNi42OiBlcnJvciAtIENhbGwgdGhlIHN0YXRlbWVudCdz
IGVycm9yIGNhbGxiYWNrLCBidXQgaWYgdGhlcmUgd2FzIG5vIGVycm9yIGNhbGxiYWNrLAogICAg
IC8vIG9yIHRoZSB0cmFuc2FjdGlvbiB3YXMgcm9sbGVkIGJhY2ssIGp1bXAgdG8gdGhlIHRyYW5z
YWN0aW9uIGVycm9yIGNhbGxiYWNrCi0gICAgaWYgKG1fY3VycmVudFN0YXRlbWVudEJhY2tlbmQt
Pmhhc1N0YXRlbWVudEVycm9yQ2FsbGJhY2soKSAmJiAhbV9zcWxpdGVUcmFuc2FjdGlvbi0+d2Fz
Um9sbGVkQmFja0J5U3FsaXRlKCkpIHsKKyAgICBpZiAobV9mcm9udGVuZC5tX2N1cnJlbnRTdGF0
ZW1lbnQtPmhhc1N0YXRlbWVudEVycm9yQ2FsbGJhY2soKSAmJiAhbV9mcm9udGVuZC5tX3NxbGl0
ZVRyYW5zYWN0aW9uLT53YXNSb2xsZWRCYWNrQnlTcWxpdGUoKSkgewogICAgICAgICBtX2Zyb250
ZW5kLnJlcXVlc3RUcmFuc2l0VG9TdGF0ZShTUUxUcmFuc2FjdGlvblN0YXRlOjpEZWxpdmVyU3Rh
dGVtZW50Q2FsbGJhY2spOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV90cmFuc2Fj
dGlvbkVycm9yID0gbV9jdXJyZW50U3RhdGVtZW50QmFja2VuZC0+c3FsRXJyb3IoKTsKLSAgICBp
ZiAoIW1fdHJhbnNhY3Rpb25FcnJvcikKLSAgICAgICAgbV90cmFuc2FjdGlvbkVycm9yID0gU1FM
RXJyb3I6OmNyZWF0ZShTUUxFcnJvcjo6REFUQUJBU0VfRVJSLCAidGhlIHN0YXRlbWVudCBmYWls
ZWQgdG8gZXhlY3V0ZSIpOworICAgIG1fZnJvbnRlbmQubV90cmFuc2FjdGlvbkVycm9yID0gbV9m
cm9udGVuZC5tX2N1cnJlbnRTdGF0ZW1lbnQtPnNxbEVycm9yKCk7CisgICAgaWYgKCFtX2Zyb250
ZW5kLm1fdHJhbnNhY3Rpb25FcnJvcikKKyAgICAgICAgbV9mcm9udGVuZC5tX3RyYW5zYWN0aW9u
RXJyb3IgPSBTUUxFcnJvcjo6Y3JlYXRlKFNRTEVycm9yOjpEQVRBQkFTRV9FUlIsICJ0aGUgc3Rh
dGVtZW50IGZhaWxlZCB0byBleGVjdXRlIik7CiAKICAgICBoYW5kbGVUcmFuc2FjdGlvbkVycm9y
KCk7CiB9CiAKIHZvaWQgU1FMVHJhbnNhY3Rpb25CYWNrZW5kOjpoYW5kbGVUcmFuc2FjdGlvbkVy
cm9yKCkKIHsKLSAgICBBU1NFUlQobV90cmFuc2FjdGlvbkVycm9yKTsKLSAgICBpZiAobV9oYXNF
cnJvckNhbGxiYWNrKSB7CisgICAgQVNTRVJUKG1fZnJvbnRlbmQubV90cmFuc2FjdGlvbkVycm9y
KTsKKyAgICBpZiAobV9mcm9udGVuZC5tX2Vycm9yQ2FsbGJhY2tXcmFwcGVyLmhhc0NhbGxiYWNr
KCkpIHsKICAgICAgICAgbV9mcm9udGVuZC5yZXF1ZXN0VHJhbnNpdFRvU3RhdGUoU1FMVHJhbnNh
Y3Rpb25TdGF0ZTo6RGVsaXZlclRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjayk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CkBAIC03MzMsNDUgKzcwNCw0NCBAQCB2b2lkIFNRTFRyYW5zYWN0aW9uQmFj
a2VuZDo6aGFuZGxlVHJhbnNhY3Rpb25FcnJvcigpCiAKIHZvaWQgU1FMVHJhbnNhY3Rpb25CYWNr
ZW5kOjpwb3N0ZmxpZ2h0QW5kQ29tbWl0KCkKIHsKLSAgICBBU1NFUlQobV9sb2NrQWNxdWlyZWQp
OworICAgIEFTU0VSVChtX2Zyb250ZW5kLm1fbG9ja0FjcXVpcmVkKTsKIAogICAgIC8vIFNwZWMg
NC4zLjIuNzogUGVyZm9ybSBwb3N0ZmxpZ2h0IHN0ZXBzLCBqdW1waW5nIHRvIHRoZSBlcnJvciBj
YWxsYmFjayBpZiB0aGV5IGZhaWwuCi0gICAgaWYgKG1fd3JhcHBlciAmJiAhbV93cmFwcGVyLT5w
ZXJmb3JtUG9zdGZsaWdodCh0aGlzKSkgewotICAgICAgICBtX3RyYW5zYWN0aW9uRXJyb3IgPSBt
X3dyYXBwZXItPnNxbEVycm9yKCk7Ci0gICAgICAgIGlmICghbV90cmFuc2FjdGlvbkVycm9yKQot
ICAgICAgICAgICAgbV90cmFuc2FjdGlvbkVycm9yID0gU1FMRXJyb3I6OmNyZWF0ZShTUUxFcnJv
cjo6VU5LTk9XTl9FUlIsICJ1bmtub3duIGVycm9yIG9jY3VycmVkIGR1cmluZyB0cmFuc2FjdGlv
biBwb3N0ZmxpZ2h0Iik7CisgICAgaWYgKG1fZnJvbnRlbmQubV93cmFwcGVyICYmICFtX2Zyb250
ZW5kLm1fd3JhcHBlci0+cGVyZm9ybVBvc3RmbGlnaHQobV9mcm9udGVuZCkpIHsKKyAgICAgICAg
bV9mcm9udGVuZC5tX3RyYW5zYWN0aW9uRXJyb3IgPSBtX2Zyb250ZW5kLm1fd3JhcHBlci0+c3Fs
RXJyb3IoKTsKKyAgICAgICAgaWYgKCFtX2Zyb250ZW5kLm1fdHJhbnNhY3Rpb25FcnJvcikKKyAg
ICAgICAgICAgIG1fZnJvbnRlbmQubV90cmFuc2FjdGlvbkVycm9yID0gU1FMRXJyb3I6OmNyZWF0
ZShTUUxFcnJvcjo6VU5LTk9XTl9FUlIsICJ1bmtub3duIGVycm9yIG9jY3VycmVkIGR1cmluZyB0
cmFuc2FjdGlvbiBwb3N0ZmxpZ2h0Iik7CiAKICAgICAgICAgaGFuZGxlVHJhbnNhY3Rpb25FcnJv
cigpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgLy8gU3BlYyA0LjMuMi43OiBDb21t
aXQgdGhlIHRyYW5zYWN0aW9uLCBqdW1waW5nIHRvIHRoZSBlcnJvciBjYWxsYmFjayBpZiB0aGF0
IGZhaWxzLgotICAgIEFTU0VSVChtX3NxbGl0ZVRyYW5zYWN0aW9uKTsKKyAgICBBU1NFUlQobV9m
cm9udGVuZC5tX3NxbGl0ZVRyYW5zYWN0aW9uKTsKIAotICAgIG1fZGF0YWJhc2UtPmRpc2FibGVB
dXRob3JpemVyKCk7Ci0gICAgbV9zcWxpdGVUcmFuc2FjdGlvbi0+Y29tbWl0KCk7Ci0gICAgbV9k
YXRhYmFzZS0+ZW5hYmxlQXV0aG9yaXplcigpOworICAgIG1fZnJvbnRlbmQubV9kYXRhYmFzZS0+
ZGlzYWJsZUF1dGhvcml6ZXIoKTsKKyAgICBtX2Zyb250ZW5kLm1fc3FsaXRlVHJhbnNhY3Rpb24t
PmNvbW1pdCgpOworICAgIG1fZnJvbnRlbmQubV9kYXRhYmFzZS0+ZW5hYmxlQXV0aG9yaXplcigp
OwogCiAgICAgcmVsZWFzZU9yaWdpbkxvY2tJZk5lZWRlZCgpOwogCiAgICAgLy8gSWYgdGhlIGNv
bW1pdCBmYWlsZWQsIHRoZSB0cmFuc2FjdGlvbiB3aWxsIHN0aWxsIGJlIG1hcmtlZCBhcyAiaW4g
cHJvZ3Jlc3MiCi0gICAgaWYgKG1fc3FsaXRlVHJhbnNhY3Rpb24tPmluUHJvZ3Jlc3MoKSkgewot
ICAgICAgICBpZiAobV93cmFwcGVyKQotICAgICAgICAgICAgbV93cmFwcGVyLT5oYW5kbGVDb21t
aXRGYWlsZWRBZnRlclBvc3RmbGlnaHQodGhpcyk7Ci0gICAgICAgIG1fdHJhbnNhY3Rpb25FcnJv
ciA9IFNRTEVycm9yOjpjcmVhdGUoU1FMRXJyb3I6OkRBVEFCQVNFX0VSUiwgInVuYWJsZSB0byBj
b21taXQgdHJhbnNhY3Rpb24iLAotICAgICAgICAgICAgbV9kYXRhYmFzZS0+c3FsaXRlRGF0YWJh
c2UoKS5sYXN0RXJyb3IoKSwgbV9kYXRhYmFzZS0+c3FsaXRlRGF0YWJhc2UoKS5sYXN0RXJyb3JN
c2coKSk7CisgICAgaWYgKG1fZnJvbnRlbmQubV9zcWxpdGVUcmFuc2FjdGlvbi0+aW5Qcm9ncmVz
cygpKSB7CisgICAgICAgIGlmIChtX2Zyb250ZW5kLm1fd3JhcHBlcikKKyAgICAgICAgICAgIG1f
ZnJvbnRlbmQubV93cmFwcGVyLT5oYW5kbGVDb21taXRGYWlsZWRBZnRlclBvc3RmbGlnaHQobV9m
cm9udGVuZCk7CisgICAgICAgIG1fZnJvbnRlbmQubV90cmFuc2FjdGlvbkVycm9yID0gU1FMRXJy
b3I6OmNyZWF0ZShTUUxFcnJvcjo6REFUQUJBU0VfRVJSLCAidW5hYmxlIHRvIGNvbW1pdCB0cmFu
c2FjdGlvbiIsIG1fZnJvbnRlbmQubV9kYXRhYmFzZS0+c3FsaXRlRGF0YWJhc2UoKS5sYXN0RXJy
b3IoKSwgbV9mcm9udGVuZC5tX2RhdGFiYXNlLT5zcWxpdGVEYXRhYmFzZSgpLmxhc3RFcnJvck1z
ZygpKTsKIAogICAgICAgICBoYW5kbGVUcmFuc2FjdGlvbkVycm9yKCk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKICAgICAvLyBWYWN1dW0gdGhlIGRhdGFiYXNlIGlmIGFueXRoaW5nIHdhcyBk
ZWxldGVkLgotICAgIGlmIChtX2RhdGFiYXNlLT5oYWREZWxldGVzKCkpCi0gICAgICAgIG1fZGF0
YWJhc2UtPmluY3JlbWVudGFsVmFjdXVtSWZOZWVkZWQoKTsKKyAgICBpZiAobV9mcm9udGVuZC5t
X2RhdGFiYXNlLT5oYWREZWxldGVzKCkpCisgICAgICAgIG1fZnJvbnRlbmQubV9kYXRhYmFzZS0+
aW5jcmVtZW50YWxWYWN1dW1JZk5lZWRlZCgpOwogCiAgICAgLy8gVGhlIGNvbW1pdCB3YXMgc3Vj
Y2Vzc2Z1bC4gSWYgdGhlIHRyYW5zYWN0aW9uIG1vZGlmaWVkIHRoaXMgZGF0YWJhc2UsIG5vdGlm
eSB0aGUgZGVsZWdhdGVzLgotICAgIGlmIChtX21vZGlmaWVkRGF0YWJhc2UpCi0gICAgICAgIG1f
ZGF0YWJhc2UtPnRyYW5zYWN0aW9uQ2xpZW50KCktPmRpZENvbW1pdFdyaXRlVHJhbnNhY3Rpb24o
ZGF0YWJhc2UoKSk7CisgICAgaWYgKG1fZnJvbnRlbmQubV9tb2RpZmllZERhdGFiYXNlKQorICAg
ICAgICBtX2Zyb250ZW5kLm1fZGF0YWJhc2UtPnRyYW5zYWN0aW9uQ2xpZW50KCktPmRpZENvbW1p
dFdyaXRlVHJhbnNhY3Rpb24obV9mcm9udGVuZC5tX2RhdGFiYXNlLnB0cigpKTsKIAogICAgIC8v
IFNwZWMgNC4zLjIuODogRGVsaXZlciBzdWNjZXNzIGNhbGxiYWNrLCBpZiB0aGVyZSBpcyBvbmUu
CiAgICAgbV9mcm9udGVuZC5yZXF1ZXN0VHJhbnNpdFRvU3RhdGUoU1FMVHJhbnNhY3Rpb25TdGF0
ZTo6RGVsaXZlclN1Y2Nlc3NDYWxsYmFjayk7CkBAIC03NzksMzUgKzc0OSwzNSBAQCB2b2lkIFNR
TFRyYW5zYWN0aW9uQmFja2VuZDo6cG9zdGZsaWdodEFuZENvbW1pdCgpCiAKIHZvaWQgU1FMVHJh
bnNhY3Rpb25CYWNrZW5kOjpjbGVhbnVwQW5kVGVybWluYXRlKCkKIHsKLSAgICBBU1NFUlQobV9s
b2NrQWNxdWlyZWQpOworICAgIEFTU0VSVChtX2Zyb250ZW5kLm1fbG9ja0FjcXVpcmVkKTsKIAog
ICAgIC8vIFNwZWMgNC4zLjIuOTogRW5kIHRyYW5zYWN0aW9uIHN0ZXBzLiBUaGVyZSBpcyBubyBu
ZXh0IHN0ZXAuCiAgICAgTE9HKFN0b3JhZ2VBUEksICJUcmFuc2FjdGlvbiAlcCBpcyBjb21wbGV0
ZVxuIiwgdGhpcyk7Ci0gICAgQVNTRVJUKCFtX2RhdGFiYXNlLT5zcWxpdGVEYXRhYmFzZSgpLnRy
YW5zYWN0aW9uSW5Qcm9ncmVzcygpKTsKKyAgICBBU1NFUlQoIW1fZnJvbnRlbmQubV9kYXRhYmFz
ZS0+c3FsaXRlRGF0YWJhc2UoKS50cmFuc2FjdGlvbkluUHJvZ3Jlc3MoKSk7CiAKICAgICAvLyBQ
aGFzZSA1IGNsZWFudXAuIFNlZSBjb21tZW50IG9uIHRoZSBTUUxUcmFuc2FjdGlvbiBsaWZlLWN5
Y2xlIGFib3ZlLgogICAgIGRvQ2xlYW51cCgpOwotICAgIG1fZGF0YWJhc2UtPmluUHJvZ3Jlc3NU
cmFuc2FjdGlvbkNvbXBsZXRlZCgpOworICAgIG1fZnJvbnRlbmQubV9kYXRhYmFzZS0+aW5Qcm9n
cmVzc1RyYW5zYWN0aW9uQ29tcGxldGVkKCk7CiB9CiAKIHZvaWQgU1FMVHJhbnNhY3Rpb25CYWNr
ZW5kOjpjbGVhbnVwQWZ0ZXJUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2soKQogewotICAgIEFTU0VS
VChtX2xvY2tBY3F1aXJlZCk7CisgICAgQVNTRVJUKG1fZnJvbnRlbmQubV9sb2NrQWNxdWlyZWQp
OwogCiAgICAgTE9HKFN0b3JhZ2VBUEksICJUcmFuc2FjdGlvbiAlcCBpcyBjb21wbGV0ZSB3aXRo
IGFuIGVycm9yXG4iLCB0aGlzKTsKLSAgICBtX2RhdGFiYXNlLT5kaXNhYmxlQXV0aG9yaXplcigp
OwotICAgIGlmIChtX3NxbGl0ZVRyYW5zYWN0aW9uKSB7CisgICAgbV9mcm9udGVuZC5tX2RhdGFi
YXNlLT5kaXNhYmxlQXV0aG9yaXplcigpOworICAgIGlmIChtX2Zyb250ZW5kLm1fc3FsaXRlVHJh
bnNhY3Rpb24pIHsKICAgICAgICAgLy8gU3BlYyA0LjMuMi4xMDogUm9sbGJhY2sgdGhlIHRyYW5z
YWN0aW9uLgotICAgICAgICBtX3NxbGl0ZVRyYW5zYWN0aW9uLT5yb2xsYmFjaygpOworICAgICAg
ICBtX2Zyb250ZW5kLm1fc3FsaXRlVHJhbnNhY3Rpb24tPnJvbGxiYWNrKCk7CiAKLSAgICAgICAg
QVNTRVJUKCFtX2RhdGFiYXNlLT5zcWxpdGVEYXRhYmFzZSgpLnRyYW5zYWN0aW9uSW5Qcm9ncmVz
cygpKTsKLSAgICAgICAgbV9zcWxpdGVUcmFuc2FjdGlvbiA9IG51bGxwdHI7CisgICAgICAgIEFT
U0VSVCghbV9mcm9udGVuZC5tX2RhdGFiYXNlLT5zcWxpdGVEYXRhYmFzZSgpLnRyYW5zYWN0aW9u
SW5Qcm9ncmVzcygpKTsKKyAgICAgICAgbV9mcm9udGVuZC5tX3NxbGl0ZVRyYW5zYWN0aW9uID0g
bnVsbHB0cjsKICAgICB9Ci0gICAgbV9kYXRhYmFzZS0+ZW5hYmxlQXV0aG9yaXplcigpOworICAg
IG1fZnJvbnRlbmQubV9kYXRhYmFzZS0+ZW5hYmxlQXV0aG9yaXplcigpOwogCiAgICAgcmVsZWFz
ZU9yaWdpbkxvY2tJZk5lZWRlZCgpOwogCi0gICAgQVNTRVJUKCFtX2RhdGFiYXNlLT5zcWxpdGVE
YXRhYmFzZSgpLnRyYW5zYWN0aW9uSW5Qcm9ncmVzcygpKTsKKyAgICBBU1NFUlQoIW1fZnJvbnRl
bmQubV9kYXRhYmFzZS0+c3FsaXRlRGF0YWJhc2UoKS50cmFuc2FjdGlvbkluUHJvZ3Jlc3MoKSk7
CiAKICAgICBjbGVhbnVwQW5kVGVybWluYXRlKCk7CiB9CkBAIC04MjAsNyArNzkwLDcgQEAgdm9p
ZCBTUUxUcmFuc2FjdGlvbkJhY2tlbmQ6OnJlcXVlc3RUcmFuc2l0VG9TdGF0ZShTUUxUcmFuc2Fj
dGlvblN0YXRlIG5leHRTdGF0ZSkKICAgICBMT0coU3RvcmFnZUFQSSwgIlNjaGVkdWxpbmcgJXMg
Zm9yIHRyYW5zYWN0aW9uICVwXG4iLCBuYW1lRm9yU1FMVHJhbnNhY3Rpb25TdGF0ZShuZXh0U3Rh
dGUpLCB0aGlzKTsKICAgICBtX3JlcXVlc3RlZFN0YXRlID0gbmV4dFN0YXRlOwogICAgIEFTU0VS
VChtX3JlcXVlc3RlZFN0YXRlICE9IFNRTFRyYW5zYWN0aW9uU3RhdGU6OkVuZCk7Ci0gICAgbV9k
YXRhYmFzZS0+c2NoZWR1bGVUcmFuc2FjdGlvblN0ZXAobV9mcm9udGVuZCk7CisgICAgbV9mcm9u
dGVuZC5tX2RhdGFiYXNlLT5zY2hlZHVsZVRyYW5zYWN0aW9uU3RlcChtX2Zyb250ZW5kKTsKIH0K
IAogLy8gVGhpcyBzdGF0ZSBmdW5jdGlvbiBpcyB1c2VkIGFzIGEgc3R1YiBmdW5jdGlvbiB0byBw
bHVnIHVuaW1wbGVtZW50ZWQgc3RhdGVzCkBAIC04MzMsMTYgKzgwMywxNiBAQCB2b2lkIFNRTFRy
YW5zYWN0aW9uQmFja2VuZDo6dW5yZWFjaGFibGVTdGF0ZSgpCiAKIHZvaWQgU1FMVHJhbnNhY3Rp
b25CYWNrZW5kOjphY3F1aXJlT3JpZ2luTG9jaygpCiB7Ci0gICAgQVNTRVJUKCFtX29yaWdpbkxv
Y2spOwotICAgIG1fb3JpZ2luTG9jayA9IERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLm9yaWdp
bkxvY2tGb3IobV9kYXRhYmFzZS0+c2VjdXJpdHlPcmlnaW4oKSk7Ci0gICAgbV9vcmlnaW5Mb2Nr
LT5sb2NrKCk7CisgICAgQVNTRVJUKCFtX2Zyb250ZW5kLm1fb3JpZ2luTG9jayk7CisgICAgbV9m
cm9udGVuZC5tX29yaWdpbkxvY2sgPSBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5vcmlnaW5M
b2NrRm9yKG1fZnJvbnRlbmQubV9kYXRhYmFzZS0+c2VjdXJpdHlPcmlnaW4oKSk7CisgICAgbV9m
cm9udGVuZC5tX29yaWdpbkxvY2stPmxvY2soKTsKIH0KIAogdm9pZCBTUUxUcmFuc2FjdGlvbkJh
Y2tlbmQ6OnJlbGVhc2VPcmlnaW5Mb2NrSWZOZWVkZWQoKQogewotICAgIGlmIChtX29yaWdpbkxv
Y2spIHsKLSAgICAgICAgbV9vcmlnaW5Mb2NrLT51bmxvY2soKTsKLSAgICAgICAgbV9vcmlnaW5M
b2NrID0gbnVsbHB0cjsKKyAgICBpZiAobV9mcm9udGVuZC5tX29yaWdpbkxvY2spIHsKKyAgICAg
ICAgbV9mcm9udGVuZC5tX29yaWdpbkxvY2stPnVubG9jaygpOworICAgICAgICBtX2Zyb250ZW5k
Lm1fb3JpZ2luTG9jayA9IG51bGxwdHI7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uQmFja2VuZC5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbkJhY2tlbmQuaApp
bmRleCA3MWMxNzIzNThiNzRkZmM0NWQ1MjkzNjIzMzE3ZjgyYTYwN2JmOWUwLi5hYTBhZmUzMjFl
Mzk0NmVhNmE1ZGE2YjZlNjI4MGMyNjRlY2Y0MDg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uQmFja2VuZC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb25CYWNrZW5kLmgKQEAg
LTQ5LDI4ICs0OSwyMyBAQCBjbGFzcyBTUUxWYWx1ZTsKIAogY2xhc3MgU1FMVHJhbnNhY3Rpb25C
YWNrZW5kIDogcHVibGljIFNRTFRyYW5zYWN0aW9uU3RhdGVNYWNoaW5lPFNRTFRyYW5zYWN0aW9u
QmFja2VuZD4gewogcHVibGljOgotICAgIFNRTFRyYW5zYWN0aW9uQmFja2VuZChEYXRhYmFzZSos
IFNRTFRyYW5zYWN0aW9uJiwgUmVmUHRyPFNRTFRyYW5zYWN0aW9uV3JhcHBlcj4mJiwgYm9vbCBy
ZWFkT25seSk7CisgICAgZXhwbGljaXQgU1FMVHJhbnNhY3Rpb25CYWNrZW5kKFNRTFRyYW5zYWN0
aW9uJik7CiAgICAgflNRTFRyYW5zYWN0aW9uQmFja2VuZCgpOwogCiAgICAgdm9pZCBsb2NrQWNx
dWlyZWQoKTsKICAgICB2b2lkIHBlcmZvcm1OZXh0U3RlcCgpOwogCi0gICAgRGF0YWJhc2UqIGRh
dGFiYXNlKCkgeyByZXR1cm4gbV9kYXRhYmFzZS5nZXQoKTsgfQotICAgIGJvb2wgaXNSZWFkT25s
eSgpIHsgcmV0dXJuIG1fcmVhZE9ubHk7IH0KICAgICB2b2lkIG5vdGlmeURhdGFiYXNlVGhyZWFk
SXNTaHV0dGluZ0Rvd24oKTsKIAogICAgIC8vIEFQSXMgY2FsbGVkIGZyb20gdGhlIGZyb250ZW5k
IHB1Ymxpc2hlZCB2aWEgU1FMVHJhbnNhY3Rpb25CYWNrZW5kOgogICAgIHZvaWQgcmVxdWVzdFRy
YW5zaXRUb1N0YXRlKFNRTFRyYW5zYWN0aW9uU3RhdGUpOwotICAgIFNRTEVycm9yKiB0cmFuc2Fj
dGlvbkVycm9yKCk7Ci0gICAgU1FMU3RhdGVtZW50KiBjdXJyZW50U3RhdGVtZW50KCk7Ci0gICAg
dm9pZCBzZXRTaG91bGRSZXRyeUN1cnJlbnRTdGF0ZW1lbnQoYm9vbCk7CiAgICAgdm9pZCBleGVj
dXRlU1FMKHN0ZDo6dW5pcXVlX3B0cjxTUUxTdGF0ZW1lbnQ+KTsKICAgICAKIHByaXZhdGU6CiAK
ICAgICB2b2lkIGRvQ2xlYW51cCgpOwogCi0gICAgdm9pZCBlbnF1ZXVlU3RhdGVtZW50QmFja2Vu
ZChzdGQ6OnVuaXF1ZV9wdHI8U1FMU3RhdGVtZW50Pik7CisgICAgdm9pZCBlbnF1ZXVlU3RhdGVt
ZW50KHN0ZDo6dW5pcXVlX3B0cjxTUUxTdGF0ZW1lbnQ+KTsKIAogICAgIC8vIFN0YXRlIE1hY2hp
bmUgZnVuY3Rpb25zOgogICAgIFN0YXRlRnVuY3Rpb24gc3RhdGVGdW5jdGlvbkZvcihTUUxUcmFu
c2FjdGlvblN0YXRlKSBvdmVycmlkZTsKQEAgLTk1LDI2ICs5MCw2IEBAIHByaXZhdGU6CiAgICAg
dm9pZCByZWxlYXNlT3JpZ2luTG9ja0lmTmVlZGVkKCk7CiAKICAgICBTUUxUcmFuc2FjdGlvbiYg
bV9mcm9udGVuZDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8U1FMU3RhdGVtZW50PiBtX2N1cnJlbnRT
dGF0ZW1lbnRCYWNrZW5kOwotCi0gICAgUmVmUHRyPERhdGFiYXNlPiBtX2RhdGFiYXNlOwotICAg
IFJlZlB0cjxTUUxUcmFuc2FjdGlvbldyYXBwZXI+IG1fd3JhcHBlcjsKLSAgICBSZWZQdHI8U1FM
RXJyb3I+IG1fdHJhbnNhY3Rpb25FcnJvcjsKLQotICAgIGJvb2wgbV9oYXNDYWxsYmFjazsKLSAg
ICBib29sIG1faGFzU3VjY2Vzc0NhbGxiYWNrOwotICAgIGJvb2wgbV9oYXNFcnJvckNhbGxiYWNr
OwotICAgIGJvb2wgbV9zaG91bGRSZXRyeUN1cnJlbnRTdGF0ZW1lbnQ7Ci0gICAgYm9vbCBtX21v
ZGlmaWVkRGF0YWJhc2U7Ci0gICAgYm9vbCBtX2xvY2tBY3F1aXJlZDsKLSAgICBib29sIG1fcmVh
ZE9ubHk7Ci0gICAgYm9vbCBtX2hhc1ZlcnNpb25NaXNtYXRjaDsKLQotICAgIExvY2sgbV9zdGF0
ZW1lbnRNdXRleDsKLSAgICBEZXF1ZTxzdGQ6OnVuaXF1ZV9wdHI8U1FMU3RhdGVtZW50Pj4gbV9z
dGF0ZW1lbnRRdWV1ZTsKLQotICAgIHN0ZDo6dW5pcXVlX3B0cjxTUUxpdGVUcmFuc2FjdGlvbj4g
bV9zcWxpdGVUcmFuc2FjdGlvbjsKLSAgICBSZWZQdHI8T3JpZ2luTG9jaz4gbV9vcmlnaW5Mb2Nr
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb25Db29yZGluYXRv
ci5jcHAKaW5kZXggNWIyN2QzZDkzZjE4MmJlYmQzZjI4MzNlZTA2NTU3M2I3MWE4YzUwYi4uNmI1
MTIwYzJmNjJiYWFlMmQ2ZDhkMTgyOWY0ODYxODUyNDZkMjFiNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9u
Q29vcmRpbmF0b3IuY3BwCkBAIC01OCwxMiArNTgsMTIgQEAgdm9pZCBTUUxUcmFuc2FjdGlvbkNv
b3JkaW5hdG9yOjpwcm9jZXNzUGVuZGluZ1RyYW5zYWN0aW9ucyhDb29yZGluYXRpb25JbmZvJiBp
bmYKICAgICAgICAgcmV0dXJuOwogCiAgICAgUmVmUHRyPFNRTFRyYW5zYWN0aW9uPiBmaXJzdFBl
bmRpbmdUcmFuc2FjdGlvbiA9IGluZm8ucGVuZGluZ1RyYW5zYWN0aW9ucy5maXJzdCgpOwotICAg
IGlmIChmaXJzdFBlbmRpbmdUcmFuc2FjdGlvbi0+YmFja2VuZCgpLmlzUmVhZE9ubHkoKSkgewor
ICAgIGlmIChmaXJzdFBlbmRpbmdUcmFuc2FjdGlvbi0+aXNSZWFkT25seSgpKSB7CiAgICAgICAg
IGRvIHsKICAgICAgICAgICAgIGZpcnN0UGVuZGluZ1RyYW5zYWN0aW9uID0gaW5mby5wZW5kaW5n
VHJhbnNhY3Rpb25zLnRha2VGaXJzdCgpOwogICAgICAgICAgICAgaW5mby5hY3RpdmVSZWFkVHJh
bnNhY3Rpb25zLmFkZChmaXJzdFBlbmRpbmdUcmFuc2FjdGlvbik7CiAgICAgICAgICAgICBmaXJz
dFBlbmRpbmdUcmFuc2FjdGlvbi0+YmFja2VuZCgpLmxvY2tBY3F1aXJlZCgpOwotICAgICAgICB9
IHdoaWxlICghaW5mby5wZW5kaW5nVHJhbnNhY3Rpb25zLmlzRW1wdHkoKSAmJiBpbmZvLnBlbmRp
bmdUcmFuc2FjdGlvbnMuZmlyc3QoKS0+YmFja2VuZCgpLmlzUmVhZE9ubHkoKSk7CisgICAgICAg
IH0gd2hpbGUgKCFpbmZvLnBlbmRpbmdUcmFuc2FjdGlvbnMuaXNFbXB0eSgpICYmIGluZm8ucGVu
ZGluZ1RyYW5zYWN0aW9ucy5maXJzdCgpLT5pc1JlYWRPbmx5KCkpOwogICAgIH0gZWxzZSBpZiAo
aW5mby5hY3RpdmVSZWFkVHJhbnNhY3Rpb25zLmlzRW1wdHkoKSkgewogICAgICAgICBpbmZvLnBl
bmRpbmdUcmFuc2FjdGlvbnMucmVtb3ZlRmlyc3QoKTsKICAgICAgICAgaW5mby5hY3RpdmVXcml0
ZVRyYW5zYWN0aW9uID0gZmlyc3RQZW5kaW5nVHJhbnNhY3Rpb247CkBAIC05OSw3ICs5OSw3IEBA
IHZvaWQgU1FMVHJhbnNhY3Rpb25Db29yZGluYXRvcjo6cmVsZWFzZUxvY2soU1FMVHJhbnNhY3Rp
b24mIHRyYW5zYWN0aW9uKQogICAgIEFTU0VSVChjb29yZGluYXRpb25JbmZvSXRlcmF0b3IgIT0g
bV9jb29yZGluYXRpb25JbmZvTWFwLmVuZCgpKTsKICAgICBDb29yZGluYXRpb25JbmZvJiBpbmZv
ID0gY29vcmRpbmF0aW9uSW5mb0l0ZXJhdG9yLT52YWx1ZTsKIAotICAgIGlmICh0cmFuc2FjdGlv
bi5iYWNrZW5kKCkuaXNSZWFkT25seSgpKSB7CisgICAgaWYgKHRyYW5zYWN0aW9uLmlzUmVhZE9u
bHkoKSkgewogICAgICAgICBBU1NFUlQoaW5mby5hY3RpdmVSZWFkVHJhbnNhY3Rpb25zLmNvbnRh
aW5zKCZ0cmFuc2FjdGlvbikpOwogICAgICAgICBpbmZvLmFjdGl2ZVJlYWRUcmFuc2FjdGlvbnMu
cmVtb3ZlKCZ0cmFuc2FjdGlvbik7CiAgICAgfSBlbHNlIHsK
</data>
<flag name="review"
          id="309355"
          type_id="1"
          status="+"
          setter="thorton"
    />
          </attachment>
      

    </bug>

</bugzilla>