<?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>143101</bug_id>
          
          <creation_ts>2015-03-26 09:24:35 -0700</creation_ts>
          <short_desc>Rename Storage::Entry to Storage::Record</short_desc>
          <delta_ts>2015-03-26 12:22:11 -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>Page Loading</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1080296</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2015-03-26 09:24:35 -0700</bug_when>
    <thetext>Lets have just one type called Entry in the cache code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1080299</commentid>
    <comment_count>1</comment_count>
      <attachid>249492</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2015-03-26 09:27:30 -0700</bug_when>
    <thetext>Created attachment 249492
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1080300</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-03-26 09:28:52 -0700</bug_when>
    <thetext>Attachment 249492 did not pass style-queue:


ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCacheStorage.cpp:428:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCacheStorage.h:67:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 2 in 6 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1080302</commentid>
    <comment_count>3</comment_count>
      <attachid>249492</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-03-26 09:35:32 -0700</bug_when>
    <thetext>Comment on attachment 249492
patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1080380</commentid>
    <comment_count>4</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2015-03-26 12:22:11 -0700</bug_when>
    <thetext>https://trac.webkit.org/r182019</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>249492</attachid>
            <date>2015-03-26 09:27:30 -0700</date>
            <delta_ts>2015-03-26 09:35:32 -0700</delta_ts>
            <desc>patch</desc>
            <filename>disk-cache-storage-record.patch</filename>
            <type>text/plain</type>
            <size>27252</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MjAxMSkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU0IEBACisyMDE1LTAzLTI2ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBSZW5hbWUgU3RvcmFnZTo6RW50
