<?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>172870</bug_id>
          
          <creation_ts>2017-06-02 13:03:51 -0700</creation_ts>
          <short_desc>[GCrypt] Gather SUBTLE_CRYPTO utility functions in a single header</short_desc>
          <delta_ts>2017-06-03 03:29:35 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>133122</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Zan Dobersek">zan</reporter>
          <assigned_to name="Zan Dobersek">zan</assigned_to>
          <cc>buildbot</cc>
    
    <cc>jiewen_tan</cc>
    
    <cc>mcatanzaro</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1315177</commentid>
    <comment_count>0</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-06-02 13:03:51 -0700</bug_when>
    <thetext>[GCrypt] Gather Web Crypto utility functions in a single header</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1315180</commentid>
    <comment_count>1</comment_count>
      <attachid>311849</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-06-02 13:09:59 -0700</bug_when>
    <thetext>Created attachment 311849
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1315181</commentid>
    <comment_count>2</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-06-02 13:12:11 -0700</bug_when>
    <thetext>Attachment 311849 did not pass style-queue:


ERROR: Source/WebCore/crypto/gcrypt/GCryptUtilities.h:68:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 1 in 8 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1315284</commentid>
    <comment_count>3</comment_count>
      <attachid>311849</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2017-06-02 16:40:44 -0700</bug_when>
    <thetext>Comment on attachment 311849
Patch

Looks good to me. Michael, please double checks if there are any missing ones.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1315319</commentid>
    <comment_count>4</comment_count>
      <attachid>311849</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-06-02 18:05:03 -0700</bug_when>
    <thetext>Comment on attachment 311849
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=311849&amp;action=review

Looks good to me as well... I just wonder why it wasn&apos;t written this way from the start!

&gt; Source/WebCore/crypto/gcrypt/GCryptUtilities.h:68
&gt; +        return std::nullopt;;

One too many semicolons!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1315335</commentid>
    <comment_count>5</comment_count>
      <attachid>311849</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2017-06-02 18:50:50 -0700</bug_when>
    <thetext>Comment on attachment 311849
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=311849&amp;action=review

&gt;&gt; Source/WebCore/crypto/gcrypt/GCryptUtilities.h:68
&gt;&gt; +        return std::nullopt;;
&gt; 
&gt; One too many semicolons!

Oops...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1315383</commentid>
    <comment_count>6</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-06-03 03:29:35 -0700</bug_when>
    <thetext>Committed r217754: &lt;http://trac.webkit.org/changeset/217754&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>311849</attachid>
            <date>2017-06-02 13:09:59 -0700</date>
            <delta_ts>2017-06-02 16:40:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-172870-20170602220958.patch</filename>
            <type>text/plain</type>
            <size>22041</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE3NzA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmNkZGJiMjgyNjBiNDk4
