<?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>158860</bug_id>
          
          <creation_ts>2016-06-16 17:54:53 -0700</creation_ts>
          <short_desc>Support configurable autocapitalization</short_desc>
          <delta_ts>2016-07-26 09:33:40 -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>WebKit2</component>
          <version>Other</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Enrica Casucci">enrica</reporter>
          <assigned_to name="Enrica Casucci">enrica</assigned_to>
          <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1203137</commentid>
    <comment_count>0</comment_count>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2016-06-16 17:54:53 -0700</bug_when>
    <thetext>rdar://problem/26231403</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1203140</commentid>
    <comment_count>1</comment_count>
      <attachid>281514</attachid>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2016-06-16 18:01:00 -0700</bug_when>
    <thetext>Created attachment 281514
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1203141</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-06-16 18:02:39 -0700</bug_when>
    <thetext>Attachment 281514 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/mac/TextCheckerMac.mm:309:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/mac/TextCheckerMac.mm:451:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 2 in 15 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>1203144</commentid>
    <comment_count>3</comment_count>
      <attachid>281515</attachid>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2016-06-16 18:12:40 -0700</bug_when>
    <thetext>Created attachment 281515
Patch2

Fixes GTK and EFL builds.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1203145</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-06-16 18:15:32 -0700</bug_when>
    <thetext>Attachment 281515 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/mac/TextCheckerMac.mm:309:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/mac/TextCheckerMac.mm:451:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 2 in 15 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>1203389</commentid>
    <comment_count>5</comment_count>
      <attachid>281515</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2016-06-17 12:54:56 -0700</bug_when>
    <thetext>Comment on attachment 281515
Patch2

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

Please fix the iOS build before landing. Also, have you tested this on iOS?

&gt; Source/WebKit2/UIProcess/API/C/WKPageConfigurationRef.cpp:107
&gt; +void WKPageConfigurationSetIntialCapitalizationEnabled(WKPageConfigurationRef configuration, bool enabled)

Intial should read &quot;Initial&quot;

&gt; Source/WebKit2/UIProcess/API/C/WKPageConfigurationRef.h:57
&gt; +WK_EXPORT void WKPageConfigurationSetIntialCapitalizationEnabled(WKPageConfigurationRef configuration, bool enabled);

Intial should read &quot;Initial&quot;

&gt; Source/WebKit2/UIProcess/mac/TextCheckerMac.mm:51
&gt; +// FIXME: this needs to be removed and NSTextCheckingSuppressInitialCapitalizationKey as soon as

Something weird about the grammar here.

&gt; Source/WebKit2/UIProcess/mac/TextCheckerMac.mm:309
&gt; +    options = @{ NSTextCheckingInsertionPointKey :  [NSNumber numberWithUnsignedInteger:insertionPoint],
&gt; +                 WebTextCheckingSuppressInitialCapitalizationKey : [NSNumber numberWithBool:!initialCapitalizationEnabled] };

If we&apos;re using @{}, we should be able to use @() instead of numberWithBlah: here, like so:

options = @{ NSTextCheckingInsertionPointKey : @(insertionPoint),
             WebTextCheckingSuppressInitialCapitalizationKey : @(!initialCapitalizationEnabled) };