cnkgdG8gU3RvcmFnZTo6UmVjb3JkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNDMxMDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBMZXRzIGhhdmUganVzdCBvbmUgdHlwZSBjYWxsZWQgRW50cnkgaW4gdGhl
IGNhY2hlIGNvZGUuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkNhY2hlOjpyZXRyaWV2ZSk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6Q2FjaGU6OnN0b3JlKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya0NhY2hlOjpDYWNoZTo6dXBkYXRlKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0NhY2hlOjpDYWNoZTo6dHJhdmVyc2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
Q2FjaGU6OkNhY2hlOjpkdW1wQ29udGVudHNUb0ZpbGUpOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a0NhY2hlOjpFbnRyeTo6RW50cnkpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkVu
dHJ5OjplbmNvZGVBc1N0b3JhZ2VSZWNvcmQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2Fj
aGU6OkVudHJ5OjpkZWNvZGVTdG9yYWdlUmVjb3JkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a0NhY2hlOjpFbnRyeTo6aW5pdGlhbGl6ZUJ1ZmZlckZyb21TdG9yYWdlUmVjb3JkKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpFbnRyeTo6YnVmZmVyKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya0NhY2hlOjpFbnRyeTo6c2hhcmVhYmxlUmVzb3VyY2VIYW5kbGUpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkVudHJ5OjplbmNvZGUpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkVudHJ5OjpkZWNvZGUpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkVudHJ5Ojppbml0aWFsaXplQnVmZmVyRnJvbVN0b3Jh
Z2VFbnRyeSk6IERlbGV0ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlRW50cnkuaDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpFbnRyeTo6c291
cmNlU3RvcmFnZVJlY29yZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6RW50cnk6
OnNvdXJjZVN0b3JhZ2VFbnRyeSk6IERlbGV0ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtD
YWNoZTo6UmVjb3JkTWV0YURhdGE6OlJlY29yZE1ldGFEYXRhKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0NhY2hlOjpkZWNvZGVSZWNvcmRNZXRhRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtDYWNoZTo6ZGVjb2RlUmVjb3JkSGVhZGVyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a0NhY2hlOjpkZWNvZGVSZWNvcmQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OmVu
Y29kZVJlY29yZE1ldGFEYXRhKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjplbmNv
ZGVSZWNvcmRIZWFkZXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlN0b3JhZ2U6
OmRpc3BhdGNoUmVhZE9wZXJhdGlvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6
cmV0cmlldmVGcm9tTWVtb3J5KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTdG9y
YWdlOjpzdG9yZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3RvcmFnZTo6dXBk
YXRlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTdG9yYWdlOjp0cmF2ZXJzZSk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3RvcmFnZTo6ZGlzcGF0Y2hQZW5kaW5n
V3JpdGVPcGVyYXRpb25zKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTdG9yYWdl
OjpkaXNwYXRjaEZ1bGxXcml0ZU9wZXJhdGlvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtD
YWNoZTo6U3RvcmFnZTo6ZGlzcGF0Y2hIZWFkZXJXcml0ZU9wZXJhdGlvbik6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6RW50cnlNZXRhRGF0YTo6RW50cnlNZXRhRGF0YSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6ZGVjb2RlRW50cnlNZXRhRGF0YSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6ZGVjb2RlRW50cnlIZWFk
ZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OmRlY29kZUVudHJ5
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjplbmNvZGVFbnRyeU1l
dGFEYXRhKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjplbmNvZGVF
bnRyeUhlYWRlcik6IERlbGV0ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlU3RvcmFnZS5oOgorCiAyMDE1LTAzLTI2ICBDaHJpcyBEdW1leiAgPGNkdW1lekBh
cHBsZS5jb20+CiAKICAgICAgICAgW1dLMl0gTGV0IHRoZSBjb21waWxlciBnZW5lcmF0ZSB0aGUg
TmV0d29ya0NhY2hlOjpLZXkgbW92ZSBjb25zdHJ1Y3RvcgpJbmRleDogU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwCShyZXZpc2lv
biAxODIwMDgpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTIsOCArMjEyLDggQEAgdm9pZCBDYWNoZTo6
cmV0cmlldmUoY29uc3QgV2ViQ29yZTo6UmVzbwogICAgIGF1dG8gc3RhcnRUaW1lID0gc3RkOjpj
aHJvbm86OnN5c3RlbV9jbG9jazo6bm93KCk7CiAgICAgdW5zaWduZWQgcHJpb3JpdHkgPSBvcmln
aW5hbFJlcXVlc3QucHJpb3JpdHkoKTsKIAotICAgIG1fc3RvcmFnZS0+cmV0cmlldmUoc3RvcmFn
ZUtleSwgcHJpb3JpdHksIFt0aGlzLCBvcmlnaW5hbFJlcXVlc3QsIGNvbXBsZXRpb25IYW5kbGVy
LCBzdGFydFRpbWUsIHN0b3JhZ2VLZXksIHdlYlBhZ2VJRF0oc3RkOjp1bmlxdWVfcHRyPFN0b3Jh
Z2U6OkVudHJ5PiBzdG9yYWdlRW50cnkpIHsKLSAgICAgICAgaWYgKCFzdG9yYWdlRW50cnkpIHsK
KyAgICBtX3N0b3JhZ2UtPnJldHJpZXZlKHN0b3JhZ2VLZXksIHByaW9yaXR5LCBbdGhpcywgb3Jp
Z2luYWxSZXF1ZXN0LCBjb21wbGV0aW9uSGFuZGxlciwgc3RhcnRUaW1lLCBzdG9yYWdlS2V5LCB3
ZWJQYWdlSURdKHN0ZDo6dW5pcXVlX3B0cjxTdG9yYWdlOjpSZWNvcmQ+IHJlY29yZCkgeworICAg
ICAgICBpZiAoIXJlY29yZCkgewogICAgICAgICAgICAgTE9HKE5ldHdvcmtDYWNoZSwgIihOZXR3
b3JrUHJvY2Vzcykgbm90IGZvdW5kIGluIHN0b3JhZ2UiKTsKIAogICAgICAgICAgICAgaWYgKG1f
c3RhdGlzdGljcykKQEAgLTIyMywyNiArMjIzLDI2IEBAIHZvaWQgQ2FjaGU6OnJldHJpZXZlKGNv
bnN0IFdlYkNvcmU6OlJlc28KICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQog
Ci0gICAgICAgIEFTU0VSVChzdG9yYWdlRW50cnktPmtleSA9PSBzdG9yYWdlS2V5KTsKKyAgICAg
ICAgQVNTRVJUKHJlY29yZC0+a2V5ID09IHN0b3JhZ2VLZXkpOwogCi0gICAgICAgIGF1dG8gY2Fj
aGVFbnRyeSA9IEVudHJ5OjpkZWNvZGUoKnN0b3JhZ2VFbnRyeSk7CisgICAgICAgIGF1dG8gZW50
cnkgPSBFbnRyeTo6ZGVjb2RlU3RvcmFnZVJlY29yZCgqcmVjb3JkKTsKIAotICAgICAgICBhdXRv
IHVzZURlY2lzaW9uID0gY2FjaGVFbnRyeSA/IGNhblVzZSgqY2FjaGVFbnRyeSwgb3JpZ2luYWxS
ZXF1ZXN0KSA6IFVzZURlY2lzaW9uOjpOb0R1ZVRvRGVjb2RlRmFpbHVyZTsKKyAgICAgICAgYXV0
byB1c2VEZWNpc2lvbiA9IGVudHJ5ID8gY2FuVXNlKCplbnRyeSwgb3JpZ2luYWxSZXF1ZXN0KSA6
IFVzZURlY2lzaW9uOjpOb0R1ZVRvRGVjb2RlRmFpbHVyZTsKICAgICAgICAgc3dpdGNoICh1c2VE
ZWNpc2lvbikgewogICAgICAgICBjYXNlIFVzZURlY2lzaW9uOjpVc2U6CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgY2FzZSBVc2VEZWNpc2lvbjo6VmFsaWRhdGU6Ci0gICAgICAgICAgICBj
YWNoZUVudHJ5LT5zZXROZWVkc1ZhbGlkYXRpb24oKTsKKyAgICAgICAgICAgIGVudHJ5LT5zZXRO
ZWVkc1ZhbGlkYXRpb24oKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0Ogot
ICAgICAgICAgICAgY2FjaGVFbnRyeSA9IG51bGxwdHI7CisgICAgICAgICAgICBlbnRyeSA9IG51
bGxwdHI7CiAgICAgICAgIH07CiAKICNpZiAhTE9HX0RJU0FCTEVECiAgICAgICAgIGF1dG8gZWxh
cHNlZE1TID0gc3RkOjpjaHJvbm86OmR1cmF0aW9uX2Nhc3Q8c3RkOjpjaHJvbm86Om1pbGxpc2Vj
b25kcz4oc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6bm93KCkgLSBzdGFydFRpbWUpLmNvdW50
KCk7Ci0jZW5kaWYKICAgICAgICAgTE9HKE5ldHdvcmtDYWNoZSwgIihOZXR3b3JrUHJvY2Vzcykg
cmV0cmlldmUgY29tcGxldGUgdXNlRGVjaXNpb249JWQgcHJpb3JpdHk9JXUgdGltZT0lbGxkbXMi
LCB1c2VEZWNpc2lvbiwgb3JpZ2luYWxSZXF1ZXN0LnByaW9yaXR5KCksIGVsYXBzZWRNUyk7Ci0g
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURjo6bW92ZShjYWNoZUVudHJ5KSk7CisjZW5kaWYK
KyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGOjptb3ZlKGVudHJ5KSk7CiAKICAgICAgICAg
aWYgKG1fc3RhdGlzdGljcykKICAgICAgICAgICAgIG1fc3RhdGlzdGljcy0+cmVjb3JkUmV0cmll
dmVkQ2FjaGVkRW50cnkod2ViUGFnZUlELCBzdG9yYWdlS2V5LCBvcmlnaW5hbFJlcXVlc3QsIHVz
ZURlY2lzaW9uKTsKQEAgLTMwMSw5ICszMDEsOSBAQCB2b2lkIENhY2hlOjpzdG9yZShjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjCiAKICAgICBFbnRyeSBjYWNoZUVudHJ5KG1ha2VDYWNoZUtleShvcmln
aW5hbFJlcXVlc3QpLCByZXNwb25zZSwgV1RGOjptb3ZlKHJlc3BvbnNlRGF0YSksIGNvbGxlY3RW
YXJ5aW5nUmVxdWVzdEhlYWRlcnMob3JpZ2luYWxSZXF1ZXN0LCByZXNwb25zZSkpOwogCi0gICAg
YXV0byBzdG9yYWdlRW50cnkgPSBjYWNoZUVudHJ5LmVuY29kZSgpOworICAgIGF1dG8gcmVjb3Jk
ID0gY2FjaGVFbnRyeS5lbmNvZGVBc1N0b3JhZ2VSZWNvcmQoKTsKIAotICAgIG1fc3RvcmFnZS0+
c3RvcmUoc3RvcmFnZUVudHJ5LCBbY29tcGxldGlvbkhhbmRsZXJdKGJvb2wgc3VjY2VzcywgY29u
c3QgRGF0YSYgYm9keURhdGEpIHsKKyAgICBtX3N0b3JhZ2UtPnN0b3JlKHJlY29yZCwgW2NvbXBs
ZXRpb25IYW5kbGVyXShib29sIHN1Y2Nlc3MsIGNvbnN0IERhdGEmIGJvZHlEYXRhKSB7CiAgICAg
ICAgIE1hcHBlZEJvZHkgbWFwcGVkQm9keTsKICNpZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNF
KQogICAgICAgICBpZiAoYm9keURhdGEuaXNNYXAoKSkgewpAQCAtMzI3LDkgKzMyNyw5IEBAIHZv
aWQgQ2FjaGU6OnVwZGF0ZShjb25zdCBXZWJDb3JlOjpSZXNvdXIKIAogICAgIEVudHJ5IHVwZGF0
ZUVudHJ5KGV4aXN0aW5nRW50cnkua2V5KCksIHJlc3BvbnNlLCBleGlzdGluZ0VudHJ5LmJ1ZmZl
cigpLCBjb2xsZWN0VmFyeWluZ1JlcXVlc3RIZWFkZXJzKG9yaWdpbmFsUmVxdWVzdCwgcmVzcG9u
c2UpKTsKIAotICAgIGF1dG8gdXBkYXRlU3RvcmFnZUVudHJ5ID0gdXBkYXRlRW50cnkuZW5jb2Rl
KCk7CisgICAgYXV0byB1cGRhdGVSZWNvcmQgPSB1cGRhdGVFbnRyeS5lbmNvZGVBc1N0b3JhZ2VS
ZWNvcmQoKTsKIAotICAgIG1fc3RvcmFnZS0+dXBkYXRlKHVwZGF0ZVN0b3JhZ2VFbnRyeSwgZXhp
c3RpbmdFbnRyeS5zb3VyY2VTdG9yYWdlRW50cnkoKSwgW10oYm9vbCBzdWNjZXNzLCBjb25zdCBE
YXRhJikgeworICAgIG1fc3RvcmFnZS0+dXBkYXRlKHVwZGF0ZVJlY29yZCwgZXhpc3RpbmdFbnRy
eS5zb3VyY2VTdG9yYWdlUmVjb3JkKCksIFtdKGJvb2wgc3VjY2VzcywgY29uc3QgRGF0YSYpIHsK
ICAgICAgICAgTE9HKE5ldHdvcmtDYWNoZSwgIihOZXR3b3JrUHJvY2VzcykgdXBkYXRlZCwgc3Vj
Y2Vzcz0lZCIsIHN1Y2Nlc3MpOwogICAgIH0pOwogfQpAQCAtMzQ1LDE3ICszNDUsMTcgQEAgdm9p
ZCBDYWNoZTo6dHJhdmVyc2Uoc3RkOjpmdW5jdGlvbjx2b2lkIAogewogICAgIEFTU0VSVChpc0Vu
YWJsZWQoKSk7CiAKLSAgICBtX3N0b3JhZ2UtPnRyYXZlcnNlKFt0cmF2ZXJzZUhhbmRsZXJdKGNv
bnN0IFN0b3JhZ2U6OkVudHJ5KiBzdG9yYWdlRW50cnkpIHsKLSAgICAgICAgaWYgKCFzdG9yYWdl
RW50cnkpIHsKKyAgICBtX3N0b3JhZ2UtPnRyYXZlcnNlKFt0cmF2ZXJzZUhhbmRsZXJdKGNvbnN0
IFN0b3JhZ2U6OlJlY29yZCogcmVjb3JkKSB7CisgICAgICAgIGlmICghcmVjb3JkKSB7CiAgICAg
ICAgICAgICB0cmF2ZXJzZUhhbmRsZXIobnVsbHB0cik7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KIAotICAgICAgICBhdXRvIGNhY2hlRW50cnkgPSBFbnRyeTo6ZGVjb2RlKCpzdG9y
YWdlRW50cnkpOwotICAgICAgICBpZiAoIWNhY2hlRW50cnkpCisgICAgICAgIGF1dG8gZW50cnkg
PSBFbnRyeTo6ZGVjb2RlU3RvcmFnZVJlY29yZCgqcmVjb3JkKTsKKyAgICAgICAgaWYgKCFlbnRy
eSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICB0cmF2ZXJzZUhhbmRsZXIoY2FjaGVF
bnRyeS5nZXQoKSk7CisgICAgICAgIHRyYXZlcnNlSGFuZGxlcihlbnRyeS5nZXQoKSk7CiAgICAg
fSk7CiB9CiAKQEAgLTM3MiwxOCArMzcyLDE4IEBAIHZvaWQgQ2FjaGU6OmR1bXBDb250ZW50c1Rv
RmlsZSgpCiAgICAgaWYgKCFkdW1wRmlsZUhhbmRsZSkKICAgICAgICAgcmV0dXJuOwogICAgIFdl
YkNvcmU6OndyaXRlVG9GaWxlKGR1bXBGaWxlSGFuZGxlLCAiW1xuIiwgMik7Ci0gICAgbV9zdG9y
YWdlLT50cmF2ZXJzZShbZHVtcEZpbGVIYW5kbGVdKGNvbnN0IFN0b3JhZ2U6OkVudHJ5KiBlbnRy
eSkgewotICAgICAgICBpZiAoIWVudHJ5KSB7CisgICAgbV9zdG9yYWdlLT50cmF2ZXJzZShbZHVt
cEZpbGVIYW5kbGVdKGNvbnN0IFN0b3JhZ2U6OlJlY29yZCogcmVjb3JkKSB7CisgICAgICAgIGlm
ICghcmVjb3JkKSB7CiAgICAgICAgICAgICBXZWJDb3JlOjp3cml0ZVRvRmlsZShkdW1wRmlsZUhh
bmRsZSwgInt9XG5dXG4iLCA1KTsKICAgICAgICAgICAgIGF1dG8gaGFuZGxlID0gZHVtcEZpbGVI
YW5kbGU7CiAgICAgICAgICAgICBXZWJDb3JlOjpjbG9zZUZpbGUoaGFuZGxlKTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBhdXRvIGNhY2hlRW50cnkgPSBFbnRyeTo6
ZGVjb2RlKCplbnRyeSk7Ci0gICAgICAgIGlmICghY2FjaGVFbnRyeSkKKyAgICAgICAgYXV0byBl
bnRyeSA9IEVudHJ5OjpkZWNvZGVTdG9yYWdlUmVjb3JkKCpyZWNvcmQpOworICAgICAgICBpZiAo
IWVudHJ5KQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBTdHJpbmdCdWlsZGVyIGpzb247
Ci0gICAgICAgIGNhY2hlRW50cnktPmFzSlNPTihqc29uKTsKKyAgICAgICAgZW50cnktPmFzSlNP
Tihqc29uKTsKICAgICAgICAganNvbi5hcHBlbmQoIixcbiIpOwogICAgICAgICBhdXRvIHdyaXRl
RGF0YSA9IGpzb24udG9TdHJpbmcoKS51dGY4KCk7CiAgICAgICAgIFdlYkNvcmU6OndyaXRlVG9G
aWxlKGR1bXBGaWxlSGFuZGxlLCB3cml0ZURhdGEuZGF0YSgpLCB3cml0ZURhdGEubGVuZ3RoKCkp
OwpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
RW50cnkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcAkocmV2aXNpb24gMTgyMDA4KQorKysgU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00OSwxNCArNDksMTQgQEAgRW50cnk6OkVudHJ5KGNvbnN0IEtleSYga2V5LCBj
b25zdCBXZWJDbwogewogfQogCi1FbnRyeTo6RW50cnkoY29uc3QgU3RvcmFnZTo6RW50cnkmIHN0
b3JhZ2VFbnRyeSkKK0VudHJ5OjpFbnRyeShjb25zdCBTdG9yYWdlOjpSZWNvcmQmIHN0b3JhZ2VF
bnRyeSkKICAgICA6IG1fa2V5KHN0b3JhZ2VFbnRyeS5rZXkpCiAgICAgLCBtX3RpbWVTdGFtcChz
dG9yYWdlRW50cnkudGltZVN0YW1wKQotICAgICwgbV9zb3VyY2VTdG9yYWdlRW50cnkoc3RvcmFn
ZUVudHJ5KQorICAgICwgbV9zb3VyY2VTdG9yYWdlUmVjb3JkKHN0b3JhZ2VFbnRyeSkKIHsKIH0K
IAotU3RvcmFnZTo6RW50cnkgRW50cnk6OmVuY29kZSgpIGNvbnN0CitTdG9yYWdlOjpSZWNvcmQg
RW50cnk6OmVuY29kZUFzU3RvcmFnZVJlY29yZCgpIGNvbnN0CiB7CiAgICAgRW5jb2RlciBlbmNv
ZGVyOwogICAgIGVuY29kZXIgPDwgbV9yZXNwb25zZTsKQEAgLTc2LDcgKzc2LDcgQEAgU3RvcmFn
ZTo6RW50cnkgRW50cnk6OmVuY29kZSgpIGNvbnN0CiAgICAgcmV0dXJuIHsgbV9rZXksIG1fdGlt
ZVN0YW1wLCBoZWFkZXIsIGJvZHkgfTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBFbnRy
eTo6ZGVjb2RlKGNvbnN0IFN0b3JhZ2U6OkVudHJ5JiBzdG9yYWdlRW50cnkpCitzdGQ6OnVuaXF1
ZV9wdHI8RW50cnk+IEVudHJ5OjpkZWNvZGVTdG9yYWdlUmVjb3JkKGNvbnN0IFN0b3JhZ2U6OlJl
Y29yZCYgc3RvcmFnZUVudHJ5KQogewogICAgIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gZW50cnko
bmV3IEVudHJ5KHN0b3JhZ2VFbnRyeSkpOwogCkBAIC0xMDIsMTMgKzEwMiwxMyBAQCBzdGQ6OnVu
aXF1ZV9wdHI8RW50cnk+IEVudHJ5OjpkZWNvZGUoY29uCiAgICAgcmV0dXJuIGVudHJ5OwogfQog
Ci12b2lkIEVudHJ5Ojppbml0aWFsaXplQnVmZmVyRnJvbVN0b3JhZ2VFbnRyeSgpIGNvbnN0Cit2
b2lkIEVudHJ5Ojppbml0aWFsaXplQnVmZmVyRnJvbVN0b3JhZ2VSZWNvcmQoKSBjb25zdAogewot
ICAgIGF1dG8qIGRhdGEgPSBtX3NvdXJjZVN0b3JhZ2VFbnRyeS5ib2R5LmRhdGEoKTsKLSAgICBz
aXplX3Qgc2l6ZSA9IG1fc291cmNlU3RvcmFnZUVudHJ5LmJvZHkuc2l6ZSgpOworICAgIGF1dG8q
IGRhdGEgPSBtX3NvdXJjZVN0b3JhZ2VSZWNvcmQuYm9keS5kYXRhKCk7CisgICAgc2l6ZV90IHNp
emUgPSBtX3NvdXJjZVN0b3JhZ2VSZWNvcmQuYm9keS5zaXplKCk7CiAjaWYgRU5BQkxFKFNIQVJF
QUJMRV9SRVNPVVJDRSkKLSAgICBSZWZQdHI8U2hhcmVkTWVtb3J5PiBzaGFyZWRNZW1vcnkgPSBt
X3NvdXJjZVN0b3JhZ2VFbnRyeS5ib2R5LmlzTWFwKCkgPyBTaGFyZWRNZW1vcnk6OmNyZWF0ZUZy
b21WTUJ1ZmZlcihjb25zdF9jYXN0PHVpbnQ4X3QqPihkYXRhKSwgc2l6ZSkgOiBudWxscHRyOwot
ICAgIFJlZlB0cjxTaGFyZWFibGVSZXNvdXJjZT4gc2hhcmVhYmxlUmVzb3VyY2UgPSBzaGFyZWRN
ZW1vcnkgPyBTaGFyZWFibGVSZXNvdXJjZTo6Y3JlYXRlKHNoYXJlZE1lbW9yeS5yZWxlYXNlKCks
IDAsIG1fc291cmNlU3RvcmFnZUVudHJ5LmJvZHkuc2l6ZSgpKSA6IG51bGxwdHI7CisgICAgUmVm
UHRyPFNoYXJlZE1lbW9yeT4gc2hhcmVkTWVtb3J5ID0gbV9zb3VyY2VTdG9yYWdlUmVjb3JkLmJv
ZHkuaXNNYXAoKSA/IFNoYXJlZE1lbW9yeTo6Y3JlYXRlRnJvbVZNQnVmZmVyKGNvbnN0X2Nhc3Q8
dWludDhfdCo+KGRhdGEpLCBzaXplKSA6IG51bGxwdHI7CisgICAgUmVmUHRyPFNoYXJlYWJsZVJl
c291cmNlPiBzaGFyZWFibGVSZXNvdXJjZSA9IHNoYXJlZE1lbW9yeSA/IFNoYXJlYWJsZVJlc291
cmNlOjpjcmVhdGUoc2hhcmVkTWVtb3J5LnJlbGVhc2UoKSwgMCwgbV9zb3VyY2VTdG9yYWdlUmVj
b3JkLmJvZHkuc2l6ZSgpKSA6IG51bGxwdHI7CiAKICAgICBpZiAoc2hhcmVhYmxlUmVzb3VyY2Ug
JiYgc2hhcmVhYmxlUmVzb3VyY2UtPmNyZWF0ZUhhbmRsZShtX3NoYXJlYWJsZVJlc291cmNlSGFu
ZGxlKSkKICAgICAgICAgbV9idWZmZXIgPSBtX3NoYXJlYWJsZVJlc291cmNlSGFuZGxlLnRyeVdy
YXBJblNoYXJlZEJ1ZmZlcigpOwpAQCAtMTIwLDcgKzEyMCw3IEBAIHZvaWQgRW50cnk6OmluaXRp
YWxpemVCdWZmZXJGcm9tU3RvcmFnZUUKIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciogRW50cnk6OmJ1
ZmZlcigpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2J1ZmZlcikKLSAgICAgICAgaW5pdGlhbGl6ZUJ1
ZmZlckZyb21TdG9yYWdlRW50cnkoKTsKKyAgICAgICAgaW5pdGlhbGl6ZUJ1ZmZlckZyb21TdG9y
YWdlUmVjb3JkKCk7CiAKICAgICByZXR1cm4gbV9idWZmZXIuZ2V0KCk7CiB9CkBAIC0xMjgsNyAr
MTI4LDcgQEAgV2ViQ29yZTo6U2hhcmVkQnVmZmVyKiBFbnRyeTo6YnVmZmVyKCkgYwogU2hhcmVh
YmxlUmVzb3VyY2U6OkhhbmRsZSYgRW50cnk6OnNoYXJlYWJsZVJlc291cmNlSGFuZGxlKCkgY29u
c3QKIHsKICAgICBpZiAoIW1fYnVmZmVyKQotICAgICAgICBpbml0aWFsaXplQnVmZmVyRnJvbVN0
b3JhZ2VFbnRyeSgpOworICAgICAgICBpbml0aWFsaXplQnVmZmVyRnJvbVN0b3JhZ2VSZWNvcmQo
KTsKIAogICAgIHJldHVybiBtX3NoYXJlYWJsZVJlc291cmNlSGFuZGxlOwogfQpJbmRleDogU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVFbnRyeS5oCShyZXZpc2lvbiAxODIwMDgpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5oCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw4ICs0
Nyw4IEBAIGNsYXNzIEVudHJ5IHsKIHB1YmxpYzoKICAgICBFbnRyeShjb25zdCBLZXkmLCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4mJiwgY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+JiB2YXJ5aW5nUmVx
dWVzdEhlYWRlcnMpOwogCi0gICAgU3RvcmFnZTo6RW50cnkgZW5jb2RlKCkgY29uc3Q7Ci0gICAg
c3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gZGVjb2RlKGNvbnN0IFN0b3JhZ2U6OkVudHJ5
Jik7CisgICAgU3RvcmFnZTo6UmVjb3JkIGVuY29kZUFzU3RvcmFnZVJlY29yZCgpIGNvbnN0Owor
ICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IGRlY29kZVN0b3JhZ2VSZWNvcmQoY29u
c3QgU3RvcmFnZTo6UmVjb3JkJik7CiAKICAgICBjb25zdCBLZXkmIGtleSgpIGNvbnN0IHsgcmV0
dXJuIG1fa2V5OyB9CiAgICAgc3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kcyB0aW1lU3RhbXAoKSBj
b25zdCB7IHJldHVybiBtX3RpbWVTdGFtcDsgfQpAQCAtNjMsMTMgKzYzLDEzIEBAIHB1YmxpYzoK
ICAgICBib29sIG5lZWRzVmFsaWRhdGlvbigpIGNvbnN0OwogICAgIHZvaWQgc2V0TmVlZHNWYWxp
ZGF0aW9uKCk7CiAKLSAgICBjb25zdCBTdG9yYWdlOjpFbnRyeSYgc291cmNlU3RvcmFnZUVudHJ5
KCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VTdG9yYWdlRW50cnk7IH0KKyAgICBjb25zdCBTdG9y
YWdlOjpSZWNvcmQmIHNvdXJjZVN0b3JhZ2VSZWNvcmQoKSBjb25zdCB7IHJldHVybiBtX3NvdXJj
ZVN0b3JhZ2VSZWNvcmQ7IH0KIAogICAgIHZvaWQgYXNKU09OKFN0cmluZ0J1aWxkZXImKSBjb25z
dDsKIAogcHJpdmF0ZToKLSAgICBFbnRyeShjb25zdCBTdG9yYWdlOjpFbnRyeSYpOwotICAgIHZv
aWQgaW5pdGlhbGl6ZUJ1ZmZlckZyb21TdG9yYWdlRW50cnkoKSBjb25zdDsKKyAgICBFbnRyeShj
b25zdCBTdG9yYWdlOjpSZWNvcmQmKTsKKyAgICB2b2lkIGluaXRpYWxpemVCdWZmZXJGcm9tU3Rv
cmFnZVJlY29yZCgpIGNvbnN0OwogCiAgICAgS2V5IG1fa2V5OwogICAgIHN0ZDo6Y2hyb25vOjpt
aWxsaXNlY29uZHMgbV90aW1lU3RhbXA7CkBAIC04MSw3ICs4MSw3IEBAIHByaXZhdGU6CiAgICAg
bXV0YWJsZSBTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlIG1fc2hhcmVhYmxlUmVzb3VyY2VIYW5k
bGU7CiAjZW5kaWYKIAotICAgIFN0b3JhZ2U6OkVudHJ5IG1fc291cmNlU3RvcmFnZUVudHJ5IHsg
fTsKKyAgICBTdG9yYWdlOjpSZWNvcmQgbV9zb3VyY2VTdG9yYWdlUmVjb3JkIHsgfTsKIH07CiAK
IH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZVN0b3JhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwCShyZXZpc2lvbiAxODIwMDgpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTMxLDkgKzEzMSw5IEBAIHN0YXRpYyB1bnNpZ25lZCBoYXNoRGF0
YShjb25zdCBEYXRhJiBkYXQKICAgICByZXR1cm4gaGFzaGVyLmhhc2goKTsKIH0KIAotc3RydWN0
IEVudHJ5TWV0YURhdGEgewotICAgIEVudHJ5TWV0YURhdGEoKSB7IH0KLSAgICBleHBsaWNpdCBF
bnRyeU1ldGFEYXRhKGNvbnN0IEtleSYga2V5KQorc3RydWN0IFJlY29yZE1ldGFEYXRhIHsKKyAg
ICBSZWNvcmRNZXRhRGF0YSgpIHsgfQorICAgIGV4cGxpY2l0IFJlY29yZE1ldGFEYXRhKGNvbnN0
IEtleSYga2V5KQogICAgICAgICA6IGNhY2hlU3RvcmFnZVZlcnNpb24oU3RvcmFnZTo6dmVyc2lv
bikKICAgICAgICAgLCBrZXkoa2V5KQogICAgIHsgfQpAQCAtMTQ5LDcgKzE0OSw3IEBAIHN0cnVj
dCBFbnRyeU1ldGFEYXRhIHsKICAgICB1aW50NjRfdCBib2R5U2l6ZTsKIH07CiAKLXN0YXRpYyBi
b29sIGRlY29kZUVudHJ5TWV0YURhdGEoRW50cnlNZXRhRGF0YSYgbWV0YURhdGEsIGNvbnN0IERh
dGEmIGZpbGVEYXRhKQorc3RhdGljIGJvb2wgZGVjb2RlUmVjb3JkTWV0YURhdGEoUmVjb3JkTWV0
YURhdGEmIG1ldGFEYXRhLCBjb25zdCBEYXRhJiBmaWxlRGF0YSkKIHsKICAgICBib29sIHN1Y2Nl
c3MgPSBmYWxzZTsKICAgICBmaWxlRGF0YS5hcHBseShbJm1ldGFEYXRhLCAmc3VjY2Vzc10oY29u
c3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpIHsKQEAgLTE3OCw5ICsxNzgsOSBAQCBzdGF0
aWMgYm9vbCBkZWNvZGVFbnRyeU1ldGFEYXRhKEVudHJ5TWV0CiAgICAgcmV0dXJuIHN1Y2Nlc3M7
CiB9CiAKLXN0YXRpYyBib29sIGRlY29kZUVudHJ5SGVhZGVyKGNvbnN0IERhdGEmIGZpbGVEYXRh
LCBFbnRyeU1ldGFEYXRhJiBtZXRhRGF0YSwgRGF0YSYgZGF0YSkKK3N0YXRpYyBib29sIGRlY29k
ZVJlY29yZEhlYWRlcihjb25zdCBEYXRhJiBmaWxlRGF0YSwgUmVjb3JkTWV0YURhdGEmIG1ldGFE
YXRhLCBEYXRhJiBkYXRhKQogewotICAgIGlmICghZGVjb2RlRW50cnlNZXRhRGF0YShtZXRhRGF0
YSwgZmlsZURhdGEpKSB7CisgICAgaWYgKCFkZWNvZGVSZWNvcmRNZXRhRGF0YShtZXRhRGF0YSwg
ZmlsZURhdGEpKSB7CiAgICAgICAgIExPRyhOZXR3b3JrQ2FjaGVTdG9yYWdlLCAiKE5ldHdvcmtQ
cm9jZXNzKSBtZXRhIGRhdGEgZGVjb2RlIGZhaWx1cmUiKTsKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KQEAgLTIwMywxMSArMjAzLDExIEBAIHN0YXRpYyBib29sIGRlY29kZUVudHJ5SGVh
ZGVyKGNvbnN0IERhdGEKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIHN0ZDo6dW5pcXVl
X3B0cjxTdG9yYWdlOjpFbnRyeT4gZGVjb2RlRW50cnkoY29uc3QgRGF0YSYgZmlsZURhdGEsIGlu
dCBmZCwgY29uc3QgS2V5JiBrZXkpCitzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFN0b3JhZ2U6OlJl
Y29yZD4gZGVjb2RlUmVjb3JkKGNvbnN0IERhdGEmIGZpbGVEYXRhLCBpbnQgZmQsIGNvbnN0IEtl
eSYga2V5KQogewotICAgIEVudHJ5TWV0YURhdGEgbWV0YURhdGE7CisgICAgUmVjb3JkTWV0YURh
dGEgbWV0YURhdGE7CiAgICAgRGF0YSBoZWFkZXJEYXRhOwotICAgIGlmICghZGVjb2RlRW50cnlI
ZWFkZXIoZmlsZURhdGEsIG1ldGFEYXRhLCBoZWFkZXJEYXRhKSkKKyAgICBpZiAoIWRlY29kZVJl
Y29yZEhlYWRlcihmaWxlRGF0YSwgbWV0YURhdGEsIGhlYWRlckRhdGEpKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAogICAgIGlmIChtZXRhRGF0YS5rZXkgIT0ga2V5KQpAQCAtMjMwLDcgKzIz
MCw3IEBAIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8U3RvcmFnZTo6RW50cnk+IGQKICAgICAgICAg
fQogICAgIH0KIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFN0b3JhZ2U6OkVudHJ5PihT
dG9yYWdlOjpFbnRyeSB7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U3RvcmFnZTo6UmVj
b3JkPihTdG9yYWdlOjpSZWNvcmQgewogICAgICAgICBtZXRhRGF0YS5rZXksCiAgICAgICAgIG1l
dGFEYXRhLnRpbWVTdGFtcCwKICAgICAgICAgaGVhZGVyRGF0YSwKQEAgLTIzOCwzNSArMjM4LDM1
IEBAIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8U3RvcmFnZTo6RW50cnk+IGQKICAgICB9KTsKIH0K
IAotc3RhdGljIERhdGEgZW5jb2RlRW50cnlNZXRhRGF0YShjb25zdCBFbnRyeU1ldGFEYXRhJiBl
bnRyeSkKK3N0YXRpYyBEYXRhIGVuY29kZVJlY29yZE1ldGFEYXRhKGNvbnN0IFJlY29yZE1ldGFE
YXRhJiBtZXRhRGF0YSkKIHsKICAgICBFbmNvZGVyIGVuY29kZXI7CiAKLSAgICBlbmNvZGVyIDw8
IGVudHJ5LmNhY2hlU3RvcmFnZVZlcnNpb247Ci0gICAgZW5jb2RlciA8PCBlbnRyeS5rZXk7Ci0g
ICAgZW5jb2RlciA8PCBlbnRyeS50aW1lU3RhbXA7Ci0gICAgZW5jb2RlciA8PCBlbnRyeS5oZWFk
ZXJDaGVja3N1bTsKLSAgICBlbmNvZGVyIDw8IGVudHJ5LmhlYWRlclNpemU7Ci0gICAgZW5jb2Rl
ciA8PCBlbnRyeS5ib2R5Q2hlY2tzdW07Ci0gICAgZW5jb2RlciA8PCBlbnRyeS5ib2R5U2l6ZTsK
KyAgICBlbmNvZGVyIDw8IG1ldGFEYXRhLmNhY2hlU3RvcmFnZVZlcnNpb247CisgICAgZW5jb2Rl
ciA8PCBtZXRhRGF0YS5rZXk7CisgICAgZW5jb2RlciA8PCBtZXRhRGF0YS50aW1lU3RhbXA7Cisg
ICAgZW5jb2RlciA8PCBtZXRhRGF0YS5oZWFkZXJDaGVja3N1bTsKKyAgICBlbmNvZGVyIDw8IG1l
dGFEYXRhLmhlYWRlclNpemU7CisgICAgZW5jb2RlciA8PCBtZXRhRGF0YS5ib2R5Q2hlY2tzdW07
CisgICAgZW5jb2RlciA8PCBtZXRhRGF0YS5ib2R5U2l6ZTsKIAogICAgIGVuY29kZXIuZW5jb2Rl
Q2hlY2tzdW0oKTsKIAogICAgIHJldHVybiBEYXRhKGVuY29kZXIuYnVmZmVyKCksIGVuY29kZXIu
YnVmZmVyU2l6ZSgpKTsKIH0KIAotc3RhdGljIERhdGEgZW5jb2RlRW50cnlIZWFkZXIoY29uc3Qg
U3RvcmFnZTo6RW50cnkmIGVudHJ5KQorc3RhdGljIERhdGEgZW5jb2RlUmVjb3JkSGVhZGVyKGNv
bnN0IFN0b3JhZ2U6OlJlY29yZCYgcmVjb3JkKQogewotICAgIEVudHJ5TWV0YURhdGEgbWV0YURh
dGEoZW50cnkua2V5KTsKLSAgICBtZXRhRGF0YS50aW1lU3RhbXAgPSBlbnRyeS50aW1lU3RhbXA7
Ci0gICAgbWV0YURhdGEuaGVhZGVyQ2hlY2tzdW0gPSBoYXNoRGF0YShlbnRyeS5oZWFkZXIpOwot
ICAgIG1ldGFEYXRhLmhlYWRlclNpemUgPSBlbnRyeS5oZWFkZXIuc2l6ZSgpOwotICAgIG1ldGFE
YXRhLmJvZHlDaGVja3N1bSA9IGhhc2hEYXRhKGVudHJ5LmJvZHkpOwotICAgIG1ldGFEYXRhLmJv
ZHlTaXplID0gZW50cnkuYm9keS5zaXplKCk7Ci0KLSAgICBhdXRvIGVuY29kZWRNZXRhRGF0YSA9
IGVuY29kZUVudHJ5TWV0YURhdGEobWV0YURhdGEpOwotICAgIGF1dG8gaGVhZGVyRGF0YSA9IGNv
bmNhdGVuYXRlKGVuY29kZWRNZXRhRGF0YSwgZW50cnkuaGVhZGVyKTsKLSAgICBpZiAoIWVudHJ5
LmJvZHkuc2l6ZSgpKQorICAgIFJlY29yZE1ldGFEYXRhIG1ldGFEYXRhKHJlY29yZC5rZXkpOwor
ICAgIG1ldGFEYXRhLnRpbWVTdGFtcCA9IHJlY29yZC50aW1lU3RhbXA7CisgICAgbWV0YURhdGEu
aGVhZGVyQ2hlY2tzdW0gPSBoYXNoRGF0YShyZWNvcmQuaGVhZGVyKTsKKyAgICBtZXRhRGF0YS5o
ZWFkZXJTaXplID0gcmVjb3JkLmhlYWRlci5zaXplKCk7CisgICAgbWV0YURhdGEuYm9keUNoZWNr
c3VtID0gaGFzaERhdGEocmVjb3JkLmJvZHkpOworICAgIG1ldGFEYXRhLmJvZHlTaXplID0gcmVj
b3JkLmJvZHkuc2l6ZSgpOworCisgICAgYXV0byBlbmNvZGVkTWV0YURhdGEgPSBlbmNvZGVSZWNv
cmRNZXRhRGF0YShtZXRhRGF0YSk7CisgICAgYXV0byBoZWFkZXJEYXRhID0gY29uY2F0ZW5hdGUo
ZW5jb2RlZE1ldGFEYXRhLCByZWNvcmQuaGVhZGVyKTsKKyAgICBpZiAoIXJlY29yZC5ib2R5LnNp
emUoKSkKICAgICAgICAgcmV0dXJuIHsgaGVhZGVyRGF0YSB9OwogCiAgICAgc2l6ZV90IGRhdGFP
ZmZzZXQgPSBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2YocGFnZVNpemUoKSwgaGVhZGVyRGF0YS5z
aXplKCkpOwpAQCAtMzEzLDggKzMxMyw4IEBAIHZvaWQgU3RvcmFnZTo6ZGlzcGF0Y2hSZWFkT3Bl
cmF0aW9uKGNvbnMKICAgICAgICAgICAgICAgICByZW1vdmUocmVhZC5rZXkpOwogICAgICAgICAg
ICAgICAgIHJlYWQuY29tcGxldGlvbkhhbmRsZXIobnVsbHB0cik7CiAgICAgICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgICAgIGF1dG8gZW50cnkgPSBkZWNvZGVFbnRyeShmaWxlRGF0YSwg
Y2hhbm5lbC0+ZmlsZURlc2NyaXB0b3IoKSwgcmVhZC5rZXkpOwotICAgICAgICAgICAgICAgIGJv
b2wgc3VjY2VzcyA9IHJlYWQuY29tcGxldGlvbkhhbmRsZXIoV1RGOjptb3ZlKGVudHJ5KSk7Cisg
ICAgICAgICAgICAgICAgYXV0byByZWNvcmQgPSBkZWNvZGVSZWNvcmQoZmlsZURhdGEsIGNoYW5u
ZWwtPmZpbGVEZXNjcmlwdG9yKCksIHJlYWQua2V5KTsKKyAgICAgICAgICAgICAgICBib29sIHN1
Y2Nlc3MgPSByZWFkLmNvbXBsZXRpb25IYW5kbGVyKFdURjo6bW92ZShyZWNvcmQpKTsKICAgICAg
ICAgICAgICAgICBpZiAoc3VjY2VzcykKICAgICAgICAgICAgICAgICAgICAgdXBkYXRlRmlsZUFj
Y2Vzc1RpbWUoKmNoYW5uZWwpOwogICAgICAgICAgICAgICAgIGVsc2UKQEAgLTM1NCwxMSArMzU0
LDExIEBAIHZvaWQgU3RvcmFnZTo6ZGlzcGF0Y2hQZW5kaW5nUmVhZE9wZXJhdGkKIHRlbXBsYXRl
IDxjbGFzcyBUPiBib29sIHJldHJpZXZlRnJvbU1lbW9yeShjb25zdCBUJiBvcGVyYXRpb25zLCBj
b25zdCBLZXkmIGtleSwgU3RvcmFnZTo6UmV0cmlldmVDb21wbGV0aW9uSGFuZGxlciYgY29tcGxl
dGlvbkhhbmRsZXIpCiB7CiAgICAgZm9yIChhdXRvJiBvcGVyYXRpb24gOiBvcGVyYXRpb25zKSB7
Ci0gICAgICAgIGlmIChvcGVyYXRpb24tPmVudHJ5LmtleSA9PSBrZXkpIHsKKyAgICAgICAgaWYg
KG9wZXJhdGlvbi0+cmVjb3JkLmtleSA9PSBrZXkpIHsKICAgICAgICAgICAgIExPRyhOZXR3b3Jr
Q2FjaGVTdG9yYWdlLCAiKE5ldHdvcmtQcm9jZXNzKSBmb3VuZCB3cml0ZSBvcGVyYXRpb24gaW4g
cHJvZ3Jlc3MiKTsKLSAgICAgICAgICAgIGF1dG8gZW50cnkgPSBvcGVyYXRpb24tPmVudHJ5Owot
ICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtlbnRyeSwgY29tcGxldGlvbkhh
bmRsZXJdIHsKLSAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGQ6Om1ha2VfdW5p
cXVlPFN0b3JhZ2U6OkVudHJ5PihlbnRyeSkpOworICAgICAgICAgICAgYXV0byByZWNvcmQgPSBv
cGVyYXRpb24tPnJlY29yZDsKKyAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChb
cmVjb3JkLCBjb21wbGV0aW9uSGFuZGxlcl0geworICAgICAgICAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKHN0ZDo6bWFrZV91bmlxdWU8U3RvcmFnZTo6UmVjb3JkPihyZWNvcmQpKTsKICAgICAg
ICAgICAgIH0pOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KQEAgLTM5MSw0
MSArMzkxLDQxIEBAIHZvaWQgU3RvcmFnZTo6cmV0cmlldmUoY29uc3QgS2V5JiBrZXksIHUKICAg
ICBkaXNwYXRjaFBlbmRpbmdSZWFkT3BlcmF0aW9ucygpOwogfQogCi12b2lkIFN0b3JhZ2U6OnN0
b3JlKGNvbnN0IEVudHJ5JiBlbnRyeSwgU3RvcmVDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRp
b25IYW5kbGVyKQordm9pZCBTdG9yYWdlOjpzdG9yZShjb25zdCBSZWNvcmQmIHJlY29yZCwgU3Rv
cmVDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChS
dW5Mb29wOjppc01haW4oKSk7Ci0gICAgQVNTRVJUKCFlbnRyeS5rZXkuaXNOdWxsKCkpOworICAg
IEFTU0VSVCghcmVjb3JkLmtleS5pc051bGwoKSk7CiAKICAgICBpZiAoIW1fbWF4aW11bVNpemUp
IHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UsIHsgfSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBtX3BlbmRpbmdXcml0ZU9wZXJhdGlvbnMuYXBwZW5kKG5ldyBXcml0
ZU9wZXJhdGlvbiB7IGVudHJ5LCB7IH0sIFdURjo6bW92ZShjb21wbGV0aW9uSGFuZGxlcikgfSk7
CisgICAgbV9wZW5kaW5nV3JpdGVPcGVyYXRpb25zLmFwcGVuZChuZXcgV3JpdGVPcGVyYXRpb24g
eyByZWNvcmQsIHsgfSwgV1RGOjptb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSB9KTsKIAogICAgIC8v
IEFkZCBrZXkgdG8gdGhlIGZpbHRlciBhbHJlYWR5IGhlcmUgYXMgd2UgZG8gbG9va3VwcyBmcm9t
IHRoZSBwZW5kaW5nIG9wZXJhdGlvbnMgdG9vLgotICAgIG1fY29udGVudHNGaWx0ZXIuYWRkKGVu
dHJ5LmtleS5zaG9ydEhhc2goKSk7CisgICAgbV9jb250ZW50c0ZpbHRlci5hZGQocmVjb3JkLmtl
eS5zaG9ydEhhc2goKSk7CiAKICAgICBkaXNwYXRjaFBlbmRpbmdXcml0ZU9wZXJhdGlvbnMoKTsK
IH0KIAotdm9pZCBTdG9yYWdlOjp1cGRhdGUoY29uc3QgRW50cnkmIHVwZGF0ZUVudHJ5LCBjb25z
dCBFbnRyeSYgZXhpc3RpbmdFbnRyeSwgU3RvcmVDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRp
b25IYW5kbGVyKQordm9pZCBTdG9yYWdlOjp1cGRhdGUoY29uc3QgUmVjb3JkJiB1cGRhdGVSZWNv
cmQsIGNvbnN0IFJlY29yZCYgZXhpc3RpbmdSZWNvcmQsIFN0b3JlQ29tcGxldGlvbkhhbmRsZXIm
JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwot
ICAgIEFTU0VSVCghZXhpc3RpbmdFbnRyeS5rZXkuaXNOdWxsKCkpOwotICAgIEFTU0VSVChleGlz
dGluZ0VudHJ5LmtleSA9PSB1cGRhdGVFbnRyeS5rZXkpOworICAgIEFTU0VSVCghZXhpc3RpbmdS
ZWNvcmQua2V5LmlzTnVsbCgpKTsKKyAgICBBU1NFUlQoZXhpc3RpbmdSZWNvcmQua2V5ID09IHVw
ZGF0ZVJlY29yZC5rZXkpOwogCiAgICAgaWYgKCFtX21heGltdW1TaXplKSB7CiAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKGZhbHNlLCB7IH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgbV9wZW5kaW5nV3JpdGVPcGVyYXRpb25zLmFwcGVuZChuZXcgV3JpdGVPcGVyYXRpb24geyB1
cGRhdGVFbnRyeSwgZXhpc3RpbmdFbnRyeSwgV1RGOjptb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSB9
KTsKKyAgICBtX3BlbmRpbmdXcml0ZU9wZXJhdGlvbnMuYXBwZW5kKG5ldyBXcml0ZU9wZXJhdGlv
biB7IHVwZGF0ZVJlY29yZCwgZXhpc3RpbmdSZWNvcmQsIFdURjo6bW92ZShjb21wbGV0aW9uSGFu
ZGxlcikgfSk7CiAKICAgICBkaXNwYXRjaFBlbmRpbmdXcml0ZU9wZXJhdGlvbnMoKTsKIH0KIAot
dm9pZCBTdG9yYWdlOjp0cmF2ZXJzZShzdGQ6OmZ1bmN0aW9uPHZvaWQgKGNvbnN0IEVudHJ5Kik+
JiYgdHJhdmVyc2VIYW5kbGVyKQordm9pZCBTdG9yYWdlOjp0cmF2ZXJzZShzdGQ6OmZ1bmN0aW9u
PHZvaWQgKGNvbnN0IFJlY29yZCopPiYmIHRyYXZlcnNlSGFuZGxlcikKIHsKICAgICBTdHJpbmdD
YXB0dXJlIGNhY2hlUGF0aENhcHR1cmUobV9kaXJlY3RvcnlQYXRoKTsKICAgICBpb1F1ZXVlKCku
ZGlzcGF0Y2goW3RoaXMsIGNhY2hlUGF0aENhcHR1cmUsIHRyYXZlcnNlSGFuZGxlcl0gewpAQCAt
NDM2LDExICs0MzYsMTEgQEAgdm9pZCBTdG9yYWdlOjp0cmF2ZXJzZShzdGQ6OmZ1bmN0aW9uPHZv
aQogICAgICAgICAgICAgY29uc3Qgc2l6ZV90IGhlYWRlclJlYWRTaXplID0gMTYgPDwgMTA7CiAg
ICAgICAgICAgICAvLyBGSVhNRTogVHJhdmVyc2FsIGlzIHNsb3dlciB0aGFuIGl0IHNob3VsZCBi
ZSBkdWUgdG8gbGFjayBvZiBwYXJhbGxlbGlzbS4KICAgICAgICAgICAgIGNoYW5uZWwtPnJlYWRT
eW5jKDAsIGhlYWRlclJlYWRTaXplLCBbdGhpcywgJnRyYXZlcnNlSGFuZGxlcl0oRGF0YSYgZmls
ZURhdGEsIGludCkgewotICAgICAgICAgICAgICAgIEVudHJ5TWV0YURhdGEgbWV0YURhdGE7Cisg
ICAgICAgICAgICAgICAgUmVjb3JkTWV0YURhdGEgbWV0YURhdGE7CiAgICAgICAgICAgICAgICAg
RGF0YSBoZWFkZXJEYXRhOwotICAgICAgICAgICAgICAgIGlmIChkZWNvZGVFbnRyeUhlYWRlcihm
aWxlRGF0YSwgbWV0YURhdGEsIGhlYWRlckRhdGEpKSB7Ci0gICAgICAgICAgICAgICAgICAgIEVu
dHJ5IGVudHJ5IHsgbWV0YURhdGEua2V5LCBtZXRhRGF0YS50aW1lU3RhbXAsIGhlYWRlckRhdGEs
IHsgfSB9OwotICAgICAgICAgICAgICAgICAgICB0cmF2ZXJzZUhhbmRsZXIoJmVudHJ5KTsKKyAg
ICAgICAgICAgICAgICBpZiAoZGVjb2RlUmVjb3JkSGVhZGVyKGZpbGVEYXRhLCBtZXRhRGF0YSwg
aGVhZGVyRGF0YSkpIHsKKyAgICAgICAgICAgICAgICAgICAgUmVjb3JkIHJlY29yZCB7IG1ldGFE
YXRhLmtleSwgbWV0YURhdGEudGltZVN0YW1wLCBoZWFkZXJEYXRhLCB7IH0gfTsKKyAgICAgICAg
ICAgICAgICAgICAgdHJhdmVyc2VIYW5kbGVyKCZyZWNvcmQpOwogICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIH0pOwogICAgICAgICB9KTsKQEAgLTQ2NSw3ICs0NjUsNyBAQCB2b2lkIFN0
b3JhZ2U6OmRpc3BhdGNoUGVuZGluZ1dyaXRlT3BlcmF0CiAgICAgICAgIGF1dG8mIHdyaXRlID0g
KndyaXRlT3BlcmF0aW9uOwogICAgICAgICBtX2FjdGl2ZVdyaXRlT3BlcmF0aW9ucy5hZGQoV1RG
Ojptb3ZlKHdyaXRlT3BlcmF0aW9uKSk7CiAKLSAgICAgICAgaWYgKHdyaXRlLmV4aXN0aW5nRW50
cnkgJiYgY2FjaGVNYXlDb250YWluKHdyaXRlLmVudHJ5LmtleS5zaG9ydEhhc2goKSkpIHsKKyAg
ICAgICAgaWYgKHdyaXRlLmV4aXN0aW5nUmVjb3JkICYmIGNhY2hlTWF5Q29udGFpbih3cml0ZS5y
ZWNvcmQua2V5LnNob3J0SGFzaCgpKSkgewogICAgICAgICAgICAgZGlzcGF0Y2hIZWFkZXJXcml0
ZU9wZXJhdGlvbih3cml0ZSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQpAQCAt
NDc4LDI1ICs0NzgsMjUgQEAgdm9pZCBTdG9yYWdlOjpkaXNwYXRjaEZ1bGxXcml0ZU9wZXJhdGlv
bgogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAgICAgQVNTRVJUKG1fYWN0aXZlV3Jp
dGVPcGVyYXRpb25zLmNvbnRhaW5zKCZ3cml0ZSkpOwogCi0gICAgaWYgKCFtX2NvbnRlbnRzRmls
dGVyLm1heUNvbnRhaW4od3JpdGUuZW50cnkua2V5LnNob3J0SGFzaCgpKSkKLSAgICAgICAgbV9j
b250ZW50c0ZpbHRlci5hZGQod3JpdGUuZW50cnkua2V5LnNob3J0SGFzaCgpKTsKKyAgICBpZiAo
IW1fY29udGVudHNGaWx0ZXIubWF5Q29udGFpbih3cml0ZS5yZWNvcmQua2V5LnNob3J0SGFzaCgp
KSkKKyAgICAgICAgbV9jb250ZW50c0ZpbHRlci5hZGQod3JpdGUucmVjb3JkLmtleS5zaG9ydEhh
c2goKSk7CiAKICAgICBTdHJpbmdDYXB0dXJlIGNhY2hlUGF0aENhcHR1cmUobV9kaXJlY3RvcnlQ
YXRoKTsKICAgICBiYWNrZ3JvdW5kSU9RdWV1ZSgpLmRpc3BhdGNoKFt0aGlzLCAmd3JpdGUsIGNh
Y2hlUGF0aENhcHR1cmVdIHsKLSAgICAgICAgYXV0byBlbmNvZGVkSGVhZGVyID0gZW5jb2RlRW50
cnlIZWFkZXIod3JpdGUuZW50cnkpOwotICAgICAgICBhdXRvIGhlYWRlckFuZEJvZHlEYXRhID0g
Y29uY2F0ZW5hdGUoZW5jb2RlZEhlYWRlciwgd3JpdGUuZW50cnkuYm9keSk7CisgICAgICAgIGF1
dG8gZW5jb2RlZEhlYWRlciA9IGVuY29kZVJlY29yZEhlYWRlcih3cml0ZS5yZWNvcmQpOworICAg
ICAgICBhdXRvIGhlYWRlckFuZEJvZHlEYXRhID0gY29uY2F0ZW5hdGUoZW5jb2RlZEhlYWRlciwg
d3JpdGUucmVjb3JkLmJvZHkpOwogCi0gICAgICAgIGF1dG8gY2hhbm5lbCA9IG9wZW5GaWxlRm9y
S2V5KHdyaXRlLmVudHJ5LmtleSwgSU9DaGFubmVsOjpUeXBlOjpDcmVhdGUsIGNhY2hlUGF0aENh
cHR1cmUuc3RyaW5nKCkpOworICAgICAgICBhdXRvIGNoYW5uZWwgPSBvcGVuRmlsZUZvcktleSh3
cml0ZS5yZWNvcmQua2V5LCBJT0NoYW5uZWw6OlR5cGU6OkNyZWF0ZSwgY2FjaGVQYXRoQ2FwdHVy
ZS5zdHJpbmcoKSk7CiAgICAgICAgIGludCBmZCA9IGNoYW5uZWwtPmZpbGVEZXNjcmlwdG9yKCk7
CiAgICAgICAgIHNpemVfdCBib2R5T2Zmc2V0ID0gZW5jb2RlZEhlYWRlci5zaXplKCk7CiAKICAg
ICAgICAgY2hhbm5lbC0+d3JpdGUoMCwgaGVhZGVyQW5kQm9keURhdGEsIFt0aGlzLCAmd3JpdGUs
IGJvZHlPZmZzZXQsIGZkXShpbnQgZXJyb3IpIHsKICAgICAgICAgICAgIExPRyhOZXR3b3JrQ2Fj
aGVTdG9yYWdlLCAiKE5ldHdvcmtQcm9jZXNzKSB3cml0ZSBjb21wbGV0ZSBlcnJvcj0lZCIsIGVy
cm9yKTsKICAgICAgICAgICAgIGlmIChlcnJvcikgewotICAgICAgICAgICAgICAgIGlmIChtX2Nv
bnRlbnRzRmlsdGVyLm1heUNvbnRhaW4od3JpdGUuZW50cnkua2V5LnNob3J0SGFzaCgpKSkKLSAg
ICAgICAgICAgICAgICAgICAgbV9jb250ZW50c0ZpbHRlci5yZW1vdmUod3JpdGUuZW50cnkua2V5
LnNob3J0SGFzaCgpKTsKKyAgICAgICAgICAgICAgICBpZiAobV9jb250ZW50c0ZpbHRlci5tYXlD
b250YWluKHdyaXRlLnJlY29yZC5rZXkuc2hvcnRIYXNoKCkpKQorICAgICAgICAgICAgICAgICAg
ICBtX2NvbnRlbnRzRmlsdGVyLnJlbW92ZSh3cml0ZS5yZWNvcmQua2V5LnNob3J0SGFzaCgpKTsK
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHNpemVfdCBib2R5U2l6ZSA9IHdyaXRlLmVudHJ5
LmJvZHkuc2l6ZSgpOworICAgICAgICAgICAgc2l6ZV90IGJvZHlTaXplID0gd3JpdGUucmVjb3Jk
LmJvZHkuc2l6ZSgpOwogICAgICAgICAgICAgc2l6ZV90IHRvdGFsU2l6ZSA9IGJvZHlPZmZzZXQg
KyBib2R5U2l6ZTsKIAogICAgICAgICAgICAgbV9hcHByb3hpbWF0ZVNpemUgKz0gdG90YWxTaXpl
OwpAQCAtNTE4LDE1ICs1MTgsMTUgQEAgdm9pZCBTdG9yYWdlOjpkaXNwYXRjaEZ1bGxXcml0ZU9w
ZXJhdGlvbgogdm9pZCBTdG9yYWdlOjpkaXNwYXRjaEhlYWRlcldyaXRlT3BlcmF0aW9uKGNvbnN0
IFdyaXRlT3BlcmF0aW9uJiB3cml0ZSkKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkp
OwotICAgIEFTU0VSVCh3cml0ZS5leGlzdGluZ0VudHJ5KTsKKyAgICBBU1NFUlQod3JpdGUuZXhp
c3RpbmdSZWNvcmQpOwogICAgIEFTU0VSVChtX2FjdGl2ZVdyaXRlT3BlcmF0aW9ucy5jb250YWlu
cygmd3JpdGUpKTsKLSAgICBBU1NFUlQoY2FjaGVNYXlDb250YWluKHdyaXRlLmVudHJ5LmtleS5z
aG9ydEhhc2goKSkpOworICAgIEFTU0VSVChjYWNoZU1heUNvbnRhaW4od3JpdGUucmVjb3JkLmtl
eS5zaG9ydEhhc2goKSkpOwogCiAgICAgLy8gVHJ5IHRvIHVwZGF0ZSB0aGUgaGVhZGVyIG9mIGFu
IGV4aXN0aW5nIGVudHJ5LgogICAgIFN0cmluZ0NhcHR1cmUgY2FjaGVQYXRoQ2FwdHVyZShtX2Rp
cmVjdG9yeVBhdGgpOwogICAgIGJhY2tncm91bmRJT1F1ZXVlKCkuZGlzcGF0Y2goW3RoaXMsICZ3
cml0ZSwgY2FjaGVQYXRoQ2FwdHVyZV0gewotICAgICAgICBhdXRvIGhlYWRlckRhdGEgPSBlbmNv
ZGVFbnRyeUhlYWRlcih3cml0ZS5lbnRyeSk7Ci0gICAgICAgIGF1dG8gZXhpc3RpbmdIZWFkZXJE
YXRhID0gZW5jb2RlRW50cnlIZWFkZXIod3JpdGUuZXhpc3RpbmdFbnRyeS52YWx1ZSgpKTsKKyAg
ICAgICAgYXV0byBoZWFkZXJEYXRhID0gZW5jb2RlUmVjb3JkSGVhZGVyKHdyaXRlLnJlY29yZCk7
CisgICAgICAgIGF1dG8gZXhpc3RpbmdIZWFkZXJEYXRhID0gZW5jb2RlUmVjb3JkSGVhZGVyKHdy
aXRlLmV4aXN0aW5nUmVjb3JkLnZhbHVlKCkpOwogCiAgICAgICAgIGJvb2wgcGFnZVJvdW5kZWRI
ZWFkZXJTaXplQ2hhbmdlZCA9IGhlYWRlckRhdGEuc2l6ZSgpICE9IGV4aXN0aW5nSGVhZGVyRGF0
YS5zaXplKCk7CiAgICAgICAgIGlmIChwYWdlUm91bmRlZEhlYWRlclNpemVDaGFuZ2VkKSB7CkBA
IC01MzcsMTIgKzUzNywxMiBAQCB2b2lkIFN0b3JhZ2U6OmRpc3BhdGNoSGVhZGVyV3JpdGVPcGVy
YXRpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBhdXRvIGNoYW5u
ZWwgPSBvcGVuRmlsZUZvcktleSh3cml0ZS5lbnRyeS5rZXksIElPQ2hhbm5lbDo6VHlwZTo6V3Jp
dGUsIGNhY2hlUGF0aENhcHR1cmUuc3RyaW5nKCkpOworICAgICAgICBhdXRvIGNoYW5uZWwgPSBv
cGVuRmlsZUZvcktleSh3cml0ZS5yZWNvcmQua2V5LCBJT0NoYW5uZWw6OlR5cGU6OldyaXRlLCBj
YWNoZVBhdGhDYXB0dXJlLnN0cmluZygpKTsKICAgICAgICAgY2hhbm5lbC0+d3JpdGUoMCwgaGVh
ZGVyRGF0YSwgW3RoaXMsICZ3cml0ZV0oaW50IGVycm9yKSB7CiAgICAgICAgICAgICBMT0coTmV0
d29ya0NhY2hlU3RvcmFnZSwgIihOZXR3b3JrUHJvY2VzcykgdXBkYXRlIGNvbXBsZXRlIGVycm9y
PSVkIiwgZXJyb3IpOwogCiAgICAgICAgICAgICBpZiAoZXJyb3IpCi0gICAgICAgICAgICAgICAg
cmVtb3ZlKHdyaXRlLmVudHJ5LmtleSk7CisgICAgICAgICAgICAgICAgcmVtb3ZlKHdyaXRlLnJl
Y29yZC5rZXkpOwogCiAgICAgICAgICAgICB3cml0ZS5jb21wbGV0aW9uSGFuZGxlcighZXJyb3Is
IHsgfSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZVN0b3JhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmgJKHJldmlzaW9uIDE4MjAwOCkKKysrIFNv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuaAko
d29ya2luZyBjb3B5KQpAQCAtNDcsMjQgKzQ3LDI0IEBAIGNsYXNzIFN0b3JhZ2UgewogcHVibGlj
OgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8U3RvcmFnZT4gb3Blbihjb25zdCBTdHJpbmcm
IGNhY2hlUGF0aCk7CiAKLSAgICBzdHJ1Y3QgRW50cnkgeworICAgIHN0cnVjdCBSZWNvcmQgewog
ICAgICAgICBLZXkga2V5OwogICAgICAgICBzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzIHRpbWVT
dGFtcDsKICAgICAgICAgRGF0YSBoZWFkZXI7CiAgICAgICAgIERhdGEgYm9keTsKICAgICB9Owog
ICAgIC8vIFRoaXMgbWF5IGNhbGwgY29tcGxldGlvbiBoYW5kbGVyIHN5bmNocm9ub3VzbHkgb24g
ZmFpbHVyZS4KLSAgICB0eXBlZGVmIHN0ZDo6ZnVuY3Rpb248Ym9vbCAoc3RkOjp1bmlxdWVfcHRy
PEVudHJ5Pik+IFJldHJpZXZlQ29tcGxldGlvbkhhbmRsZXI7CisgICAgdHlwZWRlZiBzdGQ6OmZ1
bmN0aW9uPGJvb2wgKHN0ZDo6dW5pcXVlX3B0cjxSZWNvcmQ+KT4gUmV0cmlldmVDb21wbGV0aW9u
SGFuZGxlcjsKICAgICB2b2lkIHJldHJpZXZlKGNvbnN0IEtleSYsIHVuc2lnbmVkIHByaW9yaXR5
LCBSZXRyaWV2ZUNvbXBsZXRpb25IYW5kbGVyJiYpOwogCiAgICAgdHlwZWRlZiBzdGQ6OmZ1bmN0
aW9uPHZvaWQgKGJvb2wgc3VjY2VzcywgY29uc3QgRGF0YSYgbWFwcGVkQm9keSk+IFN0b3JlQ29t
cGxldGlvbkhhbmRsZXI7Ci0gICAgdm9pZCBzdG9yZShjb25zdCBFbnRyeSYsIFN0b3JlQ29tcGxl
dGlvbkhhbmRsZXImJik7Ci0gICAgdm9pZCB1cGRhdGUoY29uc3QgRW50cnkmIHVwZGF0ZUVudHJ5
LCBjb25zdCBFbnRyeSYgZXhpc3RpbmdFbnRyeSwgU3RvcmVDb21wbGV0aW9uSGFuZGxlciYmKTsK
KyAgICB2b2lkIHN0b3JlKGNvbnN0IFJlY29yZCYsIFN0b3JlQ29tcGxldGlvbkhhbmRsZXImJik7
CisgICAgdm9pZCB1cGRhdGUoY29uc3QgUmVjb3JkJiB1cGRhdGVSZWNvcmQsIGNvbnN0IFJlY29y
ZCYgZXhpc3RpbmdSZWNvcmQsIFN0b3JlQ29tcGxldGlvbkhhbmRsZXImJik7CiAKICAgICB2b2lk
IHJlbW92ZShjb25zdCBLZXkmKTsKIAogICAgIC8vIE51bGwgZW50cnkgc2lnbmFscyBlbmQuCi0g
ICAgdm9pZCB0cmF2ZXJzZShzdGQ6OmZ1bmN0aW9uPHZvaWQgKGNvbnN0IEVudHJ5Kik+JiYpOwor
ICAgIHZvaWQgdHJhdmVyc2Uoc3RkOjpmdW5jdGlvbjx2b2lkIChjb25zdCBSZWNvcmQqKT4mJik7
CiAKICAgICB2b2lkIHNldE1heGltdW1TaXplKHNpemVfdCk7CiAgICAgdm9pZCBjbGVhcigpOwpA
QCAtODksOCArODksOCBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlzcGF0Y2hQZW5kaW5nUmVhZE9w
ZXJhdGlvbnMoKTsKIAogICAgIHN0cnVjdCBXcml0ZU9wZXJhdGlvbiB7Ci0gICAgICAgIEVudHJ5
IGVudHJ5OwotICAgICAgICBPcHRpb25hbDxFbnRyeT4gZXhpc3RpbmdFbnRyeTsKKyAgICAgICAg
UmVjb3JkIHJlY29yZDsKKyAgICAgICAgT3B0aW9uYWw8UmVjb3JkPiBleGlzdGluZ1JlY29yZDsK
ICAgICAgICAgU3RvcmVDb21wbGV0aW9uSGFuZGxlciBjb21wbGV0aW9uSGFuZGxlcjsKICAgICB9
OwogICAgIHZvaWQgZGlzcGF0Y2hGdWxsV3JpdGVPcGVyYXRpb24oY29uc3QgV3JpdGVPcGVyYXRp
b24mKTsK
</data>
<flag name="review"
          id="274306"
          type_id="1"
          status="+"
          setter="cdumez"
    />
          </attachment>
      

    </bug>

</bugzilla>