<?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>159360</bug_id>
          
          <creation_ts>2016-07-01 11:27:10 -0700</creation_ts>
          <short_desc>Blob content type not preserved when retrieving blobs from IndexedDB</short_desc>
          <delta_ts>2016-07-01 12:11:21 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>149117</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>achristensen</cc>
    
    <cc>alecflett</cc>
    
    <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>jsbell</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1207201</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-07-01 11:27:10 -0700</bug_when>
    <thetext>Blob content type not preserved when retrieving blobs from IndexedDB

Noticed this when storing an image/svg+xml blob, then trying to assign the blob to an &lt;img&gt; element and having that fail.

Since we didn&apos;t preserve content type coming out, we created a BitmapImage backing store instead of an SVGImage.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1207202</commentid>
    <comment_count>1</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-07-01 11:27:25 -0700</bug_when>
    <thetext>&lt;rdar://problem/27057357&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1207206</commentid>
    <comment_count>2</comment_count>
      <attachid>282564</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-07-01 11:32:25 -0700</bug_when>
    <thetext>Created attachment 282564
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1207213</commentid>
    <comment_count>3</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-07-01 11:54:13 -0700</bug_when>
    <thetext>WHOOPS - Forgot to include the test expectations!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1207217</commentid>
    <comment_count>4</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-07-01 12:11:21 -0700</bug_when>
    <thetext>https://trac.webkit.org/changeset/202747</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>282564</attachid>
            <date>2016-07-01 11:32:25 -0700</date>
            <delta_ts>2016-07-01 11:54:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-159360-20160701113203.patch</filename>
            <type>text/plain</type>
            <size>29636</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAyNjk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDQ5ZWRmYjQzZmZlZWZj