&gt; Source/WebKit2/UIProcess/mac/TextCheckerMac.mm:450
&gt; +    options = @{ NSTextCheckingInsertionPointKey :  [NSNumber numberWithUnsignedInteger:insertionPoint],

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1203472</commentid>
    <comment_count>6</comment_count>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2016-06-17 16:32:41 -0700</bug_when>
    <thetext>Committed revision 202185.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214401</commentid>
    <comment_count>7</comment_count>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2016-07-25 17:00:21 -0700</bug_when>
    <thetext>This should be done when we use advance spelling and when we don&apos;t.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214406</commentid>
    <comment_count>8</comment_count>
      <attachid>284551</attachid>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2016-07-25 17:11:05 -0700</bug_when>
    <thetext>Created attachment 284551
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214558</commentid>
    <comment_count>9</comment_count>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2016-07-26 09:33:40 -0700</bug_when>
    <thetext>Committed revision 203724.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>281514</attachid>
            <date>2016-06-16 18:01:00 -0700</date>
            <delta_ts>2016-06-16 18:12:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>noautocapitalize.txt</filename>
            <type>text/plain</type>
            <size>20433</size>
            <attacher name="Enrica Casucci">enrica</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwMjExMykKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ4IEBACisyMDE2LTA2LTE2ICBFbnJpY2Eg
Q2FzdWNjaSAgPGVucmljYUBhcHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9ydCBjb25maWd1cmFi
bGUgYXV0b2NhcGl0YWxpemF0aW9uLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTU4ODYwCisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzI2MjMxNDAzCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIGJlaGF2
aW9yIG9mIHNwZWxsY2hlY2tlciBzaG91bGQgYmUgY29uZmlndXJhYmxlIHRvIGF2b2lkCisgICAg
ICAgIHVud2FudGVkIGF1dG9jYXBpdGFsaXphdGlvbi4KKworICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uY3BwOgorICAgICAgICAoQVBJOjpQYWdlQ29uZmlndXJh
dGlvbjo6Y29weSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlv
bi5oOgorICAgICAgICAoQVBJOjpQYWdlQ29uZmlndXJhdGlvbjo6aW5pdGlhbENhcGl0YWxpemF0
aW9uRW5hYmxlZCk6CisgICAgICAgIChBUEk6OlBhZ2VDb25maWd1cmF0aW9uOjpzZXRJbml0aWFs
Q2FwaXRhbGl6YXRpb25FbmFibGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdl
Q29uZmlndXJhdGlvblJlZi5jcHA6CisgICAgICAgIChXS1BhZ2VDb25maWd1cmF0aW9uU2V0SW50
aWFsQ2FwaXRhbGl6YXRpb25FbmFibGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQ
YWdlQ29uZmlndXJhdGlvblJlZi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2luaXRpYWxpemVXaXRoQ29uZmlndXJh
dGlvbjpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3Vy
YXRpb24ubW06CisgICAgICAgICgtW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gY29weVdpdGhab25l
Ol0pOgorICAgICAgICAoLVtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF9pbml0aWFsQ2FwaXRhbGl6
YXRpb25FbmFibGVkXSk6CisgICAgICAgICgtW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX3NldElu
aXRpYWxDYXBpdGFsaXphdGlvbkVuYWJsZWQ6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9UZXh0Q2hlY2tlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y2hlY2tUZXh0T2ZQYXJhZ3JhcGgpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OmdldEd1ZXNzZXNGb3JXb3JkKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9UZXh0Q2hlY2tlckVm
bC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlRleHRDaGVja2VyOjpjaGVja1RleHRPZlBhcmFncmFw
aCk6CisgICAgICAgIChXZWJLaXQ6OlRleHRDaGVja2VyOjpnZXRHdWVzc2VzRm9yV29yZCk6Cisg
ICAgICAgICogVUlQcm9jZXNzL2d0ay9UZXh0Q2hlY2tlckd0ay5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlRleHRDaGVja2VyOjpnZXRHdWVzc2VzRm9yV29yZCk6CisgICAgICAgIChXZWJLaXQ6OlRl
eHRDaGVja2VyOjpjaGVja1RleHRPZlBhcmFncmFwaCk6CisgICAgICAgICogVUlQcm9jZXNzL2lv
cy9UZXh0Q2hlY2tlcklPUy5tbToKKyAgICAgICAgKFdlYktpdDo6VGV4dENoZWNrZXI6OmNoZWNr
VGV4dE9mUGFyYWdyYXBoKToKKyAgICAgICAgKFdlYktpdDo6VGV4dENoZWNrZXI6OmdldEd1ZXNz
ZXNGb3JXb3JkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1RleHRDaGVja2VyTWFjLm1tOgor
ICAgICAgICAoV2ViS2l0OjpUZXh0Q2hlY2tlcjo6Y2hlY2tUZXh0T2ZQYXJhZ3JhcGgpOgorICAg
ICAgICAoV2ViS2l0OjpUZXh0Q2hlY2tlcjo6Z2V0R3Vlc3Nlc0ZvcldvcmQpOgorCiAyMDE2LTA2
LTE1ICBEZWFuIEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KIAogICAgICAgICBSVEwgPHNlbGVj
dD4gZm9ybXMgYXJlIG1pc3BsYWNlZApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Rl
eHRDaGVja2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1RleHRD
aGVja2VyLmgJKHJldmlzaW9uIDIwMjExMykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9U
ZXh0Q2hlY2tlci5oCSh3b3JraW5nIGNvcHkpCkBAIC03Miw3ICs3Miw3IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgaW50NjRfdCB1bmlxdWVTcGVsbERvY3VtZW50VGFnKFdlYlBhZ2VQcm94eSopOwog
ICAgIHN0YXRpYyB2b2lkIGNsb3NlU3BlbGxEb2N1bWVudFdpdGhUYWcoaW50NjRfdCk7CiAjaWYg
VVNFKFVOSUZJRURfVEVYVF9DSEVDS0lORykKLSAgICBzdGF0aWMgVmVjdG9yPFdlYkNvcmU6OlRl
eHRDaGVja2luZ1Jlc3VsdD4gY2hlY2tUZXh0T2ZQYXJhZ3JhcGgoaW50NjRfdCBzcGVsbERvY3Vt
ZW50VGFnLCBTdHJpbmdWaWV3IHRleHQsIGludDMyX3QgaW5zZXJ0aW9uUG9pbnQsIHVpbnQ2NF90
IGNoZWNraW5nVHlwZXMpOworICAgIHN0YXRpYyBWZWN0b3I8V2ViQ29yZTo6VGV4dENoZWNraW5n
UmVzdWx0PiBjaGVja1RleHRPZlBhcmFncmFwaChpbnQ2NF90IHNwZWxsRG9jdW1lbnRUYWcsIFN0
cmluZ1ZpZXcgdGV4dCwgaW50MzJfdCBpbnNlcnRpb25Qb2ludCwgdWludDY0X3QgY2hlY2tpbmdU
eXBlcywgYm9vbCBpbml0aWFsQ2FwaXRhbGl6YXRpb25FbmFibGVkKTsKICNlbmRpZgogICAgIHN0
YXRpYyB2b2lkIGNoZWNrU3BlbGxpbmdPZlN0cmluZyhpbnQ2NF90IHNwZWxsRG9jdW1lbnRUYWcs
IFN0cmluZ1ZpZXcgdGV4dCwgaW50MzJfdCYgbWlzc3BlbGxpbmdMb2NhdGlvbiwgaW50MzJfdCYg
bWlzc3BlbGxpbmdMZW5ndGgpOwogICAgIHN0YXRpYyB2b2lkIGNoZWNrR3JhbW1hck9mU3RyaW5n
KGludDY0X3Qgc3BlbGxEb2N1bWVudFRhZywgU3RyaW5nVmlldyB0ZXh0LCBWZWN0b3I8V2ViQ29y
ZTo6R3JhbW1hckRldGFpbD4mLCBpbnQzMl90JiBiYWRHcmFtbWFyTG9jYXRpb24sIGludDMyX3Qm
IGJhZEdyYW1tYXJMZW5ndGgpOwpAQCAtODAsNyArODAsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IHZvaWQgdG9nZ2xlU3BlbGxpbmdVSUlzU2hvd2luZygpOwogICAgIHN0YXRpYyB2b2lkIHVwZGF0
ZVNwZWxsaW5nVUlXaXRoTWlzc3BlbGxlZFdvcmQoaW50NjRfdCBzcGVsbERvY3VtZW50VGFnLCBj
b25zdCBTdHJpbmcmIG1pc3NwZWxsZWRXb3JkKTsKICAgICBzdGF0aWMgdm9pZCB1cGRhdGVTcGVs
bGluZ1VJV2l0aEdyYW1tYXJTdHJpbmcoaW50NjRfdCBzcGVsbERvY3VtZW50VGFnLCBjb25zdCBT
dHJpbmcmIGJhZEdyYW1tYXJQaHJhc2UsIGNvbnN0IFdlYkNvcmU6OkdyYW1tYXJEZXRhaWwmKTsK
LSAgICBzdGF0aWMgdm9pZCBnZXRHdWVzc2VzRm9yV29yZChpbnQ2NF90IHNwZWxsRG9jdW1lbnRU
YWcsIGNvbnN0IFN0cmluZyYgd29yZCwgY29uc3QgU3RyaW5nJiBjb250ZXh0LCBpbnQzMl90IGlu
c2VydGlvblBvaW50LCBWZWN0b3I8U3RyaW5nPiYgZ3Vlc3Nlcyk7CisgICAgc3RhdGljIHZvaWQg
Z2V0R3Vlc3Nlc0ZvcldvcmQoaW50NjRfdCBzcGVsbERvY3VtZW50VGFnLCBjb25zdCBTdHJpbmcm
IHdvcmQsIGNvbnN0IFN0cmluZyYgY29udGV4dCwgaW50MzJfdCBpbnNlcnRpb25Qb2ludCwgVmVj
dG9yPFN0cmluZz4mIGd1ZXNzZXMsIGJvb2wgaW5pdGlhbENhcGl0YWxpemF0aW9uRW5hYmxlZCk7
CiAgICAgc3RhdGljIHZvaWQgbGVhcm5Xb3JkKGludDY0X3Qgc3BlbGxEb2N1bWVudFRhZywgY29u
c3QgU3RyaW5nJiB3b3JkKTsKICAgICBzdGF0aWMgdm9pZCBpZ25vcmVXb3JkKGludDY0X3Qgc3Bl
bGxEb2N1bWVudFRhZywgY29uc3QgU3RyaW5nJiB3b3JkKTsKICAgICBzdGF0aWMgdm9pZCByZXF1
ZXN0Q2hlY2tpbmdPZlN0cmluZyhQYXNzUmVmUHRyPFRleHRDaGVja2VyQ29tcGxldGlvbj4sIGlu
dDMyX3QgaW5zZXJ0aW9uUG9pbnQpOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDIwMjExMykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNDgsNiArMzQ4LDcgQEAg
V2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYgcAogI2lmIFBMQVRGT1JNKElP
UykKICAgICAsIG1fYWx3YXlzUnVuc0F0Rm9yZWdyb3VuZFByaW9yaXR5KG1fY29uZmlndXJhdGlv
bi0+YWx3YXlzUnVuc0F0Rm9yZWdyb3VuZFByaW9yaXR5KCkpCiAjZW5kaWYKKyAgICAsIG1faW5p
dGlhbENhcGl0YWxpemF0aW9uRW5hYmxlZChtX2NvbmZpZ3VyYXRpb24tPmluaXRpYWxDYXBpdGFs
aXphdGlvbkVuYWJsZWQoKSkKICAgICAsIG1fYmFja0ZvcndhcmRMaXN0KFdlYkJhY2tGb3J3YXJk
TGlzdDo6Y3JlYXRlKCp0aGlzKSkKICAgICAsIG1fbWFpbnRhaW5zSW5hY3RpdmVTZWxlY3Rpb24o
ZmFsc2UpCiAgICAgLCBtX2lzRWRpdGFibGUoZmFsc2UpCkBAIC00NTEwLDcgKzQ1MTEsNyBAQCBp
bnQ2NF90IFdlYlBhZ2VQcm94eTo6c3BlbGxEb2N1bWVudFRhZygpCiAjaWYgVVNFKFVOSUZJRURf
VEVYVF9DSEVDS0lORykKIHZvaWQgV2ViUGFnZVByb3h5OjpjaGVja1RleHRPZlBhcmFncmFwaChj
b25zdCBTdHJpbmcmIHRleHQsIHVpbnQ2NF90IGNoZWNraW5nVHlwZXMsIGludDMyX3QgaW5zZXJ0
aW9uUG9pbnQsIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+JiByZXN1bHRzKQogewotICAgIHJl
c3VsdHMgPSBUZXh0Q2hlY2tlcjo6Y2hlY2tUZXh0T2ZQYXJhZ3JhcGgoc3BlbGxEb2N1bWVudFRh
ZygpLCB0ZXh0LCBpbnNlcnRpb25Qb2ludCwgY2hlY2tpbmdUeXBlcyk7CisgICAgcmVzdWx0cyA9
IFRleHRDaGVja2VyOjpjaGVja1RleHRPZlBhcmFncmFwaChzcGVsbERvY3VtZW50VGFnKCksIHRl
eHQsIGluc2VydGlvblBvaW50LCBjaGVja2luZ1R5cGVzLCBtX2luaXRpYWxDYXBpdGFsaXphdGlv
bkVuYWJsZWQpOwogfQogI2VuZGlmCiAKQEAgLTQ1NDEsNyArNDU0Miw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5Ojp1cGRhdGVTcGVsbGluZ1VJV2l0aEcKIAogdm9pZCBXZWJQYWdlUHJveHk6OmdldEd1
ZXNzZXNGb3JXb3JkKGNvbnN0IFN0cmluZyYgd29yZCwgY29uc3QgU3RyaW5nJiBjb250ZXh0LCBp
bnQzMl90IGluc2VydGlvblBvaW50LCBWZWN0b3I8U3RyaW5nPiYgZ3Vlc3NlcykKIHsKLSAgICBU
ZXh0Q2hlY2tlcjo6Z2V0R3Vlc3Nlc0ZvcldvcmQoc3BlbGxEb2N1bWVudFRhZygpLCB3b3JkLCBj
b250ZXh0LCBpbnNlcnRpb25Qb2ludCwgZ3Vlc3Nlcyk7CisgICAgVGV4dENoZWNrZXI6OmdldEd1
ZXNzZXNGb3JXb3JkKHNwZWxsRG9jdW1lbnRUYWcoKSwgd29yZCwgY29udGV4dCwgaW5zZXJ0aW9u
UG9pbnQsIGd1ZXNzZXMsIG1faW5pdGlhbENhcGl0YWxpemF0aW9uRW5hYmxlZCk7CiB9CiAKIHZv
aWQgV2ViUGFnZVByb3h5OjpsZWFybldvcmQoY29uc3QgU3RyaW5nJiB3b3JkKQpJbmRleDogU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkocmV2aXNpb24gMjAyMTEzKQorKysg
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xNjE1LDcgKzE2MTUsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9hbHdheXNSdW5zQXRGb3Jl
Z3JvdW5kUHJpb3JpdHk7CiAgICAgUHJvY2Vzc1Rocm90dGxlcjo6Rm9yZWdyb3VuZEFjdGl2aXR5
VG9rZW4gbV9hY3Rpdml0eVRva2VuOwogI2VuZGlmCi0gICAgICAgIAorICAgIGJvb2wgbV9pbml0
aWFsQ2FwaXRhbGl6YXRpb25FbmFibGVkOwogICAgIFJlZjxXZWJCYWNrRm9yd2FyZExpc3Q+IG1f
YmFja0ZvcndhcmRMaXN0OwogICAgICAgICAKICAgICBib29sIG1fbWFpbnRhaW5zSW5hY3RpdmVT
ZWxlY3Rpb247CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25m
aWd1cmF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0FQSVBhZ2VDb25maWd1cmF0aW9uLmNwcAkocmV2aXNpb24gMjAyMTEzKQorKysgU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTY3LDYgKzY3LDcgQEAgUmVmPFBhZ2VDb25maWd1cmF0aW9uPiBQYWdlQ29uZmlndXJh
dGlvbgogI2lmIFBMQVRGT1JNKElPUykKICAgICBjb3B5LT5tX2Fsd2F5c1J1bnNBdEZvcmVncm91
bmRQcmlvcml0eSA9IHRoaXMtPm1fYWx3YXlzUnVuc0F0Rm9yZWdyb3VuZFByaW9yaXR5OwogI2Vu
ZGlmCisgICAgY29weS0+bV9pbml0aWFsQ2FwaXRhbGl6YXRpb25FbmFibGVkID0gdGhpcy0+bV9p
bml0aWFsQ2FwaXRhbGl6YXRpb25FbmFibGVkOwogCiAgICAgcmV0dXJuIGNvcHk7CiB9CkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJh
dGlvbi5oCShyZXZpc2lvbiAyMDIxMTMpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0FQSVBhZ2VDb25maWd1cmF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTg5LDYgKzg5LDggQEAg
cHVibGljOgogICAgIGJvb2wgYWx3YXlzUnVuc0F0Rm9yZWdyb3VuZFByaW9yaXR5KCkgeyByZXR1
cm4gbV9hbHdheXNSdW5zQXRGb3JlZ3JvdW5kUHJpb3JpdHk7IH0KICAgICB2b2lkIHNldEFsd2F5
c1J1bnNBdEZvcmVncm91bmRQcmlvcml0eShib29sIGFsd2F5c1J1bnNBdEZvcmVncm91bmRQcmlv
cml0eSkgeyBtX2Fsd2F5c1J1bnNBdEZvcmVncm91bmRQcmlvcml0eSA9IGFsd2F5c1J1bnNBdEZv
cmVncm91bmRQcmlvcml0eTsgfSAKICNlbmRpZgorICAgIGJvb2wgaW5pdGlhbENhcGl0YWxpemF0
aW9uRW5hYmxlZCgpIHsgcmV0dXJuIG1faW5pdGlhbENhcGl0YWxpemF0aW9uRW5hYmxlZDsgfQor
ICAgIHZvaWQgc2V0SW5pdGlhbENhcGl0YWxpemF0aW9uRW5hYmxlZChib29sIGluaXRpYWxDYXBp
dGFsaXphdGlvbkVuYWJsZWQpIHsgbV9pbml0aWFsQ2FwaXRhbGl6YXRpb25FbmFibGVkID0gaW5p
dGlhbENhcGl0YWxpemF0aW9uRW5hYmxlZDsgfQogCiBwcml2YXRlOgogCkBAIC0xMDksNiArMTEx
LDcgQEAgcHJpdmF0ZToKICNpZiBQTEFURk9STShJT1MpCiAgICAgYm9vbCBtX2Fsd2F5c1J1bnNB
dEZvcmVncm91bmRQcmlvcml0eSA9IGZhbHNlOwogI2VuZGlmCisgICAgYm9vbCBtX2luaXRpYWxD
YXBpdGFsaXphdGlvbkVuYWJsZWQgPSB0cnVlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgQVBJCklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlQ29uZmlndXJhdGlvblJl
Zi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFn
ZUNvbmZpZ3VyYXRpb25SZWYuY3BwCShyZXZpc2lvbiAyMDIxMTMpCisrKyBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlQ29uZmlndXJhdGlvblJlZi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEwMywzICsxMDMsOCBAQCB2b2lkIFdLUGFnZUNvbmZpZ3VyYXRpb25TZXRXZWJzaXRl
RGF0YVN0CiB7CiAgICAgdG9JbXBsKGNvbmZpZ3VyYXRpb24pLT5zZXRXZWJzaXRlRGF0YVN0b3Jl
KHRvSW1wbCh3ZWJzaXRlRGF0YVN0b3JlKSk7CiB9CisKK3ZvaWQgV0tQYWdlQ29uZmlndXJhdGlv
blNldEludGlhbENhcGl0YWxpemF0aW9uRW5hYmxlZChXS1BhZ2VDb25maWd1cmF0aW9uUmVmIGNv
bmZpZ3VyYXRpb24sIGJvb2wgZW5hYmxlZCkKK3sKKyAgICB0b0ltcGwoY29uZmlndXJhdGlvbikt
PnNldEluaXRpYWxDYXBpdGFsaXphdGlvbkVuYWJsZWQoZW5hYmxlZCk7Cit9CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlQ29uZmlndXJhdGlvblJlZi5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VDb25maWd1cmF0
aW9uUmVmLmgJKHJldmlzaW9uIDIwMjExMykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQy9XS1BhZ2VDb25maWd1cmF0aW9uUmVmLmgJKHdvcmtpbmcgY29weSkKQEAgLTU0LDYgKzU0
LDggQEAgV0tfRVhQT1JUIHZvaWQgV0tQYWdlQ29uZmlndXJhdGlvblNldFJlbAogV0tfRVhQT1JU
IFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBXS1BhZ2VDb25maWd1cmF0aW9uR2V0V2Vic2l0ZURhdGFT
dG9yZShXS1BhZ2VDb25maWd1cmF0aW9uUmVmIGNvbmZpZ3VyYXRpb24pOwogV0tfRVhQT1JUIHZv
aWQgV0tQYWdlQ29uZmlndXJhdGlvblNldFdlYnNpdGVEYXRhU3RvcmUoV0tQYWdlQ29uZmlndXJh
dGlvblJlZiBjb25maWd1cmF0aW9uLCBXS1dlYnNpdGVEYXRhU3RvcmVSZWYgd2Vic2l0ZURhdGFT
dG9yZSk7CiAKK1dLX0VYUE9SVCB2b2lkIFdLUGFnZUNvbmZpZ3VyYXRpb25TZXRJbnRpYWxDYXBp
dGFsaXphdGlvbkVuYWJsZWQoV0tQYWdlQ29uZmlndXJhdGlvblJlZiBjb25maWd1cmF0aW9uLCBi
b29sIGVuYWJsZWQpOworCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgpJbmRleDogU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0JKHJldmlz
aW9uIDIwMjExMykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC00MzQsNyArNDM0LDggQEAgLSAodm9pZClfaW5pdGlh
bGl6ZVdpdGhDb25maWd1cmF0aW9uOihXSwogICAgIHBhZ2VDb25maWd1cmF0aW9uLT5wcmVmZXJl
bmNlVmFsdWVzKCkuc2V0KFdlYktpdDo6V2ViUHJlZmVyZW5jZXNLZXk6OnNob3VsZENvbnZlcnRQ
b3NpdGlvblN0eWxlT25Db3B5S2V5KCksIFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFs
dWUoISFbX2NvbmZpZ3VyYXRpb24gX2NvbnZlcnRzUG9zaXRpb25TdHlsZU9uQ29weV0pKTsKICAg
ICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZVZhbHVlcygpLnNldChXZWJLaXQ6OldlYlBy
ZWZlcmVuY2VzS2V5OjpodHRwRXF1aXZFbmFibGVkS2V5KCksIFdlYktpdDo6V2ViUHJlZmVyZW5j
ZXNTdG9yZTo6VmFsdWUoISFbX2NvbmZpZ3VyYXRpb24gX2FsbG93c01ldGFSZWZyZXNoXSkpOwog
ICAgIHBhZ2VDb25maWd1cmF0aW9uLT5wcmVmZXJlbmNlVmFsdWVzKCkuc2V0KFdlYktpdDo6V2Vi
UHJlZmVyZW5jZXNLZXk6OmFsbG93VW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxzS2V5KCksIFdl
YktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWUoISFbX2NvbmZpZ3VyYXRpb24gX2FsbG93
VW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxzXSkpOwotICAgIAorICAgIHBhZ2VDb25maWd1cmF0
aW9uLT5zZXRJbml0aWFsQ2FwaXRhbGl6YXRpb25FbmFibGVkKFtfY29uZmlndXJhdGlvbiBfaW5p
dGlhbENhcGl0YWxpemF0aW9uRW5hYmxlZF0pOworCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIHBh
Z2VDb25maWd1cmF0aW9uLT5wcmVmZXJlbmNlVmFsdWVzKCkuc2V0KFdlYktpdDo6V2ViUHJlZmVy
ZW5jZXNLZXk6OnNob3dzVVJMc0luVG9vbFRpcHNFbmFibGVkS2V5KCksIFdlYktpdDo6V2ViUHJl
ZmVyZW5jZXNTdG9yZTo6VmFsdWUoISFbX2NvbmZpZ3VyYXRpb24gX3Nob3dzVVJMc0luVG9vbFRp
cHNdKSk7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VWYWx1ZXMoKS5zZXQoV2Vi
S2l0OjpXZWJQcmVmZXJlbmNlc0tleTo6c2VydmljZUNvbnRyb2xzRW5hYmxlZEtleSgpLCBXZWJL
aXQ6OldlYlByZWZlcmVuY2VzU3RvcmU6OlZhbHVlKCEhW19jb25maWd1cmF0aW9uIF9zZXJ2aWNl
Q29udHJvbHNFbmFibGVkXSkpOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbQkocmV2aXNp
b24gMjAyMTEzKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXdDb25maWd1cmF0aW9uLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMjAsNiArMTIwLDcgQEAgcHJp
dmF0ZToKICAgICBCT09MIF9zaG93c1VSTHNJblRvb2xUaXBzOwogICAgIEJPT0wgX3NlcnZpY2VD
b250cm9sc0VuYWJsZWQ7CiAgICAgQk9PTCBfaW1hZ2VDb250cm9sc0VuYWJsZWQ7CisgICAgQk9P
TCBfaW5pdGlhbENhcGl0YWxpemF0aW9uRW5hYmxlZDsKICAgICBCT09MIF9yZXF1aXJlc1VzZXJB
Y3Rpb25Gb3JFZGl0aW5nQ29udHJvbHNNYW5hZ2VyOwogI2VuZGlmCiAKQEAgLTE2OSw2ICsxNzAs
NyBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdAogICAgIF9zaG93c1VSTHNJblRvb2xUaXBzID0gTk87
CiAgICAgX3NlcnZpY2VDb250cm9sc0VuYWJsZWQgPSBOTzsKICAgICBfaW1hZ2VDb250cm9sc0Vu
YWJsZWQgPSBOTzsKKyAgICBfaW5pdGlhbENhcGl0YWxpemF0aW9uRW5hYmxlZCA9IFlFUzsKICAg
ICBfcmVxdWlyZXNVc2VyQWN0aW9uRm9yRWRpdGluZ0NvbnRyb2xzTWFuYWdlciA9IE5POwogI2Vu
ZGlmCiAKQEAgLTI3OCw2ICsyODAsNyBAQCAtIChpZCljb3B5V2l0aFpvbmU6KE5TWm9uZSAqKXpv
bmUKICAgICBjb25maWd1cmF0aW9uLT5fYXR0YWNobWVudEVsZW1lbnRFbmFibGVkID0gc2VsZi0+
X2F0dGFjaG1lbnRFbGVtZW50RW5hYmxlZDsKICAgICBjb25maWd1cmF0aW9uLT5fbWVkaWFUeXBl
c1JlcXVpcmluZ1VzZXJBY3Rpb25Gb3JQbGF5YmFjayA9IHNlbGYtPl9tZWRpYVR5cGVzUmVxdWly
aW5nVXNlckFjdGlvbkZvclBsYXliYWNrOwogICAgIGNvbmZpZ3VyYXRpb24tPl9tYWluQ29udGVu
dFVzZXJHZXN0dXJlT3ZlcnJpZGVFbmFibGVkID0gc2VsZi0+X21haW5Db250ZW50VXNlckdlc3R1
cmVPdmVycmlkZUVuYWJsZWQ7CisgICAgY29uZmlndXJhdGlvbi0+X2luaXRpYWxDYXBpdGFsaXph
dGlvbkVuYWJsZWQgPSBzZWxmLT5faW5pdGlhbENhcGl0YWxpemF0aW9uRW5hYmxlZDsKIAogI2lm
IFBMQVRGT1JNKElPUykKICAgICBjb25maWd1cmF0aW9uLT5fYWxsb3dzSW5saW5lTWVkaWFQbGF5
YmFjayA9IHNlbGYtPl9hbGxvd3NJbmxpbmVNZWRpYVBsYXliYWNrOwpAQCAtNjQ5LDYgKzY1Miwx
NiBAQCAtICh2b2lkKV9zZXRNYWluQ29udGVudFVzZXJHZXN0dXJlT3ZlcnJpCiAgICAgX21haW5D
b250ZW50VXNlckdlc3R1cmVPdmVycmlkZUVuYWJsZWQgPSBtYWluQ29udGVudFVzZXJHZXN0dXJl
T3ZlcnJpZGVFbmFibGVkOwogfQogCistIChCT09MKV9pbml0aWFsQ2FwaXRhbGl6YXRpb25FbmFi
bGVkCit7CisgICAgcmV0dXJuIF9pbml0aWFsQ2FwaXRhbGl6YXRpb25FbmFibGVkOworfQorCist
ICh2b2lkKV9zZXRJbml0aWFsQ2FwaXRhbGl6YXRpb25FbmFibGVkOihCT09MKWluaXRpYWxDYXBp
dGFsaXphdGlvbkVuYWJsZWQKK3sKKyAgICBfaW5pdGlhbENhcGl0YWxpemF0aW9uRW5hYmxlZCA9
IGluaXRpYWxDYXBpdGFsaXphdGlvbkVuYWJsZWQ7Cit9CisKICNpZiBQTEFURk9STShNQUMpCiAt
IChCT09MKV9zaG93c1VSTHNJblRvb2xUaXBzCiB7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1
cmF0aW9uUHJpdmF0ZS5oCShyZXZpc2lvbiAyMDIxMTMpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTU0LDYgKzU0LDcgQEAKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3Nl
dEludmlzaWJsZUF1dG9wbGF5Tm90UGVybWl0dGVkOikgQk9PTCBfaW52aXNpYmxlQXV0b3BsYXlO
b3RQZXJtaXR0ZWQgV0tfQVZBSUxBQkxFKFdLX01BQ19UQkEsIFdLX0lPU19UQkEpOwogQHByb3Bl
cnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0TWVkaWFEYXRhTG9hZHNBdXRvbWF0aWNhbGx5Oikg
Qk9PTCBfbWVkaWFEYXRhTG9hZHNBdXRvbWF0aWNhbGx5IFdLX0FWQUlMQUJMRShXS19NQUNfVEJB
LCBXS19JT1NfVEJBKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldEF0dGFjaG1l
bnRFbGVtZW50RW5hYmxlZDopIEJPT0wgX2F0dGFjaG1lbnRFbGVtZW50RW5hYmxlZCBXS19BVkFJ
TEFCTEUoV0tfTUFDX1RCQSwgV0tfSU9TX1RCQSk7CitAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0
dGVyPV9zZXRJbml0aWFsQ2FwaXRhbGl6YXRpb25FbmFibGVkOikgQk9PTCBfaW5pdGlhbENhcGl0
YWxpemF0aW9uRW5hYmxlZCBXS19BVkFJTEFCTEUoV0tfTUFDX1RCQSwgV0tfSU9TX1RCQSk7CiAK
ICNpZiBUQVJHRVRfT1NfSVBIT05FCiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRB
bHdheXNSdW5zQXRGb3JlZ3JvdW5kUHJpb3JpdHk6KSBCT09MIF9hbHdheXNSdW5zQXRGb3JlZ3Jv
dW5kUHJpb3JpdHkgV0tfQVZBSUxBQkxFKE5BLCA5XzApOwpJbmRleDogU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2VmbC9UZXh0Q2hlY2tlckVmbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2VmbC9UZXh0Q2hlY2tlckVmbC5jcHAJKHJldmlzaW9uIDIwMjExMykK
KysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvVGV4dENoZWNrZXJFZmwuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNDgsNyArMTQ4LDcgQEAgc3RhdGljIHVuc2lnbmVkIG5leHRXb3JkT2Zm
c2V0KFN0cmluZ1ZpZQogI2VuZGlmIC8vIEVOQUJMRShTUEVMTENIRUNLKQogCiAjaWYgVVNFKFVO
SUZJRURfVEVYVF9DSEVDS0lORykKLVZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+IFRleHRDaGVj
a2VyOjpjaGVja1RleHRPZlBhcmFncmFwaChpbnQ2NF90IHNwZWxsRG9jdW1lbnRUYWcsIFN0cmlu
Z1ZpZXcgdGV4dCwgaW50MzJfdCBpbnNlcnRpb25Qb2ludCwgdWludDY0X3QgY2hlY2tpbmdUeXBl
cykKK1ZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+IFRleHRDaGVja2VyOjpjaGVja1RleHRPZlBh
cmFncmFwaChpbnQ2NF90IHNwZWxsRG9jdW1lbnRUYWcsIFN0cmluZ1ZpZXcgdGV4dCwgaW50MzJf
dCBpbnNlcnRpb25Qb2ludCwgdWludDY0X3QgY2hlY2tpbmdUeXBlcywgYm9vbCkKIHsKICAgICBV
TlVTRURfUEFSQU0oaW5zZXJ0aW9uUG9pbnQpOwogCkBAIC0yMzIsNyArMjMyLDcgQEAgdm9pZCBU
ZXh0Q2hlY2tlcjo6dXBkYXRlU3BlbGxpbmdVSVdpdGhHcgogICAgIG5vdEltcGxlbWVudGVkKCk7
CiB9CiAKLXZvaWQgVGV4dENoZWNrZXI6OmdldEd1ZXNzZXNGb3JXb3JkKGludDY0X3Qgc3BlbGxE
b2N1bWVudFRhZywgY29uc3QgU3RyaW5nJiB3b3JkLCBjb25zdCBTdHJpbmcmICwgaW50MzJfdCBp
bnNlcnRpb25Qb2ludCwgVmVjdG9yPFN0cmluZz4mIGd1ZXNzZXMpCit2b2lkIFRleHRDaGVja2Vy
OjpnZXRHdWVzc2VzRm9yV29yZChpbnQ2NF90IHNwZWxsRG9jdW1lbnRUYWcsIGNvbnN0IFN0cmlu
ZyYgd29yZCwgY29uc3QgU3RyaW5nJiAsIGludDMyX3QgaW5zZXJ0aW9uUG9pbnQsIFZlY3RvcjxT
dHJpbmc+JiBndWVzc2VzLCBib29sKQogewogICAgIFVOVVNFRF9QQVJBTShpbnNlcnRpb25Qb2lu
dCk7CiAjaWYgRU5BQkxFKFNQRUxMQ0hFQ0spCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvZ3RrL1RleHRDaGVja2VyR3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvZ3RrL1RleHRDaGVja2VyR3RrLmNwcAkocmV2aXNpb24gMjAyMTEzKQorKysgU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9UZXh0Q2hlY2tlckd0ay5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE2Niw3ICsxNjYsNyBAQCB2b2lkIFRleHRDaGVja2VyOjp1cGRhdGVTcGVsbGluZ1VJ
V2l0aEdyCiB7CiB9CiAKLXZvaWQgVGV4dENoZWNrZXI6OmdldEd1ZXNzZXNGb3JXb3JkKGludDY0
X3QgLyogc3BlbGxEb2N1bWVudFRhZyAqLywgY29uc3QgU3RyaW5nJiB3b3JkLCBjb25zdCBTdHJp
bmcmIC8qIGNvbnRleHQgKi8sIGludDMyX3QgLyogaW5zZXJ0aW9uUG9pbnQgKi8sIFZlY3RvcjxT
dHJpbmc+JiBndWVzc2VzKQordm9pZCBUZXh0Q2hlY2tlcjo6Z2V0R3Vlc3Nlc0ZvcldvcmQoaW50
NjRfdCAvKiBzcGVsbERvY3VtZW50VGFnICovLCBjb25zdCBTdHJpbmcmIHdvcmQsIGNvbnN0IFN0
cmluZyYgLyogY29udGV4dCAqLywgaW50MzJfdCAvKiBpbnNlcnRpb25Qb2ludCAqLywgVmVjdG9y
PFN0cmluZz4mIGd1ZXNzZXMsIGJvb2wpCiB7CiAjaWYgRU5BQkxFKFNQRUxMQ0hFQ0spCiAgICAg
Z3Vlc3NlcyA9IGVuY2hhbnRUZXh0Q2hlY2tlcigpLmdldEd1ZXNzZXNGb3JXb3JkKHdvcmQpOwpA
QCAtMjM5LDcgKzIzOSw3IEBAIHN0YXRpYyB1bnNpZ25lZCBuZXh0V29yZE9mZnNldChTdHJpbmdW
aWUKICNlbmRpZgogCiAjaWYgVVNFKFVOSUZJRURfVEVYVF9DSEVDS0lORykKLVZlY3RvcjxUZXh0
Q2hlY2tpbmdSZXN1bHQ+IFRleHRDaGVja2VyOjpjaGVja1RleHRPZlBhcmFncmFwaChpbnQ2NF90
IHNwZWxsRG9jdW1lbnRUYWcsIFN0cmluZ1ZpZXcgdGV4dCwgaW50MzJfdCBpbnNlcnRpb25Qb2lu
dCwgdWludDY0X3QgY2hlY2tpbmdUeXBlcykKK1ZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+IFRl
eHRDaGVja2VyOjpjaGVja1RleHRPZlBhcmFncmFwaChpbnQ2NF90IHNwZWxsRG9jdW1lbnRUYWcs
IFN0cmluZ1ZpZXcgdGV4dCwgaW50MzJfdCBpbnNlcnRpb25Qb2ludCwgdWludDY0X3QgY2hlY2tp
bmdUeXBlcywgYm9vbCkKIHsKICAgICBVTlVTRURfUEFSQU0oaW5zZXJ0aW9uUG9pbnQpOwogI2lm
IEVOQUJMRShTUEVMTENIRUNLKQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9U
ZXh0Q2hlY2tlcklPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
aW9zL1RleHRDaGVja2VySU9TLm1tCShyZXZpc2lvbiAyMDIxMTMpCisrKyBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvaW9zL1RleHRDaGVja2VySU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMzIs
NyArMTMyLDcgQEAgdm9pZCBUZXh0Q2hlY2tlcjo6Y2xvc2VTcGVsbERvY3VtZW50V2l0aAogCiAj
aWYgVVNFKFVOSUZJRURfVEVYVF9DSEVDS0lORykKIAotVmVjdG9yPFRleHRDaGVja2luZ1Jlc3Vs
dD4gVGV4dENoZWNrZXI6OmNoZWNrVGV4dE9mUGFyYWdyYXBoKGludDY0X3QsIFN0cmluZ1ZpZXcs
IGludDMyX3QsIHVpbnQ2NF90KQorVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4gVGV4dENoZWNr
ZXI6OmNoZWNrVGV4dE9mUGFyYWdyYXBoKGludDY0X3QsIFN0cmluZ1ZpZXcsIGludDMyX3QsIHVp
bnQ2NF90LCBib29sKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAgcmV0dXJuIFZlY3Rv
cjxUZXh0Q2hlY2tpbmdSZXN1bHQ+KCk7CkBAIC0xNzEsNyArMTcxLDcgQEAgdm9pZCBUZXh0Q2hl
Y2tlcjo6dXBkYXRlU3BlbGxpbmdVSVdpdGhHcgogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAK
LXZvaWQgVGV4dENoZWNrZXI6OmdldEd1ZXNzZXNGb3JXb3JkKGludDY0X3QsIGNvbnN0IFN0cmlu
ZyYsIGNvbnN0IFN0cmluZyYsIGludDMyX3QsIFZlY3RvcjxTdHJpbmc+JikKK3ZvaWQgVGV4dENo
ZWNrZXI6OmdldEd1ZXNzZXNGb3JXb3JkKGludDY0X3QsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0
cmluZyYsIGludDMyX3QsIFZlY3RvcjxTdHJpbmc+JiwgYm9vbCkKIHsKICAgICBub3RJbXBsZW1l
bnRlZCgpOwogfQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9UZXh0Q2hlY2tl
ck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1RleHRD
aGVja2VyTWFjLm1tCShyZXZpc2lvbiAyMDIxMTMpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvbWFjL1RleHRDaGVja2VyTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw2ICs0NywxMyBA
QCBzdGF0aWMgTlNTdHJpbmcqIGNvbnN0IFdlYkF1dG9tYXRpY0Rhc2hTCiBzdGF0aWMgTlNTdHJp
bmcqIGNvbnN0IFdlYkF1dG9tYXRpY0xpbmtEZXRlY3Rpb25FbmFibGVkID0gQCJXZWJBdXRvbWF0
aWNMaW5rRGV0ZWN0aW9uRW5hYmxlZCI7CiBzdGF0aWMgTlNTdHJpbmcqIGNvbnN0IFdlYkF1dG9t
YXRpY1RleHRSZXBsYWNlbWVudEVuYWJsZWQgPSBAIldlYkF1dG9tYXRpY1RleHRSZXBsYWNlbWVu
dEVuYWJsZWQiOwogCisjaWYgSEFWRShBRFZBTkNFRF9TUEVMTF9DSEVDS0lORykKKy8vIEZJWE1F
OiB0aGlzIG5lZWRzIHRvIGJlIHJlbW92ZWQgYW5kIE5TVGV4dENoZWNraW5nU3VwcHJlc3NJbml0
aWFsQ2FwaXRhbGl6YXRpb25LZXkgYXMgc29vbiBhcworLy8gcmRhcjovL3Byb2JsZW0vMjY4MDA5
MjQgaXMgZml4ZWQuCisKK3N0YXRpYyBOU1N0cmluZyogY29uc3QgV2ViVGV4dENoZWNraW5nU3Vw
cHJlc3NJbml0aWFsQ2FwaXRhbGl6YXRpb25LZXkgPSBAIlN1cHByZXNzSW5pdGlhbENhcGl0YWxp
emF0aW9uIjsKKyNlbmRpZgorCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNl
IFdlYktpdCB7CkBAIC0yOTEsMTQgKzI5OCwxNyBAQCB2b2lkIFRleHRDaGVja2VyOjpjbG9zZVNw
ZWxsRG9jdW1lbnRXaXRoCiAKICNpZiBVU0UoVU5JRklFRF9URVhUX0NIRUNLSU5HKQogCi1WZWN0
b3I8VGV4dENoZWNraW5nUmVzdWx0PiBUZXh0Q2hlY2tlcjo6Y2hlY2tUZXh0T2ZQYXJhZ3JhcGgo
aW50NjRfdCBzcGVsbERvY3VtZW50VGFnLCBTdHJpbmdWaWV3IHRleHQsIGludDMyX3QgaW5zZXJ0
aW9uUG9pbnQsIHVpbnQ2NF90IGNoZWNraW5nVHlwZXMpCitWZWN0b3I8VGV4dENoZWNraW5nUmVz
dWx0PiBUZXh0Q2hlY2tlcjo6Y2hlY2tUZXh0T2ZQYXJhZ3JhcGgoaW50NjRfdCBzcGVsbERvY3Vt
ZW50VGFnLCBTdHJpbmdWaWV3IHRleHQsIGludDMyX3QgaW5zZXJ0aW9uUG9pbnQsIHVpbnQ2NF90
IGNoZWNraW5nVHlwZXMsIGJvb2wgaW5pdGlhbENhcGl0YWxpemF0aW9uRW5hYmxlZCkKIHsKICAg
ICBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiByZXN1bHRzOwogCiAgICAgUmV0YWluUHRyPE5T
U3RyaW5nPiB0ZXh0U3RyaW5nID0gdGV4dC5jcmVhdGVOU1N0cmluZ1dpdGhvdXRDb3B5aW5nKCk7
CiAgICAgTlNEaWN0aW9uYXJ5ICpvcHRpb25zID0gbmlsOwogI2lmIEhBVkUoQURWQU5DRURfU1BF
TExfQ0hFQ0tJTkcpCi0gICAgb3B0aW9ucyA9IEB7IE5TVGV4dENoZWNraW5nSW5zZXJ0aW9uUG9p
bnRLZXkgOiAgW05TTnVtYmVyIG51bWJlcldpdGhVbnNpZ25lZEludGVnZXI6aW5zZXJ0aW9uUG9p
bnRdIH07CisgICAgb3B0aW9ucyA9IEB7IE5TVGV4dENoZWNraW5nSW5zZXJ0aW9uUG9pbnRLZXkg
OiAgW05TTnVtYmVyIG51bWJlcldpdGhVbnNpZ25lZEludGVnZXI6aW5zZXJ0aW9uUG9pbnRdLAor
ICAgICAgICAgICAgICAgICBXZWJUZXh0Q2hlY2tpbmdTdXBwcmVzc0luaXRpYWxDYXBpdGFsaXph
dGlvbktleSA6IFtOU051bWJlciBudW1iZXJXaXRoQm9vbDohaW5pdGlhbENhcGl0YWxpemF0aW9u
RW5hYmxlZF0gfTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGluaXRpYWxDYXBpdGFsaXphdGlv
bkVuYWJsZWQpOwogI2VuZGlmCiAgICAgTlNBcnJheSAqaW5jb21pbmdSZXN1bHRzID0gW1tOU1Nw
ZWxsQ2hlY2tlciBzaGFyZWRTcGVsbENoZWNrZXJdIGNoZWNrU3RyaW5nOnRleHRTdHJpbmcuZ2V0
KCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmFuZ2U6TlNNYWtlUmFuZ2UoMCwgdGV4dC5sZW5ndGgoKSkK
QEAgLTQzMCwxNCArNDQwLDE1IEBAIHZvaWQgVGV4dENoZWNrZXI6OnVwZGF0ZVNwZWxsaW5nVUlX
aXRoR3IKICAgICBbW05TU3BlbGxDaGVja2VyIHNoYXJlZFNwZWxsQ2hlY2tlcl0gdXBkYXRlU3Bl
bGxpbmdQYW5lbFdpdGhHcmFtbWFyU3RyaW5nOmJhZEdyYW1tYXJQaHJhc2UgZGV0YWlsOmdyYW1t
YXJEZXRhaWxEaWN0LmdldCgpXTsKIH0KIAotdm9pZCBUZXh0Q2hlY2tlcjo6Z2V0R3Vlc3Nlc0Zv
cldvcmQoaW50NjRfdCBzcGVsbERvY3VtZW50VGFnLCBjb25zdCBTdHJpbmcmIHdvcmQsIGNvbnN0
IFN0cmluZyYgY29udGV4dCwgaW50MzJfdCBpbnNlcnRpb25Qb2ludCwgVmVjdG9yPFN0cmluZz4m
IGd1ZXNzZXMpCit2b2lkIFRleHRDaGVja2VyOjpnZXRHdWVzc2VzRm9yV29yZChpbnQ2NF90IHNw
ZWxsRG9jdW1lbnRUYWcsIGNvbnN0IFN0cmluZyYgd29yZCwgY29uc3QgU3RyaW5nJiBjb250ZXh0
LCBpbnQzMl90IGluc2VydGlvblBvaW50LCBWZWN0b3I8U3RyaW5nPiYgZ3Vlc3NlcywgYm9vbCBp
bml0aWFsQ2FwaXRhbGl6YXRpb25FbmFibGVkKQogewogICAgIE5TU3RyaW5nKiBsYW5ndWFnZSA9
IG5pbDsKICAgICBOU09ydGhvZ3JhcGh5KiBvcnRob2dyYXBoeSA9IG5pbDsKICAgICBOU1NwZWxs
Q2hlY2tlciAqY2hlY2tlciA9IFtOU1NwZWxsQ2hlY2tlciBzaGFyZWRTcGVsbENoZWNrZXJdOwog
ICAgIE5TRGljdGlvbmFyeSAqb3B0aW9ucyA9IG5pbDsKICNpZiBIQVZFKEFEVkFOQ0VEX1NQRUxM
X0NIRUNLSU5HKQotICAgIG9wdGlvbnMgPSBAeyBOU1RleHRDaGVja2luZ0luc2VydGlvblBvaW50
S2V5IDogIFtOU051bWJlciBudW1iZXJXaXRoVW5zaWduZWRJbnRlZ2VyOmluc2VydGlvblBvaW50
XSB9OworICAgIG9wdGlvbnMgPSBAeyBOU1RleHRDaGVja2luZ0luc2VydGlvblBvaW50S2V5IDog
IFtOU051bWJlciBudW1iZXJXaXRoVW5zaWduZWRJbnRlZ2VyOmluc2VydGlvblBvaW50XSwKKyAg
ICAgICAgICAgICAgICAgV2ViVGV4dENoZWNraW5nU3VwcHJlc3NJbml0aWFsQ2FwaXRhbGl6YXRp
b25LZXkgOiBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6IWluaXRpYWxDYXBpdGFsaXphdGlvbkVu
YWJsZWRdIH07CiAjZW5kaWYKICAgICBpZiAoY29udGV4dC5sZW5ndGgoKSkgewogICAgICAgICBb
Y2hlY2tlciBjaGVja1N0cmluZzpjb250ZXh0IHJhbmdlOk5TTWFrZVJhbmdlKDAsIGNvbnRleHQu
bGVuZ3RoKCkpIHR5cGVzOk5TVGV4dENoZWNraW5nVHlwZU9ydGhvZ3JhcGh5IG9wdGlvbnM6b3B0
aW9ucyBpblNwZWxsRG9jdW1lbnRXaXRoVGFnOnNwZWxsRG9jdW1lbnRUYWcgb3J0aG9ncmFwaHk6
Jm9ydGhvZ3JhcGh5IHdvcmRDb3VudDowXTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>281515</attachid>
            <date>2016-06-16 18:12:40 -0700</date>
            <delta_ts>2016-07-25 17:11:05 -0700</delta_ts>
            <desc>Patch2</desc>
            <filename>noautocapitalize.txt</filename>
            <type>text/plain</type>
            <size>21502</size>
            <attacher name="Enrica Casucci">enrica</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwMjExMykKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ4IEBACisyMDE2LTA2LTE2ICBFbnJpY2Eg
Q2FzdWNjaSAgPGVucmljYUBhcHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9ydCBjb25maWd1cmFi
bGUgYXV0b2NhcGl0YWxpemF0aW9uLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTU4ODYwCisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzI2MjMxNDAzCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIGJlaGF2
aW9yIG9mIHNwZWxsY2hlY2tlciBzaG91bGQgYmUgY29uZmlndXJhYmxlIHRvIGF2b2lkCisgICAg
ICAgIHVud2FudGVkIGF1dG9jYXBpdGFsaXphdGlvbi4KKworICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uY3BwOgorICAgICAgICAoQVBJOjpQYWdlQ29uZmlndXJh
dGlvbjo6Y29weSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlv
bi5oOgorICAgICAgICAoQVBJOjpQYWdlQ29uZmlndXJhdGlvbjo6aW5pdGlhbENhcGl0YWxpemF0
aW9uRW5hYmxlZCk6CisgICAgICAgIChBUEk6OlBhZ2VDb25maWd1cmF0aW9uOjpzZXRJbml0aWFs
Q2FwaXRhbGl6YXRpb25FbmFibGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdl
Q29uZmlndXJhdGlvblJlZi5jcHA6CisgICAgICAgIChXS1BhZ2VDb25maWd1cmF0aW9uU2V0SW50
aWFsQ2FwaXRhbGl6YXRpb25FbmFibGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQ
YWdlQ29uZmlndXJhdGlvblJlZi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2luaXRpYWxpemVXaXRoQ29uZmlndXJh
dGlvbjpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3Vy
YXRpb24ubW06CisgICAgICAgICgtW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gY29weVdpdGhab25l
Ol0pOgorICAgICAgICAoLVtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF9pbml0aWFsQ2FwaXRhbGl6
YXRpb25FbmFibGVkXSk6CisgICAgICAgICgtW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX3NldElu
aXRpYWxDYXBpdGFsaXphdGlvbkVuYWJsZWQ6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9UZXh0Q2hlY2tlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y2hlY2tUZXh0T2ZQYXJhZ3JhcGgpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OmdldEd1ZXNzZXNGb3JXb3JkKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9UZXh0Q2hlY2tlckVm
bC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlRleHRDaGVja2VyOjpjaGVja1RleHRPZlBhcmFncmFw
aCk6CisgICAgICAgIChXZWJLaXQ6OlRleHRDaGVja2VyOjpnZXRHdWVzc2VzRm9yV29yZCk6Cisg
ICAgICAgICogVUlQcm9jZXNzL2d0ay9UZXh0Q2hlY2tlckd0ay5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlRleHRDaGVja2VyOjpnZXRHdWVzc2VzRm9yV29yZCk6CisgICAgICAgIChXZWJLaXQ6OlRl
eHRDaGVja2VyOjpjaGVja1RleHRPZlBhcmFncmFwaCk6CisgICAgICAgICogVUlQcm9jZXNzL2lv
cy9UZXh0Q2hlY2tlcklPUy5tbToKKyAgICAgICAgKFdlYktpdDo6VGV4dENoZWNrZXI6OmNoZWNr
VGV4dE9mUGFyYWdyYXBoKToKKyAgICAgICAgKFdlYktpdDo6VGV4dENoZWNrZXI6OmdldEd1ZXNz
ZXNGb3JXb3JkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1RleHRDaGVja2VyTWFjLm1tOgor
ICAgICAgICAoV2ViS2l0OjpUZXh0Q2hlY2tlcjo6Y2hlY2tUZXh0T2ZQYXJhZ3JhcGgpOgorICAg
ICAgICAoV2ViS2l0OjpUZXh0Q2hlY2tlcjo6Z2V0R3Vlc3Nlc0ZvcldvcmQpOgorCiAyMDE2LTA2
LTE1ICBEZWFuIEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KIAogICAgICAgICBSVEwgPHNlbGVj
dD4gZm9ybXMgYXJlIG1pc3BsYWNlZApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Rl
eHRDaGVja2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1RleHRD
aGVja2VyLmgJKHJldmlzaW9uIDIwMjExMykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9U
ZXh0Q2hlY2tlci5oCSh3b3JraW5nIGNvcHkpCkBAIC03Miw3ICs3Miw3IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgaW50NjRfdCB1bmlxdWVTcGVsbERvY3VtZW50VGFnKFdlYlBhZ2VQcm94eSopOwog
ICAgIHN0YXRpYyB2b2lkIGNsb3NlU3BlbGxEb2N1bWVudFdpdGhUYWcoaW50NjRfdCk7CiAjaWYg
VVNFKFVOSUZJRURfVEVYVF9DSEVDS0lORykKLSAgICBzdGF0aWMgVmVjdG9yPFdlYkNvcmU6OlRl
eHRDaGVja2luZ1Jlc3VsdD4gY2hlY2tUZXh0T2ZQYXJhZ3JhcGgoaW50NjRfdCBzcGVsbERvY3Vt
ZW50VGFnLCBTdHJpbmdWaWV3IHRleHQsIGludDMyX3QgaW5zZXJ0aW9uUG9pbnQsIHVpbnQ2NF90
IGNoZWNraW5nVHlwZXMpOworICAgIHN0YXRpYyBWZWN0b3I8V2ViQ29yZTo6VGV4dENoZWNraW5n
UmVzdWx0PiBjaGVja1RleHRPZlBhcmFncmFwaChpbnQ2NF90IHNwZWxsRG9jdW1lbnRUYWcsIFN0
cmluZ1ZpZXcgdGV4dCwgaW50MzJfdCBpbnNlcnRpb25Qb2ludCwgdWludDY0X3QgY2hlY2tpbmdU
eXBlcywgYm9vbCBpbml0aWFsQ2FwaXRhbGl6YXRpb25FbmFibGVkKTsKICNlbmRpZgogICAgIHN0
YXRpYyB2b2lkIGNoZWNrU3BlbGxpbmdPZlN0cmluZyhpbnQ2NF90IHNwZWxsRG9jdW1lbnRUYWcs
IFN0cmluZ1ZpZXcgdGV4dCwgaW50MzJfdCYgbWlzc3BlbGxpbmdMb2NhdGlvbiwgaW50MzJfdCYg
bWlzc3BlbGxpbmdMZW5ndGgpOwogICAgIHN0YXRpYyB2b2lkIGNoZWNrR3JhbW1hck9mU3RyaW5n
KGludDY0X3Qgc3BlbGxEb2N1bWVudFRhZywgU3RyaW5nVmlldyB0ZXh0LCBWZWN0b3I8V2ViQ29y
ZTo6R3JhbW1hckRldGFpbD4mLCBpbnQzMl90JiBiYWRHcmFtbWFyTG9jYXRpb24sIGludDMyX3Qm
IGJhZEdyYW1tYXJMZW5ndGgpOwpAQCAtODAsNyArODAsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IHZvaWQgdG9nZ2xlU3BlbGxpbmdVSUlzU2hvd2luZygpOwogICAgIHN0YXRpYyB2b2lkIHVwZGF0
ZVNwZWxsaW5nVUlXaXRoTWlzc3BlbGxlZFdvcmQoaW50NjRfdCBzcGVsbERvY3VtZW50VGFnLCBj
b25zdCBTdHJpbmcmIG1pc3NwZWxsZWRXb3JkKTsKICAgICBzdGF0aWMgdm9pZCB1cGRhdGVTcGVs
bGluZ1VJV2l0aEdyYW1tYXJTdHJpbmcoaW50NjRfdCBzcGVsbERvY3VtZW50VGFnLCBjb25zdCBT
dHJpbmcmIGJhZEdyYW1tYXJQaHJhc2UsIGNvbnN0IFdlYkNvcmU6OkdyYW1tYXJEZXRhaWwmKTsK
LSAgICBzdGF0aWMgdm9pZCBnZXRHdWVzc2VzRm9yV29yZChpbnQ2NF90IHNwZWxsRG9jdW1lbnRU
YWcsIGNvbnN0IFN0cmluZyYgd29yZCwgY29uc3QgU3RyaW5nJiBjb250ZXh0LCBpbnQzMl90IGlu
c2VydGlvblBvaW50LCBWZWN0b3I8U3RyaW5nPiYgZ3Vlc3Nlcyk7CisgICAgc3RhdGljIHZvaWQg
Z2V0R3Vlc3Nlc0ZvcldvcmQoaW50NjRfdCBzcGVsbERvY3VtZW50VGFnLCBjb25zdCBTdHJpbmcm
IHdvcmQsIGNvbnN0IFN0cmluZyYgY29udGV4dCwgaW50MzJfdCBpbnNlcnRpb25Qb2ludCwgVmVj
dG9yPFN0cmluZz4mIGd1ZXNzZXMsIGJvb2wgaW5pdGlhbENhcGl0YWxpemF0aW9uRW5hYmxlZCk7
CiAgICAgc3RhdGljIHZvaWQgbGVhcm5Xb3JkKGludDY0X3Qgc3BlbGxEb2N1bWVudFRhZywgY29u
c3QgU3RyaW5nJiB3b3JkKTsKICAgICBzdGF0aWMgdm9pZCBpZ25vcmVXb3JkKGludDY0X3Qgc3Bl
bGxEb2N1bWVudFRhZywgY29uc3QgU3RyaW5nJiB3b3JkKTsKICAgICBzdGF0aWMgdm9pZCByZXF1
ZXN0Q2hlY2tpbmdPZlN0cmluZyhQYXNzUmVmUHRyPFRleHRDaGVja2VyQ29tcGxldGlvbj4sIGlu
dDMyX3QgaW5zZXJ0aW9uUG9pbnQpOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDIwMjExMykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNDgsNiArMzQ4LDcgQEAg
V2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYgcAogI2lmIFBMQVRGT1JNKElP
UykKICAgICAsIG1fYWx3YXlzUnVuc0F0Rm9yZWdyb3VuZFByaW9yaXR5KG1fY29uZmlndXJhdGlv
bi0+YWx3YXlzUnVuc0F0Rm9yZWdyb3VuZFByaW9yaXR5KCkpCiAjZW5kaWYKKyAgICAsIG1faW5p
dGlhbENhcGl0YWxpemF0aW9uRW5hYmxlZChtX2NvbmZpZ3VyYXRpb24tPmluaXRpYWxDYXBpdGFs
aXphdGlvbkVuYWJsZWQoKSkKICAgICAsIG1fYmFja0ZvcndhcmRMaXN0KFdlYkJhY2tGb3J3YXJk
TGlzdDo6Y3JlYXRlKCp0aGlzKSkKICAgICAsIG1fbWFpbnRhaW5zSW5hY3RpdmVTZWxlY3Rpb24o
ZmFsc2UpCiAgICAgLCBtX2lzRWRpdGFibGUoZmFsc2UpCkBAIC00NTEwLDcgKzQ1MTEsNyBAQCBp
bnQ2NF90IFdlYlBhZ2VQcm94eTo6c3BlbGxEb2N1bWVudFRhZygpCiAjaWYgVVNFKFVOSUZJRURf
VEVYVF9DSEVDS0lORykKIHZvaWQgV2ViUGFnZVByb3h5OjpjaGVja1RleHRPZlBhcmFncmFwaChj
b25zdCBTdHJpbmcmIHRleHQsIHVpbnQ2NF90IGNoZWNraW5nVHlwZXMsIGludDMyX3QgaW5zZXJ0
aW9uUG9pbnQsIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+JiByZXN1bHRzKQogewotICAgIHJl
c3VsdHMgPSBUZXh0Q2hlY2tlcjo6Y2hlY2tUZXh0T2ZQYXJhZ3JhcGgoc3BlbGxEb2N1bWVudFRh
ZygpLCB0ZXh0LCBpbnNlcnRpb25Qb2ludCwgY2hlY2tpbmdUeXBlcyk7CisgICAgcmVzdWx0cyA9
IFRleHRDaGVja2VyOjpjaGVja1RleHRPZlBhcmFncmFwaChzcGVsbERvY3VtZW50VGFnKCksIHRl
eHQsIGluc2VydGlvblBvaW50LCBjaGVja2luZ1R5cGVzLCBtX2luaXRpYWxDYXBpdGFsaXphdGlv
bkVuYWJsZWQpOwogfQogI2VuZGlmCiAKQEAgLTQ1NDEsNyArNDU0Miw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5Ojp1cGRhdGVTcGVsbGluZ1VJV2l0aEcKIAogdm9pZCBXZWJQYWdlUHJveHk6OmdldEd1
ZXNzZXNGb3JXb3JkKGNvbnN0IFN0cmluZyYgd29yZCwgY29uc3QgU3RyaW5nJiBjb250ZXh0LCBp
bnQzMl90IGluc2VydGlvblBvaW50LCBWZWN0b3I8U3RyaW5nPiYgZ3Vlc3NlcykKIHsKLSAgICBU
ZXh0Q2hlY2tlcjo6Z2V0R3Vlc3Nlc0ZvcldvcmQoc3BlbGxEb2N1bWVudFRhZygpLCB3b3JkLCBj
b250ZXh0LCBpbnNlcnRpb25Qb2ludCwgZ3Vlc3Nlcyk7CisgICAgVGV4dENoZWNrZXI6OmdldEd1
ZXNzZXNGb3JXb3JkKHNwZWxsRG9jdW1lbnRUYWcoKSwgd29yZCwgY29udGV4dCwgaW5zZXJ0aW9u
UG9pbnQsIGd1ZXNzZXMsIG1faW5pdGlhbENhcGl0YWxpemF0aW9uRW5hYmxlZCk7CiB9CiAKIHZv
aWQgV2ViUGFnZVByb3h5OjpsZWFybldvcmQoY29uc3QgU3RyaW5nJiB3b3JkKQpJbmRleDogU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkocmV2aXNpb24gMjAyMTEzKQorKysg
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xNjE1LDcgKzE2MTUsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9hbHdheXNSdW5zQXRGb3Jl
Z3JvdW5kUHJpb3JpdHk7CiAgICAgUHJvY2Vzc1Rocm90dGxlcjo6Rm9yZWdyb3VuZEFjdGl2aXR5
VG9rZW4gbV9hY3Rpdml0eVRva2VuOwogI2VuZGlmCi0gICAgICAgIAorICAgIGJvb2wgbV9pbml0
aWFsQ2FwaXRhbGl6YXRpb25FbmFibGVkOwogICAgIFJlZjxXZWJCYWNrRm9yd2FyZExpc3Q+IG1f
YmFja0ZvcndhcmRMaXN0OwogICAgICAgICAKICAgICBib29sIG1fbWFpbnRhaW5zSW5hY3RpdmVT
ZWxlY3Rpb247CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25m
aWd1cmF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0FQSVBhZ2VDb25maWd1cmF0aW9uLmNwcAkocmV2aXNpb24gMjAyMTEzKQorKysgU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTY3LDYgKzY3LDcgQEAgUmVmPFBhZ2VDb25maWd1cmF0aW9uPiBQYWdlQ29uZmlndXJh
dGlvbgogI2lmIFBMQVRGT1JNKElPUykKICAgICBjb3B5LT5tX2Fsd2F5c1J1bnNBdEZvcmVncm91
bmRQcmlvcml0eSA9IHRoaXMtPm1fYWx3YXlzUnVuc0F0Rm9yZWdyb3VuZFByaW9yaXR5OwogI2Vu
ZGlmCisgICAgY29weS0+bV9pbml0aWFsQ2FwaXRhbGl6YXRpb25FbmFibGVkID0gdGhpcy0+bV9p
bml0aWFsQ2FwaXRhbGl6YXRpb25FbmFibGVkOwogCiAgICAgcmV0dXJuIGNvcHk7CiB9CkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJh
dGlvbi5oCShyZXZpc2lvbiAyMDIxMTMpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0FQSVBhZ2VDb25maWd1cmF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTg5LDYgKzg5LDggQEAg
cHVibGljOgogICAgIGJvb2wgYWx3YXlzUnVuc0F0Rm9yZWdyb3VuZFByaW9yaXR5KCkgeyByZXR1
cm4gbV9hbHdheXNSdW5zQXRGb3JlZ3JvdW5kUHJpb3JpdHk7IH0KICAgICB2b2lkIHNldEFsd2F5
c1J1bnNBdEZvcmVncm91bmRQcmlvcml0eShib29sIGFsd2F5c1J1bnNBdEZvcmVncm91bmRQcmlv
cml0eSkgeyBtX2Fsd2F5c1J1bnNBdEZvcmVncm91bmRQcmlvcml0eSA9IGFsd2F5c1J1bnNBdEZv
cmVncm91bmRQcmlvcml0eTsgfSAKICNlbmRpZgorICAgIGJvb2wgaW5pdGlhbENhcGl0YWxpemF0
aW9uRW5hYmxlZCgpIHsgcmV0dXJuIG1faW5pdGlhbENhcGl0YWxpemF0aW9uRW5hYmxlZDsgfQor
ICAgIHZvaWQgc2V0SW5pdGlhbENhcGl0YWxpemF0aW9uRW5hYmxlZChib29sIGluaXRpYWxDYXBp
dGFsaXphdGlvbkVuYWJsZWQpIHsgbV9pbml0aWFsQ2FwaXRhbGl6YXRpb25FbmFibGVkID0gaW5p
dGlhbENhcGl0YWxpemF0aW9uRW5hYmxlZDsgfQogCiBwcml2YXRlOgogCkBAIC0xMDksNiArMTEx
LDcgQEAgcHJpdmF0ZToKICNpZiBQTEFURk9STShJT1MpCiAgICAgYm9vbCBtX2Fsd2F5c1J1bnNB
dEZvcmVncm91bmRQcmlvcml0eSA9IGZhbHNlOwogI2VuZGlmCisgICAgYm9vbCBtX2luaXRpYWxD
YXBpdGFsaXphdGlvbkVuYWJsZWQgPSB0cnVlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgQVBJCklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlQ29uZmlndXJhdGlvblJl
Zi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFn
ZUNvbmZpZ3VyYXRpb25SZWYuY3BwCShyZXZpc2lvbiAyMDIxMTMpCisrKyBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlQ29uZmlndXJhdGlvblJlZi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEwMywzICsxMDMsOCBAQCB2b2lkIFdLUGFnZUNvbmZpZ3VyYXRpb25TZXRXZWJzaXRl
RGF0YVN0CiB7CiAgICAgdG9JbXBsKGNvbmZpZ3VyYXRpb24pLT5zZXRXZWJzaXRlRGF0YVN0b3Jl
KHRvSW1wbCh3ZWJzaXRlRGF0YVN0b3JlKSk7CiB9CisKK3ZvaWQgV0tQYWdlQ29uZmlndXJhdGlv
blNldEludGlhbENhcGl0YWxpemF0aW9uRW5hYmxlZChXS1BhZ2VDb25maWd1cmF0aW9uUmVmIGNv
bmZpZ3VyYXRpb24sIGJvb2wgZW5hYmxlZCkKK3sKKyAgICB0b0ltcGwoY29uZmlndXJhdGlvbikt
PnNldEluaXRpYWxDYXBpdGFsaXphdGlvbkVuYWJsZWQoZW5hYmxlZCk7Cit9CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlQ29uZmlndXJhdGlvblJlZi5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VDb25maWd1cmF0
aW9uUmVmLmgJKHJldmlzaW9uIDIwMjExMykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQy9XS1BhZ2VDb25maWd1cmF0aW9uUmVmLmgJKHdvcmtpbmcgY29weSkKQEAgLTU0LDYgKzU0
LDggQEAgV0tfRVhQT1JUIHZvaWQgV0tQYWdlQ29uZmlndXJhdGlvblNldFJlbAogV0tfRVhQT1JU
IFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBXS1BhZ2VDb25maWd1cmF0aW9uR2V0V2Vic2l0ZURhdGFT
dG9yZShXS1BhZ2VDb25maWd1cmF0aW9uUmVmIGNvbmZpZ3VyYXRpb24pOwogV0tfRVhQT1JUIHZv
aWQgV0tQYWdlQ29uZmlndXJhdGlvblNldFdlYnNpdGVEYXRhU3RvcmUoV0tQYWdlQ29uZmlndXJh
dGlvblJlZiBjb25maWd1cmF0aW9uLCBXS1dlYnNpdGVEYXRhU3RvcmVSZWYgd2Vic2l0ZURhdGFT
dG9yZSk7CiAKK1dLX0VYUE9SVCB2b2lkIFdLUGFnZUNvbmZpZ3VyYXRpb25TZXRJbnRpYWxDYXBp
dGFsaXphdGlvbkVuYWJsZWQoV0tQYWdlQ29uZmlndXJhdGlvblJlZiBjb25maWd1cmF0aW9uLCBi
b29sIGVuYWJsZWQpOworCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgpJbmRleDogU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0JKHJldmlz
aW9uIDIwMjExMykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC00MzQsNyArNDM0LDggQEAgLSAodm9pZClfaW5pdGlh
bGl6ZVdpdGhDb25maWd1cmF0aW9uOihXSwogICAgIHBhZ2VDb25maWd1cmF0aW9uLT5wcmVmZXJl
bmNlVmFsdWVzKCkuc2V0KFdlYktpdDo6V2ViUHJlZmVyZW5jZXNLZXk6OnNob3VsZENvbnZlcnRQ
b3NpdGlvblN0eWxlT25Db3B5S2V5KCksIFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFs
dWUoISFbX2NvbmZpZ3VyYXRpb24gX2NvbnZlcnRzUG9zaXRpb25TdHlsZU9uQ29weV0pKTsKICAg
ICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZVZhbHVlcygpLnNldChXZWJLaXQ6OldlYlBy
ZWZlcmVuY2VzS2V5OjpodHRwRXF1aXZFbmFibGVkS2V5KCksIFdlYktpdDo6V2ViUHJlZmVyZW5j
ZXNTdG9yZTo6VmFsdWUoISFbX2NvbmZpZ3VyYXRpb24gX2FsbG93c01ldGFSZWZyZXNoXSkpOwog
ICAgIHBhZ2VDb25maWd1cmF0aW9uLT5wcmVmZXJlbmNlVmFsdWVzKCkuc2V0KFdlYktpdDo6V2Vi
UHJlZmVyZW5jZXNLZXk6OmFsbG93VW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxzS2V5KCksIFdl
YktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWUoISFbX2NvbmZpZ3VyYXRpb24gX2FsbG93
VW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxzXSkpOwotICAgIAorICAgIHBhZ2VDb25maWd1cmF0
aW9uLT5zZXRJbml0aWFsQ2FwaXRhbGl6YXRpb25FbmFibGVkKFtfY29uZmlndXJhdGlvbiBfaW5p
dGlhbENhcGl0YWxpemF0aW9uRW5hYmxlZF0pOworCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIHBh
Z2VDb25maWd1cmF0aW9uLT5wcmVmZXJlbmNlVmFsdWVzKCkuc2V0KFdlYktpdDo6V2ViUHJlZmVy
ZW5jZXNLZXk6OnNob3dzVVJMc0luVG9vbFRpcHNFbmFibGVkS2V5KCksIFdlYktpdDo6V2ViUHJl
ZmVyZW5jZXNTdG9yZTo6VmFsdWUoISFbX2NvbmZpZ3VyYXRpb24gX3Nob3dzVVJMc0luVG9vbFRp
cHNdKSk7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VWYWx1ZXMoKS5zZXQoV2Vi
S2l0OjpXZWJQcmVmZXJlbmNlc0tleTo6c2VydmljZUNvbnRyb2xzRW5hYmxlZEtleSgpLCBXZWJL
aXQ6OldlYlByZWZlcmVuY2VzU3RvcmU6OlZhbHVlKCEhW19jb25maWd1cmF0aW9uIF9zZXJ2aWNl
Q29udHJvbHNFbmFibGVkXSkpOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbQkocmV2aXNp
b24gMjAyMTEzKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXdDb25maWd1cmF0aW9uLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMjAsNiArMTIwLDcgQEAgcHJp
dmF0ZToKICAgICBCT09MIF9zaG93c1VSTHNJblRvb2xUaXBzOwogICAgIEJPT0wgX3NlcnZpY2VD
b250cm9sc0VuYWJsZWQ7CiAgICAgQk9PTCBfaW1hZ2VDb250cm9sc0VuYWJsZWQ7CisgICAgQk9P
TCBfaW5pdGlhbENhcGl0YWxpemF0aW9uRW5hYmxlZDsKICAgICBCT09MIF9yZXF1aXJlc1VzZXJB
Y3Rpb25Gb3JFZGl0aW5nQ29udHJvbHNNYW5hZ2VyOwogI2VuZGlmCiAKQEAgLTE2OSw2ICsxNzAs
NyBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdAogICAgIF9zaG93c1VSTHNJblRvb2xUaXBzID0gTk87
CiAgICAgX3NlcnZpY2VDb250cm9sc0VuYWJsZWQgPSBOTzsKICAgICBfaW1hZ2VDb250cm9sc0Vu
YWJsZWQgPSBOTzsKKyAgICBfaW5pdGlhbENhcGl0YWxpemF0aW9uRW5hYmxlZCA9IFlFUzsKICAg
ICBfcmVxdWlyZXNVc2VyQWN0aW9uRm9yRWRpdGluZ0NvbnRyb2xzTWFuYWdlciA9IE5POwogI2Vu
ZGlmCiAKQEAgLTI3OCw2ICsyODAsNyBAQCAtIChpZCljb3B5V2l0aFpvbmU6KE5TWm9uZSAqKXpv
bmUKICAgICBjb25maWd1cmF0aW9uLT5fYXR0YWNobWVudEVsZW1lbnRFbmFibGVkID0gc2VsZi0+
X2F0dGFjaG1lbnRFbGVtZW50RW5hYmxlZDsKICAgICBjb25maWd1cmF0aW9uLT5fbWVkaWFUeXBl
c1JlcXVpcmluZ1VzZXJBY3Rpb25Gb3JQbGF5YmFjayA9IHNlbGYtPl9tZWRpYVR5cGVzUmVxdWly
aW5nVXNlckFjdGlvbkZvclBsYXliYWNrOwogICAgIGNvbmZpZ3VyYXRpb24tPl9tYWluQ29udGVu
dFVzZXJHZXN0dXJlT3ZlcnJpZGVFbmFibGVkID0gc2VsZi0+X21haW5Db250ZW50VXNlckdlc3R1
cmVPdmVycmlkZUVuYWJsZWQ7CisgICAgY29uZmlndXJhdGlvbi0+X2luaXRpYWxDYXBpdGFsaXph
dGlvbkVuYWJsZWQgPSBzZWxmLT5faW5pdGlhbENhcGl0YWxpemF0aW9uRW5hYmxlZDsKIAogI2lm
IFBMQVRGT1JNKElPUykKICAgICBjb25maWd1cmF0aW9uLT5fYWxsb3dzSW5saW5lTWVkaWFQbGF5
YmFjayA9IHNlbGYtPl9hbGxvd3NJbmxpbmVNZWRpYVBsYXliYWNrOwpAQCAtNjQ5LDYgKzY1Miwx
NiBAQCAtICh2b2lkKV9zZXRNYWluQ29udGVudFVzZXJHZXN0dXJlT3ZlcnJpCiAgICAgX21haW5D
b250ZW50VXNlckdlc3R1cmVPdmVycmlkZUVuYWJsZWQgPSBtYWluQ29udGVudFVzZXJHZXN0dXJl
T3ZlcnJpZGVFbmFibGVkOwogfQogCistIChCT09MKV9pbml0aWFsQ2FwaXRhbGl6YXRpb25FbmFi
bGVkCit7CisgICAgcmV0dXJuIF9pbml0aWFsQ2FwaXRhbGl6YXRpb25FbmFibGVkOworfQorCist
ICh2b2lkKV9zZXRJbml0aWFsQ2FwaXRhbGl6YXRpb25FbmFibGVkOihCT09MKWluaXRpYWxDYXBp
dGFsaXphdGlvbkVuYWJsZWQKK3sKKyAgICBfaW5pdGlhbENhcGl0YWxpemF0aW9uRW5hYmxlZCA9
IGluaXRpYWxDYXBpdGFsaXphdGlvbkVuYWJsZWQ7Cit9CisKICNpZiBQTEFURk9STShNQUMpCiAt
IChCT09MKV9zaG93c1VSTHNJblRvb2xUaXBzCiB7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1
cmF0aW9uUHJpdmF0ZS5oCShyZXZpc2lvbiAyMDIxMTMpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTU0LDYgKzU0LDcgQEAKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3Nl
dEludmlzaWJsZUF1dG9wbGF5Tm90UGVybWl0dGVkOikgQk9PTCBfaW52aXNpYmxlQXV0b3BsYXlO
b3RQZXJtaXR0ZWQgV0tfQVZBSUxBQkxFKFdLX01BQ19UQkEsIFdLX0lPU19UQkEpOwogQHByb3Bl
cnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0TWVkaWFEYXRhTG9hZHNBdXRvbWF0aWNhbGx5Oikg
Qk9PTCBfbWVkaWFEYXRhTG9hZHNBdXRvbWF0aWNhbGx5IFdLX0FWQUlMQUJMRShXS19NQUNfVEJB
LCBXS19JT1NfVEJBKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldEF0dGFjaG1l
bnRFbGVtZW50RW5hYmxlZDopIEJPT0wgX2F0dGFjaG1lbnRFbGVtZW50RW5hYmxlZCBXS19BVkFJ
TEFCTEUoV0tfTUFDX1RCQSwgV0tfSU9TX1RCQSk7CitAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0
dGVyPV9zZXRJbml0aWFsQ2FwaXRhbGl6YXRpb25FbmFibGVkOikgQk9PTCBfaW5pdGlhbENhcGl0
YWxpemF0aW9uRW5hYmxlZCBXS19BVkFJTEFCTEUoV0tfTUFDX1RCQSwgV0tfSU9TX1RCQSk7CiAK
ICNpZiBUQVJHRVRfT1NfSVBIT05FCiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRB
bHdheXNSdW5zQXRGb3JlZ3JvdW5kUHJpb3JpdHk6KSBCT09MIF9hbHdheXNSdW5zQXRGb3JlZ3Jv
dW5kUHJpb3JpdHkgV0tfQVZBSUxBQkxFKE5BLCA5XzApOwpJbmRleDogU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2VmbC9UZXh0Q2hlY2tlckVmbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2VmbC9UZXh0Q2hlY2tlckVmbC5jcHAJKHJldmlzaW9uIDIwMjExMykK
KysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvVGV4dENoZWNrZXJFZmwuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNDgsNyArMTQ4LDcgQEAgc3RhdGljIHVuc2lnbmVkIG5leHRXb3JkT2Zm
c2V0KFN0cmluZ1ZpZQogI2VuZGlmIC8vIEVOQUJMRShTUEVMTENIRUNLKQogCiAjaWYgVVNFKFVO
SUZJRURfVEVYVF9DSEVDS0lORykKLVZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+IFRleHRDaGVj
a2VyOjpjaGVja1RleHRPZlBhcmFncmFwaChpbnQ2NF90IHNwZWxsRG9jdW1lbnRUYWcsIFN0cmlu
Z1ZpZXcgdGV4dCwgaW50MzJfdCBpbnNlcnRpb25Qb2ludCwgdWludDY0X3QgY2hlY2tpbmdUeXBl
cykKK1ZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+IFRleHRDaGVja2VyOjpjaGVja1RleHRPZlBh
cmFncmFwaChpbnQ2NF90IHNwZWxsRG9jdW1lbnRUYWcsIFN0cmluZ1ZpZXcgdGV4dCwgaW50MzJf
dCBpbnNlcnRpb25Qb2ludCwgdWludDY0X3QgY2hlY2tpbmdUeXBlcywgYm9vbCkKIHsKICAgICBV
TlVTRURfUEFSQU0oaW5zZXJ0aW9uUG9pbnQpOwogCkBAIC0yMzIsNyArMjMyLDcgQEAgdm9pZCBU
ZXh0Q2hlY2tlcjo6dXBkYXRlU3BlbGxpbmdVSVdpdGhHcgogICAgIG5vdEltcGxlbWVudGVkKCk7
CiB9CiAKLXZvaWQgVGV4dENoZWNrZXI6OmdldEd1ZXNzZXNGb3JXb3JkKGludDY0X3Qgc3BlbGxE
b2N1bWVudFRhZywgY29uc3QgU3RyaW5nJiB3b3JkLCBjb25zdCBTdHJpbmcmICwgaW50MzJfdCBp
bnNlcnRpb25Qb2ludCwgVmVjdG9yPFN0cmluZz4mIGd1ZXNzZXMpCit2b2lkIFRleHRDaGVja2Vy
OjpnZXRHdWVzc2VzRm9yV29yZChpbnQ2NF90IHNwZWxsRG9jdW1lbnRUYWcsIGNvbnN0IFN0cmlu
ZyYgd29yZCwgY29uc3QgU3RyaW5nJiAsIGludDMyX3QgaW5zZXJ0aW9uUG9pbnQsIFZlY3RvcjxT
dHJpbmc+JiBndWVzc2VzLCBib29sKQogewogICAgIFVOVVNFRF9QQVJBTShpbnNlcnRpb25Qb2lu
dCk7CiAjaWYgRU5BQkxFKFNQRUxMQ0hFQ0spCkBAIC0yNzQsNyArMjc0LDcgQEAgdm9pZCBUZXh0
Q2hlY2tlcjo6cmVxdWVzdENoZWNraW5nT2ZTdHJpbgogICAgIEFTU0VSVChyZXF1ZXN0LnNlcXVl
bmNlKCkgIT0gdW5yZXF1ZXN0ZWRUZXh0Q2hlY2tpbmdTZXF1ZW5jZSk7CiAgICAgQVNTRVJUKHJl
cXVlc3QubWFzaygpICE9IFRleHRDaGVja2luZ1R5cGVOb25lKTsKIAotICAgIGNvbXBsZXRpb24t
PmRpZEZpbmlzaENoZWNraW5nVGV4dChjaGVja1RleHRPZlBhcmFncmFwaChjb21wbGV0aW9uLT5z
cGVsbERvY3VtZW50VGFnKCksIHJlcXVlc3QudGV4dCgpLCBpbnNlcnRpb25Qb2ludCwgcmVxdWVz
dC5tYXNrKCkpKTsKKyAgICBjb21wbGV0aW9uLT5kaWRGaW5pc2hDaGVja2luZ1RleHQoY2hlY2tU
ZXh0T2ZQYXJhZ3JhcGgoY29tcGxldGlvbi0+c3BlbGxEb2N1bWVudFRhZygpLCByZXF1ZXN0LnRl
eHQoKSwgaW5zZXJ0aW9uUG9pbnQsIHJlcXVlc3QubWFzaygpLCBmYWxzZSkpOwogI2Vsc2UKICAg
ICBVTlVTRURfUEFSQU0oY29tcGxldGlvbik7CiAgICAgVU5VU0VEX1BBUkFNKGluc2VydGlvblBv
aW50KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvVGV4dENoZWNrZXJHdGsu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvVGV4dENoZWNr
ZXJHdGsuY3BwCShyZXZpc2lvbiAyMDIxMTMpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
Z3RrL1RleHRDaGVja2VyR3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY2LDcgKzE2Niw3IEBA
IHZvaWQgVGV4dENoZWNrZXI6OnVwZGF0ZVNwZWxsaW5nVUlXaXRoR3IKIHsKIH0KIAotdm9pZCBU
ZXh0Q2hlY2tlcjo6Z2V0R3Vlc3Nlc0ZvcldvcmQoaW50NjRfdCAvKiBzcGVsbERvY3VtZW50VGFn
ICovLCBjb25zdCBTdHJpbmcmIHdvcmQsIGNvbnN0IFN0cmluZyYgLyogY29udGV4dCAqLywgaW50
MzJfdCAvKiBpbnNlcnRpb25Qb2ludCAqLywgVmVjdG9yPFN0cmluZz4mIGd1ZXNzZXMpCit2b2lk
IFRleHRDaGVja2VyOjpnZXRHdWVzc2VzRm9yV29yZChpbnQ2NF90IC8qIHNwZWxsRG9jdW1lbnRU
YWcgKi8sIGNvbnN0IFN0cmluZyYgd29yZCwgY29uc3QgU3RyaW5nJiAvKiBjb250ZXh0ICovLCBp
bnQzMl90IC8qIGluc2VydGlvblBvaW50ICovLCBWZWN0b3I8U3RyaW5nPiYgZ3Vlc3NlcywgYm9v
bCkKIHsKICNpZiBFTkFCTEUoU1BFTExDSEVDSykKICAgICBndWVzc2VzID0gZW5jaGFudFRleHRD
aGVja2VyKCkuZ2V0R3Vlc3Nlc0ZvcldvcmQod29yZCk7CkBAIC0yMDQsNyArMjA0LDcgQEAgdm9p
ZCBUZXh0Q2hlY2tlcjo6cmVxdWVzdENoZWNraW5nT2ZTdHJpbgogICAgIEFTU0VSVChyZXF1ZXN0
LnNlcXVlbmNlKCkgIT0gdW5yZXF1ZXN0ZWRUZXh0Q2hlY2tpbmdTZXF1ZW5jZSk7CiAgICAgQVNT
RVJUKHJlcXVlc3QubWFzaygpICE9IFRleHRDaGVja2luZ1R5cGVOb25lKTsKIAotICAgIGNvbXBs
ZXRpb24tPmRpZEZpbmlzaENoZWNraW5nVGV4dChjaGVja1RleHRPZlBhcmFncmFwaChjb21wbGV0
aW9uLT5zcGVsbERvY3VtZW50VGFnKCksIHJlcXVlc3QudGV4dCgpLCBpbnNlcnRpb25Qb2ludCwg
cmVxdWVzdC5tYXNrKCkpKTsKKyAgICBjb21wbGV0aW9uLT5kaWRGaW5pc2hDaGVja2luZ1RleHQo
Y2hlY2tUZXh0T2ZQYXJhZ3JhcGgoY29tcGxldGlvbi0+c3BlbGxEb2N1bWVudFRhZygpLCByZXF1
ZXN0LnRleHQoKSwgaW5zZXJ0aW9uUG9pbnQsIHJlcXVlc3QubWFzaygpLCBmYWxzZSkpOwogI2Vs
c2UKICAgICBVTlVTRURfUEFSQU0oY29tcGxldGlvbik7CiAjZW5kaWYKQEAgLTIzOSw3ICsyMzks
NyBAQCBzdGF0aWMgdW5zaWduZWQgbmV4dFdvcmRPZmZzZXQoU3RyaW5nVmllCiAjZW5kaWYKIAog
I2lmIFVTRShVTklGSUVEX1RFWFRfQ0hFQ0tJTkcpCi1WZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0
PiBUZXh0Q2hlY2tlcjo6Y2hlY2tUZXh0T2ZQYXJhZ3JhcGgoaW50NjRfdCBzcGVsbERvY3VtZW50
VGFnLCBTdHJpbmdWaWV3IHRleHQsIGludDMyX3QgaW5zZXJ0aW9uUG9pbnQsIHVpbnQ2NF90IGNo
ZWNraW5nVHlwZXMpCitWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiBUZXh0Q2hlY2tlcjo6Y2hl
Y2tUZXh0T2ZQYXJhZ3JhcGgoaW50NjRfdCBzcGVsbERvY3VtZW50VGFnLCBTdHJpbmdWaWV3IHRl
eHQsIGludDMyX3QgaW5zZXJ0aW9uUG9pbnQsIHVpbnQ2NF90IGNoZWNraW5nVHlwZXMsIGJvb2wp
CiB7CiAgICAgVU5VU0VEX1BBUkFNKGluc2VydGlvblBvaW50KTsKICNpZiBFTkFCTEUoU1BFTExD
SEVDSykKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvVGV4dENoZWNrZXJJT1Mu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9UZXh0Q2hlY2tl
cklPUy5tbQkocmV2aXNpb24gMjAyMTEzKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lv
cy9UZXh0Q2hlY2tlcklPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTMyLDcgKzEzMiw3IEBAIHZv
aWQgVGV4dENoZWNrZXI6OmNsb3NlU3BlbGxEb2N1bWVudFdpdGgKIAogI2lmIFVTRShVTklGSUVE
X1RFWFRfQ0hFQ0tJTkcpCiAKLVZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+IFRleHRDaGVja2Vy
OjpjaGVja1RleHRPZlBhcmFncmFwaChpbnQ2NF90LCBTdHJpbmdWaWV3LCBpbnQzMl90LCB1aW50
NjRfdCkKK1ZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+IFRleHRDaGVja2VyOjpjaGVja1RleHRP
ZlBhcmFncmFwaChpbnQ2NF90LCBTdHJpbmdWaWV3LCBpbnQzMl90LCB1aW50NjRfdCwgYm9vbCkK
IHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVybiBWZWN0b3I8VGV4dENoZWNraW5n
UmVzdWx0PigpOwpAQCAtMTcxLDcgKzE3MSw3IEBAIHZvaWQgVGV4dENoZWNrZXI6OnVwZGF0ZVNw
ZWxsaW5nVUlXaXRoR3IKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIFRleHRDaGVj
a2VyOjpnZXRHdWVzc2VzRm9yV29yZChpbnQ2NF90LCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJp
bmcmLCBpbnQzMl90LCBWZWN0b3I8U3RyaW5nPiYpCit2b2lkIFRleHRDaGVja2VyOjpnZXRHdWVz
c2VzRm9yV29yZChpbnQ2NF90LCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBpbnQzMl90
LCBWZWN0b3I8U3RyaW5nPiYsIGJvb2wpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVGV4dENoZWNrZXJNYWMubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9UZXh0Q2hlY2tlck1hYy5tbQko
cmV2aXNpb24gMjAyMTEzKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9UZXh0Q2hl
Y2tlck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtNDcsNiArNDcsMTMgQEAgc3RhdGljIE5TU3Ry
aW5nKiBjb25zdCBXZWJBdXRvbWF0aWNEYXNoUwogc3RhdGljIE5TU3RyaW5nKiBjb25zdCBXZWJB
dXRvbWF0aWNMaW5rRGV0ZWN0aW9uRW5hYmxlZCA9IEAiV2ViQXV0b21hdGljTGlua0RldGVjdGlv
bkVuYWJsZWQiOwogc3RhdGljIE5TU3RyaW5nKiBjb25zdCBXZWJBdXRvbWF0aWNUZXh0UmVwbGFj
ZW1lbnRFbmFibGVkID0gQCJXZWJBdXRvbWF0aWNUZXh0UmVwbGFjZW1lbnRFbmFibGVkIjsKIAor
I2lmIEhBVkUoQURWQU5DRURfU1BFTExfQ0hFQ0tJTkcpCisvLyBGSVhNRTogdGhpcyBuZWVkcyB0
byBiZSByZW1vdmVkIGFuZCBOU1RleHRDaGVja2luZ1N1cHByZXNzSW5pdGlhbENhcGl0YWxpemF0
aW9uS2V5IGFzIHNvb24gYXMKKy8vIHJkYXI6Ly9wcm9ibGVtLzI2ODAwOTI0IGlzIGZpeGVkLgor
CitzdGF0aWMgTlNTdHJpbmcqIGNvbnN0IFdlYlRleHRDaGVja2luZ1N1cHByZXNzSW5pdGlhbENh
cGl0YWxpemF0aW9uS2V5ID0gQCJTdXBwcmVzc0luaXRpYWxDYXBpdGFsaXphdGlvbiI7CisjZW5k
aWYKKwogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAt
MjkxLDE0ICsyOTgsMTcgQEAgdm9pZCBUZXh0Q2hlY2tlcjo6Y2xvc2VTcGVsbERvY3VtZW50V2l0
aAogCiAjaWYgVVNFKFVOSUZJRURfVEVYVF9DSEVDS0lORykKIAotVmVjdG9yPFRleHRDaGVja2lu
Z1Jlc3VsdD4gVGV4dENoZWNrZXI6OmNoZWNrVGV4dE9mUGFyYWdyYXBoKGludDY0X3Qgc3BlbGxE
b2N1bWVudFRhZywgU3RyaW5nVmlldyB0ZXh0LCBpbnQzMl90IGluc2VydGlvblBvaW50LCB1aW50
NjRfdCBjaGVja2luZ1R5cGVzKQorVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4gVGV4dENoZWNr
ZXI6OmNoZWNrVGV4dE9mUGFyYWdyYXBoKGludDY0X3Qgc3BlbGxEb2N1bWVudFRhZywgU3RyaW5n
VmlldyB0ZXh0LCBpbnQzMl90IGluc2VydGlvblBvaW50LCB1aW50NjRfdCBjaGVja2luZ1R5cGVz
LCBib29sIGluaXRpYWxDYXBpdGFsaXphdGlvbkVuYWJsZWQpCiB7CiAgICAgVmVjdG9yPFRleHRD
aGVja2luZ1Jlc3VsdD4gcmVzdWx0czsKIAogICAgIFJldGFpblB0cjxOU1N0cmluZz4gdGV4dFN0
cmluZyA9IHRleHQuY3JlYXRlTlNTdHJpbmdXaXRob3V0Q29weWluZygpOwogICAgIE5TRGljdGlv
bmFyeSAqb3B0aW9ucyA9IG5pbDsKICNpZiBIQVZFKEFEVkFOQ0VEX1NQRUxMX0NIRUNLSU5HKQot
ICAgIG9wdGlvbnMgPSBAeyBOU1RleHRDaGVja2luZ0luc2VydGlvblBvaW50S2V5IDogIFtOU051
bWJlciBudW1iZXJXaXRoVW5zaWduZWRJbnRlZ2VyOmluc2VydGlvblBvaW50XSB9OworICAgIG9w
dGlvbnMgPSBAeyBOU1RleHRDaGVja2luZ0luc2VydGlvblBvaW50S2V5IDogIFtOU051bWJlciBu
dW1iZXJXaXRoVW5zaWduZWRJbnRlZ2VyOmluc2VydGlvblBvaW50XSwKKyAgICAgICAgICAgICAg
ICAgV2ViVGV4dENoZWNraW5nU3VwcHJlc3NJbml0aWFsQ2FwaXRhbGl6YXRpb25LZXkgOiBbTlNO
dW1iZXIgbnVtYmVyV2l0aEJvb2w6IWluaXRpYWxDYXBpdGFsaXphdGlvbkVuYWJsZWRdIH07Cisj
ZWxzZQorICAgIFVOVVNFRF9QQVJBTShpbml0aWFsQ2FwaXRhbGl6YXRpb25FbmFibGVkKTsKICNl
bmRpZgogICAgIE5TQXJyYXkgKmluY29taW5nUmVzdWx0cyA9IFtbTlNTcGVsbENoZWNrZXIgc2hh
cmVkU3BlbGxDaGVja2VyXSBjaGVja1N0cmluZzp0ZXh0U3RyaW5nLmdldCgpCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJhbmdlOk5TTWFrZVJhbmdlKDAsIHRleHQubGVuZ3RoKCkpCkBAIC00MzAsMTQgKzQ0
MCwxNSBAQCB2b2lkIFRleHRDaGVja2VyOjp1cGRhdGVTcGVsbGluZ1VJV2l0aEdyCiAgICAgW1tO
U1NwZWxsQ2hlY2tlciBzaGFyZWRTcGVsbENoZWNrZXJdIHVwZGF0ZVNwZWxsaW5nUGFuZWxXaXRo
R3JhbW1hclN0cmluZzpiYWRHcmFtbWFyUGhyYXNlIGRldGFpbDpncmFtbWFyRGV0YWlsRGljdC5n
ZXQoKV07CiB9CiAKLXZvaWQgVGV4dENoZWNrZXI6OmdldEd1ZXNzZXNGb3JXb3JkKGludDY0X3Qg
c3BlbGxEb2N1bWVudFRhZywgY29uc3QgU3RyaW5nJiB3b3JkLCBjb25zdCBTdHJpbmcmIGNvbnRl
eHQsIGludDMyX3QgaW5zZXJ0aW9uUG9pbnQsIFZlY3RvcjxTdHJpbmc+JiBndWVzc2VzKQordm9p
ZCBUZXh0Q2hlY2tlcjo6Z2V0R3Vlc3Nlc0ZvcldvcmQoaW50NjRfdCBzcGVsbERvY3VtZW50VGFn
LCBjb25zdCBTdHJpbmcmIHdvcmQsIGNvbnN0IFN0cmluZyYgY29udGV4dCwgaW50MzJfdCBpbnNl
cnRpb25Qb2ludCwgVmVjdG9yPFN0cmluZz4mIGd1ZXNzZXMsIGJvb2wgaW5pdGlhbENhcGl0YWxp
emF0aW9uRW5hYmxlZCkKIHsKICAgICBOU1N0cmluZyogbGFuZ3VhZ2UgPSBuaWw7CiAgICAgTlNP
cnRob2dyYXBoeSogb3J0aG9ncmFwaHkgPSBuaWw7CiAgICAgTlNTcGVsbENoZWNrZXIgKmNoZWNr
ZXIgPSBbTlNTcGVsbENoZWNrZXIgc2hhcmVkU3BlbGxDaGVja2VyXTsKICAgICBOU0RpY3Rpb25h
cnkgKm9wdGlvbnMgPSBuaWw7CiAjaWYgSEFWRShBRFZBTkNFRF9TUEVMTF9DSEVDS0lORykKLSAg
ICBvcHRpb25zID0gQHsgTlNUZXh0Q2hlY2tpbmdJbnNlcnRpb25Qb2ludEtleSA6ICBbTlNOdW1i
ZXIgbnVtYmVyV2l0aFVuc2lnbmVkSW50ZWdlcjppbnNlcnRpb25Qb2ludF0gfTsKKyAgICBvcHRp
b25zID0gQHsgTlNUZXh0Q2hlY2tpbmdJbnNlcnRpb25Qb2ludEtleSA6ICBbTlNOdW1iZXIgbnVt
YmVyV2l0aFVuc2lnbmVkSW50ZWdlcjppbnNlcnRpb25Qb2ludF0sCisgICAgICAgICAgICAgICAg
IFdlYlRleHRDaGVja2luZ1N1cHByZXNzSW5pdGlhbENhcGl0YWxpemF0aW9uS2V5IDogW05TTnVt
YmVyIG51bWJlcldpdGhCb29sOiFpbml0aWFsQ2FwaXRhbGl6YXRpb25FbmFibGVkXSB9OwogI2Vu
ZGlmCiAgICAgaWYgKGNvbnRleHQubGVuZ3RoKCkpIHsKICAgICAgICAgW2NoZWNrZXIgY2hlY2tT
dHJpbmc6Y29udGV4dCByYW5nZTpOU01ha2VSYW5nZSgwLCBjb250ZXh0Lmxlbmd0aCgpKSB0eXBl
czpOU1RleHRDaGVja2luZ1R5cGVPcnRob2dyYXBoeSBvcHRpb25zOm9wdGlvbnMgaW5TcGVsbERv
Y3VtZW50V2l0aFRhZzpzcGVsbERvY3VtZW50VGFnIG9ydGhvZ3JhcGh5OiZvcnRob2dyYXBoeSB3
b3JkQ291bnQ6MF07Cg==
</data>
<flag name="review"
          id="305352"
          type_id="1"
          status="+"
          setter="thorton"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>284551</attachid>
            <date>2016-07-25 17:11:05 -0700</date>
            <delta_ts>2016-07-25 17:13:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>autocapitalize-disable.txt</filename>
            <type>text/plain</type>
            <size>2873</size>
            <attacher name="Enrica Casucci">enrica</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwMzcwMSkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDE2LTA3LTI1ICBFbnJpY2Eg
Q2FzdWNjaSAgPGVucmljYUBhcHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9ydCBjb25maWd1cmFi
bGUgYXV0b2NhcGl0YWxpemF0aW9uLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTU4ODYwCisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzI3NTM2MTEzCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQXV0b2NhcGl0
YWxpemF0aW9uIHNob3VsZCBiZSBlbmFibGVkL2Rpc2FibGVkIHJlZ2FyZGxlc3Mgb2Ygd2hldGhl
cgorICAgICAgICB3ZSBhcmUgdXNpbmcgYWR2YW5jZSBzcGVsbGluZyBmZWF0dXJlLgorCisgICAg
ICAgICogVUlQcm9jZXNzL21hYy9UZXh0Q2hlY2tlck1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6
VGV4dENoZWNrZXI6OmNoZWNrVGV4dE9mUGFyYWdyYXBoKToKKyAgICAgICAgKFdlYktpdDo6VGV4
dENoZWNrZXI6OmdldEd1ZXNzZXNGb3JXb3JkKToKKwogMjAxNi0wNy0yNSAgU2FtIFdlaW5pZyAg
PHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIEZpeCBhc3NlcnRpb24uCkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1RleHRDaGVja2VyTWFjLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVGV4dENoZWNrZXJNYWMubW0JKHJldmlzaW9uIDIw
MzY5NCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVGV4dENoZWNrZXJNYWMubW0J
KHdvcmtpbmcgY29weSkKQEAgLTQ3LDEyICs0NywxMCBAQCBzdGF0aWMgTlNTdHJpbmcqIGNvbnN0
IFdlYkF1dG9tYXRpY0Rhc2hTCiBzdGF0aWMgTlNTdHJpbmcqIGNvbnN0IFdlYkF1dG9tYXRpY0xp
bmtEZXRlY3Rpb25FbmFibGVkID0gQCJXZWJBdXRvbWF0aWNMaW5rRGV0ZWN0aW9uRW5hYmxlZCI7
CiBzdGF0aWMgTlNTdHJpbmcqIGNvbnN0IFdlYkF1dG9tYXRpY1RleHRSZXBsYWNlbWVudEVuYWJs
ZWQgPSBAIldlYkF1dG9tYXRpY1RleHRSZXBsYWNlbWVudEVuYWJsZWQiOwogCi0jaWYgSEFWRShB
RFZBTkNFRF9TUEVMTF9DSEVDS0lORykKIC8vIEZJWE1FOiB0aGlzIG5lZWRzIHRvIGJlIHJlbW92
ZWQgYW5kIHJlcGxhY2VkIHdpdGggTlNUZXh0Q2hlY2tpbmdTdXBwcmVzc0luaXRpYWxDYXBpdGFs
aXphdGlvbktleSBhcyBzb29uIGFzCiAvLyByZGFyOi8vcHJvYmxlbS8yNjgwMDkyNCBpcyBmaXhl
ZC4KIAogc3RhdGljIE5TU3RyaW5nKiBjb25zdCBXZWJUZXh0Q2hlY2tpbmdTdXBwcmVzc0luaXRp
YWxDYXBpdGFsaXphdGlvbktleSA9IEAiU3VwcHJlc3NJbml0aWFsQ2FwaXRhbGl6YXRpb24iOwot
I2VuZGlmCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC0zMDgsNyArMzA2LDcgQEAg
VmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4gVGV4dENoZWNrZXI6OgogICAgIG9wdGlvbnMgPSBA
eyBOU1RleHRDaGVja2luZ0luc2VydGlvblBvaW50S2V5IDogQChpbnNlcnRpb25Qb2ludCksCiAg
ICAgICAgICAgICAgICAgIFdlYlRleHRDaGVja2luZ1N1cHByZXNzSW5pdGlhbENhcGl0YWxpemF0
aW9uS2V5IDogQCghaW5pdGlhbENhcGl0YWxpemF0aW9uRW5hYmxlZCkgfTsKICNlbHNlCi0gICAg
VU5VU0VEX1BBUkFNKGluaXRpYWxDYXBpdGFsaXphdGlvbkVuYWJsZWQpOworICAgIG9wdGlvbnMg
PSBAeyBXZWJUZXh0Q2hlY2tpbmdTdXBwcmVzc0luaXRpYWxDYXBpdGFsaXphdGlvbktleSA6IEAo
IWluaXRpYWxDYXBpdGFsaXphdGlvbkVuYWJsZWQpIH07CiAjZW5kaWYKICAgICBOU0FycmF5ICpp
bmNvbWluZ1Jlc3VsdHMgPSBbW05TU3BlbGxDaGVja2VyIHNoYXJlZFNwZWxsQ2hlY2tlcl0gY2hl
Y2tTdHJpbmc6dGV4dFN0cmluZy5nZXQoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYW5nZTpOU01ha2VS
YW5nZSgwLCB0ZXh0Lmxlbmd0aCgpKQpAQCAtNDQ5LDYgKzQ0Nyw4IEBAIHZvaWQgVGV4dENoZWNr
ZXI6OmdldEd1ZXNzZXNGb3JXb3JkKGludDYKICNpZiBIQVZFKEFEVkFOQ0VEX1NQRUxMX0NIRUNL
SU5HKQogICAgIG9wdGlvbnMgPSBAeyBOU1RleHRDaGVja2luZ0luc2VydGlvblBvaW50S2V5IDog
QChpbnNlcnRpb25Qb2ludCksCiAgICAgICAgICAgICAgICAgIFdlYlRleHRDaGVja2luZ1N1cHBy
ZXNzSW5pdGlhbENhcGl0YWxpemF0aW9uS2V5IDogQCghaW5pdGlhbENhcGl0YWxpemF0aW9uRW5h
YmxlZCkgfTsKKyNlbHNlCisgICAgb3B0aW9ucyA9IEB7IFdlYlRleHRDaGVja2luZ1N1cHByZXNz
SW5pdGlhbENhcGl0YWxpemF0aW9uS2V5IDogQCghaW5pdGlhbENhcGl0YWxpemF0aW9uRW5hYmxl
ZCkgfTsKICNlbmRpZgogICAgIGlmIChjb250ZXh0Lmxlbmd0aCgpKSB7CiAgICAgICAgIFtjaGVj
a2VyIGNoZWNrU3RyaW5nOmNvbnRleHQgcmFuZ2U6TlNNYWtlUmFuZ2UoMCwgY29udGV4dC5sZW5n
dGgoKSkgdHlwZXM6TlNUZXh0Q2hlY2tpbmdUeXBlT3J0aG9ncmFwaHkgb3B0aW9uczpvcHRpb25z
IGluU3BlbGxEb2N1bWVudFdpdGhUYWc6c3BlbGxEb2N1bWVudFRhZyBvcnRob2dyYXBoeTomb3J0
aG9ncmFwaHkgd29yZENvdW50OjBdOwo=
</data>
<flag name="review"
          id="308182"
          type_id="1"
          status="+"
          setter="thorton"
    />
          </attachment>
      

    </bug>

</bugzilla>