<?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>6748</bug_id>
          
          <creation_ts>2006-01-23 18:46:45 -0800</creation_ts>
          <short_desc>HashTable extractors should be classes not functions</short_desc>
          <delta_ts>2006-01-23 20:34:48 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>420+</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</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="Maciej Stachowiak">mjs</reporter>
          <assigned_to name="Maciej Stachowiak">mjs</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>29647</commentid>
    <comment_count>0</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2006-01-23 18:46:45 -0800</bug_when>
    <thetext>HashTable extractors should be template classes with a static method, not template functions. This will remove the need for crazy workarounds for other compilers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>29648</commentid>
    <comment_count>1</comment_count>
      <attachid>5894</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2006-01-23 18:47:34 -0800</bug_when>
    <thetext>Created attachment 5894
change extractors to be classes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>29649</commentid>
    <comment_count>2</comment_count>
      <attachid>5894</attachid>
    <who name="Tim Omernick">timo</who>
    <bug_when>2006-01-23 19:20:35 -0800</bug_when>
    <thetext>Comment on attachment 5894
change extractors to be classes

Patch looks great.  r=me.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>5894</attachid>
            <date>2006-01-23 18:47:34 -0800</date>
            <delta_ts>2006-01-23 19:20:35 -0800</delta_ts>
            <desc>change extractors to be classes</desc>
            <filename>extractor-cleanup.patch.txt</filename>
            <type>text/plain</type>
            <size>33638</size>
            <attacher name="Maciej Stachowiak">mjs</attacher>
            
              <data encoding="base64">SW5kZXg6IGt4bWxjb3JlL0hhc2hUYWJsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGt4bWxjb3JlL0hhc2hU
