<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=utf-8"><meta name=Generator content="Microsoft Word 15 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:Wingdings;
        panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
        {mso-style-priority:34;
        margin-top:0in;
        margin-right:0in;
        margin-bottom:0in;
        margin-left:.5in;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
p.m-3368528117033926924msoplaintext, li.m-3368528117033926924msoplaintext, div.m-3368528117033926924msoplaintext
        {mso-style-name:m_-3368528117033926924msoplaintext;
        mso-margin-top-alt:auto;
        margin-right:0in;
        mso-margin-bottom-alt:auto;
        margin-left:0in;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
.MsoChpDefault
        {mso-style-type:export-only;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
/* List Definitions */
@list l0
        {mso-list-id:31618576;
        mso-list-template-ids:-1;}
@list l0:level1
        {mso-level-start-at:3;
        mso-level-number-format:alpha-lower;
        mso-level-tab-stop:.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level2
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:1.0in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level3
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:1.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level4
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:2.0in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level5
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:2.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level6
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:3.0in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level7
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:3.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level8
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:4.0in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level9
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:4.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l1
        {mso-list-id:97217916;
        mso-list-template-ids:-1;}
@list l1:level1
        {mso-level-start-at:2;
        mso-level-number-format:alpha-lower;
        mso-level-tab-stop:.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l1:level2
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:1.0in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l1:level3
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:1.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l1:level4
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:2.0in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l1:level5
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:2.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l1:level6
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:3.0in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l1:level7
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:3.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l1:level8
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:4.0in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l1:level9
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:4.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l2
        {mso-list-id:415052610;
        mso-list-template-ids:-1;}
@list l2:level1
        {mso-level-start-at:4;
        mso-level-number-format:alpha-lower;
        mso-level-tab-stop:.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l2:level2
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:1.0in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l2:level3
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:1.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l2:level4
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:2.0in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l2:level5
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:2.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l2:level6
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:3.0in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l2:level7
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:3.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l2:level8
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:4.0in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l2:level9
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:4.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l3
        {mso-list-id:614943368;
        mso-list-template-ids:-1;}
@list l3:level1
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l3:level2
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:1.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l3:level3
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:1.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l3:level4
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:2.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l3:level5
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:2.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l3:level6
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:3.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l3:level7
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:3.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l3:level8
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:4.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l3:level9
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:4.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l4
        {mso-list-id:675227065;
        mso-list-template-ids:-1;}
@list l4:level1
        {mso-level-start-at:7;
        mso-level-number-format:alpha-lower;
        mso-level-tab-stop:.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l4:level2
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:1.0in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l4:level3
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:1.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l4:level4
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:2.0in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l4:level5
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:2.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l4:level6
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:3.0in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l4:level7
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:3.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l4:level8
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:4.0in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l4:level9
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:4.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l5
        {mso-list-id:707148832;
        mso-list-template-ids:-1;}
@list l5:level1
        {mso-level-start-at:9;
        mso-level-number-format:alpha-lower;
        mso-level-tab-stop:.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l5:level2
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:1.0in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l5:level3
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:1.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l5:level4
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:2.0in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l5:level5
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:2.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l5:level6
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:3.0in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l5:level7
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:3.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l5:level8
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:4.0in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l5:level9
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:4.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l6
        {mso-list-id:934825432;
        mso-list-template-ids:-1;}
@list l6:level1
        {mso-level-start-at:3;
        mso-level-tab-stop:.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l7
        {mso-list-id:963383976;
        mso-list-template-ids:-1;}
@list l7:level1
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l7:level2
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:1.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l7:level3
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:1.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l7:level4
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:2.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l7:level5
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:2.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l7:level6
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:3.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l7:level7
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:3.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l7:level8
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:4.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l7:level9
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:4.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l8
        {mso-list-id:983968224;
        mso-list-template-ids:-1;}
@list l8:level1
        {mso-level-start-at:5;
        mso-level-number-format:alpha-lower;
        mso-level-tab-stop:.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l8:level2
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:1.0in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l8:level3
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:1.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l8:level4
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:2.0in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l8:level5
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:2.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l8:level6
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:3.0in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l8:level7
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:3.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l8:level8
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:4.0in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l8:level9
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:4.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l9
        {mso-list-id:1142962917;
        mso-list-template-ids:-1;}
@list l9:level1
        {mso-level-start-at:6;
        mso-level-number-format:alpha-lower;
        mso-level-tab-stop:.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l9:level2
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:1.0in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l9:level3
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:1.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l9:level4
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:2.0in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l9:level5
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:2.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l9:level6
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:3.0in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l9:level7
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:3.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l9:level8
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:4.0in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l9:level9
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:4.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l10
        {mso-list-id:1157038584;
        mso-list-template-ids:-1;}
@list l11
        {mso-list-id:1219433434;
        mso-list-template-ids:-1;}
@list l11:level1
        {mso-level-start-at:2;
        mso-level-tab-stop:.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l12
        {mso-list-id:1522285098;
        mso-list-template-ids:-1;}
@list l12:level1
        {mso-level-start-at:8;
        mso-level-number-format:alpha-lower;
        mso-level-tab-stop:.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l12:level2
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:1.0in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l12:level3
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:1.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l12:level4
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:2.0in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l12:level5
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:2.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l12:level6
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:3.0in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l12:level7
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:3.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l12:level8
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:4.0in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l12:level9
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:4.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l13
        {mso-list-id:1604915147;
        mso-list-template-ids:-1;}
@list l13:level1
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l13:level2
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:1.0in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l13:level3
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:1.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l13:level4
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:2.0in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l13:level5
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:2.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l13:level6
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:3.0in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l13:level7
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:3.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l13:level8
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:4.0in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l13:level9
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:4.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l14
        {mso-list-id:1797681448;
        mso-list-type:hybrid;
        mso-list-template-ids:-1442273050 -1 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
@list l14:level1
        {mso-level-start-at:0;
        mso-level-number-format:bullet;
        mso-level-text:\F0D8;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Wingdings;
        mso-fareast-font-family:"Times New Roman";
        mso-bidi-font-family:"Times New Roman";}
@list l14:level2
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:"Courier New";}
@list l14:level3
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Wingdings;}
@list l14:level4
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Symbol;}
@list l14:level5
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:"Courier New";}
@list l14:level6
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Wingdings;}
@list l14:level7
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Symbol;}
@list l14:level8
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:"Courier New";}
@list l14:level9
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Wingdings;}
ol
        {margin-bottom:0in;}
ul
        {margin-bottom:0in;}
--></style></head><body lang=EN-US link=blue vlink="#954F72" style='word-wrap:break-word'><div class=WordSection1><ul style='margin-top:0in' type=disc><li class=MsoListParagraph style='margin-left:0in;mso-list:l14 level1 lfo15'>While I tried to find an issue with the VRML grammar, and i had several misperceptions, and on review, i didn’t find any problems that just “popped out.”  </li></ul><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>John, Good, that is Good, that is Very Good.  <o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><ul style='margin-top:0in' type=disc><li class=MsoListParagraph style='margin-left:0in;mso-list:l14 level1 lfo15'>Your thoughts?  I know everyone (besides me) is busy.<o:p></o:p></li></ul><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>I just need a simple thing to change V1 names to v2 names, get some dimensions  and complete the Part 1 Annex A LOA4. <o:p></o:p></p><p class=MsoNormal>Joe<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p><div style='mso-element:para-border-div;border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in'><p class=MsoNormal style='border:none;padding:0in'><b>From: </b><a href="mailto:yottzumm@gmail.com">John Carlson</a><br><b>Sent: </b>Thursday, January 5, 2023 3:45 PM<br><b>To: </b><a href="mailto:brutzman@nps.edu">Brutzman, Donald (Don) (CIV)</a><br><b>Cc: </b><a href="mailto:joedwil@earthlink.net">Joseph D Williams</a>; <a href="mailto:michalis.kambi@gmail.com">Michalis Kamburelis</a>; <a href="mailto:pdaehne@gmail.com">Patrick Dähne</a>; <a href="mailto:x3d-public@web3d.org">X3D Public Mailing List (x3d-public@web3d.org)</a><br><b>Subject: </b>VRML grammar generator. Was: Re: [x3d-public] [...] HAnim2 X3D4BoxMan update: does ClassicVRML Grammar allows ROUTE in children?</p></div><p class=MsoNormal><o:p> </o:p></p><div><p class=MsoNormal>While I tried to find an issue with the VRML grammar, and i had several misperceptions, and on review, i didn’t find any problems that just “popped out.”   Perhaps my dry eyes have worsened.</p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>Perhaps we should provide generation of VRML grammar from X3DUOM, if not done already?  We can have thousands of checks of examples against VRML grammar, as you have said.   I have not kept track of VRML “stuff.”</p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>Your thoughts?  I know everyone (besides me) is busy.</p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>I can even try to accomplish myself with existing grammar and X3DUOM.   I can try with writing Xslt first, and if that’s too burdensome, possibly start from the JSON schema generator and branch out.</p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>Trying to make this as easy for someone to do as possible, can we make the right implementation choice?   What limitations?  Declarative implementations seem important.</p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>I agree that supporting one-offs in X3D Validator is useful and we probably don’t want to support batch web-based validation at this time.</p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>I have also researched “schema from example” and “grammar from example.”   It might be worth applying new AI research to this problem with the right prompt.</p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>Maybe i should apply AI to the JSON schema.  Hmm!</p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>John </p></div><div><p class=MsoNormal><o:p> </o:p></p><div><div><p class=MsoNormal>On Thu, Jan 5, 2023 at 11:01 AM Brutzman, Donald (Don) (CIV) <<a href="mailto:brutzman@nps.edu">brutzman@nps.edu</a>> wrote:</p></div><blockquote style='border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in'><div><div><p class=m-3368528117033926924msoplaintext>Patrick, thanks for these important insights.</p><p class=m-3368528117033926924msoplaintext> </p><p class=m-3368528117033926924msoplaintext>Am looking closely and tracing the grammar.  As you know, such grammars are very important because they formally and unambiguously describe what is allowed.  Also pretty tricky to follow!</p><p class=m-3368528117033926924msoplaintext> </p><ul type=disc><li class=m-3368528117033926924msoplaintext style='mso-list:l7 level1 lfo1'>Extensible 3D (X3D) encodings, Part 2: Classic VRML encoding Annex A (normative), Grammar</li><li class=m-3368528117033926924msoplaintext style='mso-list:l7 level1 lfo1'><a href="https://www.web3d.org/documents/specifications/19776-2/V3.3/Part02/grammar.html" target="_blank">https://www.web3d.org/documents/specifications/19776-2/V3.3/Part02/grammar.html</a></li></ul><p class=m-3368528117033926924msoplaintext> </p><p class=m-3368528117033926924msoplaintext>Am finding following excerpts of interest.  Hopefully addition of color-coding helps:</p><p class=m-3368528117033926924msoplaintext style='margin-left:.5in'> </p><ol start=1 type=a><li class=m-3368528117033926924msoplaintext style='mso-list:l13 level1 lfo2'><b><span style='color:#548235'>node </span></b>::=</li></ol><p class=m-3368528117033926924msoplaintext style='margin-left:.5in'>  nodeTypeId { <b><span style='color:#C55A11'>nodeBody</span></b><span style='color:#C55A11'> </span>} |</p><p class=m-3368528117033926924msoplaintext style='margin-left:.5in'>  Script { scriptBody } |</p><p class=m-3368528117033926924msoplaintext style='margin-left:.5in'>  ComposedShader {composedShaderBody} |</p><p class=m-3368528117033926924msoplaintext style='margin-left:.5in'>  PackagedShader {packagedShaderBody} |</p><p class=m-3368528117033926924msoplaintext style='margin-left:.5in'>  ShaderProgram {shaderProgramBody} ;</p><ol start=2 type=a><li class=m-3368528117033926924msoplaintext style='mso-list:l1 level1 lfo3'><b><span style='color:#C55A11'>nodeBody </span></b>::=</li></ol><p class=m-3368528117033926924msoplaintext style='margin-left:.5in'>  <b><span style='color:red'>nodeBodyElement</span></b> |</p><p class=m-3368528117033926924msoplaintext style='margin-left:.5in'>  <b><span style='color:red'>nodeBodyElement</span></b> <b><span style='color:#C55A11'>nodeBody</span></b><span style='color:#C55A11'> </span>|</p><p class=m-3368528117033926924msoplaintext style='margin-left:.5in'>  empty ;</p><p class=m-3368528117033926924msoplaintext style='margin-left:.5in'> </p><ol start=3 type=a><li class=m-3368528117033926924msoplaintext style='mso-list:l0 level1 lfo4'><span style='color:black;background:aqua'>mfnodeValue</span> ::=</li></ol><p class=m-3368528117033926924msoplaintext style='margin-left:.5in'>   <b><span style='color:#FF33CC'>nodeStatement </span></b>|</p><p class=m-3368528117033926924msoplaintext style='margin-left:.5in'>   [ ] |</p><p class=m-3368528117033926924msoplaintext style='margin-left:.5in'>   [ <span style='color:black;background:fuchsia'>nodeStatements</span> ] ;</p><p class=m-3368528117033926924msoplaintext> </p><ol start=4 type=a><li class=m-3368528117033926924msoplaintext style='mso-list:l2 level1 lfo5'><span style='color:black;background:fuchsia'>nodeStatements</span> ::=</li></ol><p class=m-3368528117033926924msoplaintext style='margin-left:.5in'>  <b><span style='color:#FF33CC'>nodeStatement</span></b> |</p><p class=m-3368528117033926924msoplaintext style='margin-left:.5in'>  <b><span style='color:#FF33CC'>nodeStatement</span></b> <span style='color:black;background:fuchsia'>nodeStatements</span> ;</p><p class=m-3368528117033926924msoplaintext> </p><ol start=5 type=a><li class=m-3368528117033926924msoplaintext style='mso-list:l8 level1 lfo6'><b><span style='color:#FF33CC'>nodeStatement</span></b>::=</li></ol><p class=m-3368528117033926924msoplaintext style='margin-left:.5in'>  <b><span style='color:#548235'>node</span></b><span style='color:#548235'> </span>|</p><p class=m-3368528117033926924msoplaintext style='margin-left:.5in'>  DEF nodeNameId <b><span style='color:#548235'>node</span></b><span style='color:#548235'> </span>|</p><p class=m-3368528117033926924msoplaintext style='margin-left:.5in'>  USE nodeNameId ;</p><p class=m-3368528117033926924msoplaintext> </p><ol start=6 type=a><li class=m-3368528117033926924msoplaintext style='mso-list:l9 level1 lfo7'><b><span style='color:red'>nodeBodyElement </span></b>::=</li></ol><p class=m-3368528117033926924msoplaintext style='margin-left:.5in'>  initializeOnlyId fieldValue |</p><p class=m-3368528117033926924msoplaintext style='margin-left:.5in'>  inputOutputId fieldValue |</p><p class=m-3368528117033926924msoplaintext style='margin-left:.5in'>  initializeOnlyId IS initializeOnlyId |</p><p class=m-3368528117033926924msoplaintext style='margin-left:.5in'>  inputOnlyId IS inputOnlyId |</p><p class=m-3368528117033926924msoplaintext style='margin-left:.5in'>  outputOnlyId IS outputOnlyId |</p><p class=m-3368528117033926924msoplaintext style='margin-left:.5in'>  inputOutputId IS inputOutputId |</p><p class=m-3368528117033926924msoplaintext style='margin-left:.5in'>  <span style='color:black;background:yellow'>routeStatement</span> |</p><p class=m-3368528117033926924msoplaintext style='margin-left:.5in'>  protoStatement ;</p><p class=m-3368528117033926924msoplaintext> </p><ol start=7 type=a><li class=m-3368528117033926924msoplaintext style='mso-list:l4 level1 lfo8'><span style='color:black;background:yellow'>routeStatement</span> ::=</li></ol><p class=m-3368528117033926924msoplaintext style='margin-left:.5in'>  <b>ROUTE</b> nodeNameId . outputOnlyId TO nodeNameId . inputOnlyId ;</p><p class=m-3368528117033926924msoplaintext> </p><ol start=8 type=a><li class=m-3368528117033926924msoplaintext style='mso-list:l12 level1 lfo9'><i>statement</i> ::=</li></ol><p class=m-3368528117033926924msoplaintext style='margin-left:.5in'>  <b><span style='color:#FF33CC'>nodeStatement</span></b> |</p><p class=m-3368528117033926924msoplaintext style='margin-left:.5in'>  importStatement |</p><p class=m-3368528117033926924msoplaintext style='margin-left:.5in'>  exportStatement |</p><p class=m-3368528117033926924msoplaintext style='margin-left:.5in'>  protoStatement |</p><p class=m-3368528117033926924msoplaintext style='margin-left:.5in'>  <span style='color:black;background:yellow'>routeStatement</span> ;</p><p class=m-3368528117033926924msoplaintext> </p><ol start=9 type=a><li class=m-3368528117033926924msoplaintext style='mso-list:l5 level1 lfo10'>sfnodeValue ::=</li></ol><p class=m-3368528117033926924msoplaintext style='margin-left:.5in'>  <b><span style='color:#FF33CC'>nodeStatement </span></b>|</p><p class=m-3368528117033926924msoplaintext style='margin-left:.5in'>  NULL ;</p><p class=m-3368528117033926924msoplaintext style='margin-left:.5in'> </p><p class=m-3368528117033926924msoplaintext> </p><p class=m-3368528117033926924msoplaintext>So it looks like there are several chains of interest as follows:</p><p class=m-3368528117033926924msoplaintext> </p><ol start=1 type=1><li class=m-3368528117033926924msoplaintext style='mso-list:l10 level1 lfo11'><span style='color:black;background:aqua'>mfnodeValue</span> > <span style='color:black;background:fuchsia'>nodeStatements</span> > <b><span style='color:#FF33CC'>nodeStatement</span></b> > <b><span style='color:#548235'>node </span></b>> nodeTypeId {<b><span style='color:#C55A11'> nodeBody</span></b><span style='color:#C55A11'> </span>} > <b><span style='color:red'>nodeBodyElement</span></b> > <span style='color:black;background:yellow'>routeStatement</span> > <b>ROUTE</b></li></ol><p class=m-3368528117033926924msoplaintext style='margin-left:.5in'> </p><ol start=2 type=1><li class=m-3368528117033926924msoplaintext style='mso-list:l11 level1 lfo12'>sfnodeValue > <b><span style='color:#FF33CC'>nodeStatement </span>> </b>(etc. as shown immediately above in chain 1)</li></ol><p class=m-3368528117033926924msoplaintext style='margin-left:.25in'> </p><ol start=3 type=1><li class=m-3368528117033926924msoplaintext style='mso-list:l6 level1 lfo13'><i>statement</i> > <span style='color:black;background:yellow'>routeStatement</span> > <b>ROUTE</b></li></ol><p class=m-3368528117033926924msoplaintext> </p><p class=m-3368528117033926924msoplaintext>From these three chains in ClassicVRML grammar, it appears logical to conclude that <b>ROUTE</b> is allowed to appear wherever an MFNode, SFNode or statement is allowed to appear.</p><p class=m-3368528117033926924msoplaintext> </p><p class=m-3368528117033926924msoplaintext>That would be a consistent match with the parent-child relationships defined in X3D XML Schema and DTD.</p><p class=m-3368528117033926924msoplaintext> </p><p class=m-3368528117033926924msoplaintext>Hopefully I have the chain of logic correct here.  All scrutiny and review is welcome, we definitely need to get this right.</p><p class=m-3368528117033926924msoplaintext> </p><p class=m-3368528117033926924msoplaintext>If there is any unintended omission in the Backus-Naur logic here, then great!  We can agree now on corrections, and fix any issues in this year’s expected update of the ClassicVRML encoding from X3D3 to X3D4.  Correction of converters can also proceed immediately upon achieving consensus.</p><p class=m-3368528117033926924msoplaintext> </p><ul type=disc><li class=m-3368528117033926924msoplaintext style='mso-list:l3 level1 lfo14'>Wikipedia:  Backus-Naur form</li><li class=m-3368528117033926924msoplaintext style='mso-list:l3 level1 lfo14'><a href="https://en.wikipedia.org/wiki/Backus-Naur_form" target="_blank">https://en.wikipedia.org/wiki/Backus-Naur_form</a></li></ul><p class=m-3368528117033926924msoplaintext> </p><p class=m-3368528117033926924msoplaintext>Again thanks for careful strictness, careful checking of model content is one of our greatest strengths.</p><p class=m-3368528117033926924msoplaintext> </p><p class=m-3368528117033926924msoplaintext>Have fun with ClassicVRML X3D!  8)</p><p class=m-3368528117033926924msoplaintext> </p><p class=m-3368528117033926924msoplaintext>all the best, Don</p><p class=m-3368528117033926924msoplaintext>-- </p><p class=m-3368528117033926924msoplaintext>Don Brutzman  Naval Postgraduate School, Code USW/Br        <a href="mailto:brutzman@nps.edu" target="_blank">brutzman@nps.edu</a></p><p class=m-3368528117033926924msoplaintext>Watkins 270,  MOVES Institute, Monterey CA 93943-5000 USA    +1.831.656.2149</p><p class=m-3368528117033926924msoplaintext>X3D graphics, virtual worlds, Navy robotics https:// <a href="http://faculty.nps.edu/brutzman" target="_blank">faculty.nps.edu/brutzman</a></p><p class=m-3368528117033926924msoplaintext> </p><p class=m-3368528117033926924msoplaintext>-----Original Message-----<br>From: x3d-public <<a href="mailto:x3d-public-bounces@web3d.org" target="_blank">x3d-public-bounces@web3d.org</a>> On Behalf Of Patrick Dähne<br>Sent: Thursday, January 5, 2023 3:05 AM<br>To: Joseph D Williams <<a href="mailto:joedwil@earthlink.net" target="_blank">joedwil@earthlink.net</a>><br>Cc: X3D Public Mailing List (<a href="mailto:x3d-public@web3d.org" target="_blank">x3d-public@web3d.org</a>) <<a href="mailto:x3d-public@web3d.org" target="_blank">x3d-public@web3d.org</a>><br>Subject: Re: [x3d-public] [...] HAnim2 X3D4 BoxMan update</p><p class=m-3368528117033926924msoplaintext> </p><p class=m-3368528117033926924msoplaintext> </p><p class=m-3368528117033926924msoplaintext>> Am 05.01.2023 um 03:33 schrieb Joseph D Williams <<a href="mailto:joedwil@earthlink.net" target="_blank">joedwil@earthlink.net</a>>:</p><p class=m-3368528117033926924msoplaintext>> </p><p class=m-3368528117033926924msoplaintext>>             • Classic VRML does not allow to declare ROUTEs inside MFNode fields. Move them outside.</p><p class=m-3368528117033926924msoplaintext>>  </p><p class=m-3368528117033926924msoplaintext>> There may be other x3d Statements and some rules, but I don’t see any spec language for what you describe regarding ROUTE.</p><p class=m-3368528117033926924msoplaintext> </p><p class=m-3368528117033926924msoplaintext>The (only) relevant part of the „Classic VRML encoding“ spec is „Annex A: Grammar“:</p><p class=m-3368528117033926924msoplaintext> </p><p class=m-3368528117033926924msoplaintext><a href="https://www.web3d.org/documents/specifications/19776-2/V3.3/index.html" target="_blank">https://www.web3d.org/documents/specifications/19776-2/V3.3/index.html</a></p><p class=m-3368528117033926924msoplaintext> </p><p class=m-3368528117033926924msoplaintext>The grammar is written in Backus-Naur form. It is the „Scheme“ of classic encoding. Have a look at the rule „mfnodeValue“. You won’t find the symbol „routeStatement“ on the right hand side of that rule.</p><p class=m-3368528117033926924msoplaintext> </p><p class=m-3368528117033926924msoplaintext>ROUTEs are only allowed:</p><p class=m-3368528117033926924msoplaintext> </p><p class=m-3368528117033926924msoplaintext>1. At the top level of the scene</p><p class=m-3368528117033926924msoplaintext>2. Inside the node body (between fields)</p><p class=m-3368528117033926924msoplaintext> </p><p class=m-3368528117033926924msoplaintext>In my opinion it does not make much sense to forbid ROUTEs inside MFNode fields, and I am actually surprised that someone implemented it such strictly.</p><p class=m-3368528117033926924msoplaintext> </p><p class=m-3368528117033926924msoplaintext>Bye,</p><p class=m-3368528117033926924msoplaintext> </p><p class=m-3368528117033926924msoplaintext>Patrick</p><p class=m-3368528117033926924msoplaintext> </p><p class=m-3368528117033926924msoplaintext> </p><p class=m-3368528117033926924msoplaintext>_______________________________________________</p><p class=m-3368528117033926924msoplaintext>x3d-public mailing list</p><p class=m-3368528117033926924msoplaintext><a href="mailto:x3d-public@web3d.org" target="_blank">x3d-public@web3d.org</a></p><p class=m-3368528117033926924msoplaintext><a href="http://web3d.org/mailman/listinfo/x3d-public_web3d.org" target="_blank">http://web3d.org/mailman/listinfo/x3d-public_web3d.org</a></p></div></div></blockquote></div></div><p class=MsoNormal style='margin-left:4.8pt'>_______________________________________________<br>x3d-public mailing list<br><a href="mailto:x3d-public@web3d.org" target="_blank">x3d-public@web3d.org</a><br><a href="http://web3d.org/mailman/listinfo/x3d-public_web3d.org" target="_blank">http://web3d.org/mailman/listinfo/x3d-public_web3d.org</a></p><p class=MsoNormal><o:p> </o:p></p></div></body></html>