YzMyZmQ3YzgxNGY5NjY1NDY5NWY0YjM2Yi4uZjg1MjU5NmZlMjMwMmIyYjIyMTAwZWYwNTA2ODg1
YmQyZjJiYzNiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDE3LTA2LTAyICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBbR0NyeXB0XSBHYXRo
ZXIgU1VCVExFX0NSWVBUTyB1dGlsaXR5IGZ1bmN0aW9ucyBpbiBhIHNpbmdsZSBoZWFkZXIKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3Mjg3MAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEdhdGhlciB0aGUg
aGVscGVyIGZ1bmN0aW9ucyB1c2VkIGFjcm9zcyBkaWZmZXJlbnQgc291cmNlIGZpbGVzCisgICAg
ICAgIGZvciBsaWJnY3J5cHQtYmFja2VkIFNVQlRMRV9DUllQVE8gaW1wbGVtZW50YXRpb25zIGlu
IGEgc2luZ2xlCisgICAgICAgIGhlYWRlciBmaWxlLgorCisgICAgICAgICogY3J5cHRvL2djcnlw
dC9DcnlwdG9BbGdvcml0aG1FQ0RTQUdDcnlwdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpoYXNo
Q3J5cHRvRGlnZXN0QWxnb3JpdGhtKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Omhhc2hB
bGdvcml0aG1OYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Om1waURhdGEpOiBEZWxl
dGVkLgorICAgICAgICAqIGNyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtSEtERkdDcnlwdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpnY3J5cHREZXJpdmVCaXRzKToKKyAgICAgICAgKFdlYkNv
cmU6Om1hY0FsZ29yaXRobUZvckhhc2hGdW5jdGlvbik6IERlbGV0ZWQuCisgICAgICAgICogY3J5
cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1QQktERjJHQ3J5cHQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Z2NyeXB0RGVyaXZlQml0cyk6CisgICAgICAgICogY3J5cHRvL2djcnlwdC9DcnlwdG9B
bGdvcml0aG1SU0FFU19QS0NTMV92MV81R0NyeXB0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om1w
aURhdGEpOiBEZWxldGVkLgorICAgICAgICAqIGNyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGht
UlNBU1NBX1BLQ1MxX3YxXzVHQ3J5cHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aGFzaENyeXB0
b0RpZ2VzdEFsZ29yaXRobSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpoYXNoQWxnb3Jp
dGhtTmFtZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjptcGlEYXRhKTogRGVsZXRlZC4K
KyAgICAgICAgKiBjcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobVJTQV9PQUVQR0NyeXB0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Omhhc2hBbGdvcml0aG1OYW1lKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6Om1waURhdGEpOiBEZWxldGVkLgorICAgICAgICAqIGNyeXB0by9nY3J5cHQv
R0NyeXB0VXRpbGl0aWVzLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6aGFzaEFsZ29yaXRo
bU5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6aG1hY0FsZ29yaXRobSk6CisgICAgICAgIChXZWJD
b3JlOjpkaWdlc3RBbGdvcml0aG0pOgorICAgICAgICAoV2ViQ29yZTo6aGFzaENyeXB0b0RpZ2Vz
dEFsZ29yaXRobSk6CisgICAgICAgIChXZWJDb3JlOjptcGlEYXRhKToKKwogMjAxNy0wNi0wMiAg
SmF2aWVyIEZlcm5hbmRleiAgPGpmZXJuYW5kZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBbY3Nz
LWdyaWRdIExvZ2ljYWwgbWFyZ2luIGluY29ycmVjdGx5IGFwcGxpZWQgZHVyaW5nIHRoZSB0cmFj
a3Mgc2l6aW5nIGFsZ29yaXRobSBvZiBhdXRvIHRyYWNrcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1FQ0RTQUdDcnlwdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUVDRFNBR0NyeXB0LmNwcApp
bmRleCBjNjExZDk0ZGM5ZjhhYmUzYmYzZjcwZDdiOTgyZjk3YjA4ODg4ZWIxLi5jYjU0YmYyMDBm
MGE2YzE4MzU5MThiNjMwN2NhYjMwOTM3MTk3NTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUVDRFNBR0NyeXB0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUVDRFNBR0NyeXB0LmNwcApA
QCAtMzMsNzUgKzMzLDEyIEBACiAjaW5jbHVkZSAiQ3J5cHRvQWxnb3JpdGhtRWNkc2FQYXJhbXMu
aCIKICNpbmNsdWRlICJDcnlwdG9LZXlFQy5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIK
KyNpbmNsdWRlICJHQ3J5cHRVdGlsaXRpZXMuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25D
b250ZXh0LmgiCiAjaW5jbHVkZSA8cGFsL2NyeXB0by9DcnlwdG9EaWdlc3QuaD4KLSNpbmNsdWRl
IDxwYWwvY3J5cHRvL2djcnlwdC9IYW5kbGUuaD4KLSNpbmNsdWRlIDxwYWwvY3J5cHRvL2djcnlw
dC9VdGlsaXRpZXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgc3RkOjpvcHRp
b25hbDxQQUw6OkNyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtPiBoYXNoQ3J5cHRvRGlnZXN0QWxnb3Jp
dGhtKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaWRlbnRpZmllcikKLXsKLSAgICBzd2l0Y2gg
KGlkZW50aWZpZXIpIHsKLSAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8x
OgotICAgICAgICByZXR1cm4gUEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzE7Ci0g
ICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMjI0OgotICAgICAgICByZXR1
cm4gUEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzIyNDsKLSAgICBjYXNlIENyeXB0
b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8yNTY6Ci0gICAgICAgIHJldHVybiBQQUw6OkNyeXB0
b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2OwotICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRl
bnRpZmllcjo6U0hBXzM4NDoKLSAgICAgICAgcmV0dXJuIFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdv
cml0aG06OlNIQV8zODQ7Ci0gICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFf
NTEyOgotICAgICAgICByZXR1cm4gUEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzUx
MjsKLSAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIH0KLX0K
LQotc3RhdGljIHN0ZDo6b3B0aW9uYWw8Y29uc3QgY2hhcio+IGhhc2hBbGdvcml0aG1OYW1lKENy
eXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaWRlbnRpZmllcikKLXsKLSAgICBzd2l0Y2ggKGlkZW50
aWZpZXIpIHsKLSAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8xOgotICAg
ICAgICByZXR1cm4gInNoYTEiOwotICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6
U0hBXzIyNDoKLSAgICAgICAgcmV0dXJuICJzaGEyMjQiOwotICAgIGNhc2UgQ3J5cHRvQWxnb3Jp
dGhtSWRlbnRpZmllcjo6U0hBXzI1NjoKLSAgICAgICAgcmV0dXJuICJzaGEyNTYiOwotICAgIGNh
c2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzM4NDoKLSAgICAgICAgcmV0dXJuICJz
aGEzODQiOwotICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzUxMjoKLSAg
ICAgICAgcmV0dXJuICJzaGE1MTIiOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7Ci0gICAgfQotfQotCi1zdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gbXBp
RGF0YShnY3J5X3NleHBfdCBwYXJhbVNleHApCi17Ci0gICAgLy8gUmV0cmlldmUgdGhlIE1QSSB2
YWx1ZSBzdG9yZWQgaW4gdGhlIHMtZXhwcmVzc2lvbjogKG5hbWUgbXBpLWRhdGEpCi0gICAgUEFM
OjpHQ3J5cHQ6OkhhbmRsZTxnY3J5X21waV90PiBwYXJhbU1QSShnY3J5X3NleHBfbnRoX21waShw
YXJhbVNleHAsIDEsIEdDUllNUElfRk1UX1VTRykpOwotICAgIGlmICghcGFyYW1NUEkpCi0gICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICAvLyBRdWVyeSB0aGUgZGF0YSBsZW5ndGgg
Zmlyc3QgdG8gcHJvcGVybHkgcHJlcGFyZSB0aGUgYnVmZmVyLgotICAgIHNpemVfdCBkYXRhTGVu
Z3RoID0gMDsKLSAgICBnY3J5X2Vycm9yX3QgZXJyb3IgPSBnY3J5X21waV9wcmludChHQ1JZTVBJ
X0ZNVF9VU0csIG51bGxwdHIsIDAsICZkYXRhTGVuZ3RoLCBwYXJhbU1QSSk7Ci0gICAgaWYgKGVy
cm9yICE9IEdQR19FUlJfTk9fRVJST1IpIHsKLSAgICAgICAgUEFMOjpHQ3J5cHQ6OmxvZ0Vycm9y
KGVycm9yKTsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICB9Ci0KLSAgICAvLyBG
aW5hbGx5LCBjb3B5IHRoZSBNUEkgZGF0YSBpbnRvIGEgcHJvcGVybHktc2l6ZWQgYnVmZmVyLgot
ICAgIFZlY3Rvcjx1aW50OF90PiBvdXRwdXQoZGF0YUxlbmd0aCk7Ci0gICAgZXJyb3IgPSBnY3J5
X21waV9wcmludChHQ1JZTVBJX0ZNVF9VU0csIG91dHB1dC5kYXRhKCksIG91dHB1dC5zaXplKCks
IG51bGxwdHIsIHBhcmFtTVBJKTsKLSAgICBpZiAoZXJyb3IgIT0gR1BHX0VSUl9OT19FUlJPUikg
ewotICAgICAgICBQQUw6OkdDcnlwdDo6bG9nRXJyb3IoZXJyb3IpOwotICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwotICAgIH0KLQotICAgIHJldHVybiBvdXRwdXQ7Ci19Ci0KIHN0YXRpYyBz
dGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZ2NyeXB0U2lnbihnY3J5X3NleHBfdCBrZXlT
ZXhwLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEsIENyeXB0b0FsZ29yaXRobUlkZW50aWZp
ZXIgaGFzaEFsZ29yaXRobUlkZW50aWZpZXIsIHNpemVfdCBrZXlTaXplSW5CeXRlcykKIHsKICAg
ICAvLyBQZXJmb3JtIGRpZ2VzdCBvcGVyYXRpb24gd2l0aCB0aGUgc3BlY2lmaWVkIGFsZ29yaXRo
bSBvbiB0aGUgZ2l2ZW4gZGF0YS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9n
Y3J5cHQvQ3J5cHRvQWxnb3JpdGhtSEtERkdDcnlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlw
dG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUhLREZHQ3J5cHQuY3BwCmluZGV4IGI5OGY5YTdjOWIw
ZjNhYThiYjA0NjRjZjNkYTdlYzU1ZmQ3MTkwNmIuLjExYWIxOTY5N2MwNTA2MTYyMDAwZmY3NzIx
Yjg4NjNkZTQ3ODE1NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQv
Q3J5cHRvQWxnb3JpdGhtSEtERkdDcnlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRv
L2djcnlwdC9DcnlwdG9BbGdvcml0aG1IS0RGR0NyeXB0LmNwcApAQCAtMzMsOSArMzMsOCBAQAog
I2luY2x1ZGUgIkNyeXB0b0FsZ29yaXRobUhrZGZQYXJhbXMuaCIKICNpbmNsdWRlICJDcnlwdG9L
ZXlSYXcuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5jbHVkZSAiR0NyeXB0VXRp
bGl0aWVzLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUg
PHBhbC9jcnlwdG8vZ2NyeXB0L0hhbmRsZS5oPgotI2luY2x1ZGUgPHBhbC9jcnlwdG8vZ2NyeXB0
L1V0aWxpdGllcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQzLDMxICs0MiwxMyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBXZSBzaG91bGQgc3dpdGNoIHRvIHRoZSBsaWJnY3J5
cHQtcHJvdmlkZWQgaW1wbGVtZW50YXRpb24gb25jZSBpdCdzIGF2YWlsYWJsZS4KIC8vIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzE1MzYKIAotc3RhdGljIHN0ZDo6
b3B0aW9uYWw8aW50PiBtYWNBbGdvcml0aG1Gb3JIYXNoRnVuY3Rpb24oQ3J5cHRvQWxnb3JpdGht
SWRlbnRpZmllciBpZGVudGlmaWVyKQotewotICAgIHN3aXRjaCAoaWRlbnRpZmllcikgewotICAg
IGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzE6Ci0gICAgICAgIHJldHVybiBH
Q1JZX01BQ19ITUFDX1NIQTE7Ci0gICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpT
SEFfMjI0OgotICAgICAgICByZXR1cm4gR0NSWV9NQUNfSE1BQ19TSEEyMjQ7Ci0gICAgY2FzZSBD
cnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMjU2OgotICAgICAgICByZXR1cm4gR0NSWV9N
QUNfSE1BQ19TSEEyNTY7Ci0gICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFf
Mzg0OgotICAgICAgICByZXR1cm4gR0NSWV9NQUNfSE1BQ19TSEEzODQ7Ci0gICAgY2FzZSBDcnlw
dG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfNTEyOgotICAgICAgICByZXR1cm4gR0NSWV9NQUNf
SE1BQ19TSEE1MTI7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
LSAgICB9Ci19Ci0KIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZ2NyeXB0
RGVyaXZlQml0cyhjb25zdCBWZWN0b3I8dWludDhfdD4mIGtleSwgY29uc3QgVmVjdG9yPHVpbnQ4
X3Q+JiBzYWx0LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGluZm8sIHNpemVfdCBsZW5ndGhJbkJ5
dGVzLCBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7CiAgICAgLy8gbGli
Z2NyeXB0IGRvZXNuJ3QgcHJvdmlkZSBIS0RGIHN1cHBvcnQsIHNvIHdlIGhhdmUgdG8gaW1wbGVt
ZW50CiAgICAgLy8gdGhlIGZ1bmN0aW9uYWxpdHkgb3Vyc2VsdmVzIGFzIHNwZWNpZmllZCBpbiBS
RkM1ODY5LgogICAgIC8vIGh0dHBzOi8vd3d3LmlldGYub3JnL3JmYy9yZmM1ODY5LnR4dAogCi0g
ICAgYXV0byBtYWNBbGdvcml0aG0gPSBtYWNBbGdvcml0aG1Gb3JIYXNoRnVuY3Rpb24oaWRlbnRp
Zmllcik7CisgICAgYXV0byBtYWNBbGdvcml0aG0gPSBobWFjQWxnb3JpdGhtKGlkZW50aWZpZXIp
OwogICAgIGlmICghbWFjQWxnb3JpdGhtKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRo
bVBCS0RGMkdDcnlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0Fs
Z29yaXRobVBCS0RGMkdDcnlwdC5jcHAKaW5kZXggNTM2MjAwMzY4YjlkYjQxYjgyNzMzZWRiODYx
ZjQ5MmQ2NTQyNTg5OC4uNWZkOWU4ZTVjOTgzNzExN2UyOWE0NWRmMTNlNjdlMDAyZWIyY2NhNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1Q
QktERjJHQ3J5cHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRv
QWxnb3JpdGhtUEJLREYyR0NyeXB0LmNwcApAQCAtMzMsMzkgKzMzLDIyIEBACiAjaW5jbHVkZSAi
Q3J5cHRvQWxnb3JpdGhtUGJrZGYyUGFyYW1zLmgiCiAjaW5jbHVkZSAiQ3J5cHRvS2V5UmF3Lmgi
CiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgIkdDcnlwdFV0aWxpdGllcy5o
IgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlIDxwYWwvY3J5
cHRvL2djcnlwdC9VdGlsaXRpZXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMg
c3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGdjcnlwdERlcml2ZUJpdHMoY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+JiBrZXlEYXRhLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHNhbHREYXRhLCBD
cnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGhhc2hJZGVudGlmaWVyLCBzaXplX3QgaXRlcmF0aW9u
cywgc2l6ZV90IGxlbmd0aCkKIHsKLSAgICBpbnQgaGFzaEFsZ29yaXRobTsKLSAgICBzd2l0Y2gg
KGhhc2hJZGVudGlmaWVyKSB7Ci0gICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpT
SEFfMToKLSAgICAgICAgaGFzaEFsZ29yaXRobSA9IEdDUllfTURfU0hBMTsKLSAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMjI0OgotICAgICAg
ICBoYXNoQWxnb3JpdGhtID0gR0NSWV9NRF9TSEEyMjQ7Ci0gICAgICAgIGJyZWFrOwotICAgIGNh
c2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzI1NjoKLSAgICAgICAgaGFzaEFsZ29y
aXRobSA9IEdDUllfTURfU0hBMjU2OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENyeXB0b0Fs
Z29yaXRobUlkZW50aWZpZXI6OlNIQV8zODQ6Ci0gICAgICAgIGhhc2hBbGdvcml0aG0gPSBHQ1JZ
X01EX1NIQTM4NDsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVu
dGlmaWVyOjpTSEFfNTEyOgotICAgICAgICBoYXNoQWxnb3JpdGhtID0gR0NSWV9NRF9TSEE1MTI7
Ci0gICAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6CisgICAgYXV0byBoYXNoQWxnb3JpdGhtID0g
ZGlnZXN0QWxnb3JpdGhtKGhhc2hJZGVudGlmaWVyKTsKKyAgICBpZiAoIWhhc2hBbGdvcml0aG0p
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgfQogCiAgICAgLy8gTGVuZ3RoLCBp
biBiaXRzLCBpcyBhIG11bHRpcGxlIG9mIDgsIGFzIGd1YXJhbnRlZWQgYnkgQ3J5cHRvQWxnb3Jp
dGhtUEJLREYyOjpkZXJpdmVCaXRzKCkuCiAgICAgQVNTRVJUKCEobGVuZ3RoICUgOCkpOwogCiAg
ICAgVmVjdG9yPHVpbnQ4X3Q+IHJlc3VsdChsZW5ndGggLyA4KTsKLSAgICBnY3J5X2Vycm9yX3Qg
ZXJyb3IgPSBnY3J5X2tkZl9kZXJpdmUoa2V5RGF0YS5kYXRhKCksIGtleURhdGEuc2l6ZSgpLCBH
Q1JZX0tERl9QQktERjIsIGhhc2hBbGdvcml0aG0sIHNhbHREYXRhLmRhdGEoKSwgc2FsdERhdGEu
c2l6ZSgpLCBpdGVyYXRpb25zLCByZXN1bHQuc2l6ZSgpLCByZXN1bHQuZGF0YSgpKTsKKyAgICBn
Y3J5X2Vycm9yX3QgZXJyb3IgPSBnY3J5X2tkZl9kZXJpdmUoa2V5RGF0YS5kYXRhKCksIGtleURh
dGEuc2l6ZSgpLCBHQ1JZX0tERl9QQktERjIsICpoYXNoQWxnb3JpdGhtLCBzYWx0RGF0YS5kYXRh
KCksIHNhbHREYXRhLnNpemUoKSwgaXRlcmF0aW9ucywgcmVzdWx0LnNpemUoKSwgcmVzdWx0LmRh
dGEoKSk7CiAgICAgaWYgKGVycm9yICE9IEdQR19FUlJfTk9fRVJST1IpIHsKICAgICAgICAgUEFM
OjpHQ3J5cHQ6OmxvZ0Vycm9yKGVycm9yKTsKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGht
UlNBRVNfUEtDUzFfdjFfNUdDcnlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0
L0NyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzVHQ3J5cHQuY3BwCmluZGV4IGJmZjkyNDE5
MzBhOWIzZWQyZjY5MTNmM2I2Y2FhN2FiYmRmOTU2MWQuLjM3OWI5ZjQ5MDI1NWMxMTY1OGE5Yjc0
YzBiMDQ1YzQ3M2Q3YmNjNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5
cHQvQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNUdDcnlwdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81R0Ny
eXB0LmNwcApAQCAtMzAsMzkgKzMwLDEyIEBACiAKICNpbmNsdWRlICJDcnlwdG9LZXlSU0EuaCIK
ICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5jbHVkZSAiR0NyeXB0VXRpbGl0aWVzLmgi
CiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25D
b250ZXh0LmgiCi0jaW5jbHVkZSA8cGFsL2NyeXB0by9nY3J5cHQvSGFuZGxlLmg+Ci0jaW5jbHVk
ZSA8cGFsL2NyeXB0by9nY3J5cHQvVXRpbGl0aWVzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBtcGlEYXRhKGdjcnlfc2V4
cF90IHBhcmFtU2V4cCkKLXsKLSAgICAvLyBSZXRyaWV2ZSB0aGUgTVBJIHZhbHVlIHN0b3JlZCBp
biB0aGUgcy1leHByZXNzaW9uOiAobmFtZSBtcGktZGF0YSkKLSAgICBQQUw6OkdDcnlwdDo6SGFu
ZGxlPGdjcnlfbXBpX3Q+IHBhcmFtTVBJKGdjcnlfc2V4cF9udGhfbXBpKHBhcmFtU2V4cCwgMSwg
R0NSWU1QSV9GTVRfVVNHKSk7Ci0gICAgaWYgKCFwYXJhbU1QSSkKLSAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKLQotICAgIC8vIFF1ZXJ5IHRoZSBkYXRhIGxlbmd0aCBmaXJzdCB0byBwcm9w
ZXJseSBwcmVwYXJlIHRoZSBidWZmZXIuCi0gICAgc2l6ZV90IGRhdGFMZW5ndGggPSAwOwotICAg
IGdjcnlfZXJyb3JfdCBlcnJvciA9IGdjcnlfbXBpX3ByaW50KEdDUllNUElfRk1UX1VTRywgbnVs
bHB0ciwgMCwgJmRhdGFMZW5ndGgsIHBhcmFtTVBJKTsKLSAgICBpZiAoZXJyb3IgIT0gR1BHX0VS
Ul9OT19FUlJPUikgewotICAgICAgICBQQUw6OkdDcnlwdDo6bG9nRXJyb3IoZXJyb3IpOwotICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIH0KLQotICAgIC8vIEZpbmFsbHksIGNvcHkg
dGhlIE1QSSBkYXRhIGludG8gYSBwcm9wZXJseS1zaXplZCBidWZmZXIuCi0gICAgVmVjdG9yPHVp
bnQ4X3Q+IG91dHB1dChkYXRhTGVuZ3RoKTsKLSAgICBlcnJvciA9IGdjcnlfbXBpX3ByaW50KEdD
UllNUElfRk1UX1VTRywgb3V0cHV0LmRhdGEoKSwgb3V0cHV0LnNpemUoKSwgbnVsbHB0ciwgcGFy
YW1NUEkpOwotICAgIGlmIChlcnJvciAhPSBHUEdfRVJSX05PX0VSUk9SKSB7Ci0gICAgICAgIFBB
TDo6R0NyeXB0Ojpsb2dFcnJvcihlcnJvcik7Ci0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
Ci0gICAgfQotCi0gICAgcmV0dXJuIG91dHB1dDsKLX0KLQogc3RhdGljIHN0ZDo6b3B0aW9uYWw8
VmVjdG9yPHVpbnQ4X3Q+PiBnY3J5cHRFbmNyeXB0KGdjcnlfc2V4cF90IGtleVNleHAsIFZlY3Rv
cjx1aW50OF90PiYmIHBsYWluVGV4dCkKIHsKICAgICAvLyBFbWJlZCB0aGUgcGxhaW4tdGV4dCBk
YXRhIGluIGEgYGRhdGFgIHMtZXhwcmVzc2lvbiB1c2luZyBQS0NTIzEgcGFkZGluZy4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtUlNBU1NB
X1BLQ1MxX3YxXzVHQ3J5cHQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9Dcnlw
dG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNUdDcnlwdC5jcHAKaW5kZXggMjc5MzRlOTU1ZjE5
ODYzNzVkZjAzNjhmMGZkYWY2MGU5OTg3ZGY4MC4uMTA2NmYwMTMxY2I3MzI5MWUyMjdiYTJhMjNk
ZTM3MmU5Mjc3ZDA2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9D
cnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNUdDcnlwdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNUdDcnlw
dC5jcHAKQEAgLTMyLDc2ICszMiwxMiBAQAogI2luY2x1ZGUgIkNyeXB0b0FsZ29yaXRobVJzYVNz
YVBhcmFtc0RlcHJlY2F0ZWQuaCIKICNpbmNsdWRlICJDcnlwdG9LZXlSU0EuaCIKICNpbmNsdWRl
ICJFeGNlcHRpb25Db2RlLmgiCisjaW5jbHVkZSAiR0NyeXB0VXRpbGl0aWVzLmgiCiAjaW5jbHVk
ZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0Lmgi
Ci0jaW5jbHVkZSA8cGFsL2NyeXB0by9DcnlwdG9EaWdlc3QuaD4KLSNpbmNsdWRlIDxwYWwvY3J5
cHRvL2djcnlwdC9IYW5kbGUuaD4KLSNpbmNsdWRlIDxwYWwvY3J5cHRvL2djcnlwdC9VdGlsaXRp
ZXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgc3RkOjpvcHRpb25hbDxQQUw6
OkNyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtPiBoYXNoQ3J5cHRvRGlnZXN0QWxnb3JpdGhtKENyeXB0
b0FsZ29yaXRobUlkZW50aWZpZXIgaWRlbnRpZmllcikKLXsKLSAgICBzd2l0Y2ggKGlkZW50aWZp
ZXIpIHsKLSAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8xOgotICAgICAg
ICByZXR1cm4gUEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzE7Ci0gICAgY2FzZSBD
cnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMjI0OgotICAgICAgICByZXR1cm4gUEFMOjpD
cnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzIyNDsKLSAgICBjYXNlIENyeXB0b0FsZ29yaXRo
bUlkZW50aWZpZXI6OlNIQV8yNTY6Ci0gICAgICAgIHJldHVybiBQQUw6OkNyeXB0b0RpZ2VzdDo6
QWxnb3JpdGhtOjpTSEFfMjU2OwotICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6
U0hBXzM4NDoKLSAgICAgICAgcmV0dXJuIFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNI
QV8zODQ7Ci0gICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfNTEyOgotICAg
ICAgICByZXR1cm4gUEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzUxMjsKLSAgICBk
ZWZhdWx0OgotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIH0KLX0KLQotc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8Y29uc3QgY2hhcio+IGhhc2hBbGdvcml0aG1OYW1lKENyeXB0b0FsZ29y
aXRobUlkZW50aWZpZXIgaWRlbnRpZmllcikKLXsKLSAgICBzd2l0Y2ggKGlkZW50aWZpZXIpIHsK
LSAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8xOgotICAgICAgICByZXR1
cm4gInNoYTEiOwotICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzIyNDoK
LSAgICAgICAgcmV0dXJuICJzaGEyMjQiOwotICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRp
Zmllcjo6U0hBXzI1NjoKLSAgICAgICAgcmV0dXJuICJzaGEyNTYiOwotICAgIGNhc2UgQ3J5cHRv
QWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzM4NDoKLSAgICAgICAgcmV0dXJuICJzaGEzODQiOwot
ICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzUxMjoKLSAgICAgICAgcmV0
dXJuICJzaGE1MTIiOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
Ci0gICAgfQotfQotCi1zdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IG1waURh
dGEoZ2NyeV9zZXhwX3QgcGFyYW1TZXhwKQotewotICAgIC8vIFJldHJpZXZlIHRoZSBNUEkgdmFs
dWUgc3RvcmVkIGluIHRoZSBzLWV4cHJlc3Npb246IChuYW1lIG1waS1kYXRhKQotICAgIFBBTDo6
R0NyeXB0OjpIYW5kbGU8Z2NyeV9tcGlfdD4gcGFyYW1NUEkoZ2NyeV9zZXhwX250aF9tcGkocGFy
YW1TZXhwLCAxLCBHQ1JZTVBJX0ZNVF9VU0cpKTsKLSAgICBpZiAoIXBhcmFtTVBJKQotICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAgLy8gUXVlcnkgdGhlIGRhdGEgbGVuZ3RoIGZp
cnN0IHRvIHByb3Blcmx5IHByZXBhcmUgdGhlIGJ1ZmZlci4KLSAgICBzaXplX3QgZGF0YUxlbmd0
aCA9IDA7Ci0gICAgZ2NyeV9lcnJvcl90IGVycm9yID0gZ2NyeV9tcGlfcHJpbnQoR0NSWU1QSV9G
TVRfVVNHLCBudWxscHRyLCAwLCAmZGF0YUxlbmd0aCwgcGFyYW1NUEkpOwotICAgIGlmIChlcnJv
ciAhPSBHUEdfRVJSX05PX0VSUk9SKSB7Ci0gICAgICAgIFBBTDo6R0NyeXB0Ojpsb2dFcnJvcihl
cnJvcik7Ci0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgfQotCi0gICAgLy8gRmlu
YWxseSwgY29weSB0aGUgTVBJIGRhdGEgaW50byBhIHByb3Blcmx5LXNpemVkIGJ1ZmZlci4KLSAg
ICBWZWN0b3I8dWludDhfdD4gb3V0cHV0KGRhdGFMZW5ndGgpOwotICAgIGVycm9yID0gZ2NyeV9t
cGlfcHJpbnQoR0NSWU1QSV9GTVRfVVNHLCBvdXRwdXQuZGF0YSgpLCBvdXRwdXQuc2l6ZSgpLCBu
dWxscHRyLCBwYXJhbU1QSSk7Ci0gICAgaWYgKGVycm9yICE9IEdQR19FUlJfTk9fRVJST1IpIHsK
LSAgICAgICAgUEFMOjpHQ3J5cHQ6OmxvZ0Vycm9yKGVycm9yKTsKLSAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKLSAgICB9Ci0KLSAgICByZXR1cm4gb3V0cHV0OwotfQotCiBzdGF0aWMgc3Rk
OjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGdjcnlwdFNpZ24oZ2NyeV9zZXhwX3Qga2V5U2V4
cCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhLCBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVy
IGhhc2hBbGdvcml0aG1JZGVudGlmaWVyKQogewogICAgIC8vIFBlcmZvcm0gZGlnZXN0IG9wZXJh
dGlvbiB3aXRoIHRoZSBzcGVjaWZpZWQgYWxnb3JpdGhtIG9uIHRoZSBnaXZlbiBkYXRhLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1SU0Ff
T0FFUEdDcnlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29y
aXRobVJTQV9PQUVQR0NyeXB0LmNwcAppbmRleCA0ZTkzMWJkYzQ4MmI2ODZhMzE0NTI5MTIzYjgx
YjI1ZTVmMTgzMzFkLi5iZjg5NzExNDY1Yjk0OGIwYmRmYjIwYmY4MTQ0MDIxYzJmZmVlM2M2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobVJT
QV9PQUVQR0NyeXB0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0
b0FsZ29yaXRobVJTQV9PQUVQR0NyeXB0LmNwcApAQCAtMzEsNTcgKzMxLDEyIEBACiAjaW5jbHVk
ZSAiQ3J5cHRvQWxnb3JpdGhtUnNhT2FlcFBhcmFtcy5oIgogI2luY2x1ZGUgIkNyeXB0b0tleVJT
QS5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJHQ3J5cHRVdGlsaXRp
ZXMuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlIDxwYWwvY3J5cHRvL2djcnlwdC9IYW5kbGUuaD4KLSNp
bmNsdWRlIDxwYWwvY3J5cHRvL2djcnlwdC9VdGlsaXRpZXMuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1zdGF0aWMgc3RkOjpvcHRpb25hbDxjb25zdCBjaGFyKj4gaGFzaEFsZ29yaXRobU5h
bWUoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBpZGVudGlmaWVyKQotewotICAgIHN3aXRjaCAo
aWRlbnRpZmllcikgewotICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzE6
Ci0gICAgICAgIHJldHVybiAic2hhMSI7Ci0gICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlm
aWVyOjpTSEFfMjI0OgotICAgICAgICByZXR1cm4gInNoYTIyNCI7Ci0gICAgY2FzZSBDcnlwdG9B
bGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMjU2OgotICAgICAgICByZXR1cm4gInNoYTI1NiI7Ci0g
ICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMzg0OgotICAgICAgICByZXR1
cm4gInNoYTM4NCI7Ci0gICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfNTEy
OgotICAgICAgICByZXR1cm4gInNoYTUxMiI7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKLSAgICB9Ci19Ci0KLXN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1
aW50OF90Pj4gbXBpRGF0YShnY3J5X3NleHBfdCBwYXJhbVNleHApCi17Ci0gICAgLy8gUmV0cmll
dmUgdGhlIE1QSSB2YWx1ZSBzdG9yZWQgaW4gdGhlIHMtZXhwcmVzc2lvbjogKG5hbWUgbXBpLWRh
dGEpCi0gICAgUEFMOjpHQ3J5cHQ6OkhhbmRsZTxnY3J5X21waV90PiBwYXJhbU1QSShnY3J5X3Nl
eHBfbnRoX21waShwYXJhbVNleHAsIDEsIEdDUllNUElfRk1UX1VTRykpOwotICAgIGlmICghcGFy
YW1NUEkpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICAvLyBRdWVyeSB0aGUg
ZGF0YSBsZW5ndGggZmlyc3QgdG8gcHJvcGVybHkgcHJlcGFyZSB0aGUgYnVmZmVyLgotICAgIHNp
emVfdCBkYXRhTGVuZ3RoID0gMDsKLSAgICBnY3J5X2Vycm9yX3QgZXJyb3IgPSBnY3J5X21waV9w
cmludChHQ1JZTVBJX0ZNVF9VU0csIG51bGxwdHIsIDAsICZkYXRhTGVuZ3RoLCBwYXJhbU1QSSk7
Ci0gICAgaWYgKGVycm9yICE9IEdQR19FUlJfTk9fRVJST1IpIHsKLSAgICAgICAgUEFMOjpHQ3J5
cHQ6OmxvZ0Vycm9yKGVycm9yKTsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICB9
Ci0KLSAgICAvLyBGaW5hbGx5LCBjb3B5IHRoZSBNUEkgZGF0YSBpbnRvIGEgcHJvcGVybHktc2l6
ZWQgYnVmZmVyLgotICAgIFZlY3Rvcjx1aW50OF90PiBvdXRwdXQoZGF0YUxlbmd0aCk7Ci0gICAg
ZXJyb3IgPSBnY3J5X21waV9wcmludChHQ1JZTVBJX0ZNVF9VU0csIG91dHB1dC5kYXRhKCksIG91
dHB1dC5zaXplKCksIG51bGxwdHIsIHBhcmFtTVBJKTsKLSAgICBpZiAoZXJyb3IgIT0gR1BHX0VS
Ul9OT19FUlJPUikgewotICAgICAgICBQQUw6OkdDcnlwdDo6bG9nRXJyb3IoZXJyb3IpOwotICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIH0KLQotICAgIHJldHVybiBvdXRwdXQ7Ci19
Ci0KIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZ2NyeXB0RW5jcnlwdChD
cnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGhhc2hBbGdvcml0aG1JZGVudGlmaWVyLCBnY3J5X3Nl
eHBfdCBrZXlTZXhwLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGxhYmVsVmVjdG9yLCBjb25zdCBW
ZWN0b3I8dWludDhfdD4mIHBsYWluVGV4dCkKIHsKICAgICAvLyBFbWJlZCB0aGUgcGxhaW4tdGV4
dCBkYXRhIGluIGEgZGF0YSBzLWV4cHJlc3Npb24gdXNpbmcgT0FFUCBwYWRkaW5nLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9HQ3J5cHRVdGlsaXRpZXMuaCBiL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvR0NyeXB0VXRpbGl0aWVzLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MzFkNTA3MjEwYTk1MTU1ZDg4YmMzMDNjNDlmOTdhNjE2NTc4ZjZiMwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvR0NyeXB0VXRpbGl0aWVzLmgKQEAgLTAs
MCArMSwxMzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE3IE1ldHJvbG9naWNhbCBHcm91cCBC
LlYuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgIkNyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlIDxnY3J5cHQuaD4KKyNp
bmNsdWRlIDxwYWwvY3J5cHRvL0NyeXB0b0RpZ2VzdC5oPgorI2luY2x1ZGUgPHBhbC9jcnlwdG8v
Z2NyeXB0L0hhbmRsZS5oPgorI2luY2x1ZGUgPHBhbC9jcnlwdG8vZ2NyeXB0L1V0aWxpdGllcy5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBpbmxpbmUgc3RkOjpvcHRpb25hbDxj
b25zdCBjaGFyKj4gaGFzaEFsZ29yaXRobU5hbWUoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBp
ZGVudGlmaWVyKQoreworICAgIHN3aXRjaCAoaWRlbnRpZmllcikgeworICAgIGNhc2UgQ3J5cHRv
QWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzE6CisgICAgICAgIHJldHVybiAic2hhMSI7CisgICAg
Y2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMjI0OgorICAgICAgICByZXR1cm4g
InNoYTIyNCI7CisgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMjU2Ogor
ICAgICAgICByZXR1cm4gInNoYTI1NiI7CisgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlm
aWVyOjpTSEFfMzg0OgorICAgICAgICByZXR1cm4gInNoYTM4NCI7CisgICAgY2FzZSBDcnlwdG9B
bGdvcml0aG1JZGVudGlmaWVyOjpTSEFfNTEyOgorICAgICAgICByZXR1cm4gInNoYTUxMiI7Cisg
ICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICB9Cit9CisKK3N0
YXRpYyBpbmxpbmUgc3RkOjpvcHRpb25hbDxpbnQ+IGhtYWNBbGdvcml0aG0oQ3J5cHRvQWxnb3Jp
dGhtSWRlbnRpZmllciBpZGVudGlmaWVyKQoreworICAgIHN3aXRjaCAoaWRlbnRpZmllcikgewor
ICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzE6CisgICAgICAgIHJldHVy
biBHQ1JZX01BQ19ITUFDX1NIQTE7CisgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVy
OjpTSEFfMjI0OgorICAgICAgICByZXR1cm4gR0NSWV9NQUNfSE1BQ19TSEEyMjQ7CisgICAgY2Fz
ZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMjU2OgorICAgICAgICByZXR1cm4gR0NS
WV9NQUNfSE1BQ19TSEEyNTY7CisgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpT
SEFfMzg0OgorICAgICAgICByZXR1cm4gR0NSWV9NQUNfSE1BQ19TSEEzODQ7CisgICAgY2FzZSBD
cnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfNTEyOgorICAgICAgICByZXR1cm4gR0NSWV9N
QUNfSE1BQ19TSEE1MTI7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDs7CisgICAgfQorfQorCitzdGF0aWMgaW5saW5lIHN0ZDo6b3B0aW9uYWw8aW50PiBkaWdlc3RB
bGdvcml0aG0oQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBpZGVudGlmaWVyKQoreworICAgIHN3
aXRjaCAoaWRlbnRpZmllcikgeworICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6
U0hBXzE6CisgICAgICAgIHJldHVybiBHQ1JZX01EX1NIQTE7CisgICAgY2FzZSBDcnlwdG9BbGdv
cml0aG1JZGVudGlmaWVyOjpTSEFfMjI0OgorICAgICAgICByZXR1cm4gR0NSWV9NRF9TSEEyMjQ7
CisgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMjU2OgorICAgICAgICBy
ZXR1cm4gR0NSWV9NRF9TSEEyNTY7CisgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVy
OjpTSEFfMzg0OgorICAgICAgICByZXR1cm4gR0NSWV9NRF9TSEEzODQ7CisgICAgY2FzZSBDcnlw
dG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfNTEyOgorICAgICAgICByZXR1cm4gR0NSWV9NRF9T
SEE1MTI7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICB9
Cit9CisKK3N0YXRpYyBpbmxpbmUgc3RkOjpvcHRpb25hbDxQQUw6OkNyeXB0b0RpZ2VzdDo6QWxn
b3JpdGhtPiBoYXNoQ3J5cHRvRGlnZXN0QWxnb3JpdGhtKENyeXB0b0FsZ29yaXRobUlkZW50aWZp
ZXIgaWRlbnRpZmllcikKK3sKKyAgICBzd2l0Y2ggKGlkZW50aWZpZXIpIHsKKyAgICBjYXNlIENy
eXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8xOgorICAgICAgICByZXR1cm4gUEFMOjpDcnlw
dG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzE7CisgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVu
dGlmaWVyOjpTSEFfMjI0OgorICAgICAgICByZXR1cm4gUEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29y
aXRobTo6U0hBXzIyNDsKKyAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8y
NTY6CisgICAgICAgIHJldHVybiBQQUw6OkNyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2
OworICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzM4NDoKKyAgICAgICAg
cmV0dXJuIFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8zODQ7CisgICAgY2FzZSBD
cnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfNTEyOgorICAgICAgICByZXR1cm4gUEFMOjpD
cnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzUxMjsKKyAgICBkZWZhdWx0OgorICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OworICAgIH0KK30KKworc3RhdGljIGlubGluZSBzdGQ6Om9wdGlv
bmFsPFZlY3Rvcjx1aW50OF90Pj4gbXBpRGF0YShnY3J5X3NleHBfdCBwYXJhbVNleHApCit7Cisg
ICAgLy8gUmV0cmlldmUgdGhlIE1QSSB2YWx1ZSBzdG9yZWQgaW4gdGhlIHMtZXhwcmVzc2lvbjog
KG5hbWUgbXBpLWRhdGEpCisgICAgUEFMOjpHQ3J5cHQ6OkhhbmRsZTxnY3J5X21waV90PiBwYXJh
bU1QSShnY3J5X3NleHBfbnRoX21waShwYXJhbVNleHAsIDEsIEdDUllNUElfRk1UX1VTRykpOwor
ICAgIGlmICghcGFyYW1NUEkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICAv
LyBRdWVyeSB0aGUgZGF0YSBsZW5ndGggZmlyc3QgdG8gcHJvcGVybHkgcHJlcGFyZSB0aGUgYnVm
ZmVyLgorICAgIHNpemVfdCBkYXRhTGVuZ3RoID0gMDsKKyAgICBnY3J5X2Vycm9yX3QgZXJyb3Ig
PSBnY3J5X21waV9wcmludChHQ1JZTVBJX0ZNVF9VU0csIG51bGxwdHIsIDAsICZkYXRhTGVuZ3Ro
LCBwYXJhbU1QSSk7CisgICAgaWYgKGVycm9yICE9IEdQR19FUlJfTk9fRVJST1IpIHsKKyAgICAg
ICAgUEFMOjpHQ3J5cHQ6OmxvZ0Vycm9yKGVycm9yKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKKyAgICB9CisKKyAgICAvLyBGaW5hbGx5LCBjb3B5IHRoZSBNUEkgZGF0YSBpbnRvIGEg
cHJvcGVybHktc2l6ZWQgYnVmZmVyLgorICAgIFZlY3Rvcjx1aW50OF90PiBvdXRwdXQoZGF0YUxl
bmd0aCk7CisgICAgZXJyb3IgPSBnY3J5X21waV9wcmludChHQ1JZTVBJX0ZNVF9VU0csIG91dHB1
dC5kYXRhKCksIG91dHB1dC5zaXplKCksIG51bGxwdHIsIHBhcmFtTVBJKTsKKyAgICBpZiAoZXJy
b3IgIT0gR1BHX0VSUl9OT19FUlJPUikgeworICAgICAgICBQQUw6OkdDcnlwdDo6bG9nRXJyb3Io
ZXJyb3IpOworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIH0KKworICAgIHJldHVy
biBvdXRwdXQ7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
</data>
<flag name="review"
          id="332806"
          type_id="1"
          status="+"
          setter="jiewen_tan"
    />
          </attachment>
      

    </bug>

</bugzilla>