YWJsZS5oCShyZXZpc2lvbiAxMjMyMSkKKysrIGt4bWxjb3JlL0hhc2hUYWJsZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC01NSw0MSArNTUsNDEgQEAgbmFtZXNwYWNlIEtYTUxDb3JlIHsKIAogI2VuZGlm
CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCBjb25zdCBLZXkm
IEV4dHJhY3RLZXkoY29uc3QgVmFsdWUmKSwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5h
bWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5
LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rp
b25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4KICAgICBjbGFzcyBIYXNo
VGFibGU7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgY29uc3Qg
S2V5JiBFeHRyYWN0S2V5KGNvbnN0IFZhbHVlJiksIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5
cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgorICAgIHRlbXBsYXRlPHR5cGVuYW1l
IEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1
bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+CiAgICAgY2xhc3Mg
SGFzaFRhYmxlSXRlcmF0b3I7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBW
YWx1ZSwgY29uc3QgS2V5JiBFeHRyYWN0S2V5KGNvbnN0IFZhbHVlJiksIHR5cGVuYW1lIEhhc2hG
dW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgorICAgIHRlbXBs
YXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlw
ZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+
CiAgICAgY2xhc3MgSGFzaFRhYmxlQ29uc3RJdGVyYXRvcjsKIAogI2lmIENIRUNLX0hBU0hUQUJM
RV9JVEVSQVRPUlMKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCBj
b25zdCBLZXkmIEV4dHJhY3RLZXkoY29uc3QgVmFsdWUmKSwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9u
cywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+Ci0gICAgdm9pZCBhZGRJdGVy
YXRvcihjb25zdCBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdEtleSwgSGFzaEZ1bmN0aW9u
cywgVHJhaXRzLCBLZXlUcmFpdHM+KiwKLSAgICAgICAgSGFzaFRhYmxlQ29uc3RJdGVyYXRvcjxL
ZXksIFZhbHVlLCBFeHRyYWN0S2V5LCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz4q
KTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBF
eHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5h
bWUgS2V5VHJhaXRzPgorICAgIHZvaWQgYWRkSXRlcmF0b3IoY29uc3QgSGFzaFRhYmxlPEtleSwg
VmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+KiwKKyAg
ICAgICAgSGFzaFRhYmxlQ29uc3RJdGVyYXRvcjxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hG
dW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPiopOwogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUg
S2V5LCB0eXBlbmFtZSBWYWx1ZSwgY29uc3QgS2V5JiBFeHRyYWN0S2V5KGNvbnN0IFZhbHVlJiks
IHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJh
aXRzPgotICAgIHZvaWQgcmVtb3ZlSXRlcmF0b3IoSGFzaFRhYmxlQ29uc3RJdGVyYXRvcjxLZXks
IFZhbHVlLCBFeHRyYWN0S2V5LCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz4qKTsK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRy
YWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUg
S2V5VHJhaXRzPgorICAgIHZvaWQgcmVtb3ZlSXRlcmF0b3IoSGFzaFRhYmxlQ29uc3RJdGVyYXRv
cjxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRz
PiopOwogI2Vsc2UKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCBj
b25zdCBLZXkmIEV4dHJhY3RLZXkoY29uc3QgVmFsdWUmKSwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9u
cywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+Ci0gICAgaW5saW5lIHZvaWQg
YWRkSXRlcmF0b3IoY29uc3QgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RLZXksIEhhc2hG
dW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPiosCi0gICAgICAgIEhhc2hUYWJsZUNvbnN0SXRl
cmF0b3I8S2V5LCBWYWx1ZSwgRXh0cmFjdEtleSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlU
cmFpdHM+KikgeyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwg
dHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFp
dHMsIHR5cGVuYW1lIEtleVRyYWl0cz4KKyAgICBpbmxpbmUgdm9pZCBhZGRJdGVyYXRvcihjb25z
dCBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMs
IEtleVRyYWl0cz4qLAorICAgICAgICBIYXNoVGFibGVDb25zdEl0ZXJhdG9yPEtleSwgVmFsdWUs
IEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+KikgeyB9CiAKLSAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCBjb25zdCBLZXkmIEV4dHJh
Y3RLZXkoY29uc3QgVmFsdWUmKSwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJh
aXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+Ci0gICAgaW5saW5lIHZvaWQgcmVtb3ZlSXRlcmF0b3Io
SGFzaFRhYmxlQ29uc3RJdGVyYXRvcjxLZXksIFZhbHVlLCBFeHRyYWN0S2V5LCBIYXNoRnVuY3Rp
b25zLCBUcmFpdHMsIEtleVRyYWl0cz4qKSB7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXks
IHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlv
bnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgorICAgIGlubGluZSB2b2lk
IHJlbW92ZUl0ZXJhdG9yKEhhc2hUYWJsZUNvbnN0SXRlcmF0b3I8S2V5LCBWYWx1ZSwgRXh0cmFj
dG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz4qKSB7IH0KICNlbmRpZgogCi0g
ICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgY29uc3QgS2V5JiBFeHRy
YWN0S2V5KGNvbnN0IFZhbHVlJiksIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRy
YWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlw
ZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywg
dHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+CiAgICAgY2xhc3MgSGFzaFRhYmxl
Q29uc3RJdGVyYXRvciB7CiAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiBIYXNoVGFibGU8
S2V5LCBWYWx1ZSwgRXh0cmFjdEtleSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+
IEhhc2hUYWJsZVR5cGU7Ci0gICAgICAgIHR5cGVkZWYgSGFzaFRhYmxlSXRlcmF0b3I8S2V5LCBW
YWx1ZSwgRXh0cmFjdEtleSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+IGl0ZXJh
dG9yOwotICAgICAgICB0eXBlZGVmIEhhc2hUYWJsZUNvbnN0SXRlcmF0b3I8S2V5LCBWYWx1ZSwg
RXh0cmFjdEtleSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+IGNvbnN0X2l0ZXJh
dG9yOworICAgICAgICB0eXBlZGVmIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhh
c2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPiBIYXNoVGFibGVUeXBlOworICAgICAgICB0
eXBlZGVmIEhhc2hUYWJsZUl0ZXJhdG9yPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0
aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+IGl0ZXJhdG9yOworICAgICAgICB0eXBlZGVmIEhhc2hU
YWJsZUNvbnN0SXRlcmF0b3I8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBU
cmFpdHMsIEtleVRyYWl0cz4gY29uc3RfaXRlcmF0b3I7CiAgICAgICAgIHR5cGVkZWYgVmFsdWUg
VmFsdWVUeXBlOwogICAgICAgICB0eXBlZGVmIGNvbnN0IFZhbHVlVHlwZSYgUmVmZXJlbmNlVHlw
ZTsKICAgICAgICAgdHlwZWRlZiBjb25zdCBWYWx1ZVR5cGUqIFBvaW50ZXJUeXBlOwogCi0gICAg
ICAgIGZyaWVuZCBjbGFzcyBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdEtleSwgSGFzaEZ1
bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OwotICAgICAgICBmcmllbmQgY2xhc3MgSGFzaFRh
YmxlSXRlcmF0b3I8S2V5LCBWYWx1ZSwgRXh0cmFjdEtleSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRz
LCBLZXlUcmFpdHM+OworICAgICAgICBmcmllbmQgY2xhc3MgSGFzaFRhYmxlPEtleSwgVmFsdWUs
IEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OworICAgICAgICBm
cmllbmQgY2xhc3MgSGFzaFRhYmxlSXRlcmF0b3I8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNo
RnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz47CiAKICAgICAgICAgdm9pZCBza2lwRW1wdHlC
dWNrZXRzKCkKICAgICAgICAgewpAQCAtMjAyLDE3ICsyMDIsMTcgQEAgbmFtZXNwYWNlIEtYTUxD
b3JlIHsKICNlbmRpZgogICAgIH07CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVu
YW1lIFZhbHVlLCBjb25zdCBLZXkmIEV4dHJhY3RLZXkoY29uc3QgVmFsdWUmKSwgdHlwZW5hbWUg
SGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+CisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9y
LCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRy
YWl0cz4KICAgICBjbGFzcyBIYXNoVGFibGVJdGVyYXRvciB7CiAgICAgcHJpdmF0ZToKLSAgICAg
ICAgdHlwZWRlZiBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdEtleSwgSGFzaEZ1bmN0aW9u
cywgVHJhaXRzLCBLZXlUcmFpdHM+IEhhc2hUYWJsZVR5cGU7Ci0gICAgICAgIHR5cGVkZWYgSGFz
aFRhYmxlSXRlcmF0b3I8S2V5LCBWYWx1ZSwgRXh0cmFjdEtleSwgSGFzaEZ1bmN0aW9ucywgVHJh
aXRzLCBLZXlUcmFpdHM+IGl0ZXJhdG9yOwotICAgICAgICB0eXBlZGVmIEhhc2hUYWJsZUNvbnN0
SXRlcmF0b3I8S2V5LCBWYWx1ZSwgRXh0cmFjdEtleSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBL
ZXlUcmFpdHM+IGNvbnN0X2l0ZXJhdG9yOworICAgICAgICB0eXBlZGVmIEhhc2hUYWJsZTxLZXks
IFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPiBIYXNo
VGFibGVUeXBlOworICAgICAgICB0eXBlZGVmIEhhc2hUYWJsZUl0ZXJhdG9yPEtleSwgVmFsdWUs
IEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+IGl0ZXJhdG9yOwor
ICAgICAgICB0eXBlZGVmIEhhc2hUYWJsZUNvbnN0SXRlcmF0b3I8S2V5LCBWYWx1ZSwgRXh0cmFj
dG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz4gY29uc3RfaXRlcmF0b3I7CiAg
ICAgICAgIHR5cGVkZWYgVmFsdWUgVmFsdWVUeXBlOwogICAgICAgICB0eXBlZGVmIFZhbHVlVHlw
ZSYgUmVmZXJlbmNlVHlwZTsKICAgICAgICAgdHlwZWRlZiBWYWx1ZVR5cGUqIFBvaW50ZXJUeXBl
OwogCi0gICAgICAgIGZyaWVuZCBjbGFzcyBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdEtl
eSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OworICAgICAgICBmcmllbmQgY2xh
c3MgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRz
LCBLZXlUcmFpdHM+OwogCiAgICAgICAgIEhhc2hUYWJsZUl0ZXJhdG9yKEhhc2hUYWJsZVR5cGUq
IHRhYmxlLCBQb2ludGVyVHlwZSBwb3MsIFBvaW50ZXJUeXBlIGVuZCkgOiBtX2l0ZXJhdG9yKHRh
YmxlLCBwb3MsIGVuZCkgeyB9CiAKQEAgLTI2MCwxMSArMjYwLDExIEBAIG5hbWVzcGFjZSBLWE1M
Q29yZSB7CiAgICAgICAgIHN0YXRpYyB2b2lkIHRyYW5zbGF0ZShWYWx1ZSYgbG9jYXRpb24sIGNv
bnN0IEtleSYga2V5LCBjb25zdCBWYWx1ZSYgdmFsdWUsIHVuc2lnbmVkKSB7IGxvY2F0aW9uID0g
dmFsdWU7IH0KICAgICB9OwogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBW
YWx1ZSwgY29uc3QgS2V5JiBFeHRyYWN0S2V5KGNvbnN0IFZhbHVlJiksIHR5cGVuYW1lIEhhc2hG
dW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgorICAgIHRlbXBs
YXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlw
ZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+
CiAgICAgY2xhc3MgSGFzaFRhYmxlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgSGFz
aFRhYmxlSXRlcmF0b3I8S2V5LCBWYWx1ZSwgRXh0cmFjdEtleSwgSGFzaEZ1bmN0aW9ucywgVHJh
aXRzLCBLZXlUcmFpdHM+IGl0ZXJhdG9yOwotICAgICAgICB0eXBlZGVmIEhhc2hUYWJsZUNvbnN0
SXRlcmF0b3I8S2V5LCBWYWx1ZSwgRXh0cmFjdEtleSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBL
ZXlUcmFpdHM+IGNvbnN0X2l0ZXJhdG9yOworICAgICAgICB0eXBlZGVmIEhhc2hUYWJsZUl0ZXJh
dG9yPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFp
dHM+IGl0ZXJhdG9yOworICAgICAgICB0eXBlZGVmIEhhc2hUYWJsZUNvbnN0SXRlcmF0b3I8S2V5
LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz4gY29u
c3RfaXRlcmF0b3I7CiAgICAgICAgIHR5cGVkZWYgS2V5IEtleVR5cGU7CiAgICAgICAgIHR5cGVk
ZWYgVmFsdWUgVmFsdWVUeXBlOwogICAgICAgICB0eXBlZGVmIElkZW50aXR5SGFzaFRyYW5zbGF0
b3I8S2V5LCBWYWx1ZSwgSGFzaEZ1bmN0aW9ucz4gSWRlbnRpdHlUcmFuc2xhdG9yVHlwZTsKQEAg
LTI4NCw3ICsyODQsNyBAQCBuYW1lc3BhY2UgS1hNTENvcmUgewogICAgICAgICBpbnQgc2l6ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fa2V5Q291bnQ7IH0KICAgICAgICAgaW50IGNhcGFjaXR5KCkgY29u
c3QgeyByZXR1cm4gbV90YWJsZVNpemU7IH0KIAotICAgICAgICBwYWlyPGl0ZXJhdG9yLCBib29s
PiBhZGQoY29uc3QgVmFsdWVUeXBlJiB2YWx1ZSkgeyByZXR1cm4gYWRkPEtleVR5cGUsIFZhbHVl
VHlwZSwgSWRlbnRpdHlUcmFuc2xhdG9yVHlwZT4oRXh0cmFjdEtleSh2YWx1ZSksIHZhbHVlKTsg
fQorICAgICAgICBwYWlyPGl0ZXJhdG9yLCBib29sPiBhZGQoY29uc3QgVmFsdWVUeXBlJiB2YWx1
ZSkgeyByZXR1cm4gYWRkPEtleVR5cGUsIFZhbHVlVHlwZSwgSWRlbnRpdHlUcmFuc2xhdG9yVHlw
ZT4oRXh0cmFjdG9yOjpleHRyYWN0KHZhbHVlKSwgdmFsdWUpOyB9CiAKICAgICAgICAgLy8gQSBz
cGVjaWFsIHZlcnNpb24gb2YgYWRkKCkgdGhhdCBmaW5kcyB0aGUgb2JqZWN0IGJ5IGhhc2hpbmcg
YW5kIGNvbXBhcmluZwogICAgICAgICAvLyB3aXRoIHNvbWUgb3RoZXIgdHlwZSwgdG8gYXZvaWQg
dGhlIGNvc3Qgb2YgdHlwZSBjb252ZXJzaW9uIGlmIHRoZSBvYmplY3QgaXMgYWxyZWFkeQpAQCAt
Mjk5LDggKzI5OSw4IEBAIG5hbWVzcGFjZSBLWE1MQ29yZSB7CiAgICAgICAgIHZvaWQgcmVtb3Zl
KGl0ZXJhdG9yKTsKICAgICAgICAgdm9pZCBjbGVhcigpOwogCi0gICAgICAgIHN0YXRpYyBib29s
IGlzRW1wdHlCdWNrZXQoY29uc3QgVmFsdWVUeXBlJiB2YWx1ZSkgeyByZXR1cm4gRXh0cmFjdEtl
eSh2YWx1ZSkgPT0gS2V5VHJhaXRzOjplbXB0eVZhbHVlKCk7IH0KLSAgICAgICAgc3RhdGljIGJv
b2wgaXNEZWxldGVkQnVja2V0KGNvbnN0IFZhbHVlVHlwZSYgdmFsdWUpIHsgcmV0dXJuIEV4dHJh
Y3RLZXkodmFsdWUpID09IEtleVRyYWl0czo6ZGVsZXRlZFZhbHVlKCk7IH0KKyAgICAgICAgc3Rh
dGljIGJvb2wgaXNFbXB0eUJ1Y2tldChjb25zdCBWYWx1ZVR5cGUmIHZhbHVlKSB7IHJldHVybiBF
eHRyYWN0b3I6OmV4dHJhY3QodmFsdWUpID09IEtleVRyYWl0czo6ZW1wdHlWYWx1ZSgpOyB9Cisg
ICAgICAgIHN0YXRpYyBib29sIGlzRGVsZXRlZEJ1Y2tldChjb25zdCBWYWx1ZVR5cGUmIHZhbHVl
KSB7IHJldHVybiBFeHRyYWN0b3I6OmV4dHJhY3QodmFsdWUpID09IEtleVRyYWl0czo6ZGVsZXRl
ZFZhbHVlKCk7IH0KICAgICAgICAgc3RhdGljIGJvb2wgaXNFbXB0eU9yRGVsZXRlZEJ1Y2tldChj
b25zdCBWYWx1ZVR5cGUmIHZhbHVlKSB7IHJldHVybiBpc0VtcHR5QnVja2V0KHZhbHVlKSB8fCBp
c0RlbGV0ZWRCdWNrZXQodmFsdWUpOyB9CiAKICAgICBwcml2YXRlOgpAQCAtMzYzLDggKzM2Myw4
IEBAIG5hbWVzcGFjZSBLWE1MQ29yZSB7CiAjZW5kaWYKICAgICB9OwogCi0gICAgdGVtcGxhdGU8
dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgY29uc3QgS2V5JiBFeHRyYWN0S2V5KGNvbnN0
IFZhbHVlJiksIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5h
bWUgS2V5VHJhaXRzPgotICAgIGlubGluZSBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdEtl
eSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OjpIYXNoVGFibGUoKQorICAgIHRl
bXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3Rvciwg
dHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFp
dHM+CisgICAgaW5saW5lIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5j
dGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6SGFzaFRhYmxlKCkKICAgICAgICAgOiBtX3RhYmxl
KDApCiAgICAgICAgICwgbV90YWJsZVNpemUoMCkKICAgICAgICAgLCBtX3RhYmxlU2l6ZU1hc2so
MCkKQEAgLTM3Niw5ICszNzYsOSBAQCBuYW1lc3BhY2UgS1hNTENvcmUgewogICAgIHsKICAgICB9
CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCBjb25zdCBLZXkm
IEV4dHJhY3RLZXkoY29uc3QgVmFsdWUmKSwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5h
bWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5
LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rp
b25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4KICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBULCB0eXBlbmFtZSBIYXNoVHJhbnNsYXRvcj4KLSAgICBpbmxpbmUgdHlwZW5hbWUg
SGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RLZXksIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywg
S2V5VHJhaXRzPjo6RnVsbExvb2t1cFR5cGUgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RL
ZXksIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6bG9va3VwKGNvbnN0IFQmIGtl
eSkKKyAgICBpbmxpbmUgdHlwZW5hbWUgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3Rvciwg
SGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OjpGdWxsTG9va3VwVHlwZSBIYXNoVGFi
bGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0
cz46Omxvb2t1cChjb25zdCBUJiBrZXkpCiAgICAgewogICAgICAgICBhc3NlcnQobV90YWJsZSk7
CiAKQEAgLTM5OCw3ICszOTgsNyBAQCBuYW1lc3BhY2UgS1hNTENvcmUgewogICAgICAgICB3aGls
ZSAoIWlzRW1wdHlCdWNrZXQoKihlbnRyeSA9IHRhYmxlICsgaSkpKSB7CiAgICAgICAgICAgICBp
ZiAoaXNEZWxldGVkQnVja2V0KCplbnRyeSkpCiAgICAgICAgICAgICAgICAgZGVsZXRlZEVudHJ5
ID0gZW50cnk7Ci0gICAgICAgICAgICBlbHNlIGlmIChIYXNoVHJhbnNsYXRvcjo6ZXF1YWwoRXh0
cmFjdEtleSgqZW50cnkpLCBrZXkpKQorICAgICAgICAgICAgZWxzZSBpZiAoSGFzaFRyYW5zbGF0
b3I6OmVxdWFsKEV4dHJhY3Rvcjo6ZXh0cmFjdCgqZW50cnkpLCBrZXkpKQogICAgICAgICAgICAg
ICAgIHJldHVybiBtYWtlTG9va3VwUmVzdWx0KGVudHJ5LCB0cnVlLCBoKTsKICNpZiBEVU1QX0hB
U0hUQUJMRV9TVEFUUwogICAgICAgICAgICAgKytwcm9iZUNvdW50OwpAQCAtNDEzLDkgKzQxMyw5
IEBAIG5hbWVzcGFjZSBLWE1MQ29yZSB7CiAgICAgfQogCiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBLZXksIHR5cGVuYW1lIFZhbHVlLCBjb25zdCBLZXkmIEV4dHJhY3RLZXkoY29uc3QgVmFsdWUm
KSwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlU
cmFpdHM+CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5h
bWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5
cGVuYW1lIEtleVRyYWl0cz4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBFeHRy
YSwgdHlwZW5hbWUgSGFzaFRyYW5zbGF0b3I+Ci0gICAgaW5saW5lIHBhaXI8dHlwZW5hbWUgSGFz
aFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RLZXksIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5
VHJhaXRzPjo6aXRlcmF0b3IsIGJvb2w+IEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0S2V5
LCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46OmFkZChjb25zdCBUJiBrZXksIGNv
bnN0IEV4dHJhICZleHRyYSkKKyAgICBpbmxpbmUgcGFpcjx0eXBlbmFtZSBIYXNoVGFibGU8S2V5
LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46Oml0
ZXJhdG9yLCBib29sPiBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rp
b25zLCBUcmFpdHMsIEtleVRyYWl0cz46OmFkZChjb25zdCBUJiBrZXksIGNvbnN0IEV4dHJhICZl
eHRyYSkKICAgICB7CiAgICAgICAgIGludmFsaWRhdGVJdGVyYXRvcnMoKTsKIApAQCAtNDQzLDcg
KzQ0Myw3IEBAIG5hbWVzcGFjZSBLWE1MQ29yZSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogdGhp
cyBtYWtlcyBhbiBleHRyYSBjb3B5IG9uIGV4cGFuZC4gUHJvYmFibHkgbm90IHRoYXQgYmFkIHNp
bmNlCiAgICAgICAgICAgICAvLyBleHBhbmQgaXMgcmFyZSwgYnV0IHdvdWxkIGJlIGJldHRlciB0
byBoYXZlIGEgdmVyc2lvbiBvZiBleHBhbmQgdGhhdCBjYW4KICAgICAgICAgICAgIC8vIGZvbGxv
dyBhIHBpdm90IGVudHJ5IGFuZCByZXR1cm4gdGhlIG5ldyBwb3NpdGlvbgotICAgICAgICAgICAg
S2V5VHlwZSBlbnRlcmVkS2V5ID0gRXh0cmFjdEtleSgqZW50cnkpOworICAgICAgICAgICAgS2V5
VHlwZSBlbnRlcmVkS2V5ID0gRXh0cmFjdG9yOjpleHRyYWN0KCplbnRyeSk7CiAgICAgICAgICAg
ICBleHBhbmQoKTsKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihmaW5kKGVudGVy
ZWRLZXkpLCB0cnVlKTsKICAgICAgICAgfQpAQCAtNDUzLDIxICs0NTMsMjEgQEAgbmFtZXNwYWNl
IEtYTUxDb3JlIHsKICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKG1ha2VJdGVyYXRvcihl
bnRyeSksIHRydWUpOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5h
bWUgVmFsdWUsIGNvbnN0IEtleSYgRXh0cmFjdEtleShjb25zdCBWYWx1ZSYpLCB0eXBlbmFtZSBI
YXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4KLSAgICBp
bmxpbmUgdm9pZCBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdEtleSwgSGFzaEZ1bmN0aW9u
cywgVHJhaXRzLCBLZXlUcmFpdHM+OjpyZWluc2VydChWYWx1ZVR5cGUmIGVudHJ5KQorICAgIHRl
bXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3Rvciwg
dHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFp
dHM+CisgICAgaW5saW5lIHZvaWQgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFz
aEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OjpyZWluc2VydChWYWx1ZVR5cGUmIGVudHJ5
KQogICAgIHsKICAgICAgICAgYXNzZXJ0KG1fdGFibGUpOwotICAgICAgICBhc3NlcnQoIWxvb2t1
cChFeHRyYWN0S2V5KGVudHJ5KSkuc2Vjb25kKTsKLSAgICAgICAgYXNzZXJ0KCFpc0RlbGV0ZWRC
dWNrZXQoKihsb29rdXAoRXh0cmFjdEtleShlbnRyeSkpLmZpcnN0KSkpOworICAgICAgICBhc3Nl
cnQoIWxvb2t1cChFeHRyYWN0b3I6OmV4dHJhY3QoZW50cnkpKS5zZWNvbmQpOworICAgICAgICBh
c3NlcnQoIWlzRGVsZXRlZEJ1Y2tldCgqKGxvb2t1cChFeHRyYWN0b3I6OmV4dHJhY3QoZW50cnkp
KS5maXJzdCkpKTsKICNpZiBEVU1QX0hBU0hUQUJMRV9TVEFUUwogICAgICAgICArK0hhc2hUYWJs
ZVN0YXRzOjpudW1SZWluc2VydHM7CiAjZW5kaWYKIAotICAgICAgICBNb3ZlcjxWYWx1ZVR5cGUs
IFRyYWl0czo6bmVlZHNEZXN0cnVjdGlvbj46Om1vdmUoZW50cnksICoobG9va3VwKEV4dHJhY3RL
ZXkoZW50cnkpKS5maXJzdCkpOworICAgICAgICBNb3ZlcjxWYWx1ZVR5cGUsIFRyYWl0czo6bmVl
ZHNEZXN0cnVjdGlvbj46Om1vdmUoZW50cnksICoobG9va3VwKEV4dHJhY3Rvcjo6ZXh0cmFjdChl
bnRyeSkpLmZpcnN0KSk7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBl
bmFtZSBWYWx1ZSwgY29uc3QgS2V5JiBFeHRyYWN0S2V5KGNvbnN0IFZhbHVlJiksIHR5cGVuYW1l
IEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgotICAg
IGlubGluZSB0eXBlbmFtZSBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdEtleSwgSGFzaEZ1
bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OjppdGVyYXRvciBIYXNoVGFibGU8S2V5LCBWYWx1
ZSwgRXh0cmFjdEtleSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OjpmaW5kKGNv
bnN0IEtleSYga2V5KQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUs
IHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJh
aXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+CisgICAgaW5saW5lIHR5cGVuYW1lIEhhc2hUYWJsZTxL
ZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6
aXRlcmF0b3IgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywg
VHJhaXRzLCBLZXlUcmFpdHM+OjpmaW5kKGNvbnN0IEtleSYga2V5KQogICAgIHsKICAgICAgICAg
aWYgKCFtX3RhYmxlKQogICAgICAgICAgICAgcmV0dXJuIGVuZCgpOwpAQCAtNDc4LDggKzQ3OCw4
IEBAIG5hbWVzcGFjZSBLWE1MQ29yZSB7CiAgICAgICAgIHJldHVybiBtYWtlSXRlcmF0b3IocmVz
dWx0LmZpcnN0KTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1l
IFZhbHVlLCBjb25zdCBLZXkmIEV4dHJhY3RLZXkoY29uc3QgVmFsdWUmKSwgdHlwZW5hbWUgSGFz
aEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+Ci0gICAgaW5s
aW5lIHR5cGVuYW1lIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0S2V5LCBIYXNoRnVuY3Rp
b25zLCBUcmFpdHMsIEtleVRyYWl0cz46OmNvbnN0X2l0ZXJhdG9yIEhhc2hUYWJsZTxLZXksIFZh
bHVlLCBFeHRyYWN0S2V5LCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46OmZpbmQo
Y29uc3QgS2V5JiBrZXkpIGNvbnN0CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFt
ZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBl
bmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4KKyAgICBpbmxpbmUgdHlwZW5hbWUgSGFz
aFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlU
cmFpdHM+Ojpjb25zdF9pdGVyYXRvciBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBI
YXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46OmZpbmQoY29uc3QgS2V5JiBrZXkpIGNv
bnN0CiAgICAgewogICAgICAgICBpZiAoIW1fdGFibGUpCiAgICAgICAgICAgICByZXR1cm4gZW5k
KCk7CkBAIC00OTAsOCArNDkwLDggQEAgbmFtZXNwYWNlIEtYTUxDb3JlIHsKICAgICAgICAgcmV0
dXJuIG1ha2VDb25zdEl0ZXJhdG9yKHJlc3VsdC5maXJzdCk7CiAgICAgfQogCi0gICAgdGVtcGxh
dGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgY29uc3QgS2V5JiBFeHRyYWN0S2V5KGNv
bnN0IFZhbHVlJiksIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlw
ZW5hbWUgS2V5VHJhaXRzPgotICAgIGlubGluZSBib29sIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBF
eHRyYWN0S2V5LCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46OmNvbnRhaW5zKGNv
bnN0IEtleVR5cGUmIGtleSkgY29uc3QKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVu
YW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5
cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgorICAgIGlubGluZSBib29sIEhhc2hU
YWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJh
aXRzPjo6Y29udGFpbnMoY29uc3QgS2V5VHlwZSYga2V5KSBjb25zdAogICAgIHsKICAgICAgICAg
aWYgKCFtX3RhYmxlKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNDk5LDggKzQ5OSw4
IEBAIG5hbWVzcGFjZSBLWE1MQ29yZSB7CiAgICAgICAgIHJldHVybiBjb25zdF9jYXN0PEhhc2hU
YWJsZSAqPih0aGlzKS0+bG9va3VwKGtleSkuc2Vjb25kOwogICAgIH0KIAotICAgIHRlbXBsYXRl
PHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIGNvbnN0IEtleSYgRXh0cmFjdEtleShjb25z
dCBWYWx1ZSYpLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVu
YW1lIEtleVRyYWl0cz4KLSAgICBpbmxpbmUgdm9pZCBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0
cmFjdEtleSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OjpyZW1vdmUoVmFsdWVU
eXBlKiBwb3MpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlw
ZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMs
IHR5cGVuYW1lIEtleVRyYWl0cz4KKyAgICBpbmxpbmUgdm9pZCBIYXNoVGFibGU8S2V5LCBWYWx1
ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46OnJlbW92ZShW
YWx1ZVR5cGUqIHBvcykKICAgICB7CiAgICAgICAgIGludmFsaWRhdGVJdGVyYXRvcnMoKTsKICAg
ICAgICAgY2hlY2tUYWJsZUNvbnNpc3RlbmN5KCk7CkBAIC01MTksOCArNTE5LDggQEAgbmFtZXNw
YWNlIEtYTUxDb3JlIHsKICAgICAgICAgY2hlY2tUYWJsZUNvbnNpc3RlbmN5KCk7CiAgICAgfQog
Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgY29uc3QgS2V5JiBF
eHRyYWN0S2V5KGNvbnN0IFZhbHVlJiksIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1l
IFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgotICAgIGlubGluZSB2b2lkIEhhc2hUYWJsZTxL
ZXksIFZhbHVlLCBFeHRyYWN0S2V5LCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46
OnJlbW92ZShjb25zdCBLZXlUeXBlJiBrZXkpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0
eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25z
LCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4KKyAgICBpbmxpbmUgdm9pZCBI
YXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtl
eVRyYWl0cz46OnJlbW92ZShjb25zdCBLZXlUeXBlJiBrZXkpCiAgICAgewogICAgICAgICBpZiAo
IW1fdGFibGUpCiAgICAgICAgICAgICByZXR1cm47CkBAIC01MjgsOCArNTI4LDggQEAgbmFtZXNw
YWNlIEtYTUxDb3JlIHsKICAgICAgICAgcmVtb3ZlKGZpbmQoa2V5KSk7CiAgICAgfQogCi0gICAg
dGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgY29uc3QgS2V5JiBFeHRyYWN0
S2V5KGNvbnN0IFZhbHVlJiksIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0
cywgdHlwZW5hbWUgS2V5VHJhaXRzPgotICAgIGlubGluZSB2b2lkIEhhc2hUYWJsZTxLZXksIFZh
bHVlLCBFeHRyYWN0S2V5LCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46OnJlbW92
ZShpdGVyYXRvciBpdCkKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVl
LCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRy
YWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgorICAgIGlubGluZSB2b2lkIEhhc2hUYWJsZTxLZXks
IFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6cmVt
b3ZlKGl0ZXJhdG9yIGl0KQogICAgIHsKICAgICAgICAgaWYgKGl0ID09IGVuZCgpKQogICAgICAg
ICAgICAgcmV0dXJuOwpAQCAtNTM4LDggKzUzOCw4IEBAIG5hbWVzcGFjZSBLWE1MQ29yZSB7CiAg
ICAgfQogCiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCBjb25z
dCBLZXkmIEV4dHJhY3RLZXkoY29uc3QgVmFsdWUmKSwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywg
dHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+Ci0gICAgaW5saW5lIFZhbHVlICpI
YXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdEtleSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBL
ZXlUcmFpdHM+OjphbGxvY2F0ZVRhYmxlKGludCBzaXplKQorICAgIHRlbXBsYXRlPHR5cGVuYW1l
IEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1
bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+CisgICAgaW5saW5l
IFZhbHVlICpIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBU
cmFpdHMsIEtleVRyYWl0cz46OmFsbG9jYXRlVGFibGUoaW50IHNpemUpCiAgICAgewogICAgICAg
ICAvLyB3b3VsZCB1c2UgYSB0ZW1wbGF0ZSBtZW1iZXIgZnVuY3Rpb24gd2l0aCBleHBsaWNpdCBz
cGVjaWFsaXphdGlvbnMgaGVyZSwgYnV0CiAgICAgICAgIC8vIGdjYyBkb2Vzbid0IGFwcGVhciB0
byBzdXBwb3J0IHRoYXQKQEAgLTU1NCw4ICs1NTQsOCBAQCBuYW1lc3BhY2UgS1hNTENvcmUgewog
ICAgICAgICB9CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBW
YWx1ZSwgY29uc3QgS2V5JiBFeHRyYWN0S2V5KGNvbnN0IFZhbHVlJiksIHR5cGVuYW1lIEhhc2hG
dW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgotICAgIGlubGlu
ZSB2b2lkIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0S2V5LCBIYXNoRnVuY3Rpb25zLCBU
cmFpdHMsIEtleVRyYWl0cz46OmRlYWxsb2NhdGVUYWJsZShWYWx1ZVR5cGUgKnRhYmxlLCBpbnQg
c2l6ZSkKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFt
ZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlw
ZW5hbWUgS2V5VHJhaXRzPgorICAgIGlubGluZSB2b2lkIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBF
eHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6ZGVhbGxvY2F0ZVRh
YmxlKFZhbHVlVHlwZSAqdGFibGUsIGludCBzaXplKQogICAgIHsKICAgICAgICAgaWYgKFRyYWl0
czo6bmVlZHNEZXN0cnVjdGlvbikgewogICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBz
aXplOyArK2kpIHsKQEAgLTU2Niw4ICs1NjYsOCBAQCBuYW1lc3BhY2UgS1hNTENvcmUgewogICAg
ICAgICBmYXN0RnJlZSh0YWJsZSk7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5
LCB0eXBlbmFtZSBWYWx1ZSwgY29uc3QgS2V5JiBFeHRyYWN0S2V5KGNvbnN0IFZhbHVlJiksIHR5
cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRz
PgotICAgIGlubGluZSB2b2lkIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0S2V5LCBIYXNo
RnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46OmV4cGFuZCgpCisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBI
YXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4KKyAgICBp
bmxpbmUgdm9pZCBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25z
LCBUcmFpdHMsIEtleVRyYWl0cz46OmV4cGFuZCgpCiAgICAgewogICAgICAgICBpbnQgbmV3U2l6
ZTsKICAgICAgICAgaWYgKG1fdGFibGVTaXplID09IDApCkBAIC01ODAsOCArNTgwLDggQEAgbmFt
ZXNwYWNlIEtYTUxDb3JlIHsKICAgICAgICAgcmVoYXNoKG5ld1NpemUpOwogICAgIH0KIAotICAg
IHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIGNvbnN0IEtleSYgRXh0cmFj
dEtleShjb25zdCBWYWx1ZSYpLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFp
dHMsIHR5cGVuYW1lIEtleVRyYWl0cz4KLSAgICB2b2lkIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBF
eHRyYWN0S2V5LCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46OnJlaGFzaChpbnQg
bmV3VGFibGVTaXplKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUs
IHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJh
aXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+CisgICAgdm9pZCBIYXNoVGFibGU8S2V5LCBWYWx1ZSwg
RXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46OnJlaGFzaChpbnQg
bmV3VGFibGVTaXplKQogICAgIHsKICAgICAgICAgY2hlY2tUYWJsZUNvbnNpc3RlbmN5RXhjZXB0
U2l6ZSgpOwogCkBAIC02MDksOCArNjA5LDggQEAgbmFtZXNwYWNlIEtYTUxDb3JlIHsKICAgICAg
ICAgY2hlY2tUYWJsZUNvbnNpc3RlbmN5KCk7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5h
bWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgY29uc3QgS2V5JiBFeHRyYWN0S2V5KGNvbnN0IFZhbHVl
JiksIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5
VHJhaXRzPgotICAgIGlubGluZSB2b2lkIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0S2V5
LCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46OmNsZWFyKCkKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVu
YW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgor
ICAgIGlubGluZSB2b2lkIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5j
dGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6Y2xlYXIoKQogICAgIHsKICAgICAgICAgaW52YWxp
ZGF0ZUl0ZXJhdG9ycygpOwogICAgICAgICBkZWFsbG9jYXRlVGFibGUobV90YWJsZSwgbV90YWJs
ZVNpemUpOwpAQCAtNjIwLDggKzYyMCw4IEBAIG5hbWVzcGFjZSBLWE1MQ29yZSB7CiAgICAgICAg
IG1fa2V5Q291bnQgPSAwOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlw
ZW5hbWUgVmFsdWUsIGNvbnN0IEtleSYgRXh0cmFjdEtleShjb25zdCBWYWx1ZSYpLCB0eXBlbmFt
ZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4KLSAg
ICBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdEtleSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRz
LCBLZXlUcmFpdHM+OjpIYXNoVGFibGUoY29uc3QgSGFzaFRhYmxlJiBvdGhlcikKKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5
cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRz
PgorICAgIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRy
YWl0cywgS2V5VHJhaXRzPjo6SGFzaFRhYmxlKGNvbnN0IEhhc2hUYWJsZSYgb3RoZXIpCiAgICAg
ICAgIDogbV90YWJsZSgwKQogICAgICAgICAsIG1fdGFibGVTaXplKDApCiAgICAgICAgICwgbV90
YWJsZVNpemVNYXNrKDApCkBAIC02MzgsOCArNjM4LDggQEAgbmFtZXNwYWNlIEtYTUxDb3JlIHsK
ICAgICAgICAgICAgIGFkZCgqaXQpOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtl
eSwgdHlwZW5hbWUgVmFsdWUsIGNvbnN0IEtleSYgRXh0cmFjdEtleShjb25zdCBWYWx1ZSYpLCB0
eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0
cz4KLSAgICB2b2lkIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0S2V5LCBIYXNoRnVuY3Rp
b25zLCBUcmFpdHMsIEtleVRyYWl0cz46OnN3YXAoSGFzaFRhYmxlJiBvdGhlcikKKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5
cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRz
PgorICAgIHZvaWQgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9u
cywgVHJhaXRzLCBLZXlUcmFpdHM+Ojpzd2FwKEhhc2hUYWJsZSYgb3RoZXIpCiAgICAgewogICAg
ICAgICBpbnZhbGlkYXRlSXRlcmF0b3JzKCk7CiAgICAgICAgIG90aGVyLmludmFsaWRhdGVJdGVy
YXRvcnMoKTsKQEAgLTY2NSw4ICs2NjUsOCBAQCBuYW1lc3BhY2UgS1hNTENvcmUgewogICAgICAg
ICBvdGhlci5tX2RlbGV0ZWRDb3VudCA9IHRtcF9kZWxldGVkQ291bnQ7CiAgICAgfQogCi0gICAg
dGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgY29uc3QgS2V5JiBFeHRyYWN0
S2V5KGNvbnN0IFZhbHVlJiksIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0
cywgdHlwZW5hbWUgS2V5VHJhaXRzPgotICAgIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0
S2V5LCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz4mIEhhc2hUYWJsZTxLZXksIFZh
bHVlLCBFeHRyYWN0S2V5LCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46Om9wZXJh
dG9yPShjb25zdCBIYXNoVGFibGUmIG90aGVyKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwg
dHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9u
cywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+CisgICAgSGFzaFRhYmxlPEtl
eSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+JiBI
YXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtl
eVRyYWl0cz46Om9wZXJhdG9yPShjb25zdCBIYXNoVGFibGUmIG90aGVyKQogICAgIHsKICAgICAg
ICAgSGFzaFRhYmxlIHRtcChvdGhlcik7CiAgICAgICAgIHN3YXAodG1wKTsKQEAgLTY3NSwxNiAr
Njc1LDE2IEBAIG5hbWVzcGFjZSBLWE1MQ29yZSB7CiAKICNpZiBDSEVDS19IQVNIVEFCTEVfQ09O
U0lTVEVOQ1kKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIGNv
bnN0IEtleSYgRXh0cmFjdEtleShjb25zdCBWYWx1ZSYpLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25z
LCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4KLSAgICB2b2lkIEhhc2hUYWJs
ZTxLZXksIFZhbHVlLCBFeHRyYWN0S2V5LCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0
cz46OmNoZWNrVGFibGVDb25zaXN0ZW5jeSgpIGNvbnN0CisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
S2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVu
Y3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4KKyAgICB2b2lkIEhh
c2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5
VHJhaXRzPjo6Y2hlY2tUYWJsZUNvbnNpc3RlbmN5KCkgY29uc3QKICAgICB7CiAgICAgICAgIGNo
ZWNrVGFibGVDb25zaXN0ZW5jeUV4Y2VwdFNpemUoKTsKICAgICAgICAgYXNzZXJ0KCFzaG91bGRF
eHBhbmQoKSk7CiAgICAgICAgIGFzc2VydCghc2hvdWxkU2hyaW5rKCkpOwogICAgIH0KIAotICAg
IHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIGNvbnN0IEtleSYgRXh0cmFj
dEtleShjb25zdCBWYWx1ZSYpLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFp
dHMsIHR5cGVuYW1lIEtleVRyYWl0cz4KLSAgICB2b2lkIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBF
eHRyYWN0S2V5LCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46OmNoZWNrVGFibGVD
b25zaXN0ZW5jeUV4Y2VwdFNpemUoKSBjb25zdAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwg
dHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9u
cywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+CisgICAgdm9pZCBIYXNoVGFi
bGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0
cz46OmNoZWNrVGFibGVDb25zaXN0ZW5jeUV4Y2VwdFNpemUoKSBjb25zdAogICAgIHsKICAgICAg
ICAgaWYgKCFtX3RhYmxlKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtNzAxLDcgKzcwMSw3IEBA
IG5hbWVzcGFjZSBLWE1MQ29yZSB7CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
ICAgICB9CiAKLSAgICAgICAgICAgIGNvbnN0X2l0ZXJhdG9yIGl0ID0gZmluZChFeHRyYWN0S2V5
KCplbnRyeSkpOworICAgICAgICAgICAgY29uc3RfaXRlcmF0b3IgaXQgPSBmaW5kKEV4dHJhY3Rv
cjo6ZXh0cmFjdCgqZW50cnkpKTsKICAgICAgICAgICAgIGFzc2VydChlbnRyeSA9PSBpdC5tX3Bv
c2l0aW9uKTsKICAgICAgICAgICAgICsrY291bnQ7CiAgICAgICAgIH0KQEAgLTcxNyw4ICs3MTcs
OCBAQCBuYW1lc3BhY2UgS1hNTENvcmUgewogCiAjaWYgQ0hFQ0tfSEFTSFRBQkxFX0lURVJBVE9S
UwogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgY29uc3QgS2V5
JiBFeHRyYWN0S2V5KGNvbnN0IFZhbHVlJiksIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVu
YW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgotICAgIHZvaWQgSGFzaFRhYmxlPEtleSwg
VmFsdWUsIEV4dHJhY3RLZXksIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6aW52
YWxpZGF0ZUl0ZXJhdG9ycygpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBW
YWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFt
ZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4KKyAgICB2b2lkIEhhc2hUYWJsZTxLZXksIFZh
bHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6aW52YWxp
ZGF0ZUl0ZXJhdG9ycygpCiAgICAgewogICAgICAgICBjb25zdF9pdGVyYXRvciogbmV4dDsKICAg
ICAgICAgZm9yIChjb25zdF9pdGVyYXRvciogcCA9IG1faXRlcmF0b3JzOyBwOyBwID0gbmV4dCkg
ewpAQCAtNzMwLDkgKzczMCw5IEBAIG5hbWVzcGFjZSBLWE1MQ29yZSB7CiAgICAgICAgIG1faXRl
cmF0b3JzID0gMDsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1l
IFZhbHVlLCBjb25zdCBLZXkmIEV4dHJhY3RLZXkoY29uc3QgVmFsdWUmKSwgdHlwZW5hbWUgSGFz
aEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+Ci0gICAgdm9p
ZCBhZGRJdGVyYXRvcihjb25zdCBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdEtleSwgSGFz
aEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+KiB0YWJsZSwKLSAgICAgICAgSGFzaFRhYmxl
Q29uc3RJdGVyYXRvcjxLZXksIFZhbHVlLCBFeHRyYWN0S2V5LCBIYXNoRnVuY3Rpb25zLCBUcmFp
dHMsIEtleVRyYWl0cz4qIGl0KQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUg
VmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5h
bWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+CisgICAgdm9pZCBhZGRJdGVyYXRvcihjb25z
dCBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMs
IEtleVRyYWl0cz4qIHRhYmxlLAorICAgICAgICBIYXNoVGFibGVDb25zdEl0ZXJhdG9yPEtleSwg
VmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+KiBpdCkK
ICAgICB7CiAgICAgICAgIGl0LT5tX3RhYmxlID0gdGFibGU7CiAgICAgICAgIGl0LT5tX3ByZXZp
b3VzID0gMDsKQEAgLTc1MSwxMSArNzUxLDExIEBAIG5hbWVzcGFjZSBLWE1MQ29yZSB7CiAgICAg
ICAgIH0KICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVl
LCBjb25zdCBLZXkmIEV4dHJhY3RLZXkoY29uc3QgVmFsdWUmKSwgdHlwZW5hbWUgSGFzaEZ1bmN0
aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+Ci0gICAgdm9pZCByZW1v
dmVJdGVyYXRvcihIYXNoVGFibGVDb25zdEl0ZXJhdG9yPEtleSwgVmFsdWUsIEV4dHJhY3RLZXks
IEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPiogaXQpCisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBI
YXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4KKyAgICB2
b2lkIHJlbW92ZUl0ZXJhdG9yKEhhc2hUYWJsZUNvbnN0SXRlcmF0b3I8S2V5LCBWYWx1ZSwgRXh0
cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz4qIGl0KQogICAgIHsKLSAg
ICAgICAgdHlwZWRlZiBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdEtleSwgSGFzaEZ1bmN0
aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+IEhhc2hUYWJsZVR5cGU7Ci0gICAgICAgIHR5cGVkZWYg
SGFzaFRhYmxlQ29uc3RJdGVyYXRvcjxLZXksIFZhbHVlLCBFeHRyYWN0S2V5LCBIYXNoRnVuY3Rp
b25zLCBUcmFpdHMsIEtleVRyYWl0cz4gY29uc3RfaXRlcmF0b3I7CisgICAgICAgIHR5cGVkZWYg
SGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBL
ZXlUcmFpdHM+IEhhc2hUYWJsZVR5cGU7CisgICAgICAgIHR5cGVkZWYgSGFzaFRhYmxlQ29uc3RJ
dGVyYXRvcjxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5
VHJhaXRzPiBjb25zdF9pdGVyYXRvcjsKIAogICAgICAgICAvLyBEZWxldGUgaXRlcmF0b3IgZnJv
bSBkb3VibHktbGlua2VkIGxpc3Qgb2YgaXRlcmF0b3JzLgogICAgICAgICBpZiAoIWl0LT5tX3Rh
YmxlKSB7CkluZGV4OiBreG1sY29yZS9IYXNoU2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga3htbGNvcmUv
SGFzaFNldC5oCShyZXZpc2lvbiAxMjMyMSkKKysrIGt4bWxjb3JlL0hhc2hTZXQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzAsMTEgKzMwLDEzIEBACiBuYW1lc3BhY2UgS1hNTENvcmUgewogCiAgICAg
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gICAgaW5saW5lIGNvbnN0IFQmIGlkZW50aXR5RXh0cmFj
dChjb25zdCBUJiB0KSAKLSAgICB7IAotICAgICAgICByZXR1cm4gdDsgCi0gICAgfQotCisgICAg
c3RydWN0IElkZW50aXR5RXh0cmFjdG9yCisgICAgeworICAgICAgICBzdGF0aWMgY29uc3QgVCYg
ZXh0cmFjdChjb25zdCBUJiB0KSAKKyAgICAgICAgeyAKKyAgICAgICAgICAgIHJldHVybiB0OyAK
KyAgICAgICAgfQorICAgIH07CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZSwgdHlwZW5h
bWUgVCwgdHlwZW5hbWUgSGFzaFNldFRyYW5zbGF0b3I+CiAgICAgc3RydWN0IEhhc2hTZXRUcmFu
c2xhdG9yQWRhcHRlciAKQEAgLTU4LDcgKzYwLDcgQEAgbmFtZXNwYWNlIEtYTUxDb3JlIHsKICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucyA9IERlZmF1
bHRIYXNoPFZhbHVlPiwgdHlwZW5hbWUgVHJhaXRzID0gSGFzaFRyYWl0czxWYWx1ZT4gPgogICAg
IGNsYXNzIEhhc2hTZXQgewogICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgSGFzaFRhYmxl
PFZhbHVlLCBWYWx1ZSwgaWRlbnRpdHlFeHRyYWN0PFZhbHVlPiwgSGFzaEZ1bmN0aW9ucywgVHJh
aXRzLCBUcmFpdHM+IEltcGxUeXBlOworICAgICAgICB0eXBlZGVmIEhhc2hUYWJsZTxWYWx1ZSwg
VmFsdWUsIElkZW50aXR5RXh0cmFjdG9yPFZhbHVlPiwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBU
cmFpdHM+IEltcGxUeXBlOwogICAgIHB1YmxpYzoKICAgICAgICAgdHlwZWRlZiBWYWx1ZSBWYWx1
ZVR5cGU7CiAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgSW1wbFR5cGU6Oml0ZXJhdG9yIGl0ZXJh
dG9yOwpJbmRleDoga3htbGNvcmUvSGFzaE1hcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGt4bWxjb3JlL0hh
c2hNYXAuaAkocmV2aXNpb24gMTIzMjEpCisrKyBreG1sY29yZS9IYXNoTWFwLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI5LDExICsyOSwxNyBAQAogCiBuYW1lc3BhY2UgS1hNTENvcmUgewogCi10ZW1w
bGF0ZTx0eXBlbmFtZSBQYWlyVHlwZT4gCi1pbmxpbmUgdHlwZW5hbWUgUGFpclR5cGU6OmZpcnN0
X3R5cGUgY29uc3QmIGV4dHJhY3RGaXJzdChjb25zdCBQYWlyVHlwZSYgdmFsdWUpCit0ZW1wbGF0
ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIE1hcHBlZD4KK2NsYXNzIFBhaXJGaXJzdEV4dHJhY3Rv
cgogewotICAgIHJldHVybiB2YWx1ZS5maXJzdDsKLX0KKyAgICB0eXBlZGVmIHBhaXI8S2V5LCBN
YXBwZWQ+IFZhbHVlVHlwZTsKKyAgICAgICAgCitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0IEtl
eSYgZXh0cmFjdChjb25zdCBWYWx1ZVR5cGUmIHZhbHVlKSAKKyAgICB7IAorICAgICAgICByZXR1
cm4gdmFsdWUuZmlyc3Q7CisgICAgfQorfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBl
bmFtZSBNYXBwZWQsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnM+CiBjbGFzcyBIYXNoTWFwVHJhbnNs
YXRvciAKQEAgLTY3LDcgKzczLDcgQEAgY2xhc3MgSGFzaE1hcCB7CiAgICAgdHlwZWRlZiBwYWly
PEtleSwgTWFwcGVkPiBWYWx1ZVR5cGU7CiAgICAgdHlwZWRlZiBQYWlySGFzaFRyYWl0czxLZXlU
cmFpdHMsIE1hcHBlZFRyYWl0cz4gVmFsdWVUcmFpdHM7CiAgcHJpdmF0ZToKLSAgICB0eXBlZGVm
IEhhc2hUYWJsZTxLZXlUeXBlLCBWYWx1ZVR5cGUsIGV4dHJhY3RGaXJzdDxWYWx1ZVR5cGU+LCBI
YXNoRnVuY3Rpb25zLCBWYWx1ZVRyYWl0cywgS2V5VHJhaXRzPiBJbXBsVHlwZTsKKyAgICB0eXBl
ZGVmIEhhc2hUYWJsZTxLZXlUeXBlLCBWYWx1ZVR5cGUsIFBhaXJGaXJzdEV4dHJhY3RvcjxLZXlU
eXBlLCBNYXBwZWRUeXBlPiwgSGFzaEZ1bmN0aW9ucywgVmFsdWVUcmFpdHMsIEtleVRyYWl0cz4g
SW1wbFR5cGU7CiAgICAgdHlwZWRlZiBIYXNoTWFwVHJhbnNsYXRvcjxLZXksIE1hcHBlZCwgSGFz
aEZ1bmN0aW9ucz4gVHJhbnNsYXRvclR5cGU7IAogIHB1YmxpYzoKICAgICB0eXBlZGVmIHR5cGVu
YW1lIEltcGxUeXBlOjppdGVyYXRvciBpdGVyYXRvcjsKSW5kZXg6IGt4bWxjb3JlL0hhc2hNYXBQ
dHJTcGVjLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0ga3htbGNvcmUvSGFzaE1hcFB0clNwZWMuaAkocmV2aXNp
b24gMTIzMTcpCisrKyBreG1sY29yZS9IYXNoTWFwUHRyU3BlYy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xODAsOCArMTgwLDggQEAgbmFtZXNwYWNlIEtYTUxDb3JlIHsKICAgICAgICAgdHlwZWRlZiBR
ICpNYXBwZWRUeXBlOwogICAgICAgICB0eXBlZGVmIHN0ZDo6cGFpcjxLZXlUeXBlLCBNYXBwZWRU
eXBlPiBWYWx1ZVR5cGU7CiAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc3RkOjpwYWlyPHZvaWQg
Kiwgdm9pZCAqPiBJbXBsVmFsdWVUeXBlOwotICAgICAgICB0eXBlZGVmIEhhc2hUYWJsZUl0ZXJh
dG9yPHZvaWQgKiwgSW1wbFZhbHVlVHlwZSwgZXh0cmFjdEZpcnN0PEltcGxWYWx1ZVR5cGU+LCBE
ZWZhdWx0SGFzaDx2b2lkICo+LCBQYWlySGFzaFRyYWl0czxIYXNoVHJhaXRzPHZvaWQgKj4sIEhh
c2hUcmFpdHM8dm9pZCAqPiA+LCBIYXNoVHJhaXRzPHZvaWQgKj4gPiBJbXBsSXRlcmF0b3I7Ci0g
ICAgICAgIHR5cGVkZWYgSGFzaFRhYmxlQ29uc3RJdGVyYXRvcjx2b2lkICosIEltcGxWYWx1ZVR5
cGUsIGV4dHJhY3RGaXJzdDxJbXBsVmFsdWVUeXBlPiwgRGVmYXVsdEhhc2g8dm9pZCAqPiwgUGFp
ckhhc2hUcmFpdHM8SGFzaFRyYWl0czx2b2lkICo+LCBIYXNoVHJhaXRzPHZvaWQgKj4gPiwgSGFz
aFRyYWl0czx2b2lkICo+ID4gSW1wbENvbnN0SXRlcmF0b3I7CisgICAgICAgIHR5cGVkZWYgSGFz
aFRhYmxlSXRlcmF0b3I8dm9pZCAqLCBJbXBsVmFsdWVUeXBlLCBQYWlyRmlyc3RFeHRyYWN0b3I8
dm9pZCAqLCB2b2lkKj4sIERlZmF1bHRIYXNoPHZvaWQgKj4sIFBhaXJIYXNoVHJhaXRzPEhhc2hU
cmFpdHM8dm9pZCAqPiwgSGFzaFRyYWl0czx2b2lkICo+ID4sIEhhc2hUcmFpdHM8dm9pZCAqPiA+
IEltcGxJdGVyYXRvcjsKKyAgICAgICAgdHlwZWRlZiBIYXNoVGFibGVDb25zdEl0ZXJhdG9yPHZv
aWQgKiwgSW1wbFZhbHVlVHlwZSwgUGFpckZpcnN0RXh0cmFjdG9yPHZvaWQgKiwgdm9pZCo+LCBE
ZWZhdWx0SGFzaDx2b2lkICo+LCBQYWlySGFzaFRyYWl0czxIYXNoVHJhaXRzPHZvaWQgKj4sIEhh
c2hUcmFpdHM8dm9pZCAqPiA+LCBIYXNoVHJhaXRzPHZvaWQgKj4gPiBJbXBsQ29uc3RJdGVyYXRv
cjsKICAgICAgICAgCiAgICAgICAgIHR5cGVkZWYgUG9pbnRlckhhc2hJdGVyYXRvckFkYXB0ZXI8
UCwgUSAqPiBpdGVyYXRvcjsKICAgICAgICAgdHlwZWRlZiBQb2ludGVySGFzaENvbnN0SXRlcmF0
b3JBZGFwdGVyPFAsIFEgKj4gY29uc3RfaXRlcmF0b3I7CkluZGV4OiBranMvaW50ZXJuYWwuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIGtqcy9pbnRlcm5hbC5jcHAJKHJldmlzaW9uIDEyMzE3KQorKysga2pz
L2ludGVybmFsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYsMTIgKzQ2LDYgQEAKICNpbmNsdWRl
IDxtYXRoLmg+CiAjaW5jbHVkZSA8c3RkaW8uaD4KIAotI2lmIFdJTjMyCi0jaW5jbHVkZSA8Zmxv
YXQuaD4KLSNkZWZpbmUgY29weXNpZ24oYSwgYikgX2NvcHlzaWduKGEsIGIpCi10ZW1wbGF0ZSB2
b2lkICogY29uc3QgJiBLWE1MQ29yZTo6ZXh0cmFjdEZpcnN0PHN0cnVjdCBzdGQ6OnBhaXI8dm9p
ZCAqLHZvaWQgKj4gPihzdHJ1Y3Qgc3RkOjpwYWlyPHZvaWQgKiwgdm9pZCAqPiBjb25zdCAmKTsK
LSNlbmRpZgotCiBleHRlcm4gaW50IGtqc3l5cGFyc2UoKTsKIAogbmFtZXNwYWNlIEtKUyB7Cklu
ZGV4OiBranMvaWRlbnRpZmllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga2pzL2lkZW50aWZpZXIuY3Bw
CShyZXZpc2lvbiAxMjMyMSkKKysrIGtqcy9pZGVudGlmaWVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDEsMTAgKzQxLDYgQEAKICNpbmNsdWRlIDxzdHJpbmcuaD4gLy8gZm9yIHN0cmxlbgogI2lu
Y2x1ZGUgPG5ldz4gLy8gZm9yIHBsYWNlbWVudCBuZXcKIAotI2lmZGVmIFdJTjMyCi10ZW1wbGF0
ZSBzdHJ1Y3QgS0pTOjpVU3RyaW5nOjpSZXAgKiBjb25zdCAmIEtYTUxDb3JlOjppZGVudGl0eUV4
dHJhY3Q8c3RydWN0IEtKUzo6VVN0cmluZzo6UmVwICo+KHN0cnVjdCBLSlM6OlVTdHJpbmc6OlJl
cCAqIGNvbnN0ICYpOwotI2VuZGlmCi0KIG5hbWVzcGFjZSBLWE1MQ29yZSB7CiAKICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBEZWZhdWx0SGFzaDsKSW5kZXg6IGtqcy9hcnJheV9vYmpl
Y3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIGtqcy9hcnJheV9vYmplY3QuY3BwCShyZXZpc2lvbiAxMjMy
MSkKKysrIGtqcy9hcnJheV9vYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwxMCArMzks
NiBAQAogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8YXNzZXJ0Lmg+CiAKLSNpZmRlZiBX
SU4zMgotdGVtcGxhdGUgY2xhc3MgS0pTOjpKU09iamVjdCAqIGNvbnN0ICYgS1hNTENvcmU6Omlk
ZW50aXR5RXh0cmFjdDxjbGFzcyBLSlM6OkpTT2JqZWN0ICo+KGNsYXNzIEtKUzo6SlNPYmplY3Qg
KiBjb25zdCAmKTsKLSNlbmRpZgotCiB1c2luZyBuYW1lc3BhY2UgS0pTOwogCiAvLyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQXJyYXlJbnN0YW5jZSAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQpJbmRleDogQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIENoYW5nZUxvZwkocmV2
aXNpb24gMTIzMjIpCisrKyBDaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw0NSBA
QAogMjAwNi0wMS0yMyAgTWFjaWVqIFN0YWNob3dpYWsgIDxtanNAYXBwbGUuY29tPgogCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgLSB1c2Ug
Y2xhc3NlcyBpbnN0ZWFkIG9mIGZyZWUgZnVuY3Rpb25zIGZvciBleHRyYWN0b3JzLCB0aGlzIGJl
dHRlciBtYXRjaGVzIGhvdyBvdGhlcgorICAgICAgICB0aGluZ3Mgd29yayBhbmQgc2hvdWxkIGF2
b2lkIHRoZSBuZWVkIGZvciBoYWNreSB3b3JrYXJvdW5kcyBvbiBvdGhlciBjb21waWxlcnMKKwor
ICAgICAgICAqIGtqcy9hcnJheV9vYmplY3QuY3BwOgorICAgICAgICAqIGtqcy9pZGVudGlmaWVy
LmNwcDoKKyAgICAgICAgKiBranMvaW50ZXJuYWwuY3BwOgorICAgICAgICAqIGt4bWxjb3JlL0hh
c2hNYXAuaDoKKyAgICAgICAgKEtYTUxDb3JlOjpQYWlyRmlyc3RFeHRyYWN0b3I6OmV4dHJhY3Qp
OgorICAgICAgICAqIGt4bWxjb3JlL0hhc2hNYXBQdHJTcGVjLmg6CisgICAgICAgIChLWE1MQ29y
ZTo6KToKKyAgICAgICAgKiBreG1sY29yZS9IYXNoU2V0Lmg6CisgICAgICAgIChLWE1MQ29yZTo6
SWRlbnRpdHlFeHRyYWN0b3I6OmV4dHJhY3QpOgorICAgICAgICAqIGt4bWxjb3JlL0hhc2hUYWJs
ZS5oOgorICAgICAgICAoS1hNTENvcmU6OmFkZEl0ZXJhdG9yKToKKyAgICAgICAgKEtYTUxDb3Jl
OjpyZW1vdmVJdGVyYXRvcik6CisgICAgICAgIChLWE1MQ29yZTo6SGFzaFRhYmxlOjphZGQpOgor
ICAgICAgICAoS1hNTENvcmU6Okhhc2hUYWJsZTo6aXNFbXB0eUJ1Y2tldCk6CisgICAgICAgIChL
WE1MQ29yZTo6SGFzaFRhYmxlOjppc0RlbGV0ZWRCdWNrZXQpOgorICAgICAgICAoS1hNTENvcmU6
Okhhc2hUYWJsZTo6SGFzaFRhYmxlKToKKyAgICAgICAgKEtYTUxDb3JlOjpIYXNoVGFibGU6Omxv
b2t1cCk6CisgICAgICAgIChLWE1MQ29yZTo6SGFzaFRhYmxlOjphZGQpOgorICAgICAgICAoS1hN
TENvcmU6Okhhc2hUYWJsZTo6cmVpbnNlcnQpOgorICAgICAgICAoS1hNTENvcmU6Okhhc2hUYWJs
ZTo6ZmluZCk6CisgICAgICAgIChLWE1MQ29yZTo6SGFzaFRhYmxlOjpjb250YWlucyk6CisgICAg
ICAgIChLWE1MQ29yZTo6SGFzaFRhYmxlOjpyZW1vdmUpOgorICAgICAgICAoS1hNTENvcmU6Okhh
c2hUYWJsZTo6YWxsb2NhdGVUYWJsZSk6CisgICAgICAgIChLWE1MQ29yZTo6SGFzaFRhYmxlOjpk
ZWFsbG9jYXRlVGFibGUpOgorICAgICAgICAoS1hNTENvcmU6Okhhc2hUYWJsZTo6ZXhwYW5kKToK
KyAgICAgICAgKEtYTUxDb3JlOjpIYXNoVGFibGU6OnJlaGFzaCk6CisgICAgICAgIChLWE1MQ29y
ZTo6SGFzaFRhYmxlOjpjbGVhcik6CisgICAgICAgIChLWE1MQ29yZTo6SGFzaFRhYmxlOjpzd2Fw
KToKKyAgICAgICAgKEtYTUxDb3JlOjpIYXNoVGFibGU6Om9wZXJhdG9yKToKKyAgICAgICAgKEtY
TUxDb3JlOjpIYXNoVGFibGU6OmNoZWNrVGFibGVDb25zaXN0ZW5jeSk6CisgICAgICAgIChLWE1M
Q29yZTo6SGFzaFRhYmxlOjpjaGVja1RhYmxlQ29uc2lzdGVuY3lFeGNlcHRTaXplKToKKyAgICAg
ICAgKEtYTUxDb3JlOjpIYXNoVGFibGU6OmludmFsaWRhdGVJdGVyYXRvcnMpOgorCisyMDA2LTAx
LTIzICBNYWNpZWogU3RhY2hvd2lhayAgPG1qc0BhcHBsZS5jb20+CisKICAgICAgICAgUnViYmVy
IHN0YW1wZWQgYnkgVGltIEhhdGNoZXIuCiAgICAgICAgIAogICAgICAgICAtIHJlbmFtZWQgaW5l
cnQoKSBvcGVyYXRpb24gb24gSGFzaFNldCwgSGFzaENvdW50ZWRTZXQgYW5kIEhhc2hUYWJsZSB0
byBhZGQoKQo=
</data>
<flag name="review"
          id="1377"
          type_id="1"
          status="+"
          setter="timo"
    />
          </attachment>
      

    </bug>

</bugzilla>