NDRhZDJiNmM5MzlhZTNiN2MyM2FlOTE0Mi4uMWI2YzE0MGVmYzczZGEyODc4ODI2NzhkM2I2YTAw
MGNjYWM0Y2YxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDE2LTA3LTAxICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBCbG9iIGNvbnRlbnQgdHlw
ZSBub3QgcHJlc2VydmVkIHdoZW4gcmV0cmlldmluZyBibG9icyBmcm9tIEluZGV4ZWREQi4KKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI3MDU3MzU3PiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE1OTM2MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRlc3Q6IHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9ibG9iLXN2
Zy1pbWFnZS5odG1sCisKKyAgICAgICAgKiBmaWxlYXBpL0Jsb2IuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QmxvYjo6QmxvYik6CisKKyAgICAgICAgKiBmaWxlYXBpL1RocmVhZGFibGVCbG9iUmVn
aXN0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cG9zdFRvTWFpblRocmVhZCk6CisgICAgICAg
IChXZWJDb3JlOjpUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkxPcHRpb25h
bGx5RmlsZUJhY2tlZCk6IFBhc3MgYWxvbmcgdGhlIGNvbnRlbnQgdHlwZQorICAgICAgICAgIHRv
IHRoZSBibG9iIHJlZ2lzdHJ5IHNvIHRoYXQgaWYgdGhlIGZpbGUtYmFja2VkIGJsb2IgdGFrZXMg
b3ZlciwgaXQgaGFzIHRoZSBjb250ZW50IHR5cGUuCisgICAgICAgIChXZWJDb3JlOjp0aHJlYWRh
YmxlUXVldWUpOiBEZWxldGVkLgorICAgICAgICAqIGZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdp
c3RyeS5oOgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnkuaDoKKwor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpCbG9iUmVnaXN0cnlJbXBsOjpyZWdpc3RlckJsb2JVUkwpOgorICAgICAgICAo
V2ViQ29yZTo6QmxvYlJlZ2lzdHJ5SW1wbDo6cmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVC
YWNrZWQpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5oOgor
CiAyMDE2LTA2LTMwICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CiAKICAgICAg
ICAgW2lPU10gTWVkaWEgY29udHJvbHMgYXJlIHRvbyBjcmFtcGVkIHdpdGggc21hbGwgdmlkZW8K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBlMDE4YWFlNmUyYjY1MGVlYmE2YWM5YzVhYmIzZTJhZGJhZjkxZDAxLi43
MzIzNGUyNDA0NzUzM2ViZTcxNzE0ZjU2MzQ4NzhjNGVmYWY0NTE5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjMgQEAKKzIwMTYtMDctMDEgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29t
PgorCisgICAgICAgIEJsb2IgY29udGVudCB0eXBlIG5vdCBwcmVzZXJ2ZWQgd2hlbiByZXRyaWV2
aW5nIGJsb2JzIGZyb20gSW5kZXhlZERCLgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjcwNTcz
NTc+IGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU5MzYwCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9GaWxlQVBJL05ldHdvcmtCbG9iUmVnaXN0cnkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tl
ZCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5
Lmg6CisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpyZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZCk6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKwor
ICAgICAgICAqIFdlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OkJsb2JSZWdpc3RyeVByb3h5OjpyZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5
RmlsZUJhY2tlZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVBy
b3h5Lmg6CisKIDIwMTYtMDYtMzAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAog
ICAgICAgICBbaU9TXSBQcm9jZXNzIHN1c3BlbnNpb24gaXMgcHJldmVudGVkIGZvciAzMCBzZWNv
bmRzIGFmdGVyIGNsb3NpbmcgYSB0YWIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVh
cGkvQmxvYi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuY3BwCmluZGV4IGQ5Y2Ji
N2Y5ZTdiNDZhZGMzZTQ1YWM0YzQwNjI4YmY5MDA4YjVkYjUuLjIxNWIxOWNmMzM3ZjU2ZDljYjk5
NWM2YTczM2ZlZTkxMTNhN2NlODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkv
QmxvYi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmNwcApAQCAtMTAzLDcg
KzEwMyw3IEBAIEJsb2I6OkJsb2IoRGVzZXJpYWxpemF0aW9uQ29udHJ1Y3RvciwgY29uc3QgVVJM
JiBzcmNVUkwsIGNvbnN0IFN0cmluZyYgdHlwZSwgbG9uCiAgICAgaWYgKGZpbGVCYWNrZWRQYXRo
LmlzRW1wdHkoKSkKICAgICAgICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9i
VVJMKG51bGxwdHIsIG1faW50ZXJuYWxVUkwsIHNyY1VSTCk7CiAgICAgZWxzZQotICAgICAgICBU
aHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tl
ZChtX2ludGVybmFsVVJMLCBzcmNVUkwsIGZpbGVCYWNrZWRQYXRoKTsKKyAgICAgICAgVGhyZWFk
YWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQobV9p
bnRlcm5hbFVSTCwgc3JjVVJMLCBmaWxlQmFja2VkUGF0aCwgbV90eXBlKTsKIH0KIAogQmxvYjo6
QmxvYihjb25zdCBVUkwmIHNyY1VSTCwgbG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgZW5kLCBj
b25zdCBTdHJpbmcmIHR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL1Ro
cmVhZGFibGVCbG9iUmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9UaHJlYWRh
YmxlQmxvYlJlZ2lzdHJ5LmNwcAppbmRleCA3ZjE5YWNjM2M5Y2I3Y2I2Y2U5NmM2NjlmZGQ4YTk0
OWFhMmViODQ4Li45YWFlMzJiM2JhOTJkNTUzNjE0ZTY1NDI1NTI5M2YyYjljYjg0NzE5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL1RocmVhZGFibGVCbG9iUmVnaXN0cnkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5jcHAK
QEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQsIDIwMTYgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQpAQCAtNjQsNyArNjUsNyBAQCBzdGF0aWMgVGhyZWFkU3BlY2lmaWM8QmxvYlVybE9y
aWdpbk1hcD4mIG9yaWdpbk1hcCgpCiAgICAgcmV0dXJuICptYXA7CiB9CiAKLXN0YXRpYyBDcm9z
c1RocmVhZFF1ZXVlPENyb3NzVGhyZWFkVGFzaz4mIHRocmVhZGFibGVRdWV1ZSgpCitzdGF0aWMg
dm9pZCBwb3N0VG9NYWluVGhyZWFkKENyb3NzVGhyZWFkVGFzayYmIHRhc2spCiB7CiAgICAgc3Rh
dGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOwogICAgIHN0YXRpYyBDcm9zc1RocmVhZFF1ZXVl
PENyb3NzVGhyZWFkVGFzaz4qIHF1ZXVlOwpAQCAtNzIsNyArNzMsMTMgQEAgc3RhdGljIENyb3Nz
VGhyZWFkUXVldWU8Q3Jvc3NUaHJlYWRUYXNrPiYgdGhyZWFkYWJsZVF1ZXVlKCkKICAgICAgICAg
cXVldWUgPSBuZXcgQ3Jvc3NUaHJlYWRRdWV1ZTxDcm9zc1RocmVhZFRhc2s+OwogICAgIH0pOwog
Ci0gICAgcmV0dXJuICpxdWV1ZTsKKyAgICBxdWV1ZS0+YXBwZW5kKFdURk1vdmUodGFzaykpOwor
CisgICAgY2FsbE9uTWFpblRocmVhZChbXSB7CisgICAgICAgIGF1dG8gdGFzayA9IHF1ZXVlLT50
cnlHZXRNZXNzYWdlKCk7CisgICAgICAgIEFTU0VSVCh0YXNrKTsKKyAgICAgICAgdGFzay0+cGVy
Zm9ybVRhc2soKTsKKyAgICB9KTsKIH0KIAogdm9pZCBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5Ojpy
ZWdpc3RlckZpbGVCbG9iVVJMKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHBhdGgsIGNv
bnN0IFN0cmluZyYgY29udGVudFR5cGUpCkBAIC0xMTQsMTkgKzEyMSwxMiBAQCB2b2lkIFRocmVh
ZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTChTZWN1cml0eU9yaWdpbiogb3JpZ2lu
LCBjb25zdCBVUkwmCiAgICAgfQogfQogCi12b2lkIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJl
Z2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBV
UkwmIHNyY1VSTCwgY29uc3QgU3RyaW5nJiBmaWxlQmFja2VkUGF0aCkKK3ZvaWQgVGhyZWFkYWJs
ZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQoY29uc3Qg
VVJMJiB1cmwsIGNvbnN0IFVSTCYgc3JjVVJMLCBjb25zdCBTdHJpbmcmIGZpbGVCYWNrZWRQYXRo
LCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQogewogICAgIGlmIChpc01haW5UaHJlYWQoKSkK
LSAgICAgICAgYmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNr
ZWQodXJsLCBzcmNVUkwsIEJsb2JEYXRhRmlsZVJlZmVyZW5jZTo6Y3JlYXRlKGZpbGVCYWNrZWRQ
YXRoKSk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIHRocmVhZGFibGVRdWV1ZSgpLmFwcGVuZChjcmVh
dGVDcm9zc1RocmVhZFRhc2soVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJM
T3B0aW9uYWxseUZpbGVCYWNrZWQsIHVybCwgc3JjVVJMLCBmaWxlQmFja2VkUGF0aCkpOwotCi0g
ICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW10gewotICAgICAgICAgICAgYXV0byB0YXNrID0gdGhy
ZWFkYWJsZVF1ZXVlKCkudHJ5R2V0TWVzc2FnZSgpOwotICAgICAgICAgICAgQVNTRVJUKHRhc2sp
OwotICAgICAgICAgICAgdGFzay0+cGVyZm9ybVRhc2soKTsKLSAgICAgICAgfSk7Ci0gICAgfQor
ICAgICAgICBibG9iUmVnaXN0cnkoKS5yZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tl
ZCh1cmwsIHNyY1VSTCwgQmxvYkRhdGFGaWxlUmVmZXJlbmNlOjpjcmVhdGUoZmlsZUJhY2tlZFBh
dGgpLCBjb250ZW50VHlwZSk7CisgICAgZWxzZQorICAgICAgICBwb3N0VG9NYWluVGhyZWFkKGNy
ZWF0ZUNyb3NzVGhyZWFkVGFzayhUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JV
UkxPcHRpb25hbGx5RmlsZUJhY2tlZCwgdXJsLCBzcmNVUkwsIGZpbGVCYWNrZWRQYXRoLCBjb250
ZW50VHlwZSkpOwogfQogCiB2b2lkIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxv
YlVSTEZvclNsaWNlKGNvbnN0IFVSTCYgbmV3VVJMLCBjb25zdCBVUkwmIHNyY1VSTCwgbG9uZyBs
b25nIHN0YXJ0LCBsb25nIGxvbmcgZW5kKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmls
ZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL1Ro
cmVhZGFibGVCbG9iUmVnaXN0cnkuaAppbmRleCA5NzA5OWI2ZTBkNWY4MGQ2YTc0ZTRhYTQwYzEw
MDNkODczMjQ4ZDAzLi43MTBlN2M3MGNiYTYzMTNlZjcwZjVjYWRkY2ZlZmNjYTllYWU4Y2E0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL1RocmVhZGFibGVCbG9iUmVnaXN0cnku
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL1RocmVhZGFibGVCbG9iUmVnaXN0cnkuaApA
QCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCwgMjAxNiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCkBAIC0yOCw4ICsyOSw3IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYg
VGhyZWFkYWJsZUJsb2JSZWdpc3RyeV9oCi0jZGVmaW5lIFRocmVhZGFibGVCbG9iUmVnaXN0cnlf
aAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KQEAgLTQ1LDcgKzQ1LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIHJl
Z2lzdGVyRmlsZUJsb2JVUkwoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBT
dHJpbmcmIGNvbnRlbnRUeXBlKTsKICAgICBzdGF0aWMgdm9pZCByZWdpc3RlckJsb2JVUkwoY29u
c3QgVVJMJiwgVmVjdG9yPEJsb2JQYXJ0PiBibG9iUGFydHMsIGNvbnN0IFN0cmluZyYgY29udGVu
dFR5cGUpOwogICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQmxvYlVSTChTZWN1cml0eU9yaWdpbios
IGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMKTsKLSAgICBzdGF0aWMgdm9pZCByZWdpc3Rl
ckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZChjb25zdCBVUkwmLCBjb25zdCBVUkwmIHNyY1VS
TCwgY29uc3QgU3RyaW5nJiBmaWxlQmFja2VkUGF0aCk7CisgICAgc3RhdGljIHZvaWQgcmVnaXN0
ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQoY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNV
UkwsIGNvbnN0IFN0cmluZyYgZmlsZUJhY2tlZFBhdGgsIGNvbnN0IFN0cmluZyYgY29udGVudFR5
cGUpOwogICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKGNvbnN0IFVSTCYg
bmV3VVJMLCBjb25zdCBVUkwmIHNyY1VSTCwgbG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgZW5k
KTsKICAgICBzdGF0aWMgdm9pZCB1bnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmKTsKIApAQCAt
NTcsNSArNTcsMyBAQCBwdWJsaWM6CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNl
bmRpZiAvLyBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeS5oCmluZGV4IDVkZGM5YzVkZjhlOTg1YjA4NDIxNTk4
YmQ1ZmI4MGRmMTZkMjViNDAuLjhjYWQwYjE0OGYyYjJiYTJmM2I0OWY1ZjI2MDYwNzU4NzY5YzJh
NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lz
dHJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnku
aApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCwgMjAxNiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCkBAIC01OCw3ICs1OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVn
aXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMKSA9IDA7CiAKICAgICAv
LyBSZWdpc3RlcnMgYSBuZXcgYmxvYiBVUkwgcmVmZXJyaW5nIHRvIHRoZSBibG9iIGRhdGEgaWRl
bnRpZmllZCBieSB0aGUgc3BlY2lmaWVkIHNyY1VSTCBvciwgaWYgbm9uZSBmb3VuZCwgcmVmZXJy
aW5nIHRvIHRoZSBmaWxlIGZvdW5kIGF0IHRoZSBnaXZlbiBwYXRoLgotICAgIHZpcnR1YWwgdm9p
ZCByZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZChjb25zdCBVUkwmLCBjb25zdCBV
UkwmIHNyY1VSTCwgUmVmUHRyPEJsb2JEYXRhRmlsZVJlZmVyZW5jZT4mJikgPSAwOworICAgIHZp
cnR1YWwgdm9pZCByZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZChjb25zdCBVUkwm
LCBjb25zdCBVUkwmIHNyY1VSTCwgUmVmUHRyPEJsb2JEYXRhRmlsZVJlZmVyZW5jZT4mJiwgY29u
c3QgU3RyaW5nJiBjb250ZW50VHlwZSkgPSAwOwogCiAgICAgLy8gTmVnYXRpdmUgc3RhcnQgYW5k
IGVuZCB2YWx1ZXMgc2VsZWN0IGZyb20gdGhlIGVuZC4KICAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0
ZXJCbG9iVVJMRm9yU2xpY2UoY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwsIGxvbmcgbG9u
ZyBzdGFydCwgbG9uZyBsb25nIGVuZCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHAKaW5kZXggYTY3ZmFjZjc1ZTBmZWMy
MWQ4NGMxNmNhZjRiNjQ4MjhiNmMyMGFlOC4uZTcxNDI2YmIzZDEwZTllY2I1NmQ3Mjk5MjdiOWYy
MDA5MmJlYWY3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9C
bG9iUmVnaXN0cnlJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L0Jsb2JSZWdpc3RyeUltcGwuY3BwCkBAIC0xNTYsMTAgKzE1NiwxMCBAQCB2b2lkIEJsb2JSZWdp
c3RyeUltcGw6OnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmIHVybCwgVmVjdG9yPEJsb2JQYXJ0
PiBibG9iUGFydAogCiB2b2lkIEJsb2JSZWdpc3RyeUltcGw6OnJlZ2lzdGVyQmxvYlVSTChjb25z
dCBVUkwmIHVybCwgY29uc3QgVVJMJiBzcmNVUkwpCiB7Ci0gICAgcmVnaXN0ZXJCbG9iVVJMT3B0
aW9uYWxseUZpbGVCYWNrZWQodXJsLCBzcmNVUkwsIG51bGxwdHIpOworICAgIHJlZ2lzdGVyQmxv
YlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKHVybCwgc3JjVVJMLCBudWxscHRyLCB7IH0pOwogfQog
Ci12b2lkIEJsb2JSZWdpc3RyeUltcGw6OnJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFj
a2VkKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBVUkwmIHNyY1VSTCwgUmVmUHRyPEJsb2JEYXRhRmls
ZVJlZmVyZW5jZT4mJiBmaWxlKQordm9pZCBCbG9iUmVnaXN0cnlJbXBsOjpyZWdpc3RlckJsb2JV
UkxPcHRpb25hbGx5RmlsZUJhY2tlZChjb25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBzcmNVUkws
IFJlZlB0cjxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+JiYgZmlsZSwgY29uc3QgU3RyaW5nJiBjb250
ZW50VHlwZSkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIHJlZ2lzdGVyQmxv
YlJlc291cmNlSGFuZGxlQ29uc3RydWN0b3IoKTsKQEAgLTE3Myw3ICsxNzMsNyBAQCB2b2lkIEJs
b2JSZWdpc3RyeUltcGw6OnJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKGNvbnN0
IFVSTCYgdXJsLCBjb25zdAogICAgIGlmICghZmlsZSB8fCBmaWxlLT5wYXRoKCkuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIGJhY2tpbmdGaWxlID0gQmxvYkRhdGE6OmNy
ZWF0ZSh7IH0pOworICAgIGF1dG8gYmFja2luZ0ZpbGUgPSBCbG9iRGF0YTo6Y3JlYXRlKGNvbnRl
bnRUeXBlKTsKICAgICBiYWNraW5nRmlsZS0+YXBwZW5kRmlsZShmaWxlLnJlbGVhc2VOb25OdWxs
KCkpOwogCiAgICAgbV9ibG9icy5zZXQodXJsLnN0cmluZygpLCBXVEZNb3ZlKGJhY2tpbmdGaWxl
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdp
c3RyeUltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5
SW1wbC5oCmluZGV4IDIwMzk3ZTllYzlmNDQxMGYxMDg1N2NhNGIyOWI2NTExZWJlNmMyMWMuLjlm
YTVjMDU2ZTNhZTliZGJiMTU3MzllMWMwMmZmOTNmMGQ1OWZhZjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5oCkBAIC0xLDUgKzEs
NiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0LCAyMDE2IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAg
LTYwLDcgKzYxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlZ2lzdGVyRmlsZUJsb2JVUkwoY29u
c3QgVVJMJiwgUmVmPEJsb2JEYXRhRmlsZVJlZmVyZW5jZT4mJiwgY29uc3QgU3RyaW5nJiBjb250
ZW50VHlwZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCByZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiwg
VmVjdG9yPEJsb2JQYXJ0PiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkgb3ZlcnJpZGU7CiAg
ICAgdm9pZCByZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwpIG92
ZXJyaWRlOwotICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQoY29u
c3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwsIFJlZlB0cjxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+
JiYpIG92ZXJyaWRlOworICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNr
ZWQoY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwsIFJlZlB0cjxCbG9iRGF0YUZpbGVSZWZl
cmVuY2U+JiYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpIG92ZXJyaWRlOwogICAgIHZvaWQg
cmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UoY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwsIGxv
bmcgbG9uZyBzdGFydCwgbG9uZyBsb25nIGVuZCkgb3ZlcnJpZGU7CiAgICAgdm9pZCB1bnJlZ2lz
dGVyQmxvYlVSTChjb25zdCBVUkwmKSBvdmVycmlkZTsKICAgICBib29sIGlzQmxvYlJlZ2lzdHJ5
SW1wbCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdvcmtCbG9iUmVnaXN0
cnkuY3BwCmluZGV4IDhkY2YxYmUzY2NkZmQ1MDhjMWJmNGQ5ZWE2YjIxNzVmYTE2ZDM5NDcuLjQx
MjE1OTA1ZjdmOTVjM2VkOGQwOTIxOTE4Mzg4NzYwYjA2ZmNhZWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJl
Z2lzdHJ5LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC04NCwxMiArODQsMTIgQEAgdm9pZCBOZXR3b3JrQmxvYlJlZ2lzdHJ5OjpyZWdp
c3RlckJsb2JVUkwoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqIGNvbm5lY3QKICAgICBt
YXBJdGVyYXRvci0+dmFsdWUuYWRkKHVybCk7CiB9CiAKLXZvaWQgTmV0d29ya0Jsb2JSZWdpc3Ry
eTo6cmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQoTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MqIGNvbm5lY3Rpb24sIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBVUkwmIHNyY1VS
TCwgY29uc3QgU3RyaW5nJiBmaWxlQmFja2VkUGF0aCkKK3ZvaWQgTmV0d29ya0Jsb2JSZWdpc3Ry
eTo6cmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQoTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MqIGNvbm5lY3Rpb24sIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBVUkwmIHNyY1VS
TCwgY29uc3QgU3RyaW5nJiBmaWxlQmFja2VkUGF0aCwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlw
ZSkKIHsKICAgICBhdXRvIGZpbGVSZWZlcmVuY2UgPSBjb25uZWN0aW9uLT5nZXRCbG9iRGF0YUZp
bGVSZWZlcmVuY2VGb3JQYXRoKGZpbGVCYWNrZWRQYXRoKTsKICAgICBBU1NFUlQoZmlsZVJlZmVy
ZW5jZSk7CiAKLSAgICBibG9iUmVnaXN0cnkoKS5yZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5Rmls
ZUJhY2tlZCh1cmwsIHNyY1VSTCwgV1RGTW92ZShmaWxlUmVmZXJlbmNlKSk7CisgICAgYmxvYlJl
Z2lzdHJ5KCkucmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQodXJsLCBzcmNVUkws
IFdURk1vdmUoZmlsZVJlZmVyZW5jZSksIGNvbnRlbnRUeXBlKTsKIAogICAgIEFTU0VSVCghbV9i
bG9ic0ZvckNvbm5lY3Rpb24uZ2V0KGNvbm5lY3Rpb24pLmNvbnRhaW5zKHVybCkpOwogICAgIEJs
b2JGb3JDb25uZWN0aW9uTWFwOjppdGVyYXRvciBtYXBJdGVyYXRvciA9IG1fYmxvYnNGb3JDb25u
ZWN0aW9uLmZpbmQoY29ubmVjdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdvcmtCbG9iUmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5oCmluZGV4IDc0MDZh
M2NiNWU2NzdlMmYzZmZiYWE3NGI4MzBmNjZkMmZhNGFmMGIuLmZiMTllOGViNjYzM2VkOGE5ODE2
OGY1N2MwNzY5ZDc2OWRlNWEzNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQ
cm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5oCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDggKzIzLDcg
QEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIE5l
dHdvcmtCbG9iUmVnaXN0cnlfaAotI2RlZmluZSBOZXR3b3JrQmxvYlJlZ2lzdHJ5X2gKKyNwcmFn
bWEgb25jZQogCiAjaW5jbHVkZSA8V2ViQ29yZS9VUkxIYXNoLmg+CiAjaW5jbHVkZSA8d3RmL0Z1
bmN0aW9uLmg+CkBAIC01MCw3ICs0OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlZ2lzdGVyRmls
ZUJsb2JVUkwoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqLCBjb25zdCBXZWJDb3JlOjpV
UkwmLCBjb25zdCBTdHJpbmcmIHBhdGgsIFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPiYmLCBjb25z
dCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKICAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTChOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2VzcyosIGNvbnN0IFdlYkNvcmU6OlVSTCYsIFZlY3RvcjxXZWJD
b3JlOjpCbG9iUGFydD4sIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOwogICAgIHZvaWQgcmVn
aXN0ZXJCbG9iVVJMKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiwgY29uc3QgV2ViQ29y
ZTo6VVJMJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBzcmNVUkwpOwotICAgIHZvaWQgcmVnaXN0ZXJC
bG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mq
LCBjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXZWJDb3JlOjpVUkwmIHNyY1VSTCwgY29uc3Qg
U3RyaW5nJiBmaWxlQmFja2VkUGF0aCk7CisgICAgdm9pZCByZWdpc3RlckJsb2JVUkxPcHRpb25h
bGx5RmlsZUJhY2tlZChOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyosIGNvbnN0IFdlYkNv
cmU6OlVSTCYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgc3JjVVJMLCBjb25zdCBTdHJpbmcmIGZpbGVC
YWNrZWRQYXRoLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKICAgICB2b2lkIHJlZ2lzdGVy
QmxvYlVSTEZvclNsaWNlKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiwgY29uc3QgV2Vi
Q29yZTo6VVJMJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBzcmNVUkwsIGludDY0X3Qgc3RhcnQsIGlu
dDY0X3QgZW5kKTsKICAgICB2b2lkIHVucmVnaXN0ZXJCbG9iVVJMKE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzKiwgY29uc3QgV2ViQ29yZTo6VVJMJik7CiAgICAgdWludDY0X3QgYmxvYlNp
emUoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqLCBjb25zdCBXZWJDb3JlOjpVUkwmKTsK
QEAgLTY4LDUgKzY3LDMgQEAgcHJpdmF0ZToKIH07CiAKIH0KLQotI2VuZGlmIC8vIE5ldHdvcmtC
bG9iUmVnaXN0cnlfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IDI2ZWVmNDBi
ZDJhZWM2N2NmYTRlMTlhZWNmMTY0MDQ0M2I0OGUzOGYuLjc3MzQ5NzA1YWZmZTk5NjRmMjc3MmNj
Zjg2MTRiNjA5YTQyY2Y1NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKQEAgLTI4
Niw5ICsyODYsOSBAQCBSZWZQdHI8V2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiBOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Z2V0QmxvYkRhdAogICAgIHJldHVybiBtX2Jsb2JE
YXRhRmlsZVJlZmVyZW5jZXMuZ2V0KHBhdGgpOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpyZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZChjb25zdCBV
UkwmIHVybCwgY29uc3QgVVJMJiBzcmNVUkwsIGNvbnN0IFN0cmluZyYgZmlsZUJhY2tlZFBhdGgp
Cit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWdpc3RlckJsb2JVUkxPcHRp
b25hbGx5RmlsZUJhY2tlZChjb25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBzcmNVUkwsIGNvbnN0
IFN0cmluZyYgZmlsZUJhY2tlZFBhdGgsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCiB7Ci0g
ICAgTmV0d29ya0Jsb2JSZWdpc3RyeTo6c2luZ2xldG9uKCkucmVnaXN0ZXJCbG9iVVJMT3B0aW9u
YWxseUZpbGVCYWNrZWQodGhpcywgdXJsLCBzcmNVUkwsIGZpbGVCYWNrZWRQYXRoKTsKKyAgICBO
ZXR3b3JrQmxvYlJlZ2lzdHJ5OjpzaW5nbGV0b24oKS5yZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5
RmlsZUJhY2tlZCh0aGlzLCB1cmwsIHNyY1VSTCwgZmlsZUJhY2tlZFBhdGgsIGNvbnRlbnRUeXBl
KTsKIH0KIAogdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVnaXN0ZXJCbG9i
VVJMRm9yU2xpY2UoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFVSTCYgc3JjVVJMLCBpbnQ2NF90IHN0
YXJ0LCBpbnQ2NF90IGVuZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCmluZGV4IDkwZGE3YWUz
ZTUyMjdhZTMxNWE1NDZmY2NhOGMyN2VjNTc2NGJjYWMuLmZhNWY2ZThlZGI5NTg0OGNhZmIwZDU4
NTYwOGJiZWM0NWIxNmYwODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAtMjMsOCAr
MjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5k
ZWYgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NfaAotI2RlZmluZSBOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzc19oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkJsb2NraW5nUmVz
cG9uc2VNYXAuaCIKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCkBAIC05NSw3ICs5NCw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCByZWdpc3RlckJsb2JVUkwoY29uc3QgV2ViQ29yZTo6VVJMJiwgVmVj
dG9yPFdlYkNvcmU6OkJsb2JQYXJ0PiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7CiAgICAg
dm9pZCByZWdpc3RlckJsb2JVUkxGcm9tVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFdl
YkNvcmU6OlVSTCYgc3JjVVJMKTsKICAgICB2b2lkIHByZXJlZ2lzdGVyU2FuZGJveEV4dGVuc2lv
bnNGb3JPcHRpb25hbGx5RmlsZUJhY2tlZEJsb2IoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVC
YWNrZWRQYXRoLCBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSYpOwotICAgIHZv
aWQgcmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQoY29uc3QgV2ViQ29yZTo6VVJM
JiwgY29uc3QgV2ViQ29yZTo6VVJMJiBzcmNVUkwsIGNvbnN0IFN0cmluZyYgZmlsZUJhY2tlZFBh
dGgpOworICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQoY29uc3Qg
V2ViQ29yZTo6VVJMJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBzcmNVUkwsIGNvbnN0IFN0cmluZyYg
ZmlsZUJhY2tlZFBhdGgsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOwogICAgIHZvaWQgcmVn
aXN0ZXJCbG9iVVJMRm9yU2xpY2UoY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgV2ViQ29yZTo6
VVJMJiBzcmNVUkwsIGludDY0X3Qgc3RhcnQsIGludDY0X3QgZW5kKTsKICAgICB2b2lkIGJsb2JT
aXplKGNvbnN0IFdlYkNvcmU6OlVSTCYsIHVpbnQ2NF90JiByZXN1bHRTaXplKTsKICAgICB2b2lk
IHVucmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYpOwpAQCAtMTEwLDUgKzEwOSwz
IEBAIHByaXZhdGU6CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmlu
IGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggYmQ1YTRiYjgxZGRkN2NlMWRhYjkxYzQ0OTI5ZGEwN2M4
MjIyMDgzNy4uYzJmNzhlODQyNDU4NDk1YWUwNDc5ZmYzNTMwYmVkNThlNTY0ZTVmZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTQ0LDcgKzQ0LDcg
QEAgbWVzc2FnZXMgLT4gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgTGVnYWN5UmVjZWl2
ZXIgewogICAgIFJlZ2lzdGVyQmxvYlVSTChXZWJDb3JlOjpVUkwgdXJsLCBWZWN0b3I8V2ViQ29y
ZTo6QmxvYlBhcnQ+IGJsb2JQYXJ0cywgU3RyaW5nIGNvbnRlbnRUeXBlKQogICAgIFJlZ2lzdGVy
QmxvYlVSTEZyb21VUkwoV2ViQ29yZTo6VVJMIHVybCwgV2ViQ29yZTo6VVJMIHNyY1VSTCkKICAg
ICBQcmVyZWdpc3RlclNhbmRib3hFeHRlbnNpb25zRm9yT3B0aW9uYWxseUZpbGVCYWNrZWRCbG9i
KFZlY3RvcjxTdHJpbmc+IGZpbGVQYXRocywgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5k
bGVBcnJheSBleHRlbnNpb25IYW5kbGVzKQotICAgIFJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlG
aWxlQmFja2VkKFdlYkNvcmU6OlVSTCB1cmwsIFdlYkNvcmU6OlVSTCBzcmNVUkwsIFN0cmluZyBm
aWxlQmFja2VkUGF0aCkKKyAgICBSZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZChX
ZWJDb3JlOjpVUkwgdXJsLCBXZWJDb3JlOjpVUkwgc3JjVVJMLCBTdHJpbmcgZmlsZUJhY2tlZFBh
dGgsIFN0cmluZyBjb250ZW50VHlwZSkKICAgICBSZWdpc3RlckJsb2JVUkxGb3JTbGljZShXZWJD
b3JlOjpVUkwgdXJsLCBXZWJDb3JlOjpVUkwgc3JjVVJMLCBpbnQ2NF90IHN0YXJ0LCBpbnQ2NF90
IGVuZCkKICAgICBVbnJlZ2lzdGVyQmxvYlVSTChXZWJDb3JlOjpVUkwgdXJsKQogICAgIEJsb2JT
aXplKFdlYkNvcmU6OlVSTCB1cmwpIC0+ICh1aW50NjRfdCByZXN1bHRTaXplKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5j
cHAKaW5kZXggZWQwNDBlNWVkZWI1Nzk1YWRkNzVlYWM5ZmU2N2U2ZmNlZDc3NzI1ZS4uMmFkZDc0
Njg5MzdkZTAxZmZmNmQ2ZTdiN2NkMDMyMDU4YjlmZDk1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuY3BwCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTU3LDEw
ICs1NywxMCBAQCB2b2lkIEJsb2JSZWdpc3RyeVByb3h5OjpyZWdpc3RlckJsb2JVUkwoY29uc3Qg
VVJMJiB1cmwsIGNvbnN0IFVSTCYgc3JjVVJMKQogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
Lm5ldHdvcmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlJlZ2lzdGVyQmxvYlVSTEZyb21VUkwodXJsLCBzcmNV
UkwpLCAwKTsKIH0KIAotdm9pZCBCbG9iUmVnaXN0cnlQcm94eTo6cmVnaXN0ZXJCbG9iVVJMT3B0
aW9uYWxseUZpbGVCYWNrZWQoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFVSTCYgc3JjVVJMLCBSZWZQ
dHI8V2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiYmIGZpbGUpCit2b2lkIEJsb2JSZWdp
c3RyeVByb3h5OjpyZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZChjb25zdCBVUkwm
IHVybCwgY29uc3QgVVJMJiBzcmNVUkwsIFJlZlB0cjxXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZl
cmVuY2U+JiYgZmlsZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKIHsKICAgICBBU1NFUlQo
ZmlsZSk7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkubmV0d29ya0Nvbm5lY3Rpb24oKS0+
Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6UmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQodXJsLCBzcmNVUkwsIGZpbGUt
PnBhdGgoKSksIDApOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLm5ldHdvcmtDb25uZWN0
aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OlJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKHVybCwgc3JjVVJM
LCBmaWxlLT5wYXRoKCksIGNvbnRlbnRUeXBlKSwgMCk7CiB9CiAKIHZvaWQgQmxvYlJlZ2lzdHJ5
UHJveHk6OnVucmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYgdXJsKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuaAppbmRleCA4
MzUzZmE3ODI5ZTRlZWY1OTE0YWEyOGE3YmFjZjJlNzQ5ZGJmZGY4Li5kYjZlMDljMmUwN2UyZDJi
Y2I4YzJlNDI0MmRmOTgzMDgxNTBhZWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuaApAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMyw4ICsyMyw3IEBACiAgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBCbG9iUmVnaXN0
cnlQcm94eV9oCi0jZGVmaW5lIEJsb2JSZWdpc3RyeVByb3h5X2gKKyNwcmFnbWEgb25jZQogCiAj
aW5jbHVkZSA8V2ViQ29yZS9CbG9iUmVnaXN0cnkuaD4KIApAQCAtMzUsNyArMzQsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCByZWdpc3RlckZpbGVCbG9iVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYsIFJl
ZjxXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2U+JiYsIGNvbnN0IFN0cmluZyYgY29udGVu
dFR5cGUpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFdlYkNvcmU6
OlVSTCYsIFZlY3RvcjxXZWJDb3JlOjpCbG9iUGFydD4sIGNvbnN0IFN0cmluZyYgY29udGVudFR5
cGUpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFdlYkNvcmU6OlVS
TCYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgc3JjVVJMKSBvdmVycmlkZTsKLSAgICB2b2lkIHJlZ2lz
dGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0
IFdlYkNvcmU6OlVSTCYgc3JjVVJMLCBSZWZQdHI8V2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVmZXJl
bmNlPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxl
QmFja2VkKGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgc3JjVVJMLCBS
ZWZQdHI8V2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiYmLCBjb25zdCBTdHJpbmcmIGNv
bnRlbnRUeXBlKSBvdmVycmlkZTsKICAgICB2b2lkIHVucmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFdl
YkNvcmU6OlVSTCYpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2Uo
Y29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBzcmNVUkwsIGxvbmcgbG9u
ZyBzdGFydCwgbG9uZyBsb25nIGVuZCkgb3ZlcnJpZGU7CiAgICAgdW5zaWduZWQgbG9uZyBsb25n
IGJsb2JTaXplKGNvbnN0IFdlYkNvcmU6OlVSTCYpIG92ZXJyaWRlOwpAQCAtNDMsNSArNDIsMyBA
QCBwdWJsaWM6CiB9OwogCiB9Ci0KLSNlbmRpZiAvLyBCbG9iUmVnaXN0cnlQcm94eV9oCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5k
ZXggMDFhMTA0OTcxOTVjODJkNjY4ZTk0MzA3MTc2ZDE3N2Y0ZmM0NWMxNy4uMTQ4NGY4NmIyNjI5
MmE0MjQ4Nzk4ZjhiOTIxN2IyYzEwZTJiMDljYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE2
LTA3LTAxICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBCbG9i
IGNvbnRlbnQgdHlwZSBub3QgcHJlc2VydmVkIHdoZW4gcmV0cmlldmluZyBibG9icyBmcm9tIElu
ZGV4ZWREQi4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI3MDU3MzU3PiBhbmQgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1OTM2MAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJu
L2Jsb2Itc3ZnLWltYWdlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRi
L21vZGVybi9yZXNvdXJjZXMvYmxvYi1zdmctaW1hZ2UuanM6IEFkZGVkLgorICAgICAgICAqIHN0
b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9yZXNvdXJjZXMvYmxvYi1zdmctaW1hZ2UxLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9yZXNvdXJjZXMvYmxvYi1z
dmctaW1hZ2UyLmh0bWw6IEFkZGVkLgorCiAyMDE2LTA2LTMwICBBbnRvaW5lIFF1aW50ICA8Z3Jh
b3V0c0BhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gTWVkaWEgY29udHJvbHMgYXJlIHRvbyBj
cmFtcGVkIHdpdGggc21hbGwgdmlkZW8KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL21vZGVybi9ibG9iLXN2Zy1pbWFnZS5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvbW9kZXJuL2Jsb2Itc3ZnLWltYWdlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzY0MDc4
MjUxNjIyZTUyMjJiZGJiZTJlZTcwNWExMGUxMzM0YmEwYgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9ibG9iLXN2Zy1pbWFnZS5odG1sCkBA
IC0wLDAgKzEsMTMgQEAKKzxodG1sPgorPGJvZHk+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy50ZXN0
UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgdGVzdFJ1bm5l
ci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci5zZXRDYW5PcGVuV2luZG93cygpOworICAg
IHdpbmRvdy5vcGVuKCJyZXNvdXJjZXMvYmxvYi1zdmctaW1hZ2UxLmh0bWwiKTsKK30KKzwvc2Ny
aXB0PgorPGJ1dHRvbiBpZD0iYnV0dG9uIiBvbmNsaWNrPSd3aW5kb3cub3BlbigicmVzb3VyY2Vz
L2Jsb2Itc3ZnLWltYWdlMS5odG1sIiwgImNoaWxkV2luZG93Iik7Jz5DbGljayB0byBzdGFydCB0
ZXN0IGluIG5ldyB3aW5kb3c8L2J1dHRvbj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9yZXNvdXJjZXMvYmxvYi1zdmct
aW1hZ2UuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vcmVzb3VyY2Vz
L2Jsb2Itc3ZnLWltYWdlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIyZGU2ZmM3YjVhOGU5ZTJiMTY0NGFjYTc5
MTg2YjIwYjdlNmM1NTIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9tb2Rlcm4vcmVzb3VyY2VzL2Jsb2Itc3ZnLWltYWdlLmpzCkBAIC0wLDAgKzEsNTcg
QEAKK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIHRoYXQgcmV0cmlldmluZyBibG9icyBmcm9tIElE
QiBzdWNjZXNzZnVsbHkgcmVnaXN0ZXJzIHRoZWlyIGNvbnRlbnQgdHlwZSIpOworCitpbmRleGVk
REJUZXN0KHByZXBhcmVEYXRhYmFzZSk7CisKK3ZhciB0ZXN0R2VuZXJhdG9yOwordmFyIHN2Z0Rh
dGEgPSBbIjxzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJz48Y2lyY2xlIHI9
JzIwMCcgY3g9JzIwMCcgY3k9JzIwMCcgc3Ryb2tlPSdyZWQnIHN0cm9rZS13aWR0aD0nMScgZmls
bD0neWVsbG93JyAvPjwvc3ZnPiJdOworCitmdW5jdGlvbiBjb250aW51ZVdpdGhFdmVudChldmVu
dCkKK3sKKyAgICB0ZXN0R2VuZXJhdG9yLm5leHQoZXZlbnQpOworfQorCitmdW5jdGlvbiBhc3lu
Y0NvbnRpbnVlKCkKK3sKKyAgICBzZXRUaW1lb3V0KCJ0ZXN0R2VuZXJhdG9yLm5leHQoKTsiLCAw
KTsKK30KKworZnVuY3Rpb24gaWRiUmVxdWVzdChyZXF1ZXN0KQoreworICAgIHJlcXVlc3Qub25l
cnJvciA9IGNvbnRpbnVlV2l0aEV2ZW50OworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY29udGlu
dWVXaXRoRXZlbnQ7Cit9CisKK3ZhciBkYjsKKworZnVuY3Rpb24gcHJlcGFyZURhdGFiYXNlKGV2
ZW50KQoreworICAgIGRlYnVnKCJJbml0aWFsIHVwZ3JhZGUgbmVlZGVkOiBPbGQgdmVyc2lvbiAt
ICIgKyBldmVudC5vbGRWZXJzaW9uICsgIiBOZXcgdmVyc2lvbiAtICIgKyBldmVudC5uZXdWZXJz
aW9uKTsKKyAgICBkZWJ1ZyhldmVudC50YXJnZXQucmVzdWx0Lm5hbWUpOworICAgIGRiID0gZXZl
bnQudGFyZ2V0LnJlc3VsdDsKKyAgICBkYi5jcmVhdGVPYmplY3RTdG9yZSgiVGVzdE9iamVjdFN0
b3JlIik7CisgICAgZXZlbnQudGFyZ2V0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeworICAgICAg
ICB0ZXN0R2VuZXJhdG9yID0gdGVzdFN0ZXBzKCk7CisgICAgICAgIHRlc3RHZW5lcmF0b3IubmV4
dCgpOworICAgIH07Cit9CisKK2Z1bmN0aW9uKiB0ZXN0U3RlcHMoKQoreworICAgIGRlYnVnKCJM
ZXQncyBjcmVhdGUgYW4gc3ZnIGJsb2IgYW5kIHN0b3JlIGl0IGluIEluZGV4ZWREQi4iKTsKKwor
ICAgIGJsb2IgPSBuZXcgQmxvYihzdmdEYXRhLCB7IHR5cGU6ICJpbWFnZS9zdmcreG1sIiB9KTsK
KworICAgIHZhciB0cmFuc2FjdGlvbiA9IGRiLnRyYW5zYWN0aW9uKCJUZXN0T2JqZWN0U3RvcmUi
LCAicmVhZHdyaXRlIik7CisgICAgdHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IGNvbnRpbnVlV2l0
aEV2ZW50OworICAgIAorICAgIGlkYlJlcXVlc3QodHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoIlRl
c3RPYmplY3RTdG9yZSIpLmFkZChibG9iLCAiZm9vIikpOworICAgIGV2ZW50ID0geWllbGQ7Cisg
ICAgZGVidWcoIkFkZGVkIGJsb2IgdG8gZGF0YWJhc2UiKTsKKworICAgIGV2ZW50ID0geWllbGQ7
CisgICAgZGVidWcoIlRyYW5zYWN0aW9uIGNvbXBsZXRlLiBOb3cgbGV0J3MgbmF2aWdhdGUgdGhl
IG9yaWdpbmFsIHdpbmRvdyB0byBjb250aW51ZSB0aGUgdGVzdCIpOworCisgICAgYmxvYiA9IG51
bGw7CisKKyAgICB3aW5kb3cub3BlbmVyLmxvY2F0aW9uLmhyZWYgPSAiYmxvYi1zdmctaW1hZ2Uy
Lmh0bWwiOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9yZXNvdXJjZXMvYmxvYi1zdmctaW1hZ2Ux
Lmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vcmVzb3VyY2VzL2Js
b2Itc3ZnLWltYWdlMS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY2ZGI1YTUyMGM1YzFhYTExNGY3ZGNjODAz
NjAyMzkzNzg3OTRjMmYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9tb2Rlcm4vcmVzb3VyY2VzL2Jsb2Itc3ZnLWltYWdlMS5odG1sCkBAIC0wLDAgKzEs
OSBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3NoYXJl
ZC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJibG9iLXN2Zy1p
bWFnZS5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vcmVzb3VyY2VzL2Jsb2Itc3ZnLWltYWdlMi5o
dG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL3Jlc291cmNlcy9ibG9i
LXN2Zy1pbWFnZTIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hYzQyNmVjNzBmODEzZjkzYTg5NDg2OWM5MjVm
ZWZjNTRmYzY0MTk4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvbW9kZXJuL3Jlc291cmNlcy9ibG9iLXN2Zy1pbWFnZTIuaHRtbApAQCAtMCwwICsxLDky
IEBACis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdD4KKwordmFyIGNoaWxkOworCitmdW5jdGlvbiB3YWl0Rm9yQ2hpbGRUb0JlQ2xvc2Vk
KCkKK3sKKyAgICBpZiAoY2hpbGQgJiYgIWNoaWxkLmNsb3NlZCkgeworICAgICAgICBzZXRUaW1l
b3V0KHdhaXRGb3JDaGlsZFRvQmVDbG9zZWQsIDApOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgIGdjKCk7CisgICAgICAgIGZp
bmlzaFRoZVRlc3QoKTsKKyAgICB9IGVsc2UgeworICAgICAgICBkZWJ1ZygiVGhlIG9yaWdpbmFs
IGJsb2Igb2JqZWN0IHdlIGNyZWF0ZWQgd2lsbCBnbyBhd2F5IGFmdGVyIGdhcmJhZ2UgY29sbGVj
dGlvbi4gU2luY2Ugd2UgY2FuJ3QgcmVsaWFibHkgY2F1c2Ugc3luY2hyb25vdXMgR0MgaW4gdGhl
IGJyb3dzZXIsIHdlJ2xsIHdhaXQgNSBzZWNvbmRzIGJlZm9yZSBjb250aW51aW5nIHRoZSB0ZXN0
LiIpOworICAgICAgICBzZXRUaW1lb3V0KGZpbmlzaFRoZVRlc3QsIDUwMDApOworICAgIH0KK30K
KworY2hpbGQgPSB3aW5kb3cub3BlbigiIiwgImNoaWxkV2luZG93Iik7CitpZiAoY2hpbGQpIHsK
KyAgICBjaGlsZC5jbG9zZSgpOworICAgIHNldFRpbWVvdXQod2FpdEZvckNoaWxkVG9CZUNsb3Nl
ZCwgMCk7Cit9CisKK3ZhciB0ZXN0R2VuZXJhdG9yOworCitmdW5jdGlvbiBjb250aW51ZVdpdGhF
dmVudChldmVudCkKK3sKKyAgICB0ZXN0R2VuZXJhdG9yLm5leHQoZXZlbnQpOworfQorCitmdW5j
dGlvbiBhc3luY0NvbnRpbnVlKCkKK3sKKyAgICBzZXRUaW1lb3V0KCJ0ZXN0R2VuZXJhdG9yLm5l
eHQoKTsiLCAwKTsKK30KKworZnVuY3Rpb24gaWRiUmVxdWVzdChyZXF1ZXN0KQoreworICAgIHJl
cXVlc3Qub25lcnJvciA9IGNvbnRpbnVlV2l0aEV2ZW50OworICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gY29udGludWVXaXRoRXZlbnQ7Cit9CisKK3ZhciBkYjsKKworZnVuY3Rpb24gZmluaXNoVGhl
VGVzdCgpCit7CisgICAgcmVxdWVzdCA9IHdpbmRvdy5pbmRleGVkREIub3BlbigiYmxvYi1zdmct
aW1hZ2UxLmh0bWwiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKGV2ZW50KSB7
CisgICAgICAgIGRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKKyAgICAgICAgdGVzdEdlbmVyYXRv
ciA9IHRlc3RTdGVwcygpOworICAgICAgICB0ZXN0R2VuZXJhdG9yLm5leHQoKTsKKyAgICB9Cit9
CisKK2Z1bmN0aW9uKiB0ZXN0U3RlcHMoKQoreworICAgIGRlYnVnKCJOb3cgbGV0J3MgcmV0cmll
dmUgdGhlIHN2ZyBpbWFnZSBibG9iLiIpOworCisgICAgb2JqZWN0U3RvcmUgPSBkYi50cmFuc2Fj
dGlvbigiVGVzdE9iamVjdFN0b3JlIikub2JqZWN0U3RvcmUoIlRlc3RPYmplY3RTdG9yZSIpOwor
ICAgIGlkYlJlcXVlc3Qob2JqZWN0U3RvcmUuZ2V0KCJmb28iKSk7CisgICAgZXZlbnQgPSB5aWVs
ZDsKKyAgICAKKyAgICB2YXIgYmxvYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7CisKKyAgICBkZWJ1
ZygiICBSZXN1bHQgaXMgIiArIGJsb2IpOworCisgICAgY29uc3QgdXJsID0gVVJMLmNyZWF0ZU9i
amVjdFVSTChibG9iKTsKKworICAgIGltZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImltZyIp
OworICAgIGltZy5vbmxvYWQgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICBkZWJ1ZygiSW1h
Z2UgbG9hZGVkIHN1Y2Nlc3NmdWxseSIpOworICAgICAgICBVUkwucmV2b2tlT2JqZWN0VVJMKHVy
bCk7CisgICAgICAgIGFzeW5jQ29udGludWUoKTsKKyAgICB9CisgICAgaW1nLm9uZXJyb3IgPSBm
dW5jdGlvbihldmVudCkgeworICAgICAgICBkZWJ1ZygiSW1hZ2UgZmFpbGVkIHRvIGxvYWQiKTsK
KyAgICAgICAgVVJMLnJldm9rZU9iamVjdFVSTCh1cmwpOworICAgICAgICBhc3luY0NvbnRpbnVl
KCk7CisgICAgfQorICAgIAorICAgIGltZy5zcmMgPSB1cmw7CisgICAgZG9jdW1lbnQuYm9keS5h
cHBlbmRDaGlsZChpbWcpOyAgICAgICAgCisKKyAgICB5aWVsZDsKKyAgICAKKyAgICBmaW5pc2hK
U1Rlc3QoKTsKKyB9CisgPC9zY3JpcHQ+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQo=
</data>
<flag name="review"
          id="306372"
          type_id="1"
          status="+"
          setter="achristensen"
    />
    <flag name="commit-queue"
          id="306376"
          type_id="3"
          status="-"
          setter="beidson"
    />
          </attachment>
      

    </bug>

</bugzilla>