This is a multi-part message in MIME format. ------=_NextPart_000_0058_01C907C4.E32F4480 Content-Type: text/plain; format=flowed; charset="iso-8859-1"; reply-type=original Content-Transfer-Encoding: 7bit ----- Original Message ----- From: "Scott Dattalo" To: "Microcontroller discussion list - Public." Sent: Tuesday, August 26, 2008 4:27 PM Subject: Re: [EE] New ideas for power factor corrected supplies >> Something like this (a wacky shorthand implementation of newton's method >> for >> sqrt approximation) may be of interest: >> >> http://www.codemaestro.com/reviews/9 Forget Newton's algorithm; too slow and inaccurate for my taste. Have a look at the two attachments for square root for primitive PICs. This is original code, by the way, and has been thoroughly tested. I have a version for higher end PIC's as well but somehow I've managed to lose it. I'll keep looking for it. Bruce ------=_NextPart_000_0058_01C907C4.E32F4480 Content-Type: application/msword; name="Square Root.doc" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="Square Root.doc" 0M8R4KGxGuEAAAAAAAAAAAAAAAAAAAAAPgADAP7/CQAGAAAAAAAAAAAAAAABAAAAMgAAAAAAAAAA EAAANAAAAAEAAAD+////AAAAADEAAAD///////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////s pcEAJWAJBAAA8BK/AAAAAAAAEAAAAAAABgAAlBUAAA4AYmpiaq71rvUAAAAAAAAAAAAAAAAAAAAA AAAJBBYALi4AAMyfAADMnwAAlA0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//w8AAAAA AAAAAAD//w8AAAAAAAAAAAD//w8AAAAAAAAAAAAAAAAAAAAAAKQAAAAAAKQDAAAAAAAApAMAAKQD AAAAAAAApAMAAAAAAACkAwAAAAAAAKQDAAAAAAAApAMAABQAAAAAAAAAAAAAALgDAAAAAAAAwAcA AAAAAADABwAAAAAAAMAHAAAAAAAAwAcAAFQAAAAUCAAADAAAALgDAAAAAAAAFw0AALYAAAAsCAAA AAAAACwIAAAAAAAALAgAAAAAAAAsCAAAAAAAACwIAAAAAAAALAgAAAAAAAAsCAAAAAAAACwIAAAA AAAAlgwAAAIAAACYDAAAAAAAAJgMAAAAAAAAmAwAAAAAAACYDAAAAAAAAJgMAAAAAAAAmAwAACQA AADNDQAAaAIAADUQAAByAAAAvAwAABUAAAAAAAAAAAAAAAAAAAAAAAAApAMAAAAAAAAsCAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAsCAAAAAAAACwIAAAAAAAALAgAAAAAAAAsCAAAAAAAALwMAAAAAAAA AAAAAAAAAACkAwAAAAAAAKQDAAAAAAAALAgAAAAAAAAAAAAAAAAAACwIAAAAAAAA0QwAABYAAABW CQAAAAAAAFYJAAAAAAAAVgkAAAAAAAAsCAAACgAAAKQDAAAAAAAALAgAAAAAAACkAwAAAAAAACwI AAAAAAAAlgwAAAAAAAAAAAAAAAAAAFYJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAALAgAAAAAAACWDAAAAAAAAAAAAAAAAAAAVgkAAAAAAAAAAAAA AAAAAFYJAAAAAAAApAMAAAAAAACkAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVgkAAAAAAAAsCAAAAAAAACAIAAAMAAAAUBLuRBbQ yAEAAAAAAAAAAMAHAAAAAAAANggAABYAAABWCQAAAAAAAAAAAAAAAAAAlgwAAAAAAADnDAAAMAAA ABcNAAAAAAAAVgkAAAAAAACnEAAAAAAAAEwIAAAAAQAApxAAAAAAAABWCQAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAKcQAAAAAAAAAAAAAAAAAACkAwAAAAAAAFYJAABAAwAALAgAAAAAAAAsCAAAAAAAAFYJ AAAAAAAALAgAAAAAAAAsCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALAgA AAAAAAAsCAAAAAAAACwIAAAAAAAAvAwAAAAAAAC8DAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAATAkAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwIAAAA AAAALAgAAAAAAAAsCAAAAAAAABcNAAAAAAAALAgAAAAAAAAsCAAAAAAAACwIAAAAAAAALAgAAAAA AAAAAAAAAAAAALgDAAAAAAAAuAMAAAAAAAC4AwAApAIAAFwGAABkAQAAuAMAAAAAAAC4AwAAAAAA ALgDAAAAAAAAXAYAAAAAAAC4AwAAAAAAALgDAAAAAAAAuAMAAAAAAACkAwAAAAAAAKQDAAAAAAAA pAMAAAAAAACkAwAAAAAAAKQDAAAAAAAApAMAAAAAAAD/////AAAAAAIADAEAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFNxdWFy ZSBSb290IJYgSG93IGl0IFdvcmtzDQ0JVGhlcmUgYXJlIHR3byBhc3BlY3RzIHRvIGRlcml2aW5n IGEgc3F1YXJlIHJvb3QuICBPbmUgY29uZnVzaW5nIGFzcGVjdCBpcyBkZWNpbWFsIHBsYWNlbWVu dC4gIFdlIG11c3QgcmVjb2duaXplIHRoYXQgZm9yIGFueSBudW1iZXIgb2YgkW6SIGRpZ2l0cyB0 aGF0IHdlIHNxdWFyZSwgdGhlIHJlc3VsdCB3aWxsIGhhdmUgkTJuLTGSIG9yIJEybpIgZGlnaXRz LiAgVGhpcyBpcyBiZXN0IG9ic2VydmVkIHdoZW4gd2UgZXhhbWluZSB0aGUgcHJvY2VzcyBvZiBi aW5hcnkgKGJhc2UgMikgbXVsdGlwbGljYXRpb24uICBUaGUgbnVtYmVyIG9mIGRpZ2l0cyBpbiB0 aGUgcmVzdWx0IG9mIGEgbXVsdGlwbGljYXRpb24gd2lsbCBhbHdheXMgYmUgdGhlIHN1bSBvZiB0 aGUgbnVtYmVyIG9mIGRpZ2l0cyBpbiB0aGUgbXVsdGlwbGllciBhbmQgbXVsdGlwbGljYW5kIGNv bWJpbmVkIGxlc3Mgb25lLCBleGNlcHQgd2hlbiB3ZSBnZW5lcmF0ZSBhIGNhcnJ5IHdoaWNoIHBy b3BhZ2F0ZXMgdGhyb3VnaCB0byBhIGhpZ2hlciBvcmRlciBwb3NpdGlvbi4NDQlUaGlzIGlzIHRy dWUgZm9yIGJvdGggYmFzZS0yIGFuZCBiYXNlLTMgbnVtYmVyIHN5c3RlbXMuICBXaXRoIGhpZ2hl ciBvcmRlciBudW1iZXIgc3lzdGVtcyAoc3VjaCBhcyBvY3RhbCwgZGVjaW1hbCBhbmQgaGV4YWRl Y2ltYWwpIHRoZSBtb3N0IHNpZ25pZmljYW50IGRpZ2l0IGNhbiBhbHNvIGJlIHRoZSByZXN1bHQg b2YgdGhlIG11bHRpcGxpY2F0aW9uIG9mIHRoZSB0d28gbW9zdCBzaWduaWZpY2FudCBkaWdpdHMg d2hpY2ggcHJvZHVjZXMgYSB0d28gZGlnaXQgcmVzdWx0LiAgTmV2ZXJ0aGVsZXNzIHRoZSByZXN1 bHQgb2Ygc3VjaCBhIG11bHRpcGxpY2F0aW9uIChwbHVzIGEgY2FycnkpIGNhbiBuZXZlciBleGNl ZWQgdHdvIGRpZ2l0cywgc28gdGhpcyBydWxlIHN0aWxsIGFwcGxpZXMuICBUaGlzIGlzIHRoZSBy ZWFzb24gd2h5IHdlIGdlbmVyYXRlIG9uZSBkaWdpdCBpbiBhIHJvb3QgZm9yIGV2ZXJ5IDIgZGln aXRzIGluIGl0cyBzcXVhcmUuDQ0JV2hlbiBkZXJpdmluZyBhIHNxdWFyZSByb290IHdpdGggcGVu Y2lsIGFuZCBwYXBlciB3ZSBvcmdhbml6ZSBvdXIgc3F1YXJlIGludG8gMiBkaWdpdCBncm91cHMg d29ya2luZyBib3RoIGxlZnQgYW5kIHJpZ2h0IGZyb20gdGhlIGRlY2ltYWwgcG9pbnQgaW4gb3Jk ZXIgdG8gbWFpbnRhaW4gdGhpcyAyIHRvIDEgZGlnaXQgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhl IHNxdWFyZSBhbmQgdGhlIHJvb3QuICBJbiB0aGUgY2FzZSBvZiBhIGZpeGVkIGxlbmd0aCAoYmlu YXJ5KSB3b3JkLCB3ZSBjYW4gYmVnaW4gd2l0aCB0aGUgbGVmdG1vc3QgMiBkaWdpdHMgaW4gb3Vy IHJlZ2lzdGVyLCBkaXNjYXJkaW5nIGxlYWRpbmcgcGFpcnMgb2YgemVyb3MgdW50aWwgd2UgZmlu ZCBhIHBhaXIgb2YgZGlnaXRzIHdpdGggb25lIG9yIG1vcmUgc2lnbmlmaWNhbnQgYml0cy4NDQlU aGUgc2Vjb25kIGFzcGVjdCBvZiBzb2x2aW5nIGZvciBhIHNxdWFyZSByb290IGxpZXMgaW4gYSBi YXNpYyBhbGdlYnJhaWMgY29uY2VwdCB3aGljaCB3ZSBsZWFybmVkIGJhY2sgaW4gZ3JhZGUgOS4g IElmIHdlIGNvbnNpZGVyIHRoZSByb290IG9mIGEgc3F1YXJlIHRvIGJlIHJlcHJlc2VudGVkIGJ5 IHRoZSBlcXVhdGlvbiAoYSArIGIpLCB0aGVuIHRoZSBzcXVhcmUgaXMgKGFeMiArIDJhYiArIGJe MikuICBXZSBjYW4gYWxzbyByZXByZXNlbnQgdGhpcyBhcyAoYV4yICsgKDJhICsgYikqYikuDQ0J QXMgaW4gYW55IG51bWJlciBiYXNlLCB3ZSBlc3RpbWF0ZSBhbiCRYZIgd2hpY2ggd2hlbiBzcXVh cmVkIHdpbGwgcHJvZHVjZSBhIHJlc3VsdCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gdGhlIG1vc3Qg c2lnbmlmaWNhbnQgZ3JvdXAgb2Ygb3VyIHNxdWFyZS4gIFN1YnRyYWN0aW5nIHRoZSBzcXVhcmUg b2YgdGhpcyCRYZIgZnJvbSB0aGlzIGdyb3VwIHdlIGNhbiB0aGVuIGNvbnNpZGVyIHRoYXQgd2Ug aGF2ZSBlbGltaW5hdGVkIHRoZSCRYV4ykiB0ZXJtIGZyb20gdGhlIHNxdWFyZS4gIEluIHRoZSBi aW5hcnkgc3lzdGVtIHRoaXMgZmlyc3QgZXN0aW1hdGUgb2YgkWGSIGNhbiBvbmx5IGJlIJExkiwg YW5kIGluIGFueSBudW1iZXIgYmFzZSB0aGUgcmVtYWluZGVyIG9mIHRoZSBzcXVhcmUgaXMgY29u c2lkZXJlZCB0byBiZSAoMmEgKyBiKSpiLg0NCVdlIHRoZW4gY29tYmluZSAoY29uY2F0ZW5hdGUp IHRoZSBuZXh0IChyaWdodG1vc3QpIHBhaXIgb2YgZGlnaXRzIHdpdGggdGhlIHJlbWFpbmRlciBm cm9tIHRoZSBwcmVjZWVkaW5nIHN1YnRyYWN0aW9uIGFuZCBzb2x2ZSBmb3IgdGhlIHJlbWFpbmlu ZyAoMmEgKyBiKSpiIHRlcm0uICBXZSB1c2Ugb3VyIHByaW9yIGVzdGltYXRlIG9mIJFhkiBhbmQg dGhlIGxhcmdlc3QgkWKSIGFsbG93ZWQgaW4gdGhlIG51bWJlciBzeXN0ZW0gd2WScmUgdXNpbmcg d2hpY2ggd2lsbCBwcm9kdWNlIGEgcHJvZHVjdCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gdGhpcyBu ZXcgkXJlbWFpbmRlcpIuIFdlIHRoZW4gc3VidHJhY3QgdGhpcyBwcm9kdWN0IGZyb20gdGhpcyBy ZW1haW5kZXIuDQ0JSW4gdGhlIGJpbmFyeSBzeXN0ZW0gdGhpcyCRYpIgY2FuIG9ubHkgYmWSMJIg b3KSMZIuICBSZW1lbWJlciB0aGF0IJFhkiBoYXMgYmVlbiBzaGlmdGVkIG9uZSBwbGFjZSB0byB0 aGUgbGVmdCBwcmlvciB0byB0aGlzIG9wZXJhdGlvbiBpbiBvcmRlciB0byBrZWVwIHRoZSBkZWNp bWFscyBhbGlnbmVkLCBzaW5jZSB3ZZJ2ZSBzaGlmdGVkIG91ciBwcmV2aW91cyCRcmVtYWluZGVy kiB0d28gcGxhY2VzIHRvIHRoZSBsZWZ0LiAgVGhlIG5ldyCRYZIgcmVzdWx0aW5nIGZyb20gdGhp cyBwcm9jZXNzIGlzIG91ciBsZWZ0LXNoaWZ0ZWQgkWGSIHBsdXMgb3VyIG5ldyCRYpIuICBBcyBh bHdheXMsIHRoaXMgYXBwbGllcyB0byBhbnkgbnVtYmVyIHN5c3RlbS4NDQlXZSB0aGVuIHByb2Nl ZWQgdG8gY29tYmluZSAoY29uY2F0ZW5hdGUpIHRoZSBuZXh0IChyaWdodG1vc3QpIGdyb3VwIG9m IGRpZ2l0cyB3aXRoIHRoZSBuZXcgcmVtYWluZGVyIGFuZCBnZW5lcmF0ZSBhIG5ldyAoMmEgKyBi KSpiIHRlcm0sIGhhdmluZyBhZGp1c3RlZCBvdXIgZGVjaW1hbCBwbGFjZW1lbnQgb2YgkWGSIGFj Y29yZGluZ2x5Lg0NCUFzIHdlIHByb2NlZWQgdGhlIHZhbHVlIG9mIJFhkiBpcyBmdXJ0aGVyIHJl ZmluZWQgYXMgd2UgYXBwcm9hY2ggdGhlIHJvb3Qgb2Ygb3VyIHNxdWFyZS4gIEFzIGluIGFueSBu dW1iZXIgYmFzZSwgd2UgY2FuIGNvbnRpbnVlIGFkZGluZyBwYWlycyBvZiBudW1iZXJzIChpbiB0 aGlzIGNhc2UgemVyb3MpIHRvIHRoZSByaWdodCBvZiB0aGUgZGVjaW1hbCBwb2ludCBpbiBvcmRl ciB0byBpbmNyZWFzZSB0aGUgcHJlY2lzaW9uIG9mIG91ciByZXN1bHQuICBUaGlzIGlzIGhvdyB3 ZSBwcm9kdWNlIG91ciCRMS8yIGJpdJIgaW4gdGhlIGJpbmFyeSBhbGdvcml0aG0uDQ0NAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAABwIAAAzCAAA UggAAFMIAABcCAAAXQgAAKQIAAClCAAApggAAKcIAADUCAAA1QgAANcIAADZCAAA2ggAAN4IAADf CAAA4QgAAOIIAAD0CAAA+AgAABIJAAAhCQAAKAkAADEJAABGCQAAXgkAAGUJAABoCQAAaQkAAHgJ AAB5CQAAfgkAAIUJAACHCQAAiAkAAPTq4NbMwuq46rjquOquuK64rrjqpOqa6pDqhup8cnya6miG XgAAAAASFmg1HbAAT0oCAFFKAgBeSgIAABIWaLoBHQBPSgIAUUoCAF5KAgAAEhZoUUjNAE9KAgBR SgIAXkoCAAASFmhzL+4AT0oCAFFKAgBeSgIAABIWaLR7eQBPSgIAUUoCAF5KAgAAEhZo7zCJAE9K AgBRSgIAXkoCAAASFmiTUSsAT0oCAFFKAgBeSgIAABIWaM10cQBPSgIAUUoCAF5KAgAAEhZoW2AN AE9KAgBRSgIAXkoCAAASFmieJ2MAT0oCAFFKAgBeSgIAABIWaGMt6ABPSgIAUUoCAF5KAgAAEhZo 0UVqAE9KAgBRSgIAXkoCAAASFmj6O2kAT0oCAFFKAgBeSgIAABIWaAYH1gBPSgIAUUoCAF5KAgAA EhZoqUOLAE9KAgBRSgIAXkoCAAAVFmipQ4sANQiBT0oCAFFKAgBeSgIAACQABgAAGwgAABwIAAAz CgAANAoAABoMAAAbDAAAzA0AAM0NAADqDgAA6w4AAJUQAACWEAAAFBIAABUSAACKEwAAixMAAE8U AABQFAAAkhUAAJMVAACUFQAA9wAAAAAAAAAAAAAAAPcAAAAAAAAAAAAAAADyAAAAAAAAAAAAAAAA 8gAAAAAAAAAAAAAAAPIAAAAAAAAAAAAAAADyAAAAAAAAAAAAAAAA8gAAAAAAAAAAAAAAAPIAAAAA AAAAAAAAAADyAAAAAAAAAAAAAAAA8gAAAAAAAAAAAAAAAPIAAAAAAAAAAAAAAADyAAAAAAAAAAAA AAAA7QAAAAAAAAAAAAAAAO0AAAAAAAAAAAAAAADtAAAAAAAAAAAAAAAA7QAAAAAAAAAAAAAAAO0A AAAAAAAAAAAAAADyAAAAAAAAAAAAAAAA8gAAAAAAAAAAAAAAAPIAAAAAAAAAAAAAAADyAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAABAAAZ2TNdHEAAAQAAGdkqUOLAAAHAAADJAFhJAFnZKlDiwAAFQAGAACUFQAA/gAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAQEBiAkAAL0JAADcCQAA3QkA AN4JAAAECgAADgoAABMKAAAbCgAAIAoAACIKAAAoCgAAMgoAAI8KAAC4CgAA7woAAAMLAAAHCwAA CgsAAAsLAAAcCwAAgwsAAJcLAACrCwAAsAsAALELAADBCwAA2wsAAOMLAAD3CwAA9uzi9tjO2MTY xLrYsKawnJKcsJKwiH50fohqYFYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABIWaHd2vwBPSgIAUUoC AF5KAgAAEhZok1ErAE9KAgBRSgIAXkoCAAASFmhffEUAT0oCAFFKAgBeSgIAABIWaNhL8wBPSgIA UUoCAF5KAgAAEhZoagELAE9KAgBRSgIAXkoCAAASFmhkbvUAT0oCAFFKAgBeSgIAABIWaINNRwBP SgIAUUoCAF5KAgAAEhZoTSWBAE9KAgBRSgIAXkoCAAASFmhWYlUAT0oCAFFKAgBeSgIAABIWaGMt 6ABPSgIAUUoCAF5KAgAAEhZoOyQuAE9KAgBRSgIAXkoCAAASFmgwLq8AT0oCAFFKAgBeSgIAABIW aCtdMQBPSgIAUUoCAF5KAgAAEhZoqUOLAE9KAgBRSgIAXkoCAAASFmh3WOUAT0oCAFFKAgBeSgIA ABIWaDUdsABPSgIAUUoCAF5KAgAAEhZofVfIAE9KAgBRSgIAXkoCAB33CwAAEQwAABgMAAAZDAAA GgwAABsMAAAvDAAATQwAAE4MAABRDAAAWQwAAF0MAABlDAAAZwwAAGkMAABrDAAAeAwAAIYMAACU DAAAqwwAALgMAADADAAAwQwAAMUMAADNDAAA0wwAAP8MAAAADQAAAg0AACANAAD27OLYzuLEuuKw 4qawnJKwiH6IfnR+an5gfohWiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEhZowlTNAE9KAgBRSgIA XkoCAAASFmjBcIEAT0oCAFFKAgBeSgIAABIWaB05fgBPSgIAUUoCAF5KAgAAEhZoGWEMAE9KAgBR SgIAXkoCAAASFmjpHN4AT0oCAFFKAgBeSgIAABIWaFtgDQBPSgIAUUoCAF5KAgAAEhZogXrOAE9K AgBRSgIAXkoCAAASFmhBcJcAT0oCAFFKAgBeSgIAABIWaCtdMQBPSgIAUUoCAF5KAgAAEhZoJgoK AE9KAgBRSgIAXkoCAAASFmh/e2gAT0oCAFFKAgBeSgIAABIWaKliaQBPSgIAUUoCAF5KAgAAEhZo bREmAE9KAgBRSgIAXkoCAAASFmjGftkAT0oCAFFKAgBeSgIAABIWaF98RQBPSgIAUUoCAF5KAgAA EhZok1ErAE9KAgBRSgIAXkoCAAASFmhJEKMAT0oCAFFKAgBeSgIAHSANAAAhDQAAJw0AACgNAABK DQAAWQ0AAGYNAABzDQAAew0AAH8NAACEDQAAmg0AAJ4NAACfDQAAqQ0AAK4NAAC6DQAAyw0AAMwN AAAGDgAABw4AAAwOAAAeDgAAKQ4AADcOAAA4DgAAPw4AAEIOAABZDgAAZQ4AALgOAADWDgAA9uz2 7OLY7M7Euuyw7KbssOyc7JKIkn50an7sYH5gVgAAAAAAAAAAAAAAAAASFmhCXdYAT0oCAFFKAgBe SgIAABIWaN5ZkwBPSgIAUUoCAF5KAgAAEhZojGdeAE9KAgBRSgIAXkoCAAASFmgIKHkAT0oCAFFK AgBeSgIAABIWaOA8OwBPSgIAUUoCAF5KAgAAEhZoqh2LAE9KAgBRSgIAXkoCAAASFmjfOcIAT0oC AFFKAgBeSgIAABIWaF98RQBPSgIAUUoCAF5KAgAAEhZosz5qAE9KAgBRSgIAXkoCAAASFmiwI/UA T0oCAFFKAgBeSgIAABIWaO5jYABPSgIAUUoCAF5KAgAAEhZonidjAE9KAgBRSgIAXkoCAAASFmiy NvgAT0oCAFFKAgBeSgIAABIWaG1EMwBPSgIAUUoCAF5KAgAAEhZooyJMAE9KAgBRSgIAXkoCAAAS FmhbYA0AT0oCAFFKAgBeSgIAABIWaCFWQQBPSgIAUUoCAF5KAgAf1g4AANcOAADnDgAA6A4AAOkO AADqDgAA6w4AAPIOAAABDwAAOA8AAEMPAABYDwAAbw8AAHMPAAB2DwAAfQ8AAI4PAACPDwAAlg8A AJ8PAACiDwAAqA8AALIPAACzDwAAtg8AALoPAAC/DwAAyA8AAM0PAADQDwAA6Q8AAPgPAAD27Pbi 2OLYzsS6sMSwprDEnMScksSIxH50sH5qxGBWAAAAAAAAAAAAAAAAABIWaM10cQBPSgIAUUoCAF5K AgAAEhZosCP1AE9KAgBRSgIAXkoCAAASFmgNF98AT0oCAFFKAgBeSgIAABIWaBB/lgBPSgIAUUoC AF5KAgAAEhZoJXQxAE9KAgBRSgIAXkoCAAASFmhVAuwAT0oCAFFKAgBeSgIAABIWaDkVLwBPSgIA UUoCAF5KAgAAEhZoel2tAE9KAgBRSgIAXkoCAAASFmgxTrIAT0oCAFFKAgBeSgIAABIWaL81LQBP SgIAUUoCAF5KAgAAEhZoK10xAE9KAgBRSgIAXkoCAAASFmjuY2AAT0oCAFFKAgBeSgIAABIWaJ9g SABPSgIAUUoCAF5KAgAAEhZokBBTAE9KAgBRSgIAXkoCAAASFmhCXdYAT0oCAFFKAgBeSgIAABIW aMJUzQBPSgIAUUoCAF5KAgAAEhZoP0e1AE9KAgBRSgIAXkoCAB/4DwAA/g8AACEQAAAtEAAAPRAA AD4QAAA/EAAAQBAAAEUQAABYEAAAbhAAAHQQAAB4EAAAiRAAAIoQAACQEAAAkRAAAJMQAACUEAAA mhAAAJ8QAACmEAAApxAAALUQAAC+EAAAyhAAAM4QAADPEAAA2RAAAOsQAAALEQAADBEAABkRAAAa EQAA9uzi7Njs2OLO4sTiurDisKac7JKIkn6SdGqSYIjsVpKIAAAAEhZoEyYZAE9KAgBRSgIAXkoC AAASFmjME7oAT0oCAFFKAgBeSgIAABIWaCBfGABPSgIAUUoCAF5KAgAAEhZoK10xAE9KAgBRSgIA XkoCAAASFmh2QdoAT0oCAFFKAgBeSgIAABIWaFQ1twBPSgIAUUoCAF5KAgAAEhZo7mNgAE9KAgBR SgIAXkoCAAASFmhCXdYAT0oCAFFKAgBeSgIAABIWaINiRwBPSgIAUUoCAF5KAgAAEhZosCP1AE9K AgBRSgIAXkoCAAASFmjTbRoAT0oCAFFKAgBeSgIAABIWaKQaZwBPSgIAUUoCAF5KAgAAEhZoyTwL AE9KAgBRSgIAXkoCAAASFmjfOcIAT0oCAFFKAgBeSgIAABIWaFUC7ABPSgIAUUoCAF5KAgAAEhZo zXRxAE9KAgBRSgIAXkoCAAASFmipYmkAT0oCAFFKAgBeSgIAIRoRAAAdEQAAKBEAACkRAAAyEQAA MxEAADcRAABAEQAARxEAAEoRAABfEQAArBEAAMsRAADPEQAA3xEAAOARAADhEQAA4xEAAOQRAADp EQAA9hEAAAgSAAATEgAAFhIAACoSAAAvEgAASxIAAPbs4tjOxLqwprCckoh+dLp0amBqVrp0nEx0 AAAAAAAAAAAAAAAAAAAAAAAAEhZo5RJsAE9KAgBRSgIAXkoCAAASFmivIFQAT0oCAFFKAgBeSgIA ABIWaP55iwBPSgIAUUoCAF5KAgAAEhZoGQ1hAE9KAgBRSgIAXkoCAAASFmgEM+AAT0oCAFFKAgBe SgIAABIWaJUv4QBPSgIAUUoCAF5KAgAAEhZoowHqAE9KAgBRSgIAXkoCAAASFmieJ2MAT0oCAFFK AgBeSgIAABIWaKMiTABPSgIAUUoCAF5KAgAAEhZoD3tCAE9KAgBRSgIAXkoCAAASFmjYNKUAT0oC AFFKAgBeSgIAABIWaPR14gBPSgIAUUoCAF5KAgAAEhZoVDW3AE9KAgBRSgIAXkoCAAASFmiDYkcA T0oCAFFKAgBeSgIAABIWaO5jYABPSgIAUUoCAF5KAgAAEhZoIlrLAE9KAgBRSgIAXkoCAAASFmjX MMMAT0oCAFFKAgBeSgIAABIWaFQiqABPSgIAUUoCAF5KAgAaSxIAAFkSAABdEgAAZRIAALgSAAC5 EgAAuxIAANsSAADkEgAA5RIAAAcTAAAIEwAACRMAABUTAAApEwAAMBMAADgTAABIEwAAVhMAAFoT AACJEwAAihMAAIsTAACMEwAAjRMAAI8TAAD27OLs2M7EusTOsM6mnJKIpn6mdGpgalZMAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAASFmgldDEAT0oCAFFKAgBeSgIAABIWaIFjTwBPSgIAUUoCAF5KAgAA EhZoxn7ZAE9KAgBRSgIAXkoCAAASFmipYmkAT0oCAFFKAgBeSgIAABIWaMNTpwBPSgIAUUoCAF5K AgAAEhZoKktVAE9KAgBRSgIAXkoCAAASFmjtVbEAT0oCAFFKAgBeSgIAABIWaJt59ABPSgIAUUoC AF5KAgAAEhZozBO6AE9KAgBRSgIAXkoCAAASFmjVW9MAT0oCAFFKAgBeSgIAABIWaFQ1twBPSgIA UUoCAF5KAgAAEhZorjoyAE9KAgBRSgIAXkoCAAASFmj2S8UAT0oCAFFKAgBeSgIAABIWaI5+PABP SgIAUUoCAF5KAgAAEhZoElJiAE9KAgBRSgIAXkoCAAASFmj1FC8AT0oCAFFKAgBeSgIAABIWaGFy cABPSgIAUUoCAF5KAgAAEhZojX92AE9KAgBRSgIAXkoCABmPEwAAphMAALQTAADPEwAA0BMAANoT AADeEwAA4RMAAOYTAADxEwAADhQAAA8UAAATFAAAFRQAACQUAAA6FAAAOxQAAEIUAABNFAAAThQA AE8UAABXFAAAXxQAAGAUAABjFAAAbBQAAG8UAABwFAAA9uzi2M72zsS62LDYppymkuym4oh+dGpg flZMAAAAAAAAAAAAAAAAABIWaNdeRgBPSgIAUUoCAF5KAgAAEhZoyXiaAE9KAgBRSgIAXkoCAAAS FmieJ2MAT0oCAFFKAgBeSgIAABIWaMxowQBPSgIAUUoCAF5KAgAAEhZoK10xAE9KAgBRSgIAXkoC AAASFmhUNbcAT0oCAFFKAgBeSgIAABIWaJAQUwBPSgIAUUoCAF5KAgAAEhZos1gJAE9KAgBRSgIA XkoCAAASFmgZRaYAT0oCAFFKAgBeSgIAABIWaOkc3gBPSgIAUUoCAF5KAgAAEhZoDRffAE9KAgBR SgIAXkoCAAASFmiqEf4AT0oCAFFKAgBeSgIAABIWaDx2iABPSgIAUUoCAF5KAgAAEhZopwVMAE9K AgBRSgIAXkoCAAASFmgldDEAT0oCAFFKAgBeSgIAABIWaKliaQBPSgIAUUoCAF5KAgAAEhZo1wqD AE9KAgBRSgIAXkoCAAASFmhLFykAT0oCAFFKAgBeSgIAG3AUAAByFAAAcxQAAHsUAAB/FAAAgxQA AIUUAACJFAAAkRQAAKkUAACrFAAArhQAAOIUAAD4FAAA/RQAAP4UAAAbFQAAIRUAAC0VAAA5FQAA RhUAAFIVAABuFQAAkRUAAJIVAACTFQAAlBUAAPbs4uzYztjO2MS6xLDEsMSmxJySxIh+dGpdAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgVaKlDiwAW aNRB6wBPSgIAUUoCAF5KAgAAEhZo1EHrAE9KAgBRSgIAXkoCAAASFmjdIlgAT0oCAFFKAgBeSgIA ABIWaBB/lgBPSgIAUUoCAF5KAgAAEhZohA8GAE9KAgBRSgIAXkoCAAASFmhGXmIAT0oCAFFKAgBe SgIAABIWaEMfGABPSgIAUUoCAF5KAgAAEhZo43TpAE9KAgBRSgIAXkoCAAASFmiGKggAT0oCAFFK AgBeSgIAABIWaMZ+2QBPSgIAUUoCAF5KAgAAEhZoT0a9AE9KAgBRSgIAXkoCAAASFmjlEmwAT0oC AFFKAgBeSgIAABIWaJ4nYwBPSgIAUUoCAF5KAgAAEhZoxwtzAE9KAgBRSgIAXkoCAAASFmhUNbcA T0oCAFFKAgBeSgIAABIWaOkSwgBPSgIAUUoCAF5KAgAaLAAxkGgBH7DQLyCw4D0hsAgHIrAIByOQ oAUkkKAFJbAAABew0AIYsNACDJDQAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACGAg8AEgABAJwADwAEAAAAAAAAAAAABAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAABA 8f8CAEAADAQAAAAAAAAAAAYATgBvAHIAbQBhAGwAAAACAAAAGABDShgAX0gBBGFKGABtSAkEc0gJ BHRICQQAAAAAAAAAAAAAAAAAAAAAAABEAEEA8v+hAEQADAUAAAAAAAAAABYARABlAGYAYQB1AGwA dAAgAFAAYQByAGEAZwByAGEAcABoACAARgBvAG4AdAAAAAAAUgBpAPP/swBSAAwFAAAAAAAAAAAM AFQAYQBiAGwAZQAgAE4AbwByAG0AYQBsAAAAHAAX9gMAADTWBgABCgNsADTWBgABBQMAAGH2AwAA AgALAAAAKABrAPT/wQAoAAAFAAAAAAAAAAAHAE4AbwAgAEwAaQBzAHQAAAACAAAAAAAAAAAAAACU DQAABQAALgAAAwD/////AAAAABsAAAAcAAAAMwIAADQCAAAaBAAAGwQAAMwFAADNBQAA6gYAAOsG AACVCAAAlggAABQKAAAVCgAAigsAAIsLAABPDAAAUAwAAJINAACTDQAAlg0AAJgAAAAAMAAAAAAA AACAAAAAgAAAAAAAAAAAAACYAAAAADAAAAAAAAAAgAAAAIAAAAAAAAAAAAAAmAAAAAAwAAAAAAAA AIAAAACAAAAAAAAAAAAAAJgAAAAAMAAAAAAAAACAAAAAgAAAAAAAAAAAAACYAAAAADAAAAAAAAAA gAAAAIAAAAAAAAAAAAAAmAAAAAAwAAAAAAAAAIAAAACAAAAAAAAAAAAAAJgAAAAAMAAAAAAAAACA AAAAgAAAAAAAAAAAAACYAAAAADAAAAAAAAAAgAAAAIAAAAAAAAAAAAAAmAAAAAAwAAAAAAAAAIAA AACAAAAAAAAAAAAAAJgAAAAAMAAAAAAAAACAAAAAgAAAAAAAAAAAAACYAAAAADAAAAAAAAAAgAAA AIAAAAAAAAAAAAAAmAAAAAAwAAAAAAAAAIAAAACAAAAAAAAAAAAAAJgAAAAAMAAAAAAAAACAAAAA gAAAAAAAAAAAAACYAAAAADAAAAAAAAAAgAAAAIAAAAAAAAAAAAAAmAAAAAAwAAAAAAAAAIAAAACA AAAAAAAAAAAAAJgAAAAAMAAAAAAAAACAAAAAgAAAAAAAAAAAAACYAAAAADAAAAAAAAAAgAAAAIAA AAAAAAAAAAAAmAAAAAAwAAAAAAAAAIAAAACAAAAAAAAAAAAAAJgAAAAAMAAAAAAAAACAAAAAgAAA AAAAAAAAAACYAAAAADAAAAAAAAAAgAAAAIAAAAAAAAAAAAAAmAAAAAAwAAAAAAAAAIAAAACAAAAA AAAAAAAAAAAAAAAbBAAAzAUAAM0FAACWCAAAFAoAABUKAACKCwAAiwsAAE8MAABQDAAAlg0AAFKR ADAAAAAAAAAAAAEAAAANAAAAAQAAAOi/8wdQkQAwAAAAAAAAAAABAAAADAAAAAAAAAAAAIABUJEA MAAAAAAAAAAAAQAAAAsAAAAAAAAAAACAAVqRADAAAAAAAAAAAAEAAAAEAAAAAQAAAOiT8wdakQAw AAAAAAAAAAABAAAAAwAAAAAAAAAAAIAHWpEAMAAAAAAAAAAAAgAAAAEAAAAAAAAAAACABwAAAAAA AAAAAAAAAAAAAAASAAAAAAAAAAAAAAFYkQAwAAAAAAAAAAABAAAAAAAAAAAAAAAAAIABWpEAMAAA AAAAAAAAAQAAAAAAAAAAAAAAAACAB1iRADAGAAAAAAAAAAIAAAABAAAAAAAAAAAAgAFakQAwAAAA AAAAAAABAAAAAAAAAAAAAAA8A6AHAAYAAIgJAAD3CwAAIA0AANYOAAD4DwAAGhEAAEsSAACPEwAA cBQAAJQVAAALAAAADgAAAA8AAAAQAAAAEQAAABIAAAATAAAAFAAAABUAAAAWAAAAAAYAAJQVAAAM AAAAAAYAAJQVAAANAAAAAAAAAJYNAAAHAAAAAAA/DAAAQAwAAJYNAAAHADMABwAAAAAAUwAAAFwA AAAoAQAAMQEAAI8CAAC4AgAAAwMAAAcDAAALAwAAHAMAAKkDAACrAwAAsQMAALEDAADNBQAAzQUA ADcGAAA4BgAAPgYAAD4GAACUCAAAlAgAAKcIAAC1CAAAyggAAM4IAAALCQAADAkAAIsLAACLCwAA pgsAALQLAAA7DAAAQgwAAFAMAABQDAAA4gwAAPgMAAD9DAAA/gwAAJMNAACWDQAAAwAEAAMABAAD AAQAAwAEAAMABAADAAQAAwAEAAMABAADAAQAAwAEAAMABAADAAQAAwAEAAMABAADAAQAAwAEAAMA BAADAAQAAwAEAAMABAADAAcAAAAAAJYNAAAHAMoAAAAEAAAACAAAAOUAAAAAAAAAyQAAAIQPBgCk BwcAhioIALNYCQAmCgoAnBwKAGoBCwDJPAsAGWEMAFtgDQDuWhAAxXEQAN9RFQAYdxYAQx8YACBf GAATJhkA91wZAFQCGgB5aRoA020aAFBnGwC6AR0A32MdABRFHgD+BSMAkw0lAOJuJQA7AyYAbREm ACZ6JgCvMScASxcpAJNRKwC/NS0AOyQuABA2LgD1FC8AORUvAPgcMAArXTEAJXQxAK46MgBtRDMA /Rc5ADBhOQDgPDsAjn48ACFWQQAPe0IAX3xFANdeRgBUQEcAg01HAINiRwCfYEgApwVMAKMiTACB Y08AkBBTAJwWUwApHVQAryBUACpLVQBWYlUANxJWAD04VgDdIlgAHXtdAIxnXgDuY2AAGQ1hABJS YgBGXmIAJndiAJ4nYwDnBGQAaBVkAKlWZABBRmUAoVJlAKQaZwAVG2cAf3toAPo7aQCpYmkAsz5q ANFFagDlEmwAcjdsACclbQDPSXAAYXJwAK41cQDNdHEAxwtzAHwQdACsYXQAjX92AHUCdwAIKHkA tHt5ALhiegAdOX4AaBt/AE0lgQDBcIEAKXOCANcKgwA8dogA7zCJAEVJiQBDAYoAqh2LAKlDiwD+ eYsAER6NANpDjgA7Oo8A3lmTAJd4lgAQf5YAQXCXAGl6mQDJeJoAWiScADpTnABrc50A00egABRc oABJEKMAV3+jANg0pQAZRaYAw1OnAFQiqAB6Xa0A/D2uADAurwA1HbAA7VWxADFOsgBdC7MAP0e1 AFQ1twDME7oAT0a9AHd2vwDMaMEA6RLCAN85wgDXMMMA3gDFAPZLxQBZGscAWDrHAH1XyAAiWssA UUjNAMJUzQAFdM0AzHbNAIF6zgCEMdAA1H/SANVb0wAGB9YAQl3WAEgQ2ABNLtkAxn7ZAHZB2gD7 ftsA6RzeAKVg3gANF98ABDPgALl64ACTBeEAlS/hALNw4QBgCOIA9HXiAHdY5QDKducAYy3oAON0 6QCjAeoA1EHrAFUC7ACifuwAazLtAIAq7gBzL+4A2EvzAJt59ACwI/UA61n1AGRu9QCGaPYAsjb4 AKoR/gD/QAOAAQCTDQAAkw0AAHAoMwEBAAAAkw0AAAAAAACTDQAAAAAAAAIQAAAAAAAAAJQNAABQ AAAQAEAAAP//AQAAAAcAVQBuAGsAbgBvAHcAbgD//wEACAAAAAAAAAAAAAAA//8BAAAAAAD//wAA AgD//wAAAAD//wAAAgD//wAAAAADAAAARxaQAQAAAgIGAwUEBQIDBId6ACAAAACACAAAAAAAAAD/ AQAAAAAAAFQAaQBtAGUAcwAgAE4AZQB3ACAAUgBvAG0AYQBuAAAANRaQAQIABQUBAgEHBgIFBwAA AAAAAAAQAAAAAAAAAAAAAACAAAAAAFMAeQBtAGIAbwBsAAAAMyaQAQAAAgsGBAICAgICBId6ACAA AACACAAAAAAAAAD/AQAAAAAAAEEAcgBpAGEAbAAAACIABADxCIgYAPDQAgAAaAEAAAAAavLFpoWE xiaSCsYGvQDDGwAABgIAAI4LAAABAAYAAAAEAAMQGAAAAAYCAACOCwAAAQAGAAAAGAAAAAAAAAAh AwDwEAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIB6AFtAC0AIGBMjQAAAAAAAAAAAAAAAAA AI4NAACODQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAygxEA8BAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAASFgAAAAAKfD/DwEAAT8AAOQEAAD///9/////f////3////9/////f////3////9/qUOLAAAA AAAyAAAAAAAAAAAAAAAAAAAAAAD//xIAAAAAAAAAGgBTAHEAdQBhAHIAZQAgAFIAbwBvAHQAIAAT ICAASABvAHcAIABpAHQAIABXAG8AcgBrAHMAAAAAAAAABQBCAHIAdQBjAGUABQBCAHIAdQBjAGUA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD+/wAABQECAAAAAAAAAAAAAAAAAAAAAAABAAAA4IWf8vlP aBCrkQgAKyez2TAAAACUAQAAEgAAAAEAAACYAAAAAgAAAKAAAAADAAAAxAAAAAQAAADQAAAABQAA AOAAAAAGAAAA7AAAAAcAAAD4AAAACAAAAAgBAAAJAAAAGAEAABIAAAAkAQAACgAAAEQBAAALAAAA UAEAAAwAAABcAQAADQAAAGgBAAAOAAAAdAEAAA8AAAB8AQAAEAAAAIQBAAATAAAAjAEAAAIAAADk BAAAHgAAABwAAABTcXVhcmUgUm9vdCCWIEhvdyBpdCBXb3JrcwAAHgAAAAQAAAAAAAAAHgAAAAgA AABCcnVjZQAAAB4AAAAEAAAAAAAAAB4AAAAEAAAAAAAAAB4AAAAIAAAATm9ybWFsAAAeAAAACAAA AEJydWNlAAAAHgAAAAQAAAAxODkAHgAAABgAAABNaWNyb3NvZnQgT2ZmaWNlIFdvcmQAAABAAAAA AFIg1uADAABAAAAAAJQGcQvEyAFAAAAAADy9FHTCyAFAAAAAAIZxKhbQyAEDAAAAAQAAAAMAAAAG AgAAAwAAAI4LAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAA/v8AAAUBAgAAAAAAAAAAAAAAAAAAAAAAAQAAAALVzdWcLhsQk5cIACss +a4wAAAABAEAAAwAAAABAAAAaAAAAA8AAABwAAAABQAAAHwAAAAGAAAAhAAAABEAAACMAAAAFwAA AJQAAAALAAAAnAAAABAAAACkAAAAEwAAAKwAAAAWAAAAtAAAAA0AAAC8AAAADAAAAOMAAAACAAAA 5AQAAB4AAAAEAAAAAAAAAAMAAAAYAAAAAwAAAAYAAAADAAAAjg0AAAMAAAAPJwsACwAAAAAAAAAL AAAAAAAAAAsAAAAAAAAACwAAAAAAAAAeEAAAAQAAABsAAABTcXVhcmUgUm9vdCCWIEhvdyBpdCBX b3JrcwAMEAAAAgAAAB4AAAAGAAAAVGl0bGUAAwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAEAAAACAAAAAwAAAAQAAAAFAAAABgAAAAcAAAAIAAAACQAAAAoAAAALAAAADAAAAA0A AAAOAAAADwAAABAAAAARAAAAEgAAABMAAAAUAAAAFQAAABYAAAAXAAAA/v///xkAAAAaAAAAGwAA ABwAAAAdAAAAHgAAAB8AAAAgAAAA/v///yIAAAAjAAAAJAAAACUAAAAmAAAAJwAAACgAAAD+//// KgAAACsAAAAsAAAALQAAAC4AAAAvAAAAMAAAAP7////9////MwAAAP7////+/////v////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// ////////UgBvAG8AdAAgAEUAbgB0AHIAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAABYABQH//////////wMAAAAGCQIAAAAAAMAAAAAAAABGAAAAAAAAAAAAAAAA UIPwRBbQyAE1AAAAgAAAAAAAAAAxAFQAYQBiAGwAZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgACAf////8FAAAA/////wAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAACnEAAAAAAAAFcAbwByAGQARABvAGMAdQBtAGUAbgB0 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaAAIBAQAAAP////////// AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4uAAAAAAAABQBTAHUAbQBt AGEAcgB5AEkAbgBmAG8AcgBtAGEAdABpAG8AbgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgA AgECAAAABAAAAP////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAhAAAAABAA AAAAAAAFAEQAbwBjAHUAbQBlAG4AdABTAHUAbQBtAGEAcgB5AEkAbgBmAG8AcgBtAGEAdABpAG8A bgAAAAAAAAAAAAAAOAACAf///////////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAACkAAAAAEAAAAAAAAAEAQwBvAG0AcABPAGIAagAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASAAIA////////////////AAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///////////////8A AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AP///////////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAEAAAD+//////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// ////AQD+/wMKAAD/////BgkCAAAAAADAAAAAAAAARh8AAABNaWNyb3NvZnQgT2ZmaWNlIFdvcmQg RG9jdW1lbnQACgAAAE1TV29yZERvYwAQAAAAV29yZC5Eb2N1bWVudC44APQ5snEAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAA= ------=_NextPart_000_0058_01C907C4.E32F4480 Content-Type: text/plain; format=flowed; name="SQRT_RNDD.txt"; reply-type=original Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="SQRT_RNDD.txt" ;************************************************************************ ; SQRT_16_Rndd * ; * ; This is a 16 bit square root algorithm for 12 and 14 bit core PIC * ; MCUs which have neither a hardware mutiply nor conditional * ; branch instructions. I refer to this as a 'quasi-divide' * ; algorithm since the methodology is so similar to a divide * ; routine. * : * ; This routine executes 8 loops for a truncated result and 9 loops for * ; a rounded result. The error in the rounded result is * ; =< -1/2 bit to < +1/2 bit. * ; * ; The rounded code is 64 instructions in length and uses 10 bytes of * ; RAM. The variables have been given unique names for clarity * ; when following the code, but these can be changed to ACCaHI, * ; ACCaLO, ACCbHI etc. in keeping with common practice. * ; * ; As can be seen, 'rnd_flg' is a rounding flag, 'hi_bit' holds the * ; ninth bit when rounding, 'it_cntr' is the iteration counter, * ; 'num.x' is the 2 byte number to be rooted, 'wrk.x' is a 2 byte * ; working register, 'tst.x' is a 2 byte test word and 'result' is * ; just that. * ; * ; This routine uses its own inline double precision add & subtract * ; routines to optimize speed of execution, but calls could be * ; made to external subroutines as long as the contents of 'tst' * ; are returned intact (from the subtraction), or some other means * ; of restoring 'wrk' upon a negative result from the subtraction * ; be implemented. * ; * ; Should an overflow occur (in the rounded routine); that is should a * ; number greater than H'FF00' be rooted, the result will be H'00' * ; and the Carry bit will be set. If H'0000' is rooted the result * ; will be H'00' and the Carry bit will be clear. * ; * ; NOTE: The Carry bit will be set whenever a round-up has occurred. * ; * ; Execution times: (numbers in Hex, cycles in Decimal) * ; * ; number = 0000 228 cycles * ; 0000 < number < 0100 280 cycles (Avg) * ; 0100 <= number < 0400 305 cycles (Avg) * ; 0400 <= number < 1000 323 cycles (Avg) * ; 1000 <= number < 4000 341 Cycles (Avg) * ; 4000 <= number < 10000 359 Cycles (avg) * ; * ; * ; This routine can also be used in a truncated version to produce a * ; truncated (non-rounded) result with an error = 0 to < +1 bit. * : * ; This version is 45 instructions in length, requiring 8 bytes of RAM, * ; and is created by ignoring the references to 'rnd_flg' and * ; 'hi_bit' and changing "goto HALF_BIT" following the counter * ; decrement and test to "RETURN". * ; * ; All code including and following the HALF_BIT label can be deleted. * ; * ; Execution times for this variation are as follows: * ; * ; number = 0000 175 cycles * ; 0000 < number < 0100 221 cycles (Avg) * ; 0100 <= number < 0400 244 cycles (Avg) * ; 0400 <= number < 1000 263 cycles (Avg) * ; 1000 <= number < 4000 281 cycles (Avg) * ; 4000 <= number < 10000 299 cycles (Avg) * ; * ;************************************************************************ ;************************************************************************ : * ; The Square Root routine is as follows. * ; * ;************************************************************************ SQRT clrf wrk.0 ;clear registers clrf wrk.1 clrf result clrf rnd_flg clrf hi_bit movlw 0x9 ;preset iteration counter movwf it_cntr ;************************************************************************ ; * ; Various flow-throughs are used througout to avoid some messy goto's. * ; * ;************************************************************************ ITERATE decf it_cntr, F ;decrement & test counter btfsc STATUS, Z goto HALF_BIT ; if done 8 cycles bcf STATUS, C ;clear the Carry bit rlf result, F ;left shift prior result clrf tst.1 ;clear test word hi byte LAST_PASS rlf num.0, F ;left shift 2 bits into wrk rlf num.1, F rlf wrk.0, F rlf wrk.1, F rlf num.0, F rlf num.1, F rlf wrk.0, F rlf wrk.1, F ;************************************************************************ ; * ; The following block speeds up the algorithm by stripping out leading * ; pairs of zeros and some strings of mid-word and trailing zeros. * ; * ;************************************************************************ movf wrk.0, W ;test for all zeros iorwf wrk.1, W btfsc STATUS, Z goto ITERATE ; if all zeros ;************************************************************************ ; * ; This block sets up the first 'a' and the new (2a+b)*b (actually * ; (2a+1)) terms on subsequent passes. * ; * ;************************************************************************ COMPUTE movf result, W ;set up test word movwf tst.0 rlf tst.0, F ; 2 x prior result rlf tst.1, F incf tst.0, F ; and add 1 incf result, F ;preset result ;************************************************************************ ; * ; This block performs the 'subtract' portion of the 'quasi-divide' * ; routine. * ; * ;************************************************************************ movf tst.0, W ;subtract tst from wrk subwf wrk.0, F btfss STATUS, C ;check for borrow decf wrk.1, F movf tst.1, W subwf wrk.1, F btfss wrk.1, 0x7 ;test for negative goto ITERATE ; if not negative ;************************************************************************ ; * ; This block restores the working register if the preceding * ; subtraction produced a negative result. * ; * ;************************************************************************ movf tst.0, W ;restore wrk addwf wrk.0, F btfsc STATUS, C ;check for carry incf wrk.1, F movf tst.1, W addwf wrk.1, F decf result, F ;correct result goto ITERATE ;and resume ;************************************************************************ ; * ; The last two blocks are dedicated to resolving the 1/2 bit and * ; rounding accordingly. * ; * ;************************************************************************ HALF_BIT movf rnd_flg, F ;check rounding flag status btfss STATUS, Z goto ROUND ;if once through this incf rnd_flg, F ;set the flag clrf tst.1 ;set up last test word bcf STATUS, C rlf result, F ;result bit 7 to Carry btfsc STATUS, C incf hi_bit, F ;set hi_bit if Carry set rlf tst.1, F ;now Carry into tst bit 8 incf it_cntr, F ;set counter for last pass goto LAST_PASS ;************************************************************************ ROUND rrf hi_bit, F ;shift bit 8 back into carry rrf result, F ;shift it back into result bit 7 btfsc STATUS, C ;now test the half bit incf result, F ;and round up result if set RETURN END ------=_NextPart_000_0058_01C907C4.E32F4480 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline -- http://www.piclist.com PIC/SX FAQ & list archive View/change your membership options at http://mailman.mit.edu/mailman/listinfo/piclist ------=_NextPart_000_0058_01C907C4.E32F4480--