diff --git a/controller/badge.go b/controller/badge.go index b1666b1b..f21860fa 100644 --- a/controller/badge.go +++ b/controller/badge.go @@ -3,6 +3,7 @@ package controller import ( "fmt" "net/http" + "strconv" "strings" "time" @@ -11,19 +12,27 @@ import ( "github.com/gorilla/mux" ) -// badgeHandler handles the automatic generation of badge based on the group name and service name passed. +const ( + badgeColorHexAwesome = "#40cc11" + badgeColorHexGreat = "#94cc11" + badgeColorHexGood = "#ccd311" + badgeColorHexPassable = "#ccb311" + badgeColorHexBad = "#cc8111" + badgeColorHexVeryBad = "#c7130a" +) + +// uptimeBadgeHandler handles the automatic generation of badge based on the group name and service name passed. // // Valid values for {duration}: 7d, 24h, 1h -// Pattern for {identifier}: .svg -func badgeHandler(writer http.ResponseWriter, request *http.Request) { +func uptimeBadgeHandler(writer http.ResponseWriter, request *http.Request) { variables := mux.Vars(request) duration := variables["duration"] var from time.Time switch duration { case "7d": - from = time.Now().Add(-time.Hour * 24 * 7) + from = time.Now().Add(-7 * 24 * time.Hour) case "24h": - from = time.Now().Add(-time.Hour * 24) + from = time.Now().Add(-24 * time.Hour) case "1h": from = time.Now().Add(-time.Hour) default: @@ -31,8 +40,13 @@ func badgeHandler(writer http.ResponseWriter, request *http.Request) { _, _ = writer.Write([]byte("Durations supported: 7d, 24h, 1h")) return } - identifier := variables["identifier"] - key := strings.TrimSuffix(identifier, ".svg") + var key string + if identifier := variables["identifier"]; len(identifier) > 0 { + // XXX: Remove this conditional statement in v3.0.0 and rely on variables["key"] instead + key = strings.TrimSuffix(identifier, ".svg") + } else { + key = variables["key"] + } uptime, err := storage.Get().GetUptimeByKey(key, from, time.Now()) if err != nil { if err == common.ErrServiceNotFound { @@ -50,10 +64,10 @@ func badgeHandler(writer http.ResponseWriter, request *http.Request) { writer.Header().Set("Date", formattedDate) writer.Header().Set("Expires", formattedDate) writer.Header().Set("Content-Type", "image/svg+xml") - _, _ = writer.Write(generateSVG(duration, uptime)) + _, _ = writer.Write(generateUptimeBadgeSVG(duration, uptime)) } -func generateSVG(duration string, uptime float64) []byte { +func generateUptimeBadgeSVG(duration string, uptime float64) []byte { var labelWidth, valueWidth, valueWidthAdjustment int switch duration { case "7d": @@ -106,15 +120,118 @@ func generateSVG(duration string, uptime float64) []byte { func getBadgeColorFromUptime(uptime float64) string { if uptime >= 0.975 { - return "#40cc11" + return badgeColorHexAwesome } else if uptime >= 0.95 { - return "#94cc11" + return badgeColorHexGreat } else if uptime >= 0.9 { - return "#ccc311" + return badgeColorHexGood } else if uptime >= 0.8 { - return "#ccb311" + return badgeColorHexPassable } else if uptime >= 0.65 { - return "#cc8111" + return badgeColorHexBad } - return "#c7130a" + return badgeColorHexVeryBad +} + +// responseTimeBadgeHandler handles the automatic generation of badge based on the group name and service name passed. +// +// Valid values for {duration}: 7d, 24h, 1h +func responseTimeBadgeHandler(writer http.ResponseWriter, request *http.Request) { + variables := mux.Vars(request) + duration := variables["duration"] + var from time.Time + switch duration { + case "7d": + from = time.Now().Add(-7 * 24 * time.Hour) + case "24h": + from = time.Now().Add(-24 * time.Hour) + case "1h": + from = time.Now().Add(-time.Hour) + default: + writer.WriteHeader(http.StatusBadRequest) + _, _ = writer.Write([]byte("Durations supported: 7d, 24h, 1h")) + return + } + key := variables["key"] + averageResponseTime, err := storage.Get().GetAverageResponseTimeByKey(key, from, time.Now()) + if err != nil { + if err == common.ErrServiceNotFound { + writer.WriteHeader(http.StatusNotFound) + } else if err == common.ErrInvalidTimeRange { + writer.WriteHeader(http.StatusBadRequest) + } else { + writer.WriteHeader(http.StatusInternalServerError) + } + _, _ = writer.Write([]byte(err.Error())) + return + } + formattedDate := time.Now().Format(http.TimeFormat) + writer.Header().Set("Cache-Control", "no-cache, no-store, must-revalidate") + writer.Header().Set("Date", formattedDate) + writer.Header().Set("Expires", formattedDate) + writer.Header().Set("Content-Type", "image/svg+xml") + _, _ = writer.Write(generateResponseTimeBadgeSVG(duration, averageResponseTime)) +} + +func generateResponseTimeBadgeSVG(duration string, averageResponseTime int) []byte { + var labelWidth, valueWidth int + switch duration { + case "7d": + labelWidth = 105 + case "24h": + labelWidth = 110 + case "1h": + labelWidth = 105 + default: + } + color := getBadgeColorFromResponseTime(averageResponseTime) + sanitizedValue := strconv.Itoa(averageResponseTime) + "ms" + valueWidth = len(sanitizedValue) * 11 + width := labelWidth + valueWidth + labelX := labelWidth / 2 + valueX := labelWidth + (valueWidth / 2) + svg := []byte(fmt.Sprintf(` + + + + + + + + + + + + + + + response time %s + + + response time %s + + + %s + + + %s + + +`, width, width, labelWidth, color, labelWidth, valueWidth, labelWidth, width, labelX, duration, labelX, duration, valueX, sanitizedValue, valueX, sanitizedValue)) + return svg +} + +func getBadgeColorFromResponseTime(responseTime int) string { + if responseTime <= 50 { + return badgeColorHexAwesome + } else if responseTime <= 200 { + return badgeColorHexGreat + } else if responseTime <= 300 { + return badgeColorHexGood + } else if responseTime <= 500 { + return badgeColorHexPassable + } else if responseTime <= 750 { + return badgeColorHexBad + } + return badgeColorHexVeryBad } diff --git a/controller/badge_test.go b/controller/badge_test.go index 52c8182a..80ce9d92 100644 --- a/controller/badge_test.go +++ b/controller/badge_test.go @@ -1,32 +1,116 @@ package controller import ( + "strconv" "testing" ) func TestGetBadgeColorFromUptime(t *testing.T) { - if getBadgeColorFromUptime(1) != "#40cc11" { - t.Error("expected #40cc11 from an uptime of 1, got", getBadgeColorFromUptime(1)) + scenarios := []struct { + Uptime float64 + ExpectedColor string + }{ + { + Uptime: 1, + ExpectedColor: badgeColorHexAwesome, + }, + { + Uptime: 0.99, + ExpectedColor: badgeColorHexAwesome, + }, + { + Uptime: 0.97, + ExpectedColor: badgeColorHexGreat, + }, + { + Uptime: 0.95, + ExpectedColor: badgeColorHexGreat, + }, + { + Uptime: 0.93, + ExpectedColor: badgeColorHexGood, + }, + { + Uptime: 0.9, + ExpectedColor: badgeColorHexGood, + }, + { + Uptime: 0.85, + ExpectedColor: badgeColorHexPassable, + }, + { + Uptime: 0.7, + ExpectedColor: badgeColorHexBad, + }, + { + Uptime: 0.65, + ExpectedColor: badgeColorHexBad, + }, + { + Uptime: 0.6, + ExpectedColor: badgeColorHexVeryBad, + }, } - if getBadgeColorFromUptime(0.95) != "#94cc11" { - t.Error("expected #94cc11 from an uptime of 0.95, got", getBadgeColorFromUptime(0.95)) - } - if getBadgeColorFromUptime(0.9) != "#ccc311" { - t.Error("expected #c9cc11 from an uptime of 0.9, got", getBadgeColorFromUptime(0.9)) - } - if getBadgeColorFromUptime(0.85) != "#ccb311" { - t.Error("expected #ccb311 from an uptime of 0.85, got", getBadgeColorFromUptime(0.85)) - } - if getBadgeColorFromUptime(0.75) != "#cc8111" { - t.Error("expected #cc8111 from an uptime of 0.75, got", getBadgeColorFromUptime(0.75)) - } - if getBadgeColorFromUptime(0.6) != "#c7130a" { - t.Error("expected #c7130a from an uptime of 0.6, got", getBadgeColorFromUptime(0.6)) - } - if getBadgeColorFromUptime(0.25) != "#c7130a" { - t.Error("expected #c7130a from an uptime of 0.25, got", getBadgeColorFromUptime(0.25)) - } - if getBadgeColorFromUptime(0) != "#c7130a" { - t.Error("expected #c7130a from an uptime of 0, got", getBadgeColorFromUptime(0)) + for _, scenario := range scenarios { + t.Run("uptime-"+strconv.Itoa(int(scenario.Uptime*100)), func(t *testing.T) { + if getBadgeColorFromUptime(scenario.Uptime) != scenario.ExpectedColor { + t.Errorf("expected %s from %f, got %v", scenario.ExpectedColor, scenario.Uptime, getBadgeColorFromUptime(scenario.Uptime)) + } + }) + } +} + +func TestGetBadgeColorFromResponseTime(t *testing.T) { + scenarios := []struct { + ResponseTime int + ExpectedColor string + }{ + { + ResponseTime: 10, + ExpectedColor: badgeColorHexAwesome, + }, + { + ResponseTime: 50, + ExpectedColor: badgeColorHexAwesome, + }, + { + ResponseTime: 75, + ExpectedColor: badgeColorHexGreat, + }, + { + ResponseTime: 150, + ExpectedColor: badgeColorHexGreat, + }, + { + ResponseTime: 201, + ExpectedColor: badgeColorHexGood, + }, + { + ResponseTime: 300, + ExpectedColor: badgeColorHexGood, + }, + { + ResponseTime: 301, + ExpectedColor: badgeColorHexPassable, + }, + { + ResponseTime: 450, + ExpectedColor: badgeColorHexPassable, + }, + { + ResponseTime: 700, + ExpectedColor: badgeColorHexBad, + }, + { + ResponseTime: 1500, + ExpectedColor: badgeColorHexVeryBad, + }, + } + for _, scenario := range scenarios { + t.Run("response-time-"+strconv.Itoa(scenario.ResponseTime), func(t *testing.T) { + if getBadgeColorFromResponseTime(scenario.ResponseTime) != scenario.ExpectedColor { + t.Errorf("expected %s from %d, got %v", scenario.ExpectedColor, scenario.ResponseTime, getBadgeColorFromResponseTime(scenario.ResponseTime)) + } + }) } } diff --git a/controller/chart.go b/controller/chart.go new file mode 100644 index 00000000..6e23139d --- /dev/null +++ b/controller/chart.go @@ -0,0 +1,110 @@ +package controller + +import ( + "math" + "net/http" + "sort" + "time" + + "github.com/TwinProduction/gatus/storage" + "github.com/TwinProduction/gatus/storage/store/common" + "github.com/gorilla/mux" + "github.com/wcharczuk/go-chart/v2" + "github.com/wcharczuk/go-chart/v2/drawing" +) + +const timeFormat = "3:04PM" + +var ( + gridStyle = chart.Style{ + StrokeColor: drawing.Color{R: 119, G: 119, B: 119, A: 40}, + StrokeWidth: 1.0, + } + axisStyle = chart.Style{ + FontColor: drawing.Color{R: 119, G: 119, B: 119, A: 255}, + } + transparentStyle = chart.Style{ + FillColor: drawing.Color{R: 255, G: 255, B: 255, A: 0}, + } +) + +func responseTimeChartHandler(writer http.ResponseWriter, r *http.Request) { + vars := mux.Vars(r) + duration := vars["duration"] + var from time.Time + switch duration { + case "7d": + from = time.Now().Add(-24 * 7 * time.Hour) + case "24h": + from = time.Now().Add(-24 * time.Hour) + default: + writer.WriteHeader(http.StatusBadRequest) + _, _ = writer.Write([]byte("Durations supported: 7d, 24h")) + return + } + hourlyAverageResponseTime, err := storage.Get().GetHourlyAverageResponseTimeByKey(vars["key"], from, time.Now()) + if err != nil { + if err == common.ErrServiceNotFound { + writer.WriteHeader(http.StatusNotFound) + } else if err == common.ErrInvalidTimeRange { + writer.WriteHeader(http.StatusBadRequest) + } else { + writer.WriteHeader(http.StatusInternalServerError) + } + _, _ = writer.Write([]byte(err.Error())) + return + } + series := chart.TimeSeries{ + Name: "Average response time per hour", + Style: chart.Style{ + StrokeWidth: 1.5, + DotWidth: 2.0, + }, + } + keys := make([]int, 0, len(hourlyAverageResponseTime)) + for hourlyTimestamp := range hourlyAverageResponseTime { + keys = append(keys, int(hourlyTimestamp)) + } + sort.Ints(keys) + var maxAverageResponseTime float64 + for _, key := range keys { + averageResponseTime := float64(hourlyAverageResponseTime[int64(key)]) + if maxAverageResponseTime < averageResponseTime { + maxAverageResponseTime = averageResponseTime + } + series.XValues = append(series.XValues, time.Unix(int64(key), 0)) + series.YValues = append(series.YValues, averageResponseTime) + } + graph := chart.Chart{ + Canvas: transparentStyle, + Background: transparentStyle, + Width: 1280, + Height: 300, + XAxis: chart.XAxis{ + ValueFormatter: chart.TimeValueFormatterWithFormat(timeFormat), + GridMajorStyle: gridStyle, + GridMinorStyle: gridStyle, + Style: axisStyle, + NameStyle: axisStyle, + }, + YAxis: chart.YAxis{ + Name: "Average response time", + GridMajorStyle: gridStyle, + GridMinorStyle: gridStyle, + Style: axisStyle, + NameStyle: axisStyle, + Range: &chart.ContinuousRange{ + Min: 0, + Max: math.Ceil(maxAverageResponseTime * 1.25), + }, + }, + Series: []chart.Series{series}, + } + writer.Header().Set("Content-Type", "image/svg+xml") + if err := graph.Render(chart.SVG, writer); err != nil { + writer.Header().Set("Content-Type", "text/plain") + writer.WriteHeader(http.StatusInternalServerError) + _, _ = writer.Write([]byte(err.Error())) + return + } +} diff --git a/controller/controller.go b/controller/controller.go index 4b0199ca..0b16c8d3 100644 --- a/controller/controller.go +++ b/controller/controller.go @@ -75,9 +75,18 @@ func CreateRouter(securityConfig *security.Config, enabledMetrics bool) *mux.Rou } router.Handle("/health", health.Handler().WithJSON(true)).Methods("GET") router.HandleFunc("/favicon.ico", favIconHandler).Methods("GET") - router.HandleFunc("/api/v1/statuses", secureIfNecessary(securityConfig, serviceStatusesHandler)).Methods("GET") // No GzipHandler for this one, because we cache the content + // Deprecated endpoints + router.HandleFunc("/api/v1/statuses", secureIfNecessary(securityConfig, serviceStatusesHandler)).Methods("GET") // No GzipHandler for this one, because we cache the content as Gzipped already router.HandleFunc("/api/v1/statuses/{key}", secureIfNecessary(securityConfig, GzipHandlerFunc(serviceStatusHandler))).Methods("GET") - router.HandleFunc("/api/v1/badges/uptime/{duration}/{identifier}", badgeHandler).Methods("GET") + router.HandleFunc("/api/v1/badges/uptime/{duration}/{identifier}", uptimeBadgeHandler).Methods("GET") + // New endpoints + router.HandleFunc("/api/v1/services/statuses", secureIfNecessary(securityConfig, serviceStatusesHandler)).Methods("GET") // No GzipHandler for this one, because we cache the content as Gzipped already + router.HandleFunc("/api/v1/services/{key}/statuses", secureIfNecessary(securityConfig, GzipHandlerFunc(serviceStatusHandler))).Methods("GET") + // TODO: router.HandleFunc("/api/v1/services/{key}/uptimes", secureIfNecessary(securityConfig, GzipHandlerFunc(serviceUptimesHandler))).Methods("GET") + // TODO: router.HandleFunc("/api/v1/services/{key}/events", secureIfNecessary(securityConfig, GzipHandlerFunc(serviceEventsHandler))).Methods("GET") + router.HandleFunc("/api/v1/services/{key}/uptimes/{duration}/badge.svg", uptimeBadgeHandler).Methods("GET") + router.HandleFunc("/api/v1/services/{key}/response-times/{duration}/badge.svg", responseTimeBadgeHandler).Methods("GET") + router.HandleFunc("/api/v1/services/{key}/response-times/{duration}/chart.svg", responseTimeChartHandler).Methods("GET") // SPA router.HandleFunc("/services/{service}", spaHandler).Methods("GET") // Everything else falls back on static content diff --git a/controller/controller_test.go b/controller/controller_test.go index b12c4656..d147e143 100644 --- a/controller/controller_test.go +++ b/controller/controller_test.go @@ -123,60 +123,167 @@ func TestCreateRouter(t *testing.T) { ExpectedCode: http.StatusOK, }, { - Name: "badges-1h", + Name: "old-badge-1h", Path: "/api/v1/badges/uptime/1h/core_frontend.svg", ExpectedCode: http.StatusOK, }, { - Name: "badges-24h", + Name: "old-badge-24h", Path: "/api/v1/badges/uptime/24h/core_backend.svg", ExpectedCode: http.StatusOK, }, { - Name: "badges-7d", + Name: "old-badge-7d", Path: "/api/v1/badges/uptime/7d/core_frontend.svg", ExpectedCode: http.StatusOK, }, { - Name: "badges-with-invalid-duration", + Name: "old-badge-with-invalid-duration", Path: "/api/v1/badges/uptime/3d/core_backend.svg", ExpectedCode: http.StatusBadRequest, }, { - Name: "badges-for-invalid-key", + Name: "old-badge-for-invalid-key", Path: "/api/v1/badges/uptime/7d/invalid_key.svg", ExpectedCode: http.StatusNotFound, }, { - Name: "service-statuses", + Name: "badge-uptime-1h", + Path: "/api/v1/services/core_frontend/uptimes/1h/badge.svg", + ExpectedCode: http.StatusOK, + }, + { + Name: "badge-uptime-24h", + Path: "/api/v1/services/core_backend/uptimes/24h/badge.svg", + ExpectedCode: http.StatusOK, + }, + { + Name: "badge-uptime-7d", + Path: "/api/v1/services/core_frontend/uptimes/7d/badge.svg", + ExpectedCode: http.StatusOK, + }, + { + Name: "badge-uptime-with-invalid-duration", + Path: "/api/v1/services/core_backend/uptimes/3d/badge.svg", + ExpectedCode: http.StatusBadRequest, + }, + { + Name: "badge-uptime-for-invalid-key", + Path: "/api/v1/services/invalid_key/uptimes/7d/badge.svg", + ExpectedCode: http.StatusNotFound, + }, + { + Name: "badge-response-time-1h", + Path: "/api/v1/services/core_frontend/response-times/1h/badge.svg", + ExpectedCode: http.StatusOK, + }, + { + Name: "badge-response-time-24h", + Path: "/api/v1/services/core_backend/response-times/24h/badge.svg", + ExpectedCode: http.StatusOK, + }, + { + Name: "badge-response-time-7d", + Path: "/api/v1/services/core_frontend/response-times/7d/badge.svg", + ExpectedCode: http.StatusOK, + }, + { + Name: "badge-response-time-with-invalid-duration", + Path: "/api/v1/services/core_backend/response-times/3d/badge.svg", + ExpectedCode: http.StatusBadRequest, + }, + { + Name: "badge-response-time-for-invalid-key", + Path: "/api/v1/services/invalid_key/response-times/7d/badge.svg", + ExpectedCode: http.StatusNotFound, + }, + { + Name: "chart-response-time-24h", + Path: "/api/v1/services/core_backend/response-times/24h/chart.svg", + ExpectedCode: http.StatusOK, + }, + { + Name: "chart-response-time-7d", + Path: "/api/v1/services/core_frontend/response-times/7d/chart.svg", + ExpectedCode: http.StatusOK, + }, + { + Name: "chart-response-time-with-invalid-duration", + Path: "/api/v1/services/core_backend/response-times/3d/chart.svg", + ExpectedCode: http.StatusBadRequest, + }, + { + Name: "chart-response-time-for-invalid-key", + Path: "/api/v1/services/invalid_key/response-times/7d/chart.svg", + ExpectedCode: http.StatusNotFound, + }, + { + Name: "old-service-statuses", Path: "/api/v1/statuses", ExpectedCode: http.StatusOK, }, { - Name: "service-statuses-gzip", + Name: "old-service-statuses-gzip", Path: "/api/v1/statuses", ExpectedCode: http.StatusOK, Gzip: true, }, + { + Name: "old-service-statuses-pagination", + Path: "/api/v1/statuses?page=1&pageSize=20", + ExpectedCode: http.StatusOK, + }, + { + Name: "old-service-status", + Path: "/api/v1/statuses/core_frontend", + ExpectedCode: http.StatusOK, + }, + { + Name: "old-service-status-gzip", + Path: "/api/v1/statuses/core_frontend", + ExpectedCode: http.StatusOK, + Gzip: true, + }, + { + Name: "old-service-status-for-invalid-key", + Path: "/api/v1/statuses/invalid_key", + ExpectedCode: http.StatusNotFound, + }, + { + Name: "service-statuses", + Path: "/api/v1/services/statuses", + ExpectedCode: http.StatusOK, + }, + { + Name: "service-statuses-gzip", + Path: "/api/v1/services/statuses", + ExpectedCode: http.StatusOK, + Gzip: true, + }, { Name: "service-statuses-pagination", - Path: "/api/v1/statuses?page=1&pageSize=20", + Path: "/api/v1/services/statuses?page=1&pageSize=20", ExpectedCode: http.StatusOK, }, { Name: "service-status", - Path: "/api/v1/statuses/core_frontend", + Path: "/api/v1/services/core_frontend/statuses", ExpectedCode: http.StatusOK, }, { Name: "service-status-gzip", - Path: "/api/v1/statuses/core_frontend", + Path: "/api/v1/services/core_frontend/statuses", ExpectedCode: http.StatusOK, Gzip: true, }, + { + Name: "service-status-pagination", + Path: "/api/v1/services/core_frontend/statuses?page=1&pageSize=20", + ExpectedCode: http.StatusOK, + }, { Name: "service-status-for-invalid-key", - Path: "/api/v1/statuses/invalid_key", + Path: "/api/v1/services/invalid_key/statuses", ExpectedCode: http.StatusNotFound, }, { diff --git a/vendor/github.com/golang/freetype/AUTHORS b/vendor/github.com/golang/freetype/AUTHORS new file mode 100644 index 00000000..5773ac7e --- /dev/null +++ b/vendor/github.com/golang/freetype/AUTHORS @@ -0,0 +1,20 @@ +# This is the official list of Freetype-Go authors for copyright purposes. +# This file is distinct from the CONTRIBUTORS files. +# See the latter for an explanation. +# +# Freetype-Go is derived from Freetype, which is written in C. The latter +# is copyright 1996-2010 David Turner, Robert Wilhelm, and Werner Lemberg. + +# Names should be added to this file as +# Name or Organization +# The email address is not required for organizations. + +# Please keep the list sorted. + +Google Inc. +Jeff R. Allen +Maksim Kochkin +Michael Fogleman +Rémy Oudompheng +Roger Peppe +Steven Edwards diff --git a/vendor/github.com/golang/freetype/CONTRIBUTORS b/vendor/github.com/golang/freetype/CONTRIBUTORS new file mode 100644 index 00000000..7a1b0a27 --- /dev/null +++ b/vendor/github.com/golang/freetype/CONTRIBUTORS @@ -0,0 +1,38 @@ +# This is the official list of people who can contribute +# (and typically have contributed) code to the Freetype-Go repository. +# The AUTHORS file lists the copyright holders; this file +# lists people. For example, Google employees are listed here +# but not in AUTHORS, because Google holds the copyright. +# +# The submission process automatically checks to make sure +# that people submitting code are listed in this file (by email address). +# +# Names should be added to this file only after verifying that +# the individual or the individual's organization has agreed to +# the appropriate Contributor License Agreement, found here: +# +# http://code.google.com/legal/individual-cla-v1.0.html +# http://code.google.com/legal/corporate-cla-v1.0.html +# +# The agreement for individuals can be filled out on the web. +# +# When adding J Random Contributor's name to this file, +# either J's name or J's organization's name should be +# added to the AUTHORS file, depending on whether the +# individual or corporate CLA was used. + +# Names should be added to this file like so: +# Name + +# Please keep the list sorted. + +Andrew Gerrand +Jeff R. Allen +Maksim Kochkin +Michael Fogleman +Nigel Tao +Rémy Oudompheng +Rob Pike +Roger Peppe +Russ Cox +Steven Edwards diff --git a/vendor/github.com/golang/freetype/LICENSE b/vendor/github.com/golang/freetype/LICENSE new file mode 100644 index 00000000..e854ba5d --- /dev/null +++ b/vendor/github.com/golang/freetype/LICENSE @@ -0,0 +1,12 @@ +Use of the Freetype-Go software is subject to your choice of exactly one of +the following two licenses: + * The FreeType License, which is similar to the original BSD license with + an advertising clause, or + * The GNU General Public License (GPL), version 2 or later. + +The text of these licenses are available in the licenses/ftl.txt and the +licenses/gpl.txt files respectively. They are also available at +http://freetype.sourceforge.net/license.html + +The Luxi fonts in the testdata directory are licensed separately. See the +testdata/COPYING file for details. diff --git a/vendor/github.com/golang/freetype/raster/geom.go b/vendor/github.com/golang/freetype/raster/geom.go new file mode 100644 index 00000000..f3696ea9 --- /dev/null +++ b/vendor/github.com/golang/freetype/raster/geom.go @@ -0,0 +1,245 @@ +// Copyright 2010 The Freetype-Go Authors. All rights reserved. +// Use of this source code is governed by your choice of either the +// FreeType License or the GNU General Public License version 2 (or +// any later version), both of which can be found in the LICENSE file. + +package raster + +import ( + "fmt" + "math" + + "golang.org/x/image/math/fixed" +) + +// maxAbs returns the maximum of abs(a) and abs(b). +func maxAbs(a, b fixed.Int26_6) fixed.Int26_6 { + if a < 0 { + a = -a + } + if b < 0 { + b = -b + } + if a < b { + return b + } + return a +} + +// pNeg returns the vector -p, or equivalently p rotated by 180 degrees. +func pNeg(p fixed.Point26_6) fixed.Point26_6 { + return fixed.Point26_6{-p.X, -p.Y} +} + +// pDot returns the dot product p·q. +func pDot(p fixed.Point26_6, q fixed.Point26_6) fixed.Int52_12 { + px, py := int64(p.X), int64(p.Y) + qx, qy := int64(q.X), int64(q.Y) + return fixed.Int52_12(px*qx + py*qy) +} + +// pLen returns the length of the vector p. +func pLen(p fixed.Point26_6) fixed.Int26_6 { + // TODO(nigeltao): use fixed point math. + x := float64(p.X) + y := float64(p.Y) + return fixed.Int26_6(math.Sqrt(x*x + y*y)) +} + +// pNorm returns the vector p normalized to the given length, or zero if p is +// degenerate. +func pNorm(p fixed.Point26_6, length fixed.Int26_6) fixed.Point26_6 { + d := pLen(p) + if d == 0 { + return fixed.Point26_6{} + } + s, t := int64(length), int64(d) + x := int64(p.X) * s / t + y := int64(p.Y) * s / t + return fixed.Point26_6{fixed.Int26_6(x), fixed.Int26_6(y)} +} + +// pRot45CW returns the vector p rotated clockwise by 45 degrees. +// +// Note that the Y-axis grows downwards, so {1, 0}.Rot45CW is {1/√2, 1/√2}. +func pRot45CW(p fixed.Point26_6) fixed.Point26_6 { + // 181/256 is approximately 1/√2, or sin(π/4). + px, py := int64(p.X), int64(p.Y) + qx := (+px - py) * 181 / 256 + qy := (+px + py) * 181 / 256 + return fixed.Point26_6{fixed.Int26_6(qx), fixed.Int26_6(qy)} +} + +// pRot90CW returns the vector p rotated clockwise by 90 degrees. +// +// Note that the Y-axis grows downwards, so {1, 0}.Rot90CW is {0, 1}. +func pRot90CW(p fixed.Point26_6) fixed.Point26_6 { + return fixed.Point26_6{-p.Y, p.X} +} + +// pRot135CW returns the vector p rotated clockwise by 135 degrees. +// +// Note that the Y-axis grows downwards, so {1, 0}.Rot135CW is {-1/√2, 1/√2}. +func pRot135CW(p fixed.Point26_6) fixed.Point26_6 { + // 181/256 is approximately 1/√2, or sin(π/4). + px, py := int64(p.X), int64(p.Y) + qx := (-px - py) * 181 / 256 + qy := (+px - py) * 181 / 256 + return fixed.Point26_6{fixed.Int26_6(qx), fixed.Int26_6(qy)} +} + +// pRot45CCW returns the vector p rotated counter-clockwise by 45 degrees. +// +// Note that the Y-axis grows downwards, so {1, 0}.Rot45CCW is {1/√2, -1/√2}. +func pRot45CCW(p fixed.Point26_6) fixed.Point26_6 { + // 181/256 is approximately 1/√2, or sin(π/4). + px, py := int64(p.X), int64(p.Y) + qx := (+px + py) * 181 / 256 + qy := (-px + py) * 181 / 256 + return fixed.Point26_6{fixed.Int26_6(qx), fixed.Int26_6(qy)} +} + +// pRot90CCW returns the vector p rotated counter-clockwise by 90 degrees. +// +// Note that the Y-axis grows downwards, so {1, 0}.Rot90CCW is {0, -1}. +func pRot90CCW(p fixed.Point26_6) fixed.Point26_6 { + return fixed.Point26_6{p.Y, -p.X} +} + +// pRot135CCW returns the vector p rotated counter-clockwise by 135 degrees. +// +// Note that the Y-axis grows downwards, so {1, 0}.Rot135CCW is {-1/√2, -1/√2}. +func pRot135CCW(p fixed.Point26_6) fixed.Point26_6 { + // 181/256 is approximately 1/√2, or sin(π/4). + px, py := int64(p.X), int64(p.Y) + qx := (-px + py) * 181 / 256 + qy := (-px - py) * 181 / 256 + return fixed.Point26_6{fixed.Int26_6(qx), fixed.Int26_6(qy)} +} + +// An Adder accumulates points on a curve. +type Adder interface { + // Start starts a new curve at the given point. + Start(a fixed.Point26_6) + // Add1 adds a linear segment to the current curve. + Add1(b fixed.Point26_6) + // Add2 adds a quadratic segment to the current curve. + Add2(b, c fixed.Point26_6) + // Add3 adds a cubic segment to the current curve. + Add3(b, c, d fixed.Point26_6) +} + +// A Path is a sequence of curves, and a curve is a start point followed by a +// sequence of linear, quadratic or cubic segments. +type Path []fixed.Int26_6 + +// String returns a human-readable representation of a Path. +func (p Path) String() string { + s := "" + for i := 0; i < len(p); { + if i != 0 { + s += " " + } + switch p[i] { + case 0: + s += "S0" + fmt.Sprint([]fixed.Int26_6(p[i+1:i+3])) + i += 4 + case 1: + s += "A1" + fmt.Sprint([]fixed.Int26_6(p[i+1:i+3])) + i += 4 + case 2: + s += "A2" + fmt.Sprint([]fixed.Int26_6(p[i+1:i+5])) + i += 6 + case 3: + s += "A3" + fmt.Sprint([]fixed.Int26_6(p[i+1:i+7])) + i += 8 + default: + panic("freetype/raster: bad path") + } + } + return s +} + +// Clear cancels any previous calls to p.Start or p.AddXxx. +func (p *Path) Clear() { + *p = (*p)[:0] +} + +// Start starts a new curve at the given point. +func (p *Path) Start(a fixed.Point26_6) { + *p = append(*p, 0, a.X, a.Y, 0) +} + +// Add1 adds a linear segment to the current curve. +func (p *Path) Add1(b fixed.Point26_6) { + *p = append(*p, 1, b.X, b.Y, 1) +} + +// Add2 adds a quadratic segment to the current curve. +func (p *Path) Add2(b, c fixed.Point26_6) { + *p = append(*p, 2, b.X, b.Y, c.X, c.Y, 2) +} + +// Add3 adds a cubic segment to the current curve. +func (p *Path) Add3(b, c, d fixed.Point26_6) { + *p = append(*p, 3, b.X, b.Y, c.X, c.Y, d.X, d.Y, 3) +} + +// AddPath adds the Path q to p. +func (p *Path) AddPath(q Path) { + *p = append(*p, q...) +} + +// AddStroke adds a stroked Path. +func (p *Path) AddStroke(q Path, width fixed.Int26_6, cr Capper, jr Joiner) { + Stroke(p, q, width, cr, jr) +} + +// firstPoint returns the first point in a non-empty Path. +func (p Path) firstPoint() fixed.Point26_6 { + return fixed.Point26_6{p[1], p[2]} +} + +// lastPoint returns the last point in a non-empty Path. +func (p Path) lastPoint() fixed.Point26_6 { + return fixed.Point26_6{p[len(p)-3], p[len(p)-2]} +} + +// addPathReversed adds q reversed to p. +// For example, if q consists of a linear segment from A to B followed by a +// quadratic segment from B to C to D, then the values of q looks like: +// index: 01234567890123 +// value: 0AA01BB12CCDD2 +// So, when adding q backwards to p, we want to Add2(C, B) followed by Add1(A). +func addPathReversed(p Adder, q Path) { + if len(q) == 0 { + return + } + i := len(q) - 1 + for { + switch q[i] { + case 0: + return + case 1: + i -= 4 + p.Add1( + fixed.Point26_6{q[i-2], q[i-1]}, + ) + case 2: + i -= 6 + p.Add2( + fixed.Point26_6{q[i+2], q[i+3]}, + fixed.Point26_6{q[i-2], q[i-1]}, + ) + case 3: + i -= 8 + p.Add3( + fixed.Point26_6{q[i+4], q[i+5]}, + fixed.Point26_6{q[i+2], q[i+3]}, + fixed.Point26_6{q[i-2], q[i-1]}, + ) + default: + panic("freetype/raster: bad path") + } + } +} diff --git a/vendor/github.com/golang/freetype/raster/paint.go b/vendor/github.com/golang/freetype/raster/paint.go new file mode 100644 index 00000000..652256cc --- /dev/null +++ b/vendor/github.com/golang/freetype/raster/paint.go @@ -0,0 +1,287 @@ +// Copyright 2010 The Freetype-Go Authors. All rights reserved. +// Use of this source code is governed by your choice of either the +// FreeType License or the GNU General Public License version 2 (or +// any later version), both of which can be found in the LICENSE file. + +package raster + +import ( + "image" + "image/color" + "image/draw" + "math" +) + +// A Span is a horizontal segment of pixels with constant alpha. X0 is an +// inclusive bound and X1 is exclusive, the same as for slices. A fully opaque +// Span has Alpha == 0xffff. +type Span struct { + Y, X0, X1 int + Alpha uint32 +} + +// A Painter knows how to paint a batch of Spans. Rasterization may involve +// Painting multiple batches, and done will be true for the final batch. The +// Spans' Y values are monotonically increasing during a rasterization. Paint +// may use all of ss as scratch space during the call. +type Painter interface { + Paint(ss []Span, done bool) +} + +// The PainterFunc type adapts an ordinary function to the Painter interface. +type PainterFunc func(ss []Span, done bool) + +// Paint just delegates the call to f. +func (f PainterFunc) Paint(ss []Span, done bool) { f(ss, done) } + +// An AlphaOverPainter is a Painter that paints Spans onto a *image.Alpha using +// the Over Porter-Duff composition operator. +type AlphaOverPainter struct { + Image *image.Alpha +} + +// Paint satisfies the Painter interface. +func (r AlphaOverPainter) Paint(ss []Span, done bool) { + b := r.Image.Bounds() + for _, s := range ss { + if s.Y < b.Min.Y { + continue + } + if s.Y >= b.Max.Y { + return + } + if s.X0 < b.Min.X { + s.X0 = b.Min.X + } + if s.X1 > b.Max.X { + s.X1 = b.Max.X + } + if s.X0 >= s.X1 { + continue + } + base := (s.Y-r.Image.Rect.Min.Y)*r.Image.Stride - r.Image.Rect.Min.X + p := r.Image.Pix[base+s.X0 : base+s.X1] + a := int(s.Alpha >> 8) + for i, c := range p { + v := int(c) + p[i] = uint8((v*255 + (255-v)*a) / 255) + } + } +} + +// NewAlphaOverPainter creates a new AlphaOverPainter for the given image. +func NewAlphaOverPainter(m *image.Alpha) AlphaOverPainter { + return AlphaOverPainter{m} +} + +// An AlphaSrcPainter is a Painter that paints Spans onto a *image.Alpha using +// the Src Porter-Duff composition operator. +type AlphaSrcPainter struct { + Image *image.Alpha +} + +// Paint satisfies the Painter interface. +func (r AlphaSrcPainter) Paint(ss []Span, done bool) { + b := r.Image.Bounds() + for _, s := range ss { + if s.Y < b.Min.Y { + continue + } + if s.Y >= b.Max.Y { + return + } + if s.X0 < b.Min.X { + s.X0 = b.Min.X + } + if s.X1 > b.Max.X { + s.X1 = b.Max.X + } + if s.X0 >= s.X1 { + continue + } + base := (s.Y-r.Image.Rect.Min.Y)*r.Image.Stride - r.Image.Rect.Min.X + p := r.Image.Pix[base+s.X0 : base+s.X1] + color := uint8(s.Alpha >> 8) + for i := range p { + p[i] = color + } + } +} + +// NewAlphaSrcPainter creates a new AlphaSrcPainter for the given image. +func NewAlphaSrcPainter(m *image.Alpha) AlphaSrcPainter { + return AlphaSrcPainter{m} +} + +// An RGBAPainter is a Painter that paints Spans onto a *image.RGBA. +type RGBAPainter struct { + // Image is the image to compose onto. + Image *image.RGBA + // Op is the Porter-Duff composition operator. + Op draw.Op + // cr, cg, cb and ca are the 16-bit color to paint the spans. + cr, cg, cb, ca uint32 +} + +// Paint satisfies the Painter interface. +func (r *RGBAPainter) Paint(ss []Span, done bool) { + b := r.Image.Bounds() + for _, s := range ss { + if s.Y < b.Min.Y { + continue + } + if s.Y >= b.Max.Y { + return + } + if s.X0 < b.Min.X { + s.X0 = b.Min.X + } + if s.X1 > b.Max.X { + s.X1 = b.Max.X + } + if s.X0 >= s.X1 { + continue + } + // This code mimics drawGlyphOver in $GOROOT/src/image/draw/draw.go. + ma := s.Alpha + const m = 1<<16 - 1 + i0 := (s.Y-r.Image.Rect.Min.Y)*r.Image.Stride + (s.X0-r.Image.Rect.Min.X)*4 + i1 := i0 + (s.X1-s.X0)*4 + if r.Op == draw.Over { + for i := i0; i < i1; i += 4 { + dr := uint32(r.Image.Pix[i+0]) + dg := uint32(r.Image.Pix[i+1]) + db := uint32(r.Image.Pix[i+2]) + da := uint32(r.Image.Pix[i+3]) + a := (m - (r.ca * ma / m)) * 0x101 + r.Image.Pix[i+0] = uint8((dr*a + r.cr*ma) / m >> 8) + r.Image.Pix[i+1] = uint8((dg*a + r.cg*ma) / m >> 8) + r.Image.Pix[i+2] = uint8((db*a + r.cb*ma) / m >> 8) + r.Image.Pix[i+3] = uint8((da*a + r.ca*ma) / m >> 8) + } + } else { + for i := i0; i < i1; i += 4 { + r.Image.Pix[i+0] = uint8(r.cr * ma / m >> 8) + r.Image.Pix[i+1] = uint8(r.cg * ma / m >> 8) + r.Image.Pix[i+2] = uint8(r.cb * ma / m >> 8) + r.Image.Pix[i+3] = uint8(r.ca * ma / m >> 8) + } + } + } +} + +// SetColor sets the color to paint the spans. +func (r *RGBAPainter) SetColor(c color.Color) { + r.cr, r.cg, r.cb, r.ca = c.RGBA() +} + +// NewRGBAPainter creates a new RGBAPainter for the given image. +func NewRGBAPainter(m *image.RGBA) *RGBAPainter { + return &RGBAPainter{Image: m} +} + +// A MonochromePainter wraps another Painter, quantizing each Span's alpha to +// be either fully opaque or fully transparent. +type MonochromePainter struct { + Painter Painter + y, x0, x1 int +} + +// Paint delegates to the wrapped Painter after quantizing each Span's alpha +// value and merging adjacent fully opaque Spans. +func (m *MonochromePainter) Paint(ss []Span, done bool) { + // We compact the ss slice, discarding any Spans whose alpha quantizes to zero. + j := 0 + for _, s := range ss { + if s.Alpha >= 0x8000 { + if m.y == s.Y && m.x1 == s.X0 { + m.x1 = s.X1 + } else { + ss[j] = Span{m.y, m.x0, m.x1, 1<<16 - 1} + j++ + m.y, m.x0, m.x1 = s.Y, s.X0, s.X1 + } + } + } + if done { + // Flush the accumulated Span. + finalSpan := Span{m.y, m.x0, m.x1, 1<<16 - 1} + if j < len(ss) { + ss[j] = finalSpan + j++ + m.Painter.Paint(ss[:j], true) + } else if j == len(ss) { + m.Painter.Paint(ss, false) + if cap(ss) > 0 { + ss = ss[:1] + } else { + ss = make([]Span, 1) + } + ss[0] = finalSpan + m.Painter.Paint(ss, true) + } else { + panic("unreachable") + } + // Reset the accumulator, so that this Painter can be re-used. + m.y, m.x0, m.x1 = 0, 0, 0 + } else { + m.Painter.Paint(ss[:j], false) + } +} + +// NewMonochromePainter creates a new MonochromePainter that wraps the given +// Painter. +func NewMonochromePainter(p Painter) *MonochromePainter { + return &MonochromePainter{Painter: p} +} + +// A GammaCorrectionPainter wraps another Painter, performing gamma-correction +// on each Span's alpha value. +type GammaCorrectionPainter struct { + // Painter is the wrapped Painter. + Painter Painter + // a is the precomputed alpha values for linear interpolation, with fully + // opaque == 0xffff. + a [256]uint16 + // gammaIsOne is whether gamma correction is a no-op. + gammaIsOne bool +} + +// Paint delegates to the wrapped Painter after performing gamma-correction on +// each Span. +func (g *GammaCorrectionPainter) Paint(ss []Span, done bool) { + if !g.gammaIsOne { + const n = 0x101 + for i, s := range ss { + if s.Alpha == 0 || s.Alpha == 0xffff { + continue + } + p, q := s.Alpha/n, s.Alpha%n + // The resultant alpha is a linear interpolation of g.a[p] and g.a[p+1]. + a := uint32(g.a[p])*(n-q) + uint32(g.a[p+1])*q + ss[i].Alpha = (a + n/2) / n + } + } + g.Painter.Paint(ss, done) +} + +// SetGamma sets the gamma value. +func (g *GammaCorrectionPainter) SetGamma(gamma float64) { + g.gammaIsOne = gamma == 1 + if g.gammaIsOne { + return + } + for i := 0; i < 256; i++ { + a := float64(i) / 0xff + a = math.Pow(a, gamma) + g.a[i] = uint16(0xffff * a) + } +} + +// NewGammaCorrectionPainter creates a new GammaCorrectionPainter that wraps +// the given Painter. +func NewGammaCorrectionPainter(p Painter, gamma float64) *GammaCorrectionPainter { + g := &GammaCorrectionPainter{Painter: p} + g.SetGamma(gamma) + return g +} diff --git a/vendor/github.com/golang/freetype/raster/raster.go b/vendor/github.com/golang/freetype/raster/raster.go new file mode 100644 index 00000000..7e6cd4e2 --- /dev/null +++ b/vendor/github.com/golang/freetype/raster/raster.go @@ -0,0 +1,601 @@ +// Copyright 2010 The Freetype-Go Authors. All rights reserved. +// Use of this source code is governed by your choice of either the +// FreeType License or the GNU General Public License version 2 (or +// any later version), both of which can be found in the LICENSE file. + +// Package raster provides an anti-aliasing 2-D rasterizer. +// +// It is part of the larger Freetype suite of font-related packages, but the +// raster package is not specific to font rasterization, and can be used +// standalone without any other Freetype package. +// +// Rasterization is done by the same area/coverage accumulation algorithm as +// the Freetype "smooth" module, and the Anti-Grain Geometry library. A +// description of the area/coverage algorithm is at +// http://projects.tuxee.net/cl-vectors/section-the-cl-aa-algorithm +package raster // import "github.com/golang/freetype/raster" + +import ( + "strconv" + + "golang.org/x/image/math/fixed" +) + +// A cell is part of a linked list (for a given yi co-ordinate) of accumulated +// area/coverage for the pixel at (xi, yi). +type cell struct { + xi int + area, cover int + next int +} + +type Rasterizer struct { + // If false, the default behavior is to use the even-odd winding fill + // rule during Rasterize. + UseNonZeroWinding bool + // An offset (in pixels) to the painted spans. + Dx, Dy int + + // The width of the Rasterizer. The height is implicit in len(cellIndex). + width int + // splitScaleN is the scaling factor used to determine how many times + // to decompose a quadratic or cubic segment into a linear approximation. + splitScale2, splitScale3 int + + // The current pen position. + a fixed.Point26_6 + // The current cell and its area/coverage being accumulated. + xi, yi int + area, cover int + + // Saved cells. + cell []cell + // Linked list of cells, one per row. + cellIndex []int + // Buffers. + cellBuf [256]cell + cellIndexBuf [64]int + spanBuf [64]Span +} + +// findCell returns the index in r.cell for the cell corresponding to +// (r.xi, r.yi). The cell is created if necessary. +func (r *Rasterizer) findCell() int { + if r.yi < 0 || r.yi >= len(r.cellIndex) { + return -1 + } + xi := r.xi + if xi < 0 { + xi = -1 + } else if xi > r.width { + xi = r.width + } + i, prev := r.cellIndex[r.yi], -1 + for i != -1 && r.cell[i].xi <= xi { + if r.cell[i].xi == xi { + return i + } + i, prev = r.cell[i].next, i + } + c := len(r.cell) + if c == cap(r.cell) { + buf := make([]cell, c, 4*c) + copy(buf, r.cell) + r.cell = buf[0 : c+1] + } else { + r.cell = r.cell[0 : c+1] + } + r.cell[c] = cell{xi, 0, 0, i} + if prev == -1 { + r.cellIndex[r.yi] = c + } else { + r.cell[prev].next = c + } + return c +} + +// saveCell saves any accumulated r.area/r.cover for (r.xi, r.yi). +func (r *Rasterizer) saveCell() { + if r.area != 0 || r.cover != 0 { + i := r.findCell() + if i != -1 { + r.cell[i].area += r.area + r.cell[i].cover += r.cover + } + r.area = 0 + r.cover = 0 + } +} + +// setCell sets the (xi, yi) cell that r is accumulating area/coverage for. +func (r *Rasterizer) setCell(xi, yi int) { + if r.xi != xi || r.yi != yi { + r.saveCell() + r.xi, r.yi = xi, yi + } +} + +// scan accumulates area/coverage for the yi'th scanline, going from +// x0 to x1 in the horizontal direction (in 26.6 fixed point co-ordinates) +// and from y0f to y1f fractional vertical units within that scanline. +func (r *Rasterizer) scan(yi int, x0, y0f, x1, y1f fixed.Int26_6) { + // Break the 26.6 fixed point X co-ordinates into integral and fractional parts. + x0i := int(x0) / 64 + x0f := x0 - fixed.Int26_6(64*x0i) + x1i := int(x1) / 64 + x1f := x1 - fixed.Int26_6(64*x1i) + + // A perfectly horizontal scan. + if y0f == y1f { + r.setCell(x1i, yi) + return + } + dx, dy := x1-x0, y1f-y0f + // A single cell scan. + if x0i == x1i { + r.area += int((x0f + x1f) * dy) + r.cover += int(dy) + return + } + // There are at least two cells. Apart from the first and last cells, + // all intermediate cells go through the full width of the cell, + // or 64 units in 26.6 fixed point format. + var ( + p, q, edge0, edge1 fixed.Int26_6 + xiDelta int + ) + if dx > 0 { + p, q = (64-x0f)*dy, dx + edge0, edge1, xiDelta = 0, 64, 1 + } else { + p, q = x0f*dy, -dx + edge0, edge1, xiDelta = 64, 0, -1 + } + yDelta, yRem := p/q, p%q + if yRem < 0 { + yDelta -= 1 + yRem += q + } + // Do the first cell. + xi, y := x0i, y0f + r.area += int((x0f + edge1) * yDelta) + r.cover += int(yDelta) + xi, y = xi+xiDelta, y+yDelta + r.setCell(xi, yi) + if xi != x1i { + // Do all the intermediate cells. + p = 64 * (y1f - y + yDelta) + fullDelta, fullRem := p/q, p%q + if fullRem < 0 { + fullDelta -= 1 + fullRem += q + } + yRem -= q + for xi != x1i { + yDelta = fullDelta + yRem += fullRem + if yRem >= 0 { + yDelta += 1 + yRem -= q + } + r.area += int(64 * yDelta) + r.cover += int(yDelta) + xi, y = xi+xiDelta, y+yDelta + r.setCell(xi, yi) + } + } + // Do the last cell. + yDelta = y1f - y + r.area += int((edge0 + x1f) * yDelta) + r.cover += int(yDelta) +} + +// Start starts a new curve at the given point. +func (r *Rasterizer) Start(a fixed.Point26_6) { + r.setCell(int(a.X/64), int(a.Y/64)) + r.a = a +} + +// Add1 adds a linear segment to the current curve. +func (r *Rasterizer) Add1(b fixed.Point26_6) { + x0, y0 := r.a.X, r.a.Y + x1, y1 := b.X, b.Y + dx, dy := x1-x0, y1-y0 + // Break the 26.6 fixed point Y co-ordinates into integral and fractional + // parts. + y0i := int(y0) / 64 + y0f := y0 - fixed.Int26_6(64*y0i) + y1i := int(y1) / 64 + y1f := y1 - fixed.Int26_6(64*y1i) + + if y0i == y1i { + // There is only one scanline. + r.scan(y0i, x0, y0f, x1, y1f) + + } else if dx == 0 { + // This is a vertical line segment. We avoid calling r.scan and instead + // manipulate r.area and r.cover directly. + var ( + edge0, edge1 fixed.Int26_6 + yiDelta int + ) + if dy > 0 { + edge0, edge1, yiDelta = 0, 64, 1 + } else { + edge0, edge1, yiDelta = 64, 0, -1 + } + x0i, yi := int(x0)/64, y0i + x0fTimes2 := (int(x0) - (64 * x0i)) * 2 + // Do the first pixel. + dcover := int(edge1 - y0f) + darea := int(x0fTimes2 * dcover) + r.area += darea + r.cover += dcover + yi += yiDelta + r.setCell(x0i, yi) + // Do all the intermediate pixels. + dcover = int(edge1 - edge0) + darea = int(x0fTimes2 * dcover) + for yi != y1i { + r.area += darea + r.cover += dcover + yi += yiDelta + r.setCell(x0i, yi) + } + // Do the last pixel. + dcover = int(y1f - edge0) + darea = int(x0fTimes2 * dcover) + r.area += darea + r.cover += dcover + + } else { + // There are at least two scanlines. Apart from the first and last + // scanlines, all intermediate scanlines go through the full height of + // the row, or 64 units in 26.6 fixed point format. + var ( + p, q, edge0, edge1 fixed.Int26_6 + yiDelta int + ) + if dy > 0 { + p, q = (64-y0f)*dx, dy + edge0, edge1, yiDelta = 0, 64, 1 + } else { + p, q = y0f*dx, -dy + edge0, edge1, yiDelta = 64, 0, -1 + } + xDelta, xRem := p/q, p%q + if xRem < 0 { + xDelta -= 1 + xRem += q + } + // Do the first scanline. + x, yi := x0, y0i + r.scan(yi, x, y0f, x+xDelta, edge1) + x, yi = x+xDelta, yi+yiDelta + r.setCell(int(x)/64, yi) + if yi != y1i { + // Do all the intermediate scanlines. + p = 64 * dx + fullDelta, fullRem := p/q, p%q + if fullRem < 0 { + fullDelta -= 1 + fullRem += q + } + xRem -= q + for yi != y1i { + xDelta = fullDelta + xRem += fullRem + if xRem >= 0 { + xDelta += 1 + xRem -= q + } + r.scan(yi, x, edge0, x+xDelta, edge1) + x, yi = x+xDelta, yi+yiDelta + r.setCell(int(x)/64, yi) + } + } + // Do the last scanline. + r.scan(yi, x, edge0, x1, y1f) + } + // The next lineTo starts from b. + r.a = b +} + +// Add2 adds a quadratic segment to the current curve. +func (r *Rasterizer) Add2(b, c fixed.Point26_6) { + // Calculate nSplit (the number of recursive decompositions) based on how + // 'curvy' it is. Specifically, how much the middle point b deviates from + // (a+c)/2. + dev := maxAbs(r.a.X-2*b.X+c.X, r.a.Y-2*b.Y+c.Y) / fixed.Int26_6(r.splitScale2) + nsplit := 0 + for dev > 0 { + dev /= 4 + nsplit++ + } + // dev is 32-bit, and nsplit++ every time we shift off 2 bits, so maxNsplit + // is 16. + const maxNsplit = 16 + if nsplit > maxNsplit { + panic("freetype/raster: Add2 nsplit too large: " + strconv.Itoa(nsplit)) + } + // Recursively decompose the curve nSplit levels deep. + var ( + pStack [2*maxNsplit + 3]fixed.Point26_6 + sStack [maxNsplit + 1]int + i int + ) + sStack[0] = nsplit + pStack[0] = c + pStack[1] = b + pStack[2] = r.a + for i >= 0 { + s := sStack[i] + p := pStack[2*i:] + if s > 0 { + // Split the quadratic curve p[:3] into an equivalent set of two + // shorter curves: p[:3] and p[2:5]. The new p[4] is the old p[2], + // and p[0] is unchanged. + mx := p[1].X + p[4].X = p[2].X + p[3].X = (p[4].X + mx) / 2 + p[1].X = (p[0].X + mx) / 2 + p[2].X = (p[1].X + p[3].X) / 2 + my := p[1].Y + p[4].Y = p[2].Y + p[3].Y = (p[4].Y + my) / 2 + p[1].Y = (p[0].Y + my) / 2 + p[2].Y = (p[1].Y + p[3].Y) / 2 + // The two shorter curves have one less split to do. + sStack[i] = s - 1 + sStack[i+1] = s - 1 + i++ + } else { + // Replace the level-0 quadratic with a two-linear-piece + // approximation. + midx := (p[0].X + 2*p[1].X + p[2].X) / 4 + midy := (p[0].Y + 2*p[1].Y + p[2].Y) / 4 + r.Add1(fixed.Point26_6{midx, midy}) + r.Add1(p[0]) + i-- + } + } +} + +// Add3 adds a cubic segment to the current curve. +func (r *Rasterizer) Add3(b, c, d fixed.Point26_6) { + // Calculate nSplit (the number of recursive decompositions) based on how + // 'curvy' it is. + dev2 := maxAbs(r.a.X-3*(b.X+c.X)+d.X, r.a.Y-3*(b.Y+c.Y)+d.Y) / fixed.Int26_6(r.splitScale2) + dev3 := maxAbs(r.a.X-2*b.X+d.X, r.a.Y-2*b.Y+d.Y) / fixed.Int26_6(r.splitScale3) + nsplit := 0 + for dev2 > 0 || dev3 > 0 { + dev2 /= 8 + dev3 /= 4 + nsplit++ + } + // devN is 32-bit, and nsplit++ every time we shift off 2 bits, so + // maxNsplit is 16. + const maxNsplit = 16 + if nsplit > maxNsplit { + panic("freetype/raster: Add3 nsplit too large: " + strconv.Itoa(nsplit)) + } + // Recursively decompose the curve nSplit levels deep. + var ( + pStack [3*maxNsplit + 4]fixed.Point26_6 + sStack [maxNsplit + 1]int + i int + ) + sStack[0] = nsplit + pStack[0] = d + pStack[1] = c + pStack[2] = b + pStack[3] = r.a + for i >= 0 { + s := sStack[i] + p := pStack[3*i:] + if s > 0 { + // Split the cubic curve p[:4] into an equivalent set of two + // shorter curves: p[:4] and p[3:7]. The new p[6] is the old p[3], + // and p[0] is unchanged. + m01x := (p[0].X + p[1].X) / 2 + m12x := (p[1].X + p[2].X) / 2 + m23x := (p[2].X + p[3].X) / 2 + p[6].X = p[3].X + p[5].X = m23x + p[1].X = m01x + p[2].X = (m01x + m12x) / 2 + p[4].X = (m12x + m23x) / 2 + p[3].X = (p[2].X + p[4].X) / 2 + m01y := (p[0].Y + p[1].Y) / 2 + m12y := (p[1].Y + p[2].Y) / 2 + m23y := (p[2].Y + p[3].Y) / 2 + p[6].Y = p[3].Y + p[5].Y = m23y + p[1].Y = m01y + p[2].Y = (m01y + m12y) / 2 + p[4].Y = (m12y + m23y) / 2 + p[3].Y = (p[2].Y + p[4].Y) / 2 + // The two shorter curves have one less split to do. + sStack[i] = s - 1 + sStack[i+1] = s - 1 + i++ + } else { + // Replace the level-0 cubic with a two-linear-piece approximation. + midx := (p[0].X + 3*(p[1].X+p[2].X) + p[3].X) / 8 + midy := (p[0].Y + 3*(p[1].Y+p[2].Y) + p[3].Y) / 8 + r.Add1(fixed.Point26_6{midx, midy}) + r.Add1(p[0]) + i-- + } + } +} + +// AddPath adds the given Path. +func (r *Rasterizer) AddPath(p Path) { + for i := 0; i < len(p); { + switch p[i] { + case 0: + r.Start( + fixed.Point26_6{p[i+1], p[i+2]}, + ) + i += 4 + case 1: + r.Add1( + fixed.Point26_6{p[i+1], p[i+2]}, + ) + i += 4 + case 2: + r.Add2( + fixed.Point26_6{p[i+1], p[i+2]}, + fixed.Point26_6{p[i+3], p[i+4]}, + ) + i += 6 + case 3: + r.Add3( + fixed.Point26_6{p[i+1], p[i+2]}, + fixed.Point26_6{p[i+3], p[i+4]}, + fixed.Point26_6{p[i+5], p[i+6]}, + ) + i += 8 + default: + panic("freetype/raster: bad path") + } + } +} + +// AddStroke adds a stroked Path. +func (r *Rasterizer) AddStroke(q Path, width fixed.Int26_6, cr Capper, jr Joiner) { + Stroke(r, q, width, cr, jr) +} + +// areaToAlpha converts an area value to a uint32 alpha value. A completely +// filled pixel corresponds to an area of 64*64*2, and an alpha of 0xffff. The +// conversion of area values greater than this depends on the winding rule: +// even-odd or non-zero. +func (r *Rasterizer) areaToAlpha(area int) uint32 { + // The C Freetype implementation (version 2.3.12) does "alpha := area>>1" + // without the +1. Round-to-nearest gives a more symmetric result than + // round-down. The C implementation also returns 8-bit alpha, not 16-bit + // alpha. + a := (area + 1) >> 1 + if a < 0 { + a = -a + } + alpha := uint32(a) + if r.UseNonZeroWinding { + if alpha > 0x0fff { + alpha = 0x0fff + } + } else { + alpha &= 0x1fff + if alpha > 0x1000 { + alpha = 0x2000 - alpha + } else if alpha == 0x1000 { + alpha = 0x0fff + } + } + // alpha is now in the range [0x0000, 0x0fff]. Convert that 12-bit alpha to + // 16-bit alpha. + return alpha<<4 | alpha>>8 +} + +// Rasterize converts r's accumulated curves into Spans for p. The Spans passed +// to p are non-overlapping, and sorted by Y and then X. They all have non-zero +// width (and 0 <= X0 < X1 <= r.width) and non-zero A, except for the final +// Span, which has Y, X0, X1 and A all equal to zero. +func (r *Rasterizer) Rasterize(p Painter) { + r.saveCell() + s := 0 + for yi := 0; yi < len(r.cellIndex); yi++ { + xi, cover := 0, 0 + for c := r.cellIndex[yi]; c != -1; c = r.cell[c].next { + if cover != 0 && r.cell[c].xi > xi { + alpha := r.areaToAlpha(cover * 64 * 2) + if alpha != 0 { + xi0, xi1 := xi, r.cell[c].xi + if xi0 < 0 { + xi0 = 0 + } + if xi1 >= r.width { + xi1 = r.width + } + if xi0 < xi1 { + r.spanBuf[s] = Span{yi + r.Dy, xi0 + r.Dx, xi1 + r.Dx, alpha} + s++ + } + } + } + cover += r.cell[c].cover + alpha := r.areaToAlpha(cover*64*2 - r.cell[c].area) + xi = r.cell[c].xi + 1 + if alpha != 0 { + xi0, xi1 := r.cell[c].xi, xi + if xi0 < 0 { + xi0 = 0 + } + if xi1 >= r.width { + xi1 = r.width + } + if xi0 < xi1 { + r.spanBuf[s] = Span{yi + r.Dy, xi0 + r.Dx, xi1 + r.Dx, alpha} + s++ + } + } + if s > len(r.spanBuf)-2 { + p.Paint(r.spanBuf[:s], false) + s = 0 + } + } + } + p.Paint(r.spanBuf[:s], true) +} + +// Clear cancels any previous calls to r.Start or r.AddXxx. +func (r *Rasterizer) Clear() { + r.a = fixed.Point26_6{} + r.xi = 0 + r.yi = 0 + r.area = 0 + r.cover = 0 + r.cell = r.cell[:0] + for i := 0; i < len(r.cellIndex); i++ { + r.cellIndex[i] = -1 + } +} + +// SetBounds sets the maximum width and height of the rasterized image and +// calls Clear. The width and height are in pixels, not fixed.Int26_6 units. +func (r *Rasterizer) SetBounds(width, height int) { + if width < 0 { + width = 0 + } + if height < 0 { + height = 0 + } + // Use the same ssN heuristic as the C Freetype (version 2.4.0) + // implementation. + ss2, ss3 := 32, 16 + if width > 24 || height > 24 { + ss2, ss3 = 2*ss2, 2*ss3 + if width > 120 || height > 120 { + ss2, ss3 = 2*ss2, 2*ss3 + } + } + r.width = width + r.splitScale2 = ss2 + r.splitScale3 = ss3 + r.cell = r.cellBuf[:0] + if height > len(r.cellIndexBuf) { + r.cellIndex = make([]int, height) + } else { + r.cellIndex = r.cellIndexBuf[:height] + } + r.Clear() +} + +// NewRasterizer creates a new Rasterizer with the given bounds. +func NewRasterizer(width, height int) *Rasterizer { + r := new(Rasterizer) + r.SetBounds(width, height) + return r +} diff --git a/vendor/github.com/golang/freetype/raster/stroke.go b/vendor/github.com/golang/freetype/raster/stroke.go new file mode 100644 index 00000000..bcc66b26 --- /dev/null +++ b/vendor/github.com/golang/freetype/raster/stroke.go @@ -0,0 +1,483 @@ +// Copyright 2010 The Freetype-Go Authors. All rights reserved. +// Use of this source code is governed by your choice of either the +// FreeType License or the GNU General Public License version 2 (or +// any later version), both of which can be found in the LICENSE file. + +package raster + +import ( + "golang.org/x/image/math/fixed" +) + +// Two points are considered practically equal if the square of the distance +// between them is less than one quarter (i.e. 1024 / 4096). +const epsilon = fixed.Int52_12(1024) + +// A Capper signifies how to begin or end a stroked path. +type Capper interface { + // Cap adds a cap to p given a pivot point and the normal vector of a + // terminal segment. The normal's length is half of the stroke width. + Cap(p Adder, halfWidth fixed.Int26_6, pivot, n1 fixed.Point26_6) +} + +// The CapperFunc type adapts an ordinary function to be a Capper. +type CapperFunc func(Adder, fixed.Int26_6, fixed.Point26_6, fixed.Point26_6) + +func (f CapperFunc) Cap(p Adder, halfWidth fixed.Int26_6, pivot, n1 fixed.Point26_6) { + f(p, halfWidth, pivot, n1) +} + +// A Joiner signifies how to join interior nodes of a stroked path. +type Joiner interface { + // Join adds a join to the two sides of a stroked path given a pivot + // point and the normal vectors of the trailing and leading segments. + // Both normals have length equal to half of the stroke width. + Join(lhs, rhs Adder, halfWidth fixed.Int26_6, pivot, n0, n1 fixed.Point26_6) +} + +// The JoinerFunc type adapts an ordinary function to be a Joiner. +type JoinerFunc func(lhs, rhs Adder, halfWidth fixed.Int26_6, pivot, n0, n1 fixed.Point26_6) + +func (f JoinerFunc) Join(lhs, rhs Adder, halfWidth fixed.Int26_6, pivot, n0, n1 fixed.Point26_6) { + f(lhs, rhs, halfWidth, pivot, n0, n1) +} + +// RoundCapper adds round caps to a stroked path. +var RoundCapper Capper = CapperFunc(roundCapper) + +func roundCapper(p Adder, halfWidth fixed.Int26_6, pivot, n1 fixed.Point26_6) { + // The cubic Bézier approximation to a circle involves the magic number + // (√2 - 1) * 4/3, which is approximately 35/64. + const k = 35 + e := pRot90CCW(n1) + side := pivot.Add(e) + start, end := pivot.Sub(n1), pivot.Add(n1) + d, e := n1.Mul(k), e.Mul(k) + p.Add3(start.Add(e), side.Sub(d), side) + p.Add3(side.Add(d), end.Add(e), end) +} + +// ButtCapper adds butt caps to a stroked path. +var ButtCapper Capper = CapperFunc(buttCapper) + +func buttCapper(p Adder, halfWidth fixed.Int26_6, pivot, n1 fixed.Point26_6) { + p.Add1(pivot.Add(n1)) +} + +// SquareCapper adds square caps to a stroked path. +var SquareCapper Capper = CapperFunc(squareCapper) + +func squareCapper(p Adder, halfWidth fixed.Int26_6, pivot, n1 fixed.Point26_6) { + e := pRot90CCW(n1) + side := pivot.Add(e) + p.Add1(side.Sub(n1)) + p.Add1(side.Add(n1)) + p.Add1(pivot.Add(n1)) +} + +// RoundJoiner adds round joins to a stroked path. +var RoundJoiner Joiner = JoinerFunc(roundJoiner) + +func roundJoiner(lhs, rhs Adder, haflWidth fixed.Int26_6, pivot, n0, n1 fixed.Point26_6) { + dot := pDot(pRot90CW(n0), n1) + if dot >= 0 { + addArc(lhs, pivot, n0, n1) + rhs.Add1(pivot.Sub(n1)) + } else { + lhs.Add1(pivot.Add(n1)) + addArc(rhs, pivot, pNeg(n0), pNeg(n1)) + } +} + +// BevelJoiner adds bevel joins to a stroked path. +var BevelJoiner Joiner = JoinerFunc(bevelJoiner) + +func bevelJoiner(lhs, rhs Adder, haflWidth fixed.Int26_6, pivot, n0, n1 fixed.Point26_6) { + lhs.Add1(pivot.Add(n1)) + rhs.Add1(pivot.Sub(n1)) +} + +// addArc adds a circular arc from pivot+n0 to pivot+n1 to p. The shorter of +// the two possible arcs is taken, i.e. the one spanning <= 180 degrees. The +// two vectors n0 and n1 must be of equal length. +func addArc(p Adder, pivot, n0, n1 fixed.Point26_6) { + // r2 is the square of the length of n0. + r2 := pDot(n0, n0) + if r2 < epsilon { + // The arc radius is so small that we collapse to a straight line. + p.Add1(pivot.Add(n1)) + return + } + // We approximate the arc by 0, 1, 2 or 3 45-degree quadratic segments plus + // a final quadratic segment from s to n1. Each 45-degree segment has + // control points {1, 0}, {1, tan(π/8)} and {1/√2, 1/√2} suitably scaled, + // rotated and translated. tan(π/8) is approximately 27/64. + const tpo8 = 27 + var s fixed.Point26_6 + // We determine which octant the angle between n0 and n1 is in via three + // dot products. m0, m1 and m2 are n0 rotated clockwise by 45, 90 and 135 + // degrees. + m0 := pRot45CW(n0) + m1 := pRot90CW(n0) + m2 := pRot90CW(m0) + if pDot(m1, n1) >= 0 { + if pDot(n0, n1) >= 0 { + if pDot(m2, n1) <= 0 { + // n1 is between 0 and 45 degrees clockwise of n0. + s = n0 + } else { + // n1 is between 45 and 90 degrees clockwise of n0. + p.Add2(pivot.Add(n0).Add(m1.Mul(tpo8)), pivot.Add(m0)) + s = m0 + } + } else { + pm1, n0t := pivot.Add(m1), n0.Mul(tpo8) + p.Add2(pivot.Add(n0).Add(m1.Mul(tpo8)), pivot.Add(m0)) + p.Add2(pm1.Add(n0t), pm1) + if pDot(m0, n1) >= 0 { + // n1 is between 90 and 135 degrees clockwise of n0. + s = m1 + } else { + // n1 is between 135 and 180 degrees clockwise of n0. + p.Add2(pm1.Sub(n0t), pivot.Add(m2)) + s = m2 + } + } + } else { + if pDot(n0, n1) >= 0 { + if pDot(m0, n1) >= 0 { + // n1 is between 0 and 45 degrees counter-clockwise of n0. + s = n0 + } else { + // n1 is between 45 and 90 degrees counter-clockwise of n0. + p.Add2(pivot.Add(n0).Sub(m1.Mul(tpo8)), pivot.Sub(m2)) + s = pNeg(m2) + } + } else { + pm1, n0t := pivot.Sub(m1), n0.Mul(tpo8) + p.Add2(pivot.Add(n0).Sub(m1.Mul(tpo8)), pivot.Sub(m2)) + p.Add2(pm1.Add(n0t), pm1) + if pDot(m2, n1) <= 0 { + // n1 is between 90 and 135 degrees counter-clockwise of n0. + s = pNeg(m1) + } else { + // n1 is between 135 and 180 degrees counter-clockwise of n0. + p.Add2(pm1.Sub(n0t), pivot.Sub(m0)) + s = pNeg(m0) + } + } + } + // The final quadratic segment has two endpoints s and n1 and the middle + // control point is a multiple of s.Add(n1), i.e. it is on the angle + // bisector of those two points. The multiple ranges between 128/256 and + // 150/256 as the angle between s and n1 ranges between 0 and 45 degrees. + // + // When the angle is 0 degrees (i.e. s and n1 are coincident) then + // s.Add(n1) is twice s and so the middle control point of the degenerate + // quadratic segment should be half s.Add(n1), and half = 128/256. + // + // When the angle is 45 degrees then 150/256 is the ratio of the lengths of + // the two vectors {1, tan(π/8)} and {1 + 1/√2, 1/√2}. + // + // d is the normalized dot product between s and n1. Since the angle ranges + // between 0 and 45 degrees then d ranges between 256/256 and 181/256. + d := 256 * pDot(s, n1) / r2 + multiple := fixed.Int26_6(150-(150-128)*(d-181)/(256-181)) >> 2 + p.Add2(pivot.Add(s.Add(n1).Mul(multiple)), pivot.Add(n1)) +} + +// midpoint returns the midpoint of two Points. +func midpoint(a, b fixed.Point26_6) fixed.Point26_6 { + return fixed.Point26_6{(a.X + b.X) / 2, (a.Y + b.Y) / 2} +} + +// angleGreaterThan45 returns whether the angle between two vectors is more +// than 45 degrees. +func angleGreaterThan45(v0, v1 fixed.Point26_6) bool { + v := pRot45CCW(v0) + return pDot(v, v1) < 0 || pDot(pRot90CW(v), v1) < 0 +} + +// interpolate returns the point (1-t)*a + t*b. +func interpolate(a, b fixed.Point26_6, t fixed.Int52_12) fixed.Point26_6 { + s := 1<<12 - t + x := s*fixed.Int52_12(a.X) + t*fixed.Int52_12(b.X) + y := s*fixed.Int52_12(a.Y) + t*fixed.Int52_12(b.Y) + return fixed.Point26_6{fixed.Int26_6(x >> 12), fixed.Int26_6(y >> 12)} +} + +// curviest2 returns the value of t for which the quadratic parametric curve +// (1-t)²*a + 2*t*(1-t).b + t²*c has maximum curvature. +// +// The curvature of the parametric curve f(t) = (x(t), y(t)) is +// |x′y″-y′x″| / (x′²+y′²)^(3/2). +// +// Let d = b-a and e = c-2*b+a, so that f′(t) = 2*d+2*e*t and f″(t) = 2*e. +// The curvature's numerator is (2*dx+2*ex*t)*(2*ey)-(2*dy+2*ey*t)*(2*ex), +// which simplifies to 4*dx*ey-4*dy*ex, which is constant with respect to t. +// +// Thus, curvature is extreme where the denominator is extreme, i.e. where +// (x′²+y′²) is extreme. The first order condition is that +// 2*x′*x″+2*y′*y″ = 0, or (dx+ex*t)*ex + (dy+ey*t)*ey = 0. +// Solving for t gives t = -(dx*ex+dy*ey) / (ex*ex+ey*ey). +func curviest2(a, b, c fixed.Point26_6) fixed.Int52_12 { + dx := int64(b.X - a.X) + dy := int64(b.Y - a.Y) + ex := int64(c.X - 2*b.X + a.X) + ey := int64(c.Y - 2*b.Y + a.Y) + if ex == 0 && ey == 0 { + return 2048 + } + return fixed.Int52_12(-4096 * (dx*ex + dy*ey) / (ex*ex + ey*ey)) +} + +// A stroker holds state for stroking a path. +type stroker struct { + // p is the destination that records the stroked path. + p Adder + // u is the half-width of the stroke. + u fixed.Int26_6 + // cr and jr specify how to end and connect path segments. + cr Capper + jr Joiner + // r is the reverse path. Stroking a path involves constructing two + // parallel paths 2*u apart. The first path is added immediately to p, + // the second path is accumulated in r and eventually added in reverse. + r Path + // a is the most recent segment point. anorm is the segment normal of + // length u at that point. + a, anorm fixed.Point26_6 +} + +// addNonCurvy2 adds a quadratic segment to the stroker, where the segment +// defined by (k.a, b, c) achieves maximum curvature at either k.a or c. +func (k *stroker) addNonCurvy2(b, c fixed.Point26_6) { + // We repeatedly divide the segment at its middle until it is straight + // enough to approximate the stroke by just translating the control points. + // ds and ps are stacks of depths and points. t is the top of the stack. + const maxDepth = 5 + var ( + ds [maxDepth + 1]int + ps [2*maxDepth + 3]fixed.Point26_6 + t int + ) + // Initially the ps stack has one quadratic segment of depth zero. + ds[0] = 0 + ps[2] = k.a + ps[1] = b + ps[0] = c + anorm := k.anorm + var cnorm fixed.Point26_6 + + for { + depth := ds[t] + a := ps[2*t+2] + b := ps[2*t+1] + c := ps[2*t+0] + ab := b.Sub(a) + bc := c.Sub(b) + abIsSmall := pDot(ab, ab) < fixed.Int52_12(1<<12) + bcIsSmall := pDot(bc, bc) < fixed.Int52_12(1<<12) + if abIsSmall && bcIsSmall { + // Approximate the segment by a circular arc. + cnorm = pRot90CCW(pNorm(bc, k.u)) + mac := midpoint(a, c) + addArc(k.p, mac, anorm, cnorm) + addArc(&k.r, mac, pNeg(anorm), pNeg(cnorm)) + } else if depth < maxDepth && angleGreaterThan45(ab, bc) { + // Divide the segment in two and push both halves on the stack. + mab := midpoint(a, b) + mbc := midpoint(b, c) + t++ + ds[t+0] = depth + 1 + ds[t-1] = depth + 1 + ps[2*t+2] = a + ps[2*t+1] = mab + ps[2*t+0] = midpoint(mab, mbc) + ps[2*t-1] = mbc + continue + } else { + // Translate the control points. + bnorm := pRot90CCW(pNorm(c.Sub(a), k.u)) + cnorm = pRot90CCW(pNorm(bc, k.u)) + k.p.Add2(b.Add(bnorm), c.Add(cnorm)) + k.r.Add2(b.Sub(bnorm), c.Sub(cnorm)) + } + if t == 0 { + k.a, k.anorm = c, cnorm + return + } + t-- + anorm = cnorm + } + panic("unreachable") +} + +// Add1 adds a linear segment to the stroker. +func (k *stroker) Add1(b fixed.Point26_6) { + bnorm := pRot90CCW(pNorm(b.Sub(k.a), k.u)) + if len(k.r) == 0 { + k.p.Start(k.a.Add(bnorm)) + k.r.Start(k.a.Sub(bnorm)) + } else { + k.jr.Join(k.p, &k.r, k.u, k.a, k.anorm, bnorm) + } + k.p.Add1(b.Add(bnorm)) + k.r.Add1(b.Sub(bnorm)) + k.a, k.anorm = b, bnorm +} + +// Add2 adds a quadratic segment to the stroker. +func (k *stroker) Add2(b, c fixed.Point26_6) { + ab := b.Sub(k.a) + bc := c.Sub(b) + abnorm := pRot90CCW(pNorm(ab, k.u)) + if len(k.r) == 0 { + k.p.Start(k.a.Add(abnorm)) + k.r.Start(k.a.Sub(abnorm)) + } else { + k.jr.Join(k.p, &k.r, k.u, k.a, k.anorm, abnorm) + } + + // Approximate nearly-degenerate quadratics by linear segments. + abIsSmall := pDot(ab, ab) < epsilon + bcIsSmall := pDot(bc, bc) < epsilon + if abIsSmall || bcIsSmall { + acnorm := pRot90CCW(pNorm(c.Sub(k.a), k.u)) + k.p.Add1(c.Add(acnorm)) + k.r.Add1(c.Sub(acnorm)) + k.a, k.anorm = c, acnorm + return + } + + // The quadratic segment (k.a, b, c) has a point of maximum curvature. + // If this occurs at an end point, we process the segment as a whole. + t := curviest2(k.a, b, c) + if t <= 0 || 4096 <= t { + k.addNonCurvy2(b, c) + return + } + + // Otherwise, we perform a de Casteljau decomposition at the point of + // maximum curvature and process the two straighter parts. + mab := interpolate(k.a, b, t) + mbc := interpolate(b, c, t) + mabc := interpolate(mab, mbc, t) + + // If the vectors ab and bc are close to being in opposite directions, + // then the decomposition can become unstable, so we approximate the + // quadratic segment by two linear segments joined by an arc. + bcnorm := pRot90CCW(pNorm(bc, k.u)) + if pDot(abnorm, bcnorm) < -fixed.Int52_12(k.u)*fixed.Int52_12(k.u)*2047/2048 { + pArc := pDot(abnorm, bc) < 0 + + k.p.Add1(mabc.Add(abnorm)) + if pArc { + z := pRot90CW(abnorm) + addArc(k.p, mabc, abnorm, z) + addArc(k.p, mabc, z, bcnorm) + } + k.p.Add1(mabc.Add(bcnorm)) + k.p.Add1(c.Add(bcnorm)) + + k.r.Add1(mabc.Sub(abnorm)) + if !pArc { + z := pRot90CW(abnorm) + addArc(&k.r, mabc, pNeg(abnorm), z) + addArc(&k.r, mabc, z, pNeg(bcnorm)) + } + k.r.Add1(mabc.Sub(bcnorm)) + k.r.Add1(c.Sub(bcnorm)) + + k.a, k.anorm = c, bcnorm + return + } + + // Process the decomposed parts. + k.addNonCurvy2(mab, mabc) + k.addNonCurvy2(mbc, c) +} + +// Add3 adds a cubic segment to the stroker. +func (k *stroker) Add3(b, c, d fixed.Point26_6) { + panic("freetype/raster: stroke unimplemented for cubic segments") +} + +// stroke adds the stroked Path q to p, where q consists of exactly one curve. +func (k *stroker) stroke(q Path) { + // Stroking is implemented by deriving two paths each k.u apart from q. + // The left-hand-side path is added immediately to k.p; the right-hand-side + // path is accumulated in k.r. Once we've finished adding the LHS to k.p, + // we add the RHS in reverse order. + k.r = make(Path, 0, len(q)) + k.a = fixed.Point26_6{q[1], q[2]} + for i := 4; i < len(q); { + switch q[i] { + case 1: + k.Add1( + fixed.Point26_6{q[i+1], q[i+2]}, + ) + i += 4 + case 2: + k.Add2( + fixed.Point26_6{q[i+1], q[i+2]}, + fixed.Point26_6{q[i+3], q[i+4]}, + ) + i += 6 + case 3: + k.Add3( + fixed.Point26_6{q[i+1], q[i+2]}, + fixed.Point26_6{q[i+3], q[i+4]}, + fixed.Point26_6{q[i+5], q[i+6]}, + ) + i += 8 + default: + panic("freetype/raster: bad path") + } + } + if len(k.r) == 0 { + return + } + // TODO(nigeltao): if q is a closed curve then we should join the first and + // last segments instead of capping them. + k.cr.Cap(k.p, k.u, q.lastPoint(), pNeg(k.anorm)) + addPathReversed(k.p, k.r) + pivot := q.firstPoint() + k.cr.Cap(k.p, k.u, pivot, pivot.Sub(fixed.Point26_6{k.r[1], k.r[2]})) +} + +// Stroke adds q stroked with the given width to p. The result is typically +// self-intersecting and should be rasterized with UseNonZeroWinding. +// cr and jr may be nil, which defaults to a RoundCapper or RoundJoiner. +func Stroke(p Adder, q Path, width fixed.Int26_6, cr Capper, jr Joiner) { + if len(q) == 0 { + return + } + if cr == nil { + cr = RoundCapper + } + if jr == nil { + jr = RoundJoiner + } + if q[0] != 0 { + panic("freetype/raster: bad path") + } + s := stroker{p: p, u: width / 2, cr: cr, jr: jr} + i := 0 + for j := 4; j < len(q); { + switch q[j] { + case 0: + s.stroke(q[i:j]) + i, j = j, j+4 + case 1: + j += 4 + case 2: + j += 6 + case 3: + j += 8 + default: + panic("freetype/raster: bad path") + } + } + s.stroke(q[i:]) +} diff --git a/vendor/github.com/golang/freetype/truetype/face.go b/vendor/github.com/golang/freetype/truetype/face.go new file mode 100644 index 00000000..099006f0 --- /dev/null +++ b/vendor/github.com/golang/freetype/truetype/face.go @@ -0,0 +1,507 @@ +// Copyright 2015 The Freetype-Go Authors. All rights reserved. +// Use of this source code is governed by your choice of either the +// FreeType License or the GNU General Public License version 2 (or +// any later version), both of which can be found in the LICENSE file. + +package truetype + +import ( + "image" + "math" + + "github.com/golang/freetype/raster" + "golang.org/x/image/font" + "golang.org/x/image/math/fixed" +) + +func powerOf2(i int) bool { + return i != 0 && (i&(i-1)) == 0 +} + +// Options are optional arguments to NewFace. +type Options struct { + // Size is the font size in points, as in "a 10 point font size". + // + // A zero value means to use a 12 point font size. + Size float64 + + // DPI is the dots-per-inch resolution. + // + // A zero value means to use 72 DPI. + DPI float64 + + // Hinting is how to quantize the glyph nodes. + // + // A zero value means to use no hinting. + Hinting font.Hinting + + // GlyphCacheEntries is the number of entries in the glyph mask image + // cache. + // + // If non-zero, it must be a power of 2. + // + // A zero value means to use 512 entries. + GlyphCacheEntries int + + // SubPixelsX is the number of sub-pixel locations a glyph's dot is + // quantized to, in the horizontal direction. For example, a value of 8 + // means that the dot is quantized to 1/8th of a pixel. This quantization + // only affects the glyph mask image, not its bounding box or advance + // width. A higher value gives a more faithful glyph image, but reduces the + // effectiveness of the glyph cache. + // + // If non-zero, it must be a power of 2, and be between 1 and 64 inclusive. + // + // A zero value means to use 4 sub-pixel locations. + SubPixelsX int + + // SubPixelsY is the number of sub-pixel locations a glyph's dot is + // quantized to, in the vertical direction. For example, a value of 8 + // means that the dot is quantized to 1/8th of a pixel. This quantization + // only affects the glyph mask image, not its bounding box or advance + // width. A higher value gives a more faithful glyph image, but reduces the + // effectiveness of the glyph cache. + // + // If non-zero, it must be a power of 2, and be between 1 and 64 inclusive. + // + // A zero value means to use 1 sub-pixel location. + SubPixelsY int +} + +func (o *Options) size() float64 { + if o != nil && o.Size > 0 { + return o.Size + } + return 12 +} + +func (o *Options) dpi() float64 { + if o != nil && o.DPI > 0 { + return o.DPI + } + return 72 +} + +func (o *Options) hinting() font.Hinting { + if o != nil { + switch o.Hinting { + case font.HintingVertical, font.HintingFull: + // TODO: support vertical hinting. + return font.HintingFull + } + } + return font.HintingNone +} + +func (o *Options) glyphCacheEntries() int { + if o != nil && powerOf2(o.GlyphCacheEntries) { + return o.GlyphCacheEntries + } + // 512 is 128 * 4 * 1, which lets us cache 128 glyphs at 4 * 1 subpixel + // locations in the X and Y direction. + return 512 +} + +func (o *Options) subPixelsX() (value uint32, halfQuantum, mask fixed.Int26_6) { + if o != nil { + switch o.SubPixelsX { + case 1, 2, 4, 8, 16, 32, 64: + return subPixels(o.SubPixelsX) + } + } + // This default value of 4 isn't based on anything scientific, merely as + // small a number as possible that looks almost as good as no quantization, + // or returning subPixels(64). + return subPixels(4) +} + +func (o *Options) subPixelsY() (value uint32, halfQuantum, mask fixed.Int26_6) { + if o != nil { + switch o.SubPixelsX { + case 1, 2, 4, 8, 16, 32, 64: + return subPixels(o.SubPixelsX) + } + } + // This default value of 1 isn't based on anything scientific, merely that + // vertical sub-pixel glyph rendering is pretty rare. Baseline locations + // can usually afford to snap to the pixel grid, so the vertical direction + // doesn't have the deal with the horizontal's fractional advance widths. + return subPixels(1) +} + +// subPixels returns q and the bias and mask that leads to q quantized +// sub-pixel locations per full pixel. +// +// For example, q == 4 leads to a bias of 8 and a mask of 0xfffffff0, or -16, +// because we want to round fractions of fixed.Int26_6 as: +// - 0 to 7 rounds to 0. +// - 8 to 23 rounds to 16. +// - 24 to 39 rounds to 32. +// - 40 to 55 rounds to 48. +// - 56 to 63 rounds to 64. +// which means to add 8 and then bitwise-and with -16, in two's complement +// representation. +// +// When q == 1, we want bias == 32 and mask == -64. +// When q == 2, we want bias == 16 and mask == -32. +// When q == 4, we want bias == 8 and mask == -16. +// ... +// When q == 64, we want bias == 0 and mask == -1. (The no-op case). +// The pattern is clear. +func subPixels(q int) (value uint32, bias, mask fixed.Int26_6) { + return uint32(q), 32 / fixed.Int26_6(q), -64 / fixed.Int26_6(q) +} + +// glyphCacheEntry caches the arguments and return values of rasterize. +type glyphCacheEntry struct { + key glyphCacheKey + val glyphCacheVal +} + +type glyphCacheKey struct { + index Index + fx, fy uint8 +} + +type glyphCacheVal struct { + advanceWidth fixed.Int26_6 + offset image.Point + gw int + gh int +} + +type indexCacheEntry struct { + rune rune + index Index +} + +// NewFace returns a new font.Face for the given Font. +func NewFace(f *Font, opts *Options) font.Face { + a := &face{ + f: f, + hinting: opts.hinting(), + scale: fixed.Int26_6(0.5 + (opts.size() * opts.dpi() * 64 / 72)), + glyphCache: make([]glyphCacheEntry, opts.glyphCacheEntries()), + } + a.subPixelX, a.subPixelBiasX, a.subPixelMaskX = opts.subPixelsX() + a.subPixelY, a.subPixelBiasY, a.subPixelMaskY = opts.subPixelsY() + + // Fill the cache with invalid entries. Valid glyph cache entries have fx + // and fy in the range [0, 64). Valid index cache entries have rune >= 0. + for i := range a.glyphCache { + a.glyphCache[i].key.fy = 0xff + } + for i := range a.indexCache { + a.indexCache[i].rune = -1 + } + + // Set the rasterizer's bounds to be big enough to handle the largest glyph. + b := f.Bounds(a.scale) + xmin := +int(b.Min.X) >> 6 + ymin := -int(b.Max.Y) >> 6 + xmax := +int(b.Max.X+63) >> 6 + ymax := -int(b.Min.Y-63) >> 6 + a.maxw = xmax - xmin + a.maxh = ymax - ymin + a.masks = image.NewAlpha(image.Rect(0, 0, a.maxw, a.maxh*len(a.glyphCache))) + a.r.SetBounds(a.maxw, a.maxh) + a.p = facePainter{a} + + return a +} + +type face struct { + f *Font + hinting font.Hinting + scale fixed.Int26_6 + subPixelX uint32 + subPixelBiasX fixed.Int26_6 + subPixelMaskX fixed.Int26_6 + subPixelY uint32 + subPixelBiasY fixed.Int26_6 + subPixelMaskY fixed.Int26_6 + masks *image.Alpha + glyphCache []glyphCacheEntry + r raster.Rasterizer + p raster.Painter + paintOffset int + maxw int + maxh int + glyphBuf GlyphBuf + indexCache [indexCacheLen]indexCacheEntry + + // TODO: clip rectangle? +} + +const indexCacheLen = 256 + +func (a *face) index(r rune) Index { + const mask = indexCacheLen - 1 + c := &a.indexCache[r&mask] + if c.rune == r { + return c.index + } + i := a.f.Index(r) + c.rune = r + c.index = i + return i +} + +// Close satisfies the font.Face interface. +func (a *face) Close() error { return nil } + +// Metrics satisfies the font.Face interface. +func (a *face) Metrics() font.Metrics { + scale := float64(a.scale) + fupe := float64(a.f.FUnitsPerEm()) + return font.Metrics{ + Height: a.scale, + Ascent: fixed.Int26_6(math.Ceil(scale * float64(+a.f.ascent) / fupe)), + Descent: fixed.Int26_6(math.Ceil(scale * float64(-a.f.descent) / fupe)), + } +} + +// Kern satisfies the font.Face interface. +func (a *face) Kern(r0, r1 rune) fixed.Int26_6 { + i0 := a.index(r0) + i1 := a.index(r1) + kern := a.f.Kern(a.scale, i0, i1) + if a.hinting != font.HintingNone { + kern = (kern + 32) &^ 63 + } + return kern +} + +// Glyph satisfies the font.Face interface. +func (a *face) Glyph(dot fixed.Point26_6, r rune) ( + dr image.Rectangle, mask image.Image, maskp image.Point, advance fixed.Int26_6, ok bool) { + + // Quantize to the sub-pixel granularity. + dotX := (dot.X + a.subPixelBiasX) & a.subPixelMaskX + dotY := (dot.Y + a.subPixelBiasY) & a.subPixelMaskY + + // Split the coordinates into their integer and fractional parts. + ix, fx := int(dotX>>6), dotX&0x3f + iy, fy := int(dotY>>6), dotY&0x3f + + index := a.index(r) + cIndex := uint32(index) + cIndex = cIndex*a.subPixelX - uint32(fx/a.subPixelMaskX) + cIndex = cIndex*a.subPixelY - uint32(fy/a.subPixelMaskY) + cIndex &= uint32(len(a.glyphCache) - 1) + a.paintOffset = a.maxh * int(cIndex) + k := glyphCacheKey{ + index: index, + fx: uint8(fx), + fy: uint8(fy), + } + var v glyphCacheVal + if a.glyphCache[cIndex].key != k { + var ok bool + v, ok = a.rasterize(index, fx, fy) + if !ok { + return image.Rectangle{}, nil, image.Point{}, 0, false + } + a.glyphCache[cIndex] = glyphCacheEntry{k, v} + } else { + v = a.glyphCache[cIndex].val + } + + dr.Min = image.Point{ + X: ix + v.offset.X, + Y: iy + v.offset.Y, + } + dr.Max = image.Point{ + X: dr.Min.X + v.gw, + Y: dr.Min.Y + v.gh, + } + return dr, a.masks, image.Point{Y: a.paintOffset}, v.advanceWidth, true +} + +func (a *face) GlyphBounds(r rune) (bounds fixed.Rectangle26_6, advance fixed.Int26_6, ok bool) { + if err := a.glyphBuf.Load(a.f, a.scale, a.index(r), a.hinting); err != nil { + return fixed.Rectangle26_6{}, 0, false + } + xmin := +a.glyphBuf.Bounds.Min.X + ymin := -a.glyphBuf.Bounds.Max.Y + xmax := +a.glyphBuf.Bounds.Max.X + ymax := -a.glyphBuf.Bounds.Min.Y + if xmin > xmax || ymin > ymax { + return fixed.Rectangle26_6{}, 0, false + } + return fixed.Rectangle26_6{ + Min: fixed.Point26_6{ + X: xmin, + Y: ymin, + }, + Max: fixed.Point26_6{ + X: xmax, + Y: ymax, + }, + }, a.glyphBuf.AdvanceWidth, true +} + +func (a *face) GlyphAdvance(r rune) (advance fixed.Int26_6, ok bool) { + if err := a.glyphBuf.Load(a.f, a.scale, a.index(r), a.hinting); err != nil { + return 0, false + } + return a.glyphBuf.AdvanceWidth, true +} + +// rasterize returns the advance width, integer-pixel offset to render at, and +// the width and height of the given glyph at the given sub-pixel offsets. +// +// The 26.6 fixed point arguments fx and fy must be in the range [0, 1). +func (a *face) rasterize(index Index, fx, fy fixed.Int26_6) (v glyphCacheVal, ok bool) { + if err := a.glyphBuf.Load(a.f, a.scale, index, a.hinting); err != nil { + return glyphCacheVal{}, false + } + // Calculate the integer-pixel bounds for the glyph. + xmin := int(fx+a.glyphBuf.Bounds.Min.X) >> 6 + ymin := int(fy-a.glyphBuf.Bounds.Max.Y) >> 6 + xmax := int(fx+a.glyphBuf.Bounds.Max.X+0x3f) >> 6 + ymax := int(fy-a.glyphBuf.Bounds.Min.Y+0x3f) >> 6 + if xmin > xmax || ymin > ymax { + return glyphCacheVal{}, false + } + // A TrueType's glyph's nodes can have negative co-ordinates, but the + // rasterizer clips anything left of x=0 or above y=0. xmin and ymin are + // the pixel offsets, based on the font's FUnit metrics, that let a + // negative co-ordinate in TrueType space be non-negative in rasterizer + // space. xmin and ymin are typically <= 0. + fx -= fixed.Int26_6(xmin << 6) + fy -= fixed.Int26_6(ymin << 6) + // Rasterize the glyph's vectors. + a.r.Clear() + pixOffset := a.paintOffset * a.maxw + clear(a.masks.Pix[pixOffset : pixOffset+a.maxw*a.maxh]) + e0 := 0 + for _, e1 := range a.glyphBuf.Ends { + a.drawContour(a.glyphBuf.Points[e0:e1], fx, fy) + e0 = e1 + } + a.r.Rasterize(a.p) + return glyphCacheVal{ + a.glyphBuf.AdvanceWidth, + image.Point{xmin, ymin}, + xmax - xmin, + ymax - ymin, + }, true +} + +func clear(pix []byte) { + for i := range pix { + pix[i] = 0 + } +} + +// drawContour draws the given closed contour with the given offset. +func (a *face) drawContour(ps []Point, dx, dy fixed.Int26_6) { + if len(ps) == 0 { + return + } + + // The low bit of each point's Flags value is whether the point is on the + // curve. Truetype fonts only have quadratic Bézier curves, not cubics. + // Thus, two consecutive off-curve points imply an on-curve point in the + // middle of those two. + // + // See http://chanae.walon.org/pub/ttf/ttf_glyphs.htm for more details. + + // ps[0] is a truetype.Point measured in FUnits and positive Y going + // upwards. start is the same thing measured in fixed point units and + // positive Y going downwards, and offset by (dx, dy). + start := fixed.Point26_6{ + X: dx + ps[0].X, + Y: dy - ps[0].Y, + } + var others []Point + if ps[0].Flags&0x01 != 0 { + others = ps[1:] + } else { + last := fixed.Point26_6{ + X: dx + ps[len(ps)-1].X, + Y: dy - ps[len(ps)-1].Y, + } + if ps[len(ps)-1].Flags&0x01 != 0 { + start = last + others = ps[:len(ps)-1] + } else { + start = fixed.Point26_6{ + X: (start.X + last.X) / 2, + Y: (start.Y + last.Y) / 2, + } + others = ps + } + } + a.r.Start(start) + q0, on0 := start, true + for _, p := range others { + q := fixed.Point26_6{ + X: dx + p.X, + Y: dy - p.Y, + } + on := p.Flags&0x01 != 0 + if on { + if on0 { + a.r.Add1(q) + } else { + a.r.Add2(q0, q) + } + } else { + if on0 { + // No-op. + } else { + mid := fixed.Point26_6{ + X: (q0.X + q.X) / 2, + Y: (q0.Y + q.Y) / 2, + } + a.r.Add2(q0, mid) + } + } + q0, on0 = q, on + } + // Close the curve. + if on0 { + a.r.Add1(start) + } else { + a.r.Add2(q0, start) + } +} + +// facePainter is like a raster.AlphaSrcPainter, with an additional Y offset +// (face.paintOffset) to the painted spans. +type facePainter struct { + a *face +} + +func (p facePainter) Paint(ss []raster.Span, done bool) { + m := p.a.masks + b := m.Bounds() + b.Min.Y = p.a.paintOffset + b.Max.Y = p.a.paintOffset + p.a.maxh + for _, s := range ss { + s.Y += p.a.paintOffset + if s.Y < b.Min.Y { + continue + } + if s.Y >= b.Max.Y { + return + } + if s.X0 < b.Min.X { + s.X0 = b.Min.X + } + if s.X1 > b.Max.X { + s.X1 = b.Max.X + } + if s.X0 >= s.X1 { + continue + } + base := (s.Y-m.Rect.Min.Y)*m.Stride - m.Rect.Min.X + p := m.Pix[base+s.X0 : base+s.X1] + color := uint8(s.Alpha >> 8) + for i := range p { + p[i] = color + } + } +} diff --git a/vendor/github.com/golang/freetype/truetype/glyph.go b/vendor/github.com/golang/freetype/truetype/glyph.go new file mode 100644 index 00000000..6157ad83 --- /dev/null +++ b/vendor/github.com/golang/freetype/truetype/glyph.go @@ -0,0 +1,522 @@ +// Copyright 2010 The Freetype-Go Authors. All rights reserved. +// Use of this source code is governed by your choice of either the +// FreeType License or the GNU General Public License version 2 (or +// any later version), both of which can be found in the LICENSE file. + +package truetype + +import ( + "golang.org/x/image/font" + "golang.org/x/image/math/fixed" +) + +// TODO: implement VerticalHinting. + +// A Point is a co-ordinate pair plus whether it is 'on' a contour or an 'off' +// control point. +type Point struct { + X, Y fixed.Int26_6 + // The Flags' LSB means whether or not this Point is 'on' the contour. + // Other bits are reserved for internal use. + Flags uint32 +} + +// A GlyphBuf holds a glyph's contours. A GlyphBuf can be re-used to load a +// series of glyphs from a Font. +type GlyphBuf struct { + // AdvanceWidth is the glyph's advance width. + AdvanceWidth fixed.Int26_6 + // Bounds is the glyph's bounding box. + Bounds fixed.Rectangle26_6 + // Points contains all Points from all contours of the glyph. If hinting + // was used to load a glyph then Unhinted contains those Points before they + // were hinted, and InFontUnits contains those Points before they were + // hinted and scaled. + Points, Unhinted, InFontUnits []Point + // Ends is the point indexes of the end point of each contour. The length + // of Ends is the number of contours in the glyph. The i'th contour + // consists of points Points[Ends[i-1]:Ends[i]], where Ends[-1] is + // interpreted to mean zero. + Ends []int + + font *Font + scale fixed.Int26_6 + hinting font.Hinting + hinter hinter + // phantomPoints are the co-ordinates of the synthetic phantom points + // used for hinting and bounding box calculations. + phantomPoints [4]Point + // pp1x is the X co-ordinate of the first phantom point. The '1' is + // using 1-based indexing; pp1x is almost always phantomPoints[0].X. + // TODO: eliminate this and consistently use phantomPoints[0].X. + pp1x fixed.Int26_6 + // metricsSet is whether the glyph's metrics have been set yet. For a + // compound glyph, a sub-glyph may override the outer glyph's metrics. + metricsSet bool + // tmp is a scratch buffer. + tmp []Point +} + +// Flags for decoding a glyph's contours. These flags are documented at +// http://developer.apple.com/fonts/TTRefMan/RM06/Chap6glyf.html. +const ( + flagOnCurve = 1 << iota + flagXShortVector + flagYShortVector + flagRepeat + flagPositiveXShortVector + flagPositiveYShortVector + + // The remaining flags are for internal use. + flagTouchedX + flagTouchedY +) + +// The same flag bits (0x10 and 0x20) are overloaded to have two meanings, +// dependent on the value of the flag{X,Y}ShortVector bits. +const ( + flagThisXIsSame = flagPositiveXShortVector + flagThisYIsSame = flagPositiveYShortVector +) + +// Load loads a glyph's contours from a Font, overwriting any previously loaded +// contours for this GlyphBuf. scale is the number of 26.6 fixed point units in +// 1 em, i is the glyph index, and h is the hinting policy. +func (g *GlyphBuf) Load(f *Font, scale fixed.Int26_6, i Index, h font.Hinting) error { + g.Points = g.Points[:0] + g.Unhinted = g.Unhinted[:0] + g.InFontUnits = g.InFontUnits[:0] + g.Ends = g.Ends[:0] + g.font = f + g.hinting = h + g.scale = scale + g.pp1x = 0 + g.phantomPoints = [4]Point{} + g.metricsSet = false + + if h != font.HintingNone { + if err := g.hinter.init(f, scale); err != nil { + return err + } + } + if err := g.load(0, i, true); err != nil { + return err + } + // TODO: this selection of either g.pp1x or g.phantomPoints[0].X isn't ideal, + // and should be cleaned up once we have all the testScaling tests passing, + // plus additional tests for Freetype-Go's bounding boxes matching C Freetype's. + pp1x := g.pp1x + if h != font.HintingNone { + pp1x = g.phantomPoints[0].X + } + if pp1x != 0 { + for i := range g.Points { + g.Points[i].X -= pp1x + } + } + + advanceWidth := g.phantomPoints[1].X - g.phantomPoints[0].X + if h != font.HintingNone { + if len(f.hdmx) >= 8 { + if n := u32(f.hdmx, 4); n > 3+uint32(i) { + for hdmx := f.hdmx[8:]; uint32(len(hdmx)) >= n; hdmx = hdmx[n:] { + if fixed.Int26_6(hdmx[0]) == scale>>6 { + advanceWidth = fixed.Int26_6(hdmx[2+i]) << 6 + break + } + } + } + } + advanceWidth = (advanceWidth + 32) &^ 63 + } + g.AdvanceWidth = advanceWidth + + // Set g.Bounds to the 'control box', which is the bounding box of the + // Bézier curves' control points. This is easier to calculate, no smaller + // than and often equal to the tightest possible bounding box of the curves + // themselves. This approach is what C Freetype does. We can't just scale + // the nominal bounding box in the glyf data as the hinting process and + // phantom point adjustment may move points outside of that box. + if len(g.Points) == 0 { + g.Bounds = fixed.Rectangle26_6{} + } else { + p := g.Points[0] + g.Bounds.Min.X = p.X + g.Bounds.Max.X = p.X + g.Bounds.Min.Y = p.Y + g.Bounds.Max.Y = p.Y + for _, p := range g.Points[1:] { + if g.Bounds.Min.X > p.X { + g.Bounds.Min.X = p.X + } else if g.Bounds.Max.X < p.X { + g.Bounds.Max.X = p.X + } + if g.Bounds.Min.Y > p.Y { + g.Bounds.Min.Y = p.Y + } else if g.Bounds.Max.Y < p.Y { + g.Bounds.Max.Y = p.Y + } + } + // Snap the box to the grid, if hinting is on. + if h != font.HintingNone { + g.Bounds.Min.X &^= 63 + g.Bounds.Min.Y &^= 63 + g.Bounds.Max.X += 63 + g.Bounds.Max.X &^= 63 + g.Bounds.Max.Y += 63 + g.Bounds.Max.Y &^= 63 + } + } + return nil +} + +func (g *GlyphBuf) load(recursion uint32, i Index, useMyMetrics bool) (err error) { + // The recursion limit here is arbitrary, but defends against malformed glyphs. + if recursion >= 32 { + return UnsupportedError("excessive compound glyph recursion") + } + // Find the relevant slice of g.font.glyf. + var g0, g1 uint32 + if g.font.locaOffsetFormat == locaOffsetFormatShort { + g0 = 2 * uint32(u16(g.font.loca, 2*int(i))) + g1 = 2 * uint32(u16(g.font.loca, 2*int(i)+2)) + } else { + g0 = u32(g.font.loca, 4*int(i)) + g1 = u32(g.font.loca, 4*int(i)+4) + } + + // Decode the contour count and nominal bounding box, from the first + // 10 bytes of the glyf data. boundsYMin and boundsXMax, at offsets 4 + // and 6, are unused. + glyf, ne, boundsXMin, boundsYMax := []byte(nil), 0, fixed.Int26_6(0), fixed.Int26_6(0) + if g0+10 <= g1 { + glyf = g.font.glyf[g0:g1] + ne = int(int16(u16(glyf, 0))) + boundsXMin = fixed.Int26_6(int16(u16(glyf, 2))) + boundsYMax = fixed.Int26_6(int16(u16(glyf, 8))) + } + + // Create the phantom points. + uhm, pp1x := g.font.unscaledHMetric(i), fixed.Int26_6(0) + uvm := g.font.unscaledVMetric(i, boundsYMax) + g.phantomPoints = [4]Point{ + {X: boundsXMin - uhm.LeftSideBearing}, + {X: boundsXMin - uhm.LeftSideBearing + uhm.AdvanceWidth}, + {X: uhm.AdvanceWidth / 2, Y: boundsYMax + uvm.TopSideBearing}, + {X: uhm.AdvanceWidth / 2, Y: boundsYMax + uvm.TopSideBearing - uvm.AdvanceHeight}, + } + if len(glyf) == 0 { + g.addPhantomsAndScale(len(g.Points), len(g.Points), true, true) + copy(g.phantomPoints[:], g.Points[len(g.Points)-4:]) + g.Points = g.Points[:len(g.Points)-4] + // TODO: also trim g.InFontUnits and g.Unhinted? + return nil + } + + // Load and hint the contours. + if ne < 0 { + if ne != -1 { + // http://developer.apple.com/fonts/TTRefMan/RM06/Chap6glyf.html says that + // "the values -2, -3, and so forth, are reserved for future use." + return UnsupportedError("negative number of contours") + } + pp1x = g.font.scale(g.scale * (boundsXMin - uhm.LeftSideBearing)) + if err := g.loadCompound(recursion, uhm, i, glyf, useMyMetrics); err != nil { + return err + } + } else { + np0, ne0 := len(g.Points), len(g.Ends) + program := g.loadSimple(glyf, ne) + g.addPhantomsAndScale(np0, np0, true, true) + pp1x = g.Points[len(g.Points)-4].X + if g.hinting != font.HintingNone { + if len(program) != 0 { + err := g.hinter.run( + program, + g.Points[np0:], + g.Unhinted[np0:], + g.InFontUnits[np0:], + g.Ends[ne0:], + ) + if err != nil { + return err + } + } + // Drop the four phantom points. + g.InFontUnits = g.InFontUnits[:len(g.InFontUnits)-4] + g.Unhinted = g.Unhinted[:len(g.Unhinted)-4] + } + if useMyMetrics { + copy(g.phantomPoints[:], g.Points[len(g.Points)-4:]) + } + g.Points = g.Points[:len(g.Points)-4] + if np0 != 0 { + // The hinting program expects the []Ends values to be indexed + // relative to the inner glyph, not the outer glyph, so we delay + // adding np0 until after the hinting program (if any) has run. + for i := ne0; i < len(g.Ends); i++ { + g.Ends[i] += np0 + } + } + } + if useMyMetrics && !g.metricsSet { + g.metricsSet = true + g.pp1x = pp1x + } + return nil +} + +// loadOffset is the initial offset for loadSimple and loadCompound. The first +// 10 bytes are the number of contours and the bounding box. +const loadOffset = 10 + +func (g *GlyphBuf) loadSimple(glyf []byte, ne int) (program []byte) { + offset := loadOffset + for i := 0; i < ne; i++ { + g.Ends = append(g.Ends, 1+int(u16(glyf, offset))) + offset += 2 + } + + // Note the TrueType hinting instructions. + instrLen := int(u16(glyf, offset)) + offset += 2 + program = glyf[offset : offset+instrLen] + offset += instrLen + + if ne == 0 { + return program + } + + np0 := len(g.Points) + np1 := np0 + int(g.Ends[len(g.Ends)-1]) + + // Decode the flags. + for i := np0; i < np1; { + c := uint32(glyf[offset]) + offset++ + g.Points = append(g.Points, Point{Flags: c}) + i++ + if c&flagRepeat != 0 { + count := glyf[offset] + offset++ + for ; count > 0; count-- { + g.Points = append(g.Points, Point{Flags: c}) + i++ + } + } + } + + // Decode the co-ordinates. + var x int16 + for i := np0; i < np1; i++ { + f := g.Points[i].Flags + if f&flagXShortVector != 0 { + dx := int16(glyf[offset]) + offset++ + if f&flagPositiveXShortVector == 0 { + x -= dx + } else { + x += dx + } + } else if f&flagThisXIsSame == 0 { + x += int16(u16(glyf, offset)) + offset += 2 + } + g.Points[i].X = fixed.Int26_6(x) + } + var y int16 + for i := np0; i < np1; i++ { + f := g.Points[i].Flags + if f&flagYShortVector != 0 { + dy := int16(glyf[offset]) + offset++ + if f&flagPositiveYShortVector == 0 { + y -= dy + } else { + y += dy + } + } else if f&flagThisYIsSame == 0 { + y += int16(u16(glyf, offset)) + offset += 2 + } + g.Points[i].Y = fixed.Int26_6(y) + } + + return program +} + +func (g *GlyphBuf) loadCompound(recursion uint32, uhm HMetric, i Index, + glyf []byte, useMyMetrics bool) error { + + // Flags for decoding a compound glyph. These flags are documented at + // http://developer.apple.com/fonts/TTRefMan/RM06/Chap6glyf.html. + const ( + flagArg1And2AreWords = 1 << iota + flagArgsAreXYValues + flagRoundXYToGrid + flagWeHaveAScale + flagUnused + flagMoreComponents + flagWeHaveAnXAndYScale + flagWeHaveATwoByTwo + flagWeHaveInstructions + flagUseMyMetrics + flagOverlapCompound + ) + np0, ne0 := len(g.Points), len(g.Ends) + offset := loadOffset + for { + flags := u16(glyf, offset) + component := Index(u16(glyf, offset+2)) + dx, dy, transform, hasTransform := fixed.Int26_6(0), fixed.Int26_6(0), [4]int16{}, false + if flags&flagArg1And2AreWords != 0 { + dx = fixed.Int26_6(int16(u16(glyf, offset+4))) + dy = fixed.Int26_6(int16(u16(glyf, offset+6))) + offset += 8 + } else { + dx = fixed.Int26_6(int16(int8(glyf[offset+4]))) + dy = fixed.Int26_6(int16(int8(glyf[offset+5]))) + offset += 6 + } + if flags&flagArgsAreXYValues == 0 { + return UnsupportedError("compound glyph transform vector") + } + if flags&(flagWeHaveAScale|flagWeHaveAnXAndYScale|flagWeHaveATwoByTwo) != 0 { + hasTransform = true + switch { + case flags&flagWeHaveAScale != 0: + transform[0] = int16(u16(glyf, offset+0)) + transform[3] = transform[0] + offset += 2 + case flags&flagWeHaveAnXAndYScale != 0: + transform[0] = int16(u16(glyf, offset+0)) + transform[3] = int16(u16(glyf, offset+2)) + offset += 4 + case flags&flagWeHaveATwoByTwo != 0: + transform[0] = int16(u16(glyf, offset+0)) + transform[1] = int16(u16(glyf, offset+2)) + transform[2] = int16(u16(glyf, offset+4)) + transform[3] = int16(u16(glyf, offset+6)) + offset += 8 + } + } + savedPP := g.phantomPoints + np0 := len(g.Points) + componentUMM := useMyMetrics && (flags&flagUseMyMetrics != 0) + if err := g.load(recursion+1, component, componentUMM); err != nil { + return err + } + if flags&flagUseMyMetrics == 0 { + g.phantomPoints = savedPP + } + if hasTransform { + for j := np0; j < len(g.Points); j++ { + p := &g.Points[j] + newX := 0 + + fixed.Int26_6((int64(p.X)*int64(transform[0])+1<<13)>>14) + + fixed.Int26_6((int64(p.Y)*int64(transform[2])+1<<13)>>14) + newY := 0 + + fixed.Int26_6((int64(p.X)*int64(transform[1])+1<<13)>>14) + + fixed.Int26_6((int64(p.Y)*int64(transform[3])+1<<13)>>14) + p.X, p.Y = newX, newY + } + } + dx = g.font.scale(g.scale * dx) + dy = g.font.scale(g.scale * dy) + if flags&flagRoundXYToGrid != 0 { + dx = (dx + 32) &^ 63 + dy = (dy + 32) &^ 63 + } + for j := np0; j < len(g.Points); j++ { + p := &g.Points[j] + p.X += dx + p.Y += dy + } + // TODO: also adjust g.InFontUnits and g.Unhinted? + if flags&flagMoreComponents == 0 { + break + } + } + + instrLen := 0 + if g.hinting != font.HintingNone && offset+2 <= len(glyf) { + instrLen = int(u16(glyf, offset)) + offset += 2 + } + + g.addPhantomsAndScale(np0, len(g.Points), false, instrLen > 0) + points, ends := g.Points[np0:], g.Ends[ne0:] + g.Points = g.Points[:len(g.Points)-4] + for j := range points { + points[j].Flags &^= flagTouchedX | flagTouchedY + } + + if instrLen == 0 { + if !g.metricsSet { + copy(g.phantomPoints[:], points[len(points)-4:]) + } + return nil + } + + // Hint the compound glyph. + program := glyf[offset : offset+instrLen] + // Temporarily adjust the ends to be relative to this compound glyph. + if np0 != 0 { + for i := range ends { + ends[i] -= np0 + } + } + // Hinting instructions of a composite glyph completely refer to the + // (already) hinted subglyphs. + g.tmp = append(g.tmp[:0], points...) + if err := g.hinter.run(program, points, g.tmp, g.tmp, ends); err != nil { + return err + } + if np0 != 0 { + for i := range ends { + ends[i] += np0 + } + } + if !g.metricsSet { + copy(g.phantomPoints[:], points[len(points)-4:]) + } + return nil +} + +func (g *GlyphBuf) addPhantomsAndScale(np0, np1 int, simple, adjust bool) { + // Add the four phantom points. + g.Points = append(g.Points, g.phantomPoints[:]...) + // Scale the points. + if simple && g.hinting != font.HintingNone { + g.InFontUnits = append(g.InFontUnits, g.Points[np1:]...) + } + for i := np1; i < len(g.Points); i++ { + p := &g.Points[i] + p.X = g.font.scale(g.scale * p.X) + p.Y = g.font.scale(g.scale * p.Y) + } + if g.hinting == font.HintingNone { + return + } + // Round the 1st phantom point to the grid, shifting all other points equally. + // Note that "all other points" starts from np0, not np1. + // TODO: delete this adjustment and the np0/np1 distinction, when + // we update the compatibility tests to C Freetype 2.5.3. + // See http://git.savannah.gnu.org/cgit/freetype/freetype2.git/commit/?id=05c786d990390a7ca18e62962641dac740bacb06 + if adjust { + pp1x := g.Points[len(g.Points)-4].X + if dx := ((pp1x + 32) &^ 63) - pp1x; dx != 0 { + for i := np0; i < len(g.Points); i++ { + g.Points[i].X += dx + } + } + } + if simple { + g.Unhinted = append(g.Unhinted, g.Points[np1:]...) + } + // Round the 2nd and 4th phantom point to the grid. + p := &g.Points[len(g.Points)-3] + p.X = (p.X + 32) &^ 63 + p = &g.Points[len(g.Points)-1] + p.Y = (p.Y + 32) &^ 63 +} diff --git a/vendor/github.com/golang/freetype/truetype/hint.go b/vendor/github.com/golang/freetype/truetype/hint.go new file mode 100644 index 00000000..13f785bc --- /dev/null +++ b/vendor/github.com/golang/freetype/truetype/hint.go @@ -0,0 +1,1770 @@ +// Copyright 2012 The Freetype-Go Authors. All rights reserved. +// Use of this source code is governed by your choice of either the +// FreeType License or the GNU General Public License version 2 (or +// any later version), both of which can be found in the LICENSE file. + +package truetype + +// This file implements a Truetype bytecode interpreter. +// The opcodes are described at https://developer.apple.com/fonts/TTRefMan/RM05/Chap5.html + +import ( + "errors" + "math" + + "golang.org/x/image/math/fixed" +) + +const ( + twilightZone = 0 + glyphZone = 1 + numZone = 2 +) + +type pointType uint32 + +const ( + current pointType = 0 + unhinted pointType = 1 + inFontUnits pointType = 2 + numPointType = 3 +) + +// callStackEntry is a bytecode call stack entry. +type callStackEntry struct { + program []byte + pc int + loopCount int32 +} + +// hinter implements bytecode hinting. A hinter can be re-used to hint a series +// of glyphs from a Font. +type hinter struct { + stack, store []int32 + + // functions is a map from function number to bytecode. + functions map[int32][]byte + + // font and scale are the font and scale last used for this hinter. + // Changing the font will require running the new font's fpgm bytecode. + // Changing either will require running the font's prep bytecode. + font *Font + scale fixed.Int26_6 + + // gs and defaultGS are the current and default graphics state. The + // default graphics state is the global default graphics state after + // the font's fpgm and prep programs have been run. + gs, defaultGS graphicsState + + // points and ends are the twilight zone's points, glyph's points + // and glyph's contour boundaries. + points [numZone][numPointType][]Point + ends []int + + // scaledCVT is the lazily initialized scaled Control Value Table. + scaledCVTInitialized bool + scaledCVT []fixed.Int26_6 +} + +// graphicsState is described at https://developer.apple.com/fonts/TTRefMan/RM04/Chap4.html +type graphicsState struct { + // Projection vector, freedom vector and dual projection vector. + pv, fv, dv [2]f2dot14 + // Reference points and zone pointers. + rp, zp [3]int32 + // Control Value / Single Width Cut-In. + controlValueCutIn, singleWidthCutIn, singleWidth fixed.Int26_6 + // Delta base / shift. + deltaBase, deltaShift int32 + // Minimum distance. + minDist fixed.Int26_6 + // Loop count. + loop int32 + // Rounding policy. + roundPeriod, roundPhase, roundThreshold fixed.Int26_6 + roundSuper45 bool + // Auto-flip. + autoFlip bool +} + +var globalDefaultGS = graphicsState{ + pv: [2]f2dot14{0x4000, 0}, // Unit vector along the X axis. + fv: [2]f2dot14{0x4000, 0}, + dv: [2]f2dot14{0x4000, 0}, + zp: [3]int32{1, 1, 1}, + controlValueCutIn: (17 << 6) / 16, // 17/16 as a fixed.Int26_6. + deltaBase: 9, + deltaShift: 3, + minDist: 1 << 6, // 1 as a fixed.Int26_6. + loop: 1, + roundPeriod: 1 << 6, // 1 as a fixed.Int26_6. + roundThreshold: 1 << 5, // 1/2 as a fixed.Int26_6. + roundSuper45: false, + autoFlip: true, +} + +func resetTwilightPoints(f *Font, p []Point) []Point { + if n := int(f.maxTwilightPoints) + 4; n <= cap(p) { + p = p[:n] + for i := range p { + p[i] = Point{} + } + } else { + p = make([]Point, n) + } + return p +} + +func (h *hinter) init(f *Font, scale fixed.Int26_6) error { + h.points[twilightZone][0] = resetTwilightPoints(f, h.points[twilightZone][0]) + h.points[twilightZone][1] = resetTwilightPoints(f, h.points[twilightZone][1]) + h.points[twilightZone][2] = resetTwilightPoints(f, h.points[twilightZone][2]) + + rescale := h.scale != scale + if h.font != f { + h.font, rescale = f, true + if h.functions == nil { + h.functions = make(map[int32][]byte) + } else { + for k := range h.functions { + delete(h.functions, k) + } + } + + if x := int(f.maxStackElements); x > len(h.stack) { + x += 255 + x &^= 255 + h.stack = make([]int32, x) + } + if x := int(f.maxStorage); x > len(h.store) { + x += 15 + x &^= 15 + h.store = make([]int32, x) + } + if len(f.fpgm) != 0 { + if err := h.run(f.fpgm, nil, nil, nil, nil); err != nil { + return err + } + } + } + + if rescale { + h.scale = scale + h.scaledCVTInitialized = false + + h.defaultGS = globalDefaultGS + + if len(f.prep) != 0 { + if err := h.run(f.prep, nil, nil, nil, nil); err != nil { + return err + } + h.defaultGS = h.gs + // The MS rasterizer doesn't allow the following graphics state + // variables to be modified by the CVT program. + h.defaultGS.pv = globalDefaultGS.pv + h.defaultGS.fv = globalDefaultGS.fv + h.defaultGS.dv = globalDefaultGS.dv + h.defaultGS.rp = globalDefaultGS.rp + h.defaultGS.zp = globalDefaultGS.zp + h.defaultGS.loop = globalDefaultGS.loop + } + } + return nil +} + +func (h *hinter) run(program []byte, pCurrent, pUnhinted, pInFontUnits []Point, ends []int) error { + h.gs = h.defaultGS + h.points[glyphZone][current] = pCurrent + h.points[glyphZone][unhinted] = pUnhinted + h.points[glyphZone][inFontUnits] = pInFontUnits + h.ends = ends + + if len(program) > 50000 { + return errors.New("truetype: hinting: too many instructions") + } + var ( + steps, pc, top int + opcode uint8 + + callStack [32]callStackEntry + callStackTop int + ) + + for 0 <= pc && pc < len(program) { + steps++ + if steps == 100000 { + return errors.New("truetype: hinting: too many steps") + } + opcode = program[pc] + if top < int(popCount[opcode]) { + return errors.New("truetype: hinting: stack underflow") + } + switch opcode { + + case opSVTCA0: + h.gs.pv = [2]f2dot14{0, 0x4000} + h.gs.fv = [2]f2dot14{0, 0x4000} + h.gs.dv = [2]f2dot14{0, 0x4000} + + case opSVTCA1: + h.gs.pv = [2]f2dot14{0x4000, 0} + h.gs.fv = [2]f2dot14{0x4000, 0} + h.gs.dv = [2]f2dot14{0x4000, 0} + + case opSPVTCA0: + h.gs.pv = [2]f2dot14{0, 0x4000} + h.gs.dv = [2]f2dot14{0, 0x4000} + + case opSPVTCA1: + h.gs.pv = [2]f2dot14{0x4000, 0} + h.gs.dv = [2]f2dot14{0x4000, 0} + + case opSFVTCA0: + h.gs.fv = [2]f2dot14{0, 0x4000} + + case opSFVTCA1: + h.gs.fv = [2]f2dot14{0x4000, 0} + + case opSPVTL0, opSPVTL1, opSFVTL0, opSFVTL1: + top -= 2 + p1 := h.point(0, current, h.stack[top+0]) + p2 := h.point(0, current, h.stack[top+1]) + if p1 == nil || p2 == nil { + return errors.New("truetype: hinting: point out of range") + } + dx := f2dot14(p1.X - p2.X) + dy := f2dot14(p1.Y - p2.Y) + if dx == 0 && dy == 0 { + dx = 0x4000 + } else if opcode&1 != 0 { + // Counter-clockwise rotation. + dx, dy = -dy, dx + } + v := normalize(dx, dy) + if opcode < opSFVTL0 { + h.gs.pv = v + h.gs.dv = v + } else { + h.gs.fv = v + } + + case opSPVFS: + top -= 2 + h.gs.pv = normalize(f2dot14(h.stack[top]), f2dot14(h.stack[top+1])) + h.gs.dv = h.gs.pv + + case opSFVFS: + top -= 2 + h.gs.fv = normalize(f2dot14(h.stack[top]), f2dot14(h.stack[top+1])) + + case opGPV: + if top+1 >= len(h.stack) { + return errors.New("truetype: hinting: stack overflow") + } + h.stack[top+0] = int32(h.gs.pv[0]) + h.stack[top+1] = int32(h.gs.pv[1]) + top += 2 + + case opGFV: + if top+1 >= len(h.stack) { + return errors.New("truetype: hinting: stack overflow") + } + h.stack[top+0] = int32(h.gs.fv[0]) + h.stack[top+1] = int32(h.gs.fv[1]) + top += 2 + + case opSFVTPV: + h.gs.fv = h.gs.pv + + case opISECT: + top -= 5 + p := h.point(2, current, h.stack[top+0]) + a0 := h.point(1, current, h.stack[top+1]) + a1 := h.point(1, current, h.stack[top+2]) + b0 := h.point(0, current, h.stack[top+3]) + b1 := h.point(0, current, h.stack[top+4]) + if p == nil || a0 == nil || a1 == nil || b0 == nil || b1 == nil { + return errors.New("truetype: hinting: point out of range") + } + + dbx := b1.X - b0.X + dby := b1.Y - b0.Y + dax := a1.X - a0.X + day := a1.Y - a0.Y + dx := b0.X - a0.X + dy := b0.Y - a0.Y + discriminant := mulDiv(int64(dax), int64(-dby), 0x40) + + mulDiv(int64(day), int64(dbx), 0x40) + dotProduct := mulDiv(int64(dax), int64(dbx), 0x40) + + mulDiv(int64(day), int64(dby), 0x40) + // The discriminant above is actually a cross product of vectors + // da and db. Together with the dot product, they can be used as + // surrogates for sine and cosine of the angle between the vectors. + // Indeed, + // dotproduct = |da||db|cos(angle) + // discriminant = |da||db|sin(angle) + // We use these equations to reject grazing intersections by + // thresholding abs(tan(angle)) at 1/19, corresponding to 3 degrees. + absDisc, absDotP := discriminant, dotProduct + if absDisc < 0 { + absDisc = -absDisc + } + if absDotP < 0 { + absDotP = -absDotP + } + if 19*absDisc > absDotP { + val := mulDiv(int64(dx), int64(-dby), 0x40) + + mulDiv(int64(dy), int64(dbx), 0x40) + rx := mulDiv(val, int64(dax), discriminant) + ry := mulDiv(val, int64(day), discriminant) + p.X = a0.X + fixed.Int26_6(rx) + p.Y = a0.Y + fixed.Int26_6(ry) + } else { + p.X = (a0.X + a1.X + b0.X + b1.X) / 4 + p.Y = (a0.Y + a1.Y + b0.Y + b1.Y) / 4 + } + p.Flags |= flagTouchedX | flagTouchedY + + case opSRP0, opSRP1, opSRP2: + top-- + h.gs.rp[opcode-opSRP0] = h.stack[top] + + case opSZP0, opSZP1, opSZP2: + top-- + h.gs.zp[opcode-opSZP0] = h.stack[top] + + case opSZPS: + top-- + h.gs.zp[0] = h.stack[top] + h.gs.zp[1] = h.stack[top] + h.gs.zp[2] = h.stack[top] + + case opSLOOP: + top-- + // https://developer.apple.com/fonts/TrueType-Reference-Manual/RM05/Chap5.html#SLOOP + // says that "Setting the loop variable to zero is an error". In + // theory, the inequality on the next line should be "<=" instead + // of "<". In practice, some font files' bytecode, such as the '2' + // glyph in the DejaVuSansMono.ttf that comes with Ubuntu 14.04, + // issue SLOOP with a zero on top of the stack. Just like the C + // Freetype code, we allow the zero. + if h.stack[top] < 0 { + return errors.New("truetype: hinting: invalid data") + } + h.gs.loop = h.stack[top] + + case opRTG: + h.gs.roundPeriod = 1 << 6 + h.gs.roundPhase = 0 + h.gs.roundThreshold = 1 << 5 + h.gs.roundSuper45 = false + + case opRTHG: + h.gs.roundPeriod = 1 << 6 + h.gs.roundPhase = 1 << 5 + h.gs.roundThreshold = 1 << 5 + h.gs.roundSuper45 = false + + case opSMD: + top-- + h.gs.minDist = fixed.Int26_6(h.stack[top]) + + case opELSE: + opcode = 1 + goto ifelse + + case opJMPR: + top-- + pc += int(h.stack[top]) + continue + + case opSCVTCI: + top-- + h.gs.controlValueCutIn = fixed.Int26_6(h.stack[top]) + + case opSSWCI: + top-- + h.gs.singleWidthCutIn = fixed.Int26_6(h.stack[top]) + + case opSSW: + top-- + h.gs.singleWidth = h.font.scale(h.scale * fixed.Int26_6(h.stack[top])) + + case opDUP: + if top >= len(h.stack) { + return errors.New("truetype: hinting: stack overflow") + } + h.stack[top] = h.stack[top-1] + top++ + + case opPOP: + top-- + + case opCLEAR: + top = 0 + + case opSWAP: + h.stack[top-1], h.stack[top-2] = h.stack[top-2], h.stack[top-1] + + case opDEPTH: + if top >= len(h.stack) { + return errors.New("truetype: hinting: stack overflow") + } + h.stack[top] = int32(top) + top++ + + case opCINDEX, opMINDEX: + x := int(h.stack[top-1]) + if x <= 0 || x >= top { + return errors.New("truetype: hinting: invalid data") + } + h.stack[top-1] = h.stack[top-1-x] + if opcode == opMINDEX { + copy(h.stack[top-1-x:top-1], h.stack[top-x:top]) + top-- + } + + case opALIGNPTS: + top -= 2 + p := h.point(1, current, h.stack[top]) + q := h.point(0, current, h.stack[top+1]) + if p == nil || q == nil { + return errors.New("truetype: hinting: point out of range") + } + d := dotProduct(fixed.Int26_6(q.X-p.X), fixed.Int26_6(q.Y-p.Y), h.gs.pv) / 2 + h.move(p, +d, true) + h.move(q, -d, true) + + case opUTP: + top-- + p := h.point(0, current, h.stack[top]) + if p == nil { + return errors.New("truetype: hinting: point out of range") + } + p.Flags &^= flagTouchedX | flagTouchedY + + case opLOOPCALL, opCALL: + if callStackTop >= len(callStack) { + return errors.New("truetype: hinting: call stack overflow") + } + top-- + f, ok := h.functions[h.stack[top]] + if !ok { + return errors.New("truetype: hinting: undefined function") + } + callStack[callStackTop] = callStackEntry{program, pc, 1} + if opcode == opLOOPCALL { + top-- + if h.stack[top] == 0 { + break + } + callStack[callStackTop].loopCount = h.stack[top] + } + callStackTop++ + program, pc = f, 0 + continue + + case opFDEF: + // Save all bytecode up until the next ENDF. + startPC := pc + 1 + fdefloop: + for { + pc++ + if pc >= len(program) { + return errors.New("truetype: hinting: unbalanced FDEF") + } + switch program[pc] { + case opFDEF: + return errors.New("truetype: hinting: nested FDEF") + case opENDF: + top-- + h.functions[h.stack[top]] = program[startPC : pc+1] + break fdefloop + default: + var ok bool + pc, ok = skipInstructionPayload(program, pc) + if !ok { + return errors.New("truetype: hinting: unbalanced FDEF") + } + } + } + + case opENDF: + if callStackTop == 0 { + return errors.New("truetype: hinting: call stack underflow") + } + callStackTop-- + callStack[callStackTop].loopCount-- + if callStack[callStackTop].loopCount != 0 { + callStackTop++ + pc = 0 + continue + } + program, pc = callStack[callStackTop].program, callStack[callStackTop].pc + + case opMDAP0, opMDAP1: + top-- + i := h.stack[top] + p := h.point(0, current, i) + if p == nil { + return errors.New("truetype: hinting: point out of range") + } + distance := fixed.Int26_6(0) + if opcode == opMDAP1 { + distance = dotProduct(p.X, p.Y, h.gs.pv) + // TODO: metrics compensation. + distance = h.round(distance) - distance + } + h.move(p, distance, true) + h.gs.rp[0] = i + h.gs.rp[1] = i + + case opIUP0, opIUP1: + iupY, mask := opcode == opIUP0, uint32(flagTouchedX) + if iupY { + mask = flagTouchedY + } + prevEnd := 0 + for _, end := range h.ends { + for i := prevEnd; i < end; i++ { + for i < end && h.points[glyphZone][current][i].Flags&mask == 0 { + i++ + } + if i == end { + break + } + firstTouched, curTouched := i, i + i++ + for ; i < end; i++ { + if h.points[glyphZone][current][i].Flags&mask != 0 { + h.iupInterp(iupY, curTouched+1, i-1, curTouched, i) + curTouched = i + } + } + if curTouched == firstTouched { + h.iupShift(iupY, prevEnd, end, curTouched) + } else { + h.iupInterp(iupY, curTouched+1, end-1, curTouched, firstTouched) + if firstTouched > 0 { + h.iupInterp(iupY, prevEnd, firstTouched-1, curTouched, firstTouched) + } + } + } + prevEnd = end + } + + case opSHP0, opSHP1: + if top < int(h.gs.loop) { + return errors.New("truetype: hinting: stack underflow") + } + _, _, d, ok := h.displacement(opcode&1 == 0) + if !ok { + return errors.New("truetype: hinting: point out of range") + } + for ; h.gs.loop != 0; h.gs.loop-- { + top-- + p := h.point(2, current, h.stack[top]) + if p == nil { + return errors.New("truetype: hinting: point out of range") + } + h.move(p, d, true) + } + h.gs.loop = 1 + + case opSHC0, opSHC1: + top-- + zonePointer, i, d, ok := h.displacement(opcode&1 == 0) + if !ok { + return errors.New("truetype: hinting: point out of range") + } + if h.gs.zp[2] == 0 { + // TODO: implement this when we have a glyph that does this. + return errors.New("hinting: unimplemented SHC instruction") + } + contour := h.stack[top] + if contour < 0 || len(ends) <= int(contour) { + return errors.New("truetype: hinting: contour out of range") + } + j0, j1 := int32(0), int32(h.ends[contour]) + if contour > 0 { + j0 = int32(h.ends[contour-1]) + } + move := h.gs.zp[zonePointer] != h.gs.zp[2] + for j := j0; j < j1; j++ { + if move || j != i { + h.move(h.point(2, current, j), d, true) + } + } + + case opSHZ0, opSHZ1: + top-- + zonePointer, i, d, ok := h.displacement(opcode&1 == 0) + if !ok { + return errors.New("truetype: hinting: point out of range") + } + + // As per C Freetype, SHZ doesn't move the phantom points, or mark + // the points as touched. + limit := int32(len(h.points[h.gs.zp[2]][current])) + if h.gs.zp[2] == glyphZone { + limit -= 4 + } + for j := int32(0); j < limit; j++ { + if i != j || h.gs.zp[zonePointer] != h.gs.zp[2] { + h.move(h.point(2, current, j), d, false) + } + } + + case opSHPIX: + top-- + d := fixed.Int26_6(h.stack[top]) + if top < int(h.gs.loop) { + return errors.New("truetype: hinting: stack underflow") + } + for ; h.gs.loop != 0; h.gs.loop-- { + top-- + p := h.point(2, current, h.stack[top]) + if p == nil { + return errors.New("truetype: hinting: point out of range") + } + h.move(p, d, true) + } + h.gs.loop = 1 + + case opIP: + if top < int(h.gs.loop) { + return errors.New("truetype: hinting: stack underflow") + } + pointType := inFontUnits + twilight := h.gs.zp[0] == 0 || h.gs.zp[1] == 0 || h.gs.zp[2] == 0 + if twilight { + pointType = unhinted + } + p := h.point(1, pointType, h.gs.rp[2]) + oldP := h.point(0, pointType, h.gs.rp[1]) + oldRange := dotProduct(p.X-oldP.X, p.Y-oldP.Y, h.gs.dv) + + p = h.point(1, current, h.gs.rp[2]) + curP := h.point(0, current, h.gs.rp[1]) + curRange := dotProduct(p.X-curP.X, p.Y-curP.Y, h.gs.pv) + for ; h.gs.loop != 0; h.gs.loop-- { + top-- + i := h.stack[top] + p = h.point(2, pointType, i) + oldDist := dotProduct(p.X-oldP.X, p.Y-oldP.Y, h.gs.dv) + p = h.point(2, current, i) + curDist := dotProduct(p.X-curP.X, p.Y-curP.Y, h.gs.pv) + newDist := fixed.Int26_6(0) + if oldDist != 0 { + if oldRange != 0 { + newDist = fixed.Int26_6(mulDiv(int64(oldDist), int64(curRange), int64(oldRange))) + } else { + newDist = -oldDist + } + } + h.move(p, newDist-curDist, true) + } + h.gs.loop = 1 + + case opMSIRP0, opMSIRP1: + top -= 2 + i := h.stack[top] + distance := fixed.Int26_6(h.stack[top+1]) + + // TODO: special case h.gs.zp[1] == 0 in C Freetype. + ref := h.point(0, current, h.gs.rp[0]) + p := h.point(1, current, i) + if ref == nil || p == nil { + return errors.New("truetype: hinting: point out of range") + } + curDist := dotProduct(p.X-ref.X, p.Y-ref.Y, h.gs.pv) + + // Set-RP0 bit. + if opcode == opMSIRP1 { + h.gs.rp[0] = i + } + h.gs.rp[1] = h.gs.rp[0] + h.gs.rp[2] = i + + // Move the point. + h.move(p, distance-curDist, true) + + case opALIGNRP: + if top < int(h.gs.loop) { + return errors.New("truetype: hinting: stack underflow") + } + ref := h.point(0, current, h.gs.rp[0]) + if ref == nil { + return errors.New("truetype: hinting: point out of range") + } + for ; h.gs.loop != 0; h.gs.loop-- { + top-- + p := h.point(1, current, h.stack[top]) + if p == nil { + return errors.New("truetype: hinting: point out of range") + } + h.move(p, -dotProduct(p.X-ref.X, p.Y-ref.Y, h.gs.pv), true) + } + h.gs.loop = 1 + + case opRTDG: + h.gs.roundPeriod = 1 << 5 + h.gs.roundPhase = 0 + h.gs.roundThreshold = 1 << 4 + h.gs.roundSuper45 = false + + case opMIAP0, opMIAP1: + top -= 2 + i := h.stack[top] + distance := h.getScaledCVT(h.stack[top+1]) + if h.gs.zp[0] == 0 { + p := h.point(0, unhinted, i) + q := h.point(0, current, i) + p.X = fixed.Int26_6((int64(distance) * int64(h.gs.fv[0])) >> 14) + p.Y = fixed.Int26_6((int64(distance) * int64(h.gs.fv[1])) >> 14) + *q = *p + } + p := h.point(0, current, i) + oldDist := dotProduct(p.X, p.Y, h.gs.pv) + if opcode == opMIAP1 { + if fabs(distance-oldDist) > h.gs.controlValueCutIn { + distance = oldDist + } + // TODO: metrics compensation. + distance = h.round(distance) + } + h.move(p, distance-oldDist, true) + h.gs.rp[0] = i + h.gs.rp[1] = i + + case opNPUSHB: + opcode = 0 + goto push + + case opNPUSHW: + opcode = 0x80 + goto push + + case opWS: + top -= 2 + i := int(h.stack[top]) + if i < 0 || len(h.store) <= i { + return errors.New("truetype: hinting: invalid data") + } + h.store[i] = h.stack[top+1] + + case opRS: + i := int(h.stack[top-1]) + if i < 0 || len(h.store) <= i { + return errors.New("truetype: hinting: invalid data") + } + h.stack[top-1] = h.store[i] + + case opWCVTP: + top -= 2 + h.setScaledCVT(h.stack[top], fixed.Int26_6(h.stack[top+1])) + + case opRCVT: + h.stack[top-1] = int32(h.getScaledCVT(h.stack[top-1])) + + case opGC0, opGC1: + i := h.stack[top-1] + if opcode == opGC0 { + p := h.point(2, current, i) + h.stack[top-1] = int32(dotProduct(p.X, p.Y, h.gs.pv)) + } else { + p := h.point(2, unhinted, i) + // Using dv as per C Freetype. + h.stack[top-1] = int32(dotProduct(p.X, p.Y, h.gs.dv)) + } + + case opSCFS: + top -= 2 + i := h.stack[top] + p := h.point(2, current, i) + if p == nil { + return errors.New("truetype: hinting: point out of range") + } + c := dotProduct(p.X, p.Y, h.gs.pv) + h.move(p, fixed.Int26_6(h.stack[top+1])-c, true) + if h.gs.zp[2] != 0 { + break + } + q := h.point(2, unhinted, i) + if q == nil { + return errors.New("truetype: hinting: point out of range") + } + q.X = p.X + q.Y = p.Y + + case opMD0, opMD1: + top-- + pt, v, scale := pointType(0), [2]f2dot14{}, false + if opcode == opMD0 { + pt = current + v = h.gs.pv + } else if h.gs.zp[0] == 0 || h.gs.zp[1] == 0 { + pt = unhinted + v = h.gs.dv + } else { + pt = inFontUnits + v = h.gs.dv + scale = true + } + p := h.point(0, pt, h.stack[top-1]) + q := h.point(1, pt, h.stack[top]) + if p == nil || q == nil { + return errors.New("truetype: hinting: point out of range") + } + d := int32(dotProduct(p.X-q.X, p.Y-q.Y, v)) + if scale { + d = int32(int64(d*int32(h.scale)) / int64(h.font.fUnitsPerEm)) + } + h.stack[top-1] = d + + case opMPPEM, opMPS: + if top >= len(h.stack) { + return errors.New("truetype: hinting: stack overflow") + } + // For MPS, point size should be irrelevant; we return the PPEM. + h.stack[top] = int32(h.scale) >> 6 + top++ + + case opFLIPON, opFLIPOFF: + h.gs.autoFlip = opcode == opFLIPON + + case opDEBUG: + // No-op. + + case opLT: + top-- + h.stack[top-1] = bool2int32(h.stack[top-1] < h.stack[top]) + + case opLTEQ: + top-- + h.stack[top-1] = bool2int32(h.stack[top-1] <= h.stack[top]) + + case opGT: + top-- + h.stack[top-1] = bool2int32(h.stack[top-1] > h.stack[top]) + + case opGTEQ: + top-- + h.stack[top-1] = bool2int32(h.stack[top-1] >= h.stack[top]) + + case opEQ: + top-- + h.stack[top-1] = bool2int32(h.stack[top-1] == h.stack[top]) + + case opNEQ: + top-- + h.stack[top-1] = bool2int32(h.stack[top-1] != h.stack[top]) + + case opODD, opEVEN: + i := h.round(fixed.Int26_6(h.stack[top-1])) >> 6 + h.stack[top-1] = int32(i&1) ^ int32(opcode-opODD) + + case opIF: + top-- + if h.stack[top] == 0 { + opcode = 0 + goto ifelse + } + + case opEIF: + // No-op. + + case opAND: + top-- + h.stack[top-1] = bool2int32(h.stack[top-1] != 0 && h.stack[top] != 0) + + case opOR: + top-- + h.stack[top-1] = bool2int32(h.stack[top-1]|h.stack[top] != 0) + + case opNOT: + h.stack[top-1] = bool2int32(h.stack[top-1] == 0) + + case opDELTAP1: + goto delta + + case opSDB: + top-- + h.gs.deltaBase = h.stack[top] + + case opSDS: + top-- + h.gs.deltaShift = h.stack[top] + + case opADD: + top-- + h.stack[top-1] += h.stack[top] + + case opSUB: + top-- + h.stack[top-1] -= h.stack[top] + + case opDIV: + top-- + if h.stack[top] == 0 { + return errors.New("truetype: hinting: division by zero") + } + h.stack[top-1] = int32(fdiv(fixed.Int26_6(h.stack[top-1]), fixed.Int26_6(h.stack[top]))) + + case opMUL: + top-- + h.stack[top-1] = int32(fmul(fixed.Int26_6(h.stack[top-1]), fixed.Int26_6(h.stack[top]))) + + case opABS: + if h.stack[top-1] < 0 { + h.stack[top-1] = -h.stack[top-1] + } + + case opNEG: + h.stack[top-1] = -h.stack[top-1] + + case opFLOOR: + h.stack[top-1] &^= 63 + + case opCEILING: + h.stack[top-1] += 63 + h.stack[top-1] &^= 63 + + case opROUND00, opROUND01, opROUND10, opROUND11: + // The four flavors of opROUND are equivalent. See the comment below on + // opNROUND for the rationale. + h.stack[top-1] = int32(h.round(fixed.Int26_6(h.stack[top-1]))) + + case opNROUND00, opNROUND01, opNROUND10, opNROUND11: + // No-op. The spec says to add one of four "compensations for the engine + // characteristics", to cater for things like "different dot-size printers". + // https://developer.apple.com/fonts/TTRefMan/RM02/Chap2.html#engine_compensation + // This code does not implement engine compensation, as we don't expect to + // be used to output on dot-matrix printers. + + case opWCVTF: + top -= 2 + h.setScaledCVT(h.stack[top], h.font.scale(h.scale*fixed.Int26_6(h.stack[top+1]))) + + case opDELTAP2, opDELTAP3, opDELTAC1, opDELTAC2, opDELTAC3: + goto delta + + case opSROUND, opS45ROUND: + top-- + switch (h.stack[top] >> 6) & 0x03 { + case 0: + h.gs.roundPeriod = 1 << 5 + case 1, 3: + h.gs.roundPeriod = 1 << 6 + case 2: + h.gs.roundPeriod = 1 << 7 + } + h.gs.roundSuper45 = opcode == opS45ROUND + if h.gs.roundSuper45 { + // The spec says to multiply by √2, but the C Freetype code says 1/√2. + // We go with 1/√2. + h.gs.roundPeriod *= 46341 + h.gs.roundPeriod /= 65536 + } + h.gs.roundPhase = h.gs.roundPeriod * fixed.Int26_6((h.stack[top]>>4)&0x03) / 4 + if x := h.stack[top] & 0x0f; x != 0 { + h.gs.roundThreshold = h.gs.roundPeriod * fixed.Int26_6(x-4) / 8 + } else { + h.gs.roundThreshold = h.gs.roundPeriod - 1 + } + + case opJROT: + top -= 2 + if h.stack[top+1] != 0 { + pc += int(h.stack[top]) + continue + } + + case opJROF: + top -= 2 + if h.stack[top+1] == 0 { + pc += int(h.stack[top]) + continue + } + + case opROFF: + h.gs.roundPeriod = 0 + h.gs.roundPhase = 0 + h.gs.roundThreshold = 0 + h.gs.roundSuper45 = false + + case opRUTG: + h.gs.roundPeriod = 1 << 6 + h.gs.roundPhase = 0 + h.gs.roundThreshold = 1<<6 - 1 + h.gs.roundSuper45 = false + + case opRDTG: + h.gs.roundPeriod = 1 << 6 + h.gs.roundPhase = 0 + h.gs.roundThreshold = 0 + h.gs.roundSuper45 = false + + case opSANGW, opAA: + // These ops are "anachronistic" and no longer used. + top-- + + case opFLIPPT: + if top < int(h.gs.loop) { + return errors.New("truetype: hinting: stack underflow") + } + points := h.points[glyphZone][current] + for ; h.gs.loop != 0; h.gs.loop-- { + top-- + i := h.stack[top] + if i < 0 || len(points) <= int(i) { + return errors.New("truetype: hinting: point out of range") + } + points[i].Flags ^= flagOnCurve + } + h.gs.loop = 1 + + case opFLIPRGON, opFLIPRGOFF: + top -= 2 + i, j, points := h.stack[top], h.stack[top+1], h.points[glyphZone][current] + if i < 0 || len(points) <= int(i) || j < 0 || len(points) <= int(j) { + return errors.New("truetype: hinting: point out of range") + } + for ; i <= j; i++ { + if opcode == opFLIPRGON { + points[i].Flags |= flagOnCurve + } else { + points[i].Flags &^= flagOnCurve + } + } + + case opSCANCTRL: + // We do not support dropout control, as we always rasterize grayscale glyphs. + top-- + + case opSDPVTL0, opSDPVTL1: + top -= 2 + for i := 0; i < 2; i++ { + pt := unhinted + if i != 0 { + pt = current + } + p := h.point(1, pt, h.stack[top]) + q := h.point(2, pt, h.stack[top+1]) + if p == nil || q == nil { + return errors.New("truetype: hinting: point out of range") + } + dx := f2dot14(p.X - q.X) + dy := f2dot14(p.Y - q.Y) + if dx == 0 && dy == 0 { + dx = 0x4000 + } else if opcode&1 != 0 { + // Counter-clockwise rotation. + dx, dy = -dy, dx + } + if i == 0 { + h.gs.dv = normalize(dx, dy) + } else { + h.gs.pv = normalize(dx, dy) + } + } + + case opGETINFO: + res := int32(0) + if h.stack[top-1]&(1<<0) != 0 { + // Set the engine version. We hard-code this to 35, the same as + // the C freetype code, which says that "Version~35 corresponds + // to MS rasterizer v.1.7 as used e.g. in Windows~98". + res |= 35 + } + if h.stack[top-1]&(1<<5) != 0 { + // Set that we support grayscale. + res |= 1 << 12 + } + // We set no other bits, as we do not support rotated or stretched glyphs. + h.stack[top-1] = res + + case opIDEF: + // IDEF is for ancient versions of the bytecode interpreter, and is no longer used. + return errors.New("truetype: hinting: unsupported IDEF instruction") + + case opROLL: + h.stack[top-1], h.stack[top-3], h.stack[top-2] = + h.stack[top-3], h.stack[top-2], h.stack[top-1] + + case opMAX: + top-- + if h.stack[top-1] < h.stack[top] { + h.stack[top-1] = h.stack[top] + } + + case opMIN: + top-- + if h.stack[top-1] > h.stack[top] { + h.stack[top-1] = h.stack[top] + } + + case opSCANTYPE: + // We do not support dropout control, as we always rasterize grayscale glyphs. + top-- + + case opINSTCTRL: + // TODO: support instruction execution control? It seems rare, and even when + // nominally used (e.g. Source Sans Pro), it seems conditional on extreme or + // unusual rasterization conditions. For example, the code snippet at + // https://developer.apple.com/fonts/TTRefMan/RM05/Chap5.html#INSTCTRL + // uses INSTCTRL when grid-fitting a rotated or stretched glyph, but + // freetype-go does not support rotated or stretched glyphs. + top -= 2 + + default: + if opcode < opPUSHB000 { + return errors.New("truetype: hinting: unrecognized instruction") + } + + if opcode < opMDRP00000 { + // PUSHxxxx opcode. + + if opcode < opPUSHW000 { + opcode -= opPUSHB000 - 1 + } else { + opcode -= opPUSHW000 - 1 - 0x80 + } + goto push + } + + if opcode < opMIRP00000 { + // MDRPxxxxx opcode. + + top-- + i := h.stack[top] + ref := h.point(0, current, h.gs.rp[0]) + p := h.point(1, current, i) + if ref == nil || p == nil { + return errors.New("truetype: hinting: point out of range") + } + + oldDist := fixed.Int26_6(0) + if h.gs.zp[0] == 0 || h.gs.zp[1] == 0 { + p0 := h.point(1, unhinted, i) + p1 := h.point(0, unhinted, h.gs.rp[0]) + oldDist = dotProduct(p0.X-p1.X, p0.Y-p1.Y, h.gs.dv) + } else { + p0 := h.point(1, inFontUnits, i) + p1 := h.point(0, inFontUnits, h.gs.rp[0]) + oldDist = dotProduct(p0.X-p1.X, p0.Y-p1.Y, h.gs.dv) + oldDist = h.font.scale(h.scale * oldDist) + } + + // Single-width cut-in test. + if x := fabs(oldDist - h.gs.singleWidth); x < h.gs.singleWidthCutIn { + if oldDist >= 0 { + oldDist = +h.gs.singleWidth + } else { + oldDist = -h.gs.singleWidth + } + } + + // Rounding bit. + // TODO: metrics compensation. + distance := oldDist + if opcode&0x04 != 0 { + distance = h.round(oldDist) + } + + // Minimum distance bit. + if opcode&0x08 != 0 { + if oldDist >= 0 { + if distance < h.gs.minDist { + distance = h.gs.minDist + } + } else { + if distance > -h.gs.minDist { + distance = -h.gs.minDist + } + } + } + + // Set-RP0 bit. + h.gs.rp[1] = h.gs.rp[0] + h.gs.rp[2] = i + if opcode&0x10 != 0 { + h.gs.rp[0] = i + } + + // Move the point. + oldDist = dotProduct(p.X-ref.X, p.Y-ref.Y, h.gs.pv) + h.move(p, distance-oldDist, true) + + } else { + // MIRPxxxxx opcode. + + top -= 2 + i := h.stack[top] + cvtDist := h.getScaledCVT(h.stack[top+1]) + if fabs(cvtDist-h.gs.singleWidth) < h.gs.singleWidthCutIn { + if cvtDist >= 0 { + cvtDist = +h.gs.singleWidth + } else { + cvtDist = -h.gs.singleWidth + } + } + + if h.gs.zp[1] == 0 { + // TODO: implement once we have a .ttf file that triggers + // this, so that we can step through C's freetype. + return errors.New("truetype: hinting: unimplemented twilight point adjustment") + } + + ref := h.point(0, unhinted, h.gs.rp[0]) + p := h.point(1, unhinted, i) + if ref == nil || p == nil { + return errors.New("truetype: hinting: point out of range") + } + oldDist := dotProduct(p.X-ref.X, p.Y-ref.Y, h.gs.dv) + + ref = h.point(0, current, h.gs.rp[0]) + p = h.point(1, current, i) + if ref == nil || p == nil { + return errors.New("truetype: hinting: point out of range") + } + curDist := dotProduct(p.X-ref.X, p.Y-ref.Y, h.gs.pv) + + if h.gs.autoFlip && oldDist^cvtDist < 0 { + cvtDist = -cvtDist + } + + // Rounding bit. + // TODO: metrics compensation. + distance := cvtDist + if opcode&0x04 != 0 { + // The CVT value is only used if close enough to oldDist. + if (h.gs.zp[0] == h.gs.zp[1]) && + (fabs(cvtDist-oldDist) > h.gs.controlValueCutIn) { + + distance = oldDist + } + distance = h.round(distance) + } + + // Minimum distance bit. + if opcode&0x08 != 0 { + if oldDist >= 0 { + if distance < h.gs.minDist { + distance = h.gs.minDist + } + } else { + if distance > -h.gs.minDist { + distance = -h.gs.minDist + } + } + } + + // Set-RP0 bit. + h.gs.rp[1] = h.gs.rp[0] + h.gs.rp[2] = i + if opcode&0x10 != 0 { + h.gs.rp[0] = i + } + + // Move the point. + h.move(p, distance-curDist, true) + } + } + pc++ + continue + + ifelse: + // Skip past bytecode until the next ELSE (if opcode == 0) or the + // next EIF (for all opcodes). Opcode == 0 means that we have come + // from an IF. Opcode == 1 means that we have come from an ELSE. + { + ifelseloop: + for depth := 0; ; { + pc++ + if pc >= len(program) { + return errors.New("truetype: hinting: unbalanced IF or ELSE") + } + switch program[pc] { + case opIF: + depth++ + case opELSE: + if depth == 0 && opcode == 0 { + break ifelseloop + } + case opEIF: + depth-- + if depth < 0 { + break ifelseloop + } + default: + var ok bool + pc, ok = skipInstructionPayload(program, pc) + if !ok { + return errors.New("truetype: hinting: unbalanced IF or ELSE") + } + } + } + pc++ + continue + } + + push: + // Push n elements from the program to the stack, where n is the low 7 bits of + // opcode. If the low 7 bits are zero, then n is the next byte from the program. + // The high bit being 0 means that the elements are zero-extended bytes. + // The high bit being 1 means that the elements are sign-extended words. + { + width := 1 + if opcode&0x80 != 0 { + opcode &^= 0x80 + width = 2 + } + if opcode == 0 { + pc++ + if pc >= len(program) { + return errors.New("truetype: hinting: insufficient data") + } + opcode = program[pc] + } + pc++ + if top+int(opcode) > len(h.stack) { + return errors.New("truetype: hinting: stack overflow") + } + if pc+width*int(opcode) > len(program) { + return errors.New("truetype: hinting: insufficient data") + } + for ; opcode > 0; opcode-- { + if width == 1 { + h.stack[top] = int32(program[pc]) + } else { + h.stack[top] = int32(int8(program[pc]))<<8 | int32(program[pc+1]) + } + top++ + pc += width + } + continue + } + + delta: + { + if opcode >= opDELTAC1 && !h.scaledCVTInitialized { + h.initializeScaledCVT() + } + top-- + n := h.stack[top] + if int32(top) < 2*n { + return errors.New("truetype: hinting: stack underflow") + } + for ; n > 0; n-- { + top -= 2 + b := h.stack[top] + c := (b & 0xf0) >> 4 + switch opcode { + case opDELTAP2, opDELTAC2: + c += 16 + case opDELTAP3, opDELTAC3: + c += 32 + } + c += h.gs.deltaBase + if ppem := (int32(h.scale) + 1<<5) >> 6; ppem != c { + continue + } + b = (b & 0x0f) - 8 + if b >= 0 { + b++ + } + b = b * 64 / (1 << uint32(h.gs.deltaShift)) + if opcode >= opDELTAC1 { + a := h.stack[top+1] + if a < 0 || len(h.scaledCVT) <= int(a) { + return errors.New("truetype: hinting: index out of range") + } + h.scaledCVT[a] += fixed.Int26_6(b) + } else { + p := h.point(0, current, h.stack[top+1]) + if p == nil { + return errors.New("truetype: hinting: point out of range") + } + h.move(p, fixed.Int26_6(b), true) + } + } + pc++ + continue + } + } + return nil +} + +func (h *hinter) initializeScaledCVT() { + h.scaledCVTInitialized = true + if n := len(h.font.cvt) / 2; n <= cap(h.scaledCVT) { + h.scaledCVT = h.scaledCVT[:n] + } else { + if n < 32 { + n = 32 + } + h.scaledCVT = make([]fixed.Int26_6, len(h.font.cvt)/2, n) + } + for i := range h.scaledCVT { + unscaled := uint16(h.font.cvt[2*i])<<8 | uint16(h.font.cvt[2*i+1]) + h.scaledCVT[i] = h.font.scale(h.scale * fixed.Int26_6(int16(unscaled))) + } +} + +// getScaledCVT returns the scaled value from the font's Control Value Table. +func (h *hinter) getScaledCVT(i int32) fixed.Int26_6 { + if !h.scaledCVTInitialized { + h.initializeScaledCVT() + } + if i < 0 || len(h.scaledCVT) <= int(i) { + return 0 + } + return h.scaledCVT[i] +} + +// setScaledCVT overrides the scaled value from the font's Control Value Table. +func (h *hinter) setScaledCVT(i int32, v fixed.Int26_6) { + if !h.scaledCVTInitialized { + h.initializeScaledCVT() + } + if i < 0 || len(h.scaledCVT) <= int(i) { + return + } + h.scaledCVT[i] = v +} + +func (h *hinter) point(zonePointer uint32, pt pointType, i int32) *Point { + points := h.points[h.gs.zp[zonePointer]][pt] + if i < 0 || len(points) <= int(i) { + return nil + } + return &points[i] +} + +func (h *hinter) move(p *Point, distance fixed.Int26_6, touch bool) { + fvx := int64(h.gs.fv[0]) + pvx := int64(h.gs.pv[0]) + if fvx == 0x4000 && pvx == 0x4000 { + p.X += fixed.Int26_6(distance) + if touch { + p.Flags |= flagTouchedX + } + return + } + + fvy := int64(h.gs.fv[1]) + pvy := int64(h.gs.pv[1]) + if fvy == 0x4000 && pvy == 0x4000 { + p.Y += fixed.Int26_6(distance) + if touch { + p.Flags |= flagTouchedY + } + return + } + + fvDotPv := (fvx*pvx + fvy*pvy) >> 14 + + if fvx != 0 { + p.X += fixed.Int26_6(mulDiv(fvx, int64(distance), fvDotPv)) + if touch { + p.Flags |= flagTouchedX + } + } + + if fvy != 0 { + p.Y += fixed.Int26_6(mulDiv(fvy, int64(distance), fvDotPv)) + if touch { + p.Flags |= flagTouchedY + } + } +} + +func (h *hinter) iupInterp(interpY bool, p1, p2, ref1, ref2 int) { + if p1 > p2 { + return + } + if ref1 >= len(h.points[glyphZone][current]) || + ref2 >= len(h.points[glyphZone][current]) { + return + } + + var ifu1, ifu2 fixed.Int26_6 + if interpY { + ifu1 = h.points[glyphZone][inFontUnits][ref1].Y + ifu2 = h.points[glyphZone][inFontUnits][ref2].Y + } else { + ifu1 = h.points[glyphZone][inFontUnits][ref1].X + ifu2 = h.points[glyphZone][inFontUnits][ref2].X + } + if ifu1 > ifu2 { + ifu1, ifu2 = ifu2, ifu1 + ref1, ref2 = ref2, ref1 + } + + var unh1, unh2, delta1, delta2 fixed.Int26_6 + if interpY { + unh1 = h.points[glyphZone][unhinted][ref1].Y + unh2 = h.points[glyphZone][unhinted][ref2].Y + delta1 = h.points[glyphZone][current][ref1].Y - unh1 + delta2 = h.points[glyphZone][current][ref2].Y - unh2 + } else { + unh1 = h.points[glyphZone][unhinted][ref1].X + unh2 = h.points[glyphZone][unhinted][ref2].X + delta1 = h.points[glyphZone][current][ref1].X - unh1 + delta2 = h.points[glyphZone][current][ref2].X - unh2 + } + + var xy, ifuXY fixed.Int26_6 + if ifu1 == ifu2 { + for i := p1; i <= p2; i++ { + if interpY { + xy = h.points[glyphZone][unhinted][i].Y + } else { + xy = h.points[glyphZone][unhinted][i].X + } + + if xy <= unh1 { + xy += delta1 + } else { + xy += delta2 + } + + if interpY { + h.points[glyphZone][current][i].Y = xy + } else { + h.points[glyphZone][current][i].X = xy + } + } + return + } + + scale, scaleOK := int64(0), false + for i := p1; i <= p2; i++ { + if interpY { + xy = h.points[glyphZone][unhinted][i].Y + ifuXY = h.points[glyphZone][inFontUnits][i].Y + } else { + xy = h.points[glyphZone][unhinted][i].X + ifuXY = h.points[glyphZone][inFontUnits][i].X + } + + if xy <= unh1 { + xy += delta1 + } else if xy >= unh2 { + xy += delta2 + } else { + if !scaleOK { + scaleOK = true + scale = mulDiv(int64(unh2+delta2-unh1-delta1), 0x10000, int64(ifu2-ifu1)) + } + numer := int64(ifuXY-ifu1) * scale + if numer >= 0 { + numer += 0x8000 + } else { + numer -= 0x8000 + } + xy = unh1 + delta1 + fixed.Int26_6(numer/0x10000) + } + + if interpY { + h.points[glyphZone][current][i].Y = xy + } else { + h.points[glyphZone][current][i].X = xy + } + } +} + +func (h *hinter) iupShift(interpY bool, p1, p2, p int) { + var delta fixed.Int26_6 + if interpY { + delta = h.points[glyphZone][current][p].Y - h.points[glyphZone][unhinted][p].Y + } else { + delta = h.points[glyphZone][current][p].X - h.points[glyphZone][unhinted][p].X + } + if delta == 0 { + return + } + for i := p1; i < p2; i++ { + if i == p { + continue + } + if interpY { + h.points[glyphZone][current][i].Y += delta + } else { + h.points[glyphZone][current][i].X += delta + } + } +} + +func (h *hinter) displacement(useZP1 bool) (zonePointer uint32, i int32, d fixed.Int26_6, ok bool) { + zonePointer, i = uint32(0), h.gs.rp[1] + if useZP1 { + zonePointer, i = 1, h.gs.rp[2] + } + p := h.point(zonePointer, current, i) + q := h.point(zonePointer, unhinted, i) + if p == nil || q == nil { + return 0, 0, 0, false + } + d = dotProduct(p.X-q.X, p.Y-q.Y, h.gs.pv) + return zonePointer, i, d, true +} + +// skipInstructionPayload increments pc by the extra data that follows a +// variable length PUSHB or PUSHW instruction. +func skipInstructionPayload(program []byte, pc int) (newPC int, ok bool) { + switch program[pc] { + case opNPUSHB: + pc++ + if pc >= len(program) { + return 0, false + } + pc += int(program[pc]) + case opNPUSHW: + pc++ + if pc >= len(program) { + return 0, false + } + pc += 2 * int(program[pc]) + case opPUSHB000, opPUSHB001, opPUSHB010, opPUSHB011, + opPUSHB100, opPUSHB101, opPUSHB110, opPUSHB111: + pc += int(program[pc] - (opPUSHB000 - 1)) + case opPUSHW000, opPUSHW001, opPUSHW010, opPUSHW011, + opPUSHW100, opPUSHW101, opPUSHW110, opPUSHW111: + pc += 2 * int(program[pc]-(opPUSHW000-1)) + } + return pc, true +} + +// f2dot14 is a 2.14 fixed point number. +type f2dot14 int16 + +func normalize(x, y f2dot14) [2]f2dot14 { + fx, fy := float64(x), float64(y) + l := 0x4000 / math.Hypot(fx, fy) + fx *= l + if fx >= 0 { + fx += 0.5 + } else { + fx -= 0.5 + } + fy *= l + if fy >= 0 { + fy += 0.5 + } else { + fy -= 0.5 + } + return [2]f2dot14{f2dot14(fx), f2dot14(fy)} +} + +// fabs returns abs(x) in 26.6 fixed point arithmetic. +func fabs(x fixed.Int26_6) fixed.Int26_6 { + if x < 0 { + return -x + } + return x +} + +// fdiv returns x/y in 26.6 fixed point arithmetic. +func fdiv(x, y fixed.Int26_6) fixed.Int26_6 { + return fixed.Int26_6((int64(x) << 6) / int64(y)) +} + +// fmul returns x*y in 26.6 fixed point arithmetic. +func fmul(x, y fixed.Int26_6) fixed.Int26_6 { + return fixed.Int26_6((int64(x)*int64(y) + 1<<5) >> 6) +} + +// dotProduct returns the dot product of [x, y] and q. It is almost the same as +// px := int64(x) +// py := int64(y) +// qx := int64(q[0]) +// qy := int64(q[1]) +// return fixed.Int26_6((px*qx + py*qy + 1<<13) >> 14) +// except that the computation is done with 32-bit integers to produce exactly +// the same rounding behavior as C Freetype. +func dotProduct(x, y fixed.Int26_6, q [2]f2dot14) fixed.Int26_6 { + // Compute x*q[0] as 64-bit value. + l := uint32((int32(x) & 0xFFFF) * int32(q[0])) + m := (int32(x) >> 16) * int32(q[0]) + + lo1 := l + (uint32(m) << 16) + hi1 := (m >> 16) + (int32(l) >> 31) + bool2int32(lo1 < l) + + // Compute y*q[1] as 64-bit value. + l = uint32((int32(y) & 0xFFFF) * int32(q[1])) + m = (int32(y) >> 16) * int32(q[1]) + + lo2 := l + (uint32(m) << 16) + hi2 := (m >> 16) + (int32(l) >> 31) + bool2int32(lo2 < l) + + // Add them. + lo := lo1 + lo2 + hi := hi1 + hi2 + bool2int32(lo < lo1) + + // Divide the result by 2^14 with rounding. + s := hi >> 31 + l = lo + uint32(s) + hi += s + bool2int32(l < lo) + lo = l + + l = lo + 0x2000 + hi += bool2int32(l < lo) + + return fixed.Int26_6((uint32(hi) << 18) | (l >> 14)) +} + +// mulDiv returns x*y/z, rounded to the nearest integer. +func mulDiv(x, y, z int64) int64 { + xy := x * y + if z < 0 { + xy, z = -xy, -z + } + if xy >= 0 { + xy += z / 2 + } else { + xy -= z / 2 + } + return xy / z +} + +// round rounds the given number. The rounding algorithm is described at +// https://developer.apple.com/fonts/TTRefMan/RM02/Chap2.html#rounding +func (h *hinter) round(x fixed.Int26_6) fixed.Int26_6 { + if h.gs.roundPeriod == 0 { + // Rounding is off. + return x + } + if x >= 0 { + ret := x - h.gs.roundPhase + h.gs.roundThreshold + if h.gs.roundSuper45 { + ret /= h.gs.roundPeriod + ret *= h.gs.roundPeriod + } else { + ret &= -h.gs.roundPeriod + } + if x != 0 && ret < 0 { + ret = 0 + } + return ret + h.gs.roundPhase + } + ret := -x - h.gs.roundPhase + h.gs.roundThreshold + if h.gs.roundSuper45 { + ret /= h.gs.roundPeriod + ret *= h.gs.roundPeriod + } else { + ret &= -h.gs.roundPeriod + } + if ret < 0 { + ret = 0 + } + return -ret - h.gs.roundPhase +} + +func bool2int32(b bool) int32 { + if b { + return 1 + } + return 0 +} diff --git a/vendor/github.com/golang/freetype/truetype/opcodes.go b/vendor/github.com/golang/freetype/truetype/opcodes.go new file mode 100644 index 00000000..1880e1e6 --- /dev/null +++ b/vendor/github.com/golang/freetype/truetype/opcodes.go @@ -0,0 +1,289 @@ +// Copyright 2012 The Freetype-Go Authors. All rights reserved. +// Use of this source code is governed by your choice of either the +// FreeType License or the GNU General Public License version 2 (or +// any later version), both of which can be found in the LICENSE file. + +package truetype + +// The Truetype opcodes are summarized at +// https://developer.apple.com/fonts/TTRefMan/RM07/appendixA.html + +const ( + opSVTCA0 = 0x00 // Set freedom and projection Vectors To Coordinate Axis + opSVTCA1 = 0x01 // . + opSPVTCA0 = 0x02 // Set Projection Vector To Coordinate Axis + opSPVTCA1 = 0x03 // . + opSFVTCA0 = 0x04 // Set Freedom Vector to Coordinate Axis + opSFVTCA1 = 0x05 // . + opSPVTL0 = 0x06 // Set Projection Vector To Line + opSPVTL1 = 0x07 // . + opSFVTL0 = 0x08 // Set Freedom Vector To Line + opSFVTL1 = 0x09 // . + opSPVFS = 0x0a // Set Projection Vector From Stack + opSFVFS = 0x0b // Set Freedom Vector From Stack + opGPV = 0x0c // Get Projection Vector + opGFV = 0x0d // Get Freedom Vector + opSFVTPV = 0x0e // Set Freedom Vector To Projection Vector + opISECT = 0x0f // moves point p to the InterSECTion of two lines + opSRP0 = 0x10 // Set Reference Point 0 + opSRP1 = 0x11 // Set Reference Point 1 + opSRP2 = 0x12 // Set Reference Point 2 + opSZP0 = 0x13 // Set Zone Pointer 0 + opSZP1 = 0x14 // Set Zone Pointer 1 + opSZP2 = 0x15 // Set Zone Pointer 2 + opSZPS = 0x16 // Set Zone PointerS + opSLOOP = 0x17 // Set LOOP variable + opRTG = 0x18 // Round To Grid + opRTHG = 0x19 // Round To Half Grid + opSMD = 0x1a // Set Minimum Distance + opELSE = 0x1b // ELSE clause + opJMPR = 0x1c // JuMP Relative + opSCVTCI = 0x1d // Set Control Value Table Cut-In + opSSWCI = 0x1e // Set Single Width Cut-In + opSSW = 0x1f // Set Single Width + opDUP = 0x20 // DUPlicate top stack element + opPOP = 0x21 // POP top stack element + opCLEAR = 0x22 // CLEAR the stack + opSWAP = 0x23 // SWAP the top two elements on the stack + opDEPTH = 0x24 // DEPTH of the stack + opCINDEX = 0x25 // Copy the INDEXed element to the top of the stack + opMINDEX = 0x26 // Move the INDEXed element to the top of the stack + opALIGNPTS = 0x27 // ALIGN PoinTS + op_0x28 = 0x28 // deprecated + opUTP = 0x29 // UnTouch Point + opLOOPCALL = 0x2a // LOOP and CALL function + opCALL = 0x2b // CALL function + opFDEF = 0x2c // Function DEFinition + opENDF = 0x2d // END Function definition + opMDAP0 = 0x2e // Move Direct Absolute Point + opMDAP1 = 0x2f // . + opIUP0 = 0x30 // Interpolate Untouched Points through the outline + opIUP1 = 0x31 // . + opSHP0 = 0x32 // SHift Point using reference point + opSHP1 = 0x33 // . + opSHC0 = 0x34 // SHift Contour using reference point + opSHC1 = 0x35 // . + opSHZ0 = 0x36 // SHift Zone using reference point + opSHZ1 = 0x37 // . + opSHPIX = 0x38 // SHift point by a PIXel amount + opIP = 0x39 // Interpolate Point + opMSIRP0 = 0x3a // Move Stack Indirect Relative Point + opMSIRP1 = 0x3b // . + opALIGNRP = 0x3c // ALIGN to Reference Point + opRTDG = 0x3d // Round To Double Grid + opMIAP0 = 0x3e // Move Indirect Absolute Point + opMIAP1 = 0x3f // . + opNPUSHB = 0x40 // PUSH N Bytes + opNPUSHW = 0x41 // PUSH N Words + opWS = 0x42 // Write Store + opRS = 0x43 // Read Store + opWCVTP = 0x44 // Write Control Value Table in Pixel units + opRCVT = 0x45 // Read Control Value Table entry + opGC0 = 0x46 // Get Coordinate projected onto the projection vector + opGC1 = 0x47 // . + opSCFS = 0x48 // Sets Coordinate From the Stack using projection vector and freedom vector + opMD0 = 0x49 // Measure Distance + opMD1 = 0x4a // . + opMPPEM = 0x4b // Measure Pixels Per EM + opMPS = 0x4c // Measure Point Size + opFLIPON = 0x4d // set the auto FLIP Boolean to ON + opFLIPOFF = 0x4e // set the auto FLIP Boolean to OFF + opDEBUG = 0x4f // DEBUG call + opLT = 0x50 // Less Than + opLTEQ = 0x51 // Less Than or EQual + opGT = 0x52 // Greater Than + opGTEQ = 0x53 // Greater Than or EQual + opEQ = 0x54 // EQual + opNEQ = 0x55 // Not EQual + opODD = 0x56 // ODD + opEVEN = 0x57 // EVEN + opIF = 0x58 // IF test + opEIF = 0x59 // End IF + opAND = 0x5a // logical AND + opOR = 0x5b // logical OR + opNOT = 0x5c // logical NOT + opDELTAP1 = 0x5d // DELTA exception P1 + opSDB = 0x5e // Set Delta Base in the graphics state + opSDS = 0x5f // Set Delta Shift in the graphics state + opADD = 0x60 // ADD + opSUB = 0x61 // SUBtract + opDIV = 0x62 // DIVide + opMUL = 0x63 // MULtiply + opABS = 0x64 // ABSolute value + opNEG = 0x65 // NEGate + opFLOOR = 0x66 // FLOOR + opCEILING = 0x67 // CEILING + opROUND00 = 0x68 // ROUND value + opROUND01 = 0x69 // . + opROUND10 = 0x6a // . + opROUND11 = 0x6b // . + opNROUND00 = 0x6c // No ROUNDing of value + opNROUND01 = 0x6d // . + opNROUND10 = 0x6e // . + opNROUND11 = 0x6f // . + opWCVTF = 0x70 // Write Control Value Table in Funits + opDELTAP2 = 0x71 // DELTA exception P2 + opDELTAP3 = 0x72 // DELTA exception P3 + opDELTAC1 = 0x73 // DELTA exception C1 + opDELTAC2 = 0x74 // DELTA exception C2 + opDELTAC3 = 0x75 // DELTA exception C3 + opSROUND = 0x76 // Super ROUND + opS45ROUND = 0x77 // Super ROUND 45 degrees + opJROT = 0x78 // Jump Relative On True + opJROF = 0x79 // Jump Relative On False + opROFF = 0x7a // Round OFF + op_0x7b = 0x7b // deprecated + opRUTG = 0x7c // Round Up To Grid + opRDTG = 0x7d // Round Down To Grid + opSANGW = 0x7e // Set ANGle Weight + opAA = 0x7f // Adjust Angle + opFLIPPT = 0x80 // FLIP PoinT + opFLIPRGON = 0x81 // FLIP RanGe ON + opFLIPRGOFF = 0x82 // FLIP RanGe OFF + op_0x83 = 0x83 // deprecated + op_0x84 = 0x84 // deprecated + opSCANCTRL = 0x85 // SCAN conversion ConTRoL + opSDPVTL0 = 0x86 // Set Dual Projection Vector To Line + opSDPVTL1 = 0x87 // . + opGETINFO = 0x88 // GET INFOrmation + opIDEF = 0x89 // Instruction DEFinition + opROLL = 0x8a // ROLL the top three stack elements + opMAX = 0x8b // MAXimum of top two stack elements + opMIN = 0x8c // MINimum of top two stack elements + opSCANTYPE = 0x8d // SCANTYPE + opINSTCTRL = 0x8e // INSTRuction execution ConTRoL + op_0x8f = 0x8f + op_0x90 = 0x90 + op_0x91 = 0x91 + op_0x92 = 0x92 + op_0x93 = 0x93 + op_0x94 = 0x94 + op_0x95 = 0x95 + op_0x96 = 0x96 + op_0x97 = 0x97 + op_0x98 = 0x98 + op_0x99 = 0x99 + op_0x9a = 0x9a + op_0x9b = 0x9b + op_0x9c = 0x9c + op_0x9d = 0x9d + op_0x9e = 0x9e + op_0x9f = 0x9f + op_0xa0 = 0xa0 + op_0xa1 = 0xa1 + op_0xa2 = 0xa2 + op_0xa3 = 0xa3 + op_0xa4 = 0xa4 + op_0xa5 = 0xa5 + op_0xa6 = 0xa6 + op_0xa7 = 0xa7 + op_0xa8 = 0xa8 + op_0xa9 = 0xa9 + op_0xaa = 0xaa + op_0xab = 0xab + op_0xac = 0xac + op_0xad = 0xad + op_0xae = 0xae + op_0xaf = 0xaf + opPUSHB000 = 0xb0 // PUSH Bytes + opPUSHB001 = 0xb1 // . + opPUSHB010 = 0xb2 // . + opPUSHB011 = 0xb3 // . + opPUSHB100 = 0xb4 // . + opPUSHB101 = 0xb5 // . + opPUSHB110 = 0xb6 // . + opPUSHB111 = 0xb7 // . + opPUSHW000 = 0xb8 // PUSH Words + opPUSHW001 = 0xb9 // . + opPUSHW010 = 0xba // . + opPUSHW011 = 0xbb // . + opPUSHW100 = 0xbc // . + opPUSHW101 = 0xbd // . + opPUSHW110 = 0xbe // . + opPUSHW111 = 0xbf // . + opMDRP00000 = 0xc0 // Move Direct Relative Point + opMDRP00001 = 0xc1 // . + opMDRP00010 = 0xc2 // . + opMDRP00011 = 0xc3 // . + opMDRP00100 = 0xc4 // . + opMDRP00101 = 0xc5 // . + opMDRP00110 = 0xc6 // . + opMDRP00111 = 0xc7 // . + opMDRP01000 = 0xc8 // . + opMDRP01001 = 0xc9 // . + opMDRP01010 = 0xca // . + opMDRP01011 = 0xcb // . + opMDRP01100 = 0xcc // . + opMDRP01101 = 0xcd // . + opMDRP01110 = 0xce // . + opMDRP01111 = 0xcf // . + opMDRP10000 = 0xd0 // . + opMDRP10001 = 0xd1 // . + opMDRP10010 = 0xd2 // . + opMDRP10011 = 0xd3 // . + opMDRP10100 = 0xd4 // . + opMDRP10101 = 0xd5 // . + opMDRP10110 = 0xd6 // . + opMDRP10111 = 0xd7 // . + opMDRP11000 = 0xd8 // . + opMDRP11001 = 0xd9 // . + opMDRP11010 = 0xda // . + opMDRP11011 = 0xdb // . + opMDRP11100 = 0xdc // . + opMDRP11101 = 0xdd // . + opMDRP11110 = 0xde // . + opMDRP11111 = 0xdf // . + opMIRP00000 = 0xe0 // Move Indirect Relative Point + opMIRP00001 = 0xe1 // . + opMIRP00010 = 0xe2 // . + opMIRP00011 = 0xe3 // . + opMIRP00100 = 0xe4 // . + opMIRP00101 = 0xe5 // . + opMIRP00110 = 0xe6 // . + opMIRP00111 = 0xe7 // . + opMIRP01000 = 0xe8 // . + opMIRP01001 = 0xe9 // . + opMIRP01010 = 0xea // . + opMIRP01011 = 0xeb // . + opMIRP01100 = 0xec // . + opMIRP01101 = 0xed // . + opMIRP01110 = 0xee // . + opMIRP01111 = 0xef // . + opMIRP10000 = 0xf0 // . + opMIRP10001 = 0xf1 // . + opMIRP10010 = 0xf2 // . + opMIRP10011 = 0xf3 // . + opMIRP10100 = 0xf4 // . + opMIRP10101 = 0xf5 // . + opMIRP10110 = 0xf6 // . + opMIRP10111 = 0xf7 // . + opMIRP11000 = 0xf8 // . + opMIRP11001 = 0xf9 // . + opMIRP11010 = 0xfa // . + opMIRP11011 = 0xfb // . + opMIRP11100 = 0xfc // . + opMIRP11101 = 0xfd // . + opMIRP11110 = 0xfe // . + opMIRP11111 = 0xff // . +) + +// popCount is the number of stack elements that each opcode pops. +var popCount = [256]uint8{ + // 1, 2, 3, 4, 5, 6, 7, 8, 9, a, b, c, d, e, f + 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 5, // 0x00 - 0x0f + 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 1, 1, 1, 1, // 0x10 - 0x1f + 1, 1, 0, 2, 0, 1, 1, 2, 0, 1, 2, 1, 1, 0, 1, 1, // 0x20 - 0x2f + 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 2, 2, 0, 0, 2, 2, // 0x30 - 0x3f + 0, 0, 2, 1, 2, 1, 1, 1, 2, 2, 2, 0, 0, 0, 0, 0, // 0x40 - 0x4f + 2, 2, 2, 2, 2, 2, 1, 1, 1, 0, 2, 2, 1, 1, 1, 1, // 0x50 - 0x5f + 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0x60 - 0x6f + 2, 1, 1, 1, 1, 1, 1, 1, 2, 2, 0, 0, 0, 0, 1, 1, // 0x70 - 0x7f + 0, 2, 2, 0, 0, 1, 2, 2, 1, 1, 3, 2, 2, 1, 2, 0, // 0x80 - 0x8f + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 0x90 - 0x9f + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 0xa0 - 0xaf + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 0xb0 - 0xbf + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0xc0 - 0xcf + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0xd0 - 0xdf + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, // 0xe0 - 0xef + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, // 0xf0 - 0xff +} diff --git a/vendor/github.com/golang/freetype/truetype/truetype.go b/vendor/github.com/golang/freetype/truetype/truetype.go new file mode 100644 index 00000000..7270bbf2 --- /dev/null +++ b/vendor/github.com/golang/freetype/truetype/truetype.go @@ -0,0 +1,653 @@ +// Copyright 2010 The Freetype-Go Authors. All rights reserved. +// Use of this source code is governed by your choice of either the +// FreeType License or the GNU General Public License version 2 (or +// any later version), both of which can be found in the LICENSE file. + +// Package truetype provides a parser for the TTF and TTC file formats. +// Those formats are documented at http://developer.apple.com/fonts/TTRefMan/ +// and http://www.microsoft.com/typography/otspec/ +// +// Some of a font's methods provide lengths or co-ordinates, e.g. bounds, font +// metrics and control points. All these methods take a scale parameter, which +// is the number of pixels in 1 em, expressed as a 26.6 fixed point value. For +// example, if 1 em is 10 pixels then scale is fixed.I(10), which is equal to +// fixed.Int26_6(10 << 6). +// +// To measure a TrueType font in ideal FUnit space, use scale equal to +// font.FUnitsPerEm(). +package truetype // import "github.com/golang/freetype/truetype" + +import ( + "fmt" + + "golang.org/x/image/math/fixed" +) + +// An Index is a Font's index of a rune. +type Index uint16 + +// A NameID identifies a name table entry. +// +// See https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6name.html +type NameID uint16 + +const ( + NameIDCopyright NameID = 0 + NameIDFontFamily = 1 + NameIDFontSubfamily = 2 + NameIDUniqueSubfamilyID = 3 + NameIDFontFullName = 4 + NameIDNameTableVersion = 5 + NameIDPostscriptName = 6 + NameIDTrademarkNotice = 7 + NameIDManufacturerName = 8 + NameIDDesignerName = 9 + NameIDFontDescription = 10 + NameIDFontVendorURL = 11 + NameIDFontDesignerURL = 12 + NameIDFontLicense = 13 + NameIDFontLicenseURL = 14 + NameIDPreferredFamily = 16 + NameIDPreferredSubfamily = 17 + NameIDCompatibleName = 18 + NameIDSampleText = 19 +) + +const ( + // A 32-bit encoding consists of a most-significant 16-bit Platform ID and a + // least-significant 16-bit Platform Specific ID. The magic numbers are + // specified at https://www.microsoft.com/typography/otspec/name.htm + unicodeEncodingBMPOnly = 0x00000003 // PID = 0 (Unicode), PSID = 3 (Unicode 2.0 BMP Only) + unicodeEncodingFull = 0x00000004 // PID = 0 (Unicode), PSID = 4 (Unicode 2.0 Full Repertoire) + microsoftSymbolEncoding = 0x00030000 // PID = 3 (Microsoft), PSID = 0 (Symbol) + microsoftUCS2Encoding = 0x00030001 // PID = 3 (Microsoft), PSID = 1 (UCS-2) + microsoftUCS4Encoding = 0x0003000a // PID = 3 (Microsoft), PSID = 10 (UCS-4) +) + +// An HMetric holds the horizontal metrics of a single glyph. +type HMetric struct { + AdvanceWidth, LeftSideBearing fixed.Int26_6 +} + +// A VMetric holds the vertical metrics of a single glyph. +type VMetric struct { + AdvanceHeight, TopSideBearing fixed.Int26_6 +} + +// A FormatError reports that the input is not a valid TrueType font. +type FormatError string + +func (e FormatError) Error() string { + return "freetype: invalid TrueType format: " + string(e) +} + +// An UnsupportedError reports that the input uses a valid but unimplemented +// TrueType feature. +type UnsupportedError string + +func (e UnsupportedError) Error() string { + return "freetype: unsupported TrueType feature: " + string(e) +} + +// u32 returns the big-endian uint32 at b[i:]. +func u32(b []byte, i int) uint32 { + return uint32(b[i])<<24 | uint32(b[i+1])<<16 | uint32(b[i+2])<<8 | uint32(b[i+3]) +} + +// u16 returns the big-endian uint16 at b[i:]. +func u16(b []byte, i int) uint16 { + return uint16(b[i])<<8 | uint16(b[i+1]) +} + +// readTable returns a slice of the TTF data given by a table's directory entry. +func readTable(ttf []byte, offsetLength []byte) ([]byte, error) { + offset := int(u32(offsetLength, 0)) + if offset < 0 { + return nil, FormatError(fmt.Sprintf("offset too large: %d", uint32(offset))) + } + length := int(u32(offsetLength, 4)) + if length < 0 { + return nil, FormatError(fmt.Sprintf("length too large: %d", uint32(length))) + } + end := offset + length + if end < 0 || end > len(ttf) { + return nil, FormatError(fmt.Sprintf("offset + length too large: %d", uint32(offset)+uint32(length))) + } + return ttf[offset:end], nil +} + +// parseSubtables returns the offset and platformID of the best subtable in +// table, where best favors a Unicode cmap encoding, and failing that, a +// Microsoft cmap encoding. offset is the offset of the first subtable in +// table, and size is the size of each subtable. +// +// If pred is non-nil, then only subtables that satisfy that predicate will be +// considered. +func parseSubtables(table []byte, name string, offset, size int, pred func([]byte) bool) ( + bestOffset int, bestPID uint32, retErr error) { + + if len(table) < 4 { + return 0, 0, FormatError(name + " too short") + } + nSubtables := int(u16(table, 2)) + if len(table) < size*nSubtables+offset { + return 0, 0, FormatError(name + " too short") + } + ok := false + for i := 0; i < nSubtables; i, offset = i+1, offset+size { + if pred != nil && !pred(table[offset:]) { + continue + } + // We read the 16-bit Platform ID and 16-bit Platform Specific ID as a single uint32. + // All values are big-endian. + pidPsid := u32(table, offset) + // We prefer the Unicode cmap encoding. Failing to find that, we fall + // back onto the Microsoft cmap encoding. + if pidPsid == unicodeEncodingBMPOnly || pidPsid == unicodeEncodingFull { + bestOffset, bestPID, ok = offset, pidPsid>>16, true + break + + } else if pidPsid == microsoftSymbolEncoding || + pidPsid == microsoftUCS2Encoding || + pidPsid == microsoftUCS4Encoding { + + bestOffset, bestPID, ok = offset, pidPsid>>16, true + // We don't break out of the for loop, so that Unicode can override Microsoft. + } + } + if !ok { + return 0, 0, UnsupportedError(name + " encoding") + } + return bestOffset, bestPID, nil +} + +const ( + locaOffsetFormatUnknown int = iota + locaOffsetFormatShort + locaOffsetFormatLong +) + +// A cm holds a parsed cmap entry. +type cm struct { + start, end, delta, offset uint32 +} + +// A Font represents a Truetype font. +type Font struct { + // Tables sliced from the TTF data. The different tables are documented + // at http://developer.apple.com/fonts/TTRefMan/RM06/Chap6.html + cmap, cvt, fpgm, glyf, hdmx, head, hhea, hmtx, kern, loca, maxp, name, os2, prep, vmtx []byte + + cmapIndexes []byte + + // Cached values derived from the raw ttf data. + cm []cm + locaOffsetFormat int + nGlyph, nHMetric, nKern int + fUnitsPerEm int32 + ascent int32 // In FUnits. + descent int32 // In FUnits; typically negative. + bounds fixed.Rectangle26_6 // In FUnits. + // Values from the maxp section. + maxTwilightPoints, maxStorage, maxFunctionDefs, maxStackElements uint16 +} + +func (f *Font) parseCmap() error { + const ( + cmapFormat4 = 4 + cmapFormat12 = 12 + languageIndependent = 0 + ) + + offset, _, err := parseSubtables(f.cmap, "cmap", 4, 8, nil) + if err != nil { + return err + } + offset = int(u32(f.cmap, offset+4)) + if offset <= 0 || offset > len(f.cmap) { + return FormatError("bad cmap offset") + } + + cmapFormat := u16(f.cmap, offset) + switch cmapFormat { + case cmapFormat4: + language := u16(f.cmap, offset+4) + if language != languageIndependent { + return UnsupportedError(fmt.Sprintf("language: %d", language)) + } + segCountX2 := int(u16(f.cmap, offset+6)) + if segCountX2%2 == 1 { + return FormatError(fmt.Sprintf("bad segCountX2: %d", segCountX2)) + } + segCount := segCountX2 / 2 + offset += 14 + f.cm = make([]cm, segCount) + for i := 0; i < segCount; i++ { + f.cm[i].end = uint32(u16(f.cmap, offset)) + offset += 2 + } + offset += 2 + for i := 0; i < segCount; i++ { + f.cm[i].start = uint32(u16(f.cmap, offset)) + offset += 2 + } + for i := 0; i < segCount; i++ { + f.cm[i].delta = uint32(u16(f.cmap, offset)) + offset += 2 + } + for i := 0; i < segCount; i++ { + f.cm[i].offset = uint32(u16(f.cmap, offset)) + offset += 2 + } + f.cmapIndexes = f.cmap[offset:] + return nil + + case cmapFormat12: + if u16(f.cmap, offset+2) != 0 { + return FormatError(fmt.Sprintf("cmap format: % x", f.cmap[offset:offset+4])) + } + length := u32(f.cmap, offset+4) + language := u32(f.cmap, offset+8) + if language != languageIndependent { + return UnsupportedError(fmt.Sprintf("language: %d", language)) + } + nGroups := u32(f.cmap, offset+12) + if length != 12*nGroups+16 { + return FormatError("inconsistent cmap length") + } + offset += 16 + f.cm = make([]cm, nGroups) + for i := uint32(0); i < nGroups; i++ { + f.cm[i].start = u32(f.cmap, offset+0) + f.cm[i].end = u32(f.cmap, offset+4) + f.cm[i].delta = u32(f.cmap, offset+8) - f.cm[i].start + offset += 12 + } + return nil + } + return UnsupportedError(fmt.Sprintf("cmap format: %d", cmapFormat)) +} + +func (f *Font) parseHead() error { + if len(f.head) != 54 { + return FormatError(fmt.Sprintf("bad head length: %d", len(f.head))) + } + f.fUnitsPerEm = int32(u16(f.head, 18)) + f.bounds.Min.X = fixed.Int26_6(int16(u16(f.head, 36))) + f.bounds.Min.Y = fixed.Int26_6(int16(u16(f.head, 38))) + f.bounds.Max.X = fixed.Int26_6(int16(u16(f.head, 40))) + f.bounds.Max.Y = fixed.Int26_6(int16(u16(f.head, 42))) + switch i := u16(f.head, 50); i { + case 0: + f.locaOffsetFormat = locaOffsetFormatShort + case 1: + f.locaOffsetFormat = locaOffsetFormatLong + default: + return FormatError(fmt.Sprintf("bad indexToLocFormat: %d", i)) + } + return nil +} + +func (f *Font) parseHhea() error { + if len(f.hhea) != 36 { + return FormatError(fmt.Sprintf("bad hhea length: %d", len(f.hhea))) + } + f.ascent = int32(int16(u16(f.hhea, 4))) + f.descent = int32(int16(u16(f.hhea, 6))) + f.nHMetric = int(u16(f.hhea, 34)) + if 4*f.nHMetric+2*(f.nGlyph-f.nHMetric) != len(f.hmtx) { + return FormatError(fmt.Sprintf("bad hmtx length: %d", len(f.hmtx))) + } + return nil +} + +func (f *Font) parseKern() error { + // Apple's TrueType documentation (http://developer.apple.com/fonts/TTRefMan/RM06/Chap6kern.html) says: + // "Previous versions of the 'kern' table defined both the version and nTables fields in the header + // as UInt16 values and not UInt32 values. Use of the older format on the Mac OS is discouraged + // (although AAT can sense an old kerning table and still make correct use of it). Microsoft + // Windows still uses the older format for the 'kern' table and will not recognize the newer one. + // Fonts targeted for the Mac OS only should use the new format; fonts targeted for both the Mac OS + // and Windows should use the old format." + // Since we expect that almost all fonts aim to be Windows-compatible, we only parse the "older" format, + // just like the C Freetype implementation. + if len(f.kern) == 0 { + if f.nKern != 0 { + return FormatError("bad kern table length") + } + return nil + } + if len(f.kern) < 18 { + return FormatError("kern data too short") + } + version, offset := u16(f.kern, 0), 2 + if version != 0 { + return UnsupportedError(fmt.Sprintf("kern version: %d", version)) + } + + n, offset := u16(f.kern, offset), offset+2 + if n == 0 { + return UnsupportedError("kern nTables: 0") + } + // TODO: support multiple subtables. In practice, almost all .ttf files + // have only one subtable, if they have a kern table at all. But it's not + // impossible. Xolonium Regular (https://fontlibrary.org/en/font/xolonium) + // has 3 subtables. Those subtables appear to be disjoint, rather than + // being the same kerning pairs encoded in three different ways. + // + // For now, we'll use only the first subtable. + + offset += 2 // Skip the version. + length, offset := int(u16(f.kern, offset)), offset+2 + coverage, offset := u16(f.kern, offset), offset+2 + if coverage != 0x0001 { + // We only support horizontal kerning. + return UnsupportedError(fmt.Sprintf("kern coverage: 0x%04x", coverage)) + } + f.nKern, offset = int(u16(f.kern, offset)), offset+2 + if 6*f.nKern != length-14 { + return FormatError("bad kern table length") + } + return nil +} + +func (f *Font) parseMaxp() error { + if len(f.maxp) != 32 { + return FormatError(fmt.Sprintf("bad maxp length: %d", len(f.maxp))) + } + f.nGlyph = int(u16(f.maxp, 4)) + f.maxTwilightPoints = u16(f.maxp, 16) + f.maxStorage = u16(f.maxp, 18) + f.maxFunctionDefs = u16(f.maxp, 20) + f.maxStackElements = u16(f.maxp, 24) + return nil +} + +// scale returns x divided by f.fUnitsPerEm, rounded to the nearest integer. +func (f *Font) scale(x fixed.Int26_6) fixed.Int26_6 { + if x >= 0 { + x += fixed.Int26_6(f.fUnitsPerEm) / 2 + } else { + x -= fixed.Int26_6(f.fUnitsPerEm) / 2 + } + return x / fixed.Int26_6(f.fUnitsPerEm) +} + +// Bounds returns the union of a Font's glyphs' bounds. +func (f *Font) Bounds(scale fixed.Int26_6) fixed.Rectangle26_6 { + b := f.bounds + b.Min.X = f.scale(scale * b.Min.X) + b.Min.Y = f.scale(scale * b.Min.Y) + b.Max.X = f.scale(scale * b.Max.X) + b.Max.Y = f.scale(scale * b.Max.Y) + return b +} + +// FUnitsPerEm returns the number of FUnits in a Font's em-square's side. +func (f *Font) FUnitsPerEm() int32 { + return f.fUnitsPerEm +} + +// Index returns a Font's index for the given rune. +func (f *Font) Index(x rune) Index { + c := uint32(x) + for i, j := 0, len(f.cm); i < j; { + h := i + (j-i)/2 + cm := &f.cm[h] + if c < cm.start { + j = h + } else if cm.end < c { + i = h + 1 + } else if cm.offset == 0 { + return Index(c + cm.delta) + } else { + offset := int(cm.offset) + 2*(h-len(f.cm)+int(c-cm.start)) + return Index(u16(f.cmapIndexes, offset)) + } + } + return 0 +} + +// Name returns the Font's name value for the given NameID. It returns "" if +// there was an error, or if that name was not found. +func (f *Font) Name(id NameID) string { + x, platformID, err := parseSubtables(f.name, "name", 6, 12, func(b []byte) bool { + return NameID(u16(b, 6)) == id + }) + if err != nil { + return "" + } + offset, length := u16(f.name, 4)+u16(f.name, x+10), u16(f.name, x+8) + // Return the ASCII value of the encoded string. + // The string is encoded as UTF-16 on non-Apple platformIDs; Apple is platformID 1. + src := f.name[offset : offset+length] + var dst []byte + if platformID != 1 { // UTF-16. + if len(src)&1 != 0 { + return "" + } + dst = make([]byte, len(src)/2) + for i := range dst { + dst[i] = printable(u16(src, 2*i)) + } + } else { // ASCII. + dst = make([]byte, len(src)) + for i, c := range src { + dst[i] = printable(uint16(c)) + } + } + return string(dst) +} + +func printable(r uint16) byte { + if 0x20 <= r && r < 0x7f { + return byte(r) + } + return '?' +} + +// unscaledHMetric returns the unscaled horizontal metrics for the glyph with +// the given index. +func (f *Font) unscaledHMetric(i Index) (h HMetric) { + j := int(i) + if j < 0 || f.nGlyph <= j { + return HMetric{} + } + if j >= f.nHMetric { + p := 4 * (f.nHMetric - 1) + return HMetric{ + AdvanceWidth: fixed.Int26_6(u16(f.hmtx, p)), + LeftSideBearing: fixed.Int26_6(int16(u16(f.hmtx, p+2*(j-f.nHMetric)+4))), + } + } + return HMetric{ + AdvanceWidth: fixed.Int26_6(u16(f.hmtx, 4*j)), + LeftSideBearing: fixed.Int26_6(int16(u16(f.hmtx, 4*j+2))), + } +} + +// HMetric returns the horizontal metrics for the glyph with the given index. +func (f *Font) HMetric(scale fixed.Int26_6, i Index) HMetric { + h := f.unscaledHMetric(i) + h.AdvanceWidth = f.scale(scale * h.AdvanceWidth) + h.LeftSideBearing = f.scale(scale * h.LeftSideBearing) + return h +} + +// unscaledVMetric returns the unscaled vertical metrics for the glyph with +// the given index. yMax is the top of the glyph's bounding box. +func (f *Font) unscaledVMetric(i Index, yMax fixed.Int26_6) (v VMetric) { + j := int(i) + if j < 0 || f.nGlyph <= j { + return VMetric{} + } + if 4*j+4 <= len(f.vmtx) { + return VMetric{ + AdvanceHeight: fixed.Int26_6(u16(f.vmtx, 4*j)), + TopSideBearing: fixed.Int26_6(int16(u16(f.vmtx, 4*j+2))), + } + } + // The OS/2 table has grown over time. + // https://developer.apple.com/fonts/TTRefMan/RM06/Chap6OS2.html + // says that it was originally 68 bytes. Optional fields, including + // the ascender and descender, are described at + // http://www.microsoft.com/typography/otspec/os2.htm + if len(f.os2) >= 72 { + sTypoAscender := fixed.Int26_6(int16(u16(f.os2, 68))) + sTypoDescender := fixed.Int26_6(int16(u16(f.os2, 70))) + return VMetric{ + AdvanceHeight: sTypoAscender - sTypoDescender, + TopSideBearing: sTypoAscender - yMax, + } + } + return VMetric{ + AdvanceHeight: fixed.Int26_6(f.fUnitsPerEm), + TopSideBearing: 0, + } +} + +// VMetric returns the vertical metrics for the glyph with the given index. +func (f *Font) VMetric(scale fixed.Int26_6, i Index) VMetric { + // TODO: should 0 be bounds.YMax? + v := f.unscaledVMetric(i, 0) + v.AdvanceHeight = f.scale(scale * v.AdvanceHeight) + v.TopSideBearing = f.scale(scale * v.TopSideBearing) + return v +} + +// Kern returns the horizontal adjustment for the given glyph pair. A positive +// kern means to move the glyphs further apart. +func (f *Font) Kern(scale fixed.Int26_6, i0, i1 Index) fixed.Int26_6 { + if f.nKern == 0 { + return 0 + } + g := uint32(i0)<<16 | uint32(i1) + lo, hi := 0, f.nKern + for lo < hi { + i := (lo + hi) / 2 + ig := u32(f.kern, 18+6*i) + if ig < g { + lo = i + 1 + } else if ig > g { + hi = i + } else { + return f.scale(scale * fixed.Int26_6(int16(u16(f.kern, 22+6*i)))) + } + } + return 0 +} + +// Parse returns a new Font for the given TTF or TTC data. +// +// For TrueType Collections, the first font in the collection is parsed. +func Parse(ttf []byte) (font *Font, err error) { + return parse(ttf, 0) +} + +func parse(ttf []byte, offset int) (font *Font, err error) { + if len(ttf)-offset < 12 { + err = FormatError("TTF data is too short") + return + } + originalOffset := offset + magic, offset := u32(ttf, offset), offset+4 + switch magic { + case 0x00010000: + // No-op. + case 0x74746366: // "ttcf" as a big-endian uint32. + if originalOffset != 0 { + err = FormatError("recursive TTC") + return + } + ttcVersion, offset := u32(ttf, offset), offset+4 + if ttcVersion != 0x00010000 && ttcVersion != 0x00020000 { + err = FormatError("bad TTC version") + return + } + numFonts, offset := int(u32(ttf, offset)), offset+4 + if numFonts <= 0 { + err = FormatError("bad number of TTC fonts") + return + } + if len(ttf[offset:])/4 < numFonts { + err = FormatError("TTC offset table is too short") + return + } + // TODO: provide an API to select which font in a TrueType collection to return, + // not just the first one. This may require an API to parse a TTC's name tables, + // so users of this package can select the font in a TTC by name. + offset = int(u32(ttf, offset)) + if offset <= 0 || offset > len(ttf) { + err = FormatError("bad TTC offset") + return + } + return parse(ttf, offset) + default: + err = FormatError("bad TTF version") + return + } + n, offset := int(u16(ttf, offset)), offset+2 + offset += 6 // Skip the searchRange, entrySelector and rangeShift. + if len(ttf) < 16*n+offset { + err = FormatError("TTF data is too short") + return + } + f := new(Font) + // Assign the table slices. + for i := 0; i < n; i++ { + x := 16*i + offset + switch string(ttf[x : x+4]) { + case "cmap": + f.cmap, err = readTable(ttf, ttf[x+8:x+16]) + case "cvt ": + f.cvt, err = readTable(ttf, ttf[x+8:x+16]) + case "fpgm": + f.fpgm, err = readTable(ttf, ttf[x+8:x+16]) + case "glyf": + f.glyf, err = readTable(ttf, ttf[x+8:x+16]) + case "hdmx": + f.hdmx, err = readTable(ttf, ttf[x+8:x+16]) + case "head": + f.head, err = readTable(ttf, ttf[x+8:x+16]) + case "hhea": + f.hhea, err = readTable(ttf, ttf[x+8:x+16]) + case "hmtx": + f.hmtx, err = readTable(ttf, ttf[x+8:x+16]) + case "kern": + f.kern, err = readTable(ttf, ttf[x+8:x+16]) + case "loca": + f.loca, err = readTable(ttf, ttf[x+8:x+16]) + case "maxp": + f.maxp, err = readTable(ttf, ttf[x+8:x+16]) + case "name": + f.name, err = readTable(ttf, ttf[x+8:x+16]) + case "OS/2": + f.os2, err = readTable(ttf, ttf[x+8:x+16]) + case "prep": + f.prep, err = readTable(ttf, ttf[x+8:x+16]) + case "vmtx": + f.vmtx, err = readTable(ttf, ttf[x+8:x+16]) + } + if err != nil { + return + } + } + // Parse and sanity-check the TTF data. + if err = f.parseHead(); err != nil { + return + } + if err = f.parseMaxp(); err != nil { + return + } + if err = f.parseCmap(); err != nil { + return + } + if err = f.parseKern(); err != nil { + return + } + if err = f.parseHhea(); err != nil { + return + } + font = f + return +} diff --git a/vendor/github.com/wcharczuk/go-chart/v2/.gitignore b/vendor/github.com/wcharczuk/go-chart/v2/.gitignore new file mode 100644 index 00000000..3e4b6e13 --- /dev/null +++ b/vendor/github.com/wcharczuk/go-chart/v2/.gitignore @@ -0,0 +1,19 @@ +# Binaries for programs and plugins +*.exe +*.dll +*.so +*.dylib + +# Test binary, build with `go test -c` +*.test + +# Output of the go coverage tool, specifically when used with LiteIDE +*.out + +# Project-local glide cache, RE: https://github.com/Masterminds/glide/issues/736 +.glide/ + +# Other +.vscode +.DS_Store +coverage.html \ No newline at end of file diff --git a/vendor/github.com/wcharczuk/go-chart/v2/COVERAGE b/vendor/github.com/wcharczuk/go-chart/v2/COVERAGE new file mode 100644 index 00000000..7e492f87 --- /dev/null +++ b/vendor/github.com/wcharczuk/go-chart/v2/COVERAGE @@ -0,0 +1 @@ +29.02 \ No newline at end of file diff --git a/vendor/github.com/wcharczuk/go-chart/v2/LICENSE b/vendor/github.com/wcharczuk/go-chart/v2/LICENSE new file mode 100644 index 00000000..8d9f1c57 --- /dev/null +++ b/vendor/github.com/wcharczuk/go-chart/v2/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2016 William Charczuk. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/vendor/github.com/wcharczuk/go-chart/v2/Makefile b/vendor/github.com/wcharczuk/go-chart/v2/Makefile new file mode 100644 index 00000000..e0928c3d --- /dev/null +++ b/vendor/github.com/wcharczuk/go-chart/v2/Makefile @@ -0,0 +1,10 @@ +all: new-install test + +new-install: + @go get -v -u ./... + +generate: + @go generate ./... + +test: + @go test ./... \ No newline at end of file diff --git a/vendor/github.com/wcharczuk/go-chart/v2/PROFANITY_RULES.yml b/vendor/github.com/wcharczuk/go-chart/v2/PROFANITY_RULES.yml new file mode 100644 index 00000000..1e6c8038 --- /dev/null +++ b/vendor/github.com/wcharczuk/go-chart/v2/PROFANITY_RULES.yml @@ -0,0 +1,4 @@ +go-sdk: + excludeFiles: [ "*_test.go" ] + importsContain: [ github.com/blend/go-sdk/* ] + description: "please don't use go-sdk in this repo" \ No newline at end of file diff --git a/vendor/github.com/wcharczuk/go-chart/v2/README.md b/vendor/github.com/wcharczuk/go-chart/v2/README.md new file mode 100644 index 00000000..a0cdbc0e --- /dev/null +++ b/vendor/github.com/wcharczuk/go-chart/v2/README.md @@ -0,0 +1,95 @@ +go-chart +======== +[![CircleCI](https://circleci.com/gh/wcharczuk/go-chart.svg?style=svg)](https://circleci.com/gh/wcharczuk/go-chart) [![Go Report Card](https://goreportcard.com/badge/github.com/wcharczuk/go-chart)](https://goreportcard.com/report/github.com/wcharczuk/go-chart) + +Package `chart` is a very simple golang native charting library that supports timeseries and continuous line charts. + +Master should now be on the v3.x codebase, which overhauls the api significantly. Per usual, see `examples` for more information. + +# Installation + +To install `chart` run the following: + +```bash +> go get -u github.com/wcharczuk/go-chart +``` + +Most of the components are interchangeable so feel free to crib whatever you want. + +# Output Examples + +Spark Lines: + +![](https://raw.githubusercontent.com/wcharczuk/go-chart/master/_images/tvix_ltm.png) + +Single axis: + +![](https://raw.githubusercontent.com/wcharczuk/go-chart/master/_images/goog_ltm.png) + +Two axis: + +![](https://raw.githubusercontent.com/wcharczuk/go-chart/master/_images/two_axis.png) + +# Other Chart Types + +Pie Chart: + +![](https://raw.githubusercontent.com/wcharczuk/go-chart/master/_images/pie_chart.png) + +The code for this chart can be found in `examples/pie_chart/main.go`. + +Stacked Bar: + +![](https://raw.githubusercontent.com/wcharczuk/go-chart/master/_images/stacked_bar.png) + +The code for this chart can be found in `examples/stacked_bar/main.go`. + +# Code Examples + +Actual chart configurations and examples can be found in the `./examples/` directory. They are simple CLI programs that write to `output.png` (they are also updated with `go generate`. + +# Usage + +Everything starts with the `chart.Chart` object. The bare minimum to draw a chart would be the following: + +```golang + +import ( + ... + "bytes" + ... + "github.com/wcharczuk/go-chart" //exposes "chart" +) + +graph := chart.Chart{ + Series: []chart.Series{ + chart.ContinuousSeries{ + XValues: []float64{1.0, 2.0, 3.0, 4.0}, + YValues: []float64{1.0, 2.0, 3.0, 4.0}, + }, + }, +} + +buffer := bytes.NewBuffer([]byte{}) +err := graph.Render(chart.PNG, buffer) +``` + +Explanation of the above: A `chart` can have many `Series`, a `Series` is a collection of things that need to be drawn according to the X range and the Y range(s). + +Here, we have a single series with x range values as float64s, rendered to a PNG. Note; we can pass any type of `io.Writer` into `Render(...)`, meaning that we can render the chart to a file or a resonse or anything else that implements `io.Writer`. + +# API Overview + +Everything on the `chart.Chart` object has defaults that can be overriden. Whenever a developer sets a property on the chart object, it is to be assumed that value will be used instead of the default. + +The best way to see the api in action is to look at the examples in the `./_examples/` directory. + +# Design Philosophy + +I wanted to make a charting library that used only native golang, that could be stood up on a server (i.e. it had built in fonts). + +The goal with the API itself is to have the "zero value be useful", and to require the user to not code more than they absolutely needed. + +# Contributions + +Contributions are welcome though this library is in a holding pattern for the forseable future. diff --git a/vendor/github.com/wcharczuk/go-chart/v2/annotation_series.go b/vendor/github.com/wcharczuk/go-chart/v2/annotation_series.go new file mode 100644 index 00000000..96e78f91 --- /dev/null +++ b/vendor/github.com/wcharczuk/go-chart/v2/annotation_series.go @@ -0,0 +1,91 @@ +package chart + +import ( + "fmt" + "math" +) + +// Interface Assertions. +var ( + _ Series = (*AnnotationSeries)(nil) +) + +// AnnotationSeries is a series of labels on the chart. +type AnnotationSeries struct { + Name string + Style Style + YAxis YAxisType + Annotations []Value2 +} + +// GetName returns the name of the time series. +func (as AnnotationSeries) GetName() string { + return as.Name +} + +// GetStyle returns the line style. +func (as AnnotationSeries) GetStyle() Style { + return as.Style +} + +// GetYAxis returns which YAxis the series draws on. +func (as AnnotationSeries) GetYAxis() YAxisType { + return as.YAxis +} + +func (as AnnotationSeries) annotationStyleDefaults(defaults Style) Style { + return Style{ + FontColor: DefaultTextColor, + Font: defaults.Font, + FillColor: DefaultAnnotationFillColor, + FontSize: DefaultAnnotationFontSize, + StrokeColor: defaults.StrokeColor, + StrokeWidth: defaults.StrokeWidth, + Padding: DefaultAnnotationPadding, + } +} + +// Measure returns a bounds box of the series. +func (as AnnotationSeries) Measure(r Renderer, canvasBox Box, xrange, yrange Range, defaults Style) Box { + box := Box{ + Top: math.MaxInt32, + Left: math.MaxInt32, + Right: 0, + Bottom: 0, + } + if !as.Style.Hidden { + seriesStyle := as.Style.InheritFrom(as.annotationStyleDefaults(defaults)) + for _, a := range as.Annotations { + style := a.Style.InheritFrom(seriesStyle) + lx := canvasBox.Left + xrange.Translate(a.XValue) + ly := canvasBox.Bottom - yrange.Translate(a.YValue) + ab := Draw.MeasureAnnotation(r, canvasBox, style, lx, ly, a.Label) + box.Top = MinInt(box.Top, ab.Top) + box.Left = MinInt(box.Left, ab.Left) + box.Right = MaxInt(box.Right, ab.Right) + box.Bottom = MaxInt(box.Bottom, ab.Bottom) + } + } + return box +} + +// Render draws the series. +func (as AnnotationSeries) Render(r Renderer, canvasBox Box, xrange, yrange Range, defaults Style) { + if !as.Style.Hidden { + seriesStyle := as.Style.InheritFrom(as.annotationStyleDefaults(defaults)) + for _, a := range as.Annotations { + style := a.Style.InheritFrom(seriesStyle) + lx := canvasBox.Left + xrange.Translate(a.XValue) + ly := canvasBox.Bottom - yrange.Translate(a.YValue) + Draw.Annotation(r, canvasBox, style, lx, ly, a.Label) + } + } +} + +// Validate validates the series. +func (as AnnotationSeries) Validate() error { + if len(as.Annotations) == 0 { + return fmt.Errorf("annotation series requires annotations to be set and not empty") + } + return nil +} diff --git a/vendor/github.com/wcharczuk/go-chart/v2/array.go b/vendor/github.com/wcharczuk/go-chart/v2/array.go new file mode 100644 index 00000000..71b3ee73 --- /dev/null +++ b/vendor/github.com/wcharczuk/go-chart/v2/array.go @@ -0,0 +1,24 @@ +package chart + +var ( + _ Sequence = (*Array)(nil) +) + +// NewArray returns a new array from a given set of values. +// Array implements Sequence, which allows it to be used with the sequence helpers. +func NewArray(values ...float64) Array { + return Array(values) +} + +// Array is a wrapper for an array of floats that implements `ValuesProvider`. +type Array []float64 + +// Len returns the value provider length. +func (a Array) Len() int { + return len(a) +} + +// GetValue returns the value at a given index. +func (a Array) GetValue(index int) float64 { + return a[index] +} diff --git a/vendor/github.com/wcharczuk/go-chart/v2/axis.go b/vendor/github.com/wcharczuk/go-chart/v2/axis.go new file mode 100644 index 00000000..54e4d369 --- /dev/null +++ b/vendor/github.com/wcharczuk/go-chart/v2/axis.go @@ -0,0 +1,45 @@ +package chart + +// TickPosition is an enumeration of possible tick drawing positions. +type TickPosition int + +const ( + // TickPositionUnset means to use the default tick position. + TickPositionUnset TickPosition = 0 + // TickPositionBetweenTicks draws the labels for a tick between the previous and current tick. + TickPositionBetweenTicks TickPosition = 1 + // TickPositionUnderTick draws the tick below the tick. + TickPositionUnderTick TickPosition = 2 +) + +// YAxisType is a type of y-axis; it can either be primary or secondary. +type YAxisType int + +const ( + // YAxisPrimary is the primary axis. + YAxisPrimary YAxisType = 0 + // YAxisSecondary is the secondary axis. + YAxisSecondary YAxisType = 1 +) + +// Axis is a chart feature detailing what values happen where. +type Axis interface { + GetName() string + SetName(name string) + + GetStyle() Style + SetStyle(style Style) + + GetTicks() []Tick + GenerateTicks(r Renderer, ra Range, vf ValueFormatter) []Tick + + // GenerateGridLines returns the gridlines for the axis. + GetGridLines(ticks []Tick) []GridLine + + // Measure should return an absolute box for the axis. + // This is used when auto-fitting the canvas to the background. + Measure(r Renderer, canvasBox Box, ra Range, style Style, ticks []Tick) Box + + // Render renders the axis. + Render(r Renderer, canvasBox Box, ra Range, style Style, ticks []Tick) +} diff --git a/vendor/github.com/wcharczuk/go-chart/v2/bar_chart.go b/vendor/github.com/wcharczuk/go-chart/v2/bar_chart.go new file mode 100644 index 00000000..d61f3db1 --- /dev/null +++ b/vendor/github.com/wcharczuk/go-chart/v2/bar_chart.go @@ -0,0 +1,516 @@ +package chart + +import ( + "errors" + "fmt" + "io" + "math" + + "github.com/golang/freetype/truetype" +) + +// BarChart is a chart that draws bars on a range. +type BarChart struct { + Title string + TitleStyle Style + + ColorPalette ColorPalette + + Width int + Height int + DPI float64 + + BarWidth int + + Background Style + Canvas Style + + XAxis Style + YAxis YAxis + + BarSpacing int + + UseBaseValue bool + BaseValue float64 + + Font *truetype.Font + defaultFont *truetype.Font + + Bars []Value + Elements []Renderable +} + +// GetDPI returns the dpi for the chart. +func (bc BarChart) GetDPI() float64 { + if bc.DPI == 0 { + return DefaultDPI + } + return bc.DPI +} + +// GetFont returns the text font. +func (bc BarChart) GetFont() *truetype.Font { + if bc.Font == nil { + return bc.defaultFont + } + return bc.Font +} + +// GetWidth returns the chart width or the default value. +func (bc BarChart) GetWidth() int { + if bc.Width == 0 { + return DefaultChartWidth + } + return bc.Width +} + +// GetHeight returns the chart height or the default value. +func (bc BarChart) GetHeight() int { + if bc.Height == 0 { + return DefaultChartHeight + } + return bc.Height +} + +// GetBarSpacing returns the spacing between bars. +func (bc BarChart) GetBarSpacing() int { + if bc.BarSpacing == 0 { + return DefaultBarSpacing + } + return bc.BarSpacing +} + +// GetBarWidth returns the default bar width. +func (bc BarChart) GetBarWidth() int { + if bc.BarWidth == 0 { + return DefaultBarWidth + } + return bc.BarWidth +} + +// Render renders the chart with the given renderer to the given io.Writer. +func (bc BarChart) Render(rp RendererProvider, w io.Writer) error { + if len(bc.Bars) == 0 { + return errors.New("please provide at least one bar") + } + + r, err := rp(bc.GetWidth(), bc.GetHeight()) + if err != nil { + return err + } + + if bc.Font == nil { + defaultFont, err := GetDefaultFont() + if err != nil { + return err + } + bc.defaultFont = defaultFont + } + r.SetDPI(bc.GetDPI()) + + bc.drawBackground(r) + + var canvasBox Box + var yt []Tick + var yr Range + var yf ValueFormatter + + canvasBox = bc.getDefaultCanvasBox() + yr = bc.getRanges() + if yr.GetMax()-yr.GetMin() == 0 { + return fmt.Errorf("invalid data range; cannot be zero") + } + yr = bc.setRangeDomains(canvasBox, yr) + yf = bc.getValueFormatters() + + if bc.hasAxes() { + yt = bc.getAxesTicks(r, yr, yf) + canvasBox = bc.getAdjustedCanvasBox(r, canvasBox, yr, yt) + yr = bc.setRangeDomains(canvasBox, yr) + } + bc.drawCanvas(r, canvasBox) + bc.drawBars(r, canvasBox, yr) + bc.drawXAxis(r, canvasBox) + bc.drawYAxis(r, canvasBox, yr, yt) + + bc.drawTitle(r) + for _, a := range bc.Elements { + a(r, canvasBox, bc.styleDefaultsElements()) + } + + return r.Save(w) +} + +func (bc BarChart) drawCanvas(r Renderer, canvasBox Box) { + Draw.Box(r, canvasBox, bc.getCanvasStyle()) +} + +func (bc BarChart) getRanges() Range { + var yrange Range + if bc.YAxis.Range != nil && !bc.YAxis.Range.IsZero() { + yrange = bc.YAxis.Range + } else { + yrange = &ContinuousRange{} + } + + if !yrange.IsZero() { + return yrange + } + + if len(bc.YAxis.Ticks) > 0 { + tickMin, tickMax := math.MaxFloat64, -math.MaxFloat64 + for _, t := range bc.YAxis.Ticks { + tickMin = math.Min(tickMin, t.Value) + tickMax = math.Max(tickMax, t.Value) + } + yrange.SetMin(tickMin) + yrange.SetMax(tickMax) + return yrange + } + + min, max := math.MaxFloat64, -math.MaxFloat64 + for _, b := range bc.Bars { + min = math.Min(b.Value, min) + max = math.Max(b.Value, max) + } + + yrange.SetMin(min) + yrange.SetMax(max) + + return yrange +} + +func (bc BarChart) drawBackground(r Renderer) { + Draw.Box(r, Box{ + Right: bc.GetWidth(), + Bottom: bc.GetHeight(), + }, bc.getBackgroundStyle()) +} + +func (bc BarChart) drawBars(r Renderer, canvasBox Box, yr Range) { + xoffset := canvasBox.Left + + width, spacing, _ := bc.calculateScaledTotalWidth(canvasBox) + bs2 := spacing >> 1 + + var barBox Box + var bxl, bxr, by int + for index, bar := range bc.Bars { + bxl = xoffset + bs2 + bxr = bxl + width + + by = canvasBox.Bottom - yr.Translate(bar.Value) + + if bc.UseBaseValue { + barBox = Box{ + Top: by, + Left: bxl, + Right: bxr, + Bottom: canvasBox.Bottom - yr.Translate(bc.BaseValue), + } + } else { + barBox = Box{ + Top: by, + Left: bxl, + Right: bxr, + Bottom: canvasBox.Bottom, + } + } + + Draw.Box(r, barBox, bar.Style.InheritFrom(bc.styleDefaultsBar(index))) + + xoffset += width + spacing + } +} + +func (bc BarChart) drawXAxis(r Renderer, canvasBox Box) { + if !bc.XAxis.Hidden { + axisStyle := bc.XAxis.InheritFrom(bc.styleDefaultsAxes()) + axisStyle.WriteToRenderer(r) + + width, spacing, _ := bc.calculateScaledTotalWidth(canvasBox) + + r.MoveTo(canvasBox.Left, canvasBox.Bottom) + r.LineTo(canvasBox.Right, canvasBox.Bottom) + r.Stroke() + + r.MoveTo(canvasBox.Left, canvasBox.Bottom) + r.LineTo(canvasBox.Left, canvasBox.Bottom+DefaultVerticalTickHeight) + r.Stroke() + + cursor := canvasBox.Left + for index, bar := range bc.Bars { + barLabelBox := Box{ + Top: canvasBox.Bottom + DefaultXAxisMargin, + Left: cursor, + Right: cursor + width + spacing, + Bottom: bc.GetHeight(), + } + + if len(bar.Label) > 0 { + Draw.TextWithin(r, bar.Label, barLabelBox, axisStyle) + } + + axisStyle.WriteToRenderer(r) + if index < len(bc.Bars)-1 { + r.MoveTo(barLabelBox.Right, canvasBox.Bottom) + r.LineTo(barLabelBox.Right, canvasBox.Bottom+DefaultVerticalTickHeight) + r.Stroke() + } + cursor += width + spacing + } + } +} + +func (bc BarChart) drawYAxis(r Renderer, canvasBox Box, yr Range, ticks []Tick) { + if !bc.YAxis.Style.Hidden { + axisStyle := bc.YAxis.Style.InheritFrom(bc.styleDefaultsAxes()) + axisStyle.WriteToRenderer(r) + + r.MoveTo(canvasBox.Right, canvasBox.Top) + r.LineTo(canvasBox.Right, canvasBox.Bottom) + r.Stroke() + + r.MoveTo(canvasBox.Right, canvasBox.Bottom) + r.LineTo(canvasBox.Right+DefaultHorizontalTickWidth, canvasBox.Bottom) + r.Stroke() + + var ty int + var tb Box + for _, t := range ticks { + ty = canvasBox.Bottom - yr.Translate(t.Value) + + axisStyle.GetStrokeOptions().WriteToRenderer(r) + r.MoveTo(canvasBox.Right, ty) + r.LineTo(canvasBox.Right+DefaultHorizontalTickWidth, ty) + r.Stroke() + + axisStyle.GetTextOptions().WriteToRenderer(r) + tb = r.MeasureText(t.Label) + Draw.Text(r, t.Label, canvasBox.Right+DefaultYAxisMargin+5, ty+(tb.Height()>>1), axisStyle) + } + + } +} + +func (bc BarChart) drawTitle(r Renderer) { + if len(bc.Title) > 0 && !bc.TitleStyle.Hidden { + r.SetFont(bc.TitleStyle.GetFont(bc.GetFont())) + r.SetFontColor(bc.TitleStyle.GetFontColor(bc.GetColorPalette().TextColor())) + titleFontSize := bc.TitleStyle.GetFontSize(bc.getTitleFontSize()) + r.SetFontSize(titleFontSize) + + textBox := r.MeasureText(bc.Title) + + textWidth := textBox.Width() + textHeight := textBox.Height() + + titleX := (bc.GetWidth() >> 1) - (textWidth >> 1) + titleY := bc.TitleStyle.Padding.GetTop(DefaultTitleTop) + textHeight + + r.Text(bc.Title, titleX, titleY) + } +} + +func (bc BarChart) getCanvasStyle() Style { + return bc.Canvas.InheritFrom(bc.styleDefaultsCanvas()) +} + +func (bc BarChart) styleDefaultsCanvas() Style { + return Style{ + FillColor: bc.GetColorPalette().CanvasColor(), + StrokeColor: bc.GetColorPalette().CanvasStrokeColor(), + StrokeWidth: DefaultCanvasStrokeWidth, + } +} + +func (bc BarChart) hasAxes() bool { + return !bc.YAxis.Style.Hidden +} + +func (bc BarChart) setRangeDomains(canvasBox Box, yr Range) Range { + yr.SetDomain(canvasBox.Height()) + return yr +} + +func (bc BarChart) getDefaultCanvasBox() Box { + return bc.box() +} + +func (bc BarChart) getValueFormatters() ValueFormatter { + if bc.YAxis.ValueFormatter != nil { + return bc.YAxis.ValueFormatter + } + return FloatValueFormatter +} + +func (bc BarChart) getAxesTicks(r Renderer, yr Range, yf ValueFormatter) (yticks []Tick) { + if !bc.YAxis.Style.Hidden { + yticks = bc.YAxis.GetTicks(r, yr, bc.styleDefaultsAxes(), yf) + } + return +} + +func (bc BarChart) calculateEffectiveBarSpacing(canvasBox Box) int { + totalWithBaseSpacing := bc.calculateTotalBarWidth(bc.GetBarWidth(), bc.GetBarSpacing()) + if totalWithBaseSpacing > canvasBox.Width() { + lessBarWidths := canvasBox.Width() - (len(bc.Bars) * bc.GetBarWidth()) + if lessBarWidths > 0 { + return int(math.Ceil(float64(lessBarWidths) / float64(len(bc.Bars)))) + } + return 0 + } + return bc.GetBarSpacing() +} + +func (bc BarChart) calculateEffectiveBarWidth(canvasBox Box, spacing int) int { + totalWithBaseWidth := bc.calculateTotalBarWidth(bc.GetBarWidth(), spacing) + if totalWithBaseWidth > canvasBox.Width() { + totalLessBarSpacings := canvasBox.Width() - (len(bc.Bars) * spacing) + if totalLessBarSpacings > 0 { + return int(math.Ceil(float64(totalLessBarSpacings) / float64(len(bc.Bars)))) + } + return 0 + } + return bc.GetBarWidth() +} + +func (bc BarChart) calculateTotalBarWidth(barWidth, spacing int) int { + return len(bc.Bars) * (barWidth + spacing) +} + +func (bc BarChart) calculateScaledTotalWidth(canvasBox Box) (width, spacing, total int) { + spacing = bc.calculateEffectiveBarSpacing(canvasBox) + width = bc.calculateEffectiveBarWidth(canvasBox, spacing) + total = bc.calculateTotalBarWidth(width, spacing) + return +} + +func (bc BarChart) getAdjustedCanvasBox(r Renderer, canvasBox Box, yrange Range, yticks []Tick) Box { + axesOuterBox := canvasBox.Clone() + + _, _, totalWidth := bc.calculateScaledTotalWidth(canvasBox) + + if !bc.XAxis.Hidden { + xaxisHeight := DefaultVerticalTickHeight + + axisStyle := bc.XAxis.InheritFrom(bc.styleDefaultsAxes()) + axisStyle.WriteToRenderer(r) + + cursor := canvasBox.Left + for _, bar := range bc.Bars { + if len(bar.Label) > 0 { + barLabelBox := Box{ + Top: canvasBox.Bottom + DefaultXAxisMargin, + Left: cursor, + Right: cursor + bc.GetBarWidth() + bc.GetBarSpacing(), + Bottom: bc.GetHeight(), + } + lines := Text.WrapFit(r, bar.Label, barLabelBox.Width(), axisStyle) + linesBox := Text.MeasureLines(r, lines, axisStyle) + + xaxisHeight = MinInt(linesBox.Height()+(2*DefaultXAxisMargin), xaxisHeight) + } + } + + xbox := Box{ + Top: canvasBox.Top, + Left: canvasBox.Left, + Right: canvasBox.Left + totalWidth, + Bottom: bc.GetHeight() - xaxisHeight, + } + + axesOuterBox = axesOuterBox.Grow(xbox) + } + + if !bc.YAxis.Style.Hidden { + axesBounds := bc.YAxis.Measure(r, canvasBox, yrange, bc.styleDefaultsAxes(), yticks) + axesOuterBox = axesOuterBox.Grow(axesBounds) + } + + return canvasBox.OuterConstrain(bc.box(), axesOuterBox) +} + +// box returns the chart bounds as a box. +func (bc BarChart) box() Box { + dpr := bc.Background.Padding.GetRight(10) + dpb := bc.Background.Padding.GetBottom(50) + + return Box{ + Top: bc.Background.Padding.GetTop(20), + Left: bc.Background.Padding.GetLeft(20), + Right: bc.GetWidth() - dpr, + Bottom: bc.GetHeight() - dpb, + } +} + +func (bc BarChart) getBackgroundStyle() Style { + return bc.Background.InheritFrom(bc.styleDefaultsBackground()) +} + +func (bc BarChart) styleDefaultsBackground() Style { + return Style{ + FillColor: bc.GetColorPalette().BackgroundColor(), + StrokeColor: bc.GetColorPalette().BackgroundStrokeColor(), + StrokeWidth: DefaultStrokeWidth, + } +} + +func (bc BarChart) styleDefaultsBar(index int) Style { + return Style{ + StrokeColor: bc.GetColorPalette().GetSeriesColor(index), + StrokeWidth: 3.0, + FillColor: bc.GetColorPalette().GetSeriesColor(index), + } +} + +func (bc BarChart) styleDefaultsTitle() Style { + return bc.TitleStyle.InheritFrom(Style{ + FontColor: bc.GetColorPalette().TextColor(), + Font: bc.GetFont(), + FontSize: bc.getTitleFontSize(), + TextHorizontalAlign: TextHorizontalAlignCenter, + TextVerticalAlign: TextVerticalAlignTop, + TextWrap: TextWrapWord, + }) +} + +func (bc BarChart) getTitleFontSize() float64 { + effectiveDimension := MinInt(bc.GetWidth(), bc.GetHeight()) + if effectiveDimension >= 2048 { + return 48 + } else if effectiveDimension >= 1024 { + return 24 + } else if effectiveDimension >= 512 { + return 18 + } else if effectiveDimension >= 256 { + return 12 + } + return 10 +} + +func (bc BarChart) styleDefaultsAxes() Style { + return Style{ + StrokeColor: bc.GetColorPalette().AxisStrokeColor(), + Font: bc.GetFont(), + FontSize: DefaultAxisFontSize, + FontColor: bc.GetColorPalette().TextColor(), + TextHorizontalAlign: TextHorizontalAlignCenter, + TextVerticalAlign: TextVerticalAlignTop, + TextWrap: TextWrapWord, + } +} + +func (bc BarChart) styleDefaultsElements() Style { + return Style{ + Font: bc.GetFont(), + } +} + +// GetColorPalette returns the color palette for the chart. +func (bc BarChart) GetColorPalette() ColorPalette { + if bc.ColorPalette != nil { + return bc.ColorPalette + } + return AlternateColorPalette +} diff --git a/vendor/github.com/wcharczuk/go-chart/v2/bollinger_band_series.go b/vendor/github.com/wcharczuk/go-chart/v2/bollinger_band_series.go new file mode 100644 index 00000000..728b232b --- /dev/null +++ b/vendor/github.com/wcharczuk/go-chart/v2/bollinger_band_series.go @@ -0,0 +1,135 @@ +package chart + +import ( + "fmt" +) + +// Interface Assertions. +var ( + _ Series = (*BollingerBandsSeries)(nil) +) + +// BollingerBandsSeries draws bollinger bands for an inner series. +// Bollinger bands are defined by two lines, one at SMA+k*stddev, one at SMA-k*stdev. +type BollingerBandsSeries struct { + Name string + Style Style + YAxis YAxisType + + Period int + K float64 + InnerSeries ValuesProvider + + valueBuffer *ValueBuffer +} + +// GetName returns the name of the time series. +func (bbs BollingerBandsSeries) GetName() string { + return bbs.Name +} + +// GetStyle returns the line style. +func (bbs BollingerBandsSeries) GetStyle() Style { + return bbs.Style +} + +// GetYAxis returns which YAxis the series draws on. +func (bbs BollingerBandsSeries) GetYAxis() YAxisType { + return bbs.YAxis +} + +// GetPeriod returns the window size. +func (bbs BollingerBandsSeries) GetPeriod() int { + if bbs.Period == 0 { + return DefaultSimpleMovingAveragePeriod + } + return bbs.Period +} + +// GetK returns the K value, or the number of standard deviations above and below +// to band the simple moving average with. +// Typical K value is 2.0. +func (bbs BollingerBandsSeries) GetK(defaults ...float64) float64 { + if bbs.K == 0 { + if len(defaults) > 0 { + return defaults[0] + } + return 2.0 + } + return bbs.K +} + +// Len returns the number of elements in the series. +func (bbs BollingerBandsSeries) Len() int { + return bbs.InnerSeries.Len() +} + +// GetBoundedValues gets the bounded value for the series. +func (bbs *BollingerBandsSeries) GetBoundedValues(index int) (x, y1, y2 float64) { + if bbs.InnerSeries == nil { + return + } + if bbs.valueBuffer == nil || index == 0 { + bbs.valueBuffer = NewValueBufferWithCapacity(bbs.GetPeriod()) + } + if bbs.valueBuffer.Len() >= bbs.GetPeriod() { + bbs.valueBuffer.Dequeue() + } + px, py := bbs.InnerSeries.GetValues(index) + bbs.valueBuffer.Enqueue(py) + x = px + + ay := Seq{bbs.valueBuffer}.Average() + std := Seq{bbs.valueBuffer}.StdDev() + + y1 = ay + (bbs.GetK() * std) + y2 = ay - (bbs.GetK() * std) + return +} + +// GetBoundedLastValues returns the last bounded value for the series. +func (bbs *BollingerBandsSeries) GetBoundedLastValues() (x, y1, y2 float64) { + if bbs.InnerSeries == nil { + return + } + period := bbs.GetPeriod() + seriesLength := bbs.InnerSeries.Len() + startAt := seriesLength - period + if startAt < 0 { + startAt = 0 + } + + vb := NewValueBufferWithCapacity(period) + for index := startAt; index < seriesLength; index++ { + xn, yn := bbs.InnerSeries.GetValues(index) + vb.Enqueue(yn) + x = xn + } + + ay := Seq{vb}.Average() + std := Seq{vb}.StdDev() + + y1 = ay + (bbs.GetK() * std) + y2 = ay - (bbs.GetK() * std) + + return +} + +// Render renders the series. +func (bbs *BollingerBandsSeries) Render(r Renderer, canvasBox Box, xrange, yrange Range, defaults Style) { + s := bbs.Style.InheritFrom(defaults.InheritFrom(Style{ + StrokeWidth: 1.0, + StrokeColor: DefaultAxisColor.WithAlpha(64), + FillColor: DefaultAxisColor.WithAlpha(32), + })) + + Draw.BoundedSeries(r, canvasBox, xrange, yrange, s, bbs, bbs.GetPeriod()) +} + +// Validate validates the series. +func (bbs BollingerBandsSeries) Validate() error { + if bbs.InnerSeries == nil { + return fmt.Errorf("bollinger bands series requires InnerSeries to be set") + } + return nil +} diff --git a/vendor/github.com/wcharczuk/go-chart/v2/bounded_last_values_annotation_series.go b/vendor/github.com/wcharczuk/go-chart/v2/bounded_last_values_annotation_series.go new file mode 100644 index 00000000..670ddf79 --- /dev/null +++ b/vendor/github.com/wcharczuk/go-chart/v2/bounded_last_values_annotation_series.go @@ -0,0 +1,36 @@ +package chart + +import "fmt" + +// BoundedLastValuesAnnotationSeries returns a last value annotation series for a bounded values provider. +func BoundedLastValuesAnnotationSeries(innerSeries FullBoundedValuesProvider, vfs ...ValueFormatter) AnnotationSeries { + lvx, lvy1, lvy2 := innerSeries.GetBoundedLastValues() + + var vf ValueFormatter + if len(vfs) > 0 { + vf = vfs[0] + } else if typed, isTyped := innerSeries.(ValueFormatterProvider); isTyped { + _, vf = typed.GetValueFormatters() + } else { + vf = FloatValueFormatter + } + + label1 := vf(lvy1) + label2 := vf(lvy2) + + var seriesName string + var seriesStyle Style + if typed, isTyped := innerSeries.(Series); isTyped { + seriesName = fmt.Sprintf("%s - Last Values", typed.GetName()) + seriesStyle = typed.GetStyle() + } + + return AnnotationSeries{ + Name: seriesName, + Style: seriesStyle, + Annotations: []Value2{ + {XValue: lvx, YValue: lvy1, Label: label1}, + {XValue: lvx, YValue: lvy2, Label: label2}, + }, + } +} diff --git a/vendor/github.com/wcharczuk/go-chart/v2/box.go b/vendor/github.com/wcharczuk/go-chart/v2/box.go new file mode 100644 index 00000000..9611ff9a --- /dev/null +++ b/vendor/github.com/wcharczuk/go-chart/v2/box.go @@ -0,0 +1,351 @@ +package chart + +import ( + "fmt" + "math" +) + +var ( + // BoxZero is a preset box that represents an intentional zero value. + BoxZero = Box{IsSet: true} +) + +// NewBox returns a new (set) box. +func NewBox(top, left, right, bottom int) Box { + return Box{ + IsSet: true, + Top: top, + Left: left, + Right: right, + Bottom: bottom, + } +} + +// Box represents the main 4 dimensions of a box. +type Box struct { + Top int + Left int + Right int + Bottom int + IsSet bool +} + +// IsZero returns if the box is set or not. +func (b Box) IsZero() bool { + if b.IsSet { + return false + } + return b.Top == 0 && b.Left == 0 && b.Right == 0 && b.Bottom == 0 +} + +// String returns a string representation of the box. +func (b Box) String() string { + return fmt.Sprintf("box(%d,%d,%d,%d)", b.Top, b.Left, b.Right, b.Bottom) +} + +// GetTop returns a coalesced value with a default. +func (b Box) GetTop(defaults ...int) int { + if !b.IsSet && b.Top == 0 { + if len(defaults) > 0 { + return defaults[0] + } + return 0 + } + return b.Top +} + +// GetLeft returns a coalesced value with a default. +func (b Box) GetLeft(defaults ...int) int { + if !b.IsSet && b.Left == 0 { + if len(defaults) > 0 { + return defaults[0] + } + return 0 + } + return b.Left +} + +// GetRight returns a coalesced value with a default. +func (b Box) GetRight(defaults ...int) int { + if !b.IsSet && b.Right == 0 { + if len(defaults) > 0 { + return defaults[0] + } + return 0 + } + return b.Right +} + +// GetBottom returns a coalesced value with a default. +func (b Box) GetBottom(defaults ...int) int { + if !b.IsSet && b.Bottom == 0 { + if len(defaults) > 0 { + return defaults[0] + } + return 0 + } + return b.Bottom +} + +// Width returns the width +func (b Box) Width() int { + return AbsInt(b.Right - b.Left) +} + +// Height returns the height +func (b Box) Height() int { + return AbsInt(b.Bottom - b.Top) +} + +// Center returns the center of the box +func (b Box) Center() (x, y int) { + w2, h2 := b.Width()>>1, b.Height()>>1 + return b.Left + w2, b.Top + h2 +} + +// Aspect returns the aspect ratio of the box. +func (b Box) Aspect() float64 { + return float64(b.Width()) / float64(b.Height()) +} + +// Clone returns a new copy of the box. +func (b Box) Clone() Box { + return Box{ + IsSet: b.IsSet, + Top: b.Top, + Left: b.Left, + Right: b.Right, + Bottom: b.Bottom, + } +} + +// IsBiggerThan returns if a box is bigger than another box. +func (b Box) IsBiggerThan(other Box) bool { + return b.Top < other.Top || + b.Bottom > other.Bottom || + b.Left < other.Left || + b.Right > other.Right +} + +// IsSmallerThan returns if a box is smaller than another box. +func (b Box) IsSmallerThan(other Box) bool { + return b.Top > other.Top && + b.Bottom < other.Bottom && + b.Left > other.Left && + b.Right < other.Right +} + +// Equals returns if the box equals another box. +func (b Box) Equals(other Box) bool { + return b.Top == other.Top && + b.Left == other.Left && + b.Right == other.Right && + b.Bottom == other.Bottom +} + +// Grow grows a box based on another box. +func (b Box) Grow(other Box) Box { + return Box{ + Top: MinInt(b.Top, other.Top), + Left: MinInt(b.Left, other.Left), + Right: MaxInt(b.Right, other.Right), + Bottom: MaxInt(b.Bottom, other.Bottom), + } +} + +// Shift pushes a box by x,y. +func (b Box) Shift(x, y int) Box { + return Box{ + Top: b.Top + y, + Left: b.Left + x, + Right: b.Right + x, + Bottom: b.Bottom + y, + } +} + +// Corners returns the box as a set of corners. +func (b Box) Corners() BoxCorners { + return BoxCorners{ + TopLeft: Point{b.Left, b.Top}, + TopRight: Point{b.Right, b.Top}, + BottomRight: Point{b.Right, b.Bottom}, + BottomLeft: Point{b.Left, b.Bottom}, + } +} + +// Fit is functionally the inverse of grow. +// Fit maintains the original aspect ratio of the `other` box, +// but constrains it to the bounds of the target box. +func (b Box) Fit(other Box) Box { + ba := b.Aspect() + oa := other.Aspect() + + if oa == ba { + return b.Clone() + } + + bw, bh := float64(b.Width()), float64(b.Height()) + bw2 := int(bw) >> 1 + bh2 := int(bh) >> 1 + if oa > ba { // ex. 16:9 vs. 4:3 + var noh2 int + if oa > 1.0 { + noh2 = int(bw/oa) >> 1 + } else { + noh2 = int(bh*oa) >> 1 + } + return Box{ + Top: (b.Top + bh2) - noh2, + Left: b.Left, + Right: b.Right, + Bottom: (b.Top + bh2) + noh2, + } + } + var now2 int + if oa > 1.0 { + now2 = int(bh/oa) >> 1 + } else { + now2 = int(bw*oa) >> 1 + } + return Box{ + Top: b.Top, + Left: (b.Left + bw2) - now2, + Right: (b.Left + bw2) + now2, + Bottom: b.Bottom, + } +} + +// Constrain is similar to `Fit` except that it will work +// more literally like the opposite of grow. +func (b Box) Constrain(other Box) Box { + newBox := b.Clone() + + newBox.Top = MaxInt(newBox.Top, other.Top) + newBox.Left = MaxInt(newBox.Left, other.Left) + newBox.Right = MinInt(newBox.Right, other.Right) + newBox.Bottom = MinInt(newBox.Bottom, other.Bottom) + + return newBox +} + +// OuterConstrain is similar to `Constraint` with the difference +// that it applies corrections +func (b Box) OuterConstrain(bounds, other Box) Box { + newBox := b.Clone() + if other.Top < bounds.Top { + delta := bounds.Top - other.Top + newBox.Top = b.Top + delta + } + + if other.Left < bounds.Left { + delta := bounds.Left - other.Left + newBox.Left = b.Left + delta + } + + if other.Right > bounds.Right { + delta := other.Right - bounds.Right + newBox.Right = b.Right - delta + } + + if other.Bottom > bounds.Bottom { + delta := other.Bottom - bounds.Bottom + newBox.Bottom = b.Bottom - delta + } + return newBox +} + +// BoxCorners is a box with independent corners. +type BoxCorners struct { + TopLeft, TopRight, BottomRight, BottomLeft Point +} + +// Box return the BoxCorners as a regular box. +func (bc BoxCorners) Box() Box { + return Box{ + Top: MinInt(bc.TopLeft.Y, bc.TopRight.Y), + Left: MinInt(bc.TopLeft.X, bc.BottomLeft.X), + Right: MaxInt(bc.TopRight.X, bc.BottomRight.X), + Bottom: MaxInt(bc.BottomLeft.Y, bc.BottomRight.Y), + } +} + +// Width returns the width +func (bc BoxCorners) Width() int { + minLeft := MinInt(bc.TopLeft.X, bc.BottomLeft.X) + maxRight := MaxInt(bc.TopRight.X, bc.BottomRight.X) + return maxRight - minLeft +} + +// Height returns the height +func (bc BoxCorners) Height() int { + minTop := MinInt(bc.TopLeft.Y, bc.TopRight.Y) + maxBottom := MaxInt(bc.BottomLeft.Y, bc.BottomRight.Y) + return maxBottom - minTop +} + +// Center returns the center of the box +func (bc BoxCorners) Center() (x, y int) { + + left := MeanInt(bc.TopLeft.X, bc.BottomLeft.X) + right := MeanInt(bc.TopRight.X, bc.BottomRight.X) + x = ((right - left) >> 1) + left + + top := MeanInt(bc.TopLeft.Y, bc.TopRight.Y) + bottom := MeanInt(bc.BottomLeft.Y, bc.BottomRight.Y) + y = ((bottom - top) >> 1) + top + + return +} + +// Rotate rotates the box. +func (bc BoxCorners) Rotate(thetaDegrees float64) BoxCorners { + cx, cy := bc.Center() + + thetaRadians := DegreesToRadians(thetaDegrees) + + tlx, tly := RotateCoordinate(cx, cy, bc.TopLeft.X, bc.TopLeft.Y, thetaRadians) + trx, try := RotateCoordinate(cx, cy, bc.TopRight.X, bc.TopRight.Y, thetaRadians) + brx, bry := RotateCoordinate(cx, cy, bc.BottomRight.X, bc.BottomRight.Y, thetaRadians) + blx, bly := RotateCoordinate(cx, cy, bc.BottomLeft.X, bc.BottomLeft.Y, thetaRadians) + + return BoxCorners{ + TopLeft: Point{tlx, tly}, + TopRight: Point{trx, try}, + BottomRight: Point{brx, bry}, + BottomLeft: Point{blx, bly}, + } +} + +// Equals returns if the box equals another box. +func (bc BoxCorners) Equals(other BoxCorners) bool { + return bc.TopLeft.Equals(other.TopLeft) && + bc.TopRight.Equals(other.TopRight) && + bc.BottomRight.Equals(other.BottomRight) && + bc.BottomLeft.Equals(other.BottomLeft) +} + +func (bc BoxCorners) String() string { + return fmt.Sprintf("BoxC{%s,%s,%s,%s}", bc.TopLeft.String(), bc.TopRight.String(), bc.BottomRight.String(), bc.BottomLeft.String()) +} + +// Point is an X,Y pair +type Point struct { + X, Y int +} + +// DistanceTo calculates the distance to another point. +func (p Point) DistanceTo(other Point) float64 { + dx := math.Pow(float64(p.X-other.X), 2) + dy := math.Pow(float64(p.Y-other.Y), 2) + return math.Pow(dx+dy, 0.5) +} + +// Equals returns if a point equals another point. +func (p Point) Equals(other Point) bool { + return p.X == other.X && p.Y == other.Y +} + +// String returns a string representation of the point. +func (p Point) String() string { + return fmt.Sprintf("P{%d,%d}", p.X, p.Y) +} diff --git a/vendor/github.com/wcharczuk/go-chart/v2/chart.go b/vendor/github.com/wcharczuk/go-chart/v2/chart.go new file mode 100644 index 00000000..5212a437 --- /dev/null +++ b/vendor/github.com/wcharczuk/go-chart/v2/chart.go @@ -0,0 +1,577 @@ +package chart + +import ( + "errors" + "fmt" + "io" + "math" + + "github.com/golang/freetype/truetype" +) + +// Chart is what we're drawing. +type Chart struct { + Title string + TitleStyle Style + + ColorPalette ColorPalette + + Width int + Height int + DPI float64 + + Background Style + Canvas Style + + XAxis XAxis + YAxis YAxis + YAxisSecondary YAxis + + Font *truetype.Font + defaultFont *truetype.Font + + Series []Series + Elements []Renderable + + Log Logger +} + +// GetDPI returns the dpi for the chart. +func (c Chart) GetDPI(defaults ...float64) float64 { + if c.DPI == 0 { + if len(defaults) > 0 { + return defaults[0] + } + return DefaultDPI + } + return c.DPI +} + +// GetFont returns the text font. +func (c Chart) GetFont() *truetype.Font { + if c.Font == nil { + return c.defaultFont + } + return c.Font +} + +// GetWidth returns the chart width or the default value. +func (c Chart) GetWidth() int { + if c.Width == 0 { + return DefaultChartWidth + } + return c.Width +} + +// GetHeight returns the chart height or the default value. +func (c Chart) GetHeight() int { + if c.Height == 0 { + return DefaultChartHeight + } + return c.Height +} + +// Render renders the chart with the given renderer to the given io.Writer. +func (c Chart) Render(rp RendererProvider, w io.Writer) error { + if len(c.Series) == 0 { + return errors.New("please provide at least one series") + } + if err := c.checkHasVisibleSeries(); err != nil { + return err + } + + c.YAxisSecondary.AxisType = YAxisSecondary + + r, err := rp(c.GetWidth(), c.GetHeight()) + if err != nil { + return err + } + + if c.Font == nil { + defaultFont, err := GetDefaultFont() + if err != nil { + return err + } + c.defaultFont = defaultFont + } + r.SetDPI(c.GetDPI(DefaultDPI)) + + c.drawBackground(r) + + var xt, yt, yta []Tick + xr, yr, yra := c.getRanges() + canvasBox := c.getDefaultCanvasBox() + xf, yf, yfa := c.getValueFormatters() + + Debugf(c.Log, "chart; canvas box: %v", canvasBox) + + xr, yr, yra = c.setRangeDomains(canvasBox, xr, yr, yra) + + err = c.checkRanges(xr, yr, yra) + if err != nil { + r.Save(w) + return err + } + + if c.hasAxes() { + xt, yt, yta = c.getAxesTicks(r, xr, yr, yra, xf, yf, yfa) + canvasBox = c.getAxesAdjustedCanvasBox(r, canvasBox, xr, yr, yra, xt, yt, yta) + xr, yr, yra = c.setRangeDomains(canvasBox, xr, yr, yra) + + Debugf(c.Log, "chart; axes adjusted canvas box: %v", canvasBox) + + // do a second pass in case things haven't settled yet. + xt, yt, yta = c.getAxesTicks(r, xr, yr, yra, xf, yf, yfa) + canvasBox = c.getAxesAdjustedCanvasBox(r, canvasBox, xr, yr, yra, xt, yt, yta) + xr, yr, yra = c.setRangeDomains(canvasBox, xr, yr, yra) + } + + if c.hasAnnotationSeries() { + canvasBox = c.getAnnotationAdjustedCanvasBox(r, canvasBox, xr, yr, yra, xf, yf, yfa) + xr, yr, yra = c.setRangeDomains(canvasBox, xr, yr, yra) + xt, yt, yta = c.getAxesTicks(r, xr, yr, yra, xf, yf, yfa) + + Debugf(c.Log, "chart; annotation adjusted canvas box: %v", canvasBox) + } + + c.drawCanvas(r, canvasBox) + c.drawAxes(r, canvasBox, xr, yr, yra, xt, yt, yta) + for index, series := range c.Series { + c.drawSeries(r, canvasBox, xr, yr, yra, series, index) + } + + c.drawTitle(r) + + for _, a := range c.Elements { + a(r, canvasBox, c.styleDefaultsElements()) + } + + return r.Save(w) +} + +func (c Chart) checkHasVisibleSeries() error { + var style Style + for _, s := range c.Series { + style = s.GetStyle() + if !style.Hidden { + return nil + } + } + return fmt.Errorf("chart render; must have (1) visible series") +} + +func (c Chart) validateSeries() error { + var err error + for _, s := range c.Series { + err = s.Validate() + if err != nil { + return err + } + } + return nil +} + +func (c Chart) getRanges() (xrange, yrange, yrangeAlt Range) { + var minx, maxx float64 = math.MaxFloat64, -math.MaxFloat64 + var miny, maxy float64 = math.MaxFloat64, -math.MaxFloat64 + var minya, maxya float64 = math.MaxFloat64, -math.MaxFloat64 + + seriesMappedToSecondaryAxis := false + + // note: a possible future optimization is to not scan the series values if + // all axis are represented by either custom ticks or custom ranges. + for _, s := range c.Series { + if !s.GetStyle().Hidden { + seriesAxis := s.GetYAxis() + if bvp, isBoundedValuesProvider := s.(BoundedValuesProvider); isBoundedValuesProvider { + seriesLength := bvp.Len() + for index := 0; index < seriesLength; index++ { + vx, vy1, vy2 := bvp.GetBoundedValues(index) + + minx = math.Min(minx, vx) + maxx = math.Max(maxx, vx) + + if seriesAxis == YAxisPrimary { + miny = math.Min(miny, vy1) + miny = math.Min(miny, vy2) + maxy = math.Max(maxy, vy1) + maxy = math.Max(maxy, vy2) + } else if seriesAxis == YAxisSecondary { + minya = math.Min(minya, vy1) + minya = math.Min(minya, vy2) + maxya = math.Max(maxya, vy1) + maxya = math.Max(maxya, vy2) + seriesMappedToSecondaryAxis = true + } + } + } else if vp, isValuesProvider := s.(ValuesProvider); isValuesProvider { + seriesLength := vp.Len() + for index := 0; index < seriesLength; index++ { + vx, vy := vp.GetValues(index) + + minx = math.Min(minx, vx) + maxx = math.Max(maxx, vx) + + if seriesAxis == YAxisPrimary { + miny = math.Min(miny, vy) + maxy = math.Max(maxy, vy) + } else if seriesAxis == YAxisSecondary { + minya = math.Min(minya, vy) + maxya = math.Max(maxya, vy) + seriesMappedToSecondaryAxis = true + } + } + } + } + } + + if c.XAxis.Range == nil { + xrange = &ContinuousRange{} + } else { + xrange = c.XAxis.Range + } + + if c.YAxis.Range == nil { + yrange = &ContinuousRange{} + } else { + yrange = c.YAxis.Range + } + + if c.YAxisSecondary.Range == nil { + yrangeAlt = &ContinuousRange{} + } else { + yrangeAlt = c.YAxisSecondary.Range + } + + if len(c.XAxis.Ticks) > 0 { + tickMin, tickMax := math.MaxFloat64, -math.MaxFloat64 + for _, t := range c.XAxis.Ticks { + tickMin = math.Min(tickMin, t.Value) + tickMax = math.Max(tickMax, t.Value) + } + xrange.SetMin(tickMin) + xrange.SetMax(tickMax) + } else if xrange.IsZero() { + xrange.SetMin(minx) + xrange.SetMax(maxx) + } + + if len(c.YAxis.Ticks) > 0 { + tickMin, tickMax := math.MaxFloat64, -math.MaxFloat64 + for _, t := range c.YAxis.Ticks { + tickMin = math.Min(tickMin, t.Value) + tickMax = math.Max(tickMax, t.Value) + } + yrange.SetMin(tickMin) + yrange.SetMax(tickMax) + } else if yrange.IsZero() { + yrange.SetMin(miny) + yrange.SetMax(maxy) + + if !c.YAxis.Style.Hidden { + delta := yrange.GetDelta() + roundTo := GetRoundToForDelta(delta) + rmin, rmax := RoundDown(yrange.GetMin(), roundTo), RoundUp(yrange.GetMax(), roundTo) + + yrange.SetMin(rmin) + yrange.SetMax(rmax) + } + } + + if len(c.YAxisSecondary.Ticks) > 0 { + tickMin, tickMax := math.MaxFloat64, -math.MaxFloat64 + for _, t := range c.YAxis.Ticks { + tickMin = math.Min(tickMin, t.Value) + tickMax = math.Max(tickMax, t.Value) + } + yrangeAlt.SetMin(tickMin) + yrangeAlt.SetMax(tickMax) + } else if seriesMappedToSecondaryAxis && yrangeAlt.IsZero() { + yrangeAlt.SetMin(minya) + yrangeAlt.SetMax(maxya) + + if !c.YAxisSecondary.Style.Hidden { + delta := yrangeAlt.GetDelta() + roundTo := GetRoundToForDelta(delta) + rmin, rmax := RoundDown(yrangeAlt.GetMin(), roundTo), RoundUp(yrangeAlt.GetMax(), roundTo) + yrangeAlt.SetMin(rmin) + yrangeAlt.SetMax(rmax) + } + } + + return +} + +func (c Chart) checkRanges(xr, yr, yra Range) error { + Debugf(c.Log, "checking xrange: %v", xr) + xDelta := xr.GetDelta() + if math.IsInf(xDelta, 0) { + return errors.New("infinite x-range delta") + } + if math.IsNaN(xDelta) { + return errors.New("nan x-range delta") + } + if xDelta == 0 { + return errors.New("zero x-range delta; there needs to be at least (2) values") + } + + Debugf(c.Log, "checking yrange: %v", yr) + yDelta := yr.GetDelta() + if math.IsInf(yDelta, 0) { + return errors.New("infinite y-range delta") + } + if math.IsNaN(yDelta) { + return errors.New("nan y-range delta") + } + + if c.hasSecondarySeries() { + Debugf(c.Log, "checking secondary yrange: %v", yra) + yraDelta := yra.GetDelta() + if math.IsInf(yraDelta, 0) { + return errors.New("infinite secondary y-range delta") + } + if math.IsNaN(yraDelta) { + return errors.New("nan secondary y-range delta") + } + } + + return nil +} + +func (c Chart) getDefaultCanvasBox() Box { + return c.Box() +} + +func (c Chart) getValueFormatters() (x, y, ya ValueFormatter) { + for _, s := range c.Series { + if vfp, isVfp := s.(ValueFormatterProvider); isVfp { + sx, sy := vfp.GetValueFormatters() + if s.GetYAxis() == YAxisPrimary { + x = sx + y = sy + } else if s.GetYAxis() == YAxisSecondary { + x = sx + ya = sy + } + } + } + if c.XAxis.ValueFormatter != nil { + x = c.XAxis.GetValueFormatter() + } + if c.YAxis.ValueFormatter != nil { + y = c.YAxis.GetValueFormatter() + } + if c.YAxisSecondary.ValueFormatter != nil { + ya = c.YAxisSecondary.GetValueFormatter() + } + return +} + +func (c Chart) hasAxes() bool { + return !c.XAxis.Style.Hidden || !c.YAxis.Style.Hidden || !c.YAxisSecondary.Style.Hidden +} + +func (c Chart) getAxesTicks(r Renderer, xr, yr, yar Range, xf, yf, yfa ValueFormatter) (xticks, yticks, yticksAlt []Tick) { + if !c.XAxis.Style.Hidden { + xticks = c.XAxis.GetTicks(r, xr, c.styleDefaultsAxes(), xf) + } + if !c.YAxis.Style.Hidden { + yticks = c.YAxis.GetTicks(r, yr, c.styleDefaultsAxes(), yf) + } + if !c.YAxisSecondary.Style.Hidden { + yticksAlt = c.YAxisSecondary.GetTicks(r, yar, c.styleDefaultsAxes(), yfa) + } + return +} + +func (c Chart) getAxesAdjustedCanvasBox(r Renderer, canvasBox Box, xr, yr, yra Range, xticks, yticks, yticksAlt []Tick) Box { + axesOuterBox := canvasBox.Clone() + if !c.XAxis.Style.Hidden { + axesBounds := c.XAxis.Measure(r, canvasBox, xr, c.styleDefaultsAxes(), xticks) + Debugf(c.Log, "chart; x-axis measured %v", axesBounds) + axesOuterBox = axesOuterBox.Grow(axesBounds) + } + if !c.YAxis.Style.Hidden { + axesBounds := c.YAxis.Measure(r, canvasBox, yr, c.styleDefaultsAxes(), yticks) + Debugf(c.Log, "chart; y-axis measured %v", axesBounds) + axesOuterBox = axesOuterBox.Grow(axesBounds) + } + if !c.YAxisSecondary.Style.Hidden && c.hasSecondarySeries() { + axesBounds := c.YAxisSecondary.Measure(r, canvasBox, yra, c.styleDefaultsAxes(), yticksAlt) + Debugf(c.Log, "chart; y-axis secondary measured %v", axesBounds) + axesOuterBox = axesOuterBox.Grow(axesBounds) + } + + return canvasBox.OuterConstrain(c.Box(), axesOuterBox) +} + +func (c Chart) setRangeDomains(canvasBox Box, xr, yr, yra Range) (Range, Range, Range) { + xr.SetDomain(canvasBox.Width()) + yr.SetDomain(canvasBox.Height()) + yra.SetDomain(canvasBox.Height()) + return xr, yr, yra +} + +func (c Chart) hasAnnotationSeries() bool { + for _, s := range c.Series { + if as, isAnnotationSeries := s.(AnnotationSeries); isAnnotationSeries { + if !as.GetStyle().Hidden { + return true + } + } + } + return false +} + +func (c Chart) hasSecondarySeries() bool { + for _, s := range c.Series { + if s.GetYAxis() == YAxisSecondary { + return true + } + } + return false +} + +func (c Chart) getAnnotationAdjustedCanvasBox(r Renderer, canvasBox Box, xr, yr, yra Range, xf, yf, yfa ValueFormatter) Box { + annotationSeriesBox := canvasBox.Clone() + for seriesIndex, s := range c.Series { + if as, isAnnotationSeries := s.(AnnotationSeries); isAnnotationSeries { + if !as.GetStyle().Hidden { + style := c.styleDefaultsSeries(seriesIndex) + var annotationBounds Box + if as.YAxis == YAxisPrimary { + annotationBounds = as.Measure(r, canvasBox, xr, yr, style) + } else if as.YAxis == YAxisSecondary { + annotationBounds = as.Measure(r, canvasBox, xr, yra, style) + } + + annotationSeriesBox = annotationSeriesBox.Grow(annotationBounds) + } + } + } + + return canvasBox.OuterConstrain(c.Box(), annotationSeriesBox) +} + +func (c Chart) getBackgroundStyle() Style { + return c.Background.InheritFrom(c.styleDefaultsBackground()) +} + +func (c Chart) drawBackground(r Renderer) { + Draw.Box(r, Box{ + Right: c.GetWidth(), + Bottom: c.GetHeight(), + }, c.getBackgroundStyle()) +} + +func (c Chart) getCanvasStyle() Style { + return c.Canvas.InheritFrom(c.styleDefaultsCanvas()) +} + +func (c Chart) drawCanvas(r Renderer, canvasBox Box) { + Draw.Box(r, canvasBox, c.getCanvasStyle()) +} + +func (c Chart) drawAxes(r Renderer, canvasBox Box, xrange, yrange, yrangeAlt Range, xticks, yticks, yticksAlt []Tick) { + if !c.XAxis.Style.Hidden { + c.XAxis.Render(r, canvasBox, xrange, c.styleDefaultsAxes(), xticks) + } + if !c.YAxis.Style.Hidden { + c.YAxis.Render(r, canvasBox, yrange, c.styleDefaultsAxes(), yticks) + } + if !c.YAxisSecondary.Style.Hidden { + c.YAxisSecondary.Render(r, canvasBox, yrangeAlt, c.styleDefaultsAxes(), yticksAlt) + } +} + +func (c Chart) drawSeries(r Renderer, canvasBox Box, xrange, yrange, yrangeAlt Range, s Series, seriesIndex int) { + if !s.GetStyle().Hidden { + if s.GetYAxis() == YAxisPrimary { + s.Render(r, canvasBox, xrange, yrange, c.styleDefaultsSeries(seriesIndex)) + } else if s.GetYAxis() == YAxisSecondary { + s.Render(r, canvasBox, xrange, yrangeAlt, c.styleDefaultsSeries(seriesIndex)) + } + } +} + +func (c Chart) drawTitle(r Renderer) { + if len(c.Title) > 0 && !c.TitleStyle.Hidden { + r.SetFont(c.TitleStyle.GetFont(c.GetFont())) + r.SetFontColor(c.TitleStyle.GetFontColor(c.GetColorPalette().TextColor())) + titleFontSize := c.TitleStyle.GetFontSize(DefaultTitleFontSize) + r.SetFontSize(titleFontSize) + + textBox := r.MeasureText(c.Title) + + textWidth := textBox.Width() + textHeight := textBox.Height() + + titleX := (c.GetWidth() >> 1) - (textWidth >> 1) + titleY := c.TitleStyle.Padding.GetTop(DefaultTitleTop) + textHeight + + r.Text(c.Title, titleX, titleY) + } +} + +func (c Chart) styleDefaultsBackground() Style { + return Style{ + FillColor: c.GetColorPalette().BackgroundColor(), + StrokeColor: c.GetColorPalette().BackgroundStrokeColor(), + StrokeWidth: DefaultBackgroundStrokeWidth, + } +} + +func (c Chart) styleDefaultsCanvas() Style { + return Style{ + FillColor: c.GetColorPalette().CanvasColor(), + StrokeColor: c.GetColorPalette().CanvasStrokeColor(), + StrokeWidth: DefaultCanvasStrokeWidth, + } +} + +func (c Chart) styleDefaultsSeries(seriesIndex int) Style { + return Style{ + DotColor: c.GetColorPalette().GetSeriesColor(seriesIndex), + StrokeColor: c.GetColorPalette().GetSeriesColor(seriesIndex), + StrokeWidth: DefaultSeriesLineWidth, + Font: c.GetFont(), + FontSize: DefaultFontSize, + } +} + +func (c Chart) styleDefaultsAxes() Style { + return Style{ + Font: c.GetFont(), + FontColor: c.GetColorPalette().TextColor(), + FontSize: DefaultAxisFontSize, + StrokeColor: c.GetColorPalette().AxisStrokeColor(), + StrokeWidth: DefaultAxisLineWidth, + } +} + +func (c Chart) styleDefaultsElements() Style { + return Style{ + Font: c.GetFont(), + } +} + +// GetColorPalette returns the color palette for the chart. +func (c Chart) GetColorPalette() ColorPalette { + if c.ColorPalette != nil { + return c.ColorPalette + } + return DefaultColorPalette +} + +// Box returns the chart bounds as a box. +func (c Chart) Box() Box { + dpr := c.Background.Padding.GetRight(DefaultBackgroundPadding.Right) + dpb := c.Background.Padding.GetBottom(DefaultBackgroundPadding.Bottom) + + return Box{ + Top: c.Background.Padding.GetTop(DefaultBackgroundPadding.Top), + Left: c.Background.Padding.GetLeft(DefaultBackgroundPadding.Left), + Right: c.GetWidth() - dpr, + Bottom: c.GetHeight() - dpb, + } +} diff --git a/vendor/github.com/wcharczuk/go-chart/v2/colors.go b/vendor/github.com/wcharczuk/go-chart/v2/colors.go new file mode 100644 index 00000000..b51f9ea5 --- /dev/null +++ b/vendor/github.com/wcharczuk/go-chart/v2/colors.go @@ -0,0 +1,184 @@ +package chart + +import "github.com/wcharczuk/go-chart/v2/drawing" + +var ( + // ColorWhite is white. + ColorWhite = drawing.Color{R: 255, G: 255, B: 255, A: 255} + // ColorBlue is the basic theme blue color. + ColorBlue = drawing.Color{R: 0, G: 116, B: 217, A: 255} + // ColorCyan is the basic theme cyan color. + ColorCyan = drawing.Color{R: 0, G: 217, B: 210, A: 255} + // ColorGreen is the basic theme green color. + ColorGreen = drawing.Color{R: 0, G: 217, B: 101, A: 255} + // ColorRed is the basic theme red color. + ColorRed = drawing.Color{R: 217, G: 0, B: 116, A: 255} + // ColorOrange is the basic theme orange color. + ColorOrange = drawing.Color{R: 217, G: 101, B: 0, A: 255} + // ColorYellow is the basic theme yellow color. + ColorYellow = drawing.Color{R: 217, G: 210, B: 0, A: 255} + // ColorBlack is the basic theme black color. + ColorBlack = drawing.Color{R: 51, G: 51, B: 51, A: 255} + // ColorLightGray is the basic theme light gray color. + ColorLightGray = drawing.Color{R: 239, G: 239, B: 239, A: 255} + + // ColorAlternateBlue is a alternate theme color. + ColorAlternateBlue = drawing.Color{R: 106, G: 195, B: 203, A: 255} + // ColorAlternateGreen is a alternate theme color. + ColorAlternateGreen = drawing.Color{R: 42, G: 190, B: 137, A: 255} + // ColorAlternateGray is a alternate theme color. + ColorAlternateGray = drawing.Color{R: 110, G: 128, B: 139, A: 255} + // ColorAlternateYellow is a alternate theme color. + ColorAlternateYellow = drawing.Color{R: 240, G: 174, B: 90, A: 255} + // ColorAlternateLightGray is a alternate theme color. + ColorAlternateLightGray = drawing.Color{R: 187, G: 190, B: 191, A: 255} + + // ColorTransparent is a transparent (alpha zero) color. + ColorTransparent = drawing.Color{R: 1, G: 1, B: 1, A: 0} +) + +var ( + // DefaultBackgroundColor is the default chart background color. + // It is equivalent to css color:white. + DefaultBackgroundColor = ColorWhite + // DefaultBackgroundStrokeColor is the default chart border color. + // It is equivalent to color:white. + DefaultBackgroundStrokeColor = ColorWhite + // DefaultCanvasColor is the default chart canvas color. + // It is equivalent to css color:white. + DefaultCanvasColor = ColorWhite + // DefaultCanvasStrokeColor is the default chart canvas stroke color. + // It is equivalent to css color:white. + DefaultCanvasStrokeColor = ColorWhite + // DefaultTextColor is the default chart text color. + // It is equivalent to #333333. + DefaultTextColor = ColorBlack + // DefaultAxisColor is the default chart axis line color. + // It is equivalent to #333333. + DefaultAxisColor = ColorBlack + // DefaultStrokeColor is the default chart border color. + // It is equivalent to #efefef. + DefaultStrokeColor = ColorLightGray + // DefaultFillColor is the default fill color. + // It is equivalent to #0074d9. + DefaultFillColor = ColorBlue + // DefaultAnnotationFillColor is the default annotation background color. + DefaultAnnotationFillColor = ColorWhite + // DefaultGridLineColor is the default grid line color. + DefaultGridLineColor = ColorLightGray +) + +var ( + // DefaultColors are a couple default series colors. + DefaultColors = []drawing.Color{ + ColorBlue, + ColorGreen, + ColorRed, + ColorCyan, + ColorOrange, + } + + // DefaultAlternateColors are a couple alternate colors. + DefaultAlternateColors = []drawing.Color{ + ColorAlternateBlue, + ColorAlternateGreen, + ColorAlternateGray, + ColorAlternateYellow, + ColorBlue, + ColorGreen, + ColorRed, + ColorCyan, + ColorOrange, + } +) + +// GetDefaultColor returns a color from the default list by index. +// NOTE: the index will wrap around (using a modulo). +func GetDefaultColor(index int) drawing.Color { + finalIndex := index % len(DefaultColors) + return DefaultColors[finalIndex] +} + +// GetAlternateColor returns a color from the default list by index. +// NOTE: the index will wrap around (using a modulo). +func GetAlternateColor(index int) drawing.Color { + finalIndex := index % len(DefaultAlternateColors) + return DefaultAlternateColors[finalIndex] +} + +// ColorPalette is a set of colors that. +type ColorPalette interface { + BackgroundColor() drawing.Color + BackgroundStrokeColor() drawing.Color + CanvasColor() drawing.Color + CanvasStrokeColor() drawing.Color + AxisStrokeColor() drawing.Color + TextColor() drawing.Color + GetSeriesColor(index int) drawing.Color +} + +// DefaultColorPalette represents the default palatte. +var DefaultColorPalette defaultColorPalette + +type defaultColorPalette struct{} + +func (dp defaultColorPalette) BackgroundColor() drawing.Color { + return DefaultBackgroundColor +} + +func (dp defaultColorPalette) BackgroundStrokeColor() drawing.Color { + return DefaultBackgroundStrokeColor +} + +func (dp defaultColorPalette) CanvasColor() drawing.Color { + return DefaultCanvasColor +} + +func (dp defaultColorPalette) CanvasStrokeColor() drawing.Color { + return DefaultCanvasStrokeColor +} + +func (dp defaultColorPalette) AxisStrokeColor() drawing.Color { + return DefaultAxisColor +} + +func (dp defaultColorPalette) TextColor() drawing.Color { + return DefaultTextColor +} + +func (dp defaultColorPalette) GetSeriesColor(index int) drawing.Color { + return GetDefaultColor(index) +} + +// AlternateColorPalette represents the default palatte. +var AlternateColorPalette alternateColorPalette + +type alternateColorPalette struct{} + +func (ap alternateColorPalette) BackgroundColor() drawing.Color { + return DefaultBackgroundColor +} + +func (ap alternateColorPalette) BackgroundStrokeColor() drawing.Color { + return DefaultBackgroundStrokeColor +} + +func (ap alternateColorPalette) CanvasColor() drawing.Color { + return DefaultCanvasColor +} + +func (ap alternateColorPalette) CanvasStrokeColor() drawing.Color { + return DefaultCanvasStrokeColor +} + +func (ap alternateColorPalette) AxisStrokeColor() drawing.Color { + return DefaultAxisColor +} + +func (ap alternateColorPalette) TextColor() drawing.Color { + return DefaultTextColor +} + +func (ap alternateColorPalette) GetSeriesColor(index int) drawing.Color { + return GetAlternateColor(index) +} diff --git a/vendor/github.com/wcharczuk/go-chart/v2/concat_series.go b/vendor/github.com/wcharczuk/go-chart/v2/concat_series.go new file mode 100644 index 00000000..edec7e5d --- /dev/null +++ b/vendor/github.com/wcharczuk/go-chart/v2/concat_series.go @@ -0,0 +1,44 @@ +package chart + +// ConcatSeries is a special type of series that concatenates its `InnerSeries`. +type ConcatSeries []Series + +// Len returns the length of the concatenated set of series. +func (cs ConcatSeries) Len() int { + total := 0 + for _, s := range cs { + if typed, isValuesProvider := s.(ValuesProvider); isValuesProvider { + total += typed.Len() + } + } + + return total +} + +// GetValue returns the value at the (meta) index (i.e 0 => totalLen-1) +func (cs ConcatSeries) GetValue(index int) (x, y float64) { + cursor := 0 + for _, s := range cs { + if typed, isValuesProvider := s.(ValuesProvider); isValuesProvider { + len := typed.Len() + if index < cursor+len { + x, y = typed.GetValues(index - cursor) //FENCEPOSTS. + return + } + cursor += typed.Len() + } + } + return +} + +// Validate validates the series. +func (cs ConcatSeries) Validate() error { + var err error + for _, s := range cs { + err = s.Validate() + if err != nil { + return err + } + } + return nil +} diff --git a/vendor/github.com/wcharczuk/go-chart/v2/continuous_range.go b/vendor/github.com/wcharczuk/go-chart/v2/continuous_range.go new file mode 100644 index 00000000..517b7277 --- /dev/null +++ b/vendor/github.com/wcharczuk/go-chart/v2/continuous_range.go @@ -0,0 +1,81 @@ +package chart + +import ( + "fmt" + "math" +) + +// ContinuousRange represents a boundary for a set of numbers. +type ContinuousRange struct { + Min float64 + Max float64 + Domain int + Descending bool +} + +// IsDescending returns if the range is descending. +func (r ContinuousRange) IsDescending() bool { + return r.Descending +} + +// IsZero returns if the ContinuousRange has been set or not. +func (r ContinuousRange) IsZero() bool { + return (r.Min == 0 || math.IsNaN(r.Min)) && + (r.Max == 0 || math.IsNaN(r.Max)) && + r.Domain == 0 +} + +// GetMin gets the min value for the continuous range. +func (r ContinuousRange) GetMin() float64 { + return r.Min +} + +// SetMin sets the min value for the continuous range. +func (r *ContinuousRange) SetMin(min float64) { + r.Min = min +} + +// GetMax returns the max value for the continuous range. +func (r ContinuousRange) GetMax() float64 { + return r.Max +} + +// SetMax sets the max value for the continuous range. +func (r *ContinuousRange) SetMax(max float64) { + r.Max = max +} + +// GetDelta returns the difference between the min and max value. +func (r ContinuousRange) GetDelta() float64 { + return r.Max - r.Min +} + +// GetDomain returns the range domain. +func (r ContinuousRange) GetDomain() int { + return r.Domain +} + +// SetDomain sets the range domain. +func (r *ContinuousRange) SetDomain(domain int) { + r.Domain = domain +} + +// String returns a simple string for the ContinuousRange. +func (r ContinuousRange) String() string { + if r.GetDelta() == 0 { + return "ContinuousRange [empty]" + } + return fmt.Sprintf("ContinuousRange [%.2f,%.2f] => %d", r.Min, r.Max, r.Domain) +} + +// Translate maps a given value into the ContinuousRange space. +func (r ContinuousRange) Translate(value float64) int { + normalized := value - r.Min + ratio := normalized / r.GetDelta() + + if r.IsDescending() { + return r.Domain - int(math.Ceil(ratio*float64(r.Domain))) + } + + return int(math.Ceil(ratio * float64(r.Domain))) +} diff --git a/vendor/github.com/wcharczuk/go-chart/v2/continuous_series.go b/vendor/github.com/wcharczuk/go-chart/v2/continuous_series.go new file mode 100644 index 00000000..73c7ab78 --- /dev/null +++ b/vendor/github.com/wcharczuk/go-chart/v2/continuous_series.go @@ -0,0 +1,96 @@ +package chart + +import "fmt" + +// Interface Assertions. +var ( + _ Series = (*ContinuousSeries)(nil) + _ FirstValuesProvider = (*ContinuousSeries)(nil) + _ LastValuesProvider = (*ContinuousSeries)(nil) +) + +// ContinuousSeries represents a line on a chart. +type ContinuousSeries struct { + Name string + Style Style + + YAxis YAxisType + + XValueFormatter ValueFormatter + YValueFormatter ValueFormatter + + XValues []float64 + YValues []float64 +} + +// GetName returns the name of the time series. +func (cs ContinuousSeries) GetName() string { + return cs.Name +} + +// GetStyle returns the line style. +func (cs ContinuousSeries) GetStyle() Style { + return cs.Style +} + +// Len returns the number of elements in the series. +func (cs ContinuousSeries) Len() int { + return len(cs.XValues) +} + +// GetValues gets the x,y values at a given index. +func (cs ContinuousSeries) GetValues(index int) (float64, float64) { + return cs.XValues[index], cs.YValues[index] +} + +// GetFirstValues gets the first x,y values. +func (cs ContinuousSeries) GetFirstValues() (float64, float64) { + return cs.XValues[0], cs.YValues[0] +} + +// GetLastValues gets the last x,y values. +func (cs ContinuousSeries) GetLastValues() (float64, float64) { + return cs.XValues[len(cs.XValues)-1], cs.YValues[len(cs.YValues)-1] +} + +// GetValueFormatters returns value formatter defaults for the series. +func (cs ContinuousSeries) GetValueFormatters() (x, y ValueFormatter) { + if cs.XValueFormatter != nil { + x = cs.XValueFormatter + } else { + x = FloatValueFormatter + } + if cs.YValueFormatter != nil { + y = cs.YValueFormatter + } else { + y = FloatValueFormatter + } + return +} + +// GetYAxis returns which YAxis the series draws on. +func (cs ContinuousSeries) GetYAxis() YAxisType { + return cs.YAxis +} + +// Render renders the series. +func (cs ContinuousSeries) Render(r Renderer, canvasBox Box, xrange, yrange Range, defaults Style) { + style := cs.Style.InheritFrom(defaults) + Draw.LineSeries(r, canvasBox, xrange, yrange, style, cs) +} + +// Validate validates the series. +func (cs ContinuousSeries) Validate() error { + if len(cs.XValues) == 0 { + return fmt.Errorf("continuous series; must have xvalues set") + } + + if len(cs.YValues) == 0 { + return fmt.Errorf("continuous series; must have yvalues set") + } + + if len(cs.XValues) != len(cs.YValues) { + return fmt.Errorf("continuous series; must have same length xvalues as yvalues") + } + return nil +} diff --git a/vendor/github.com/wcharczuk/go-chart/v2/defaults.go b/vendor/github.com/wcharczuk/go-chart/v2/defaults.go new file mode 100644 index 00000000..d74330fd --- /dev/null +++ b/vendor/github.com/wcharczuk/go-chart/v2/defaults.go @@ -0,0 +1,103 @@ +package chart + +const ( + // DefaultChartHeight is the default chart height. + DefaultChartHeight = 400 + // DefaultChartWidth is the default chart width. + DefaultChartWidth = 1024 + // DefaultStrokeWidth is the default chart stroke width. + DefaultStrokeWidth = 0.0 + // DefaultDotWidth is the default chart dot width. + DefaultDotWidth = 0.0 + // DefaultSeriesLineWidth is the default line width. + DefaultSeriesLineWidth = 1.0 + // DefaultAxisLineWidth is the line width of the axis lines. + DefaultAxisLineWidth = 1.0 + //DefaultDPI is the default dots per inch for the chart. + DefaultDPI = 92.0 + // DefaultMinimumFontSize is the default minimum font size. + DefaultMinimumFontSize = 8.0 + // DefaultFontSize is the default font size. + DefaultFontSize = 10.0 + // DefaultTitleFontSize is the default title font size. + DefaultTitleFontSize = 18.0 + // DefaultAnnotationDeltaWidth is the width of the left triangle out of annotations. + DefaultAnnotationDeltaWidth = 10 + // DefaultAnnotationFontSize is the font size of annotations. + DefaultAnnotationFontSize = 10.0 + // DefaultAxisFontSize is the font size of the axis labels. + DefaultAxisFontSize = 10.0 + // DefaultTitleTop is the default distance from the top of the chart to put the title. + DefaultTitleTop = 10 + + // DefaultBackgroundStrokeWidth is the default stroke on the chart background. + DefaultBackgroundStrokeWidth = 0.0 + // DefaultCanvasStrokeWidth is the default stroke on the chart canvas. + DefaultCanvasStrokeWidth = 0.0 + + // DefaultLineSpacing is the default vertical distance between lines of text. + DefaultLineSpacing = 5 + + // DefaultYAxisMargin is the default distance from the right of the canvas to the y axis labels. + DefaultYAxisMargin = 10 + // DefaultXAxisMargin is the default distance from bottom of the canvas to the x axis labels. + DefaultXAxisMargin = 10 + + //DefaultVerticalTickHeight is half the margin. + DefaultVerticalTickHeight = DefaultXAxisMargin >> 1 + //DefaultHorizontalTickWidth is half the margin. + DefaultHorizontalTickWidth = DefaultYAxisMargin >> 1 + + // DefaultTickCount is the default number of ticks to show + DefaultTickCount = 10 + // DefaultTickCountSanityCheck is a hard limit on number of ticks to prevent infinite loops. + DefaultTickCountSanityCheck = 1 << 10 //1024 + + // DefaultMinimumTickHorizontalSpacing is the minimum distance between horizontal ticks. + DefaultMinimumTickHorizontalSpacing = 20 + // DefaultMinimumTickVerticalSpacing is the minimum distance between vertical ticks. + DefaultMinimumTickVerticalSpacing = 20 + + // DefaultDateFormat is the default date format. + DefaultDateFormat = "2006-01-02" + // DefaultDateHourFormat is the date format for hour timestamp formats. + DefaultDateHourFormat = "01-02 3PM" + // DefaultDateMinuteFormat is the date format for minute range timestamp formats. + DefaultDateMinuteFormat = "01-02 3:04PM" + // DefaultFloatFormat is the default float format. + DefaultFloatFormat = "%.2f" + // DefaultPercentValueFormat is the default percent format. + DefaultPercentValueFormat = "%0.2f%%" + + // DefaultBarSpacing is the default pixel spacing between bars. + DefaultBarSpacing = 100 + // DefaultBarWidth is the default pixel width of bars in a bar chart. + DefaultBarWidth = 50 +) + +var ( + // DashArrayDots is a dash array that represents '....' style stroke dashes. + DashArrayDots = []int{1, 1} + // DashArrayDashesSmall is a dash array that represents '- - -' style stroke dashes. + DashArrayDashesSmall = []int{3, 3} + // DashArrayDashesMedium is a dash array that represents '-- -- --' style stroke dashes. + DashArrayDashesMedium = []int{5, 5} + // DashArrayDashesLarge is a dash array that represents '----- ----- -----' style stroke dashes. + DashArrayDashesLarge = []int{10, 10} +) + +var ( + // DefaultAnnotationPadding is the padding around an annotation. + DefaultAnnotationPadding = Box{Top: 5, Left: 5, Right: 5, Bottom: 5} + + // DefaultBackgroundPadding is the default canvas padding config. + DefaultBackgroundPadding = Box{Top: 5, Left: 5, Right: 5, Bottom: 5} +) + +const ( + // ContentTypePNG is the png mime type. + ContentTypePNG = "image/png" + + // ContentTypeSVG is the svg mime type. + ContentTypeSVG = "image/svg+xml" +) diff --git a/vendor/github.com/wcharczuk/go-chart/v2/donut_chart.go b/vendor/github.com/wcharczuk/go-chart/v2/donut_chart.go new file mode 100644 index 00000000..f5a7854b --- /dev/null +++ b/vendor/github.com/wcharczuk/go-chart/v2/donut_chart.go @@ -0,0 +1,315 @@ +package chart + +import ( + "errors" + "fmt" + "io" + + "github.com/golang/freetype/truetype" +) + +// DonutChart is a chart that draws sections of a circle based on percentages with an hole. +type DonutChart struct { + Title string + TitleStyle Style + + ColorPalette ColorPalette + + Width int + Height int + DPI float64 + + Background Style + Canvas Style + SliceStyle Style + + Font *truetype.Font + defaultFont *truetype.Font + + Values []Value + Elements []Renderable +} + +// GetDPI returns the dpi for the chart. +func (pc DonutChart) GetDPI(defaults ...float64) float64 { + if pc.DPI == 0 { + if len(defaults) > 0 { + return defaults[0] + } + return DefaultDPI + } + return pc.DPI +} + +// GetFont returns the text font. +func (pc DonutChart) GetFont() *truetype.Font { + if pc.Font == nil { + return pc.defaultFont + } + return pc.Font +} + +// GetWidth returns the chart width or the default value. +func (pc DonutChart) GetWidth() int { + if pc.Width == 0 { + return DefaultChartWidth + } + return pc.Width +} + +// GetHeight returns the chart height or the default value. +func (pc DonutChart) GetHeight() int { + if pc.Height == 0 { + return DefaultChartWidth + } + return pc.Height +} + +// Render renders the chart with the given renderer to the given io.Writer. +func (pc DonutChart) Render(rp RendererProvider, w io.Writer) error { + if len(pc.Values) == 0 { + return errors.New("please provide at least one value") + } + + r, err := rp(pc.GetWidth(), pc.GetHeight()) + if err != nil { + return err + } + + if pc.Font == nil { + defaultFont, err := GetDefaultFont() + if err != nil { + return err + } + pc.defaultFont = defaultFont + } + r.SetDPI(pc.GetDPI(DefaultDPI)) + + canvasBox := pc.getDefaultCanvasBox() + canvasBox = pc.getCircleAdjustedCanvasBox(canvasBox) + + pc.drawBackground(r) + pc.drawCanvas(r, canvasBox) + + finalValues, err := pc.finalizeValues(pc.Values) + if err != nil { + return err + } + pc.drawSlices(r, canvasBox, finalValues) + pc.drawTitle(r) + for _, a := range pc.Elements { + a(r, canvasBox, pc.styleDefaultsElements()) + } + + return r.Save(w) +} + +func (pc DonutChart) drawBackground(r Renderer) { + Draw.Box(r, Box{ + Right: pc.GetWidth(), + Bottom: pc.GetHeight(), + }, pc.getBackgroundStyle()) +} + +func (pc DonutChart) drawCanvas(r Renderer, canvasBox Box) { + Draw.Box(r, canvasBox, pc.getCanvasStyle()) +} + +func (pc DonutChart) drawTitle(r Renderer) { + if len(pc.Title) > 0 && !pc.TitleStyle.Hidden { + Draw.TextWithin(r, pc.Title, pc.Box(), pc.styleDefaultsTitle()) + } +} + +func (pc DonutChart) drawSlices(r Renderer, canvasBox Box, values []Value) { + cx, cy := canvasBox.Center() + diameter := MinInt(canvasBox.Width(), canvasBox.Height()) + radius := float64(diameter>>1) / 1.1 + labelRadius := (radius * 2.83) / 3.0 + + // draw the donut slices + var rads, delta, delta2, total float64 + var lx, ly int + + if len(values) == 1 { + pc.styleDonutChartValue(0).WriteToRenderer(r) + r.MoveTo(cx, cy) + r.Circle(radius, cx, cy) + } else { + for index, v := range values { + v.Style.InheritFrom(pc.styleDonutChartValue(index)).WriteToRenderer(r) + r.MoveTo(cx, cy) + rads = PercentToRadians(total) + delta = PercentToRadians(v.Value) + + r.ArcTo(cx, cy, (radius / 1.25), (radius / 1.25), rads, delta) + + r.LineTo(cx, cy) + r.Close() + r.FillStroke() + total = total + v.Value + } + } + + //making the donut hole + v := Value{Value: 100, Label: "center"} + styletemp := pc.SliceStyle.InheritFrom(Style{ + StrokeColor: ColorWhite, StrokeWidth: 4.0, FillColor: ColorWhite, FontColor: ColorWhite, //Font: pc.GetFont(),//FontSize: pc.getScaledFontSize(), + }) + v.Style.InheritFrom(styletemp).WriteToRenderer(r) + r.MoveTo(cx, cy) + r.ArcTo(cx, cy, (radius / 3.5), (radius / 3.5), DegreesToRadians(0), DegreesToRadians(359)) + r.LineTo(cx, cy) + r.Close() + r.FillStroke() + + // draw the labels + total = 0 + for index, v := range values { + v.Style.InheritFrom(pc.styleDonutChartValue(index)).WriteToRenderer(r) + if len(v.Label) > 0 { + delta2 = PercentToRadians(total + (v.Value / 2.0)) + delta2 = RadianAdd(delta2, _pi2) + lx, ly = CirclePoint(cx, cy, labelRadius, delta2) + + tb := r.MeasureText(v.Label) + lx = lx - (tb.Width() >> 1) + ly = ly + (tb.Height() >> 1) + + r.Text(v.Label, lx, ly) + } + total = total + v.Value + } +} + +func (pc DonutChart) finalizeValues(values []Value) ([]Value, error) { + finalValues := Values(values).Normalize() + if len(finalValues) == 0 { + return nil, fmt.Errorf("donut chart must contain at least (1) non-zero value") + } + return finalValues, nil +} + +func (pc DonutChart) getDefaultCanvasBox() Box { + return pc.Box() +} + +func (pc DonutChart) getCircleAdjustedCanvasBox(canvasBox Box) Box { + circleDiameter := MinInt(canvasBox.Width(), canvasBox.Height()) + + square := Box{ + Right: circleDiameter, + Bottom: circleDiameter, + } + + return canvasBox.Fit(square) +} + +func (pc DonutChart) getBackgroundStyle() Style { + return pc.Background.InheritFrom(pc.styleDefaultsBackground()) +} + +func (pc DonutChart) getCanvasStyle() Style { + return pc.Canvas.InheritFrom(pc.styleDefaultsCanvas()) +} + +func (pc DonutChart) styleDefaultsCanvas() Style { + return Style{ + FillColor: pc.GetColorPalette().CanvasColor(), + StrokeColor: pc.GetColorPalette().CanvasStrokeColor(), + StrokeWidth: DefaultStrokeWidth, + } +} + +func (pc DonutChart) styleDefaultsDonutChartValue() Style { + return Style{ + StrokeColor: pc.GetColorPalette().TextColor(), + StrokeWidth: 4.0, + FillColor: pc.GetColorPalette().TextColor(), + } +} + +func (pc DonutChart) styleDonutChartValue(index int) Style { + return pc.SliceStyle.InheritFrom(Style{ + StrokeColor: ColorWhite, + StrokeWidth: 4.0, + FillColor: pc.GetColorPalette().GetSeriesColor(index), + FontSize: pc.getScaledFontSize(), + FontColor: pc.GetColorPalette().TextColor(), + Font: pc.GetFont(), + }) +} + +func (pc DonutChart) getScaledFontSize() float64 { + effectiveDimension := MinInt(pc.GetWidth(), pc.GetHeight()) + if effectiveDimension >= 2048 { + return 48.0 + } else if effectiveDimension >= 1024 { + return 24.0 + } else if effectiveDimension > 512 { + return 18.0 + } else if effectiveDimension > 256 { + return 12.0 + } + return 10.0 +} + +func (pc DonutChart) styleDefaultsBackground() Style { + return Style{ + FillColor: pc.GetColorPalette().BackgroundColor(), + StrokeColor: pc.GetColorPalette().BackgroundStrokeColor(), + StrokeWidth: DefaultStrokeWidth, + } +} + +func (pc DonutChart) styleDefaultsElements() Style { + return Style{ + Font: pc.GetFont(), + } +} + +func (pc DonutChart) styleDefaultsTitle() Style { + return pc.TitleStyle.InheritFrom(Style{ + FontColor: pc.GetColorPalette().TextColor(), + Font: pc.GetFont(), + FontSize: pc.getTitleFontSize(), + TextHorizontalAlign: TextHorizontalAlignCenter, + TextVerticalAlign: TextVerticalAlignTop, + TextWrap: TextWrapWord, + }) +} + +func (pc DonutChart) getTitleFontSize() float64 { + effectiveDimension := MinInt(pc.GetWidth(), pc.GetHeight()) + if effectiveDimension >= 2048 { + return 48 + } else if effectiveDimension >= 1024 { + return 24 + } else if effectiveDimension >= 512 { + return 18 + } else if effectiveDimension >= 256 { + return 12 + } + return 10 +} + +// GetColorPalette returns the color palette for the chart. +func (pc DonutChart) GetColorPalette() ColorPalette { + if pc.ColorPalette != nil { + return pc.ColorPalette + } + return AlternateColorPalette +} + +// Box returns the chart bounds as a box. +func (pc DonutChart) Box() Box { + dpr := pc.Background.Padding.GetRight(DefaultBackgroundPadding.Right) + dpb := pc.Background.Padding.GetBottom(DefaultBackgroundPadding.Bottom) + + return Box{ + Top: pc.Background.Padding.GetTop(DefaultBackgroundPadding.Top), + Left: pc.Background.Padding.GetLeft(DefaultBackgroundPadding.Left), + Right: pc.GetWidth() - dpr, + Bottom: pc.GetHeight() - dpb, + } +} diff --git a/vendor/github.com/wcharczuk/go-chart/v2/draw.go b/vendor/github.com/wcharczuk/go-chart/v2/draw.go new file mode 100644 index 00000000..e1880792 --- /dev/null +++ b/vendor/github.com/wcharczuk/go-chart/v2/draw.go @@ -0,0 +1,325 @@ +package chart + +import ( + "math" +) + +var ( + // Draw contains helpers for drawing common objects. + Draw = &draw{} +) + +type draw struct{} + +// LineSeries draws a line series with a renderer. +func (d draw) LineSeries(r Renderer, canvasBox Box, xrange, yrange Range, style Style, vs ValuesProvider) { + if vs.Len() == 0 { + return + } + + cb := canvasBox.Bottom + cl := canvasBox.Left + + v0x, v0y := vs.GetValues(0) + x0 := cl + xrange.Translate(v0x) + y0 := cb - yrange.Translate(v0y) + + yv0 := yrange.Translate(0) + + var vx, vy float64 + var x, y int + + if style.ShouldDrawStroke() && style.ShouldDrawFill() { + style.GetFillOptions().WriteDrawingOptionsToRenderer(r) + r.MoveTo(x0, y0) + for i := 1; i < vs.Len(); i++ { + vx, vy = vs.GetValues(i) + x = cl + xrange.Translate(vx) + y = cb - yrange.Translate(vy) + r.LineTo(x, y) + } + r.LineTo(x, MinInt(cb, cb-yv0)) + r.LineTo(x0, MinInt(cb, cb-yv0)) + r.LineTo(x0, y0) + r.Fill() + } + + if style.ShouldDrawStroke() { + style.GetStrokeOptions().WriteDrawingOptionsToRenderer(r) + + r.MoveTo(x0, y0) + for i := 1; i < vs.Len(); i++ { + vx, vy = vs.GetValues(i) + x = cl + xrange.Translate(vx) + y = cb - yrange.Translate(vy) + r.LineTo(x, y) + } + r.Stroke() + } + + if style.ShouldDrawDot() { + defaultDotWidth := style.GetDotWidth() + + style.GetDotOptions().WriteDrawingOptionsToRenderer(r) + for i := 0; i < vs.Len(); i++ { + vx, vy = vs.GetValues(i) + x = cl + xrange.Translate(vx) + y = cb - yrange.Translate(vy) + + dotWidth := defaultDotWidth + if style.DotWidthProvider != nil { + dotWidth = style.DotWidthProvider(xrange, yrange, i, vx, vy) + } + + if style.DotColorProvider != nil { + dotColor := style.DotColorProvider(xrange, yrange, i, vx, vy) + + r.SetFillColor(dotColor) + r.SetStrokeColor(dotColor) + } + + r.Circle(dotWidth, x, y) + r.FillStroke() + } + } +} + +// BoundedSeries draws a series that implements BoundedValuesProvider. +func (d draw) BoundedSeries(r Renderer, canvasBox Box, xrange, yrange Range, style Style, bbs BoundedValuesProvider, drawOffsetIndexes ...int) { + drawOffsetIndex := 0 + if len(drawOffsetIndexes) > 0 { + drawOffsetIndex = drawOffsetIndexes[0] + } + + cb := canvasBox.Bottom + cl := canvasBox.Left + + v0x, v0y1, v0y2 := bbs.GetBoundedValues(0) + x0 := cl + xrange.Translate(v0x) + y0 := cb - yrange.Translate(v0y1) + + var vx, vy1, vy2 float64 + var x, y int + + xvalues := make([]float64, bbs.Len()) + xvalues[0] = v0x + y2values := make([]float64, bbs.Len()) + y2values[0] = v0y2 + + style.GetFillAndStrokeOptions().WriteToRenderer(r) + r.MoveTo(x0, y0) + for i := 1; i < bbs.Len(); i++ { + vx, vy1, vy2 = bbs.GetBoundedValues(i) + + xvalues[i] = vx + y2values[i] = vy2 + + x = cl + xrange.Translate(vx) + y = cb - yrange.Translate(vy1) + if i > drawOffsetIndex { + r.LineTo(x, y) + } else { + r.MoveTo(x, y) + } + } + y = cb - yrange.Translate(vy2) + r.LineTo(x, y) + for i := bbs.Len() - 1; i >= drawOffsetIndex; i-- { + vx, vy2 = xvalues[i], y2values[i] + x = cl + xrange.Translate(vx) + y = cb - yrange.Translate(vy2) + r.LineTo(x, y) + } + r.Close() + r.FillStroke() +} + +// HistogramSeries draws a value provider as boxes from 0. +func (d draw) HistogramSeries(r Renderer, canvasBox Box, xrange, yrange Range, style Style, vs ValuesProvider, barWidths ...int) { + if vs.Len() == 0 { + return + } + + //calculate bar width? + seriesLength := vs.Len() + barWidth := int(math.Floor(float64(xrange.GetDomain()) / float64(seriesLength))) + if len(barWidths) > 0 { + barWidth = barWidths[0] + } + + cb := canvasBox.Bottom + cl := canvasBox.Left + + //foreach datapoint, draw a box. + for index := 0; index < seriesLength; index++ { + vx, vy := vs.GetValues(index) + y0 := yrange.Translate(0) + x := cl + xrange.Translate(vx) + y := yrange.Translate(vy) + + d.Box(r, Box{ + Top: cb - y0, + Left: x - (barWidth >> 1), + Right: x + (barWidth >> 1), + Bottom: cb - y, + }, style) + } +} + +// MeasureAnnotation measures how big an annotation would be. +func (d draw) MeasureAnnotation(r Renderer, canvasBox Box, style Style, lx, ly int, label string) Box { + style.WriteToRenderer(r) + defer r.ResetStyle() + + textBox := r.MeasureText(label) + textWidth := textBox.Width() + textHeight := textBox.Height() + halfTextHeight := textHeight >> 1 + + pt := style.Padding.GetTop(DefaultAnnotationPadding.Top) + pl := style.Padding.GetLeft(DefaultAnnotationPadding.Left) + pr := style.Padding.GetRight(DefaultAnnotationPadding.Right) + pb := style.Padding.GetBottom(DefaultAnnotationPadding.Bottom) + + strokeWidth := style.GetStrokeWidth() + + top := ly - (pt + halfTextHeight) + right := lx + pl + pr + textWidth + DefaultAnnotationDeltaWidth + int(strokeWidth) + bottom := ly + (pb + halfTextHeight) + + return Box{ + Top: top, + Left: lx, + Right: right, + Bottom: bottom, + } +} + +// Annotation draws an anotation with a renderer. +func (d draw) Annotation(r Renderer, canvasBox Box, style Style, lx, ly int, label string) { + style.GetTextOptions().WriteToRenderer(r) + defer r.ResetStyle() + + textBox := r.MeasureText(label) + textWidth := textBox.Width() + halfTextHeight := textBox.Height() >> 1 + + style.GetFillAndStrokeOptions().WriteToRenderer(r) + + pt := style.Padding.GetTop(DefaultAnnotationPadding.Top) + pl := style.Padding.GetLeft(DefaultAnnotationPadding.Left) + pr := style.Padding.GetRight(DefaultAnnotationPadding.Right) + pb := style.Padding.GetBottom(DefaultAnnotationPadding.Bottom) + + textX := lx + pl + DefaultAnnotationDeltaWidth + textY := ly + halfTextHeight + + ltx := lx + DefaultAnnotationDeltaWidth + lty := ly - (pt + halfTextHeight) + + rtx := lx + pl + pr + textWidth + DefaultAnnotationDeltaWidth + rty := ly - (pt + halfTextHeight) + + rbx := lx + pl + pr + textWidth + DefaultAnnotationDeltaWidth + rby := ly + (pb + halfTextHeight) + + lbx := lx + DefaultAnnotationDeltaWidth + lby := ly + (pb + halfTextHeight) + + r.MoveTo(lx, ly) + r.LineTo(ltx, lty) + r.LineTo(rtx, rty) + r.LineTo(rbx, rby) + r.LineTo(lbx, lby) + r.LineTo(lx, ly) + r.Close() + r.FillStroke() + + style.GetTextOptions().WriteToRenderer(r) + r.Text(label, textX, textY) +} + +// Box draws a box with a given style. +func (d draw) Box(r Renderer, b Box, s Style) { + s.GetFillAndStrokeOptions().WriteToRenderer(r) + defer r.ResetStyle() + + r.MoveTo(b.Left, b.Top) + r.LineTo(b.Right, b.Top) + r.LineTo(b.Right, b.Bottom) + r.LineTo(b.Left, b.Bottom) + r.LineTo(b.Left, b.Top) + r.FillStroke() +} + +func (d draw) BoxRotated(r Renderer, b Box, thetaDegrees float64, s Style) { + d.BoxCorners(r, b.Corners().Rotate(thetaDegrees), s) +} + +func (d draw) BoxCorners(r Renderer, bc BoxCorners, s Style) { + s.GetFillAndStrokeOptions().WriteToRenderer(r) + defer r.ResetStyle() + + r.MoveTo(bc.TopLeft.X, bc.TopLeft.Y) + r.LineTo(bc.TopRight.X, bc.TopRight.Y) + r.LineTo(bc.BottomRight.X, bc.BottomRight.Y) + r.LineTo(bc.BottomLeft.X, bc.BottomLeft.Y) + r.Close() + r.FillStroke() +} + +// DrawText draws text with a given style. +func (d draw) Text(r Renderer, text string, x, y int, style Style) { + style.GetTextOptions().WriteToRenderer(r) + defer r.ResetStyle() + + r.Text(text, x, y) +} + +func (d draw) MeasureText(r Renderer, text string, style Style) Box { + style.GetTextOptions().WriteToRenderer(r) + defer r.ResetStyle() + + return r.MeasureText(text) +} + +// TextWithin draws the text within a given box. +func (d draw) TextWithin(r Renderer, text string, box Box, style Style) { + style.GetTextOptions().WriteToRenderer(r) + defer r.ResetStyle() + + lines := Text.WrapFit(r, text, box.Width(), style) + linesBox := Text.MeasureLines(r, lines, style) + + y := box.Top + + switch style.GetTextVerticalAlign() { + case TextVerticalAlignBottom, TextVerticalAlignBaseline: // i have to build better baseline handling into measure text + y = y - linesBox.Height() + case TextVerticalAlignMiddle: + y = y + (box.Height() >> 1) - (linesBox.Height() >> 1) + case TextVerticalAlignMiddleBaseline: + y = y + (box.Height() >> 1) - linesBox.Height() + } + + var tx, ty int + for _, line := range lines { + lineBox := r.MeasureText(line) + switch style.GetTextHorizontalAlign() { + case TextHorizontalAlignCenter: + tx = box.Left + ((box.Width() - lineBox.Width()) >> 1) + case TextHorizontalAlignRight: + tx = box.Right - lineBox.Width() + default: + tx = box.Left + } + if style.TextRotationDegrees == 0 { + ty = y + lineBox.Height() + } else { + ty = y + } + + r.Text(line, tx, ty) + y += lineBox.Height() + style.GetTextLineSpacing() + } +} diff --git a/vendor/github.com/wcharczuk/go-chart/v2/drawing/README.md b/vendor/github.com/wcharczuk/go-chart/v2/drawing/README.md new file mode 100644 index 00000000..a97cb304 --- /dev/null +++ b/vendor/github.com/wcharczuk/go-chart/v2/drawing/README.md @@ -0,0 +1,5 @@ +go-chart > drawing +================== + +The bulk of the code in this package is based on [draw2d](https://github.com/llgcode/draw2d), but +with significant modifications to make the APIs more golang friendly and careful about units (points vs. pixels). \ No newline at end of file diff --git a/vendor/github.com/wcharczuk/go-chart/v2/drawing/color.go b/vendor/github.com/wcharczuk/go-chart/v2/drawing/color.go new file mode 100644 index 00000000..cfe09245 --- /dev/null +++ b/vendor/github.com/wcharczuk/go-chart/v2/drawing/color.go @@ -0,0 +1,126 @@ +package drawing + +import ( + "fmt" + "strconv" +) + +var ( + // ColorTransparent is a fully transparent color. + ColorTransparent = Color{} + + // ColorWhite is white. + ColorWhite = Color{R: 255, G: 255, B: 255, A: 255} + + // ColorBlack is black. + ColorBlack = Color{R: 0, G: 0, B: 0, A: 255} + + // ColorRed is red. + ColorRed = Color{R: 255, G: 0, B: 0, A: 255} + + // ColorGreen is green. + ColorGreen = Color{R: 0, G: 255, B: 0, A: 255} + + // ColorBlue is blue. + ColorBlue = Color{R: 0, G: 0, B: 255, A: 255} +) + +func parseHex(hex string) uint8 { + v, _ := strconv.ParseInt(hex, 16, 16) + return uint8(v) +} + +// ColorFromHex returns a color from a css hex code. +func ColorFromHex(hex string) Color { + var c Color + if len(hex) == 3 { + c.R = parseHex(string(hex[0])) * 0x11 + c.G = parseHex(string(hex[1])) * 0x11 + c.B = parseHex(string(hex[2])) * 0x11 + } else { + c.R = parseHex(string(hex[0:2])) + c.G = parseHex(string(hex[2:4])) + c.B = parseHex(string(hex[4:6])) + } + c.A = 255 + return c +} + +// ColorFromAlphaMixedRGBA returns the system alpha mixed rgba values. +func ColorFromAlphaMixedRGBA(r, g, b, a uint32) Color { + fa := float64(a) / 255.0 + var c Color + c.R = uint8(float64(r) / fa) + c.G = uint8(float64(g) / fa) + c.B = uint8(float64(b) / fa) + c.A = uint8(a | (a >> 8)) + return c +} + +// ColorChannelFromFloat returns a normalized byte from a given float value. +func ColorChannelFromFloat(v float64) uint8 { + return uint8(v * 255) +} + +// Color is our internal color type because color.Color is bullshit. +type Color struct { + R, G, B, A uint8 +} + +// RGBA returns the color as a pre-alpha mixed color set. +func (c Color) RGBA() (r, g, b, a uint32) { + fa := float64(c.A) / 255.0 + r = uint32(float64(uint32(c.R)) * fa) + r |= r << 8 + g = uint32(float64(uint32(c.G)) * fa) + g |= g << 8 + b = uint32(float64(uint32(c.B)) * fa) + b |= b << 8 + a = uint32(c.A) + a |= a << 8 + return +} + +// IsZero returns if the color has been set or not. +func (c Color) IsZero() bool { + return c.R == 0 && c.G == 0 && c.B == 0 && c.A == 0 +} + +// IsTransparent returns if the colors alpha channel is zero. +func (c Color) IsTransparent() bool { + return c.A == 0 +} + +// WithAlpha returns a copy of the color with a given alpha. +func (c Color) WithAlpha(a uint8) Color { + return Color{ + R: c.R, + G: c.G, + B: c.B, + A: a, + } +} + +// Equals returns true if the color equals another. +func (c Color) Equals(other Color) bool { + return c.R == other.R && + c.G == other.G && + c.B == other.B && + c.A == other.A +} + +// AverageWith averages two colors. +func (c Color) AverageWith(other Color) Color { + return Color{ + R: (c.R + other.R) >> 1, + G: (c.G + other.G) >> 1, + B: (c.B + other.B) >> 1, + A: c.A, + } +} + +// String returns a css string representation of the color. +func (c Color) String() string { + fa := float64(c.A) / float64(255) + return fmt.Sprintf("rgba(%v,%v,%v,%.1f)", c.R, c.G, c.B, fa) +} diff --git a/vendor/github.com/wcharczuk/go-chart/v2/drawing/constants.go b/vendor/github.com/wcharczuk/go-chart/v2/drawing/constants.go new file mode 100644 index 00000000..2fb154e9 --- /dev/null +++ b/vendor/github.com/wcharczuk/go-chart/v2/drawing/constants.go @@ -0,0 +1,6 @@ +package drawing + +const ( + // DefaultDPI is the default image DPI. + DefaultDPI = 96.0 +) diff --git a/vendor/github.com/wcharczuk/go-chart/v2/drawing/curve.go b/vendor/github.com/wcharczuk/go-chart/v2/drawing/curve.go new file mode 100644 index 00000000..c33efcca --- /dev/null +++ b/vendor/github.com/wcharczuk/go-chart/v2/drawing/curve.go @@ -0,0 +1,185 @@ +package drawing + +import "math" + +const ( + // CurveRecursionLimit represents the maximum recursion that is really necessary to subsivide a curve into straight lines + CurveRecursionLimit = 32 +) + +// Cubic +// x1, y1, cpx1, cpy1, cpx2, cpy2, x2, y2 float64 + +// SubdivideCubic a Bezier cubic curve in 2 equivalents Bezier cubic curves. +// c1 and c2 parameters are the resulting curves +func SubdivideCubic(c, c1, c2 []float64) { + // First point of c is the first point of c1 + c1[0], c1[1] = c[0], c[1] + // Last point of c is the last point of c2 + c2[6], c2[7] = c[6], c[7] + + // Subdivide segment using midpoints + c1[2] = (c[0] + c[2]) / 2 + c1[3] = (c[1] + c[3]) / 2 + + midX := (c[2] + c[4]) / 2 + midY := (c[3] + c[5]) / 2 + + c2[4] = (c[4] + c[6]) / 2 + c2[5] = (c[5] + c[7]) / 2 + + c1[4] = (c1[2] + midX) / 2 + c1[5] = (c1[3] + midY) / 2 + + c2[2] = (midX + c2[4]) / 2 + c2[3] = (midY + c2[5]) / 2 + + c1[6] = (c1[4] + c2[2]) / 2 + c1[7] = (c1[5] + c2[3]) / 2 + + // Last Point of c1 is equal to the first point of c2 + c2[0], c2[1] = c1[6], c1[7] +} + +// TraceCubic generate lines subdividing the cubic curve using a Liner +// flattening_threshold helps determines the flattening expectation of the curve +func TraceCubic(t Liner, cubic []float64, flatteningThreshold float64) { + // Allocation curves + var curves [CurveRecursionLimit * 8]float64 + copy(curves[0:8], cubic[0:8]) + i := 0 + + // current curve + var c []float64 + + var dx, dy, d2, d3 float64 + + for i >= 0 { + c = curves[i*8:] + dx = c[6] - c[0] + dy = c[7] - c[1] + + d2 = math.Abs((c[2]-c[6])*dy - (c[3]-c[7])*dx) + d3 = math.Abs((c[4]-c[6])*dy - (c[5]-c[7])*dx) + + // if it's flat then trace a line + if (d2+d3)*(d2+d3) < flatteningThreshold*(dx*dx+dy*dy) || i == len(curves)-1 { + t.LineTo(c[6], c[7]) + i-- + } else { + // second half of bezier go lower onto the stack + SubdivideCubic(c, curves[(i+1)*8:], curves[i*8:]) + i++ + } + } +} + +// Quad +// x1, y1, cpx1, cpy2, x2, y2 float64 + +// SubdivideQuad a Bezier quad curve in 2 equivalents Bezier quad curves. +// c1 and c2 parameters are the resulting curves +func SubdivideQuad(c, c1, c2 []float64) { + // First point of c is the first point of c1 + c1[0], c1[1] = c[0], c[1] + // Last point of c is the last point of c2 + c2[4], c2[5] = c[4], c[5] + + // Subdivide segment using midpoints + c1[2] = (c[0] + c[2]) / 2 + c1[3] = (c[1] + c[3]) / 2 + c2[2] = (c[2] + c[4]) / 2 + c2[3] = (c[3] + c[5]) / 2 + c1[4] = (c1[2] + c2[2]) / 2 + c1[5] = (c1[3] + c2[3]) / 2 + c2[0], c2[1] = c1[4], c1[5] + return +} + +func traceWindowIndices(i int) (startAt, endAt int) { + startAt = i * 6 + endAt = startAt + 6 + return +} + +func traceCalcDeltas(c []float64) (dx, dy, d float64) { + dx = c[4] - c[0] + dy = c[5] - c[1] + d = math.Abs(((c[2]-c[4])*dy - (c[3]-c[5])*dx)) + return +} + +func traceIsFlat(dx, dy, d, threshold float64) bool { + return (d * d) < threshold*(dx*dx+dy*dy) +} + +func traceGetWindow(curves []float64, i int) []float64 { + startAt, endAt := traceWindowIndices(i) + return curves[startAt:endAt] +} + +// TraceQuad generate lines subdividing the curve using a Liner +// flattening_threshold helps determines the flattening expectation of the curve +func TraceQuad(t Liner, quad []float64, flatteningThreshold float64) { + const curveLen = CurveRecursionLimit * 6 + const curveEndIndex = curveLen - 1 + const lastIteration = CurveRecursionLimit - 1 + + // Allocates curves stack + curves := make([]float64, curveLen) + + // copy 6 elements from the quad path to the stack + copy(curves[0:6], quad[0:6]) + + var i int + var c []float64 + var dx, dy, d float64 + + for i >= 0 { + c = traceGetWindow(curves, i) + dx, dy, d = traceCalcDeltas(c) + + // bail early if the distance is 0 + if d == 0 { + return + } + + // if it's flat then trace a line + if traceIsFlat(dx, dy, d, flatteningThreshold) || i == lastIteration { + t.LineTo(c[4], c[5]) + i-- + } else { + SubdivideQuad(c, traceGetWindow(curves, i+1), traceGetWindow(curves, i)) + i++ + } + } +} + +// TraceArc trace an arc using a Liner +func TraceArc(t Liner, x, y, rx, ry, start, angle, scale float64) (lastX, lastY float64) { + end := start + angle + clockWise := true + if angle < 0 { + clockWise = false + } + ra := (math.Abs(rx) + math.Abs(ry)) / 2 + da := math.Acos(ra/(ra+0.125/scale)) * 2 + //normalize + if !clockWise { + da = -da + } + angle = start + da + var curX, curY float64 + for { + if (angle < end-da/4) != clockWise { + curX = x + math.Cos(end)*rx + curY = y + math.Sin(end)*ry + return curX, curY + } + curX = x + math.Cos(angle)*rx + curY = y + math.Sin(angle)*ry + + angle += da + t.LineTo(curX, curY) + } +} diff --git a/vendor/github.com/wcharczuk/go-chart/v2/drawing/dasher.go b/vendor/github.com/wcharczuk/go-chart/v2/drawing/dasher.go new file mode 100644 index 00000000..20a5a6b2 --- /dev/null +++ b/vendor/github.com/wcharczuk/go-chart/v2/drawing/dasher.go @@ -0,0 +1,89 @@ +package drawing + +// NewDashVertexConverter creates a new dash converter. +func NewDashVertexConverter(dash []float64, dashOffset float64, flattener Flattener) *DashVertexConverter { + var dasher DashVertexConverter + dasher.dash = dash + dasher.currentDash = 0 + dasher.dashOffset = dashOffset + dasher.next = flattener + return &dasher +} + +// DashVertexConverter is a converter for dash vertexes. +type DashVertexConverter struct { + next Flattener + x, y, distance float64 + dash []float64 + currentDash int + dashOffset float64 +} + +// LineTo implements the pathbuilder interface. +func (dasher *DashVertexConverter) LineTo(x, y float64) { + dasher.lineTo(x, y) +} + +// MoveTo implements the pathbuilder interface. +func (dasher *DashVertexConverter) MoveTo(x, y float64) { + dasher.next.MoveTo(x, y) + dasher.x, dasher.y = x, y + dasher.distance = dasher.dashOffset + dasher.currentDash = 0 +} + +// LineJoin implements the pathbuilder interface. +func (dasher *DashVertexConverter) LineJoin() { + dasher.next.LineJoin() +} + +// Close implements the pathbuilder interface. +func (dasher *DashVertexConverter) Close() { + dasher.next.Close() +} + +// End implements the pathbuilder interface. +func (dasher *DashVertexConverter) End() { + dasher.next.End() +} + +func (dasher *DashVertexConverter) lineTo(x, y float64) { + rest := dasher.dash[dasher.currentDash] - dasher.distance + for rest < 0 { + dasher.distance = dasher.distance - dasher.dash[dasher.currentDash] + dasher.currentDash = (dasher.currentDash + 1) % len(dasher.dash) + rest = dasher.dash[dasher.currentDash] - dasher.distance + } + d := distance(dasher.x, dasher.y, x, y) + for d >= rest { + k := rest / d + lx := dasher.x + k*(x-dasher.x) + ly := dasher.y + k*(y-dasher.y) + if dasher.currentDash%2 == 0 { + // line + dasher.next.LineTo(lx, ly) + } else { + // gap + dasher.next.End() + dasher.next.MoveTo(lx, ly) + } + d = d - rest + dasher.x, dasher.y = lx, ly + dasher.currentDash = (dasher.currentDash + 1) % len(dasher.dash) + rest = dasher.dash[dasher.currentDash] + } + dasher.distance = d + if dasher.currentDash%2 == 0 { + // line + dasher.next.LineTo(x, y) + } else { + // gap + dasher.next.End() + dasher.next.MoveTo(x, y) + } + if dasher.distance >= dasher.dash[dasher.currentDash] { + dasher.distance = dasher.distance - dasher.dash[dasher.currentDash] + dasher.currentDash = (dasher.currentDash + 1) % len(dasher.dash) + } + dasher.x, dasher.y = x, y +} diff --git a/vendor/github.com/wcharczuk/go-chart/v2/drawing/demux_flattener.go b/vendor/github.com/wcharczuk/go-chart/v2/drawing/demux_flattener.go new file mode 100644 index 00000000..43b86462 --- /dev/null +++ b/vendor/github.com/wcharczuk/go-chart/v2/drawing/demux_flattener.go @@ -0,0 +1,41 @@ +package drawing + +// DemuxFlattener is a flattener +type DemuxFlattener struct { + Flatteners []Flattener +} + +// MoveTo implements the path builder interface. +func (dc DemuxFlattener) MoveTo(x, y float64) { + for _, flattener := range dc.Flatteners { + flattener.MoveTo(x, y) + } +} + +// LineTo implements the path builder interface. +func (dc DemuxFlattener) LineTo(x, y float64) { + for _, flattener := range dc.Flatteners { + flattener.LineTo(x, y) + } +} + +// LineJoin implements the path builder interface. +func (dc DemuxFlattener) LineJoin() { + for _, flattener := range dc.Flatteners { + flattener.LineJoin() + } +} + +// Close implements the path builder interface. +func (dc DemuxFlattener) Close() { + for _, flattener := range dc.Flatteners { + flattener.Close() + } +} + +// End implements the path builder interface. +func (dc DemuxFlattener) End() { + for _, flattener := range dc.Flatteners { + flattener.End() + } +} diff --git a/vendor/github.com/wcharczuk/go-chart/v2/drawing/drawing.go b/vendor/github.com/wcharczuk/go-chart/v2/drawing/drawing.go new file mode 100644 index 00000000..8a1da6ab --- /dev/null +++ b/vendor/github.com/wcharczuk/go-chart/v2/drawing/drawing.go @@ -0,0 +1,148 @@ +package drawing + +import ( + "image/color" + + "github.com/golang/freetype/truetype" +) + +// FillRule defines the type for fill rules +type FillRule int + +const ( + // FillRuleEvenOdd determines the "insideness" of a point in the shape + // by drawing a ray from that point to infinity in any direction + // and counting the number of path segments from the given shape that the ray crosses. + // If this number is odd, the point is inside; if even, the point is outside. + FillRuleEvenOdd FillRule = iota + // FillRuleWinding determines the "insideness" of a point in the shape + // by drawing a ray from that point to infinity in any direction + // and then examining the places where a segment of the shape crosses the ray. + // Starting with a count of zero, add one each time a path segment crosses + // the ray from left to right and subtract one each time + // a path segment crosses the ray from right to left. After counting the crossings, + // if the result is zero then the point is outside the path. Otherwise, it is inside. + FillRuleWinding +) + +// LineCap is the style of line extremities +type LineCap int + +const ( + // RoundCap defines a rounded shape at the end of the line + RoundCap LineCap = iota + // ButtCap defines a squared shape exactly at the end of the line + ButtCap + // SquareCap defines a squared shape at the end of the line + SquareCap +) + +// LineJoin is the style of segments joint +type LineJoin int + +const ( + // BevelJoin represents cut segments joint + BevelJoin LineJoin = iota + // RoundJoin represents rounded segments joint + RoundJoin + // MiterJoin represents peaker segments joint + MiterJoin +) + +// StrokeStyle keeps stroke style attributes +// that is used by the Stroke method of a Drawer +type StrokeStyle struct { + // Color defines the color of stroke + Color color.Color + // Line width + Width float64 + // Line cap style rounded, butt or square + LineCap LineCap + // Line join style bevel, round or miter + LineJoin LineJoin + // offset of the first dash + DashOffset float64 + // array represented dash length pair values are plain dash and impair are space between dash + // if empty display plain line + Dash []float64 +} + +// SolidFillStyle define style attributes for a solid fill style +type SolidFillStyle struct { + // Color defines the line color + Color color.Color + // FillRule defines the file rule to used + FillRule FillRule +} + +// Valign Vertical Alignment of the text +type Valign int + +const ( + // ValignTop top align text + ValignTop Valign = iota + // ValignCenter centered text + ValignCenter + // ValignBottom bottom aligned text + ValignBottom + // ValignBaseline align text with the baseline of the font + ValignBaseline +) + +// Halign Horizontal Alignment of the text +type Halign int + +const ( + // HalignLeft Horizontally align to left + HalignLeft = iota + // HalignCenter Horizontally align to center + HalignCenter + // HalignRight Horizontally align to right + HalignRight +) + +// TextStyle describe text property +type TextStyle struct { + // Color defines the color of text + Color color.Color + // Size font size + Size float64 + // The font to use + Font *truetype.Font + // Horizontal Alignment of the text + Halign Halign + // Vertical Alignment of the text + Valign Valign +} + +// ScalingPolicy is a constant to define how to scale an image +type ScalingPolicy int + +const ( + // ScalingNone no scaling applied + ScalingNone ScalingPolicy = iota + // ScalingStretch the image is stretched so that its width and height are exactly the given width and height + ScalingStretch + // ScalingWidth the image is scaled so that its width is exactly the given width + ScalingWidth + // ScalingHeight the image is scaled so that its height is exactly the given height + ScalingHeight + // ScalingFit the image is scaled to the largest scale that allow the image to fit within a rectangle width x height + ScalingFit + // ScalingSameArea the image is scaled so that its area is exactly the area of the given rectangle width x height + ScalingSameArea + // ScalingFill the image is scaled to the smallest scale that allow the image to fully cover a rectangle width x height + ScalingFill +) + +// ImageScaling style attributes used to display the image +type ImageScaling struct { + // Horizontal Alignment of the image + Halign Halign + // Vertical Alignment of the image + Valign Valign + // Width Height used by scaling policy + Width, Height float64 + // ScalingPolicy defines the scaling policy to applied to the image + ScalingPolicy ScalingPolicy +} diff --git a/vendor/github.com/wcharczuk/go-chart/v2/drawing/flattener.go b/vendor/github.com/wcharczuk/go-chart/v2/drawing/flattener.go new file mode 100644 index 00000000..7b34201e --- /dev/null +++ b/vendor/github.com/wcharczuk/go-chart/v2/drawing/flattener.go @@ -0,0 +1,97 @@ +package drawing + +// Liner receive segment definition +type Liner interface { + // LineTo Draw a line from the current position to the point (x, y) + LineTo(x, y float64) +} + +// Flattener receive segment definition +type Flattener interface { + // MoveTo Start a New line from the point (x, y) + MoveTo(x, y float64) + // LineTo Draw a line from the current position to the point (x, y) + LineTo(x, y float64) + // LineJoin add the most recent starting point to close the path to create a polygon + LineJoin() + // Close add the most recent starting point to close the path to create a polygon + Close() + // End mark the current line as finished so we can draw caps + End() +} + +// Flatten convert curves into straight segments keeping join segments info +func Flatten(path *Path, flattener Flattener, scale float64) { + // First Point + var startX, startY float64 + // Current Point + var x, y float64 + var i int + for _, cmp := range path.Components { + switch cmp { + case MoveToComponent: + x, y = path.Points[i], path.Points[i+1] + startX, startY = x, y + if i != 0 { + flattener.End() + } + flattener.MoveTo(x, y) + i += 2 + case LineToComponent: + x, y = path.Points[i], path.Points[i+1] + flattener.LineTo(x, y) + flattener.LineJoin() + i += 2 + case QuadCurveToComponent: + // we include the previous point for the start of the curve + TraceQuad(flattener, path.Points[i-2:], 0.5) + x, y = path.Points[i+2], path.Points[i+3] + flattener.LineTo(x, y) + i += 4 + case CubicCurveToComponent: + TraceCubic(flattener, path.Points[i-2:], 0.5) + x, y = path.Points[i+4], path.Points[i+5] + flattener.LineTo(x, y) + i += 6 + case ArcToComponent: + x, y = TraceArc(flattener, path.Points[i], path.Points[i+1], path.Points[i+2], path.Points[i+3], path.Points[i+4], path.Points[i+5], scale) + flattener.LineTo(x, y) + i += 6 + case CloseComponent: + flattener.LineTo(startX, startY) + flattener.Close() + } + } + flattener.End() +} + +// SegmentedPath is a path of disparate point sectinos. +type SegmentedPath struct { + Points []float64 +} + +// MoveTo implements the path interface. +func (p *SegmentedPath) MoveTo(x, y float64) { + p.Points = append(p.Points, x, y) + // TODO need to mark this point as moveto +} + +// LineTo implements the path interface. +func (p *SegmentedPath) LineTo(x, y float64) { + p.Points = append(p.Points, x, y) +} + +// LineJoin implements the path interface. +func (p *SegmentedPath) LineJoin() { + // TODO need to mark the current point as linejoin +} + +// Close implements the path interface. +func (p *SegmentedPath) Close() { + // TODO Close +} + +// End implements the path interface. +func (p *SegmentedPath) End() { + // Nothing to do +} diff --git a/vendor/github.com/wcharczuk/go-chart/v2/drawing/free_type_path.go b/vendor/github.com/wcharczuk/go-chart/v2/drawing/free_type_path.go new file mode 100644 index 00000000..5c3c2667 --- /dev/null +++ b/vendor/github.com/wcharczuk/go-chart/v2/drawing/free_type_path.go @@ -0,0 +1,30 @@ +package drawing + +import ( + "github.com/golang/freetype/raster" + "golang.org/x/image/math/fixed" +) + +// FtLineBuilder is a builder for freetype raster glyphs. +type FtLineBuilder struct { + Adder raster.Adder +} + +// MoveTo implements the path builder interface. +func (liner FtLineBuilder) MoveTo(x, y float64) { + liner.Adder.Start(fixed.Point26_6{X: fixed.Int26_6(x * 64), Y: fixed.Int26_6(y * 64)}) +} + +// LineTo implements the path builder interface. +func (liner FtLineBuilder) LineTo(x, y float64) { + liner.Adder.Add1(fixed.Point26_6{X: fixed.Int26_6(x * 64), Y: fixed.Int26_6(y * 64)}) +} + +// LineJoin implements the path builder interface. +func (liner FtLineBuilder) LineJoin() {} + +// Close implements the path builder interface. +func (liner FtLineBuilder) Close() {} + +// End implements the path builder interface. +func (liner FtLineBuilder) End() {} diff --git a/vendor/github.com/wcharczuk/go-chart/v2/drawing/graphic_context.go b/vendor/github.com/wcharczuk/go-chart/v2/drawing/graphic_context.go new file mode 100644 index 00000000..553c1eb0 --- /dev/null +++ b/vendor/github.com/wcharczuk/go-chart/v2/drawing/graphic_context.go @@ -0,0 +1,82 @@ +package drawing + +import ( + "image" + "image/color" + + "github.com/golang/freetype/truetype" +) + +// GraphicContext describes the interface for the various backends (images, pdf, opengl, ...) +type GraphicContext interface { + // PathBuilder describes the interface for path drawing + PathBuilder + // BeginPath creates a new path + BeginPath() + // GetMatrixTransform returns the current transformation matrix + GetMatrixTransform() Matrix + // SetMatrixTransform sets the current transformation matrix + SetMatrixTransform(tr Matrix) + // ComposeMatrixTransform composes the current transformation matrix with tr + ComposeMatrixTransform(tr Matrix) + // Rotate applies a rotation to the current transformation matrix. angle is in radian. + Rotate(angle float64) + // Translate applies a translation to the current transformation matrix. + Translate(tx, ty float64) + // Scale applies a scale to the current transformation matrix. + Scale(sx, sy float64) + // SetStrokeColor sets the current stroke color + SetStrokeColor(c color.Color) + // SetFillColor sets the current fill color + SetFillColor(c color.Color) + // SetFillRule sets the current fill rule + SetFillRule(f FillRule) + // SetLineWidth sets the current line width + SetLineWidth(lineWidth float64) + // SetLineCap sets the current line cap + SetLineCap(cap LineCap) + // SetLineJoin sets the current line join + SetLineJoin(join LineJoin) + // SetLineDash sets the current dash + SetLineDash(dash []float64, dashOffset float64) + // SetFontSize sets the current font size + SetFontSize(fontSize float64) + // GetFontSize gets the current font size + GetFontSize() float64 + // SetFont sets the font for the context + SetFont(f *truetype.Font) + // GetFont returns the current font + GetFont() *truetype.Font + // DrawImage draws the raster image in the current canvas + DrawImage(image image.Image) + // Save the context and push it to the context stack + Save() + // Restore remove the current context and restore the last one + Restore() + // Clear fills the current canvas with a default transparent color + Clear() + // ClearRect fills the specified rectangle with a default transparent color + ClearRect(x1, y1, x2, y2 int) + // SetDPI sets the current DPI + SetDPI(dpi int) + // GetDPI gets the current DPI + GetDPI() int + // GetStringBounds gets pixel bounds(dimensions) of given string + GetStringBounds(s string) (left, top, right, bottom float64) + // CreateStringPath creates a path from the string s at x, y + CreateStringPath(text string, x, y float64) (cursor float64) + // FillString draws the text at point (0, 0) + FillString(text string) (cursor float64) + // FillStringAt draws the text at the specified point (x, y) + FillStringAt(text string, x, y float64) (cursor float64) + // StrokeString draws the contour of the text at point (0, 0) + StrokeString(text string) (cursor float64) + // StrokeStringAt draws the contour of the text at point (x, y) + StrokeStringAt(text string, x, y float64) (cursor float64) + // Stroke strokes the paths with the color specified by SetStrokeColor + Stroke(paths ...*Path) + // Fill fills the paths with the color specified by SetFillColor + Fill(paths ...*Path) + // FillStroke first fills the paths and than strokes them + FillStroke(paths ...*Path) +} diff --git a/vendor/github.com/wcharczuk/go-chart/v2/drawing/image_filter.go b/vendor/github.com/wcharczuk/go-chart/v2/drawing/image_filter.go new file mode 100644 index 00000000..3cf03093 --- /dev/null +++ b/vendor/github.com/wcharczuk/go-chart/v2/drawing/image_filter.go @@ -0,0 +1,13 @@ +package drawing + +// ImageFilter defines the type of filter to use +type ImageFilter int + +const ( + // LinearFilter defines a linear filter + LinearFilter ImageFilter = iota + // BilinearFilter defines a bilinear filter + BilinearFilter + // BicubicFilter defines a bicubic filter + BicubicFilter +) diff --git a/vendor/github.com/wcharczuk/go-chart/v2/drawing/line.go b/vendor/github.com/wcharczuk/go-chart/v2/drawing/line.go new file mode 100644 index 00000000..b4e28e79 --- /dev/null +++ b/vendor/github.com/wcharczuk/go-chart/v2/drawing/line.go @@ -0,0 +1,48 @@ +package drawing + +import ( + "image/color" + "image/draw" +) + +// PolylineBresenham draws a polyline to an image +func PolylineBresenham(img draw.Image, c color.Color, s ...float64) { + for i := 2; i < len(s); i += 2 { + Bresenham(img, c, int(s[i-2]+0.5), int(s[i-1]+0.5), int(s[i]+0.5), int(s[i+1]+0.5)) + } +} + +// Bresenham draws a line between (x0, y0) and (x1, y1) +func Bresenham(img draw.Image, color color.Color, x0, y0, x1, y1 int) { + dx := abs(x1 - x0) + dy := abs(y1 - y0) + var sx, sy int + if x0 < x1 { + sx = 1 + } else { + sx = -1 + } + if y0 < y1 { + sy = 1 + } else { + sy = -1 + } + err := dx - dy + + var e2 int + for { + img.Set(x0, y0, color) + if x0 == x1 && y0 == y1 { + return + } + e2 = 2 * err + if e2 > -dy { + err = err - dy + x0 = x0 + sx + } + if e2 < dx { + err = err + dx + y0 = y0 + sy + } + } +} diff --git a/vendor/github.com/wcharczuk/go-chart/v2/drawing/matrix.go b/vendor/github.com/wcharczuk/go-chart/v2/drawing/matrix.go new file mode 100644 index 00000000..8bd20492 --- /dev/null +++ b/vendor/github.com/wcharczuk/go-chart/v2/drawing/matrix.go @@ -0,0 +1,220 @@ +package drawing + +import ( + "math" +) + +// Matrix represents an affine transformation +type Matrix [6]float64 + +const ( + epsilon = 1e-6 +) + +// Determinant compute the determinant of the matrix +func (tr Matrix) Determinant() float64 { + return tr[0]*tr[3] - tr[1]*tr[2] +} + +// Transform applies the transformation matrix to points. It modify the points passed in parameter. +func (tr Matrix) Transform(points []float64) { + for i, j := 0, 1; j < len(points); i, j = i+2, j+2 { + x := points[i] + y := points[j] + points[i] = x*tr[0] + y*tr[2] + tr[4] + points[j] = x*tr[1] + y*tr[3] + tr[5] + } +} + +// TransformPoint applies the transformation matrix to point. It returns the point the transformed point. +func (tr Matrix) TransformPoint(x, y float64) (xres, yres float64) { + xres = x*tr[0] + y*tr[2] + tr[4] + yres = x*tr[1] + y*tr[3] + tr[5] + return xres, yres +} + +func minMax(x, y float64) (min, max float64) { + if x > y { + return y, x + } + return x, y +} + +// TransformRectangle applies the transformation matrix to the rectangle represented by the min and the max point of the rectangle +func (tr Matrix) TransformRectangle(x0, y0, x2, y2 float64) (nx0, ny0, nx2, ny2 float64) { + points := []float64{x0, y0, x2, y0, x2, y2, x0, y2} + tr.Transform(points) + points[0], points[2] = minMax(points[0], points[2]) + points[4], points[6] = minMax(points[4], points[6]) + points[1], points[3] = minMax(points[1], points[3]) + points[5], points[7] = minMax(points[5], points[7]) + + nx0 = math.Min(points[0], points[4]) + ny0 = math.Min(points[1], points[5]) + nx2 = math.Max(points[2], points[6]) + ny2 = math.Max(points[3], points[7]) + return nx0, ny0, nx2, ny2 +} + +// InverseTransform applies the transformation inverse matrix to the rectangle represented by the min and the max point of the rectangle +func (tr Matrix) InverseTransform(points []float64) { + d := tr.Determinant() // matrix determinant + for i, j := 0, 1; j < len(points); i, j = i+2, j+2 { + x := points[i] + y := points[j] + points[i] = ((x-tr[4])*tr[3] - (y-tr[5])*tr[2]) / d + points[j] = ((y-tr[5])*tr[0] - (x-tr[4])*tr[1]) / d + } +} + +// InverseTransformPoint applies the transformation inverse matrix to point. It returns the point the transformed point. +func (tr Matrix) InverseTransformPoint(x, y float64) (xres, yres float64) { + d := tr.Determinant() // matrix determinant + xres = ((x-tr[4])*tr[3] - (y-tr[5])*tr[2]) / d + yres = ((y-tr[5])*tr[0] - (x-tr[4])*tr[1]) / d + return xres, yres +} + +// VectorTransform applies the transformation matrix to points without using the translation parameter of the affine matrix. +// It modify the points passed in parameter. +func (tr Matrix) VectorTransform(points []float64) { + for i, j := 0, 1; j < len(points); i, j = i+2, j+2 { + x := points[i] + y := points[j] + points[i] = x*tr[0] + y*tr[2] + points[j] = x*tr[1] + y*tr[3] + } +} + +// NewIdentityMatrix creates an identity transformation matrix. +func NewIdentityMatrix() Matrix { + return Matrix{1, 0, 0, 1, 0, 0} +} + +// NewTranslationMatrix creates a transformation matrix with a translation tx and ty translation parameter +func NewTranslationMatrix(tx, ty float64) Matrix { + return Matrix{1, 0, 0, 1, tx, ty} +} + +// NewScaleMatrix creates a transformation matrix with a sx, sy scale factor +func NewScaleMatrix(sx, sy float64) Matrix { + return Matrix{sx, 0, 0, sy, 0, 0} +} + +// NewRotationMatrix creates a rotation transformation matrix. angle is in radian +func NewRotationMatrix(angle float64) Matrix { + c := math.Cos(angle) + s := math.Sin(angle) + return Matrix{c, s, -s, c, 0, 0} +} + +// NewMatrixFromRects creates a transformation matrix, combining a scale and a translation, that transform rectangle1 into rectangle2. +func NewMatrixFromRects(rectangle1, rectangle2 [4]float64) Matrix { + xScale := (rectangle2[2] - rectangle2[0]) / (rectangle1[2] - rectangle1[0]) + yScale := (rectangle2[3] - rectangle2[1]) / (rectangle1[3] - rectangle1[1]) + xOffset := rectangle2[0] - (rectangle1[0] * xScale) + yOffset := rectangle2[1] - (rectangle1[1] * yScale) + return Matrix{xScale, 0, 0, yScale, xOffset, yOffset} +} + +// Inverse computes the inverse matrix +func (tr *Matrix) Inverse() { + d := tr.Determinant() // matrix determinant + tr0, tr1, tr2, tr3, tr4, tr5 := tr[0], tr[1], tr[2], tr[3], tr[4], tr[5] + tr[0] = tr3 / d + tr[1] = -tr1 / d + tr[2] = -tr2 / d + tr[3] = tr0 / d + tr[4] = (tr2*tr5 - tr3*tr4) / d + tr[5] = (tr1*tr4 - tr0*tr5) / d +} + +// Copy copies the matrix. +func (tr Matrix) Copy() Matrix { + var result Matrix + copy(result[:], tr[:]) + return result +} + +// Compose multiplies trToConcat x tr +func (tr *Matrix) Compose(trToCompose Matrix) { + tr0, tr1, tr2, tr3, tr4, tr5 := tr[0], tr[1], tr[2], tr[3], tr[4], tr[5] + tr[0] = trToCompose[0]*tr0 + trToCompose[1]*tr2 + tr[1] = trToCompose[1]*tr3 + trToCompose[0]*tr1 + tr[2] = trToCompose[2]*tr0 + trToCompose[3]*tr2 + tr[3] = trToCompose[3]*tr3 + trToCompose[2]*tr1 + tr[4] = trToCompose[4]*tr0 + trToCompose[5]*tr2 + tr4 + tr[5] = trToCompose[5]*tr3 + trToCompose[4]*tr1 + tr5 +} + +// Scale adds a scale to the matrix +func (tr *Matrix) Scale(sx, sy float64) { + tr[0] = sx * tr[0] + tr[1] = sx * tr[1] + tr[2] = sy * tr[2] + tr[3] = sy * tr[3] +} + +// Translate adds a translation to the matrix +func (tr *Matrix) Translate(tx, ty float64) { + tr[4] = tx*tr[0] + ty*tr[2] + tr[4] + tr[5] = ty*tr[3] + tx*tr[1] + tr[5] +} + +// Rotate adds a rotation to the matrix. +func (tr *Matrix) Rotate(radians float64) { + c := math.Cos(radians) + s := math.Sin(radians) + t0 := c*tr[0] + s*tr[2] + t1 := s*tr[3] + c*tr[1] + t2 := c*tr[2] - s*tr[0] + t3 := c*tr[3] - s*tr[1] + tr[0] = t0 + tr[1] = t1 + tr[2] = t2 + tr[3] = t3 +} + +// GetTranslation gets the matrix traslation. +func (tr Matrix) GetTranslation() (x, y float64) { + return tr[4], tr[5] +} + +// GetScaling gets the matrix scaling. +func (tr Matrix) GetScaling() (x, y float64) { + return tr[0], tr[3] +} + +// GetScale computes a scale for the matrix +func (tr Matrix) GetScale() float64 { + x := 0.707106781*tr[0] + 0.707106781*tr[1] + y := 0.707106781*tr[2] + 0.707106781*tr[3] + return math.Sqrt(x*x + y*y) +} + +// ******************** Testing ******************** + +// Equals tests if a two transformation are equal. A tolerance is applied when comparing matrix elements. +func (tr Matrix) Equals(tr2 Matrix) bool { + for i := 0; i < 6; i = i + 1 { + if !fequals(tr[i], tr2[i]) { + return false + } + } + return true +} + +// IsIdentity tests if a transformation is the identity transformation. A tolerance is applied when comparing matrix elements. +func (tr Matrix) IsIdentity() bool { + return fequals(tr[4], 0) && fequals(tr[5], 0) && tr.IsTranslation() +} + +// IsTranslation tests if a transformation is is a pure translation. A tolerance is applied when comparing matrix elements. +func (tr Matrix) IsTranslation() bool { + return fequals(tr[0], 1) && fequals(tr[1], 0) && fequals(tr[2], 0) && fequals(tr[3], 1) +} + +// fequals compares two floats. return true if the distance between the two floats is less than epsilon, false otherwise +func fequals(float1, float2 float64) bool { + return math.Abs(float1-float2) <= epsilon +} diff --git a/vendor/github.com/wcharczuk/go-chart/v2/drawing/painter.go b/vendor/github.com/wcharczuk/go-chart/v2/drawing/painter.go new file mode 100644 index 00000000..1353449a --- /dev/null +++ b/vendor/github.com/wcharczuk/go-chart/v2/drawing/painter.go @@ -0,0 +1,31 @@ +package drawing + +import ( + "image" + "image/color" + + "golang.org/x/image/draw" + "golang.org/x/image/math/f64" + + "github.com/golang/freetype/raster" +) + +// Painter implements the freetype raster.Painter and has a SetColor method like the RGBAPainter +type Painter interface { + raster.Painter + SetColor(color color.Color) +} + +// DrawImage draws an image into dest using an affine transformation matrix, an op and a filter +func DrawImage(src image.Image, dest draw.Image, tr Matrix, op draw.Op, filter ImageFilter) { + var transformer draw.Transformer + switch filter { + case LinearFilter: + transformer = draw.NearestNeighbor + case BilinearFilter: + transformer = draw.BiLinear + case BicubicFilter: + transformer = draw.CatmullRom + } + transformer.Transform(dest, f64.Aff3{tr[0], tr[1], tr[4], tr[2], tr[3], tr[5]}, src, src.Bounds(), op, nil) +} diff --git a/vendor/github.com/wcharczuk/go-chart/v2/drawing/path.go b/vendor/github.com/wcharczuk/go-chart/v2/drawing/path.go new file mode 100644 index 00000000..20f2d2ed --- /dev/null +++ b/vendor/github.com/wcharczuk/go-chart/v2/drawing/path.go @@ -0,0 +1,186 @@ +package drawing + +import ( + "fmt" + "math" +) + +// PathBuilder describes the interface for path drawing. +type PathBuilder interface { + // LastPoint returns the current point of the current sub path + LastPoint() (x, y float64) + // MoveTo creates a new subpath that start at the specified point + MoveTo(x, y float64) + // LineTo adds a line to the current subpath + LineTo(x, y float64) + // QuadCurveTo adds a quadratic Bézier curve to the current subpath + QuadCurveTo(cx, cy, x, y float64) + // CubicCurveTo adds a cubic Bézier curve to the current subpath + CubicCurveTo(cx1, cy1, cx2, cy2, x, y float64) + // ArcTo adds an arc to the current subpath + ArcTo(cx, cy, rx, ry, startAngle, angle float64) + // Close creates a line from the current point to the last MoveTo + // point (if not the same) and mark the path as closed so the + // first and last lines join nicely. + Close() +} + +// PathComponent represents component of a path +type PathComponent int + +const ( + // MoveToComponent is a MoveTo component in a Path + MoveToComponent PathComponent = iota + // LineToComponent is a LineTo component in a Path + LineToComponent + // QuadCurveToComponent is a QuadCurveTo component in a Path + QuadCurveToComponent + // CubicCurveToComponent is a CubicCurveTo component in a Path + CubicCurveToComponent + // ArcToComponent is a ArcTo component in a Path + ArcToComponent + // CloseComponent is a ArcTo component in a Path + CloseComponent +) + +// Path stores points +type Path struct { + // Components is a slice of PathComponent in a Path and mark the role of each points in the Path + Components []PathComponent + // Points are combined with Components to have a specific role in the path + Points []float64 + // Last Point of the Path + x, y float64 +} + +func (p *Path) appendToPath(cmd PathComponent, points ...float64) { + p.Components = append(p.Components, cmd) + p.Points = append(p.Points, points...) +} + +// LastPoint returns the current point of the current path +func (p *Path) LastPoint() (x, y float64) { + return p.x, p.y +} + +// MoveTo starts a new path at (x, y) position +func (p *Path) MoveTo(x, y float64) { + p.appendToPath(MoveToComponent, x, y) + p.x = x + p.y = y +} + +// LineTo adds a line to the current path +func (p *Path) LineTo(x, y float64) { + if len(p.Components) == 0 { //special case when no move has been done + p.MoveTo(0, 0) + } + p.appendToPath(LineToComponent, x, y) + p.x = x + p.y = y +} + +// QuadCurveTo adds a quadratic bezier curve to the current path +func (p *Path) QuadCurveTo(cx, cy, x, y float64) { + if len(p.Components) == 0 { //special case when no move has been done + p.MoveTo(0, 0) + } + p.appendToPath(QuadCurveToComponent, cx, cy, x, y) + p.x = x + p.y = y +} + +// CubicCurveTo adds a cubic bezier curve to the current path +func (p *Path) CubicCurveTo(cx1, cy1, cx2, cy2, x, y float64) { + if len(p.Components) == 0 { //special case when no move has been done + p.MoveTo(0, 0) + } + p.appendToPath(CubicCurveToComponent, cx1, cy1, cx2, cy2, x, y) + p.x = x + p.y = y +} + +// ArcTo adds an arc to the path +func (p *Path) ArcTo(cx, cy, rx, ry, startAngle, delta float64) { + endAngle := startAngle + delta + clockWise := true + if delta < 0 { + clockWise = false + } + // normalize + if clockWise { + for endAngle < startAngle { + endAngle += math.Pi * 2.0 + } + } else { + for startAngle < endAngle { + startAngle += math.Pi * 2.0 + } + } + startX := cx + math.Cos(startAngle)*rx + startY := cy + math.Sin(startAngle)*ry + if len(p.Components) > 0 { + p.LineTo(startX, startY) + } else { + p.MoveTo(startX, startY) + } + p.appendToPath(ArcToComponent, cx, cy, rx, ry, startAngle, delta) + p.x = cx + math.Cos(endAngle)*rx + p.y = cy + math.Sin(endAngle)*ry +} + +// Close closes the current path +func (p *Path) Close() { + p.appendToPath(CloseComponent) +} + +// Copy make a clone of the current path and return it +func (p *Path) Copy() (dest *Path) { + dest = new(Path) + dest.Components = make([]PathComponent, len(p.Components)) + copy(dest.Components, p.Components) + dest.Points = make([]float64, len(p.Points)) + copy(dest.Points, p.Points) + dest.x, dest.y = p.x, p.y + return dest +} + +// Clear reset the path +func (p *Path) Clear() { + p.Components = p.Components[0:0] + p.Points = p.Points[0:0] + return +} + +// IsEmpty returns true if the path is empty +func (p *Path) IsEmpty() bool { + return len(p.Components) == 0 +} + +// String returns a debug text view of the path +func (p *Path) String() string { + s := "" + j := 0 + for _, cmd := range p.Components { + switch cmd { + case MoveToComponent: + s += fmt.Sprintf("MoveTo: %f, %f\n", p.Points[j], p.Points[j+1]) + j = j + 2 + case LineToComponent: + s += fmt.Sprintf("LineTo: %f, %f\n", p.Points[j], p.Points[j+1]) + j = j + 2 + case QuadCurveToComponent: + s += fmt.Sprintf("QuadCurveTo: %f, %f, %f, %f\n", p.Points[j], p.Points[j+1], p.Points[j+2], p.Points[j+3]) + j = j + 4 + case CubicCurveToComponent: + s += fmt.Sprintf("CubicCurveTo: %f, %f, %f, %f, %f, %f\n", p.Points[j], p.Points[j+1], p.Points[j+2], p.Points[j+3], p.Points[j+4], p.Points[j+5]) + j = j + 6 + case ArcToComponent: + s += fmt.Sprintf("ArcTo: %f, %f, %f, %f, %f, %f\n", p.Points[j], p.Points[j+1], p.Points[j+2], p.Points[j+3], p.Points[j+4], p.Points[j+5]) + j = j + 6 + case CloseComponent: + s += "Close\n" + } + } + return s +} diff --git a/vendor/github.com/wcharczuk/go-chart/v2/drawing/raster_graphic_context.go b/vendor/github.com/wcharczuk/go-chart/v2/drawing/raster_graphic_context.go new file mode 100644 index 00000000..1ca0c30f --- /dev/null +++ b/vendor/github.com/wcharczuk/go-chart/v2/drawing/raster_graphic_context.go @@ -0,0 +1,283 @@ +package drawing + +import ( + "errors" + "image" + "image/color" + "math" + + "github.com/golang/freetype/raster" + "github.com/golang/freetype/truetype" + "golang.org/x/image/draw" + "golang.org/x/image/font" + "golang.org/x/image/math/fixed" +) + +// NewRasterGraphicContext creates a new Graphic context from an image. +func NewRasterGraphicContext(img draw.Image) (*RasterGraphicContext, error) { + var painter Painter + switch selectImage := img.(type) { + case *image.RGBA: + painter = raster.NewRGBAPainter(selectImage) + default: + return nil, errors.New("NewRasterGraphicContext() :: invalid image type") + } + return NewRasterGraphicContextWithPainter(img, painter), nil +} + +// NewRasterGraphicContextWithPainter creates a new Graphic context from an image and a Painter (see Freetype-go) +func NewRasterGraphicContextWithPainter(img draw.Image, painter Painter) *RasterGraphicContext { + width, height := img.Bounds().Dx(), img.Bounds().Dy() + return &RasterGraphicContext{ + NewStackGraphicContext(), + img, + painter, + raster.NewRasterizer(width, height), + raster.NewRasterizer(width, height), + &truetype.GlyphBuf{}, + DefaultDPI, + } +} + +// RasterGraphicContext is the implementation of GraphicContext for a raster image +type RasterGraphicContext struct { + *StackGraphicContext + img draw.Image + painter Painter + fillRasterizer *raster.Rasterizer + strokeRasterizer *raster.Rasterizer + glyphBuf *truetype.GlyphBuf + DPI float64 +} + +// SetDPI sets the screen resolution in dots per inch. +func (rgc *RasterGraphicContext) SetDPI(dpi float64) { + rgc.DPI = dpi + rgc.recalc() +} + +// GetDPI returns the resolution of the Image GraphicContext +func (rgc *RasterGraphicContext) GetDPI() float64 { + return rgc.DPI +} + +// Clear fills the current canvas with a default transparent color +func (rgc *RasterGraphicContext) Clear() { + width, height := rgc.img.Bounds().Dx(), rgc.img.Bounds().Dy() + rgc.ClearRect(0, 0, width, height) +} + +// ClearRect fills the current canvas with a default transparent color at the specified rectangle +func (rgc *RasterGraphicContext) ClearRect(x1, y1, x2, y2 int) { + imageColor := image.NewUniform(rgc.current.FillColor) + draw.Draw(rgc.img, image.Rect(x1, y1, x2, y2), imageColor, image.ZP, draw.Over) +} + +// DrawImage draws the raster image in the current canvas +func (rgc *RasterGraphicContext) DrawImage(img image.Image) { + DrawImage(img, rgc.img, rgc.current.Tr, draw.Over, BilinearFilter) +} + +// FillString draws the text at point (0, 0) +func (rgc *RasterGraphicContext) FillString(text string) (cursor float64, err error) { + cursor, err = rgc.FillStringAt(text, 0, 0) + return +} + +// FillStringAt draws the text at the specified point (x, y) +func (rgc *RasterGraphicContext) FillStringAt(text string, x, y float64) (cursor float64, err error) { + cursor, err = rgc.CreateStringPath(text, x, y) + rgc.Fill() + return +} + +// StrokeString draws the contour of the text at point (0, 0) +func (rgc *RasterGraphicContext) StrokeString(text string) (cursor float64, err error) { + cursor, err = rgc.StrokeStringAt(text, 0, 0) + return +} + +// StrokeStringAt draws the contour of the text at point (x, y) +func (rgc *RasterGraphicContext) StrokeStringAt(text string, x, y float64) (cursor float64, err error) { + cursor, err = rgc.CreateStringPath(text, x, y) + rgc.Stroke() + return +} + +func (rgc *RasterGraphicContext) drawGlyph(glyph truetype.Index, dx, dy float64) error { + if err := rgc.glyphBuf.Load(rgc.current.Font, fixed.Int26_6(rgc.current.Scale), glyph, font.HintingNone); err != nil { + return err + } + e0 := 0 + for _, e1 := range rgc.glyphBuf.Ends { + DrawContour(rgc, rgc.glyphBuf.Points[e0:e1], dx, dy) + e0 = e1 + } + return nil +} + +// CreateStringPath creates a path from the string s at x, y, and returns the string width. +// The text is placed so that the left edge of the em square of the first character of s +// and the baseline intersect at x, y. The majority of the affected pixels will be +// above and to the right of the point, but some may be below or to the left. +// For example, drawing a string that starts with a 'J' in an italic font may +// affect pixels below and left of the point. +func (rgc *RasterGraphicContext) CreateStringPath(s string, x, y float64) (cursor float64, err error) { + f := rgc.GetFont() + if f == nil { + err = errors.New("No font loaded, cannot continue") + return + } + rgc.recalc() + + startx := x + prev, hasPrev := truetype.Index(0), false + for _, rc := range s { + index := f.Index(rc) + if hasPrev { + x += fUnitsToFloat64(f.Kern(fixed.Int26_6(rgc.current.Scale), prev, index)) + } + err = rgc.drawGlyph(index, x, y) + if err != nil { + cursor = x - startx + return + } + x += fUnitsToFloat64(f.HMetric(fixed.Int26_6(rgc.current.Scale), index).AdvanceWidth) + prev, hasPrev = index, true + } + cursor = x - startx + return +} + +// GetStringBounds returns the approximate pixel bounds of a string. +func (rgc *RasterGraphicContext) GetStringBounds(s string) (left, top, right, bottom float64, err error) { + f := rgc.GetFont() + if f == nil { + err = errors.New("No font loaded, cannot continue") + return + } + rgc.recalc() + + left = math.MaxFloat64 + top = math.MaxFloat64 + + cursor := 0.0 + prev, hasPrev := truetype.Index(0), false + for _, rc := range s { + index := f.Index(rc) + if hasPrev { + cursor += fUnitsToFloat64(f.Kern(fixed.Int26_6(rgc.current.Scale), prev, index)) + } + + if err = rgc.glyphBuf.Load(rgc.current.Font, fixed.Int26_6(rgc.current.Scale), index, font.HintingNone); err != nil { + return + } + e0 := 0 + for _, e1 := range rgc.glyphBuf.Ends { + ps := rgc.glyphBuf.Points[e0:e1] + for _, p := range ps { + x, y := pointToF64Point(p) + top = math.Min(top, y) + bottom = math.Max(bottom, y) + left = math.Min(left, x+cursor) + right = math.Max(right, x+cursor) + } + e0 = e1 + } + cursor += fUnitsToFloat64(f.HMetric(fixed.Int26_6(rgc.current.Scale), index).AdvanceWidth) + prev, hasPrev = index, true + } + return +} + +// recalc recalculates scale and bounds values from the font size, screen +// resolution and font metrics, and invalidates the glyph cache. +func (rgc *RasterGraphicContext) recalc() { + rgc.current.Scale = rgc.current.FontSizePoints * float64(rgc.DPI) +} + +// SetFont sets the font used to draw text. +func (rgc *RasterGraphicContext) SetFont(font *truetype.Font) { + rgc.current.Font = font +} + +// GetFont returns the font used to draw text. +func (rgc *RasterGraphicContext) GetFont() *truetype.Font { + return rgc.current.Font +} + +// SetFontSize sets the font size in points (as in ``a 12 point font''). +func (rgc *RasterGraphicContext) SetFontSize(fontSizePoints float64) { + rgc.current.FontSizePoints = fontSizePoints + rgc.recalc() +} + +func (rgc *RasterGraphicContext) paint(rasterizer *raster.Rasterizer, color color.Color) { + rgc.painter.SetColor(color) + rasterizer.Rasterize(rgc.painter) + rasterizer.Clear() + rgc.current.Path.Clear() +} + +// Stroke strokes the paths with the color specified by SetStrokeColor +func (rgc *RasterGraphicContext) Stroke(paths ...*Path) { + paths = append(paths, rgc.current.Path) + rgc.strokeRasterizer.UseNonZeroWinding = true + + stroker := NewLineStroker(rgc.current.Cap, rgc.current.Join, Transformer{Tr: rgc.current.Tr, Flattener: FtLineBuilder{Adder: rgc.strokeRasterizer}}) + stroker.HalfLineWidth = rgc.current.LineWidth / 2 + + var liner Flattener + if rgc.current.Dash != nil && len(rgc.current.Dash) > 0 { + liner = NewDashVertexConverter(rgc.current.Dash, rgc.current.DashOffset, stroker) + } else { + liner = stroker + } + for _, p := range paths { + Flatten(p, liner, rgc.current.Tr.GetScale()) + } + + rgc.paint(rgc.strokeRasterizer, rgc.current.StrokeColor) +} + +// Fill fills the paths with the color specified by SetFillColor +func (rgc *RasterGraphicContext) Fill(paths ...*Path) { + paths = append(paths, rgc.current.Path) + rgc.fillRasterizer.UseNonZeroWinding = rgc.current.FillRule == FillRuleWinding + + flattener := Transformer{Tr: rgc.current.Tr, Flattener: FtLineBuilder{Adder: rgc.fillRasterizer}} + for _, p := range paths { + Flatten(p, flattener, rgc.current.Tr.GetScale()) + } + + rgc.paint(rgc.fillRasterizer, rgc.current.FillColor) +} + +// FillStroke first fills the paths and than strokes them +func (rgc *RasterGraphicContext) FillStroke(paths ...*Path) { + paths = append(paths, rgc.current.Path) + rgc.fillRasterizer.UseNonZeroWinding = rgc.current.FillRule == FillRuleWinding + rgc.strokeRasterizer.UseNonZeroWinding = true + + flattener := Transformer{Tr: rgc.current.Tr, Flattener: FtLineBuilder{Adder: rgc.fillRasterizer}} + + stroker := NewLineStroker(rgc.current.Cap, rgc.current.Join, Transformer{Tr: rgc.current.Tr, Flattener: FtLineBuilder{Adder: rgc.strokeRasterizer}}) + stroker.HalfLineWidth = rgc.current.LineWidth / 2 + + var liner Flattener + if rgc.current.Dash != nil && len(rgc.current.Dash) > 0 { + liner = NewDashVertexConverter(rgc.current.Dash, rgc.current.DashOffset, stroker) + } else { + liner = stroker + } + + demux := DemuxFlattener{Flatteners: []Flattener{flattener, liner}} + for _, p := range paths { + Flatten(p, demux, rgc.current.Tr.GetScale()) + } + + // Fill + rgc.paint(rgc.fillRasterizer, rgc.current.FillColor) + // Stroke + rgc.paint(rgc.strokeRasterizer, rgc.current.StrokeColor) +} diff --git a/vendor/github.com/wcharczuk/go-chart/v2/drawing/stack_graphic_context.go b/vendor/github.com/wcharczuk/go-chart/v2/drawing/stack_graphic_context.go new file mode 100644 index 00000000..c3243c9c --- /dev/null +++ b/vendor/github.com/wcharczuk/go-chart/v2/drawing/stack_graphic_context.go @@ -0,0 +1,211 @@ +package drawing + +import ( + "image" + "image/color" + + "github.com/golang/freetype/truetype" +) + +// StackGraphicContext is a context that does thngs. +type StackGraphicContext struct { + current *ContextStack +} + +// ContextStack is a graphic context implementation. +type ContextStack struct { + Tr Matrix + Path *Path + LineWidth float64 + Dash []float64 + DashOffset float64 + StrokeColor color.Color + FillColor color.Color + FillRule FillRule + Cap LineCap + Join LineJoin + + FontSizePoints float64 + Font *truetype.Font + + Scale float64 + + Previous *ContextStack +} + +// NewStackGraphicContext Create a new Graphic context from an image +func NewStackGraphicContext() *StackGraphicContext { + gc := &StackGraphicContext{} + gc.current = new(ContextStack) + gc.current.Tr = NewIdentityMatrix() + gc.current.Path = new(Path) + gc.current.LineWidth = 1.0 + gc.current.StrokeColor = image.Black + gc.current.FillColor = image.White + gc.current.Cap = RoundCap + gc.current.FillRule = FillRuleEvenOdd + gc.current.Join = RoundJoin + gc.current.FontSizePoints = 10 + return gc +} + +// GetMatrixTransform returns the matrix transform. +func (gc *StackGraphicContext) GetMatrixTransform() Matrix { + return gc.current.Tr +} + +// SetMatrixTransform sets the matrix transform. +func (gc *StackGraphicContext) SetMatrixTransform(tr Matrix) { + gc.current.Tr = tr +} + +// ComposeMatrixTransform composes a transform into the current transform. +func (gc *StackGraphicContext) ComposeMatrixTransform(tr Matrix) { + gc.current.Tr.Compose(tr) +} + +// Rotate rotates the matrix transform by an angle in degrees. +func (gc *StackGraphicContext) Rotate(angle float64) { + gc.current.Tr.Rotate(angle) +} + +// Translate translates a transform. +func (gc *StackGraphicContext) Translate(tx, ty float64) { + gc.current.Tr.Translate(tx, ty) +} + +// Scale scales a transform. +func (gc *StackGraphicContext) Scale(sx, sy float64) { + gc.current.Tr.Scale(sx, sy) +} + +// SetStrokeColor sets the stroke color. +func (gc *StackGraphicContext) SetStrokeColor(c color.Color) { + gc.current.StrokeColor = c +} + +// SetFillColor sets the fill color. +func (gc *StackGraphicContext) SetFillColor(c color.Color) { + gc.current.FillColor = c +} + +// SetFillRule sets the fill rule. +func (gc *StackGraphicContext) SetFillRule(f FillRule) { + gc.current.FillRule = f +} + +// SetLineWidth sets the line width. +func (gc *StackGraphicContext) SetLineWidth(lineWidth float64) { + gc.current.LineWidth = lineWidth +} + +// SetLineCap sets the line cap. +func (gc *StackGraphicContext) SetLineCap(cap LineCap) { + gc.current.Cap = cap +} + +// SetLineJoin sets the line join. +func (gc *StackGraphicContext) SetLineJoin(join LineJoin) { + gc.current.Join = join +} + +// SetLineDash sets the line dash. +func (gc *StackGraphicContext) SetLineDash(dash []float64, dashOffset float64) { + gc.current.Dash = dash + gc.current.DashOffset = dashOffset +} + +// SetFontSize sets the font size. +func (gc *StackGraphicContext) SetFontSize(fontSizePoints float64) { + gc.current.FontSizePoints = fontSizePoints +} + +// GetFontSize gets the font size. +func (gc *StackGraphicContext) GetFontSize() float64 { + return gc.current.FontSizePoints +} + +// SetFont sets the current font. +func (gc *StackGraphicContext) SetFont(f *truetype.Font) { + gc.current.Font = f +} + +// GetFont returns the font. +func (gc *StackGraphicContext) GetFont() *truetype.Font { + return gc.current.Font +} + +// BeginPath starts a new path. +func (gc *StackGraphicContext) BeginPath() { + gc.current.Path.Clear() +} + +// IsEmpty returns if the path is empty. +func (gc *StackGraphicContext) IsEmpty() bool { + return gc.current.Path.IsEmpty() +} + +// LastPoint returns the last point on the path. +func (gc *StackGraphicContext) LastPoint() (x float64, y float64) { + return gc.current.Path.LastPoint() +} + +// MoveTo moves the cursor for a path. +func (gc *StackGraphicContext) MoveTo(x, y float64) { + gc.current.Path.MoveTo(x, y) +} + +// LineTo draws a line. +func (gc *StackGraphicContext) LineTo(x, y float64) { + gc.current.Path.LineTo(x, y) +} + +// QuadCurveTo draws a quad curve. +func (gc *StackGraphicContext) QuadCurveTo(cx, cy, x, y float64) { + gc.current.Path.QuadCurveTo(cx, cy, x, y) +} + +// CubicCurveTo draws a cubic curve. +func (gc *StackGraphicContext) CubicCurveTo(cx1, cy1, cx2, cy2, x, y float64) { + gc.current.Path.CubicCurveTo(cx1, cy1, cx2, cy2, x, y) +} + +// ArcTo draws an arc. +func (gc *StackGraphicContext) ArcTo(cx, cy, rx, ry, startAngle, delta float64) { + gc.current.Path.ArcTo(cx, cy, rx, ry, startAngle, delta) +} + +// Close closes a path. +func (gc *StackGraphicContext) Close() { + gc.current.Path.Close() +} + +// Save pushes a context onto the stack. +func (gc *StackGraphicContext) Save() { + context := new(ContextStack) + context.FontSizePoints = gc.current.FontSizePoints + context.Font = gc.current.Font + context.LineWidth = gc.current.LineWidth + context.StrokeColor = gc.current.StrokeColor + context.FillColor = gc.current.FillColor + context.FillRule = gc.current.FillRule + context.Dash = gc.current.Dash + context.DashOffset = gc.current.DashOffset + context.Cap = gc.current.Cap + context.Join = gc.current.Join + context.Path = gc.current.Path.Copy() + context.Font = gc.current.Font + context.Scale = gc.current.Scale + copy(context.Tr[:], gc.current.Tr[:]) + context.Previous = gc.current + gc.current = context +} + +// Restore restores the previous context. +func (gc *StackGraphicContext) Restore() { + if gc.current.Previous != nil { + oldContext := gc.current + gc.current = gc.current.Previous + oldContext.Previous = nil + } +} diff --git a/vendor/github.com/wcharczuk/go-chart/v2/drawing/stroker.go b/vendor/github.com/wcharczuk/go-chart/v2/drawing/stroker.go new file mode 100644 index 00000000..e3ae0705 --- /dev/null +++ b/vendor/github.com/wcharczuk/go-chart/v2/drawing/stroker.go @@ -0,0 +1,85 @@ +// Copyright 2010 The draw2d Authors. All rights reserved. +// created: 13/12/2010 by Laurent Le Goff + +package drawing + +// NewLineStroker creates a new line stroker. +func NewLineStroker(c LineCap, j LineJoin, flattener Flattener) *LineStroker { + l := new(LineStroker) + l.Flattener = flattener + l.HalfLineWidth = 0.5 + l.Cap = c + l.Join = j + return l +} + +// LineStroker draws the stroke portion of a line. +type LineStroker struct { + Flattener Flattener + HalfLineWidth float64 + Cap LineCap + Join LineJoin + vertices []float64 + rewind []float64 + x, y, nx, ny float64 +} + +// MoveTo implements the path builder interface. +func (l *LineStroker) MoveTo(x, y float64) { + l.x, l.y = x, y +} + +// LineTo implements the path builder interface. +func (l *LineStroker) LineTo(x, y float64) { + l.line(l.x, l.y, x, y) +} + +// LineJoin implements the path builder interface. +func (l *LineStroker) LineJoin() {} + +func (l *LineStroker) line(x1, y1, x2, y2 float64) { + dx := (x2 - x1) + dy := (y2 - y1) + d := vectorDistance(dx, dy) + if d != 0 { + nx := dy * l.HalfLineWidth / d + ny := -(dx * l.HalfLineWidth / d) + l.appendVertex(x1+nx, y1+ny, x2+nx, y2+ny, x1-nx, y1-ny, x2-nx, y2-ny) + l.x, l.y, l.nx, l.ny = x2, y2, nx, ny + } +} + +// Close implements the path builder interface. +func (l *LineStroker) Close() { + if len(l.vertices) > 1 { + l.appendVertex(l.vertices[0], l.vertices[1], l.rewind[0], l.rewind[1]) + } +} + +// End implements the path builder interface. +func (l *LineStroker) End() { + if len(l.vertices) > 1 { + l.Flattener.MoveTo(l.vertices[0], l.vertices[1]) + for i, j := 2, 3; j < len(l.vertices); i, j = i+2, j+2 { + l.Flattener.LineTo(l.vertices[i], l.vertices[j]) + } + } + for i, j := len(l.rewind)-2, len(l.rewind)-1; j > 0; i, j = i-2, j-2 { + l.Flattener.LineTo(l.rewind[i], l.rewind[j]) + } + if len(l.vertices) > 1 { + l.Flattener.LineTo(l.vertices[0], l.vertices[1]) + } + l.Flattener.End() + // reinit vertices + l.vertices = l.vertices[0:0] + l.rewind = l.rewind[0:0] + l.x, l.y, l.nx, l.ny = 0, 0, 0, 0 + +} + +func (l *LineStroker) appendVertex(vertices ...float64) { + s := len(vertices) / 2 + l.vertices = append(l.vertices, vertices[:s]...) + l.rewind = append(l.rewind, vertices[s:]...) +} diff --git a/vendor/github.com/wcharczuk/go-chart/v2/drawing/text.go b/vendor/github.com/wcharczuk/go-chart/v2/drawing/text.go new file mode 100644 index 00000000..d7ff5c28 --- /dev/null +++ b/vendor/github.com/wcharczuk/go-chart/v2/drawing/text.go @@ -0,0 +1,67 @@ +package drawing + +import ( + "github.com/golang/freetype/truetype" + "golang.org/x/image/math/fixed" +) + +// DrawContour draws the given closed contour at the given sub-pixel offset. +func DrawContour(path PathBuilder, ps []truetype.Point, dx, dy float64) { + if len(ps) == 0 { + return + } + startX, startY := pointToF64Point(ps[0]) + path.MoveTo(startX+dx, startY+dy) + q0X, q0Y, on0 := startX, startY, true + for _, p := range ps[1:] { + qX, qY := pointToF64Point(p) + on := p.Flags&0x01 != 0 + if on { + if on0 { + path.LineTo(qX+dx, qY+dy) + } else { + path.QuadCurveTo(q0X+dx, q0Y+dy, qX+dx, qY+dy) + } + } else if !on0 { + midX := (q0X + qX) / 2 + midY := (q0Y + qY) / 2 + path.QuadCurveTo(q0X+dx, q0Y+dy, midX+dx, midY+dy) + } + q0X, q0Y, on0 = qX, qY, on + } + // Close the curve. + if on0 { + path.LineTo(startX+dx, startY+dy) + } else { + path.QuadCurveTo(q0X+dx, q0Y+dy, startX+dx, startY+dy) + } +} + +// FontExtents contains font metric information. +type FontExtents struct { + // Ascent is the distance that the text + // extends above the baseline. + Ascent float64 + + // Descent is the distance that the text + // extends below the baseline. The descent + // is given as a negative value. + Descent float64 + + // Height is the distance from the lowest + // descending point to the highest ascending + // point. + Height float64 +} + +// Extents returns the FontExtents for a font. +// TODO needs to read this https://developer.apple.com/fonts/TrueType-Reference-Manual/RM02/Chap2.html#intro +func Extents(font *truetype.Font, size float64) FontExtents { + bounds := font.Bounds(fixed.Int26_6(font.FUnitsPerEm())) + scale := size / float64(font.FUnitsPerEm()) + return FontExtents{ + Ascent: float64(bounds.Max.Y) * scale, + Descent: float64(bounds.Min.Y) * scale, + Height: float64(bounds.Max.Y-bounds.Min.Y) * scale, + } +} diff --git a/vendor/github.com/wcharczuk/go-chart/v2/drawing/transformer.go b/vendor/github.com/wcharczuk/go-chart/v2/drawing/transformer.go new file mode 100644 index 00000000..4e317206 --- /dev/null +++ b/vendor/github.com/wcharczuk/go-chart/v2/drawing/transformer.go @@ -0,0 +1,39 @@ +// Copyright 2010 The draw2d Authors. All rights reserved. +// created: 13/12/2010 by Laurent Le Goff + +package drawing + +// Transformer apply the Matrix transformation tr +type Transformer struct { + Tr Matrix + Flattener Flattener +} + +// MoveTo implements the path builder interface. +func (t Transformer) MoveTo(x, y float64) { + u := x*t.Tr[0] + y*t.Tr[2] + t.Tr[4] + v := x*t.Tr[1] + y*t.Tr[3] + t.Tr[5] + t.Flattener.MoveTo(u, v) +} + +// LineTo implements the path builder interface. +func (t Transformer) LineTo(x, y float64) { + u := x*t.Tr[0] + y*t.Tr[2] + t.Tr[4] + v := x*t.Tr[1] + y*t.Tr[3] + t.Tr[5] + t.Flattener.LineTo(u, v) +} + +// LineJoin implements the path builder interface. +func (t Transformer) LineJoin() { + t.Flattener.LineJoin() +} + +// Close implements the path builder interface. +func (t Transformer) Close() { + t.Flattener.Close() +} + +// End implements the path builder interface. +func (t Transformer) End() { + t.Flattener.End() +} diff --git a/vendor/github.com/wcharczuk/go-chart/v2/drawing/util.go b/vendor/github.com/wcharczuk/go-chart/v2/drawing/util.go new file mode 100644 index 00000000..1eba3ff9 --- /dev/null +++ b/vendor/github.com/wcharczuk/go-chart/v2/drawing/util.go @@ -0,0 +1,68 @@ +package drawing + +import ( + "math" + + "golang.org/x/image/math/fixed" + + "github.com/golang/freetype/raster" + "github.com/golang/freetype/truetype" +) + +// PixelsToPoints returns the points for a given number of pixels at a DPI. +func PixelsToPoints(dpi, pixels float64) (points float64) { + points = (pixels * 72.0) / dpi + return +} + +// PointsToPixels returns the pixels for a given number of points at a DPI. +func PointsToPixels(dpi, points float64) (pixels float64) { + pixels = (points * dpi) / 72.0 + return +} + +func abs(i int) int { + if i < 0 { + return -i + } + return i +} + +func distance(x1, y1, x2, y2 float64) float64 { + return vectorDistance(x2-x1, y2-y1) +} + +func vectorDistance(dx, dy float64) float64 { + return float64(math.Sqrt(dx*dx + dy*dy)) +} + +func toFtCap(c LineCap) raster.Capper { + switch c { + case RoundCap: + return raster.RoundCapper + case ButtCap: + return raster.ButtCapper + case SquareCap: + return raster.SquareCapper + } + return raster.RoundCapper +} + +func toFtJoin(j LineJoin) raster.Joiner { + switch j { + case RoundJoin: + return raster.RoundJoiner + case BevelJoin: + return raster.BevelJoiner + } + return raster.RoundJoiner +} + +func pointToF64Point(p truetype.Point) (x, y float64) { + return fUnitsToFloat64(p.X), -fUnitsToFloat64(p.Y) +} + +func fUnitsToFloat64(x fixed.Int26_6) float64 { + scaled := x << 2 + return float64(scaled/256) + float64(scaled%256)/256.0 +} diff --git a/vendor/github.com/wcharczuk/go-chart/v2/ema_series.go b/vendor/github.com/wcharczuk/go-chart/v2/ema_series.go new file mode 100644 index 00000000..44415b58 --- /dev/null +++ b/vendor/github.com/wcharczuk/go-chart/v2/ema_series.go @@ -0,0 +1,131 @@ +package chart + +import "fmt" + +const ( + // DefaultEMAPeriod is the default EMA period used in the sigma calculation. + DefaultEMAPeriod = 12 +) + +// Interface Assertions. +var ( + _ Series = (*EMASeries)(nil) + _ FirstValuesProvider = (*EMASeries)(nil) + _ LastValuesProvider = (*EMASeries)(nil) +) + +// EMASeries is a computed series. +type EMASeries struct { + Name string + Style Style + YAxis YAxisType + + Period int + InnerSeries ValuesProvider + + cache []float64 +} + +// GetName returns the name of the time series. +func (ema EMASeries) GetName() string { + return ema.Name +} + +// GetStyle returns the line style. +func (ema EMASeries) GetStyle() Style { + return ema.Style +} + +// GetYAxis returns which YAxis the series draws on. +func (ema EMASeries) GetYAxis() YAxisType { + return ema.YAxis +} + +// GetPeriod returns the window size. +func (ema EMASeries) GetPeriod() int { + if ema.Period == 0 { + return DefaultEMAPeriod + } + return ema.Period +} + +// Len returns the number of elements in the series. +func (ema EMASeries) Len() int { + return ema.InnerSeries.Len() +} + +// GetSigma returns the smoothing factor for the serise. +func (ema EMASeries) GetSigma() float64 { + return 2.0 / (float64(ema.GetPeriod()) + 1) +} + +// GetValues gets a value at a given index. +func (ema *EMASeries) GetValues(index int) (x, y float64) { + if ema.InnerSeries == nil { + return + } + if len(ema.cache) == 0 { + ema.ensureCachedValues() + } + vx, _ := ema.InnerSeries.GetValues(index) + x = vx + y = ema.cache[index] + return +} + +// GetFirstValues computes the first moving average value. +func (ema *EMASeries) GetFirstValues() (x, y float64) { + if ema.InnerSeries == nil { + return + } + if len(ema.cache) == 0 { + ema.ensureCachedValues() + } + x, _ = ema.InnerSeries.GetValues(0) + y = ema.cache[0] + return +} + +// GetLastValues computes the last moving average value but walking back window size samples, +// and recomputing the last moving average chunk. +func (ema *EMASeries) GetLastValues() (x, y float64) { + if ema.InnerSeries == nil { + return + } + if len(ema.cache) == 0 { + ema.ensureCachedValues() + } + lastIndex := ema.InnerSeries.Len() - 1 + x, _ = ema.InnerSeries.GetValues(lastIndex) + y = ema.cache[lastIndex] + return +} + +func (ema *EMASeries) ensureCachedValues() { + seriesLength := ema.InnerSeries.Len() + ema.cache = make([]float64, seriesLength) + sigma := ema.GetSigma() + for x := 0; x < seriesLength; x++ { + _, y := ema.InnerSeries.GetValues(x) + if x == 0 { + ema.cache[x] = y + continue + } + previousEMA := ema.cache[x-1] + ema.cache[x] = ((y - previousEMA) * sigma) + previousEMA + } +} + +// Render renders the series. +func (ema *EMASeries) Render(r Renderer, canvasBox Box, xrange, yrange Range, defaults Style) { + style := ema.Style.InheritFrom(defaults) + Draw.LineSeries(r, canvasBox, xrange, yrange, style, ema) +} + +// Validate validates the series. +func (ema *EMASeries) Validate() error { + if ema.InnerSeries == nil { + return fmt.Errorf("ema series requires InnerSeries to be set") + } + return nil +} diff --git a/vendor/github.com/wcharczuk/go-chart/v2/fileutil.go b/vendor/github.com/wcharczuk/go-chart/v2/fileutil.go new file mode 100644 index 00000000..f1a77687 --- /dev/null +++ b/vendor/github.com/wcharczuk/go-chart/v2/fileutil.go @@ -0,0 +1,49 @@ +package chart + +import ( + "bufio" + "io" + "os" +) + +// ReadLines reads a file and calls the handler for each line. +func ReadLines(filePath string, handler func(string) error) error { + f, err := os.Open(filePath) + if err != nil { + return err + } + defer f.Close() + + scanner := bufio.NewScanner(f) + for scanner.Scan() { + line := scanner.Text() + err = handler(line) + if err != nil { + return err + } + } + return nil +} + +// ReadChunks reads a file in `chunkSize` pieces, dispatched to the handler. +func ReadChunks(filePath string, chunkSize int, handler func([]byte) error) error { + f, err := os.Open(filePath) + if err != nil { + return err + } + defer f.Close() + + chunk := make([]byte, chunkSize) + for { + readBytes, err := f.Read(chunk) + if err == io.EOF { + break + } + readData := chunk[:readBytes] + err = handler(readData) + if err != nil { + return err + } + } + return nil +} diff --git a/vendor/github.com/wcharczuk/go-chart/v2/first_value_annotation.go b/vendor/github.com/wcharczuk/go-chart/v2/first_value_annotation.go new file mode 100644 index 00000000..2b214b34 --- /dev/null +++ b/vendor/github.com/wcharczuk/go-chart/v2/first_value_annotation.go @@ -0,0 +1,37 @@ +package chart + +import "fmt" + +// FirstValueAnnotation returns an annotation series of just the first value of a value provider as an annotation. +func FirstValueAnnotation(innerSeries ValuesProvider, vfs ...ValueFormatter) AnnotationSeries { + var vf ValueFormatter + if len(vfs) > 0 { + vf = vfs[0] + } else if typed, isTyped := innerSeries.(ValueFormatterProvider); isTyped { + _, vf = typed.GetValueFormatters() + } else { + vf = FloatValueFormatter + } + + var firstValue Value2 + if typed, isTyped := innerSeries.(FirstValuesProvider); isTyped { + firstValue.XValue, firstValue.YValue = typed.GetFirstValues() + firstValue.Label = vf(firstValue.YValue) + } else { + firstValue.XValue, firstValue.YValue = innerSeries.GetValues(0) + firstValue.Label = vf(firstValue.YValue) + } + + var seriesName string + var seriesStyle Style + if typed, isTyped := innerSeries.(Series); isTyped { + seriesName = fmt.Sprintf("%s - First Value", typed.GetName()) + seriesStyle = typed.GetStyle() + } + + return AnnotationSeries{ + Name: seriesName, + Style: seriesStyle, + Annotations: []Value2{firstValue}, + } +} diff --git a/vendor/github.com/wcharczuk/go-chart/v2/font.go b/vendor/github.com/wcharczuk/go-chart/v2/font.go new file mode 100644 index 00000000..401143bc --- /dev/null +++ b/vendor/github.com/wcharczuk/go-chart/v2/font.go @@ -0,0 +1,29 @@ +package chart + +import ( + "sync" + + "github.com/golang/freetype/truetype" + "github.com/wcharczuk/go-chart/v2/roboto" +) + +var ( + _defaultFontLock sync.Mutex + _defaultFont *truetype.Font +) + +// GetDefaultFont returns the default font (Roboto-Medium). +func GetDefaultFont() (*truetype.Font, error) { + if _defaultFont == nil { + _defaultFontLock.Lock() + defer _defaultFontLock.Unlock() + if _defaultFont == nil { + font, err := truetype.Parse(roboto.Roboto) + if err != nil { + return nil, err + } + _defaultFont = font + } + } + return _defaultFont, nil +} diff --git a/vendor/github.com/wcharczuk/go-chart/v2/go.mod b/vendor/github.com/wcharczuk/go-chart/v2/go.mod new file mode 100644 index 00000000..3824b217 --- /dev/null +++ b/vendor/github.com/wcharczuk/go-chart/v2/go.mod @@ -0,0 +1,8 @@ +module github.com/wcharczuk/go-chart/v2 + +go 1.15 + +require ( + github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0 + golang.org/x/image v0.0.0-20200927104501-e162460cd6b5 +) diff --git a/vendor/github.com/wcharczuk/go-chart/v2/go.sum b/vendor/github.com/wcharczuk/go-chart/v2/go.sum new file mode 100644 index 00000000..066121a9 --- /dev/null +++ b/vendor/github.com/wcharczuk/go-chart/v2/go.sum @@ -0,0 +1,5 @@ +github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0 h1:DACJavvAHhabrF08vX0COfcOBJRhZ8lUbR+ZWIs0Y5g= +github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k= +golang.org/x/image v0.0.0-20200927104501-e162460cd6b5 h1:QelT11PB4FXiDEXucrfNckHoFxwt8USGY1ajP1ZF5lM= +golang.org/x/image v0.0.0-20200927104501-e162460cd6b5/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= diff --git a/vendor/github.com/wcharczuk/go-chart/v2/grid_line.go b/vendor/github.com/wcharczuk/go-chart/v2/grid_line.go new file mode 100644 index 00000000..80274bda --- /dev/null +++ b/vendor/github.com/wcharczuk/go-chart/v2/grid_line.go @@ -0,0 +1,72 @@ +package chart + +// GridLineProvider is a type that provides grid lines. +type GridLineProvider interface { + GetGridLines(ticks []Tick, isVertical bool, majorStyle, minorStyle Style) []GridLine +} + +// GridLine is a line on a graph canvas. +type GridLine struct { + IsMinor bool + Style Style + Value float64 +} + +// Major returns if the gridline is a `major` line. +func (gl GridLine) Major() bool { + return !gl.IsMinor +} + +// Minor returns if the gridline is a `minor` line. +func (gl GridLine) Minor() bool { + return gl.IsMinor +} + +// Render renders the gridline +func (gl GridLine) Render(r Renderer, canvasBox Box, ra Range, isVertical bool, defaults Style) { + r.SetStrokeColor(gl.Style.GetStrokeColor(defaults.GetStrokeColor())) + r.SetStrokeWidth(gl.Style.GetStrokeWidth(defaults.GetStrokeWidth())) + r.SetStrokeDashArray(gl.Style.GetStrokeDashArray(defaults.GetStrokeDashArray())) + + if isVertical { + lineLeft := canvasBox.Left + ra.Translate(gl.Value) + lineBottom := canvasBox.Bottom + lineTop := canvasBox.Top + + r.MoveTo(lineLeft, lineBottom) + r.LineTo(lineLeft, lineTop) + r.Stroke() + } else { + lineLeft := canvasBox.Left + lineRight := canvasBox.Right + lineHeight := canvasBox.Bottom - ra.Translate(gl.Value) + + r.MoveTo(lineLeft, lineHeight) + r.LineTo(lineRight, lineHeight) + r.Stroke() + } +} + +// GenerateGridLines generates grid lines. +func GenerateGridLines(ticks []Tick, majorStyle, minorStyle Style) []GridLine { + var gl []GridLine + isMinor := false + + if len(ticks) < 3 { + return gl + } + + for _, t := range ticks[1 : len(ticks)-1] { + s := majorStyle + if isMinor { + s = minorStyle + } + gl = append(gl, GridLine{ + Style: s, + IsMinor: isMinor, + Value: t.Value, + }) + isMinor = !isMinor + } + return gl +} diff --git a/vendor/github.com/wcharczuk/go-chart/v2/histogram_series.go b/vendor/github.com/wcharczuk/go-chart/v2/histogram_series.go new file mode 100644 index 00000000..a21571da --- /dev/null +++ b/vendor/github.com/wcharczuk/go-chart/v2/histogram_series.go @@ -0,0 +1,67 @@ +package chart + +import "fmt" + +// HistogramSeries is a special type of series that draws as a histogram. +// Some peculiarities; it will always be lower bounded at 0 (at the very least). +// This may alter ranges a bit and generally you want to put a histogram series on it's own y-axis. +type HistogramSeries struct { + Name string + Style Style + YAxis YAxisType + InnerSeries ValuesProvider +} + +// GetName implements Series.GetName. +func (hs HistogramSeries) GetName() string { + return hs.Name +} + +// GetStyle implements Series.GetStyle. +func (hs HistogramSeries) GetStyle() Style { + return hs.Style +} + +// GetYAxis returns which yaxis the series is mapped to. +func (hs HistogramSeries) GetYAxis() YAxisType { + return hs.YAxis +} + +// Len implements BoundedValuesProvider.Len. +func (hs HistogramSeries) Len() int { + return hs.InnerSeries.Len() +} + +// GetValues implements ValuesProvider.GetValues. +func (hs HistogramSeries) GetValues(index int) (x, y float64) { + return hs.InnerSeries.GetValues(index) +} + +// GetBoundedValues implements BoundedValuesProvider.GetBoundedValue +func (hs HistogramSeries) GetBoundedValues(index int) (x, y1, y2 float64) { + vx, vy := hs.InnerSeries.GetValues(index) + + x = vx + + if vy > 0 { + y1 = vy + return + } + + y2 = vy + return +} + +// Render implements Series.Render. +func (hs HistogramSeries) Render(r Renderer, canvasBox Box, xrange, yrange Range, defaults Style) { + style := hs.Style.InheritFrom(defaults) + Draw.HistogramSeries(r, canvasBox, xrange, yrange, style, hs) +} + +// Validate validates the series. +func (hs HistogramSeries) Validate() error { + if hs.InnerSeries == nil { + return fmt.Errorf("histogram series requires InnerSeries to be set") + } + return nil +} diff --git a/vendor/github.com/wcharczuk/go-chart/v2/image_writer.go b/vendor/github.com/wcharczuk/go-chart/v2/image_writer.go new file mode 100644 index 00000000..85ce0c07 --- /dev/null +++ b/vendor/github.com/wcharczuk/go-chart/v2/image_writer.go @@ -0,0 +1,42 @@ +package chart + +import ( + "bytes" + "errors" + "image" + "image/png" +) + +// RGBACollector is a render target for a chart. +type RGBACollector interface { + SetRGBA(i *image.RGBA) +} + +// ImageWriter is a special type of io.Writer that produces a final image. +type ImageWriter struct { + rgba *image.RGBA + contents *bytes.Buffer +} + +func (ir *ImageWriter) Write(buffer []byte) (int, error) { + if ir.contents == nil { + ir.contents = bytes.NewBuffer([]byte{}) + } + return ir.contents.Write(buffer) +} + +// SetRGBA sets a raw version of the image. +func (ir *ImageWriter) SetRGBA(i *image.RGBA) { + ir.rgba = i +} + +// Image returns an *image.Image for the result. +func (ir *ImageWriter) Image() (image.Image, error) { + if ir.rgba != nil { + return ir.rgba, nil + } + if ir.contents != nil && ir.contents.Len() > 0 { + return png.Decode(ir.contents) + } + return nil, errors.New("no valid sources for image data, cannot continue") +} diff --git a/vendor/github.com/wcharczuk/go-chart/v2/jet.go b/vendor/github.com/wcharczuk/go-chart/v2/jet.go new file mode 100644 index 00000000..cce8c856 --- /dev/null +++ b/vendor/github.com/wcharczuk/go-chart/v2/jet.go @@ -0,0 +1,33 @@ +package chart + +import "github.com/wcharczuk/go-chart/v2/drawing" + +// Jet is a color map provider based on matlab's jet color map. +func Jet(v, vmin, vmax float64) drawing.Color { + c := drawing.Color{R: 0xff, G: 0xff, B: 0xff, A: 0xff} // white + var dv float64 + + if v < vmin { + v = vmin + } + if v > vmax { + v = vmax + } + dv = vmax - vmin + + if v < (vmin + 0.25*dv) { + c.R = 0 + c.G = drawing.ColorChannelFromFloat(4 * (v - vmin) / dv) + } else if v < (vmin + 0.5*dv) { + c.R = 0 + c.B = drawing.ColorChannelFromFloat(1 + 4*(vmin+0.25*dv-v)/dv) + } else if v < (vmin + 0.75*dv) { + c.R = drawing.ColorChannelFromFloat(4 * (v - vmin - 0.5*dv) / dv) + c.B = 0 + } else { + c.G = drawing.ColorChannelFromFloat(1 + 4*(vmin+0.75*dv-v)/dv) + c.B = 0 + } + + return c +} diff --git a/vendor/github.com/wcharczuk/go-chart/v2/last_value_annotation_series.go b/vendor/github.com/wcharczuk/go-chart/v2/last_value_annotation_series.go new file mode 100644 index 00000000..550c3679 --- /dev/null +++ b/vendor/github.com/wcharczuk/go-chart/v2/last_value_annotation_series.go @@ -0,0 +1,37 @@ +package chart + +import "fmt" + +// LastValueAnnotationSeries returns an annotation series of just the last value of a value provider. +func LastValueAnnotationSeries(innerSeries ValuesProvider, vfs ...ValueFormatter) AnnotationSeries { + var vf ValueFormatter + if len(vfs) > 0 { + vf = vfs[0] + } else if typed, isTyped := innerSeries.(ValueFormatterProvider); isTyped { + _, vf = typed.GetValueFormatters() + } else { + vf = FloatValueFormatter + } + + var lastValue Value2 + if typed, isTyped := innerSeries.(LastValuesProvider); isTyped { + lastValue.XValue, lastValue.YValue = typed.GetLastValues() + lastValue.Label = vf(lastValue.YValue) + } else { + lastValue.XValue, lastValue.YValue = innerSeries.GetValues(innerSeries.Len() - 1) + lastValue.Label = vf(lastValue.YValue) + } + + var seriesName string + var seriesStyle Style + if typed, isTyped := innerSeries.(Series); isTyped { + seriesName = fmt.Sprintf("%s - Last Value", typed.GetName()) + seriesStyle = typed.GetStyle() + } + + return AnnotationSeries{ + Name: seriesName, + Style: seriesStyle, + Annotations: []Value2{lastValue}, + } +} diff --git a/vendor/github.com/wcharczuk/go-chart/v2/legend.go b/vendor/github.com/wcharczuk/go-chart/v2/legend.go new file mode 100644 index 00000000..fbd48ed0 --- /dev/null +++ b/vendor/github.com/wcharczuk/go-chart/v2/legend.go @@ -0,0 +1,331 @@ +package chart + +import ( + "github.com/wcharczuk/go-chart/v2/drawing" +) + +// Legend returns a legend renderable function. +func Legend(c *Chart, userDefaults ...Style) Renderable { + return func(r Renderer, cb Box, chartDefaults Style) { + legendDefaults := Style{ + FillColor: drawing.ColorWhite, + FontColor: DefaultTextColor, + FontSize: 8.0, + StrokeColor: DefaultAxisColor, + StrokeWidth: DefaultAxisLineWidth, + } + + var legendStyle Style + if len(userDefaults) > 0 { + legendStyle = userDefaults[0].InheritFrom(chartDefaults.InheritFrom(legendDefaults)) + } else { + legendStyle = chartDefaults.InheritFrom(legendDefaults) + } + + // DEFAULTS + legendPadding := Box{ + Top: 5, + Left: 5, + Right: 5, + Bottom: 5, + } + lineTextGap := 5 + lineLengthMinimum := 25 + + var labels []string + var lines []Style + for index, s := range c.Series { + if !s.GetStyle().Hidden { + if _, isAnnotationSeries := s.(AnnotationSeries); !isAnnotationSeries { + labels = append(labels, s.GetName()) + lines = append(lines, s.GetStyle().InheritFrom(c.styleDefaultsSeries(index))) + } + } + } + + legend := Box{ + Top: cb.Top, + Left: cb.Left, + // bottom and right will be sized by the legend content + relevant padding. + } + + legendContent := Box{ + Top: legend.Top + legendPadding.Top, + Left: legend.Left + legendPadding.Left, + Right: legend.Left + legendPadding.Left, + Bottom: legend.Top + legendPadding.Top, + } + + legendStyle.GetTextOptions().WriteToRenderer(r) + + // measure + labelCount := 0 + for x := 0; x < len(labels); x++ { + if len(labels[x]) > 0 { + tb := r.MeasureText(labels[x]) + if labelCount > 0 { + legendContent.Bottom += DefaultMinimumTickVerticalSpacing + } + legendContent.Bottom += tb.Height() + right := legendContent.Left + tb.Width() + lineTextGap + lineLengthMinimum + legendContent.Right = MaxInt(legendContent.Right, right) + labelCount++ + } + } + + legend = legend.Grow(legendContent) + legend.Right = legendContent.Right + legendPadding.Right + legend.Bottom = legendContent.Bottom + legendPadding.Bottom + + Draw.Box(r, legend, legendStyle) + + legendStyle.GetTextOptions().WriteToRenderer(r) + + ycursor := legendContent.Top + tx := legendContent.Left + legendCount := 0 + var label string + for x := 0; x < len(labels); x++ { + label = labels[x] + if len(label) > 0 { + if legendCount > 0 { + ycursor += DefaultMinimumTickVerticalSpacing + } + + tb := r.MeasureText(label) + + ty := ycursor + tb.Height() + r.Text(label, tx, ty) + + th2 := tb.Height() >> 1 + + lx := tx + tb.Width() + lineTextGap + ly := ty - th2 + lx2 := legendContent.Right - legendPadding.Right + + r.SetStrokeColor(lines[x].GetStrokeColor()) + r.SetStrokeWidth(lines[x].GetStrokeWidth()) + r.SetStrokeDashArray(lines[x].GetStrokeDashArray()) + + r.MoveTo(lx, ly) + r.LineTo(lx2, ly) + r.Stroke() + + ycursor += tb.Height() + legendCount++ + } + } + } +} + +// LegendThin is a legend that doesn't obscure the chart area. +func LegendThin(c *Chart, userDefaults ...Style) Renderable { + return func(r Renderer, cb Box, chartDefaults Style) { + legendDefaults := Style{ + FillColor: drawing.ColorWhite, + FontColor: DefaultTextColor, + FontSize: 8.0, + StrokeColor: DefaultAxisColor, + StrokeWidth: DefaultAxisLineWidth, + Padding: Box{ + Top: 2, + Left: 7, + Right: 7, + Bottom: 5, + }, + } + + var legendStyle Style + if len(userDefaults) > 0 { + legendStyle = userDefaults[0].InheritFrom(chartDefaults.InheritFrom(legendDefaults)) + } else { + legendStyle = chartDefaults.InheritFrom(legendDefaults) + } + + r.SetFont(legendStyle.GetFont()) + r.SetFontColor(legendStyle.GetFontColor()) + r.SetFontSize(legendStyle.GetFontSize()) + + var labels []string + var lines []Style + for index, s := range c.Series { + if !s.GetStyle().Hidden { + if _, isAnnotationSeries := s.(AnnotationSeries); !isAnnotationSeries { + labels = append(labels, s.GetName()) + lines = append(lines, s.GetStyle().InheritFrom(c.styleDefaultsSeries(index))) + } + } + } + + var textHeight int + var textWidth int + var textBox Box + for x := 0; x < len(labels); x++ { + if len(labels[x]) > 0 { + textBox = r.MeasureText(labels[x]) + textHeight = MaxInt(textBox.Height(), textHeight) + textWidth = MaxInt(textBox.Width(), textWidth) + } + } + + legendBoxHeight := textHeight + legendStyle.Padding.Top + legendStyle.Padding.Bottom + chartPadding := cb.Top + legendYMargin := (chartPadding - legendBoxHeight) >> 1 + + legendBox := Box{ + Left: cb.Left, + Right: cb.Right, + Top: legendYMargin, + Bottom: legendYMargin + legendBoxHeight, + } + + Draw.Box(r, legendBox, legendDefaults) + + r.SetFont(legendStyle.GetFont()) + r.SetFontColor(legendStyle.GetFontColor()) + r.SetFontSize(legendStyle.GetFontSize()) + + lineTextGap := 5 + lineLengthMinimum := 25 + + tx := legendBox.Left + legendStyle.Padding.Left + ty := legendYMargin + legendStyle.Padding.Top + textHeight + var label string + var lx, ly int + th2 := textHeight >> 1 + for index := range labels { + label = labels[index] + if len(label) > 0 { + textBox = r.MeasureText(label) + r.Text(label, tx, ty) + + lx = tx + textBox.Width() + lineTextGap + ly = ty - th2 + + r.SetStrokeColor(lines[index].GetStrokeColor()) + r.SetStrokeWidth(lines[index].GetStrokeWidth()) + r.SetStrokeDashArray(lines[index].GetStrokeDashArray()) + + r.MoveTo(lx, ly) + r.LineTo(lx+lineLengthMinimum, ly) + r.Stroke() + + tx += textBox.Width() + DefaultMinimumTickHorizontalSpacing + lineTextGap + lineLengthMinimum + } + } + } +} + +// LegendLeft is a legend that is designed for longer series lists. +func LegendLeft(c *Chart, userDefaults ...Style) Renderable { + return func(r Renderer, cb Box, chartDefaults Style) { + legendDefaults := Style{ + FillColor: drawing.ColorWhite, + FontColor: DefaultTextColor, + FontSize: 8.0, + StrokeColor: DefaultAxisColor, + StrokeWidth: DefaultAxisLineWidth, + } + + var legendStyle Style + if len(userDefaults) > 0 { + legendStyle = userDefaults[0].InheritFrom(chartDefaults.InheritFrom(legendDefaults)) + } else { + legendStyle = chartDefaults.InheritFrom(legendDefaults) + } + + // DEFAULTS + legendPadding := Box{ + Top: 5, + Left: 5, + Right: 5, + Bottom: 5, + } + lineTextGap := 5 + lineLengthMinimum := 25 + + var labels []string + var lines []Style + for index, s := range c.Series { + if !s.GetStyle().Hidden { + if _, isAnnotationSeries := s.(AnnotationSeries); !isAnnotationSeries { + labels = append(labels, s.GetName()) + lines = append(lines, s.GetStyle().InheritFrom(c.styleDefaultsSeries(index))) + } + } + } + + legend := Box{ + Top: 5, + Left: 5, + // bottom and right will be sized by the legend content + relevant padding. + } + + legendContent := Box{ + Top: legend.Top + legendPadding.Top, + Left: legend.Left + legendPadding.Left, + Right: legend.Left + legendPadding.Left, + Bottom: legend.Top + legendPadding.Top, + } + + legendStyle.GetTextOptions().WriteToRenderer(r) + + // measure + labelCount := 0 + for x := 0; x < len(labels); x++ { + if len(labels[x]) > 0 { + tb := r.MeasureText(labels[x]) + if labelCount > 0 { + legendContent.Bottom += DefaultMinimumTickVerticalSpacing + } + legendContent.Bottom += tb.Height() + right := legendContent.Left + tb.Width() + lineTextGap + lineLengthMinimum + legendContent.Right = MaxInt(legendContent.Right, right) + labelCount++ + } + } + + legend = legend.Grow(legendContent) + legend.Right = legendContent.Right + legendPadding.Right + legend.Bottom = legendContent.Bottom + legendPadding.Bottom + + Draw.Box(r, legend, legendStyle) + + legendStyle.GetTextOptions().WriteToRenderer(r) + + ycursor := legendContent.Top + tx := legendContent.Left + legendCount := 0 + var label string + for x := 0; x < len(labels); x++ { + label = labels[x] + if len(label) > 0 { + if legendCount > 0 { + ycursor += DefaultMinimumTickVerticalSpacing + } + + tb := r.MeasureText(label) + + ty := ycursor + tb.Height() + r.Text(label, tx, ty) + + th2 := tb.Height() >> 1 + + lx := tx + tb.Width() + lineTextGap + ly := ty - th2 + lx2 := legendContent.Right - legendPadding.Right + + r.SetStrokeColor(lines[x].GetStrokeColor()) + r.SetStrokeWidth(lines[x].GetStrokeWidth()) + r.SetStrokeDashArray(lines[x].GetStrokeDashArray()) + + r.MoveTo(lx, ly) + r.LineTo(lx2, ly) + r.Stroke() + + ycursor += tb.Height() + legendCount++ + } + } + } +} diff --git a/vendor/github.com/wcharczuk/go-chart/v2/linear_coefficient_provider.go b/vendor/github.com/wcharczuk/go-chart/v2/linear_coefficient_provider.go new file mode 100644 index 00000000..9701f6ba --- /dev/null +++ b/vendor/github.com/wcharczuk/go-chart/v2/linear_coefficient_provider.go @@ -0,0 +1,42 @@ +package chart + +// LinearCoefficientProvider is a type that returns linear cofficients. +type LinearCoefficientProvider interface { + Coefficients() (m, b, stdev, avg float64) +} + +// LinearCoefficients returns a fixed linear coefficient pair. +func LinearCoefficients(m, b float64) LinearCoefficientSet { + return LinearCoefficientSet{ + M: m, + B: b, + } +} + +// NormalizedLinearCoefficients returns a fixed linear coefficient pair. +func NormalizedLinearCoefficients(m, b, stdev, avg float64) LinearCoefficientSet { + return LinearCoefficientSet{ + M: m, + B: b, + StdDev: stdev, + Avg: avg, + } +} + +// LinearCoefficientSet is the m and b values for the linear equation in the form: +// y = (m*x) + b +type LinearCoefficientSet struct { + M float64 + B float64 + StdDev float64 + Avg float64 +} + +// Coefficients returns the coefficients. +func (lcs LinearCoefficientSet) Coefficients() (m, b, stdev, avg float64) { + m = lcs.M + b = lcs.B + stdev = lcs.StdDev + avg = lcs.Avg + return +} diff --git a/vendor/github.com/wcharczuk/go-chart/v2/linear_regression_series.go b/vendor/github.com/wcharczuk/go-chart/v2/linear_regression_series.go new file mode 100644 index 00000000..8ff8b1a5 --- /dev/null +++ b/vendor/github.com/wcharczuk/go-chart/v2/linear_regression_series.go @@ -0,0 +1,187 @@ +package chart + +import ( + "fmt" +) + +// Interface Assertions. +var ( + _ Series = (*LinearRegressionSeries)(nil) + _ FirstValuesProvider = (*LinearRegressionSeries)(nil) + _ LastValuesProvider = (*LinearRegressionSeries)(nil) + _ LinearCoefficientProvider = (*LinearRegressionSeries)(nil) +) + +// LinearRegressionSeries is a series that plots the n-nearest neighbors +// linear regression for the values. +type LinearRegressionSeries struct { + Name string + Style Style + YAxis YAxisType + + Limit int + Offset int + InnerSeries ValuesProvider + + m float64 + b float64 + avgx float64 + stddevx float64 +} + +// Coefficients returns the linear coefficients for the series. +func (lrs LinearRegressionSeries) Coefficients() (m, b, stdev, avg float64) { + if lrs.IsZero() { + lrs.computeCoefficients() + } + + m = lrs.m + b = lrs.b + stdev = lrs.stddevx + avg = lrs.avgx + return +} + +// GetName returns the name of the time series. +func (lrs LinearRegressionSeries) GetName() string { + return lrs.Name +} + +// GetStyle returns the line style. +func (lrs LinearRegressionSeries) GetStyle() Style { + return lrs.Style +} + +// GetYAxis returns which YAxis the series draws on. +func (lrs LinearRegressionSeries) GetYAxis() YAxisType { + return lrs.YAxis +} + +// Len returns the number of elements in the series. +func (lrs LinearRegressionSeries) Len() int { + return MinInt(lrs.GetLimit(), lrs.InnerSeries.Len()-lrs.GetOffset()) +} + +// GetLimit returns the window size. +func (lrs LinearRegressionSeries) GetLimit() int { + if lrs.Limit == 0 { + return lrs.InnerSeries.Len() + } + return lrs.Limit +} + +// GetEndIndex returns the effective limit end. +func (lrs LinearRegressionSeries) GetEndIndex() int { + windowEnd := lrs.GetOffset() + lrs.GetLimit() + innerSeriesLastIndex := lrs.InnerSeries.Len() - 1 + return MinInt(windowEnd, innerSeriesLastIndex) +} + +// GetOffset returns the data offset. +func (lrs LinearRegressionSeries) GetOffset() int { + if lrs.Offset == 0 { + return 0 + } + return lrs.Offset +} + +// GetValues gets a value at a given index. +func (lrs *LinearRegressionSeries) GetValues(index int) (x, y float64) { + if lrs.InnerSeries == nil || lrs.InnerSeries.Len() == 0 { + return + } + if lrs.IsZero() { + lrs.computeCoefficients() + } + offset := lrs.GetOffset() + effectiveIndex := MinInt(index+offset, lrs.InnerSeries.Len()) + x, y = lrs.InnerSeries.GetValues(effectiveIndex) + y = (lrs.m * lrs.normalize(x)) + lrs.b + return +} + +// GetFirstValues computes the first linear regression value. +func (lrs *LinearRegressionSeries) GetFirstValues() (x, y float64) { + if lrs.InnerSeries == nil || lrs.InnerSeries.Len() == 0 { + return + } + if lrs.IsZero() { + lrs.computeCoefficients() + } + x, y = lrs.InnerSeries.GetValues(0) + y = (lrs.m * lrs.normalize(x)) + lrs.b + return +} + +// GetLastValues computes the last linear regression value. +func (lrs *LinearRegressionSeries) GetLastValues() (x, y float64) { + if lrs.InnerSeries == nil || lrs.InnerSeries.Len() == 0 { + return + } + if lrs.IsZero() { + lrs.computeCoefficients() + } + endIndex := lrs.GetEndIndex() + x, y = lrs.InnerSeries.GetValues(endIndex) + y = (lrs.m * lrs.normalize(x)) + lrs.b + return +} + +// Render renders the series. +func (lrs *LinearRegressionSeries) Render(r Renderer, canvasBox Box, xrange, yrange Range, defaults Style) { + style := lrs.Style.InheritFrom(defaults) + Draw.LineSeries(r, canvasBox, xrange, yrange, style, lrs) +} + +// Validate validates the series. +func (lrs *LinearRegressionSeries) Validate() error { + if lrs.InnerSeries == nil { + return fmt.Errorf("linear regression series requires InnerSeries to be set") + } + return nil +} + +// IsZero returns if we've computed the coefficients or not. +func (lrs *LinearRegressionSeries) IsZero() bool { + return lrs.m == 0 && lrs.b == 0 +} + +// +// internal helpers +// + +func (lrs *LinearRegressionSeries) normalize(xvalue float64) float64 { + return (xvalue - lrs.avgx) / lrs.stddevx +} + +// computeCoefficients computes the `m` and `b` terms in the linear formula given by `y = mx+b`. +func (lrs *LinearRegressionSeries) computeCoefficients() { + startIndex := lrs.GetOffset() + endIndex := lrs.GetEndIndex() + + p := float64(endIndex - startIndex) + + xvalues := NewValueBufferWithCapacity(lrs.Len()) + for index := startIndex; index < endIndex; index++ { + x, _ := lrs.InnerSeries.GetValues(index) + xvalues.Enqueue(x) + } + + lrs.avgx = Seq{xvalues}.Average() + lrs.stddevx = Seq{xvalues}.StdDev() + + var sumx, sumy, sumxx, sumxy float64 + for index := startIndex; index < endIndex; index++ { + x, y := lrs.InnerSeries.GetValues(index) + + x = lrs.normalize(x) + + sumx += x + sumy += y + sumxx += x * x + sumxy += x * y + } + + lrs.m = (p*sumxy - sumx*sumy) / (p*sumxx - sumx*sumx) + lrs.b = (sumy / p) - (lrs.m * sumx / p) +} diff --git a/vendor/github.com/wcharczuk/go-chart/v2/linear_sequence.go b/vendor/github.com/wcharczuk/go-chart/v2/linear_sequence.go new file mode 100644 index 00000000..dda761b0 --- /dev/null +++ b/vendor/github.com/wcharczuk/go-chart/v2/linear_sequence.go @@ -0,0 +1,73 @@ +package chart + +// LinearRange returns an array of values representing the range from start to end, incremented by 1.0. +func LinearRange(start, end float64) []float64 { + return Seq{NewLinearSequence().WithStart(start).WithEnd(end).WithStep(1.0)}.Values() +} + +// LinearRangeWithStep returns the array values of a linear seq with a given start, end and optional step. +func LinearRangeWithStep(start, end, step float64) []float64 { + return Seq{NewLinearSequence().WithStart(start).WithEnd(end).WithStep(step)}.Values() +} + +// NewLinearSequence returns a new linear generator. +func NewLinearSequence() *LinearSeq { + return &LinearSeq{step: 1.0} +} + +// LinearSeq is a stepwise generator. +type LinearSeq struct { + start float64 + end float64 + step float64 +} + +// Start returns the start value. +func (lg LinearSeq) Start() float64 { + return lg.start +} + +// End returns the end value. +func (lg LinearSeq) End() float64 { + return lg.end +} + +// Step returns the step value. +func (lg LinearSeq) Step() float64 { + return lg.step +} + +// Len returns the number of elements in the seq. +func (lg LinearSeq) Len() int { + if lg.start < lg.end { + return int((lg.end-lg.start)/lg.step) + 1 + } + return int((lg.start-lg.end)/lg.step) + 1 +} + +// GetValue returns the value at a given index. +func (lg LinearSeq) GetValue(index int) float64 { + fi := float64(index) + if lg.start < lg.end { + return lg.start + (fi * lg.step) + } + return lg.start - (fi * lg.step) +} + +// WithStart sets the start and returns the linear generator. +func (lg *LinearSeq) WithStart(start float64) *LinearSeq { + lg.start = start + return lg +} + +// WithEnd sets the end and returns the linear generator. +func (lg *LinearSeq) WithEnd(end float64) *LinearSeq { + lg.end = end + return lg +} + +// WithStep sets the step and returns the linear generator. +func (lg *LinearSeq) WithStep(step float64) *LinearSeq { + lg.step = step + return lg +} diff --git a/vendor/github.com/wcharczuk/go-chart/v2/linear_series.go b/vendor/github.com/wcharczuk/go-chart/v2/linear_series.go new file mode 100644 index 00000000..89afa938 --- /dev/null +++ b/vendor/github.com/wcharczuk/go-chart/v2/linear_series.go @@ -0,0 +1,119 @@ +package chart + +import ( + "fmt" +) + +// Interface Assertions. +var ( + _ Series = (*LinearSeries)(nil) + _ FirstValuesProvider = (*LinearSeries)(nil) + _ LastValuesProvider = (*LinearSeries)(nil) +) + +// LinearSeries is a series that plots a line in a given domain. +type LinearSeries struct { + Name string + Style Style + YAxis YAxisType + + XValues []float64 + InnerSeries LinearCoefficientProvider + + m float64 + b float64 + stdev float64 + avg float64 +} + +// GetName returns the name of the time series. +func (ls LinearSeries) GetName() string { + return ls.Name +} + +// GetStyle returns the line style. +func (ls LinearSeries) GetStyle() Style { + return ls.Style +} + +// GetYAxis returns which YAxis the series draws on. +func (ls LinearSeries) GetYAxis() YAxisType { + return ls.YAxis +} + +// Len returns the number of elements in the series. +func (ls LinearSeries) Len() int { + return len(ls.XValues) +} + +// GetEndIndex returns the effective limit end. +func (ls LinearSeries) GetEndIndex() int { + return len(ls.XValues) - 1 +} + +// GetValues gets a value at a given index. +func (ls *LinearSeries) GetValues(index int) (x, y float64) { + if ls.InnerSeries == nil || len(ls.XValues) == 0 { + return + } + if ls.IsZero() { + ls.computeCoefficients() + } + x = ls.XValues[index] + y = (ls.m * ls.normalize(x)) + ls.b + return +} + +// GetFirstValues computes the first linear regression value. +func (ls *LinearSeries) GetFirstValues() (x, y float64) { + if ls.InnerSeries == nil || len(ls.XValues) == 0 { + return + } + if ls.IsZero() { + ls.computeCoefficients() + } + x, y = ls.GetValues(0) + return +} + +// GetLastValues computes the last linear regression value. +func (ls *LinearSeries) GetLastValues() (x, y float64) { + if ls.InnerSeries == nil || len(ls.XValues) == 0 { + return + } + if ls.IsZero() { + ls.computeCoefficients() + } + x, y = ls.GetValues(ls.GetEndIndex()) + return +} + +// Render renders the series. +func (ls *LinearSeries) Render(r Renderer, canvasBox Box, xrange, yrange Range, defaults Style) { + Draw.LineSeries(r, canvasBox, xrange, yrange, ls.Style.InheritFrom(defaults), ls) +} + +// Validate validates the series. +func (ls LinearSeries) Validate() error { + if ls.InnerSeries == nil { + return fmt.Errorf("linear regression series requires InnerSeries to be set") + } + return nil +} + +// IsZero returns if the linear series has computed coefficients or not. +func (ls LinearSeries) IsZero() bool { + return ls.m == 0 && ls.b == 0 +} + +// computeCoefficients computes the `m` and `b` terms in the linear formula given by `y = mx+b`. +func (ls *LinearSeries) computeCoefficients() { + ls.m, ls.b, ls.stdev, ls.avg = ls.InnerSeries.Coefficients() +} + +func (ls *LinearSeries) normalize(xvalue float64) float64 { + if ls.avg > 0 && ls.stdev > 0 { + return (xvalue - ls.avg) / ls.stdev + } + return xvalue +} diff --git a/vendor/github.com/wcharczuk/go-chart/v2/logger.go b/vendor/github.com/wcharczuk/go-chart/v2/logger.go new file mode 100644 index 00000000..28fc0036 --- /dev/null +++ b/vendor/github.com/wcharczuk/go-chart/v2/logger.go @@ -0,0 +1,148 @@ +package chart + +import ( + "fmt" + "io" + "os" + "time" +) + +var ( + _ Logger = (*StdoutLogger)(nil) +) + +// NewLogger returns a new logger. +func NewLogger(options ...LoggerOption) Logger { + stl := &StdoutLogger{ + TimeFormat: time.RFC3339Nano, + Stdout: os.Stdout, + Stderr: os.Stderr, + } + for _, option := range options { + option(stl) + } + return stl +} + +// Logger is a type that implements the logging interface. +type Logger interface { + Info(...interface{}) + Infof(string, ...interface{}) + Debug(...interface{}) + Debugf(string, ...interface{}) + Err(error) + FatalErr(error) + Error(...interface{}) + Errorf(string, ...interface{}) +} + +// Info logs an info message if the logger is set. +func Info(log Logger, arguments ...interface{}) { + if log == nil { + return + } + log.Info(arguments...) +} + +// Infof logs an info message if the logger is set. +func Infof(log Logger, format string, arguments ...interface{}) { + if log == nil { + return + } + log.Infof(format, arguments...) +} + +// Debug logs an debug message if the logger is set. +func Debug(log Logger, arguments ...interface{}) { + if log == nil { + return + } + log.Debug(arguments...) +} + +// Debugf logs an debug message if the logger is set. +func Debugf(log Logger, format string, arguments ...interface{}) { + if log == nil { + return + } + log.Debugf(format, arguments...) +} + +// LoggerOption mutates a stdout logger. +type LoggerOption = func(*StdoutLogger) + +//OptLoggerStdout sets the Stdout writer. +func OptLoggerStdout(wr io.Writer) LoggerOption { + return func(stl *StdoutLogger) { + stl.Stdout = wr + } +} + +// OptLoggerStderr sets the Stdout writer. +func OptLoggerStderr(wr io.Writer) LoggerOption { + return func(stl *StdoutLogger) { + stl.Stderr = wr + } +} + +// StdoutLogger is a basic logger. +type StdoutLogger struct { + TimeFormat string + Stdout io.Writer + Stderr io.Writer +} + +// Info writes an info message. +func (l *StdoutLogger) Info(arguments ...interface{}) { + l.Println(append([]interface{}{"[INFO]"}, arguments...)...) +} + +// Infof writes an info message. +func (l *StdoutLogger) Infof(format string, arguments ...interface{}) { + l.Println(append([]interface{}{"[INFO]"}, fmt.Sprintf(format, arguments...))...) +} + +// Debug writes an debug message. +func (l *StdoutLogger) Debug(arguments ...interface{}) { + l.Println(append([]interface{}{"[DEBUG]"}, arguments...)...) +} + +// Debugf writes an debug message. +func (l *StdoutLogger) Debugf(format string, arguments ...interface{}) { + l.Println(append([]interface{}{"[DEBUG]"}, fmt.Sprintf(format, arguments...))...) +} + +// Error writes an error message. +func (l *StdoutLogger) Error(arguments ...interface{}) { + l.Println(append([]interface{}{"[ERROR]"}, arguments...)...) +} + +// Errorf writes an error message. +func (l *StdoutLogger) Errorf(format string, arguments ...interface{}) { + l.Println(append([]interface{}{"[ERROR]"}, fmt.Sprintf(format, arguments...))...) +} + +// Err writes an error message. +func (l *StdoutLogger) Err(err error) { + if err != nil { + l.Println(append([]interface{}{"[ERROR]"}, err.Error())...) + } +} + +// FatalErr writes an error message and exits. +func (l *StdoutLogger) FatalErr(err error) { + if err != nil { + l.Println(append([]interface{}{"[FATAL]"}, err.Error())...) + os.Exit(1) + } +} + +// Println prints a new message. +func (l *StdoutLogger) Println(arguments ...interface{}) { + fmt.Fprintln(l.Stdout, append([]interface{}{time.Now().UTC().Format(l.TimeFormat)}, arguments...)...) +} + +// Errorln prints a new message. +func (l *StdoutLogger) Errorln(arguments ...interface{}) { + fmt.Fprintln(l.Stderr, append([]interface{}{time.Now().UTC().Format(l.TimeFormat)}, arguments...)...) +} diff --git a/vendor/github.com/wcharczuk/go-chart/v2/macd_series.go b/vendor/github.com/wcharczuk/go-chart/v2/macd_series.go new file mode 100644 index 00000000..6d040119 --- /dev/null +++ b/vendor/github.com/wcharczuk/go-chart/v2/macd_series.go @@ -0,0 +1,338 @@ +package chart + +import "fmt" + +const ( + // DefaultMACDPeriodPrimary is the long window. + DefaultMACDPeriodPrimary = 26 + // DefaultMACDPeriodSecondary is the short window. + DefaultMACDPeriodSecondary = 12 + // DefaultMACDSignalPeriod is the signal period to compute for the MACD. + DefaultMACDSignalPeriod = 9 +) + +// MACDSeries computes the difference between the MACD line and the MACD Signal line. +// It is used in technical analysis and gives a lagging indicator of momentum. +type MACDSeries struct { + Name string + Style Style + YAxis YAxisType + InnerSeries ValuesProvider + + PrimaryPeriod int + SecondaryPeriod int + SignalPeriod int + + signal *MACDSignalSeries + macdl *MACDLineSeries +} + +// Validate validates the series. +func (macd MACDSeries) Validate() error { + var err error + if macd.signal != nil { + err = macd.signal.Validate() + } + if err != nil { + return err + } + if macd.macdl != nil { + err = macd.macdl.Validate() + } + if err != nil { + return err + } + return nil +} + +// GetPeriods returns the primary and secondary periods. +func (macd MACDSeries) GetPeriods() (w1, w2, sig int) { + if macd.PrimaryPeriod == 0 { + w1 = DefaultMACDPeriodPrimary + } else { + w1 = macd.PrimaryPeriod + } + if macd.SecondaryPeriod == 0 { + w2 = DefaultMACDPeriodSecondary + } else { + w2 = macd.SecondaryPeriod + } + if macd.SignalPeriod == 0 { + sig = DefaultMACDSignalPeriod + } else { + sig = macd.SignalPeriod + } + return +} + +// GetName returns the name of the time series. +func (macd MACDSeries) GetName() string { + return macd.Name +} + +// GetStyle returns the line style. +func (macd MACDSeries) GetStyle() Style { + return macd.Style +} + +// GetYAxis returns which YAxis the series draws on. +func (macd MACDSeries) GetYAxis() YAxisType { + return macd.YAxis +} + +// Len returns the number of elements in the series. +func (macd MACDSeries) Len() int { + if macd.InnerSeries == nil { + return 0 + } + + return macd.InnerSeries.Len() +} + +// GetValues gets a value at a given index. For MACD it is the signal value. +func (macd *MACDSeries) GetValues(index int) (x float64, y float64) { + if macd.InnerSeries == nil { + return + } + + if macd.signal == nil || macd.macdl == nil { + macd.ensureChildSeries() + } + + _, lv := macd.macdl.GetValues(index) + _, sv := macd.signal.GetValues(index) + + x, _ = macd.InnerSeries.GetValues(index) + y = lv - sv + + return +} + +func (macd *MACDSeries) ensureChildSeries() { + w1, w2, sig := macd.GetPeriods() + + macd.signal = &MACDSignalSeries{ + InnerSeries: macd.InnerSeries, + PrimaryPeriod: w1, + SecondaryPeriod: w2, + SignalPeriod: sig, + } + + macd.macdl = &MACDLineSeries{ + InnerSeries: macd.InnerSeries, + PrimaryPeriod: w1, + SecondaryPeriod: w2, + } +} + +// MACDSignalSeries computes the EMA of the MACDLineSeries. +type MACDSignalSeries struct { + Name string + Style Style + YAxis YAxisType + InnerSeries ValuesProvider + + PrimaryPeriod int + SecondaryPeriod int + SignalPeriod int + + signal *EMASeries +} + +// Validate validates the series. +func (macds MACDSignalSeries) Validate() error { + if macds.signal != nil { + return macds.signal.Validate() + } + return nil +} + +// GetPeriods returns the primary and secondary periods. +func (macds MACDSignalSeries) GetPeriods() (w1, w2, sig int) { + if macds.PrimaryPeriod == 0 { + w1 = DefaultMACDPeriodPrimary + } else { + w1 = macds.PrimaryPeriod + } + if macds.SecondaryPeriod == 0 { + w2 = DefaultMACDPeriodSecondary + } else { + w2 = macds.SecondaryPeriod + } + if macds.SignalPeriod == 0 { + sig = DefaultMACDSignalPeriod + } else { + sig = macds.SignalPeriod + } + return +} + +// GetName returns the name of the time series. +func (macds MACDSignalSeries) GetName() string { + return macds.Name +} + +// GetStyle returns the line style. +func (macds MACDSignalSeries) GetStyle() Style { + return macds.Style +} + +// GetYAxis returns which YAxis the series draws on. +func (macds MACDSignalSeries) GetYAxis() YAxisType { + return macds.YAxis +} + +// Len returns the number of elements in the series. +func (macds *MACDSignalSeries) Len() int { + if macds.InnerSeries == nil { + return 0 + } + + return macds.InnerSeries.Len() +} + +// GetValues gets a value at a given index. For MACD it is the signal value. +func (macds *MACDSignalSeries) GetValues(index int) (x float64, y float64) { + if macds.InnerSeries == nil { + return + } + + if macds.signal == nil { + macds.ensureSignal() + } + x, _ = macds.InnerSeries.GetValues(index) + _, y = macds.signal.GetValues(index) + return +} + +func (macds *MACDSignalSeries) ensureSignal() { + w1, w2, sig := macds.GetPeriods() + + macds.signal = &EMASeries{ + InnerSeries: &MACDLineSeries{ + InnerSeries: macds.InnerSeries, + PrimaryPeriod: w1, + SecondaryPeriod: w2, + }, + Period: sig, + } +} + +// Render renders the series. +func (macds *MACDSignalSeries) Render(r Renderer, canvasBox Box, xrange, yrange Range, defaults Style) { + style := macds.Style.InheritFrom(defaults) + Draw.LineSeries(r, canvasBox, xrange, yrange, style, macds) +} + +// MACDLineSeries is a series that computes the inner ema1-ema2 value as a series. +type MACDLineSeries struct { + Name string + Style Style + YAxis YAxisType + InnerSeries ValuesProvider + + PrimaryPeriod int + SecondaryPeriod int + + ema1 *EMASeries + ema2 *EMASeries + + Sigma float64 +} + +// Validate validates the series. +func (macdl MACDLineSeries) Validate() error { + var err error + if macdl.ema1 != nil { + err = macdl.ema1.Validate() + } + if err != nil { + return err + } + if macdl.ema2 != nil { + err = macdl.ema2.Validate() + } + if err != nil { + return err + } + if macdl.InnerSeries == nil { + return fmt.Errorf("MACDLineSeries: must provide an inner series") + } + return nil +} + +// GetName returns the name of the time series. +func (macdl MACDLineSeries) GetName() string { + return macdl.Name +} + +// GetStyle returns the line style. +func (macdl MACDLineSeries) GetStyle() Style { + return macdl.Style +} + +// GetYAxis returns which YAxis the series draws on. +func (macdl MACDLineSeries) GetYAxis() YAxisType { + return macdl.YAxis +} + +// GetPeriods returns the primary and secondary periods. +func (macdl MACDLineSeries) GetPeriods() (w1, w2 int) { + if macdl.PrimaryPeriod == 0 { + w1 = DefaultMACDPeriodPrimary + } else { + w1 = macdl.PrimaryPeriod + } + if macdl.SecondaryPeriod == 0 { + w2 = DefaultMACDPeriodSecondary + } else { + w2 = macdl.SecondaryPeriod + } + return +} + +// Len returns the number of elements in the series. +func (macdl *MACDLineSeries) Len() int { + if macdl.InnerSeries == nil { + return 0 + } + + return macdl.InnerSeries.Len() +} + +// GetValues gets a value at a given index. For MACD it is the signal value. +func (macdl *MACDLineSeries) GetValues(index int) (x float64, y float64) { + if macdl.InnerSeries == nil { + return + } + if macdl.ema1 == nil && macdl.ema2 == nil { + macdl.ensureEMASeries() + } + + x, _ = macdl.InnerSeries.GetValues(index) + + _, emav1 := macdl.ema1.GetValues(index) + _, emav2 := macdl.ema2.GetValues(index) + + y = emav2 - emav1 + return +} + +func (macdl *MACDLineSeries) ensureEMASeries() { + w1, w2 := macdl.GetPeriods() + + macdl.ema1 = &EMASeries{ + InnerSeries: macdl.InnerSeries, + Period: w1, + } + macdl.ema2 = &EMASeries{ + InnerSeries: macdl.InnerSeries, + Period: w2, + } +} + +// Render renders the series. +func (macdl *MACDLineSeries) Render(r Renderer, canvasBox Box, xrange, yrange Range, defaults Style) { + style := macdl.Style.InheritFrom(defaults) + Draw.LineSeries(r, canvasBox, xrange, yrange, style, macdl) +} diff --git a/vendor/github.com/wcharczuk/go-chart/v2/mathutil.go b/vendor/github.com/wcharczuk/go-chart/v2/mathutil.go new file mode 100644 index 00000000..d1f07f9d --- /dev/null +++ b/vendor/github.com/wcharczuk/go-chart/v2/mathutil.go @@ -0,0 +1,252 @@ +package chart + +import "math" + +const ( + _pi = math.Pi + _2pi = 2 * math.Pi + _3pi4 = (3 * math.Pi) / 4.0 + _4pi3 = (4 * math.Pi) / 3.0 + _3pi2 = (3 * math.Pi) / 2.0 + _5pi4 = (5 * math.Pi) / 4.0 + _7pi4 = (7 * math.Pi) / 4.0 + _pi2 = math.Pi / 2.0 + _pi4 = math.Pi / 4.0 + _d2r = (math.Pi / 180.0) + _r2d = (180.0 / math.Pi) +) + +// MinMax returns the minimum and maximum of a given set of values. +func MinMax(values ...float64) (min, max float64) { + if len(values) == 0 { + return + } + + max = values[0] + min = values[0] + var value float64 + for index := 1; index < len(values); index++ { + value = values[index] + if value < min { + min = value + } + if value > max { + max = value + } + } + return +} + +// MinInt returns the minimum int. +func MinInt(values ...int) (min int) { + if len(values) == 0 { + return + } + + min = values[0] + var value int + for index := 1; index < len(values); index++ { + value = values[index] + if value < min { + min = value + } + } + return +} + +// MaxInt returns the maximum int. +func MaxInt(values ...int) (max int) { + if len(values) == 0 { + return + } + + max = values[0] + var value int + for index := 1; index < len(values); index++ { + value = values[index] + if value > max { + max = value + } + } + return +} + +// AbsInt returns the absolute value of an int. +func AbsInt(value int) int { + if value < 0 { + return -value + } + return value +} + +// DegreesToRadians returns degrees as radians. +func DegreesToRadians(degrees float64) float64 { + return degrees * _d2r +} + +// RadiansToDegrees translates a radian value to a degree value. +func RadiansToDegrees(value float64) float64 { + return math.Mod(value, _2pi) * _r2d +} + +// PercentToRadians converts a normalized value (0,1) to radians. +func PercentToRadians(pct float64) float64 { + return DegreesToRadians(360.0 * pct) +} + +// RadianAdd adds a delta to a base in radians. +func RadianAdd(base, delta float64) float64 { + value := base + delta + if value > _2pi { + return math.Mod(value, _2pi) + } else if value < 0 { + return math.Mod(_2pi+value, _2pi) + } + return value +} + +// DegreesAdd adds a delta to a base in radians. +func DegreesAdd(baseDegrees, deltaDegrees float64) float64 { + value := baseDegrees + deltaDegrees + if value > _2pi { + return math.Mod(value, 360.0) + } else if value < 0 { + return math.Mod(360.0+value, 360.0) + } + return value +} + +// DegreesToCompass returns the degree value in compass / clock orientation. +func DegreesToCompass(deg float64) float64 { + return DegreesAdd(deg, -90.0) +} + +// CirclePoint returns the absolute position of a circle diameter point given +// by the radius and the theta. +func CirclePoint(cx, cy int, radius, thetaRadians float64) (x, y int) { + x = cx + int(radius*math.Sin(thetaRadians)) + y = cy - int(radius*math.Cos(thetaRadians)) + return +} + +// RotateCoordinate rotates a coordinate around a given center by a theta in radians. +func RotateCoordinate(cx, cy, x, y int, thetaRadians float64) (rx, ry int) { + tempX, tempY := float64(x-cx), float64(y-cy) + rotatedX := tempX*math.Cos(thetaRadians) - tempY*math.Sin(thetaRadians) + rotatedY := tempX*math.Sin(thetaRadians) + tempY*math.Cos(thetaRadians) + rx = int(rotatedX) + cx + ry = int(rotatedY) + cy + return +} + +// RoundUp rounds up to a given roundTo value. +func RoundUp(value, roundTo float64) float64 { + if roundTo < 0.000000000000001 { + return value + } + d1 := math.Ceil(value / roundTo) + return d1 * roundTo +} + +// RoundDown rounds down to a given roundTo value. +func RoundDown(value, roundTo float64) float64 { + if roundTo < 0.000000000000001 { + return value + } + d1 := math.Floor(value / roundTo) + return d1 * roundTo +} + +// Normalize returns a set of numbers on the interval [0,1] for a given set of inputs. +// An example: 4,3,2,1 => 0.4, 0.3, 0.2, 0.1 +// Caveat; the total may be < 1.0; there are going to be issues with irrational numbers etc. +func Normalize(values ...float64) []float64 { + var total float64 + for _, v := range values { + total += v + } + output := make([]float64, len(values)) + for x, v := range values { + output[x] = RoundDown(v/total, 0.0001) + } + return output +} + +// Mean returns the mean of a set of values +func Mean(values ...float64) float64 { + return Sum(values...) / float64(len(values)) +} + +// MeanInt returns the mean of a set of integer values. +func MeanInt(values ...int) int { + return SumInt(values...) / len(values) +} + +// Sum sums a set of values. +func Sum(values ...float64) float64 { + var total float64 + for _, v := range values { + total += v + } + return total +} + +// SumInt sums a set of values. +func SumInt(values ...int) int { + var total int + for _, v := range values { + total += v + } + return total +} + +// PercentDifference computes the percentage difference between two values. +// The formula is (v2-v1)/v1. +func PercentDifference(v1, v2 float64) float64 { + if v1 == 0 { + return 0 + } + return (v2 - v1) / v1 +} + +// GetRoundToForDelta returns a `roundTo` value for a given delta. +func GetRoundToForDelta(delta float64) float64 { + startingDeltaBound := math.Pow(10.0, 10.0) + for cursor := startingDeltaBound; cursor > 0; cursor /= 10.0 { + if delta > cursor { + return cursor / 10.0 + } + } + + return 0.0 +} + +// RoundPlaces rounds an input to a given places. +func RoundPlaces(input float64, places int) (rounded float64) { + if math.IsNaN(input) { + return 0.0 + } + + sign := 1.0 + if input < 0 { + sign = -1 + input *= -1 + } + + precision := math.Pow(10, float64(places)) + digit := input * precision + _, decimal := math.Modf(digit) + + if decimal >= 0.5 { + rounded = math.Ceil(digit) + } else { + rounded = math.Floor(digit) + } + + return rounded / precision * sign +} + +func f64i(value float64) int { + r := RoundPlaces(value, 0) + return int(r) +} diff --git a/vendor/github.com/wcharczuk/go-chart/v2/matrix/matrix.go b/vendor/github.com/wcharczuk/go-chart/v2/matrix/matrix.go new file mode 100644 index 00000000..2bb4ba4e --- /dev/null +++ b/vendor/github.com/wcharczuk/go-chart/v2/matrix/matrix.go @@ -0,0 +1,592 @@ +package matrix + +import ( + "bytes" + "errors" + "fmt" + "math" +) + +const ( + // DefaultEpsilon represents the minimum precision for matrix math operations. + DefaultEpsilon = 0.000001 +) + +var ( + // ErrDimensionMismatch is a typical error. + ErrDimensionMismatch = errors.New("dimension mismatch") + + // ErrSingularValue is a typical error. + ErrSingularValue = errors.New("singular value") +) + +// New returns a new matrix. +func New(rows, cols int, values ...float64) *Matrix { + if len(values) == 0 { + return &Matrix{ + stride: cols, + epsilon: DefaultEpsilon, + elements: make([]float64, rows*cols), + } + } + elems := make([]float64, rows*cols) + copy(elems, values) + return &Matrix{ + stride: cols, + epsilon: DefaultEpsilon, + elements: elems, + } +} + +// Identity returns the identity matrix of a given order. +func Identity(order int) *Matrix { + m := New(order, order) + for i := 0; i < order; i++ { + m.Set(i, i, 1) + } + return m +} + +// Zero returns a matrix of a given size zeroed. +func Zero(rows, cols int) *Matrix { + return New(rows, cols) +} + +// Ones returns an matrix of ones. +func Ones(rows, cols int) *Matrix { + ones := make([]float64, rows*cols) + for i := 0; i < (rows * cols); i++ { + ones[i] = 1 + } + + return &Matrix{ + stride: cols, + epsilon: DefaultEpsilon, + elements: ones, + } +} + +// Eye returns the eye matrix. +func Eye(n int) *Matrix { + m := Zero(n, n) + for i := 0; i < len(m.elements); i += n + 1 { + m.elements[i] = 1 + } + return m +} + +// NewFromArrays creates a matrix from a jagged array set. +func NewFromArrays(a [][]float64) *Matrix { + rows := len(a) + if rows == 0 { + return nil + } + cols := len(a[0]) + m := New(rows, cols) + for row := 0; row < rows; row++ { + for col := 0; col < cols; col++ { + m.Set(row, col, a[row][col]) + } + } + return m +} + +// Matrix represents a 2d dense array of floats. +type Matrix struct { + epsilon float64 + elements []float64 + stride int +} + +// String returns a string representation of the matrix. +func (m *Matrix) String() string { + buffer := bytes.NewBuffer(nil) + rows, cols := m.Size() + + for row := 0; row < rows; row++ { + for col := 0; col < cols; col++ { + buffer.WriteString(f64s(m.Get(row, col))) + buffer.WriteRune(' ') + } + buffer.WriteRune('\n') + } + return buffer.String() +} + +// Epsilon returns the maximum precision for math operations. +func (m *Matrix) Epsilon() float64 { + return m.epsilon +} + +// WithEpsilon sets the epsilon on the matrix and returns a reference to the matrix. +func (m *Matrix) WithEpsilon(epsilon float64) *Matrix { + m.epsilon = epsilon + return m +} + +// Each applies the action to each element of the matrix in +// rows => cols order. +func (m *Matrix) Each(action func(row, col int, value float64)) { + rows, cols := m.Size() + for row := 0; row < rows; row++ { + for col := 0; col < cols; col++ { + action(row, col, m.Get(row, col)) + } + } +} + +// Round rounds all the values in a matrix to it epsilon, +// returning a reference to the original +func (m *Matrix) Round() *Matrix { + rows, cols := m.Size() + for row := 0; row < rows; row++ { + for col := 0; col < cols; col++ { + m.Set(row, col, roundToEpsilon(m.Get(row, col), m.epsilon)) + } + } + return m +} + +// Arrays returns the matrix as a two dimensional jagged array. +func (m *Matrix) Arrays() [][]float64 { + rows, cols := m.Size() + a := make([][]float64, rows) + + for row := 0; row < rows; row++ { + a[row] = make([]float64, cols) + + for col := 0; col < cols; col++ { + a[row][col] = m.Get(row, col) + } + } + return a +} + +// Size returns the dimensions of the matrix. +func (m *Matrix) Size() (rows, cols int) { + rows = len(m.elements) / m.stride + cols = m.stride + return +} + +// IsSquare returns if the row count is equal to the column count. +func (m *Matrix) IsSquare() bool { + return m.stride == (len(m.elements) / m.stride) +} + +// IsSymmetric returns if the matrix is symmetric about its diagonal. +func (m *Matrix) IsSymmetric() bool { + rows, cols := m.Size() + + if rows != cols { + return false + } + + for i := 0; i < rows; i++ { + for j := 0; j < i; j++ { + if m.Get(i, j) != m.Get(j, i) { + return false + } + } + } + return true +} + +// Get returns the element at the given row, col. +func (m *Matrix) Get(row, col int) float64 { + index := (m.stride * row) + col + return m.elements[index] +} + +// Set sets a value. +func (m *Matrix) Set(row, col int, val float64) { + index := (m.stride * row) + col + m.elements[index] = val +} + +// Col returns a column of the matrix as a vector. +func (m *Matrix) Col(col int) Vector { + rows, _ := m.Size() + values := make([]float64, rows) + for row := 0; row < rows; row++ { + values[row] = m.Get(row, col) + } + return Vector(values) +} + +// Row returns a row of the matrix as a vector. +func (m *Matrix) Row(row int) Vector { + _, cols := m.Size() + values := make([]float64, cols) + for col := 0; col < cols; col++ { + values[col] = m.Get(row, col) + } + return Vector(values) +} + +// SubMatrix returns a sub matrix from a given outer matrix. +func (m *Matrix) SubMatrix(i, j, rows, cols int) *Matrix { + return &Matrix{ + elements: m.elements[i*m.stride+j : i*m.stride+j+(rows-1)*m.stride+cols], + stride: m.stride, + epsilon: m.epsilon, + } +} + +// ScaleRow applies a scale to an entire row. +func (m *Matrix) ScaleRow(row int, scale float64) { + startIndex := row * m.stride + for i := startIndex; i < m.stride; i++ { + m.elements[i] = m.elements[i] * scale + } +} + +func (m *Matrix) scaleAddRow(rd int, rs int, f float64) { + indexd := rd * m.stride + indexs := rs * m.stride + for col := 0; col < m.stride; col++ { + m.elements[indexd] += f * m.elements[indexs] + indexd++ + indexs++ + } +} + +// SwapRows swaps a row in the matrix in place. +func (m *Matrix) SwapRows(i, j int) { + var vi, vj float64 + for col := 0; col < m.stride; col++ { + vi = m.Get(i, col) + vj = m.Get(j, col) + m.Set(i, col, vj) + m.Set(j, col, vi) + } +} + +// Augment concatenates two matrices about the horizontal. +func (m *Matrix) Augment(m2 *Matrix) (*Matrix, error) { + mr, mc := m.Size() + m2r, m2c := m2.Size() + if mr != m2r { + return nil, ErrDimensionMismatch + } + + m3 := Zero(mr, mc+m2c) + for row := 0; row < mr; row++ { + for col := 0; col < mc; col++ { + m3.Set(row, col, m.Get(row, col)) + } + for col := 0; col < m2c; col++ { + m3.Set(row, mc+col, m2.Get(row, col)) + } + } + return m3, nil +} + +// Copy returns a duplicate of a given matrix. +func (m *Matrix) Copy() *Matrix { + m2 := &Matrix{stride: m.stride, epsilon: m.epsilon, elements: make([]float64, len(m.elements))} + copy(m2.elements, m.elements) + return m2 +} + +// DiagonalVector returns a vector from the diagonal of a matrix. +func (m *Matrix) DiagonalVector() Vector { + rows, cols := m.Size() + rank := minInt(rows, cols) + values := make([]float64, rank) + + for index := 0; index < rank; index++ { + values[index] = m.Get(index, index) + } + return Vector(values) +} + +// Diagonal returns a matrix from the diagonal of a matrix. +func (m *Matrix) Diagonal() *Matrix { + rows, cols := m.Size() + rank := minInt(rows, cols) + m2 := New(rank, rank) + + for index := 0; index < rank; index++ { + m2.Set(index, index, m.Get(index, index)) + } + return m2 +} + +// Equals returns if a matrix equals another matrix. +func (m *Matrix) Equals(other *Matrix) bool { + if other == nil && m != nil { + return false + } else if other == nil { + return true + } + + if m.stride != other.stride { + return false + } + + msize := len(m.elements) + m2size := len(other.elements) + + if msize != m2size { + return false + } + + for i := 0; i < msize; i++ { + if m.elements[i] != other.elements[i] { + return false + } + } + return true +} + +// L returns the matrix with zeros below the diagonal. +func (m *Matrix) L() *Matrix { + rows, cols := m.Size() + m2 := New(rows, cols) + for row := 0; row < rows; row++ { + for col := row; col < cols; col++ { + m2.Set(row, col, m.Get(row, col)) + } + } + return m2 +} + +// U returns the matrix with zeros above the diagonal. +// Does not include the diagonal. +func (m *Matrix) U() *Matrix { + rows, cols := m.Size() + m2 := New(rows, cols) + for row := 0; row < rows; row++ { + for col := 0; col < row && col < cols; col++ { + m2.Set(row, col, m.Get(row, col)) + } + } + return m2 +} + +// math operations + +// Multiply multiplies two matrices. +func (m *Matrix) Multiply(m2 *Matrix) (m3 *Matrix, err error) { + if m.stride*m2.stride != len(m2.elements) { + return nil, ErrDimensionMismatch + } + + m3 = &Matrix{epsilon: m.epsilon, stride: m2.stride, elements: make([]float64, (len(m.elements)/m.stride)*m2.stride)} + for m1c0, m3x := 0, 0; m1c0 < len(m.elements); m1c0 += m.stride { + for m2r0 := 0; m2r0 < m2.stride; m2r0++ { + for m1x, m2x := m1c0, m2r0; m2x < len(m2.elements); m2x += m2.stride { + m3.elements[m3x] += m.elements[m1x] * m2.elements[m2x] + m1x++ + } + m3x++ + } + } + return +} + +// Pivotize does something i'm not sure what. +func (m *Matrix) Pivotize() *Matrix { + pv := make([]int, m.stride) + + for i := range pv { + pv[i] = i + } + + for j, dx := 0, 0; j < m.stride; j++ { + row := j + max := m.elements[dx] + for i, ixcj := j, dx; i < m.stride; i++ { + if m.elements[ixcj] > max { + max = m.elements[ixcj] + row = i + } + ixcj += m.stride + } + if j != row { + pv[row], pv[j] = pv[j], pv[row] + } + dx += m.stride + 1 + } + p := Zero(m.stride, m.stride) + for r, c := range pv { + p.elements[r*m.stride+c] = 1 + } + return p +} + +// Times returns the product of a matrix and another. +func (m *Matrix) Times(m2 *Matrix) (*Matrix, error) { + mr, mc := m.Size() + m2r, m2c := m2.Size() + + if mc != m2r { + return nil, fmt.Errorf("cannot multiply (%dx%d) and (%dx%d)", mr, mc, m2r, m2c) + //return nil, ErrDimensionMismatch + } + + c := Zero(mr, m2c) + + for i := 0; i < mr; i++ { + sums := c.elements[i*c.stride : (i+1)*c.stride] + for k, a := range m.elements[i*m.stride : i*m.stride+m.stride] { + for j, b := range m2.elements[k*m2.stride : k*m2.stride+m2.stride] { + sums[j] += a * b + } + } + } + + return c, nil +} + +// Decompositions + +// LU performs the LU decomposition. +func (m *Matrix) LU() (l, u, p *Matrix) { + l = Zero(m.stride, m.stride) + u = Zero(m.stride, m.stride) + p = m.Pivotize() + m, _ = p.Multiply(m) + for j, jxc0 := 0, 0; j < m.stride; j++ { + l.elements[jxc0+j] = 1 + for i, ixc0 := 0, 0; ixc0 <= jxc0; i++ { + sum := 0. + for k, kxcj := 0, j; k < i; k++ { + sum += u.elements[kxcj] * l.elements[ixc0+k] + kxcj += m.stride + } + u.elements[ixc0+j] = m.elements[ixc0+j] - sum + ixc0 += m.stride + } + for ixc0 := jxc0; ixc0 < len(m.elements); ixc0 += m.stride { + sum := 0. + for k, kxcj := 0, j; k < j; k++ { + sum += u.elements[kxcj] * l.elements[ixc0+k] + kxcj += m.stride + } + l.elements[ixc0+j] = (m.elements[ixc0+j] - sum) / u.elements[jxc0+j] + } + jxc0 += m.stride + } + return +} + +// QR performs the qr decomposition. +func (m *Matrix) QR() (q, r *Matrix) { + defer func() { + q = q.Round() + r = r.Round() + }() + + rows, cols := m.Size() + qr := m.Copy() + q = New(rows, cols) + r = New(rows, cols) + + var i, j, k int + var norm, s float64 + + for k = 0; k < cols; k++ { + norm = 0 + for i = k; i < rows; i++ { + norm = math.Hypot(norm, qr.Get(i, k)) + } + + if norm != 0 { + if qr.Get(k, k) < 0 { + norm = -norm + } + + for i = k; i < rows; i++ { + qr.Set(i, k, qr.Get(i, k)/norm) + } + qr.Set(k, k, qr.Get(k, k)+1.0) + + for j = k + 1; j < cols; j++ { + s = 0 + for i = k; i < rows; i++ { + s += qr.Get(i, k) * qr.Get(i, j) + } + s = -s / qr.Get(k, k) + for i = k; i < rows; i++ { + qr.Set(i, j, qr.Get(i, j)+s*qr.Get(i, k)) + + if i < j { + r.Set(i, j, qr.Get(i, j)) + } + } + + } + } + + r.Set(k, k, -norm) + + } + + //Q Matrix: + i, j, k = 0, 0, 0 + + for k = cols - 1; k >= 0; k-- { + q.Set(k, k, 1.0) + for j = k; j < cols; j++ { + if qr.Get(k, k) != 0 { + s = 0 + for i = k; i < rows; i++ { + s += qr.Get(i, k) * q.Get(i, j) + } + s = -s / qr.Get(k, k) + for i = k; i < rows; i++ { + q.Set(i, j, q.Get(i, j)+s*qr.Get(i, k)) + } + } + } + } + + return +} + +// Transpose flips a matrix about its diagonal, returning a new copy. +func (m *Matrix) Transpose() *Matrix { + rows, cols := m.Size() + m2 := Zero(cols, rows) + for i := 0; i < rows; i++ { + for j := 0; j < cols; j++ { + m2.Set(j, i, m.Get(i, j)) + } + } + return m2 +} + +// Inverse returns a matrix such that M*I==1. +func (m *Matrix) Inverse() (*Matrix, error) { + if !m.IsSymmetric() { + return nil, ErrDimensionMismatch + } + + rows, cols := m.Size() + + aug, _ := m.Augment(Eye(rows)) + for i := 0; i < rows; i++ { + j := i + for k := i; k < rows; k++ { + if math.Abs(aug.Get(k, i)) > math.Abs(aug.Get(j, i)) { + j = k + } + } + if j != i { + aug.SwapRows(i, j) + } + if aug.Get(i, i) == 0 { + return nil, ErrSingularValue + } + aug.ScaleRow(i, 1.0/aug.Get(i, i)) + for k := 0; k < rows; k++ { + if k == i { + continue + } + aug.scaleAddRow(k, i, -aug.Get(k, i)) + } + } + return aug.SubMatrix(0, cols, rows, cols), nil +} diff --git a/vendor/github.com/wcharczuk/go-chart/v2/matrix/regression.go b/vendor/github.com/wcharczuk/go-chart/v2/matrix/regression.go new file mode 100644 index 00000000..7aaea7c2 --- /dev/null +++ b/vendor/github.com/wcharczuk/go-chart/v2/matrix/regression.go @@ -0,0 +1,45 @@ +package matrix + +import "errors" + +var ( + // ErrPolyRegArraysSameLength is a common error. + ErrPolyRegArraysSameLength = errors.New("polynomial array inputs must be the same length") +) + +// Poly returns the polynomial regress of a given degree over the given values. +func Poly(xvalues, yvalues []float64, degree int) ([]float64, error) { + if len(xvalues) != len(yvalues) { + return nil, ErrPolyRegArraysSameLength + } + + m := len(yvalues) + n := degree + 1 + y := New(m, 1, yvalues...) + x := Zero(m, n) + + for i := 0; i < m; i++ { + ip := float64(1) + for j := 0; j < n; j++ { + x.Set(i, j, ip) + ip *= xvalues[i] + } + } + + q, r := x.QR() + qty, err := q.Transpose().Times(y) + if err != nil { + return nil, err + } + + c := make([]float64, n) + for i := n - 1; i >= 0; i-- { + c[i] = qty.Get(i, 0) + for j := i + 1; j < n; j++ { + c[i] -= c[j] * r.Get(i, j) + } + c[i] /= r.Get(i, i) + } + + return c, nil +} diff --git a/vendor/github.com/wcharczuk/go-chart/v2/matrix/util.go b/vendor/github.com/wcharczuk/go-chart/v2/matrix/util.go new file mode 100644 index 00000000..5f157796 --- /dev/null +++ b/vendor/github.com/wcharczuk/go-chart/v2/matrix/util.go @@ -0,0 +1,36 @@ +package matrix + +import ( + "math" + "strconv" +) + +func minInt(values ...int) int { + min := math.MaxInt32 + + for x := 0; x < len(values); x++ { + if values[x] < min { + min = values[x] + } + } + return min +} + +func maxInt(values ...int) int { + max := math.MinInt32 + + for x := 0; x < len(values); x++ { + if values[x] > max { + max = values[x] + } + } + return max +} + +func f64s(v float64) string { + return strconv.FormatFloat(v, 'f', -1, 64) +} + +func roundToEpsilon(value, epsilon float64) float64 { + return math.Nextafter(value, value) +} diff --git a/vendor/github.com/wcharczuk/go-chart/v2/matrix/vector.go b/vendor/github.com/wcharczuk/go-chart/v2/matrix/vector.go new file mode 100644 index 00000000..c8aa3807 --- /dev/null +++ b/vendor/github.com/wcharczuk/go-chart/v2/matrix/vector.go @@ -0,0 +1,17 @@ +package matrix + +// Vector is just an array of values. +type Vector []float64 + +// DotProduct returns the dot product of two vectors. +func (v Vector) DotProduct(v2 Vector) (result float64, err error) { + if len(v) != len(v2) { + err = ErrDimensionMismatch + return + } + + for i := 0; i < len(v); i++ { + result = result + (v[i] * v2[i]) + } + return +} diff --git a/vendor/github.com/wcharczuk/go-chart/v2/min_max_series.go b/vendor/github.com/wcharczuk/go-chart/v2/min_max_series.go new file mode 100644 index 00000000..18d330aa --- /dev/null +++ b/vendor/github.com/wcharczuk/go-chart/v2/min_max_series.go @@ -0,0 +1,138 @@ +package chart + +import ( + "fmt" + "math" +) + +// MinSeries draws a horizontal line at the minimum value of the inner series. +type MinSeries struct { + Name string + Style Style + YAxis YAxisType + InnerSeries ValuesProvider + + minValue *float64 +} + +// GetName returns the name of the time series. +func (ms MinSeries) GetName() string { + return ms.Name +} + +// GetStyle returns the line style. +func (ms MinSeries) GetStyle() Style { + return ms.Style +} + +// GetYAxis returns which YAxis the series draws on. +func (ms MinSeries) GetYAxis() YAxisType { + return ms.YAxis +} + +// Len returns the number of elements in the series. +func (ms MinSeries) Len() int { + return ms.InnerSeries.Len() +} + +// GetValues gets a value at a given index. +func (ms *MinSeries) GetValues(index int) (x, y float64) { + ms.ensureMinValue() + x, _ = ms.InnerSeries.GetValues(index) + y = *ms.minValue + return +} + +// Render renders the series. +func (ms *MinSeries) Render(r Renderer, canvasBox Box, xrange, yrange Range, defaults Style) { + style := ms.Style.InheritFrom(defaults) + Draw.LineSeries(r, canvasBox, xrange, yrange, style, ms) +} + +func (ms *MinSeries) ensureMinValue() { + if ms.minValue == nil { + minValue := math.MaxFloat64 + var y float64 + for x := 0; x < ms.InnerSeries.Len(); x++ { + _, y = ms.InnerSeries.GetValues(x) + if y < minValue { + minValue = y + } + } + ms.minValue = &minValue + } +} + +// Validate validates the series. +func (ms *MinSeries) Validate() error { + if ms.InnerSeries == nil { + return fmt.Errorf("min series requires InnerSeries to be set") + } + return nil +} + +// MaxSeries draws a horizontal line at the maximum value of the inner series. +type MaxSeries struct { + Name string + Style Style + YAxis YAxisType + InnerSeries ValuesProvider + + maxValue *float64 +} + +// GetName returns the name of the time series. +func (ms MaxSeries) GetName() string { + return ms.Name +} + +// GetStyle returns the line style. +func (ms MaxSeries) GetStyle() Style { + return ms.Style +} + +// GetYAxis returns which YAxis the series draws on. +func (ms MaxSeries) GetYAxis() YAxisType { + return ms.YAxis +} + +// Len returns the number of elements in the series. +func (ms MaxSeries) Len() int { + return ms.InnerSeries.Len() +} + +// GetValues gets a value at a given index. +func (ms *MaxSeries) GetValues(index int) (x, y float64) { + ms.ensureMaxValue() + x, _ = ms.InnerSeries.GetValues(index) + y = *ms.maxValue + return +} + +// Render renders the series. +func (ms *MaxSeries) Render(r Renderer, canvasBox Box, xrange, yrange Range, defaults Style) { + style := ms.Style.InheritFrom(defaults) + Draw.LineSeries(r, canvasBox, xrange, yrange, style, ms) +} + +func (ms *MaxSeries) ensureMaxValue() { + if ms.maxValue == nil { + maxValue := -math.MaxFloat64 + var y float64 + for x := 0; x < ms.InnerSeries.Len(); x++ { + _, y = ms.InnerSeries.GetValues(x) + if y > maxValue { + maxValue = y + } + } + ms.maxValue = &maxValue + } +} + +// Validate validates the series. +func (ms *MaxSeries) Validate() error { + if ms.InnerSeries == nil { + return fmt.Errorf("max series requires InnerSeries to be set") + } + return nil +} diff --git a/vendor/github.com/wcharczuk/go-chart/v2/parse.go b/vendor/github.com/wcharczuk/go-chart/v2/parse.go new file mode 100644 index 00000000..5ecae0a2 --- /dev/null +++ b/vendor/github.com/wcharczuk/go-chart/v2/parse.go @@ -0,0 +1,40 @@ +package chart + +import ( + "strconv" + "strings" + "time" +) + +// ParseFloats parses a list of floats. +func ParseFloats(values ...string) ([]float64, error) { + var output []float64 + var parsedValue float64 + var err error + var cleaned string + for _, value := range values { + cleaned = strings.TrimSpace(strings.Replace(value, ",", "", -1)) + if cleaned == "" { + continue + } + if parsedValue, err = strconv.ParseFloat(cleaned, 64); err != nil { + return nil, err + } + output = append(output, parsedValue) + } + return output, nil +} + +// ParseTimes parses a list of times with a given format. +func ParseTimes(layout string, values ...string) ([]time.Time, error) { + var output []time.Time + var parsedValue time.Time + var err error + for _, value := range values { + if parsedValue, err = time.Parse(layout, value); err != nil { + return nil, err + } + output = append(output, parsedValue) + } + return output, nil +} diff --git a/vendor/github.com/wcharczuk/go-chart/v2/percent_change_series.go b/vendor/github.com/wcharczuk/go-chart/v2/percent_change_series.go new file mode 100644 index 00000000..3767893e --- /dev/null +++ b/vendor/github.com/wcharczuk/go-chart/v2/percent_change_series.go @@ -0,0 +1,89 @@ +package chart + +// Interface Assertions. +var ( + _ Series = (*PercentChangeSeries)(nil) + _ FirstValuesProvider = (*PercentChangeSeries)(nil) + _ LastValuesProvider = (*PercentChangeSeries)(nil) + _ ValueFormatterProvider = (*PercentChangeSeries)(nil) +) + +// PercentChangeSeriesSource is a series that +// can be used with a PercentChangeSeries +type PercentChangeSeriesSource interface { + Series + FirstValuesProvider + LastValuesProvider + ValuesProvider + ValueFormatterProvider +} + +// PercentChangeSeries applies a +// percentage difference function to a given continuous series. +type PercentChangeSeries struct { + Name string + Style Style + YAxis YAxisType + InnerSeries PercentChangeSeriesSource +} + +// GetName returns the name of the time series. +func (pcs PercentChangeSeries) GetName() string { + return pcs.Name +} + +// GetStyle returns the line style. +func (pcs PercentChangeSeries) GetStyle() Style { + return pcs.Style +} + +// Len implements part of Series. +func (pcs PercentChangeSeries) Len() int { + return pcs.InnerSeries.Len() +} + +// GetFirstValues implements FirstValuesProvider. +func (pcs PercentChangeSeries) GetFirstValues() (x, y float64) { + return pcs.InnerSeries.GetFirstValues() +} + +// GetValues gets x, y values at a given index. +func (pcs PercentChangeSeries) GetValues(index int) (x, y float64) { + _, fy := pcs.InnerSeries.GetFirstValues() + x0, y0 := pcs.InnerSeries.GetValues(index) + x = x0 + y = PercentDifference(fy, y0) + return +} + +// GetValueFormatters returns value formatter defaults for the series. +func (pcs PercentChangeSeries) GetValueFormatters() (x, y ValueFormatter) { + x, _ = pcs.InnerSeries.GetValueFormatters() + y = PercentValueFormatter + return +} + +// GetYAxis returns which YAxis the series draws on. +func (pcs PercentChangeSeries) GetYAxis() YAxisType { + return pcs.YAxis +} + +// GetLastValues gets the last values. +func (pcs PercentChangeSeries) GetLastValues() (x, y float64) { + _, fy := pcs.InnerSeries.GetFirstValues() + x0, y0 := pcs.InnerSeries.GetLastValues() + x = x0 + y = PercentDifference(fy, y0) + return +} + +// Render renders the series. +func (pcs PercentChangeSeries) Render(r Renderer, canvasBox Box, xrange, yrange Range, defaults Style) { + style := pcs.Style.InheritFrom(defaults) + Draw.LineSeries(r, canvasBox, xrange, yrange, style, pcs) +} + +// Validate validates the series. +func (pcs PercentChangeSeries) Validate() error { + return pcs.InnerSeries.Validate() +} diff --git a/vendor/github.com/wcharczuk/go-chart/v2/pie_chart.go b/vendor/github.com/wcharczuk/go-chart/v2/pie_chart.go new file mode 100644 index 00000000..49b551f5 --- /dev/null +++ b/vendor/github.com/wcharczuk/go-chart/v2/pie_chart.go @@ -0,0 +1,311 @@ +package chart + +import ( + "errors" + "fmt" + "io" + + "github.com/golang/freetype/truetype" +) + +// PieChart is a chart that draws sections of a circle based on percentages. +type PieChart struct { + Title string + TitleStyle Style + + ColorPalette ColorPalette + + Width int + Height int + DPI float64 + + Background Style + Canvas Style + SliceStyle Style + + Font *truetype.Font + defaultFont *truetype.Font + + Values []Value + Elements []Renderable +} + +// GetDPI returns the dpi for the chart. +func (pc PieChart) GetDPI(defaults ...float64) float64 { + if pc.DPI == 0 { + if len(defaults) > 0 { + return defaults[0] + } + return DefaultDPI + } + return pc.DPI +} + +// GetFont returns the text font. +func (pc PieChart) GetFont() *truetype.Font { + if pc.Font == nil { + return pc.defaultFont + } + return pc.Font +} + +// GetWidth returns the chart width or the default value. +func (pc PieChart) GetWidth() int { + if pc.Width == 0 { + return DefaultChartWidth + } + return pc.Width +} + +// GetHeight returns the chart height or the default value. +func (pc PieChart) GetHeight() int { + if pc.Height == 0 { + return DefaultChartWidth + } + return pc.Height +} + +// Render renders the chart with the given renderer to the given io.Writer. +func (pc PieChart) Render(rp RendererProvider, w io.Writer) error { + if len(pc.Values) == 0 { + return errors.New("please provide at least one value") + } + + r, err := rp(pc.GetWidth(), pc.GetHeight()) + if err != nil { + return err + } + + if pc.Font == nil { + defaultFont, err := GetDefaultFont() + if err != nil { + return err + } + pc.defaultFont = defaultFont + } + r.SetDPI(pc.GetDPI(DefaultDPI)) + + canvasBox := pc.getDefaultCanvasBox() + canvasBox = pc.getCircleAdjustedCanvasBox(canvasBox) + + pc.drawBackground(r) + pc.drawCanvas(r, canvasBox) + + finalValues, err := pc.finalizeValues(pc.Values) + if err != nil { + return err + } + pc.drawSlices(r, canvasBox, finalValues) + pc.drawTitle(r) + for _, a := range pc.Elements { + a(r, canvasBox, pc.styleDefaultsElements()) + } + + return r.Save(w) +} + +func (pc PieChart) drawBackground(r Renderer) { + Draw.Box(r, Box{ + Right: pc.GetWidth(), + Bottom: pc.GetHeight(), + }, pc.getBackgroundStyle()) +} + +func (pc PieChart) drawCanvas(r Renderer, canvasBox Box) { + Draw.Box(r, canvasBox, pc.getCanvasStyle()) +} + +func (pc PieChart) drawTitle(r Renderer) { + if len(pc.Title) > 0 && !pc.TitleStyle.Hidden { + Draw.TextWithin(r, pc.Title, pc.Box(), pc.styleDefaultsTitle()) + } +} + +func (pc PieChart) drawSlices(r Renderer, canvasBox Box, values []Value) { + cx, cy := canvasBox.Center() + diameter := MinInt(canvasBox.Width(), canvasBox.Height()) + radius := float64(diameter >> 1) + labelRadius := (radius * 2.0) / 3.0 + + // draw the pie slices + var rads, delta, delta2, total float64 + var lx, ly int + + if len(values) == 1 { + pc.stylePieChartValue(0).WriteToRenderer(r) + r.MoveTo(cx, cy) + r.Circle(radius, cx, cy) + } else { + for index, v := range values { + v.Style.InheritFrom(pc.stylePieChartValue(index)).WriteToRenderer(r) + + r.MoveTo(cx, cy) + rads = PercentToRadians(total) + delta = PercentToRadians(v.Value) + + r.ArcTo(cx, cy, radius, radius, rads, delta) + + r.LineTo(cx, cy) + r.Close() + r.FillStroke() + total = total + v.Value + } + } + + // draw the labels + total = 0 + for index, v := range values { + v.Style.InheritFrom(pc.stylePieChartValue(index)).WriteToRenderer(r) + if len(v.Label) > 0 { + delta2 = PercentToRadians(total + (v.Value / 2.0)) + delta2 = RadianAdd(delta2, _pi2) + lx, ly = CirclePoint(cx, cy, labelRadius, delta2) + + tb := r.MeasureText(v.Label) + lx = lx - (tb.Width() >> 1) + ly = ly + (tb.Height() >> 1) + + if lx < 0 { + lx = 0 + } + if ly < 0 { + lx = 0 + } + + r.Text(v.Label, lx, ly) + } + total = total + v.Value + } +} + +func (pc PieChart) finalizeValues(values []Value) ([]Value, error) { + finalValues := Values(values).Normalize() + if len(finalValues) == 0 { + return nil, fmt.Errorf("pie chart must contain at least (1) non-zero value") + } + return finalValues, nil +} + +func (pc PieChart) getDefaultCanvasBox() Box { + return pc.Box() +} + +func (pc PieChart) getCircleAdjustedCanvasBox(canvasBox Box) Box { + circleDiameter := MinInt(canvasBox.Width(), canvasBox.Height()) + + square := Box{ + Right: circleDiameter, + Bottom: circleDiameter, + } + + return canvasBox.Fit(square) +} + +func (pc PieChart) getBackgroundStyle() Style { + return pc.Background.InheritFrom(pc.styleDefaultsBackground()) +} + +func (pc PieChart) getCanvasStyle() Style { + return pc.Canvas.InheritFrom(pc.styleDefaultsCanvas()) +} + +func (pc PieChart) styleDefaultsCanvas() Style { + return Style{ + FillColor: pc.GetColorPalette().CanvasColor(), + StrokeColor: pc.GetColorPalette().CanvasStrokeColor(), + StrokeWidth: DefaultStrokeWidth, + } +} + +func (pc PieChart) styleDefaultsPieChartValue() Style { + return Style{ + StrokeColor: pc.GetColorPalette().TextColor(), + StrokeWidth: 5.0, + FillColor: pc.GetColorPalette().TextColor(), + } +} + +func (pc PieChart) stylePieChartValue(index int) Style { + return pc.SliceStyle.InheritFrom(Style{ + StrokeColor: ColorWhite, + StrokeWidth: 5.0, + FillColor: pc.GetColorPalette().GetSeriesColor(index), + FontSize: pc.getScaledFontSize(), + FontColor: pc.GetColorPalette().TextColor(), + Font: pc.GetFont(), + }) +} + +func (pc PieChart) getScaledFontSize() float64 { + effectiveDimension := MinInt(pc.GetWidth(), pc.GetHeight()) + if effectiveDimension >= 2048 { + return 48.0 + } else if effectiveDimension >= 1024 { + return 24.0 + } else if effectiveDimension > 512 { + return 18.0 + } else if effectiveDimension > 256 { + return 12.0 + } + return 10.0 +} + +func (pc PieChart) styleDefaultsBackground() Style { + return Style{ + FillColor: pc.GetColorPalette().BackgroundColor(), + StrokeColor: pc.GetColorPalette().BackgroundStrokeColor(), + StrokeWidth: DefaultStrokeWidth, + } +} + +func (pc PieChart) styleDefaultsElements() Style { + return Style{ + Font: pc.GetFont(), + } +} + +func (pc PieChart) styleDefaultsTitle() Style { + return pc.TitleStyle.InheritFrom(Style{ + FontColor: pc.GetColorPalette().TextColor(), + Font: pc.GetFont(), + FontSize: pc.getTitleFontSize(), + TextHorizontalAlign: TextHorizontalAlignCenter, + TextVerticalAlign: TextVerticalAlignTop, + TextWrap: TextWrapWord, + }) +} + +func (pc PieChart) getTitleFontSize() float64 { + effectiveDimension := MinInt(pc.GetWidth(), pc.GetHeight()) + if effectiveDimension >= 2048 { + return 48 + } else if effectiveDimension >= 1024 { + return 24 + } else if effectiveDimension >= 512 { + return 18 + } else if effectiveDimension >= 256 { + return 12 + } + return 10 +} + +// GetColorPalette returns the color palette for the chart. +func (pc PieChart) GetColorPalette() ColorPalette { + if pc.ColorPalette != nil { + return pc.ColorPalette + } + return AlternateColorPalette +} + +// Box returns the chart bounds as a box. +func (pc PieChart) Box() Box { + dpr := pc.Background.Padding.GetRight(DefaultBackgroundPadding.Right) + dpb := pc.Background.Padding.GetBottom(DefaultBackgroundPadding.Bottom) + + return Box{ + Top: pc.Background.Padding.GetTop(DefaultBackgroundPadding.Top), + Left: pc.Background.Padding.GetLeft(DefaultBackgroundPadding.Left), + Right: pc.GetWidth() - dpr, + Bottom: pc.GetHeight() - dpb, + } +} diff --git a/vendor/github.com/wcharczuk/go-chart/v2/polynomial_regression_series.go b/vendor/github.com/wcharczuk/go-chart/v2/polynomial_regression_series.go new file mode 100644 index 00000000..22cd3c13 --- /dev/null +++ b/vendor/github.com/wcharczuk/go-chart/v2/polynomial_regression_series.go @@ -0,0 +1,177 @@ +package chart + +import ( + "fmt" + "math" + + "github.com/wcharczuk/go-chart/v2/matrix" +) + +// Interface Assertions. +var ( + _ Series = (*PolynomialRegressionSeries)(nil) + _ FirstValuesProvider = (*PolynomialRegressionSeries)(nil) + _ LastValuesProvider = (*PolynomialRegressionSeries)(nil) +) + +// PolynomialRegressionSeries implements a polynomial regression over a given +// inner series. +type PolynomialRegressionSeries struct { + Name string + Style Style + YAxis YAxisType + + Limit int + Offset int + Degree int + InnerSeries ValuesProvider + + coeffs []float64 +} + +// GetName returns the name of the time series. +func (prs PolynomialRegressionSeries) GetName() string { + return prs.Name +} + +// GetStyle returns the line style. +func (prs PolynomialRegressionSeries) GetStyle() Style { + return prs.Style +} + +// GetYAxis returns which YAxis the series draws on. +func (prs PolynomialRegressionSeries) GetYAxis() YAxisType { + return prs.YAxis +} + +// Len returns the number of elements in the series. +func (prs PolynomialRegressionSeries) Len() int { + return MinInt(prs.GetLimit(), prs.InnerSeries.Len()-prs.GetOffset()) +} + +// GetLimit returns the window size. +func (prs PolynomialRegressionSeries) GetLimit() int { + if prs.Limit == 0 { + return prs.InnerSeries.Len() + } + return prs.Limit +} + +// GetEndIndex returns the effective limit end. +func (prs PolynomialRegressionSeries) GetEndIndex() int { + windowEnd := prs.GetOffset() + prs.GetLimit() + innerSeriesLastIndex := prs.InnerSeries.Len() - 1 + return MinInt(windowEnd, innerSeriesLastIndex) +} + +// GetOffset returns the data offset. +func (prs PolynomialRegressionSeries) GetOffset() int { + if prs.Offset == 0 { + return 0 + } + return prs.Offset +} + +// Validate validates the series. +func (prs *PolynomialRegressionSeries) Validate() error { + if prs.InnerSeries == nil { + return fmt.Errorf("linear regression series requires InnerSeries to be set") + } + + endIndex := prs.GetEndIndex() + if endIndex >= prs.InnerSeries.Len() { + return fmt.Errorf("invalid window; inner series has length %d but end index is %d", prs.InnerSeries.Len(), endIndex) + } + + return nil +} + +// GetValues returns the series value for a given index. +func (prs *PolynomialRegressionSeries) GetValues(index int) (x, y float64) { + if prs.InnerSeries == nil || prs.InnerSeries.Len() == 0 { + return + } + + if prs.coeffs == nil { + coeffs, err := prs.computeCoefficients() + if err != nil { + panic(err) + } + prs.coeffs = coeffs + } + + offset := prs.GetOffset() + effectiveIndex := MinInt(index+offset, prs.InnerSeries.Len()) + x, y = prs.InnerSeries.GetValues(effectiveIndex) + y = prs.apply(x) + return +} + +// GetFirstValues computes the first poly regression value. +func (prs *PolynomialRegressionSeries) GetFirstValues() (x, y float64) { + if prs.InnerSeries == nil || prs.InnerSeries.Len() == 0 { + return + } + if prs.coeffs == nil { + coeffs, err := prs.computeCoefficients() + if err != nil { + panic(err) + } + prs.coeffs = coeffs + } + x, y = prs.InnerSeries.GetValues(0) + y = prs.apply(x) + return +} + +// GetLastValues computes the last poly regression value. +func (prs *PolynomialRegressionSeries) GetLastValues() (x, y float64) { + if prs.InnerSeries == nil || prs.InnerSeries.Len() == 0 { + return + } + if prs.coeffs == nil { + coeffs, err := prs.computeCoefficients() + if err != nil { + panic(err) + } + prs.coeffs = coeffs + } + endIndex := prs.GetEndIndex() + x, y = prs.InnerSeries.GetValues(endIndex) + y = prs.apply(x) + return +} + +func (prs *PolynomialRegressionSeries) apply(v float64) (out float64) { + for index, coeff := range prs.coeffs { + out = out + (coeff * math.Pow(v, float64(index))) + } + return +} + +func (prs *PolynomialRegressionSeries) computeCoefficients() ([]float64, error) { + xvalues, yvalues := prs.values() + return matrix.Poly(xvalues, yvalues, prs.Degree) +} + +func (prs *PolynomialRegressionSeries) values() (xvalues, yvalues []float64) { + startIndex := prs.GetOffset() + endIndex := prs.GetEndIndex() + + xvalues = make([]float64, endIndex-startIndex) + yvalues = make([]float64, endIndex-startIndex) + + for index := startIndex; index < endIndex; index++ { + x, y := prs.InnerSeries.GetValues(index) + xvalues[index-startIndex] = x + yvalues[index-startIndex] = y + } + + return +} + +// Render renders the series. +func (prs *PolynomialRegressionSeries) Render(r Renderer, canvasBox Box, xrange, yrange Range, defaults Style) { + style := prs.Style.InheritFrom(defaults) + Draw.LineSeries(r, canvasBox, xrange, yrange, style, prs) +} diff --git a/vendor/github.com/wcharczuk/go-chart/v2/random_sequence.go b/vendor/github.com/wcharczuk/go-chart/v2/random_sequence.go new file mode 100644 index 00000000..45c99716 --- /dev/null +++ b/vendor/github.com/wcharczuk/go-chart/v2/random_sequence.go @@ -0,0 +1,92 @@ +package chart + +import ( + "math" + "math/rand" + "time" +) + +var ( + _ Sequence = (*RandomSeq)(nil) +) + +// RandomValues returns an array of random values. +func RandomValues(count int) []float64 { + return Seq{NewRandomSequence().WithLen(count)}.Values() +} + +// RandomValuesWithMax returns an array of random values with a given average. +func RandomValuesWithMax(count int, max float64) []float64 { + return Seq{NewRandomSequence().WithMax(max).WithLen(count)}.Values() +} + +// NewRandomSequence creates a new random seq. +func NewRandomSequence() *RandomSeq { + return &RandomSeq{ + rnd: rand.New(rand.NewSource(time.Now().Unix())), + } +} + +// RandomSeq is a random number seq generator. +type RandomSeq struct { + rnd *rand.Rand + max *float64 + min *float64 + len *int +} + +// Len returns the number of elements that will be generated. +func (r *RandomSeq) Len() int { + if r.len != nil { + return *r.len + } + return math.MaxInt32 +} + +// GetValue returns the value. +func (r *RandomSeq) GetValue(_ int) float64 { + if r.min != nil && r.max != nil { + var delta float64 + + if *r.max > *r.min { + delta = *r.max - *r.min + } else { + delta = *r.min - *r.max + } + + return *r.min + (r.rnd.Float64() * delta) + } else if r.max != nil { + return r.rnd.Float64() * *r.max + } else if r.min != nil { + return *r.min + (r.rnd.Float64()) + } + return r.rnd.Float64() +} + +// WithLen sets a maximum len +func (r *RandomSeq) WithLen(length int) *RandomSeq { + r.len = &length + return r +} + +// Min returns the minimum value. +func (r RandomSeq) Min() *float64 { + return r.min +} + +// WithMin sets the scale and returns the Random. +func (r *RandomSeq) WithMin(min float64) *RandomSeq { + r.min = &min + return r +} + +// Max returns the maximum value. +func (r RandomSeq) Max() *float64 { + return r.max +} + +// WithMax sets the average and returns the Random. +func (r *RandomSeq) WithMax(max float64) *RandomSeq { + r.max = &max + return r +} diff --git a/vendor/github.com/wcharczuk/go-chart/v2/range.go b/vendor/github.com/wcharczuk/go-chart/v2/range.go new file mode 100644 index 00000000..a7b22ab9 --- /dev/null +++ b/vendor/github.com/wcharczuk/go-chart/v2/range.go @@ -0,0 +1,43 @@ +package chart + +// NameProvider is a type that returns a name. +type NameProvider interface { + GetName() string +} + +// StyleProvider is a type that returns a style. +type StyleProvider interface { + GetStyle() Style +} + +// IsZeroable is a type that returns if it's been set or not. +type IsZeroable interface { + IsZero() bool +} + +// Stringable is a type that has a string representation. +type Stringable interface { + String() string +} + +// Range is a common interface for a range of values. +type Range interface { + Stringable + IsZeroable + + GetMin() float64 + SetMin(min float64) + + GetMax() float64 + SetMax(max float64) + + GetDelta() float64 + + GetDomain() int + SetDomain(domain int) + + IsDescending() bool + + // Translate the range to the domain. + Translate(value float64) int +} diff --git a/vendor/github.com/wcharczuk/go-chart/v2/raster_renderer.go b/vendor/github.com/wcharczuk/go-chart/v2/raster_renderer.go new file mode 100644 index 00000000..4de26554 --- /dev/null +++ b/vendor/github.com/wcharczuk/go-chart/v2/raster_renderer.go @@ -0,0 +1,230 @@ +package chart + +import ( + "image" + "image/png" + "io" + "math" + + "github.com/golang/freetype/truetype" + "github.com/wcharczuk/go-chart/v2/drawing" +) + +// PNG returns a new png/raster renderer. +func PNG(width, height int) (Renderer, error) { + i := image.NewRGBA(image.Rect(0, 0, width, height)) + gc, err := drawing.NewRasterGraphicContext(i) + if err == nil { + return &rasterRenderer{ + i: i, + gc: gc, + }, nil + } + return nil, err +} + +// rasterRenderer renders chart commands to a bitmap. +type rasterRenderer struct { + i *image.RGBA + gc *drawing.RasterGraphicContext + + rotateRadians *float64 + + s Style +} + +func (rr *rasterRenderer) ResetStyle() { + rr.s = Style{Font: rr.s.Font} + rr.ClearTextRotation() +} + +// GetDPI returns the dpi. +func (rr *rasterRenderer) GetDPI() float64 { + return rr.gc.GetDPI() +} + +// SetDPI implements the interface method. +func (rr *rasterRenderer) SetDPI(dpi float64) { + rr.gc.SetDPI(dpi) +} + +// SetClassName implements the interface method. However, PNGs have no classes. +func (rr *rasterRenderer) SetClassName(_ string) {} + +// SetStrokeColor implements the interface method. +func (rr *rasterRenderer) SetStrokeColor(c drawing.Color) { + rr.s.StrokeColor = c +} + +// SetLineWidth implements the interface method. +func (rr *rasterRenderer) SetStrokeWidth(width float64) { + rr.s.StrokeWidth = width +} + +// StrokeDashArray sets the stroke dash array. +func (rr *rasterRenderer) SetStrokeDashArray(dashArray []float64) { + rr.s.StrokeDashArray = dashArray +} + +// SetFillColor implements the interface method. +func (rr *rasterRenderer) SetFillColor(c drawing.Color) { + rr.s.FillColor = c +} + +// MoveTo implements the interface method. +func (rr *rasterRenderer) MoveTo(x, y int) { + rr.gc.MoveTo(float64(x), float64(y)) +} + +// LineTo implements the interface method. +func (rr *rasterRenderer) LineTo(x, y int) { + rr.gc.LineTo(float64(x), float64(y)) +} + +// QuadCurveTo implements the interface method. +func (rr *rasterRenderer) QuadCurveTo(cx, cy, x, y int) { + rr.gc.QuadCurveTo(float64(cx), float64(cy), float64(x), float64(y)) +} + +// ArcTo implements the interface method. +func (rr *rasterRenderer) ArcTo(cx, cy int, rx, ry, startAngle, delta float64) { + rr.gc.ArcTo(float64(cx), float64(cy), rx, ry, startAngle, delta) +} + +// Close implements the interface method. +func (rr *rasterRenderer) Close() { + rr.gc.Close() +} + +// Stroke implements the interface method. +func (rr *rasterRenderer) Stroke() { + rr.gc.SetStrokeColor(rr.s.StrokeColor) + rr.gc.SetLineWidth(rr.s.StrokeWidth) + rr.gc.SetLineDash(rr.s.StrokeDashArray, 0) + rr.gc.Stroke() +} + +// Fill implements the interface method. +func (rr *rasterRenderer) Fill() { + rr.gc.SetFillColor(rr.s.FillColor) + rr.gc.Fill() +} + +// FillStroke implements the interface method. +func (rr *rasterRenderer) FillStroke() { + rr.gc.SetFillColor(rr.s.FillColor) + rr.gc.SetStrokeColor(rr.s.StrokeColor) + rr.gc.SetLineWidth(rr.s.StrokeWidth) + rr.gc.SetLineDash(rr.s.StrokeDashArray, 0) + rr.gc.FillStroke() +} + +// Circle fully draws a circle at a given point but does not apply the fill or stroke. +func (rr *rasterRenderer) Circle(radius float64, x, y int) { + xf := float64(x) + yf := float64(y) + + rr.gc.MoveTo(xf-radius, yf) //9 + rr.gc.QuadCurveTo(xf-radius, yf-radius, xf, yf-radius) //12 + rr.gc.QuadCurveTo(xf+radius, yf-radius, xf+radius, yf) //3 + rr.gc.QuadCurveTo(xf+radius, yf+radius, xf, yf+radius) //6 + rr.gc.QuadCurveTo(xf-radius, yf+radius, xf-radius, yf) //9 +} + +// SetFont implements the interface method. +func (rr *rasterRenderer) SetFont(f *truetype.Font) { + rr.s.Font = f +} + +// SetFontSize implements the interface method. +func (rr *rasterRenderer) SetFontSize(size float64) { + rr.s.FontSize = size +} + +// SetFontColor implements the interface method. +func (rr *rasterRenderer) SetFontColor(c drawing.Color) { + rr.s.FontColor = c +} + +// Text implements the interface method. +func (rr *rasterRenderer) Text(body string, x, y int) { + xf, yf := rr.getCoords(x, y) + rr.gc.SetFont(rr.s.Font) + rr.gc.SetFontSize(rr.s.FontSize) + rr.gc.SetFillColor(rr.s.FontColor) + rr.gc.CreateStringPath(body, float64(xf), float64(yf)) + rr.gc.Fill() +} + +// MeasureText returns the height and width in pixels of a string. +func (rr *rasterRenderer) MeasureText(body string) Box { + rr.gc.SetFont(rr.s.Font) + rr.gc.SetFontSize(rr.s.FontSize) + rr.gc.SetFillColor(rr.s.FontColor) + l, t, r, b, err := rr.gc.GetStringBounds(body) + if err != nil { + return Box{} + } + if l < 0 { + r = r - l // equivalent to r+(-1*l) + l = 0 + } + if t < 0 { + b = b - t + t = 0 + } + + if l > 0 { + r = r + l + l = 0 + } + + if t > 0 { + b = b + t + t = 0 + } + + textBox := Box{ + Top: int(math.Ceil(t)), + Left: int(math.Ceil(l)), + Right: int(math.Ceil(r)), + Bottom: int(math.Ceil(b)), + } + if rr.rotateRadians == nil { + return textBox + } + + return textBox.Corners().Rotate(RadiansToDegrees(*rr.rotateRadians)).Box() +} + +// SetTextRotation sets a text rotation. +func (rr *rasterRenderer) SetTextRotation(radians float64) { + rr.rotateRadians = &radians +} + +func (rr *rasterRenderer) getCoords(x, y int) (xf, yf int) { + if rr.rotateRadians == nil { + xf = x + yf = y + return + } + + rr.gc.Translate(float64(x), float64(y)) + rr.gc.Rotate(*rr.rotateRadians) + return +} + +// ClearTextRotation clears text rotation. +func (rr *rasterRenderer) ClearTextRotation() { + rr.gc.SetMatrixTransform(drawing.NewIdentityMatrix()) + rr.rotateRadians = nil +} + +// Save implements the interface method. +func (rr *rasterRenderer) Save(w io.Writer) error { + if typed, isTyped := w.(RGBACollector); isTyped { + typed.SetRGBA(rr.i) + return nil + } + return png.Encode(w, rr.i) +} diff --git a/vendor/github.com/wcharczuk/go-chart/v2/renderable.go b/vendor/github.com/wcharczuk/go-chart/v2/renderable.go new file mode 100644 index 00000000..6efb3ad7 --- /dev/null +++ b/vendor/github.com/wcharczuk/go-chart/v2/renderable.go @@ -0,0 +1,4 @@ +package chart + +// Renderable is a function that can be called to render custom elements on the chart. +type Renderable func(r Renderer, canvasBox Box, defaults Style) diff --git a/vendor/github.com/wcharczuk/go-chart/v2/renderer.go b/vendor/github.com/wcharczuk/go-chart/v2/renderer.go new file mode 100644 index 00000000..589c7737 --- /dev/null +++ b/vendor/github.com/wcharczuk/go-chart/v2/renderer.go @@ -0,0 +1,89 @@ +package chart + +import ( + "io" + + "github.com/golang/freetype/truetype" + "github.com/wcharczuk/go-chart/v2/drawing" +) + +// Renderer represents the basic methods required to draw a chart. +type Renderer interface { + // ResetStyle should reset any style related settings on the renderer. + ResetStyle() + + // GetDPI gets the DPI for the renderer. + GetDPI() float64 + + // SetDPI sets the DPI for the renderer. + SetDPI(dpi float64) + + // SetClassName sets the current class name. + SetClassName(string) + + // SetStrokeColor sets the current stroke color. + SetStrokeColor(drawing.Color) + + // SetFillColor sets the current fill color. + SetFillColor(drawing.Color) + + // SetStrokeWidth sets the stroke width. + SetStrokeWidth(width float64) + + // SetStrokeDashArray sets the stroke dash array. + SetStrokeDashArray(dashArray []float64) + + // MoveTo moves the cursor to a given point. + MoveTo(x, y int) + + // LineTo both starts a shape and draws a line to a given point + // from the previous point. + LineTo(x, y int) + + // QuadCurveTo draws a quad curve. + // cx and cy represent the bezier "control points". + QuadCurveTo(cx, cy, x, y int) + + // ArcTo draws an arc with a given center (cx,cy) + // a given set of radii (rx,ry), a startAngle and delta (in radians). + ArcTo(cx, cy int, rx, ry, startAngle, delta float64) + + // Close finalizes a shape as drawn by LineTo. + Close() + + // Stroke strokes the path. + Stroke() + + // Fill fills the path, but does not stroke. + Fill() + + // FillStroke fills and strokes a path. + FillStroke() + + // Circle draws a circle at the given coords with a given radius. + Circle(radius float64, x, y int) + + // SetFont sets a font for a text field. + SetFont(*truetype.Font) + + // SetFontColor sets a font's color + SetFontColor(drawing.Color) + + // SetFontSize sets the font size for a text field. + SetFontSize(size float64) + + // Text draws a text blob. + Text(body string, x, y int) + + // MeasureText measures text. + MeasureText(body string) Box + + // SetTextRotatation sets a rotation for drawing elements. + SetTextRotation(radians float64) + + // ClearTextRotation clears rotation. + ClearTextRotation() + + // Save writes the image to the given writer. + Save(w io.Writer) error +} diff --git a/vendor/github.com/wcharczuk/go-chart/v2/renderer_provider.go b/vendor/github.com/wcharczuk/go-chart/v2/renderer_provider.go new file mode 100644 index 00000000..be961a8e --- /dev/null +++ b/vendor/github.com/wcharczuk/go-chart/v2/renderer_provider.go @@ -0,0 +1,4 @@ +package chart + +// RendererProvider is a function that returns a renderer. +type RendererProvider func(int, int) (Renderer, error) diff --git a/vendor/github.com/wcharczuk/go-chart/v2/roboto/roboto.go b/vendor/github.com/wcharczuk/go-chart/v2/roboto/roboto.go new file mode 100644 index 00000000..60658c65 --- /dev/null +++ b/vendor/github.com/wcharczuk/go-chart/v2/roboto/roboto.go @@ -0,0 +1,5 @@ +package roboto + +// Roboto is the .ttf of Roboto-Medium. +// yes it is inlined. +var Roboto = []byte{0x0, 0x1, 0x0, 0x0, 0x0, 0xD, 0x0, 0x80, 0x0, 0x3, 0x0, 0x50, 0x47, 0x44, 0x45, 0x46, 0xE1, 0x72, 0xE4, 0x6D, 0x0, 0x3, 0x6A, 0x7C, 0x0, 0x0, 0x3, 0x76, 0x47, 0x50, 0x4F, 0x53, 0xE, 0xB6, 0x68, 0x58, 0x0, 0x3, 0x6D, 0xF4, 0x0, 0x1, 0x10, 0xC4, 0x47, 0x53, 0x55, 0x42, 0x72, 0xEB, 0xE7, 0x34, 0x0, 0x4, 0x7E, 0xB8, 0x0, 0x0, 0x2B, 0x68, 0x4F, 0x53, 0x2F, 0x32, 0x9B, 0x33, 0xB2, 0x3A, 0x0, 0x0, 0x1, 0x58, 0x0, 0x0, 0x0, 0x60, 0x63, 0x6D, 0x61, 0x70, 0x6A, 0x87, 0x43, 0x81, 0x0, 0x0, 0x36, 0x34, 0x0, 0x0, 0x18, 0xCC, 0x67, 0x6C, 0x79, 0x66, 0xEC, 0x38, 0xAB, 0xF4, 0x0, 0x0, 0x83, 0x80, 0x0, 0x2, 0xE3, 0xCD, 0x68, 0x65, 0x61, 0x64, 0x0, 0xD8, 0xDB, 0x29, 0x0, 0x0, 0x0, 0xDC, 0x0, 0x0, 0x0, 0x36, 0x68, 0x68, 0x65, 0x61, 0x10, 0x97, 0x17, 0xF0, 0x0, 0x0, 0x1, 0x14, 0x0, 0x0, 0x0, 0x24, 0x68, 0x6D, 0x74, 0x78, 0xC2, 0x6D, 0xF3, 0x5F, 0x0, 0x0, 0x1, 0xB8, 0x0, 0x0, 0x34, 0x7A, 0x6C, 0x6F, 0x63, 0x61, 0x16, 0x82, 0xFE, 0x88, 0x0, 0x0, 0x4F, 0x0, 0x0, 0x0, 0x34, 0x80, 0x6D, 0x61, 0x78, 0x70, 0xD, 0x43, 0x1, 0x29, 0x0, 0x0, 0x1, 0x38, 0x0, 0x0, 0x0, 0x20, 0x6E, 0x61, 0x6D, 0x65, 0x44, 0x5E, 0x77, 0xFC, 0x0, 0x3, 0x67, 0x50, 0x0, 0x0, 0x3, 0xC, 0x70, 0x6F, 0x73, 0x74, 0xFF, 0x6D, 0x0, 0x64, 0x0, 0x3, 0x6A, 0x5C, 0x0, 0x0, 0x0, 0x20, 0x0, 0x1, 0x0, 0x0, 0x0, 0x2, 0x22, 0x4E, 0xAE, 0xA5, 0x79, 0xC3, 0x5F, 0xF, 0x3C, 0xF5, 0x0, 0x19, 0x8, 0x0, 0x0, 0x0, 0x0, 0x0, 0xC4, 0xF0, 0x73, 0x9E, 0x0, 0x0, 0x0, 0x0, 0xD3, 0x91, 0xF9, 0xF6, 0xF8, 0xBE, 0xFD, 0xD5, 0x10, 0x6A, 0x8, 0x73, 0x0, 0x0, 0x0, 0x9, 0x0, 0x2, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x7, 0x6C, 0xFE, 0xC, 0x0, 0x0, 0x11, 0x2, 0xF8, 0xBE, 0xFB, 0xC3, 0x10, 0x6A, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xD, 0x1E, 0x0, 0x1, 0x0, 0x0, 0xD, 0x1F, 0x0, 0xD6, 0x0, 0x16, 0x0, 0x50, 0x0, 0x7, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x6, 0x0, 0x2, 0x0, 0x4, 0x4, 0x99, 0x1, 0xF4, 0x0, 0x5, 0x0, 0x0, 0x5, 0x9A, 0x5, 0x33, 0x0, 0x0, 0x1, 0x1F, 0x5, 0x9A, 0x5, 0x33, 0x0, 0x0, 0x3, 0xD1, 0x0, 0x66, 0x2, 0x0, 0x0, 0x0, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xE0, 0x0, 0x2, 0xFF, 0x50, 0x0, 0x21, 0x7F, 0x0, 0x0, 0x0, 0x21, 0x0, 0x0, 0x0, 0x0, 0x47, 0x4F, 0x4F, 0x47, 0x0, 0x40, 0x0, 0x0, 0xFF, 0xFF, 0x8, 0x62, 0xFD, 0xD5, 0x0, 0x0, 0x8, 0x62, 0x2, 0x2B, 0x20, 0x0, 0x1, 0x9F, 0x0, 0x0, 0x0, 0x0, 0x4, 0x3A, 0x5, 0xB0, 0x0, 0x0, 0x0, 0x20, 0x0, 0x3, 0x3, 0x8C, 0x0, 0x64, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0xFE, 0x0, 0x0, 0x1, 0xFE, 0x0, 0x0, 0x1, 0xFE, 0x0, 0x0, 0x2, 0x25, 0x0, 0x90, 0x2, 0x98, 0x0, 0x65, 0x4, 0xE2, 0x0, 0x61, 0x4, 0x8C, 0x0, 0x65, 0x5, 0xE0, 0x0, 0x64, 0x5, 0x1D, 0x0, 0x55, 0x1, 0x5A, 0x0, 0x53, 0x2, 0xCB, 0x0, 0x80, 0x2, 0xD3, 0x0, 0x28, 0x3, 0x8A, 0x0, 0x1C, 0x4, 0x76, 0x0, 0x45, 0x1, 0xC3, 0x0, 0x1D, 0x2, 0xA1, 0x0, 0x47, 0x2, 0x3C, 0x0, 0x88, 0x3, 0x2B, 0x0, 0x2, 0x4, 0x8C, 0x0, 0x69, 0x4, 0x8C, 0x0, 0xA8, 0x4, 0x8C, 0x0, 0x51, 0x4, 0x8C, 0x0, 0x50, 0x4, 0x8C, 0x0, 0x35, 0x4, 0x8C, 0x0, 0x81, 0x4, 0x8C, 0x0, 0x76, 0x4, 0x8C, 0x0, 0x46, 0x4, 0x8C, 0x0, 0x69, 0x4, 0x8C, 0x0, 0x5E, 0x2, 0x1F, 0x0, 0x82, 0x1, 0xE7, 0x0, 0x2F, 0x4, 0x11, 0x0, 0x3F, 0x4, 0x7A, 0x0, 0x91, 0x4, 0x2A, 0x0, 0x81, 0x3, 0xE5, 0x0, 0x3C, 0x7, 0x29, 0x0, 0x52, 0x5, 0x53, 0x0, 0x12, 0x5, 0xD, 0x0, 0x95, 0x5, 0x39, 0x0, 0x66, 0x5, 0x3A, 0x0, 0x95, 0x4, 0x86, 0x0, 0x95, 0x4, 0x66, 0x0, 0x95, 0x5, 0x73, 0x0, 0x6A, 0x5, 0xB0, 0x0, 0x95, 0x2, 0x42, 0x0, 0xA4, 0x4, 0x71, 0x0, 0x2D, 0x5, 0xB, 0x0, 0x95, 0x4, 0x55, 0x0, 0x95, 0x7, 0x1, 0x0, 0x95, 0x5, 0xAF, 0x0, 0x95, 0x5, 0x86, 0x0, 0x66, 0x5, 0x1E, 0x0, 0x95, 0x5, 0x86, 0x0, 0x60, 0x4, 0xFF, 0x0, 0x95, 0x4, 0xD5, 0x0, 0x4A, 0x4, 0xDC, 0x0, 0x2D, 0x5, 0x38, 0x0, 0x7E, 0x5, 0x2E, 0x0, 0x12, 0x7, 0xB, 0x0, 0x31, 0x5, 0x10, 0x0, 0x29, 0x4, 0xE0, 0x0, 0x8, 0x4, 0xD2, 0x0, 0x50, 0x2, 0x32, 0x0, 0x84, 0x3, 0x58, 0x0, 0x14, 0x2, 0x32, 0x0, 0xD, 0x3, 0x6C, 0x0, 0x35, 0x3, 0x9C, 0x0, 0x3, 0x2, 0x94, 0x0, 0x31, 0x4, 0x55, 0x0, 0x5B, 0x4, 0x81, 0x0, 0x7D, 0x4, 0x31, 0x0, 0x50, 0x4, 0x85, 0x0, 0x50, 0x4, 0x4B, 0x0, 0x54, 0x2, 0xD6, 0x0, 0x2D, 0x4, 0x89, 0x0, 0x52, 0x4, 0x71, 0x0, 0x7A, 0x2, 0xC, 0x0, 0x7D, 0x2, 0x1, 0xFF, 0xB4, 0x4, 0x2D, 0x0, 0x7D, 0x2, 0xC, 0x0, 0x8C, 0x6, 0xF7, 0x0, 0x7D, 0x4, 0x73, 0x0, 0x7A, 0x4, 0x8E, 0x0, 0x50, 0x4, 0x81, 0x0, 0x7D, 0x4, 0x8B, 0x0, 0x50, 0x2, 0xD0, 0x0, 0x7D, 0x4, 0x22, 0x0, 0x4C, 0x2, 0xAA, 0x0, 0x8, 0x4, 0x72, 0x0, 0x77, 0x3, 0xF6, 0x0, 0x17, 0x5, 0xF2, 0x0, 0x22, 0x4, 0x7, 0x0, 0x1F, 0x3, 0xE5, 0x0, 0xC, 0x4, 0x7, 0x0, 0x52, 0x2, 0xAF, 0x0, 0x38, 0x2, 0x2, 0x0, 0xAE, 0x2, 0xAF, 0x0, 0x1C, 0x5, 0x51, 0x0, 0x76, 0x2, 0x1F, 0x0, 0x86, 0x4, 0x7D, 0x0, 0x65, 0x4, 0xB6, 0x0, 0x5F, 0x5, 0x9E, 0x0, 0x5D, 0x4, 0x41, 0x0, 0xC, 0x1, 0xFD, 0x0, 0x89, 0x4, 0xF9, 0x0, 0x5A, 0x3, 0x85, 0x0, 0x5E, 0x6, 0x45, 0x0, 0x56, 0x3, 0x92, 0x0, 0x8E, 0x3, 0xE2, 0x0, 0x56, 0x4, 0x6E, 0x0, 0x7F, 0x6, 0x45, 0x0, 0x56, 0x3, 0xDC, 0x0, 0x9C, 0x3, 0xB, 0x0, 0x7F, 0x4, 0x4B, 0x0, 0x5F, 0x2, 0xF6, 0x0, 0x3C, 0x2, 0xF6, 0x0, 0x37, 0x2, 0x9C, 0x0, 0x71, 0x4, 0xBB, 0x0, 0x93, 0x3, 0xEE, 0x0, 0x46, 0x2, 0x42, 0x0, 0x8E, 0x2, 0x11, 0x0, 0x6E, 0x2, 0xF6, 0x0, 0x81, 0x3, 0xA7, 0x0, 0x77, 0x3, 0xE2, 0x0, 0x5E, 0x5, 0xD0, 0x0, 0x59, 0x6, 0x2B, 0x0, 0x50, 0x6, 0x57, 0x0, 0x67, 0x3, 0xE5, 0x0, 0x43, 0x7, 0x85, 0xFF, 0xF6, 0x4, 0x45, 0x0, 0x4D, 0x5, 0x85, 0x0, 0x6A, 0x4, 0xCB, 0x0, 0x95, 0x4, 0xE8, 0x0, 0x88, 0x6, 0xC1, 0x0, 0x48, 0x4, 0xA7, 0x0, 0x68, 0x4, 0x92, 0x0, 0x44, 0x4, 0x89, 0x0, 0x50, 0x4, 0x97, 0x0, 0x83, 0x4, 0xEE, 0x0, 0x50, 0x5, 0xB0, 0x0, 0x20, 0x2, 0x1B, 0x0, 0x90, 0x4, 0x98, 0x0, 0x8E, 0x4, 0x64, 0x0, 0x22, 0x2, 0x4F, 0x0, 0x22, 0x5, 0x94, 0x0, 0x90, 0x4, 0x89, 0x0, 0x7F, 0x7, 0xB4, 0x0, 0x65, 0x7, 0x3B, 0x0, 0x5B, 0x2, 0xD, 0x0, 0x8B, 0x4, 0xDA, 0x0, 0x1A, 0x6, 0xA, 0x0, 0x22, 0x5, 0x8, 0x0, 0x90, 0x4, 0x81, 0x0, 0x7D, 0x5, 0x78, 0x0, 0x55, 0x5, 0x0, 0x0, 0x4F, 0x5, 0x39, 0x0, 0x4D, 0x5, 0xB9, 0x0, 0x66, 0x4, 0xC7, 0x0, 0x50, 0x5, 0x86, 0x0, 0x21, 0x6, 0x39, 0x0, 0x22, 0x5, 0x8, 0x0, 0x4E, 0x4, 0x85, 0x0, 0x50, 0x4, 0x89, 0x0, 0x53, 0x4, 0x86, 0x0, 0x3A, 0x5, 0x89, 0x0, 0x51, 0x4, 0xD6, 0x0, 0x57, 0x4, 0xB9, 0x0, 0x0, 0x2, 0xD1, 0xFF, 0xE4, 0x5, 0xBC, 0x0, 0x6A, 0x5, 0x30, 0x0, 0x18, 0x6, 0xBD, 0x0, 0x7A, 0x2, 0xC6, 0x0, 0x14, 0x5, 0xB, 0x0, 0x95, 0x4, 0x2D, 0x0, 0x7D, 0x2, 0xC6, 0x0, 0x14, 0x4, 0x6A, 0x0, 0x16, 0x7, 0x3F, 0x0, 0x99, 0x6, 0x2, 0x0, 0x0, 0x5, 0x8A, 0x0, 0x58, 0x4, 0x9F, 0x0, 0x4F, 0x7, 0x1, 0x0, 0x66, 0x5, 0x9C, 0x0, 0x50, 0x6, 0x1C, 0x0, 0x22, 0x4, 0x81, 0x0, 0x7D, 0x5, 0x84, 0x0, 0x95, 0x4, 0xD5, 0x0, 0x4A, 0x4, 0x22, 0x0, 0x57, 0x4, 0x91, 0x0, 0x48, 0x3, 0xF4, 0x0, 0x1B, 0x2, 0xAA, 0x0, 0x8, 0x5, 0x50, 0x0, 0x1E, 0x2, 0xCA, 0x0, 0x13, 0x4, 0xDC, 0x0, 0x2D, 0x5, 0xA5, 0x0, 0x7E, 0x4, 0xF2, 0x0, 0x77, 0x5, 0x53, 0x0, 0x6F, 0x5, 0x3C, 0x0, 0x7E, 0x5, 0x59, 0x0, 0x8, 0x4, 0xC4, 0x0, 0xC, 0x4, 0xD2, 0x0, 0x50, 0x4, 0x14, 0x0, 0x59, 0x5, 0x33, 0x0, 0x4A, 0x5, 0x33, 0x0, 0x64, 0x4, 0x8D, 0x0, 0x53, 0x4, 0x3F, 0x0, 0x45, 0x4, 0xA8, 0x0, 0x51, 0x4, 0xAF, 0x0, 0x3F, 0x4, 0x30, 0x0, 0x2E, 0x4, 0x22, 0x0, 0x4C, 0x4, 0x81, 0x0, 0x7D, 0x1, 0xF5, 0x0, 0xA7, 0x3, 0x3, 0x0, 0xA7, 0x2, 0xC6, 0x0, 0x14, 0x2, 0x25, 0x0, 0x90, 0x9, 0x6B, 0x0, 0x95, 0x8, 0xD6, 0x0, 0x95, 0x8, 0x18, 0x0, 0x50, 0x5, 0x8B, 0x0, 0x6A, 0x4, 0x89, 0x0, 0x25, 0x5, 0x33, 0x0, 0x4A, 0x4, 0xA7, 0x0, 0x5E, 0x8, 0xA0, 0x0, 0x95, 0x5, 0x4F, 0x0, 0x95, 0x4, 0xCF, 0x0, 0x4E, 0x4, 0xA, 0x0, 0x48, 0x5, 0x39, 0x0, 0x95, 0x5, 0xD2, 0x0, 0x50, 0x5, 0x36, 0x0, 0x67, 0x5, 0x9, 0x0, 0x55, 0x5, 0x4, 0x0, 0x50, 0x4, 0x4D, 0x0, 0x52, 0x3, 0xC8, 0x0, 0x14, 0x5, 0xC7, 0x0, 0x7A, 0x3, 0xC8, 0x0, 0x14, 0x2, 0x27, 0xFF, 0xB5, 0x7, 0x36, 0x0, 0x60, 0x7, 0x15, 0x0, 0x50, 0x5, 0x53, 0xFF, 0x49, 0x5, 0x39, 0x0, 0x66, 0x4, 0x31, 0x0, 0x50, 0x4, 0xA0, 0x0, 0x1A, 0x4, 0xDC, 0x0, 0x2D, 0x4, 0x1E, 0x0, 0x49, 0x4, 0x5E, 0x0, 0x52, 0x4, 0x47, 0x0, 0x37, 0x3, 0xF2, 0x0, 0x4C, 0x5, 0x5B, 0x0, 0x1A, 0x6, 0x43, 0x0, 0x22, 0x5, 0x2E, 0x0, 0x12, 0x4, 0x86, 0x0, 0x95, 0x4, 0x4B, 0x0, 0x54, 0x4, 0xCC, 0x0, 0x2D, 0x2, 0xDF, 0x0, 0x27, 0x5, 0xDC, 0x0, 0x66, 0x4, 0xD9, 0x0, 0x50, 0x5, 0x43, 0x0, 0x21, 0x3, 0x2D, 0x0, 0x1A, 0x5, 0x95, 0x0, 0x22, 0x4, 0x52, 0x0, 0x22, 0x4, 0x55, 0x0, 0x59, 0x4, 0xB8, 0x0, 0x56, 0x4, 0xB8, 0x0, 0x3E, 0x4, 0x82, 0x0, 0x7D, 0x4, 0x31, 0x0, 0x3B, 0x4, 0x47, 0x0, 0x2D, 0x4, 0xDA, 0x0, 0x50, 0x4, 0xDA, 0x0, 0x50, 0x4, 0x4B, 0x0, 0x40, 0x4, 0x3D, 0x0, 0x5A, 0x5, 0xC1, 0x0, 0x40, 0x4, 0x61, 0x0, 0x61, 0x4, 0x61, 0x0, 0x54, 0x5, 0xD6, 0x0, 0x54, 0x4, 0x43, 0x0, 0x53, 0x2, 0xBA, 0x0, 0x39, 0x4, 0xE4, 0x0, 0x52, 0x4, 0x89, 0x0, 0x52, 0x4, 0xDB, 0x0, 0x68, 0x4, 0x76, 0x0, 0x14, 0x5, 0x1B, 0x0, 0x1B, 0x4, 0x71, 0x0, 0x78, 0x4, 0x71, 0x0, 0x7A, 0x4, 0x71, 0x0, 0x7A, 0x2, 0xC6, 0x0, 0x14, 0x2, 0x78, 0x0, 0x77, 0x2, 0xD7, 0x0, 0x5D, 0x3, 0x6, 0x0, 0x14, 0x3, 0xD3, 0x0, 0x22, 0x2, 0xA6, 0x0, 0xB7, 0x4, 0xD5, 0x0, 0x8C, 0x6, 0xF7, 0x0, 0x7D, 0x6, 0xF7, 0x0, 0x7D, 0x6, 0xF7, 0x0, 0x7D, 0x4, 0xD0, 0xFF, 0xF9, 0x4, 0xCF, 0x0, 0x7A, 0x4, 0x86, 0x0, 0x7D, 0x6, 0xA8, 0x0, 0x66, 0x6, 0x93, 0x0, 0x66, 0x4, 0xD4, 0x0, 0x50, 0x2, 0xD0, 0x0, 0x1B, 0x2, 0xD0, 0x0, 0x1B, 0x3, 0x2A, 0x0, 0x1B, 0x2, 0xD0, 0x0, 0x7D, 0x2, 0xD0, 0x0, 0x7D, 0x2, 0x68, 0x0, 0x7D, 0x2, 0x68, 0x0, 0x1B, 0x4, 0x73, 0x0, 0x71, 0x4, 0x73, 0x0, 0x71, 0x4, 0x22, 0x0, 0x4C, 0x3, 0x4C, 0x0, 0x1B, 0x3, 0x4C, 0x0, 0x1B, 0x3, 0x4C, 0x0, 0x1B, 0x3, 0xF2, 0x0, 0x1E, 0x2, 0xAA, 0x0, 0x37, 0x2, 0xC1, 0x0, 0x8, 0x5, 0x3E, 0x0, 0x18, 0x4, 0xF0, 0x0, 0x62, 0x4, 0x60, 0x0, 0x77, 0x3, 0xF6, 0x0, 0x19, 0x5, 0xF0, 0x0, 0x22, 0x3, 0xE7, 0x0, 0xD, 0x4, 0x39, 0x0, 0x8, 0x4, 0x93, 0x0, 0x52, 0x5, 0x1, 0x0, 0x52, 0x4, 0x8D, 0x0, 0x51, 0x4, 0xA3, 0x0, 0x51, 0x4, 0x31, 0x0, 0x3B, 0x4, 0x31, 0x0, 0x50, 0x4, 0x31, 0x0, 0x3B, 0x4, 0x31, 0x0, 0x50, 0x5, 0x86, 0x0, 0x66, 0x4, 0x43, 0x0, 0x61, 0x5, 0x11, 0x0, 0x50, 0x3, 0xAD, 0x0, 0x1E, 0x4, 0x2D, 0xFF, 0xF6, 0x3, 0x8B, 0x0, 0x7A, 0x4, 0xDA, 0x0, 0x50, 0x4, 0x31, 0x0, 0x3B, 0x4, 0x31, 0x0, 0x50, 0x7, 0xB8, 0x0, 0x50, 0x7, 0x64, 0x0, 0x50, 0x8, 0xB2, 0x0, 0x50, 0x5, 0xDD, 0x0, 0x8, 0x4, 0x95, 0x0, 0x8, 0x6, 0x3D, 0x0, 0x8, 0x6, 0xD3, 0x0, 0x2D, 0x5, 0x75, 0x0, 0x8C, 0x5, 0x35, 0x0, 0x8C, 0x3, 0xC6, 0x0, 0x36, 0x3, 0xDD, 0x0, 0x57, 0x5, 0x17, 0x0, 0x1B, 0x5, 0x57, 0x0, 0x1B, 0x3, 0x5E, 0x0, 0x64, 0x3, 0x5E, 0x0, 0x64, 0x1, 0xEF, 0x0, 0x22, 0x2, 0x3A, 0x0, 0x64, 0x2, 0x3A, 0x0, 0x28, 0x2, 0x8A, 0x0, 0x28, 0x3, 0x73, 0x0, 0x64, 0x4, 0x7A, 0x0, 0x28, 0x3, 0x45, 0x0, 0x2F, 0x1, 0x94, 0x0, 0x23, 0x2, 0xE3, 0x0, 0x23, 0x1, 0xD6, 0x0, 0x50, 0x1, 0xD6, 0x0, 0x50, 0x1, 0x3C, 0x0, 0x36, 0x1, 0x3C, 0x0, 0x36, 0x2, 0xFD, 0x0, 0x1B, 0x2, 0xFD, 0x0, 0x3C, 0x3, 0x60, 0x0, 0x3D, 0x3, 0x60, 0x0, 0x3D, 0x3, 0x44, 0x0, 0x30, 0x3, 0x44, 0x0, 0x30, 0x3, 0xE7, 0x0, 0x95, 0x3, 0xB1, 0x0, 0x72, 0x1, 0x20, 0x0, 0x3D, 0x3, 0xDC, 0x0, 0x9C, 0x2, 0x74, 0x0, 0x48, 0x2, 0x6D, 0x0, 0x37, 0x1, 0x20, 0x0, 0x3D, 0x3, 0x50, 0x0, 0x51, 0x2, 0x6D, 0x0, 0x37, 0x2, 0x74, 0x0, 0x48, 0x1, 0xF4, 0x0, 0x5F, 0x1, 0xF4, 0x0, 0x5F, 0x1, 0x3C, 0x0, 0x36, 0x1, 0x3C, 0x0, 0x36, 0x2, 0x58, 0x0, 0x50, 0x2, 0x58, 0x0, 0x50, 0x2, 0x58, 0x0, 0x50, 0x2, 0x59, 0x0, 0x3D, 0x3, 0x7D, 0x0, 0x76, 0x2, 0xC, 0x0, 0x82, 0x2, 0xB2, 0x0, 0x79, 0x2, 0x4D, 0x0, 0x29, 0x3, 0xD8, 0x0, 0x7A, 0x3, 0x20, 0x0, 0x4A, 0x1, 0xDB, 0xFF, 0x3A, 0x2, 0xA5, 0x0, 0x50, 0x3, 0x6B, 0x0, 0x35, 0x1, 0x8D, 0x0, 0x64, 0x3, 0x1B, 0x0, 0x3C, 0x3, 0x48, 0x0, 0x2F, 0x3, 0x58, 0x0, 0x51, 0x2, 0xB2, 0x0, 0x1A, 0x2, 0xB2, 0x0, 0x1A, 0x2, 0xB2, 0x0, 0x1A, 0x2, 0xB2, 0x0, 0x1A, 0x2, 0xB2, 0x0, 0x1A, 0x3, 0x1E, 0x0, 0x84, 0x2, 0xF7, 0x0, 0x84, 0x3, 0x54, 0x0, 0x49, 0x3, 0x1C, 0x0, 0x43, 0x3, 0x29, 0x0, 0x50, 0x2, 0x80, 0x0, 0x3D, 0x2, 0x80, 0x0, 0x3D, 0x2, 0x81, 0x0, 0x3D, 0x2, 0x81, 0x0, 0x3D, 0x2, 0x6C, 0x0, 0x83, 0x2, 0x6D, 0x0, 0x37, 0x4, 0x13, 0x0, 0x37, 0x4, 0x1A, 0x0, 0x48, 0x3, 0x70, 0x0, 0x4A, 0x1, 0xBD, 0x0, 0x51, 0x2, 0x35, 0x0, 0x50, 0x2, 0x35, 0x0, 0x50, 0x2, 0x35, 0x0, 0x50, 0x2, 0x35, 0x0, 0x50, 0x3, 0x57, 0x0, 0x50, 0x3, 0x39, 0x0, 0x50, 0x3, 0x98, 0x0, 0x43, 0x0, 0x0, 0xFC, 0x8D, 0x0, 0x0, 0xFD, 0x5E, 0x0, 0x0, 0xFC, 0x60, 0x0, 0x0, 0xFC, 0x72, 0x0, 0x0, 0xFC, 0x60, 0x0, 0x0, 0xFB, 0xEE, 0x0, 0x0, 0xFC, 0x75, 0x0, 0x0, 0xFD, 0x2F, 0x0, 0x0, 0xFC, 0x4, 0x0, 0x0, 0xFD, 0x3D, 0x0, 0x0, 0xFC, 0xDC, 0x0, 0x0, 0xFB, 0xEE, 0x0, 0x0, 0xFC, 0x60, 0x0, 0x0, 0xFD, 0x65, 0x0, 0x0, 0xFC, 0xDD, 0x0, 0x0, 0xFC, 0xB, 0x0, 0x0, 0xFC, 0x75, 0x0, 0x0, 0xFC, 0x75, 0x0, 0x0, 0xFD, 0x47, 0x0, 0x0, 0xFD, 0x1E, 0x0, 0x0, 0xFD, 0x1D, 0x0, 0x0, 0xFF, 0x3A, 0x0, 0x0, 0xFC, 0xB8, 0x0, 0x0, 0xFC, 0xC7, 0x0, 0x0, 0xFC, 0xD4, 0x0, 0x0, 0xFC, 0xDC, 0x0, 0x0, 0xFC, 0xF3, 0x0, 0x0, 0xFE, 0x65, 0x0, 0x0, 0xFD, 0x71, 0x0, 0x0, 0xFC, 0xDB, 0x0, 0x0, 0xFC, 0xDC, 0x0, 0x0, 0xFC, 0xDC, 0x0, 0x0, 0xFC, 0xC2, 0x0, 0x0, 0xFD, 0xBD, 0x0, 0x0, 0xFE, 0xCE, 0x0, 0x0, 0xFD, 0x1B, 0x0, 0x0, 0xFC, 0x3, 0x0, 0x0, 0xFC, 0xDD, 0x0, 0x0, 0xFD, 0x32, 0x0, 0x0, 0xFD, 0x28, 0x0, 0x0, 0xFC, 0xCA, 0x0, 0x0, 0xFD, 0x65, 0x0, 0x0, 0xFC, 0x5B, 0x0, 0x0, 0xFC, 0x2B, 0x0, 0x0, 0xFC, 0x61, 0x0, 0x0, 0xFC, 0x61, 0x0, 0x0, 0xFC, 0x75, 0x0, 0x0, 0xFC, 0x75, 0x0, 0x0, 0xFC, 0x43, 0x0, 0x0, 0xFC, 0x62, 0x0, 0x0, 0xFB, 0xED, 0x0, 0x0, 0xFB, 0xED, 0x0, 0x0, 0xFC, 0x49, 0x0, 0x0, 0xFC, 0x69, 0x0, 0x0, 0xFB, 0x44, 0x0, 0x0, 0xFC, 0x1E, 0x0, 0x0, 0xFB, 0xA, 0x0, 0x0, 0xFD, 0x50, 0x0, 0x0, 0xFC, 0x5C, 0x0, 0x0, 0xFC, 0xE8, 0x0, 0x0, 0xFC, 0x2B, 0x0, 0x0, 0xFD, 0x4, 0x0, 0x0, 0xFD, 0x45, 0x0, 0x0, 0xFB, 0xED, 0x0, 0x0, 0xFF, 0x0, 0x0, 0x0, 0xFF, 0xF, 0x0, 0x0, 0xFC, 0x49, 0x0, 0x0, 0xFD, 0x30, 0x0, 0x0, 0xFC, 0xB, 0x0, 0x0, 0xFD, 0x60, 0x0, 0x0, 0xFC, 0x5C, 0x0, 0x0, 0xFC, 0xC2, 0x0, 0x0, 0xFC, 0xCE, 0x0, 0x0, 0xFD, 0x9, 0x0, 0x0, 0xFC, 0x4A, 0x0, 0x0, 0xFC, 0x2A, 0x0, 0x0, 0xFC, 0x55, 0x0, 0x0, 0xFC, 0xD, 0x0, 0x0, 0xFC, 0xD1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xFC, 0x7C, 0x0, 0x0, 0xFD, 0x6F, 0x0, 0x0, 0xFC, 0x75, 0x0, 0x0, 0xFD, 0x4, 0x0, 0x0, 0xFC, 0xBE, 0x0, 0x0, 0xFC, 0xCE, 0x0, 0x0, 0xFC, 0x17, 0x0, 0x0, 0xFD, 0x4F, 0x1, 0xC0, 0x0, 0x49, 0x0, 0x0, 0xFC, 0xD9, 0x0, 0x0, 0xFC, 0x41, 0x0, 0x0, 0xFC, 0xFC, 0x0, 0x0, 0xFD, 0x34, 0x0, 0x0, 0xFD, 0x34, 0x0, 0x0, 0xFD, 0xB6, 0x0, 0x0, 0xFD, 0xB6, 0x0, 0x0, 0xFC, 0x2E, 0x0, 0x0, 0xFD, 0x34, 0x0, 0x0, 0xFD, 0x27, 0x0, 0x0, 0xFC, 0xD0, 0x0, 0x0, 0xFC, 0xCE, 0x0, 0x0, 0xFD, 0x79, 0x0, 0x0, 0xFC, 0xC2, 0x0, 0x0, 0xFC, 0xD6, 0x0, 0x0, 0xFC, 0xCC, 0x0, 0x0, 0xFC, 0xC0, 0x0, 0x0, 0xFC, 0xD6, 0x0, 0x0, 0xFC, 0x33, 0x0, 0x0, 0xFD, 0x46, 0x0, 0x0, 0xFC, 0xFB, 0x0, 0x0, 0xFC, 0xC5, 0x0, 0x0, 0xFC, 0xE6, 0x4, 0x81, 0x0, 0x95, 0x3, 0xEB, 0x0, 0x1B, 0x4, 0xDB, 0x0, 0x2D, 0x4, 0x2D, 0x0, 0x36, 0x1, 0xEF, 0x0, 0x51, 0x1, 0xEF, 0x0, 0x50, 0x5, 0xA9, 0x0, 0x95, 0x4, 0xBD, 0x0, 0x86, 0x4, 0x31, 0x0, 0x3B, 0x4, 0x31, 0x0, 0x50, 0x4, 0x31, 0x0, 0x3B, 0x2, 0x20, 0x0, 0x47, 0x2, 0x5D, 0x0, 0xC7, 0x4, 0x3C, 0x0, 0x68, 0x2, 0x42, 0x0, 0x8E, 0x4, 0x75, 0x0, 0x9B, 0x5, 0xC0, 0x0, 0x19, 0x5, 0x7B, 0x0, 0x5C, 0x5, 0x39, 0x0, 0x20, 0x4, 0x91, 0x0, 0x6D, 0x5, 0xB1, 0x0, 0x9B, 0x4, 0x91, 0x0, 0x48, 0x5, 0xF0, 0x0, 0x4A, 0x5, 0xAB, 0x0, 0x44, 0x5, 0x5C, 0x0, 0x6B, 0x4, 0x85, 0x0, 0x56, 0x4, 0xC6, 0x0, 0x96, 0x4, 0xF, 0x0, 0x21, 0x4, 0x89, 0x0, 0x54, 0x4, 0x61, 0x0, 0x61, 0x4, 0x1B, 0x0, 0x61, 0x4, 0x89, 0x0, 0x7F, 0x4, 0xA2, 0x0, 0x74, 0x2, 0xAA, 0x0, 0xAA, 0x4, 0x6A, 0x0, 0x16, 0x4, 0x13, 0x0, 0x63, 0x4, 0xF4, 0x0, 0x2E, 0x4, 0x89, 0x0, 0x81, 0x4, 0x38, 0x0, 0x52, 0x4, 0x91, 0x0, 0x53, 0x4, 0x2E, 0x0, 0x40, 0x4, 0x61, 0x0, 0x80, 0x5, 0xD0, 0x0, 0x45, 0x5, 0xCA, 0x0, 0x50, 0x6, 0x95, 0x0, 0x66, 0x5, 0xB, 0x0, 0x95, 0x4, 0x81, 0x0, 0x50, 0x4, 0xB3, 0x0, 0x76, 0x4, 0x7B, 0xFF, 0xE1, 0x5, 0xD3, 0x0, 0x54, 0x6, 0x71, 0x0, 0x33, 0x5, 0x59, 0x0, 0x23, 0x5, 0x86, 0x0, 0x66, 0x4, 0x8E, 0x0, 0x50, 0x5, 0x39, 0x0, 0x66, 0x4, 0x31, 0x0, 0x50, 0x4, 0x66, 0x0, 0x95, 0x4, 0x24, 0x0, 0x87, 0x5, 0x2C, 0x0, 0x23, 0x4, 0x66, 0x0, 0x52, 0x5, 0xFB, 0x0, 0x21, 0x5, 0x7B, 0x0, 0x21, 0x5, 0x36, 0x0, 0x23, 0x4, 0x82, 0x0, 0x50, 0x3, 0x95, 0x0, 0x50, 0x3, 0x95, 0x0, 0x28, 0x5, 0xD9, 0x0, 0x7D, 0x4, 0xD8, 0x0, 0x14, 0x5, 0x39, 0x0, 0x4D, 0x5, 0x39, 0x0, 0x66, 0x5, 0x39, 0x0, 0x4D, 0x5, 0xFF, 0x0, 0x23, 0x5, 0x5A, 0x0, 0x69, 0x8, 0x89, 0x0, 0x2D, 0x8, 0x90, 0x0, 0x9B, 0x6, 0x5C, 0x0, 0x31, 0x5, 0xAA, 0x0, 0x93, 0x5, 0x8, 0x0, 0x90, 0x6, 0x7, 0x0, 0x24, 0x7, 0xA2, 0x0, 0x17, 0x4, 0xD6, 0x0, 0x49, 0x5, 0xA9, 0x0, 0x95, 0x5, 0xAA, 0x0, 0x2D, 0x5, 0xA, 0x0, 0x3A, 0x6, 0x60, 0x0, 0x4F, 0x5, 0xF9, 0x0, 0x93, 0x5, 0x89, 0x0, 0x8E, 0x7, 0x9C, 0x0, 0x99, 0x7, 0xFA, 0x0, 0x99, 0x6, 0x1A, 0x0, 0x18, 0x6, 0xF9, 0x0, 0x9C, 0x5, 0x7, 0x0, 0x91, 0x5, 0x51, 0x0, 0x6B, 0x7, 0x54, 0x0, 0xA0, 0x4, 0xF7, 0x0, 0x21, 0x4, 0x7D, 0x0, 0x5B, 0x4, 0x90, 0x0, 0x8F, 0x3, 0x5B, 0x0, 0x85, 0x4, 0xF7, 0x0, 0x27, 0x6, 0x77, 0x0, 0x1E, 0x4, 0x17, 0x0, 0x4E, 0x4, 0x98, 0x0, 0x86, 0x4, 0x6F, 0x0, 0x8F, 0x4, 0x9A, 0x0, 0x22, 0x6, 0x3, 0x0, 0x8F, 0x4, 0x98, 0x0, 0x86, 0x4, 0x98, 0x0, 0x86, 0x3, 0xF6, 0x0, 0x24, 0x5, 0xD3, 0x0, 0x54, 0x4, 0xD4, 0x0, 0x86, 0x4, 0x66, 0x0, 0x5F, 0x6, 0x8F, 0x0, 0x86, 0x6, 0xEC, 0x0, 0x7F, 0x5, 0x18, 0x0, 0x1F, 0x6, 0x6F, 0x0, 0x8F, 0x4, 0x69, 0x0, 0x8F, 0x4, 0x3D, 0x0, 0x52, 0x6, 0x84, 0x0, 0x91, 0x4, 0x70, 0x0, 0x27, 0x4, 0x71, 0xFF, 0xDA, 0x4, 0x3D, 0x0, 0x54, 0x6, 0xD2, 0x0, 0x1F, 0x6, 0xE4, 0x0, 0x86, 0x4, 0x89, 0xFF, 0xEE, 0x4, 0x98, 0x0, 0x86, 0x7, 0x49, 0x0, 0x89, 0x6, 0x50, 0x0, 0x70, 0x4, 0x68, 0xFF, 0xDF, 0x7, 0x29, 0x0, 0x99, 0x6, 0x1, 0x0, 0x87, 0x5, 0xC, 0x0, 0x1D, 0x4, 0x61, 0x0, 0xA, 0x7, 0x42, 0x0, 0xAD, 0x6, 0x36, 0x0, 0x9E, 0x6, 0xEE, 0x0, 0x80, 0x5, 0xE7, 0x0, 0x83, 0x9, 0x33, 0x0, 0xA4, 0x7, 0xFA, 0x0, 0x90, 0x4, 0x21, 0x0, 0x29, 0x3, 0xF0, 0x0, 0x33, 0x5, 0x7B, 0x0, 0x5F, 0x4, 0x89, 0x0, 0x4F, 0x5, 0x1A, 0x0, 0x10, 0x4, 0xF, 0x0, 0x21, 0x5, 0x7B, 0x0, 0x5F, 0x4, 0x89, 0x0, 0x50, 0x7, 0x45, 0x0, 0x89, 0x6, 0x45, 0x0, 0x74, 0x7, 0x49, 0x0, 0x89, 0x6, 0x50, 0x0, 0x70, 0x5, 0x1B, 0x0, 0x67, 0x4, 0x4A, 0x0, 0x5C, 0x5, 0x0, 0x0, 0x6E, 0x0, 0x0, 0xFC, 0x65, 0x0, 0x0, 0xFC, 0x72, 0x0, 0x0, 0xFD, 0x7A, 0x0, 0x0, 0xFD, 0xA5, 0x0, 0x0, 0xFC, 0x2D, 0x0, 0x0, 0xFA, 0x24, 0x0, 0x0, 0xFA, 0x4C, 0x6, 0x2A, 0x0, 0x95, 0x5, 0x1B, 0x0, 0x86, 0x4, 0x68, 0xFF, 0xDF, 0x5, 0x14, 0x0, 0x95, 0x4, 0x87, 0x0, 0x7D, 0x4, 0x6A, 0x0, 0x90, 0x3, 0xA2, 0x0, 0x7F, 0x4, 0xF2, 0x0, 0x9B, 0x4, 0x21, 0x0, 0x7F, 0x8, 0x1C, 0x0, 0x17, 0x6, 0xD3, 0x0, 0x1E, 0x5, 0xCC, 0x0, 0x9B, 0x4, 0xFA, 0x0, 0x8F, 0x5, 0x2D, 0x0, 0x91, 0x4, 0xAB, 0x0, 0x8E, 0x6, 0x96, 0x0, 0x34, 0x5, 0xA4, 0x0, 0x3E, 0x6, 0x28, 0x0, 0x95, 0x5, 0xD, 0x0, 0x86, 0x7, 0xD1, 0x0, 0x95, 0x5, 0xAB, 0x0, 0x7F, 0x8, 0x47, 0x0, 0x9B, 0x6, 0xF5, 0x0, 0x7F, 0x6, 0x2B, 0x0, 0x67, 0x5, 0x0, 0x0, 0x61, 0x5, 0x39, 0x0, 0x29, 0x4, 0x46, 0x0, 0x1F, 0x7, 0x32, 0x0, 0x2E, 0x5, 0x71, 0x0, 0x26, 0x5, 0xFB, 0x0, 0x8E, 0x4, 0xDC, 0x0, 0x5F, 0x5, 0x75, 0x0, 0x81, 0x4, 0x73, 0x0, 0x74, 0x5, 0x87, 0x0, 0x85, 0x6, 0x24, 0x0, 0x17, 0x4, 0xC4, 0xFF, 0xCA, 0x5, 0x21, 0x0, 0x91, 0x4, 0x79, 0x0, 0x8E, 0x6, 0x28, 0x0, 0x2D, 0x5, 0x1D, 0x0, 0x22, 0x5, 0xB0, 0x0, 0x9B, 0x4, 0x89, 0x0, 0x7F, 0x6, 0x35, 0x0, 0x95, 0x5, 0x1A, 0x0, 0x86, 0x7, 0x7E, 0x0, 0x95, 0x6, 0x78, 0x0, 0x8F, 0x5, 0x89, 0x0, 0x51, 0x4, 0xA6, 0x0, 0x5C, 0x4, 0xA7, 0x0, 0x5E, 0x4, 0xC7, 0x0, 0x32, 0x3, 0xAF, 0x0, 0x2C, 0x5, 0x67, 0x0, 0x29, 0x4, 0x74, 0x0, 0x1F, 0x5, 0x7, 0x0, 0x52, 0x6, 0xF2, 0x0, 0x68, 0x6, 0xDE, 0x0, 0x5F, 0x6, 0x53, 0x0, 0x3C, 0x5, 0x29, 0x0, 0x30, 0x4, 0x7B, 0x0, 0x49, 0x4, 0x3F, 0x0, 0x75, 0x7, 0xBE, 0x0, 0x43, 0x6, 0x9E, 0x0, 0x41, 0x7, 0xFE, 0x0, 0x94, 0x6, 0x9F, 0x0, 0x77, 0x5, 0x4, 0x0, 0x5D, 0x4, 0x2D, 0x0, 0x55, 0x5, 0xAA, 0x0, 0x22, 0x5, 0x1E, 0x0, 0x45, 0x5, 0x56, 0x0, 0x82, 0x6, 0x49, 0x0, 0x2D, 0x5, 0x3E, 0x0, 0x22, 0x7, 0xAE, 0x0, 0x2D, 0x6, 0x1C, 0x0, 0x22, 0x7, 0x1F, 0x0, 0x95, 0x6, 0x37, 0x0, 0x7D, 0x7, 0x76, 0x0, 0x43, 0x6, 0xE5, 0x0, 0x27, 0x5, 0x27, 0x0, 0x9B, 0x4, 0x6F, 0x0, 0x8F, 0x8, 0xC6, 0x0, 0x2D, 0x7, 0x1C, 0x0, 0x22, 0x8, 0xD7, 0x0, 0x9B, 0x7, 0x19, 0x0, 0x86, 0x6, 0x23, 0x0, 0x9B, 0x5, 0xE, 0x0, 0x86, 0x5, 0xFD, 0x0, 0x85, 0x4, 0xF5, 0x0, 0x7A, 0x6, 0x10, 0x0, 0xD, 0x5, 0xB, 0x0, 0xD, 0xA, 0xC2, 0x0, 0x24, 0x9, 0x5, 0x0, 0x27, 0x6, 0x1C, 0x0, 0x3A, 0x4, 0xFA, 0x0, 0x2B, 0x6, 0x1B, 0x0, 0x2D, 0x5, 0x10, 0x0, 0x22, 0x0, 0x0, 0xFB, 0x6C, 0x0, 0x0, 0xFB, 0xAF, 0x0, 0x0, 0xFB, 0xD1, 0x0, 0x0, 0xFC, 0x8A, 0x0, 0x0, 0xFC, 0x25, 0x0, 0x0, 0xFB, 0xA6, 0x0, 0x0, 0xFB, 0x4C, 0x0, 0x0, 0xFD, 0x5B, 0x0, 0x0, 0xFC, 0x76, 0x0, 0x0, 0xFD, 0x5B, 0x0, 0x0, 0xFD, 0x57, 0x0, 0x0, 0xFB, 0xAA, 0x0, 0x0, 0xFA, 0xED, 0x0, 0x0, 0xFB, 0x9D, 0x0, 0x0, 0xFA, 0xEF, 0x4, 0xA0, 0x0, 0x8, 0x6, 0x47, 0xFF, 0xF0, 0x6, 0xC1, 0x0, 0x3D, 0x5, 0x17, 0x0, 0x1B, 0x4, 0x55, 0x0, 0x50, 0x4, 0x8A, 0x0, 0x86, 0x4, 0xEE, 0x0, 0x2D, 0x4, 0xA, 0x0, 0x86, 0x4, 0x17, 0x0, 0x4E, 0x2, 0x7, 0x0, 0x7A, 0x3, 0xF0, 0x0, 0x1A, 0x4, 0x6D, 0x0, 0x84, 0x3, 0xB4, 0x0, 0x2D, 0x5, 0xEB, 0x0, 0x86, 0x4, 0x98, 0x0, 0x85, 0x4, 0x9E, 0x0, 0x50, 0x4, 0x31, 0x0, 0x3B, 0x5, 0x2, 0x0, 0x50, 0x5, 0x2, 0x0, 0x50, 0x5, 0x8F, 0x0, 0x25, 0x7, 0x3E, 0x0, 0x4C, 0x3, 0xE6, 0x0, 0x4F, 0x4, 0x9B, 0x0, 0x4F, 0x4, 0x9B, 0x0, 0x4F, 0x4, 0x6C, 0x0, 0x8F, 0x4, 0x7A, 0x0, 0x31, 0x4, 0x7A, 0x0, 0x31, 0x3, 0xF6, 0x0, 0x25, 0x4, 0xF2, 0x0, 0x7A, 0x4, 0xF6, 0x0, 0x5B, 0x6, 0x5C, 0x0, 0x5B, 0x4, 0xF6, 0x0, 0x5B, 0x3, 0xF7, 0x0, 0x1A, 0x5, 0xF4, 0x0, 0x25, 0x4, 0x7, 0x0, 0x56, 0x4, 0x7, 0x0, 0x4E, 0x4, 0x25, 0x0, 0x56, 0x4, 0xCA, 0x0, 0x39, 0x3, 0x65, 0x0, 0x8F, 0x4, 0xA0, 0x0, 0x8, 0x4, 0xAB, 0x0, 0x8F, 0x4, 0x6C, 0x0, 0x8F, 0x5, 0x52, 0x0, 0x2D, 0x4, 0xA4, 0x0, 0x22, 0x4, 0x2F, 0x0, 0x1B, 0x5, 0xB2, 0x0, 0x1B, 0x3, 0xD1, 0x0, 0x64, 0x4, 0xA9, 0x0, 0x1B, 0x3, 0xE3, 0x0, 0x64, 0x3, 0x65, 0x0, 0x64, 0x3, 0x65, 0x0, 0x35, 0x3, 0xF9, 0x0, 0x3C, 0x4, 0x40, 0x0, 0x64, 0x1, 0xC1, 0x0, 0x7F, 0x3, 0x55, 0x0, 0x28, 0x3, 0xE1, 0x0, 0x64, 0x3, 0x33, 0x0, 0x64, 0x5, 0x38, 0x0, 0x64, 0x4, 0x3D, 0x0, 0x64, 0x4, 0x3D, 0x0, 0x64, 0x4, 0xC, 0x0, 0x3C, 0x3, 0x78, 0x0, 0x3C, 0x3, 0xC7, 0x0, 0x64, 0x3, 0xDA, 0x0, 0x64, 0x3, 0xA2, 0x0, 0x28, 0x3, 0xF5, 0x0, 0x64, 0x5, 0x74, 0x0, 0x35, 0x3, 0x56, 0x0, 0x3C, 0x3, 0x56, 0x0, 0x56, 0x3, 0xA6, 0x0, 0x3C, 0x5, 0x33, 0x0, 0x3C, 0x3, 0x79, 0x0, 0x64, 0x3, 0x79, 0x0, 0x3C, 0x3, 0x52, 0x0, 0x3C, 0x3, 0x52, 0x0, 0x3C, 0x3, 0x24, 0x0, 0x3C, 0x3, 0x24, 0x0, 0x3C, 0x3, 0x7A, 0x0, 0x3C, 0x1, 0xD4, 0x0, 0x78, 0x3, 0x52, 0x0, 0x64, 0x5, 0x30, 0x0, 0x64, 0x3, 0x5E, 0x0, 0x64, 0x3, 0x6E, 0x0, 0x3C, 0x2, 0xBF, 0x0, 0x28, 0x3, 0x46, 0x0, 0x28, 0x3, 0x46, 0x0, 0x28, 0x3, 0x79, 0x0, 0x64, 0x2, 0x2E, 0x0, 0x28, 0x3, 0x5E, 0x0, 0x64, 0x3, 0xA6, 0x0, 0x3C, 0x5, 0x30, 0x0, 0x64, 0x3, 0x33, 0x0, 0x28, 0x3, 0xA2, 0x0, 0x35, 0x3, 0xA9, 0x0, 0x64, 0x3, 0x5A, 0x0, 0x28, 0x3, 0x60, 0x0, 0x3C, 0x4, 0x68, 0x0, 0x3C, 0x3, 0x88, 0x0, 0x35, 0x1, 0xD4, 0x0, 0x78, 0x2, 0x3A, 0x0, 0x64, 0x3, 0x5E, 0x0, 0x64, 0x3, 0x33, 0x0, 0x28, 0x3, 0xA9, 0x0, 0x64, 0x3, 0x5A, 0x0, 0x28, 0x3, 0x75, 0x0, 0x64, 0x4, 0x68, 0x0, 0x3C, 0x3, 0xA2, 0x0, 0x42, 0x6, 0xFC, 0x0, 0x77, 0x5, 0xF, 0xFF, 0xEC, 0x4, 0xFF, 0x0, 0x50, 0x3, 0x56, 0x0, 0x13, 0x7, 0xD7, 0x0, 0x14, 0x5, 0x4D, 0x0, 0x14, 0x4, 0xF1, 0xFF, 0xE6, 0x3, 0x57, 0xFF, 0xDD, 0x3, 0x1D, 0xFF, 0xFC, 0x4, 0x51, 0x0, 0x27, 0x3, 0x1D, 0xFF, 0xE2, 0x4, 0x28, 0x0, 0x2D, 0x4, 0x89, 0x0, 0x7C, 0x4, 0x40, 0x0, 0x64, 0x4, 0x63, 0x0, 0x3D, 0x6, 0xE1, 0x0, 0x22, 0x2, 0xC6, 0x0, 0x14, 0x2, 0xE5, 0x0, 0x14, 0x5, 0x17, 0x0, 0x18, 0x5, 0x5F, 0x0, 0x18, 0x4, 0xF0, 0x0, 0x18, 0x4, 0x82, 0x0, 0x7D, 0x4, 0xCC, 0x0, 0x50, 0x2, 0xD6, 0x0, 0x2D, 0x5, 0xBB, 0x0, 0x51, 0x4, 0x64, 0x0, 0x7D, 0x2, 0x56, 0x0, 0x82, 0x7, 0x43, 0x0, 0x7D, 0x4, 0xC6, 0x0, 0x7D, 0x4, 0x81, 0x0, 0x7D, 0x2, 0xD0, 0x0, 0x64, 0x4, 0x22, 0x0, 0x4C, 0x3, 0xA4, 0x0, 0x1B, 0x3, 0xF6, 0x0, 0x17, 0x4, 0x1C, 0x0, 0x1F, 0x4, 0x7, 0x0, 0x52, 0x4, 0xD5, 0x0, 0x5B, 0x5, 0x2A, 0x0, 0x50, 0x4, 0xAE, 0x0, 0x4E, 0x4, 0x79, 0x0, 0x54, 0x4, 0x8C, 0x0, 0x61, 0x4, 0x5A, 0x0, 0x4D, 0x5, 0x77, 0x0, 0x47, 0x2, 0x8A, 0x0, 0x7D, 0x4, 0x38, 0x0, 0x3B, 0x3, 0x4C, 0x0, 0x1B, 0x5, 0xF, 0x0, 0x77, 0x4, 0xA7, 0x0, 0x5E, 0x3, 0xAC, 0x0, 0x41, 0x3, 0x31, 0x0, 0x3C, 0x3, 0x7C, 0x0, 0x3C, 0x3, 0x83, 0x0, 0x3C, 0x3, 0xF, 0x0, 0x32, 0x2, 0x5C, 0x0, 0x35, 0x2, 0x75, 0x0, 0x33, 0x3, 0x7A, 0x0, 0x3C, 0x3, 0x5E, 0x0, 0x64, 0x2, 0x6A, 0x0, 0x28, 0x2, 0x4, 0x0, 0x64, 0x2, 0x6A, 0x0, 0x3F, 0x2, 0x6A, 0x0, 0x28, 0x2, 0xB2, 0x0, 0x0, 0x1, 0xEA, 0x0, 0x64, 0x1, 0xF8, 0x0, 0x64, 0x2, 0xE7, 0x0, 0x65, 0x5, 0x2E, 0x0, 0x64, 0x5, 0x2E, 0x0, 0x64, 0x3, 0xA0, 0x0, 0x1A, 0x3, 0xAD, 0x0, 0x64, 0x3, 0xE7, 0x0, 0x64, 0x3, 0x6E, 0x0, 0x3C, 0x4, 0x6D, 0x0, 0x3C, 0x3, 0x1B, 0x0, 0x3C, 0x2, 0x1E, 0x0, 0x1A, 0x2, 0x47, 0x0, 0x28, 0x3, 0xB2, 0x0, 0x28, 0x3, 0xD0, 0x0, 0x4C, 0x3, 0xBA, 0x0, 0x5B, 0x3, 0x68, 0x0, 0x5B, 0x3, 0x23, 0x0, 0x1C, 0x2, 0xE4, 0x0, 0x2E, 0x3, 0x47, 0x0, 0x2E, 0x3, 0xAE, 0x0, 0x2E, 0x3, 0x67, 0x0, 0x33, 0x3, 0xA1, 0x0, 0x58, 0x0, 0x0, 0xFB, 0xCE, 0x0, 0x0, 0xFB, 0xCB, 0x0, 0x0, 0xFD, 0xA, 0x0, 0x0, 0xFC, 0xCB, 0x0, 0x0, 0xFC, 0xDE, 0x0, 0x0, 0xFC, 0x3C, 0x0, 0x0, 0xFC, 0xA4, 0x0, 0x0, 0xFC, 0x6E, 0x0, 0x0, 0xFC, 0x22, 0x0, 0x0, 0xFC, 0x60, 0x0, 0x0, 0xFD, 0x44, 0x0, 0x0, 0xFB, 0x61, 0x0, 0x0, 0xFB, 0x3D, 0x0, 0x0, 0xFC, 0x9F, 0x0, 0x0, 0xFD, 0x2F, 0x0, 0x0, 0xFC, 0xD6, 0x0, 0x0, 0xFC, 0xC9, 0x0, 0x0, 0xFC, 0x94, 0x0, 0x0, 0xFC, 0x9B, 0x0, 0x0, 0xFC, 0x3D, 0x0, 0x0, 0xFC, 0x1F, 0x0, 0x0, 0xFC, 0x19, 0x0, 0x0, 0xFC, 0x13, 0x0, 0x0, 0xFC, 0xCC, 0x0, 0x0, 0xFC, 0xAA, 0x0, 0x0, 0xFC, 0xAA, 0x0, 0x0, 0xFC, 0xB8, 0x0, 0x0, 0xFC, 0xAA, 0x0, 0x0, 0xFC, 0xD2, 0x0, 0x0, 0xFD, 0x71, 0x0, 0x0, 0xFD, 0xB, 0x0, 0x0, 0xFC, 0x65, 0x0, 0x0, 0xFC, 0xC9, 0x0, 0x0, 0xFC, 0x97, 0x0, 0x0, 0xFC, 0xBB, 0x0, 0x0, 0xFD, 0x1, 0x0, 0x0, 0xFC, 0xC3, 0x0, 0x0, 0xFD, 0x6B, 0x0, 0x0, 0xFC, 0xD8, 0x0, 0x0, 0xFC, 0x9B, 0x0, 0x0, 0xFC, 0xBA, 0x0, 0x0, 0xFC, 0xAD, 0x0, 0x0, 0xFC, 0xBF, 0x0, 0x0, 0xFD, 0xD, 0x0, 0x0, 0xFC, 0xFB, 0x0, 0x0, 0xFC, 0x75, 0x0, 0x0, 0xFC, 0xB9, 0x0, 0x0, 0xFC, 0xE5, 0x0, 0x0, 0xFC, 0x6E, 0x0, 0x0, 0xFC, 0x40, 0x0, 0x0, 0xFC, 0xD0, 0x0, 0x0, 0xFC, 0xB1, 0x0, 0x0, 0xFC, 0xC9, 0x0, 0x0, 0xFC, 0xDB, 0x0, 0x0, 0xFD, 0x23, 0x0, 0x0, 0xFC, 0x55, 0x0, 0x0, 0xFC, 0x46, 0x0, 0x0, 0xFA, 0xEF, 0x5, 0xB0, 0x0, 0x95, 0x4, 0x71, 0x0, 0x7A, 0x2, 0xF1, 0x0, 0xA, 0x2, 0xEB, 0x0, 0x6, 0x2, 0xE6, 0x0, 0x14, 0x2, 0xE1, 0x0, 0xE, 0x2, 0xD6, 0x0, 0xD2, 0x2, 0xEB, 0x0, 0x41, 0x2, 0xD6, 0x0, 0x2D, 0x5, 0x4B, 0x0, 0x74, 0x4, 0x89, 0x0, 0x54, 0x6, 0x1F, 0x0, 0x95, 0x4, 0x6B, 0x0, 0x1B, 0x4, 0x9A, 0x0, 0x66, 0x4, 0x5F, 0x0, 0x4E, 0x5, 0x73, 0x0, 0x1C, 0x4, 0xA9, 0x0, 0x1B, 0x1, 0xF1, 0x0, 0x5B, 0x1, 0xC4, 0x0, 0x73, 0x2, 0x2, 0x0, 0x5B, 0x3, 0x6D, 0x0, 0x4B, 0x3, 0xB4, 0x0, 0x6F, 0x3, 0x1F, 0x0, 0x5B, 0x3, 0xB, 0x0, 0x5B, 0x3, 0x15, 0x0, 0x6F, 0x2, 0xFA, 0x0, 0x68, 0x3, 0x2C, 0x0, 0x68, 0x3, 0x15, 0x0, 0x6F, 0x3, 0xB4, 0x0, 0x6F, 0x3, 0xB4, 0x0, 0x6F, 0x2, 0x0, 0x0, 0x66, 0x2, 0x0, 0x0, 0x64, 0x1, 0xF1, 0x0, 0x69, 0x4, 0x14, 0x0, 0x0, 0x8, 0x29, 0x0, 0x0, 0x4, 0x14, 0x0, 0x0, 0x8, 0x29, 0x0, 0x0, 0x2, 0xB9, 0x0, 0x0, 0x2, 0xA, 0x0, 0x0, 0x1, 0x5C, 0x0, 0x0, 0x4, 0x7F, 0x0, 0x0, 0x2, 0x30, 0x0, 0x0, 0x1, 0xA2, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0xD1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xFD, 0x68, 0x0, 0x0, 0xFC, 0x94, 0x0, 0x0, 0xFC, 0xAD, 0x0, 0x0, 0xFC, 0x5E, 0x2, 0xA1, 0x0, 0x47, 0x2, 0xA1, 0x0, 0x47, 0x4, 0x83, 0x0, 0x9F, 0x5, 0x29, 0x0, 0x9D, 0x6, 0x30, 0x0, 0x82, 0x3, 0x37, 0x0, 0xAB, 0x3, 0x9D, 0x0, 0x4, 0x1, 0xC0, 0x0, 0x64, 0x1, 0xBC, 0x0, 0x34, 0x1, 0xCE, 0x0, 0x32, 0x1, 0xA8, 0x0, 0x4B, 0x3, 0x14, 0x0, 0x6D, 0x3, 0x1C, 0x0, 0x41, 0x3, 0x8, 0x0, 0x32, 0x3, 0x35, 0x0, 0x4F, 0x4, 0x5D, 0x0, 0x41, 0x4, 0x9A, 0x0, 0x5D, 0x2, 0xCC, 0x0, 0x88, 0x4, 0x5E, 0x0, 0x98, 0x2, 0x2A, 0x0, 0x85, 0x3, 0xFA, 0x0, 0x8C, 0x5, 0xA6, 0x0, 0x8C, 0x1, 0xC8, 0x0, 0x5B, 0x7, 0xA8, 0x0, 0x4B, 0x9, 0x5F, 0x0, 0x4B, 0x4, 0xF7, 0x0, 0x4C, 0x2, 0x1B, 0x0, 0x4C, 0x3, 0x91, 0x0, 0x50, 0x4, 0xF8, 0x0, 0x50, 0x3, 0x79, 0x0, 0x30, 0x2, 0x73, 0x0, 0x6C, 0x2, 0x69, 0x0, 0x55, 0x5, 0x44, 0x0, 0x4A, 0x3, 0xC3, 0x0, 0x2C, 0x3, 0xB0, 0x0, 0xD, 0x6, 0x23, 0x0, 0xB, 0x6, 0x23, 0x0, 0xB, 0x3, 0x54, 0x0, 0x3B, 0x5, 0x58, 0x0, 0x50, 0x3, 0x6D, 0x0, 0x54, 0x3, 0x9C, 0x0, 0x2D, 0x2, 0x8F, 0x0, 0x99, 0x2, 0x90, 0x0, 0x5E, 0x3, 0xB2, 0x0, 0x3C, 0x4, 0x11, 0x0, 0x84, 0x4, 0xE7, 0x0, 0x66, 0x4, 0xE7, 0x0, 0x66, 0x3, 0xC3, 0x0, 0x3E, 0x2, 0x20, 0x0, 0x84, 0x6, 0x23, 0x0, 0xB, 0x3, 0xE7, 0x0, 0x50, 0x3, 0xD7, 0x0, 0x43, 0x5, 0x7E, 0x0, 0x50, 0x6, 0x23, 0x0, 0xB, 0x5, 0x24, 0x0, 0xC0, 0x3, 0xCA, 0x0, 0x43, 0x6, 0x63, 0x0, 0x50, 0x4, 0xFC, 0x0, 0x43, 0x4, 0x9F, 0x0, 0x43, 0x1, 0xB3, 0x0, 0x43, 0x4, 0x94, 0x0, 0x43, 0x4, 0xB8, 0x0, 0x43, 0x1, 0xB3, 0x0, 0x43, 0x1, 0xB3, 0x0, 0x43, 0x2, 0xF6, 0x0, 0x4C, 0x1, 0xD7, 0x0, 0x79, 0x2, 0xF6, 0x0, 0x35, 0x2, 0xF6, 0x0, 0x4F, 0x2, 0xF6, 0x0, 0x4E, 0x2, 0xF6, 0x0, 0x37, 0x2, 0xF6, 0x0, 0x4C, 0x2, 0xF6, 0x0, 0x47, 0x3, 0x3C, 0x0, 0x50, 0x2, 0xF9, 0x0, 0x50, 0x2, 0xF9, 0x0, 0x50, 0x2, 0x0, 0x0, 0x50, 0x2, 0x0, 0x0, 0x50, 0x3, 0x5D, 0x0, 0x6A, 0x2, 0xF6, 0x0, 0x4C, 0x2, 0xF6, 0x0, 0x81, 0x2, 0xF6, 0x0, 0x3C, 0x2, 0xF6, 0x0, 0x37, 0x2, 0xF6, 0x0, 0x35, 0x2, 0xF6, 0x0, 0x4F, 0x2, 0xF6, 0x0, 0x4E, 0x2, 0xF6, 0x0, 0x37, 0x2, 0xF6, 0x0, 0x4C, 0x2, 0xF6, 0x0, 0x47, 0x3, 0x3C, 0x0, 0x50, 0x2, 0xF9, 0x0, 0x50, 0x2, 0xF9, 0x0, 0x50, 0x2, 0x0, 0x0, 0x50, 0x2, 0x0, 0x0, 0x50, 0x3, 0x56, 0x0, 0x3C, 0x3, 0x52, 0x0, 0x3C, 0x3, 0x6E, 0x0, 0x3C, 0x3, 0x3A, 0x0, 0x28, 0x3, 0x52, 0x0, 0x3C, 0x3, 0x5E, 0x0, 0x64, 0x3, 0x52, 0x0, 0x64, 0x1, 0xB5, 0x0, 0x78, 0x5, 0x30, 0x0, 0x64, 0x3, 0x5E, 0x0, 0x64, 0x3, 0x79, 0x0, 0x64, 0x3, 0x1B, 0x0, 0x3C, 0x2, 0x2E, 0x0, 0x28, 0x5, 0x7B, 0x0, 0x58, 0x5, 0x39, 0x0, 0x66, 0x5, 0x39, 0x0, 0x66, 0x4, 0xB6, 0x0, 0x60, 0x6, 0xF7, 0x0, 0x7D, 0x6, 0x71, 0x0, 0x22, 0x6, 0xB8, 0x0, 0x99, 0x8, 0x94, 0x0, 0x95, 0x6, 0x29, 0x0, 0x22, 0x6, 0x8D, 0x0, 0x7D, 0x4, 0x8C, 0x0, 0x5E, 0x5, 0xA3, 0x0, 0x22, 0x4, 0xDC, 0x0, 0x2D, 0xA, 0x74, 0x0, 0x35, 0x5, 0x1F, 0x0, 0x22, 0x5, 0xF6, 0x0, 0x22, 0x5, 0x73, 0x0, 0x69, 0x5, 0x82, 0x0, 0x22, 0x4, 0xCF, 0x0, 0x43, 0x5, 0x39, 0x0, 0x65, 0x4, 0x56, 0x0, 0x22, 0x5, 0x29, 0x0, 0x35, 0x4, 0xDC, 0x0, 0x2D, 0x4, 0x34, 0x0, 0x28, 0x4, 0xA3, 0x0, 0x22, 0x6, 0x97, 0x0, 0x28, 0x5, 0x5F, 0x0, 0x50, 0x5, 0x7D, 0x0, 0x29, 0x5, 0x86, 0x0, 0x66, 0x0, 0x0, 0xFB, 0x5B, 0x0, 0x0, 0xFA, 0x85, 0x0, 0x0, 0xFB, 0x5B, 0x0, 0x0, 0xFC, 0x54, 0x6, 0x1C, 0x0, 0x6A, 0x6, 0xF, 0x0, 0x6A, 0x7, 0x20, 0x0, 0x28, 0x5, 0xE5, 0x0, 0x71, 0x6, 0x9, 0x0, 0x6A, 0x6, 0x8A, 0x0, 0x28, 0x3, 0xE3, 0x0, 0x4C, 0x8, 0x2F, 0x0, 0x90, 0x6, 0x38, 0x0, 0x56, 0x5, 0x87, 0x0, 0x95, 0x4, 0xFF, 0x0, 0x95, 0x5, 0x18, 0x0, 0x65, 0x5, 0xB0, 0x0, 0x65, 0x5, 0x9, 0x0, 0x6E, 0x5, 0x2D, 0x0, 0x12, 0x4, 0x9E, 0x0, 0x51, 0x5, 0x11, 0x0, 0x95, 0x5, 0x52, 0x0, 0x12, 0x5, 0x15, 0x0, 0x96, 0x4, 0x66, 0x0, 0x35, 0x6, 0x48, 0x0, 0x65, 0x8, 0xA, 0x0, 0x6A, 0x8, 0xF, 0x0, 0x57, 0x7, 0x6, 0x0, 0x93, 0x6, 0xF1, 0x0, 0x93, 0x8, 0xF5, 0x0, 0x93, 0x7, 0x4, 0x0, 0x93, 0x7, 0xCE, 0x0, 0x58, 0x6, 0xF3, 0x0, 0x93, 0x7, 0xA6, 0x0, 0x58, 0x7, 0x79, 0x0, 0x5B, 0x7, 0xE9, 0x0, 0x52, 0x6, 0xDC, 0x0, 0x93, 0x7, 0x2A, 0x0, 0x51, 0x6, 0x35, 0x0, 0x59, 0x6, 0xDD, 0x0, 0x54, 0x6, 0xD1, 0x0, 0x5B, 0x6, 0xA2, 0x0, 0x59, 0x5, 0x0, 0x0, 0x93, 0x2, 0x44, 0x0, 0xA4, 0x4, 0x61, 0x0, 0xA4, 0x6, 0x7E, 0x0, 0xA4, 0x7, 0x68, 0x0, 0xA4, 0x5, 0x2F, 0x0, 0x12, 0x7, 0x68, 0x0, 0x12, 0x9, 0x86, 0x0, 0x12, 0xB, 0xA3, 0x0, 0x12, 0x7, 0x59, 0x0, 0xA4, 0x5, 0x11, 0x0, 0x28, 0x7, 0x5F, 0x0, 0x28, 0x9, 0x7D, 0x0, 0x28, 0x4, 0x64, 0x0, 0xA4, 0x5, 0x38, 0x0, 0x65, 0x5, 0x42, 0x0, 0xA4, 0x7, 0x1D, 0x0, 0xA4, 0x2, 0xF, 0x0, 0x7E, 0x4, 0x1B, 0x0, 0x7E, 0x6, 0x27, 0x0, 0x7E, 0x6, 0x1, 0x0, 0x7E, 0x3, 0xF7, 0x0, 0x1A, 0x6, 0x7, 0x0, 0x1A, 0x8, 0x13, 0x0, 0x1A, 0xA, 0x1F, 0x0, 0x1A, 0x6, 0x18, 0x0, 0x7E, 0x4, 0xE, 0x0, 0x22, 0x6, 0x19, 0x0, 0x22, 0x8, 0x25, 0x0, 0x22, 0x1, 0xEF, 0x0, 0x7E, 0x4, 0x3E, 0x0, 0x50, 0x4, 0x82, 0x0, 0x50, 0x6, 0xF6, 0x0, 0x7E, 0x7, 0x34, 0x0, 0x68, 0x5, 0x5E, 0x0, 0x99, 0x7, 0xF1, 0x0, 0x6A, 0x5, 0x33, 0x0, 0x4D, 0x4, 0x31, 0x0, 0x3B, 0x5, 0x33, 0x0, 0x66, 0x6, 0x4C, 0x0, 0x3C, 0x5, 0x63, 0x0, 0x99, 0x8, 0xA1, 0x0, 0x6A, 0x6, 0xFE, 0x0, 0x46, 0x4, 0x91, 0x0, 0x62, 0x5, 0x96, 0x0, 0xA6, 0x4, 0xDA, 0x0, 0x41, 0x4, 0x83, 0x0, 0x9F, 0x4, 0xB3, 0x0, 0x3C, 0x8, 0x45, 0x0, 0x5E, 0x2, 0x2E, 0xFF, 0xAF, 0x4, 0x8F, 0x0, 0x65, 0x4, 0x7A, 0x0, 0x91, 0x4, 0x11, 0x0, 0x3C, 0x4, 0x2A, 0x0, 0x80, 0x5, 0x4F, 0x0, 0x45, 0x4, 0xD, 0x0, 0x24, 0x3, 0xFA, 0x0, 0x99, 0x3, 0xFA, 0x0, 0x52, 0x2, 0xFF, 0x0, 0x40, 0x2, 0xFF, 0x0, 0x67, 0x4, 0xB2, 0x0, 0x40, 0x4, 0xB2, 0x0, 0x67, 0x3, 0xC0, 0x0, 0x99, 0x3, 0xC0, 0x0, 0x5A, 0x2, 0x93, 0x0, 0x99, 0x2, 0x93, 0x0, 0x54, 0x3, 0x1A, 0x0, 0x50, 0x3, 0x1A, 0x0, 0x50, 0x5, 0x52, 0x0, 0x50, 0x5, 0xF, 0x0, 0x34, 0x4, 0xCF, 0x0, 0x50, 0x4, 0xCF, 0x0, 0x50, 0x4, 0xBC, 0x0, 0x50, 0x4, 0xBC, 0x0, 0x50, 0x4, 0xA8, 0x0, 0x21, 0x2, 0xE0, 0x0, 0x21, 0x4, 0xD6, 0x0, 0x5, 0x5, 0x5E, 0x0, 0x21, 0x4, 0xFF, 0x0, 0x95, 0x4, 0x55, 0x0, 0x5B, 0x2, 0xF5, 0x0, 0x8, 0x6, 0x28, 0x0, 0x95, 0x4, 0xF5, 0x0, 0x7A, 0x5, 0x62, 0x0, 0x95, 0x4, 0x9C, 0x0, 0x7D, 0x4, 0xD2, 0x0, 0x50, 0x4, 0x20, 0x0, 0x52, 0x6, 0xD, 0x0, 0x66, 0x7, 0x1, 0x0, 0x95, 0x5, 0x55, 0x0, 0x12, 0x6, 0xD, 0x0, 0x11, 0x4, 0xA4, 0x0, 0x17, 0x7, 0xF4, 0x0, 0x30, 0x6, 0xAA, 0x0, 0x22, 0x4, 0xF, 0x0, 0x31, 0x4, 0x81, 0x0, 0x95, 0x3, 0x6D, 0x0, 0x7A, 0x5, 0xD3, 0x0, 0x49, 0x5, 0x54, 0x0, 0x54, 0x2, 0xF2, 0x0, 0x28, 0x4, 0x8E, 0x0, 0x50, 0x4, 0x15, 0x0, 0x56, 0x1, 0xF5, 0x0, 0x29, 0x3, 0x4D, 0x0, 0x28, 0x4, 0xD5, 0x0, 0x4A, 0x4, 0xD2, 0x0, 0x4F, 0x0, 0x0, 0xFC, 0xB4, 0x0, 0x0, 0xFC, 0xD1, 0x0, 0x0, 0xFD, 0x3, 0x0, 0x0, 0xFC, 0x87, 0x0, 0x0, 0xFC, 0x16, 0x0, 0x0, 0xFC, 0xD1, 0x0, 0x0, 0xFC, 0xD4, 0x0, 0x0, 0xFC, 0x9E, 0x0, 0x0, 0xFC, 0x66, 0x0, 0x0, 0xFC, 0xC1, 0x0, 0x0, 0xFC, 0xB1, 0x0, 0x0, 0xFC, 0xC1, 0x0, 0x0, 0xFC, 0xBF, 0x0, 0x0, 0xFC, 0xC2, 0x0, 0x0, 0xFC, 0xC5, 0x0, 0x0, 0xFC, 0xD4, 0x0, 0x0, 0xFC, 0xB1, 0x0, 0x0, 0xFC, 0xAB, 0x0, 0x0, 0xFC, 0x49, 0x0, 0x0, 0xFC, 0x34, 0x0, 0x0, 0xFC, 0xB1, 0x0, 0x0, 0xFC, 0x19, 0x0, 0x0, 0xFC, 0xBF, 0x0, 0x0, 0xFC, 0xBF, 0x0, 0x0, 0xFC, 0x9C, 0x0, 0x0, 0xFC, 0x93, 0x0, 0x0, 0xFC, 0x84, 0x0, 0x0, 0xFC, 0x78, 0x0, 0x0, 0xFC, 0x7F, 0x0, 0x0, 0xFC, 0x92, 0x0, 0x0, 0xFC, 0x6C, 0x0, 0x0, 0xFB, 0xCB, 0x3, 0x49, 0x0, 0x50, 0x3, 0x49, 0x0, 0x50, 0x2, 0x83, 0x0, 0x50, 0x2, 0x83, 0x0, 0x50, 0x2, 0xCE, 0x0, 0x50, 0x3, 0x37, 0x0, 0x50, 0x5, 0x17, 0x0, 0x50, 0x5, 0x1E, 0x0, 0x50, 0x4, 0x90, 0x0, 0x50, 0x4, 0x85, 0x0, 0x50, 0x4, 0x85, 0x0, 0x50, 0x3, 0xAB, 0x0, 0x50, 0x3, 0xE2, 0x0, 0x50, 0x3, 0xE2, 0x0, 0x50, 0x5, 0xF5, 0x0, 0x5F, 0x5, 0xBB, 0x0, 0x47, 0x5, 0xB8, 0x0, 0x47, 0x5, 0xB8, 0x0, 0x45, 0x1, 0xC3, 0x0, 0x50, 0x4, 0x98, 0x0, 0x50, 0x5, 0x51, 0x0, 0x37, 0x5, 0x51, 0x0, 0x3B, 0x3, 0x6, 0x0, 0x50, 0x2, 0xCD, 0x0, 0x50, 0x3, 0xE3, 0x0, 0x48, 0x5, 0x57, 0x0, 0x57, 0x3, 0x87, 0x0, 0x64, 0x3, 0x70, 0x0, 0x46, 0x3, 0x5C, 0x0, 0x50, 0x3, 0x5C, 0x0, 0x50, 0x3, 0x70, 0x0, 0x4A, 0x3, 0x70, 0x0, 0x4A, 0x3, 0xBD, 0x0, 0x99, 0x3, 0xBC, 0x0, 0x42, 0x2, 0x39, 0x0, 0x50, 0x2, 0x39, 0x0, 0x50, 0x2, 0x39, 0x0, 0x50, 0x2, 0x39, 0x0, 0x50, 0x4, 0xB1, 0x0, 0x57, 0x4, 0xB1, 0x0, 0x4E, 0x4, 0x62, 0x0, 0x80, 0x4, 0x69, 0x0, 0x28, 0x4, 0x9F, 0x0, 0x43, 0x4, 0x9F, 0x0, 0x43, 0x4, 0x9F, 0x0, 0x43, 0x4, 0xBB, 0x0, 0x43, 0x3, 0xE5, 0x0, 0x3D, 0x1, 0xC1, 0x0, 0x50, 0x2, 0x43, 0x0, 0x46, 0x1, 0xD7, 0x0, 0x5E, 0x1, 0xDD, 0x0, 0x57, 0x1, 0xBB, 0x0, 0x50, 0x1, 0xDD, 0x0, 0x46, 0x2, 0x20, 0x0, 0x84, 0x3, 0x4F, 0x0, 0x50, 0x3, 0x54, 0x0, 0x99, 0x4, 0x7E, 0x0, 0x50, 0x4, 0xEA, 0x0, 0x5B, 0xB, 0xCA, 0x0, 0xAE, 0x11, 0x2, 0x0, 0xAE, 0x2, 0x42, 0x0, 0x50, 0x1, 0xB3, 0x0, 0x43, 0x1, 0x97, 0x0, 0x50, 0x4, 0x94, 0x0, 0x41, 0x2, 0xD6, 0x0, 0x64, 0x1, 0xE3, 0x0, 0x5B, 0x3, 0x39, 0x0, 0x5B, 0x4, 0xD2, 0x0, 0x50, 0x4, 0x7, 0x0, 0x52, 0x4, 0xD2, 0x0, 0x50, 0x4, 0x7, 0x0, 0x52, 0x4, 0xD5, 0x0, 0x4A, 0x4, 0x22, 0x0, 0x57, 0x2, 0xA0, 0x0, 0xA7, 0x2, 0xA6, 0x0, 0xAA, 0x4, 0xDF, 0x0, 0x8, 0x4, 0x55, 0x0, 0x14, 0x4, 0xCB, 0x0, 0x47, 0x4, 0xD8, 0x0, 0x47, 0x8, 0x91, 0x0, 0x68, 0x6, 0xCB, 0x0, 0x4F, 0x6, 0x1A, 0x0, 0x18, 0x5, 0x1D, 0x0, 0x1F, 0x7, 0xAA, 0xFF, 0xCF, 0x7, 0xE, 0x0, 0x1F, 0x6, 0x85, 0x0, 0x96, 0x5, 0xB7, 0x0, 0x7D, 0x7, 0x64, 0x0, 0x66, 0x6, 0xC4, 0x0, 0x50, 0x7, 0x31, 0x0, 0x96, 0x6, 0x7, 0x0, 0x7D, 0x5, 0x53, 0x0, 0x12, 0x4, 0xC8, 0x0, 0x1C, 0x6, 0xEE, 0x0, 0x80, 0x5, 0x9A, 0x0, 0x5B, 0x7, 0x31, 0x0, 0x96, 0x6, 0x63, 0x0, 0x7D, 0x5, 0xAF, 0x0, 0x1E, 0x4, 0xDC, 0x0, 0x22, 0x5, 0xF6, 0x0, 0x3B, 0x4, 0xD4, 0x0, 0x2E, 0x7, 0x63, 0x0, 0x24, 0x6, 0x8, 0x0, 0x27, 0x7, 0x4E, 0x0, 0x2D, 0x5, 0xEC, 0x0, 0x22, 0x8, 0xAC, 0x0, 0x95, 0x7, 0x3E, 0x0, 0x88, 0x5, 0x86, 0x0, 0x66, 0x4, 0x8E, 0x0, 0x50, 0x5, 0xDC, 0x0, 0x66, 0x5, 0x76, 0x0, 0x50, 0x9, 0x41, 0x0, 0x66, 0x7, 0x8A, 0x0, 0x50, 0x9, 0xCA, 0x0, 0x54, 0x0, 0x0, 0xFB, 0x5D, 0x0, 0x0, 0xF9, 0x94, 0x0, 0x0, 0xFB, 0x5D, 0x0, 0x0, 0xF9, 0x7A, 0x3, 0xB6, 0x0, 0x50, 0x0, 0x0, 0xFC, 0xB8, 0x0, 0x0, 0xFC, 0xBC, 0x0, 0x0, 0xFC, 0xF9, 0x0, 0x0, 0xFC, 0xA5, 0x0, 0x0, 0xFC, 0x2E, 0x0, 0x0, 0xFC, 0x67, 0x0, 0x0, 0xFC, 0xE0, 0x0, 0x0, 0xFC, 0x32, 0x0, 0x0, 0xFC, 0x75, 0x0, 0x0, 0xFC, 0x99, 0x3, 0x26, 0x0, 0x50, 0x2, 0xD6, 0x0, 0x47, 0x6, 0x7, 0x0, 0x24, 0x4, 0xF7, 0x0, 0x27, 0x4, 0xD3, 0x0, 0x4D, 0x4, 0x22, 0x0, 0x4D, 0x9, 0x7B, 0x0, 0x49, 0x7, 0xFE, 0x0, 0x4E, 0x6, 0x6A, 0x0, 0x84, 0x5, 0x65, 0x0, 0x36, 0x7, 0x1A, 0x0, 0x24, 0x5, 0xFB, 0x0, 0x27, 0x5, 0xFC, 0x0, 0x2D, 0x5, 0x7A, 0x0, 0x24, 0x4, 0xDC, 0x0, 0x2D, 0x3, 0xF8, 0x0, 0x24, 0x6, 0x2A, 0x0, 0x93, 0x5, 0x1C, 0x0, 0x87, 0x4, 0xDA, 0x0, 0x2D, 0x3, 0xF6, 0x0, 0x24, 0x6, 0xCC, 0x0, 0x1B, 0x5, 0x69, 0x0, 0x11, 0x5, 0x8A, 0x0, 0x85, 0x4, 0x80, 0x0, 0x7E, 0x7, 0xFB, 0x0, 0x93, 0x7, 0x7, 0x0, 0x7D, 0x9, 0x47, 0x0, 0x66, 0x7, 0x8D, 0x0, 0x50, 0x5, 0x86, 0x0, 0x66, 0x4, 0x8E, 0x0, 0x50, 0x3, 0xD5, 0x0, 0x28, 0x3, 0x44, 0x0, 0x64, 0x0, 0x0, 0xFC, 0x78, 0x2, 0x58, 0x0, 0x50, 0x2, 0x58, 0x0, 0x50, 0x2, 0x58, 0x0, 0x50, 0x2, 0x58, 0x0, 0x50, 0x2, 0x58, 0x0, 0x50, 0x2, 0x5E, 0x0, 0x50, 0x2, 0x58, 0x0, 0x50, 0x2, 0x5E, 0x0, 0x50, 0x3, 0x5, 0x0, 0x32, 0x3, 0xF, 0x0, 0x3C, 0x3, 0xF, 0x0, 0x3C, 0x3, 0xF, 0x0, 0x3C, 0x3, 0xF, 0x0, 0x3C, 0x2, 0xF2, 0x0, 0x99, 0x2, 0xF2, 0x0, 0x99, 0x2, 0xF2, 0x0, 0x99, 0x2, 0xF2, 0x0, 0x99, 0x2, 0xF2, 0x0, 0x99, 0x3, 0x93, 0x0, 0x99, 0x3, 0x93, 0x0, 0x99, 0x3, 0x93, 0x0, 0x99, 0x3, 0x93, 0x0, 0x99, 0x3, 0x93, 0x0, 0x99, 0x2, 0xB7, 0x0, 0x50, 0x3, 0x5F, 0x0, 0x55, 0x3, 0xC5, 0x0, 0x50, 0x3, 0x49, 0x0, 0x50, 0x2, 0xFC, 0x0, 0x50, 0x2, 0xFC, 0x0, 0x50, 0x1, 0xA6, 0x0, 0x64, 0x1, 0xA6, 0x0, 0x64, 0x1, 0xA6, 0x0, 0x64, 0x4, 0xFE, 0x0, 0x50, 0x4, 0xFE, 0x0, 0x50, 0x2, 0xB6, 0x0, 0x65, 0x2, 0x37, 0x0, 0x50, 0x2, 0xAF, 0x0, 0x57, 0x2, 0x30, 0x0, 0x50, 0x5, 0xB0, 0x0, 0x95, 0x4, 0x80, 0x0, 0x7E, 0x6, 0x5F, 0x0, 0x2D, 0x5, 0xD3, 0x0, 0x8, 0x4, 0x5F, 0x0, 0x59, 0x4, 0x57, 0x0, 0x54, 0x4, 0x1D, 0x0, 0x35, 0x4, 0x1F, 0x0, 0x35, 0x5, 0x28, 0x0, 0x35, 0x5, 0x14, 0x0, 0x35, 0x3, 0x5B, 0x0, 0x85, 0x4, 0x22, 0x0, 0x4C, 0x8, 0x7C, 0x0, 0x12, 0x6, 0xDA, 0x0, 0x5B, 0x8, 0xAB, 0x0, 0x12, 0x7, 0x1E, 0x0, 0x5B, 0x8, 0x62, 0xFF, 0xF6, 0x6, 0xDA, 0x0, 0x5B, 0x7, 0x64, 0x0, 0x12, 0x6, 0x5E, 0x0, 0x5B, 0x7, 0x64, 0x0, 0x12, 0x6, 0x5E, 0x0, 0x5B, 0x7, 0x6D, 0x0, 0x12, 0x6, 0x69, 0x0, 0x5B, 0x5, 0x3A, 0x0, 0x4D, 0x4, 0x31, 0x0, 0x3B, 0x5, 0x5F, 0x0, 0x14, 0x4, 0x8F, 0x0, 0x14, 0x5, 0x11, 0x0, 0x95, 0x4, 0x43, 0x0, 0x7D, 0x5, 0x5F, 0x0, 0x14, 0x4, 0xA6, 0x0, 0x14, 0x4, 0xEE, 0x0, 0x95, 0x2, 0x7B, 0x0, 0x64, 0x4, 0xA4, 0x0, 0x14, 0x2, 0xC6, 0x0, 0x14, 0x6, 0x6A, 0x0, 0x14, 0x5, 0x4A, 0x0, 0x1B, 0x5, 0xF5, 0x0, 0x66, 0x5, 0x11, 0x0, 0x50, 0x9, 0x41, 0x0, 0x66, 0x7, 0x89, 0x0, 0x50, 0x5, 0x6A, 0x0, 0x14, 0x4, 0xE4, 0x0, 0xD, 0x6, 0x34, 0x0, 0x28, 0x5, 0xBC, 0x0, 0x22, 0x6, 0x3A, 0x0, 0x28, 0x5, 0xA4, 0x0, 0x2B, 0x5, 0x9B, 0x0, 0x60, 0x4, 0xE3, 0x0, 0x50, 0x6, 0xE8, 0x0, 0x60, 0x5, 0xB4, 0x0, 0x50, 0x4, 0x37, 0x0, 0x14, 0x3, 0x4A, 0x0, 0xD, 0x5, 0x2B, 0x0, 0x22, 0x5, 0x2E, 0x0, 0x22, 0x5, 0x2E, 0x0, 0x12, 0x3, 0xF6, 0x0, 0x17, 0x7, 0xB, 0x0, 0x31, 0x6, 0xB9, 0x0, 0x17, 0x4, 0x95, 0x0, 0x4A, 0x4, 0xA4, 0x0, 0x51, 0x5, 0x23, 0x0, 0x14, 0x4, 0xE9, 0x0, 0x14, 0x5, 0x23, 0x0, 0x14, 0x4, 0xE9, 0x0, 0x14, 0x4, 0x7E, 0x0, 0x95, 0x3, 0xE2, 0x0, 0x7D, 0x4, 0x33, 0x0, 0x25, 0x3, 0xBC, 0x0, 0x21, 0x4, 0x50, 0x0, 0x46, 0x4, 0x40, 0x0, 0x49, 0x4, 0xB2, 0x0, 0x4D, 0x4, 0xB4, 0x0, 0x40, 0x3, 0xA2, 0x0, 0x56, 0x5, 0xB8, 0x0, 0x50, 0x3, 0x31, 0x0, 0x8C, 0x8, 0x2C, 0x0, 0x7D, 0x5, 0xAA, 0x0, 0x7A, 0x3, 0xA2, 0x0, 0x7D, 0x5, 0x6F, 0x0, 0x76, 0x3, 0xC7, 0x0, 0x8, 0x4, 0x72, 0x0, 0x1B, 0x5, 0x86, 0x0, 0x69, 0x4, 0xB2, 0x0, 0x50, 0x4, 0xAC, 0x0, 0x99, 0x3, 0x55, 0x0, 0x7D, 0x5, 0x5, 0x0, 0x4A, 0x4, 0xEE, 0x0, 0x30, 0x4, 0x29, 0x0, 0x42, 0x4, 0x55, 0x0, 0x2E, 0x1, 0xFB, 0x0, 0x83, 0x5, 0x8A, 0x0, 0x95, 0x4, 0x76, 0x0, 0x7D, 0x3, 0x93, 0x0, 0x95, 0x2, 0xD0, 0x0, 0x7D, 0x5, 0x58, 0x0, 0x86, 0x4, 0x3F, 0x0, 0x50, 0x3, 0x41, 0x0, 0x49, 0x1, 0xBC, 0x0, 0x6B, 0x2, 0xD1, 0x0, 0x57, 0x1, 0x5D, 0x0, 0x50, 0x1, 0x5D, 0x0, 0x50, 0x5, 0x8C, 0x0, 0x8E, 0x3, 0xE3, 0x0, 0x28, 0x6, 0x27, 0x0, 0x95, 0x4, 0xF5, 0x0, 0x7A, 0x5, 0xAD, 0x0, 0x14, 0x4, 0xAD, 0x0, 0x14, 0x4, 0x31, 0x0, 0x50, 0x4, 0xD3, 0x0, 0x7A, 0x6, 0x23, 0x0, 0x28, 0x5, 0xA3, 0x0, 0x42, 0x5, 0x19, 0x0, 0x1B, 0x2, 0xD6, 0x0, 0x2D, 0x5, 0x25, 0x0, 0x58, 0x4, 0x78, 0x0, 0x53, 0x5, 0x41, 0x0, 0x58, 0x4, 0x3E, 0x0, 0x4F, 0x5, 0x0, 0x0, 0x44, 0x4, 0x5D, 0x0, 0x27, 0x6, 0x19, 0x0, 0x14, 0x5, 0x41, 0x0, 0x14, 0x5, 0x4F, 0x0, 0x14, 0x4, 0x8B, 0x0, 0x14, 0x6, 0x21, 0x0, 0x14, 0x5, 0x41, 0x0, 0x14, 0x5, 0x87, 0x0, 0x14, 0x3, 0x27, 0x0, 0x15, 0x5, 0x93, 0x0, 0x14, 0x4, 0xD3, 0x0, 0x14, 0x6, 0x8C, 0x0, 0x1B, 0x4, 0xD6, 0x0, 0x49, 0x5, 0x8D, 0x0, 0x66, 0x5, 0x93, 0x0, 0x28, 0x5, 0xB, 0xFF, 0xF3, 0x4, 0xDC, 0x0, 0x2D, 0x6, 0x29, 0x0, 0x3C, 0x4, 0xF9, 0x0, 0x35, 0x5, 0x83, 0x0, 0x3C, 0x6, 0x93, 0x0, 0x7D, 0x4, 0x66, 0x0, 0x34, 0x5, 0x1E, 0x0, 0x4A, 0x7, 0x1, 0x0, 0x95, 0x2, 0x42, 0x0, 0xA4, 0x9, 0x8F, 0x0, 0x75, 0x4, 0x61, 0x0, 0x18, 0x5, 0x49, 0x0, 0x1B, 0x6, 0xCE, 0x0, 0x5B, 0x3, 0x8A, 0x0, 0x7D, 0x5, 0x18, 0x0, 0x1B, 0x5, 0x7C, 0x0, 0x2F, 0x2, 0xD6, 0x0, 0x2D, 0x4, 0xE9, 0x0, 0x50, 0x3, 0xBD, 0x0, 0x35, 0x3, 0x61, 0x0, 0x24, 0x2, 0xA0, 0x0, 0x35, 0x7, 0x8A, 0x0, 0x7D, 0x5, 0x8, 0x0, 0x7D, 0x4, 0xF8, 0x0, 0x7D, 0x3, 0xFE, 0x0, 0x7D, 0x4, 0x31, 0x0, 0x86, 0x4, 0xB, 0x0, 0x25, 0x7, 0x4D, 0x0, 0x50, 0x7, 0x41, 0x0, 0x5D, 0x7, 0x41, 0x0, 0x5D, 0x6, 0xC4, 0x0, 0x50, 0x6, 0xC4, 0x0, 0x50, 0x4, 0x58, 0x0, 0x35, 0x4, 0xC6, 0x0, 0x99, 0x2, 0x21, 0x0, 0x7D, 0x3, 0xA1, 0x0, 0x7D, 0x4, 0xF, 0x0, 0x28, 0x4, 0xD9, 0x0, 0x28, 0x4, 0x7F, 0x0, 0x1F, 0x5, 0xEB, 0x0, 0x1F, 0x2, 0x6B, 0xFF, 0xD8, 0x4, 0x72, 0x0, 0x77, 0x5, 0x9, 0x0, 0x1B, 0x6, 0xEF, 0x0, 0x77, 0x6, 0xF7, 0x0, 0x7D, 0x4, 0xE1, 0x0, 0x14, 0x4, 0xA, 0x0, 0x1F, 0x4, 0xF5, 0x0, 0x1F, 0x4, 0xC, 0x0, 0xA, 0x4, 0xF2, 0x0, 0x1F, 0x4, 0xBD, 0xFF, 0xDE, 0x5, 0xA7, 0xFF, 0xDE, 0x4, 0xA7, 0xFF, 0xBE, 0x3, 0x90, 0x0, 0xD, 0x3, 0x26, 0x0, 0x50, 0x3, 0x5E, 0x0, 0x64, 0x2, 0xDE, 0x0, 0x35, 0x2, 0x7F, 0x0, 0x35, 0x3, 0xAE, 0x0, 0x28, 0x4, 0x85, 0x0, 0x56, 0x4, 0xF7, 0x0, 0x68, 0x2, 0x5B, 0x0, 0xA2, 0x2, 0x98, 0x0, 0x64, 0x1, 0xF1, 0x0, 0x46, 0x5, 0x1B, 0x0, 0x2D, 0x4, 0xA8, 0x0, 0x19, 0x4, 0xBD, 0x0, 0x2D, 0x7, 0x24, 0x0, 0x2D, 0x7, 0x24, 0x0, 0x2D, 0x5, 0x12, 0x0, 0x2D, 0x6, 0xB7, 0x0, 0x4C, 0x0, 0x0, 0xFC, 0xF4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xFB, 0xC3, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xFD, 0xB8, 0x0, 0x0, 0xFB, 0x9C, 0x0, 0x0, 0xFB, 0x9C, 0x0, 0x0, 0xFC, 0xEE, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xFB, 0xC3, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xFD, 0xB8, 0x0, 0x0, 0xFB, 0x9C, 0x0, 0x0, 0xFB, 0x9C, 0x0, 0x0, 0x0, 0x0, 0x8, 0x31, 0x0, 0x5A, 0x8, 0x35, 0x0, 0x5C, 0x5, 0x38, 0x0, 0x74, 0x5, 0x3F, 0x0, 0x74, 0x4, 0xD8, 0x0, 0x25, 0x2, 0xF6, 0x0, 0x3C, 0x2, 0xF6, 0x0, 0x81, 0x2, 0xF6, 0x0, 0x4C, 0x4, 0x1D, 0x0, 0x50, 0x4, 0x1D, 0x0, 0x58, 0x4, 0x1D, 0x0, 0x3A, 0x4, 0x1D, 0x0, 0x61, 0x4, 0x1D, 0x0, 0x67, 0x4, 0x1D, 0x0, 0x31, 0x4, 0x1D, 0x0, 0x3F, 0x4, 0x1D, 0x0, 0x43, 0x4, 0x1D, 0x0, 0x96, 0x4, 0x1D, 0x0, 0x59, 0x4, 0x2A, 0x0, 0x41, 0x4, 0x3D, 0x0, 0x5, 0x4, 0x5F, 0x0, 0x16, 0x6, 0x8, 0x0, 0x29, 0x4, 0x7C, 0x0, 0x9, 0x4, 0x84, 0x0, 0x67, 0x4, 0x3C, 0x0, 0x25, 0x4, 0x35, 0x0, 0x3F, 0x4, 0x5D, 0x0, 0x76, 0x4, 0xC0, 0x0, 0x4D, 0x4, 0x6D, 0x0, 0x76, 0x4, 0xC0, 0x0, 0x50, 0x4, 0xDD, 0x0, 0x76, 0x6, 0x6, 0x0, 0x76, 0x3, 0xBA, 0x0, 0x76, 0x4, 0x5C, 0x0, 0x76, 0x3, 0xD6, 0x0, 0x25, 0x1, 0xFD, 0x0, 0x85, 0x4, 0xDE, 0x0, 0x76, 0x4, 0xA7, 0x0, 0x55, 0x3, 0xC6, 0x0, 0x76, 0x4, 0x35, 0x0, 0x3F, 0x4, 0x67, 0x0, 0x39, 0x3, 0xA4, 0x0, 0xA, 0x3, 0xBA, 0x0, 0x76, 0x4, 0x7C, 0x0, 0x9, 0x4, 0xC0, 0x0, 0x50, 0x4, 0x7C, 0x0, 0x9, 0x3, 0x99, 0x0, 0x43, 0x4, 0xD8, 0x0, 0x76, 0x4, 0x19, 0x0, 0x45, 0x5, 0x9E, 0x0, 0x51, 0x5, 0x55, 0x0, 0x51, 0x4, 0xE4, 0x0, 0x5F, 0x5, 0x92, 0x0, 0x25, 0x4, 0x80, 0x0, 0x50, 0x7, 0x54, 0x0, 0x25, 0x7, 0x58, 0x0, 0x76, 0x5, 0x98, 0x0, 0x25, 0x4, 0xD8, 0x0, 0x76, 0x4, 0x72, 0x0, 0x76, 0x5, 0x59, 0x0, 0x27, 0x6, 0x3A, 0x0, 0x1B, 0x4, 0x46, 0x0, 0x43, 0x4, 0xE4, 0x0, 0x76, 0x4, 0x5D, 0x0, 0x76, 0x4, 0xCC, 0x0, 0x25, 0x4, 0x47, 0x0, 0x20, 0x5, 0x5E, 0x0, 0x76, 0x4, 0x8C, 0x0, 0x41, 0x6, 0x85, 0x0, 0x76, 0x7, 0xB, 0x0, 0x76, 0x5, 0x5A, 0x0, 0xA, 0x6, 0x20, 0x0, 0x76, 0x4, 0x68, 0x0, 0x76, 0x4, 0x80, 0x0, 0x3D, 0x6, 0x92, 0x0, 0x76, 0x4, 0x88, 0x0, 0x44, 0x4, 0x23, 0x0, 0xA, 0x6, 0x92, 0x0, 0x1B, 0x4, 0x9E, 0x0, 0x76, 0x5, 0x1B, 0x0, 0x76, 0x5, 0x6E, 0x0, 0x25, 0x5, 0xF1, 0x0, 0x50, 0x4, 0x5A, 0x0, 0x5, 0x4, 0xC5, 0x0, 0x16, 0x6, 0x95, 0x0, 0x25, 0x4, 0x8C, 0x0, 0x41, 0x4, 0x8C, 0x0, 0x76, 0x5, 0xFE, 0x0, 0xB, 0x4, 0xD2, 0x0, 0x50, 0x4, 0x47, 0x0, 0x43, 0x4, 0xC0, 0x0, 0x50, 0x4, 0x67, 0x0, 0x39, 0x3, 0xF7, 0x0, 0x47, 0x8, 0x37, 0x0, 0x76, 0x4, 0x9D, 0x0, 0x4D, 0x4, 0xEB, 0x0, 0x28, 0x3, 0xF7, 0x0, 0x25, 0x2, 0xF6, 0x0, 0x37, 0x2, 0xF6, 0x0, 0x35, 0x2, 0xF6, 0x0, 0x4F, 0x2, 0xF6, 0x0, 0x4E, 0x2, 0xF6, 0x0, 0x37, 0x2, 0xF6, 0x0, 0x4C, 0x2, 0xF6, 0x0, 0x47, 0x3, 0xBA, 0x0, 0x90, 0x2, 0xB2, 0x0, 0x96, 0x3, 0xE1, 0x0, 0x76, 0x4, 0x3B, 0x0, 0x9, 0x4, 0xBC, 0x0, 0x56, 0x5, 0x44, 0x0, 0x9B, 0x5, 0x28, 0x0, 0x9B, 0x4, 0x31, 0x0, 0x81, 0x5, 0x3A, 0x0, 0x9B, 0x4, 0x2E, 0x0, 0x81, 0x4, 0x7B, 0x0, 0x76, 0x4, 0x80, 0x0, 0x50, 0x4, 0x61, 0x0, 0x76, 0x4, 0x9E, 0x0, 0x9, 0x2, 0x6, 0x0, 0x94, 0x3, 0xA2, 0x0, 0x76, 0x0, 0x0, 0xFC, 0x5A, 0x0, 0x0, 0xFC, 0x5A, 0x0, 0x0, 0xFC, 0x5A, 0x0, 0x0, 0xFC, 0x5A, 0x0, 0x0, 0xFC, 0x61, 0x0, 0x0, 0xFC, 0x9C, 0x0, 0x0, 0xFC, 0x61, 0x0, 0x0, 0xFC, 0x61, 0x0, 0x0, 0xFC, 0x5A, 0x0, 0x0, 0xFC, 0xAA, 0x0, 0x0, 0xFC, 0x5E, 0x4, 0xC, 0x0, 0x7B, 0x4, 0xC, 0xFF, 0x4B, 0x4, 0xC, 0x0, 0x76, 0x4, 0xC, 0x0, 0x76, 0x0, 0x0, 0xFC, 0x61, 0x3, 0xBA, 0x0, 0x76, 0x3, 0xA2, 0x0, 0x76, 0x3, 0xA2, 0x0, 0x76, 0x0, 0x0, 0xFC, 0x5A, 0x2, 0xF6, 0x0, 0x4C, 0x2, 0xF6, 0x0, 0x35, 0x2, 0xF6, 0x0, 0x4F, 0x2, 0xF6, 0x0, 0x4E, 0x2, 0xF6, 0x0, 0x37, 0x2, 0xF6, 0x0, 0x4C, 0x2, 0xF6, 0x0, 0x47, 0x5, 0x7B, 0x0, 0x6C, 0x5, 0xA3, 0x0, 0x6C, 0x5, 0x86, 0x0, 0x9B, 0x5, 0xE1, 0x0, 0x6B, 0x5, 0xE3, 0x0, 0x6B, 0x4, 0x1C, 0x0, 0x98, 0x4, 0x82, 0x0, 0x6F, 0x4, 0x57, 0x0, 0xF, 0x4, 0xBF, 0x0, 0x36, 0x4, 0x6B, 0x0, 0x67, 0x4, 0x2E, 0x0, 0x43, 0x3, 0xA2, 0x0, 0x76, 0x1, 0xB4, 0x0, 0x5D, 0x6, 0x99, 0x0, 0x50, 0x4, 0xB4, 0x0, 0x74, 0x5, 0xB0, 0x0, 0x95, 0x5, 0xB0, 0x0, 0x95, 0x5, 0x75, 0x0, 0x66, 0x5, 0x98, 0x0, 0x64, 0x8, 0xAC, 0x0, 0x95, 0x2, 0x10, 0xFF, 0xAF, 0x4, 0x8C, 0x0, 0x39, 0x4, 0x8C, 0x0, 0x6B, 0x4, 0x8C, 0x0, 0x2C, 0x4, 0x8C, 0x0, 0x66, 0x4, 0x8C, 0x0, 0x63, 0x4, 0x8C, 0x0, 0x35, 0x4, 0x8C, 0x0, 0x6F, 0x4, 0x8C, 0x0, 0x59, 0x4, 0x8C, 0x0, 0x69, 0x4, 0x8C, 0x0, 0xE4, 0x2, 0x27, 0xFF, 0xB5, 0x2, 0x42, 0x0, 0x90, 0x2, 0xE6, 0x0, 0x1E, 0x2, 0xD3, 0x0, 0x1A, 0x2, 0x27, 0xFF, 0xB5, 0x3, 0xAD, 0x0, 0x1E, 0x1, 0xD7, 0x0, 0x8D, 0x2, 0x1B, 0x0, 0x90, 0x2, 0x6A, 0x0, 0x28, 0x2, 0x1B, 0xFF, 0xFA, 0x2, 0x1B, 0x0, 0x90, 0x1, 0xD4, 0x0, 0x88, 0x2, 0x27, 0xFF, 0xB5, 0x2, 0xB2, 0x0, 0x0, 0x1, 0xEF, 0x0, 0x22, 0x1, 0xEF, 0x0, 0x22, 0x4, 0x61, 0x0, 0x76, 0x4, 0xD8, 0x0, 0x25, 0x4, 0xD8, 0x0, 0x2D, 0x4, 0xD8, 0x0, 0xA, 0x4, 0xD8, 0x0, 0x8D, 0x4, 0xD8, 0x0, 0x18, 0x4, 0xD8, 0x0, 0x9D, 0x4, 0xD8, 0x0, 0x87, 0x4, 0xD8, 0x0, 0x2D, 0x4, 0xD8, 0x0, 0xA7, 0x4, 0xD8, 0x0, 0x98, 0x4, 0xD8, 0x0, 0x90, 0x4, 0xD8, 0x0, 0x24, 0x4, 0xD8, 0x0, 0x99, 0x4, 0xD8, 0x0, 0x8E, 0x4, 0xD8, 0x0, 0x7A, 0x4, 0xD8, 0x0, 0x18, 0x4, 0xD8, 0x0, 0x8D, 0x4, 0xD8, 0x0, 0x84, 0x4, 0xD8, 0x0, 0x86, 0x4, 0xD8, 0x0, 0x96, 0x4, 0xD8, 0x0, 0x8D, 0x4, 0xD8, 0x0, 0x9D, 0x4, 0xD8, 0x0, 0x31, 0x4, 0xD8, 0x0, 0x7E, 0x4, 0xD8, 0x0, 0x9E, 0x4, 0xD8, 0x0, 0xA7, 0x4, 0xD8, 0x0, 0xB7, 0x4, 0xD8, 0x0, 0x8E, 0x4, 0xD8, 0x0, 0x33, 0x4, 0xD8, 0x0, 0xA8, 0x4, 0xD8, 0x0, 0x38, 0x4, 0xD8, 0x0, 0x39, 0x4, 0xD8, 0x0, 0x94, 0x4, 0xD8, 0x0, 0xA8, 0x4, 0xD8, 0x0, 0x37, 0x3, 0xAC, 0x0, 0x78, 0x3, 0xAC, 0x0, 0x93, 0x4, 0xD8, 0x0, 0xBA, 0x3, 0xAC, 0x0, 0x71, 0x3, 0xAC, 0x0, 0x84, 0x4, 0xD8, 0x0, 0x33, 0x4, 0xD8, 0x0, 0x39, 0x4, 0xD8, 0x0, 0x38, 0x4, 0xD8, 0x0, 0x90, 0x4, 0xD8, 0x0, 0xAB, 0x4, 0xD8, 0x0, 0xAB, 0x4, 0xD8, 0x0, 0xB2, 0x4, 0xD8, 0x0, 0xBC, 0x4, 0xD8, 0x0, 0xA7, 0x4, 0xD8, 0x0, 0x99, 0x4, 0xD8, 0x0, 0xB7, 0x4, 0xD8, 0x0, 0xA, 0x4, 0xD8, 0x0, 0xBC, 0x4, 0xD8, 0x0, 0xAB, 0x4, 0xD8, 0x0, 0xAB, 0x4, 0xD8, 0x0, 0xB2, 0x4, 0xD8, 0x0, 0x47, 0x4, 0xD8, 0x0, 0x37, 0x4, 0xD8, 0x0, 0xA8, 0x4, 0xD8, 0x0, 0xA7, 0x4, 0xD8, 0x0, 0x99, 0x4, 0xD8, 0x0, 0x1D, 0x4, 0xD8, 0x0, 0x67, 0x4, 0xD8, 0x0, 0x49, 0x3, 0xAC, 0x0, 0x78, 0x3, 0xAC, 0x0, 0x93, 0x3, 0xAC, 0x0, 0x84, 0x3, 0xAC, 0x0, 0x93, 0x4, 0xD8, 0x0, 0xBC, 0x4, 0xD8, 0x0, 0x9D, 0x4, 0xD8, 0x0, 0x8D, 0x4, 0xD8, 0x0, 0x18, 0x4, 0xD8, 0x0, 0x8E, 0x4, 0xD8, 0x0, 0x23, 0x4, 0xD8, 0x0, 0xA8, 0x4, 0xD8, 0x0, 0x18, 0x4, 0xD8, 0x0, 0xA7, 0x4, 0xD8, 0x0, 0x96, 0x4, 0xD8, 0x0, 0x86, 0x4, 0xD8, 0x0, 0x7E, 0x4, 0xD8, 0x0, 0x3C, 0x4, 0xD8, 0x0, 0x2C, 0x4, 0xD8, 0x0, 0x98, 0x4, 0xD8, 0x0, 0x24, 0x3, 0xAC, 0x0, 0x78, 0x3, 0xAC, 0x0, 0x93, 0x4, 0xD8, 0x0, 0x94, 0x4, 0xD8, 0x0, 0xA7, 0x3, 0xAC, 0x0, 0x78, 0x4, 0xD8, 0x0, 0xA8, 0x4, 0xD8, 0x0, 0x87, 0x3, 0xAC, 0x0, 0x93, 0x4, 0xD8, 0x0, 0xAB, 0x4, 0xD8, 0x0, 0xA8, 0x4, 0xD8, 0x0, 0xAB, 0x4, 0xD8, 0x0, 0xBA, 0x4, 0xD8, 0x0, 0xAB, 0x4, 0xD8, 0x0, 0x18, 0x4, 0xD8, 0x0, 0x8D, 0x4, 0xD8, 0x0, 0x7A, 0x4, 0xD8, 0x0, 0x84, 0x4, 0xD8, 0x0, 0x94, 0x4, 0xD8, 0x0, 0xAB, 0x4, 0xD8, 0x0, 0x98, 0x4, 0xD8, 0x0, 0x99, 0x4, 0xD8, 0x0, 0xA7, 0x4, 0xD8, 0x0, 0x18, 0x4, 0xD8, 0x0, 0x23, 0x4, 0xD8, 0x0, 0x9D, 0x4, 0xD8, 0x0, 0x8E, 0x4, 0xD8, 0x0, 0x8D, 0x4, 0xD8, 0x0, 0x31, 0x4, 0xD8, 0x0, 0x1D, 0x3, 0xAC, 0x0, 0x93, 0x4, 0xD8, 0x0, 0x9E, 0x3, 0xAC, 0x0, 0x78, 0x3, 0xAC, 0x0, 0x84, 0x3, 0xAC, 0x0, 0x71, 0x4, 0xD8, 0x0, 0xA8, 0x4, 0xD8, 0x0, 0x37, 0x4, 0xD8, 0x0, 0x67, 0x4, 0xD8, 0x0, 0x47, 0x4, 0xD8, 0x0, 0x49, 0x4, 0xD8, 0x0, 0x37, 0x4, 0xD8, 0x0, 0x98, 0x4, 0xD8, 0x0, 0xAB, 0x4, 0xD8, 0x0, 0x3C, 0x4, 0xD8, 0x0, 0xA8, 0x4, 0xD8, 0x0, 0x2C, 0x4, 0xD8, 0x0, 0xA7, 0x4, 0xD8, 0x0, 0x94, 0x4, 0xD8, 0x0, 0xAB, 0x4, 0xD8, 0x0, 0xBC, 0x4, 0xD8, 0x0, 0xB2, 0x3, 0xAC, 0x0, 0x78, 0x3, 0xAC, 0x0, 0x84, 0x4, 0xD8, 0x0, 0xB2, 0x3, 0xAC, 0x0, 0x93, 0x3, 0xAC, 0x0, 0x93, 0x0, 0x0, 0xFB, 0x8F, 0x0, 0x0, 0xFA, 0xC2, 0x0, 0x0, 0xFB, 0x5E, 0x0, 0x0, 0xFB, 0x1B, 0x0, 0x0, 0xFB, 0x6A, 0x0, 0x0, 0xFB, 0xD6, 0x0, 0x0, 0xFB, 0xE, 0x0, 0x0, 0xFB, 0x9A, 0x0, 0x0, 0xFB, 0xA0, 0x0, 0x0, 0xFB, 0xA6, 0x0, 0x0, 0xFB, 0x78, 0x0, 0x0, 0xFB, 0x50, 0x0, 0x0, 0xFC, 0x2C, 0x0, 0x0, 0xFC, 0x19, 0x0, 0x0, 0xFB, 0x6D, 0x4, 0xEB, 0x0, 0x63, 0x0, 0x0, 0xFC, 0x11, 0x0, 0x0, 0xFB, 0x5E, 0x0, 0x0, 0xFA, 0x4E, 0x0, 0x0, 0xFA, 0x81, 0x0, 0x0, 0xF9, 0xCE, 0x0, 0x0, 0xF8, 0xBE, 0x4, 0x34, 0x0, 0x3A, 0x4, 0x89, 0x0, 0x7D, 0x4, 0x3D, 0x0, 0x51, 0x4, 0x99, 0x0, 0x50, 0x4, 0x93, 0x0, 0x50, 0x4, 0xA1, 0x0, 0x4C, 0x4, 0x94, 0x0, 0x7D, 0x4, 0x9F, 0x0, 0x50, 0x4, 0x4B, 0x0, 0x54, 0x4, 0x89, 0x0, 0x51, 0x4, 0x63, 0x0, 0x3E, 0x3, 0xA4, 0x0, 0x5A, 0x4, 0xC6, 0x0, 0x5, 0x5, 0x90, 0x0, 0x50, 0x5, 0xA, 0x0, 0x7A, 0x5, 0xBC, 0x0, 0x5, 0x5, 0x9D, 0x0, 0x5, 0x3, 0xF9, 0x0, 0x5, 0x5, 0x3, 0x0, 0x5D, 0x3, 0xC4, 0x0, 0x4, 0x6, 0x47, 0xFF, 0xF0, 0x4, 0x9, 0x0, 0x76, 0x4, 0xC0, 0x0, 0x50, 0x5, 0x9, 0x0, 0x32, 0x4, 0xDD, 0x0, 0x76, 0x0, 0x0, 0xFD, 0x40, 0x0, 0x0, 0xFC, 0x4A, 0x0, 0x0, 0xFC, 0x57, 0x0, 0x0, 0xFC, 0x57, 0x0, 0x0, 0xFC, 0x65, 0x0, 0x0, 0xFC, 0x5F, 0x0, 0x0, 0xFC, 0x57, 0x0, 0x0, 0xFC, 0x57, 0x0, 0x0, 0xFC, 0x65, 0x0, 0x0, 0xFC, 0x4A, 0x0, 0x0, 0xFC, 0x57, 0x0, 0x0, 0xFC, 0x50, 0x0, 0x0, 0xFC, 0x57, 0x1, 0xFE, 0x0, 0x0, 0x2, 0xA1, 0x0, 0x47, 0x5, 0x58, 0x0, 0x15, 0x5, 0x58, 0x0, 0x15, 0x4, 0x8F, 0xFF, 0xF2, 0x4, 0xDC, 0x0, 0x2D, 0x2, 0xAA, 0xFF, 0xE8, 0x5, 0x53, 0x0, 0x12, 0x5, 0x53, 0x0, 0x12, 0x5, 0x53, 0x0, 0x12, 0x5, 0x53, 0x0, 0x12, 0x5, 0x53, 0x0, 0x12, 0x5, 0x53, 0x0, 0x12, 0x5, 0x53, 0x0, 0x12, 0x5, 0x39, 0x0, 0x66, 0x4, 0x86, 0x0, 0x95, 0x4, 0x86, 0x0, 0x95, 0x4, 0x86, 0x0, 0x95, 0x4, 0x86, 0x0, 0x95, 0x2, 0x42, 0xFF, 0xC7, 0x2, 0x42, 0x0, 0xA4, 0x2, 0x42, 0xFF, 0xCB, 0x2, 0x42, 0xFF, 0xC0, 0x5, 0xAF, 0x0, 0x95, 0x5, 0x86, 0x0, 0x66, 0x5, 0x86, 0x0, 0x66, 0x5, 0x86, 0x0, 0x66, 0x5, 0x86, 0x0, 0x66, 0x5, 0x86, 0x0, 0x66, 0x5, 0x38, 0x0, 0x7E, 0x5, 0x38, 0x0, 0x7E, 0x5, 0x38, 0x0, 0x7E, 0x5, 0x38, 0x0, 0x7E, 0x4, 0xE0, 0x0, 0x8, 0x4, 0x55, 0x0, 0x5B, 0x4, 0x55, 0x0, 0x5B, 0x4, 0x55, 0x0, 0x5B, 0x4, 0x55, 0x0, 0x5B, 0x4, 0x55, 0x0, 0x5B, 0x4, 0x55, 0x0, 0x5B, 0x4, 0x55, 0x0, 0x5B, 0x4, 0x31, 0x0, 0x50, 0x4, 0x4B, 0x0, 0x54, 0x4, 0x4B, 0x0, 0x54, 0x4, 0x4B, 0x0, 0x54, 0x4, 0x4B, 0x0, 0x54, 0x2, 0x1B, 0xFF, 0xB2, 0x2, 0x1B, 0x0, 0x90, 0x2, 0x1B, 0xFF, 0xB6, 0x2, 0x1B, 0xFF, 0xAB, 0x4, 0x73, 0x0, 0x7A, 0x4, 0x8E, 0x0, 0x50, 0x4, 0x8E, 0x0, 0x50, 0x4, 0x8E, 0x0, 0x50, 0x4, 0x8E, 0x0, 0x50, 0x4, 0x8E, 0x0, 0x50, 0x4, 0x72, 0x0, 0x77, 0x4, 0x72, 0x0, 0x77, 0x4, 0x72, 0x0, 0x77, 0x4, 0x72, 0x0, 0x77, 0x3, 0xE5, 0x0, 0xC, 0x3, 0xE5, 0x0, 0xC, 0x5, 0x53, 0x0, 0x12, 0x4, 0x55, 0x0, 0x5B, 0x5, 0x53, 0x0, 0x12, 0x4, 0x55, 0x0, 0x5B, 0x5, 0x53, 0x0, 0x12, 0x4, 0x55, 0x0, 0x5B, 0x5, 0x39, 0x0, 0x66, 0x4, 0x31, 0x0, 0x50, 0x5, 0x39, 0x0, 0x66, 0x4, 0x31, 0x0, 0x50, 0x5, 0x39, 0x0, 0x66, 0x4, 0x31, 0x0, 0x50, 0x5, 0x39, 0x0, 0x66, 0x4, 0x31, 0x0, 0x50, 0x5, 0x3A, 0x0, 0x95, 0x5, 0x1B, 0x0, 0x50, 0x4, 0x86, 0x0, 0x95, 0x4, 0x4B, 0x0, 0x54, 0x4, 0x86, 0x0, 0x95, 0x4, 0x4B, 0x0, 0x54, 0x4, 0x86, 0x0, 0x95, 0x4, 0x4B, 0x0, 0x54, 0x4, 0x86, 0x0, 0x95, 0x4, 0x4B, 0x0, 0x54, 0x4, 0x86, 0x0, 0x95, 0x4, 0x4B, 0x0, 0x54, 0x5, 0x73, 0x0, 0x6A, 0x4, 0x89, 0x0, 0x52, 0x5, 0x73, 0x0, 0x6A, 0x4, 0x89, 0x0, 0x52, 0x5, 0x73, 0x0, 0x6A, 0x4, 0x89, 0x0, 0x52, 0x5, 0x73, 0x0, 0x6A, 0x4, 0x89, 0x0, 0x52, 0x5, 0xB0, 0x0, 0x95, 0x4, 0x71, 0x0, 0x7A, 0x2, 0x42, 0xFF, 0xB2, 0x2, 0x1B, 0xFF, 0x9D, 0x2, 0x42, 0xFF, 0xCE, 0x2, 0x1B, 0xFF, 0xB9, 0x2, 0x42, 0xFF, 0xDF, 0x2, 0x1B, 0xFF, 0xCA, 0x2, 0x42, 0x0, 0x15, 0x2, 0xC, 0xFF, 0xFE, 0x2, 0x42, 0x0, 0x9E, 0x6, 0xB3, 0x0, 0xA4, 0x4, 0xD, 0x0, 0x7D, 0x4, 0x71, 0x0, 0x2D, 0x2, 0x27, 0xFF, 0xB5, 0x5, 0xB, 0x0, 0x95, 0x4, 0x2D, 0x0, 0x7D, 0x4, 0x55, 0x0, 0x95, 0x2, 0xC, 0x0, 0x8B, 0x4, 0x55, 0x0, 0x95, 0x2, 0xC, 0x0, 0x57, 0x4, 0x55, 0x0, 0x95, 0x2, 0xA2, 0x0, 0x8C, 0x4, 0x55, 0x0, 0x95, 0x2, 0xE8, 0x0, 0x8C, 0x5, 0xAF, 0x0, 0x95, 0x4, 0x73, 0x0, 0x7A, 0x5, 0xAF, 0x0, 0x95, 0x4, 0x73, 0x0, 0x7A, 0x5, 0xAF, 0x0, 0x95, 0x4, 0x73, 0x0, 0x7A, 0x4, 0x73, 0xFF, 0xA4, 0x5, 0x86, 0x0, 0x66, 0x4, 0x8E, 0x0, 0x50, 0x5, 0x86, 0x0, 0x66, 0x4, 0x8E, 0x0, 0x50, 0x5, 0x86, 0x0, 0x66, 0x4, 0x8E, 0x0, 0x50, 0x4, 0xFF, 0x0, 0x95, 0x2, 0xD0, 0x0, 0x7D, 0x4, 0xFF, 0x0, 0x95, 0x2, 0xD0, 0x0, 0x51, 0x4, 0xFF, 0x0, 0x95, 0x2, 0xD0, 0x0, 0x38, 0x4, 0xD5, 0x0, 0x4A, 0x4, 0x22, 0x0, 0x4C, 0x4, 0xD5, 0x0, 0x4A, 0x4, 0x22, 0x0, 0x4C, 0x4, 0xD5, 0x0, 0x4A, 0x4, 0x22, 0x0, 0x4C, 0x4, 0xD5, 0x0, 0x4A, 0x4, 0x22, 0x0, 0x4C, 0x4, 0xD5, 0x0, 0x4A, 0x4, 0x22, 0x0, 0x4C, 0x4, 0xDC, 0x0, 0x2D, 0x2, 0xAA, 0x0, 0x8, 0x4, 0xDC, 0x0, 0x2D, 0x2, 0xAA, 0x0, 0x8, 0x4, 0xDC, 0x0, 0x2D, 0x2, 0xD2, 0x0, 0x8, 0x5, 0x38, 0x0, 0x7E, 0x4, 0x72, 0x0, 0x77, 0x5, 0x38, 0x0, 0x7E, 0x4, 0x72, 0x0, 0x77, 0x5, 0x38, 0x0, 0x7E, 0x4, 0x72, 0x0, 0x77, 0x5, 0x38, 0x0, 0x7E, 0x4, 0x72, 0x0, 0x77, 0x5, 0x38, 0x0, 0x7E, 0x4, 0x72, 0x0, 0x77, 0x5, 0x38, 0x0, 0x7E, 0x4, 0x72, 0x0, 0x77, 0x7, 0xB, 0x0, 0x31, 0x5, 0xF2, 0x0, 0x22, 0x4, 0xE0, 0x0, 0x8, 0x3, 0xE5, 0x0, 0xC, 0x4, 0xE0, 0x0, 0x8, 0x4, 0xD2, 0x0, 0x50, 0x4, 0x7, 0x0, 0x52, 0x4, 0xD2, 0x0, 0x50, 0x4, 0x7, 0x0, 0x52, 0x4, 0xD2, 0x0, 0x50, 0x4, 0x7, 0x0, 0x52, 0x7, 0x85, 0xFF, 0xF6, 0x6, 0xC1, 0x0, 0x48, 0x5, 0x85, 0x0, 0x6A, 0x4, 0x89, 0x0, 0x50, 0x4, 0x7B, 0xFF, 0xA6, 0x4, 0x7B, 0xFF, 0xA6, 0x4, 0x3C, 0x0, 0x25, 0x4, 0x9E, 0x0, 0x9, 0x4, 0x9E, 0x0, 0x9, 0x4, 0x9E, 0x0, 0x9, 0x4, 0x9E, 0x0, 0x9, 0x4, 0x9E, 0x0, 0x9, 0x4, 0x9E, 0x0, 0x9, 0x4, 0x9E, 0x0, 0x9, 0x4, 0x80, 0x0, 0x50, 0x3, 0xE1, 0x0, 0x76, 0x3, 0xE1, 0x0, 0x76, 0x3, 0xE1, 0x0, 0x76, 0x3, 0xE1, 0x0, 0x76, 0x1, 0xFD, 0xFF, 0xA5, 0x1, 0xFD, 0x0, 0x84, 0x1, 0xFD, 0xFF, 0xA9, 0x1, 0xFD, 0xFF, 0x9E, 0x4, 0xDD, 0x0, 0x76, 0x4, 0xC0, 0x0, 0x50, 0x4, 0xC0, 0x0, 0x50, 0x4, 0xC0, 0x0, 0x50, 0x4, 0xC0, 0x0, 0x50, 0x4, 0xC0, 0x0, 0x50, 0x4, 0x84, 0x0, 0x67, 0x4, 0x84, 0x0, 0x67, 0x4, 0x84, 0x0, 0x67, 0x4, 0x84, 0x0, 0x67, 0x4, 0x3D, 0x0, 0x5, 0x4, 0x9E, 0x0, 0x9, 0x4, 0x9E, 0x0, 0x9, 0x4, 0x9E, 0x0, 0x9, 0x4, 0x80, 0x0, 0x50, 0x4, 0x80, 0x0, 0x50, 0x4, 0x80, 0x0, 0x50, 0x4, 0x80, 0x0, 0x50, 0x4, 0x7B, 0x0, 0x6A, 0x3, 0xE1, 0x0, 0x76, 0x3, 0xE1, 0x0, 0x76, 0x3, 0xE1, 0x0, 0x76, 0x3, 0xE1, 0x0, 0x76, 0x3, 0xE1, 0x0, 0x76, 0x4, 0xA7, 0x0, 0x55, 0x4, 0xA7, 0x0, 0x55, 0x4, 0xA7, 0x0, 0x55, 0x4, 0xA7, 0x0, 0x55, 0x4, 0xDE, 0x0, 0x76, 0x1, 0xFD, 0xFF, 0x90, 0x1, 0xFD, 0xFF, 0xAC, 0x1, 0xFD, 0xFF, 0xBD, 0x1, 0xFD, 0x0, 0x14, 0x1, 0xFD, 0x0, 0x7C, 0x3, 0xD6, 0x0, 0x25, 0x4, 0x5C, 0x0, 0x76, 0x3, 0xBA, 0x0, 0x76, 0x3, 0xBA, 0x0, 0x76, 0x3, 0xBA, 0x0, 0x76, 0x3, 0xBA, 0x0, 0x76, 0x4, 0xDD, 0x0, 0x76, 0x4, 0xDD, 0x0, 0x76, 0x4, 0xDD, 0x0, 0x76, 0x4, 0xC0, 0x0, 0x50, 0x4, 0xC0, 0x0, 0x50, 0x4, 0xC0, 0x0, 0x50, 0x4, 0xC0, 0x0, 0x50, 0x4, 0x5D, 0x0, 0x76, 0x4, 0x5D, 0x0, 0x76, 0x4, 0x5D, 0x0, 0x76, 0x4, 0x35, 0x0, 0x3F, 0x4, 0x35, 0x0, 0x3F, 0x4, 0x35, 0x0, 0x3F, 0x4, 0x35, 0x0, 0x3F, 0x4, 0x3C, 0x0, 0x25, 0x4, 0x3C, 0x0, 0x25, 0x4, 0x3C, 0x0, 0x25, 0x4, 0x84, 0x0, 0x67, 0x4, 0x84, 0x0, 0x67, 0x4, 0x84, 0x0, 0x67, 0x4, 0x84, 0x0, 0x67, 0x4, 0x84, 0x0, 0x67, 0x4, 0x84, 0x0, 0x67, 0x6, 0x8, 0x0, 0x29, 0x4, 0x3D, 0x0, 0x5, 0x4, 0x3D, 0x0, 0x5, 0x4, 0x2A, 0x0, 0x41, 0x4, 0x2A, 0x0, 0x41, 0x4, 0x2A, 0x0, 0x41, 0x5, 0x53, 0x0, 0x12, 0x4, 0x86, 0xFE, 0xE7, 0x5, 0xB0, 0xFE, 0xF0, 0x2, 0x42, 0xFE, 0xF2, 0x5, 0x9A, 0xFF, 0xBC, 0x5, 0x44, 0xFF, 0x45, 0x5, 0x70, 0xFF, 0xC6, 0x2, 0xAA, 0xFF, 0x87, 0x5, 0x53, 0x0, 0x12, 0x5, 0xD, 0x0, 0x95, 0x4, 0x86, 0x0, 0x95, 0x4, 0xD2, 0x0, 0x50, 0x5, 0xB0, 0x0, 0x95, 0x2, 0x42, 0x0, 0xA4, 0x5, 0xB, 0x0, 0x95, 0x7, 0x1, 0x0, 0x95, 0x5, 0xAF, 0x0, 0x95, 0x5, 0x86, 0x0, 0x66, 0x5, 0x1E, 0x0, 0x95, 0x4, 0xDC, 0x0, 0x2D, 0x4, 0xE0, 0x0, 0x8, 0x5, 0x10, 0x0, 0x29, 0x2, 0x42, 0xFF, 0xC0, 0x4, 0xE0, 0x0, 0x8, 0x4, 0x85, 0x0, 0x56, 0x4, 0x61, 0x0, 0x61, 0x4, 0x89, 0x0, 0x7F, 0x2, 0xAA, 0x0, 0xAA, 0x4, 0x61, 0x0, 0x80, 0x4, 0x98, 0x0, 0x8E, 0x4, 0x8E, 0x0, 0x50, 0x4, 0xBB, 0x0, 0x93, 0x3, 0xF6, 0x0, 0x17, 0x4, 0x63, 0x0, 0x3E, 0x2, 0xAA, 0xFF, 0xCD, 0x4, 0x61, 0x0, 0x80, 0x4, 0x8E, 0x0, 0x50, 0x4, 0x61, 0x0, 0x80, 0x6, 0x95, 0x0, 0x66, 0x4, 0x86, 0x0, 0x95, 0x4, 0x75, 0x0, 0x9B, 0x4, 0xD5, 0x0, 0x4A, 0x2, 0x42, 0x0, 0xA4, 0x2, 0x42, 0xFF, 0xC0, 0x4, 0x71, 0x0, 0x2D, 0x5, 0x28, 0x0, 0x9B, 0x5, 0xB, 0x0, 0x95, 0x5, 0xA, 0x0, 0x3A, 0x5, 0x53, 0x0, 0x12, 0x5, 0xD, 0x0, 0x95, 0x4, 0x75, 0x0, 0x9B, 0x4, 0x86, 0x0, 0x95, 0x5, 0xA9, 0x0, 0x95, 0x7, 0x1, 0x0, 0x95, 0x5, 0xB0, 0x0, 0x95, 0x5, 0x86, 0x0, 0x66, 0x5, 0xB1, 0x0, 0x9B, 0x5, 0x1E, 0x0, 0x95, 0x5, 0x39, 0x0, 0x66, 0x4, 0xDC, 0x0, 0x2D, 0x5, 0x10, 0x0, 0x29, 0x4, 0x55, 0x0, 0x5B, 0x4, 0x4B, 0x0, 0x54, 0x4, 0x98, 0x0, 0x86, 0x4, 0x8E, 0x0, 0x50, 0x4, 0x81, 0x0, 0x7D, 0x4, 0x31, 0x0, 0x50, 0x3, 0xE5, 0x0, 0xC, 0x4, 0x7, 0x0, 0x1F, 0x4, 0x4B, 0x0, 0x54, 0x3, 0x5B, 0x0, 0x85, 0x4, 0x22, 0x0, 0x4C, 0x2, 0xC, 0x0, 0x7D, 0x2, 0x1B, 0xFF, 0xAB, 0x2, 0x1, 0xFF, 0xB4, 0x4, 0x6F, 0x0, 0x8F, 0x3, 0xE5, 0x0, 0xC, 0x7, 0xB, 0x0, 0x31, 0x5, 0xF2, 0x0, 0x22, 0x7, 0xB, 0x0, 0x31, 0x5, 0xF2, 0x0, 0x22, 0x7, 0xB, 0x0, 0x31, 0x5, 0xF2, 0x0, 0x22, 0x4, 0xE0, 0x0, 0x8, 0x3, 0xE5, 0x0, 0xC, 0x1, 0x5A, 0x0, 0x53, 0x2, 0x98, 0x0, 0x65, 0x4, 0x4A, 0x0, 0x90, 0x2, 0x27, 0xFF, 0xB0, 0x1, 0xBC, 0x0, 0x34, 0x7, 0x1, 0x0, 0x95, 0x6, 0xF7, 0x0, 0x7D, 0x5, 0x53, 0x0, 0x12, 0x4, 0x55, 0x0, 0x5B, 0x4, 0x86, 0x0, 0x95, 0x5, 0xA9, 0x0, 0x95, 0x4, 0x4B, 0x0, 0x54, 0x4, 0x98, 0x0, 0x86, 0x5, 0xAB, 0x0, 0x44, 0x5, 0xCA, 0x0, 0x50, 0x5, 0x1A, 0x0, 0x10, 0x4, 0xF, 0xFF, 0xF2, 0x8, 0x73, 0x0, 0x50, 0x9, 0x6B, 0x0, 0x66, 0x4, 0xD6, 0x0, 0x49, 0x4, 0x17, 0x0, 0x4E, 0x5, 0x39, 0x0, 0x66, 0x4, 0x31, 0x0, 0x50, 0x4, 0xE0, 0x0, 0x8, 0x4, 0xF, 0x0, 0x21, 0x2, 0x42, 0x0, 0xA4, 0x7, 0xA2, 0x0, 0x17, 0x6, 0x77, 0x0, 0x1E, 0x2, 0x42, 0x0, 0xA4, 0x5, 0x53, 0x0, 0x12, 0x4, 0x55, 0x0, 0x5B, 0x5, 0x53, 0x0, 0x12, 0x4, 0x55, 0x0, 0x5B, 0x7, 0x85, 0xFF, 0xF6, 0x6, 0xC1, 0x0, 0x48, 0x4, 0x86, 0x0, 0x95, 0x4, 0x4B, 0x0, 0x54, 0x5, 0x89, 0x0, 0x51, 0x4, 0x3D, 0x0, 0x5A, 0x4, 0x3D, 0x0, 0x5A, 0x7, 0xA2, 0x0, 0x17, 0x6, 0x77, 0x0, 0x1E, 0x4, 0xD6, 0x0, 0x49, 0x4, 0x17, 0x0, 0x4E, 0x5, 0xA9, 0x0, 0x95, 0x4, 0x98, 0x0, 0x86, 0x5, 0xA9, 0x0, 0x95, 0x4, 0x98, 0x0, 0x86, 0x5, 0x86, 0x0, 0x66, 0x4, 0x8E, 0x0, 0x50, 0x5, 0x7B, 0x0, 0x5F, 0x4, 0x89, 0x0, 0x4F, 0x5, 0x7B, 0x0, 0x5F, 0x5, 0x7B, 0x0, 0x5F, 0x4, 0x89, 0x0, 0x4F, 0x5, 0x51, 0x0, 0x6B, 0x4, 0x3D, 0x0, 0x52, 0x5, 0xA, 0x0, 0x3A, 0x3, 0xE5, 0x0, 0xC, 0x5, 0xA, 0x0, 0x3A, 0x3, 0xE5, 0x0, 0xC, 0x5, 0xA, 0x0, 0x3A, 0x3, 0xE5, 0x0, 0xC, 0x5, 0x89, 0x0, 0x8E, 0x4, 0x66, 0x0, 0x5F, 0x6, 0xF9, 0x0, 0x9C, 0x6, 0x6F, 0x0, 0x8F, 0x4, 0x85, 0x0, 0x50, 0x5, 0x53, 0x0, 0x12, 0x4, 0x55, 0x0, 0x5B, 0x5, 0x53, 0x0, 0x12, 0x4, 0x55, 0x0, 0x5B, 0x5, 0x53, 0x0, 0x12, 0x4, 0x55, 0x0, 0x5B, 0x5, 0x53, 0x0, 0xE, 0x4, 0x55, 0xFF, 0x98, 0x5, 0x53, 0x0, 0x12, 0x4, 0x55, 0x0, 0x5B, 0x5, 0x53, 0x0, 0x12, 0x4, 0x55, 0x0, 0x5B, 0x5, 0x53, 0x0, 0x12, 0x4, 0x55, 0x0, 0x5B, 0x5, 0x53, 0x0, 0x12, 0x4, 0x55, 0x0, 0x5B, 0x5, 0x53, 0x0, 0x12, 0x4, 0x55, 0x0, 0x5B, 0x5, 0x53, 0x0, 0x12, 0x4, 0x55, 0x0, 0x5B, 0x5, 0x53, 0x0, 0x12, 0x4, 0x55, 0x0, 0x5B, 0x5, 0x53, 0x0, 0x12, 0x4, 0x55, 0x0, 0x5B, 0x4, 0x86, 0x0, 0x95, 0x4, 0x4B, 0x0, 0x54, 0x4, 0x86, 0x0, 0x95, 0x4, 0x4B, 0x0, 0x54, 0x4, 0x86, 0x0, 0x95, 0x4, 0x4B, 0x0, 0x54, 0x4, 0x86, 0x0, 0x95, 0x4, 0x4B, 0x0, 0x54, 0x4, 0x86, 0xFF, 0xD4, 0x4, 0x4B, 0xFF, 0x8C, 0x4, 0x86, 0x0, 0x95, 0x4, 0x4B, 0x0, 0x54, 0x4, 0x86, 0x0, 0x95, 0x4, 0x4B, 0x0, 0x54, 0x4, 0x86, 0x0, 0x95, 0x4, 0x4B, 0x0, 0x54, 0x2, 0x42, 0x0, 0xA4, 0x2, 0x1B, 0x0, 0x90, 0x2, 0x42, 0x0, 0x94, 0x2, 0xC, 0x0, 0x79, 0x5, 0x86, 0x0, 0x66, 0x4, 0x8E, 0x0, 0x50, 0x5, 0x86, 0x0, 0x66, 0x4, 0x8E, 0x0, 0x50, 0x5, 0x86, 0x0, 0x66, 0x4, 0x8E, 0x0, 0x50, 0x5, 0x86, 0x0, 0x25, 0x4, 0x8E, 0xFF, 0xA1, 0x5, 0x86, 0x0, 0x66, 0x4, 0x8E, 0x0, 0x50, 0x5, 0x86, 0x0, 0x66, 0x4, 0x8E, 0x0, 0x50, 0x5, 0x86, 0x0, 0x66, 0x4, 0x8E, 0x0, 0x50, 0x5, 0x8A, 0x0, 0x58, 0x4, 0x9F, 0x0, 0x4F, 0x5, 0x8A, 0x0, 0x58, 0x4, 0x9F, 0x0, 0x4F, 0x5, 0x8A, 0x0, 0x58, 0x4, 0x9F, 0x0, 0x4F, 0x5, 0x8A, 0x0, 0x58, 0x4, 0x9F, 0x0, 0x4F, 0x5, 0x8A, 0x0, 0x58, 0x4, 0x9F, 0x0, 0x4F, 0x5, 0x38, 0x0, 0x7E, 0x4, 0x72, 0x0, 0x77, 0x5, 0x38, 0x0, 0x7E, 0x4, 0x72, 0x0, 0x77, 0x5, 0xA5, 0x0, 0x7E, 0x4, 0xF2, 0x0, 0x77, 0x5, 0xA5, 0x0, 0x7E, 0x4, 0xF2, 0x0, 0x77, 0x5, 0xA5, 0x0, 0x7E, 0x4, 0xF2, 0x0, 0x77, 0x5, 0xA5, 0x0, 0x7E, 0x4, 0xF2, 0x0, 0x77, 0x5, 0xA5, 0x0, 0x7E, 0x4, 0xF2, 0x0, 0x77, 0x4, 0xE0, 0x0, 0x8, 0x3, 0xE5, 0x0, 0xC, 0x4, 0xE0, 0x0, 0x8, 0x3, 0xE5, 0x0, 0xC, 0x4, 0xE0, 0x0, 0x8, 0x3, 0xE5, 0x0, 0xC, 0x4, 0xA3, 0x0, 0x50, 0x4, 0xDC, 0x0, 0x2D, 0x3, 0xF6, 0x0, 0x24, 0x5, 0x89, 0x0, 0x8E, 0x4, 0x66, 0x0, 0x5F, 0x4, 0x75, 0x0, 0x9B, 0x3, 0x5B, 0x0, 0x85, 0x6, 0x24, 0x0, 0x17, 0x4, 0xC4, 0xFF, 0xCA, 0x4, 0x71, 0x0, 0x7A, 0x5, 0x7, 0xFF, 0xD0, 0x5, 0x7, 0xFF, 0xD0, 0x4, 0x75, 0xFF, 0xF0, 0x3, 0x5B, 0xFF, 0xE2, 0x5, 0x3C, 0xFF, 0xF7, 0x4, 0x45, 0xFF, 0xC2, 0x4, 0xE0, 0x0, 0x8, 0x4, 0xF, 0x0, 0x21, 0x5, 0x10, 0x0, 0x29, 0x4, 0x7, 0x0, 0x1F, 0x4, 0x61, 0x0, 0x61, 0x4, 0x66, 0x0, 0x2, 0x6, 0x30, 0x0, 0x82, 0x4, 0x8C, 0x0, 0x51, 0x4, 0x8C, 0x0, 0x50, 0x4, 0x8C, 0x0, 0x35, 0x4, 0x8C, 0x0, 0x81, 0x4, 0xA0, 0x0, 0x8A, 0x4, 0xB4, 0x0, 0x7D, 0x4, 0xA0, 0x0, 0x5E, 0x4, 0xB4, 0x0, 0x7D, 0x1, 0xC4, 0x0, 0x73, 0x2, 0xB6, 0x0, 0x90, 0x4, 0x89, 0x0, 0x7F, 0x8, 0xC6, 0x0, 0x95, 0x6, 0x56, 0x0, 0x95, 0x4, 0xD, 0x0, 0x8C, 0xA, 0x20, 0x0, 0x95, 0x7, 0xB0, 0x0, 0x95, 0x6, 0x74, 0x0, 0x7A, 0x5, 0x53, 0x0, 0x12, 0x4, 0x55, 0x0, 0x5B, 0x2, 0x42, 0xFF, 0xC0, 0x2, 0x1B, 0xFF, 0xAB, 0x5, 0x86, 0x0, 0x66, 0x4, 0x8E, 0x0, 0x50, 0x5, 0x38, 0x0, 0x7E, 0x4, 0x72, 0x0, 0x77, 0x5, 0x38, 0x0, 0x7E, 0x4, 0x72, 0x0, 0x77, 0x5, 0x38, 0x0, 0x7E, 0x4, 0x72, 0x0, 0x77, 0x5, 0x38, 0x0, 0x7E, 0x4, 0x72, 0x0, 0x77, 0x5, 0x38, 0x0, 0x7E, 0x4, 0x72, 0x0, 0x77, 0x4, 0x3D, 0x0, 0x5A, 0x5, 0x53, 0x0, 0x12, 0x4, 0x55, 0x0, 0x5B, 0x5, 0x53, 0x0, 0x12, 0x4, 0x55, 0x0, 0x5B, 0x7, 0x85, 0xFF, 0xF6, 0x6, 0xC1, 0x0, 0x48, 0x5, 0x73, 0x0, 0x6A, 0x4, 0x89, 0x0, 0x52, 0x5, 0xB, 0x0, 0x95, 0x4, 0x2D, 0x0, 0x7D, 0x5, 0x86, 0x0, 0x66, 0x4, 0x8E, 0x0, 0x50, 0x5, 0x86, 0x0, 0x66, 0x4, 0x8E, 0x0, 0x50, 0xA, 0xC, 0x0, 0x95, 0x9, 0x41, 0x0, 0x95, 0x8, 0x8C, 0x0, 0x50, 0x5, 0x73, 0x0, 0x6A, 0x4, 0x89, 0x0, 0x52, 0x5, 0xAF, 0x0, 0x95, 0x4, 0x73, 0x0, 0x7A, 0x5, 0x53, 0x0, 0x12, 0x4, 0x55, 0x0, 0xD, 0x5, 0x53, 0x0, 0x12, 0x4, 0x55, 0x0, 0x5B, 0x4, 0x86, 0x0, 0x49, 0x4, 0x4B, 0x0, 0x1, 0x4, 0x86, 0x0, 0x95, 0x4, 0x4B, 0x0, 0x54, 0x2, 0x42, 0xFE, 0xF7, 0x2, 0x1B, 0xFE, 0xE2, 0x2, 0x42, 0xFF, 0xDE, 0x2, 0x1B, 0xFF, 0xC9, 0x5, 0x86, 0x0, 0x66, 0x4, 0x8E, 0x0, 0x16, 0x5, 0x86, 0x0, 0x66, 0x4, 0x8E, 0x0, 0x50, 0x4, 0xFF, 0x0, 0x32, 0x2, 0xD0, 0xFF, 0x6F, 0x4, 0xFF, 0x0, 0x95, 0x2, 0xD0, 0x0, 0x56, 0x5, 0x38, 0x0, 0x71, 0x4, 0x72, 0x0, 0xF, 0x5, 0x38, 0x0, 0x7E, 0x4, 0x72, 0x0, 0x77, 0x5, 0xB0, 0x0, 0x95, 0x4, 0x71, 0x0, 0x7A, 0x5, 0x53, 0x0, 0x12, 0x4, 0x55, 0x0, 0x5B, 0x4, 0x86, 0x0, 0x95, 0x4, 0x4B, 0x0, 0x54, 0x5, 0x86, 0x0, 0x66, 0x4, 0x8E, 0x0, 0x50, 0x5, 0x86, 0x0, 0x66, 0x4, 0x8E, 0x0, 0x50, 0x5, 0x86, 0x0, 0x66, 0x4, 0x8E, 0x0, 0x50, 0x5, 0x86, 0x0, 0x66, 0x4, 0x8E, 0x0, 0x50, 0x4, 0xE0, 0x0, 0x8, 0x3, 0xE5, 0x0, 0xC, 0x4, 0x89, 0x0, 0x4F, 0x4, 0x90, 0x0, 0x8F, 0x4, 0x98, 0x0, 0x86, 0x4, 0x71, 0x0, 0x2D, 0x4, 0xDF, 0xFF, 0xF, 0x4, 0x7B, 0xFF, 0xE1, 0x4, 0x31, 0x0, 0x50, 0x2, 0x1, 0xFF, 0xB4, 0x5, 0x7B, 0x0, 0x5F, 0x4, 0xCB, 0x0, 0x95, 0x4, 0x97, 0x0, 0x83, 0x5, 0x39, 0x0, 0x66, 0x7, 0x1, 0x0, 0x95, 0x5, 0x86, 0x0, 0x60, 0x4, 0x8B, 0x0, 0x50, 0x7, 0xB, 0x0, 0x31, 0x5, 0xF2, 0x0, 0x22, 0x5, 0xD, 0x0, 0x95, 0x4, 0x81, 0x0, 0x7D, 0x5, 0xD, 0x0, 0x95, 0x4, 0x81, 0x0, 0x7D, 0x5, 0xD, 0x0, 0x95, 0x4, 0x81, 0x0, 0x7D, 0x5, 0x39, 0x0, 0x66, 0x4, 0x31, 0x0, 0x50, 0x5, 0x3A, 0x0, 0x95, 0x4, 0x85, 0x0, 0x50, 0x5, 0x3A, 0x0, 0x95, 0x4, 0x85, 0x0, 0x50, 0x5, 0x3A, 0x0, 0x95, 0x4, 0x85, 0x0, 0x50, 0x5, 0x3A, 0x0, 0x95, 0x4, 0x85, 0x0, 0x50, 0x5, 0x3A, 0x0, 0x95, 0x4, 0x85, 0x0, 0x50, 0x4, 0x86, 0x0, 0x95, 0x4, 0x4B, 0x0, 0x54, 0x4, 0x86, 0x0, 0x95, 0x4, 0x4B, 0x0, 0x54, 0x4, 0x86, 0x0, 0x95, 0x4, 0x4B, 0x0, 0x54, 0x4, 0x86, 0x0, 0x95, 0x4, 0x4B, 0x0, 0x54, 0x4, 0x86, 0x0, 0x95, 0x4, 0x4B, 0x0, 0x54, 0x4, 0x66, 0x0, 0x95, 0x2, 0xD6, 0x0, 0x2D, 0x5, 0x73, 0x0, 0x6A, 0x4, 0x89, 0x0, 0x52, 0x5, 0xB0, 0x0, 0x95, 0x4, 0x71, 0x0, 0x7A, 0x5, 0xB0, 0x0, 0x95, 0x4, 0x71, 0x0, 0x7A, 0x5, 0xB0, 0x0, 0x95, 0x4, 0x71, 0x0, 0x7A, 0x5, 0xB0, 0x0, 0x95, 0x4, 0x71, 0x0, 0x7A, 0x5, 0xB, 0x0, 0x95, 0x4, 0x2D, 0x0, 0x7D, 0x5, 0xB, 0x0, 0x95, 0x4, 0x2D, 0x0, 0x7D, 0x5, 0xB, 0x0, 0x95, 0x4, 0x2D, 0x0, 0x7D, 0x4, 0x55, 0x0, 0x95, 0x2, 0xC, 0x0, 0x79, 0x4, 0x55, 0xFF, 0xC1, 0x2, 0xC, 0xFF, 0xB3, 0x4, 0x55, 0x0, 0x95, 0x2, 0xC, 0xFF, 0xB0, 0x4, 0x55, 0x0, 0x95, 0x2, 0xC, 0xFF, 0xAF, 0x7, 0x1, 0x0, 0x95, 0x6, 0xF7, 0x0, 0x7D, 0x7, 0x1, 0x0, 0x95, 0x6, 0xF7, 0x0, 0x7D, 0x5, 0xAF, 0x0, 0x95, 0x4, 0x73, 0x0, 0x7A, 0x5, 0xAF, 0x0, 0x95, 0x4, 0x73, 0x0, 0x7A, 0x5, 0xAF, 0x0, 0x95, 0x4, 0x73, 0x0, 0x7A, 0x5, 0xAF, 0x0, 0x95, 0x4, 0x73, 0x0, 0x7A, 0x5, 0x86, 0x0, 0x66, 0x4, 0x8E, 0x0, 0x50, 0x5, 0x86, 0x0, 0x66, 0x4, 0x8E, 0x0, 0x50, 0x5, 0x86, 0x0, 0x66, 0x4, 0x8E, 0x0, 0x50, 0x5, 0x86, 0x0, 0x66, 0x4, 0x8E, 0x0, 0x50, 0x5, 0x1E, 0x0, 0x95, 0x4, 0x81, 0x0, 0x7D, 0x5, 0x1E, 0x0, 0x95, 0x4, 0x81, 0x0, 0x7D, 0x4, 0xFF, 0x0, 0x95, 0x2, 0xD0, 0x0, 0x7D, 0x4, 0xFF, 0x0, 0x95, 0x2, 0xD0, 0x0, 0x73, 0x4, 0xFF, 0x0, 0x95, 0x2, 0xD0, 0x0, 0x46, 0x4, 0xFF, 0x0, 0x95, 0x2, 0xD0, 0xFF, 0xAA, 0x4, 0xD5, 0x0, 0x4A, 0x4, 0x22, 0x0, 0x4C, 0x4, 0xD5, 0x0, 0x4A, 0x4, 0x22, 0x0, 0x4C, 0x4, 0xD5, 0x0, 0x4A, 0x4, 0x22, 0x0, 0x4C, 0x4, 0xD5, 0x0, 0x4A, 0x4, 0x22, 0x0, 0x4C, 0x4, 0xD5, 0x0, 0x4A, 0x4, 0x22, 0x0, 0x4C, 0x4, 0xDC, 0x0, 0x2D, 0x2, 0xAA, 0x0, 0x8, 0x4, 0xDC, 0x0, 0x2D, 0x2, 0xAA, 0x0, 0x8, 0x4, 0xDC, 0x0, 0x2D, 0x2, 0xAA, 0x0, 0x8, 0x4, 0xDC, 0x0, 0x2D, 0x2, 0xAA, 0x0, 0x8, 0x5, 0x38, 0x0, 0x7E, 0x4, 0x72, 0x0, 0x77, 0x5, 0x38, 0x0, 0x7E, 0x4, 0x72, 0x0, 0x77, 0x5, 0x38, 0x0, 0x7E, 0x4, 0x72, 0x0, 0x77, 0x5, 0x38, 0x0, 0x7E, 0x4, 0x72, 0x0, 0x77, 0x5, 0x38, 0x0, 0x7E, 0x4, 0x72, 0x0, 0x77, 0x5, 0x2E, 0x0, 0x12, 0x3, 0xF6, 0x0, 0x17, 0x5, 0x2E, 0x0, 0x12, 0x3, 0xF6, 0x0, 0x17, 0x7, 0xB, 0x0, 0x31, 0x5, 0xF2, 0x0, 0x22, 0x7, 0xB, 0x0, 0x31, 0x5, 0xF2, 0x0, 0x22, 0x5, 0x10, 0x0, 0x29, 0x4, 0x7, 0x0, 0x1F, 0x5, 0x10, 0x0, 0x29, 0x4, 0x7, 0x0, 0x1F, 0x4, 0xE0, 0x0, 0x8, 0x3, 0xE5, 0x0, 0xC, 0x4, 0xD2, 0x0, 0x50, 0x4, 0x7, 0x0, 0x52, 0x4, 0xD2, 0x0, 0x50, 0x4, 0x7, 0x0, 0x52, 0x4, 0xD2, 0x0, 0x50, 0x4, 0x7, 0x0, 0x52, 0x4, 0x71, 0x0, 0x7A, 0x2, 0xAA, 0xFF, 0xE5, 0x5, 0xF2, 0x0, 0x22, 0x3, 0xE5, 0x0, 0xC, 0x4, 0x55, 0x0, 0x5B, 0x4, 0x85, 0x0, 0x56, 0x4, 0x85, 0x0, 0x56, 0x4, 0x85, 0x0, 0x56, 0x4, 0x85, 0x0, 0x56, 0x4, 0x85, 0x0, 0x56, 0x4, 0x85, 0x0, 0x56, 0x4, 0x85, 0x0, 0x56, 0x4, 0x85, 0x0, 0x56, 0x5, 0x53, 0x0, 0x12, 0x5, 0x53, 0x0, 0x12, 0x5, 0x53, 0xFE, 0xAF, 0x5, 0x53, 0xFE, 0xE5, 0x5, 0x53, 0xFF, 0xA, 0x5, 0x53, 0xFE, 0xF9, 0x5, 0x53, 0xFF, 0x67, 0x5, 0x53, 0xFF, 0x54, 0x4, 0x61, 0x0, 0x61, 0x4, 0x61, 0x0, 0x61, 0x4, 0x61, 0x0, 0x61, 0x4, 0x61, 0x0, 0x61, 0x4, 0x61, 0x0, 0x61, 0x4, 0x61, 0x0, 0x61, 0x4, 0x86, 0xFE, 0x96, 0x4, 0x86, 0xFE, 0x9D, 0x4, 0x86, 0xFD, 0x11, 0x4, 0x86, 0xFD, 0x47, 0x4, 0x86, 0xFD, 0x6C, 0x4, 0x86, 0xFD, 0x5B, 0x4, 0x89, 0x0, 0x7F, 0x4, 0x89, 0x0, 0x7F, 0x4, 0x89, 0x0, 0x7F, 0x4, 0x89, 0x0, 0x7F, 0x4, 0x89, 0x0, 0x7F, 0x4, 0x89, 0x0, 0x7F, 0x4, 0x89, 0x0, 0x7F, 0x4, 0x89, 0x0, 0x7F, 0x5, 0xB0, 0xFE, 0x9F, 0x5, 0xB0, 0xFE, 0xA6, 0x5, 0xB0, 0xFD, 0x1A, 0x5, 0xB0, 0xFD, 0x50, 0x5, 0xB0, 0xFD, 0x75, 0x5, 0xB0, 0xFD, 0x64, 0x5, 0xB0, 0xFD, 0xD2, 0x5, 0xB0, 0xFD, 0xBF, 0x2, 0xAA, 0x0, 0xAA, 0x2, 0xAA, 0x0, 0xA2, 0x2, 0xAA, 0xFF, 0xF5, 0x2, 0xAA, 0xFF, 0xE9, 0x2, 0xAA, 0x0, 0x49, 0x2, 0xAA, 0x0, 0x20, 0x2, 0xAA, 0x0, 0x2D, 0x2, 0xAA, 0x0, 0x6, 0x2, 0x42, 0xFE, 0xA1, 0x2, 0x42, 0xFE, 0xA8, 0x2, 0x42, 0xFD, 0x1C, 0x2, 0x42, 0xFD, 0x52, 0x2, 0x42, 0xFD, 0x77, 0x2, 0x42, 0xFD, 0x66, 0x2, 0x42, 0xFD, 0xD4, 0x2, 0x42, 0xFD, 0xC1, 0x4, 0x8E, 0x0, 0x50, 0x4, 0x8E, 0x0, 0x50, 0x4, 0x8E, 0x0, 0x50, 0x4, 0x8E, 0x0, 0x50, 0x4, 0x8E, 0x0, 0x50, 0x4, 0x8E, 0x0, 0x50, 0x5, 0x9A, 0xFF, 0x6B, 0x5, 0x9A, 0xFF, 0x72, 0x5, 0xCC, 0xFE, 0x18, 0x5, 0xCC, 0xFE, 0x4E, 0x5, 0xCC, 0xFE, 0x73, 0x5, 0xCC, 0xFE, 0x62, 0x4, 0x61, 0x0, 0x80, 0x4, 0x61, 0x0, 0x80, 0x4, 0x61, 0x0, 0x80, 0x4, 0x61, 0x0, 0x80, 0x4, 0x61, 0x0, 0x80, 0x4, 0x61, 0x0, 0x80, 0x4, 0x61, 0x0, 0x80, 0x4, 0x61, 0x0, 0x80, 0x4, 0xE0, 0xFE, 0x97, 0x4, 0xE0, 0xFD, 0x41, 0x4, 0xE0, 0xFD, 0x55, 0x4, 0xE0, 0xFD, 0xB0, 0x6, 0x95, 0x0, 0x66, 0x6, 0x95, 0x0, 0x66, 0x6, 0x95, 0x0, 0x66, 0x6, 0x95, 0x0, 0x66, 0x6, 0x95, 0x0, 0x66, 0x6, 0x95, 0x0, 0x66, 0x6, 0x95, 0x0, 0x66, 0x6, 0x95, 0x0, 0x66, 0x5, 0x70, 0xFF, 0x75, 0x5, 0x70, 0xFF, 0x7C, 0x5, 0xA2, 0xFE, 0x22, 0x5, 0xA2, 0xFE, 0x58, 0x5, 0xA2, 0xFE, 0x7D, 0x5, 0xA2, 0xFE, 0x6C, 0x5, 0xA2, 0xFE, 0xDA, 0x5, 0xA2, 0xFE, 0xC7, 0x4, 0x85, 0x0, 0x56, 0x4, 0x85, 0x0, 0x56, 0x4, 0x61, 0x0, 0x61, 0x4, 0x61, 0x0, 0x61, 0x4, 0x89, 0x0, 0x7F, 0x4, 0x89, 0x0, 0x7F, 0x2, 0xAA, 0x0, 0x3A, 0x2, 0xAA, 0x0, 0xAA, 0x4, 0x8E, 0x0, 0x50, 0x4, 0x8E, 0x0, 0x50, 0x4, 0x61, 0x0, 0x80, 0x4, 0x61, 0x0, 0x80, 0x6, 0x95, 0x0, 0x66, 0x6, 0x95, 0x0, 0x66, 0x4, 0x85, 0x0, 0x56, 0x4, 0x85, 0x0, 0x56, 0x4, 0x85, 0x0, 0x56, 0x4, 0x85, 0x0, 0x56, 0x4, 0x85, 0x0, 0x56, 0x4, 0x85, 0x0, 0x56, 0x4, 0x85, 0x0, 0x56, 0x4, 0x85, 0x0, 0x56, 0x5, 0x53, 0x0, 0x12, 0x5, 0x53, 0x0, 0x12, 0x5, 0x53, 0xFE, 0xAF, 0x5, 0x53, 0xFE, 0xE5, 0x5, 0x53, 0xFF, 0xA, 0x5, 0x53, 0xFE, 0xF9, 0x5, 0x53, 0xFF, 0x67, 0x5, 0x53, 0xFF, 0x54, 0x4, 0x89, 0x0, 0x7F, 0x4, 0x89, 0x0, 0x7F, 0x4, 0x89, 0x0, 0x7F, 0x4, 0x89, 0x0, 0x7F, 0x4, 0x89, 0x0, 0x7F, 0x4, 0x89, 0x0, 0x7F, 0x4, 0x89, 0x0, 0x7F, 0x4, 0x89, 0x0, 0x7F, 0x5, 0xB0, 0xFE, 0x9F, 0x5, 0xB0, 0xFE, 0xA6, 0x5, 0xB0, 0xFD, 0x1A, 0x5, 0xB0, 0xFD, 0x50, 0x5, 0xB0, 0xFD, 0x75, 0x5, 0xB0, 0xFD, 0x64, 0x5, 0xB0, 0xFD, 0xD2, 0x5, 0xB0, 0xFD, 0xBF, 0x6, 0x95, 0x0, 0x66, 0x6, 0x95, 0x0, 0x66, 0x6, 0x95, 0x0, 0x66, 0x6, 0x95, 0x0, 0x66, 0x6, 0x95, 0x0, 0x66, 0x6, 0x95, 0x0, 0x66, 0x6, 0x95, 0x0, 0x66, 0x6, 0x95, 0x0, 0x66, 0x5, 0x70, 0xFF, 0x75, 0x5, 0x70, 0xFF, 0x7C, 0x5, 0xA2, 0xFE, 0x22, 0x5, 0xA2, 0xFE, 0x58, 0x5, 0xA2, 0xFE, 0x7D, 0x5, 0xA2, 0xFE, 0x6C, 0x5, 0xA2, 0xFE, 0xDA, 0x5, 0xA2, 0xFE, 0xC7, 0x4, 0x85, 0x0, 0x56, 0x4, 0x85, 0x0, 0x56, 0x4, 0x85, 0x0, 0x56, 0x4, 0x85, 0x0, 0x56, 0x4, 0x85, 0x0, 0x56, 0x4, 0x85, 0x0, 0x56, 0x4, 0x85, 0x0, 0x56, 0x5, 0x53, 0x0, 0x12, 0x5, 0x53, 0x0, 0x12, 0x5, 0x53, 0xFF, 0xD7, 0x5, 0x53, 0x0, 0x12, 0x5, 0x53, 0x0, 0x12, 0x4, 0x89, 0x0, 0x7F, 0x4, 0x89, 0x0, 0x7F, 0x4, 0x89, 0x0, 0x7F, 0x4, 0x89, 0x0, 0x7F, 0x4, 0x89, 0x0, 0x7F, 0x4, 0x86, 0xFE, 0x39, 0x4, 0x86, 0xFE, 0x82, 0x5, 0xB0, 0xFE, 0x42, 0x5, 0xB0, 0xFE, 0x8B, 0x5, 0xB0, 0x0, 0x95, 0x2, 0xAA, 0xFF, 0xEC, 0x2, 0xAA, 0xFF, 0xDB, 0x2, 0xAA, 0xFF, 0xC2, 0x2, 0xAA, 0xFF, 0xD0, 0x2, 0xAA, 0xFF, 0xED, 0x2, 0xAA, 0xFF, 0xC6, 0x2, 0x42, 0xFF, 0xDF, 0x2, 0x42, 0xFF, 0xCE, 0x2, 0x42, 0x0, 0x2D, 0x2, 0x42, 0x0, 0xA4, 0x4, 0x61, 0x0, 0x80, 0x4, 0x61, 0x0, 0x80, 0x4, 0x61, 0x0, 0x80, 0x4, 0x61, 0x0, 0x80, 0x4, 0x89, 0x0, 0x81, 0x4, 0x89, 0x0, 0x81, 0x4, 0x61, 0x0, 0x80, 0x4, 0x61, 0x0, 0x80, 0x4, 0xE0, 0x0, 0x8, 0x4, 0xE0, 0x0, 0x8, 0x4, 0xE0, 0xFE, 0x33, 0x4, 0xE0, 0xFE, 0x7C, 0x5, 0x1E, 0xFE, 0xD8, 0x6, 0x95, 0x0, 0x66, 0x6, 0x95, 0x0, 0x66, 0x6, 0x95, 0x0, 0x66, 0x6, 0x95, 0x0, 0x66, 0x6, 0x95, 0x0, 0x66, 0x5, 0x9A, 0xFF, 0xE, 0x5, 0x9A, 0xFF, 0x57, 0x5, 0x70, 0xFF, 0x18, 0x5, 0x70, 0xFF, 0x61, 0x5, 0x5C, 0x0, 0x6B, 0x1, 0xFE, 0x0, 0x0, 0x7, 0xCA, 0x0, 0x3C, 0x6, 0xA, 0x0, 0x3C, 0x6, 0xA, 0x0, 0x90, 0x1, 0xFE, 0x0, 0x0, 0x2, 0xCC, 0x0, 0x88, 0x4, 0x9E, 0x0, 0x9, 0x4, 0x1D, 0xFF, 0x66, 0x5, 0x1A, 0xFF, 0x73, 0x2, 0x39, 0xFF, 0x75, 0x4, 0xCA, 0xFF, 0x9E, 0x4, 0x79, 0xFF, 0x24, 0x4, 0xEE, 0xFF, 0xAE, 0x4, 0x9E, 0x0, 0x9, 0x4, 0x61, 0x0, 0x76, 0x3, 0xE1, 0x0, 0x76, 0x4, 0x2A, 0x0, 0x41, 0x4, 0xDE, 0x0, 0x76, 0x1, 0xFD, 0x0, 0x85, 0x4, 0x5C, 0x0, 0x76, 0x6, 0x6, 0x0, 0x76, 0x4, 0xDD, 0x0, 0x76, 0x4, 0xC0, 0x0, 0x50, 0x4, 0x6D, 0x0, 0x76, 0x4, 0x3C, 0x0, 0x25, 0x4, 0x3D, 0x0, 0x5, 0x4, 0x5F, 0x0, 0x16, 0x1, 0xFD, 0xFF, 0x9E, 0x4, 0x3D, 0x0, 0x5, 0x3, 0xE1, 0x0, 0x76, 0x3, 0xBA, 0x0, 0x76, 0x4, 0x35, 0x0, 0x3F, 0x1, 0xFD, 0x0, 0x85, 0x1, 0xFD, 0xFF, 0x9E, 0x3, 0xD6, 0x0, 0x25, 0x4, 0x5C, 0x0, 0x76, 0x4, 0x47, 0x0, 0x20, 0x4, 0x9E, 0x0, 0x9, 0x4, 0x61, 0x0, 0x76, 0x3, 0xBA, 0x0, 0x76, 0x3, 0xE1, 0x0, 0x76, 0x4, 0xE4, 0x0, 0x76, 0x6, 0x6, 0x0, 0x76, 0x4, 0xDE, 0x0, 0x76, 0x4, 0xC0, 0x0, 0x50, 0x4, 0xD8, 0x0, 0x76, 0x4, 0x6D, 0x0, 0x76, 0x4, 0x80, 0x0, 0x50, 0x4, 0x3C, 0x0, 0x25, 0x4, 0x5F, 0x0, 0x16, 0x4, 0x46, 0x0, 0x43, 0x4, 0xDE, 0x0, 0x76, 0x4, 0x80, 0x0, 0x50, 0x4, 0x3D, 0x0, 0x5, 0x5, 0xFE, 0x0, 0xB, 0x4, 0xE4, 0x0, 0x76, 0x4, 0x47, 0x0, 0x20, 0x5, 0x9E, 0x0, 0x51, 0x3, 0xD6, 0x0, 0x25, 0x5, 0xD3, 0x0, 0x85, 0x6, 0x47, 0xFF, 0xF0, 0x4, 0xC0, 0x0, 0x50, 0x4, 0x35, 0x0, 0x3F, 0x6, 0x8, 0x0, 0x29, 0x6, 0x8, 0x0, 0x29, 0x6, 0x8, 0x0, 0x29, 0x4, 0x3D, 0x0, 0x5, 0x5, 0x53, 0x0, 0x12, 0x4, 0x55, 0x0, 0x5B, 0x4, 0x86, 0x0, 0x95, 0x4, 0x4B, 0x0, 0x54, 0x5, 0x86, 0x0, 0x66, 0x4, 0x8E, 0x0, 0x50, 0x4, 0x9E, 0x0, 0x9, 0x3, 0xE1, 0x0, 0x76, 0x4, 0xC0, 0x0, 0x50, 0x5, 0x75, 0x0, 0x66, 0x5, 0x75, 0x0, 0x66, 0x5, 0x75, 0x0, 0x66, 0x5, 0x75, 0x0, 0x66, 0x5, 0x75, 0x0, 0x66, 0x5, 0x75, 0x0, 0x66, 0x5, 0x75, 0x0, 0x66, 0x5, 0x75, 0x0, 0x66, 0x5, 0x75, 0x0, 0x66, 0x5, 0x75, 0x0, 0x66, 0x5, 0x98, 0x0, 0x64, 0x5, 0x98, 0x0, 0x64, 0x5, 0x98, 0x0, 0x64, 0x5, 0x98, 0x0, 0x64, 0x5, 0x98, 0x0, 0x64, 0x5, 0x98, 0x0, 0x64, 0x5, 0x98, 0x0, 0x64, 0x5, 0x98, 0x0, 0x64, 0x5, 0x98, 0x0, 0x64, 0x5, 0xB0, 0x0, 0x95, 0x5, 0xB0, 0x0, 0x95, 0x5, 0xB0, 0x0, 0x95, 0x5, 0xB0, 0x0, 0x95, 0x5, 0xB0, 0x0, 0x95, 0x5, 0xB0, 0x0, 0x95, 0x5, 0xB0, 0x0, 0x95, 0x5, 0xB0, 0x0, 0x95, 0x5, 0xB0, 0x0, 0x95, 0x5, 0xB0, 0x0, 0x95, 0x5, 0xB0, 0x0, 0x95, 0x5, 0xB0, 0x0, 0x95, 0x5, 0xB0, 0x0, 0x95, 0x2, 0x1B, 0xFF, 0x91, 0x0, 0x79, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4, 0x0, 0x0, 0x0, 0x3, 0x0, 0x0, 0x0, 0x24, 0x0, 0x0, 0x0, 0x4, 0x0, 0x0, 0x9, 0x2C, 0x0, 0x3, 0x0, 0x1, 0x0, 0x0, 0x0, 0x24, 0x0, 0x3, 0x0, 0xA, 0x0, 0x0, 0x9, 0x2C, 0x0, 0x4, 0x9, 0x8, 0x0, 0x0, 0x1, 0x4C, 0x1, 0x0, 0x0, 0x7, 0x0, 0x4C, 0x0, 0x0, 0x0, 0x2, 0x0, 0x9, 0x0, 0xD, 0x0, 0x7E, 0x0, 0xA0, 0x0, 0xAC, 0x0, 0xAD, 0x0, 0xBF, 0x0, 0xC6, 0x0, 0xCF, 0x0, 0xE6, 0x0, 0xEF, 0x0, 0xFE, 0x1, 0xF, 0x1, 0x11, 0x1, 0x25, 0x1, 0x27, 0x1, 0x30, 0x1, 0x53, 0x1, 0x5F, 0x1, 0x67, 0x1, 0x7E, 0x1, 0x95, 0x1, 0x9F, 0x1, 0xC6, 0x1, 0xE3, 0x1, 0xFF, 0x2, 0x17, 0x2, 0x25, 0x2, 0x33, 0x2, 0x74, 0x2, 0x75, 0x2, 0x98, 0x2, 0x9C, 0x2, 0xBB, 0x2, 0xBC, 0x3, 0x77, 0x3, 0x7F, 0x3, 0x8A, 0x3, 0x8C, 0x3, 0x92, 0x3, 0xA1, 0x3, 0xB0, 0x3, 0xB9, 0x3, 0xD4, 0x3, 0xE1, 0x4, 0x25, 0x4, 0x2F, 0x4, 0x45, 0x4, 0x4F, 0x4, 0x62, 0x4, 0x6F, 0x4, 0x79, 0x4, 0x8B, 0x4, 0x9F, 0x4, 0xA9, 0x4, 0xB1, 0x4, 0xBA, 0x4, 0xCE, 0x4, 0xD7, 0x4, 0xE9, 0x4, 0xF5, 0x5, 0x1, 0x5, 0x10, 0x5, 0x1D, 0x5, 0x2F, 0x1A, 0xBE, 0x1D, 0xF5, 0x1E, 0x1, 0x1E, 0x27, 0x1E, 0x2F, 0x1E, 0x3D, 0x1E, 0x3F, 0x1E, 0x7F, 0x1E, 0x85, 0x1E, 0x9A, 0x1E, 0x9F, 0x1E, 0xF1, 0x1E, 0xFF, 0x1F, 0x15, 0x1F, 0x1D, 0x1F, 0x45, 0x1F, 0x4D, 0x1F, 0x57, 0x1F, 0x59, 0x1F, 0x5B, 0x1F, 0x5D, 0x1F, 0x7D, 0x1F, 0xB4, 0x1F, 0xBC, 0x1F, 0xC4, 0x1F, 0xCC, 0x1F, 0xD3, 0x1F, 0xDB, 0x1F, 0xDF, 0x1F, 0xEC, 0x1F, 0xEF, 0x1F, 0xF4, 0x1F, 0xFC, 0x1F, 0xFE, 0x20, 0x9, 0x20, 0x14, 0x20, 0x15, 0x20, 0x27, 0x20, 0x3C, 0x20, 0x46, 0x20, 0x49, 0x20, 0x5E, 0x20, 0x5F, 0x20, 0x71, 0x20, 0x8E, 0x20, 0x9C, 0x20, 0xAB, 0x20, 0xBE, 0x20, 0xDC, 0x20, 0xE8, 0x20, 0xF0, 0x21, 0x1, 0x21, 0x3, 0x21, 0x6, 0x21, 0x9, 0x21, 0x13, 0x21, 0x17, 0x21, 0x23, 0x21, 0x26, 0x21, 0x2B, 0x21, 0x2E, 0x21, 0x32, 0x21, 0x3B, 0x21, 0x4D, 0x21, 0x89, 0x22, 0x2, 0x22, 0x6, 0x22, 0xF, 0x22, 0x12, 0x22, 0x1A, 0x22, 0x1E, 0x22, 0x2B, 0x22, 0x48, 0x22, 0x60, 0x22, 0x65, 0x24, 0x23, 0x25, 0xCA, 0x27, 0xEF, 0x2B, 0x4F, 0x2B, 0x5F, 0x2C, 0x7F, 0x2E, 0x42, 0xA6, 0x9D, 0xA6, 0x9F, 0xA7, 0x8E, 0xA7, 0x8F, 0xA7, 0xAD, 0xA7, 0xB1, 0xA7, 0xFF, 0xA9, 0x2E, 0xAB, 0x5F, 0xAB, 0x65, 0xEE, 0x2, 0xF6, 0xC3, 0xFB, 0x6, 0xFE, 0x2D, 0xFE, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x0, 0x9, 0x0, 0xD, 0x0, 0x20, 0x0, 0xA0, 0x0, 0xA1, 0x0, 0xAD, 0x0, 0xAE, 0x0, 0xC0, 0x0, 0xC7, 0x0, 0xD0, 0x0, 0xE7, 0x0, 0xF0, 0x0, 0xFF, 0x1, 0x10, 0x1, 0x12, 0x1, 0x26, 0x1, 0x28, 0x1, 0x31, 0x1, 0x54, 0x1, 0x60, 0x1, 0x68, 0x1, 0x7F, 0x1, 0x96, 0x1, 0xA0, 0x1, 0xC7, 0x1, 0xE4, 0x2, 0x0, 0x2, 0x18, 0x2, 0x26, 0x2, 0x34, 0x2, 0x75, 0x2, 0x76, 0x2, 0x99, 0x2, 0x9D, 0x2, 0xBC, 0x2, 0xBD, 0x3, 0x7A, 0x3, 0x84, 0x3, 0x8C, 0x3, 0x8E, 0x3, 0x93, 0x3, 0xA3, 0x3, 0xB1, 0x3, 0xBA, 0x3, 0xD5, 0x3, 0xF0, 0x4, 0x26, 0x4, 0x30, 0x4, 0x46, 0x4, 0x50, 0x4, 0x63, 0x4, 0x70, 0x4, 0x7A, 0x4, 0x8C, 0x4, 0xA0, 0x4, 0xAA, 0x4, 0xB2, 0x4, 0xBB, 0x4, 0xCF, 0x4, 0xD8, 0x4, 0xEA, 0x4, 0xF6, 0x5, 0x2, 0x5, 0x11, 0x5, 0x1E, 0x1A, 0xB0, 0x1D, 0x0, 0x1D, 0xFC, 0x1E, 0x2, 0x1E, 0x28, 0x1E, 0x30, 0x1E, 0x3E, 0x1E, 0x40, 0x1E, 0x80, 0x1E, 0x86, 0x1E, 0x9B, 0x1E, 0xA0, 0x1E, 0xF2, 0x1F, 0x0, 0x1F, 0x18, 0x1F, 0x20, 0x1F, 0x48, 0x1F, 0x50, 0x1F, 0x59, 0x1F, 0x5B, 0x1F, 0x5D, 0x1F, 0x5F, 0x1F, 0x80, 0x1F, 0xB6, 0x1F, 0xBD, 0x1F, 0xC6, 0x1F, 0xCD, 0x1F, 0xD6, 0x1F, 0xDD, 0x1F, 0xE0, 0x1F, 0xED, 0x1F, 0xF2, 0x1F, 0xF6, 0x1F, 0xFD, 0x20, 0x0, 0x20, 0xA, 0x20, 0x15, 0x20, 0x16, 0x20, 0x2F, 0x20, 0x3D, 0x20, 0x47, 0x20, 0x4A, 0x20, 0x5F, 0x20, 0x70, 0x20, 0x74, 0x20, 0x90, 0x20, 0xA0, 0x20, 0xAC, 0x20, 0xDB, 0x20, 0xE8, 0x20, 0xF0, 0x21, 0x0, 0x21, 0x3, 0x21, 0x5, 0x21, 0x9, 0x21, 0x13, 0x21, 0x16, 0x21, 0x1E, 0x21, 0x25, 0x21, 0x2A, 0x21, 0x2E, 0x21, 0x32, 0x21, 0x3B, 0x21, 0x4D, 0x21, 0x4F, 0x22, 0x2, 0x22, 0x6, 0x22, 0xF, 0x22, 0x11, 0x22, 0x1A, 0x22, 0x1E, 0x22, 0x2B, 0x22, 0x48, 0x22, 0x60, 0x22, 0x64, 0x24, 0x23, 0x25, 0xCA, 0x27, 0xE6, 0x2B, 0x4E, 0x2B, 0x5A, 0x2C, 0x60, 0x2D, 0xE0, 0xA6, 0x40, 0xA6, 0x9F, 0xA7, 0x0, 0xA7, 0x8F, 0xA7, 0x90, 0xA7, 0xB0, 0xA7, 0xF7, 0xA9, 0x2E, 0xAB, 0x30, 0xAB, 0x64, 0xEE, 0x1, 0xF6, 0xC3, 0xFB, 0x0, 0xFE, 0x20, 0xFE, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, 0x0, 0x1, 0x0, 0x0, 0xFF, 0xFA, 0xFF, 0xF7, 0xFF, 0xE5, 0x8, 0x26, 0xFF, 0xC3, 0x8, 0x1A, 0xFF, 0xC2, 0x0, 0x0, 0x8, 0xD, 0x0, 0x0, 0x8, 0x8, 0x0, 0x0, 0x8, 0x4, 0x0, 0x0, 0x8, 0x2, 0x0, 0x0, 0x8, 0x0, 0x0, 0x0, 0x7, 0xF8, 0x0, 0x0, 0x7, 0xFA, 0xFF, 0x17, 0x0, 0x0, 0xFF, 0x14, 0x9, 0x21, 0x0, 0x0, 0x9, 0x14, 0x0, 0x0, 0x9, 0x8, 0xFE, 0xB5, 0x8, 0xC7, 0xFE, 0xB4, 0x0, 0x0, 0xFE, 0xB2, 0x7, 0x72, 0xFE, 0xB1, 0x0, 0x0, 0x0, 0x0, 0x6, 0x4D, 0x6, 0x4C, 0x0, 0x0, 0x0, 0x0, 0xFE, 0x89, 0x0, 0x0, 0xFE, 0x7D, 0x0, 0x0, 0xFE, 0x50, 0x0, 0x0, 0xFE, 0x48, 0x0, 0x0, 0xFE, 0x3D, 0x0, 0x0, 0xFE, 0x37, 0x0, 0x0, 0xFE, 0x30, 0x0, 0x0, 0xFE, 0x28, 0x0, 0x0, 0x5, 0x77, 0x0, 0x0, 0x5, 0x75, 0x0, 0x0, 0xFD, 0xF5, 0x0, 0x0, 0xFD, 0xF0, 0xE8, 0x70, 0xE6, 0x2F, 0x0, 0x0, 0xED, 0x4B, 0x0, 0x0, 0xED, 0x45, 0xEB, 0xF1, 0xED, 0x43, 0xEB, 0xA2, 0xED, 0x3D, 0xE5, 0x94, 0xEB, 0xCE, 0x0, 0x0, 0xEC, 0xD8, 0xEC, 0xD6, 0xEC, 0xD4, 0xEC, 0xD2, 0xEC, 0xD0, 0xEC, 0xCF, 0xEC, 0xCE, 0xEC, 0xCD, 0xEC, 0xCC, 0xEC, 0xCA, 0xEC, 0xC9, 0x0, 0x0, 0xEC, 0xC3, 0x0, 0x0, 0xEC, 0xBE, 0xE4, 0x65, 0xEC, 0xBA, 0xE4, 0x58, 0xEC, 0xB5, 0xEC, 0xB4, 0xE4, 0x4B, 0xE4, 0x4A, 0xE4, 0x4B, 0xEA, 0xC7, 0xE4, 0x4A, 0x0, 0x0, 0xE4, 0x3F, 0xEC, 0x6B, 0xE4, 0x3C, 0xEC, 0x56, 0xE4, 0x2B, 0xE4, 0x29, 0xE4, 0x28, 0x0, 0x0, 0xE4, 0x23, 0xE4, 0x7, 0xE3, 0xFC, 0xE3, 0xF5, 0xE3, 0xE6, 0xE3, 0xE5, 0xE3, 0xE4, 0xE3, 0xE2, 0xE3, 0xD9, 0xE3, 0xD7, 0xE3, 0xD1, 0x0, 0x0, 0xE3, 0xCC, 0xE3, 0xCA, 0xE3, 0xC7, 0xE3, 0xBF, 0xE3, 0xAE, 0xE3, 0xAD, 0xE3, 0x35, 0xE0, 0x2B, 0xE3, 0x29, 0xE3, 0x28, 0xE3, 0x21, 0xE3, 0x1E, 0xE3, 0x12, 0xE2, 0xF6, 0xE2, 0xDF, 0xE2, 0xDC, 0xE1, 0x1F, 0xDF, 0x79, 0xDD, 0x5E, 0xDA, 0x0, 0xD9, 0xF6, 0xD8, 0xF6, 0xD7, 0x96, 0x5F, 0x99, 0x5F, 0x98, 0x5F, 0x38, 0x65, 0x27, 0x5F, 0x37, 0x5F, 0x35, 0x5E, 0xF0, 0x5D, 0xC2, 0x5B, 0xC1, 0x5B, 0xBD, 0x19, 0x22, 0x10, 0x62, 0xC, 0x26, 0x9, 0xD, 0x8, 0x3C, 0x7, 0x40, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x3A, 0x0, 0x0, 0x1, 0x44, 0x0, 0x0, 0x1, 0x6E, 0x0, 0x0, 0x1, 0x88, 0x0, 0x0, 0x1, 0x88, 0x0, 0x0, 0x1, 0x88, 0x0, 0x0, 0x1, 0xCA, 0x0, 0x0, 0x0, 0x0, 0x1, 0xD4, 0x0, 0x0, 0x0, 0x0, 0x1, 0xE2, 0x0, 0x0, 0x2, 0x16, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x28, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x28, 0x2, 0x32, 0x0, 0x0, 0x0, 0x0, 0x2, 0x3A, 0x2, 0x56, 0x0, 0x0, 0x2, 0x6E, 0x0, 0x0, 0x2, 0xA0, 0x0, 0x0, 0x3, 0x8, 0x0, 0x0, 0x3, 0x30, 0x0, 0x0, 0x3, 0x52, 0x0, 0x0, 0x3, 0x62, 0x0, 0x0, 0x3, 0x86, 0x0, 0x0, 0x3, 0x92, 0x0, 0x0, 0x3, 0xB6, 0x0, 0x0, 0x3, 0xD6, 0x0, 0x0, 0x3, 0xEA, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3, 0xFC, 0x0, 0x0, 0x4, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4, 0x8, 0x0, 0x0, 0x4, 0x14, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4, 0xA, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4, 0x16, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4, 0x16, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8, 0xCD, 0x8, 0xCE, 0x8, 0xCF, 0x8, 0xD0, 0x8, 0xD1, 0x8, 0xD2, 0x0, 0x82, 0x8, 0xC9, 0x8, 0xDD, 0x8, 0xDE, 0x8, 0xDF, 0x8, 0xE0, 0x8, 0xE1, 0x8, 0xE2, 0x0, 0x83, 0x0, 0x84, 0x8, 0xE3, 0x8, 0xE4, 0x8, 0xE5, 0x8, 0xE6, 0x8, 0xE7, 0x0, 0x85, 0x0, 0x86, 0x8, 0xE8, 0x8, 0xE9, 0x8, 0xEA, 0x8, 0xEB, 0x8, 0xEC, 0x8, 0xED, 0x0, 0x87, 0x0, 0x88, 0x8, 0xF8, 0x8, 0xF9, 0x8, 0xFA, 0x8, 0xFB, 0x8, 0xFC, 0x8, 0xFD, 0x0, 0x89, 0x0, 0x8A, 0x8, 0xFE, 0x8, 0xFF, 0x9, 0x0, 0x9, 0x1, 0x9, 0x2, 0x0, 0x8B, 0x8, 0xC8, 0x0, 0x8C, 0x0, 0x8D, 0x8, 0xCA, 0x0, 0x8E, 0x9, 0x31, 0x9, 0x32, 0x9, 0x33, 0x9, 0x34, 0x9, 0x35, 0x9, 0x36, 0x0, 0x8F, 0x9, 0x37, 0x9, 0x38, 0x9, 0x39, 0x9, 0x3A, 0x9, 0x3B, 0x9, 0x3C, 0x9, 0x3D, 0x9, 0x3E, 0x0, 0x90, 0x0, 0x91, 0x9, 0x3F, 0x9, 0x40, 0x9, 0x41, 0x9, 0x42, 0x9, 0x43, 0x9, 0x44, 0x9, 0x45, 0x0, 0x92, 0x0, 0x93, 0x9, 0x46, 0x9, 0x47, 0x9, 0x48, 0x9, 0x49, 0x9, 0x4A, 0x9, 0x4B, 0x0, 0x94, 0x0, 0x95, 0x9, 0x5A, 0x9, 0x5B, 0x9, 0x5E, 0x9, 0x5F, 0x9, 0x60, 0x9, 0x61, 0x8, 0xCB, 0x8, 0xCC, 0xA, 0xE6, 0x0, 0xAD, 0x0, 0xAE, 0x0, 0xAF, 0x0, 0xB0, 0x0, 0xB1, 0x0, 0xB2, 0x0, 0xB3, 0xA, 0xE7, 0xA, 0x5E, 0x0, 0xDB, 0x0, 0xDC, 0xB, 0x5, 0xB, 0x6, 0xB, 0x7, 0xB, 0x8, 0xB, 0x9, 0xB, 0xA, 0xB, 0xB, 0xB, 0xC, 0x0, 0xDD, 0x0, 0xDE, 0xA, 0x2D, 0xB, 0xD, 0xB, 0xE, 0xB, 0xF, 0xB, 0x10, 0xB, 0x11, 0x0, 0xDF, 0x0, 0xE0, 0xB, 0x12, 0xB, 0x13, 0x8, 0xD3, 0x8, 0xEE, 0x9, 0x79, 0x9, 0x7A, 0x9, 0x7B, 0x9, 0x7C, 0x9, 0x58, 0x9, 0x59, 0x9, 0x5C, 0x9, 0x5D, 0x0, 0xE1, 0x0, 0xE2, 0xB, 0x2C, 0xB, 0x2D, 0x0, 0xE3, 0x0, 0xE4, 0x0, 0xE5, 0x0, 0xE6, 0x0, 0xE7, 0x0, 0xE8, 0xB, 0x3D, 0x1, 0x4D, 0x1, 0x4E, 0xB, 0x3E, 0xA, 0xE5, 0x2, 0x29, 0x2, 0x2A, 0x2, 0x2B, 0x2, 0x2C, 0xB, 0x3F, 0x2, 0x2D, 0x2, 0x2E, 0x9, 0xD5, 0x2, 0x2F, 0x9, 0xD6, 0x9, 0xD7, 0x9, 0xD8, 0x2, 0x30, 0x2, 0x31, 0x9, 0xDF, 0x9, 0xE0, 0x9, 0xE1, 0x2, 0x32, 0x9, 0xE2, 0x9, 0xE3, 0x2, 0x33, 0x9, 0xE4, 0x9, 0xE5, 0x2, 0x34, 0x9, 0xE6, 0x2, 0x35, 0x9, 0xE7, 0x2, 0x36, 0x9, 0xE8, 0x9, 0xE9, 0x2, 0x37, 0x9, 0xEA, 0x2, 0x38, 0x2, 0x39, 0x9, 0xEB, 0x9, 0xEC, 0x9, 0xED, 0x9, 0xEE, 0x9, 0xEF, 0x9, 0xF0, 0x9, 0xF1, 0x9, 0xF2, 0x2, 0x43, 0x9, 0xF4, 0x9, 0xF5, 0x2, 0x44, 0x9, 0xF3, 0x2, 0x45, 0x2, 0x46, 0x2, 0x47, 0x2, 0x48, 0x2, 0x49, 0x2, 0x4A, 0x2, 0x4B, 0x9, 0xF6, 0x2, 0x4C, 0x2, 0x4D, 0x9, 0xF7, 0x9, 0xF8, 0x9, 0xF9, 0x9, 0xFA, 0x9, 0xFB, 0x2, 0x4E, 0x2, 0x4F, 0x2, 0x50, 0x2, 0x51, 0xB, 0x40, 0xB, 0x41, 0x2, 0x5F, 0x2, 0x60, 0xB, 0x42, 0xB, 0x43, 0xB, 0x44, 0x2, 0x61, 0x2, 0x62, 0xB, 0x45, 0xB, 0x46, 0xB, 0x47, 0xB, 0x48, 0x2, 0x63, 0x2, 0x64, 0x2, 0x65, 0x2, 0x66, 0x2, 0x67, 0xA, 0x33, 0x9, 0xFC, 0x2, 0x68, 0x9, 0xFD, 0x2, 0x69, 0x9, 0xFE, 0x9, 0xFF, 0xA, 0x0, 0xA, 0x1, 0x2, 0x6A, 0x2, 0x6B, 0x2, 0x6C, 0xA, 0x3, 0xA, 0x34, 0xA, 0x4, 0x2, 0x6D, 0xA, 0x5, 0x2, 0x6E, 0xA, 0x6, 0xA, 0x7, 0x2, 0x6F, 0xA, 0x8, 0x2, 0x70, 0x2, 0x71, 0x2, 0x72, 0xA, 0x9, 0xA, 0x2, 0x2, 0x73, 0xA, 0xA, 0xA, 0xB, 0xA, 0xC, 0xA, 0xD, 0xA, 0xE, 0xA, 0xF, 0xA, 0x10, 0x2, 0x74, 0x2, 0x75, 0xA, 0x11, 0xA, 0x12, 0x2, 0x80, 0x2, 0x81, 0x2, 0x82, 0x2, 0x83, 0xA, 0x13, 0x2, 0x84, 0x2, 0x85, 0x2, 0x86, 0xA, 0x14, 0x2, 0x87, 0x2, 0x88, 0x2, 0x89, 0x2, 0x8A, 0xA, 0x15, 0x2, 0x8B, 0xA, 0x16, 0xA, 0x17, 0x2, 0x8C, 0xA, 0x18, 0x2, 0x8D, 0xA, 0x19, 0xA, 0x35, 0xA, 0x1A, 0x2, 0x98, 0xA, 0x1B, 0x2, 0x99, 0xA, 0x1C, 0xA, 0x1D, 0xA, 0x1E, 0xA, 0x1F, 0x2, 0x9A, 0x2, 0x9B, 0x2, 0x9C, 0xA, 0x20, 0xA, 0x36, 0xA, 0x21, 0x2, 0x9D, 0x2, 0x9E, 0x2, 0x9F, 0xA, 0xD1, 0xA, 0x37, 0xA, 0x38, 0x2, 0xAD, 0x2, 0xAE, 0x2, 0xAF, 0x2, 0xB0, 0xA, 0x39, 0xA, 0x3A, 0xA, 0x3C, 0xA, 0x3B, 0xA, 0xD0, 0x2, 0xC3, 0x2, 0xC4, 0x2, 0xC5, 0x2, 0xC6, 0x2, 0xC7, 0xA, 0xD2, 0xA, 0xD3, 0x2, 0xC8, 0x2, 0xC9, 0x2, 0xCA, 0x2, 0xCB, 0xA, 0x3D, 0xA, 0x3E, 0x2, 0xCC, 0x2, 0xCD, 0x2, 0xCE, 0x2, 0xCF, 0xA, 0xD4, 0xA, 0xD5, 0xA, 0x3F, 0xA, 0x40, 0xA, 0xC7, 0xA, 0xC8, 0xA, 0x41, 0xA, 0x42, 0xA, 0xD6, 0xA, 0xD7, 0xA, 0xCF, 0x2, 0xE3, 0x2, 0xE4, 0xA, 0xCD, 0xA, 0xCE, 0xA, 0x43, 0xA, 0x44, 0xA, 0x45, 0x2, 0xE5, 0x2, 0xE6, 0x2, 0xE7, 0x2, 0xE8, 0x2, 0xE9, 0x2, 0xEA, 0x2, 0xEB, 0x2, 0xEC, 0xA, 0xC9, 0xA, 0xCA, 0x2, 0xED, 0x2, 0xEE, 0x2, 0xEF, 0xA, 0x50, 0xA, 0x4F, 0xA, 0x51, 0xA, 0x52, 0xA, 0x53, 0xA, 0x54, 0xA, 0x55, 0x2, 0xF0, 0x2, 0xF1, 0xA, 0x56, 0xA, 0x57, 0xA, 0x58, 0xA, 0x59, 0xA, 0x5A, 0xA, 0x5B, 0xA, 0x5C, 0xA, 0x5D, 0xA, 0xCB, 0xA, 0xCC, 0xA, 0x6B, 0xA, 0x6C, 0x2, 0xF2, 0x2, 0xF3, 0x2, 0xF4, 0x2, 0xF5, 0xA, 0xD8, 0xA, 0xD9, 0x2, 0xF6, 0xA, 0x6D, 0xA, 0xDA, 0x3, 0x6, 0x3, 0x7, 0x3, 0x8, 0x3, 0x9, 0x3, 0xA, 0x3, 0xB, 0x3, 0xC, 0x3, 0xD, 0xB, 0x49, 0xB, 0x4A, 0xB, 0x4B, 0xB, 0x4C, 0x4, 0x25, 0x4, 0x26, 0x4, 0x27, 0x4, 0x28, 0xA, 0x31, 0xA, 0x32, 0x4, 0x29, 0x4, 0x2A, 0xB, 0x73, 0xB, 0x74, 0x4, 0x2B, 0x4, 0x2C, 0x4, 0x2D, 0x4, 0x2E, 0xA, 0x28, 0xA, 0x29, 0xA, 0xC0, 0xA, 0xC1, 0xA, 0xC2, 0xA, 0xC3, 0xA, 0xC4, 0xA, 0xC5, 0x4, 0x34, 0x4, 0x35, 0x4, 0x36, 0x4, 0x37, 0x4, 0x38, 0x4, 0x39, 0x4, 0x3A, 0x4, 0x3B, 0x4, 0x3C, 0x4, 0x3D, 0x4, 0x3E, 0xC, 0x86, 0xC, 0x87, 0xC, 0x88, 0x4, 0x3F, 0x4, 0x40, 0x4, 0x41, 0xC, 0x90, 0xC, 0x91, 0xC, 0x92, 0xC, 0x93, 0xC, 0xB1, 0x4, 0x72, 0x4, 0x73, 0xA, 0x2A, 0xA, 0x2B, 0x4, 0x74, 0x4, 0x75, 0x4, 0x76, 0x4, 0x77, 0x4, 0x78, 0x4, 0x79, 0x4, 0x7A, 0x4, 0x7B, 0xA, 0x2C, 0x4, 0xC5, 0x4, 0xC6, 0x4, 0xC7, 0xA, 0xDB, 0x4, 0xC8, 0x4, 0xC9, 0x4, 0xCA, 0x4, 0xCB, 0x4, 0xCC, 0x4, 0xCD, 0x4, 0xCE, 0xA, 0xC6, 0x4, 0xF5, 0x2, 0x39, 0x0, 0xC, 0x0, 0x0, 0x0, 0x0, 0xF, 0xA0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x4C, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x2, 0x0, 0x0, 0x0, 0x2, 0x0, 0x0, 0x0, 0x2, 0x0, 0x0, 0x0, 0x9, 0x0, 0x0, 0x0, 0x9, 0x0, 0x0, 0x0, 0x3, 0x0, 0x0, 0x0, 0xD, 0x0, 0x0, 0x0, 0xD, 0x0, 0x0, 0x0, 0x4, 0x0, 0x0, 0x0, 0x20, 0x0, 0x0, 0x0, 0x7E, 0x0, 0x0, 0x0, 0x5, 0x0, 0x0, 0x0, 0xA0, 0x0, 0x0, 0x0, 0xA0, 0x0, 0x0, 0x8, 0xC6, 0x0, 0x0, 0x0, 0xA1, 0x0, 0x0, 0x0, 0xAC, 0x0, 0x0, 0x0, 0x64, 0x0, 0x0, 0x0, 0xAD, 0x0, 0x0, 0x0, 0xAD, 0x0, 0x0, 0x8, 0xC7, 0x0, 0x0, 0x0, 0xAE, 0x0, 0x0, 0x0, 0xBF, 0x0, 0x0, 0x0, 0x70, 0x0, 0x0, 0x0, 0xC0, 0x0, 0x0, 0x0, 0xC5, 0x0, 0x0, 0x8, 0xCD, 0x0, 0x0, 0x0, 0xC6, 0x0, 0x0, 0x0, 0xC6, 0x0, 0x0, 0x0, 0x82, 0x0, 0x0, 0x0, 0xC7, 0x0, 0x0, 0x0, 0xCF, 0x0, 0x0, 0x8, 0xD4, 0x0, 0x0, 0x0, 0xD0, 0x0, 0x0, 0x0, 0xD0, 0x0, 0x0, 0x8, 0xC9, 0x0, 0x0, 0x0, 0xD1, 0x0, 0x0, 0x0, 0xD6, 0x0, 0x0, 0x8, 0xDD, 0x0, 0x0, 0x0, 0xD7, 0x0, 0x0, 0x0, 0xD8, 0x0, 0x0, 0x0, 0x83, 0x0, 0x0, 0x0, 0xD9, 0x0, 0x0, 0x0, 0xDD, 0x0, 0x0, 0x8, 0xE3, 0x0, 0x0, 0x0, 0xDE, 0x0, 0x0, 0x0, 0xDF, 0x0, 0x0, 0x0, 0x85, 0x0, 0x0, 0x0, 0xE0, 0x0, 0x0, 0x0, 0xE5, 0x0, 0x0, 0x8, 0xE8, 0x0, 0x0, 0x0, 0xE6, 0x0, 0x0, 0x0, 0xE6, 0x0, 0x0, 0x0, 0x87, 0x0, 0x0, 0x0, 0xE7, 0x0, 0x0, 0x0, 0xEF, 0x0, 0x0, 0x8, 0xEF, 0x0, 0x0, 0x0, 0xF0, 0x0, 0x0, 0x0, 0xF0, 0x0, 0x0, 0x0, 0x88, 0x0, 0x0, 0x0, 0xF1, 0x0, 0x0, 0x0, 0xF6, 0x0, 0x0, 0x8, 0xF8, 0x0, 0x0, 0x0, 0xF7, 0x0, 0x0, 0x0, 0xF8, 0x0, 0x0, 0x0, 0x89, 0x0, 0x0, 0x0, 0xF9, 0x0, 0x0, 0x0, 0xFD, 0x0, 0x0, 0x8, 0xFE, 0x0, 0x0, 0x0, 0xFE, 0x0, 0x0, 0x0, 0xFE, 0x0, 0x0, 0x0, 0x8B, 0x0, 0x0, 0x0, 0xFF, 0x0, 0x0, 0x1, 0xF, 0x0, 0x0, 0x9, 0x3, 0x0, 0x0, 0x1, 0x10, 0x0, 0x0, 0x1, 0x10, 0x0, 0x0, 0x8, 0xC8, 0x0, 0x0, 0x1, 0x11, 0x0, 0x0, 0x1, 0x11, 0x0, 0x0, 0x0, 0x8C, 0x0, 0x0, 0x1, 0x12, 0x0, 0x0, 0x1, 0x25, 0x0, 0x0, 0x9, 0x14, 0x0, 0x0, 0x1, 0x26, 0x0, 0x0, 0x1, 0x26, 0x0, 0x0, 0x0, 0x8D, 0x0, 0x0, 0x1, 0x27, 0x0, 0x0, 0x1, 0x27, 0x0, 0x0, 0x8, 0xCA, 0x0, 0x0, 0x1, 0x28, 0x0, 0x0, 0x1, 0x30, 0x0, 0x0, 0x9, 0x28, 0x0, 0x0, 0x1, 0x31, 0x0, 0x0, 0x1, 0x31, 0x0, 0x0, 0x0, 0x8E, 0x0, 0x0, 0x1, 0x32, 0x0, 0x0, 0x1, 0x37, 0x0, 0x0, 0x9, 0x31, 0x0, 0x0, 0x1, 0x38, 0x0, 0x0, 0x1, 0x38, 0x0, 0x0, 0x0, 0x8F, 0x0, 0x0, 0x1, 0x39, 0x0, 0x0, 0x1, 0x40, 0x0, 0x0, 0x9, 0x37, 0x0, 0x0, 0x1, 0x41, 0x0, 0x0, 0x1, 0x42, 0x0, 0x0, 0x0, 0x90, 0x0, 0x0, 0x1, 0x43, 0x0, 0x0, 0x1, 0x49, 0x0, 0x0, 0x9, 0x3F, 0x0, 0x0, 0x1, 0x4A, 0x0, 0x0, 0x1, 0x4B, 0x0, 0x0, 0x0, 0x92, 0x0, 0x0, 0x1, 0x4C, 0x0, 0x0, 0x1, 0x51, 0x0, 0x0, 0x9, 0x46, 0x0, 0x0, 0x1, 0x52, 0x0, 0x0, 0x1, 0x53, 0x0, 0x0, 0x0, 0x94, 0x0, 0x0, 0x1, 0x54, 0x0, 0x0, 0x1, 0x5F, 0x0, 0x0, 0x9, 0x4C, 0x0, 0x0, 0x1, 0x60, 0x0, 0x0, 0x1, 0x61, 0x0, 0x0, 0x9, 0x5A, 0x0, 0x0, 0x1, 0x62, 0x0, 0x0, 0x1, 0x65, 0x0, 0x0, 0x9, 0x5E, 0x0, 0x0, 0x1, 0x66, 0x0, 0x0, 0x1, 0x67, 0x0, 0x0, 0x8, 0xCB, 0x0, 0x0, 0x1, 0x68, 0x0, 0x0, 0x1, 0x7E, 0x0, 0x0, 0x9, 0x62, 0x0, 0x0, 0x1, 0x7F, 0x0, 0x0, 0x1, 0x95, 0x0, 0x0, 0x0, 0x96, 0x0, 0x0, 0x1, 0x96, 0x0, 0x0, 0x1, 0x96, 0x0, 0x0, 0xA, 0xE6, 0x0, 0x0, 0x1, 0x97, 0x0, 0x0, 0x1, 0x9D, 0x0, 0x0, 0x0, 0xAD, 0x0, 0x0, 0x1, 0x9E, 0x0, 0x0, 0x1, 0x9E, 0x0, 0x0, 0xA, 0xE7, 0x0, 0x0, 0x1, 0x9F, 0x0, 0x0, 0x1, 0x9F, 0x0, 0x0, 0xA, 0x5E, 0x0, 0x0, 0x1, 0xA0, 0x0, 0x0, 0x1, 0xC6, 0x0, 0x0, 0x0, 0xB4, 0x0, 0x0, 0x1, 0xC7, 0x0, 0x0, 0x1, 0xE3, 0x0, 0x0, 0xA, 0xE8, 0x0, 0x0, 0x1, 0xE4, 0x0, 0x0, 0x1, 0xE5, 0x0, 0x0, 0x0, 0xDB, 0x0, 0x0, 0x1, 0xE6, 0x0, 0x0, 0x1, 0xED, 0x0, 0x0, 0xB, 0x5, 0x0, 0x0, 0x1, 0xEE, 0x0, 0x0, 0x1, 0xEF, 0x0, 0x0, 0x0, 0xDD, 0x0, 0x0, 0x1, 0xF0, 0x0, 0x0, 0x1, 0xF0, 0x0, 0x0, 0xA, 0x2D, 0x0, 0x0, 0x1, 0xF1, 0x0, 0x0, 0x1, 0xF5, 0x0, 0x0, 0xB, 0xD, 0x0, 0x0, 0x1, 0xF6, 0x0, 0x0, 0x1, 0xF7, 0x0, 0x0, 0x0, 0xDF, 0x0, 0x0, 0x1, 0xF8, 0x0, 0x0, 0x1, 0xF9, 0x0, 0x0, 0xB, 0x12, 0x0, 0x0, 0x1, 0xFA, 0x0, 0x0, 0x1, 0xFA, 0x0, 0x0, 0x8, 0xD3, 0x0, 0x0, 0x1, 0xFB, 0x0, 0x0, 0x1, 0xFB, 0x0, 0x0, 0x8, 0xEE, 0x0, 0x0, 0x1, 0xFC, 0x0, 0x0, 0x1, 0xFF, 0x0, 0x0, 0x9, 0x79, 0x0, 0x0, 0x2, 0x0, 0x0, 0x0, 0x2, 0x17, 0x0, 0x0, 0xB, 0x14, 0x0, 0x0, 0x2, 0x18, 0x0, 0x0, 0x2, 0x19, 0x0, 0x0, 0x9, 0x58, 0x0, 0x0, 0x2, 0x1A, 0x0, 0x0, 0x2, 0x1B, 0x0, 0x0, 0x9, 0x5C, 0x0, 0x0, 0x2, 0x1C, 0x0, 0x0, 0x2, 0x1D, 0x0, 0x0, 0x0, 0xE1, 0x0, 0x0, 0x2, 0x1E, 0x0, 0x0, 0x2, 0x1F, 0x0, 0x0, 0xB, 0x2C, 0x0, 0x0, 0x2, 0x20, 0x0, 0x0, 0x2, 0x25, 0x0, 0x0, 0x0, 0xE3, 0x0, 0x0, 0x2, 0x26, 0x0, 0x0, 0x2, 0x33, 0x0, 0x0, 0xB, 0x2E, 0x0, 0x0, 0x2, 0x34, 0x0, 0x0, 0x2, 0x74, 0x0, 0x0, 0x0, 0xE9, 0x0, 0x0, 0x2, 0x75, 0x0, 0x0, 0x2, 0x75, 0x0, 0x0, 0xB, 0x3C, 0x0, 0x0, 0x2, 0x76, 0x0, 0x0, 0x2, 0x98, 0x0, 0x0, 0x1, 0x2A, 0x0, 0x0, 0x2, 0x99, 0x0, 0x0, 0x2, 0x99, 0x0, 0x0, 0xB, 0x3D, 0x0, 0x0, 0x2, 0x9A, 0x0, 0x0, 0x2, 0x9B, 0x0, 0x0, 0x1, 0x4D, 0x0, 0x0, 0x2, 0x9C, 0x0, 0x0, 0x2, 0x9C, 0x0, 0x0, 0xB, 0x3E, 0x0, 0x0, 0x2, 0x9D, 0x0, 0x0, 0x2, 0xBB, 0x0, 0x0, 0x1, 0x4F, 0x0, 0x0, 0x2, 0xBC, 0x0, 0x0, 0x2, 0xBC, 0x0, 0x0, 0xA, 0x2E, 0x0, 0x0, 0x2, 0xBD, 0x0, 0x0, 0x3, 0x77, 0x0, 0x0, 0x1, 0x6E, 0x0, 0x0, 0x3, 0x7A, 0x0, 0x0, 0x3, 0x7A, 0x0, 0x0, 0xA, 0xE5, 0x0, 0x0, 0x3, 0x7B, 0x0, 0x0, 0x3, 0x7E, 0x0, 0x0, 0x2, 0x29, 0x0, 0x0, 0x3, 0x7F, 0x0, 0x0, 0x3, 0x7F, 0x0, 0x0, 0xB, 0x3F, 0x0, 0x0, 0x3, 0x84, 0x0, 0x0, 0x3, 0x85, 0x0, 0x0, 0x2, 0x2D, 0x0, 0x0, 0x3, 0x86, 0x0, 0x0, 0x3, 0x86, 0x0, 0x0, 0x9, 0xD5, 0x0, 0x0, 0x3, 0x87, 0x0, 0x0, 0x3, 0x87, 0x0, 0x0, 0x2, 0x2F, 0x0, 0x0, 0x3, 0x88, 0x0, 0x0, 0x3, 0x8A, 0x0, 0x0, 0x9, 0xD6, 0x0, 0x0, 0x3, 0x8C, 0x0, 0x0, 0x3, 0x8C, 0x0, 0x0, 0x9, 0xD9, 0x0, 0x0, 0x3, 0x8E, 0x0, 0x0, 0x3, 0x92, 0x0, 0x0, 0x9, 0xDA, 0x0, 0x0, 0x3, 0x93, 0x0, 0x0, 0x3, 0x94, 0x0, 0x0, 0x2, 0x30, 0x0, 0x0, 0x3, 0x95, 0x0, 0x0, 0x3, 0x97, 0x0, 0x0, 0x9, 0xDF, 0x0, 0x0, 0x3, 0x98, 0x0, 0x0, 0x3, 0x98, 0x0, 0x0, 0x2, 0x32, 0x0, 0x0, 0x3, 0x99, 0x0, 0x0, 0x3, 0x9A, 0x0, 0x0, 0x9, 0xE2, 0x0, 0x0, 0x3, 0x9B, 0x0, 0x0, 0x3, 0x9B, 0x0, 0x0, 0x2, 0x33, 0x0, 0x0, 0x3, 0x9C, 0x0, 0x0, 0x3, 0x9D, 0x0, 0x0, 0x9, 0xE4, 0x0, 0x0, 0x3, 0x9E, 0x0, 0x0, 0x3, 0x9E, 0x0, 0x0, 0x2, 0x34, 0x0, 0x0, 0x3, 0x9F, 0x0, 0x0, 0x3, 0x9F, 0x0, 0x0, 0x9, 0xE6, 0x0, 0x0, 0x3, 0xA0, 0x0, 0x0, 0x3, 0xA0, 0x0, 0x0, 0x2, 0x35, 0x0, 0x0, 0x3, 0xA1, 0x0, 0x0, 0x3, 0xA1, 0x0, 0x0, 0x9, 0xE7, 0x0, 0x0, 0x3, 0xA3, 0x0, 0x0, 0x3, 0xA3, 0x0, 0x0, 0x2, 0x36, 0x0, 0x0, 0x3, 0xA4, 0x0, 0x0, 0x3, 0xA5, 0x0, 0x0, 0x9, 0xE8, 0x0, 0x0, 0x3, 0xA6, 0x0, 0x0, 0x3, 0xA6, 0x0, 0x0, 0x2, 0x37, 0x0, 0x0, 0x3, 0xA7, 0x0, 0x0, 0x3, 0xA7, 0x0, 0x0, 0x9, 0xEA, 0x0, 0x0, 0x3, 0xA8, 0x0, 0x0, 0x3, 0xA9, 0x0, 0x0, 0x2, 0x38, 0x0, 0x0, 0x3, 0xAA, 0x0, 0x0, 0x3, 0xB0, 0x0, 0x0, 0x9, 0xEB, 0x0, 0x0, 0x3, 0xB1, 0x0, 0x0, 0x3, 0xB9, 0x0, 0x0, 0x2, 0x3A, 0x0, 0x0, 0x3, 0xBA, 0x0, 0x0, 0x3, 0xBA, 0x0, 0x0, 0x9, 0xF2, 0x0, 0x0, 0x3, 0xBB, 0x0, 0x0, 0x3, 0xBB, 0x0, 0x0, 0x2, 0x43, 0x0, 0x0, 0x3, 0xBC, 0x0, 0x0, 0x3, 0xBD, 0x0, 0x0, 0x9, 0xF4, 0x0, 0x0, 0x3, 0xBE, 0x0, 0x0, 0x3, 0xBE, 0x0, 0x0, 0x2, 0x44, 0x0, 0x0, 0x3, 0xBF, 0x0, 0x0, 0x3, 0xBF, 0x0, 0x0, 0x9, 0xF3, 0x0, 0x0, 0x3, 0xC0, 0x0, 0x0, 0x3, 0xC6, 0x0, 0x0, 0x2, 0x45, 0x0, 0x0, 0x3, 0xC7, 0x0, 0x0, 0x3, 0xC7, 0x0, 0x0, 0x9, 0xF6, 0x0, 0x0, 0x3, 0xC8, 0x0, 0x0, 0x3, 0xC9, 0x0, 0x0, 0x2, 0x4C, 0x0, 0x0, 0x3, 0xCA, 0x0, 0x0, 0x3, 0xCE, 0x0, 0x0, 0x9, 0xF7, 0x0, 0x0, 0x3, 0xCF, 0x0, 0x0, 0x3, 0xD2, 0x0, 0x0, 0x2, 0x4E, 0x0, 0x0, 0x3, 0xD3, 0x0, 0x0, 0x3, 0xD4, 0x0, 0x0, 0xB, 0x40, 0x0, 0x0, 0x3, 0xD5, 0x0, 0x0, 0x3, 0xE1, 0x0, 0x0, 0x2, 0x52, 0x0, 0x0, 0x3, 0xF0, 0x0, 0x0, 0x3, 0xF1, 0x0, 0x0, 0x2, 0x5F, 0x0, 0x0, 0x3, 0xF2, 0x0, 0x0, 0x3, 0xF4, 0x0, 0x0, 0xB, 0x42, 0x0, 0x0, 0x3, 0xF5, 0x0, 0x0, 0x3, 0xF6, 0x0, 0x0, 0x2, 0x61, 0x0, 0x0, 0x3, 0xF7, 0x0, 0x0, 0x3, 0xFA, 0x0, 0x0, 0xB, 0x45, 0x0, 0x0, 0x3, 0xFB, 0x0, 0x0, 0x3, 0xFF, 0x0, 0x0, 0x2, 0x63, 0x0, 0x0, 0x4, 0x0, 0x0, 0x0, 0x4, 0x0, 0x0, 0x0, 0xA, 0x33, 0x0, 0x0, 0x4, 0x1, 0x0, 0x0, 0x4, 0x1, 0x0, 0x0, 0x9, 0xFC, 0x0, 0x0, 0x4, 0x2, 0x0, 0x0, 0x4, 0x2, 0x0, 0x0, 0x2, 0x68, 0x0, 0x0, 0x4, 0x3, 0x0, 0x0, 0x4, 0x3, 0x0, 0x0, 0x9, 0xFD, 0x0, 0x0, 0x4, 0x4, 0x0, 0x0, 0x4, 0x4, 0x0, 0x0, 0x2, 0x69, 0x0, 0x0, 0x4, 0x5, 0x0, 0x0, 0x4, 0x8, 0x0, 0x0, 0x9, 0xFE, 0x0, 0x0, 0x4, 0x9, 0x0, 0x0, 0x4, 0xB, 0x0, 0x0, 0x2, 0x6A, 0x0, 0x0, 0x4, 0xC, 0x0, 0x0, 0x4, 0xC, 0x0, 0x0, 0xA, 0x3, 0x0, 0x0, 0x4, 0xD, 0x0, 0x0, 0x4, 0xD, 0x0, 0x0, 0xA, 0x34, 0x0, 0x0, 0x4, 0xE, 0x0, 0x0, 0x4, 0xE, 0x0, 0x0, 0xA, 0x4, 0x0, 0x0, 0x4, 0xF, 0x0, 0x0, 0x4, 0xF, 0x0, 0x0, 0x2, 0x6D, 0x0, 0x0, 0x4, 0x10, 0x0, 0x0, 0x4, 0x10, 0x0, 0x0, 0xA, 0x5, 0x0, 0x0, 0x4, 0x11, 0x0, 0x0, 0x4, 0x11, 0x0, 0x0, 0x2, 0x6E, 0x0, 0x0, 0x4, 0x12, 0x0, 0x0, 0x4, 0x13, 0x0, 0x0, 0xA, 0x6, 0x0, 0x0, 0x4, 0x14, 0x0, 0x0, 0x4, 0x14, 0x0, 0x0, 0x2, 0x6F, 0x0, 0x0, 0x4, 0x15, 0x0, 0x0, 0x4, 0x15, 0x0, 0x0, 0xA, 0x8, 0x0, 0x0, 0x4, 0x16, 0x0, 0x0, 0x4, 0x18, 0x0, 0x0, 0x2, 0x70, 0x0, 0x0, 0x4, 0x19, 0x0, 0x0, 0x4, 0x19, 0x0, 0x0, 0xA, 0x9, 0x0, 0x0, 0x4, 0x1A, 0x0, 0x0, 0x4, 0x1A, 0x0, 0x0, 0xA, 0x2, 0x0, 0x0, 0x4, 0x1B, 0x0, 0x0, 0x4, 0x1B, 0x0, 0x0, 0x2, 0x73, 0x0, 0x0, 0x4, 0x1C, 0x0, 0x0, 0x4, 0x22, 0x0, 0x0, 0xA, 0xA, 0x0, 0x0, 0x4, 0x23, 0x0, 0x0, 0x4, 0x24, 0x0, 0x0, 0x2, 0x74, 0x0, 0x0, 0x4, 0x25, 0x0, 0x0, 0x4, 0x25, 0x0, 0x0, 0xA, 0x11, 0x0, 0x0, 0x4, 0x26, 0x0, 0x0, 0x4, 0x2F, 0x0, 0x0, 0x2, 0x76, 0x0, 0x0, 0x4, 0x30, 0x0, 0x0, 0x4, 0x30, 0x0, 0x0, 0xA, 0x12, 0x0, 0x0, 0x4, 0x31, 0x0, 0x0, 0x4, 0x34, 0x0, 0x0, 0x2, 0x80, 0x0, 0x0, 0x4, 0x35, 0x0, 0x0, 0x4, 0x35, 0x0, 0x0, 0xA, 0x13, 0x0, 0x0, 0x4, 0x36, 0x0, 0x0, 0x4, 0x38, 0x0, 0x0, 0x2, 0x84, 0x0, 0x0, 0x4, 0x39, 0x0, 0x0, 0x4, 0x39, 0x0, 0x0, 0xA, 0x14, 0x0, 0x0, 0x4, 0x3A, 0x0, 0x0, 0x4, 0x3D, 0x0, 0x0, 0x2, 0x87, 0x0, 0x0, 0x4, 0x3E, 0x0, 0x0, 0x4, 0x3E, 0x0, 0x0, 0xA, 0x15, 0x0, 0x0, 0x4, 0x3F, 0x0, 0x0, 0x4, 0x3F, 0x0, 0x0, 0x2, 0x8B, 0x0, 0x0, 0x4, 0x40, 0x0, 0x0, 0x4, 0x41, 0x0, 0x0, 0xA, 0x16, 0x0, 0x0, 0x4, 0x42, 0x0, 0x0, 0x4, 0x42, 0x0, 0x0, 0x2, 0x8C, 0x0, 0x0, 0x4, 0x43, 0x0, 0x0, 0x4, 0x43, 0x0, 0x0, 0xA, 0x18, 0x0, 0x0, 0x4, 0x44, 0x0, 0x0, 0x4, 0x44, 0x0, 0x0, 0x2, 0x8D, 0x0, 0x0, 0x4, 0x45, 0x0, 0x0, 0x4, 0x45, 0x0, 0x0, 0xA, 0x19, 0x0, 0x0, 0x4, 0x46, 0x0, 0x0, 0x4, 0x4F, 0x0, 0x0, 0x2, 0x8E, 0x0, 0x0, 0x4, 0x50, 0x0, 0x0, 0x4, 0x50, 0x0, 0x0, 0xA, 0x35, 0x0, 0x0, 0x4, 0x51, 0x0, 0x0, 0x4, 0x51, 0x0, 0x0, 0xA, 0x1A, 0x0, 0x0, 0x4, 0x52, 0x0, 0x0, 0x4, 0x52, 0x0, 0x0, 0x2, 0x98, 0x0, 0x0, 0x4, 0x53, 0x0, 0x0, 0x4, 0x53, 0x0, 0x0, 0xA, 0x1B, 0x0, 0x0, 0x4, 0x54, 0x0, 0x0, 0x4, 0x54, 0x0, 0x0, 0x2, 0x99, 0x0, 0x0, 0x4, 0x55, 0x0, 0x0, 0x4, 0x58, 0x0, 0x0, 0xA, 0x1C, 0x0, 0x0, 0x4, 0x59, 0x0, 0x0, 0x4, 0x5B, 0x0, 0x0, 0x2, 0x9A, 0x0, 0x0, 0x4, 0x5C, 0x0, 0x0, 0x4, 0x5C, 0x0, 0x0, 0xA, 0x20, 0x0, 0x0, 0x4, 0x5D, 0x0, 0x0, 0x4, 0x5D, 0x0, 0x0, 0xA, 0x36, 0x0, 0x0, 0x4, 0x5E, 0x0, 0x0, 0x4, 0x5E, 0x0, 0x0, 0xA, 0x21, 0x0, 0x0, 0x4, 0x5F, 0x0, 0x0, 0x4, 0x61, 0x0, 0x0, 0x2, 0x9D, 0x0, 0x0, 0x4, 0x62, 0x0, 0x0, 0x4, 0x62, 0x0, 0x0, 0xA, 0xD1, 0x0, 0x0, 0x4, 0x63, 0x0, 0x0, 0x4, 0x6F, 0x0, 0x0, 0x2, 0xA0, 0x0, 0x0, 0x4, 0x70, 0x0, 0x0, 0x4, 0x71, 0x0, 0x0, 0xA, 0x37, 0x0, 0x0, 0x4, 0x72, 0x0, 0x0, 0x4, 0x75, 0x0, 0x0, 0x2, 0xAD, 0x0, 0x0, 0x4, 0x76, 0x0, 0x0, 0x4, 0x77, 0x0, 0x0, 0xA, 0x39, 0x0, 0x0, 0x4, 0x78, 0x0, 0x0, 0x4, 0x78, 0x0, 0x0, 0xA, 0x3C, 0x0, 0x0, 0x4, 0x79, 0x0, 0x0, 0x4, 0x79, 0x0, 0x0, 0xA, 0x3B, 0x0, 0x0, 0x4, 0x7A, 0x0, 0x0, 0x4, 0x8B, 0x0, 0x0, 0x2, 0xB1, 0x0, 0x0, 0x4, 0x8C, 0x0, 0x0, 0x4, 0x8C, 0x0, 0x0, 0xA, 0xD0, 0x0, 0x0, 0x4, 0x8D, 0x0, 0x0, 0x4, 0x91, 0x0, 0x0, 0x2, 0xC3, 0x0, 0x0, 0x4, 0x92, 0x0, 0x0, 0x4, 0x93, 0x0, 0x0, 0xA, 0xD2, 0x0, 0x0, 0x4, 0x94, 0x0, 0x0, 0x4, 0x97, 0x0, 0x0, 0x2, 0xC8, 0x0, 0x0, 0x4, 0x98, 0x0, 0x0, 0x4, 0x99, 0x0, 0x0, 0xA, 0x3D, 0x0, 0x0, 0x4, 0x9A, 0x0, 0x0, 0x4, 0x9D, 0x0, 0x0, 0x2, 0xCC, 0x0, 0x0, 0x4, 0x9E, 0x0, 0x0, 0x4, 0x9F, 0x0, 0x0, 0xA, 0xD4, 0x0, 0x0, 0x4, 0xA0, 0x0, 0x0, 0x4, 0xA9, 0x0, 0x0, 0x2, 0xD0, 0x0, 0x0, 0x4, 0xAA, 0x0, 0x0, 0x4, 0xAB, 0x0, 0x0, 0xA, 0x3F, 0x0, 0x0, 0x4, 0xAC, 0x0, 0x0, 0x4, 0xAD, 0x0, 0x0, 0xA, 0xC7, 0x0, 0x0, 0x4, 0xAE, 0x0, 0x0, 0x4, 0xAF, 0x0, 0x0, 0xA, 0x41, 0x0, 0x0, 0x4, 0xB0, 0x0, 0x0, 0x4, 0xB1, 0x0, 0x0, 0xA, 0xD6, 0x0, 0x0, 0x4, 0xB2, 0x0, 0x0, 0x4, 0xBA, 0x0, 0x0, 0x2, 0xDA, 0x0, 0x0, 0x4, 0xBB, 0x0, 0x0, 0x4, 0xBB, 0x0, 0x0, 0xA, 0xCF, 0x0, 0x0, 0x4, 0xBC, 0x0, 0x0, 0x4, 0xBD, 0x0, 0x0, 0x2, 0xE3, 0x0, 0x0, 0x4, 0xBE, 0x0, 0x0, 0x4, 0xBF, 0x0, 0x0, 0xA, 0xCD, 0x0, 0x0, 0x4, 0xC0, 0x0, 0x0, 0x4, 0xC2, 0x0, 0x0, 0xA, 0x43, 0x0, 0x0, 0x4, 0xC3, 0x0, 0x0, 0x4, 0xCA, 0x0, 0x0, 0x2, 0xE5, 0x0, 0x0, 0x4, 0xCB, 0x0, 0x0, 0x4, 0xCC, 0x0, 0x0, 0xA, 0xC9, 0x0, 0x0, 0x4, 0xCD, 0x0, 0x0, 0x4, 0xCE, 0x0, 0x0, 0x2, 0xED, 0x0, 0x0, 0x4, 0xCF, 0x0, 0x0, 0x4, 0xD7, 0x0, 0x0, 0xA, 0x46, 0x0, 0x0, 0x4, 0xD8, 0x0, 0x0, 0x4, 0xD8, 0x0, 0x0, 0x2, 0xEF, 0x0, 0x0, 0x4, 0xD9, 0x0, 0x0, 0x4, 0xD9, 0x0, 0x0, 0xA, 0x50, 0x0, 0x0, 0x4, 0xDA, 0x0, 0x0, 0x4, 0xDA, 0x0, 0x0, 0xA, 0x4F, 0x0, 0x0, 0x4, 0xDB, 0x0, 0x0, 0x4, 0xDF, 0x0, 0x0, 0xA, 0x51, 0x0, 0x0, 0x4, 0xE0, 0x0, 0x0, 0x4, 0xE1, 0x0, 0x0, 0x2, 0xF0, 0x0, 0x0, 0x4, 0xE2, 0x0, 0x0, 0x4, 0xE9, 0x0, 0x0, 0xA, 0x56, 0x0, 0x0, 0x4, 0xEA, 0x0, 0x0, 0x4, 0xF5, 0x0, 0x0, 0xA, 0x5F, 0x0, 0x0, 0x4, 0xF6, 0x0, 0x0, 0x4, 0xF7, 0x0, 0x0, 0xA, 0xCB, 0x0, 0x0, 0x4, 0xF8, 0x0, 0x0, 0x4, 0xF9, 0x0, 0x0, 0xA, 0x6B, 0x0, 0x0, 0x4, 0xFA, 0x0, 0x0, 0x4, 0xFD, 0x0, 0x0, 0x2, 0xF2, 0x0, 0x0, 0x4, 0xFE, 0x0, 0x0, 0x4, 0xFF, 0x0, 0x0, 0xA, 0xD8, 0x0, 0x0, 0x5, 0x0, 0x0, 0x0, 0x5, 0x0, 0x0, 0x0, 0x2, 0xF6, 0x0, 0x0, 0x5, 0x1, 0x0, 0x0, 0x5, 0x1, 0x0, 0x0, 0xA, 0x6D, 0x0, 0x0, 0x5, 0x2, 0x0, 0x0, 0x5, 0x10, 0x0, 0x0, 0x2, 0xF7, 0x0, 0x0, 0x5, 0x11, 0x0, 0x0, 0x5, 0x11, 0x0, 0x0, 0xA, 0xDA, 0x0, 0x0, 0x5, 0x12, 0x0, 0x0, 0x5, 0x19, 0x0, 0x0, 0x3, 0x6, 0x0, 0x0, 0x5, 0x1A, 0x0, 0x0, 0x5, 0x1D, 0x0, 0x0, 0xB, 0x49, 0x0, 0x0, 0x5, 0x1E, 0x0, 0x0, 0x5, 0x2F, 0x0, 0x0, 0x3, 0xE, 0x0, 0x0, 0x1A, 0xB0, 0x0, 0x0, 0x1A, 0xBE, 0x0, 0x0, 0x3, 0x20, 0x0, 0x0, 0x1D, 0x0, 0x0, 0x0, 0x1D, 0xF5, 0x0, 0x0, 0x3, 0x2F, 0x0, 0x0, 0x1D, 0xFC, 0x0, 0x0, 0x1D, 0xFF, 0x0, 0x0, 0x4, 0x25, 0x0, 0x0, 0x1E, 0x0, 0x0, 0x0, 0x1E, 0x1, 0x0, 0x0, 0xA, 0x31, 0x0, 0x0, 0x1E, 0x2, 0x0, 0x0, 0x1E, 0x27, 0x0, 0x0, 0xB, 0x4D, 0x0, 0x0, 0x1E, 0x28, 0x0, 0x0, 0x1E, 0x29, 0x0, 0x0, 0x4, 0x29, 0x0, 0x0, 0x1E, 0x2A, 0x0, 0x0, 0x1E, 0x2B, 0x0, 0x0, 0xB, 0x73, 0x0, 0x0, 0x1E, 0x2C, 0x0, 0x0, 0x1E, 0x2F, 0x0, 0x0, 0x4, 0x2B, 0x0, 0x0, 0x1E, 0x30, 0x0, 0x0, 0x1E, 0x3D, 0x0, 0x0, 0xB, 0x75, 0x0, 0x0, 0x1E, 0x3E, 0x0, 0x0, 0x1E, 0x3F, 0x0, 0x0, 0xA, 0x2F, 0x0, 0x0, 0x1E, 0x40, 0x0, 0x0, 0x1E, 0x7F, 0x0, 0x0, 0xB, 0x83, 0x0, 0x0, 0x1E, 0x80, 0x0, 0x0, 0x1E, 0x85, 0x0, 0x0, 0xA, 0x22, 0x0, 0x0, 0x1E, 0x86, 0x0, 0x0, 0x1E, 0x9A, 0x0, 0x0, 0xB, 0xC3, 0x0, 0x0, 0x1E, 0x9B, 0x0, 0x0, 0x1E, 0x9F, 0x0, 0x0, 0x4, 0x2F, 0x0, 0x0, 0x1E, 0xA0, 0x0, 0x0, 0x1E, 0xF1, 0x0, 0x0, 0xA, 0x6E, 0x0, 0x0, 0x1E, 0xF2, 0x0, 0x0, 0x1E, 0xF3, 0x0, 0x0, 0xA, 0x28, 0x0, 0x0, 0x1E, 0xF4, 0x0, 0x0, 0x1E, 0xF9, 0x0, 0x0, 0xA, 0xC0, 0x0, 0x0, 0x1E, 0xFA, 0x0, 0x0, 0x1E, 0xFF, 0x0, 0x0, 0x4, 0x34, 0x0, 0x0, 0x1F, 0x0, 0x0, 0x0, 0x1F, 0x15, 0x0, 0x0, 0xB, 0xD8, 0x0, 0x0, 0x1F, 0x18, 0x0, 0x0, 0x1F, 0x1D, 0x0, 0x0, 0xB, 0xEE, 0x0, 0x0, 0x1F, 0x20, 0x0, 0x0, 0x1F, 0x45, 0x0, 0x0, 0xB, 0xF4, 0x0, 0x0, 0x1F, 0x48, 0x0, 0x0, 0x1F, 0x4D, 0x0, 0x0, 0xC, 0x1A, 0x0, 0x0, 0x1F, 0x50, 0x0, 0x0, 0x1F, 0x57, 0x0, 0x0, 0xC, 0x20, 0x0, 0x0, 0x1F, 0x59, 0x0, 0x0, 0x1F, 0x59, 0x0, 0x0, 0xC, 0x28, 0x0, 0x0, 0x1F, 0x5B, 0x0, 0x0, 0x1F, 0x5B, 0x0, 0x0, 0xC, 0x29, 0x0, 0x0, 0x1F, 0x5D, 0x0, 0x0, 0x1F, 0x5D, 0x0, 0x0, 0xC, 0x2A, 0x0, 0x0, 0x1F, 0x5F, 0x0, 0x0, 0x1F, 0x7D, 0x0, 0x0, 0xC, 0x2B, 0x0, 0x0, 0x1F, 0x80, 0x0, 0x0, 0x1F, 0xB4, 0x0, 0x0, 0xC, 0x4A, 0x0, 0x0, 0x1F, 0xB6, 0x0, 0x0, 0x1F, 0xBC, 0x0, 0x0, 0xC, 0x7F, 0x0, 0x0, 0x1F, 0xBD, 0x0, 0x0, 0x1F, 0xC1, 0x0, 0x0, 0x4, 0x3A, 0x0, 0x0, 0x1F, 0xC2, 0x0, 0x0, 0x1F, 0xC4, 0x0, 0x0, 0xC, 0x86, 0x0, 0x0, 0x1F, 0xC6, 0x0, 0x0, 0x1F, 0xCC, 0x0, 0x0, 0xC, 0x89, 0x0, 0x0, 0x1F, 0xCD, 0x0, 0x0, 0x1F, 0xCF, 0x0, 0x0, 0x4, 0x3F, 0x0, 0x0, 0x1F, 0xD0, 0x0, 0x0, 0x1F, 0xD3, 0x0, 0x0, 0xC, 0x90, 0x0, 0x0, 0x1F, 0xD6, 0x0, 0x0, 0x1F, 0xDB, 0x0, 0x0, 0xC, 0x94, 0x0, 0x0, 0x1F, 0xDD, 0x0, 0x0, 0x1F, 0xDF, 0x0, 0x0, 0x4, 0x42, 0x0, 0x0, 0x1F, 0xE0, 0x0, 0x0, 0x1F, 0xEC, 0x0, 0x0, 0xC, 0x9A, 0x0, 0x0, 0x1F, 0xED, 0x0, 0x0, 0x1F, 0xEF, 0x0, 0x0, 0x4, 0x45, 0x0, 0x0, 0x1F, 0xF2, 0x0, 0x0, 0x1F, 0xF4, 0x0, 0x0, 0xC, 0xA7, 0x0, 0x0, 0x1F, 0xF6, 0x0, 0x0, 0x1F, 0xFC, 0x0, 0x0, 0xC, 0xAA, 0x0, 0x0, 0x1F, 0xFD, 0x0, 0x0, 0x1F, 0xFE, 0x0, 0x0, 0x4, 0x48, 0x0, 0x0, 0x20, 0x0, 0x0, 0x0, 0x20, 0x9, 0x0, 0x0, 0x4, 0x4A, 0x0, 0x0, 0x20, 0xA, 0x0, 0x0, 0x20, 0x14, 0x0, 0x0, 0x4, 0x55, 0x0, 0x0, 0x20, 0x15, 0x0, 0x0, 0x20, 0x15, 0x0, 0x0, 0xA, 0xDC, 0x0, 0x0, 0x20, 0x16, 0x0, 0x0, 0x20, 0x27, 0x0, 0x0, 0x4, 0x60, 0x0, 0x0, 0x20, 0x2F, 0x0, 0x0, 0x20, 0x2F, 0x0, 0x0, 0xC, 0xB1, 0x0, 0x0, 0x20, 0x30, 0x0, 0x0, 0x20, 0x31, 0x0, 0x0, 0x4, 0x72, 0x0, 0x0, 0x20, 0x32, 0x0, 0x0, 0x20, 0x33, 0x0, 0x0, 0xA, 0x2A, 0x0, 0x0, 0x20, 0x34, 0x0, 0x0, 0x20, 0x3B, 0x0, 0x0, 0x4, 0x74, 0x0, 0x0, 0x20, 0x3C, 0x0, 0x0, 0x20, 0x3C, 0x0, 0x0, 0xA, 0x2C, 0x0, 0x0, 0x20, 0x3D, 0x0, 0x0, 0x20, 0x46, 0x0, 0x0, 0x4, 0x7C, 0x0, 0x0, 0x20, 0x47, 0x0, 0x0, 0x20, 0x49, 0x0, 0x0, 0xC, 0xB2, 0x0, 0x0, 0x20, 0x4A, 0x0, 0x0, 0x20, 0x5E, 0x0, 0x0, 0x4, 0x86, 0x0, 0x0, 0x20, 0x5F, 0x0, 0x0, 0x20, 0x5F, 0x0, 0x0, 0xC, 0xB5, 0x0, 0x0, 0x20, 0x70, 0x0, 0x0, 0x20, 0x71, 0x0, 0x0, 0x4, 0x9B, 0x0, 0x0, 0x20, 0x74, 0x0, 0x0, 0x20, 0x8E, 0x0, 0x0, 0x4, 0x9D, 0x0, 0x0, 0x20, 0x90, 0x0, 0x0, 0x20, 0x9C, 0x0, 0x0, 0x4, 0xB8, 0x0, 0x0, 0x20, 0xA0, 0x0, 0x0, 0x20, 0xA2, 0x0, 0x0, 0x4, 0xC5, 0x0, 0x0, 0x20, 0xA3, 0x0, 0x0, 0x20, 0xA3, 0x0, 0x0, 0xA, 0xDB, 0x0, 0x0, 0x20, 0xA4, 0x0, 0x0, 0x20, 0xAA, 0x0, 0x0, 0x4, 0xC8, 0x0, 0x0, 0x20, 0xAB, 0x0, 0x0, 0x20, 0xAB, 0x0, 0x0, 0xA, 0xC6, 0x0, 0x0, 0x20, 0xAC, 0x0, 0x0, 0x20, 0xBE, 0x0, 0x0, 0x4, 0xCF, 0x0, 0x0, 0x20, 0xDB, 0x0, 0x0, 0x20, 0xDC, 0x0, 0x0, 0x4, 0xE2, 0x0, 0x0, 0x20, 0xE8, 0x0, 0x0, 0x20, 0xE8, 0x0, 0x0, 0x4, 0xE4, 0x0, 0x0, 0x20, 0xF0, 0x0, 0x0, 0x20, 0xF0, 0x0, 0x0, 0x4, 0xE5, 0x0, 0x0, 0x21, 0x0, 0x0, 0x0, 0x21, 0x1, 0x0, 0x0, 0x4, 0xE6, 0x0, 0x0, 0x21, 0x3, 0x0, 0x0, 0x21, 0x3, 0x0, 0x0, 0x4, 0xE8, 0x0, 0x0, 0x21, 0x5, 0x0, 0x0, 0x21, 0x6, 0x0, 0x0, 0x4, 0xE9, 0x0, 0x0, 0x21, 0x9, 0x0, 0x0, 0x21, 0x9, 0x0, 0x0, 0x4, 0xEB, 0x0, 0x0, 0x21, 0x13, 0x0, 0x0, 0x21, 0x13, 0x0, 0x0, 0x4, 0xEC, 0x0, 0x0, 0x21, 0x16, 0x0, 0x0, 0x21, 0x17, 0x0, 0x0, 0x4, 0xED, 0x0, 0x0, 0x21, 0x1E, 0x0, 0x0, 0x21, 0x23, 0x0, 0x0, 0x4, 0xEF, 0x0, 0x0, 0x21, 0x25, 0x0, 0x0, 0x21, 0x25, 0x0, 0x0, 0x4, 0xF5, 0x0, 0x0, 0x21, 0x26, 0x0, 0x0, 0x21, 0x26, 0x0, 0x0, 0x2, 0x39, 0x0, 0x0, 0x21, 0x2A, 0x0, 0x0, 0x21, 0x2B, 0x0, 0x0, 0x4, 0xF6, 0x0, 0x0, 0x21, 0x2E, 0x0, 0x0, 0x21, 0x2E, 0x0, 0x0, 0x4, 0xF8, 0x0, 0x0, 0x21, 0x32, 0x0, 0x0, 0x21, 0x32, 0x0, 0x0, 0x4, 0xF9, 0x0, 0x0, 0x21, 0x3B, 0x0, 0x0, 0x21, 0x3B, 0x0, 0x0, 0x4, 0xFA, 0x0, 0x0, 0x21, 0x4D, 0x0, 0x0, 0x21, 0x4D, 0x0, 0x0, 0x4, 0xFB, 0x0, 0x0, 0x21, 0x4F, 0x0, 0x0, 0x21, 0x89, 0x0, 0x0, 0x4, 0xFC, 0x0, 0x0, 0x22, 0x2, 0x0, 0x0, 0x22, 0x2, 0x0, 0x0, 0x5, 0x37, 0x0, 0x0, 0x22, 0x6, 0x0, 0x0, 0x22, 0x6, 0x0, 0x0, 0x2, 0x31, 0x0, 0x0, 0x22, 0xF, 0x0, 0x0, 0x22, 0xF, 0x0, 0x0, 0x5, 0x38, 0x0, 0x0, 0x22, 0x11, 0x0, 0x0, 0x22, 0x12, 0x0, 0x0, 0x5, 0x39, 0x0, 0x0, 0x22, 0x1A, 0x0, 0x0, 0x22, 0x1A, 0x0, 0x0, 0x5, 0x3B, 0x0, 0x0, 0x22, 0x1E, 0x0, 0x0, 0x22, 0x1E, 0x0, 0x0, 0x5, 0x3C, 0x0, 0x0, 0x22, 0x2B, 0x0, 0x0, 0x22, 0x2B, 0x0, 0x0, 0x5, 0x3D, 0x0, 0x0, 0x22, 0x48, 0x0, 0x0, 0x22, 0x48, 0x0, 0x0, 0x5, 0x3E, 0x0, 0x0, 0x22, 0x60, 0x0, 0x0, 0x22, 0x60, 0x0, 0x0, 0x5, 0x3F, 0x0, 0x0, 0x22, 0x64, 0x0, 0x0, 0x22, 0x65, 0x0, 0x0, 0x5, 0x40, 0x0, 0x0, 0x24, 0x23, 0x0, 0x0, 0x24, 0x23, 0x0, 0x0, 0x5, 0x42, 0x0, 0x0, 0x25, 0xCA, 0x0, 0x0, 0x25, 0xCA, 0x0, 0x0, 0x5, 0x43, 0x0, 0x0, 0x27, 0xE6, 0x0, 0x0, 0x27, 0xEF, 0x0, 0x0, 0x5, 0x44, 0x0, 0x0, 0x2B, 0x4E, 0x0, 0x0, 0x2B, 0x4F, 0x0, 0x0, 0x5, 0x4E, 0x0, 0x0, 0x2B, 0x5A, 0x0, 0x0, 0x2B, 0x5F, 0x0, 0x0, 0x5, 0x50, 0x0, 0x0, 0x2C, 0x60, 0x0, 0x0, 0x2C, 0x7F, 0x0, 0x0, 0x5, 0x56, 0x0, 0x0, 0x2D, 0xE0, 0x0, 0x0, 0x2E, 0x42, 0x0, 0x0, 0x5, 0x76, 0x0, 0x0, 0xA6, 0x40, 0x0, 0x0, 0xA6, 0x9D, 0x0, 0x0, 0x5, 0xD9, 0x0, 0x0, 0xA6, 0x9F, 0x0, 0x0, 0xA6, 0x9F, 0x0, 0x0, 0x6, 0x37, 0x0, 0x0, 0xA7, 0x0, 0x0, 0x0, 0xA7, 0x8E, 0x0, 0x0, 0x6, 0x38, 0x0, 0x0, 0xA7, 0x8F, 0x0, 0x0, 0xA7, 0x8F, 0x0, 0x0, 0xC, 0xB6, 0x0, 0x0, 0xA7, 0x90, 0x0, 0x0, 0xA7, 0xAD, 0x0, 0x0, 0x6, 0xC7, 0x0, 0x0, 0xA7, 0xB0, 0x0, 0x0, 0xA7, 0xB1, 0x0, 0x0, 0x6, 0xE5, 0x0, 0x0, 0xA7, 0xF7, 0x0, 0x0, 0xA7, 0xFF, 0x0, 0x0, 0x6, 0xE7, 0x0, 0x0, 0xA9, 0x2E, 0x0, 0x0, 0xA9, 0x2E, 0x0, 0x0, 0x6, 0xF0, 0x0, 0x0, 0xAB, 0x30, 0x0, 0x0, 0xAB, 0x5F, 0x0, 0x0, 0x6, 0xF1, 0x0, 0x0, 0xAB, 0x64, 0x0, 0x0, 0xAB, 0x65, 0x0, 0x0, 0x7, 0x21, 0x0, 0x0, 0xEE, 0x1, 0x0, 0x0, 0xEE, 0x2, 0x0, 0x0, 0x7, 0x23, 0x0, 0x0, 0xF6, 0xC3, 0x0, 0x0, 0xF6, 0xC3, 0x0, 0x0, 0x7, 0x25, 0x0, 0x0, 0xFB, 0x0, 0x0, 0x0, 0xFB, 0x6, 0x0, 0x0, 0x7, 0x26, 0x0, 0x0, 0xFE, 0x20, 0x0, 0x0, 0xFE, 0x2D, 0x0, 0x0, 0x7, 0x2D, 0x0, 0x0, 0xFE, 0xFF, 0x0, 0x0, 0xFE, 0xFF, 0x0, 0x0, 0x7, 0x3B, 0x0, 0x0, 0xFF, 0xFC, 0x0, 0x0, 0xFF, 0xFD, 0x0, 0x0, 0x7, 0x3C, 0x0, 0x1, 0xF1, 0x6A, 0x0, 0x1, 0xF1, 0x6B, 0x0, 0x0, 0x7, 0x3E, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x55, 0x0, 0x0, 0x0, 0x55, 0x0, 0x0, 0x0, 0x55, 0x0, 0x0, 0x0, 0x55, 0x0, 0x0, 0x0, 0x55, 0x0, 0x0, 0x0, 0x55, 0x0, 0x0, 0x0, 0x8E, 0x0, 0x0, 0x0, 0xBA, 0x0, 0x0, 0x1, 0x29, 0x0, 0x0, 0x1, 0xA5, 0x0, 0x0, 0x2, 0x4B, 0x0, 0x0, 0x2, 0xEE, 0x0, 0x0, 0x3, 0x9, 0x0, 0x0, 0x3, 0x51, 0x0, 0x0, 0x3, 0x9B, 0x0, 0x0, 0x3, 0xE0, 0x0, 0x0, 0x4, 0x11, 0x0, 0x0, 0x4, 0x3A, 0x0, 0x0, 0x4, 0x54, 0x0, 0x0, 0x4, 0x77, 0x0, 0x0, 0x4, 0x96, 0x0, 0x0, 0x4, 0xFA, 0x0, 0x0, 0x5, 0x1F, 0x0, 0x0, 0x5, 0x73, 0x0, 0x0, 0x5, 0xE2, 0x0, 0x0, 0x6, 0x21, 0x0, 0x0, 0x6, 0x7F, 0x0, 0x0, 0x6, 0xEE, 0x0, 0x0, 0x7, 0x15, 0x0, 0x0, 0x7, 0x9F, 0x0, 0x0, 0x8, 0xD, 0x0, 0x0, 0x8, 0x25, 0x0, 0x0, 0x8, 0x3D, 0x0, 0x0, 0x8, 0x65, 0x0, 0x0, 0x8, 0x8D, 0x0, 0x0, 0x8, 0xB1, 0x0, 0x0, 0x9, 0x19, 0x0, 0x0, 0x9, 0xE8, 0x0, 0x0, 0xA, 0x24, 0x0, 0x0, 0xA, 0x8E, 0x0, 0x0, 0xA, 0xF2, 0x0, 0x0, 0xB, 0x41, 0x0, 0x0, 0xB, 0x6F, 0x0, 0x0, 0xB, 0x9B, 0x0, 0x0, 0xC, 0x8, 0x0, 0x0, 0xC, 0x37, 0x0, 0x0, 0xC, 0x52, 0x0, 0x0, 0xC, 0x8A, 0x0, 0x0, 0xC, 0xC5, 0x0, 0x0, 0xC, 0xE2, 0x0, 0x0, 0xD, 0x25, 0x0, 0x0, 0xD, 0x54, 0x0, 0x0, 0xD, 0xBC, 0x0, 0x0, 0xE, 0x6, 0x0, 0x0, 0xE, 0x7A, 0x0, 0x0, 0xE, 0xD3, 0x0, 0x0, 0xF, 0x47, 0x0, 0x0, 0xF, 0x6D, 0x0, 0x0, 0xF, 0xAB, 0x0, 0x0, 0xF, 0xD6, 0x0, 0x0, 0x10, 0x15, 0x0, 0x0, 0x10, 0x58, 0x0, 0x0, 0x10, 0x89, 0x0, 0x0, 0x10, 0xB4, 0x0, 0x0, 0x10, 0xD8, 0x0, 0x0, 0x10, 0xF6, 0x0, 0x0, 0x11, 0x1A, 0x0, 0x0, 0x11, 0x43, 0x0, 0x0, 0x11, 0x5B, 0x0, 0x0, 0x11, 0x79, 0x0, 0x0, 0x11, 0xEB, 0x0, 0x0, 0x12, 0x43, 0x0, 0x0, 0x12, 0x9A, 0x0, 0x0, 0x12, 0xF4, 0x0, 0x0, 0x13, 0x58, 0x0, 0x0, 0x13, 0x9A, 0x0, 0x0, 0x14, 0x11, 0x0, 0x0, 0x14, 0x50, 0x0, 0x0, 0x14, 0x86, 0x0, 0x0, 0x14, 0xCE, 0x0, 0x0, 0x15, 0x9, 0x0, 0x0, 0x15, 0x24, 0x0, 0x0, 0x15, 0x84, 0x0, 0x0, 0x15, 0xC3, 0x0, 0x0, 0x16, 0x1F, 0x0, 0x0, 0x16, 0x78, 0x0, 0x0, 0x16, 0xD3, 0x0, 0x0, 0x17, 0x8, 0x0, 0x0, 0x17, 0x74, 0x0, 0x0, 0x17, 0xB8, 0x0, 0x0, 0x17, 0xF5, 0x0, 0x0, 0x18, 0x1C, 0x0, 0x0, 0x18, 0x57, 0x0, 0x0, 0x18, 0x97, 0x0, 0x0, 0x18, 0xDD, 0x0, 0x0, 0x19, 0x8, 0x0, 0x0, 0x19, 0x5A, 0x0, 0x0, 0x19, 0x75, 0x0, 0x0, 0x19, 0xC6, 0x0, 0x0, 0x1A, 0x11, 0x0, 0x0, 0x1A, 0x4B, 0x0, 0x0, 0x1A, 0xB2, 0x0, 0x0, 0x1B, 0x12, 0x0, 0x0, 0x1B, 0x92, 0x0, 0x0, 0x1B, 0xE7, 0x0, 0x0, 0x1C, 0xF, 0x0, 0x0, 0x1C, 0xBE, 0x0, 0x0, 0x1D, 0xA, 0x0, 0x0, 0x1D, 0xBE, 0x0, 0x0, 0x1E, 0x29, 0x0, 0x0, 0x1E, 0x41, 0x0, 0x0, 0x1E, 0x61, 0x0, 0x0, 0x1F, 0x25, 0x0, 0x0, 0x1F, 0x3F, 0x0, 0x0, 0x1F, 0x82, 0x0, 0x0, 0x1F, 0xC0, 0x0, 0x0, 0x20, 0x9, 0x0, 0x0, 0x20, 0x70, 0x0, 0x0, 0x20, 0x8E, 0x0, 0x0, 0x20, 0xCF, 0x0, 0x0, 0x20, 0xFA, 0x0, 0x0, 0x21, 0x22, 0x0, 0x0, 0x21, 0x56, 0x0, 0x0, 0x21, 0x7A, 0x0, 0x0, 0x21, 0xCB, 0x0, 0x0, 0x21, 0xE3, 0x0, 0x0, 0x22, 0x5, 0x0, 0x0, 0x22, 0x27, 0x0, 0x0, 0x22, 0x49, 0x0, 0x0, 0x22, 0xB1, 0x0, 0x0, 0x23, 0x4, 0x0, 0x0, 0x23, 0x47, 0x0, 0x0, 0x23, 0xD4, 0x0, 0x0, 0x24, 0x20, 0x0, 0x0, 0x24, 0x9D, 0x0, 0x0, 0x25, 0x4E, 0x0, 0x0, 0x25, 0xD5, 0x0, 0x0, 0x26, 0x28, 0x0, 0x0, 0x26, 0xAF, 0x0, 0x0, 0x27, 0x8, 0x0, 0x0, 0x27, 0x71, 0x0, 0x0, 0x27, 0xC2, 0x0, 0x0, 0x27, 0xDD, 0x0, 0x0, 0x28, 0x16, 0x0, 0x0, 0x28, 0x49, 0x0, 0x0, 0x28, 0x77, 0x0, 0x0, 0x28, 0xBF, 0x0, 0x0, 0x29, 0x15, 0x0, 0x0, 0x29, 0x87, 0x0, 0x0, 0x2A, 0x33, 0x0, 0x0, 0x2A, 0x61, 0x0, 0x0, 0x2A, 0x79, 0x0, 0x0, 0x2A, 0xFF, 0x0, 0x0, 0x2B, 0x15, 0x0, 0x0, 0x2B, 0x75, 0x0, 0x0, 0x2B, 0xC2, 0x0, 0x0, 0x2C, 0x23, 0x0, 0x0, 0x2C, 0x87, 0x0, 0x0, 0x2D, 0x0, 0x0, 0x0, 0x2D, 0x6F, 0x0, 0x0, 0x2D, 0x85, 0x0, 0x0, 0x2D, 0xEF, 0x0, 0x0, 0x2E, 0x3A, 0x0, 0x0, 0x2E, 0x9A, 0x0, 0x0, 0x2F, 0x15, 0x0, 0x0, 0x2F, 0x43, 0x0, 0x0, 0x2F, 0xAF, 0x0, 0x0, 0x30, 0x23, 0x0, 0x0, 0x30, 0x64, 0x0, 0x0, 0x30, 0xC1, 0x0, 0x0, 0x31, 0x41, 0x0, 0x0, 0x31, 0x9D, 0x0, 0x0, 0x31, 0xFD, 0x0, 0x0, 0x32, 0x13, 0x0, 0x0, 0x32, 0x66, 0x0, 0x0, 0x32, 0xB9, 0x0, 0x0, 0x32, 0xCF, 0x0, 0x0, 0x33, 0x3A, 0x0, 0x0, 0x33, 0x99, 0x0, 0x0, 0x33, 0xDD, 0x0, 0x0, 0x34, 0x54, 0x0, 0x0, 0x34, 0xC3, 0x0, 0x0, 0x35, 0x38, 0x0, 0x0, 0x35, 0x9F, 0x0, 0x0, 0x36, 0x5, 0x0, 0x0, 0x36, 0x77, 0x0, 0x0, 0x36, 0xD6, 0x0, 0x0, 0x37, 0x49, 0x0, 0x0, 0x37, 0xB7, 0x0, 0x0, 0x37, 0xC7, 0x0, 0x0, 0x38, 0x2C, 0x0, 0x0, 0x38, 0x89, 0x0, 0x0, 0x38, 0xC6, 0x0, 0x0, 0x39, 0x21, 0x0, 0x0, 0x39, 0x5C, 0x0, 0x0, 0x39, 0xAE, 0x0, 0x0, 0x39, 0xFF, 0x0, 0x0, 0x3A, 0x6E, 0x0, 0x0, 0x3A, 0xC4, 0x0, 0x0, 0x3B, 0xC, 0x0, 0x0, 0x3B, 0x71, 0x0, 0x0, 0x3B, 0xB6, 0x0, 0x0, 0x3B, 0xF4, 0x0, 0x0, 0x3C, 0x52, 0x0, 0x0, 0x3C, 0xB0, 0x0, 0x0, 0x3D, 0xB, 0x0, 0x0, 0x3D, 0x7E, 0x0, 0x0, 0x3D, 0xE0, 0x0, 0x0, 0x3E, 0x42, 0x0, 0x0, 0x3E, 0xA8, 0x0, 0x0, 0x3F, 0x8, 0x0, 0x0, 0x3F, 0x60, 0x0, 0x0, 0x3F, 0x7B, 0x0, 0x0, 0x3F, 0x93, 0x0, 0x0, 0x3F, 0xB3, 0x0, 0x0, 0x3F, 0xC3, 0x0, 0x0, 0x3F, 0xE3, 0x0, 0x0, 0x40, 0x6F, 0x0, 0x0, 0x41, 0x6, 0x0, 0x0, 0x41, 0x84, 0x0, 0x0, 0x42, 0x7, 0x0, 0x0, 0x42, 0x1F, 0x0, 0x0, 0x42, 0x97, 0x0, 0x0, 0x42, 0xEE, 0x0, 0x0, 0x43, 0x4A, 0x0, 0x0, 0x43, 0xB6, 0x0, 0x0, 0x44, 0x1B, 0x0, 0x0, 0x44, 0x58, 0x0, 0x0, 0x44, 0xEE, 0x0, 0x0, 0x45, 0x79, 0x0, 0x0, 0x46, 0x7, 0x0, 0x0, 0x46, 0x4E, 0x0, 0x0, 0x46, 0x93, 0x0, 0x0, 0x46, 0xEC, 0x0, 0x0, 0x47, 0x69, 0x0, 0x0, 0x47, 0xD1, 0x0, 0x0, 0x48, 0x1, 0x0, 0x0, 0x48, 0x97, 0x0, 0x0, 0x49, 0x2F, 0x0, 0x0, 0x49, 0x93, 0x0, 0x0, 0x4A, 0x22, 0x0, 0x0, 0x4A, 0xA4, 0x0, 0x0, 0x4A, 0xBA, 0x0, 0x0, 0x4B, 0x6, 0x0, 0x0, 0x4B, 0x94, 0x0, 0x0, 0x4B, 0xE8, 0x0, 0x0, 0x4C, 0x35, 0x0, 0x0, 0x4C, 0x7A, 0x0, 0x0, 0x4C, 0x92, 0x0, 0x0, 0x4C, 0xED, 0x0, 0x0, 0x4D, 0x17, 0x0, 0x0, 0x4D, 0x7C, 0x0, 0x0, 0x4E, 0x15, 0x0, 0x0, 0x4E, 0x2D, 0x0, 0x0, 0x4E, 0x45, 0x0, 0x0, 0x4E, 0xC5, 0x0, 0x0, 0x4F, 0x37, 0x0, 0x0, 0x4F, 0x99, 0x0, 0x0, 0x4F, 0xB1, 0x0, 0x0, 0x50, 0x6, 0x0, 0x0, 0x50, 0x6E, 0x0, 0x0, 0x50, 0xE5, 0x0, 0x0, 0x51, 0x4F, 0x0, 0x0, 0x51, 0xB9, 0x0, 0x0, 0x52, 0x2B, 0x0, 0x0, 0x52, 0x82, 0x0, 0x0, 0x53, 0x2, 0x0, 0x0, 0x53, 0x74, 0x0, 0x0, 0x53, 0xE6, 0x0, 0x0, 0x54, 0x4A, 0x0, 0x0, 0x54, 0xB1, 0x0, 0x0, 0x55, 0x33, 0x0, 0x0, 0x55, 0x43, 0x0, 0x0, 0x55, 0xB0, 0x0, 0x0, 0x56, 0x40, 0x0, 0x0, 0x56, 0xB0, 0x0, 0x0, 0x56, 0xEF, 0x0, 0x0, 0x57, 0x7E, 0x0, 0x0, 0x57, 0x8E, 0x0, 0x0, 0x57, 0xED, 0x0, 0x0, 0x58, 0x4B, 0x0, 0x0, 0x58, 0xCC, 0x0, 0x0, 0x59, 0x9, 0x0, 0x0, 0x59, 0x60, 0x0, 0x0, 0x59, 0xCF, 0x0, 0x0, 0x59, 0xE7, 0x0, 0x0, 0x5A, 0x18, 0x0, 0x0, 0x5A, 0x43, 0x0, 0x0, 0x5A, 0x5B, 0x0, 0x0, 0x5A, 0xAE, 0x0, 0x0, 0x5A, 0xDF, 0x0, 0x0, 0x5B, 0x42, 0x0, 0x0, 0x5B, 0xA3, 0x0, 0x0, 0x5C, 0x5, 0x0, 0x0, 0x5C, 0x7C, 0x0, 0x0, 0x5C, 0xD2, 0x0, 0x0, 0x5D, 0x29, 0x0, 0x0, 0x5D, 0x55, 0x0, 0x0, 0x5D, 0xC5, 0x0, 0x0, 0x5E, 0x49, 0x0, 0x0, 0x5E, 0xBB, 0x0, 0x0, 0x5E, 0xEE, 0x0, 0x0, 0x5F, 0x21, 0x0, 0x0, 0x5F, 0x6D, 0x0, 0x0, 0x5F, 0xA2, 0x0, 0x0, 0x5F, 0xEF, 0x0, 0x0, 0x60, 0x1F, 0x0, 0x0, 0x60, 0x51, 0x0, 0x0, 0x60, 0x9E, 0x0, 0x0, 0x60, 0xE5, 0x0, 0x0, 0x61, 0x6E, 0x0, 0x0, 0x61, 0xB4, 0x0, 0x0, 0x61, 0xCC, 0x0, 0x0, 0x62, 0x14, 0x0, 0x0, 0x62, 0x81, 0x0, 0x0, 0x62, 0xC6, 0x0, 0x0, 0x63, 0xB, 0x0, 0x0, 0x63, 0x68, 0x0, 0x0, 0x63, 0xEE, 0x0, 0x0, 0x64, 0x3D, 0x0, 0x0, 0x64, 0x64, 0x0, 0x0, 0x64, 0xB2, 0x0, 0x0, 0x64, 0xF7, 0x0, 0x0, 0x65, 0x27, 0x0, 0x0, 0x65, 0x73, 0x0, 0x0, 0x65, 0xDA, 0x0, 0x0, 0x66, 0x38, 0x0, 0x0, 0x66, 0xBD, 0x0, 0x0, 0x67, 0xB, 0x0, 0x0, 0x67, 0x5C, 0x0, 0x0, 0x67, 0xAC, 0x0, 0x0, 0x68, 0x5, 0x0, 0x0, 0x68, 0x8D, 0x0, 0x0, 0x69, 0x0, 0x0, 0x0, 0x69, 0x75, 0x0, 0x0, 0x69, 0xDF, 0x0, 0x0, 0x6A, 0x1C, 0x0, 0x0, 0x6A, 0x39, 0x0, 0x0, 0x6A, 0xAB, 0x0, 0x0, 0x6B, 0x9, 0x0, 0x0, 0x6B, 0x21, 0x0, 0x0, 0x6B, 0x98, 0x0, 0x0, 0x6C, 0x3E, 0x0, 0x0, 0x6C, 0xEF, 0x0, 0x0, 0x6D, 0x7C, 0x0, 0x0, 0x6D, 0xFB, 0x0, 0x0, 0x6E, 0xA6, 0x0, 0x0, 0x6F, 0x2A, 0x0, 0x0, 0x6F, 0x9E, 0x0, 0x0, 0x6F, 0xD5, 0x0, 0x0, 0x70, 0x3B, 0x0, 0x0, 0x70, 0x7C, 0x0, 0x0, 0x70, 0xD3, 0x0, 0x0, 0x71, 0x44, 0x0, 0x0, 0x71, 0x80, 0x0, 0x0, 0x71, 0xCC, 0x0, 0x0, 0x72, 0x15, 0x0, 0x0, 0x72, 0x49, 0x0, 0x0, 0x72, 0x7D, 0x0, 0x0, 0x72, 0xC3, 0x0, 0x0, 0x73, 0xC, 0x0, 0x0, 0x73, 0x4D, 0x0, 0x0, 0x73, 0x90, 0x0, 0x0, 0x73, 0xAC, 0x0, 0x0, 0x73, 0xC4, 0x0, 0x0, 0x73, 0xEB, 0x0, 0x0, 0x74, 0x12, 0x0, 0x0, 0x74, 0x40, 0x0, 0x0, 0x74, 0x6F, 0x0, 0x0, 0x74, 0xBC, 0x0, 0x0, 0x75, 0x4, 0x0, 0x0, 0x75, 0x33, 0x0, 0x0, 0x75, 0x5E, 0x0, 0x0, 0x75, 0x8C, 0x0, 0x0, 0x75, 0xBB, 0x0, 0x0, 0x75, 0xE6, 0x0, 0x0, 0x76, 0x11, 0x0, 0x0, 0x76, 0x2B, 0x0, 0x0, 0x76, 0x3B, 0x0, 0x0, 0x76, 0x4B, 0x0, 0x0, 0x76, 0x5B, 0x0, 0x0, 0x76, 0x74, 0x0, 0x0, 0x76, 0x86, 0x0, 0x0, 0x76, 0x98, 0x0, 0x0, 0x76, 0xAA, 0x0, 0x0, 0x76, 0xD2, 0x0, 0x0, 0x76, 0xEC, 0x0, 0x0, 0x76, 0xFE, 0x0, 0x0, 0x77, 0x2E, 0x0, 0x0, 0x77, 0x4F, 0x0, 0x0, 0x77, 0x6F, 0x0, 0x0, 0x77, 0x98, 0x0, 0x0, 0x77, 0xB2, 0x0, 0x0, 0x77, 0xE2, 0x0, 0x0, 0x78, 0xA, 0x0, 0x0, 0x78, 0x4D, 0x0, 0x0, 0x78, 0x87, 0x0, 0x0, 0x78, 0xCB, 0x0, 0x0, 0x78, 0xF6, 0x0, 0x0, 0x79, 0x29, 0x0, 0x0, 0x79, 0x5D, 0x0, 0x0, 0x79, 0xBA, 0x0, 0x0, 0x79, 0xD5, 0x0, 0x0, 0x7A, 0x38, 0x0, 0x0, 0x7A, 0x71, 0x0, 0x0, 0x7A, 0xB6, 0x0, 0x0, 0x7A, 0xD4, 0x0, 0x0, 0x7A, 0xF7, 0x0, 0x0, 0x7B, 0x1A, 0x0, 0x0, 0x7B, 0x3D, 0x0, 0x0, 0x7B, 0x5A, 0x0, 0x0, 0x7B, 0x77, 0x0, 0x0, 0x7B, 0x9D, 0x0, 0x0, 0x7B, 0xC7, 0x0, 0x0, 0x7B, 0xEE, 0x0, 0x0, 0x7C, 0x2F, 0x0, 0x0, 0x7C, 0x5C, 0x0, 0x0, 0x7C, 0x88, 0x0, 0x0, 0x7C, 0xB5, 0x0, 0x0, 0x7C, 0xDF, 0x0, 0x0, 0x7D, 0x21, 0x0, 0x0, 0x7D, 0x33, 0x0, 0x0, 0x7D, 0x4D, 0x0, 0x0, 0x7D, 0x67, 0x0, 0x0, 0x7D, 0xAA, 0x0, 0x0, 0x7D, 0xC4, 0x0, 0x0, 0x7D, 0xE3, 0x0, 0x0, 0x7E, 0x2, 0x0, 0x0, 0x7E, 0x1F, 0x0, 0x0, 0x7E, 0x3D, 0x0, 0x0, 0x7E, 0x60, 0x0, 0x0, 0x7E, 0x7E, 0x0, 0x0, 0x7E, 0xAA, 0x0, 0x0, 0x7E, 0xC8, 0x0, 0x0, 0x7E, 0xE7, 0x0, 0x0, 0x7E, 0xF9, 0x0, 0x0, 0x7F, 0xB, 0x0, 0x0, 0x7F, 0x24, 0x0, 0x0, 0x7F, 0x36, 0x0, 0x0, 0x7F, 0x66, 0x0, 0x0, 0x7F, 0x8F, 0x0, 0x0, 0x7F, 0xDC, 0x0, 0x0, 0x80, 0xF, 0x0, 0x0, 0x80, 0x21, 0x0, 0x0, 0x80, 0x3B, 0x0, 0x0, 0x80, 0x65, 0x0, 0x0, 0x80, 0x77, 0x0, 0x0, 0x80, 0x91, 0x0, 0x0, 0x80, 0xBD, 0x0, 0x0, 0x81, 0x9, 0x0, 0x0, 0x81, 0x3A, 0x0, 0x0, 0x81, 0x62, 0x0, 0x0, 0x81, 0x76, 0x0, 0x0, 0x81, 0x9E, 0x0, 0x0, 0x81, 0xB2, 0x0, 0x0, 0x81, 0xCF, 0x0, 0x0, 0x81, 0xEE, 0x0, 0x0, 0x82, 0x11, 0x0, 0x0, 0x82, 0x35, 0x0, 0x0, 0x82, 0x53, 0x0, 0x0, 0x82, 0x7B, 0x0, 0x0, 0x82, 0xAA, 0x0, 0x0, 0x82, 0xCC, 0x0, 0x0, 0x82, 0xEE, 0x0, 0x0, 0x83, 0x17, 0x0, 0x0, 0x83, 0x31, 0x0, 0x0, 0x83, 0x61, 0x0, 0x0, 0x83, 0x92, 0x0, 0x0, 0x83, 0xB6, 0x0, 0x0, 0x83, 0xF2, 0x0, 0x0, 0x84, 0x35, 0x0, 0x0, 0x84, 0x5C, 0x0, 0x0, 0x84, 0x91, 0x0, 0x0, 0x84, 0xCB, 0x0, 0x0, 0x84, 0xE5, 0x0, 0x0, 0x85, 0xA, 0x0, 0x0, 0x85, 0x4F, 0x0, 0x0, 0x85, 0x78, 0x0, 0x0, 0x85, 0xA2, 0x0, 0x0, 0x85, 0xD1, 0x0, 0x0, 0x86, 0x1, 0x0, 0x0, 0x86, 0x44, 0x0, 0x0, 0x86, 0x5C, 0x0, 0x0, 0x86, 0x6E, 0x0, 0x0, 0x86, 0x94, 0x0, 0x0, 0x86, 0xA6, 0x0, 0x0, 0x86, 0xB8, 0x0, 0x0, 0x86, 0xD1, 0x0, 0x0, 0x86, 0xEF, 0x0, 0x0, 0x87, 0xD, 0x0, 0x0, 0x87, 0x3C, 0x0, 0x0, 0x87, 0x60, 0x0, 0x0, 0x87, 0x89, 0x0, 0x0, 0x87, 0xCE, 0x0, 0x0, 0x88, 0x2, 0x0, 0x0, 0x88, 0x3E, 0x0, 0x0, 0x88, 0x65, 0x0, 0x0, 0x88, 0x77, 0x0, 0x0, 0x88, 0x89, 0x0, 0x0, 0x88, 0x9B, 0x0, 0x0, 0x88, 0xAD, 0x0, 0x0, 0x88, 0xBF, 0x0, 0x0, 0x88, 0xEB, 0x0, 0x0, 0x89, 0x10, 0x0, 0x0, 0x89, 0x36, 0x0, 0x0, 0x89, 0x50, 0x0, 0x0, 0x89, 0x6F, 0x0, 0x0, 0x89, 0xC6, 0x0, 0x0, 0x8A, 0x43, 0x0, 0x0, 0x8A, 0xB9, 0x0, 0x0, 0x8A, 0xF0, 0x0, 0x0, 0x8B, 0x19, 0x0, 0x0, 0x8B, 0x19, 0x0, 0x0, 0x8B, 0x44, 0x0, 0x0, 0x8B, 0x73, 0x0, 0x0, 0x8B, 0xC5, 0x0, 0x0, 0x8B, 0xF9, 0x0, 0x0, 0x8C, 0xB, 0x0, 0x0, 0x8C, 0x1D, 0x0, 0x0, 0x8C, 0x37, 0x0, 0x0, 0x8C, 0x49, 0x0, 0x0, 0x8C, 0x5B, 0x0, 0x0, 0x8C, 0x97, 0x0, 0x0, 0x8D, 0xB, 0x0, 0x0, 0x8D, 0x30, 0x0, 0x0, 0x8D, 0x42, 0x0, 0x0, 0x8D, 0x79, 0x0, 0x0, 0x8D, 0x93, 0x0, 0x0, 0x8D, 0xA5, 0x0, 0x0, 0x8D, 0xF3, 0x0, 0x0, 0x8E, 0x2A, 0x0, 0x0, 0x8E, 0x53, 0x0, 0x0, 0x8E, 0xBB, 0x0, 0x0, 0x8F, 0xE, 0x0, 0x0, 0x8F, 0x38, 0x0, 0x0, 0x8F, 0x76, 0x0, 0x0, 0x8F, 0xB1, 0x0, 0x0, 0x8F, 0xFE, 0x0, 0x0, 0x90, 0x4E, 0x0, 0x0, 0x90, 0x89, 0x0, 0x0, 0x90, 0xE2, 0x0, 0x0, 0x91, 0x16, 0x0, 0x0, 0x91, 0x52, 0x0, 0x0, 0x91, 0x7F, 0x0, 0x0, 0x91, 0xB4, 0x0, 0x0, 0x91, 0xDA, 0x0, 0x0, 0x92, 0x17, 0x0, 0x0, 0x92, 0x47, 0x0, 0x0, 0x92, 0x77, 0x0, 0x0, 0x92, 0x87, 0x0, 0x0, 0x92, 0xA3, 0x0, 0x0, 0x92, 0xB3, 0x0, 0x0, 0x92, 0xF8, 0x0, 0x0, 0x93, 0x4F, 0x0, 0x0, 0x93, 0xBF, 0x0, 0x0, 0x94, 0x2F, 0x0, 0x0, 0x94, 0x47, 0x0, 0x0, 0x94, 0x63, 0x0, 0x0, 0x94, 0xC0, 0x0, 0x0, 0x94, 0xD0, 0x0, 0x0, 0x94, 0xF0, 0x0, 0x0, 0x95, 0x1E, 0x0, 0x0, 0x95, 0x92, 0x0, 0x0, 0x95, 0xBC, 0x0, 0x0, 0x95, 0xF1, 0x0, 0x0, 0x96, 0x17, 0x0, 0x0, 0x96, 0x4E, 0x0, 0x0, 0x96, 0xC0, 0x0, 0x0, 0x97, 0x14, 0x0, 0x0, 0x97, 0x84, 0x0, 0x0, 0x97, 0xEE, 0x0, 0x0, 0x98, 0x60, 0x0, 0x0, 0x98, 0x8E, 0x0, 0x0, 0x99, 0x16, 0x0, 0x0, 0x99, 0x84, 0x0, 0x0, 0x99, 0xEE, 0x0, 0x0, 0x9A, 0x2C, 0x0, 0x0, 0x9A, 0x98, 0x0, 0x0, 0x9A, 0xCA, 0x0, 0x0, 0x9B, 0x22, 0x0, 0x0, 0x9B, 0xA8, 0x0, 0x0, 0x9B, 0xEF, 0x0, 0x0, 0x9C, 0x49, 0x0, 0x0, 0x9C, 0xB1, 0x0, 0x0, 0x9D, 0x12, 0x0, 0x0, 0x9D, 0x4F, 0x0, 0x0, 0x9D, 0x99, 0x0, 0x0, 0x9E, 0xF, 0x0, 0x0, 0x9E, 0x70, 0x0, 0x0, 0x9E, 0xE9, 0x0, 0x0, 0x9F, 0x2C, 0x0, 0x0, 0x9F, 0xBC, 0x0, 0x0, 0xA0, 0x3D, 0x0, 0x0, 0xA0, 0x99, 0x0, 0x0, 0xA0, 0xA9, 0x0, 0x0, 0xA1, 0x25, 0x0, 0x0, 0xA1, 0x9D, 0x0, 0x0, 0xA2, 0xD, 0x0, 0x0, 0xA2, 0x72, 0x0, 0x0, 0xA2, 0xE2, 0x0, 0x0, 0xA3, 0x4A, 0x0, 0x0, 0xA3, 0x7B, 0x0, 0x0, 0xA3, 0xAB, 0x0, 0x0, 0xA4, 0x15, 0x0, 0x0, 0xA4, 0x43, 0x0, 0x0, 0xA4, 0xB4, 0x0, 0x0, 0xA5, 0xB, 0x0, 0x0, 0xA5, 0x6F, 0x0, 0x0, 0xA5, 0xEE, 0x0, 0x0, 0xA6, 0x38, 0x0, 0x0, 0xA6, 0x82, 0x0, 0x0, 0xA6, 0xBD, 0x0, 0x0, 0xA6, 0xD5, 0x0, 0x0, 0xA7, 0x39, 0x0, 0x0, 0xA7, 0xBA, 0x0, 0x0, 0xA8, 0x3B, 0x0, 0x0, 0xA8, 0x91, 0x0, 0x0, 0xA8, 0xFC, 0x0, 0x0, 0xA9, 0x6B, 0x0, 0x0, 0xA9, 0xCA, 0x0, 0x0, 0xAA, 0x14, 0x0, 0x0, 0xAA, 0x43, 0x0, 0x0, 0xAA, 0x8F, 0x0, 0x0, 0xAA, 0xE5, 0x0, 0x0, 0xAB, 0x40, 0x0, 0x0, 0xAB, 0xB2, 0x0, 0x0, 0xAB, 0xE0, 0x0, 0x0, 0xAC, 0x20, 0x0, 0x0, 0xAC, 0x66, 0x0, 0x0, 0xAC, 0xE9, 0x0, 0x0, 0xAD, 0x19, 0x0, 0x0, 0xAD, 0x56, 0x0, 0x0, 0xAD, 0x86, 0x0, 0x0, 0xAD, 0xC1, 0x0, 0x0, 0xAE, 0xC, 0x0, 0x0, 0xAE, 0x62, 0x0, 0x0, 0xAE, 0xA6, 0x0, 0x0, 0xAF, 0x10, 0x0, 0x0, 0xAF, 0x87, 0x0, 0x0, 0xAF, 0xDA, 0x0, 0x0, 0xB0, 0x58, 0x0, 0x0, 0xB0, 0xB5, 0x0, 0x0, 0xB0, 0xD5, 0x0, 0x0, 0xB1, 0x25, 0x0, 0x0, 0xB1, 0x7C, 0x0, 0x0, 0xB1, 0xE5, 0x0, 0x0, 0xB2, 0x13, 0x0, 0x0, 0xB2, 0x4C, 0x0, 0x0, 0xB2, 0x8B, 0x0, 0x0, 0xB2, 0xC6, 0x0, 0x0, 0xB2, 0xF5, 0x0, 0x0, 0xB3, 0x1A, 0x0, 0x0, 0xB3, 0x40, 0x0, 0x0, 0xB3, 0xD6, 0x0, 0x0, 0xB4, 0x6, 0x0, 0x0, 0xB4, 0x41, 0x0, 0x0, 0xB4, 0x71, 0x0, 0x0, 0xB4, 0xAC, 0x0, 0x0, 0xB4, 0xF1, 0x0, 0x0, 0xB5, 0x41, 0x0, 0x0, 0xB5, 0x7F, 0x0, 0x0, 0xB5, 0xDA, 0x0, 0x0, 0xB6, 0x49, 0x0, 0x0, 0xB6, 0x96, 0x0, 0x0, 0xB6, 0xFD, 0x0, 0x0, 0xB7, 0x5E, 0x0, 0x0, 0xB7, 0xCA, 0x0, 0x0, 0xB8, 0x23, 0x0, 0x0, 0xB8, 0x73, 0x0, 0x0, 0xB8, 0xA2, 0x0, 0x0, 0xB8, 0xFF, 0x0, 0x0, 0xB9, 0x59, 0x0, 0x0, 0xB9, 0xB0, 0x0, 0x0, 0xBA, 0x2D, 0x0, 0x0, 0xBA, 0x9E, 0x0, 0x0, 0xBA, 0xE3, 0x0, 0x0, 0xBB, 0x2B, 0x0, 0x0, 0xBB, 0x87, 0x0, 0x0, 0xBB, 0xE4, 0x0, 0x0, 0xBC, 0x4E, 0x0, 0x0, 0xBC, 0xBD, 0x0, 0x0, 0xBD, 0x36, 0x0, 0x0, 0xBD, 0xB4, 0x0, 0x0, 0xBE, 0x4E, 0x0, 0x0, 0xBE, 0xE0, 0x0, 0x0, 0xBF, 0x4F, 0x0, 0x0, 0xBF, 0xB7, 0x0, 0x0, 0xBF, 0xFA, 0x0, 0x0, 0xC0, 0x40, 0x0, 0x0, 0xC0, 0xBF, 0x0, 0x0, 0xC1, 0x2E, 0x0, 0x0, 0xC1, 0xF2, 0x0, 0x0, 0xC2, 0xB1, 0x0, 0x0, 0xC3, 0x28, 0x0, 0x0, 0xC3, 0x9C, 0x0, 0x0, 0xC3, 0xEE, 0x0, 0x0, 0xC4, 0x3B, 0x0, 0x0, 0xC4, 0x92, 0x0, 0x0, 0xC4, 0xB8, 0x0, 0x0, 0xC4, 0xF6, 0x0, 0x0, 0xC5, 0x16, 0x0, 0x0, 0xC5, 0x37, 0x0, 0x0, 0xC5, 0x75, 0x0, 0x0, 0xC6, 0xA6, 0x0, 0x0, 0xC7, 0x48, 0x0, 0x0, 0xC7, 0x68, 0x0, 0x0, 0xC7, 0x88, 0x0, 0x0, 0xC7, 0xDD, 0x0, 0x0, 0xC8, 0x3B, 0x0, 0x0, 0xC8, 0xA9, 0x0, 0x0, 0xC8, 0xD3, 0x0, 0x0, 0xC8, 0xF7, 0x0, 0x0, 0xC9, 0x46, 0x0, 0x0, 0xC9, 0x91, 0x0, 0x0, 0xC9, 0xA9, 0x0, 0x0, 0xC9, 0xC1, 0x0, 0x0, 0xC9, 0xD9, 0x0, 0x0, 0xC9, 0xF1, 0x0, 0x0, 0xCA, 0x3D, 0x0, 0x0, 0xCA, 0x86, 0x0, 0x0, 0xCA, 0xC5, 0x0, 0x0, 0xCB, 0x4, 0x0, 0x0, 0xCB, 0x1C, 0x0, 0x0, 0xCB, 0x34, 0x0, 0x0, 0xCB, 0x69, 0x0, 0x0, 0xCB, 0x9E, 0x0, 0x0, 0xCB, 0xF2, 0x0, 0x0, 0xCC, 0x43, 0x0, 0x0, 0xCC, 0xD4, 0x0, 0x0, 0xCD, 0x5C, 0x0, 0x0, 0xCD, 0x74, 0x0, 0x0, 0xCD, 0x8C, 0x0, 0x0, 0xCD, 0xC8, 0x0, 0x0, 0xCE, 0x2, 0x0, 0x0, 0xCE, 0x1A, 0x0, 0x0, 0xCE, 0x32, 0x0, 0x0, 0xCE, 0x80, 0x0, 0x0, 0xCE, 0xCA, 0x0, 0x0, 0xCF, 0xA, 0x0, 0x0, 0xCF, 0x88, 0x0, 0x0, 0xCF, 0xF9, 0x0, 0x0, 0xD0, 0x54, 0x0, 0x0, 0xD0, 0xA4, 0x0, 0x0, 0xD0, 0xBC, 0x0, 0x0, 0xD0, 0xD4, 0x0, 0x0, 0xD1, 0x1A, 0x0, 0x0, 0xD1, 0x60, 0x0, 0x0, 0xD1, 0x78, 0x0, 0x0, 0xD1, 0x90, 0x0, 0x0, 0xD1, 0xA8, 0x0, 0x0, 0xD1, 0xC0, 0x0, 0x0, 0xD2, 0x30, 0x0, 0x0, 0xD2, 0x8A, 0x0, 0x0, 0xD2, 0xE5, 0x0, 0x0, 0xD3, 0x3, 0x0, 0x0, 0xD3, 0x23, 0x0, 0x0, 0xD3, 0x3B, 0x0, 0x0, 0xD3, 0x53, 0x0, 0x0, 0xD3, 0x99, 0x0, 0x0, 0xD4, 0x6, 0x0, 0x0, 0xD4, 0x8E, 0x0, 0x0, 0xD5, 0x12, 0x0, 0x0, 0xD5, 0x8A, 0x0, 0x0, 0xD5, 0xFD, 0x0, 0x0, 0xD6, 0x67, 0x0, 0x0, 0xD6, 0xDB, 0x0, 0x0, 0xD7, 0x4D, 0x0, 0x0, 0xD7, 0xAF, 0x0, 0x0, 0xD8, 0x10, 0x0, 0x0, 0xD8, 0x7A, 0x0, 0x0, 0xD8, 0xD9, 0x0, 0x0, 0xD9, 0x32, 0x0, 0x0, 0xD9, 0x89, 0x0, 0x0, 0xDA, 0x0, 0x0, 0x0, 0xDA, 0x18, 0x0, 0x0, 0xDA, 0x30, 0x0, 0x0, 0xDA, 0x98, 0x0, 0x0, 0xDA, 0xFA, 0x0, 0x0, 0xDB, 0x5A, 0x0, 0x0, 0xDB, 0xC9, 0x0, 0x0, 0xDC, 0x31, 0x0, 0x0, 0xDC, 0xC5, 0x0, 0x0, 0xDD, 0x15, 0x0, 0x0, 0xDD, 0x62, 0x0, 0x0, 0xDD, 0xDF, 0x0, 0x0, 0xDE, 0x5B, 0x0, 0x0, 0xDE, 0xC6, 0x0, 0x0, 0xDF, 0x31, 0x0, 0x0, 0xDF, 0x61, 0x0, 0x0, 0xDF, 0x91, 0x0, 0x0, 0xDF, 0xD9, 0x0, 0x0, 0xE0, 0x21, 0x0, 0x0, 0xE0, 0x67, 0x0, 0x0, 0xE0, 0xAF, 0x0, 0x0, 0xE1, 0x3C, 0x0, 0x0, 0xE1, 0xBF, 0x0, 0x0, 0xE2, 0x2B, 0x0, 0x0, 0xE2, 0x92, 0x0, 0x0, 0xE2, 0xDD, 0x0, 0x0, 0xE3, 0x27, 0x0, 0x0, 0xE3, 0x61, 0x0, 0x0, 0xE3, 0xE5, 0x0, 0x0, 0xE4, 0x76, 0x0, 0x0, 0xE4, 0xA0, 0x0, 0x0, 0xE4, 0xC2, 0x0, 0x0, 0xE5, 0x15, 0x0, 0x0, 0xE5, 0x88, 0x0, 0x0, 0xE5, 0xB5, 0x0, 0x0, 0xE5, 0xCF, 0x0, 0x0, 0xE5, 0xED, 0x0, 0x0, 0xE6, 0x24, 0x0, 0x0, 0xE6, 0x82, 0x0, 0x0, 0xE7, 0x31, 0x0, 0x0, 0xE7, 0x8F, 0x0, 0x0, 0xE7, 0xE8, 0x0, 0x0, 0xE8, 0x21, 0x0, 0x0, 0xE8, 0x71, 0x0, 0x0, 0xE9, 0x23, 0x0, 0x0, 0xE9, 0x8C, 0x0, 0x0, 0xE9, 0xE0, 0x0, 0x0, 0xEA, 0x29, 0x0, 0x0, 0xEA, 0x41, 0x0, 0x0, 0xEA, 0x6E, 0x0, 0x0, 0xEA, 0x7E, 0x0, 0x0, 0xEA, 0xB9, 0x0, 0x0, 0xEA, 0xEF, 0x0, 0x0, 0xEB, 0x28, 0x0, 0x0, 0xEB, 0x5B, 0x0, 0x0, 0xEB, 0x96, 0x0, 0x0, 0xEB, 0xA6, 0x0, 0x0, 0xEC, 0x0, 0x0, 0x0, 0xEC, 0x57, 0x0, 0x0, 0xEC, 0xB4, 0x0, 0x0, 0xED, 0xD, 0x0, 0x0, 0xED, 0x95, 0x0, 0x0, 0xEE, 0x40, 0x0, 0x0, 0xEE, 0xA2, 0x0, 0x0, 0xEE, 0xE1, 0x0, 0x0, 0xEF, 0x1E, 0x0, 0x0, 0xEF, 0x63, 0x0, 0x0, 0xEF, 0xB1, 0x0, 0x0, 0xEF, 0xFC, 0x0, 0x0, 0xF0, 0xC, 0x0, 0x0, 0xF0, 0x4A, 0x0, 0x0, 0xF0, 0x86, 0x0, 0x0, 0xF0, 0xFC, 0x0, 0x0, 0xF1, 0x5B, 0x0, 0x0, 0xF1, 0x6B, 0x0, 0x0, 0xF1, 0x7B, 0x0, 0x0, 0xF1, 0x8B, 0x0, 0x0, 0xF1, 0xE1, 0x0, 0x0, 0xF2, 0x52, 0x0, 0x0, 0xF2, 0xB7, 0x0, 0x0, 0xF2, 0xC7, 0x0, 0x0, 0xF2, 0xF0, 0x0, 0x0, 0xF3, 0x0, 0x0, 0x0, 0xF3, 0x10, 0x0, 0x0, 0xF3, 0x61, 0x0, 0x0, 0xF3, 0x71, 0x0, 0x0, 0xF3, 0xAA, 0x0, 0x0, 0xF3, 0xF9, 0x0, 0x0, 0xF4, 0x5B, 0x0, 0x0, 0xF4, 0xC9, 0x0, 0x0, 0xF5, 0x12, 0x0, 0x0, 0xF5, 0x42, 0x0, 0x0, 0xF5, 0x72, 0x0, 0x0, 0xF5, 0xD3, 0x0, 0x0, 0xF6, 0x4, 0x0, 0x0, 0xF6, 0x1F, 0x0, 0x0, 0xF6, 0x53, 0x0, 0x0, 0xF6, 0x8C, 0x0, 0x0, 0xF6, 0xAB, 0x0, 0x0, 0xF6, 0xEC, 0x0, 0x0, 0xF7, 0x1F, 0x0, 0x0, 0xF7, 0x50, 0x0, 0x0, 0xF7, 0xA8, 0x0, 0x0, 0xF8, 0x12, 0x0, 0x0, 0xF8, 0x54, 0x0, 0x0, 0xF8, 0x9E, 0x0, 0x0, 0xF8, 0xC4, 0x0, 0x0, 0xF8, 0xFC, 0x0, 0x0, 0xF9, 0x37, 0x0, 0x0, 0xF9, 0xA3, 0x0, 0x0, 0xFA, 0xF, 0x0, 0x0, 0xFA, 0x76, 0x0, 0x0, 0xFB, 0x15, 0x0, 0x0, 0xFB, 0x6B, 0x0, 0x0, 0xFB, 0xBF, 0x0, 0x0, 0xFC, 0x1C, 0x0, 0x0, 0xFC, 0x75, 0x0, 0x0, 0xFC, 0xD2, 0x0, 0x0, 0xFD, 0x2F, 0x0, 0x0, 0xFD, 0x9F, 0x0, 0x0, 0xFD, 0xD6, 0x0, 0x0, 0xFE, 0xE, 0x0, 0x0, 0xFE, 0x69, 0x0, 0x0, 0xFE, 0xB9, 0x0, 0x0, 0xFF, 0x2, 0x0, 0x0, 0xFF, 0x47, 0x0, 0x0, 0xFF, 0x78, 0x0, 0x0, 0xFF, 0xAA, 0x0, 0x0, 0xFF, 0xFD, 0x0, 0x1, 0x0, 0x40, 0x0, 0x1, 0x0, 0x7C, 0x0, 0x1, 0x0, 0xB6, 0x0, 0x1, 0x1, 0x11, 0x0, 0x1, 0x1, 0x40, 0x0, 0x1, 0x1, 0xA0, 0x0, 0x1, 0x2, 0x7, 0x0, 0x1, 0x2, 0x3B, 0x0, 0x1, 0x2, 0xB1, 0x0, 0x1, 0x3, 0x1A, 0x0, 0x1, 0x3, 0x87, 0x0, 0x1, 0x3, 0xC0, 0x0, 0x1, 0x3, 0xD2, 0x0, 0x1, 0x3, 0xE4, 0x0, 0x1, 0x3, 0xF6, 0x0, 0x1, 0x4, 0x8, 0x0, 0x1, 0x4, 0x1A, 0x0, 0x1, 0x4, 0x6E, 0x0, 0x1, 0x4, 0x80, 0x0, 0x1, 0x4, 0x92, 0x0, 0x1, 0x5, 0x18, 0x0, 0x1, 0x5, 0xA5, 0x0, 0x1, 0x6, 0x30, 0x0, 0x1, 0x6, 0xA2, 0x0, 0x1, 0x7, 0x51, 0x0, 0x1, 0x7, 0xC5, 0x0, 0x1, 0x8, 0x50, 0x0, 0x1, 0x8, 0xB7, 0x0, 0x1, 0x9, 0x15, 0x0, 0x1, 0x9, 0xAE, 0x0, 0x1, 0xA, 0x22, 0x0, 0x1, 0xA, 0x88, 0x0, 0x1, 0xB, 0x0, 0x0, 0x1, 0xB, 0x10, 0x0, 0x1, 0xB, 0x82, 0x0, 0x1, 0xC, 0x14, 0x0, 0x1, 0xC, 0x2C, 0x0, 0x1, 0xC, 0x44, 0x0, 0x1, 0xC, 0xB6, 0x0, 0x1, 0xD, 0x11, 0x0, 0x1, 0xD, 0xB5, 0x0, 0x1, 0xE, 0x2E, 0x0, 0x1, 0xE, 0xAA, 0x0, 0x1, 0xF, 0xD, 0x0, 0x1, 0xF, 0xAA, 0x0, 0x1, 0x10, 0x8, 0x0, 0x1, 0x10, 0x43, 0x0, 0x1, 0x10, 0xC4, 0x0, 0x1, 0x11, 0x24, 0x0, 0x1, 0x11, 0xA0, 0x0, 0x1, 0x11, 0xF5, 0x0, 0x1, 0x12, 0x7E, 0x0, 0x1, 0x12, 0xEB, 0x0, 0x1, 0x13, 0x36, 0x0, 0x1, 0x13, 0x96, 0x0, 0x1, 0x13, 0xE2, 0x0, 0x1, 0x14, 0x73, 0x0, 0x1, 0x14, 0xF5, 0x0, 0x1, 0x15, 0x7F, 0x0, 0x1, 0x16, 0x0, 0x0, 0x1, 0x16, 0x88, 0x0, 0x1, 0x17, 0x10, 0x0, 0x1, 0x17, 0x97, 0x0, 0x1, 0x17, 0xEF, 0x0, 0x1, 0x18, 0x63, 0x0, 0x1, 0x18, 0xC6, 0x0, 0x1, 0x19, 0x26, 0x0, 0x1, 0x19, 0x9B, 0x0, 0x1, 0x1A, 0x1, 0x0, 0x1, 0x1A, 0x50, 0x0, 0x1, 0x1A, 0xC5, 0x0, 0x1, 0x1B, 0x3D, 0x0, 0x1, 0x1B, 0x9A, 0x0, 0x1, 0x1B, 0xDC, 0x0, 0x1, 0x1C, 0x20, 0x0, 0x1, 0x1C, 0x30, 0x0, 0x1, 0x1C, 0x6B, 0x0, 0x1, 0x1C, 0xB4, 0x0, 0x1, 0x1C, 0xE4, 0x0, 0x1, 0x1D, 0x11, 0x0, 0x1, 0x1D, 0x4C, 0x0, 0x1, 0x1D, 0xB0, 0x0, 0x1, 0x1D, 0xDE, 0x0, 0x1, 0x1E, 0x13, 0x0, 0x1, 0x1E, 0x32, 0x0, 0x1, 0x1E, 0xA1, 0x0, 0x1, 0x1E, 0xFB, 0x0, 0x1, 0x1F, 0x49, 0x0, 0x1, 0x1F, 0x98, 0x0, 0x1, 0x1F, 0xC7, 0x0, 0x1, 0x20, 0x1A, 0x0, 0x1, 0x20, 0xA2, 0x0, 0x1, 0x21, 0x20, 0x0, 0x1, 0x21, 0x60, 0x0, 0x1, 0x21, 0xB1, 0x0, 0x1, 0x22, 0xB, 0x0, 0x1, 0x22, 0x8F, 0x0, 0x1, 0x22, 0xC7, 0x0, 0x1, 0x23, 0x14, 0x0, 0x1, 0x23, 0x42, 0x0, 0x1, 0x23, 0x6F, 0x0, 0x1, 0x23, 0xB5, 0x0, 0x1, 0x24, 0x16, 0x0, 0x1, 0x24, 0x6C, 0x0, 0x1, 0x24, 0xCC, 0x0, 0x1, 0x25, 0x22, 0x0, 0x1, 0x25, 0x79, 0x0, 0x1, 0x25, 0xF5, 0x0, 0x1, 0x26, 0x19, 0x0, 0x1, 0x26, 0x3B, 0x0, 0x1, 0x26, 0x5D, 0x0, 0x1, 0x26, 0x7E, 0x0, 0x1, 0x26, 0xA0, 0x0, 0x1, 0x26, 0xCE, 0x0, 0x1, 0x26, 0xFC, 0x0, 0x1, 0x27, 0x2E, 0x0, 0x1, 0x27, 0x62, 0x0, 0x1, 0x27, 0x97, 0x0, 0x1, 0x27, 0xC3, 0x0, 0x1, 0x27, 0xD7, 0x0, 0x1, 0x27, 0xFE, 0x0, 0x1, 0x28, 0x40, 0x0, 0x1, 0x28, 0xA0, 0x0, 0x1, 0x28, 0xFB, 0x0, 0x1, 0x29, 0x3A, 0x0, 0x1, 0x29, 0xD3, 0x0, 0x1, 0x2A, 0x5A, 0x0, 0x1, 0x2A, 0xCA, 0x0, 0x1, 0x2B, 0x36, 0x0, 0x1, 0x2B, 0x94, 0x0, 0x1, 0x2C, 0xA, 0x0, 0x1, 0x2C, 0x71, 0x0, 0x1, 0x2C, 0xC2, 0x0, 0x1, 0x2C, 0xF6, 0x0, 0x1, 0x2D, 0x10, 0x0, 0x1, 0x2D, 0x30, 0x0, 0x1, 0x2D, 0x67, 0x0, 0x1, 0x2D, 0x7B, 0x0, 0x1, 0x2D, 0xAA, 0x0, 0x1, 0x2D, 0xFD, 0x0, 0x1, 0x2E, 0x3D, 0x0, 0x1, 0x2E, 0x99, 0x0, 0x1, 0x2E, 0xC9, 0x0, 0x1, 0x2E, 0xF7, 0x0, 0x1, 0x2F, 0x54, 0x0, 0x1, 0x2F, 0xA4, 0x0, 0x1, 0x30, 0xA, 0x0, 0x1, 0x30, 0x5D, 0x0, 0x1, 0x30, 0x9F, 0x0, 0x1, 0x31, 0x5, 0x0, 0x1, 0x31, 0x54, 0x0, 0x1, 0x31, 0x68, 0x0, 0x1, 0x31, 0xAF, 0x0, 0x1, 0x31, 0xF4, 0x0, 0x1, 0x32, 0x37, 0x0, 0x1, 0x32, 0xBE, 0x0, 0x1, 0x33, 0x1E, 0x0, 0x1, 0x33, 0x71, 0x0, 0x1, 0x33, 0x83, 0x0, 0x1, 0x33, 0xBA, 0x0, 0x1, 0x34, 0x2F, 0x0, 0x1, 0x34, 0x41, 0x0, 0x1, 0x34, 0x88, 0x0, 0x1, 0x34, 0x9E, 0x0, 0x1, 0x34, 0xB4, 0x0, 0x1, 0x34, 0xCC, 0x0, 0x1, 0x34, 0xE4, 0x0, 0x1, 0x34, 0xFC, 0x0, 0x1, 0x35, 0x14, 0x0, 0x1, 0x35, 0x60, 0x0, 0x1, 0x35, 0xA8, 0x0, 0x1, 0x35, 0xE7, 0x0, 0x1, 0x36, 0x5B, 0x0, 0x1, 0x36, 0x6B, 0x0, 0x1, 0x36, 0x83, 0x0, 0x1, 0x36, 0xBE, 0x0, 0x1, 0x37, 0x1E, 0x0, 0x1, 0x37, 0x7F, 0x0, 0x1, 0x37, 0xE2, 0x0, 0x1, 0x38, 0x48, 0x0, 0x1, 0x38, 0x6D, 0x0, 0x1, 0x38, 0x97, 0x0, 0x1, 0x38, 0xBC, 0x0, 0x1, 0x39, 0x0, 0x0, 0x1, 0x39, 0x82, 0x0, 0x1, 0x39, 0xBA, 0x0, 0x1, 0x39, 0xF3, 0x0, 0x1, 0x3A, 0x4D, 0x0, 0x1, 0x3A, 0x85, 0x0, 0x1, 0x3A, 0xBF, 0x0, 0x1, 0x3B, 0x19, 0x0, 0x1, 0x3B, 0x74, 0x0, 0x1, 0x3B, 0xCF, 0x0, 0x1, 0x3B, 0xF0, 0x0, 0x1, 0x3C, 0x10, 0x0, 0x1, 0x3C, 0x36, 0x0, 0x1, 0x3C, 0x36, 0x0, 0x1, 0x3C, 0x36, 0x0, 0x1, 0x3C, 0x36, 0x0, 0x1, 0x3C, 0x36, 0x0, 0x1, 0x3C, 0x36, 0x0, 0x1, 0x3C, 0x36, 0x0, 0x1, 0x3C, 0x36, 0x0, 0x1, 0x3C, 0x36, 0x0, 0x1, 0x3C, 0x36, 0x0, 0x1, 0x3C, 0x36, 0x0, 0x1, 0x3C, 0x36, 0x0, 0x1, 0x3C, 0x36, 0x0, 0x1, 0x3C, 0x36, 0x0, 0x1, 0x3C, 0x50, 0x0, 0x1, 0x3C, 0x8C, 0x0, 0x1, 0x3C, 0xBA, 0x0, 0x1, 0x3C, 0xE7, 0x0, 0x1, 0x3C, 0xF7, 0x0, 0x1, 0x3D, 0x7, 0x0, 0x1, 0x3D, 0x17, 0x0, 0x1, 0x3D, 0x2B, 0x0, 0x1, 0x3D, 0x3F, 0x0, 0x1, 0x3D, 0x57, 0x0, 0x1, 0x3D, 0x7D, 0x0, 0x1, 0x3D, 0xA4, 0x0, 0x1, 0x3D, 0xCC, 0x0, 0x1, 0x3D, 0xF5, 0x0, 0x1, 0x3E, 0x1C, 0x0, 0x1, 0x3E, 0x34, 0x0, 0x1, 0x3E, 0x4C, 0x0, 0x1, 0x3E, 0x8E, 0x0, 0x1, 0x3E, 0xD1, 0x0, 0x1, 0x3F, 0x2, 0x0, 0x1, 0x3F, 0x47, 0x0, 0x1, 0x3F, 0x75, 0x0, 0x1, 0x3F, 0x91, 0x0, 0x1, 0x3F, 0xA1, 0x0, 0x1, 0x3F, 0xB9, 0x0, 0x1, 0x3F, 0xD9, 0x0, 0x1, 0x40, 0x1, 0x0, 0x1, 0x40, 0xE2, 0x0, 0x1, 0x41, 0xF7, 0x0, 0x1, 0x42, 0x32, 0x0, 0x1, 0x42, 0x4F, 0x0, 0x1, 0x42, 0x7B, 0x0, 0x1, 0x42, 0xB6, 0x0, 0x1, 0x42, 0xE4, 0x0, 0x1, 0x43, 0xA, 0x0, 0x1, 0x43, 0x2E, 0x0, 0x1, 0x43, 0xE7, 0x0, 0x1, 0x44, 0x62, 0x0, 0x1, 0x44, 0x74, 0x0, 0x1, 0x44, 0xB0, 0x0, 0x1, 0x44, 0xED, 0x0, 0x1, 0x45, 0x1C, 0x0, 0x1, 0x45, 0xE7, 0x0, 0x1, 0x46, 0x3, 0x0, 0x1, 0x46, 0x23, 0x0, 0x1, 0x46, 0x50, 0x0, 0x1, 0x46, 0x7D, 0x0, 0x1, 0x46, 0x9C, 0x0, 0x1, 0x46, 0xC7, 0x0, 0x1, 0x46, 0xFA, 0x0, 0x1, 0x47, 0x2D, 0x0, 0x1, 0x47, 0x3F, 0x0, 0x1, 0x47, 0x82, 0x0, 0x1, 0x47, 0xED, 0x0, 0x1, 0x48, 0x5, 0x0, 0x1, 0x48, 0x62, 0x0, 0x1, 0x48, 0xAF, 0x0, 0x1, 0x48, 0xEA, 0x0, 0x1, 0x49, 0x35, 0x0, 0x1, 0x49, 0x57, 0x0, 0x1, 0x49, 0xA1, 0x0, 0x1, 0x49, 0xCB, 0x0, 0x1, 0x49, 0xFD, 0x0, 0x1, 0x4A, 0x17, 0x0, 0x1, 0x4A, 0x41, 0x0, 0x1, 0x4A, 0xF0, 0x0, 0x1, 0x4B, 0x12, 0x0, 0x1, 0x4B, 0x3C, 0x0, 0x1, 0x4B, 0x4E, 0x0, 0x1, 0x4B, 0x87, 0x0, 0x1, 0x4B, 0x99, 0x0, 0x1, 0x4B, 0xAB, 0x0, 0x1, 0x4B, 0xBD, 0x0, 0x1, 0x4B, 0xCF, 0x0, 0x1, 0x4B, 0xE1, 0x0, 0x1, 0x4B, 0xF3, 0x0, 0x1, 0x4C, 0x20, 0x0, 0x1, 0x4C, 0x3A, 0x0, 0x1, 0x4C, 0x62, 0x0, 0x1, 0x4C, 0x9C, 0x0, 0x1, 0x4C, 0xD7, 0x0, 0x1, 0x4D, 0x13, 0x0, 0x1, 0x4D, 0x25, 0x0, 0x1, 0x4D, 0x37, 0x0, 0x1, 0x4D, 0x49, 0x0, 0x1, 0x4D, 0x5B, 0x0, 0x1, 0x4D, 0x6D, 0x0, 0x1, 0x4D, 0x7F, 0x0, 0x1, 0x4D, 0x91, 0x0, 0x1, 0x4D, 0xA3, 0x0, 0x1, 0x4D, 0xB5, 0x0, 0x1, 0x4D, 0xC7, 0x0, 0x1, 0x4D, 0xD9, 0x0, 0x1, 0x4D, 0xEB, 0x0, 0x1, 0x4D, 0xFD, 0x0, 0x1, 0x4E, 0x36, 0x0, 0x1, 0x4E, 0x70, 0x0, 0x1, 0x4E, 0x82, 0x0, 0x1, 0x4E, 0x94, 0x0, 0x1, 0x4E, 0xA6, 0x0, 0x1, 0x4E, 0xB8, 0x0, 0x1, 0x4E, 0xCC, 0x0, 0x1, 0x4E, 0xDE, 0x0, 0x1, 0x4E, 0xF0, 0x0, 0x1, 0x4F, 0x2, 0x0, 0x1, 0x4F, 0x14, 0x0, 0x1, 0x4F, 0x4F, 0x0, 0x1, 0x4F, 0xA0, 0x0, 0x1, 0x4F, 0xB2, 0x0, 0x1, 0x4F, 0xC4, 0x0, 0x1, 0x50, 0x29, 0x0, 0x1, 0x50, 0xCF, 0x0, 0x1, 0x51, 0x57, 0x0, 0x1, 0x51, 0xCB, 0x0, 0x1, 0x52, 0x3E, 0x0, 0x1, 0x52, 0xC2, 0x0, 0x1, 0x53, 0x3C, 0x0, 0x1, 0x53, 0x54, 0x0, 0x1, 0x53, 0xFB, 0x0, 0x1, 0x54, 0x56, 0x0, 0x1, 0x54, 0xC5, 0x0, 0x1, 0x55, 0xF, 0x0, 0x1, 0x55, 0x5E, 0x0, 0x1, 0x56, 0x4E, 0x0, 0x1, 0x56, 0xE9, 0x0, 0x1, 0x57, 0x6A, 0x0, 0x1, 0x57, 0xED, 0x0, 0x1, 0x58, 0x5F, 0x0, 0x1, 0x58, 0xDB, 0x0, 0x1, 0x59, 0x54, 0x0, 0x1, 0x59, 0xAC, 0x0, 0x1, 0x5A, 0x77, 0x0, 0x1, 0x5A, 0xAB, 0x0, 0x1, 0x5B, 0x7, 0x0, 0x1, 0x5B, 0x67, 0x0, 0x1, 0x5C, 0x14, 0x0, 0x1, 0x5C, 0x65, 0x0, 0x1, 0x5C, 0xC8, 0x0, 0x1, 0x5D, 0x3A, 0x0, 0x1, 0x5D, 0x5C, 0x0, 0x1, 0x5D, 0x86, 0x0, 0x1, 0x5D, 0xA8, 0x0, 0x1, 0x5D, 0xED, 0x0, 0x1, 0x5E, 0xAC, 0x0, 0x1, 0x5F, 0x76, 0x0, 0x1, 0x60, 0x15, 0x0, 0x1, 0x60, 0xB9, 0x0, 0x1, 0x61, 0x4B, 0x0, 0x1, 0x61, 0xB2, 0x0, 0x1, 0x62, 0x14, 0x0, 0x1, 0x62, 0x99, 0x0, 0x1, 0x63, 0x3C, 0x0, 0x1, 0x63, 0xAF, 0x0, 0x1, 0x64, 0x3A, 0x0, 0x1, 0x64, 0xBD, 0x0, 0x1, 0x65, 0x11, 0x0, 0x1, 0x65, 0x5F, 0x0, 0x1, 0x65, 0xAD, 0x0, 0x1, 0x66, 0x1F, 0x0, 0x1, 0x66, 0x2F, 0x0, 0x1, 0x66, 0xA2, 0x0, 0x1, 0x66, 0xFF, 0x0, 0x1, 0x67, 0x27, 0x0, 0x1, 0x67, 0x9B, 0x0, 0x1, 0x68, 0x45, 0x0, 0x1, 0x69, 0x2C, 0x0, 0x1, 0x69, 0x4E, 0x0, 0x1, 0x69, 0x70, 0x0, 0x1, 0x69, 0x9A, 0x0, 0x1, 0x69, 0xBC, 0x0, 0x1, 0x69, 0xDE, 0x0, 0x1, 0x6A, 0x0, 0x0, 0x1, 0x6A, 0x22, 0x0, 0x1, 0x6A, 0x44, 0x0, 0x1, 0x6A, 0x66, 0x0, 0x1, 0x6A, 0x88, 0x0, 0x1, 0x6A, 0xAA, 0x0, 0x1, 0x6A, 0xCC, 0x0, 0x1, 0x6A, 0xEE, 0x0, 0x1, 0x6B, 0x10, 0x0, 0x1, 0x6B, 0x32, 0x0, 0x1, 0x6B, 0x4C, 0x0, 0x1, 0x6B, 0x5C, 0x0, 0x1, 0x6B, 0x74, 0x0, 0x1, 0x6B, 0x94, 0x0, 0x1, 0x6B, 0xAC, 0x0, 0x1, 0x6B, 0xBC, 0x0, 0x1, 0x6B, 0xD4, 0x0, 0x1, 0x6B, 0xF4, 0x0, 0x1, 0x6C, 0x1C, 0x0, 0x1, 0x6C, 0x34, 0x0, 0x1, 0x6C, 0x44, 0x0, 0x1, 0x6C, 0x5C, 0x0, 0x1, 0x6C, 0x7C, 0x0, 0x1, 0x6C, 0x8C, 0x0, 0x1, 0x6C, 0x9C, 0x0, 0x1, 0x6C, 0xAC, 0x0, 0x1, 0x6C, 0xBC, 0x0, 0x1, 0x6C, 0xCC, 0x0, 0x1, 0x6C, 0xE4, 0x0, 0x1, 0x6D, 0x4, 0x0, 0x1, 0x6D, 0x1C, 0x0, 0x1, 0x6D, 0x2C, 0x0, 0x1, 0x6D, 0x44, 0x0, 0x1, 0x6D, 0x64, 0x0, 0x1, 0x6D, 0x8C, 0x0, 0x1, 0x6D, 0xA4, 0x0, 0x1, 0x6D, 0xB4, 0x0, 0x1, 0x6D, 0xCC, 0x0, 0x1, 0x6D, 0xEC, 0x0, 0x1, 0x6D, 0xFC, 0x0, 0x1, 0x6E, 0xC, 0x0, 0x1, 0x6E, 0x1C, 0x0, 0x1, 0x6E, 0x2C, 0x0, 0x1, 0x6E, 0xAE, 0x0, 0x1, 0x6F, 0x2F, 0x0, 0x1, 0x70, 0x10, 0x0, 0x1, 0x70, 0x71, 0x0, 0x1, 0x70, 0xC8, 0x0, 0x1, 0x71, 0x2E, 0x0, 0x1, 0x71, 0x61, 0x0, 0x1, 0x72, 0xC, 0x0, 0x1, 0x73, 0x49, 0x0, 0x1, 0x73, 0x6B, 0x0, 0x1, 0x73, 0xEB, 0x0, 0x1, 0x74, 0x11, 0x0, 0x1, 0x74, 0x4A, 0x0, 0x1, 0x74, 0x64, 0x0, 0x1, 0x74, 0x91, 0x0, 0x1, 0x75, 0x3F, 0x0, 0x1, 0x75, 0x85, 0x0, 0x1, 0x75, 0xFE, 0x0, 0x1, 0x76, 0x45, 0x0, 0x1, 0x76, 0x67, 0x0, 0x1, 0x76, 0x89, 0x0, 0x1, 0x76, 0xAD, 0x0, 0x1, 0x76, 0xE8, 0x0, 0x1, 0x77, 0x18, 0x0, 0x1, 0x77, 0x49, 0x0, 0x1, 0x77, 0x71, 0x0, 0x1, 0x77, 0x98, 0x0, 0x1, 0x77, 0xB0, 0x0, 0x1, 0x77, 0xF4, 0x0, 0x1, 0x78, 0x30, 0x0, 0x1, 0x78, 0x68, 0x0, 0x1, 0x78, 0x94, 0x0, 0x1, 0x78, 0xBE, 0x0, 0x1, 0x78, 0xEE, 0x0, 0x1, 0x79, 0x1C, 0x0, 0x1, 0x79, 0x72, 0x0, 0x1, 0x79, 0xCC, 0x0, 0x1, 0x7A, 0x1, 0x0, 0x1, 0x7A, 0x37, 0x0, 0x1, 0x7A, 0x75, 0x0, 0x1, 0x7A, 0xB2, 0x0, 0x1, 0x7A, 0xD0, 0x0, 0x1, 0x7A, 0xEE, 0x0, 0x1, 0x7B, 0x3F, 0x0, 0x1, 0x7B, 0x57, 0x0, 0x1, 0x7B, 0xC9, 0x0, 0x1, 0x7C, 0x67, 0x0, 0x1, 0x7C, 0xC6, 0x0, 0x1, 0x7C, 0xDE, 0x0, 0x1, 0x7C, 0xF6, 0x0, 0x1, 0x7D, 0x3C, 0x0, 0x1, 0x7D, 0x82, 0x0, 0x1, 0x7D, 0xB6, 0x0, 0x1, 0x7D, 0xEA, 0x0, 0x1, 0x7E, 0x5F, 0x0, 0x1, 0x7E, 0xBA, 0x0, 0x1, 0x7E, 0xF5, 0x0, 0x1, 0x7F, 0x6A, 0x0, 0x1, 0x7F, 0xAF, 0x0, 0x1, 0x80, 0x17, 0x0, 0x1, 0x80, 0x7B, 0x0, 0x1, 0x80, 0xE0, 0x0, 0x1, 0x81, 0x6, 0x0, 0x1, 0x81, 0x2C, 0x0, 0x1, 0x81, 0x9C, 0x0, 0x1, 0x82, 0x17, 0x0, 0x1, 0x82, 0x62, 0x0, 0x1, 0x82, 0xED, 0x0, 0x1, 0x83, 0x1A, 0x0, 0x1, 0x83, 0x2C, 0x0, 0x1, 0x83, 0x5B, 0x0, 0x1, 0x83, 0xE8, 0x0, 0x1, 0x84, 0x36, 0x0, 0x1, 0x84, 0xA0, 0x0, 0x1, 0x84, 0xF3, 0x0, 0x1, 0x85, 0x12, 0x0, 0x1, 0x85, 0x5C, 0x0, 0x1, 0x85, 0xA5, 0x0, 0x1, 0x85, 0xFE, 0x0, 0x1, 0x86, 0x30, 0x0, 0x1, 0x86, 0x6D, 0x0, 0x1, 0x86, 0xA4, 0x0, 0x1, 0x86, 0xCF, 0x0, 0x1, 0x86, 0xDF, 0x0, 0x1, 0x87, 0x5, 0x0, 0x1, 0x87, 0x19, 0x0, 0x1, 0x87, 0x29, 0x0, 0x1, 0x87, 0x4D, 0x0, 0x1, 0x87, 0x5D, 0x0, 0x1, 0x87, 0x8B, 0x0, 0x1, 0x87, 0xC4, 0x0, 0x1, 0x87, 0xF3, 0x0, 0x1, 0x88, 0x2A, 0x0, 0x1, 0x88, 0x75, 0x0, 0x1, 0x88, 0xC4, 0x0, 0x1, 0x89, 0x2C, 0x0, 0x1, 0x89, 0x7F, 0x0, 0x1, 0x89, 0xB6, 0x0, 0x1, 0x8A, 0x24, 0x0, 0x1, 0x8A, 0x70, 0x0, 0x1, 0x8A, 0xC1, 0x0, 0x1, 0x8B, 0x38, 0x0, 0x1, 0x8B, 0x78, 0x0, 0x1, 0x8B, 0xCD, 0x0, 0x1, 0x8C, 0x2E, 0x0, 0x1, 0x8C, 0x4F, 0x0, 0x1, 0x8C, 0x8D, 0x0, 0x1, 0x8C, 0xB2, 0x0, 0x1, 0x8C, 0xD8, 0x0, 0x1, 0x8D, 0x1C, 0x0, 0x1, 0x8D, 0x63, 0x0, 0x1, 0x8D, 0x89, 0x0, 0x1, 0x8D, 0xCC, 0x0, 0x1, 0x8E, 0x39, 0x0, 0x1, 0x8E, 0x89, 0x0, 0x1, 0x8E, 0xD8, 0x0, 0x1, 0x8F, 0x2, 0x0, 0x1, 0x8F, 0x1F, 0x0, 0x1, 0x8F, 0x35, 0x0, 0x1, 0x8F, 0xD4, 0x0, 0x1, 0x8F, 0xED, 0x0, 0x1, 0x90, 0x14, 0x0, 0x1, 0x90, 0x3A, 0x0, 0x1, 0x90, 0x63, 0x0, 0x1, 0x90, 0xBD, 0x0, 0x1, 0x91, 0x1, 0x0, 0x1, 0x91, 0x15, 0x0, 0x1, 0x91, 0x73, 0x0, 0x1, 0x91, 0xA0, 0x0, 0x1, 0x92, 0x12, 0x0, 0x1, 0x92, 0x99, 0x0, 0x1, 0x92, 0xF2, 0x0, 0x1, 0x93, 0x69, 0x0, 0x1, 0x93, 0x86, 0x0, 0x1, 0x93, 0x9C, 0x0, 0x1, 0x93, 0xFC, 0x0, 0x1, 0x94, 0x5D, 0x0, 0x1, 0x94, 0x75, 0x0, 0x1, 0x94, 0x8F, 0x0, 0x1, 0x94, 0xAE, 0x0, 0x1, 0x94, 0xCD, 0x0, 0x1, 0x94, 0xEC, 0x0, 0x1, 0x95, 0xA, 0x0, 0x1, 0x95, 0x46, 0x0, 0x1, 0x95, 0x80, 0x0, 0x1, 0x95, 0x98, 0x0, 0x1, 0x95, 0xB0, 0x0, 0x1, 0x95, 0xD2, 0x0, 0x1, 0x95, 0xF4, 0x0, 0x1, 0x96, 0x1E, 0x0, 0x1, 0x96, 0x50, 0x0, 0x1, 0x96, 0xBD, 0x0, 0x1, 0x96, 0xFD, 0x0, 0x1, 0x97, 0xF, 0x0, 0x1, 0x97, 0x21, 0x0, 0x1, 0x97, 0x35, 0x0, 0x1, 0x97, 0x47, 0x0, 0x1, 0x97, 0x59, 0x0, 0x1, 0x97, 0x9B, 0x0, 0x1, 0x97, 0xBE, 0x0, 0x1, 0x97, 0xE4, 0x0, 0x1, 0x98, 0x13, 0x0, 0x1, 0x98, 0x90, 0x0, 0x1, 0x98, 0xB0, 0x0, 0x1, 0x98, 0xDC, 0x0, 0x1, 0x99, 0xF, 0x0, 0x1, 0x99, 0x49, 0x0, 0x1, 0x99, 0xFD, 0x0, 0x1, 0x9A, 0x92, 0x0, 0x1, 0x9A, 0xAC, 0x0, 0x1, 0x9A, 0xD3, 0x0, 0x1, 0x9B, 0x16, 0x0, 0x1, 0x9B, 0x73, 0x0, 0x1, 0x9B, 0xD2, 0x0, 0x1, 0x9B, 0xEA, 0x0, 0x1, 0x9C, 0x2, 0x0, 0x1, 0x9C, 0x74, 0x0, 0x1, 0x9C, 0xE1, 0x0, 0x1, 0x9D, 0x12, 0x0, 0x1, 0x9D, 0x22, 0x0, 0x1, 0x9D, 0x5E, 0x0, 0x1, 0x9D, 0x98, 0x0, 0x1, 0x9E, 0x1E, 0x0, 0x1, 0x9E, 0x9F, 0x0, 0x1, 0x9F, 0x2C, 0x0, 0x1, 0x9F, 0xA9, 0x0, 0x1, 0x9F, 0xF4, 0x0, 0x1, 0xA0, 0x39, 0x0, 0x1, 0xA0, 0x51, 0x0, 0x1, 0xA0, 0x69, 0x0, 0x1, 0xA0, 0xC9, 0x0, 0x1, 0xA1, 0x27, 0x0, 0x1, 0xA1, 0x9F, 0x0, 0x1, 0xA2, 0x11, 0x0, 0x1, 0xA2, 0x63, 0x0, 0x1, 0xA2, 0xE9, 0x0, 0x1, 0xA3, 0x26, 0x0, 0x1, 0xA3, 0x63, 0x0, 0x1, 0xA3, 0xDC, 0x0, 0x1, 0xA4, 0x53, 0x0, 0x1, 0xA4, 0xA6, 0x0, 0x1, 0xA4, 0xF9, 0x0, 0x1, 0xA5, 0x3A, 0x0, 0x1, 0xA5, 0x76, 0x0, 0x1, 0xA5, 0xA7, 0x0, 0x1, 0xA5, 0xD8, 0x0, 0x1, 0xA6, 0x33, 0x0, 0x1, 0xA6, 0x88, 0x0, 0x1, 0xA6, 0xCD, 0x0, 0x1, 0xA7, 0x11, 0x0, 0x1, 0xA7, 0x59, 0x0, 0x1, 0xA7, 0x99, 0x0, 0x1, 0xA7, 0xB1, 0x0, 0x1, 0xA8, 0x29, 0x0, 0x1, 0xA8, 0xC6, 0x0, 0x1, 0xA9, 0x59, 0x0, 0x1, 0xA9, 0x81, 0x0, 0x1, 0xA9, 0x99, 0x0, 0x1, 0xAB, 0xDB, 0x0, 0x1, 0xAC, 0x1, 0x0, 0x1, 0xAD, 0x2D, 0x0, 0x1, 0xAD, 0x6C, 0x0, 0x1, 0xAE, 0xD, 0x0, 0x1, 0xAE, 0x61, 0x0, 0x1, 0xAE, 0xAE, 0x0, 0x1, 0xAE, 0xD9, 0x0, 0x1, 0xAF, 0x13, 0x0, 0x1, 0xAF, 0x55, 0x0, 0x1, 0xAF, 0x93, 0x0, 0x1, 0xAF, 0xDD, 0x0, 0x1, 0xB0, 0x16, 0x0, 0x1, 0xB0, 0x61, 0x0, 0x1, 0xB0, 0x73, 0x0, 0x1, 0xB0, 0xAC, 0x0, 0x1, 0xB0, 0xBC, 0x0, 0x1, 0xB0, 0xCE, 0x0, 0x1, 0xB1, 0x2A, 0x0, 0x1, 0xB1, 0x7F, 0x0, 0x1, 0xB1, 0xF2, 0x0, 0x1, 0xB2, 0x5D, 0x0, 0x1, 0xB2, 0xFF, 0x0, 0x1, 0xB3, 0x9B, 0x0, 0x1, 0xB3, 0xFD, 0x0, 0x1, 0xB4, 0x5B, 0x0, 0x1, 0xB4, 0xEC, 0x0, 0x1, 0xB5, 0x7C, 0x0, 0x1, 0xB5, 0xDD, 0x0, 0x1, 0xB6, 0x3F, 0x0, 0x1, 0xB6, 0x7B, 0x0, 0x1, 0xB6, 0xB7, 0x0, 0x1, 0xB7, 0x12, 0x0, 0x1, 0xB7, 0x6B, 0x0, 0x1, 0xB7, 0xB6, 0x0, 0x1, 0xB8, 0x3, 0x0, 0x1, 0xB8, 0x4D, 0x0, 0x1, 0xB8, 0x94, 0x0, 0x1, 0xB8, 0xEC, 0x0, 0x1, 0xB9, 0x42, 0x0, 0x1, 0xB9, 0xA8, 0x0, 0x1, 0xBA, 0xC, 0x0, 0x1, 0xBA, 0x24, 0x0, 0x1, 0xBA, 0xBE, 0x0, 0x1, 0xBB, 0x42, 0x0, 0x1, 0xBB, 0xBF, 0x0, 0x1, 0xBC, 0x3, 0x0, 0x1, 0xBC, 0x42, 0x0, 0x1, 0xBC, 0x9D, 0x0, 0x1, 0xBC, 0xD5, 0x0, 0x1, 0xBD, 0x17, 0x0, 0x1, 0xBD, 0x29, 0x0, 0x1, 0xBD, 0x6C, 0x0, 0x1, 0xBD, 0xA3, 0x0, 0x1, 0xBD, 0xE6, 0x0, 0x1, 0xBE, 0x1E, 0x0, 0x1, 0xBE, 0x61, 0x0, 0x1, 0xBE, 0x97, 0x0, 0x1, 0xBE, 0xD3, 0x0, 0x1, 0xBF, 0xF, 0x0, 0x1, 0xBF, 0x4B, 0x0, 0x1, 0xBF, 0x83, 0x0, 0x1, 0xBF, 0xB9, 0x0, 0x1, 0xBF, 0xF0, 0x0, 0x1, 0xC0, 0x27, 0x0, 0x1, 0xC0, 0x5E, 0x0, 0x1, 0xC0, 0x91, 0x0, 0x1, 0xC0, 0xB2, 0x0, 0x1, 0xC0, 0xD8, 0x0, 0x1, 0xC0, 0xFE, 0x0, 0x1, 0xC1, 0x23, 0x0, 0x1, 0xC1, 0x42, 0x0, 0x1, 0xC1, 0x79, 0x0, 0x1, 0xC1, 0xAF, 0x0, 0x1, 0xC1, 0xE5, 0x0, 0x1, 0xC2, 0x3, 0x0, 0x1, 0xC2, 0x30, 0x0, 0x1, 0xC2, 0x5A, 0x0, 0x1, 0xC2, 0x93, 0x0, 0x1, 0xC2, 0xCA, 0x0, 0x1, 0xC3, 0x1, 0x0, 0x1, 0xC3, 0x2F, 0x0, 0x1, 0xC3, 0x5D, 0x0, 0x1, 0xC3, 0xC5, 0x0, 0x1, 0xC4, 0x27, 0x0, 0x1, 0xC4, 0x5E, 0x0, 0x1, 0xC4, 0x95, 0x0, 0x1, 0xC4, 0xDE, 0x0, 0x1, 0xC5, 0x35, 0x0, 0x1, 0xC5, 0xA8, 0x0, 0x1, 0xC6, 0x30, 0x0, 0x1, 0xC6, 0xA0, 0x0, 0x1, 0xC6, 0xF5, 0x0, 0x1, 0xC7, 0x3F, 0x0, 0x1, 0xC7, 0x8A, 0x0, 0x1, 0xC7, 0xF7, 0x0, 0x1, 0xC8, 0x68, 0x0, 0x1, 0xC8, 0x94, 0x0, 0x1, 0xC8, 0xA4, 0x0, 0x1, 0xC9, 0x4, 0x0, 0x1, 0xC9, 0xCB, 0x0, 0x1, 0xCA, 0x4F, 0x0, 0x1, 0xCA, 0xFD, 0x0, 0x1, 0xCB, 0x58, 0x0, 0x1, 0xCB, 0xE6, 0x0, 0x1, 0xCC, 0x2F, 0x0, 0x1, 0xCC, 0xA9, 0x0, 0x1, 0xCC, 0xFF, 0x0, 0x1, 0xCD, 0x85, 0x0, 0x1, 0xCD, 0xE9, 0x0, 0x1, 0xCE, 0x74, 0x0, 0x1, 0xCE, 0xF8, 0x0, 0x1, 0xCF, 0x70, 0x0, 0x1, 0xCF, 0x88, 0x0, 0x1, 0xCF, 0xA0, 0x0, 0x1, 0xCF, 0xF4, 0x0, 0x1, 0xD0, 0x45, 0x0, 0x1, 0xD0, 0xA9, 0x0, 0x1, 0xD1, 0xA, 0x0, 0x1, 0xD1, 0x34, 0x0, 0x1, 0xD1, 0x58, 0x0, 0x1, 0xD1, 0x70, 0x0, 0x1, 0xD1, 0x88, 0x0, 0x1, 0xD2, 0x1, 0x0, 0x1, 0xD2, 0x75, 0x0, 0x1, 0xD3, 0xA, 0x0, 0x1, 0xD3, 0x96, 0x0, 0x1, 0xD3, 0xAE, 0x0, 0x1, 0xD3, 0xC6, 0x0, 0x1, 0xD3, 0xDE, 0x0, 0x1, 0xD3, 0xF6, 0x0, 0x1, 0xD4, 0x5F, 0x0, 0x1, 0xD4, 0xDF, 0x0, 0x1, 0xD5, 0x59, 0x0, 0x1, 0xD5, 0xE8, 0x0, 0x1, 0xD6, 0x74, 0x0, 0x1, 0xD6, 0x8C, 0x0, 0x1, 0xD7, 0x36, 0x0, 0x1, 0xD7, 0xBF, 0x0, 0x1, 0xD8, 0xC, 0x0, 0x1, 0xD8, 0x5B, 0x0, 0x1, 0xD8, 0xBA, 0x0, 0x1, 0xD9, 0x18, 0x0, 0x1, 0xD9, 0x5D, 0x0, 0x1, 0xD9, 0x9C, 0x0, 0x1, 0xD9, 0xF8, 0x0, 0x1, 0xDA, 0x10, 0x0, 0x1, 0xDA, 0x98, 0x0, 0x1, 0xDB, 0x21, 0x0, 0x1, 0xDB, 0x7D, 0x0, 0x1, 0xDB, 0xE5, 0x0, 0x1, 0xDC, 0x40, 0x0, 0x1, 0xDC, 0xA9, 0x0, 0x1, 0xDC, 0xD3, 0x0, 0x1, 0xDC, 0xFC, 0x0, 0x1, 0xDD, 0x60, 0x0, 0x1, 0xDD, 0xC8, 0x0, 0x1, 0xDE, 0x2F, 0x0, 0x1, 0xDE, 0x9E, 0x0, 0x1, 0xDF, 0xF, 0x0, 0x1, 0xDF, 0x80, 0x0, 0x1, 0xDF, 0xE0, 0x0, 0x1, 0xE0, 0x66, 0x0, 0x1, 0xE0, 0xAB, 0x0, 0x1, 0xE1, 0x36, 0x0, 0x1, 0xE1, 0xA0, 0x0, 0x1, 0xE1, 0xEB, 0x0, 0x1, 0xE2, 0x51, 0x0, 0x1, 0xE2, 0xAB, 0x0, 0x1, 0xE3, 0x2D, 0x0, 0x1, 0xE3, 0xA2, 0x0, 0x1, 0xE4, 0x11, 0x0, 0x1, 0xE4, 0x52, 0x0, 0x1, 0xE4, 0x90, 0x0, 0x1, 0xE4, 0xF8, 0x0, 0x1, 0xE5, 0x5F, 0x0, 0x1, 0xE5, 0xC2, 0x0, 0x1, 0xE5, 0xD6, 0x0, 0x1, 0xE5, 0xE8, 0x0, 0x1, 0xE6, 0x26, 0x0, 0x1, 0xE6, 0x65, 0x0, 0x1, 0xE6, 0x98, 0x0, 0x1, 0xE6, 0xCD, 0x0, 0x1, 0xE7, 0x24, 0x0, 0x1, 0xE7, 0x76, 0x0, 0x1, 0xE7, 0x88, 0x0, 0x1, 0xE7, 0xD3, 0x0, 0x1, 0xE7, 0xFB, 0x0, 0x1, 0xE8, 0x1C, 0x0, 0x1, 0xE8, 0x3D, 0x0, 0x1, 0xE8, 0x66, 0x0, 0x1, 0xE8, 0xD5, 0x0, 0x1, 0xE8, 0xED, 0x0, 0x1, 0xE9, 0x5, 0x0, 0x1, 0xE9, 0x74, 0x0, 0x1, 0xE9, 0xD8, 0x0, 0x1, 0xEA, 0x4B, 0x0, 0x1, 0xEA, 0xA9, 0x0, 0x1, 0xEB, 0x32, 0x0, 0x1, 0xEB, 0xAD, 0x0, 0x1, 0xEB, 0xF9, 0x0, 0x1, 0xEC, 0x4B, 0x0, 0x1, 0xEC, 0xD4, 0x0, 0x1, 0xED, 0x58, 0x0, 0x1, 0xED, 0xD3, 0x0, 0x1, 0xEE, 0x40, 0x0, 0x1, 0xEE, 0x9C, 0x0, 0x1, 0xEE, 0xED, 0x0, 0x1, 0xEF, 0x6C, 0x0, 0x1, 0xF0, 0x7, 0x0, 0x1, 0xF0, 0x6C, 0x0, 0x1, 0xF0, 0xCC, 0x0, 0x1, 0xF1, 0x31, 0x0, 0x1, 0xF1, 0x93, 0x0, 0x1, 0xF2, 0xA, 0x0, 0x1, 0xF2, 0x56, 0x0, 0x1, 0xF2, 0xE2, 0x0, 0x1, 0xF3, 0x60, 0x0, 0x1, 0xF3, 0xAD, 0x0, 0x1, 0xF3, 0xBD, 0x0, 0x1, 0xF4, 0x3D, 0x0, 0x1, 0xF4, 0x95, 0x0, 0x1, 0xF4, 0xCE, 0x0, 0x1, 0xF4, 0xF2, 0x0, 0x1, 0xF5, 0xC, 0x0, 0x1, 0xF5, 0x59, 0x0, 0x1, 0xF5, 0x71, 0x0, 0x1, 0xF5, 0xA9, 0x0, 0x1, 0xF5, 0xD3, 0x0, 0x1, 0xF6, 0x1B, 0x0, 0x1, 0xF6, 0x5C, 0x0, 0x1, 0xF6, 0x77, 0x0, 0x1, 0xF6, 0xC7, 0x0, 0x1, 0xF6, 0xFC, 0x0, 0x1, 0xF7, 0x7F, 0x0, 0x1, 0xF8, 0x26, 0x0, 0x1, 0xF8, 0x60, 0x0, 0x1, 0xF8, 0xD1, 0x0, 0x1, 0xF9, 0x4F, 0x0, 0x1, 0xF9, 0x5F, 0x0, 0x1, 0xF9, 0xDC, 0x0, 0x1, 0xFA, 0x49, 0x0, 0x1, 0xFA, 0xC8, 0x0, 0x1, 0xFB, 0x24, 0x0, 0x1, 0xFB, 0xB4, 0x0, 0x1, 0xFC, 0x23, 0x0, 0x1, 0xFC, 0x95, 0x0, 0x1, 0xFC, 0xC9, 0x0, 0x1, 0xFD, 0x1A, 0x0, 0x1, 0xFD, 0x82, 0x0, 0x1, 0xFE, 0x25, 0x0, 0x1, 0xFE, 0xF1, 0x0, 0x1, 0xFF, 0xA4, 0x0, 0x2, 0x0, 0x33, 0x0, 0x2, 0x0, 0xE7, 0x0, 0x2, 0x1, 0x2A, 0x0, 0x2, 0x1, 0x89, 0x0, 0x2, 0x1, 0xB2, 0x0, 0x2, 0x1, 0xFF, 0x0, 0x2, 0x2, 0x61, 0x0, 0x2, 0x2, 0xDB, 0x0, 0x2, 0x3, 0x24, 0x0, 0x2, 0x3, 0x8D, 0x0, 0x2, 0x3, 0xD4, 0x0, 0x2, 0x4, 0x11, 0x0, 0x2, 0x4, 0x6C, 0x0, 0x2, 0x4, 0xE9, 0x0, 0x2, 0x4, 0xFD, 0x0, 0x2, 0x5, 0x4F, 0x0, 0x2, 0x5, 0x8F, 0x0, 0x2, 0x5, 0xFD, 0x0, 0x2, 0x6, 0x45, 0x0, 0x2, 0x6, 0xB9, 0x0, 0x2, 0x6, 0xFA, 0x0, 0x2, 0x7, 0x70, 0x0, 0x2, 0x7, 0xBA, 0x0, 0x2, 0x8, 0x3, 0x0, 0x2, 0x8, 0x51, 0x0, 0x2, 0x8, 0xA1, 0x0, 0x2, 0x9, 0x8, 0x0, 0x2, 0x9, 0x50, 0x0, 0x2, 0x9, 0x9D, 0x0, 0x2, 0xA, 0x7, 0x0, 0x2, 0xA, 0x66, 0x0, 0x2, 0xA, 0x80, 0x0, 0x2, 0xA, 0xA7, 0x0, 0x2, 0xA, 0xCF, 0x0, 0x2, 0xA, 0xE7, 0x0, 0x2, 0xB, 0x37, 0x0, 0x2, 0xB, 0x80, 0x0, 0x2, 0xB, 0xFD, 0x0, 0x2, 0xC, 0x6F, 0x0, 0x2, 0xC, 0xD9, 0x0, 0x2, 0xD, 0x9E, 0x0, 0x2, 0xD, 0xC4, 0x0, 0x2, 0xD, 0xEA, 0x0, 0x2, 0xD, 0xFC, 0x0, 0x2, 0xE, 0xE, 0x0, 0x2, 0xE, 0x27, 0x0, 0x2, 0xE, 0x41, 0x0, 0x2, 0xE, 0x5A, 0x0, 0x2, 0xE, 0x80, 0x0, 0x2, 0xE, 0xA6, 0x0, 0x2, 0xE, 0xD9, 0x0, 0x2, 0xF, 0xE, 0x0, 0x2, 0xF, 0x20, 0x0, 0x2, 0xF, 0x32, 0x0, 0x2, 0xF, 0x44, 0x0, 0x2, 0xF, 0x44, 0x0, 0x2, 0x10, 0xD9, 0x0, 0x2, 0x11, 0x5E, 0x0, 0x2, 0x11, 0xDA, 0x0, 0x2, 0x12, 0x47, 0x0, 0x2, 0x12, 0x77, 0x0, 0x2, 0x12, 0xBF, 0x0, 0x2, 0x12, 0xE3, 0x0, 0x2, 0x13, 0x2D, 0x0, 0x2, 0x13, 0x93, 0x0, 0x2, 0x14, 0x12, 0x0, 0x2, 0x14, 0x39, 0x0, 0x2, 0x14, 0x9F, 0x0, 0x2, 0x14, 0xFA, 0x0, 0x2, 0x15, 0x37, 0x0, 0x2, 0x15, 0xA4, 0x0, 0x2, 0x15, 0xF1, 0x0, 0x2, 0x16, 0x16, 0x0, 0x2, 0x16, 0x68, 0x0, 0x2, 0x16, 0x93, 0x0, 0x2, 0x16, 0xC3, 0x0, 0x2, 0x17, 0x3, 0x0, 0x2, 0x17, 0x3E, 0x0, 0x2, 0x17, 0x6F, 0x0, 0x2, 0x17, 0xAB, 0x0, 0x2, 0x17, 0xD1, 0x0, 0x2, 0x18, 0x41, 0x0, 0x2, 0x18, 0x94, 0x0, 0x2, 0x19, 0x0, 0x0, 0x2, 0x19, 0x45, 0x0, 0x2, 0x19, 0xA5, 0x0, 0x2, 0x19, 0xD4, 0x0, 0x2, 0x1A, 0x17, 0x0, 0x2, 0x1A, 0x34, 0x0, 0x2, 0x1A, 0x6F, 0x0, 0x2, 0x1A, 0xA0, 0x0, 0x2, 0x1A, 0xBB, 0x0, 0x2, 0x1A, 0xEA, 0x0, 0x2, 0x1B, 0x4E, 0x0, 0x2, 0x1B, 0x7A, 0x0, 0x2, 0x1B, 0xF6, 0x0, 0x2, 0x1C, 0x56, 0x0, 0x2, 0x1C, 0xAB, 0x0, 0x2, 0x1C, 0xCC, 0x0, 0x2, 0x1C, 0xFD, 0x0, 0x2, 0x1D, 0x69, 0x0, 0x2, 0x1D, 0x97, 0x0, 0x2, 0x1D, 0xCD, 0x0, 0x2, 0x1D, 0xF2, 0x0, 0x2, 0x1E, 0x2A, 0x0, 0x2, 0x1E, 0x99, 0x0, 0x2, 0x1E, 0xEA, 0x0, 0x2, 0x1F, 0x4D, 0x0, 0x2, 0x1F, 0x9B, 0x0, 0x2, 0x1F, 0xFC, 0x0, 0x2, 0x20, 0x68, 0x0, 0x2, 0x20, 0xC4, 0x0, 0x2, 0x21, 0xC, 0x0, 0x2, 0x21, 0x3B, 0x0, 0x2, 0x21, 0x7F, 0x0, 0x2, 0x21, 0xD0, 0x0, 0x2, 0x22, 0x27, 0x0, 0x2, 0x22, 0x98, 0x0, 0x2, 0x22, 0xC2, 0x0, 0x2, 0x22, 0xFB, 0x0, 0x2, 0x23, 0x3A, 0x0, 0x2, 0x23, 0x7E, 0x0, 0x2, 0x23, 0xAE, 0x0, 0x2, 0x23, 0xEA, 0x0, 0x2, 0x24, 0x18, 0x0, 0x2, 0x24, 0x53, 0x0, 0x2, 0x24, 0x9D, 0x0, 0x2, 0x24, 0xB5, 0x0, 0x2, 0x24, 0xF8, 0x0, 0x2, 0x25, 0x58, 0x0, 0x2, 0x25, 0xC7, 0x0, 0x2, 0x26, 0x14, 0x0, 0x2, 0x26, 0x47, 0x0, 0x2, 0x26, 0xA7, 0x0, 0x2, 0x26, 0xEB, 0x0, 0x2, 0x27, 0x37, 0x0, 0x2, 0x27, 0x76, 0x0, 0x2, 0x28, 0x6, 0x0, 0x2, 0x28, 0x1E, 0x0, 0x2, 0x28, 0x67, 0x0, 0x2, 0x28, 0xA3, 0x0, 0x2, 0x28, 0xEB, 0x0, 0x2, 0x29, 0x2A, 0x0, 0x2, 0x29, 0xA5, 0x0, 0x2, 0x2A, 0xC, 0x0, 0x2, 0x2A, 0x62, 0x0, 0x2, 0x2A, 0xC8, 0x0, 0x2, 0x2B, 0x3C, 0x0, 0x2, 0x2B, 0xA1, 0x0, 0x2, 0x2C, 0x24, 0x0, 0x2, 0x2C, 0x9B, 0x0, 0x2, 0x2C, 0xF9, 0x0, 0x2, 0x2D, 0x2D, 0x0, 0x2, 0x2D, 0x93, 0x0, 0x2, 0x2D, 0xCD, 0x0, 0x2, 0x2E, 0x23, 0x0, 0x2, 0x2E, 0x7E, 0x0, 0x2, 0x2E, 0xA4, 0x0, 0x2, 0x2F, 0xC, 0x0, 0x2, 0x2F, 0x65, 0x0, 0x2, 0x2F, 0x7F, 0x0, 0x2, 0x2F, 0xD0, 0x0, 0x2, 0x2F, 0xFE, 0x0, 0x2, 0x30, 0xC3, 0x0, 0x2, 0x31, 0x27, 0x0, 0x2, 0x31, 0x8D, 0x0, 0x2, 0x31, 0xC6, 0x0, 0x2, 0x31, 0xFF, 0x0, 0x2, 0x32, 0x36, 0x0, 0x2, 0x32, 0x6B, 0x0, 0x2, 0x32, 0xB5, 0x0, 0x2, 0x33, 0xF, 0x0, 0x2, 0x33, 0x72, 0x0, 0x2, 0x33, 0xAB, 0x0, 0x2, 0x33, 0xD2, 0x0, 0x2, 0x34, 0xF, 0x0, 0x2, 0x34, 0x60, 0x0, 0x2, 0x34, 0xB3, 0x0, 0x2, 0x35, 0x14, 0x0, 0x2, 0x35, 0x67, 0x0, 0x2, 0x35, 0x9C, 0x0, 0x2, 0x35, 0xEA, 0x0, 0x2, 0x36, 0x13, 0x0, 0x2, 0x36, 0x3B, 0x0, 0x2, 0x36, 0x8C, 0x0, 0x2, 0x36, 0xC4, 0x0, 0x2, 0x37, 0x4, 0x0, 0x2, 0x37, 0x39, 0x0, 0x2, 0x37, 0x6D, 0x0, 0x2, 0x37, 0xB6, 0x0, 0x2, 0x38, 0xE, 0x0, 0x2, 0x38, 0x5C, 0x0, 0x2, 0x38, 0x82, 0x0, 0x2, 0x38, 0xBF, 0x0, 0x2, 0x39, 0x13, 0x0, 0x2, 0x39, 0x87, 0x0, 0x2, 0x39, 0x99, 0x0, 0x2, 0x39, 0xAB, 0x0, 0x2, 0x39, 0xBD, 0x0, 0x2, 0x39, 0xCF, 0x0, 0x2, 0x39, 0xE1, 0x0, 0x2, 0x39, 0xF3, 0x0, 0x2, 0x3A, 0x5, 0x0, 0x2, 0x3A, 0x69, 0x0, 0x2, 0x3A, 0xD8, 0x0, 0x2, 0x3B, 0x28, 0x0, 0x2, 0x3B, 0x94, 0x0, 0x2, 0x3C, 0xB, 0x0, 0x2, 0x3C, 0x30, 0x0, 0x2, 0x3C, 0x82, 0x0, 0x2, 0x3C, 0xD9, 0x0, 0x2, 0x3D, 0x17, 0x0, 0x2, 0x3D, 0x76, 0x0, 0x2, 0x3D, 0x9C, 0x0, 0x2, 0x3E, 0x1, 0x0, 0x2, 0x3E, 0x1B, 0x0, 0x2, 0x3E, 0x89, 0x0, 0x2, 0x3E, 0xFF, 0x0, 0x2, 0x3F, 0x45, 0x0, 0x2, 0x3F, 0x89, 0x0, 0x2, 0x40, 0xB, 0x0, 0x2, 0x40, 0x7C, 0x0, 0x2, 0x40, 0xE8, 0x0, 0x2, 0x41, 0x17, 0x0, 0x2, 0x41, 0x27, 0x0, 0x2, 0x41, 0x37, 0x0, 0x2, 0x41, 0x47, 0x0, 0x2, 0x41, 0x57, 0x0, 0x2, 0x41, 0x67, 0x0, 0x2, 0x41, 0x77, 0x0, 0x2, 0x41, 0x87, 0x0, 0x2, 0x41, 0x97, 0x0, 0x2, 0x41, 0xA7, 0x0, 0x2, 0x41, 0xB7, 0x0, 0x2, 0x41, 0xC7, 0x0, 0x2, 0x42, 0x3, 0x0, 0x2, 0x42, 0x19, 0x0, 0x2, 0x42, 0x2F, 0x0, 0x2, 0x42, 0x3F, 0x0, 0x2, 0x42, 0x8D, 0x0, 0x2, 0x42, 0xA8, 0x0, 0x2, 0x42, 0xB8, 0x0, 0x2, 0x42, 0xE5, 0x0, 0x2, 0x42, 0xFB, 0x0, 0x2, 0x43, 0xB, 0x0, 0x2, 0x43, 0x26, 0x0, 0x2, 0x43, 0x36, 0x0, 0x2, 0x43, 0x81, 0x0, 0x2, 0x43, 0xAF, 0x0, 0x2, 0x43, 0xDD, 0x0, 0x2, 0x44, 0x45, 0x0, 0x2, 0x44, 0x78, 0x0, 0x2, 0x44, 0x9D, 0x0, 0x2, 0x44, 0xC8, 0x0, 0x2, 0x44, 0xF8, 0x0, 0x2, 0x45, 0x28, 0x0, 0x2, 0x45, 0x57, 0x0, 0x2, 0x45, 0x85, 0x0, 0x2, 0x45, 0xAD, 0x0, 0x2, 0x45, 0xDE, 0x0, 0x2, 0x46, 0xF, 0x0, 0x2, 0x46, 0x3D, 0x0, 0x2, 0x46, 0x67, 0x0, 0x2, 0x46, 0x98, 0x0, 0x2, 0x46, 0xC8, 0x0, 0x2, 0x46, 0xFA, 0x0, 0x2, 0x47, 0x25, 0x0, 0x2, 0x47, 0x56, 0x0, 0x2, 0x47, 0x84, 0x0, 0x2, 0x47, 0xB5, 0x0, 0x2, 0x47, 0xE6, 0x0, 0x2, 0x48, 0x19, 0x0, 0x2, 0x48, 0x4B, 0x0, 0x2, 0x48, 0x7B, 0x0, 0x2, 0x48, 0xAA, 0x0, 0x2, 0x48, 0xD7, 0x0, 0x2, 0x49, 0x7, 0x0, 0x2, 0x49, 0x34, 0x0, 0x2, 0x49, 0x67, 0x0, 0x2, 0x49, 0x97, 0x0, 0x2, 0x49, 0xC9, 0x0, 0x2, 0x49, 0xF8, 0x0, 0x2, 0x4A, 0x22, 0x0, 0x2, 0x4A, 0x52, 0x0, 0x2, 0x4A, 0x82, 0x0, 0x2, 0x4A, 0xAD, 0x0, 0x2, 0x4A, 0xD5, 0x0, 0x2, 0x4A, 0xFB, 0x0, 0x2, 0x4B, 0x28, 0x0, 0x2, 0x4B, 0x4C, 0x0, 0x2, 0x4B, 0x73, 0x0, 0x2, 0x4B, 0xA3, 0x0, 0x2, 0x4B, 0xCB, 0x0, 0x2, 0x4B, 0xFD, 0x0, 0x2, 0x4C, 0x2E, 0x0, 0x2, 0x4C, 0x57, 0x0, 0x2, 0x4C, 0x83, 0x0, 0x2, 0x4C, 0xB0, 0x0, 0x2, 0x4C, 0xD9, 0x0, 0x2, 0x4D, 0xD, 0x0, 0x2, 0x4D, 0x3F, 0x0, 0x2, 0x4D, 0x6F, 0x0, 0x2, 0x4D, 0x99, 0x0, 0x2, 0x4D, 0xC5, 0x0, 0x2, 0x4D, 0xEE, 0x0, 0x2, 0x4E, 0x19, 0x0, 0x2, 0x4E, 0x46, 0x0, 0x2, 0x4E, 0x6E, 0x0, 0x2, 0x4E, 0x9E, 0x0, 0x2, 0x4E, 0xCD, 0x0, 0x2, 0x4F, 0x1, 0x0, 0x2, 0x4F, 0x34, 0x0, 0x2, 0x4F, 0x64, 0x0, 0x2, 0x4F, 0x92, 0x0, 0x2, 0x4F, 0xC3, 0x0, 0x2, 0x4F, 0xEE, 0x0, 0x2, 0x50, 0x18, 0x0, 0x2, 0x50, 0x3F, 0x0, 0x2, 0x50, 0x67, 0x0, 0x2, 0x50, 0x93, 0x0, 0x2, 0x50, 0xC8, 0x0, 0x2, 0x50, 0xF9, 0x0, 0x2, 0x51, 0x29, 0x0, 0x2, 0x51, 0x5C, 0x0, 0x2, 0x51, 0x8C, 0x0, 0x2, 0x51, 0xC0, 0x0, 0x2, 0x51, 0xF0, 0x0, 0x2, 0x52, 0x20, 0x0, 0x2, 0x52, 0x54, 0x0, 0x2, 0x52, 0x88, 0x0, 0x2, 0x52, 0xBA, 0x0, 0x2, 0x52, 0xDF, 0x0, 0x2, 0x53, 0xF, 0x0, 0x2, 0x53, 0x43, 0x0, 0x2, 0x53, 0x6E, 0x0, 0x2, 0x53, 0x96, 0x0, 0x2, 0x53, 0xC0, 0x0, 0x2, 0x53, 0xF3, 0x0, 0x2, 0x54, 0x26, 0x0, 0x2, 0x54, 0x4B, 0x0, 0x2, 0x54, 0x7E, 0x0, 0x2, 0x54, 0xAE, 0x0, 0x2, 0x54, 0xD5, 0x0, 0x2, 0x55, 0x4, 0x0, 0x2, 0x55, 0x39, 0x0, 0x2, 0x55, 0x68, 0x0, 0x2, 0x55, 0x92, 0x0, 0x2, 0x55, 0xBE, 0x0, 0x2, 0x55, 0xE7, 0x0, 0x2, 0x56, 0x1B, 0x0, 0x2, 0x56, 0x50, 0x0, 0x2, 0x56, 0x81, 0x0, 0x2, 0x56, 0xB4, 0x0, 0x2, 0x56, 0xE1, 0x0, 0x2, 0x57, 0xF, 0x0, 0x2, 0x57, 0x3F, 0x0, 0x2, 0x57, 0x70, 0x0, 0x2, 0x57, 0xA0, 0x0, 0x2, 0x57, 0xCD, 0x0, 0x2, 0x57, 0xFF, 0x0, 0x2, 0x58, 0x2F, 0x0, 0x2, 0x58, 0x5D, 0x0, 0x2, 0x58, 0x8A, 0x0, 0x2, 0x58, 0xBA, 0x0, 0x2, 0x58, 0xE3, 0x0, 0x2, 0x59, 0x13, 0x0, 0x2, 0x59, 0x3E, 0x0, 0x2, 0x59, 0x68, 0x0, 0x2, 0x59, 0x8F, 0x0, 0x2, 0x59, 0xC1, 0x0, 0x2, 0x59, 0xF1, 0x0, 0x2, 0x5A, 0x22, 0x0, 0x2, 0x5A, 0x4D, 0x0, 0x2, 0x5A, 0x81, 0x0, 0x2, 0x5A, 0xAA, 0x0, 0x2, 0x5A, 0xDB, 0x0, 0x2, 0x5B, 0x9, 0x0, 0x2, 0x5B, 0x30, 0x0, 0x2, 0x5B, 0x61, 0x0, 0x2, 0x5B, 0x91, 0x0, 0x2, 0x5B, 0xBE, 0x0, 0x2, 0x5B, 0xEE, 0x0, 0x2, 0x5C, 0x1A, 0x0, 0x2, 0x5C, 0x49, 0x0, 0x2, 0x5C, 0x79, 0x0, 0x2, 0x5C, 0xA1, 0x0, 0x2, 0x5C, 0xC5, 0x0, 0x2, 0x5C, 0xF5, 0x0, 0x2, 0x5D, 0x19, 0x0, 0x2, 0x5D, 0x40, 0x0, 0x2, 0x5D, 0xD6, 0x0, 0x2, 0x5E, 0xBD, 0x0, 0x2, 0x5F, 0x28, 0x0, 0x2, 0x5F, 0xC6, 0x0, 0x2, 0x60, 0x40, 0x0, 0x2, 0x60, 0xBE, 0x0, 0x2, 0x61, 0x4B, 0x0, 0x2, 0x61, 0xC0, 0x0, 0x2, 0x62, 0x54, 0x0, 0x2, 0x62, 0xC1, 0x0, 0x2, 0x63, 0x42, 0x0, 0x2, 0x63, 0xD8, 0x0, 0x2, 0x64, 0x48, 0x0, 0x2, 0x64, 0xD1, 0x0, 0x2, 0x65, 0x70, 0x0, 0x2, 0x65, 0xD2, 0x0, 0x2, 0x66, 0x2E, 0x0, 0x2, 0x66, 0x8A, 0x0, 0x2, 0x66, 0xE6, 0x0, 0x2, 0x67, 0x94, 0x0, 0x2, 0x68, 0x42, 0x0, 0x2, 0x68, 0xF0, 0x0, 0x2, 0x69, 0x16, 0x0, 0x2, 0x69, 0x71, 0x0, 0x2, 0x69, 0xC8, 0x0, 0x2, 0x6A, 0x22, 0x0, 0x2, 0x6A, 0x9D, 0x0, 0x2, 0x6A, 0xF8, 0x0, 0x2, 0x6B, 0x51, 0x0, 0x2, 0x6B, 0xAC, 0x0, 0x2, 0x6C, 0x11, 0x0, 0x2, 0x6C, 0x88, 0x0, 0x2, 0x6C, 0xF8, 0x0, 0x2, 0x6D, 0x8, 0x0, 0x2, 0x6D, 0xA5, 0x0, 0x2, 0x6E, 0x5A, 0x0, 0x2, 0x6F, 0x1, 0x0, 0x2, 0x6F, 0x1B, 0x0, 0x2, 0x6F, 0xD1, 0x0, 0x2, 0x70, 0x70, 0x0, 0x2, 0x71, 0x6, 0x0, 0x2, 0x71, 0x39, 0x0, 0x2, 0x71, 0x8C, 0x0, 0x2, 0x71, 0xD4, 0x0, 0x2, 0x72, 0x5B, 0x0, 0x2, 0x72, 0xA8, 0x0, 0x2, 0x72, 0xF0, 0x0, 0x2, 0x73, 0x2B, 0x0, 0x2, 0x73, 0xAE, 0x0, 0x2, 0x74, 0xD, 0x0, 0x2, 0x74, 0x53, 0x0, 0x2, 0x74, 0x88, 0x0, 0x2, 0x74, 0xB4, 0x0, 0x2, 0x75, 0xD, 0x0, 0x2, 0x75, 0x6B, 0x0, 0x2, 0x75, 0x97, 0x0, 0x2, 0x75, 0xE8, 0x0, 0x2, 0x76, 0x41, 0x0, 0x2, 0x76, 0x96, 0x0, 0x2, 0x77, 0x0, 0x0, 0x2, 0x77, 0x0, 0x0, 0x2, 0x77, 0x10, 0x0, 0x2, 0x77, 0x73, 0x0, 0x2, 0x77, 0xD6, 0x0, 0x2, 0x78, 0x27, 0x0, 0x2, 0x78, 0x5F, 0x0, 0x2, 0x78, 0xB3, 0x0, 0x2, 0x78, 0xCB, 0x0, 0x2, 0x78, 0xE3, 0x0, 0x2, 0x78, 0xFB, 0x0, 0x2, 0x79, 0x13, 0x0, 0x2, 0x79, 0x2B, 0x0, 0x2, 0x79, 0x43, 0x0, 0x2, 0x79, 0x5B, 0x0, 0x2, 0x79, 0x73, 0x0, 0x2, 0x79, 0x8B, 0x0, 0x2, 0x79, 0xA3, 0x0, 0x2, 0x79, 0xBB, 0x0, 0x2, 0x79, 0xD3, 0x0, 0x2, 0x79, 0xEB, 0x0, 0x2, 0x7A, 0x3, 0x0, 0x2, 0x7A, 0x1B, 0x0, 0x2, 0x7A, 0x33, 0x0, 0x2, 0x7A, 0x4B, 0x0, 0x2, 0x7A, 0x63, 0x0, 0x2, 0x7A, 0x7B, 0x0, 0x2, 0x7A, 0x93, 0x0, 0x2, 0x7A, 0xAB, 0x0, 0x2, 0x7A, 0xC3, 0x0, 0x2, 0x7A, 0xDB, 0x0, 0x2, 0x7A, 0xF3, 0x0, 0x2, 0x7B, 0xB, 0x0, 0x2, 0x7B, 0x23, 0x0, 0x2, 0x7B, 0x3B, 0x0, 0x2, 0x7B, 0x53, 0x0, 0x2, 0x7B, 0x6B, 0x0, 0x2, 0x7B, 0x81, 0x0, 0x2, 0x7B, 0x97, 0x0, 0x2, 0x7B, 0xAD, 0x0, 0x2, 0x7B, 0xC5, 0x0, 0x2, 0x7B, 0xDD, 0x0, 0x2, 0x7B, 0xF5, 0x0, 0x2, 0x7C, 0xD, 0x0, 0x2, 0x7C, 0x25, 0x0, 0x2, 0x7C, 0x3B, 0x0, 0x2, 0x7C, 0x51, 0x0, 0x2, 0x7C, 0x67, 0x0, 0x2, 0x7C, 0x7D, 0x0, 0x2, 0x7C, 0x95, 0x0, 0x2, 0x7C, 0xAD, 0x0, 0x2, 0x7C, 0xC3, 0x0, 0x2, 0x7C, 0xDB, 0x0, 0x2, 0x7C, 0xF3, 0x0, 0x2, 0x7D, 0x9, 0x0, 0x2, 0x7D, 0x1F, 0x0, 0x2, 0x7D, 0x37, 0x0, 0x2, 0x7D, 0x4F, 0x0, 0x2, 0x7D, 0x67, 0x0, 0x2, 0x7D, 0x7D, 0x0, 0x2, 0x7D, 0x93, 0x0, 0x2, 0x7D, 0xAB, 0x0, 0x2, 0x7D, 0xC1, 0x0, 0x2, 0x7D, 0xD9, 0x0, 0x2, 0x7D, 0xEF, 0x0, 0x2, 0x7E, 0x7, 0x0, 0x2, 0x7E, 0x1D, 0x0, 0x2, 0x7E, 0x7D, 0x0, 0x2, 0x7F, 0x14, 0x0, 0x2, 0x7F, 0x2C, 0x0, 0x2, 0x7F, 0x44, 0x0, 0x2, 0x7F, 0x5C, 0x0, 0x2, 0x7F, 0x72, 0x0, 0x2, 0x7F, 0x8A, 0x0, 0x2, 0x7F, 0xA2, 0x0, 0x2, 0x7F, 0xBA, 0x0, 0x2, 0x7F, 0xD0, 0x0, 0x2, 0x7F, 0xE8, 0x0, 0x2, 0x80, 0x0, 0x0, 0x2, 0x80, 0x18, 0x0, 0x2, 0x80, 0x2E, 0x0, 0x2, 0x80, 0x46, 0x0, 0x2, 0x80, 0x5C, 0x0, 0x2, 0x80, 0x74, 0x0, 0x2, 0x80, 0x8C, 0x0, 0x2, 0x80, 0xE4, 0x0, 0x2, 0x81, 0x6B, 0x0, 0x2, 0x81, 0x83, 0x0, 0x2, 0x81, 0x99, 0x0, 0x2, 0x81, 0xB1, 0x0, 0x2, 0x81, 0xC7, 0x0, 0x2, 0x81, 0xDF, 0x0, 0x2, 0x81, 0xF5, 0x0, 0x2, 0x82, 0xD, 0x0, 0x2, 0x82, 0x25, 0x0, 0x2, 0x82, 0x3D, 0x0, 0x2, 0x82, 0x55, 0x0, 0x2, 0x82, 0x6D, 0x0, 0x2, 0x82, 0x85, 0x0, 0x2, 0x82, 0x9D, 0x0, 0x2, 0x82, 0xB5, 0x0, 0x2, 0x82, 0xCD, 0x0, 0x2, 0x82, 0xE5, 0x0, 0x2, 0x82, 0xFD, 0x0, 0x2, 0x83, 0x15, 0x0, 0x2, 0x83, 0x2B, 0x0, 0x2, 0x83, 0x41, 0x0, 0x2, 0x83, 0x59, 0x0, 0x2, 0x83, 0x71, 0x0, 0x2, 0x83, 0x89, 0x0, 0x2, 0x83, 0xA1, 0x0, 0x2, 0x83, 0xB9, 0x0, 0x2, 0x83, 0xD1, 0x0, 0x2, 0x83, 0xE9, 0x0, 0x2, 0x84, 0x1, 0x0, 0x2, 0x84, 0x19, 0x0, 0x2, 0x84, 0x31, 0x0, 0x2, 0x84, 0x49, 0x0, 0x2, 0x84, 0x61, 0x0, 0x2, 0x84, 0x79, 0x0, 0x2, 0x84, 0x91, 0x0, 0x2, 0x84, 0xA9, 0x0, 0x2, 0x84, 0xC1, 0x0, 0x2, 0x84, 0xD9, 0x0, 0x2, 0x84, 0xF1, 0x0, 0x2, 0x85, 0x9, 0x0, 0x2, 0x85, 0x21, 0x0, 0x2, 0x85, 0x37, 0x0, 0x2, 0x85, 0x4F, 0x0, 0x2, 0x85, 0x67, 0x0, 0x2, 0x85, 0x7D, 0x0, 0x2, 0x85, 0x95, 0x0, 0x2, 0x85, 0xAD, 0x0, 0x2, 0x85, 0xC5, 0x0, 0x2, 0x85, 0xDD, 0x0, 0x2, 0x85, 0xF5, 0x0, 0x2, 0x86, 0xD, 0x0, 0x2, 0x86, 0x25, 0x0, 0x2, 0x86, 0x3D, 0x0, 0x2, 0x86, 0x55, 0x0, 0x2, 0x86, 0x6B, 0x0, 0x2, 0x86, 0x83, 0x0, 0x2, 0x86, 0x9B, 0x0, 0x2, 0x86, 0xB3, 0x0, 0x2, 0x86, 0xC9, 0x0, 0x2, 0x86, 0xE1, 0x0, 0x2, 0x86, 0xF9, 0x0, 0x2, 0x87, 0x11, 0x0, 0x2, 0x87, 0x29, 0x0, 0x2, 0x87, 0x41, 0x0, 0x2, 0x87, 0x57, 0x0, 0x2, 0x87, 0x6F, 0x0, 0x2, 0x87, 0x87, 0x0, 0x2, 0x87, 0x9F, 0x0, 0x2, 0x87, 0xB7, 0x0, 0x2, 0x87, 0xCF, 0x0, 0x2, 0x87, 0xE7, 0x0, 0x2, 0x87, 0xFF, 0x0, 0x2, 0x88, 0x15, 0x0, 0x2, 0x88, 0x2D, 0x0, 0x2, 0x88, 0x43, 0x0, 0x2, 0x88, 0x5B, 0x0, 0x2, 0x88, 0x73, 0x0, 0x2, 0x88, 0x8B, 0x0, 0x2, 0x88, 0xA3, 0x0, 0x2, 0x88, 0xBB, 0x0, 0x2, 0x88, 0xD3, 0x0, 0x2, 0x89, 0x38, 0x0, 0x2, 0x89, 0x9B, 0x0, 0x2, 0x89, 0xB3, 0x0, 0x2, 0x89, 0xCB, 0x0, 0x2, 0x89, 0xE3, 0x0, 0x2, 0x89, 0xF9, 0x0, 0x2, 0x8A, 0x11, 0x0, 0x2, 0x8A, 0x29, 0x0, 0x2, 0x8A, 0x41, 0x0, 0x2, 0x8A, 0x59, 0x0, 0x2, 0x8A, 0x71, 0x0, 0x2, 0x8A, 0x89, 0x0, 0x2, 0x8A, 0x9F, 0x0, 0x2, 0x8A, 0xB7, 0x0, 0x2, 0x8A, 0xCF, 0x0, 0x2, 0x8A, 0xE7, 0x0, 0x2, 0x8A, 0xFF, 0x0, 0x2, 0x8B, 0x17, 0x0, 0x2, 0x8B, 0x2F, 0x0, 0x2, 0x8B, 0x45, 0x0, 0x2, 0x8B, 0x5D, 0x0, 0x2, 0x8B, 0x75, 0x0, 0x2, 0x8B, 0x8B, 0x0, 0x2, 0x8B, 0xA1, 0x0, 0x2, 0x8B, 0xB9, 0x0, 0x2, 0x8B, 0xD1, 0x0, 0x2, 0x8B, 0xE9, 0x0, 0x2, 0x8C, 0x1, 0x0, 0x2, 0x8C, 0x19, 0x0, 0x2, 0x8C, 0x31, 0x0, 0x2, 0x8C, 0x47, 0x0, 0x2, 0x8C, 0x5D, 0x0, 0x2, 0x8C, 0x75, 0x0, 0x2, 0x8C, 0x8B, 0x0, 0x2, 0x8C, 0xA3, 0x0, 0x2, 0x8C, 0xBB, 0x0, 0x2, 0x8C, 0xD3, 0x0, 0x2, 0x8C, 0xEB, 0x0, 0x2, 0x8D, 0x3, 0x0, 0x2, 0x8D, 0x19, 0x0, 0x2, 0x8D, 0x2F, 0x0, 0x2, 0x8D, 0x47, 0x0, 0x2, 0x8D, 0x5F, 0x0, 0x2, 0x8D, 0x77, 0x0, 0x2, 0x8D, 0x8D, 0x0, 0x2, 0x8D, 0xA5, 0x0, 0x2, 0x8D, 0xBD, 0x0, 0x2, 0x8D, 0xD3, 0x0, 0x2, 0x8D, 0xEB, 0x0, 0x2, 0x8E, 0x48, 0x0, 0x2, 0x8E, 0x60, 0x0, 0x2, 0x8E, 0x76, 0x0, 0x2, 0x8E, 0x8E, 0x0, 0x2, 0x8E, 0xA4, 0x0, 0x2, 0x8E, 0xBA, 0x0, 0x2, 0x8E, 0xD0, 0x0, 0x2, 0x8E, 0xE6, 0x0, 0x2, 0x8E, 0xFE, 0x0, 0x2, 0x8F, 0x56, 0x0, 0x2, 0x8F, 0x6C, 0x0, 0x2, 0x8F, 0x82, 0x0, 0x2, 0x8F, 0x9A, 0x0, 0x2, 0x8F, 0xB2, 0x0, 0x2, 0x8F, 0xCA, 0x0, 0x2, 0x8F, 0xE0, 0x0, 0x2, 0x8F, 0xF8, 0x0, 0x2, 0x90, 0x10, 0x0, 0x2, 0x90, 0x28, 0x0, 0x2, 0x90, 0x3E, 0x0, 0x2, 0x90, 0x54, 0x0, 0x2, 0x90, 0x6C, 0x0, 0x2, 0x90, 0x84, 0x0, 0x2, 0x90, 0x9A, 0x0, 0x2, 0x90, 0xB2, 0x0, 0x2, 0x90, 0xCA, 0x0, 0x2, 0x90, 0xE2, 0x0, 0x2, 0x90, 0xFA, 0x0, 0x2, 0x91, 0x12, 0x0, 0x2, 0x91, 0x2A, 0x0, 0x2, 0x91, 0x40, 0x0, 0x2, 0x91, 0x58, 0x0, 0x2, 0x91, 0x70, 0x0, 0x2, 0x91, 0x88, 0x0, 0x2, 0x91, 0xA0, 0x0, 0x2, 0x91, 0xB8, 0x0, 0x2, 0x91, 0xCE, 0x0, 0x2, 0x91, 0xE6, 0x0, 0x2, 0x91, 0xFC, 0x0, 0x2, 0x92, 0x14, 0x0, 0x2, 0x92, 0x2A, 0x0, 0x2, 0x92, 0x42, 0x0, 0x2, 0x92, 0x58, 0x0, 0x2, 0x92, 0x70, 0x0, 0x2, 0x92, 0x86, 0x0, 0x2, 0x92, 0x9C, 0x0, 0x2, 0x92, 0xB4, 0x0, 0x2, 0x92, 0xCC, 0x0, 0x2, 0x92, 0xE4, 0x0, 0x2, 0x93, 0x46, 0x0, 0x2, 0x93, 0x5E, 0x0, 0x2, 0x93, 0x74, 0x0, 0x2, 0x93, 0x8A, 0x0, 0x2, 0x93, 0xA2, 0x0, 0x2, 0x93, 0xBA, 0x0, 0x2, 0x93, 0xD0, 0x0, 0x2, 0x93, 0xE6, 0x0, 0x2, 0x93, 0xFE, 0x0, 0x2, 0x94, 0x16, 0x0, 0x2, 0x94, 0x2E, 0x0, 0x2, 0x94, 0x46, 0x0, 0x2, 0x94, 0x5E, 0x0, 0x2, 0x94, 0x76, 0x0, 0x2, 0x94, 0x8E, 0x0, 0x2, 0x94, 0x9E, 0x0, 0x2, 0x94, 0xAE, 0x0, 0x2, 0x94, 0xBE, 0x0, 0x2, 0x94, 0xCE, 0x0, 0x2, 0x94, 0xDE, 0x0, 0x2, 0x94, 0xEE, 0x0, 0x2, 0x94, 0xFE, 0x0, 0x2, 0x95, 0xE, 0x0, 0x2, 0x95, 0x1E, 0x0, 0x2, 0x95, 0x2E, 0x0, 0x2, 0x95, 0x3E, 0x0, 0x2, 0x95, 0x4E, 0x0, 0x2, 0x95, 0x5E, 0x0, 0x2, 0x95, 0x6E, 0x0, 0x2, 0x95, 0x86, 0x0, 0x2, 0x95, 0x9E, 0x0, 0x2, 0x95, 0xB6, 0x0, 0x2, 0x95, 0xCE, 0x0, 0x2, 0x95, 0xE6, 0x0, 0x2, 0x95, 0xFC, 0x0, 0x2, 0x96, 0x12, 0x0, 0x2, 0x96, 0x22, 0x0, 0x2, 0x96, 0x32, 0x0, 0x2, 0x96, 0x42, 0x0, 0x2, 0x96, 0x52, 0x0, 0x2, 0x96, 0x62, 0x0, 0x2, 0x96, 0x7A, 0x0, 0x2, 0x96, 0x90, 0x0, 0x2, 0x96, 0xA8, 0x0, 0x2, 0x96, 0xC0, 0x0, 0x2, 0x96, 0xD8, 0x0, 0x2, 0x96, 0xF0, 0x0, 0x2, 0x97, 0x8, 0x0, 0x2, 0x97, 0x7C, 0x0, 0x2, 0x97, 0x8C, 0x0, 0x2, 0x97, 0xA4, 0x0, 0x2, 0x97, 0xB4, 0x0, 0x2, 0x97, 0xC4, 0x0, 0x2, 0x97, 0xDC, 0x0, 0x2, 0x97, 0xF4, 0x0, 0x2, 0x98, 0x4, 0x0, 0x2, 0x98, 0x14, 0x0, 0x2, 0x98, 0x24, 0x0, 0x2, 0x98, 0x34, 0x0, 0x2, 0x98, 0x4C, 0x0, 0x2, 0x98, 0x5C, 0x0, 0x2, 0x98, 0x6C, 0x0, 0x2, 0x98, 0x7C, 0x0, 0x2, 0x98, 0x8C, 0x0, 0x2, 0x98, 0x9C, 0x0, 0x2, 0x98, 0xAC, 0x0, 0x2, 0x98, 0xBC, 0x0, 0x2, 0x98, 0xCC, 0x0, 0x2, 0x98, 0xDC, 0x0, 0x2, 0x98, 0xEC, 0x0, 0x2, 0x99, 0x4, 0x0, 0x2, 0x99, 0x14, 0x0, 0x2, 0x99, 0x24, 0x0, 0x2, 0x99, 0x7B, 0x0, 0x2, 0x99, 0x8B, 0x0, 0x2, 0x99, 0x9B, 0x0, 0x2, 0x99, 0xB1, 0x0, 0x2, 0x99, 0xC9, 0x0, 0x2, 0x99, 0xD9, 0x0, 0x2, 0x99, 0xE9, 0x0, 0x2, 0x9A, 0x1, 0x0, 0x2, 0x9A, 0x11, 0x0, 0x2, 0x9A, 0x29, 0x0, 0x2, 0x9A, 0x3F, 0x0, 0x2, 0x9A, 0x57, 0x0, 0x2, 0x9A, 0x6F, 0x0, 0x2, 0x9A, 0x87, 0x0, 0x2, 0x9A, 0x9F, 0x0, 0x2, 0x9A, 0xB7, 0x0, 0x2, 0x9A, 0xCF, 0x0, 0x2, 0x9A, 0xE7, 0x0, 0x2, 0x9A, 0xFD, 0x0, 0x2, 0x9B, 0xD, 0x0, 0x2, 0x9B, 0x1D, 0x0, 0x2, 0x9B, 0x35, 0x0, 0x2, 0x9B, 0x4D, 0x0, 0x2, 0x9B, 0x5D, 0x0, 0x2, 0x9B, 0x75, 0x0, 0x2, 0x9B, 0x8D, 0x0, 0x2, 0x9B, 0xA5, 0x0, 0x2, 0x9B, 0xBD, 0x0, 0x2, 0x9B, 0xD5, 0x0, 0x2, 0x9B, 0xED, 0x0, 0x2, 0x9C, 0x5, 0x0, 0x2, 0x9C, 0x1D, 0x0, 0x2, 0x9C, 0x2D, 0x0, 0x2, 0x9C, 0x3D, 0x0, 0x2, 0x9C, 0x55, 0x0, 0x2, 0x9C, 0x6D, 0x0, 0x2, 0x9C, 0x85, 0x0, 0x2, 0x9C, 0x9D, 0x0, 0x2, 0x9C, 0xB5, 0x0, 0x2, 0x9C, 0xCD, 0x0, 0x2, 0x9C, 0xE5, 0x0, 0x2, 0x9C, 0xFD, 0x0, 0x2, 0x9D, 0xD, 0x0, 0x2, 0x9D, 0x1D, 0x0, 0x2, 0x9D, 0x2D, 0x0, 0x2, 0x9D, 0x45, 0x0, 0x2, 0x9D, 0x5D, 0x0, 0x2, 0x9D, 0x6D, 0x0, 0x2, 0x9D, 0x85, 0x0, 0x2, 0x9D, 0x9B, 0x0, 0x2, 0x9D, 0xB3, 0x0, 0x2, 0x9D, 0xC9, 0x0, 0x2, 0x9D, 0xD9, 0x0, 0x2, 0x9D, 0xE9, 0x0, 0x2, 0x9E, 0x1, 0x0, 0x2, 0x9E, 0x17, 0x0, 0x2, 0x9E, 0x2F, 0x0, 0x2, 0x9E, 0x3F, 0x0, 0x2, 0x9E, 0x55, 0x0, 0x2, 0x9E, 0x6D, 0x0, 0x2, 0x9E, 0x85, 0x0, 0x2, 0x9E, 0x9D, 0x0, 0x2, 0x9E, 0xB3, 0x0, 0x2, 0x9E, 0xCB, 0x0, 0x2, 0x9E, 0xE1, 0x0, 0x2, 0x9E, 0xF9, 0x0, 0x2, 0x9F, 0x11, 0x0, 0x2, 0x9F, 0x29, 0x0, 0x2, 0x9F, 0x41, 0x0, 0x2, 0x9F, 0x51, 0x0, 0x2, 0x9F, 0x61, 0x0, 0x2, 0x9F, 0x71, 0x0, 0x2, 0x9F, 0x89, 0x0, 0x2, 0x9F, 0x9F, 0x0, 0x2, 0x9F, 0xB7, 0x0, 0x2, 0x9F, 0xCD, 0x0, 0x2, 0x9F, 0xE5, 0x0, 0x2, 0x9F, 0xFB, 0x0, 0x2, 0xA0, 0x13, 0x0, 0x2, 0xA0, 0x29, 0x0, 0x2, 0xA0, 0x41, 0x0, 0x2, 0xA0, 0x59, 0x0, 0x2, 0xA0, 0x71, 0x0, 0x2, 0xA0, 0x87, 0x0, 0x2, 0xA0, 0x9F, 0x0, 0x2, 0xA0, 0xB7, 0x0, 0x2, 0xA0, 0xC7, 0x0, 0x2, 0xA0, 0xDF, 0x0, 0x2, 0xA0, 0xF7, 0x0, 0x2, 0xA1, 0xF, 0x0, 0x2, 0xA1, 0x27, 0x0, 0x2, 0xA1, 0x3F, 0x0, 0x2, 0xA1, 0x55, 0x0, 0x2, 0xA1, 0x6D, 0x0, 0x2, 0xA1, 0x83, 0x0, 0x2, 0xA1, 0x9B, 0x0, 0x2, 0xA1, 0xB1, 0x0, 0x2, 0xA1, 0xC9, 0x0, 0x2, 0xA1, 0xDF, 0x0, 0x2, 0xA1, 0xFF, 0x0, 0x2, 0xA2, 0x1D, 0x0, 0x2, 0xA2, 0x35, 0x0, 0x2, 0xA2, 0x4B, 0x0, 0x2, 0xA2, 0x63, 0x0, 0x2, 0xA2, 0x79, 0x0, 0x2, 0xA2, 0x91, 0x0, 0x2, 0xA2, 0xA7, 0x0, 0x2, 0xA2, 0xBF, 0x0, 0x2, 0xA2, 0xD5, 0x0, 0x2, 0xA2, 0xF5, 0x0, 0x2, 0xA3, 0x13, 0x0, 0x2, 0xA3, 0x2B, 0x0, 0x2, 0xA3, 0x43, 0x0, 0x2, 0xA3, 0x5B, 0x0, 0x2, 0xA3, 0x73, 0x0, 0x2, 0xA3, 0x8B, 0x0, 0x2, 0xA3, 0xA1, 0x0, 0x2, 0xA3, 0xB9, 0x0, 0x2, 0xA3, 0xCF, 0x0, 0x2, 0xA3, 0xE7, 0x0, 0x2, 0xA3, 0xFD, 0x0, 0x2, 0xA4, 0x15, 0x0, 0x2, 0xA4, 0x2B, 0x0, 0x2, 0xA4, 0x43, 0x0, 0x2, 0xA4, 0x59, 0x0, 0x2, 0xA4, 0x79, 0x0, 0x2, 0xA4, 0x97, 0x0, 0x2, 0xA4, 0xAF, 0x0, 0x2, 0xA4, 0xC7, 0x0, 0x2, 0xA4, 0xDF, 0x0, 0x2, 0xA4, 0xF7, 0x0, 0x2, 0xA5, 0xF, 0x0, 0x2, 0xA5, 0x27, 0x0, 0x2, 0xA5, 0x3F, 0x0, 0x2, 0xA5, 0x57, 0x0, 0x2, 0xA5, 0x6F, 0x0, 0x2, 0xA5, 0x85, 0x0, 0x2, 0xA5, 0x9D, 0x0, 0x2, 0xA5, 0xB3, 0x0, 0x2, 0xA5, 0xCB, 0x0, 0x2, 0xA5, 0xE1, 0x0, 0x2, 0xA5, 0xF9, 0x0, 0x2, 0xA6, 0xF, 0x0, 0x2, 0xA6, 0x2F, 0x0, 0x2, 0xA6, 0x4D, 0x0, 0x2, 0xA6, 0x65, 0x0, 0x2, 0xA6, 0x7D, 0x0, 0x2, 0xA6, 0x95, 0x0, 0x2, 0xA6, 0xAD, 0x0, 0x2, 0xA6, 0xC5, 0x0, 0x2, 0xA6, 0xDD, 0x0, 0x2, 0xA6, 0xF5, 0x0, 0x2, 0xA7, 0xB, 0x0, 0x2, 0xA7, 0x23, 0x0, 0x2, 0xA7, 0x3B, 0x0, 0x2, 0xA7, 0x53, 0x0, 0x2, 0xA7, 0x6B, 0x0, 0x2, 0xA7, 0x83, 0x0, 0x2, 0xA7, 0x9B, 0x0, 0x2, 0xA7, 0xB3, 0x0, 0x2, 0xA7, 0xCB, 0x0, 0x2, 0xA7, 0xE3, 0x0, 0x2, 0xA7, 0xFB, 0x0, 0x2, 0xA8, 0x13, 0x0, 0x2, 0xA8, 0x2B, 0x0, 0x2, 0xA8, 0x43, 0x0, 0x2, 0xA8, 0x59, 0x0, 0x2, 0xA8, 0x71, 0x0, 0x2, 0xA8, 0x89, 0x0, 0x2, 0xA8, 0xA1, 0x0, 0x2, 0xA8, 0xB9, 0x0, 0x2, 0xA8, 0xD1, 0x0, 0x2, 0xA8, 0xE9, 0x0, 0x2, 0xA9, 0x1, 0x0, 0x2, 0xA9, 0x17, 0x0, 0x2, 0xA9, 0x37, 0x0, 0x2, 0xA9, 0x4F, 0x0, 0x2, 0xA9, 0x67, 0x0, 0x2, 0xA9, 0x7F, 0x0, 0x2, 0xA9, 0x97, 0x0, 0x2, 0xA9, 0xAF, 0x0, 0x2, 0xA9, 0xC7, 0x0, 0x2, 0xA9, 0xDF, 0x0, 0x2, 0xA9, 0xF7, 0x0, 0x2, 0xAA, 0x7, 0x0, 0x2, 0xAA, 0x5F, 0x0, 0x2, 0xAA, 0xB7, 0x0, 0x2, 0xAA, 0xEA, 0x0, 0x2, 0xAB, 0x1E, 0x0, 0x2, 0xAB, 0x66, 0x0, 0x2, 0xAB, 0xAF, 0x0, 0x2, 0xAB, 0xEE, 0x0, 0x2, 0xAC, 0x28, 0x0, 0x2, 0xAC, 0x76, 0x0, 0x2, 0xAC, 0xC1, 0x0, 0x2, 0xAC, 0xD1, 0x0, 0x2, 0xAC, 0xE9, 0x0, 0x2, 0xAC, 0xF9, 0x0, 0x2, 0xAD, 0x9, 0x0, 0x2, 0xAD, 0x19, 0x0, 0x2, 0xAD, 0x29, 0x0, 0x2, 0xAD, 0x39, 0x0, 0x2, 0xAD, 0x49, 0x0, 0x2, 0xAD, 0x59, 0x0, 0x2, 0xAD, 0x69, 0x0, 0x2, 0xAD, 0x79, 0x0, 0x2, 0xAD, 0x89, 0x0, 0x2, 0xAD, 0xBB, 0x0, 0x2, 0xAD, 0xCB, 0x0, 0x2, 0xAD, 0xE3, 0x0, 0x2, 0xAD, 0xFB, 0x0, 0x2, 0xAE, 0x13, 0x0, 0x2, 0xAE, 0x2B, 0x0, 0x2, 0xAE, 0x43, 0x0, 0x2, 0xAE, 0x5B, 0x0, 0x2, 0xAE, 0x73, 0x0, 0x2, 0xAE, 0x89, 0x0, 0x2, 0xAE, 0xA1, 0x0, 0x2, 0xAE, 0xB9, 0x0, 0x2, 0xAE, 0xD1, 0x0, 0x2, 0xAE, 0xE7, 0x0, 0x2, 0xAE, 0xFF, 0x0, 0x2, 0xAF, 0x15, 0x0, 0x2, 0xAF, 0x2D, 0x0, 0x2, 0xAF, 0x45, 0x0, 0x2, 0xAF, 0x5D, 0x0, 0x2, 0xAF, 0x75, 0x0, 0x2, 0xAF, 0x8D, 0x0, 0x2, 0xAF, 0xA5, 0x0, 0x2, 0xAF, 0xBD, 0x0, 0x2, 0xAF, 0xD5, 0x0, 0x2, 0xAF, 0xE5, 0x0, 0x2, 0xAF, 0xFD, 0x0, 0x2, 0xB0, 0x15, 0x0, 0x2, 0xB0, 0x2D, 0x0, 0x2, 0xB0, 0x45, 0x0, 0x2, 0xB0, 0x5D, 0x0, 0x2, 0xB0, 0x75, 0x0, 0x2, 0xB0, 0x8D, 0x0, 0x2, 0xB0, 0xA3, 0x0, 0x2, 0xB0, 0xBB, 0x0, 0x2, 0xB0, 0xD3, 0x0, 0x2, 0xB0, 0xEB, 0x0, 0x2, 0xB1, 0x3, 0x0, 0x2, 0xB1, 0x23, 0x0, 0x2, 0xB1, 0x41, 0x0, 0x2, 0xB1, 0x59, 0x0, 0x2, 0xB1, 0x71, 0x0, 0x2, 0xB1, 0x89, 0x0, 0x2, 0xB1, 0xA1, 0x0, 0x2, 0xB1, 0xB9, 0x0, 0x2, 0xB1, 0xD1, 0x0, 0x2, 0xB1, 0xE9, 0x0, 0x2, 0xB2, 0x1, 0x0, 0x2, 0xB2, 0x19, 0x0, 0x2, 0xB2, 0x31, 0x0, 0x2, 0xB2, 0x49, 0x0, 0x2, 0xB2, 0x61, 0x0, 0x2, 0xB2, 0x79, 0x0, 0x2, 0xB2, 0x91, 0x0, 0x2, 0xB2, 0xA9, 0x0, 0x2, 0xB2, 0xC1, 0x0, 0x2, 0xB2, 0xD9, 0x0, 0x2, 0xB2, 0xF1, 0x0, 0x2, 0xB3, 0x9, 0x0, 0x2, 0xB3, 0x21, 0x0, 0x2, 0xB3, 0x39, 0x0, 0x2, 0xB3, 0x51, 0x0, 0x2, 0xB3, 0x69, 0x0, 0x2, 0xB3, 0x81, 0x0, 0x2, 0xB3, 0x99, 0x0, 0x2, 0xB3, 0xB1, 0x0, 0x2, 0xB3, 0xC9, 0x0, 0x2, 0xB3, 0xE1, 0x0, 0x2, 0xB3, 0xF9, 0x0, 0x2, 0xB4, 0x11, 0x0, 0x2, 0xB4, 0x29, 0x0, 0x2, 0xB4, 0x41, 0x0, 0x2, 0xB4, 0x59, 0x0, 0x2, 0xB4, 0x71, 0x0, 0x2, 0xB4, 0x89, 0x0, 0x2, 0xB4, 0xA1, 0x0, 0x2, 0xB4, 0xB9, 0x0, 0x2, 0xB4, 0xD1, 0x0, 0x2, 0xB4, 0xE9, 0x0, 0x2, 0xB5, 0x1, 0x0, 0x2, 0xB5, 0x19, 0x0, 0x2, 0xB5, 0x31, 0x0, 0x2, 0xB5, 0x49, 0x0, 0x2, 0xB5, 0x61, 0x0, 0x2, 0xB5, 0x79, 0x0, 0x2, 0xB5, 0x91, 0x0, 0x2, 0xB5, 0xA7, 0x0, 0x2, 0xB5, 0xB7, 0x0, 0x2, 0xB5, 0xC7, 0x0, 0x2, 0xB5, 0xD7, 0x0, 0x2, 0xB5, 0xE7, 0x0, 0x2, 0xB5, 0xFF, 0x0, 0x2, 0xB6, 0x17, 0x0, 0x2, 0xB6, 0x27, 0x0, 0x2, 0xB6, 0x37, 0x0, 0x2, 0xB6, 0x47, 0x0, 0x2, 0xB6, 0x57, 0x0, 0x2, 0xB6, 0x67, 0x0, 0x2, 0xB6, 0x77, 0x0, 0x2, 0xB6, 0x87, 0x0, 0x2, 0xB6, 0x97, 0x0, 0x2, 0xB6, 0xA7, 0x0, 0x2, 0xB6, 0xB7, 0x0, 0x2, 0xB6, 0xC7, 0x0, 0x2, 0xB6, 0xDF, 0x0, 0x2, 0xB6, 0xF7, 0x0, 0x2, 0xB7, 0xF, 0x0, 0x2, 0xB7, 0x27, 0x0, 0x2, 0xB7, 0x3F, 0x0, 0x2, 0xB7, 0x57, 0x0, 0x2, 0xB7, 0x77, 0x0, 0x2, 0xB7, 0x97, 0x0, 0x2, 0xB7, 0xAF, 0x0, 0x2, 0xB7, 0xC7, 0x0, 0x2, 0xB7, 0xDF, 0x0, 0x2, 0xB7, 0xF7, 0x0, 0x2, 0xB8, 0xF, 0x0, 0x2, 0xB8, 0x27, 0x0, 0x2, 0xB8, 0x3F, 0x0, 0x2, 0xB8, 0x57, 0x0, 0x2, 0xB8, 0x6F, 0x0, 0x2, 0xB8, 0x87, 0x0, 0x2, 0xB8, 0x9F, 0x0, 0x2, 0xB8, 0xB7, 0x0, 0x2, 0xB8, 0xCF, 0x0, 0x2, 0xB8, 0xE7, 0x0, 0x2, 0xB8, 0xFF, 0x0, 0x2, 0xB9, 0x17, 0x0, 0x2, 0xB9, 0x2F, 0x0, 0x2, 0xB9, 0x47, 0x0, 0x2, 0xB9, 0x67, 0x0, 0x2, 0xB9, 0x85, 0x0, 0x2, 0xB9, 0x9D, 0x0, 0x2, 0xB9, 0xB5, 0x0, 0x2, 0xB9, 0xCD, 0x0, 0x2, 0xB9, 0xE3, 0x0, 0x2, 0xB9, 0xFB, 0x0, 0x2, 0xBA, 0x13, 0x0, 0x2, 0xBA, 0x2B, 0x0, 0x2, 0xBA, 0x43, 0x0, 0x2, 0xBA, 0x5B, 0x0, 0x2, 0xBA, 0x73, 0x0, 0x2, 0xBA, 0x8B, 0x0, 0x2, 0xBA, 0xA3, 0x0, 0x2, 0xBA, 0xBB, 0x0, 0x2, 0xBA, 0xD3, 0x0, 0x2, 0xBA, 0xEB, 0x0, 0x2, 0xBB, 0x3, 0x0, 0x2, 0xBB, 0x1B, 0x0, 0x2, 0xBB, 0x33, 0x0, 0x2, 0xBB, 0x4B, 0x0, 0x2, 0xBB, 0x63, 0x0, 0x2, 0xBB, 0x83, 0x0, 0x2, 0xBB, 0xA3, 0x0, 0x2, 0xBB, 0xBB, 0x0, 0x2, 0xBB, 0xD3, 0x0, 0x2, 0xBB, 0xEB, 0x0, 0x2, 0xBC, 0x3, 0x0, 0x2, 0xBC, 0x1B, 0x0, 0x2, 0xBC, 0x33, 0x0, 0x2, 0xBC, 0x4B, 0x0, 0x2, 0xBC, 0x63, 0x0, 0x2, 0xBC, 0x7B, 0x0, 0x2, 0xBC, 0x93, 0x0, 0x2, 0xBC, 0xAB, 0x0, 0x2, 0xBC, 0xC3, 0x0, 0x2, 0xBC, 0xDB, 0x0, 0x2, 0xBC, 0xF3, 0x0, 0x2, 0xBD, 0xB, 0x0, 0x2, 0xBD, 0x23, 0x0, 0x2, 0xBD, 0x3B, 0x0, 0x2, 0xBD, 0x53, 0x0, 0x2, 0xBD, 0x6B, 0x0, 0x2, 0xBD, 0x83, 0x0, 0x2, 0xBD, 0x9B, 0x0, 0x2, 0xBD, 0xB3, 0x0, 0x2, 0xBD, 0xCB, 0x0, 0x2, 0xBD, 0xE3, 0x0, 0x2, 0xBD, 0xFB, 0x0, 0x2, 0xBE, 0x13, 0x0, 0x2, 0xBE, 0x2B, 0x0, 0x2, 0xBE, 0x43, 0x0, 0x2, 0xBE, 0x5B, 0x0, 0x2, 0xBE, 0x73, 0x0, 0x2, 0xBE, 0x8B, 0x0, 0x2, 0xBE, 0xA3, 0x0, 0x2, 0xBE, 0xC3, 0x0, 0x2, 0xBE, 0xE1, 0x0, 0x2, 0xBE, 0xF9, 0x0, 0x2, 0xBF, 0x11, 0x0, 0x2, 0xBF, 0x29, 0x0, 0x2, 0xBF, 0x41, 0x0, 0x2, 0xBF, 0x59, 0x0, 0x2, 0xBF, 0x71, 0x0, 0x2, 0xBF, 0x89, 0x0, 0x2, 0xBF, 0xA1, 0x0, 0x2, 0xBF, 0xB9, 0x0, 0x2, 0xBF, 0xD1, 0x0, 0x2, 0xBF, 0xF1, 0x0, 0x2, 0xC0, 0x11, 0x0, 0x2, 0xC0, 0x29, 0x0, 0x2, 0xC0, 0x41, 0x0, 0x2, 0xC0, 0x59, 0x0, 0x2, 0xC0, 0x71, 0x0, 0x2, 0xC0, 0x89, 0x0, 0x2, 0xC0, 0xA1, 0x0, 0x2, 0xC0, 0xB9, 0x0, 0x2, 0xC0, 0xD1, 0x0, 0x2, 0xC0, 0xE9, 0x0, 0x2, 0xC1, 0x1, 0x0, 0x2, 0xC1, 0x19, 0x0, 0x2, 0xC1, 0x31, 0x0, 0x2, 0xC1, 0x49, 0x0, 0x2, 0xC1, 0x61, 0x0, 0x2, 0xC1, 0x79, 0x0, 0x2, 0xC1, 0x91, 0x0, 0x2, 0xC1, 0xA9, 0x0, 0x2, 0xC1, 0xC1, 0x0, 0x2, 0xC1, 0xD9, 0x0, 0x2, 0xC1, 0xEF, 0x0, 0x2, 0xC2, 0x7, 0x0, 0x2, 0xC2, 0x1F, 0x0, 0x2, 0xC2, 0x37, 0x0, 0x2, 0xC2, 0x4F, 0x0, 0x2, 0xC2, 0x67, 0x0, 0x2, 0xC2, 0x7F, 0x0, 0x2, 0xC2, 0x97, 0x0, 0x2, 0xC2, 0xAF, 0x0, 0x2, 0xC2, 0xC7, 0x0, 0x2, 0xC2, 0xDD, 0x0, 0x2, 0xC2, 0xF5, 0x0, 0x2, 0xC3, 0xD, 0x0, 0x2, 0xC3, 0x25, 0x0, 0x2, 0xC3, 0x3B, 0x0, 0x2, 0xC3, 0x53, 0x0, 0x2, 0xC3, 0x6B, 0x0, 0x2, 0xC3, 0x83, 0x0, 0x2, 0xC3, 0x9B, 0x0, 0x2, 0xC3, 0xB3, 0x0, 0x2, 0xC3, 0xCB, 0x0, 0x2, 0xC3, 0xE3, 0x0, 0x2, 0xC3, 0xFB, 0x0, 0x2, 0xC4, 0x13, 0x0, 0x2, 0xC4, 0x2B, 0x0, 0x2, 0xC4, 0x43, 0x0, 0x2, 0xC4, 0x5B, 0x0, 0x2, 0xC4, 0x73, 0x0, 0x2, 0xC4, 0x8B, 0x0, 0x2, 0xC4, 0xA3, 0x0, 0x2, 0xC4, 0xBB, 0x0, 0x2, 0xC4, 0xD3, 0x0, 0x2, 0xC4, 0xE9, 0x0, 0x2, 0xC4, 0xFF, 0x0, 0x2, 0xC5, 0x17, 0x0, 0x2, 0xC5, 0x2F, 0x0, 0x2, 0xC5, 0x47, 0x0, 0x2, 0xC5, 0x5F, 0x0, 0x2, 0xC5, 0x77, 0x0, 0x2, 0xC5, 0x8F, 0x0, 0x2, 0xC5, 0xA7, 0x0, 0x2, 0xC5, 0xBF, 0x0, 0x2, 0xC5, 0xD7, 0x0, 0x2, 0xC5, 0xEF, 0x0, 0x2, 0xC6, 0x7, 0x0, 0x2, 0xC6, 0x1F, 0x0, 0x2, 0xC6, 0x37, 0x0, 0x2, 0xC6, 0x4F, 0x0, 0x2, 0xC6, 0x67, 0x0, 0x2, 0xC6, 0x7F, 0x0, 0x2, 0xC6, 0x97, 0x0, 0x2, 0xC6, 0xAF, 0x0, 0x2, 0xC6, 0xC7, 0x0, 0x2, 0xC6, 0xDF, 0x0, 0x2, 0xC6, 0xF7, 0x0, 0x2, 0xC7, 0xF, 0x0, 0x2, 0xC7, 0x27, 0x0, 0x2, 0xC7, 0x3F, 0x0, 0x2, 0xC7, 0x57, 0x0, 0x2, 0xC7, 0x6F, 0x0, 0x2, 0xC7, 0x87, 0x0, 0x2, 0xC7, 0x9F, 0x0, 0x2, 0xC7, 0xB7, 0x0, 0x2, 0xC7, 0xCF, 0x0, 0x2, 0xC7, 0xE7, 0x0, 0x2, 0xC7, 0xFF, 0x0, 0x2, 0xC8, 0x17, 0x0, 0x2, 0xC8, 0x2F, 0x0, 0x2, 0xC8, 0x45, 0x0, 0x2, 0xC8, 0x5B, 0x0, 0x2, 0xC8, 0x71, 0x0, 0x2, 0xC8, 0x87, 0x0, 0x2, 0xC8, 0x9D, 0x0, 0x2, 0xC8, 0xB3, 0x0, 0x2, 0xC8, 0xC9, 0x0, 0x2, 0xC8, 0xDF, 0x0, 0x2, 0xC8, 0xF7, 0x0, 0x2, 0xC9, 0xF, 0x0, 0x2, 0xC9, 0x27, 0x0, 0x2, 0xC9, 0x3F, 0x0, 0x2, 0xC9, 0x57, 0x0, 0x2, 0xC9, 0x6F, 0x0, 0x2, 0xC9, 0x87, 0x0, 0x2, 0xC9, 0x9F, 0x0, 0x2, 0xC9, 0xB7, 0x0, 0x2, 0xC9, 0xCF, 0x0, 0x2, 0xC9, 0xE7, 0x0, 0x2, 0xC9, 0xFF, 0x0, 0x2, 0xCA, 0x17, 0x0, 0x2, 0xCA, 0x2F, 0x0, 0x2, 0xCA, 0x47, 0x0, 0x2, 0xCA, 0x5F, 0x0, 0x2, 0xCA, 0x77, 0x0, 0x2, 0xCA, 0x8F, 0x0, 0x2, 0xCA, 0xA7, 0x0, 0x2, 0xCA, 0xBF, 0x0, 0x2, 0xCA, 0xD7, 0x0, 0x2, 0xCA, 0xEF, 0x0, 0x2, 0xCB, 0x7, 0x0, 0x2, 0xCB, 0x1D, 0x0, 0x2, 0xCB, 0x35, 0x0, 0x2, 0xCB, 0x4D, 0x0, 0x2, 0xCB, 0x65, 0x0, 0x2, 0xCB, 0x7D, 0x0, 0x2, 0xCB, 0x95, 0x0, 0x2, 0xCB, 0xAD, 0x0, 0x2, 0xCB, 0xC5, 0x0, 0x2, 0xCB, 0xDD, 0x0, 0x2, 0xCB, 0xF5, 0x0, 0x2, 0xCC, 0xD, 0x0, 0x2, 0xCC, 0x25, 0x0, 0x2, 0xCC, 0x3D, 0x0, 0x2, 0xCC, 0x55, 0x0, 0x2, 0xCC, 0x6D, 0x0, 0x2, 0xCC, 0x85, 0x0, 0x2, 0xCC, 0x9D, 0x0, 0x2, 0xCC, 0xB5, 0x0, 0x2, 0xCC, 0xCD, 0x0, 0x2, 0xCC, 0xE5, 0x0, 0x2, 0xCC, 0xFD, 0x0, 0x2, 0xCD, 0x15, 0x0, 0x2, 0xCD, 0x2D, 0x0, 0x2, 0xCD, 0x45, 0x0, 0x2, 0xCD, 0x5D, 0x0, 0x2, 0xCD, 0x75, 0x0, 0x2, 0xCD, 0x8D, 0x0, 0x2, 0xCD, 0xA5, 0x0, 0x2, 0xCD, 0xBD, 0x0, 0x2, 0xCD, 0xD5, 0x0, 0x2, 0xCD, 0xED, 0x0, 0x2, 0xCE, 0x3, 0x0, 0x2, 0xCE, 0x1B, 0x0, 0x2, 0xCE, 0x33, 0x0, 0x2, 0xCE, 0x4B, 0x0, 0x2, 0xCE, 0x63, 0x0, 0x2, 0xCE, 0x7B, 0x0, 0x2, 0xCE, 0x93, 0x0, 0x2, 0xCE, 0xAB, 0x0, 0x2, 0xCE, 0xCB, 0x0, 0x2, 0xCE, 0xEB, 0x0, 0x2, 0xCF, 0xB, 0x0, 0x2, 0xCF, 0x2B, 0x0, 0x2, 0xCF, 0x4B, 0x0, 0x2, 0xCF, 0x6B, 0x0, 0x2, 0xCF, 0x8B, 0x0, 0x2, 0xCF, 0xAB, 0x0, 0x2, 0xCF, 0xC9, 0x0, 0x2, 0xCF, 0xE7, 0x0, 0x2, 0xD0, 0x7, 0x0, 0x2, 0xD0, 0x27, 0x0, 0x2, 0xD0, 0x47, 0x0, 0x2, 0xD0, 0x67, 0x0, 0x2, 0xD0, 0x87, 0x0, 0x2, 0xD0, 0xA7, 0x0, 0x2, 0xD0, 0xC5, 0x0, 0x2, 0xD0, 0xE3, 0x0, 0x2, 0xD1, 0x1, 0x0, 0x2, 0xD1, 0x1F, 0x0, 0x2, 0xD1, 0x3D, 0x0, 0x2, 0xD1, 0x5B, 0x0, 0x2, 0xD1, 0x79, 0x0, 0x2, 0xD1, 0x97, 0x0, 0x2, 0xD1, 0xB7, 0x0, 0x2, 0xD1, 0xD7, 0x0, 0x2, 0xD1, 0xF7, 0x0, 0x2, 0xD2, 0x17, 0x0, 0x2, 0xD2, 0x37, 0x0, 0x2, 0xD2, 0x57, 0x0, 0x2, 0xD2, 0x77, 0x0, 0x2, 0xD2, 0x97, 0x0, 0x2, 0xD2, 0xB7, 0x0, 0x2, 0xD2, 0xD7, 0x0, 0x2, 0xD2, 0xF7, 0x0, 0x2, 0xD3, 0x17, 0x0, 0x2, 0xD3, 0x37, 0x0, 0x2, 0xD3, 0x57, 0x0, 0x2, 0xD3, 0x77, 0x0, 0x2, 0xD3, 0x97, 0x0, 0x2, 0xD3, 0xB7, 0x0, 0x2, 0xD3, 0xD7, 0x0, 0x2, 0xD3, 0xF7, 0x0, 0x2, 0xD4, 0x17, 0x0, 0x2, 0xD4, 0x37, 0x0, 0x2, 0xD4, 0x57, 0x0, 0x2, 0xD4, 0x77, 0x0, 0x2, 0xD4, 0x97, 0x0, 0x2, 0xD4, 0xAF, 0x0, 0x2, 0xD4, 0xC7, 0x0, 0x2, 0xD4, 0xE7, 0x0, 0x2, 0xD4, 0xFF, 0x0, 0x2, 0xD5, 0x1F, 0x0, 0x2, 0xD5, 0x37, 0x0, 0x2, 0xD5, 0x57, 0x0, 0x2, 0xD5, 0x6F, 0x0, 0x2, 0xD5, 0x87, 0x0, 0x2, 0xD5, 0x9F, 0x0, 0x2, 0xD5, 0xB5, 0x0, 0x2, 0xD5, 0xCD, 0x0, 0x2, 0xD5, 0xEB, 0x0, 0x2, 0xD6, 0x1, 0x0, 0x2, 0xD6, 0x1F, 0x0, 0x2, 0xD6, 0x37, 0x0, 0x2, 0xD6, 0x55, 0x0, 0x2, 0xD6, 0x6D, 0x0, 0x2, 0xD6, 0x85, 0x0, 0x2, 0xD6, 0x9D, 0x0, 0x2, 0xD6, 0xB5, 0x0, 0x2, 0xD6, 0xCD, 0x0, 0x2, 0xD6, 0xE5, 0x0, 0x2, 0xD6, 0xFD, 0x0, 0x2, 0xD7, 0x15, 0x0, 0x2, 0xD7, 0x2D, 0x0, 0x2, 0xD7, 0x43, 0x0, 0x2, 0xD7, 0x5B, 0x0, 0x2, 0xD7, 0x73, 0x0, 0x2, 0xD7, 0x8B, 0x0, 0x2, 0xD7, 0xA3, 0x0, 0x2, 0xD7, 0xBB, 0x0, 0x2, 0xD7, 0xD1, 0x0, 0x2, 0xD7, 0xE7, 0x0, 0x2, 0xD7, 0xFD, 0x0, 0x2, 0xD8, 0x13, 0x0, 0x2, 0xD8, 0x2B, 0x0, 0x2, 0xD8, 0x43, 0x0, 0x2, 0xD8, 0x5B, 0x0, 0x2, 0xD8, 0x71, 0x0, 0x2, 0xD8, 0x89, 0x0, 0x2, 0xD8, 0xA1, 0x0, 0x2, 0xD8, 0xB9, 0x0, 0x2, 0xD8, 0xD1, 0x0, 0x2, 0xD8, 0xE9, 0x0, 0x2, 0xD9, 0x9, 0x0, 0x2, 0xD9, 0x21, 0x0, 0x2, 0xD9, 0x41, 0x0, 0x2, 0xD9, 0x59, 0x0, 0x2, 0xD9, 0x79, 0x0, 0x2, 0xD9, 0x91, 0x0, 0x2, 0xD9, 0xA9, 0x0, 0x2, 0xD9, 0xC1, 0x0, 0x2, 0xD9, 0xD9, 0x0, 0x2, 0xD9, 0xF1, 0x0, 0x2, 0xD9, 0xF1, 0x0, 0x2, 0xDA, 0x9, 0x0, 0x2, 0xDA, 0x21, 0x0, 0x2, 0xDA, 0x39, 0x0, 0x2, 0xDA, 0x39, 0x0, 0x2, 0xDA, 0x49, 0x0, 0x2, 0xDA, 0x61, 0x0, 0x2, 0xDA, 0x79, 0x0, 0x2, 0xDA, 0x91, 0x0, 0x2, 0xDA, 0xA9, 0x0, 0x2, 0xDA, 0xC1, 0x0, 0x2, 0xDA, 0xD9, 0x0, 0x2, 0xDA, 0xF1, 0x0, 0x2, 0xDB, 0x1, 0x0, 0x2, 0xDB, 0x11, 0x0, 0x2, 0xDB, 0x21, 0x0, 0x2, 0xDB, 0x31, 0x0, 0x2, 0xDB, 0x41, 0x0, 0x2, 0xDB, 0x51, 0x0, 0x2, 0xDB, 0x61, 0x0, 0x2, 0xDB, 0x71, 0x0, 0x2, 0xDB, 0x81, 0x0, 0x2, 0xDB, 0x91, 0x0, 0x2, 0xDB, 0xA1, 0x0, 0x2, 0xDB, 0xB1, 0x0, 0x2, 0xDB, 0xC1, 0x0, 0x2, 0xDB, 0xD1, 0x0, 0x2, 0xDB, 0xE9, 0x0, 0x2, 0xDB, 0xFF, 0x0, 0x2, 0xDC, 0x15, 0x0, 0x2, 0xDC, 0x2D, 0x0, 0x2, 0xDC, 0x3D, 0x0, 0x2, 0xDC, 0x4D, 0x0, 0x2, 0xDC, 0x65, 0x0, 0x2, 0xDC, 0x75, 0x0, 0x2, 0xDC, 0x8D, 0x0, 0x2, 0xDC, 0xA3, 0x0, 0x2, 0xDC, 0xB3, 0x0, 0x2, 0xDC, 0xC3, 0x0, 0x2, 0xDC, 0xD3, 0x0, 0x2, 0xDC, 0xE3, 0x0, 0x2, 0xDC, 0xFB, 0x0, 0x2, 0xDD, 0xB, 0x0, 0x2, 0xDD, 0x1B, 0x0, 0x2, 0xDD, 0x2B, 0x0, 0x2, 0xDD, 0x3B, 0x0, 0x2, 0xDD, 0x4B, 0x0, 0x2, 0xDD, 0x5B, 0x0, 0x2, 0xDD, 0x6B, 0x0, 0x2, 0xDD, 0x7B, 0x0, 0x2, 0xDD, 0xF2, 0x0, 0x2, 0xDE, 0x2C, 0x0, 0x2, 0xDE, 0x8F, 0x0, 0x2, 0xDE, 0x9F, 0x0, 0x2, 0xDE, 0xB7, 0x0, 0x2, 0xDE, 0xCF, 0x0, 0x2, 0xDE, 0xE5, 0x0, 0x2, 0xDE, 0xF5, 0x0, 0x2, 0xDF, 0x5, 0x0, 0x2, 0xDF, 0x1D, 0x0, 0x2, 0xDF, 0x35, 0x0, 0x2, 0xDF, 0x4D, 0x0, 0x2, 0xDF, 0x65, 0x0, 0x2, 0xDF, 0x7D, 0x0, 0x2, 0xDF, 0x95, 0x0, 0x2, 0xDF, 0xAD, 0x0, 0x2, 0xDF, 0xC5, 0x0, 0x2, 0xDF, 0xDD, 0x0, 0x2, 0xDF, 0xF5, 0x0, 0x2, 0xE0, 0xD, 0x0, 0x2, 0xE0, 0x25, 0x0, 0x2, 0xE0, 0x3D, 0x0, 0x2, 0xE0, 0x55, 0x0, 0x2, 0xE0, 0x6D, 0x0, 0x2, 0xE0, 0x85, 0x0, 0x2, 0xE0, 0x9D, 0x0, 0x2, 0xE0, 0xB5, 0x0, 0x2, 0xE0, 0xCD, 0x0, 0x2, 0xE0, 0xE5, 0x0, 0x2, 0xE0, 0xFD, 0x0, 0x2, 0xE1, 0x15, 0x0, 0x2, 0xE1, 0x2D, 0x0, 0x2, 0xE1, 0x45, 0x0, 0x2, 0xE1, 0x5D, 0x0, 0x2, 0xE1, 0x75, 0x0, 0x2, 0xE1, 0x8D, 0x0, 0x2, 0xE1, 0xA5, 0x0, 0x2, 0xE1, 0xBD, 0x0, 0x2, 0xE1, 0xD5, 0x0, 0x2, 0xE1, 0xED, 0x0, 0x2, 0xE2, 0x5, 0x0, 0x2, 0xE2, 0x1D, 0x0, 0x2, 0xE2, 0x35, 0x0, 0x2, 0xE2, 0x4D, 0x0, 0x2, 0xE2, 0x65, 0x0, 0x2, 0xE2, 0x7D, 0x0, 0x2, 0xE2, 0x95, 0x0, 0x2, 0xE2, 0xAD, 0x0, 0x2, 0xE2, 0xC5, 0x0, 0x2, 0xE2, 0xDD, 0x0, 0x2, 0xE2, 0xF5, 0x0, 0x2, 0xE3, 0xD, 0x0, 0x2, 0xE3, 0x25, 0x0, 0x2, 0xE3, 0x3D, 0x0, 0x2, 0xE3, 0x55, 0x0, 0x2, 0xE3, 0x6D, 0x0, 0x2, 0xE3, 0x85, 0x0, 0x2, 0xE3, 0x9D, 0x0, 0x2, 0xE3, 0xB5, 0x0, 0x2, 0xE3, 0xCD, 0x0, 0x5, 0x0, 0x64, 0x0, 0x0, 0x3, 0x28, 0x5, 0xB0, 0x0, 0x2, 0x0, 0x5, 0x0, 0x8, 0x0, 0xB, 0x0, 0xF, 0x0, 0x0, 0x1, 0x1, 0x21, 0x1, 0x11, 0x9, 0x6, 0x7, 0x11, 0x21, 0x11, 0x1, 0xC4, 0x1, 0x1, 0xFD, 0xFD, 0x2, 0x30, 0xFE, 0xEF, 0xFE, 0xB9, 0x1, 0xD, 0xFE, 0xF3, 0x2, 0x2B, 0xFE, 0xFF, 0xFE, 0xFE, 0x5E, 0x2, 0xC4, 0x3, 0x1C, 0x2, 0x5E, 0xFA, 0xDA, 0x5, 0x8, 0xFD, 0x7C, 0xFD, 0x88, 0x2, 0x78, 0x2, 0x78, 0xFA, 0xE6, 0x2, 0x5E, 0xFD, 0xA2, 0x36, 0x5, 0xB0, 0xFA, 0x50, 0x0, 0x2, 0x0, 0x90, 0xFF, 0xF2, 0x1, 0xA3, 0x5, 0xB0, 0x0, 0x3, 0x0, 0xD, 0x0, 0x0, 0x1, 0x3, 0x23, 0x3, 0x3, 0x34, 0x36, 0x32, 0x16, 0x15, 0x14, 0x6, 0x22, 0x26, 0x1, 0x97, 0x18, 0xD1, 0x18, 0x6, 0x48, 0x82, 0x49, 0x49, 0x82, 0x48, 0x5, 0xB0, 0xFB, 0xFD, 0x4, 0x3, 0xFA, 0xC4, 0x38, 0x4B, 0x4B, 0x38, 0x37, 0x4B, 0x4B, 0x0, 0x2, 0x0, 0x65, 0x3, 0xF5, 0x2, 0x41, 0x6, 0x0, 0x0, 0x4, 0x0, 0x9, 0x0, 0x0, 0x1, 0x23, 0x11, 0x33, 0x15, 0x1, 0x23, 0x11, 0x33, 0x15, 0x2, 0x1D, 0x8B, 0xAF, 0xFE, 0xAF, 0x8B, 0xAF, 0x3, 0xF5, 0x2, 0xB, 0x88, 0xFE, 0x7D, 0x2, 0xB, 0x88, 0x0, 0x2, 0x0, 0x61, 0x0, 0x0, 0x4, 0xBD, 0x5, 0xB0, 0x0, 0x3, 0x0, 0x1F, 0x0, 0x0, 0x1, 0x13, 0x23, 0x3, 0x13, 0x13, 0x23, 0x3, 0x23, 0x13, 0x23, 0x35, 0x21, 0x13, 0x23, 0x35, 0x21, 0x13, 0x33, 0x3, 0x33, 0x13, 0x33, 0x3, 0x33, 0x15, 0x23, 0x3, 0x33, 0x15, 0x23, 0x3, 0x2, 0xEE, 0x3A, 0xE0, 0x3B, 0x77, 0x4C, 0xE0, 0x4D, 0xA7, 0x4D, 0xE8, 0x1, 0x5, 0x3B, 0xF4, 0x1, 0x11, 0x4E, 0xA7, 0x4E, 0xE1, 0x4D, 0xA8, 0x4E, 0xD0, 0xED, 0x3B, 0xDD, 0xFA, 0x4D, 0x2, 0x38, 0x1, 0x39, 0xFE, 0xC7, 0xFD, 0xC8, 0x1, 0x9A, 0xFE, 0x66, 0x1, 0x9A, 0x9E, 0x1, 0x39, 0x9F, 0x1, 0xA0, 0xFE, 0x60, 0x1, 0xA0, 0xFE, 0x60, 0x9F, 0xFE, 0xC7, 0x9E, 0xFE, 0x66, 0x0, 0x1, 0x0, 0x65, 0xFF, 0x2C, 0x4, 0x26, 0x6, 0x9C, 0x0, 0x2B, 0x0, 0x0, 0x5, 0x23, 0x35, 0x26, 0x26, 0x35, 0x33, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x34, 0x26, 0x27, 0x26, 0x26, 0x35, 0x34, 0x36, 0x37, 0x35, 0x33, 0x15, 0x16, 0x16, 0x15, 0x23, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x14, 0x16, 0x17, 0x16, 0x16, 0x15, 0x14, 0x6, 0x7, 0x2, 0x9F, 0x9F, 0x9F, 0xFC, 0xF3, 0x9B, 0x58, 0x71, 0x77, 0x70, 0x87, 0xC3, 0xDC, 0xCC, 0xAB, 0x9F, 0xAA, 0xC2, 0xF2, 0x6E, 0x63, 0x6A, 0x62, 0x6A, 0x8B, 0xC2, 0xDF, 0xD4, 0xB3, 0xD4, 0xC3, 0x11, 0xD2, 0xEA, 0x9A, 0x6F, 0x6F, 0x5B, 0x55, 0x72, 0x2E, 0x43, 0xC5, 0xB8, 0xA9, 0xD3, 0x13, 0xDB, 0xDD, 0x18, 0xF0, 0xCA, 0x7E, 0x92, 0x71, 0x59, 0x55, 0x6B, 0x32, 0x46, 0xC3, 0xB9, 0xAF, 0xCD, 0x14, 0x0, 0x5, 0x0, 0x64, 0xFF, 0xEB, 0x5, 0x89, 0x5, 0xC5, 0x0, 0xC, 0x0, 0x1A, 0x0, 0x1E, 0x0, 0x2B, 0x0, 0x38, 0x0, 0x0, 0x13, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x15, 0x14, 0x6, 0x20, 0x26, 0x35, 0x33, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x25, 0x1, 0x27, 0x1, 0x3, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x15, 0x14, 0x6, 0x20, 0x26, 0x35, 0x33, 0x14, 0x16, 0x33, 0x32, 0x35, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x64, 0xA1, 0x93, 0x95, 0xA0, 0x9F, 0xFE, 0xD8, 0xA2, 0xA9, 0x46, 0x47, 0x46, 0x43, 0x44, 0x47, 0x46, 0x45, 0x3, 0x85, 0xFD, 0x39, 0x7D, 0x2, 0xC7, 0xF5, 0xA2, 0x92, 0x95, 0xA0, 0x9F, 0xFE, 0xD8, 0xA2, 0xA9, 0x49, 0x44, 0x8A, 0x45, 0x47, 0x46, 0x45, 0x4, 0x98, 0x7C, 0xB1, 0xB1, 0x7C, 0x4D, 0x7A, 0xB1, 0xB1, 0x7A, 0x3B, 0x5E, 0x5D, 0x3C, 0x4D, 0x3D, 0x5E, 0x5E, 0x3D, 0x47, 0xFB, 0x8E, 0x49, 0x4, 0x72, 0xFC, 0x3D, 0x7B, 0xB1, 0xB1, 0x7B, 0x4E, 0x7B, 0xB1, 0xB1, 0x7B, 0x3C, 0x5E, 0xA9, 0x3F, 0x3C, 0x5E, 0x5E, 0x3C, 0x0, 0x3, 0x0, 0x56, 0xFF, 0xEC, 0x5, 0x11, 0x5, 0xC4, 0x0, 0xB, 0x0, 0x15, 0x0, 0x33, 0x0, 0x0, 0x1, 0x14, 0x17, 0x37, 0x36, 0x36, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x13, 0x32, 0x37, 0x1, 0x7, 0x6, 0x6, 0x15, 0x14, 0x16, 0x5, 0x27, 0x6, 0x23, 0x22, 0x24, 0x35, 0x34, 0x36, 0x37, 0x26, 0x26, 0x35, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x6, 0x7, 0x7, 0x1, 0x36, 0x35, 0x33, 0x10, 0x7, 0x17, 0x1, 0xB3, 0x67, 0x57, 0x3F, 0x36, 0x50, 0x49, 0x4C, 0x4E, 0x86, 0x7A, 0x6B, 0xFE, 0xC3, 0x1F, 0x51, 0x28, 0x7C, 0x2, 0x32, 0x52, 0x9D, 0xD6, 0xDC, 0xFF, 0x0, 0x98, 0x78, 0x45, 0x52, 0xD2, 0xAD, 0xA7, 0xC4, 0x68, 0x59, 0x67, 0x1, 0x18, 0x3D, 0xD3, 0x7E, 0xD6, 0x4, 0x58, 0x53, 0x7F, 0x3B, 0x29, 0x50, 0x3D, 0x34, 0x56, 0x64, 0xFC, 0x12, 0x52, 0x1, 0x77, 0x16, 0x3F, 0x6E, 0x23, 0x60, 0x83, 0xAF, 0x61, 0x75, 0xE9, 0xB5, 0x80, 0xAD, 0x55, 0x57, 0x9C, 0x54, 0xAD, 0xC4, 0xC1, 0x83, 0x66, 0x96, 0x41, 0x4B, 0xFE, 0xB3, 0x79, 0x92, 0xFE, 0xEF, 0xA7, 0xFE, 0x0, 0x1, 0x0, 0x53, 0x3, 0xFC, 0x1, 0xB, 0x6, 0x0, 0x0, 0x4, 0x0, 0x0, 0x13, 0x23, 0x11, 0x33, 0x15, 0xF2, 0x9F, 0xB8, 0x3, 0xFC, 0x2, 0x4, 0x7D, 0x0, 0x1, 0x0, 0x81, 0xFE, 0x31, 0x2, 0xA3, 0x6, 0x5F, 0x0, 0x10, 0x0, 0x0, 0x13, 0x10, 0x12, 0x12, 0x37, 0x17, 0x6, 0x2, 0x3, 0x15, 0x10, 0x12, 0x17, 0x7, 0x26, 0x2, 0x2, 0x81, 0xA4, 0xE8, 0x66, 0x30, 0x70, 0xD3, 0x2, 0xD4, 0x71, 0x30, 0x66, 0xE8, 0xA4, 0x2, 0x50, 0x1, 0x21, 0x1, 0xAD, 0x1, 0xF, 0x32, 0x8E, 0x55, 0xFE, 0x53, 0xFE, 0x93, 0x24, 0xFE, 0x88, 0xFE, 0x4D, 0x5B, 0x87, 0x32, 0x1, 0xF, 0x1, 0xAC, 0x0, 0x1, 0x0, 0x28, 0xFE, 0x31, 0x2, 0x52, 0x6, 0x5F, 0x0, 0x11, 0x0, 0x0, 0x1, 0x10, 0x2, 0x2, 0x7, 0x27, 0x36, 0x12, 0x11, 0x35, 0x34, 0x2, 0x26, 0x27, 0x37, 0x16, 0x12, 0x12, 0x2, 0x52, 0xA6, 0xEB, 0x69, 0x30, 0x71, 0xD4, 0x68, 0x97, 0x46, 0x30, 0x69, 0xEB, 0xA6, 0x2, 0x40, 0xFE, 0xE4, 0xFE, 0x51, 0xFE, 0xEE, 0x32, 0x87, 0x56, 0x1, 0xB8, 0x1, 0x78, 0x14, 0xFB, 0x1, 0x69, 0xE9, 0x39, 0x87, 0x32, 0xFE, 0xEE, 0xFE, 0x53, 0x0, 0x1, 0x0, 0x1C, 0x2, 0x4E, 0x3, 0x75, 0x5, 0xB1, 0x0, 0xE, 0x0, 0x0, 0x13, 0x13, 0x25, 0x37, 0x5, 0x3, 0x33, 0x3, 0x25, 0x17, 0x5, 0x13, 0x7, 0x3, 0x3, 0x7E, 0xCE, 0xFE, 0xD0, 0x36, 0x1, 0x2F, 0xF, 0xB3, 0xF, 0x1, 0x29, 0x36, 0xFE, 0xCA, 0xC8, 0x91, 0xB5, 0xB1, 0x2, 0xBC, 0x1, 0x10, 0x58, 0xAA, 0x76, 0x1, 0x59, 0xFE, 0xA1, 0x73, 0xAB, 0x58, 0xFE, 0xF5, 0x69, 0x1, 0x20, 0xFE, 0xE8, 0x0, 0x1, 0x0, 0x45, 0x0, 0x92, 0x4, 0x2B, 0x4, 0xB6, 0x0, 0xB, 0x0, 0x0, 0x1, 0x21, 0x11, 0x23, 0x11, 0x21, 0x35, 0x21, 0x11, 0x33, 0x11, 0x21, 0x4, 0x2B, 0xFE, 0x83, 0xEB, 0xFE, 0x82, 0x1, 0x7E, 0xEB, 0x1, 0x7D, 0x2, 0x44, 0xFE, 0x4E, 0x1, 0xB2, 0xDD, 0x1, 0x95, 0xFE, 0x6B, 0x0, 0x1, 0x0, 0x1D, 0xFE, 0xB8, 0x1, 0x5D, 0x0, 0xEB, 0x0, 0x9, 0x0, 0x0, 0x25, 0x15, 0x14, 0x6, 0x7, 0x27, 0x36, 0x36, 0x35, 0x35, 0x1, 0x5D, 0x67, 0x56, 0x83, 0x2A, 0x3C, 0xEB, 0xAC, 0x66, 0xDA, 0x47, 0x4D, 0x43, 0x8F, 0x5F, 0xB5, 0x0, 0x1, 0x0, 0x47, 0x2, 0xA, 0x2, 0x54, 0x2, 0xCD, 0x0, 0x3, 0x0, 0x0, 0x1, 0x15, 0x21, 0x35, 0x2, 0x54, 0xFD, 0xF3, 0x2, 0xCD, 0xC3, 0xC3, 0x0, 0x1, 0x0, 0x88, 0xFF, 0xF4, 0x1, 0xA3, 0x1, 0x1, 0x0, 0x7, 0x0, 0x0, 0x36, 0x36, 0x32, 0x16, 0x14, 0x6, 0x22, 0x26, 0x88, 0x4A, 0x86, 0x4B, 0x4B, 0x86, 0x4A, 0xB3, 0x4E, 0x4E, 0x72, 0x4D, 0x4D, 0x0, 0x1, 0x0, 0x2, 0xFF, 0x83, 0x2, 0xFF, 0x5, 0xB0, 0x0, 0x3, 0x0, 0x0, 0x1, 0x1, 0x23, 0x1, 0x2, 0xFF, 0xFD, 0xC3, 0xC0, 0x2, 0x3E, 0x5, 0xB0, 0xF9, 0xD3, 0x6, 0x2D, 0x0, 0x2, 0x0, 0x69, 0xFF, 0xEC, 0x4, 0x22, 0x5, 0xC4, 0x0, 0xD, 0x0, 0x1A, 0x0, 0x0, 0x1, 0x10, 0x0, 0x23, 0x22, 0x0, 0x3, 0x11, 0x10, 0x0, 0x33, 0x32, 0x0, 0x13, 0x27, 0x34, 0x26, 0x23, 0x22, 0x6, 0x7, 0x11, 0x14, 0x16, 0x32, 0x36, 0x37, 0x4, 0x22, 0xFE, 0xFD, 0xD8, 0xD3, 0xFE, 0xF9, 0x4, 0x1, 0x6, 0xD6, 0xD7, 0x1, 0x5, 0x1, 0xF2, 0x7A, 0x71, 0x6E, 0x7A, 0x1, 0x7B, 0xE0, 0x78, 0x1, 0x2, 0x66, 0xFE, 0xA6, 0xFE, 0xE0, 0x1, 0x18, 0x1, 0x4D, 0x1, 0x0, 0x1, 0x5B, 0x1, 0x18, 0xFE, 0xEA, 0xFE, 0xA9, 0x1F, 0xDD, 0xAE, 0xAB, 0xD8, 0xFE, 0xC5, 0xDD, 0xB7, 0xB4, 0xD8, 0x0, 0x1, 0x0, 0xA8, 0x0, 0x0, 0x3, 0x0, 0x5, 0xB5, 0x0, 0x6, 0x0, 0x0, 0x1, 0x11, 0x23, 0x11, 0x5, 0x35, 0x25, 0x3, 0x0, 0xF3, 0xFE, 0x9B, 0x2, 0x39, 0x5, 0xB5, 0xFA, 0x4B, 0x4, 0x92, 0x7A, 0xCD, 0xD0, 0x0, 0x1, 0x0, 0x51, 0x0, 0x0, 0x4, 0x41, 0x5, 0xC4, 0x0, 0x18, 0x0, 0x0, 0x25, 0x15, 0x21, 0x35, 0x1, 0x36, 0x36, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x23, 0x34, 0x0, 0x33, 0x32, 0x16, 0x15, 0x14, 0x2, 0x7, 0x1, 0x4, 0x41, 0xFC, 0x2C, 0x1, 0xDA, 0x78, 0x56, 0x71, 0x68, 0x7C, 0x7C, 0xF3, 0x1, 0x2, 0xEC, 0xDA, 0xEF, 0xA3, 0x82, 0xFE, 0xB9, 0xC3, 0xC3, 0xA8, 0x2, 0x4, 0x85, 0x9F, 0x4A, 0x64, 0x83, 0x97, 0x75, 0xBF, 0x1, 0x10, 0xDA, 0xB6, 0x86, 0xFE, 0xFD, 0x8A, 0xFE, 0xA2, 0x0, 0x1, 0x0, 0x50, 0xFF, 0xEC, 0x4, 0x16, 0x5, 0xC4, 0x0, 0x26, 0x0, 0x0, 0x5, 0x22, 0x24, 0x35, 0x33, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x34, 0x21, 0x23, 0x35, 0x33, 0x32, 0x36, 0x35, 0x34, 0x23, 0x22, 0x6, 0x15, 0x23, 0x34, 0x24, 0x33, 0x32, 0x4, 0x15, 0x14, 0x6, 0x7, 0x16, 0x16, 0x15, 0x14, 0x4, 0x2, 0x2D, 0xBD, 0xFE, 0xE0, 0xF3, 0x82, 0x6C, 0x71, 0x81, 0xFE, 0xED, 0x89, 0x8F, 0x7D, 0x7B, 0xDD, 0x61, 0x80, 0xF2, 0x1, 0x5, 0xCA, 0xD1, 0x1, 0x2, 0x6F, 0x71, 0x86, 0x70, 0xFE, 0xE8, 0x14, 0xD0, 0xCB, 0x60, 0x78, 0x79, 0x70, 0xEF, 0xC0, 0x7D, 0x62, 0xDB, 0x6E, 0x5E, 0xAD, 0xE2, 0xD1, 0xCD, 0x56, 0xB1, 0x33, 0x2D, 0xBB, 0x6C, 0xCD, 0xDF, 0x0, 0x2, 0x0, 0x35, 0x0, 0x0, 0x4, 0x59, 0x5, 0xB0, 0x0, 0x3, 0x0, 0xE, 0x0, 0x0, 0x1, 0x21, 0x11, 0x7, 0x1, 0x23, 0x11, 0x23, 0x11, 0x21, 0x27, 0x1, 0x33, 0x11, 0x33, 0x1, 0x33, 0x1, 0x7D, 0x11, 0x1, 0xBA, 0xB6, 0xF3, 0xFD, 0x8B, 0x6, 0x2, 0x74, 0xFA, 0xB6, 0x2, 0x8, 0x2, 0x5D, 0x1E, 0xFC, 0xFE, 0xFE, 0xBB, 0x1, 0x45, 0x93, 0x3, 0xD8, 0xFC, 0x58, 0x0, 0x1, 0x0, 0x81, 0xFF, 0xEC, 0x4, 0x3A, 0x5, 0xB0, 0x0, 0x1C, 0x0, 0x0, 0x1, 0x27, 0x13, 0x21, 0x15, 0x21, 0x3, 0x36, 0x33, 0x32, 0x12, 0x15, 0x14, 0x2, 0x23, 0x22, 0x24, 0x27, 0x33, 0x16, 0x33, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x1, 0x70, 0xC1, 0x4E, 0x3, 0xE, 0xFD, 0xBC, 0x27, 0x64, 0x7F, 0xCF, 0xE8, 0xEC, 0xF3, 0xB6, 0xFE, 0xE9, 0xD, 0xEC, 0x1C, 0xD2, 0x76, 0x77, 0x83, 0x80, 0x55, 0x58, 0x2, 0xA2, 0x30, 0x2, 0xDE, 0xD1, 0xFE, 0xA4, 0x39, 0xFE, 0xF9, 0xE3, 0xCA, 0xFE, 0xE4, 0xD3, 0xCB, 0xDB, 0xA7, 0x83, 0x7D, 0xA2, 0x31, 0x0, 0x2, 0x0, 0x76, 0xFF, 0xEC, 0x4, 0x37, 0x5, 0xB7, 0x0, 0x15, 0x0, 0x22, 0x0, 0x0, 0x5, 0x22, 0x0, 0x11, 0x35, 0x34, 0x12, 0x24, 0x21, 0x33, 0x15, 0x23, 0x6, 0x6, 0x7, 0x36, 0x33, 0x32, 0x12, 0x15, 0x14, 0x2, 0x27, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x7, 0x15, 0x14, 0x16, 0x2, 0x5F, 0xDC, 0xFE, 0xF3, 0x8C, 0x1, 0x3C, 0x1, 0x7, 0x1C, 0x19, 0xE8, 0xDF, 0x13, 0x72, 0xB8, 0xD5, 0xCA, 0xF7, 0xE4, 0x6E, 0x7D, 0x77, 0x73, 0x55, 0x83, 0x1C, 0x90, 0x14, 0x1, 0x43, 0x1, 0x8, 0x4F, 0xD8, 0x1, 0x74, 0xE5, 0xC8, 0x2, 0xF5, 0xAD, 0x79, 0xFE, 0xD7, 0xBE, 0xD1, 0xFE, 0xE0, 0xC4, 0xA6, 0x81, 0x7A, 0xB0, 0x60, 0x44, 0x4B, 0xAF, 0xB3, 0x0, 0x1, 0x0, 0x46, 0x0, 0x0, 0x4, 0x37, 0x5, 0xB0, 0x0, 0x6, 0x0, 0x0, 0x1, 0x15, 0x1, 0x21, 0x1, 0x21, 0x35, 0x4, 0x37, 0xFD, 0xBA, 0xFF, 0x0, 0x2, 0x46, 0xFD, 0xF, 0x5, 0xB0, 0x86, 0xFA, 0xD6, 0x4, 0xED, 0xC3, 0x0, 0x3, 0x0, 0x69, 0xFF, 0xEC, 0x4, 0x23, 0x5, 0xC4, 0x0, 0x16, 0x0, 0x22, 0x0, 0x2D, 0x0, 0x0, 0x4, 0x24, 0x35, 0x34, 0x36, 0x37, 0x26, 0x26, 0x35, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x6, 0x7, 0x16, 0x16, 0x15, 0x14, 0x4, 0x3, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x14, 0x16, 0x33, 0x32, 0x36, 0x13, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x14, 0x16, 0x32, 0x36, 0x1, 0x7C, 0xFE, 0xED, 0x7F, 0x6C, 0x5E, 0x6D, 0xFC, 0xC1, 0xC2, 0xFB, 0x6E, 0x5E, 0x6C, 0x80, 0xFE, 0xEF, 0x2, 0x6D, 0x5D, 0x5C, 0x6E, 0x6D, 0x5E, 0x5D, 0x6C, 0x20, 0x81, 0x6A, 0x6B, 0x7E, 0x7E, 0xDA, 0x7C, 0x14, 0xD7, 0xCA, 0x79, 0xB8, 0x31, 0x30, 0xA8, 0x6A, 0xC2, 0xD1, 0xD1, 0xC2, 0x6A, 0xA8, 0x30, 0x32, 0xB7, 0x79, 0xCA, 0xD7, 0x4, 0x3C, 0x60, 0x79, 0x74, 0x65, 0x62, 0x78, 0x78, 0xFD, 0xD4, 0x6C, 0x85, 0x85, 0x6C, 0x6E, 0x7D, 0x7D, 0x0, 0x2, 0x0, 0x5E, 0xFF, 0xF9, 0x4, 0x13, 0x5, 0xC4, 0x0, 0x15, 0x0, 0x22, 0x0, 0x0, 0x5, 0x35, 0x33, 0x36, 0x36, 0x37, 0x6, 0x23, 0x22, 0x2, 0x35, 0x34, 0x12, 0x33, 0x32, 0x12, 0x15, 0x15, 0x14, 0x2, 0x4, 0x21, 0x13, 0x32, 0x36, 0x37, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x14, 0x16, 0x1, 0x31, 0x1F, 0xFC, 0xC7, 0xC, 0x7A, 0xA4, 0xD4, 0xCF, 0xF6, 0xE0, 0xF0, 0xEF, 0x7D, 0xFE, 0xC8, 0xFE, 0xE7, 0xEF, 0x4F, 0x7F, 0x1F, 0x8F, 0x5F, 0x6D, 0x78, 0x71, 0x7, 0xCA, 0x3, 0xEC, 0xB0, 0x81, 0x1, 0x27, 0xC0, 0xD2, 0x1, 0x2A, 0xFE, 0xA1, 0xF1, 0x4F, 0xD2, 0xFE, 0x8D, 0xE7, 0x2, 0xA6, 0x5B, 0x43, 0x5F, 0xAF, 0xB5, 0xB3, 0x7E, 0x76, 0xBA, 0xFF, 0xFF, 0x0, 0x82, 0xFF, 0xF4, 0x1, 0x9D, 0x4, 0x52, 0x0, 0x26, 0x0, 0x13, 0xFA, 0x0, 0x0, 0x7, 0x0, 0x13, 0xFF, 0xFA, 0x3, 0x51, 0xFF, 0xFF, 0x0, 0x2F, 0xFE, 0xB8, 0x1, 0x88, 0x4, 0x52, 0x0, 0x27, 0x0, 0x13, 0xFF, 0xE5, 0x3, 0x51, 0x0, 0x6, 0x0, 0x11, 0x12, 0x0, 0x0, 0x1, 0x0, 0x3F, 0x0, 0xA5, 0x3, 0x85, 0x4, 0x4E, 0x0, 0x6, 0x0, 0x0, 0x25, 0x1, 0x35, 0x1, 0x15, 0x5, 0x5, 0x3, 0x85, 0xFC, 0xBA, 0x3, 0x46, 0xFD, 0xB1, 0x2, 0x4F, 0xA5, 0x1, 0x74, 0xC1, 0x1, 0x74, 0xF2, 0xE4, 0xE1, 0x0, 0x2, 0x0, 0x91, 0x1, 0x64, 0x3, 0xF0, 0x3, 0xD6, 0x0, 0x3, 0x0, 0x7, 0x0, 0x0, 0x1, 0x15, 0x21, 0x35, 0x1, 0x15, 0x21, 0x35, 0x3, 0xF0, 0xFC, 0xA1, 0x3, 0x5F, 0xFC, 0xA1, 0x3, 0xD6, 0xC9, 0xC9, 0xFE, 0x58, 0xCA, 0xCA, 0x0, 0x1, 0x0, 0x81, 0x0, 0xA5, 0x3, 0xE0, 0x4, 0x4E, 0x0, 0x6, 0x0, 0x0, 0x37, 0x35, 0x25, 0x25, 0x35, 0x1, 0x15, 0x81, 0x2, 0x6A, 0xFD, 0x96, 0x3, 0x5F, 0xA5, 0xEF, 0xE8, 0xE4, 0xEE, 0xFE, 0x8D, 0xC2, 0x0, 0x2, 0x0, 0x3C, 0xFF, 0xF4, 0x3, 0x98, 0x5, 0xC4, 0x0, 0x17, 0x0, 0x21, 0x0, 0x0, 0x1, 0x23, 0x3E, 0x3, 0x35, 0x34, 0x23, 0x22, 0x6, 0x7, 0x23, 0x36, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x6, 0x7, 0x6, 0x6, 0x3, 0x34, 0x36, 0x32, 0x16, 0x15, 0x14, 0x6, 0x22, 0x26, 0x2, 0x41, 0xE3, 0x2, 0x42, 0xD7, 0x2C, 0xB6, 0x48, 0x77, 0x1, 0xF3, 0x2, 0xFA, 0xB7, 0xC9, 0xE0, 0x5B, 0xA1, 0x35, 0x25, 0xF5, 0x49, 0x82, 0x49, 0x49, 0x82, 0x49, 0x1, 0xAD, 0x89, 0x9A, 0xD3, 0x5B, 0x3B, 0xC1, 0x55, 0x60, 0xBD, 0xC2, 0xCC, 0xB6, 0x65, 0xA4, 0x9A, 0x33, 0x76, 0xFE, 0x80, 0x38, 0x4B, 0x4B, 0x38, 0x37, 0x4B, 0x4B, 0x0, 0x2, 0x0, 0x53, 0xFE, 0x3B, 0x6, 0xDC, 0x5, 0x91, 0x0, 0x30, 0x0, 0x3A, 0x0, 0x0, 0x1, 0x20, 0x0, 0x13, 0x12, 0x12, 0x24, 0x33, 0x20, 0x0, 0x3, 0xE, 0x2, 0x23, 0x22, 0x27, 0x6, 0x23, 0x22, 0x26, 0x37, 0x12, 0x0, 0x33, 0x32, 0x16, 0x17, 0x3, 0x6, 0x16, 0x33, 0x32, 0x36, 0x37, 0x12, 0x0, 0x21, 0x20, 0x0, 0x3, 0x2, 0x0, 0x21, 0x32, 0x37, 0x17, 0x6, 0x6, 0x3, 0x32, 0x36, 0x37, 0x13, 0x26, 0x23, 0x22, 0x3, 0x2, 0x3, 0x7B, 0xFE, 0x7C, 0xFE, 0x5C, 0x11, 0xC, 0xDA, 0x1, 0x7C, 0xFF, 0x1, 0x82, 0x1, 0x95, 0x11, 0x5, 0x57, 0xB7, 0x96, 0xB5, 0x3C, 0x68, 0x9D, 0x94, 0x95, 0x13, 0x1A, 0x1, 0x2, 0xA3, 0x71, 0x81, 0x3A, 0x33, 0xB, 0x4F, 0x2E, 0x6C, 0x7C, 0x6, 0x11, 0xFE, 0xD1, 0xFE, 0xB1, 0xFE, 0xCA, 0xFE, 0x97, 0xF, 0x11, 0x1, 0x47, 0x1, 0x36, 0xC1, 0x8A, 0x27, 0x46, 0xD2, 0x72, 0x2B, 0x65, 0x24, 0x2D, 0x2E, 0x32, 0xE9, 0x26, 0x19, 0xFE, 0x3B, 0x1, 0xE7, 0x1, 0xB5, 0x1, 0x11, 0x1, 0xB0, 0xF9, 0xFE, 0x12, 0xFE, 0x63, 0x81, 0xF8, 0xA2, 0x9A, 0x99, 0xF4, 0xC7, 0x1, 0x4, 0x1, 0x33, 0x40, 0x2B, 0xFD, 0xCC, 0x7B, 0x4A, 0xE4, 0xA5, 0x1, 0x60, 0x1, 0x98, 0xFE, 0x3D, 0xFE, 0x9F, 0xFE, 0x8F, 0xFE, 0x6D, 0x49, 0x88, 0x2D, 0x2C, 0x2, 0x57, 0x4F, 0x62, 0x1, 0xEE, 0x12, 0xFE, 0x64, 0xFE, 0xEB, 0x0, 0x2, 0x0, 0x12, 0x0, 0x0, 0x5, 0x43, 0x5, 0xB0, 0x0, 0x2, 0x0, 0xA, 0x0, 0x0, 0x1, 0x3, 0x3, 0x1, 0x3, 0x21, 0x3, 0x21, 0x1, 0x33, 0x1, 0x3, 0x7E, 0xD4, 0xD3, 0x2, 0x64, 0x77, 0xFD, 0xCC, 0x76, 0xFE, 0xF8, 0x2, 0x26, 0xE3, 0x2, 0x28, 0x2, 0x1F, 0x2, 0x5E, 0xFD, 0xA2, 0xFD, 0xE1, 0x1, 0x54, 0xFE, 0xAC, 0x5, 0xB0, 0xFA, 0x50, 0x0, 0x3, 0x0, 0x95, 0x0, 0x0, 0x4, 0xA3, 0x5, 0xB0, 0x0, 0x7, 0x0, 0xF, 0x0, 0x1E, 0x0, 0x0, 0x1, 0x11, 0x33, 0x32, 0x36, 0x35, 0x34, 0x27, 0x1, 0x11, 0x21, 0x32, 0x36, 0x35, 0x34, 0x27, 0x1, 0x11, 0x21, 0x32, 0x4, 0x15, 0x14, 0x6, 0x7, 0x16, 0x16, 0x15, 0x14, 0x4, 0x23, 0x1, 0x91, 0xF8, 0x77, 0x84, 0xF1, 0xFE, 0xFE, 0x1, 0x1A, 0x7C, 0x80, 0xE3, 0xFD, 0xD1, 0x1, 0xF2, 0xEE, 0x1, 0xC, 0x6C, 0x68, 0x7D, 0x79, 0xFE, 0xF4, 0xEC, 0x4, 0xE5, 0xFE, 0x67, 0x6B, 0x61, 0xC8, 0x5, 0xFD, 0xAC, 0xFE, 0x39, 0x7C, 0x64, 0xE0, 0x7, 0xFD, 0x6F, 0x5, 0xB0, 0xBE, 0xCC, 0x63, 0xA1, 0x2B, 0x21, 0xBB, 0x72, 0xD0, 0xD9, 0x0, 0x1, 0x0, 0x66, 0xFF, 0xEC, 0x4, 0xEC, 0x5, 0xC4, 0x0, 0x1B, 0x0, 0x0, 0x1, 0x33, 0x6, 0x0, 0x21, 0x20, 0x0, 0x11, 0x35, 0x10, 0x0, 0x21, 0x20, 0x0, 0x17, 0x23, 0x26, 0x26, 0x23, 0x22, 0x6, 0x7, 0x15, 0x14, 0x12, 0x33, 0x32, 0x36, 0x3, 0xEF, 0xFC, 0x13, 0xFE, 0xE5, 0xFE, 0xF4, 0xFE, 0xF3, 0xFE, 0xC2, 0x1, 0x44, 0x1, 0x13, 0x1, 0x5, 0x1, 0x14, 0x16, 0xFC, 0x10, 0x87, 0x9C, 0xAB, 0xAC, 0x1, 0x9B, 0xB1, 0xA3, 0x89, 0x1, 0xDA, 0xD4, 0xFE, 0xE6, 0x1, 0x76, 0x1, 0x3B, 0x76, 0x1, 0x3A, 0x1, 0x77, 0xFE, 0xE5, 0xDA, 0x8C, 0x9D, 0xFA, 0xE4, 0x7D, 0xDA, 0xFE, 0xF5, 0x97, 0x0, 0x2, 0x0, 0x95, 0x0, 0x0, 0x4, 0xD2, 0x5, 0xB0, 0x0, 0x9, 0x0, 0x13, 0x0, 0x0, 0x1, 0x11, 0x33, 0x32, 0x12, 0x37, 0x35, 0x34, 0x26, 0x23, 0x1, 0x11, 0x21, 0x20, 0x0, 0x11, 0x15, 0x10, 0x0, 0x21, 0x1, 0x91, 0xA6, 0xCC, 0xD0, 0x2, 0xCF, 0xC4, 0xFE, 0x53, 0x1, 0xAD, 0x1, 0x25, 0x1, 0x6B, 0xFE, 0x93, 0xFE, 0xD2, 0x4, 0xE5, 0xFB, 0xE5, 0x1, 0x0, 0xE1, 0x53, 0xEC, 0xFB, 0xFB, 0x1B, 0x5, 0xB0, 0xFE, 0x87, 0xFE, 0xC5, 0x49, 0xFE, 0xC5, 0xFE, 0x88, 0x0, 0x1, 0x0, 0x95, 0x0, 0x0, 0x4, 0x4D, 0x5, 0xB0, 0x0, 0xB, 0x0, 0x0, 0x33, 0x11, 0x21, 0x15, 0x21, 0x11, 0x21, 0x15, 0x21, 0x11, 0x21, 0x15, 0x95, 0x3, 0xB1, 0xFD, 0x4B, 0x2, 0x56, 0xFD, 0xAA, 0x2, 0xBC, 0x5, 0xB0, 0xCB, 0xFE, 0x6D, 0xC7, 0xFE, 0x3F, 0xCA, 0x0, 0x1, 0x0, 0x95, 0x0, 0x0, 0x4, 0x31, 0x5, 0xB0, 0x0, 0x9, 0x0, 0x0, 0x1, 0x21, 0x11, 0x23, 0x11, 0x21, 0x15, 0x21, 0x11, 0x21, 0x3, 0xDB, 0xFD, 0xB6, 0xFC, 0x3, 0x9C, 0xFD, 0x60, 0x2, 0x4A, 0x2, 0x69, 0xFD, 0x97, 0x5, 0xB0, 0xCB, 0xFE, 0x4E, 0x0, 0x1, 0x0, 0x6A, 0xFF, 0xEC, 0x4, 0xF0, 0x5, 0xC4, 0x0, 0x1F, 0x0, 0x0, 0x1, 0x11, 0x6, 0x6, 0x23, 0x20, 0x0, 0x11, 0x35, 0x10, 0x0, 0x21, 0x20, 0x0, 0x17, 0x23, 0x26, 0x26, 0x23, 0x22, 0x6, 0x7, 0x15, 0x14, 0x12, 0x33, 0x32, 0x36, 0x37, 0x11, 0x21, 0x35, 0x4, 0xF0, 0x2E, 0xF5, 0xF5, 0xFE, 0xED, 0xFE, 0xA5, 0x1, 0x3E, 0x1, 0x1A, 0x1, 0xB, 0x1, 0x9, 0x1A, 0xF8, 0x13, 0x8A, 0x95, 0xB0, 0xAB, 0x2, 0xC8, 0xAF, 0x83, 0x77, 0x1A, 0xFE, 0xD5, 0x2, 0xEB, 0xFD, 0xD3, 0x3D, 0x95, 0x1, 0x6E, 0x1, 0x4E, 0x5F, 0x1, 0x4E, 0x1, 0x6F, 0xFE, 0xFA, 0xCB, 0x71, 0x95, 0xFE, 0xE8, 0x6B, 0xF0, 0xFE, 0xFE, 0x3C, 0x1C, 0x1, 0x1E, 0xBF, 0x0, 0x1, 0x0, 0x95, 0x0, 0x0, 0x5, 0x19, 0x5, 0xB0, 0x0, 0xB, 0x0, 0x0, 0x21, 0x11, 0x21, 0x11, 0x23, 0x11, 0x33, 0x11, 0x21, 0x11, 0x33, 0x11, 0x4, 0x1C, 0xFD, 0x75, 0xFC, 0xFC, 0x2, 0x8B, 0xFD, 0x2, 0x88, 0xFD, 0x78, 0x5, 0xB0, 0xFD, 0xA2, 0x2, 0x5E, 0xFA, 0x50, 0x0, 0x1, 0x0, 0xA4, 0x0, 0x0, 0x1, 0xA0, 0x5, 0xB0, 0x0, 0x3, 0x0, 0x0, 0x1, 0x11, 0x23, 0x11, 0x1, 0xA0, 0xFC, 0x5, 0xB0, 0xFA, 0x50, 0x5, 0xB0, 0x0, 0x1, 0x0, 0x2D, 0xFF, 0xEC, 0x3, 0xE5, 0x5, 0xB0, 0x0, 0xF, 0x0, 0x0, 0x1, 0x33, 0x11, 0x14, 0x4, 0x23, 0x22, 0x24, 0x35, 0x33, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x2, 0xE9, 0xFC, 0xFE, 0xF2, 0xCE, 0xCF, 0xFE, 0xF3, 0xFD, 0x7C, 0x63, 0x62, 0x7E, 0x5, 0xB0, 0xFC, 0x4, 0xD9, 0xEF, 0xD5, 0xDF, 0x7E, 0x6C, 0x83, 0x7B, 0x0, 0x1, 0x0, 0x95, 0x0, 0x0, 0x5, 0x18, 0x5, 0xB0, 0x0, 0xC, 0x0, 0x0, 0x21, 0x1, 0x7, 0x11, 0x23, 0x11, 0x33, 0x11, 0x37, 0x1, 0x21, 0x1, 0x1, 0x3, 0xEC, 0xFE, 0x4B, 0xA6, 0xFC, 0xFC, 0x8D, 0x1, 0xAA, 0x1, 0x32, 0xFD, 0xE3, 0x2, 0x3B, 0x2, 0x76, 0xB0, 0xFE, 0x3A, 0x5, 0xB0, 0xFD, 0x54, 0xAE, 0x1, 0xFE, 0xFD, 0x7C, 0xFC, 0xD4, 0x0, 0x1, 0x0, 0x95, 0x0, 0x0, 0x4, 0x27, 0x5, 0xB0, 0x0, 0x5, 0x0, 0x0, 0x33, 0x11, 0x33, 0x11, 0x21, 0x15, 0x95, 0xFC, 0x2, 0x96, 0x5, 0xB0, 0xFB, 0x1A, 0xCA, 0x0, 0x1, 0x0, 0x95, 0x0, 0x0, 0x6, 0x6B, 0x5, 0xB0, 0x0, 0xE, 0x0, 0x0, 0x1, 0x11, 0x23, 0x11, 0x21, 0x1, 0x1, 0x21, 0x11, 0x23, 0x11, 0x13, 0x1, 0x23, 0x1, 0x1, 0x91, 0xFC, 0x1, 0x47, 0x1, 0xA4, 0x1, 0xA3, 0x1, 0x48, 0xFC, 0x18, 0xFE, 0x53, 0xB5, 0xFE, 0x53, 0x1, 0xE0, 0xFE, 0x20, 0x5, 0xB0, 0xFB, 0xA4, 0x4, 0x5C, 0xFA, 0x50, 0x1, 0xE0, 0x2, 0x80, 0xFB, 0xA0, 0x4, 0x61, 0x0, 0x1, 0x0, 0x95, 0x0, 0x0, 0x5, 0x18, 0x5, 0xB0, 0x0, 0x9, 0x0, 0x0, 0x1, 0x11, 0x23, 0x1, 0x11, 0x23, 0x11, 0x33, 0x1, 0x11, 0x5, 0x18, 0xFD, 0xFD, 0x76, 0xFC, 0xFC, 0x2, 0x8C, 0x5, 0xB0, 0xFA, 0x50, 0x4, 0x9, 0xFB, 0xF7, 0x5, 0xB0, 0xFB, 0xF4, 0x4, 0xC, 0x0, 0x2, 0x0, 0x66, 0xFF, 0xEC, 0x5, 0x1F, 0x5, 0xC4, 0x0, 0xD, 0x0, 0x1B, 0x0, 0x0, 0x1, 0x10, 0x0, 0x21, 0x20, 0x0, 0x11, 0x35, 0x10, 0x0, 0x21, 0x20, 0x0, 0x11, 0x27, 0x34, 0x2, 0x23, 0x22, 0x2, 0x15, 0x15, 0x14, 0x12, 0x33, 0x32, 0x12, 0x35, 0x5, 0x1F, 0xFE, 0xB5, 0xFE, 0xF0, 0xFE, 0xF6, 0xFE, 0xAC, 0x1, 0x52, 0x1, 0xA, 0x1, 0x10, 0x1, 0x4D, 0xFD, 0xB9, 0xA7, 0xA2, 0xBD, 0xBF, 0xA2, 0xA8, 0xB6, 0x2, 0xB3, 0xFE, 0xB4, 0xFE, 0x85, 0x1, 0x7B, 0x1, 0x4C, 0x49, 0x1, 0x4C, 0x1, 0x7C, 0xFE, 0x84, 0xFE, 0xB4, 0x2, 0xF5, 0x1, 0x0, 0xFF, 0x0, 0xF5, 0x4B, 0xF5, 0xFE, 0xFE, 0x1, 0x2, 0xF5, 0x0, 0x2, 0x0, 0x95, 0x0, 0x0, 0x4, 0xD4, 0x5, 0xB0, 0x0, 0x8, 0x0, 0x13, 0x0, 0x0, 0x1, 0x11, 0x21, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x1, 0x11, 0x23, 0x11, 0x21, 0x32, 0x0, 0x15, 0x14, 0x4, 0x23, 0x1, 0x91, 0x1, 0x31, 0x93, 0x81, 0x81, 0x93, 0xFE, 0xCF, 0xFC, 0x2, 0x2D, 0xFD, 0x1, 0x15, 0xFE, 0xEB, 0xFD, 0x4, 0xE5, 0xFE, 0x3, 0x8A, 0x6D, 0x66, 0xA0, 0xFD, 0x38, 0xFD, 0xE3, 0x5, 0xB0, 0xFE, 0xFA, 0xC9, 0xD3, 0xF1, 0x0, 0x2, 0x0, 0x60, 0xFF, 0x4, 0x5, 0x1B, 0x5, 0xC4, 0x0, 0x12, 0x0, 0x20, 0x0, 0x0, 0x5, 0x25, 0x6, 0x23, 0x20, 0x0, 0x11, 0x35, 0x10, 0x0, 0x21, 0x20, 0x0, 0x11, 0x15, 0x14, 0x2, 0x7, 0x17, 0x3, 0x34, 0x2, 0x23, 0x22, 0x2, 0x15, 0x15, 0x14, 0x12, 0x33, 0x32, 0x12, 0x35, 0x4, 0x76, 0xFE, 0xCB, 0x3F, 0x44, 0xFE, 0xF6, 0xFE, 0xAC, 0x1, 0x52, 0x1, 0xA, 0x1, 0x10, 0x1, 0x4D, 0x84, 0x75, 0xFB, 0xFF, 0xB9, 0xA7, 0xA2, 0xBC, 0xBE, 0xA2, 0xA8, 0xB6, 0xFC, 0xF5, 0xD, 0x1, 0x7B, 0x1, 0x4C, 0x49, 0x1, 0x4C, 0x1, 0x7C, 0xFE, 0x84, 0xFE, 0xB4, 0x49, 0xCE, 0xFE, 0xCF, 0x59, 0xC4, 0x3, 0x67, 0xF5, 0x1, 0x0, 0xFF, 0x0, 0xF5, 0x4B, 0xF5, 0xFE, 0xFE, 0x1, 0x2, 0xF5, 0x0, 0x2, 0x0, 0x95, 0x0, 0x0, 0x4, 0xDE, 0x5, 0xB0, 0x0, 0x8, 0x0, 0x17, 0x0, 0x0, 0x1, 0x11, 0x21, 0x32, 0x36, 0x35, 0x34, 0x26, 0x27, 0x1, 0x1, 0x21, 0x11, 0x23, 0x11, 0x21, 0x32, 0x4, 0x15, 0x14, 0x6, 0x7, 0x1, 0x15, 0x1, 0x91, 0x1, 0x4, 0x88, 0x89, 0x80, 0x8D, 0x1, 0x37, 0xFE, 0xDC, 0xFE, 0xE5, 0xFC, 0x2, 0x0, 0xFB, 0x1, 0x12, 0x8E, 0x7D, 0x1, 0x47, 0x4, 0xE5, 0xFE, 0x17, 0x89, 0x68, 0x70, 0x87, 0x1, 0xFB, 0x1B, 0x2, 0x31, 0xFD, 0xCF, 0x5, 0xB0, 0xE0, 0xD7, 0x92, 0xC6, 0x34, 0xFD, 0xA0, 0xD, 0x0, 0x1, 0x0, 0x4A, 0xFF, 0xEC, 0x4, 0x8A, 0x5, 0xC4, 0x0, 0x25, 0x0, 0x0, 0x1, 0x34, 0x26, 0x24, 0x24, 0x35, 0x34, 0x24, 0x33, 0x32, 0x0, 0x15, 0x23, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x14, 0x16, 0x17, 0x16, 0x16, 0x15, 0x14, 0x4, 0x23, 0x22, 0x24, 0x26, 0x35, 0x33, 0x14, 0x16, 0x33, 0x32, 0x36, 0x3, 0x8D, 0x72, 0xFE, 0x60, 0xFE, 0xFD, 0x1, 0x1D, 0xE7, 0xF7, 0x1, 0x16, 0xFC, 0x86, 0x8E, 0x85, 0x7F, 0x98, 0x99, 0xF7, 0xED, 0xFE, 0xE7, 0xED, 0x8B, 0xFE, 0xFA, 0xA9, 0xFD, 0xB8, 0x85, 0x84, 0x85, 0x1, 0x78, 0x57, 0x69, 0x81, 0xCA, 0xAE, 0xB0, 0xE3, 0xFE, 0xF9, 0xB6, 0x6B, 0x89, 0x73, 0x56, 0x52, 0x6B, 0x2D, 0x48, 0xD8, 0xAE, 0xB8, 0xD6, 0x66, 0xCD, 0x99, 0x8A, 0x7A, 0x6C, 0x0, 0x1, 0x0, 0x2D, 0x0, 0x0, 0x4, 0xB0, 0x5, 0xB0, 0x0, 0x7, 0x0, 0x0, 0x1, 0x21, 0x11, 0x23, 0x11, 0x21, 0x35, 0x21, 0x4, 0xB0, 0xFE, 0x3B, 0xFC, 0xFE, 0x3E, 0x4, 0x83, 0x4, 0xE5, 0xFB, 0x1B, 0x4, 0xE5, 0xCB, 0x0, 0x1, 0x0, 0x7E, 0xFF, 0xEC, 0x4, 0xBE, 0x5, 0xB0, 0x0, 0x11, 0x0, 0x0, 0x1, 0x33, 0x11, 0x14, 0x4, 0x23, 0x22, 0x24, 0x35, 0x11, 0x33, 0x11, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x3, 0xC1, 0xFD, 0xFE, 0xC2, 0xE3, 0xE9, 0xFE, 0xCA, 0xFB, 0x9F, 0x85, 0x87, 0x9D, 0x5, 0xB0, 0xFC, 0x33, 0xFA, 0xFD, 0xFD, 0xFA, 0x3, 0xCD, 0xFC, 0x33, 0x9C, 0x91, 0x91, 0x9C, 0x0, 0x1, 0x0, 0x12, 0x0, 0x0, 0x5, 0x1D, 0x5, 0xB0, 0x0, 0x6, 0x0, 0x0, 0x21, 0x1, 0x21, 0x1, 0x1, 0x21, 0x1, 0x2, 0x1C, 0xFD, 0xF6, 0x1, 0x15, 0x1, 0x6F, 0x1, 0x71, 0x1, 0x16, 0xFD, 0xF4, 0x5, 0xB0, 0xFB, 0x8E, 0x4, 0x72, 0xFA, 0x50, 0x0, 0x1, 0x0, 0x31, 0x0, 0x0, 0x6, 0xE5, 0x5, 0xB0, 0x0, 0xC, 0x0, 0x0, 0x21, 0x1, 0x33, 0x13, 0x1, 0x33, 0x1, 0x13, 0x33, 0x1, 0x23, 0x1, 0x1, 0x1, 0x81, 0xFE, 0xB0, 0xFB, 0xE2, 0x1, 0x16, 0xD4, 0x1, 0x13, 0xDF, 0xFB, 0xFE, 0xB1, 0xF3, 0xFE, 0xEB, 0xFE, 0xE5, 0x5, 0xB0, 0xFB, 0xBD, 0x4, 0x43, 0xFB, 0xB9, 0x4, 0x47, 0xFA, 0x50, 0x4, 0x26, 0xFB, 0xDA, 0x0, 0x1, 0x0, 0x29, 0x0, 0x0, 0x4, 0xEA, 0x5, 0xB0, 0x0, 0xB, 0x0, 0x0, 0x9, 0x2, 0x21, 0x1, 0x1, 0x21, 0x1, 0x1, 0x21, 0x1, 0x1, 0x1, 0x58, 0x1, 0x32, 0x1, 0x31, 0x1, 0x24, 0xFE, 0x48, 0x1, 0xC3, 0xFE, 0xD9, 0xFE, 0xC7, 0xFE, 0xC6, 0xFE, 0xD9, 0x1, 0xC3, 0xFE, 0x48, 0x5, 0xB0, 0xFD, 0xF2, 0x2, 0xE, 0xFD, 0x2E, 0xFD, 0x22, 0x2, 0x17, 0xFD, 0xE9, 0x2, 0xDE, 0x2, 0xD2, 0x0, 0x1, 0x0, 0x8, 0x0, 0x0, 0x4, 0xD6, 0x5, 0xB0, 0x0, 0x8, 0x0, 0x0, 0x9, 0x2, 0x21, 0x1, 0x11, 0x23, 0x11, 0x1, 0x1, 0x21, 0x1, 0x4E, 0x1, 0x4F, 0x1, 0x18, 0xFE, 0x18, 0xFE, 0xFE, 0x18, 0x5, 0xB0, 0xFD, 0x4F, 0x2, 0xB1, 0xFC, 0x68, 0xFD, 0xE8, 0x2, 0x18, 0x3, 0x98, 0x0, 0x1, 0x0, 0x50, 0x0, 0x0, 0x4, 0x8C, 0x5, 0xB0, 0x0, 0x9, 0x0, 0x0, 0x33, 0x35, 0x1, 0x21, 0x35, 0x21, 0x15, 0x1, 0x21, 0x15, 0x50, 0x2, 0xF2, 0xFD, 0x14, 0x4, 0x1E, 0xFD, 0xE, 0x3, 0xA, 0xA4, 0x4, 0x41, 0xCB, 0xA0, 0xFB, 0xBA, 0xCA, 0x0, 0x1, 0x0, 0x84, 0xFE, 0xBB, 0x2, 0x1D, 0x6, 0x8F, 0x0, 0x7, 0x0, 0x0, 0x1, 0x15, 0x23, 0x11, 0x33, 0x15, 0x21, 0x11, 0x2, 0x1D, 0xA6, 0xA6, 0xFE, 0x67, 0x6, 0x8F, 0xBE, 0xF9, 0xA8, 0xBE, 0x7, 0xD4, 0x0, 0x1, 0x0, 0x14, 0xFF, 0x83, 0x3, 0x64, 0x5, 0xB0, 0x0, 0x3, 0x0, 0x0, 0x5, 0x1, 0x33, 0x1, 0x2, 0x74, 0xFD, 0xA0, 0xF0, 0x2, 0x60, 0x7D, 0x6, 0x2D, 0xF9, 0xD3, 0x0, 0x1, 0x0, 0xD, 0xFE, 0xBB, 0x1, 0xA6, 0x6, 0x8F, 0x0, 0x7, 0x0, 0x0, 0x13, 0x35, 0x21, 0x11, 0x21, 0x35, 0x33, 0x11, 0xD, 0x1, 0x99, 0xFE, 0x67, 0xA6, 0x5, 0xD1, 0xBE, 0xF8, 0x2C, 0xBE, 0x6, 0x58, 0x0, 0x1, 0x0, 0x35, 0x2, 0xD9, 0x3, 0x36, 0x5, 0xB0, 0x0, 0x6, 0x0, 0x0, 0x1, 0x3, 0x3, 0x23, 0x1, 0x33, 0x1, 0x2, 0x68, 0xB2, 0xB2, 0xCF, 0x1, 0x2B, 0xAC, 0x1, 0x2A, 0x2, 0xD9, 0x1, 0xCF, 0xFE, 0x31, 0x2, 0xD7, 0xFD, 0x29, 0x0, 0x1, 0x0, 0x3, 0xFF, 0x40, 0x3, 0x99, 0x0, 0x0, 0x0, 0x3, 0x0, 0x0, 0x21, 0x15, 0x21, 0x35, 0x3, 0x99, 0xFC, 0x6A, 0xC0, 0xC0, 0x0, 0x1, 0x0, 0x31, 0x4, 0xD2, 0x2, 0xA, 0x6, 0x0, 0x0, 0x3, 0x0, 0x0, 0x1, 0x13, 0x23, 0x1, 0x1, 0x46, 0xC4, 0xCA, 0xFE, 0xF1, 0x6, 0x0, 0xFE, 0xD2, 0x1, 0x2E, 0x0, 0x2, 0x0, 0x5B, 0xFF, 0xEC, 0x3, 0xFC, 0x4, 0x4E, 0x0, 0x8, 0x0, 0x26, 0x0, 0x0, 0x24, 0x36, 0x37, 0x35, 0x23, 0x6, 0x15, 0x14, 0x16, 0x5, 0x26, 0x27, 0x6, 0x23, 0x22, 0x26, 0x35, 0x34, 0x24, 0x33, 0x33, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x23, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x11, 0x14, 0x17, 0x15, 0x2, 0x4D, 0x7A, 0x19, 0x94, 0xFF, 0x58, 0x1, 0x5F, 0x12, 0xA, 0x73, 0xAA, 0xA2, 0xCE, 0x1, 0x2, 0xEA, 0x99, 0x5F, 0x5F, 0x57, 0x67, 0xF2, 0xF1, 0xCD, 0xB6, 0xED, 0x29, 0xAF, 0x51, 0x31, 0xCC, 0x6, 0xAF, 0x41, 0x58, 0xAF, 0x25, 0x41, 0x7A, 0xBA, 0x8A, 0xAD, 0xB8, 0x47, 0x55, 0x65, 0x56, 0x3E, 0x80, 0xCC, 0xBA, 0xBA, 0xFE, 0x20, 0x92, 0x57, 0x11, 0x0, 0x2, 0x0, 0x7D, 0xFF, 0xEC, 0x4, 0x32, 0x6, 0x0, 0x0, 0xF, 0x0, 0x1A, 0x0, 0x0, 0x5, 0x22, 0x27, 0x7, 0x23, 0x11, 0x33, 0x11, 0x36, 0x33, 0x32, 0x12, 0x15, 0x15, 0x14, 0x2, 0x25, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x22, 0x7, 0x11, 0x16, 0x2, 0x8D, 0xBD, 0x6C, 0xB, 0xDC, 0xF2, 0x6A, 0xB2, 0xD1, 0xD6, 0xD7, 0xFE, 0xF4, 0x87, 0x6A, 0x67, 0x8C, 0x9B, 0x43, 0x44, 0x14, 0x8A, 0x76, 0x6, 0x0, 0xFD, 0xD2, 0x7C, 0xFE, 0xCD, 0xF4, 0x15, 0xEF, 0xFE, 0xC9, 0xC7, 0xCA, 0xAA, 0x8F, 0xD2, 0x8C, 0xFE, 0x44, 0x8D, 0x0, 0x1, 0x0, 0x50, 0xFF, 0xEC, 0x3, 0xF5, 0x4, 0x4E, 0x0, 0x1B, 0x0, 0x0, 0x25, 0x32, 0x36, 0x37, 0x33, 0x6, 0x4, 0x23, 0x22, 0x2, 0x35, 0x35, 0x34, 0x12, 0x33, 0x32, 0x16, 0x17, 0x23, 0x26, 0x26, 0x23, 0x22, 0x6, 0x15, 0x15, 0x14, 0x16, 0x2, 0x3A, 0x58, 0x7A, 0x5, 0xE4, 0x4, 0xFF, 0x0, 0xB5, 0xFA, 0xF2, 0xF3, 0xF9, 0xC5, 0xF0, 0x4, 0xE4, 0x5, 0x70, 0x63, 0x94, 0x63, 0x62, 0xAF, 0x68, 0x4F, 0x9D, 0xDD, 0x1, 0x40, 0xDF, 0x24, 0xDE, 0x1, 0x41, 0xE4, 0xB3, 0x57, 0x7D, 0xDB, 0x81, 0x24, 0x83, 0xD9, 0x0, 0x2, 0x0, 0x50, 0xFF, 0xEC, 0x4, 0x4, 0x6, 0x0, 0x0, 0xB, 0x0, 0x1B, 0x0, 0x0, 0x25, 0x32, 0x37, 0x11, 0x26, 0x23, 0x22, 0x6, 0x15, 0x15, 0x14, 0x16, 0x5, 0x27, 0x6, 0x23, 0x22, 0x2, 0x35, 0x35, 0x34, 0x12, 0x33, 0x32, 0x17, 0x11, 0x33, 0x11, 0x2, 0x37, 0x95, 0x45, 0x44, 0x94, 0x84, 0x73, 0x72, 0x1, 0x73, 0xB, 0x6C, 0xB7, 0xC3, 0xE6, 0xE5, 0xC6, 0xAC, 0x6A, 0xF3, 0xB3, 0x86, 0x1, 0xCD, 0x82, 0xD0, 0x92, 0x15, 0x91, 0xCD, 0xB3, 0x70, 0x84, 0x1, 0x39, 0xEC, 0x15, 0xF7, 0x1, 0x31, 0x77, 0x2, 0x29, 0xFA, 0x0, 0x0, 0x2, 0x0, 0x54, 0xFF, 0xEC, 0x4, 0xC, 0x4, 0x4E, 0x0, 0x7, 0x0, 0x1C, 0x0, 0x0, 0x1, 0x22, 0x6, 0x7, 0x21, 0x35, 0x26, 0x26, 0x1, 0x6, 0x6, 0x23, 0x22, 0x0, 0x35, 0x35, 0x10, 0x0, 0x33, 0x32, 0x12, 0x15, 0x15, 0x21, 0x16, 0x16, 0x33, 0x32, 0x37, 0x2, 0x3D, 0x64, 0x7A, 0x12, 0x1, 0xCE, 0x4, 0x61, 0x1, 0x44, 0x34, 0xCB, 0xA2, 0xF1, 0xFE, 0xEC, 0x1, 0x1B, 0xCE, 0xEC, 0xE3, 0xFD, 0x3D, 0xA, 0x95, 0x80, 0xA7, 0x68, 0x3, 0x8B, 0x8C, 0x7C, 0x12, 0x5F, 0x97, 0xFD, 0x2D, 0x4C, 0x80, 0x1, 0x2C, 0xDF, 0x29, 0x1, 0x1, 0x1, 0x2D, 0xFE, 0xD4, 0xEA, 0x67, 0x7D, 0xA5, 0x86, 0x0, 0x1, 0x0, 0x2D, 0x0, 0x0, 0x2, 0xD7, 0x6, 0x15, 0x0, 0x14, 0x0, 0x0, 0x1, 0x23, 0x11, 0x23, 0x11, 0x23, 0x35, 0x33, 0x35, 0x34, 0x36, 0x33, 0x32, 0x17, 0x7, 0x26, 0x23, 0x22, 0x7, 0x15, 0x33, 0x2, 0xA1, 0xDB, 0xF4, 0xA5, 0xA5, 0xCC, 0xB0, 0x43, 0x46, 0x6, 0x2A, 0x34, 0xAB, 0x2, 0xDB, 0x3, 0x87, 0xFC, 0x79, 0x3, 0x87, 0xB3, 0x67, 0xB5, 0xBF, 0x12, 0xBE, 0x8, 0xA8, 0x6B, 0x0, 0x2, 0x0, 0x52, 0xFE, 0x56, 0x4, 0xD, 0x4, 0x4E, 0x0, 0xB, 0x0, 0x26, 0x0, 0x0, 0x25, 0x32, 0x37, 0x11, 0x26, 0x23, 0x22, 0x6, 0x15, 0x15, 0x14, 0x16, 0x13, 0x22, 0x26, 0x27, 0x37, 0x16, 0x33, 0x32, 0x36, 0x35, 0x35, 0x6, 0x23, 0x22, 0x2, 0x27, 0x35, 0x34, 0x12, 0x33, 0x32, 0x17, 0x37, 0x33, 0x11, 0x14, 0x4, 0x2, 0x40, 0x96, 0x44, 0x43, 0x95, 0x84, 0x79, 0x78, 0x65, 0x59, 0xF4, 0x48, 0x73, 0x70, 0xA4, 0x79, 0x8D, 0x6A, 0xAE, 0xC6, 0xE8, 0x2, 0xE9, 0xC9, 0xBA, 0x69, 0xA, 0xDC, 0xFE, 0xEF, 0xB3, 0x80, 0x1, 0xD9, 0x7C, 0xD0, 0x92, 0x15, 0x91, 0xCD, 0xFD, 0xA3, 0x51, 0x62, 0x91, 0x85, 0x85, 0x7F, 0x49, 0x76, 0x1, 0x35, 0xE8, 0x1D, 0xF7, 0x1, 0x31, 0x7F, 0x6B, 0xFB, 0xE4, 0xDB, 0xED, 0x0, 0x1, 0x0, 0x7A, 0x0, 0x0, 0x3, 0xF9, 0x6, 0x0, 0x0, 0x11, 0x0, 0x0, 0x1, 0x22, 0x7, 0x11, 0x23, 0x11, 0x33, 0x11, 0x36, 0x33, 0x32, 0x16, 0x17, 0x11, 0x23, 0x11, 0x34, 0x26, 0x2, 0x47, 0x93, 0x48, 0xF2, 0xF2, 0x76, 0xB7, 0x9F, 0xC0, 0x1, 0xF3, 0x62, 0x3, 0x88, 0x83, 0xFC, 0xFB, 0x6, 0x0, 0xFD, 0xC3, 0x8B, 0xB6, 0xDA, 0xFD, 0x42, 0x2, 0xBB, 0x71, 0x5C, 0x0, 0x2, 0x0, 0x7D, 0x0, 0x0, 0x1, 0x91, 0x5, 0xD5, 0x0, 0x9, 0x0, 0xD, 0x0, 0x0, 0x13, 0x34, 0x36, 0x32, 0x16, 0x15, 0x14, 0x6, 0x22, 0x26, 0x5, 0x11, 0x23, 0x11, 0x7D, 0x49, 0x82, 0x49, 0x49, 0x82, 0x49, 0x1, 0x2, 0xF3, 0x5, 0x54, 0x38, 0x49, 0x49, 0x38, 0x37, 0x4A, 0x4A, 0xE3, 0xFB, 0xC6, 0x4, 0x3A, 0x0, 0x2, 0xFF, 0xB4, 0xFE, 0x4B, 0x1, 0x86, 0x5, 0xD5, 0x0, 0x9, 0x0, 0x15, 0x0, 0x0, 0x13, 0x34, 0x36, 0x32, 0x16, 0x15, 0x14, 0x6, 0x22, 0x26, 0x17, 0x33, 0x11, 0x10, 0x21, 0x22, 0x27, 0x35, 0x16, 0x33, 0x32, 0x35, 0x72, 0x49, 0x82, 0x49, 0x49, 0x82, 0x49, 0x15, 0xF3, 0xFE, 0xBC, 0x44, 0x3E, 0x2E, 0x2A, 0x7B, 0x5, 0x54, 0x38, 0x49, 0x49, 0x38, 0x37, 0x4A, 0x4A, 0xE3, 0xFB, 0x66, 0xFE, 0xAB, 0x11, 0xBF, 0x8, 0x8D, 0x0, 0x1, 0x0, 0x7D, 0x0, 0x0, 0x4, 0x37, 0x6, 0x0, 0x0, 0xC, 0x0, 0x0, 0x21, 0x1, 0x7, 0x11, 0x23, 0x11, 0x33, 0x11, 0x37, 0x1, 0x21, 0x1, 0x1, 0x3, 0x1E, 0xFE, 0xBF, 0x6D, 0xF3, 0xF3, 0x4D, 0x1, 0x2B, 0x1, 0x24, 0xFE, 0x6D, 0x1, 0xBE, 0x1, 0xD2, 0x70, 0xFE, 0x9E, 0x6, 0x0, 0xFC, 0x8A, 0x60, 0x1, 0x50, 0xFE, 0x3E, 0xFD, 0x88, 0x0, 0x1, 0x0, 0x8C, 0x0, 0x0, 0x1, 0x7F, 0x6, 0x0, 0x0, 0x3, 0x0, 0x0, 0x1, 0x11, 0x23, 0x11, 0x1, 0x7F, 0xF3, 0x6, 0x0, 0xFA, 0x0, 0x6, 0x0, 0x0, 0x1, 0x0, 0x7D, 0x0, 0x0, 0x6, 0x7A, 0x4, 0x4E, 0x0, 0x1E, 0x0, 0x0, 0x1, 0x22, 0x7, 0x11, 0x23, 0x11, 0x33, 0x17, 0x36, 0x33, 0x32, 0x17, 0x36, 0x33, 0x32, 0x16, 0x17, 0x11, 0x23, 0x11, 0x34, 0x26, 0x23, 0x22, 0x6, 0x7, 0x11, 0x23, 0x11, 0x34, 0x26, 0x2, 0x3F, 0x93, 0x3D, 0xF2, 0xE4, 0x7, 0x73, 0xC6, 0xD7, 0x51, 0x77, 0xD6, 0xA6, 0xBD, 0x1, 0xF3, 0x69, 0x5A, 0x53, 0x69, 0x14, 0xF3, 0x68, 0x3, 0x88, 0x78, 0xFC, 0xF0, 0x4, 0x3A, 0x71, 0x85, 0xA5, 0xA5, 0xB8, 0xD4, 0xFD, 0x3E, 0x2, 0xBE, 0x78, 0x52, 0x5A, 0x48, 0xFD, 0x1A, 0x2, 0xBC, 0x72, 0x5A, 0x0, 0x1, 0x0, 0x7A, 0x0, 0x0, 0x3, 0xF9, 0x4, 0x4E, 0x0, 0x11, 0x0, 0x0, 0x1, 0x22, 0x7, 0x11, 0x23, 0x11, 0x33, 0x17, 0x36, 0x33, 0x32, 0x16, 0x17, 0x11, 0x23, 0x11, 0x34, 0x26, 0x2, 0x47, 0x91, 0x49, 0xF3, 0xE5, 0x8, 0x77, 0xC2, 0x9C, 0xBC, 0x1, 0xF3, 0x61, 0x3, 0x88, 0x84, 0xFC, 0xFC, 0x4, 0x3A, 0x7C, 0x90, 0xB3, 0xDA, 0xFD, 0x3F, 0x2, 0xBE, 0x70, 0x5A, 0x0, 0x2, 0x0, 0x50, 0xFF, 0xEC, 0x4, 0x3E, 0x4, 0x4E, 0x0, 0xD, 0x0, 0x1B, 0x0, 0x0, 0x13, 0x34, 0x0, 0x33, 0x32, 0x0, 0x15, 0x15, 0x14, 0x0, 0x23, 0x22, 0x0, 0x27, 0x37, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x50, 0x1, 0xA, 0xEC, 0xEF, 0x1, 0x9, 0xFE, 0xF7, 0xED, 0xEB, 0xFE, 0xF7, 0x4, 0xF2, 0x7D, 0x89, 0x86, 0x7D, 0x7C, 0x89, 0x87, 0x7D, 0x2, 0x27, 0xEC, 0x1, 0x3B, 0xFE, 0xC5, 0xEC, 0x15, 0xEB, 0xFE, 0xC5, 0x1, 0x33, 0xE6, 0xD, 0x91, 0xD2, 0xD2, 0x91, 0x15, 0x8F, 0xD5, 0xD5, 0x8F, 0x0, 0x2, 0x0, 0x7D, 0xFE, 0x60, 0x4, 0x31, 0x4, 0x4E, 0x0, 0xB, 0x0, 0x1B, 0x0, 0x0, 0x25, 0x32, 0x36, 0x35, 0x35, 0x34, 0x26, 0x23, 0x22, 0x7, 0x11, 0x16, 0x17, 0x22, 0x27, 0x11, 0x23, 0x11, 0x33, 0x17, 0x36, 0x33, 0x32, 0x12, 0x15, 0x15, 0x14, 0x2, 0x2, 0x48, 0x83, 0x73, 0x75, 0x83, 0x96, 0x41, 0x43, 0xDA, 0xB1, 0x6C, 0xF2, 0xDF, 0xA, 0x6D, 0xB7, 0xCE, 0xD9, 0xDA, 0xAF, 0xD3, 0x90, 0x15, 0x92, 0xCF, 0x7D, 0xFE, 0x23, 0x7F, 0xC3, 0x75, 0xFD, 0xFF, 0x5, 0xDA, 0x6D, 0x81, 0xFE, 0xD0, 0xF8, 0x14, 0xEC, 0xFE, 0xC6, 0x0, 0x2, 0x0, 0x50, 0xFE, 0x60, 0x4, 0x3, 0x4, 0x4E, 0x0, 0xF, 0x0, 0x1B, 0x0, 0x0, 0x1, 0x23, 0x11, 0x6, 0x23, 0x22, 0x2, 0x35, 0x35, 0x34, 0x12, 0x33, 0x32, 0x17, 0x37, 0x33, 0x1, 0x32, 0x37, 0x11, 0x26, 0x23, 0x22, 0x6, 0x15, 0x15, 0x14, 0x16, 0x4, 0x3, 0xF3, 0x6A, 0xAA, 0xCA, 0xE2, 0xE1, 0xCD, 0xB4, 0x6B, 0xD, 0xD9, 0xFE, 0x36, 0x92, 0x45, 0x46, 0x8F, 0x83, 0x76, 0x74, 0xFE, 0x60, 0x1, 0xFD, 0x71, 0x1, 0x3A, 0xED, 0x14, 0xF7, 0x1, 0x30, 0x7E, 0x6A, 0xFC, 0x75, 0x7C, 0x1, 0xEA, 0x76, 0xD2, 0x92, 0x15, 0x91, 0xD2, 0x0, 0x1, 0x0, 0x7D, 0x0, 0x0, 0x2, 0xB5, 0x4, 0x4E, 0x0, 0xD, 0x0, 0x0, 0x1, 0x22, 0x7, 0x11, 0x23, 0x11, 0x33, 0x17, 0x36, 0x33, 0x32, 0x17, 0x7, 0x26, 0x2, 0x51, 0xA9, 0x39, 0xF2, 0xE8, 0x6, 0x56, 0x9E, 0x31, 0x25, 0x2, 0x32, 0x3, 0x64, 0x80, 0xFD, 0x1C, 0x4, 0x3A, 0x7A, 0x8E, 0xD, 0xE5, 0x8, 0x0, 0x1, 0x0, 0x4C, 0xFF, 0xEC, 0x3, 0xCA, 0x4, 0x4E, 0x0, 0x24, 0x0, 0x0, 0x1, 0x34, 0x26, 0x27, 0x26, 0x26, 0x35, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x23, 0x34, 0x26, 0x23, 0x22, 0x6, 0x14, 0x16, 0x17, 0x16, 0x16, 0x15, 0x14, 0x6, 0x23, 0x22, 0x26, 0x35, 0x33, 0x16, 0x16, 0x33, 0x32, 0x36, 0x2, 0xDC, 0x55, 0x8E, 0xB0, 0xD9, 0xE0, 0xC1, 0xCB, 0xE7, 0xF3, 0x60, 0x5F, 0x5C, 0x58, 0x5F, 0x7F, 0xBC, 0xD3, 0xEE, 0xC7, 0xDF, 0xEA, 0xEC, 0x5, 0x8A, 0x50, 0x60, 0x65, 0x1, 0x26, 0x35, 0x4C, 0x1E, 0x25, 0x93, 0x89, 0x85, 0xC3, 0xC6, 0x92, 0x3F, 0x63, 0x52, 0x6C, 0x40, 0x1B, 0x28, 0x92, 0x91, 0x90, 0xB8, 0xE4, 0x86, 0x64, 0x50, 0x4A, 0x0, 0x1, 0x0, 0x8, 0xFF, 0xEC, 0x2, 0x73, 0x5, 0x41, 0x0, 0x15, 0x0, 0x0, 0x25, 0x6, 0x23, 0x22, 0x26, 0x35, 0x11, 0x23, 0x35, 0x33, 0x11, 0x33, 0x11, 0x33, 0x15, 0x23, 0x11, 0x14, 0x16, 0x33, 0x32, 0x37, 0x2, 0x73, 0x46, 0x5A, 0x79, 0x9F, 0xB3, 0xB3, 0xF2, 0xBF, 0xBF, 0x40, 0x31, 0x2A, 0x2B, 0x4, 0x18, 0x89, 0xA7, 0x2, 0x6B, 0xB3, 0x1, 0x7, 0xFE, 0xF9, 0xB3, 0xFD, 0xA3, 0x49, 0x2B, 0xA, 0x0, 0x1, 0x0, 0x77, 0xFF, 0xEC, 0x3, 0xF7, 0x4, 0x3A, 0x0, 0x11, 0x0, 0x0, 0x21, 0x27, 0x6, 0x23, 0x22, 0x26, 0x27, 0x11, 0x33, 0x11, 0x14, 0x16, 0x33, 0x32, 0x37, 0x11, 0x33, 0x11, 0x3, 0x12, 0x6, 0x6A, 0xC6, 0x9E, 0xC6, 0x1, 0xF3, 0x67, 0x45, 0xAE, 0x40, 0xF3, 0x6A, 0x7E, 0xBA, 0xD5, 0x2, 0xBF, 0xFD, 0x43, 0x75, 0x55, 0x7D, 0x3, 0xA, 0xFB, 0xC6, 0x0, 0x1, 0x0, 0x17, 0x0, 0x0, 0x3, 0xDB, 0x4, 0x3A, 0x0, 0x6, 0x0, 0x0, 0x21, 0x1, 0x33, 0x13, 0x13, 0x33, 0x1, 0x1, 0x91, 0xFE, 0x86, 0xFB, 0xEA, 0xE4, 0xFB, 0xFE, 0x89, 0x4, 0x3A, 0xFC, 0xFB, 0x3, 0x5, 0xFB, 0xC6, 0x0, 0x1, 0x0, 0x22, 0x0, 0x0, 0x5, 0xCD, 0x4, 0x3A, 0x0, 0xC, 0x0, 0x0, 0x21, 0x1, 0x33, 0x13, 0x13, 0x33, 0x13, 0x13, 0x33, 0x1, 0x23, 0x3, 0x3, 0x1, 0x4A, 0xFE, 0xD8, 0xED, 0xAF, 0xDD, 0xB8, 0xE1, 0xAC, 0xED, 0xFE, 0xD8, 0xC8, 0xE8, 0xE4, 0x4, 0x3A, 0xFD, 0x1E, 0x2, 0xE2, 0xFD, 0x14, 0x2, 0xEC, 0xFB, 0xC6, 0x2, 0xE6, 0xFD, 0x1A, 0x0, 0x1, 0x0, 0x1F, 0x0, 0x0, 0x3, 0xE9, 0x4, 0x3A, 0x0, 0xB, 0x0, 0x0, 0x1, 0x13, 0x13, 0x21, 0x1, 0x1, 0x21, 0x3, 0x3, 0x21, 0x1, 0x1, 0x1, 0x38, 0xCA, 0xCE, 0x1, 0xD, 0xFE, 0xB6, 0x1, 0x56, 0xFE, 0xF3, 0xD8, 0xD7, 0xFE, 0xF2, 0x1, 0x56, 0xFE, 0xB6, 0x4, 0x3A, 0xFE, 0x9C, 0x1, 0x64, 0xFD, 0xEC, 0xFD, 0xDA, 0x1, 0x72, 0xFE, 0x8E, 0x2, 0x26, 0x2, 0x14, 0x0, 0x1, 0x0, 0xC, 0xFE, 0x4B, 0x3, 0xD7, 0x4, 0x3A, 0x0, 0x10, 0x0, 0x0, 0x13, 0x22, 0x27, 0x35, 0x17, 0x32, 0x36, 0x37, 0x37, 0x1, 0x21, 0x13, 0x13, 0x21, 0x1, 0x2, 0x7, 0xD9, 0x31, 0x44, 0x2E, 0x5A, 0x5E, 0x1B, 0x23, 0xFE, 0x84, 0x1, 0x7, 0xE5, 0xDC, 0x1, 0x3, 0xFE, 0x54, 0x5A, 0xCB, 0xFE, 0x4B, 0x11, 0xBC, 0x3, 0x41, 0x51, 0x5E, 0x4, 0x35, 0xFD, 0x21, 0x2, 0xDF, 0xFB, 0x2B, 0xFE, 0xFD, 0x15, 0x0, 0x1, 0x0, 0x52, 0x0, 0x0, 0x3, 0xC0, 0x4, 0x3A, 0x0, 0x9, 0x0, 0x0, 0x33, 0x35, 0x1, 0x21, 0x35, 0x21, 0x15, 0x1, 0x21, 0x15, 0x52, 0x2, 0x26, 0xFD, 0xE5, 0x3, 0x4E, 0xFD, 0xD6, 0x2, 0x3F, 0x9F, 0x2, 0xD7, 0xC4, 0x99, 0xFD, 0x22, 0xC3, 0x0, 0x1, 0x0, 0x38, 0xFE, 0x98, 0x2, 0x92, 0x6, 0x3D, 0x0, 0x1A, 0x0, 0x0, 0x1, 0x26, 0x26, 0x35, 0x35, 0x34, 0x23, 0x35, 0x32, 0x35, 0x35, 0x34, 0x36, 0x37, 0x17, 0x6, 0x6, 0x15, 0x15, 0x14, 0x7, 0x16, 0x15, 0x15, 0x14, 0x16, 0x17, 0x2, 0x62, 0xCE, 0x9A, 0xC2, 0xC2, 0x9A, 0xCE, 0x30, 0x68, 0x4C, 0xAC, 0xAC, 0x4C, 0x68, 0xFE, 0x98, 0x3A, 0xFA, 0x9E, 0xC6, 0xE2, 0xB2, 0xE2, 0xC6, 0x9E, 0xF9, 0x3A, 0x8C, 0x22, 0xB1, 0x72, 0xC2, 0xE5, 0x5A, 0x5A, 0xE5, 0xC2, 0x72, 0xB1, 0x22, 0x0, 0x1, 0x0, 0xAE, 0xFE, 0xF2, 0x1, 0x56, 0x5, 0xB0, 0x0, 0x3, 0x0, 0x0, 0x1, 0x11, 0x23, 0x11, 0x1, 0x56, 0xA8, 0x5, 0xB0, 0xF9, 0x42, 0x6, 0xBE, 0x0, 0x1, 0x0, 0x1C, 0xFE, 0x98, 0x2, 0x76, 0x6, 0x3D, 0x0, 0x1A, 0x0, 0x0, 0x13, 0x27, 0x36, 0x36, 0x35, 0x35, 0x34, 0x37, 0x26, 0x35, 0x35, 0x34, 0x26, 0x27, 0x37, 0x16, 0x16, 0x15, 0x15, 0x14, 0x33, 0x15, 0x22, 0x15, 0x15, 0x14, 0x6, 0x4C, 0x30, 0x68, 0x4B, 0xB6, 0xB6, 0x4B, 0x68, 0x30, 0xCF, 0x99, 0xC2, 0xC2, 0x99, 0xFE, 0x98, 0x8D, 0x22, 0xB1, 0x72, 0xC3, 0xE8, 0x56, 0x56, 0xE8, 0xC3, 0x72, 0xB1, 0x22, 0x8C, 0x3A, 0xF9, 0x9E, 0xC6, 0xE2, 0xB2, 0xE2, 0xC6, 0x9E, 0xFA, 0x0, 0x1, 0x0, 0x76, 0x1, 0x84, 0x4, 0xDC, 0x3, 0x30, 0x0, 0x17, 0x0, 0x0, 0x1, 0x37, 0x14, 0x6, 0x23, 0x22, 0x2E, 0x2, 0x23, 0x22, 0x6, 0x15, 0x23, 0x34, 0x36, 0x33, 0x32, 0x16, 0x17, 0x16, 0x33, 0x32, 0x36, 0x4, 0x21, 0xBB, 0xBB, 0x90, 0x4E, 0x7B, 0x97, 0x44, 0x26, 0x43, 0x4D, 0xC1, 0xB9, 0x91, 0x55, 0x8C, 0x43, 0x5E, 0x48, 0x43, 0x54, 0x3, 0x12, 0x1, 0xAC, 0xE3, 0x39, 0x86, 0x22, 0x68, 0x54, 0xAF, 0xD8, 0x4A, 0x3F, 0x58, 0x6E, 0x0, 0x2, 0x0, 0x86, 0xFE, 0x93, 0x1, 0x9A, 0x4, 0x4D, 0x0, 0x9, 0x0, 0xD, 0x0, 0x0, 0x1, 0x14, 0x6, 0x22, 0x26, 0x35, 0x34, 0x36, 0x32, 0x16, 0x1, 0x13, 0x33, 0x13, 0x1, 0x9A, 0x49, 0x82, 0x49, 0x49, 0x82, 0x49, 0xFE, 0xF9, 0x17, 0xD1, 0x18, 0x3, 0xCB, 0x37, 0x4C, 0x4C, 0x37, 0x38, 0x4A, 0x4A, 0xFA, 0x90, 0x4, 0x3, 0xFB, 0xFD, 0x0, 0x1, 0x0, 0x65, 0xFF, 0xB, 0x4, 0xB, 0x5, 0x26, 0x0, 0x21, 0x0, 0x0, 0x1, 0x6, 0x6, 0x7, 0x15, 0x23, 0x35, 0x26, 0x2, 0x35, 0x35, 0x34, 0x12, 0x37, 0x35, 0x33, 0x15, 0x16, 0x16, 0x17, 0x23, 0x26, 0x26, 0x23, 0x22, 0x6, 0x15, 0x15, 0x14, 0x16, 0x33, 0x32, 0x36, 0x37, 0x4, 0xB, 0x5, 0xC4, 0x92, 0xC8, 0xC4, 0xBF, 0xBF, 0xC4, 0xC8, 0x9C, 0xBA, 0x5, 0xE5, 0x4, 0x70, 0x64, 0x94, 0x62, 0x61, 0x96, 0x59, 0x7A, 0x4, 0x1, 0x66, 0x88, 0xCD, 0x1C, 0xEA, 0xEA, 0x23, 0x1, 0x2D, 0xC6, 0x24, 0xC5, 0x1, 0x2E, 0x23, 0xE1, 0xE0, 0x1B, 0xD7, 0x9D, 0x57, 0x7D, 0xDB, 0x81, 0x24, 0x83, 0xD9, 0x68, 0x4F, 0x0, 0x1, 0x0, 0x5F, 0x0, 0x0, 0x4, 0x7C, 0x5, 0xC4, 0x0, 0x20, 0x0, 0x0, 0x21, 0x21, 0x35, 0x33, 0x36, 0x36, 0x35, 0x27, 0x23, 0x35, 0x33, 0x27, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x23, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x17, 0x21, 0x15, 0x21, 0x17, 0x14, 0x7, 0x21, 0x4, 0x7C, 0xFB, 0xE7, 0x51, 0x32, 0x21, 0x6, 0xA2, 0x9B, 0x8, 0xFF, 0xC6, 0xD0, 0xE3, 0xF5, 0x79, 0x4F, 0x50, 0x6F, 0x9, 0x1, 0x37, 0xFE, 0xD0, 0x7, 0x41, 0x2, 0xB8, 0xCA, 0xD, 0x8A, 0x3D, 0xB9, 0xC7, 0xF1, 0xCF, 0xE6, 0xDE, 0xB5, 0x6E, 0x5A, 0x78, 0x72, 0xF1, 0xC7, 0xB1, 0x88, 0x54, 0x0, 0x2, 0x0, 0x5D, 0xFF, 0xE5, 0x5, 0x4F, 0x4, 0xF1, 0x0, 0x1B, 0x0, 0x27, 0x0, 0x0, 0x5, 0x27, 0x6, 0x23, 0x22, 0x27, 0x7, 0x27, 0x37, 0x26, 0x35, 0x34, 0x37, 0x27, 0x37, 0x17, 0x36, 0x33, 0x32, 0x17, 0x37, 0x17, 0x7, 0x16, 0x15, 0x14, 0x7, 0x17, 0x1, 0x14, 0x12, 0x33, 0x32, 0x12, 0x35, 0x34, 0x2, 0x23, 0x22, 0x2, 0x4, 0xC1, 0x83, 0x9F, 0xCB, 0xCA, 0x9F, 0x81, 0x8D, 0x88, 0x65, 0x6D, 0x90, 0x8D, 0x8E, 0x9B, 0xC1, 0xC2, 0x9B, 0x90, 0x8E, 0x93, 0x6A, 0x62, 0x8B, 0xFB, 0xEB, 0xEF, 0xAB, 0xAA, 0xEF, 0xEF, 0xAA, 0xAB, 0xEF, 0x1B, 0x87, 0x80, 0x7E, 0x84, 0x90, 0x8A, 0x9D, 0xC3, 0xCC, 0xA1, 0x93, 0x90, 0x91, 0x73, 0x75, 0x94, 0x91, 0x96, 0xA1, 0xC9, 0xC0, 0x9D, 0x8D, 0x1, 0xEA, 0xB8, 0xFE, 0xFE, 0x1, 0x2, 0xB8, 0xB9, 0x1, 0x0, 0xFF, 0x0, 0x0, 0x1, 0x0, 0xC, 0x0, 0x0, 0x4, 0x35, 0x5, 0xB0, 0x0, 0x16, 0x0, 0x0, 0x1, 0x21, 0x11, 0x23, 0x11, 0x21, 0x35, 0x21, 0x35, 0x21, 0x35, 0x33, 0x1, 0x21, 0x1, 0x1, 0x21, 0x1, 0x33, 0x15, 0x21, 0x15, 0x21, 0x3, 0xCA, 0xFE, 0xD1, 0xFC, 0xFE, 0xCC, 0x1, 0x34, 0xFE, 0xCC, 0xF7, 0xFE, 0xAA, 0x1, 0x10, 0x1, 0x6, 0x1, 0x5, 0x1, 0xE, 0xFE, 0xAA, 0xEB, 0xFE, 0xD1, 0x1, 0x2F, 0x1, 0x2D, 0xFE, 0xD3, 0x1, 0x2D, 0x97, 0x8A, 0x98, 0x2, 0xCA, 0xFD, 0xA0, 0x2, 0x60, 0xFD, 0x36, 0x98, 0x8A, 0x0, 0x2, 0x0, 0x89, 0xFE, 0xF2, 0x1, 0x6E, 0x5, 0xB0, 0x0, 0x3, 0x0, 0x7, 0x0, 0x0, 0x1, 0x11, 0x23, 0x11, 0x13, 0x23, 0x11, 0x33, 0x1, 0x6E, 0xE5, 0xE5, 0xE5, 0xE5, 0x5, 0xB0, 0xFD, 0xA, 0x2, 0xF6, 0xF9, 0x42, 0x3, 0x1B, 0x0, 0x2, 0x0, 0x5A, 0xFE, 0x25, 0x4, 0x8D, 0x5, 0xC5, 0x0, 0xC, 0x0, 0x3A, 0x0, 0x0, 0x1, 0x36, 0x35, 0x34, 0x26, 0x24, 0x27, 0x6, 0x15, 0x14, 0x16, 0x17, 0x16, 0x3, 0x22, 0x26, 0x26, 0x35, 0x37, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x34, 0x26, 0x27, 0x26, 0x26, 0x10, 0x37, 0x26, 0x35, 0x34, 0x24, 0x33, 0x32, 0x4, 0x15, 0x23, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x14, 0x16, 0x4, 0x17, 0x16, 0x15, 0x14, 0x7, 0x16, 0x15, 0x14, 0x4, 0x3, 0x2B, 0x71, 0x76, 0xFE, 0xA5, 0xF, 0x6B, 0x89, 0xC6, 0x51, 0x80, 0x84, 0xF6, 0x9D, 0xF3, 0xBC, 0x68, 0x7E, 0x87, 0x88, 0xB9, 0xDD, 0xFA, 0xAA, 0x86, 0x1, 0x14, 0xE6, 0xEC, 0x1, 0xF, 0xF3, 0x86, 0x82, 0x89, 0x7E, 0x77, 0x1, 0xAE, 0x77, 0x7C, 0xAA, 0x86, 0xFE, 0xED, 0x1, 0x13, 0x2F, 0x76, 0x4B, 0x5F, 0x6B, 0x6, 0x2A, 0x7B, 0x5C, 0x5C, 0x37, 0x17, 0xFC, 0xFD, 0x4E, 0xB9, 0xA2, 0x1, 0x86, 0x60, 0x61, 0x4C, 0x4F, 0x5A, 0x37, 0x3B, 0xB6, 0x1, 0x70, 0x59, 0x67, 0xB7, 0xAA, 0xCD, 0xDE, 0xCF, 0x61, 0x89, 0x69, 0x49, 0x53, 0x56, 0x77, 0x56, 0x5A, 0xB9, 0xB8, 0x58, 0x67, 0xB8, 0xB2, 0xC1, 0x0, 0x2, 0x0, 0x5E, 0x4, 0xE0, 0x3, 0x24, 0x5, 0xCD, 0x0, 0xB, 0x0, 0x17, 0x0, 0x0, 0x13, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x6, 0x23, 0x22, 0x26, 0x25, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x6, 0x23, 0x22, 0x26, 0x5E, 0x44, 0x3A, 0x3B, 0x44, 0x44, 0x3B, 0x3A, 0x44, 0x1, 0xC9, 0x44, 0x3A, 0x3B, 0x44, 0x44, 0x3B, 0x3A, 0x44, 0x5, 0x56, 0x32, 0x45, 0x45, 0x32, 0x31, 0x44, 0x44, 0x30, 0x32, 0x45, 0x45, 0x32, 0x31, 0x44, 0x44, 0x0, 0x3, 0x0, 0x57, 0xFF, 0xEB, 0x5, 0xE3, 0x5, 0xC4, 0x0, 0xD, 0x0, 0x1B, 0x0, 0x37, 0x0, 0x0, 0x13, 0x34, 0x12, 0x24, 0x20, 0x4, 0x12, 0x15, 0x14, 0x2, 0x4, 0x20, 0x24, 0x2, 0x37, 0x14, 0x12, 0x4, 0x20, 0x24, 0x12, 0x35, 0x34, 0x2, 0x24, 0x20, 0x4, 0x2, 0x1, 0x33, 0x14, 0x6, 0x23, 0x22, 0x26, 0x35, 0x35, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x23, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x15, 0x14, 0x16, 0x33, 0x32, 0x36, 0x57, 0xC0, 0x1, 0x42, 0x1, 0x88, 0x1, 0x42, 0xC0, 0xC0, 0xFE, 0xBE, 0xFE, 0x78, 0xFE, 0xBE, 0xC0, 0x7A, 0x9F, 0x1, 0xB, 0x1, 0x44, 0x1, 0xB, 0x9E, 0x9E, 0xFE, 0xF5, 0xFE, 0xBC, 0xFE, 0xF5, 0x9F, 0x2, 0xF1, 0x9C, 0xB4, 0x9B, 0xA1, 0xBC, 0xBC, 0xA1, 0x9B, 0xB5, 0x9C, 0x5B, 0x59, 0x60, 0x62, 0x62, 0x60, 0x59, 0x5A, 0x2, 0xD9, 0xD4, 0x1, 0x52, 0xC5, 0xC5, 0xFE, 0xAE, 0xD4, 0xD3, 0xFE, 0xAC, 0xC7, 0xC7, 0x1, 0x54, 0xD3, 0xB0, 0xFE, 0xE4, 0xA5, 0xA5, 0x1, 0x1C, 0xB0, 0xB1, 0x1, 0x19, 0xA4, 0xA4, 0xFE, 0xE7, 0xFE, 0xCA, 0x9D, 0x9D, 0xD7, 0xAC, 0x77, 0xAC, 0xD7, 0x9C, 0x9D, 0x60, 0x52, 0x8D, 0x6E, 0x78, 0x70, 0x8C, 0x52, 0x0, 0x2, 0x0, 0x8E, 0x2, 0xB4, 0x3, 0x12, 0x5, 0xC5, 0x0, 0x9, 0x0, 0x23, 0x0, 0x0, 0x1, 0x32, 0x36, 0x37, 0x35, 0x23, 0x22, 0x6, 0x15, 0x14, 0x5, 0x26, 0x27, 0x6, 0x23, 0x22, 0x26, 0x35, 0x34, 0x25, 0x33, 0x35, 0x34, 0x23, 0x22, 0x15, 0x27, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x11, 0x14, 0x17, 0x1, 0xB2, 0x28, 0x54, 0x1B, 0x65, 0x57, 0x50, 0x1, 0x24, 0xB, 0x6, 0x4D, 0x7C, 0x78, 0x81, 0x1, 0x44, 0x77, 0x74, 0x8A, 0xAD, 0xAA, 0x8D, 0x83, 0xA0, 0x1A, 0x3, 0x44, 0x25, 0x19, 0x88, 0x42, 0x2C, 0x58, 0x82, 0x20, 0x24, 0x52, 0x7D, 0x67, 0xE1, 0x6, 0x33, 0x7F, 0x63, 0xE, 0x65, 0x84, 0x8B, 0x89, 0xFE, 0xC6, 0x66, 0x4F, 0xFF, 0xFF, 0x0, 0x56, 0x0, 0x8B, 0x3, 0x86, 0x3, 0xAA, 0x0, 0x26, 0x4, 0x79, 0xEA, 0x0, 0x0, 0x7, 0x4, 0x79, 0x1, 0x52, 0x0, 0x0, 0x0, 0x1, 0x0, 0x7F, 0x1, 0x76, 0x3, 0xC2, 0x3, 0x25, 0x0, 0x5, 0x0, 0x0, 0x1, 0x23, 0x11, 0x21, 0x35, 0x21, 0x3, 0xC2, 0xC8, 0xFD, 0x85, 0x3, 0x43, 0x1, 0x76, 0x1, 0x4, 0xAB, 0x0, 0x4, 0x0, 0x57, 0xFF, 0xEB, 0x5, 0xE3, 0x5, 0xC4, 0x0, 0xD, 0x0, 0x1B, 0x0, 0x24, 0x0, 0x3A, 0x0, 0x0, 0x13, 0x34, 0x12, 0x24, 0x20, 0x4, 0x12, 0x15, 0x14, 0x2, 0x4, 0x20, 0x24, 0x2, 0x37, 0x14, 0x12, 0x4, 0x20, 0x24, 0x12, 0x35, 0x34, 0x2, 0x24, 0x20, 0x4, 0x2, 0x25, 0x15, 0x33, 0x36, 0x36, 0x35, 0x34, 0x26, 0x23, 0x3, 0x11, 0x23, 0x11, 0x21, 0x32, 0x16, 0x15, 0x14, 0x7, 0x16, 0x16, 0x14, 0x16, 0x17, 0x15, 0x23, 0x26, 0x26, 0x34, 0x26, 0x23, 0x57, 0xC0, 0x1, 0x42, 0x1, 0x88, 0x1, 0x42, 0xC0, 0xC0, 0xFE, 0xBE, 0xFE, 0x78, 0xFE, 0xBE, 0xC0, 0x7A, 0x9F, 0x1, 0xB, 0x1, 0x44, 0x1, 0xB, 0x9E, 0x9E, 0xFE, 0xF5, 0xFE, 0xBC, 0xFE, 0xF5, 0x9F, 0x1, 0xBC, 0x90, 0x40, 0x61, 0x4D, 0x62, 0x82, 0x97, 0x1, 0x19, 0x95, 0xB0, 0x77, 0x40, 0x34, 0x7, 0xA, 0x9B, 0xA, 0x3, 0x48, 0x47, 0x2, 0xD9, 0xD4, 0x1, 0x52, 0xC5, 0xC5, 0xFE, 0xAE, 0xD4, 0xD3, 0xFE, 0xAC, 0xC7, 0xC7, 0x1, 0x54, 0xD3, 0xB0, 0xFE, 0xE4, 0xA5, 0xA5, 0x1, 0x1C, 0xB0, 0xB1, 0x1, 0x19, 0xA4, 0xA4, 0xFE, 0xE7, 0x7F, 0xF6, 0x1, 0x3A, 0x39, 0x49, 0x39, 0xFE, 0x84, 0xFE, 0xAF, 0x3, 0x52, 0x82, 0x81, 0x75, 0x40, 0x1D, 0x6E, 0xA3, 0x45, 0x17, 0x10, 0x1A, 0x60, 0x92, 0x45, 0x0, 0x1, 0x0, 0x9C, 0x5, 0xC, 0x3, 0x4A, 0x5, 0xAA, 0x0, 0x3, 0x0, 0x0, 0x1, 0x15, 0x21, 0x35, 0x3, 0x4A, 0xFD, 0x52, 0x5, 0xAA, 0x9E, 0x9E, 0x0, 0x2, 0x0, 0x7F, 0x3, 0xAF, 0x2, 0x8C, 0x5, 0xC5, 0x0, 0x9, 0x0, 0x13, 0x0, 0x0, 0x12, 0x36, 0x33, 0x32, 0x16, 0x14, 0x6, 0x23, 0x22, 0x26, 0x37, 0x14, 0x16, 0x32, 0x36, 0x35, 0x34, 0x26, 0x22, 0x6, 0x7F, 0x9C, 0x6D, 0x6B, 0x99, 0x99, 0x6B, 0x6D, 0x9C, 0x8B, 0x4B, 0x66, 0x46, 0x46, 0x66, 0x4B, 0x5, 0x26, 0x9F, 0x9F, 0xDC, 0x9B, 0x9B, 0x6E, 0x35, 0x47, 0x47, 0x35, 0x37, 0x49, 0x49, 0x0, 0x2, 0x0, 0x5F, 0x0, 0x1, 0x3, 0xF3, 0x4, 0xFC, 0x0, 0xB, 0x0, 0xF, 0x0, 0x0, 0x1, 0x21, 0x11, 0x23, 0x11, 0x21, 0x35, 0x21, 0x11, 0x33, 0x11, 0x21, 0x3, 0x15, 0x21, 0x35, 0x3, 0xF3, 0xFE, 0xA9, 0xD7, 0xFE, 0x9A, 0x1, 0x66, 0xD7, 0x1, 0x57, 0x25, 0xFC, 0xB0, 0x2, 0xBC, 0xFE, 0x7C, 0x1, 0x84, 0xC7, 0x1, 0x79, 0xFE, 0x87, 0xFD, 0x42, 0xC4, 0xC4, 0x0, 0x1, 0x0, 0x3C, 0x2, 0x9B, 0x2, 0xB2, 0x5, 0xBB, 0x0, 0x15, 0x0, 0x0, 0x1, 0x15, 0x21, 0x35, 0x1, 0x36, 0x35, 0x34, 0x23, 0x22, 0x6, 0x15, 0x23, 0x34, 0x36, 0x20, 0x16, 0x15, 0x14, 0x6, 0x7, 0x7, 0x2, 0xB2, 0xFD, 0x9C, 0x1, 0x2C, 0x63, 0x6A, 0x40, 0x3C, 0xBB, 0xA2, 0x1, 0x1C, 0x9E, 0x67, 0x61, 0x91, 0x3, 0x30, 0x95, 0x7E, 0x1, 0x13, 0x5C, 0x3F, 0x5F, 0x45, 0x32, 0x6E, 0x9E, 0x81, 0x72, 0x52, 0x80, 0x51, 0x75, 0x0, 0x1, 0x0, 0x37, 0x2, 0x90, 0x2, 0xA9, 0x5, 0xBB, 0x0, 0x24, 0x0, 0x0, 0x1, 0x22, 0x26, 0x35, 0x33, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x34, 0x27, 0x23, 0x35, 0x33, 0x36, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x23, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x7, 0x16, 0x15, 0x14, 0x6, 0x1, 0x69, 0x70, 0xC2, 0xBB, 0x45, 0x3B, 0x3F, 0x3E, 0x86, 0x5C, 0x5C, 0x78, 0x36, 0x3E, 0x2F, 0x41, 0xBA, 0xAD, 0x79, 0x89, 0xAA, 0x87, 0x94, 0xB7, 0x2, 0x90, 0x70, 0x80, 0x25, 0x36, 0x38, 0x2A, 0x64, 0x2, 0x80, 0x2, 0x5F, 0x23, 0x35, 0x27, 0x23, 0x6B, 0x74, 0x73, 0x6E, 0x77, 0x33, 0x29, 0x8F, 0x6F, 0x79, 0x0, 0x1, 0x0, 0x71, 0x4, 0xD2, 0x2, 0x49, 0x6, 0x0, 0x0, 0x3, 0x0, 0x0, 0x13, 0x13, 0x21, 0x1, 0x71, 0xC3, 0x1, 0x15, 0xFE, 0xEB, 0x4, 0xD2, 0x1, 0x2E, 0xFE, 0xD2, 0x0, 0x1, 0x0, 0x93, 0xFE, 0x60, 0x4, 0x1F, 0x4, 0x3A, 0x0, 0x12, 0x0, 0x0, 0x5, 0x22, 0x27, 0x11, 0x23, 0x11, 0x33, 0x11, 0x16, 0x16, 0x33, 0x32, 0x37, 0x11, 0x33, 0x11, 0x23, 0x27, 0x6, 0x2, 0x4A, 0x79, 0x4C, 0xF2, 0xF2, 0x1, 0x6F, 0x54, 0xA8, 0x3C, 0xF2, 0xDE, 0x7, 0x5A, 0x15, 0x38, 0xFE, 0x3D, 0x5, 0xDA, 0xFD, 0x8D, 0xAE, 0x6A, 0x7A, 0x3, 0x11, 0xFB, 0xC6, 0x57, 0x6C, 0x0, 0x1, 0x0, 0x46, 0x0, 0x0, 0x3, 0x56, 0x5, 0xB0, 0x0, 0x9, 0x0, 0x0, 0x21, 0x23, 0x11, 0x23, 0x26, 0x2, 0x10, 0x12, 0x33, 0x21, 0x3, 0x56, 0xD1, 0x5A, 0xEA, 0xFB, 0xFE, 0xEE, 0x1, 0x24, 0x2, 0x8, 0x2, 0x1, 0x9, 0x1, 0x92, 0x1, 0xB, 0x0, 0x1, 0x0, 0x8E, 0x2, 0x46, 0x1, 0xAA, 0x3, 0x52, 0x0, 0x9, 0x0, 0x0, 0x13, 0x34, 0x36, 0x32, 0x16, 0x15, 0x14, 0x6, 0x22, 0x26, 0x8E, 0x4B, 0x86, 0x4B, 0x4B, 0x86, 0x4B, 0x2, 0xCB, 0x39, 0x4E, 0x4E, 0x39, 0x38, 0x4D, 0x4D, 0x0, 0x1, 0x0, 0x6E, 0xFE, 0x40, 0x1, 0xC9, 0x0, 0x4, 0x0, 0xE, 0x0, 0x0, 0x37, 0x33, 0x7, 0x16, 0x16, 0x15, 0x14, 0x6, 0x23, 0x27, 0x32, 0x35, 0x34, 0x26, 0x27, 0x8D, 0xB2, 0xC, 0x38, 0x5E, 0xA5, 0xA1, 0x7, 0x88, 0x46, 0x50, 0x4, 0x37, 0xA, 0x4D, 0x56, 0x65, 0x7B, 0x8A, 0x59, 0x2D, 0x22, 0x6, 0x0, 0x1, 0x0, 0x81, 0x2, 0x9B, 0x2, 0x3, 0x5, 0xAF, 0x0, 0x6, 0x0, 0x0, 0x1, 0x11, 0x23, 0x11, 0x7, 0x35, 0x25, 0x2, 0x3, 0xBA, 0xC8, 0x1, 0x6F, 0x5, 0xAF, 0xFC, 0xEC, 0x2, 0x3B, 0x31, 0x93, 0x77, 0x0, 0x2, 0x0, 0x77, 0x2, 0xB3, 0x3, 0x2C, 0x5, 0xC5, 0x0, 0xC, 0x0, 0x1A, 0x0, 0x0, 0x13, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x15, 0x14, 0x6, 0x20, 0x26, 0x35, 0x33, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x77, 0xBB, 0x9F, 0xA1, 0xBA, 0xB9, 0xFE, 0xC0, 0xBC, 0xAF, 0x55, 0x58, 0x56, 0x54, 0x55, 0x57, 0x56, 0x55, 0x4, 0x62, 0x9B, 0xC8, 0xC8, 0x9B, 0x4D, 0x9B, 0xC7, 0xC7, 0x9B, 0x59, 0x77, 0x77, 0x59, 0x4D, 0x58, 0x77, 0x77, 0x58, 0xFF, 0xFF, 0x0, 0x5E, 0x0, 0x8A, 0x3, 0x9A, 0x3, 0xA9, 0x0, 0x26, 0x4, 0x7A, 0x9, 0x0, 0x0, 0x7, 0x4, 0x7A, 0x1, 0x7E, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x59, 0x0, 0x0, 0x5, 0x84, 0x5, 0xAC, 0x0, 0x27, 0x7, 0x42, 0xFF, 0xD8, 0x2, 0x98, 0x0, 0x27, 0x4, 0x83, 0x1, 0x1B, 0x0, 0x8, 0x0, 0x7, 0x7, 0x9E, 0x2, 0xC5, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x50, 0x0, 0x0, 0x5, 0xCC, 0x5, 0xAF, 0x0, 0x27, 0x4, 0x83, 0x0, 0xF0, 0x0, 0x8, 0x0, 0x27, 0x7, 0x42, 0xFF, 0xCF, 0x2, 0x9B, 0x0, 0x7, 0x7, 0x41, 0x3, 0x1A, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x67, 0x0, 0x0, 0x5, 0xFD, 0x5, 0xBB, 0x0, 0x27, 0x4, 0x83, 0x1, 0xA8, 0x0, 0x8, 0x0, 0x27, 0x7, 0x9E, 0x3, 0x3E, 0x0, 0x0, 0x0, 0x7, 0x7, 0x9D, 0x0, 0x30, 0x2, 0x9B, 0x0, 0x2, 0x0, 0x43, 0xFE, 0x7E, 0x3, 0xA5, 0x4, 0x4E, 0x0, 0x9, 0x0, 0x21, 0x0, 0x0, 0x1, 0x14, 0x6, 0x22, 0x26, 0x35, 0x34, 0x36, 0x32, 0x16, 0x3, 0x33, 0xE, 0x3, 0x15, 0x14, 0x33, 0x32, 0x36, 0x37, 0x33, 0x6, 0x6, 0x23, 0x22, 0x26, 0x35, 0x34, 0x36, 0x37, 0x36, 0x36, 0x2, 0x8B, 0x49, 0x82, 0x49, 0x49, 0x82, 0x49, 0xF8, 0xE3, 0x1, 0x40, 0xD4, 0x2B, 0xBA, 0x4B, 0x76, 0x1, 0xF3, 0x2, 0xF9, 0xB7, 0xCD, 0xE3, 0x5C, 0x9E, 0x33, 0x22, 0x3, 0xCC, 0x37, 0x4C, 0x4C, 0x37, 0x38, 0x4A, 0x4A, 0xFE, 0x92, 0x87, 0x96, 0xDA, 0x5C, 0x3E, 0xBD, 0x58, 0x60, 0xBC, 0xC6, 0xC9, 0xBA, 0x66, 0xA5, 0x9C, 0x32, 0x72, 0x0, 0x2, 0xFF, 0xF6, 0x0, 0x0, 0x7, 0x57, 0x5, 0xB0, 0x0, 0x2, 0x0, 0x12, 0x0, 0x0, 0x1, 0x3, 0x1, 0x1, 0x3, 0x21, 0x3, 0x21, 0x1, 0x21, 0x15, 0x21, 0x13, 0x21, 0x15, 0x21, 0x13, 0x21, 0x15, 0x3, 0xBF, 0x1B, 0xFE, 0xA0, 0x1, 0x92, 0xE, 0xFE, 0x8, 0xB8, 0xFE, 0xDE, 0x3, 0x43, 0x3, 0xE1, 0xFD, 0x79, 0x11, 0x2, 0x25, 0xFD, 0xE4, 0x13, 0x2, 0x97, 0x2, 0x2B, 0x2, 0x8A, 0xFD, 0x76, 0xFD, 0xD5, 0x1, 0x55, 0xFE, 0xAB, 0x5, 0xB0, 0xC4, 0xFE, 0x67, 0xC4, 0xFE, 0x35, 0xC4, 0x0, 0x1, 0x0, 0x4D, 0x0, 0xD7, 0x3, 0xEC, 0x4, 0x86, 0x0, 0xB, 0x0, 0x0, 0x25, 0x1, 0x1, 0x27, 0x1, 0x1, 0x37, 0x1, 0x1, 0x17, 0x1, 0x1, 0x3, 0x58, 0xFE, 0xC5, 0xFE, 0xC4, 0x94, 0x1, 0x3C, 0xFE, 0xC4, 0x94, 0x1, 0x3C, 0x1, 0x3B, 0x94, 0xFE, 0xC4, 0x1, 0x3C, 0xD7, 0x1, 0x42, 0xFE, 0xBE, 0x95, 0x1, 0x43, 0x1, 0x42, 0x95, 0xFE, 0xBE, 0x1, 0x42, 0x95, 0xFE, 0xBE, 0xFE, 0xBD, 0x0, 0x3, 0x0, 0x6A, 0xFF, 0xA1, 0x5, 0x22, 0x5, 0xEE, 0x0, 0x8, 0x0, 0x11, 0x0, 0x28, 0x0, 0x0, 0x1, 0x14, 0x17, 0x1, 0x26, 0x23, 0x22, 0x2, 0x15, 0x1, 0x32, 0x12, 0x35, 0x35, 0x34, 0x27, 0x1, 0x16, 0x17, 0x22, 0x27, 0x7, 0x23, 0x37, 0x26, 0x2, 0x35, 0x35, 0x10, 0x0, 0x21, 0x32, 0x17, 0x37, 0x33, 0x7, 0x16, 0x11, 0x15, 0x10, 0x0, 0x1, 0x67, 0x47, 0x1, 0xF6, 0x56, 0x88, 0xA3, 0xBC, 0x1, 0x61, 0xA7, 0xB6, 0x2C, 0xFE, 0x18, 0x4D, 0x6A, 0xA6, 0x83, 0x5B, 0xA8, 0x90, 0x5B, 0x67, 0x1, 0x51, 0x1, 0xB, 0xC3, 0x90, 0x57, 0xA7, 0x93, 0x9E, 0xFE, 0xB5, 0x2, 0xB3, 0xCF, 0x80, 0x3, 0x3A, 0x55, 0xFF, 0x0, 0xF5, 0xFD, 0xBE, 0x1, 0x2, 0xF5, 0x4B, 0xA6, 0x73, 0xFC, 0xDB, 0x36, 0xD0, 0x4B, 0x96, 0xEE, 0x5C, 0x1, 0x15, 0xB3, 0x49, 0x1, 0x4C, 0x1, 0x7C, 0x65, 0x8F, 0xF2, 0xC0, 0xFE, 0xC0, 0x49, 0xFE, 0xB4, 0xFE, 0x85, 0x0, 0x2, 0x0, 0x95, 0x0, 0x0, 0x4, 0x7F, 0x5, 0xB0, 0x0, 0x8, 0x0, 0x15, 0x0, 0x0, 0x1, 0x11, 0x33, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x3, 0x11, 0x23, 0x11, 0x33, 0x11, 0x33, 0x16, 0x4, 0x15, 0x14, 0x4, 0x23, 0x1, 0x88, 0xF5, 0x91, 0x7E, 0x7E, 0x91, 0xF5, 0xF3, 0xF3, 0xFD, 0xF5, 0x1, 0x5, 0xFE, 0xF7, 0xF9, 0x3, 0xD6, 0xFE, 0x19, 0x95, 0x5C, 0x5F, 0x97, 0xFD, 0x56, 0xFE, 0xD4, 0x5, 0xB0, 0xFE, 0xE9, 0x2, 0xF8, 0xBD, 0xBE, 0xF8, 0x0, 0x1, 0x0, 0x88, 0xFF, 0xEC, 0x4, 0x9C, 0x6, 0x16, 0x0, 0x2C, 0x0, 0x0, 0x21, 0x23, 0x11, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x6, 0x6, 0x15, 0x14, 0x1E, 0x2, 0x15, 0x14, 0x6, 0x23, 0x22, 0x26, 0x27, 0x37, 0x16, 0x16, 0x33, 0x32, 0x36, 0x35, 0x34, 0x2E, 0x2, 0x35, 0x34, 0x36, 0x36, 0x35, 0x34, 0x26, 0x23, 0x22, 0x7, 0x1, 0x7A, 0xF2, 0xEF, 0xC5, 0xAB, 0xE7, 0x3B, 0x3C, 0x62, 0x82, 0x61, 0xDF, 0xC0, 0x50, 0xAA, 0x27, 0x31, 0x20, 0x7C, 0x46, 0x62, 0x58, 0x62, 0x80, 0x62, 0x3F, 0x3F, 0x61, 0x4B, 0xB9, 0x4, 0x4, 0x52, 0xE0, 0xE4, 0xAF, 0xB5, 0x66, 0x71, 0x5A, 0x48, 0x3C, 0x61, 0x68, 0x85, 0x5F, 0xAF, 0xB5, 0x26, 0x1A, 0xC3, 0x13, 0x2D, 0x56, 0x43, 0x42, 0x61, 0x62, 0x83, 0x64, 0x53, 0x6A, 0x65, 0x4C, 0x56, 0x5B, 0xF9, 0x0, 0x3, 0x0, 0x48, 0xFF, 0xEB, 0x6, 0x85, 0x4, 0x4F, 0x0, 0x7, 0x0, 0x12, 0x0, 0x3C, 0x0, 0x0, 0x1, 0x22, 0x6, 0x7, 0x21, 0x35, 0x34, 0x26, 0x1, 0x32, 0x36, 0x37, 0x35, 0x23, 0x22, 0x6, 0x15, 0x14, 0x16, 0x5, 0x6, 0x6, 0x23, 0x22, 0x27, 0x6, 0x6, 0x23, 0x22, 0x26, 0x35, 0x34, 0x36, 0x33, 0x33, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x27, 0x34, 0x36, 0x33, 0x32, 0x17, 0x36, 0x17, 0x32, 0x12, 0x15, 0x15, 0x21, 0x16, 0x16, 0x33, 0x32, 0x36, 0x37, 0x4, 0xC3, 0x6B, 0x78, 0xF, 0x1, 0xC3, 0x60, 0xFC, 0xBC, 0x3F, 0x84, 0x2B, 0xBC, 0x72, 0x75, 0x58, 0x4, 0xDB, 0x28, 0xC7, 0x98, 0xFC, 0x8D, 0x35, 0xCD, 0x9C, 0xB6, 0xC2, 0xF0, 0xE8, 0xBE, 0x5E, 0x58, 0x5F, 0x70, 0xF2, 0xF8, 0xCA, 0xE2, 0x6D, 0x82, 0xC9, 0xD8, 0xEA, 0xFD, 0x48, 0x9, 0x8D, 0x92, 0x71, 0x8B, 0x35, 0x3, 0x8B, 0x95, 0x73, 0x1D, 0x63, 0x88, 0xFD, 0x1A, 0x3D, 0x28, 0xD2, 0x66, 0x42, 0x3D, 0x52, 0x41, 0x1F, 0x5A, 0xA2, 0x3E, 0x64, 0xB6, 0x97, 0x9E, 0xAD, 0x46, 0x5A, 0x68, 0x5C, 0x3F, 0x13, 0x90, 0xBB, 0x84, 0x85, 0x1, 0xFE, 0xF8, 0xE2, 0x8D, 0x7E, 0xAB, 0x3D, 0x1F, 0x0, 0x2, 0x0, 0x68, 0xFF, 0xEC, 0x4, 0x41, 0x6, 0x2C, 0x0, 0x1B, 0x0, 0x29, 0x0, 0x0, 0x5, 0x22, 0x0, 0x35, 0x34, 0x12, 0x33, 0x32, 0x17, 0x26, 0x27, 0x7, 0x27, 0x37, 0x26, 0x27, 0x37, 0x16, 0x17, 0x37, 0x17, 0x7, 0x16, 0x12, 0x15, 0x15, 0x10, 0x0, 0x27, 0x32, 0x36, 0x35, 0x35, 0x27, 0x26, 0x26, 0x23, 0x22, 0x6, 0x15, 0x14, 0x16, 0x2, 0x51, 0xD9, 0xFE, 0xF0, 0xF9, 0xCA, 0x93, 0x70, 0x34, 0x7B, 0xCD, 0x4E, 0xAD, 0x7D, 0xA4, 0x4B, 0xEE, 0xB2, 0xB4, 0x4D, 0x99, 0x77, 0x87, 0xFE, 0xE7, 0xD3, 0x77, 0x82, 0x1, 0x1B, 0x75, 0x5A, 0x7F, 0x8A, 0x83, 0x14, 0x1, 0x1C, 0xCC, 0xE4, 0x1, 0x15, 0x5A, 0xAC, 0x77, 0x88, 0x6D, 0x73, 0x52, 0x29, 0xC3, 0x31, 0x87, 0x77, 0x6D, 0x66, 0x7B, 0xFE, 0xB0, 0xCB, 0x57, 0xFF, 0x0, 0xFE, 0xC1, 0xC3, 0xD1, 0x9D, 0x67, 0x24, 0x2A, 0x3F, 0xAA, 0x93, 0x70, 0xB5, 0x0, 0x3, 0x0, 0x44, 0x0, 0x93, 0x4, 0x38, 0x4, 0xCD, 0x0, 0x9, 0x0, 0xD, 0x0, 0x17, 0x0, 0x0, 0x1, 0x34, 0x36, 0x32, 0x16, 0x15, 0x14, 0x6, 0x22, 0x26, 0x5, 0x15, 0x21, 0x35, 0x1, 0x34, 0x36, 0x32, 0x16, 0x15, 0x14, 0x6, 0x22, 0x26, 0x1, 0xB3, 0x4B, 0x86, 0x4B, 0x4B, 0x86, 0x4B, 0x2, 0x85, 0xFC, 0xC, 0x1, 0x6F, 0x4B, 0x86, 0x4B, 0x4B, 0x86, 0x4B, 0x4, 0x47, 0x3A, 0x4C, 0x4C, 0x3A, 0x38, 0x4B, 0x4B, 0xF4, 0xD4, 0xD4, 0xFD, 0xFC, 0x39, 0x4C, 0x4C, 0x39, 0x38, 0x4C, 0x4C, 0x0, 0x3, 0x0, 0x50, 0xFF, 0x76, 0x4, 0x3E, 0x4, 0xBC, 0x0, 0x8, 0x0, 0x11, 0x0, 0x27, 0x0, 0x0, 0x1, 0x14, 0x17, 0x1, 0x26, 0x23, 0x22, 0x6, 0x15, 0x1, 0x32, 0x36, 0x35, 0x35, 0x34, 0x27, 0x1, 0x16, 0x17, 0x22, 0x27, 0x7, 0x23, 0x37, 0x26, 0x3, 0x35, 0x34, 0x0, 0x33, 0x32, 0x17, 0x37, 0x33, 0x7, 0x16, 0x13, 0x15, 0x14, 0x0, 0x1, 0x42, 0x41, 0x1, 0x2B, 0x2E, 0x3A, 0x87, 0x7D, 0x1, 0x6, 0x86, 0x7D, 0x3A, 0xFE, 0xD9, 0x2B, 0x33, 0x63, 0x54, 0x49, 0x90, 0x66, 0xCB, 0x3, 0x1, 0xA, 0xEC, 0x69, 0x59, 0x47, 0x90, 0x66, 0xC1, 0x4, 0xFE, 0xF7, 0x2, 0x12, 0xA0, 0x5E, 0x2, 0x61, 0x16, 0xD5, 0x8F, 0xFE, 0x88, 0xD2, 0x91, 0x15, 0x94, 0x5E, 0xFD, 0xA7, 0x11, 0xC3, 0x1E, 0x94, 0xD0, 0x94, 0x1, 0x2F, 0x1E, 0xEC, 0x1, 0x3B, 0x22, 0x90, 0xCF, 0x95, 0xFE, 0xDB, 0x21, 0xEB, 0xFE, 0xC5, 0x0, 0x2, 0x0, 0x83, 0xFE, 0x60, 0x4, 0x37, 0x6, 0x0, 0x0, 0xB, 0x0, 0x1B, 0x0, 0x0, 0x25, 0x32, 0x36, 0x35, 0x35, 0x34, 0x26, 0x23, 0x22, 0x7, 0x11, 0x16, 0x17, 0x22, 0x27, 0x11, 0x23, 0x11, 0x33, 0x11, 0x36, 0x33, 0x32, 0x12, 0x15, 0x15, 0x14, 0x2, 0x2, 0x4E, 0x83, 0x73, 0x75, 0x83, 0x95, 0x41, 0x43, 0xD9, 0xB0, 0x6C, 0xF3, 0xF3, 0x6B, 0xAF, 0xCE, 0xD9, 0xDA, 0xAF, 0xD3, 0x90, 0x15, 0x92, 0xCF, 0x7B, 0xFE, 0x1F, 0x7D, 0xC3, 0x74, 0xFE, 0x0, 0x7, 0xA0, 0xFD, 0xD8, 0x76, 0xFE, 0xD0, 0xF8, 0x14, 0xEC, 0xFE, 0xC6, 0x0, 0x2, 0x0, 0x50, 0xFF, 0xEC, 0x4, 0xB3, 0x6, 0x0, 0x0, 0xB, 0x0, 0x23, 0x0, 0x0, 0x25, 0x32, 0x37, 0x11, 0x26, 0x23, 0x22, 0x6, 0x15, 0x15, 0x14, 0x16, 0x5, 0x27, 0x6, 0x23, 0x22, 0x2, 0x35, 0x35, 0x34, 0x12, 0x33, 0x32, 0x17, 0x35, 0x23, 0x35, 0x33, 0x35, 0x33, 0x15, 0x33, 0x15, 0x23, 0x11, 0x2, 0x37, 0x95, 0x45, 0x44, 0x94, 0x84, 0x73, 0x72, 0x1, 0x73, 0xB, 0x6C, 0xB7, 0xC3, 0xE6, 0xE5, 0xC6, 0xAC, 0x6A, 0xFC, 0xFC, 0xF3, 0xAF, 0xAF, 0xB3, 0x86, 0x1, 0xCD, 0x82, 0xD0, 0x92, 0x15, 0x91, 0xCD, 0xB3, 0x70, 0x84, 0x1, 0x39, 0xEC, 0x15, 0xF7, 0x1, 0x31, 0x77, 0xF1, 0xAB, 0x8D, 0x8D, 0xAB, 0xFB, 0x38, 0x0, 0x2, 0x0, 0x20, 0x0, 0x0, 0x5, 0x9E, 0x5, 0xB0, 0x0, 0x3, 0x0, 0x17, 0x0, 0x0, 0x1, 0x35, 0x21, 0x15, 0x1, 0x11, 0x21, 0x11, 0x23, 0x11, 0x23, 0x35, 0x33, 0x11, 0x33, 0x11, 0x21, 0x11, 0x33, 0x11, 0x33, 0x15, 0x23, 0x11, 0x4, 0x23, 0xFD, 0x75, 0x2, 0x8B, 0xFD, 0x75, 0xFD, 0x7B, 0x7B, 0xFD, 0x2, 0x8B, 0xFC, 0x7F, 0x7F, 0x3, 0x52, 0xBB, 0xBB, 0xFC, 0xAE, 0x2, 0x88, 0xFD, 0x78, 0x4, 0xD, 0xA1, 0x1, 0x2, 0xFE, 0xFE, 0x1, 0x2, 0xFE, 0xFE, 0xA1, 0xFB, 0xF3, 0x0, 0x1, 0x0, 0x90, 0x0, 0x0, 0x1, 0x83, 0x4, 0x3A, 0x0, 0x3, 0x0, 0x0, 0x1, 0x11, 0x23, 0x11, 0x1, 0x83, 0xF3, 0x4, 0x3A, 0xFB, 0xC6, 0x4, 0x3A, 0x0, 0x1, 0x0, 0x8E, 0x0, 0x0, 0x4, 0x6B, 0x4, 0x3A, 0x0, 0xC, 0x0, 0x0, 0x21, 0x1, 0x23, 0x11, 0x23, 0x11, 0x33, 0x11, 0x33, 0x1, 0x21, 0x1, 0x1, 0x3, 0x36, 0xFE, 0xB8, 0x6D, 0xF3, 0xF3, 0x54, 0x1, 0x50, 0x1, 0x2D, 0xFE, 0x61, 0x1, 0xB8, 0x1, 0xAD, 0xFE, 0x53, 0x4, 0x3A, 0xFE, 0x51, 0x1, 0xAF, 0xFD, 0xF4, 0xFD, 0xD2, 0x0, 0x1, 0x0, 0x22, 0x0, 0x0, 0x4, 0x36, 0x5, 0xB0, 0x0, 0xD, 0x0, 0x0, 0x33, 0x11, 0x7, 0x35, 0x37, 0x11, 0x33, 0x11, 0x37, 0x15, 0x7, 0x11, 0x21, 0x15, 0xA5, 0x83, 0x83, 0xFC, 0xEB, 0xEB, 0x2, 0x95, 0x2, 0x89, 0x28, 0x93, 0x28, 0x2, 0x94, 0xFD, 0xB8, 0x47, 0x93, 0x47, 0xFD, 0xF5, 0xCA, 0x0, 0x1, 0x0, 0x22, 0x0, 0x0, 0x2, 0x2F, 0x6, 0x0, 0x0, 0xB, 0x0, 0x0, 0x21, 0x23, 0x11, 0x7, 0x35, 0x37, 0x11, 0x33, 0x11, 0x37, 0x15, 0x7, 0x1, 0x9B, 0xF3, 0x86, 0x86, 0xF3, 0x94, 0x94, 0x2, 0x92, 0x30, 0x92, 0x30, 0x2, 0xDC, 0xFD, 0x7A, 0x35, 0x92, 0x35, 0x0, 0x1, 0x0, 0x90, 0xFE, 0x4B, 0x5, 0x9, 0x5, 0xB0, 0x0, 0x13, 0x0, 0x0, 0x1, 0x22, 0x27, 0x37, 0x16, 0x33, 0x32, 0x37, 0x35, 0x1, 0x11, 0x23, 0x11, 0x33, 0x1, 0x11, 0x33, 0x11, 0x14, 0x6, 0x3, 0xA2, 0x46, 0x3C, 0xE, 0x2A, 0x39, 0x78, 0x3, 0xFD, 0x80, 0xFC, 0xFC, 0x2, 0x80, 0xFD, 0xBF, 0xFE, 0x4B, 0x11, 0xC7, 0xD, 0xA9, 0x41, 0x4, 0x17, 0xFB, 0xE9, 0x5, 0xB0, 0xFB, 0xEC, 0x4, 0x14, 0xFA, 0x17, 0xB9, 0xC3, 0x0, 0x1, 0x0, 0x7F, 0xFE, 0x4B, 0x4, 0x6, 0x4, 0x4E, 0x0, 0x1A, 0x0, 0x0, 0x1, 0x22, 0x27, 0x37, 0x16, 0x33, 0x32, 0x37, 0x11, 0x34, 0x26, 0x23, 0x22, 0x7, 0x11, 0x23, 0x11, 0x33, 0x17, 0x36, 0x33, 0x32, 0x16, 0x17, 0x11, 0x14, 0x6, 0x2, 0xA6, 0x45, 0x3A, 0xE, 0x26, 0x3D, 0x7A, 0x1, 0x65, 0x60, 0x93, 0x4A, 0xF2, 0xDE, 0xD, 0x71, 0xC6, 0xA1, 0xC3, 0x1, 0xBB, 0xFE, 0x4B, 0x11, 0xC5, 0xC, 0xA9, 0x2, 0xE2, 0x83, 0x65, 0x68, 0xFC, 0xE0, 0x4, 0x3A, 0x96, 0xAA, 0xC4, 0xE3, 0xFD, 0x1A, 0xB6, 0xC0, 0x0, 0x2, 0x0, 0x65, 0xFF, 0xEB, 0x7, 0x2D, 0x5, 0xC5, 0x0, 0xB, 0x0, 0x21, 0x0, 0x0, 0x25, 0x32, 0x37, 0x11, 0x26, 0x23, 0x22, 0x6, 0x15, 0x11, 0x14, 0x16, 0x5, 0x6, 0x23, 0x20, 0x0, 0x11, 0x11, 0x10, 0x0, 0x21, 0x32, 0x17, 0x21, 0x15, 0x21, 0x11, 0x21, 0x15, 0x21, 0x11, 0x21, 0x15, 0x2, 0xAB, 0x5B, 0x70, 0x70, 0x5D, 0x9C, 0xB6, 0xB8, 0x1, 0xBC, 0xB0, 0x70, 0xFE, 0xFD, 0xFE, 0xBD, 0x1, 0x41, 0x1, 0x3, 0x72, 0xB0, 0x3, 0x5C, 0xFD, 0x4B, 0x2, 0x56, 0xFD, 0xAA, 0x2, 0xBB, 0xAE, 0xE, 0x4, 0x38, 0xE, 0xC9, 0xC7, 0xFE, 0xCE, 0xC7, 0xCB, 0xAE, 0x15, 0x1, 0x4C, 0x1, 0x9, 0x1, 0x30, 0x1, 0x9, 0x1, 0x4C, 0x15, 0xCB, 0xFE, 0x6D, 0xC7, 0xFE, 0x3F, 0xCA, 0x0, 0x3, 0x0, 0x5B, 0xFF, 0xEB, 0x6, 0xF3, 0x4, 0x4F, 0x0, 0xD, 0x0, 0x15, 0x0, 0x37, 0x0, 0x0, 0x1, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x1, 0x22, 0x6, 0x7, 0x21, 0x35, 0x34, 0x26, 0x1, 0x6, 0x6, 0x23, 0x22, 0x26, 0x27, 0x6, 0x6, 0x23, 0x22, 0x0, 0x27, 0x35, 0x34, 0x0, 0x33, 0x32, 0x16, 0x17, 0x36, 0x36, 0x17, 0x32, 0x12, 0x15, 0x15, 0x21, 0x16, 0x16, 0x33, 0x32, 0x36, 0x37, 0x1, 0x4E, 0x76, 0x88, 0x87, 0x76, 0x76, 0x89, 0x87, 0x75, 0x3, 0xE1, 0x5C, 0x74, 0x11, 0x1, 0xB4, 0x63, 0x1, 0x39, 0x35, 0xC6, 0x91, 0x7E, 0xC4, 0x42, 0x3F, 0xC0, 0x7D, 0xEB, 0xFE, 0xFD, 0x3, 0x1, 0x4, 0xEB, 0x7E, 0xC2, 0x3F, 0x40, 0xB9, 0x6D, 0xE2, 0xE2, 0xFD, 0x56, 0xA, 0x87, 0x80, 0x6B, 0x8D, 0x37, 0x2, 0x12, 0x91, 0xD3, 0xD3, 0x91, 0x15, 0x8F, 0xD5, 0xD5, 0x8F, 0x1, 0x64, 0x93, 0x6F, 0x1A, 0x5F, 0x89, 0xFC, 0xE1, 0x2E, 0x53, 0x5D, 0x52, 0x52, 0x5D, 0x1, 0x36, 0xE7, 0x1F, 0xEC, 0x1, 0x3B, 0x5E, 0x52, 0x53, 0x5E, 0x1, 0xFE, 0xF2, 0xD9, 0x90, 0x7C, 0xAD, 0x37, 0x26, 0x0, 0x1, 0x0, 0x8B, 0x0, 0x0, 0x2, 0x96, 0x6, 0x15, 0x0, 0xC, 0x0, 0x0, 0x21, 0x23, 0x11, 0x34, 0x36, 0x33, 0x32, 0x17, 0x7, 0x26, 0x23, 0x22, 0x15, 0x1, 0x7E, 0xF3, 0xC5, 0xAE, 0x3D, 0x5B, 0x19, 0x2A, 0x32, 0xA3, 0x4, 0xA1, 0xB5, 0xBF, 0x15, 0xB9, 0xB, 0xB1, 0xFF, 0xFF, 0x0, 0x1A, 0xFF, 0xEC, 0x4, 0x8B, 0x6, 0x0, 0x0, 0x26, 0x0, 0x47, 0x59, 0x0, 0x0, 0x7, 0x7, 0xA4, 0xFF, 0x8A, 0x2, 0x39, 0x0, 0x3, 0x0, 0x22, 0x0, 0x0, 0x5, 0xA1, 0x5, 0xB0, 0x0, 0x7, 0x0, 0xF, 0x0, 0x2A, 0x0, 0x0, 0x1, 0x11, 0x33, 0x32, 0x36, 0x35, 0x34, 0x27, 0x1, 0x11, 0x21, 0x32, 0x36, 0x35, 0x34, 0x27, 0x1, 0x11, 0x6, 0x6, 0x15, 0x14, 0x17, 0x23, 0x26, 0x35, 0x34, 0x36, 0x33, 0x31, 0x21, 0x32, 0x4, 0x15, 0x14, 0x6, 0x7, 0x16, 0x16, 0x15, 0x14, 0x4, 0x23, 0x2, 0x90, 0xF8, 0x76, 0x85, 0xF2, 0xFE, 0xFF, 0x1, 0x19, 0x7D, 0x7F, 0xE3, 0xFD, 0xD1, 0x5B, 0x48, 0x9, 0xC6, 0x11, 0xBF, 0xB2, 0x1, 0xF2, 0xEE, 0x1, 0xC, 0x6C, 0x67, 0x7D, 0x78, 0xFE, 0xF4, 0xEC, 0x4, 0xE5, 0xFE, 0x67, 0x6B, 0x61, 0xC8, 0x5, 0xFD, 0xAC, 0xFE, 0x39, 0x7C, 0x64, 0xE0, 0x7, 0xFD, 0x6F, 0x4, 0xE5, 0x1, 0x63, 0x4C, 0x25, 0x26, 0x39, 0x49, 0x9E, 0xA6, 0xBE, 0xCC, 0x63, 0xA1, 0x2B, 0x21, 0xBB, 0x72, 0xD0, 0xD9, 0xFF, 0xFF, 0x0, 0x90, 0x0, 0x0, 0x4, 0xC1, 0x5, 0xB0, 0x0, 0x26, 0x2, 0x30, 0xF5, 0x0, 0x0, 0x6, 0x2, 0x7C, 0xFF, 0x0, 0x0, 0x2, 0x0, 0x7D, 0xFF, 0xEC, 0x4, 0x32, 0x6, 0x0, 0x0, 0x11, 0x0, 0x1C, 0x0, 0x0, 0x1, 0x14, 0x2, 0x23, 0x22, 0x27, 0x7, 0x23, 0x11, 0x21, 0x15, 0x21, 0x11, 0x36, 0x33, 0x32, 0x12, 0x15, 0x1, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x22, 0x7, 0x11, 0x16, 0x4, 0x32, 0xD7, 0xCE, 0xBD, 0x6C, 0xB, 0xDC, 0x2, 0xDE, 0xFE, 0x14, 0x6A, 0xB2, 0xD1, 0xD6, 0xFE, 0x1D, 0x87, 0x6A, 0x67, 0x8C, 0x9B, 0x43, 0x44, 0x2, 0x12, 0xEF, 0xFE, 0xC9, 0x8A, 0x76, 0x6, 0x0, 0xAB, 0xFE, 0x7D, 0x7C, 0xFE, 0xCD, 0xF4, 0xFE, 0x8C, 0xCA, 0xAA, 0x8F, 0xD2, 0x8C, 0xFE, 0x44, 0x8D, 0x0, 0x2, 0x0, 0x55, 0x0, 0x0, 0x5, 0x33, 0x5, 0xB0, 0x0, 0xD, 0x0, 0x15, 0x0, 0x0, 0x21, 0x11, 0x27, 0x35, 0x37, 0x33, 0x11, 0x21, 0x16, 0x4, 0x15, 0x14, 0x4, 0x23, 0x25, 0x21, 0x32, 0x36, 0x34, 0x26, 0x23, 0x21, 0x1, 0x2, 0xAD, 0xAD, 0xFD, 0x1, 0x2C, 0xF6, 0x1, 0x12, 0xFE, 0xEC, 0xF8, 0xFE, 0xD8, 0x1, 0x28, 0x8D, 0x82, 0x82, 0x8D, 0xFE, 0xD8, 0x3, 0xC7, 0xBE, 0x6C, 0xBF, 0xFD, 0xD3, 0x1, 0xF3, 0xC9, 0xC8, 0xFE, 0xCA, 0x99, 0xCA, 0x8B, 0x0, 0x2, 0x0, 0x4F, 0xFF, 0xEC, 0x4, 0xB2, 0x6, 0x0, 0x0, 0x12, 0x0, 0x1D, 0x0, 0x0, 0x5, 0x22, 0x27, 0x7, 0x23, 0x11, 0x27, 0x35, 0x37, 0x33, 0x11, 0x36, 0x33, 0x32, 0x12, 0x17, 0x15, 0x14, 0x2, 0x25, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x22, 0x7, 0x11, 0x16, 0x3, 0xC, 0xBC, 0x6C, 0xC, 0xDC, 0xAD, 0xAD, 0xF3, 0x6A, 0xB1, 0xD0, 0xD7, 0x1, 0xD8, 0xFE, 0xF5, 0x86, 0x6A, 0x66, 0x8C, 0x9C, 0x42, 0x43, 0x14, 0x89, 0x75, 0x4, 0x17, 0xBE, 0x6C, 0xBF, 0xFD, 0xD3, 0x7B, 0xFE, 0xD0, 0xF3, 0x19, 0xEF, 0xFE, 0xC9, 0xC7, 0xCA, 0xAA, 0x8F, 0xD2, 0x8B, 0xFE, 0x43, 0x8D, 0x0, 0x1, 0x0, 0x4D, 0xFF, 0xEC, 0x4, 0xD3, 0x5, 0xC4, 0x0, 0x1B, 0x0, 0x0, 0x13, 0x33, 0x16, 0x16, 0x33, 0x32, 0x36, 0x37, 0x35, 0x34, 0x2, 0x23, 0x22, 0x6, 0x7, 0x23, 0x36, 0x0, 0x21, 0x20, 0x0, 0x13, 0x15, 0x10, 0x0, 0x21, 0x20, 0x0, 0x4D, 0xFC, 0x11, 0x86, 0x9D, 0xAB, 0xAC, 0x1, 0x9C, 0xB1, 0xA3, 0x89, 0x12, 0xFC, 0x14, 0x1, 0x1A, 0x1, 0xC, 0x1, 0xA, 0x1, 0x3D, 0x4, 0xFE, 0xBD, 0xFE, 0xED, 0xFE, 0xFA, 0xFE, 0xEC, 0x1, 0xE1, 0x8B, 0x9E, 0xFB, 0xE4, 0x7D, 0xDA, 0x1, 0xA, 0x96, 0x8C, 0xD4, 0x1, 0x1A, 0xFE, 0x92, 0xFE, 0xCD, 0x85, 0xFE, 0xC5, 0xFE, 0x89, 0x1, 0x1B, 0x0, 0x1, 0x0, 0x66, 0xFF, 0xEC, 0x5, 0xEF, 0x6, 0x4, 0x0, 0x25, 0x0, 0x0, 0x1, 0x6, 0x0, 0x21, 0x20, 0x0, 0x11, 0x35, 0x10, 0x0, 0x21, 0x32, 0x17, 0x36, 0x33, 0x32, 0x17, 0x15, 0x26, 0x23, 0x22, 0x6, 0x15, 0x15, 0x23, 0x26, 0x26, 0x23, 0x22, 0x6, 0x7, 0x15, 0x14, 0x12, 0x33, 0x32, 0x36, 0x37, 0x4, 0xEB, 0x13, 0xFE, 0xE5, 0xFE, 0xF4, 0xFE, 0xF3, 0xFE, 0xC2, 0x1, 0x44, 0x1, 0x13, 0xF1, 0x90, 0x4A, 0xE5, 0x44, 0x3E, 0x21, 0x2A, 0x4C, 0x6C, 0xFC, 0x10, 0x87, 0x9C, 0xAB, 0xAC, 0x1, 0x9B, 0xB1, 0xA3, 0x89, 0x12, 0x1, 0xDA, 0xD4, 0xFE, 0xE6, 0x1, 0x76, 0x1, 0x3B, 0x76, 0x1, 0x3A, 0x1, 0x77, 0x81, 0xC1, 0x11, 0xC9, 0x8, 0x40, 0x64, 0xBF, 0x8C, 0x9D, 0xFA, 0xE4, 0x7D, 0xDA, 0xFE, 0xF5, 0x97, 0x8B, 0x0, 0x1, 0x0, 0x50, 0xFF, 0xEC, 0x4, 0xD3, 0x4, 0x99, 0x0, 0x25, 0x0, 0x0, 0x1, 0x6, 0x4, 0x23, 0x22, 0x2, 0x35, 0x35, 0x34, 0x12, 0x33, 0x32, 0x17, 0x36, 0x33, 0x32, 0x17, 0x15, 0x26, 0x23, 0x22, 0x6, 0x15, 0x15, 0x23, 0x26, 0x26, 0x23, 0x22, 0x6, 0x15, 0x15, 0x14, 0x16, 0x33, 0x32, 0x36, 0x37, 0x3, 0xF5, 0x4, 0xFF, 0x0, 0xB5, 0xFA, 0xF2, 0xF3, 0xF9, 0xB2, 0x76, 0x3A, 0xC6, 0x3C, 0x33, 0x1D, 0x23, 0x41, 0x5D, 0xE4, 0x5, 0x70, 0x63, 0x94, 0x63, 0x62, 0x96, 0x58, 0x7A, 0x5, 0x1, 0x66, 0x9D, 0xDD, 0x1, 0x40, 0xDF, 0x24, 0xDE, 0x1, 0x41, 0x60, 0xAB, 0xF, 0xA3, 0x7, 0x3E, 0x56, 0xA3, 0x57, 0x7D, 0xDB, 0x81, 0x24, 0x83, 0xD9, 0x68, 0x4F, 0xFF, 0xFF, 0x0, 0x21, 0x0, 0x0, 0x5, 0x1E, 0x5, 0xB0, 0x0, 0x26, 0x0, 0x29, 0x4C, 0x0, 0x0, 0x6, 0x7, 0xA4, 0x91, 0x0, 0x0, 0x2, 0x0, 0x22, 0x0, 0x0, 0x5, 0xD1, 0x5, 0xB0, 0x0, 0x9, 0x0, 0x1E, 0x0, 0x0, 0x1, 0x11, 0x33, 0x32, 0x12, 0x37, 0x35, 0x34, 0x26, 0x23, 0x1, 0x11, 0x6, 0x6, 0x15, 0x14, 0x17, 0x23, 0x26, 0x35, 0x10, 0x21, 0x31, 0x21, 0x20, 0x0, 0x11, 0x15, 0x10, 0x0, 0x21, 0x2, 0x90, 0xA6, 0xCC, 0xD0, 0x2, 0xCF, 0xC4, 0xFE, 0x53, 0x5C, 0x48, 0x9, 0xC6, 0x11, 0x1, 0x72, 0x1, 0xAD, 0x1, 0x25, 0x1, 0x6B, 0xFE, 0x93, 0xFE, 0xD2, 0x4, 0xE5, 0xFB, 0xE5, 0x1, 0x0, 0xE1, 0x53, 0xEC, 0xFB, 0xFB, 0x1B, 0x4, 0xE5, 0x1, 0x62, 0x4D, 0x25, 0x26, 0x39, 0x49, 0x1, 0x44, 0xFE, 0x87, 0xFE, 0xC5, 0x49, 0xFE, 0xC5, 0xFE, 0x88, 0x0, 0x2, 0x0, 0x4E, 0x0, 0x0, 0x4, 0x7F, 0x5, 0xB0, 0x0, 0xC, 0x0, 0x14, 0x0, 0x0, 0x21, 0x21, 0x26, 0x24, 0x35, 0x34, 0x24, 0x33, 0x21, 0x11, 0x21, 0x35, 0x21, 0x3, 0x11, 0x21, 0x22, 0x6, 0x14, 0x16, 0x33, 0x4, 0x7F, 0xFD, 0xD7, 0xF6, 0xFE, 0xEE, 0x1, 0x14, 0xF8, 0x1, 0x29, 0xFD, 0x60, 0x3, 0x9C, 0xFC, 0xFE, 0xD7, 0x8D, 0x82, 0x82, 0x8D, 0x1, 0xFE, 0xC7, 0xCA, 0xF3, 0x1, 0x62, 0xCB, 0xFB, 0x1A, 0x1, 0xEE, 0x8B, 0xCA, 0x99, 0x0, 0x2, 0x0, 0x50, 0xFF, 0xEC, 0x4, 0x4, 0x6, 0x0, 0x0, 0xB, 0x0, 0x1D, 0x0, 0x0, 0x25, 0x32, 0x37, 0x11, 0x26, 0x23, 0x22, 0x6, 0x15, 0x15, 0x14, 0x16, 0x5, 0x27, 0x6, 0x23, 0x22, 0x2, 0x35, 0x35, 0x34, 0x12, 0x33, 0x32, 0x17, 0x11, 0x21, 0x35, 0x21, 0x11, 0x2, 0x37, 0x95, 0x45, 0x44, 0x94, 0x84, 0x73, 0x72, 0x1, 0x73, 0xB, 0x6C, 0xB7, 0xC3, 0xE6, 0xE5, 0xC6, 0xAC, 0x6A, 0xFE, 0x15, 0x2, 0xDE, 0xB3, 0x86, 0x1, 0xCD, 0x82, 0xD0, 0x92, 0x15, 0x91, 0xCD, 0xB3, 0x70, 0x84, 0x1, 0x39, 0xEC, 0x15, 0xF7, 0x1, 0x31, 0x77, 0x1, 0x7E, 0xAB, 0xFA, 0x0, 0x0, 0x2, 0x0, 0x53, 0xFE, 0x88, 0x4, 0x34, 0x4, 0x4D, 0x0, 0x15, 0x0, 0x25, 0x0, 0x0, 0x1, 0x21, 0x35, 0x21, 0x26, 0x27, 0x26, 0x2, 0x35, 0x35, 0x34, 0x0, 0x20, 0x0, 0x15, 0x15, 0x14, 0x2, 0x7, 0x7, 0x16, 0x17, 0x3, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x15, 0x14, 0x16, 0x17, 0x16, 0x33, 0x32, 0x36, 0x35, 0x3, 0xB0, 0xFD, 0x14, 0x1, 0xAC, 0x31, 0x8A, 0x99, 0xC9, 0x1, 0x3, 0x1, 0xDA, 0x1, 0x4, 0xE9, 0xC4, 0x21, 0xEA, 0x60, 0x6F, 0x75, 0x89, 0x87, 0x76, 0x66, 0x42, 0x1D, 0x2D, 0x8E, 0x7B, 0xFE, 0x88, 0xC1, 0x31, 0x70, 0x82, 0x1, 0x10, 0xA9, 0x15, 0xE3, 0x1, 0x30, 0xFE, 0xD8, 0xDD, 0x15, 0xBE, 0xFE, 0xF3, 0x1B, 0x2, 0xCF, 0x6B, 0x3, 0x29, 0x8A, 0xC6, 0xC6, 0x8A, 0x15, 0x73, 0xA9, 0x2B, 0x8, 0xC8, 0x87, 0x0, 0x1, 0x0, 0x3A, 0x0, 0x0, 0x3, 0xF2, 0x5, 0xB0, 0x0, 0xB, 0x0, 0x0, 0x33, 0x35, 0x21, 0x11, 0x21, 0x35, 0x21, 0x11, 0x21, 0x35, 0x21, 0x11, 0x41, 0x2, 0xB4, 0xFD, 0xAA, 0x2, 0x56, 0xFD, 0x45, 0x3, 0xB8, 0xCB, 0x1, 0x93, 0xC7, 0x1, 0xC1, 0xCA, 0xFA, 0x50, 0x0, 0x2, 0x0, 0x51, 0xFF, 0xEC, 0x5, 0x1E, 0x5, 0xC4, 0x0, 0x16, 0x0, 0x1E, 0x0, 0x0, 0x5, 0x20, 0x0, 0x11, 0x35, 0x21, 0x26, 0x2, 0x23, 0x22, 0x6, 0x7, 0x27, 0x36, 0x36, 0x33, 0x20, 0x0, 0x11, 0x15, 0x14, 0x2, 0x4, 0x27, 0x32, 0x36, 0x37, 0x21, 0x15, 0x14, 0x16, 0x2, 0xB8, 0xFE, 0xD0, 0xFE, 0xC9, 0x3, 0xD1, 0x3, 0xC6, 0xE7, 0x83, 0xB6, 0x39, 0x31, 0x20, 0xE4, 0xA6, 0x1, 0x49, 0x1, 0x5C, 0xA4, 0xFE, 0xEA, 0xAC, 0xA1, 0xB7, 0xF, 0xFD, 0x2F, 0xA0, 0x14, 0x1, 0x6E, 0x1, 0x36, 0x8E, 0xC1, 0x1, 0xF, 0x30, 0x16, 0xC5, 0x13, 0x44, 0xFE, 0x7D, 0xFE, 0xCF, 0x75, 0xCB, 0xFE, 0xCA, 0xAE, 0xD5, 0xEB, 0xAC, 0x1F, 0x9D, 0xDB, 0x0, 0x1, 0x0, 0x57, 0xFF, 0xEB, 0x4, 0x8D, 0x5, 0xC5, 0x0, 0x28, 0x0, 0x0, 0x1, 0x14, 0x6, 0x6, 0x23, 0x22, 0x24, 0x35, 0x34, 0x37, 0x26, 0x26, 0x35, 0x34, 0x24, 0x33, 0x32, 0x4, 0x15, 0x23, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x14, 0x16, 0x33, 0x33, 0x15, 0x23, 0x22, 0x6, 0x15, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x4, 0x8D, 0x9C, 0xF2, 0x80, 0xEE, 0xFE, 0xC6, 0xF9, 0x69, 0x7A, 0x1, 0x23, 0xEF, 0xCE, 0x1, 0x2B, 0xFC, 0x8F, 0x6E, 0x92, 0x83, 0x77, 0x8E, 0xAA, 0xAA, 0x8D, 0x8E, 0xA3, 0x88, 0x7F, 0x93, 0x1, 0x94, 0x95, 0xBC, 0x58, 0xCA, 0xE3, 0xF9, 0x59, 0x2C, 0xA1, 0x6E, 0xCC, 0xD4, 0xDA, 0xBD, 0x5D, 0x6E, 0x7A, 0x5A, 0x62, 0x79, 0xC7, 0x6E, 0x7D, 0x75, 0x6D, 0x80, 0x5E, 0x0, 0x1, 0x0, 0x0, 0xFE, 0x4B, 0x4, 0x84, 0x5, 0xB0, 0x0, 0x12, 0x0, 0x0, 0x13, 0x22, 0x27, 0x37, 0x16, 0x33, 0x32, 0x35, 0x11, 0x21, 0x15, 0x21, 0x11, 0x21, 0x15, 0x21, 0x11, 0x14, 0x6, 0x7F, 0x45, 0x3A, 0xE, 0x32, 0x2D, 0x7B, 0x3, 0x9C, 0xFD, 0x60, 0x2, 0x4A, 0xFD, 0xB6, 0xC0, 0xFE, 0x4B, 0x11, 0xCD, 0xD, 0xA5, 0x5, 0xEF, 0xCB, 0xFE, 0x4E, 0xCA, 0xFD, 0x58, 0xB6, 0xC0, 0x0, 0x1, 0xFF, 0xE4, 0xFE, 0x4B, 0x2, 0xD3, 0x6, 0x15, 0x0, 0x1E, 0x0, 0x0, 0x1, 0x15, 0x23, 0x11, 0x14, 0x6, 0x23, 0x22, 0x27, 0x37, 0x16, 0x33, 0x32, 0x37, 0x11, 0x23, 0x35, 0x33, 0x35, 0x36, 0x37, 0x36, 0x33, 0x32, 0x17, 0x7, 0x26, 0x23, 0x22, 0x7, 0x15, 0x2, 0x84, 0xC8, 0xB8, 0xA1, 0x45, 0x3A, 0xE, 0x21, 0x3E, 0x77, 0x1, 0xA5, 0xA5, 0x2, 0x5B, 0x63, 0xB2, 0x3F, 0x59, 0x18, 0x2B, 0x37, 0x9B, 0x2, 0x4, 0x3A, 0xB3, 0xFC, 0x33, 0xB2, 0xBD, 0x11, 0xBF, 0xD, 0xA9, 0x3, 0xD0, 0xB3, 0x6E, 0xAB, 0x5D, 0x65, 0x15, 0xBC, 0xA, 0xA9, 0x6B, 0x0, 0x1, 0x0, 0x6A, 0xFF, 0xEC, 0x5, 0xF3, 0x6, 0x4, 0x0, 0x29, 0x0, 0x0, 0x25, 0x6, 0x6, 0x23, 0x20, 0x0, 0x11, 0x35, 0x10, 0x0, 0x21, 0x32, 0x17, 0x36, 0x33, 0x32, 0x17, 0x15, 0x26, 0x23, 0x22, 0x6, 0x15, 0x15, 0x23, 0x26, 0x26, 0x23, 0x22, 0x6, 0x7, 0x15, 0x14, 0x12, 0x33, 0x32, 0x36, 0x37, 0x11, 0x21, 0x35, 0x21, 0x4, 0xF0, 0x2E, 0xF5, 0xF5, 0xFE, 0xED, 0xFE, 0xA5, 0x1, 0x3E, 0x1, 0x1A, 0xF6, 0x8F, 0x4A, 0xE0, 0x46, 0x3C, 0x24, 0x26, 0x4C, 0x6C, 0xF9, 0x13, 0x8A, 0x95, 0xB0, 0xAB, 0x2, 0xC8, 0xAF, 0x83, 0x77, 0x1A, 0xFE, 0xD5, 0x2, 0x27, 0xBE, 0x3D, 0x95, 0x1, 0x6E, 0x1, 0x4E, 0x5F, 0x1, 0x4E, 0x1, 0x6F, 0x7A, 0xBA, 0x11, 0xC5, 0x9, 0x45, 0x64, 0x9B, 0x71, 0x95, 0xFE, 0xE8, 0x6B, 0xF0, 0xFE, 0xFE, 0x3C, 0x1C, 0x1, 0x1E, 0xBF, 0x0, 0x2, 0x0, 0x18, 0xFE, 0x4B, 0x5, 0x19, 0x5, 0xB0, 0x0, 0x11, 0x0, 0x18, 0x0, 0x0, 0x1, 0x22, 0x26, 0x35, 0x34, 0x36, 0x37, 0x1, 0x21, 0x1, 0x1, 0x21, 0x1, 0x16, 0x16, 0x15, 0x14, 0x6, 0x26, 0x35, 0x34, 0x27, 0x6, 0x15, 0x14, 0x2, 0x98, 0x88, 0xAE, 0x74, 0x49, 0xFD, 0xF9, 0x1, 0x1D, 0x1, 0x61, 0x1, 0x65, 0x1, 0x1E, 0xFD, 0xF7, 0x47, 0x73, 0xAB, 0x48, 0x3F, 0x3F, 0xFE, 0x4B, 0x81, 0x81, 0x42, 0xF8, 0xAA, 0x4, 0x7F, 0xFC, 0xA2, 0x3, 0x5E, 0xFB, 0x7C, 0xA7, 0xF6, 0x42, 0x81, 0x81, 0xBC, 0x4B, 0x3E, 0x92, 0x93, 0x3D, 0x4B, 0x0, 0x1, 0x0, 0x7A, 0xFF, 0xEC, 0x6, 0x43, 0x6, 0x0, 0x0, 0x1E, 0x0, 0x0, 0x5, 0x22, 0x26, 0x27, 0x11, 0x34, 0x26, 0x23, 0x22, 0x7, 0x11, 0x23, 0x11, 0x33, 0x11, 0x36, 0x33, 0x32, 0x16, 0x15, 0x11, 0x16, 0x16, 0x32, 0x36, 0x35, 0x11, 0x33, 0x11, 0x6, 0x6, 0x4, 0xA5, 0xCA, 0xD3, 0x2, 0x4A, 0x75, 0x93, 0x48, 0xF2, 0xF2, 0x76, 0xB7, 0xD0, 0x90, 0x1, 0x67, 0x88, 0x67, 0xF3, 0x2, 0xD3, 0x14, 0xD1, 0xEE, 0x1, 0x7, 0x5F, 0x77, 0x83, 0xFC, 0xFB, 0x6, 0x0, 0xFD, 0xC3, 0x8B, 0xF2, 0xAA, 0xFE, 0xFA, 0x90, 0x69, 0x6B, 0x94, 0x2, 0x88, 0xFD, 0x71, 0xEE, 0xD1, 0xFF, 0xFF, 0x0, 0x14, 0x0, 0x0, 0x2, 0xB2, 0x5, 0xB0, 0x0, 0x26, 0x0, 0x2E, 0x3F, 0x0, 0x0, 0x6, 0x7, 0xA4, 0x84, 0x0, 0x0, 0x1, 0x0, 0x95, 0x0, 0x0, 0x5, 0x18, 0x5, 0xC4, 0x0, 0x16, 0x0, 0x0, 0x21, 0x1, 0x7, 0x11, 0x23, 0x11, 0x33, 0x11, 0x37, 0x13, 0x36, 0x36, 0x33, 0x32, 0x17, 0x7, 0x26, 0x23, 0x22, 0x6, 0x7, 0x3, 0x1, 0x3, 0xEC, 0xFE, 0x4D, 0xA8, 0xFC, 0xFC, 0x8D, 0xE8, 0x4C, 0x83, 0x6A, 0x6F, 0x68, 0x59, 0x2C, 0x32, 0x20, 0x33, 0x3A, 0xF7, 0x2, 0x3D, 0x2, 0x72, 0xBC, 0xFE, 0x4A, 0x5, 0xB0, 0xFD, 0x45, 0xBD, 0x1, 0x2D, 0x67, 0x7E, 0x45, 0xB1, 0x1B, 0x26, 0x4D, 0xFE, 0xB9, 0xFC, 0xD1, 0x0, 0x1, 0x0, 0x7D, 0x0, 0x0, 0x4, 0x37, 0x6, 0x15, 0x0, 0x16, 0x0, 0x0, 0x21, 0x1, 0x7, 0x11, 0x23, 0x11, 0x34, 0x36, 0x33, 0x32, 0x17, 0x15, 0x26, 0x23, 0x22, 0x6, 0x15, 0x11, 0x37, 0x1, 0x21, 0x1, 0x1, 0x3, 0x1E, 0xFE, 0xBF, 0x6D, 0xF3, 0xBB, 0x9A, 0x4C, 0x2F, 0x1D, 0x23, 0x40, 0x5D, 0x4D, 0x1, 0x2B, 0x1, 0x24, 0xFE, 0x6D, 0x1, 0xBE, 0x1, 0xD2, 0x70, 0xFE, 0x9E, 0x4, 0xD6, 0x9D, 0xA2, 0xF, 0xA3, 0x7, 0x3E, 0x56, 0xFD, 0xB4, 0x60, 0x1, 0x50, 0xFE, 0x3E, 0xFD, 0x88, 0xFF, 0xFF, 0x0, 0x14, 0x0, 0x0, 0x2, 0xB2, 0x6, 0x0, 0x0, 0x26, 0x0, 0x51, 0x5C, 0x0, 0x0, 0x6, 0x7, 0xA4, 0x84, 0x4A, 0x0, 0x1, 0x0, 0x16, 0xFF, 0xEE, 0x4, 0x4A, 0x5, 0xFC, 0x0, 0x1E, 0x0, 0x0, 0x5, 0x22, 0x26, 0x27, 0x3, 0x3, 0x21, 0x1, 0x27, 0x7, 0x35, 0x37, 0x26, 0x23, 0x7, 0x27, 0x36, 0x33, 0x32, 0x16, 0x17, 0x17, 0x37, 0x15, 0x7, 0x1, 0x16, 0x33, 0x37, 0x17, 0x6, 0x3, 0xEC, 0x65, 0x79, 0x2D, 0xCA, 0xF8, 0xFE, 0xF7, 0x1, 0x82, 0x17, 0xBC, 0x79, 0x26, 0x4F, 0x35, 0x3, 0x31, 0x51, 0x6B, 0x77, 0x1F, 0xD, 0xB1, 0x72, 0x1, 0x61, 0x26, 0x3D, 0x23, 0x3, 0x28, 0x12, 0x51, 0x73, 0x2, 0x18, 0xFD, 0x36, 0x4, 0x11, 0x38, 0x43, 0xB6, 0x2B, 0x51, 0x2, 0xB5, 0x11, 0x54, 0x4E, 0x22, 0x3F, 0xB6, 0x29, 0xFC, 0x7D, 0x5E, 0x2, 0xC2, 0x9, 0x0, 0x1, 0x0, 0x99, 0xFF, 0xEC, 0x6, 0xA6, 0x5, 0xB0, 0x0, 0x1E, 0x0, 0x0, 0x21, 0x27, 0x6, 0x23, 0x22, 0x27, 0x6, 0x23, 0x22, 0x26, 0x3, 0x11, 0x33, 0x11, 0x14, 0x16, 0x33, 0x32, 0x37, 0x27, 0x11, 0x33, 0x11, 0x14, 0x16, 0x33, 0x32, 0x37, 0x11, 0x33, 0x11, 0x5, 0xC7, 0xA, 0x6C, 0xC6, 0xE8, 0x4F, 0x6C, 0xEA, 0xA1, 0xC3, 0x1, 0xF3, 0x67, 0x44, 0xBA, 0x39, 0x4, 0xF3, 0x67, 0x44, 0xB6, 0x39, 0xF3, 0x74, 0x88, 0xB9, 0xB9, 0xC1, 0x1, 0x1, 0x4, 0x2, 0xFC, 0x2, 0x94, 0x6B, 0xA7, 0x43, 0x4, 0x13, 0xFC, 0x2, 0x94, 0x6B, 0x9C, 0x4, 0x61, 0xFA, 0x50, 0x0, 0x1, 0x0, 0x0, 0xFE, 0x4B, 0x5, 0x6B, 0x5, 0xB0, 0x0, 0x12, 0x0, 0x0, 0x13, 0x22, 0x27, 0x37, 0x16, 0x33, 0x32, 0x35, 0x11, 0x33, 0x1, 0x11, 0x33, 0x11, 0x23, 0x1, 0x11, 0x14, 0x6, 0x7F, 0x45, 0x3A, 0xE, 0x32, 0x2D, 0x7B, 0xFC, 0x2, 0x8C, 0xFB, 0xFD, 0xFD, 0x76, 0xC0, 0xFE, 0x4B, 0x11, 0xCD, 0xD, 0xA5, 0x5, 0xEF, 0xFB, 0xF4, 0x4, 0xC, 0xFA, 0x50, 0x4, 0x9, 0xFB, 0xB8, 0xB6, 0xC0, 0x0, 0x2, 0x0, 0x58, 0xFF, 0xEC, 0x5, 0xAA, 0x6, 0x2E, 0x0, 0x14, 0x0, 0x22, 0x0, 0x0, 0x5, 0x20, 0x0, 0x11, 0x35, 0x10, 0x0, 0x21, 0x32, 0x17, 0x36, 0x36, 0x35, 0x33, 0x10, 0x7, 0x16, 0x17, 0x15, 0x10, 0x0, 0x13, 0x34, 0x2, 0x23, 0x22, 0x2, 0x15, 0x15, 0x14, 0x12, 0x33, 0x32, 0x12, 0x35, 0x2, 0xB6, 0xFE, 0xF6, 0xFE, 0xAC, 0x1, 0x52, 0x1, 0xA, 0xFF, 0xA2, 0x55, 0x45, 0xBB, 0xF4, 0x59, 0x1, 0xFE, 0xB5, 0x4F, 0xB9, 0xA7, 0xA3, 0xBC, 0xBE, 0xA3, 0xA7, 0xB7, 0x14, 0x1, 0x7B, 0x1, 0x4C, 0x49, 0x1, 0x4C, 0x1, 0x7C, 0xA7, 0xD, 0x8F, 0x75, 0xFE, 0xAF, 0x47, 0xAA, 0xEB, 0x4E, 0xFE, 0xB4, 0xFE, 0x85, 0x3, 0x12, 0xF5, 0x1, 0x0, 0xFF, 0x0, 0xF5, 0x4B, 0xF5, 0xFE, 0xFE, 0x1, 0x2, 0xF5, 0x0, 0x2, 0x0, 0x4F, 0xFF, 0xEC, 0x4, 0xBC, 0x4, 0xA9, 0x0, 0x14, 0x0, 0x22, 0x0, 0x0, 0x5, 0x22, 0x0, 0x27, 0x35, 0x34, 0x0, 0x33, 0x32, 0x17, 0x36, 0x36, 0x35, 0x33, 0x10, 0x7, 0x16, 0x15, 0x15, 0x14, 0x0, 0x1, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x2, 0x47, 0xEB, 0xFE, 0xF7, 0x4, 0x1, 0xA, 0xEC, 0xE3, 0x87, 0x3F, 0x26, 0xA8, 0xC0, 0x41, 0xFE, 0xF7, 0xFE, 0xE, 0x7D, 0x88, 0x87, 0x7D, 0x7D, 0x89, 0x87, 0x7C, 0x14, 0x1, 0x33, 0xE6, 0x22, 0xEC, 0x1, 0x3B, 0x94, 0x16, 0x7D, 0x5C, 0xFE, 0xE5, 0x43, 0x7F, 0xA5, 0x15, 0xEB, 0xFE, 0xC5, 0x2, 0x26, 0x91, 0xD2, 0xD2, 0x91, 0x15, 0x8F, 0xD5, 0xD5, 0x8F, 0x0, 0x2, 0x0, 0x66, 0xFE, 0x60, 0x6, 0x69, 0x5, 0xC4, 0x0, 0x13, 0x0, 0x21, 0x0, 0x0, 0x1, 0x23, 0x11, 0x7, 0x11, 0x6, 0x6, 0x23, 0x20, 0x0, 0x11, 0x35, 0x10, 0x0, 0x21, 0x32, 0x16, 0x17, 0x25, 0x33, 0x1, 0x32, 0x36, 0x37, 0x11, 0x26, 0x26, 0x23, 0x22, 0x6, 0x15, 0x15, 0x14, 0x12, 0x6, 0x69, 0xF2, 0x91, 0x2E, 0xF1, 0xF5, 0xFE, 0xF0, 0xFE, 0xA4, 0x1, 0x5B, 0x1, 0x11, 0xB3, 0xDD, 0x3E, 0x1, 0x10, 0xB9, 0xFC, 0x76, 0x83, 0x77, 0x1B, 0x1E, 0x7A, 0x83, 0xB1, 0xC5, 0xBE, 0xFE, 0x60, 0x6, 0x46, 0x3B, 0xFC, 0x54, 0x3D, 0x96, 0x1, 0x68, 0x1, 0x54, 0x61, 0x1, 0x4C, 0x1, 0x6F, 0x56, 0x34, 0x76, 0xFB, 0x6, 0x3F, 0x1C, 0x3, 0x8E, 0x20, 0x3B, 0xFF, 0xF2, 0x61, 0xE5, 0xFE, 0xF3, 0x0, 0x2, 0x0, 0x50, 0xFE, 0x60, 0x5, 0x1B, 0x4, 0x4E, 0x0, 0x13, 0x0, 0x1F, 0x0, 0x0, 0x1, 0x23, 0x11, 0x7, 0x11, 0x6, 0x6, 0x23, 0x22, 0x2, 0x35, 0x35, 0x34, 0x12, 0x33, 0x32, 0x16, 0x17, 0x37, 0x33, 0x1, 0x32, 0x37, 0x11, 0x26, 0x23, 0x22, 0x6, 0x15, 0x15, 0x14, 0x16, 0x5, 0x1B, 0xF3, 0x70, 0x3A, 0xBC, 0x86, 0xFA, 0xF2, 0xF3, 0xF9, 0x6B, 0xA6, 0x38, 0xE4, 0xB2, 0xFD, 0x1F, 0x53, 0x38, 0x38, 0x54, 0x94, 0x63, 0x78, 0xFE, 0x60, 0x4, 0xB3, 0x39, 0xFD, 0xCA, 0x4F, 0x69, 0x1, 0x40, 0xDF, 0x24, 0xDE, 0x1, 0x41, 0x4C, 0x37, 0x6F, 0xFC, 0x75, 0x2D, 0x2, 0x7C, 0x33, 0xDB, 0x81, 0x24, 0x9F, 0xBD, 0x0, 0x2, 0x0, 0x22, 0x0, 0x0, 0x5, 0xD2, 0x5, 0xB0, 0x0, 0x8, 0x0, 0x1F, 0x0, 0x0, 0x1, 0x11, 0x21, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x1, 0x11, 0x23, 0x11, 0x6, 0x6, 0x15, 0x14, 0x17, 0x23, 0x26, 0x35, 0x34, 0x36, 0x33, 0x31, 0x21, 0x32, 0x0, 0x15, 0x14, 0x4, 0x23, 0x2, 0x90, 0x1, 0x30, 0x93, 0x81, 0x81, 0x93, 0xFE, 0xD0, 0xFD, 0x5B, 0x48, 0x9, 0xC6, 0x11, 0xBF, 0xB2, 0x2, 0x2D, 0xFE, 0x1, 0x14, 0xFE, 0xEC, 0xFE, 0x4, 0xE5, 0xFE, 0x3, 0x8A, 0x6D, 0x66, 0xA0, 0xFD, 0x38, 0xFD, 0xE3, 0x4, 0xE5, 0x1, 0x63, 0x4C, 0x25, 0x26, 0x39, 0x49, 0x9E, 0xA6, 0xFE, 0xFA, 0xC9, 0xD3, 0xF1, 0x0, 0x2, 0x0, 0x7D, 0xFE, 0x60, 0x4, 0x31, 0x5, 0x72, 0x0, 0xB, 0x0, 0x26, 0x0, 0x0, 0x25, 0x32, 0x36, 0x35, 0x35, 0x34, 0x26, 0x23, 0x22, 0x7, 0x11, 0x16, 0x17, 0x22, 0x27, 0x11, 0x23, 0x11, 0x31, 0x36, 0x36, 0x33, 0x32, 0x17, 0x15, 0x26, 0x23, 0x22, 0x6, 0x15, 0x15, 0x36, 0x33, 0x32, 0x12, 0x15, 0x15, 0x14, 0x2, 0x2, 0x48, 0x83, 0x73, 0x75, 0x83, 0x96, 0x41, 0x43, 0xDA, 0xB1, 0x6C, 0xF2, 0x3, 0xD4, 0x7D, 0x49, 0x33, 0x25, 0x1B, 0x41, 0x5D, 0x6B, 0xB0, 0xCE, 0xD9, 0xDA, 0xAF, 0xD3, 0x90, 0x15, 0x92, 0xCF, 0x7D, 0xFE, 0x23, 0x7F, 0xC3, 0x75, 0xFD, 0xFF, 0x5, 0xDA, 0xAF, 0x89, 0xF, 0xA2, 0x7, 0x3F, 0x56, 0x5C, 0x77, 0xFE, 0xD0, 0xF8, 0x14, 0xEC, 0xFE, 0xC6, 0x0, 0x2, 0x0, 0x95, 0xFE, 0x9C, 0x5, 0x9A, 0x6, 0x18, 0x0, 0x10, 0x0, 0x19, 0x0, 0x0, 0x1, 0x21, 0x1, 0x21, 0x11, 0x23, 0x11, 0x33, 0x15, 0x21, 0x16, 0x4, 0x15, 0x14, 0x6, 0x7, 0x1, 0x1, 0x11, 0x21, 0x32, 0x36, 0x35, 0x34, 0x26, 0x27, 0x5, 0x9A, 0xFE, 0xF1, 0xFE, 0x22, 0xFE, 0xE4, 0xFC, 0xFC, 0x1, 0x11, 0xF5, 0x1, 0xB, 0x8E, 0x7D, 0x2, 0x3, 0xFB, 0xF7, 0x1, 0x4, 0x88, 0x89, 0x80, 0x8D, 0xFE, 0x9C, 0x3, 0x95, 0xFD, 0xCF, 0x6, 0x18, 0x68, 0x3, 0xE0, 0xD4, 0x92, 0xC6, 0x34, 0xFC, 0x3C, 0x6, 0x3C, 0xFE, 0x17, 0x89, 0x68, 0x70, 0x87, 0x1, 0x0, 0x1, 0x0, 0x4A, 0xFF, 0xEC, 0x4, 0x8A, 0x5, 0xC4, 0x0, 0x24, 0x0, 0x0, 0x1, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x33, 0x14, 0x6, 0x4, 0x23, 0x22, 0x24, 0x35, 0x34, 0x36, 0x37, 0x36, 0x36, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x23, 0x34, 0x0, 0x33, 0x32, 0x4, 0x10, 0x4, 0x4, 0x6, 0x1, 0x47, 0x86, 0x83, 0x86, 0xB7, 0xFD, 0xA8, 0xFE, 0xFA, 0x8C, 0xEC, 0xFE, 0xE6, 0xEC, 0xFB, 0x9A, 0x95, 0x7F, 0x86, 0x8D, 0x86, 0xFC, 0x1, 0x16, 0xF7, 0xE7, 0x1, 0x1D, 0xFE, 0xF7, 0xFE, 0x66, 0x73, 0x1, 0x78, 0x58, 0x6C, 0x7A, 0x8A, 0x99, 0xCD, 0x66, 0xD6, 0xB8, 0xAD, 0xD9, 0x49, 0x2D, 0x6B, 0x51, 0x56, 0x73, 0x89, 0x6B, 0xB6, 0x1, 0x7, 0xE3, 0xFE, 0xA0, 0xCA, 0x7F, 0x69, 0x0, 0x1, 0x0, 0x57, 0xFF, 0xEC, 0x3, 0xD6, 0x4, 0x4E, 0x0, 0x25, 0x0, 0x0, 0x1, 0x14, 0x16, 0x33, 0x32, 0x36, 0x37, 0x33, 0x14, 0x6, 0x23, 0x22, 0x26, 0x35, 0x34, 0x36, 0x37, 0x36, 0x36, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x23, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x6, 0x7, 0x6, 0x6, 0x1, 0x46, 0x65, 0x5F, 0x51, 0x8A, 0x5, 0xEC, 0xEA, 0xDF, 0xC7, 0xEF, 0xD4, 0xBC, 0x83, 0x5B, 0x58, 0x5C, 0x5F, 0x60, 0xF3, 0xE7, 0xCA, 0xC1, 0xE1, 0xD8, 0xB2, 0x8E, 0x54, 0x1, 0x26, 0x3A, 0x4A, 0x50, 0x64, 0x86, 0xE4, 0xB8, 0x90, 0x91, 0x92, 0x28, 0x1C, 0x40, 0x35, 0x36, 0x52, 0x63, 0x3F, 0x92, 0xC6, 0xC3, 0x85, 0x88, 0x94, 0x25, 0x1E, 0x4C, 0xFF, 0xFF, 0x0, 0x48, 0x0, 0x0, 0x4, 0x4D, 0x5, 0xB0, 0x0, 0x6, 0x2, 0x36, 0x0, 0x0, 0x0, 0x2, 0x0, 0x1B, 0xFE, 0x5E, 0x3, 0xD0, 0x6, 0x1F, 0x0, 0x15, 0x0, 0x1F, 0x0, 0x0, 0x1, 0x20, 0x3, 0x11, 0x6, 0x23, 0x22, 0x26, 0x35, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x11, 0x14, 0x33, 0x32, 0x37, 0x15, 0x6, 0x1, 0x32, 0x36, 0x34, 0x26, 0x23, 0x22, 0x6, 0x14, 0x16, 0x3, 0x4F, 0xFE, 0xC4, 0x8, 0x3D, 0x42, 0x99, 0xD8, 0xD8, 0x99, 0x98, 0xDA, 0x88, 0x26, 0x24, 0x3C, 0xFD, 0xF9, 0x3E, 0x56, 0x56, 0x3E, 0x40, 0x57, 0x57, 0xFE, 0x5E, 0x1, 0x64, 0x3, 0x91, 0x16, 0xD8, 0x98, 0x99, 0xD9, 0xD9, 0x99, 0xFB, 0x27, 0xAE, 0x9, 0xC0, 0x11, 0x5, 0xB4, 0x4F, 0x9C, 0x50, 0x50, 0x9C, 0x4F, 0x0, 0x1, 0x0, 0x8, 0xFE, 0x84, 0x2, 0x73, 0x5, 0x41, 0x0, 0x1E, 0x0, 0x0, 0x1, 0x22, 0x27, 0x35, 0x16, 0x33, 0x32, 0x36, 0x35, 0x35, 0x26, 0x26, 0x35, 0x11, 0x23, 0x35, 0x33, 0x11, 0x33, 0x11, 0x33, 0x15, 0x23, 0x11, 0x14, 0x16, 0x33, 0x32, 0x37, 0x11, 0x2, 0x1, 0x5E, 0x3C, 0x33, 0x1D, 0x23, 0x41, 0x5C, 0x77, 0x9A, 0xB3, 0xB3, 0xF2, 0xBF, 0xBF, 0x40, 0x31, 0x2A, 0x2B, 0x6, 0xFE, 0x84, 0xF, 0xA3, 0x7, 0x3F, 0x56, 0x28, 0x2, 0x89, 0xA5, 0x2, 0x6B, 0xB3, 0x1, 0x7, 0xFE, 0xF9, 0xB3, 0xFD, 0xA3, 0x49, 0x2B, 0xA, 0xFE, 0xF7, 0xFE, 0xCD, 0x0, 0x1, 0x0, 0x1E, 0x0, 0x0, 0x5, 0x25, 0x5, 0xB0, 0x0, 0x10, 0x0, 0x0, 0x1, 0x21, 0x11, 0x23, 0x11, 0x23, 0x22, 0x6, 0x15, 0x14, 0x17, 0x23, 0x26, 0x35, 0x10, 0x25, 0x21, 0x5, 0x25, 0xFE, 0x3A, 0xFB, 0xD0, 0x5E, 0x49, 0x8, 0xC6, 0x11, 0x1, 0x64, 0x3, 0xA3, 0x4, 0xE5, 0xFB, 0x1B, 0x4, 0xE5, 0x63, 0x4D, 0x23, 0x28, 0x3E, 0x44, 0x1, 0x3C, 0x8, 0x0, 0x1, 0x0, 0x13, 0xFF, 0xEC, 0x2, 0x95, 0x6, 0x1F, 0x0, 0x1F, 0x0, 0x0, 0x25, 0x6, 0x23, 0x22, 0x26, 0x35, 0x11, 0x23, 0x35, 0x33, 0x35, 0x36, 0x36, 0x33, 0x32, 0x17, 0x15, 0x26, 0x23, 0x22, 0x6, 0x15, 0x15, 0x33, 0x15, 0x23, 0x11, 0x14, 0x16, 0x33, 0x32, 0x37, 0x2, 0x7D, 0x43, 0x5D, 0x79, 0x9F, 0xB2, 0xB2, 0x1, 0xD5, 0x7E, 0x49, 0x33, 0x25, 0x1B, 0x40, 0x5D, 0xBF, 0xBF, 0x3F, 0x31, 0x2A, 0x2B, 0x4, 0x18, 0x95, 0xAF, 0x2, 0x57, 0xB3, 0xA9, 0xB1, 0x8B, 0xF, 0xA2, 0x7, 0x3F, 0x56, 0xA6, 0xB3, 0xFD, 0xB7, 0x51, 0x37, 0xA, 0x0, 0x1, 0x0, 0x2D, 0xFE, 0x4B, 0x4, 0xB0, 0x5, 0xB0, 0x0, 0x10, 0x0, 0x0, 0x1, 0x6, 0x23, 0x22, 0x26, 0x35, 0x11, 0x21, 0x35, 0x21, 0x15, 0x21, 0x11, 0x14, 0x33, 0x32, 0x37, 0x3, 0xCF, 0x3A, 0x45, 0xA4, 0xBD, 0xFE, 0x3E, 0x4, 0x83, 0xFE, 0x3B, 0x74, 0x31, 0x31, 0xFE, 0x5C, 0x11, 0xC0, 0xB6, 0x5, 0x24, 0xCB, 0xCB, 0xFA, 0xDC, 0xA9, 0xD, 0x0, 0x1, 0x0, 0x7E, 0xFF, 0xEC, 0x6, 0x3D, 0x6, 0x1, 0x0, 0x19, 0x0, 0x0, 0x5, 0x22, 0x24, 0x35, 0x11, 0x33, 0x11, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x11, 0x33, 0x15, 0x36, 0x36, 0x35, 0x33, 0x14, 0x6, 0x7, 0x11, 0x14, 0x4, 0x2, 0x9D, 0xE9, 0xFE, 0xCA, 0xFB, 0x9F, 0x85, 0x87, 0x9D, 0xFD, 0x7F, 0x4C, 0xB4, 0xAA, 0xD5, 0xFE, 0xC2, 0x14, 0xFD, 0xFA, 0x3, 0xCD, 0xFC, 0x33, 0x9C, 0x91, 0x91, 0x9C, 0x3, 0xCD, 0xDB, 0xB, 0x9B, 0x86, 0xD0, 0xE8, 0xB, 0xFD, 0xA5, 0xFA, 0xFD, 0x0, 0x1, 0x0, 0x77, 0xFF, 0xEC, 0x5, 0x29, 0x4, 0x94, 0x0, 0x19, 0x0, 0x0, 0x21, 0x27, 0x6, 0x23, 0x22, 0x26, 0x27, 0x11, 0x33, 0x11, 0x14, 0x16, 0x33, 0x32, 0x37, 0x11, 0x33, 0x15, 0x36, 0x36, 0x35, 0x33, 0x14, 0x6, 0x7, 0x11, 0x3, 0x12, 0x6, 0x6A, 0xC6, 0x9E, 0xC6, 0x1, 0xF3, 0x67, 0x45, 0xAE, 0x40, 0xF3, 0x65, 0x2B, 0xA2, 0x82, 0xB0, 0x6A, 0x7E, 0xBA, 0xD5, 0x2, 0xBF, 0xFD, 0x43, 0x75, 0x55, 0x7D, 0x3, 0xA, 0x88, 0xB, 0x6E, 0x69, 0xA4, 0xB2, 0xB, 0xFC, 0xCD, 0x0, 0x1, 0x0, 0x70, 0xFF, 0xEB, 0x4, 0xE2, 0x5, 0xB0, 0x0, 0x22, 0x0, 0x0, 0x4, 0x0, 0x11, 0x35, 0x34, 0x12, 0x37, 0x23, 0x35, 0x21, 0x15, 0x6, 0x2, 0x7, 0x15, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x35, 0x34, 0x2, 0x27, 0x35, 0x21, 0x15, 0x23, 0x16, 0x12, 0x15, 0x15, 0x10, 0x0, 0x1, 0xAE, 0xFE, 0xC2, 0x7D, 0x67, 0xD6, 0x1, 0xF1, 0x6D, 0x81, 0x2, 0xA1, 0x8B, 0x89, 0xA0, 0x85, 0x71, 0x1, 0xF9, 0xD9, 0x66, 0x7E, 0xFE, 0xC6, 0x15, 0x1, 0x5E, 0x1, 0x15, 0x63, 0xA1, 0x1, 0x21, 0x62, 0xCB, 0xD1, 0x1D, 0xFE, 0xFD, 0xEE, 0x75, 0xD0, 0xD5, 0xD5, 0xD0, 0x65, 0xFA, 0x1, 0x8, 0x1C, 0xD1, 0xCB, 0x62, 0xFE, 0xDF, 0xA1, 0x63, 0xFE, 0xEB, 0xFE, 0xA2, 0x0, 0x1, 0x0, 0x7E, 0xFF, 0xEC, 0x4, 0xBE, 0x5, 0xC4, 0x0, 0x1B, 0x0, 0x0, 0x5, 0x22, 0x24, 0x35, 0x11, 0x33, 0x11, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x11, 0x34, 0x26, 0x23, 0x22, 0x7, 0x35, 0x36, 0x33, 0x32, 0x16, 0x15, 0x11, 0x14, 0x4, 0x2, 0x9E, 0xEA, 0xFE, 0xCA, 0xFC, 0x9E, 0x86, 0x87, 0x9C, 0x4B, 0x4D, 0x23, 0x28, 0x3E, 0x44, 0x9E, 0xC0, 0xFE, 0xC2, 0x14, 0xFD, 0xFA, 0x3, 0xCD, 0xFC, 0x33, 0x9C, 0x91, 0x91, 0x9C, 0x2, 0x6B, 0x5F, 0x48, 0x8, 0xC6, 0x11, 0xC0, 0xB6, 0xFD, 0x95, 0xFA, 0xFD, 0x0, 0x1, 0x0, 0x8, 0x0, 0x0, 0x5, 0x6D, 0x5, 0xC4, 0x0, 0x12, 0x0, 0x0, 0x21, 0x23, 0x11, 0x1, 0x21, 0x1, 0x13, 0x36, 0x36, 0x33, 0x32, 0x17, 0x7, 0x26, 0x23, 0x22, 0x6, 0x7, 0x3, 0x2, 0xEF, 0xFE, 0xFE, 0x17, 0x1, 0x1A, 0x1, 0x4E, 0xA4, 0x71, 0x8F, 0x72, 0x82, 0x65, 0x59, 0x2C, 0x32, 0x3F, 0x4C, 0x41, 0xFB, 0x2, 0x18, 0x3, 0x98, 0xFD, 0x4D, 0x1, 0x51, 0xE8, 0x8E, 0x45, 0xB1, 0x1B, 0x7D, 0x7C, 0xFE, 0x27, 0x0, 0x1, 0x0, 0xC, 0xFE, 0x4B, 0x4, 0xDD, 0x5, 0x52, 0x0, 0x1C, 0x0, 0x0, 0x13, 0x22, 0x27, 0x35, 0x17, 0x32, 0x36, 0x37, 0x37, 0x1, 0x21, 0x13, 0x17, 0x13, 0x3E, 0x2, 0x33, 0x32, 0x17, 0x7, 0x26, 0x23, 0x22, 0x6, 0x7, 0x1, 0x2, 0x7, 0xD9, 0x23, 0x52, 0x2E, 0x56, 0x5D, 0x1F, 0x25, 0xFE, 0x83, 0x1, 0x7, 0xD1, 0x11, 0xD0, 0x19, 0x43, 0x7B, 0x6B, 0x77, 0x5F, 0x37, 0x3E, 0x2E, 0x38, 0x44, 0x27, 0xFE, 0x95, 0x59, 0xD8, 0xFE, 0x4B, 0x11, 0xBC, 0x3, 0x3D, 0x51, 0x62, 0x4, 0x35, 0xFD, 0x63, 0x4E, 0x2, 0xA9, 0x50, 0xA0, 0x6A, 0x4E, 0x95, 0x20, 0x6B, 0x76, 0xFB, 0xBA, 0xFE, 0xF4, 0x10, 0x0, 0x1, 0x0, 0x50, 0x0, 0x0, 0x4, 0x8C, 0x5, 0xB0, 0x0, 0x11, 0x0, 0x0, 0x33, 0x35, 0x1, 0x21, 0x35, 0x21, 0x1, 0x21, 0x35, 0x21, 0x15, 0x1, 0x21, 0x15, 0x21, 0x1, 0x21, 0x15, 0x50, 0x1, 0x53, 0xFE, 0xDD, 0x1, 0x99, 0x1, 0x29, 0xFD, 0x14, 0x4, 0x1E, 0xFE, 0xBB, 0x1, 0x1A, 0xFE, 0x71, 0xFE, 0xC8, 0x3, 0xA, 0xA4, 0x1, 0xEA, 0xAA, 0x1, 0xAD, 0xCB, 0xA0, 0xFE, 0x28, 0xAA, 0xFE, 0x3C, 0xCA, 0x0, 0x1, 0x0, 0x59, 0x0, 0x0, 0x3, 0xC7, 0x4, 0x3A, 0x0, 0x11, 0x0, 0x0, 0x33, 0x35, 0x13, 0x23, 0x35, 0x21, 0x37, 0x21, 0x35, 0x21, 0x15, 0x3, 0x33, 0x15, 0x21, 0x3, 0x21, 0x15, 0x59, 0xE7, 0xB3, 0x1, 0x33, 0xBF, 0xFD, 0xE5, 0x3, 0x4E, 0xDF, 0xAB, 0xFE, 0xD5, 0xCB, 0x2, 0x3F, 0x9F, 0x1, 0x31, 0xAA, 0xFC, 0xC4, 0x99, 0xFE, 0xD9, 0xAA, 0xFE, 0xF3, 0xC3, 0x0, 0x1, 0x0, 0x4A, 0xFE, 0x59, 0x4, 0xCF, 0x5, 0xB0, 0x0, 0x19, 0x0, 0x0, 0x0, 0x0, 0x27, 0x33, 0x16, 0x16, 0x33, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x23, 0x35, 0x1, 0x21, 0x35, 0x21, 0x15, 0x1, 0x16, 0x0, 0x11, 0x10, 0x0, 0x1, 0x78, 0xFE, 0xE6, 0x14, 0xFD, 0x13, 0x86, 0xA3, 0xB3, 0x9D, 0xAD, 0xB0, 0xF3, 0x1, 0xC0, 0xFD, 0x1E, 0x4, 0x18, 0xFE, 0x36, 0xFA, 0x1, 0x26, 0xFE, 0xBF, 0xFE, 0x59, 0x1, 0x1A, 0xD3, 0x8F, 0x94, 0xC4, 0xCB, 0xE0, 0xB6, 0xA2, 0x1, 0xFB, 0xCB, 0x9C, 0xFD, 0xF5, 0xE, 0xFE, 0xD9, 0xFE, 0xDE, 0xFE, 0xCE, 0xFE, 0xD9, 0x0, 0x1, 0x0, 0x64, 0xFE, 0x59, 0x4, 0xE9, 0x5, 0xB0, 0x0, 0x19, 0x0, 0x0, 0x0, 0x0, 0x11, 0x10, 0x0, 0x37, 0x1, 0x35, 0x21, 0x15, 0x21, 0x1, 0x15, 0x23, 0x22, 0x6, 0x15, 0x14, 0x16, 0x33, 0x32, 0x36, 0x37, 0x33, 0x6, 0x0, 0x1, 0xA5, 0xFE, 0xBF, 0x1, 0x27, 0xFB, 0xFE, 0x36, 0x4, 0x16, 0xFD, 0x20, 0x1, 0xC0, 0xF4, 0xB2, 0xAC, 0x9E, 0xB2, 0xA4, 0x86, 0x13, 0xFC, 0x14, 0xFE, 0xE6, 0xFE, 0x59, 0x1, 0x27, 0x1, 0x32, 0x1, 0x22, 0x1, 0x27, 0xE, 0x2, 0xB, 0x9C, 0xCB, 0xFE, 0x5, 0xA2, 0xB7, 0xDF, 0xCB, 0xC4, 0x94, 0x8F, 0xD3, 0xFE, 0xE6, 0x0, 0x1, 0x0, 0x53, 0xFE, 0x75, 0x4, 0x3C, 0x4, 0x3A, 0x0, 0x1B, 0x0, 0x0, 0x25, 0x14, 0x6, 0x6, 0x23, 0x22, 0x24, 0x35, 0x34, 0x36, 0x37, 0x1, 0x37, 0x21, 0x15, 0x21, 0x1, 0x15, 0x23, 0x6, 0x6, 0x15, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x4, 0x3C, 0x90, 0xE0, 0x78, 0xDF, 0xFE, 0xDE, 0xDA, 0xC7, 0xFE, 0x89, 0x1, 0x3, 0x8C, 0xFD, 0x9C, 0x1, 0x5C, 0x96, 0x91, 0x95, 0x8E, 0x80, 0x6F, 0x86, 0x1D, 0x95, 0xBB, 0x58, 0xE0, 0xCC, 0xC3, 0xE7, 0x18, 0x1, 0xBC, 0x9B, 0xC4, 0xFE, 0x6F, 0xAB, 0x2, 0x82, 0x95, 0x64, 0x85, 0x87, 0x5E, 0x0, 0x1, 0x0, 0x45, 0xFE, 0x4B, 0x3, 0xE3, 0x4, 0x3A, 0x0, 0x24, 0x0, 0x0, 0x1, 0x22, 0x26, 0x35, 0x34, 0x36, 0x37, 0x36, 0x36, 0x35, 0x34, 0x27, 0x23, 0x35, 0x1, 0x21, 0x35, 0x21, 0x17, 0x1, 0x16, 0x16, 0x15, 0x14, 0x6, 0x7, 0x6, 0x6, 0x15, 0x14, 0x33, 0x32, 0x36, 0x37, 0x33, 0x14, 0x6, 0x1, 0xFB, 0xC7, 0xEF, 0xC9, 0xC8, 0x7E, 0x5F, 0xAC, 0xD3, 0x1, 0x41, 0xFE, 0x4, 0x3, 0x69, 0x1, 0xFE, 0xBA, 0x7A, 0x89, 0xE2, 0xAF, 0x88, 0x53, 0xC4, 0x4D, 0x8E, 0x5, 0xEC, 0xEB, 0xFE, 0x4B, 0xB8, 0x90, 0x88, 0x97, 0x29, 0x1A, 0x3E, 0x3D, 0x71, 0x3, 0x93, 0x1, 0x0, 0xC3, 0x8F, 0xFE, 0xDC, 0x20, 0x9B, 0x66, 0x92, 0x90, 0x25, 0x1D, 0x4A, 0x32, 0x85, 0x4F, 0x65, 0x86, 0xE4, 0x0, 0x1, 0x0, 0x51, 0x0, 0x0, 0x4, 0x58, 0x5, 0xC4, 0x0, 0x1E, 0x0, 0x0, 0x25, 0x15, 0x21, 0x35, 0x1, 0x21, 0x35, 0x21, 0x36, 0x36, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x23, 0x34, 0x0, 0x33, 0x32, 0x16, 0x15, 0x14, 0x7, 0x33, 0x15, 0x21, 0x7, 0x1, 0x4, 0x41, 0xFC, 0x2C, 0x1, 0xB8, 0xFE, 0xF1, 0x1, 0xA1, 0x35, 0x29, 0x71, 0x68, 0x7C, 0x7C, 0xF3, 0x1, 0x2, 0xEC, 0xDA, 0xEF, 0x4E, 0x9E, 0xFE, 0xE7, 0x33, 0xFE, 0x90, 0xC3, 0xC3, 0xA8, 0x1, 0xDF, 0xAB, 0x48, 0x6B, 0x35, 0x64, 0x83, 0x97, 0x75, 0xBF, 0x1, 0x10, 0xDA, 0xB6, 0x7B, 0x87, 0xAB, 0x3A, 0xFE, 0x76, 0x0, 0x1, 0x0, 0x3F, 0xFF, 0xEC, 0x4, 0x60, 0x5, 0xB0, 0x0, 0x1E, 0x0, 0x0, 0x5, 0x22, 0x24, 0x27, 0x33, 0x16, 0x33, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x7, 0x27, 0x13, 0x23, 0x35, 0x21, 0x15, 0x21, 0x3, 0x36, 0x33, 0x32, 0x12, 0x15, 0x14, 0x2, 0x2, 0x81, 0xB6, 0xFE, 0xE9, 0xD, 0xEB, 0x1C, 0xD2, 0x77, 0x76, 0x83, 0x80, 0x55, 0x58, 0x27, 0xC2, 0x39, 0xCE, 0x3, 0xF2, 0xFD, 0xBC, 0x28, 0x64, 0x80, 0xCF, 0xE8, 0xED, 0x14, 0xD3, 0xCB, 0xDB, 0xA7, 0x83, 0x7D, 0xA2, 0x31, 0x25, 0x30, 0x2, 0xD, 0xD1, 0xD1, 0xFE, 0xA4, 0x39, 0xFE, 0xF9, 0xE3, 0xCA, 0xFE, 0xE4, 0x0, 0x1, 0x0, 0x2E, 0xFF, 0xF0, 0x3, 0xF2, 0x4, 0x3A, 0x0, 0x20, 0x0, 0x0, 0x5, 0x22, 0x26, 0x26, 0x35, 0x37, 0x16, 0x16, 0x33, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x22, 0x7, 0x27, 0x13, 0x23, 0x35, 0x21, 0x15, 0x21, 0x7, 0x36, 0x36, 0x37, 0x36, 0x16, 0x15, 0x14, 0x6, 0x2, 0x33, 0x68, 0xCC, 0x86, 0xED, 0x2, 0x70, 0x5B, 0x6B, 0x61, 0x67, 0x62, 0x81, 0x3C, 0xD5, 0x31, 0xA7, 0x3, 0x84, 0xFE, 0x4, 0x1D, 0x23, 0x75, 0x3D, 0xB7, 0xCD, 0xD1, 0x10, 0x46, 0x91, 0x71, 0x11, 0x46, 0x50, 0x66, 0x52, 0x53, 0x67, 0x53, 0xD, 0x1, 0x94, 0xC7, 0xC7, 0xD5, 0x14, 0x23, 0x1, 0x2, 0xC3, 0xB1, 0xA0, 0xD4, 0x0, 0x1, 0x0, 0x4C, 0xFF, 0xEC, 0x3, 0xCA, 0x5, 0x41, 0x0, 0x21, 0x0, 0x0, 0x5, 0x22, 0x26, 0x35, 0x33, 0x16, 0x16, 0x33, 0x32, 0x36, 0x35, 0x34, 0x2E, 0x2, 0x27, 0x35, 0x23, 0x35, 0x33, 0x11, 0x33, 0x11, 0x33, 0x15, 0x23, 0x15, 0x14, 0x1E, 0x2, 0x15, 0x14, 0x6, 0x2, 0x15, 0xDF, 0xEA, 0xEC, 0x5, 0x8D, 0x4D, 0x5E, 0x67, 0x6E, 0x91, 0x6C, 0x1, 0xB3, 0xB3, 0xF2, 0xC0, 0xC0, 0x6D, 0x8E, 0x6D, 0xEE, 0x14, 0xE4, 0x86, 0x65, 0x4F, 0x49, 0x3B, 0x45, 0x4E, 0x53, 0x8C, 0x81, 0x6E, 0xB3, 0x1, 0x7, 0xFE, 0xF9, 0xB3, 0x66, 0x63, 0x5E, 0x46, 0x71, 0x75, 0x90, 0xB8, 0x0, 0x2, 0x0, 0x7D, 0xFE, 0x60, 0x4, 0x31, 0x4, 0x4E, 0x0, 0xE, 0x0, 0x18, 0x0, 0x0, 0x1, 0x23, 0x11, 0x33, 0x17, 0x36, 0x33, 0x32, 0x12, 0x15, 0x15, 0x14, 0x2, 0x4, 0x7, 0x13, 0x22, 0x7, 0x11, 0x36, 0x24, 0x37, 0x35, 0x34, 0x26, 0x1, 0x6F, 0xF2, 0xDE, 0xB, 0x6C, 0xB8, 0xCE, 0xD9, 0xAE, 0xFE, 0xC3, 0xD7, 0xD7, 0x96, 0x41, 0xCB, 0x1, 0x2, 0x2, 0x75, 0xFE, 0x60, 0x5, 0xDA, 0x6E, 0x82, 0xFE, 0xD0, 0xF8, 0x14, 0xCB, 0xFE, 0xFA, 0xA9, 0x3E, 0x4, 0x2E, 0x7D, 0xFD, 0xF, 0x37, 0xEB, 0xD0, 0x1B, 0x92, 0xCF, 0x0, 0x1, 0x0, 0xA7, 0x0, 0x0, 0x1, 0x4E, 0x5, 0xB0, 0x0, 0x3, 0x0, 0x0, 0x1, 0x11, 0x23, 0x11, 0x1, 0x4E, 0xA7, 0x5, 0xB0, 0xFA, 0x50, 0x5, 0xB0, 0xFF, 0xFF, 0x0, 0xA7, 0x0, 0x0, 0x2, 0x5C, 0x5, 0xB0, 0x0, 0x26, 0x0, 0xD4, 0x0, 0x0, 0x0, 0x7, 0x0, 0xD4, 0x1, 0xE, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x14, 0x0, 0x0, 0x2, 0xB2, 0x5, 0xB0, 0x0, 0x26, 0x0, 0xD4, 0x6D, 0x0, 0x0, 0x27, 0x7, 0xA4, 0xFF, 0x84, 0x1, 0x7, 0x0, 0x7, 0x7, 0xA4, 0xFF, 0x84, 0xFF, 0x27, 0xFF, 0xFF, 0x0, 0x90, 0xFF, 0xF2, 0x1, 0xA3, 0x5, 0xB0, 0x0, 0x6, 0x0, 0x6, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x95, 0x0, 0x0, 0x9, 0x25, 0x7, 0x41, 0x0, 0x26, 0x0, 0x29, 0x0, 0x0, 0x0, 0x27, 0x0, 0x3F, 0x4, 0x99, 0x0, 0x0, 0x0, 0x7, 0x1, 0x78, 0x5, 0x34, 0x1, 0x3F, 0x0, 0x4, 0x0, 0x95, 0x0, 0x0, 0x8, 0x8F, 0x5, 0xF2, 0x0, 0x8, 0x0, 0x12, 0x0, 0x1C, 0x0, 0x26, 0x0, 0x0, 0x1, 0x17, 0x37, 0x33, 0x15, 0x5, 0x23, 0x25, 0x35, 0x1, 0x11, 0x33, 0x32, 0x12, 0x37, 0x35, 0x34, 0x26, 0x23, 0x1, 0x35, 0x1, 0x21, 0x35, 0x21, 0x15, 0x1, 0x21, 0x15, 0x21, 0x11, 0x21, 0x20, 0x0, 0x11, 0x15, 0x10, 0x0, 0x21, 0x6, 0x4D, 0x8C, 0x8B, 0xD0, 0xFE, 0xF3, 0x9D, 0xFE, 0xF5, 0xFC, 0x12, 0xA6, 0xCC, 0xD0, 0x2, 0xCF, 0xC4, 0x2, 0xDF, 0x2, 0x25, 0xFD, 0xE5, 0x3, 0x4F, 0xFD, 0xD6, 0x2, 0x3F, 0xF8, 0x6, 0x1, 0xAD, 0x1, 0x25, 0x1, 0x6B, 0xFE, 0x93, 0xFE, 0xD2, 0x5, 0xF2, 0x8F, 0x8F, 0x12, 0xFC, 0xFB, 0x13, 0xFE, 0xF3, 0xFB, 0xE5, 0x1, 0x0, 0xE1, 0x53, 0xEC, 0xFB, 0xFB, 0x1B, 0x9F, 0x2, 0xD7, 0xC4, 0x99, 0xFD, 0x22, 0xC3, 0x5, 0xB0, 0xFE, 0x87, 0xFE, 0xC5, 0x49, 0xFE, 0xC5, 0xFE, 0x88, 0x0, 0x4, 0x0, 0x50, 0xFF, 0xEC, 0x7, 0xD1, 0x6, 0x18, 0x0, 0x8, 0x0, 0x14, 0x0, 0x24, 0x0, 0x2E, 0x0, 0x0, 0x1, 0x17, 0x37, 0x33, 0x15, 0x5, 0x23, 0x25, 0x35, 0x1, 0x32, 0x37, 0x11, 0x26, 0x23, 0x22, 0x6, 0x15, 0x15, 0x14, 0x16, 0x5, 0x27, 0x6, 0x23, 0x22, 0x2, 0x35, 0x35, 0x34, 0x12, 0x33, 0x32, 0x17, 0x11, 0x33, 0x11, 0x33, 0x35, 0x1, 0x21, 0x35, 0x21, 0x15, 0x1, 0x21, 0x15, 0x5, 0x8F, 0x8C, 0x8B, 0xD0, 0xFE, 0xF3, 0x9D, 0xFE, 0xF5, 0xFD, 0x76, 0x95, 0x45, 0x44, 0x94, 0x84, 0x73, 0x72, 0x1, 0x7D, 0x11, 0x6D, 0xBA, 0xC3, 0xE6, 0xE5, 0xC6, 0xAC, 0x6A, 0xF3, 0x5F, 0x2, 0x25, 0xFD, 0xE5, 0x3, 0x4F, 0xFD, 0xD6, 0x2, 0x3F, 0x5, 0xF2, 0x8F, 0x8F, 0x12, 0xFC, 0xFB, 0x13, 0xFA, 0xC1, 0x86, 0x1, 0xCD, 0x82, 0xD0, 0x92, 0x15, 0x91, 0xCD, 0xB3, 0x75, 0x89, 0x1, 0x39, 0xEC, 0x15, 0xF7, 0x1, 0x31, 0x77, 0x2, 0x41, 0xF9, 0xE8, 0x9F, 0x2, 0xD7, 0xC4, 0x99, 0xFD, 0x22, 0xC3, 0x0, 0x1, 0x0, 0x6A, 0xFF, 0xEC, 0x5, 0x89, 0x5, 0xC4, 0x0, 0x27, 0x0, 0x0, 0x25, 0x6, 0x6, 0x23, 0x20, 0x0, 0x11, 0x35, 0x10, 0x0, 0x21, 0x20, 0x0, 0x17, 0x23, 0x26, 0x26, 0x23, 0x22, 0x6, 0x7, 0x15, 0x14, 0x12, 0x33, 0x32, 0x36, 0x37, 0x35, 0x21, 0x35, 0x21, 0x35, 0x21, 0x35, 0x21, 0x11, 0x33, 0x15, 0x23, 0x4, 0xF0, 0x2E, 0xF5, 0xF5, 0xFE, 0xED, 0xFE, 0xA5, 0x1, 0x3E, 0x1, 0x1A, 0x1, 0xB, 0x1, 0x9, 0x1A, 0xF8, 0x13, 0x8A, 0x95, 0xB0, 0xAB, 0x2, 0xC8, 0xAF, 0x83, 0x77, 0x1A, 0xFE, 0xF8, 0x1, 0x8, 0xFE, 0xD5, 0x2, 0x27, 0x99, 0x99, 0xBE, 0x3D, 0x95, 0x1, 0x6E, 0x1, 0x4E, 0x5F, 0x1, 0x4E, 0x1, 0x6F, 0xFE, 0xFA, 0xCB, 0x71, 0x95, 0xFE, 0xE8, 0x6B, 0xF0, 0xFE, 0xFE, 0x3C, 0x1C, 0x38, 0x9E, 0x48, 0xBF, 0xFE, 0xF9, 0x9E, 0x0, 0x2, 0x0, 0x25, 0xFD, 0xFF, 0x4, 0x7D, 0x4, 0x4E, 0x0, 0xB, 0x0, 0x2B, 0x0, 0x0, 0x25, 0x32, 0x37, 0x11, 0x26, 0x23, 0x22, 0x6, 0x15, 0x15, 0x14, 0x16, 0x13, 0x22, 0x26, 0x27, 0x37, 0x16, 0x33, 0x32, 0x37, 0x21, 0x35, 0x21, 0x35, 0x6, 0x23, 0x22, 0x2, 0x35, 0x35, 0x34, 0x12, 0x33, 0x32, 0x17, 0x37, 0x33, 0x11, 0x33, 0x15, 0x23, 0x6, 0x4, 0x2, 0x49, 0x95, 0x45, 0x43, 0x95, 0x84, 0x79, 0x78, 0x65, 0x58, 0xEB, 0x52, 0x6C, 0x6E, 0xAD, 0xBB, 0x38, 0xFD, 0x15, 0x2, 0xFE, 0x6A, 0xAE, 0xC6, 0xEA, 0xE9, 0xC9, 0xBA, 0x69, 0xA, 0xDC, 0x67, 0x74, 0x24, 0xFF, 0x0, 0xB3, 0x7F, 0x1, 0xDA, 0x7C, 0xD0, 0x92, 0x15, 0x91, 0xCD, 0xFD, 0x4C, 0x45, 0x63, 0x8E, 0x77, 0x8F, 0x7F, 0x96, 0x76, 0x1, 0x39, 0xEC, 0x15, 0xF7, 0x1, 0x31, 0x7F, 0x6B, 0xFB, 0x92, 0x7F, 0xA1, 0xAD, 0xFF, 0xFF, 0x0, 0x4A, 0xFE, 0x59, 0x4, 0xCF, 0x7, 0x29, 0x0, 0x26, 0x0, 0xCB, 0x0, 0x0, 0x0, 0x7, 0x1, 0x78, 0x0, 0x90, 0x1, 0x27, 0x0, 0x2, 0x0, 0x5E, 0xFE, 0x75, 0x4, 0x46, 0x5, 0xF2, 0x0, 0x8, 0x0, 0x24, 0x0, 0x0, 0x1, 0x17, 0x37, 0x33, 0x15, 0x5, 0x23, 0x25, 0x35, 0x1, 0x22, 0x26, 0x26, 0x35, 0x33, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x23, 0x35, 0x1, 0x21, 0x35, 0x21, 0x17, 0x1, 0x16, 0x16, 0x15, 0x14, 0x4, 0x1, 0xB4, 0x8B, 0x8C, 0xCF, 0xFE, 0xF4, 0x9D, 0xFE, 0xF5, 0x1, 0x60, 0x77, 0xE1, 0x90, 0xF3, 0x85, 0x70, 0x80, 0x8E, 0x9B, 0x93, 0x8E, 0x1, 0x5C, 0xFD, 0x9B, 0x3, 0x8D, 0x1, 0xFE, 0x89, 0xC7, 0xD9, 0xFE, 0xDF, 0x5, 0xF2, 0x8F, 0x8F, 0x12, 0xFC, 0xFB, 0x13, 0xF8, 0x83, 0x58, 0xBB, 0x95, 0x5E, 0x87, 0x85, 0x64, 0x97, 0x82, 0xAB, 0x1, 0x91, 0xC4, 0x9B, 0xFE, 0x44, 0x18, 0xE7, 0xC3, 0xCC, 0xE0, 0x0, 0x1, 0x0, 0x95, 0xFF, 0xEC, 0x8, 0x26, 0x5, 0xB0, 0x0, 0x18, 0x0, 0x0, 0x5, 0x22, 0x24, 0x35, 0x35, 0x21, 0x11, 0x23, 0x11, 0x33, 0x11, 0x21, 0x11, 0x33, 0x11, 0x12, 0x21, 0x20, 0x13, 0x11, 0x33, 0x11, 0x6, 0x4, 0x7, 0x6, 0x20, 0xE9, 0xFE, 0xE5, 0xFD, 0x75, 0xFC, 0xFC, 0x2, 0x8B, 0xFD, 0x4, 0x1, 0x3, 0x1, 0x5, 0x5, 0xFC, 0x1, 0xFE, 0xDF, 0xE0, 0x14, 0xFD, 0xFA, 0xA5, 0xFD, 0x78, 0x5, 0xB0, 0xFD, 0xA2, 0x2, 0x5E, 0xFC, 0x2A, 0xFE, 0xDC, 0x1, 0x22, 0x2, 0x61, 0xFD, 0xA7, 0xF8, 0xFB, 0x1, 0x0, 0x2, 0x0, 0x95, 0xFE, 0x60, 0x4, 0xE7, 0x5, 0xC4, 0x0, 0xD, 0x0, 0x17, 0x0, 0x0, 0x1, 0x23, 0x11, 0x33, 0x15, 0x36, 0x33, 0x20, 0x0, 0x13, 0x15, 0x10, 0x0, 0x5, 0x1, 0x22, 0x7, 0x11, 0x24, 0x0, 0x35, 0x35, 0x34, 0x26, 0x1, 0x91, 0xFC, 0xFC, 0x6C, 0x94, 0x1, 0x11, 0x1, 0x43, 0x2, 0xFE, 0x2D, 0xFE, 0x7D, 0x1, 0x0, 0xA7, 0x59, 0x1, 0x32, 0x1, 0x27, 0x9F, 0xFE, 0x60, 0x7, 0x50, 0x23, 0x37, 0xFE, 0xCC, 0xFE, 0xCE, 0x3B, 0xFE, 0xB3, 0xFD, 0xF5, 0x67, 0x5, 0x95, 0x72, 0xFB, 0xAE, 0x61, 0x1, 0xAC, 0xE1, 0x36, 0xCE, 0xD2, 0x0, 0x1, 0x0, 0x4E, 0xFE, 0x4B, 0x4, 0x6F, 0x5, 0xC4, 0x0, 0x20, 0x0, 0x0, 0x13, 0x35, 0x24, 0x0, 0x35, 0x34, 0x27, 0x6, 0x5, 0x27, 0x24, 0x24, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x23, 0x34, 0x24, 0x33, 0x32, 0x4, 0x15, 0x14, 0x7, 0x16, 0x15, 0x14, 0x2, 0x4, 0xB0, 0x1, 0x52, 0x1, 0x70, 0x53, 0xE6, 0xFE, 0x77, 0x1, 0x1, 0x64, 0x1, 0x4B, 0x82, 0x94, 0x66, 0x98, 0xFC, 0x1, 0x2E, 0xCC, 0xF2, 0x1, 0x1F, 0xA1, 0xB7, 0xF9, 0xFE, 0x4F, 0xFE, 0x4B, 0xCA, 0x44, 0x1, 0x9, 0xEF, 0xAA, 0x38, 0x97, 0x61, 0xBB, 0x6B, 0xE7, 0xCE, 0x5F, 0x84, 0x6E, 0x5F, 0xBF, 0xD9, 0xD3, 0xCC, 0xD1, 0xA5, 0x6B, 0xF7, 0xE7, 0xFE, 0xCE, 0xB8, 0x0, 0x1, 0x0, 0x48, 0xFE, 0x4B, 0x3, 0xAE, 0x4, 0x4D, 0x0, 0x20, 0x0, 0x0, 0x13, 0x35, 0x36, 0x24, 0x35, 0x34, 0x27, 0x6, 0x5, 0x35, 0x3E, 0x2, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x23, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x7, 0x16, 0x15, 0x10, 0x0, 0xAC, 0xFB, 0x1, 0x13, 0x31, 0xB5, 0xFE, 0xD8, 0x86, 0xE7, 0x8E, 0x4D, 0x62, 0x51, 0x6D, 0xF2, 0xFA, 0xAF, 0xC5, 0xE4, 0x81, 0x95, 0xFE, 0x68, 0xFE, 0x4B, 0xBA, 0x45, 0xBE, 0xBE, 0x6B, 0x42, 0x74, 0x45, 0xB2, 0x26, 0x68, 0x98, 0x6D, 0x3A, 0x59, 0x4D, 0x3E, 0x98, 0xAE, 0xA1, 0x9A, 0xA6, 0x86, 0x61, 0xC9, 0xFE, 0xF3, 0xFE, 0xD7, 0x0, 0x1, 0x0, 0x95, 0xFE, 0x60, 0x4, 0xBB, 0x5, 0xC4, 0x0, 0x11, 0x0, 0x0, 0x1, 0x23, 0x11, 0x34, 0x26, 0x23, 0x22, 0x7, 0x11, 0x23, 0x11, 0x33, 0x15, 0x36, 0x33, 0x32, 0x4, 0x15, 0x4, 0xBB, 0xF4, 0x96, 0x86, 0xA2, 0x81, 0xF3, 0xF3, 0x91, 0xA1, 0xCF, 0x1, 0x32, 0xFE, 0x60, 0x5, 0x8B, 0x8F, 0x84, 0x4E, 0xFB, 0x50, 0x5, 0xB0, 0x3A, 0x4E, 0xF0, 0xE9, 0x0, 0x3, 0x0, 0x50, 0xFE, 0x4B, 0x5, 0xB4, 0x6, 0x0, 0x0, 0x1C, 0x0, 0x28, 0x0, 0x31, 0x0, 0x0, 0x1, 0x22, 0x26, 0x27, 0x7, 0x27, 0x37, 0x35, 0x6, 0x23, 0x22, 0x2, 0x35, 0x35, 0x34, 0x12, 0x33, 0x32, 0x17, 0x11, 0x33, 0x11, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x6, 0x1, 0x32, 0x37, 0x11, 0x26, 0x23, 0x22, 0x6, 0x15, 0x15, 0x14, 0x16, 0x1, 0x32, 0x34, 0x23, 0x22, 0x7, 0x15, 0x14, 0x16, 0x4, 0x6C, 0x86, 0x97, 0x20, 0x95, 0x7C, 0xF3, 0x6B, 0xAD, 0xC3, 0xE6, 0xE5, 0xC6, 0xAC, 0x6A, 0xF3, 0x3C, 0x40, 0x8B, 0xA9, 0xAE, 0xFD, 0x31, 0x95, 0x45, 0x44, 0x94, 0x84, 0x73, 0x72, 0x2, 0xBB, 0x61, 0x6B, 0x2F, 0x32, 0x33, 0xFE, 0x4B, 0x65, 0x4D, 0x8F, 0x93, 0xE0, 0x82, 0x77, 0x1, 0x39, 0xEC, 0x15, 0xF7, 0x1, 0x31, 0x77, 0x2, 0x29, 0xFA, 0x5C, 0xE, 0x8E, 0x80, 0x78, 0x99, 0x2, 0x68, 0x86, 0x1, 0xCD, 0x82, 0xD0, 0x92, 0x15, 0x91, 0xCD, 0xFE, 0x47, 0xBC, 0x16, 0x37, 0x30, 0x3F, 0x0, 0x2, 0x0, 0x67, 0xFF, 0xEB, 0x4, 0xD0, 0x5, 0xC4, 0x0, 0x23, 0x0, 0x2F, 0x0, 0x0, 0x5, 0x22, 0x24, 0x35, 0x34, 0x37, 0x26, 0x35, 0x34, 0x36, 0x37, 0x15, 0x6, 0x6, 0x15, 0x14, 0x16, 0x33, 0x33, 0x32, 0x36, 0x35, 0x34, 0x26, 0x27, 0x35, 0x16, 0x16, 0x15, 0x14, 0x7, 0x16, 0x15, 0x14, 0x4, 0x23, 0x3, 0x22, 0x6, 0x15, 0x10, 0x21, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x2, 0x90, 0xEC, 0xFE, 0xC3, 0xBB, 0xBB, 0xEB, 0xAF, 0x4E, 0x4F, 0xA6, 0x80, 0x23, 0x80, 0xA6, 0x50, 0x4E, 0xB0, 0xEB, 0xBC, 0xBB, 0xFE, 0xC3, 0xED, 0x15, 0x8A, 0xA2, 0x1, 0x41, 0x8B, 0xA2, 0xA2, 0x8B, 0x15, 0xEA, 0xE8, 0xF1, 0x78, 0x60, 0xD2, 0xB9, 0xAF, 0x4, 0xC1, 0x13, 0x48, 0x50, 0x6F, 0x4F, 0x4F, 0x6F, 0x50, 0x48, 0x13, 0xC1, 0x4, 0xAF, 0xB9, 0xD2, 0x60, 0x78, 0xEF, 0xE9, 0xEB, 0x2, 0xDE, 0x86, 0x86, 0xFE, 0xFD, 0x80, 0x85, 0x84, 0x86, 0x0, 0x2, 0x0, 0x55, 0xFF, 0xEB, 0x4, 0xB4, 0x6, 0x15, 0x0, 0x23, 0x0, 0x31, 0x0, 0x0, 0x5, 0x22, 0x24, 0x35, 0x34, 0x37, 0x26, 0x35, 0x34, 0x36, 0x37, 0x15, 0x6, 0x6, 0x15, 0x14, 0x16, 0x33, 0x33, 0x32, 0x36, 0x35, 0x34, 0x26, 0x27, 0x35, 0x16, 0x16, 0x15, 0x14, 0x7, 0x16, 0x15, 0x14, 0x4, 0x23, 0x3, 0x22, 0x6, 0x15, 0x14, 0x16, 0x33, 0x33, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x2, 0x7A, 0xEC, 0xFE, 0xC7, 0xBF, 0xBF, 0xE7, 0xAF, 0x4D, 0x56, 0xA9, 0x82, 0x23, 0x83, 0xA8, 0x55, 0x4D, 0xAF, 0xE6, 0xBF, 0xBF, 0xFE, 0xC7, 0xEC, 0x15, 0x8C, 0xA6, 0xA6, 0x8C, 0x15, 0x8C, 0xA6, 0xA6, 0x8C, 0x15, 0xE8, 0xE8, 0xF3, 0x76, 0x66, 0xEE, 0xC5, 0xD4, 0x4, 0xB9, 0x1E, 0x66, 0x62, 0x86, 0x65, 0x65, 0x86, 0x62, 0x66, 0x1E, 0xB9, 0x4, 0xD4, 0xC5, 0xEE, 0x66, 0x76, 0xF1, 0xE9, 0xE9, 0x2, 0xDD, 0x89, 0x84, 0x82, 0x8B, 0x8A, 0x85, 0x83, 0x88, 0x0, 0x1, 0x0, 0x50, 0xFE, 0xFD, 0x4, 0xE4, 0x5, 0xB0, 0x0, 0x13, 0x0, 0x0, 0x1, 0x23, 0x36, 0x35, 0x34, 0x26, 0x23, 0x21, 0x35, 0x1, 0x21, 0x35, 0x21, 0x15, 0x1, 0x21, 0x16, 0x16, 0x15, 0x14, 0x4, 0xD3, 0xC9, 0x9, 0x40, 0x65, 0xFC, 0xE2, 0x2, 0xF2, 0xFD, 0x14, 0x4, 0x1E, 0xFD, 0xE, 0x1, 0xF3, 0xB3, 0xBC, 0xFE, 0xFD, 0x25, 0x26, 0x4C, 0x6C, 0xA4, 0x4, 0x41, 0xCB, 0xA0, 0xFB, 0xBA, 0x2, 0xAC, 0x9D, 0x44, 0x0, 0x1, 0x0, 0x52, 0xFF, 0x11, 0x4, 0x25, 0x4, 0x3A, 0x0, 0x12, 0x0, 0x0, 0x5, 0x23, 0x36, 0x35, 0x34, 0x26, 0x23, 0x21, 0x35, 0x1, 0x21, 0x35, 0x21, 0x15, 0x1, 0x21, 0x4, 0x11, 0x14, 0x4, 0x14, 0xBF, 0x8, 0x49, 0x65, 0xFD, 0xA3, 0x2, 0x26, 0xFD, 0xE5, 0x3, 0x4E, 0xFD, 0xD6, 0x1, 0x41, 0x1, 0x63, 0xEF, 0x20, 0x2A, 0x47, 0x5E, 0x9F, 0x2, 0xD7, 0xC4, 0x99, 0xFD, 0x22, 0x8, 0xFE, 0xD8, 0x46, 0x0, 0x2, 0x0, 0x14, 0xFE, 0x4B, 0x3, 0xAA, 0x6, 0x0, 0x0, 0x10, 0x0, 0x1B, 0x0, 0x0, 0x1, 0x22, 0x26, 0x27, 0x7, 0x27, 0x37, 0x11, 0x33, 0x11, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x6, 0x27, 0x32, 0x36, 0x35, 0x34, 0x23, 0x22, 0x7, 0x15, 0x14, 0x16, 0x2, 0x63, 0x85, 0x98, 0x21, 0x95, 0x7C, 0xF3, 0xF3, 0x3C, 0x41, 0x8A, 0xA9, 0xAD, 0x97, 0x29, 0x38, 0x6B, 0x30, 0x32, 0x34, 0xFE, 0x4B, 0x64, 0x4E, 0x8F, 0x93, 0xDF, 0x6, 0x20, 0xFA, 0x5C, 0xE, 0x8E, 0x80, 0x78, 0x99, 0xAF, 0x32, 0x2C, 0x5E, 0x17, 0x36, 0x30, 0x3F, 0x0, 0x2, 0x0, 0x7A, 0xFE, 0x4B, 0x5, 0xA9, 0x4, 0x4E, 0x0, 0x1E, 0x0, 0x29, 0x0, 0x0, 0x1, 0x22, 0x26, 0x27, 0x7, 0x27, 0x37, 0x11, 0x34, 0x26, 0x23, 0x22, 0x7, 0x11, 0x23, 0x11, 0x33, 0x17, 0x36, 0x33, 0x32, 0x16, 0x17, 0x11, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x6, 0x27, 0x32, 0x36, 0x35, 0x34, 0x23, 0x22, 0x7, 0x15, 0x14, 0x16, 0x4, 0x62, 0x86, 0x97, 0x21, 0x95, 0x7C, 0xF3, 0x61, 0x5E, 0x91, 0x49, 0xF3, 0xE5, 0x8, 0x77, 0xC2, 0x9C, 0xBC, 0x1, 0x3C, 0x41, 0x8A, 0xA9, 0xAD, 0x97, 0x29, 0x38, 0x6B, 0x30, 0x32, 0x34, 0xFE, 0x4B, 0x65, 0x4E, 0x90, 0x93, 0xDF, 0x2, 0xDE, 0x70, 0x5A, 0x84, 0xFC, 0xFC, 0x4, 0x3A, 0x7C, 0x90, 0xB3, 0xDA, 0xFD, 0x9B, 0xE, 0x8E, 0x80, 0x78, 0x99, 0xAF, 0x32, 0x2C, 0x5E, 0x17, 0x36, 0x30, 0x3F, 0x0, 0x2, 0x0, 0x14, 0xFF, 0xEC, 0x3, 0xAA, 0x5, 0x41, 0x0, 0x18, 0x0, 0x22, 0x0, 0x0, 0x25, 0x14, 0x6, 0x23, 0x22, 0x26, 0x27, 0x7, 0x27, 0x37, 0x11, 0x23, 0x35, 0x33, 0x11, 0x33, 0x11, 0x33, 0x15, 0x23, 0x11, 0x36, 0x33, 0x32, 0x16, 0x5, 0x32, 0x36, 0x35, 0x34, 0x23, 0x22, 0x7, 0x15, 0x14, 0x3, 0xAA, 0xAD, 0x9A, 0x85, 0x98, 0x21, 0x95, 0x7C, 0xF3, 0xB2, 0xB2, 0xF3, 0xBF, 0xBF, 0x3F, 0x3E, 0x8A, 0xA9, 0xFE, 0xBC, 0x29, 0x38, 0x6B, 0x30, 0x32, 0xFC, 0x78, 0x98, 0x64, 0x4E, 0x8F, 0x92, 0xDF, 0x2, 0x7, 0xB3, 0x1, 0x7, 0xFE, 0xF9, 0xB3, 0xFE, 0x75, 0xF, 0x8F, 0xE1, 0x33, 0x2B, 0x5E, 0x17, 0x36, 0x6F, 0x0, 0x1, 0xFF, 0xB5, 0xFE, 0x4B, 0x1, 0x94, 0x4, 0x3A, 0x0, 0xC, 0x0, 0x0, 0x13, 0x33, 0x11, 0x14, 0x6, 0x23, 0x22, 0x27, 0x37, 0x16, 0x33, 0x32, 0x37, 0xA1, 0xF3, 0xBB, 0xA5, 0x45, 0x3A, 0xE, 0x27, 0x3C, 0x7A, 0x1, 0x4, 0x3A, 0xFB, 0x87, 0xB6, 0xC0, 0x11, 0xBF, 0xD, 0xB0, 0x0, 0x3, 0x0, 0x60, 0xFF, 0xEC, 0x6, 0xD6, 0x6, 0x0, 0x0, 0x1B, 0x0, 0x27, 0x0, 0x32, 0x0, 0x0, 0x5, 0x22, 0x27, 0x15, 0x23, 0x27, 0x6, 0x23, 0x22, 0x2, 0x35, 0x35, 0x34, 0x12, 0x33, 0x32, 0x17, 0x11, 0x33, 0x11, 0x36, 0x33, 0x32, 0x12, 0x15, 0x15, 0x14, 0x2, 0x25, 0x32, 0x37, 0x11, 0x26, 0x23, 0x22, 0x6, 0x15, 0x15, 0x14, 0x16, 0x21, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x22, 0x7, 0x11, 0x16, 0x5, 0x31, 0xB4, 0x6A, 0xDC, 0xC, 0x6C, 0xB6, 0xC4, 0xE5, 0xE5, 0xC6, 0xAB, 0x6A, 0xF3, 0x6A, 0xB2, 0xD1, 0xD6, 0xD7, 0xFC, 0x48, 0x94, 0x45, 0x43, 0x94, 0x84, 0x73, 0x72, 0x3, 0x2F, 0x87, 0x69, 0x66, 0x8C, 0x9B, 0x43, 0x44, 0x14, 0x7C, 0x68, 0x70, 0x84, 0x1, 0x39, 0xEC, 0x15, 0xF7, 0x1, 0x31, 0x76, 0x2, 0x28, 0xFD, 0xD2, 0x7C, 0xFE, 0xCD, 0xF4, 0x15, 0xEF, 0xFE, 0xC9, 0xC7, 0x84, 0x1, 0xD1, 0x80, 0xD0, 0x92, 0x15, 0x91, 0xCD, 0xCA, 0xAA, 0x8F, 0xD2, 0x8C, 0xFE, 0x44, 0x8D, 0x0, 0x3, 0x0, 0x50, 0xFE, 0x60, 0x6, 0xC5, 0x4, 0x4E, 0x0, 0xB, 0x0, 0x17, 0x0, 0x33, 0x0, 0x0, 0x25, 0x32, 0x37, 0x11, 0x26, 0x23, 0x22, 0x6, 0x15, 0x15, 0x14, 0x16, 0x21, 0x32, 0x36, 0x35, 0x35, 0x34, 0x26, 0x23, 0x22, 0x7, 0x11, 0x16, 0x17, 0x22, 0x27, 0x11, 0x23, 0x11, 0x6, 0x23, 0x22, 0x2, 0x35, 0x35, 0x34, 0x12, 0x33, 0x32, 0x17, 0x37, 0x33, 0x17, 0x36, 0x33, 0x32, 0x12, 0x15, 0x15, 0x14, 0x2, 0x2, 0x39, 0x92, 0x45, 0x46, 0x8F, 0x83, 0x76, 0x74, 0x3, 0x26, 0x83, 0x73, 0x75, 0x83, 0x96, 0x41, 0x43, 0xDA, 0xB1, 0x6C, 0xF3, 0x6A, 0xAA, 0xCA, 0xE2, 0xE1, 0xCD, 0xB4, 0x6B, 0xD, 0xC6, 0xA, 0x6D, 0xB7, 0xCE, 0xD9, 0xDA, 0xAF, 0x7C, 0x1, 0xEA, 0x76, 0xD2, 0x92, 0x15, 0x91, 0xD2, 0xD3, 0x90, 0x15, 0x92, 0xCF, 0x7D, 0xFE, 0x23, 0x7F, 0xC3, 0x76, 0xFD, 0xFE, 0x1, 0xFD, 0x71, 0x1, 0x3A, 0xED, 0x14, 0xF7, 0x1, 0x30, 0x7E, 0x6A, 0x6D, 0x81, 0xFE, 0xD0, 0xF8, 0x14, 0xEC, 0xFE, 0xC6, 0x0, 0x3, 0xFF, 0x49, 0xFF, 0x60, 0x5, 0x6A, 0x5, 0xFC, 0x0, 0x2, 0x0, 0x5, 0x0, 0x15, 0x0, 0x0, 0x1, 0x13, 0x27, 0x13, 0x3, 0x3, 0x1, 0x23, 0x7, 0x23, 0x1, 0x1, 0x33, 0x13, 0x1, 0x33, 0x1, 0x1, 0x21, 0x3, 0x21, 0x7, 0x2, 0x11, 0xD7, 0x3E, 0xD4, 0x5F, 0xDE, 0xFE, 0xD9, 0x95, 0x83, 0xB9, 0x1, 0x5, 0x1, 0xEA, 0xE3, 0x6D, 0x1, 0x2A, 0xB8, 0xFE, 0x58, 0x1, 0x81, 0xFE, 0xF8, 0x77, 0xFD, 0xD7, 0x13, 0x2, 0xC6, 0x1, 0x6, 0xB1, 0xFD, 0xA2, 0x1, 0xF, 0xFE, 0xF1, 0xFD, 0xE1, 0xA0, 0x1, 0x3F, 0x5, 0x11, 0xFE, 0xE0, 0x1, 0x6C, 0xFD, 0xFA, 0xFC, 0xA, 0x1, 0x54, 0x17, 0x0, 0x2, 0x0, 0x66, 0xFF, 0x83, 0x4, 0xEC, 0x6, 0x1F, 0x0, 0x8, 0x0, 0x29, 0x0, 0x0, 0x1, 0x10, 0x17, 0x1, 0x26, 0x23, 0x22, 0x6, 0x7, 0x1, 0x22, 0x27, 0x7, 0x23, 0x37, 0x26, 0x2, 0x35, 0x35, 0x10, 0x0, 0x21, 0x32, 0x17, 0x37, 0x33, 0x7, 0x16, 0x16, 0x17, 0x23, 0x26, 0x27, 0x1, 0x16, 0x33, 0x32, 0x36, 0x37, 0x33, 0x6, 0x0, 0x1, 0x65, 0x64, 0x1, 0x62, 0x30, 0x3E, 0xAB, 0xAC, 0x1, 0x1, 0x4C, 0x60, 0x54, 0x2F, 0x9A, 0x45, 0x82, 0x91, 0x1, 0x44, 0x1, 0x13, 0x62, 0x53, 0x29, 0x9A, 0x3D, 0x6D, 0x79, 0xE, 0xFC, 0x10, 0x38, 0xFE, 0x9C, 0x31, 0x3C, 0xA3, 0x89, 0x12, 0xFC, 0x13, 0xFE, 0xE5, 0x2, 0x9D, 0xFE, 0xFA, 0x79, 0x3, 0xCD, 0xD, 0xFA, 0xE4, 0xFC, 0xD2, 0x19, 0x82, 0xBE, 0x53, 0x1, 0x37, 0xD2, 0x76, 0x1, 0x3A, 0x1, 0x77, 0x16, 0x71, 0xA8, 0x41, 0xDC, 0x8B, 0x87, 0x46, 0xFC, 0x2C, 0x10, 0x97, 0x8B, 0xD4, 0xFE, 0xE6, 0x0, 0x2, 0x0, 0x50, 0xFE, 0x60, 0x3, 0xF5, 0x5, 0xB0, 0x0, 0x7, 0x0, 0x26, 0x0, 0x0, 0x1, 0x14, 0x17, 0x13, 0x27, 0x22, 0x6, 0x15, 0x13, 0x22, 0x27, 0x3, 0x23, 0x13, 0x26, 0x11, 0x35, 0x34, 0x12, 0x33, 0x32, 0x17, 0x13, 0x33, 0x3, 0x16, 0x17, 0x23, 0x26, 0x27, 0x3, 0x16, 0x33, 0x32, 0x36, 0x37, 0x33, 0x6, 0x4, 0x1, 0x42, 0x2D, 0xE8, 0x1E, 0x94, 0x63, 0xFA, 0x56, 0x4A, 0x9E, 0x9A, 0xB6, 0xCA, 0xF3, 0xF9, 0x33, 0x2F, 0x89, 0x9A, 0x9B, 0xC9, 0x6, 0xE4, 0x5, 0x34, 0xF6, 0x27, 0x31, 0x58, 0x7A, 0x5, 0xE4, 0x4, 0xFF, 0x0, 0x2, 0xB, 0x92, 0x56, 0x2, 0x66, 0x2, 0xDB, 0x81, 0xFD, 0xBD, 0x16, 0xFE, 0x5E, 0x1, 0xE1, 0x91, 0x1, 0x4B, 0x12, 0xDE, 0x1, 0x41, 0x8, 0x1, 0x6A, 0xFE, 0x67, 0x6C, 0xF4, 0x57, 0x3A, 0xFD, 0x75, 0xE, 0x68, 0x4F, 0x9D, 0xDD, 0xFF, 0xFF, 0x0, 0x1A, 0x0, 0x0, 0x4, 0x72, 0x5, 0xB0, 0x0, 0x26, 0x0, 0x31, 0x4B, 0x0, 0x0, 0x6, 0x7, 0xA4, 0x8A, 0x0, 0x0, 0x2, 0x0, 0x2D, 0xFF, 0x83, 0x4, 0xB0, 0x6, 0x1F, 0x0, 0x2, 0x0, 0x13, 0x0, 0x0, 0x1, 0x37, 0x23, 0x3, 0x35, 0x3, 0x23, 0x1, 0x11, 0x21, 0x35, 0x21, 0x37, 0x33, 0x7, 0x33, 0x15, 0x23, 0x1, 0x11, 0x2, 0xEB, 0x7A, 0x7A, 0xFC, 0xAF, 0xA0, 0x1, 0x4F, 0xFE, 0x3E, 0x3, 0xA0, 0x39, 0x9F, 0x39, 0x44, 0xAC, 0xFE, 0xE7, 0x3, 0xF9, 0xEC, 0xFB, 0x1B, 0xD8, 0xFE, 0xAB, 0x2, 0x8C, 0x2, 0xD6, 0xCB, 0x6F, 0x6F, 0xCB, 0xFD, 0xDD, 0xFD, 0x3E, 0x0, 0x1, 0x0, 0x49, 0xFE, 0x4B, 0x3, 0xC9, 0x4, 0x4E, 0x0, 0x30, 0x0, 0x0, 0x1, 0x34, 0x26, 0x27, 0x26, 0x26, 0x35, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x23, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x14, 0x16, 0x17, 0x16, 0x16, 0x15, 0x14, 0x6, 0x23, 0x22, 0x27, 0x16, 0x16, 0x33, 0x32, 0x37, 0x17, 0x6, 0x6, 0x23, 0x22, 0x26, 0x27, 0x3, 0x37, 0x16, 0x33, 0x32, 0x36, 0x2, 0xDA, 0x5B, 0x84, 0xAB, 0xE2, 0xE1, 0xC1, 0xCB, 0xE6, 0xF3, 0x60, 0x5F, 0x5C, 0x58, 0x8E, 0x60, 0xB5, 0xCB, 0xEF, 0xC7, 0x35, 0x30, 0x3B, 0x52, 0x3D, 0x4B, 0x4B, 0x51, 0x28, 0x7B, 0x4A, 0x70, 0x93, 0x3D, 0xE9, 0xC0, 0x53, 0xBA, 0x60, 0x64, 0x1, 0x26, 0x38, 0x4A, 0x1C, 0x24, 0x91, 0x8D, 0x85, 0xC3, 0xC6, 0x92, 0x3F, 0x63, 0x52, 0x36, 0x49, 0x37, 0x15, 0x27, 0x96, 0x8A, 0x90, 0xB8, 0x8, 0x71, 0x7E, 0x43, 0x8C, 0x27, 0x4A, 0x90, 0x6C, 0x1, 0xA4, 0x5E, 0xA7, 0x4A, 0x0, 0x1, 0x0, 0x52, 0xFE, 0x4B, 0x4, 0xB8, 0x4, 0x3A, 0x0, 0x18, 0x0, 0x0, 0x1, 0x22, 0x2E, 0x2, 0x23, 0x21, 0x35, 0x1, 0x21, 0x35, 0x21, 0x15, 0x1, 0x33, 0x32, 0x1E, 0x2, 0x33, 0x32, 0x37, 0x17, 0x6, 0x6, 0x3, 0xC3, 0x77, 0x83, 0x60, 0x7F, 0x73, 0xFE, 0xDB, 0x2, 0x26, 0xFD, 0xE5, 0x3, 0x4E, 0xFD, 0xD6, 0x43, 0x80, 0x9A, 0x64, 0x57, 0x3D, 0x44, 0x4C, 0x52, 0x28, 0x80, 0xFE, 0x4B, 0x84, 0xAD, 0x84, 0x9F, 0x2, 0xD7, 0xC4, 0x99, 0xFD, 0x22, 0x87, 0xB2, 0x85, 0x43, 0x8C, 0x27, 0x4A, 0x0, 0x1, 0x0, 0x37, 0x0, 0x0, 0x3, 0xF1, 0x5, 0xC4, 0x0, 0x18, 0x0, 0x0, 0x21, 0x23, 0x11, 0x33, 0x32, 0x36, 0x35, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x7, 0x23, 0x36, 0x36, 0x33, 0x32, 0x12, 0x15, 0x15, 0x14, 0x2, 0x7, 0x2, 0x86, 0xFC, 0x73, 0x96, 0x61, 0x62, 0x94, 0x63, 0x70, 0x5, 0xEF, 0x5, 0xFB, 0xC4, 0xF9, 0xFD, 0xB6, 0xB5, 0x1, 0xDE, 0xCF, 0x7F, 0x79, 0x7D, 0xD1, 0x76, 0x5E, 0xBB, 0xEA, 0xFE, 0xBF, 0xDE, 0x79, 0xBC, 0xFE, 0xDA, 0x2D, 0x0, 0x1, 0x0, 0x4C, 0x0, 0x0, 0x3, 0xA4, 0x4, 0x4E, 0x0, 0x16, 0x0, 0x0, 0x21, 0x23, 0x11, 0x33, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x23, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x6, 0x7, 0x2, 0x79, 0xF3, 0x66, 0x72, 0x54, 0x53, 0x71, 0x50, 0x60, 0xF2, 0xEA, 0xB8, 0xDB, 0xDB, 0x93, 0x98, 0x1, 0xD1, 0x82, 0x5C, 0x59, 0x83, 0x77, 0x5D, 0xB5, 0xE2, 0xE1, 0xBF, 0x8C, 0xBF, 0x19, 0xFF, 0xFF, 0x0, 0x1A, 0x0, 0x0, 0x4, 0xF1, 0x5, 0xB0, 0x0, 0x26, 0x0, 0x27, 0x4E, 0x0, 0x0, 0x7, 0x7, 0xA4, 0xFF, 0x8A, 0xFE, 0xD3, 0x0, 0x2, 0x0, 0x22, 0xFF, 0xEC, 0x6, 0x21, 0x5, 0xB0, 0x0, 0x8, 0x0, 0x1D, 0x0, 0x0, 0x25, 0x32, 0x36, 0x35, 0x35, 0x21, 0x15, 0x14, 0x16, 0x17, 0x22, 0x24, 0x35, 0x35, 0x23, 0x35, 0x33, 0x11, 0x33, 0x11, 0x21, 0x11, 0x33, 0x11, 0x33, 0x15, 0x23, 0x15, 0x14, 0x4, 0x3, 0x23, 0x87, 0x9D, 0xFD, 0xB9, 0x9E, 0x85, 0xE9, 0xFE, 0xCA, 0xE2, 0xE2, 0xFC, 0x2, 0x47, 0xFD, 0xDD, 0xDD, 0xFE, 0xC2, 0xB6, 0x91, 0x9C, 0xB5, 0xB5, 0x9C, 0x91, 0xCA, 0xFD, 0xFA, 0xB5, 0xAB, 0x2, 0x6D, 0xFD, 0x93, 0x2, 0x6D, 0xFD, 0x93, 0xAB, 0xB5, 0xFA, 0xFD, 0x0, 0x1, 0x0, 0x12, 0x0, 0x0, 0x5, 0x1C, 0x5, 0xB0, 0x0, 0x6, 0x0, 0x0, 0x21, 0x1, 0x1, 0x21, 0x1, 0x33, 0x1, 0x4, 0x7, 0xFE, 0x8E, 0xFE, 0x92, 0xFE, 0xEB, 0x2, 0xA, 0xF4, 0x2, 0xC, 0x4, 0x73, 0xFB, 0x8D, 0x5, 0xB0, 0xFA, 0x50, 0x0, 0x3, 0x0, 0x95, 0xFF, 0x83, 0x4, 0x4D, 0x6, 0x1F, 0x0, 0x3, 0x0, 0x7, 0x0, 0x1B, 0x0, 0x0, 0x1, 0x13, 0x21, 0x11, 0x13, 0x13, 0x23, 0x11, 0x5, 0x21, 0x7, 0x23, 0x37, 0x21, 0x11, 0x21, 0x37, 0x33, 0x7, 0x33, 0x15, 0x23, 0x3, 0x33, 0x15, 0x23, 0x3, 0x21, 0x2, 0x8C, 0x71, 0xFE, 0x94, 0x47, 0x7D, 0xC4, 0x2, 0xBC, 0xFD, 0xEE, 0x23, 0x9B, 0x23, 0xFE, 0xF5, 0x2, 0xA0, 0x1F, 0x9A, 0x1F, 0x77, 0xAF, 0x70, 0xC0, 0xF7, 0x7D, 0x1, 0xDA, 0x3, 0x52, 0x1, 0x93, 0xFE, 0x6D, 0xFD, 0x78, 0x1, 0xC1, 0xFE, 0x3F, 0xCA, 0x7D, 0x7D, 0x5, 0xB0, 0x6F, 0x6F, 0xCB, 0xFE, 0x6D, 0xC7, 0xFE, 0x3F, 0x0, 0x4, 0x0, 0x54, 0xFE, 0x60, 0x4, 0xC, 0x5, 0xB0, 0x0, 0x5, 0x0, 0xA, 0x0, 0xE, 0x0, 0x2B, 0x0, 0x0, 0x1, 0x22, 0x6, 0x7, 0x33, 0x13, 0x17, 0x34, 0x27, 0x7, 0x33, 0x1, 0x37, 0x23, 0x16, 0x1, 0x22, 0x27, 0x3, 0x23, 0x13, 0x26, 0x3, 0x35, 0x10, 0x0, 0x33, 0x32, 0x17, 0x13, 0x33, 0x3, 0x16, 0x11, 0x15, 0x21, 0x3, 0x16, 0x33, 0x32, 0x37, 0x17, 0x6, 0x6, 0x2, 0x36, 0x66, 0x82, 0xE, 0xBF, 0x63, 0xC0, 0x3E, 0x4A, 0x88, 0xFE, 0x56, 0x44, 0x80, 0x5, 0x1, 0x18, 0x5E, 0x52, 0x9F, 0x9B, 0xB7, 0xCF, 0x3, 0x1, 0x1B, 0xCE, 0x39, 0x33, 0x89, 0x9B, 0x9C, 0xDB, 0xFE, 0x4B, 0x66, 0x35, 0x3E, 0xAB, 0x68, 0x83, 0x34, 0xCB, 0x3, 0x8B, 0x8C, 0x7C, 0x1, 0x5, 0xF3, 0x71, 0x42, 0xC5, 0xFE, 0x9B, 0xB3, 0x68, 0xFE, 0x83, 0x1A, 0xFE, 0x5A, 0x1, 0xE5, 0x8E, 0x1, 0x1C, 0x31, 0x1, 0x1, 0x1, 0x2D, 0xA, 0x1, 0x6C, 0xFE, 0x63, 0x80, 0xFE, 0x97, 0x59, 0xFE, 0xF2, 0x14, 0x86, 0x7D, 0x4C, 0x80, 0xFF, 0xFF, 0x0, 0x2D, 0xFF, 0xEC, 0x4, 0xB1, 0x5, 0xB0, 0x0, 0x26, 0x0, 0x2F, 0x0, 0x0, 0x0, 0x7, 0x7, 0xA4, 0x1, 0x83, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x27, 0xFE, 0x4B, 0x2, 0xC5, 0x5, 0xD5, 0x0, 0x26, 0x0, 0x4F, 0x7C, 0x0, 0x0, 0x7, 0x7, 0xA4, 0xFF, 0x97, 0xFF, 0x74, 0x0, 0x2, 0x0, 0x66, 0xFE, 0x4B, 0x5, 0xD2, 0x5, 0xC4, 0x0, 0xD, 0x0, 0x27, 0x0, 0x0, 0x25, 0x32, 0x36, 0x37, 0x11, 0x26, 0x26, 0x23, 0x22, 0x2, 0x15, 0x15, 0x14, 0x12, 0x1, 0x6, 0x23, 0x22, 0x26, 0x35, 0x35, 0x6, 0x23, 0x20, 0x0, 0x11, 0x35, 0x10, 0x0, 0x21, 0x32, 0x17, 0x37, 0x33, 0x11, 0x14, 0x16, 0x33, 0x32, 0x37, 0x2, 0xDE, 0x88, 0x73, 0x1B, 0x1B, 0x73, 0x88, 0xD3, 0xA8, 0xB0, 0x3, 0xBF, 0x3E, 0x44, 0x9D, 0xBF, 0x80, 0x9D, 0xFE, 0xCE, 0xFE, 0xC1, 0x1, 0x49, 0x1, 0x28, 0xC1, 0x91, 0xA, 0xBD, 0x56, 0x41, 0x2A, 0x21, 0xBC, 0x3F, 0x1C, 0x3, 0x82, 0x1C, 0x3F, 0xFE, 0xDD, 0xC8, 0x61, 0xD6, 0xFE, 0xEA, 0xFD, 0xA0, 0x11, 0xC0, 0xB6, 0x54, 0x29, 0x1, 0x92, 0x1, 0x2A, 0x61, 0x1, 0x32, 0x1, 0x89, 0x3D, 0x29, 0xFA, 0x11, 0x62, 0x45, 0x8, 0x0, 0x2, 0x0, 0x50, 0xFE, 0x4B, 0x4, 0xE0, 0x4, 0x4E, 0x0, 0xB, 0x0, 0x25, 0x0, 0x0, 0x25, 0x32, 0x37, 0x11, 0x26, 0x23, 0x22, 0x6, 0x15, 0x15, 0x14, 0x16, 0x1, 0x6, 0x23, 0x22, 0x26, 0x35, 0x35, 0x6, 0x23, 0x22, 0x2, 0x35, 0x35, 0x34, 0x12, 0x33, 0x32, 0x17, 0x37, 0x33, 0x11, 0x14, 0x16, 0x33, 0x32, 0x37, 0x2, 0x39, 0x92, 0x45, 0x46, 0x8F, 0x83, 0x76, 0x74, 0x3, 0x2A, 0x37, 0x45, 0x7E, 0xD6, 0x6A, 0xAA, 0xCA, 0xE2, 0xE1, 0xCD, 0xB4, 0x6B, 0xD, 0xD9, 0x5D, 0x40, 0x22, 0x1E, 0xAF, 0x7C, 0x1, 0xEA, 0x76, 0xD2, 0x92, 0x15, 0x91, 0xD2, 0xFD, 0xA9, 0xD, 0x8D, 0xB3, 0xD2, 0x71, 0x1, 0x3A, 0xED, 0x14, 0xF7, 0x1, 0x30, 0x7E, 0x6A, 0xFB, 0x51, 0x56, 0x40, 0x6, 0x0, 0x2, 0x0, 0x21, 0x0, 0x0, 0x5, 0x23, 0x5, 0xB0, 0x0, 0x8, 0x0, 0x1B, 0x0, 0x0, 0x1, 0x11, 0x21, 0x32, 0x36, 0x35, 0x34, 0x26, 0x27, 0x1, 0x1, 0x21, 0x11, 0x23, 0x11, 0x23, 0x35, 0x33, 0x11, 0x21, 0x32, 0x4, 0x15, 0x14, 0x6, 0x7, 0x1, 0x15, 0x1, 0xD6, 0x1, 0x4, 0x88, 0x88, 0x80, 0x8D, 0x1, 0x37, 0xFE, 0xDC, 0xFE, 0xE6, 0xFD, 0xB8, 0xB8, 0x2, 0x0, 0xFB, 0x1, 0x12, 0x8D, 0x7D, 0x1, 0x47, 0x4, 0xE5, 0xFE, 0x17, 0x89, 0x68, 0x70, 0x87, 0x1, 0xFB, 0x1B, 0x2, 0x31, 0xFD, 0xCF, 0x2, 0x31, 0xCB, 0x2, 0xB4, 0xE0, 0xD7, 0x92, 0xC6, 0x34, 0xFD, 0xA0, 0xD, 0xFF, 0xFF, 0x0, 0x1A, 0x0, 0x0, 0x3, 0x11, 0x4, 0x4E, 0x0, 0x26, 0x0, 0x57, 0x5C, 0x0, 0x0, 0x7, 0x7, 0xA4, 0xFF, 0x8A, 0xFF, 0x47, 0x0, 0x2, 0x0, 0x22, 0x0, 0x0, 0x5, 0x73, 0x5, 0xB0, 0x0, 0x2, 0x0, 0x14, 0x0, 0x0, 0x1, 0x13, 0x21, 0x1, 0x11, 0x23, 0x11, 0x1, 0x21, 0x35, 0x33, 0x3, 0x21, 0x13, 0x21, 0x13, 0x21, 0x3, 0x33, 0x15, 0x21, 0x2, 0xCA, 0x87, 0xFE, 0xF2, 0x1, 0x6, 0xFE, 0xFE, 0xF2, 0xFE, 0xE5, 0xD2, 0x91, 0x1, 0x19, 0x84, 0x1, 0x94, 0x85, 0x1, 0x18, 0x91, 0xD3, 0xFE, 0xE4, 0x2, 0xFF, 0x1, 0x16, 0xFE, 0x3, 0xFD, 0xE8, 0x2, 0x18, 0x1, 0xFD, 0x8A, 0x1, 0x11, 0xFE, 0xEF, 0x1, 0x11, 0xFE, 0xEF, 0x8A, 0x0, 0x2, 0x0, 0x22, 0xFE, 0x4B, 0x4, 0x30, 0x4, 0x3A, 0x0, 0x2, 0x0, 0x1C, 0x0, 0x0, 0x1, 0x13, 0x23, 0x3, 0x22, 0x27, 0x35, 0x17, 0x32, 0x36, 0x37, 0x37, 0x3, 0x23, 0x35, 0x33, 0x3, 0x21, 0x13, 0x33, 0x13, 0x21, 0x3, 0x33, 0x15, 0x23, 0x1, 0x2, 0x7, 0x2, 0x36, 0x53, 0xA9, 0xC9, 0x2E, 0x47, 0x2E, 0x5A, 0x5E, 0x1C, 0x23, 0xDB, 0xCA, 0x9B, 0x72, 0x1, 0x6, 0x65, 0xFB, 0x61, 0x1, 0x3, 0x70, 0x8B, 0xB9, 0xFE, 0xF2, 0x5A, 0xCB, 0x1, 0x5C, 0x1, 0x14, 0xFB, 0xDB, 0x11, 0xBC, 0x3, 0x41, 0x51, 0x5D, 0x2, 0x6C, 0x86, 0x1, 0x44, 0xFE, 0xBC, 0x1, 0x44, 0xFE, 0xBC, 0x86, 0xFC, 0xF5, 0xFE, 0xFD, 0x15, 0x0, 0x2, 0x0, 0x59, 0xFF, 0xEC, 0x3, 0xFA, 0x4, 0x4E, 0x0, 0x9, 0x0, 0x27, 0x0, 0x0, 0x1, 0x22, 0x6, 0x7, 0x15, 0x33, 0x24, 0x35, 0x34, 0x26, 0x1, 0x14, 0x6, 0x23, 0x22, 0x26, 0x35, 0x11, 0x34, 0x27, 0x35, 0x33, 0x16, 0x17, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x4, 0x23, 0x23, 0x15, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x2, 0x5C, 0x54, 0x7A, 0x19, 0x91, 0x1, 0x1, 0x58, 0x1, 0x34, 0xF2, 0xCC, 0xB6, 0xED, 0x29, 0xF8, 0x12, 0xA, 0x72, 0xAB, 0xA1, 0xCF, 0xFE, 0xFD, 0xE9, 0x99, 0x5E, 0x60, 0x56, 0x67, 0x3, 0x8B, 0x51, 0x31, 0xCC, 0x5, 0xB0, 0x41, 0x58, 0xFD, 0xAD, 0x7F, 0xCD, 0xBA, 0xBA, 0x1, 0xE0, 0x92, 0x57, 0x11, 0x25, 0x40, 0x79, 0xB9, 0x8B, 0xAD, 0xB8, 0x47, 0x55, 0x65, 0x56, 0x3E, 0x0, 0x2, 0x0, 0x56, 0xFF, 0xEB, 0x4, 0x7A, 0x4, 0x4E, 0x0, 0x16, 0x0, 0x21, 0x0, 0x0, 0x5, 0x22, 0x27, 0x6, 0x23, 0x22, 0x2, 0x35, 0x35, 0x34, 0x12, 0x33, 0x32, 0x17, 0x37, 0x33, 0x11, 0x16, 0x33, 0x32, 0x37, 0x17, 0x6, 0x25, 0x32, 0x37, 0x11, 0x26, 0x23, 0x22, 0x6, 0x15, 0x14, 0x16, 0x3, 0xFB, 0xA3, 0x35, 0x68, 0xBF, 0xCA, 0xDC, 0xDB, 0xCD, 0xB6, 0x66, 0x14, 0xD0, 0x3, 0x46, 0x10, 0xA, 0x19, 0x33, 0xFD, 0xF3, 0x8D, 0x44, 0x44, 0x8B, 0x84, 0x6E, 0x6D, 0x15, 0xA1, 0xA1, 0x1, 0x28, 0xE7, 0x15, 0xFC, 0x1, 0x43, 0x97, 0x83, 0xFC, 0xFA, 0x7B, 0x4, 0xB3, 0x1F, 0xC3, 0x88, 0x1, 0xC9, 0x8C, 0xE0, 0xB1, 0x8B, 0xC1, 0x0, 0x2, 0x0, 0x3E, 0xFF, 0xEB, 0x4, 0x61, 0x4, 0x4E, 0x0, 0x16, 0x0, 0x21, 0x0, 0x0, 0x5, 0x22, 0x27, 0x7, 0x23, 0x11, 0x26, 0x23, 0x22, 0x7, 0x27, 0x36, 0x33, 0x32, 0x17, 0x36, 0x33, 0x32, 0x12, 0x15, 0x15, 0x14, 0x2, 0x25, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x22, 0x7, 0x11, 0x16, 0x2, 0xB9, 0xB6, 0x66, 0x13, 0xD0, 0x3, 0x46, 0xC, 0xF, 0x18, 0x32, 0x4D, 0xA3, 0x34, 0x68, 0xBF, 0xCB, 0xDB, 0xDA, 0xFE, 0xF5, 0x83, 0x6F, 0x6D, 0x83, 0x8D, 0x45, 0x44, 0x15, 0x97, 0x83, 0x3, 0x7, 0x7A, 0x5, 0xB4, 0x1F, 0xA2, 0xA1, 0xFE, 0xD8, 0xE7, 0x14, 0xFD, 0xFE, 0xBE, 0xC3, 0xE0, 0xB1, 0x8B, 0xC0, 0x88, 0xFE, 0x39, 0x8D, 0x0, 0x2, 0x0, 0x7D, 0xFF, 0xEC, 0x4, 0x32, 0x6, 0x1F, 0x0, 0x19, 0x0, 0x24, 0x0, 0x0, 0x1, 0x14, 0x2, 0x23, 0x22, 0x27, 0x7, 0x23, 0x11, 0x34, 0x36, 0x33, 0x32, 0x17, 0x15, 0x26, 0x23, 0x22, 0x6, 0x15, 0x11, 0x36, 0x33, 0x32, 0x12, 0x15, 0x1, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x22, 0x7, 0x11, 0x16, 0x4, 0x32, 0xD7, 0xCE, 0xBD, 0x6C, 0xB, 0xDC, 0xD6, 0x7E, 0x49, 0x33, 0x25, 0x1B, 0x41, 0x5D, 0x6A, 0xB2, 0xD1, 0xD6, 0xFE, 0x1D, 0x87, 0x6A, 0x67, 0x8C, 0x9B, 0x43, 0x44, 0x2, 0x12, 0xEF, 0xFE, 0xC9, 0x8A, 0x76, 0x4, 0xE0, 0xB3, 0x8C, 0xF, 0xA2, 0x7, 0x3F, 0x56, 0xFE, 0xF2, 0x7C, 0xFE, 0xCD, 0xF4, 0xFE, 0x8C, 0xCA, 0xAA, 0x8F, 0xD2, 0x8C, 0xFE, 0x44, 0x8D, 0x0, 0x1, 0x0, 0x3B, 0xFF, 0xEC, 0x3, 0xE1, 0x4, 0x4E, 0x0, 0x1B, 0x0, 0x0, 0x13, 0x33, 0x16, 0x16, 0x33, 0x32, 0x36, 0x35, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x7, 0x23, 0x36, 0x36, 0x33, 0x32, 0x12, 0x17, 0x15, 0x14, 0x2, 0x23, 0x22, 0x24, 0x3B, 0xE5, 0x5, 0x7A, 0x58, 0x95, 0x62, 0x62, 0x95, 0x63, 0x6F, 0x5, 0xE5, 0x5, 0xF1, 0xC4, 0xF7, 0xF3, 0x2, 0xF3, 0xFA, 0xB4, 0xFF, 0x0, 0x1, 0x66, 0x4F, 0x68, 0xD9, 0x83, 0x24, 0x81, 0xDB, 0x7D, 0x57, 0xB3, 0xE4, 0xFE, 0xC4, 0xDD, 0x2A, 0xDF, 0xFE, 0xC0, 0xDD, 0x0, 0x2, 0x0, 0x2D, 0xFF, 0x7A, 0x4, 0x9, 0x4, 0x4E, 0x0, 0x9, 0x0, 0x2B, 0x0, 0x0, 0x25, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x22, 0x7, 0x16, 0x7, 0x7, 0x27, 0x37, 0x26, 0x35, 0x35, 0x34, 0x12, 0x33, 0x32, 0x16, 0x17, 0x23, 0x26, 0x26, 0x23, 0x22, 0x6, 0x15, 0x15, 0x14, 0x17, 0x36, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x6, 0x23, 0x22, 0x27, 0x2, 0x5B, 0x4E, 0x7B, 0x36, 0x20, 0x63, 0x99, 0x38, 0xC7, 0x78, 0x9E, 0x93, 0x5C, 0xF3, 0xF9, 0xC5, 0xF0, 0x4, 0xE4, 0x5, 0x70, 0x63, 0x94, 0x63, 0xF, 0x63, 0xB2, 0x6B, 0x99, 0x8B, 0xF7, 0xC2, 0x95, 0x6D, 0xAF, 0x44, 0x3C, 0x2D, 0x22, 0xAE, 0x21, 0x91, 0xA4, 0x79, 0xC1, 0x8C, 0xCB, 0x24, 0xDE, 0x1, 0x41, 0xE4, 0xB3, 0x57, 0x7D, 0xDB, 0x81, 0x24, 0x55, 0x3F, 0x69, 0x5E, 0x93, 0x67, 0x94, 0xC4, 0x40, 0x0, 0x2, 0x0, 0x50, 0xFE, 0x4B, 0x4, 0xE0, 0x6, 0x0, 0x0, 0xB, 0x0, 0x25, 0x0, 0x0, 0x25, 0x32, 0x37, 0x11, 0x26, 0x23, 0x22, 0x6, 0x15, 0x15, 0x14, 0x16, 0x1, 0x6, 0x23, 0x22, 0x26, 0x35, 0x35, 0x6, 0x23, 0x22, 0x2, 0x35, 0x35, 0x34, 0x12, 0x33, 0x32, 0x17, 0x11, 0x33, 0x11, 0x14, 0x16, 0x33, 0x32, 0x37, 0x2, 0x37, 0x95, 0x45, 0x44, 0x94, 0x84, 0x73, 0x72, 0x3, 0x2C, 0x36, 0x45, 0x7E, 0xD6, 0x6B, 0xAD, 0xC3, 0xE6, 0xE5, 0xC6, 0xAC, 0x6A, 0xF3, 0x5C, 0x41, 0x23, 0x1C, 0xB3, 0x86, 0x1, 0xCD, 0x82, 0xD0, 0x92, 0x15, 0x91, 0xCD, 0xFD, 0xA5, 0xD, 0x8D, 0xB3, 0xD8, 0x77, 0x1, 0x39, 0xEC, 0x15, 0xF7, 0x1, 0x31, 0x77, 0x2, 0x29, 0xF9, 0x8B, 0x56, 0x40, 0x6, 0x0, 0x2, 0x0, 0x50, 0xFF, 0xEC, 0x4, 0xE0, 0x6, 0x1F, 0x0, 0xB, 0x0, 0x25, 0x0, 0x0, 0x25, 0x32, 0x37, 0x11, 0x26, 0x23, 0x22, 0x6, 0x15, 0x15, 0x14, 0x16, 0x5, 0x27, 0x6, 0x23, 0x22, 0x2, 0x35, 0x35, 0x34, 0x12, 0x33, 0x32, 0x17, 0x11, 0x34, 0x36, 0x33, 0x32, 0x17, 0x15, 0x26, 0x23, 0x22, 0x6, 0x15, 0x11, 0x2, 0x37, 0x95, 0x45, 0x44, 0x94, 0x84, 0x73, 0x72, 0x1, 0x7D, 0x11, 0x6D, 0xBA, 0xC3, 0xE6, 0xE5, 0xC6, 0xAC, 0x6A, 0xD6, 0x7E, 0x48, 0x33, 0x23, 0x1C, 0x41, 0x5C, 0xB3, 0x86, 0x1, 0xCD, 0x82, 0xD0, 0x92, 0x15, 0x91, 0xCD, 0xB3, 0x75, 0x89, 0x1, 0x39, 0xEC, 0x15, 0xF7, 0x1, 0x31, 0x77, 0x1, 0x9, 0xB3, 0x8C, 0xF, 0xA2, 0x7, 0x3F, 0x56, 0xFB, 0x20, 0x0, 0x2, 0x0, 0x40, 0xFF, 0xEC, 0x3, 0xF8, 0x4, 0x4E, 0x0, 0x7, 0x0, 0x1C, 0x0, 0x0, 0x1, 0x21, 0x26, 0x26, 0x23, 0x22, 0x6, 0x7, 0x13, 0x22, 0x26, 0x27, 0x37, 0x16, 0x33, 0x32, 0x36, 0x37, 0x21, 0x35, 0x34, 0x12, 0x33, 0x32, 0x0, 0x11, 0x15, 0x14, 0x0, 0x1, 0x30, 0x1, 0xCE, 0x11, 0x7B, 0x63, 0x79, 0x61, 0x5, 0xC2, 0xA1, 0xCC, 0x34, 0x83, 0x68, 0xA8, 0x80, 0x95, 0xA, 0xFD, 0x3D, 0xE2, 0xEC, 0xCE, 0x1, 0x1C, 0xFE, 0xEB, 0x2, 0x83, 0x7C, 0x8C, 0x97, 0x5F, 0xFD, 0x57, 0x80, 0x4C, 0x7D, 0x86, 0xA5, 0x7D, 0x67, 0xEA, 0x1, 0x2C, 0xFE, 0xD3, 0xFE, 0xFF, 0x29, 0xDF, 0xFE, 0xD4, 0x0, 0x2, 0x0, 0x5A, 0xFF, 0xEB, 0x3, 0xF8, 0x4, 0x50, 0x0, 0x15, 0x0, 0x1D, 0x0, 0x0, 0x1, 0x14, 0x0, 0x27, 0x22, 0x2, 0x35, 0x35, 0x21, 0x26, 0x26, 0x23, 0x22, 0x6, 0x7, 0x27, 0x36, 0x36, 0x33, 0x32, 0x0, 0x15, 0x1, 0x32, 0x36, 0x37, 0x21, 0x15, 0x14, 0x16, 0x3, 0xF8, 0xFE, 0xF1, 0xCB, 0xE2, 0xE2, 0x2, 0xA9, 0xA, 0x87, 0x80, 0x6B, 0x8C, 0x38, 0x4E, 0x35, 0xC6, 0x91, 0xEA, 0x1, 0xD, 0xFE, 0x26, 0x5B, 0x74, 0x11, 0xFE, 0x4C, 0x64, 0x2, 0xE, 0xED, 0xFE, 0xCA, 0x2, 0x1, 0xE, 0xD9, 0x90, 0x7C, 0xAD, 0x37, 0x26, 0x9F, 0x2F, 0x52, 0xFE, 0xCE, 0xE8, 0xFE, 0x7A, 0x93, 0x6F, 0x1A, 0x5F, 0x89, 0x0, 0x2, 0x0, 0x40, 0xFF, 0xEC, 0x5, 0xAD, 0x4, 0x4E, 0x0, 0x20, 0x0, 0x28, 0x0, 0x0, 0x5, 0x22, 0x2, 0x35, 0x35, 0x25, 0x26, 0x26, 0x23, 0x22, 0x7, 0x27, 0x36, 0x36, 0x33, 0x32, 0x16, 0x17, 0x37, 0x16, 0x16, 0x33, 0x37, 0x17, 0x6, 0x23, 0x22, 0x26, 0x27, 0x7, 0x15, 0x6, 0x0, 0x27, 0x32, 0x36, 0x35, 0x5, 0x15, 0x14, 0x16, 0x2, 0xE, 0xEC, 0xE2, 0x2, 0xAD, 0x1E, 0x88, 0x63, 0xA8, 0x68, 0x83, 0x34, 0xCC, 0xA1, 0xBA, 0xFC, 0x32, 0xDD, 0x15, 0x35, 0x52, 0x3B, 0x1F, 0x41, 0x4C, 0x85, 0x63, 0x1A, 0x26, 0x1, 0xFE, 0xE5, 0xCD, 0x76, 0x80, 0xFE, 0x2B, 0x66, 0x14, 0x1, 0x2C, 0xEA, 0x3E, 0x91, 0x54, 0x66, 0x86, 0x7D, 0x4D, 0x7F, 0xB8, 0x95, 0x2D, 0x8B, 0xA5, 0x3, 0x95, 0x24, 0xA2, 0x70, 0x8, 0x3C, 0xFD, 0xFE, 0xD3, 0xC3, 0xC3, 0xAD, 0x5F, 0x1B, 0x5E, 0x98, 0xFF, 0xFF, 0x0, 0x61, 0xFF, 0xEC, 0x4, 0xD, 0x4, 0x4D, 0x0, 0x6, 0x2, 0x3E, 0x0, 0x0, 0x0, 0x1, 0x0, 0x54, 0xFF, 0xEC, 0x4, 0x0, 0x4, 0x4D, 0x0, 0x26, 0x0, 0x0, 0x5, 0x22, 0x26, 0x26, 0x35, 0x33, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x34, 0x27, 0x23, 0x35, 0x33, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x23, 0x34, 0x24, 0x33, 0x32, 0x16, 0x15, 0x14, 0x7, 0x16, 0x15, 0x14, 0x4, 0x2, 0x23, 0x71, 0xD5, 0x89, 0xF2, 0x7A, 0x6A, 0x6E, 0x75, 0xD1, 0xD2, 0xC7, 0x68, 0x61, 0x63, 0x6D, 0x59, 0x7A, 0xF2, 0x1, 0x8, 0xB6, 0xCD, 0xFD, 0xB8, 0xCB, 0xFE, 0xF0, 0x14, 0x48, 0x97, 0x76, 0x3D, 0x5D, 0x5C, 0x3A, 0x91, 0x4, 0xAD, 0x4C, 0x3C, 0x34, 0x57, 0x4D, 0x3E, 0x98, 0xAE, 0xA1, 0x9A, 0x98, 0x4D, 0x42, 0xB9, 0x9A, 0xAC, 0x0, 0x1, 0x0, 0x54, 0xFF, 0xEC, 0x5, 0xC2, 0x4, 0x4D, 0x0, 0x32, 0x0, 0x0, 0x5, 0x22, 0x26, 0x26, 0x35, 0x33, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x34, 0x27, 0x23, 0x35, 0x33, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x23, 0x34, 0x24, 0x33, 0x32, 0x16, 0x17, 0x37, 0x16, 0x16, 0x33, 0x37, 0x17, 0x6, 0x23, 0x22, 0x26, 0x27, 0x7, 0x6, 0x7, 0x16, 0x15, 0x14, 0x4, 0x2, 0x23, 0x71, 0xD5, 0x89, 0xF2, 0x7A, 0x6A, 0x6E, 0x75, 0xD1, 0xD2, 0xC7, 0x68, 0x61, 0x63, 0x6D, 0x59, 0x7A, 0xF2, 0x1, 0x8, 0xB6, 0xA3, 0xE6, 0x2B, 0xF4, 0x16, 0x34, 0x52, 0x3C, 0x1F, 0x43, 0x4B, 0x84, 0x63, 0x1A, 0x51, 0x26, 0x87, 0xCB, 0xFE, 0xF0, 0x14, 0x48, 0x97, 0x76, 0x3D, 0x5D, 0x5C, 0x3A, 0x91, 0x4, 0xAD, 0x4C, 0x3C, 0x34, 0x57, 0x4D, 0x3E, 0x98, 0xAE, 0x67, 0x63, 0x32, 0x8A, 0xA6, 0x4, 0x96, 0x24, 0xA3, 0x70, 0x12, 0x6A, 0x39, 0x42, 0xB9, 0x9A, 0xAC, 0x0, 0x2, 0x0, 0x53, 0xFF, 0xEC, 0x3, 0xE2, 0x4, 0x4D, 0x0, 0x12, 0x0, 0x28, 0x0, 0x0, 0x25, 0x32, 0x36, 0x35, 0x34, 0x27, 0x23, 0x35, 0x33, 0x36, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x14, 0x16, 0x17, 0x22, 0x26, 0x26, 0x35, 0x31, 0x35, 0x31, 0x31, 0x34, 0x36, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x7, 0x16, 0x15, 0x14, 0x6, 0x2, 0x2D, 0x64, 0x5E, 0xB7, 0x58, 0x62, 0x9A, 0x4D, 0x62, 0x5B, 0x8D, 0x7D, 0x64, 0x6D, 0xD7, 0x8F, 0x89, 0xD6, 0x74, 0xC4, 0xE5, 0xA6, 0xB9, 0xF8, 0xA6, 0x5D, 0x3A, 0x92, 0x2, 0xB0, 0x5, 0x81, 0x34, 0x57, 0x97, 0xD4, 0xD2, 0xAF, 0xBA, 0x60, 0xF8, 0xE3, 0x1, 0xD3, 0xEF, 0x63, 0xA1, 0x9A, 0x99, 0x4C, 0x41, 0xBA, 0x9A, 0xAC, 0x0, 0x1, 0x0, 0x39, 0xFE, 0x4B, 0x2, 0xB2, 0x4, 0x3A, 0x0, 0x13, 0x0, 0x0, 0x13, 0x22, 0x27, 0x35, 0x16, 0x33, 0x32, 0x37, 0x35, 0x23, 0x35, 0x33, 0x11, 0x33, 0x11, 0x33, 0x15, 0x23, 0x15, 0x2, 0xBA, 0x45, 0x3C, 0x2D, 0x2A, 0x7A, 0x1, 0xCD, 0xCD, 0xF3, 0xB4, 0xB4, 0x8, 0xFE, 0x4B, 0x11, 0xBF, 0x8, 0x8B, 0x62, 0xAB, 0x3, 0x8F, 0xFC, 0x71, 0xAB, 0x70, 0xFE, 0xBB, 0x0, 0x2, 0x0, 0x52, 0xFE, 0x56, 0x4, 0xEA, 0x5, 0x72, 0x0, 0xB, 0x0, 0x30, 0x0, 0x0, 0x25, 0x32, 0x37, 0x11, 0x26, 0x23, 0x22, 0x6, 0x15, 0x15, 0x14, 0x16, 0x13, 0x22, 0x26, 0x27, 0x37, 0x16, 0x33, 0x32, 0x36, 0x35, 0x35, 0x6, 0x23, 0x22, 0x2, 0x27, 0x35, 0x34, 0x12, 0x33, 0x32, 0x17, 0x35, 0x36, 0x36, 0x33, 0x32, 0x17, 0x15, 0x26, 0x23, 0x22, 0x6, 0x15, 0x11, 0x14, 0x4, 0x2, 0x40, 0x96, 0x44, 0x43, 0x95, 0x84, 0x79, 0x78, 0x65, 0x59, 0xF4, 0x48, 0x73, 0x70, 0xA4, 0x79, 0x8D, 0x6A, 0xAE, 0xC6, 0xE8, 0x2, 0xE9, 0xC9, 0xAF, 0x67, 0x1, 0xD5, 0x7E, 0x49, 0x33, 0x25, 0x1B, 0x40, 0x5D, 0xFE, 0xEF, 0xB3, 0x80, 0x1, 0xD9, 0x7C, 0xD0, 0x92, 0x15, 0x91, 0xCD, 0xFD, 0xA3, 0x51, 0x62, 0x91, 0x85, 0x85, 0x7F, 0x49, 0x76, 0x1, 0x35, 0xE8, 0x1D, 0xF7, 0x1, 0x31, 0x70, 0x58, 0xB1, 0x8B, 0xF, 0xA2, 0x7, 0x3F, 0x56, 0xFB, 0xEB, 0xDB, 0xED, 0xFF, 0xFF, 0x0, 0x52, 0xFE, 0x56, 0x4, 0xD, 0x4, 0x4E, 0x0, 0x6, 0x0, 0x4C, 0x0, 0x0, 0x0, 0x1, 0x0, 0x68, 0xFF, 0xED, 0x4, 0x66, 0x4, 0x4E, 0x0, 0x1E, 0x0, 0x0, 0x1, 0x11, 0x6, 0x6, 0x23, 0x22, 0x0, 0x35, 0x35, 0x34, 0x0, 0x33, 0x32, 0x16, 0x17, 0x23, 0x26, 0x23, 0x22, 0x6, 0x15, 0x15, 0x14, 0x16, 0x33, 0x32, 0x36, 0x37, 0x35, 0x23, 0x35, 0x4, 0x66, 0x2C, 0xF0, 0xD1, 0xEA, 0xFE, 0xD9, 0x1, 0x26, 0xE2, 0xE4, 0xED, 0x12, 0xF2, 0x1C, 0xD5, 0x7C, 0x99, 0x98, 0x86, 0x6C, 0x71, 0x18, 0xEF, 0x2, 0x36, 0xFE, 0x6A, 0x38, 0x7B, 0x1, 0xC, 0xD4, 0xA4, 0xD4, 0x1, 0x9, 0xCA, 0xAC, 0xB6, 0xA2, 0x7A, 0xA5, 0x79, 0xA6, 0x27, 0x11, 0x9E, 0xB2, 0x0, 0x2, 0x0, 0x14, 0xFE, 0x4B, 0x4, 0x63, 0x4, 0x3A, 0x0, 0x11, 0x0, 0x18, 0x0, 0x0, 0x1, 0x22, 0x26, 0x35, 0x34, 0x37, 0x13, 0x1, 0x21, 0x1, 0x1, 0x21, 0x1, 0x13, 0x16, 0x15, 0x14, 0x6, 0x26, 0x35, 0x34, 0x27, 0x6, 0x15, 0x14, 0x2, 0x3B, 0x88, 0xAD, 0x33, 0x87, 0xFE, 0x54, 0x1, 0x3, 0x1, 0x25, 0x1, 0x25, 0x1, 0x2, 0xFE, 0x56, 0x82, 0x31, 0xAA, 0x48, 0x3C, 0x42, 0xFE, 0x4B, 0x7F, 0x7C, 0x4D, 0x65, 0x1, 0xC, 0x3, 0x36, 0xFD, 0xBD, 0x2, 0x43, 0xFC, 0xC5, 0xFE, 0xFE, 0x63, 0x54, 0x7C, 0x7F, 0xBB, 0x4B, 0x41, 0x7D, 0x87, 0x37, 0x4B, 0x0, 0x2, 0x0, 0x1B, 0xFF, 0xEC, 0x5, 0x1, 0x4, 0x4E, 0x0, 0x7, 0x0, 0x2A, 0x0, 0x0, 0x25, 0x32, 0x35, 0x34, 0x27, 0x6, 0x15, 0x14, 0x6, 0x26, 0x35, 0x34, 0x36, 0x37, 0x26, 0x26, 0x23, 0x22, 0x7, 0x27, 0x36, 0x36, 0x33, 0x32, 0x16, 0x17, 0x36, 0x36, 0x33, 0x32, 0x16, 0x17, 0x7, 0x26, 0x23, 0x22, 0x6, 0x7, 0x16, 0x16, 0x15, 0x14, 0x6, 0x2, 0x8E, 0x3C, 0x3C, 0x3D, 0x48, 0x9C, 0x57, 0x46, 0x5F, 0x60, 0x38, 0x34, 0x3F, 0x85, 0x32, 0x83, 0x65, 0x6A, 0xA4, 0x4B, 0x4B, 0xA4, 0x69, 0x66, 0x83, 0x32, 0x86, 0x3F, 0x34, 0x38, 0x60, 0x5F, 0x46, 0x57, 0x9B, 0xA7, 0x40, 0x2B, 0x67, 0x69, 0x29, 0x40, 0xBB, 0x7E, 0x75, 0x50, 0xB1, 0x79, 0xA4, 0x6F, 0x49, 0x93, 0x3B, 0x5D, 0x9B, 0x77, 0x77, 0x9B, 0x5D, 0x3B, 0x93, 0x49, 0x6F, 0xA4, 0x7A, 0xB0, 0x50, 0x75, 0x7E, 0x0, 0x1, 0x0, 0x78, 0xFE, 0x60, 0x3, 0xF8, 0x4, 0x3A, 0x0, 0x11, 0x0, 0x0, 0x1, 0x23, 0x11, 0x6, 0x23, 0x22, 0x26, 0x35, 0x11, 0x33, 0x11, 0x14, 0x16, 0x33, 0x32, 0x37, 0x11, 0x33, 0x3, 0xF8, 0xF3, 0x76, 0xB7, 0x9F, 0xC1, 0xF3, 0x62, 0x5E, 0x92, 0x48, 0xF3, 0xFE, 0x60, 0x2, 0x16, 0x8A, 0xB9, 0xDC, 0x2, 0xB9, 0xFD, 0x45, 0x70, 0x5D, 0x81, 0x3, 0x7, 0x0, 0x1, 0x0, 0x7A, 0x0, 0x0, 0x3, 0xF9, 0x6, 0x1F, 0x0, 0x1B, 0x0, 0x0, 0x1, 0x22, 0x7, 0x11, 0x23, 0x11, 0x34, 0x36, 0x33, 0x32, 0x17, 0x15, 0x26, 0x23, 0x22, 0x6, 0x15, 0x11, 0x36, 0x33, 0x32, 0x16, 0x17, 0x11, 0x23, 0x11, 0x34, 0x26, 0x2, 0x47, 0x93, 0x48, 0xF2, 0xD6, 0x7E, 0x48, 0x33, 0x23, 0x1C, 0x41, 0x5D, 0x76, 0xB7, 0x9F, 0xC0, 0x1, 0xF3, 0x62, 0x3, 0x88, 0x83, 0xFC, 0xFB, 0x4, 0xE0, 0xB3, 0x8C, 0xF, 0xA2, 0x7, 0x3F, 0x56, 0xFE, 0xE3, 0x8B, 0xB6, 0xDA, 0xFD, 0x42, 0x2, 0xBB, 0x71, 0x5C, 0x0, 0x1, 0x0, 0x7A, 0xFE, 0x7D, 0x3, 0xF9, 0x6, 0x1F, 0x0, 0x25, 0x0, 0x0, 0x1, 0x22, 0x27, 0x35, 0x16, 0x33, 0x32, 0x36, 0x35, 0x11, 0x34, 0x26, 0x23, 0x22, 0x7, 0x11, 0x23, 0x11, 0x34, 0x36, 0x33, 0x32, 0x17, 0x15, 0x26, 0x23, 0x22, 0x6, 0x15, 0x11, 0x36, 0x33, 0x32, 0x16, 0x17, 0x11, 0x14, 0x6, 0x2, 0xA5, 0x43, 0x39, 0x1D, 0x23, 0x41, 0x5C, 0x62, 0x5D, 0x93, 0x48, 0xF2, 0xD6, 0x7E, 0x48, 0x33, 0x23, 0x1C, 0x41, 0x5D, 0x76, 0xB7, 0x9F, 0xC0, 0x1, 0xD6, 0xFE, 0x7D, 0xF, 0xA3, 0x7, 0x3F, 0x56, 0x2, 0xFE, 0x71, 0x5C, 0x83, 0xFC, 0xFB, 0x4, 0xE0, 0xB3, 0x8C, 0xF, 0xA2, 0x7, 0x3F, 0x56, 0xFE, 0xE3, 0x8B, 0xB6, 0xDA, 0xFC, 0xFF, 0xB3, 0x8D, 0xFF, 0xFF, 0x0, 0x14, 0x0, 0x0, 0x2, 0xB2, 0x5, 0xD5, 0x0, 0x26, 0x0, 0x4E, 0x5D, 0x0, 0x0, 0x7, 0x7, 0xA4, 0xFF, 0x84, 0xFF, 0x74, 0x0, 0x1, 0x0, 0x77, 0xFF, 0xEC, 0x2, 0x47, 0x4, 0x3A, 0x0, 0xD, 0x0, 0x0, 0x13, 0x33, 0x11, 0x14, 0x16, 0x33, 0x32, 0x37, 0x15, 0x6, 0x23, 0x22, 0x26, 0x35, 0x77, 0xF3, 0x5D, 0x40, 0x1F, 0x21, 0x36, 0x46, 0x7D, 0xD7, 0x4, 0x3A, 0xFC, 0xF1, 0x55, 0x41, 0x7, 0xA3, 0xD, 0x8D, 0xB2, 0x0, 0x1, 0x0, 0x5D, 0x0, 0x0, 0x2, 0x7A, 0x4, 0x3A, 0x0, 0xB, 0x0, 0x0, 0x21, 0x21, 0x35, 0x33, 0x11, 0x23, 0x35, 0x21, 0x15, 0x23, 0x11, 0x33, 0x2, 0x7A, 0xFD, 0xE3, 0x93, 0x93, 0x2, 0x1D, 0x97, 0x97, 0xC4, 0x2, 0xB3, 0xC3, 0xC3, 0xFD, 0x4D, 0xFF, 0xFF, 0x0, 0x14, 0x0, 0x0, 0x2, 0xF2, 0x6, 0x0, 0x0, 0x26, 0x0, 0x51, 0x79, 0x0, 0x0, 0x7, 0x1, 0x8D, 0xFF, 0x9A, 0xFD, 0xB9, 0x0, 0x2, 0x0, 0x22, 0x0, 0x0, 0x3, 0xB8, 0x6, 0x0, 0x0, 0x8, 0x0, 0x1A, 0x0, 0x0, 0x1, 0x35, 0x34, 0x26, 0x23, 0x22, 0x15, 0x14, 0x33, 0x5, 0x23, 0x11, 0x23, 0x11, 0x23, 0x22, 0x26, 0x35, 0x34, 0x36, 0x33, 0x32, 0x17, 0x11, 0x33, 0x11, 0x33, 0x1, 0xD1, 0x33, 0x38, 0x61, 0x6B, 0x2, 0x48, 0xF4, 0xF3, 0x7C, 0x8B, 0xA8, 0xAD, 0x9A, 0x38, 0x30, 0xF3, 0xF4, 0x2, 0xE4, 0x4C, 0x30, 0x3F, 0x5E, 0x5D, 0xB5, 0xFD, 0xD1, 0x2, 0x2F, 0x8E, 0x80, 0x78, 0x99, 0xA, 0x1, 0xBC, 0xFC, 0xE4, 0x0, 0x1, 0x0, 0xB7, 0xFE, 0x4B, 0x2, 0x87, 0x6, 0x0, 0x0, 0xD, 0x0, 0x0, 0x13, 0x33, 0x11, 0x14, 0x16, 0x33, 0x32, 0x37, 0x15, 0x6, 0x23, 0x22, 0x26, 0x35, 0xB7, 0xF3, 0x5D, 0x40, 0x24, 0x1C, 0x36, 0x46, 0x7D, 0xD7, 0x6, 0x0, 0xF9, 0x8B, 0x56, 0x40, 0x6, 0xA3, 0xD, 0x8D, 0xB3, 0x0, 0x1, 0x0, 0x8C, 0xFE, 0x4B, 0x4, 0x75, 0x6, 0x0, 0x0, 0x1C, 0x0, 0x0, 0x1, 0x22, 0x24, 0x27, 0x33, 0x16, 0x33, 0x32, 0x36, 0x35, 0x10, 0x25, 0x23, 0x35, 0x1, 0x21, 0x11, 0x23, 0x11, 0x33, 0x11, 0x21, 0x17, 0x1, 0x16, 0x16, 0x15, 0x14, 0x4, 0x2, 0x74, 0xB3, 0xFE, 0xED, 0x22, 0xF3, 0x26, 0xCF, 0x80, 0x8E, 0xFE, 0xE0, 0x7F, 0x1, 0x4E, 0xFE, 0x4E, 0xF3, 0xF3, 0x2, 0xCB, 0x1, 0xFE, 0x8E, 0xC5, 0xD7, 0xFE, 0xDF, 0xFE, 0x4B, 0x9D, 0xC3, 0x9D, 0x8A, 0x6E, 0x1, 0x5, 0x6, 0xAC, 0x1, 0xBA, 0xFC, 0x89, 0x6, 0x0, 0xFE, 0x3A, 0x9B, 0xFE, 0x1A, 0x19, 0xE6, 0xC2, 0xCD, 0xE0, 0x0, 0x1, 0x0, 0x7D, 0xFF, 0xEC, 0x6, 0x7A, 0x4, 0x3A, 0x0, 0x1F, 0x0, 0x0, 0x21, 0x27, 0x6, 0x23, 0x22, 0x27, 0x6, 0x6, 0x23, 0x22, 0x26, 0x27, 0x11, 0x33, 0x11, 0x14, 0x16, 0x33, 0x32, 0x36, 0x37, 0x11, 0x33, 0x11, 0x14, 0x16, 0x33, 0x32, 0x37, 0x11, 0x33, 0x11, 0x5, 0x95, 0x7, 0x73, 0xC5, 0xD8, 0x51, 0x35, 0xA7, 0x70, 0xA5, 0xBE, 0x1, 0xF3, 0x69, 0x59, 0x52, 0x69, 0x15, 0xF3, 0x69, 0x5A, 0x93, 0x3C, 0xF3, 0x71, 0x85, 0xA5, 0x4B, 0x5A, 0xB8, 0xD4, 0x2, 0xC2, 0xFD, 0x42, 0x78, 0x52, 0x58, 0x47, 0x2, 0xE9, 0xFD, 0x44, 0x72, 0x5A, 0x78, 0x3, 0x10, 0xFB, 0xC6, 0x0, 0x1, 0x0, 0x7D, 0xFE, 0x60, 0x6, 0x7A, 0x4, 0x3A, 0x0, 0x1F, 0x0, 0x0, 0x1, 0x23, 0x11, 0x6, 0x23, 0x22, 0x27, 0x6, 0x6, 0x23, 0x22, 0x26, 0x27, 0x11, 0x33, 0x11, 0x14, 0x16, 0x33, 0x32, 0x36, 0x37, 0x11, 0x33, 0x11, 0x14, 0x16, 0x33, 0x32, 0x37, 0x11, 0x33, 0x6, 0x7A, 0xF3, 0x72, 0xBF, 0xD8, 0x51, 0x35, 0xA7, 0x70, 0xA5, 0xBE, 0x1, 0xF3, 0x69, 0x59, 0x52, 0x69, 0x15, 0xF3, 0x69, 0x5A, 0x93, 0x3C, 0xF3, 0xFE, 0x60, 0x2, 0x9, 0x7D, 0xA5, 0x4B, 0x5A, 0xB8, 0xD4, 0x2, 0xC2, 0xFD, 0x42, 0x78, 0x52, 0x58, 0x47, 0x2, 0xE9, 0xFD, 0x44, 0x72, 0x5A, 0x78, 0x3, 0x10, 0x0, 0x1, 0x0, 0x7D, 0xFE, 0x4B, 0x6, 0x7A, 0x4, 0x4E, 0x0, 0x28, 0x0, 0x0, 0x1, 0x22, 0x27, 0x35, 0x16, 0x33, 0x32, 0x36, 0x35, 0x11, 0x34, 0x26, 0x23, 0x22, 0x6, 0x7, 0x11, 0x23, 0x11, 0x34, 0x26, 0x23, 0x22, 0x7, 0x11, 0x23, 0x11, 0x33, 0x17, 0x36, 0x33, 0x32, 0x17, 0x36, 0x33, 0x32, 0x16, 0x15, 0x11, 0x14, 0x6, 0x5, 0x26, 0x43, 0x39, 0x1D, 0x23, 0x41, 0x5C, 0x69, 0x5A, 0x53, 0x69, 0x14, 0xF3, 0x68, 0x5A, 0x93, 0x3D, 0xF2, 0xE4, 0x7, 0x73, 0xC6, 0xD7, 0x51, 0x77, 0xD6, 0xA7, 0xBD, 0xD7, 0xFE, 0x4B, 0xF, 0xA3, 0x7, 0x3F, 0x56, 0x3, 0x33, 0x78, 0x52, 0x5A, 0x48, 0xFD, 0x1A, 0x2, 0xBC, 0x72, 0x5A, 0x78, 0xFC, 0xF0, 0x4, 0x3A, 0x71, 0x85, 0xA5, 0xA5, 0xBA, 0xD7, 0xFC, 0xCE, 0xB3, 0x8D, 0x0, 0x1, 0xFF, 0xF9, 0xFE, 0x4B, 0x4, 0x56, 0x4, 0x4E, 0x0, 0x1B, 0x0, 0x0, 0x13, 0x22, 0x27, 0x35, 0x16, 0x33, 0x32, 0x36, 0x35, 0x11, 0x33, 0x17, 0x36, 0x33, 0x32, 0x16, 0x17, 0x11, 0x23, 0x11, 0x34, 0x26, 0x23, 0x22, 0x7, 0x11, 0x14, 0x6, 0x75, 0x42, 0x3A, 0x1D, 0x23, 0x41, 0x5D, 0xE4, 0x8, 0x77, 0xC3, 0x9C, 0xBC, 0x1, 0xF3, 0x62, 0x5D, 0x92, 0x49, 0xD6, 0xFE, 0x4B, 0xF, 0xA3, 0x7, 0x3F, 0x56, 0x4, 0xAF, 0x7D, 0x91, 0xB3, 0xDA, 0xFD, 0x3F, 0x2, 0xBE, 0x70, 0x5A, 0x86, 0xFC, 0x89, 0xB3, 0x8D, 0x0, 0x1, 0x0, 0x7A, 0xFE, 0x4B, 0x4, 0xD6, 0x4, 0x4E, 0x0, 0x1B, 0x0, 0x0, 0x1, 0x6, 0x23, 0x22, 0x26, 0x35, 0x11, 0x34, 0x26, 0x23, 0x22, 0x7, 0x11, 0x23, 0x11, 0x33, 0x17, 0x36, 0x33, 0x32, 0x16, 0x17, 0x11, 0x14, 0x16, 0x33, 0x32, 0x37, 0x4, 0xD6, 0x37, 0x45, 0x7E, 0xD6, 0x61, 0x5E, 0x91, 0x49, 0xF3, 0xE5, 0x8, 0x77, 0xC2, 0x9C, 0xBC, 0x1, 0x5D, 0x40, 0x22, 0x1E, 0xFE, 0x58, 0xD, 0x8D, 0xB3, 0x3, 0x33, 0x70, 0x5A, 0x84, 0xFC, 0xFC, 0x4, 0x3A, 0x7C, 0x90, 0xB3, 0xDA, 0xFC, 0xCA, 0x56, 0x40, 0x6, 0x0, 0x1, 0x0, 0x7D, 0x0, 0x0, 0x4, 0x9, 0x4, 0x3A, 0x0, 0x9, 0x0, 0x0, 0x21, 0x23, 0x11, 0x33, 0x1, 0x11, 0x33, 0x11, 0x23, 0x1, 0x1, 0x6F, 0xF2, 0xF2, 0x1, 0xA8, 0xF2, 0xF2, 0xFE, 0x58, 0x4, 0x3A, 0xFD, 0x28, 0x2, 0xD8, 0xFB, 0xC6, 0x2, 0xDA, 0x0, 0x2, 0x0, 0x66, 0xFF, 0xEC, 0x6, 0x4B, 0x4, 0x4E, 0x0, 0xB, 0x0, 0x23, 0x0, 0x0, 0x25, 0x32, 0x37, 0x11, 0x26, 0x23, 0x22, 0x6, 0x15, 0x15, 0x14, 0x16, 0x17, 0x22, 0x0, 0x27, 0x35, 0x34, 0x0, 0x33, 0x32, 0x16, 0x33, 0x21, 0x15, 0x21, 0x15, 0x21, 0x15, 0x21, 0x11, 0x21, 0x15, 0x21, 0x22, 0x6, 0x2, 0x5D, 0x28, 0xAB, 0xAB, 0x2A, 0x87, 0x7C, 0x7D, 0x88, 0xEA, 0xFE, 0xF7, 0x4, 0x1, 0xA, 0xEB, 0x5B, 0x9E, 0x7D, 0x2, 0x7A, 0xFD, 0xD7, 0x1, 0xD3, 0xFE, 0x2D, 0x2, 0x29, 0xFD, 0x85, 0x7D, 0x9D, 0xAF, 0xC, 0x2, 0xC4, 0xC, 0xD5, 0x8F, 0x15, 0x91, 0xD2, 0xC3, 0x1, 0x33, 0xE6, 0x22, 0xEC, 0x1, 0x3B, 0x14, 0xC1, 0xF6, 0xC2, 0xFF, 0x0, 0xC1, 0x14, 0x0, 0x2, 0x0, 0x66, 0xFF, 0xEB, 0x6, 0x2D, 0x4, 0x4E, 0x0, 0x17, 0x0, 0x2D, 0x0, 0x0, 0x5, 0x22, 0x27, 0x6, 0x23, 0x22, 0x26, 0x26, 0x35, 0x34, 0x12, 0x24, 0x33, 0x31, 0x33, 0x31, 0x31, 0x32, 0x4, 0x12, 0x15, 0x14, 0x6, 0x6, 0x27, 0x32, 0x36, 0x35, 0x34, 0x26, 0x21, 0x20, 0x6, 0x15, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x35, 0x33, 0x15, 0x16, 0x17, 0x16, 0x4, 0x8C, 0xE6, 0x5C, 0x5D, 0xE6, 0x9B, 0xB7, 0x4F, 0x9F, 0x1, 0x47, 0xFD, 0x1, 0xFD, 0x1, 0x47, 0x9F, 0x4F, 0xB6, 0xA6, 0x67, 0x51, 0xDA, 0xFE, 0xE9, 0xFE, 0xEA, 0xDA, 0x51, 0x67, 0x50, 0x6B, 0xFB, 0x1, 0x35, 0x36, 0x15, 0xDF, 0xDF, 0x9B, 0xEC, 0x79, 0xA2, 0x1, 0x16, 0xAB, 0xAB, 0xFE, 0xEA, 0xA0, 0x7A, 0xED, 0x9B, 0xC3, 0xC5, 0x7A, 0xA6, 0xF8, 0xF8, 0xA6, 0x7A, 0xC5, 0x8A, 0xA9, 0xBE, 0xC5, 0xA3, 0x44, 0x45, 0x0, 0x3, 0x0, 0x50, 0xFE, 0x60, 0x4, 0x84, 0x6, 0x0, 0x0, 0x13, 0x0, 0x19, 0x0, 0x1F, 0x0, 0x0, 0x1, 0x23, 0x11, 0x26, 0x2, 0x35, 0x35, 0x34, 0x12, 0x37, 0x11, 0x33, 0x11, 0x16, 0x12, 0x15, 0x15, 0x14, 0x2, 0x7, 0x1, 0x10, 0x17, 0x11, 0x6, 0x7, 0x5, 0x34, 0x27, 0x11, 0x36, 0x37, 0x2, 0xE3, 0xF2, 0xBC, 0xE5, 0xE6, 0xBB, 0xF2, 0xBC, 0xE5, 0xE5, 0xBC, 0xFE, 0x60, 0xAE, 0xAA, 0x4, 0x2, 0x4F, 0xAF, 0xAB, 0x4, 0xFE, 0x60, 0x1, 0x97, 0x22, 0x1, 0x16, 0xE3, 0x15, 0xE3, 0x1, 0x17, 0x22, 0x1, 0xBD, 0xFE, 0x43, 0x22, 0xFE, 0xE9, 0xE4, 0x14, 0xE3, 0xFE, 0xE9, 0x22, 0x2, 0x1C, 0xFF, 0x0, 0x4B, 0x2, 0xAC, 0x4B, 0xF6, 0xB, 0xFE, 0x4E, 0xFD, 0x53, 0x4A, 0xF7, 0x0, 0x1, 0x0, 0x1B, 0xFF, 0xEC, 0x2, 0x53, 0x4, 0x3A, 0x0, 0xD, 0x0, 0x0, 0x21, 0x27, 0x6, 0x23, 0x22, 0x27, 0x37, 0x16, 0x33, 0x32, 0x37, 0x11, 0x33, 0x11, 0x1, 0x6C, 0x7, 0x57, 0x9D, 0x31, 0x25, 0x2, 0x32, 0x31, 0xA7, 0x3A, 0xF2, 0x79, 0x8D, 0xD, 0xE5, 0x8, 0x7F, 0x2, 0xE5, 0xFB, 0xC6, 0x0, 0x1, 0x0, 0x1B, 0xFF, 0xEC, 0x2, 0x53, 0x6, 0x0, 0x0, 0xD, 0x0, 0x0, 0x21, 0x27, 0x6, 0x23, 0x22, 0x27, 0x37, 0x16, 0x33, 0x32, 0x37, 0x11, 0x33, 0x11, 0x1, 0x6C, 0x7, 0x57, 0x9D, 0x31, 0x25, 0x2, 0x32, 0x31, 0xA7, 0x3A, 0xF2, 0x79, 0x8D, 0xD, 0xE5, 0x8, 0x7F, 0x4, 0xAB, 0xFA, 0x0, 0x0, 0x1, 0x0, 0x1B, 0xFE, 0x4B, 0x3, 0x30, 0x4, 0x3A, 0x0, 0x17, 0x0, 0x0, 0x1, 0x6, 0x23, 0x22, 0x26, 0x35, 0x35, 0x6, 0x23, 0x22, 0x27, 0x37, 0x16, 0x33, 0x32, 0x37, 0x11, 0x33, 0x11, 0x14, 0x16, 0x33, 0x32, 0x37, 0x3, 0x30, 0x36, 0x46, 0x7D, 0xD7, 0x56, 0x99, 0x31, 0x25, 0x2, 0x32, 0x31, 0xA7, 0x3A, 0xF2, 0x5D, 0x40, 0x24, 0x1C, 0xFE, 0x58, 0xD, 0x8D, 0xB3, 0xE6, 0x85, 0xD, 0xE5, 0x8, 0x7F, 0x2, 0xE5, 0xFB, 0x51, 0x56, 0x40, 0x6, 0x0, 0x1, 0x0, 0x7D, 0xFE, 0x60, 0x2, 0xB5, 0x4, 0x4E, 0x0, 0xD, 0x0, 0x0, 0x1, 0x22, 0x7, 0x11, 0x23, 0x11, 0x33, 0x17, 0x36, 0x33, 0x32, 0x17, 0x7, 0x26, 0x2, 0x51, 0xA9, 0x39, 0xF2, 0xE8, 0x6, 0x56, 0x9E, 0x31, 0x25, 0x2, 0x32, 0x3, 0x64, 0x80, 0xFB, 0x7C, 0x5, 0xDA, 0x7A, 0x8E, 0xD, 0xE5, 0x8, 0x0, 0x1, 0x0, 0x7D, 0xFE, 0x4B, 0x2, 0xB5, 0x4, 0x4E, 0x0, 0x17, 0x0, 0x0, 0x1, 0x6, 0x23, 0x22, 0x26, 0x35, 0x11, 0x33, 0x17, 0x36, 0x33, 0x32, 0x17, 0x7, 0x26, 0x23, 0x22, 0x7, 0x11, 0x14, 0x16, 0x33, 0x32, 0x37, 0x2, 0x4C, 0x36, 0x46, 0x7D, 0xD6, 0xE8, 0x6, 0x56, 0x9E, 0x31, 0x25, 0x2, 0x32, 0x30, 0xA9, 0x39, 0x5D, 0x40, 0x24, 0x1C, 0xFE, 0x58, 0xD, 0x8D, 0xB3, 0x4, 0xAF, 0x7A, 0x8E, 0xD, 0xE5, 0x8, 0x80, 0xFC, 0xA7, 0x56, 0x40, 0x6, 0x0, 0x1, 0x0, 0x7D, 0x0, 0x0, 0x2, 0x4D, 0x4, 0x4E, 0x0, 0xD, 0x0, 0x0, 0x21, 0x23, 0x11, 0x34, 0x36, 0x33, 0x32, 0x17, 0x15, 0x26, 0x23, 0x22, 0x6, 0x15, 0x1, 0x70, 0xF3, 0xD6, 0x7E, 0x43, 0x39, 0x1D, 0x22, 0x41, 0x5D, 0x3, 0xF, 0xB2, 0x8D, 0xF, 0xA3, 0x7, 0x3E, 0x56, 0x0, 0x1, 0x0, 0x1B, 0xFE, 0x60, 0x1, 0xEB, 0x4, 0x4E, 0x0, 0xD, 0x0, 0x0, 0x1, 0x23, 0x11, 0x34, 0x26, 0x23, 0x22, 0x7, 0x35, 0x36, 0x33, 0x32, 0x16, 0x15, 0x1, 0xEB, 0xF3, 0x5C, 0x41, 0x1D, 0x23, 0x37, 0x45, 0x7E, 0xD6, 0xFE, 0x60, 0x4, 0xAF, 0x56, 0x40, 0x7, 0xA3, 0xD, 0x8D, 0xB2, 0x0, 0x2, 0x0, 0x71, 0x0, 0x0, 0x4, 0x2A, 0x4, 0x3A, 0x0, 0x8, 0x0, 0x15, 0x0, 0x0, 0x1, 0x11, 0x33, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x13, 0x3, 0x23, 0x11, 0x23, 0x11, 0x21, 0x32, 0x16, 0x15, 0x14, 0x7, 0x13, 0x1, 0x63, 0xEE, 0x5F, 0x56, 0x5D, 0x65, 0xE9, 0xE8, 0xE2, 0xF2, 0x1, 0xD3, 0xCE, 0xE8, 0xCF, 0xFF, 0x3, 0x79, 0xFE, 0xC9, 0x5F, 0x3A, 0x3B, 0x63, 0xFC, 0x87, 0x1, 0x8E, 0xFE, 0x72, 0x4, 0x3A, 0xC5, 0x95, 0xD4, 0x56, 0xFE, 0x4A, 0x0, 0x2, 0x0, 0x71, 0x0, 0x0, 0x4, 0x2A, 0x4, 0x3A, 0x0, 0xC, 0x0, 0x15, 0x0, 0x0, 0x33, 0x11, 0x33, 0x11, 0x33, 0x13, 0x33, 0x3, 0x16, 0x15, 0x14, 0x6, 0x23, 0x27, 0x33, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x23, 0x71, 0xF2, 0xE2, 0xE8, 0xFD, 0xFF, 0xCF, 0xE8, 0xCE, 0xE1, 0xE1, 0x65, 0x5D, 0x56, 0x5F, 0xEE, 0x4, 0x3A, 0xFE, 0x72, 0x1, 0x8E, 0xFE, 0x4A, 0x56, 0xD4, 0x95, 0xC5, 0xC1, 0x65, 0x39, 0x38, 0x61, 0x0, 0x1, 0x0, 0x4C, 0xFE, 0x52, 0x3, 0xCA, 0x4, 0x4E, 0x0, 0x30, 0x0, 0x0, 0x1, 0x6, 0x23, 0x22, 0x26, 0x35, 0x11, 0x33, 0x16, 0x16, 0x33, 0x32, 0x36, 0x35, 0x34, 0x26, 0x27, 0x26, 0x26, 0x35, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x23, 0x34, 0x26, 0x23, 0x22, 0x6, 0x14, 0x16, 0x17, 0x16, 0x16, 0x15, 0x14, 0x6, 0x23, 0x22, 0x27, 0x15, 0x14, 0x16, 0x33, 0x32, 0x37, 0x1, 0xF8, 0x33, 0x3B, 0x88, 0xB6, 0xEC, 0x5, 0x8A, 0x50, 0x60, 0x65, 0x55, 0x8E, 0xB0, 0xD9, 0xE0, 0xC1, 0xCB, 0xE7, 0xF3, 0x60, 0x5F, 0x5C, 0x58, 0x5F, 0x7F, 0xBC, 0xD3, 0xEE, 0xC7, 0x8E, 0x6C, 0x5D, 0x41, 0x22, 0x1D, 0xFE, 0x61, 0xF, 0xA5, 0x9B, 0x1, 0xC4, 0x64, 0x50, 0x4A, 0x3A, 0x35, 0x4C, 0x1E, 0x25, 0x93, 0x89, 0x85, 0xC3, 0xC6, 0x92, 0x3F, 0x63, 0x52, 0x6C, 0x40, 0x1B, 0x28, 0x92, 0x91, 0x90, 0xB8, 0x36, 0x90, 0x56, 0x3F, 0x7, 0x0, 0x1, 0x0, 0x1B, 0xFE, 0x4B, 0x3, 0x31, 0x6, 0x15, 0x0, 0x15, 0x0, 0x0, 0x13, 0x22, 0x27, 0x37, 0x16, 0x33, 0x32, 0x35, 0x11, 0x34, 0x36, 0x33, 0x32, 0x17, 0x7, 0x26, 0x23, 0x22, 0x15, 0x11, 0x14, 0x6, 0xA4, 0x43, 0x46, 0x7, 0x28, 0x35, 0xAD, 0xCD, 0xAF, 0x43, 0x46, 0x7, 0x28, 0x35, 0xAD, 0xCC, 0xFE, 0x4B, 0x12, 0xBE, 0x8, 0xAC, 0x4, 0xE2, 0xB5, 0xBF, 0x12, 0xBE, 0x8, 0xAC, 0xFB, 0x1E, 0xB4, 0xC0, 0xFF, 0xFF, 0x0, 0x1B, 0xFE, 0x4B, 0x3, 0x31, 0x6, 0x15, 0x0, 0x26, 0x1, 0x37, 0x0, 0x0, 0x0, 0x7, 0x7, 0xA4, 0xFF, 0xC7, 0xFD, 0x78, 0x0, 0x1, 0x0, 0x1B, 0xFE, 0x4B, 0x3, 0x31, 0x4, 0x4E, 0x0, 0x15, 0x0, 0x0, 0x1, 0x6, 0x23, 0x22, 0x26, 0x35, 0x11, 0x26, 0x23, 0x22, 0x7, 0x27, 0x36, 0x33, 0x32, 0x16, 0x15, 0x11, 0x16, 0x33, 0x32, 0x37, 0x3, 0x31, 0x46, 0x43, 0xAF, 0xCC, 0x1, 0xAD, 0x33, 0x2A, 0x7, 0x48, 0x41, 0xB0, 0xCC, 0x1, 0xAC, 0x34, 0x2A, 0xFE, 0x5D, 0x12, 0xBF, 0xB5, 0x3, 0x1D, 0xAA, 0x8, 0xBE, 0x12, 0xBF, 0xB5, 0xFC, 0xE3, 0xAA, 0x8, 0x0, 0x2, 0x0, 0x1E, 0xFE, 0x4B, 0x3, 0xD2, 0x6, 0x15, 0x0, 0x9, 0x0, 0x23, 0x0, 0x0, 0x1, 0x32, 0x35, 0x35, 0x26, 0x23, 0x22, 0x15, 0x14, 0x16, 0x5, 0x27, 0x6, 0x6, 0x23, 0x22, 0x26, 0x35, 0x34, 0x36, 0x33, 0x32, 0x17, 0x11, 0x34, 0x36, 0x33, 0x32, 0x17, 0x7, 0x26, 0x23, 0x22, 0x7, 0x11, 0x17, 0x1, 0x62, 0x6C, 0x32, 0x30, 0x6B, 0x38, 0x1, 0xFF, 0x95, 0x21, 0x98, 0x85, 0x9A, 0xAD, 0xA9, 0x8A, 0x41, 0x3C, 0xCC, 0xB0, 0x42, 0x46, 0x6, 0x2A, 0x33, 0xAD, 0x1, 0xF3, 0xFE, 0xFA, 0x77, 0x2E, 0x17, 0x5E, 0x2C, 0x32, 0x8C, 0x8E, 0x4D, 0x64, 0x99, 0x78, 0x80, 0x8E, 0xE, 0x4, 0x45, 0xB5, 0xBF, 0x12, 0xBE, 0x8, 0xAA, 0xFB, 0x3B, 0xDD, 0x0, 0x1, 0x0, 0x37, 0x0, 0x0, 0x2, 0xA2, 0x5, 0x55, 0x0, 0x15, 0x0, 0x0, 0x1, 0x23, 0x11, 0x23, 0x11, 0x23, 0x35, 0x33, 0x11, 0x34, 0x26, 0x23, 0x22, 0x7, 0x35, 0x36, 0x33, 0x32, 0x16, 0x15, 0x11, 0x33, 0x2, 0xA2, 0xB3, 0xF2, 0xBF, 0xBF, 0x3F, 0x32, 0x26, 0x2F, 0x46, 0x5A, 0x7A, 0x9E, 0xB3, 0x1, 0x7, 0xFE, 0xF9, 0x1, 0x7, 0xB4, 0x2, 0x5C, 0x49, 0x2C, 0xA, 0xBB, 0x18, 0x89, 0xA7, 0xFD, 0x96, 0x0, 0x1, 0x0, 0x8, 0xFE, 0x4B, 0x2, 0x8A, 0x5, 0x41, 0x0, 0x15, 0x0, 0x0, 0x1, 0x6, 0x23, 0x22, 0x26, 0x35, 0x11, 0x23, 0x35, 0x33, 0x11, 0x33, 0x11, 0x33, 0x15, 0x23, 0x11, 0x14, 0x16, 0x33, 0x32, 0x37, 0x2, 0x8A, 0x36, 0x46, 0x7D, 0xD6, 0xB3, 0xB3, 0xF2, 0xBF, 0xBF, 0x5D, 0x40, 0x22, 0x1E, 0xFE, 0x58, 0xD, 0x8D, 0xB3, 0x3, 0xFC, 0xB3, 0x1, 0x7, 0xFE, 0xF9, 0xB3, 0xFC, 0x4, 0x56, 0x40, 0x6, 0x0, 0x2, 0x0, 0x18, 0xFF, 0xEC, 0x5, 0x27, 0x4, 0x3A, 0x0, 0x7, 0x0, 0x1D, 0x0, 0x0, 0x25, 0x32, 0x37, 0x35, 0x21, 0x15, 0x14, 0x16, 0x5, 0x27, 0x6, 0x23, 0x22, 0x26, 0x27, 0x35, 0x23, 0x35, 0x33, 0x11, 0x33, 0x11, 0x21, 0x11, 0x33, 0x11, 0x33, 0x15, 0x23, 0x11, 0x2, 0x7D, 0xAF, 0x40, 0xFE, 0x66, 0x67, 0x1, 0x41, 0x6, 0x6A, 0xC6, 0x9F, 0xC5, 0x1, 0xC7, 0xC7, 0xF3, 0x1, 0x9A, 0xF3, 0xC8, 0xC8, 0xB3, 0x7F, 0xAF, 0x64, 0x75, 0x55, 0xB3, 0x6A, 0x7E, 0xBA, 0xD5, 0x66, 0xAB, 0x1, 0xAE, 0xFE, 0x52, 0x1, 0xAE, 0xFE, 0x52, 0xAB, 0xFE, 0x1F, 0x0, 0x1, 0x0, 0x62, 0xFF, 0xEB, 0x4, 0x8E, 0x4, 0x4E, 0x0, 0x2F, 0x0, 0x0, 0x25, 0x32, 0x36, 0x36, 0x35, 0x34, 0x26, 0x26, 0x35, 0x34, 0x36, 0x36, 0x33, 0x15, 0x22, 0x6, 0x15, 0x14, 0x16, 0x16, 0x15, 0x14, 0x6, 0x6, 0x23, 0x22, 0x26, 0x26, 0x35, 0x34, 0x36, 0x36, 0x35, 0x34, 0x26, 0x23, 0x35, 0x32, 0x16, 0x16, 0x15, 0x14, 0x6, 0x6, 0x15, 0x14, 0x16, 0x16, 0x2, 0x77, 0x7A, 0x7E, 0x2D, 0x3B, 0x3E, 0x31, 0x99, 0x9C, 0x22, 0x4F, 0x3B, 0x3B, 0x59, 0xE7, 0xD7, 0xD4, 0xE7, 0x5A, 0x3B, 0x3B, 0x4F, 0x22, 0x9D, 0x98, 0x31, 0x3D, 0x3C, 0x2D, 0x7D, 0xAE, 0x57, 0x7C, 0x36, 0x56, 0x8E, 0x87, 0x41, 0x2F, 0x6E, 0x4E, 0xBD, 0x21, 0x39, 0x37, 0x71, 0x9B, 0x75, 0x5C, 0xBB, 0x7D, 0x7C, 0xBB, 0x5D, 0x75, 0x9B, 0x71, 0x37, 0x39, 0x21, 0xBD, 0x4E, 0x6E, 0x2F, 0x41, 0x87, 0x8E, 0x56, 0x36, 0x7C, 0x57, 0x0, 0x1, 0x0, 0x77, 0xFF, 0xEC, 0x3, 0xE9, 0x4, 0x4E, 0x0, 0x18, 0x0, 0x0, 0x24, 0x36, 0x35, 0x11, 0x34, 0x23, 0x22, 0x7, 0x27, 0x36, 0x33, 0x32, 0x16, 0x15, 0x11, 0x14, 0x6, 0x20, 0x26, 0x35, 0x11, 0x33, 0x11, 0x14, 0x16, 0x2, 0x89, 0x6D, 0x63, 0x25, 0x3A, 0x1C, 0x82, 0x64, 0x93, 0x58, 0xF6, 0xFE, 0x7A, 0xF6, 0xF3, 0x6D, 0xB3, 0x6B, 0x94, 0x1, 0x48, 0x83, 0xE, 0xB3, 0x2C, 0xC1, 0x80, 0xFE, 0xA7, 0xF3, 0xD5, 0xD5, 0xF3, 0x2, 0x86, 0xFD, 0x77, 0x92, 0x6C, 0x0, 0x1, 0x0, 0x19, 0x0, 0x0, 0x3, 0xDD, 0x4, 0x3A, 0x0, 0x6, 0x0, 0x0, 0x21, 0x3, 0x3, 0x23, 0x1, 0x33, 0x1, 0x2, 0xE1, 0xE9, 0xE4, 0xFB, 0x1, 0x77, 0xD3, 0x1, 0x7A, 0x3, 0x5, 0xFC, 0xFB, 0x4, 0x3A, 0xFB, 0xC6, 0x0, 0x1, 0x0, 0x22, 0x0, 0x0, 0x5, 0xCD, 0x4, 0x3A, 0x0, 0x12, 0x0, 0x0, 0x1, 0x3, 0x23, 0x1, 0x33, 0x13, 0x17, 0x37, 0x13, 0x33, 0x1, 0x23, 0x3, 0x27, 0x7, 0x3, 0x23, 0x3, 0x27, 0x1, 0xB4, 0xA5, 0xED, 0x1, 0x28, 0xC8, 0xCD, 0x17, 0x18, 0xD0, 0xC7, 0x1, 0x28, 0xED, 0x9D, 0xC, 0xE, 0xD5, 0xB8, 0xD6, 0xA, 0x2, 0xBE, 0xFD, 0x42, 0x4, 0x3A, 0xFD, 0x64, 0x6D, 0x6D, 0x2, 0x9C, 0xFB, 0xC6, 0x2, 0xC4, 0x51, 0x4F, 0xFD, 0x3A, 0x2, 0xC5, 0x39, 0x0, 0x1, 0x0, 0xD, 0x0, 0x0, 0x3, 0xD8, 0x5, 0xEF, 0x0, 0x10, 0x0, 0x0, 0x21, 0x3, 0x3, 0x21, 0x1, 0x12, 0x37, 0x37, 0x32, 0x17, 0x15, 0x27, 0x22, 0x6, 0x7, 0x7, 0x1, 0x2, 0xD1, 0xE5, 0xDC, 0xFE, 0xFD, 0x1, 0xAB, 0x5B, 0xCB, 0x2D, 0x2E, 0x47, 0x2E, 0x5A, 0x5E, 0x1C, 0x23, 0x1, 0x7D, 0x2, 0xDF, 0xFD, 0x21, 0x4, 0xD2, 0x1, 0x6, 0x15, 0x2, 0x11, 0xBC, 0x3, 0x41, 0x51, 0x5D, 0xFB, 0xCA, 0x0, 0x1, 0x0, 0x8, 0x0, 0x0, 0x4, 0x31, 0x4, 0x39, 0x0, 0x8, 0x0, 0x0, 0x21, 0x23, 0x11, 0x1, 0x21, 0x1, 0x1, 0x21, 0x1, 0x2, 0x93, 0xF3, 0xFE, 0x68, 0x1, 0xB, 0x1, 0xA, 0x1, 0x9, 0x1, 0xB, 0xFE, 0x62, 0x1, 0x6D, 0x2, 0xCC, 0xFD, 0xFE, 0x2, 0x2, 0xFD, 0x2B, 0x0, 0x1, 0x0, 0x52, 0xFE, 0x4B, 0x4, 0x99, 0x4, 0x3A, 0x0, 0x14, 0x0, 0x0, 0x1, 0x20, 0x3, 0x35, 0x21, 0x35, 0x1, 0x21, 0x35, 0x21, 0x15, 0x1, 0x21, 0x11, 0x14, 0x16, 0x33, 0x32, 0x37, 0x15, 0x6, 0x4, 0x2B, 0xFE, 0xF1, 0x6, 0xFD, 0x3C, 0x2, 0x26, 0xFD, 0xE5, 0x3, 0x4E, 0xFD, 0xD6, 0x2, 0x3C, 0x5C, 0x40, 0x23, 0x1D, 0x33, 0xFE, 0x4B, 0x1, 0x33, 0x82, 0x9F, 0x2, 0xD7, 0xC4, 0x99, 0xFD, 0x22, 0xFE, 0xC8, 0x56, 0x3F, 0x7, 0xA3, 0xF, 0x0, 0x2, 0x0, 0x52, 0xFF, 0x1B, 0x4, 0xE3, 0x4, 0x3A, 0x0, 0x8, 0x0, 0x1E, 0x0, 0x0, 0x1, 0x22, 0x6, 0x7, 0x33, 0x32, 0x36, 0x35, 0x34, 0x1, 0x7, 0x27, 0x37, 0x21, 0x35, 0x1, 0x21, 0x35, 0x21, 0x15, 0x1, 0x33, 0x36, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x6, 0x23, 0x3, 0xCA, 0x32, 0x66, 0x4C, 0x69, 0x56, 0x72, 0xFE, 0x4D, 0x9B, 0x9C, 0x52, 0xFE, 0xD3, 0x2, 0x26, 0xFD, 0xE5, 0x3, 0x4E, 0xFD, 0xD6, 0x87, 0x8E, 0xC8, 0x83, 0x80, 0x82, 0xF0, 0xAC, 0x1, 0x9E, 0x6C, 0x6F, 0x4C, 0x3D, 0x52, 0xFE, 0x62, 0xE5, 0x71, 0x74, 0x9F, 0x2, 0xD7, 0xC4, 0x99, 0xFD, 0x22, 0xC8, 0xC7, 0x89, 0x72, 0x9A, 0xBD, 0x0, 0x1, 0x0, 0x51, 0xFE, 0x4B, 0x4, 0x39, 0x4, 0x3A, 0x0, 0x1B, 0x0, 0x0, 0x1, 0x22, 0x24, 0x27, 0x33, 0x16, 0x16, 0x33, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x23, 0x35, 0x1, 0x21, 0x35, 0x21, 0x17, 0x1, 0x17, 0x16, 0x16, 0x15, 0x14, 0x4, 0x2, 0x39, 0xB3, 0xFE, 0xE8, 0x1D, 0xF3, 0xF, 0x76, 0x70, 0x80, 0x8E, 0x9B, 0x93, 0x8D, 0x1, 0x69, 0xFD, 0x91, 0x3, 0x89, 0x1, 0xFE, 0x78, 0x16, 0xC5, 0xD6, 0xFE, 0xDF, 0xFE, 0x4B, 0xAB, 0xDE, 0x56, 0x70, 0x89, 0x6B, 0x8F, 0x80, 0xAC, 0x1, 0xBA, 0xC3, 0x9B, 0xFE, 0x1A, 0x2, 0x13, 0xEA, 0xBF, 0xCF, 0xE1, 0x0, 0x2, 0x0, 0x51, 0xFE, 0x4B, 0x4, 0x8F, 0x4, 0x3A, 0x0, 0x1F, 0x0, 0x29, 0x0, 0x0, 0x1, 0x22, 0x24, 0x35, 0x34, 0x36, 0x33, 0x32, 0x16, 0x17, 0x37, 0x26, 0x26, 0x23, 0x23, 0x35, 0x1, 0x21, 0x35, 0x21, 0x17, 0x1, 0x17, 0x16, 0x16, 0x15, 0x14, 0x7, 0x17, 0x7, 0x27, 0x6, 0x27, 0x32, 0x37, 0x26, 0x26, 0x23, 0x22, 0x15, 0x14, 0x16, 0x2, 0x20, 0xC1, 0xFE, 0xF2, 0xBE, 0x92, 0x79, 0xC8, 0x5F, 0x2, 0x9, 0x98, 0x89, 0x8D, 0x1, 0x69, 0xFD, 0x91, 0x3, 0x89, 0x1, 0xFE, 0x78, 0x18, 0xC5, 0xD4, 0x23, 0x79, 0x86, 0x70, 0x8E, 0xE0, 0x79, 0x4B, 0x54, 0xA4, 0x4D, 0x6D, 0x89, 0xFE, 0x4B, 0xA8, 0x9B, 0x78, 0x99, 0x5A, 0x49, 0x22, 0x81, 0x72, 0xAC, 0x1, 0xBA, 0xC3, 0x9B, 0xFE, 0x1A, 0x3, 0x12, 0xEC, 0xC0, 0x5F, 0x4C, 0x6E, 0x94, 0x68, 0x68, 0xC3, 0x38, 0x46, 0x5D, 0x5B, 0x47, 0x39, 0x0, 0x1, 0x0, 0x3B, 0x0, 0x0, 0x3, 0xE1, 0x6, 0x15, 0x0, 0x18, 0x0, 0x0, 0x21, 0x23, 0x11, 0x33, 0x32, 0x36, 0x35, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x7, 0x23, 0x36, 0x24, 0x33, 0x32, 0x12, 0x15, 0x15, 0x14, 0x2, 0x7, 0x2, 0x74, 0xF9, 0x7C, 0x95, 0x62, 0x62, 0x95, 0x58, 0x7A, 0x5, 0xE5, 0x5, 0x1, 0x0, 0xB4, 0xFA, 0xF3, 0xB5, 0xB8, 0x2, 0x2B, 0xDC, 0x81, 0x6E, 0x83, 0xD9, 0x67, 0x50, 0x9D, 0xDD, 0xFE, 0xC0, 0xDF, 0x6E, 0xC1, 0xFE, 0xD7, 0x29, 0x0, 0x1, 0x0, 0x50, 0x0, 0x0, 0x3, 0xF5, 0x6, 0x15, 0x0, 0x18, 0x0, 0x0, 0x1, 0x11, 0x23, 0x11, 0x26, 0x2, 0x35, 0x35, 0x34, 0x12, 0x33, 0x32, 0x16, 0x17, 0x23, 0x26, 0x26, 0x23, 0x22, 0x6, 0x15, 0x15, 0x14, 0x16, 0x17, 0x2, 0xAC, 0xF3, 0xB7, 0xB2, 0xF3, 0xF9, 0xC5, 0xF0, 0x4, 0xE4, 0x5, 0x70, 0x63, 0x94, 0x63, 0x55, 0x7F, 0x2, 0x2B, 0xFD, 0xD5, 0x1, 0x74, 0x2B, 0x1, 0x28, 0xBF, 0x70, 0xDE, 0x1, 0x41, 0xE4, 0xB3, 0x57, 0x7D, 0xDB, 0x81, 0x70, 0x7B, 0xD1, 0xF, 0x0, 0x1, 0x0, 0x3B, 0xFF, 0xEC, 0x3, 0xE1, 0x5, 0xFF, 0x0, 0x18, 0x0, 0x0, 0x5, 0x22, 0x26, 0x27, 0x33, 0x16, 0x16, 0x33, 0x32, 0x36, 0x35, 0x35, 0x34, 0x26, 0x27, 0x23, 0x11, 0x33, 0x11, 0x16, 0x12, 0x15, 0x15, 0x14, 0x2, 0x1, 0xF5, 0xC4, 0xF1, 0x5, 0xE5, 0x5, 0x6F, 0x63, 0x95, 0x62, 0x55, 0x7F, 0x95, 0xF3, 0xB7, 0xB2, 0xF3, 0x14, 0xE4, 0xB3, 0x56, 0x7E, 0xDB, 0x82, 0x70, 0x7A, 0xD1, 0xF, 0x2, 0x29, 0xFE, 0x8D, 0x2A, 0xFE, 0xD8, 0xBE, 0x70, 0xDF, 0xFE, 0xBF, 0x0, 0x1, 0x0, 0x50, 0xFE, 0x4B, 0x3, 0xF5, 0x4, 0x4E, 0x0, 0x1B, 0x0, 0x0, 0x5, 0x32, 0x36, 0x37, 0x33, 0x6, 0x4, 0x23, 0x22, 0x2, 0x35, 0x11, 0x34, 0x12, 0x33, 0x32, 0x16, 0x17, 0x23, 0x26, 0x26, 0x23, 0x22, 0x6, 0x15, 0x11, 0x14, 0x16, 0x2, 0x3A, 0x58, 0x7A, 0x5, 0xE4, 0x4, 0xFF, 0x0, 0xB5, 0xFA, 0xF2, 0xF3, 0xF9, 0xC5, 0xF0, 0x4, 0xE4, 0x5, 0x70, 0x63, 0x94, 0x63, 0x62, 0xF2, 0x67, 0x50, 0x9D, 0xDD, 0x1, 0x41, 0xDF, 0x1, 0xC4, 0xDE, 0x1, 0x41, 0xE4, 0xB3, 0x57, 0x7D, 0xDB, 0x81, 0xFE, 0x3C, 0x83, 0xDA, 0x0, 0x3, 0x0, 0x66, 0xFF, 0xEC, 0x5, 0x1F, 0x5, 0xC4, 0x0, 0xD, 0x0, 0x1B, 0x0, 0x27, 0x0, 0x0, 0x1, 0x10, 0x0, 0x21, 0x20, 0x0, 0x11, 0x35, 0x10, 0x0, 0x21, 0x20, 0x0, 0x11, 0x27, 0x34, 0x2, 0x23, 0x22, 0x2, 0x15, 0x15, 0x14, 0x12, 0x33, 0x32, 0x12, 0x35, 0x25, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x6, 0x23, 0x22, 0x26, 0x5, 0x1F, 0xFE, 0xB5, 0xFE, 0xF0, 0xFE, 0xF6, 0xFE, 0xAC, 0x1, 0x52, 0x1, 0xA, 0x1, 0x10, 0x1, 0x4D, 0xFD, 0xB9, 0xA7, 0xA2, 0xBD, 0xBF, 0xA2, 0xA8, 0xB6, 0xFE, 0x13, 0x4A, 0x43, 0x44, 0x4A, 0x4A, 0x44, 0x43, 0x4A, 0x2, 0xB3, 0xFE, 0xB4, 0xFE, 0x85, 0x1, 0x7B, 0x1, 0x4C, 0x49, 0x1, 0x4C, 0x1, 0x7C, 0xFE, 0x84, 0xFE, 0xB4, 0x2, 0xF5, 0x1, 0x0, 0xFF, 0x0, 0xF5, 0x4B, 0xF5, 0xFE, 0xFE, 0x1, 0x2, 0xF5, 0x29, 0x3A, 0x4D, 0x4D, 0x3A, 0x38, 0x4D, 0x4D, 0x0, 0x2, 0x0, 0x61, 0xFF, 0xEC, 0x3, 0xF0, 0x4, 0x4D, 0x0, 0x15, 0x0, 0x27, 0x0, 0x0, 0x1, 0x31, 0x14, 0x6, 0x6, 0x23, 0x22, 0x26, 0x35, 0x34, 0x37, 0x26, 0x35, 0x34, 0x36, 0x33, 0x32, 0x16, 0x16, 0x15, 0x31, 0x15, 0x1, 0x32, 0x36, 0x10, 0x26, 0x23, 0x22, 0x6, 0x15, 0x14, 0x17, 0x33, 0x15, 0x23, 0x6, 0x15, 0x14, 0x16, 0x3, 0xF0, 0x8F, 0xD7, 0x6D, 0xC4, 0xF8, 0xB9, 0xA6, 0xE5, 0xC4, 0x75, 0xD6, 0x88, 0xFE, 0x26, 0x6B, 0x7D, 0x8D, 0x5B, 0x62, 0x4D, 0x9A, 0x62, 0x58, 0xB7, 0x5E, 0x2, 0x27, 0xE4, 0xF7, 0x60, 0xAC, 0x9A, 0xBA, 0x41, 0x4C, 0x99, 0x9A, 0xA1, 0x63, 0xEF, 0xD3, 0x1, 0xFE, 0x7F, 0xAF, 0x1, 0xA6, 0x97, 0x57, 0x34, 0x81, 0x5, 0xB0, 0x2, 0x92, 0x3A, 0x5D, 0x0, 0x1, 0x0, 0x50, 0xFF, 0xED, 0x5, 0x17, 0x4, 0x99, 0x0, 0x28, 0x0, 0x0, 0x25, 0x6, 0x6, 0x23, 0x22, 0x0, 0x35, 0x35, 0x34, 0x0, 0x33, 0x32, 0x17, 0x36, 0x33, 0x32, 0x17, 0x15, 0x26, 0x23, 0x22, 0x6, 0x15, 0x15, 0x23, 0x26, 0x23, 0x22, 0x6, 0x15, 0x15, 0x14, 0x16, 0x33, 0x32, 0x36, 0x37, 0x35, 0x23, 0x35, 0x21, 0x4, 0x4D, 0x2C, 0xF0, 0xD1, 0xEA, 0xFE, 0xDA, 0x1, 0x26, 0xE2, 0xD6, 0x7C, 0x3A, 0xC5, 0x3B, 0x33, 0x1C, 0x23, 0x41, 0x5D, 0xF2, 0x1B, 0xD5, 0x7D, 0x99, 0x99, 0x85, 0x6C, 0x72, 0x17, 0xEF, 0x1, 0xE7, 0xA0, 0x38, 0x7B, 0x1, 0xC, 0xD4, 0xA4, 0xD4, 0x1, 0x9, 0x5F, 0xAA, 0xF, 0xA3, 0x7, 0x3E, 0x56, 0x82, 0xB6, 0xA2, 0x7A, 0xA5, 0x79, 0xA6, 0x27, 0x11, 0x9E, 0xB2, 0x0, 0x3, 0x0, 0x1E, 0xFE, 0x4B, 0x3, 0x99, 0x5, 0xD5, 0x0, 0x9, 0x0, 0x1A, 0x0, 0x23, 0x0, 0x0, 0x1, 0x34, 0x36, 0x32, 0x16, 0x15, 0x14, 0x6, 0x22, 0x26, 0x3, 0x22, 0x26, 0x35, 0x34, 0x36, 0x33, 0x33, 0x11, 0x33, 0x11, 0x33, 0x15, 0x23, 0x15, 0x14, 0x6, 0x27, 0x32, 0x35, 0x35, 0x23, 0x22, 0x15, 0x14, 0x16, 0x1, 0xBF, 0x48, 0x82, 0x49, 0x49, 0x82, 0x48, 0x5A, 0x9A, 0xAD, 0xA9, 0x8A, 0x7D, 0xF3, 0xD8, 0xD8, 0x96, 0xC9, 0x6C, 0x62, 0x6B, 0x38, 0x5, 0x54, 0x38, 0x49, 0x49, 0x38, 0x37, 0x4A, 0x4A, 0xF9, 0x2E, 0x99, 0x78, 0x80, 0x8E, 0x3, 0xD0, 0xFC, 0x30, 0xB4, 0x13, 0x87, 0xD1, 0xAF, 0x77, 0x45, 0x5E, 0x2C, 0x32, 0x0, 0x1, 0xFF, 0xF6, 0xFE, 0x60, 0x3, 0xB0, 0x4, 0x3A, 0x0, 0xC, 0x0, 0x0, 0x1, 0x23, 0x11, 0x7, 0x1, 0x21, 0x1, 0x1, 0x21, 0x1, 0x37, 0x11, 0x33, 0x3, 0xB0, 0xF3, 0x4D, 0xFE, 0xD6, 0xFE, 0xDB, 0x1, 0x93, 0xFE, 0x42, 0x1, 0x19, 0x1, 0x41, 0x6D, 0xF3, 0xFE, 0x60, 0x3, 0x50, 0x60, 0xFE, 0xB0, 0x1, 0xC2, 0x2, 0x78, 0xFE, 0x2E, 0x70, 0x1, 0x62, 0x0, 0x1, 0x0, 0x7A, 0x0, 0x0, 0x3, 0x65, 0x4, 0x3A, 0x0, 0x5, 0x0, 0x0, 0x33, 0x11, 0x33, 0x11, 0x21, 0x15, 0x7A, 0xF3, 0x1, 0xF8, 0x4, 0x3A, 0xFC, 0x87, 0xC1, 0x0, 0x2, 0x0, 0x50, 0xFE, 0x60, 0x4, 0xE0, 0x5, 0x72, 0x0, 0x19, 0x0, 0x25, 0x0, 0x0, 0x1, 0x23, 0x11, 0x6, 0x23, 0x22, 0x2, 0x35, 0x35, 0x34, 0x12, 0x33, 0x32, 0x17, 0x35, 0x34, 0x36, 0x33, 0x32, 0x17, 0x15, 0x26, 0x23, 0x22, 0x6, 0x15, 0x1, 0x32, 0x37, 0x11, 0x26, 0x23, 0x22, 0x6, 0x15, 0x15, 0x14, 0x16, 0x4, 0x3, 0xF3, 0x6A, 0xAA, 0xCA, 0xE2, 0xE1, 0xCD, 0xA9, 0x69, 0xD7, 0x7D, 0x49, 0x33, 0x25, 0x1B, 0x40, 0x5D, 0xFE, 0x36, 0x92, 0x45, 0x46, 0x8F, 0x83, 0x76, 0x74, 0xFE, 0x60, 0x1, 0xFD, 0x71, 0x1, 0x3A, 0xED, 0x14, 0xF7, 0x1, 0x30, 0x6F, 0x54, 0xB3, 0x8C, 0xF, 0xA2, 0x7, 0x3F, 0x56, 0xFC, 0x7C, 0x7C, 0x1, 0xEA, 0x76, 0xD2, 0x92, 0x15, 0x91, 0xD2, 0x0, 0x1, 0x0, 0x3B, 0x0, 0x0, 0x3, 0xE1, 0x6, 0x15, 0x0, 0x20, 0x0, 0x0, 0x25, 0x23, 0x15, 0x23, 0x35, 0x23, 0x35, 0x33, 0x35, 0x33, 0x32, 0x36, 0x35, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x7, 0x23, 0x36, 0x24, 0x33, 0x32, 0x12, 0x15, 0x15, 0x14, 0x2, 0x7, 0x15, 0x33, 0x3, 0x43, 0xCF, 0xF9, 0xD6, 0xD6, 0x7C, 0x95, 0x62, 0x62, 0x95, 0x58, 0x7A, 0x5, 0xE5, 0x5, 0x1, 0x0, 0xB4, 0xFA, 0xF3, 0xB5, 0xB8, 0xCF, 0x8C, 0x8C, 0x8C, 0xAB, 0xF4, 0xDC, 0x81, 0x6E, 0x83, 0xD9, 0x67, 0x50, 0x9D, 0xDD, 0xFE, 0xC0, 0xDF, 0x6E, 0xC1, 0xFE, 0xD7, 0x29, 0x3E, 0xFF, 0xFF, 0x0, 0x50, 0x0, 0x0, 0x3, 0xF5, 0x6, 0x15, 0x0, 0x26, 0x1, 0x49, 0x0, 0x0, 0x0, 0x7, 0x7, 0xA4, 0x0, 0x53, 0xFE, 0x5, 0x0, 0x3, 0x0, 0x50, 0xFF, 0xEC, 0x7, 0x72, 0x6, 0x0, 0x0, 0xB, 0x0, 0xE, 0x0, 0x23, 0x0, 0x0, 0x25, 0x32, 0x37, 0x11, 0x26, 0x23, 0x22, 0x6, 0x15, 0x15, 0x14, 0x16, 0x5, 0x1, 0x21, 0x3, 0x27, 0x6, 0x23, 0x22, 0x2, 0x35, 0x35, 0x34, 0x12, 0x33, 0x32, 0x17, 0x11, 0x33, 0x11, 0x21, 0x15, 0x1, 0x21, 0x15, 0x2, 0x37, 0x95, 0x45, 0x44, 0x94, 0x84, 0x73, 0x72, 0x2, 0x50, 0x2, 0x25, 0xFD, 0xDB, 0xDD, 0xB, 0x6C, 0xB7, 0xC3, 0xE6, 0xE5, 0xC6, 0xAC, 0x6A, 0xF3, 0x3, 0x59, 0xFD, 0xD6, 0x2, 0x3F, 0xB3, 0x86, 0x1, 0xCD, 0x82, 0xD0, 0x92, 0x15, 0x91, 0xCD, 0x14, 0x2, 0xD7, 0xFC, 0x8A, 0x70, 0x84, 0x1, 0x39, 0xEC, 0x15, 0xF7, 0x1, 0x31, 0x77, 0x2, 0x29, 0xFE, 0x3A, 0x99, 0xFD, 0x22, 0xC3, 0x0, 0x2, 0x0, 0x50, 0xFE, 0x4B, 0x7, 0x11, 0x6, 0x0, 0x0, 0xB, 0x0, 0x36, 0x0, 0x0, 0x25, 0x32, 0x37, 0x11, 0x26, 0x23, 0x22, 0x6, 0x15, 0x15, 0x14, 0x16, 0x1, 0x22, 0x24, 0x27, 0x33, 0x16, 0x16, 0x33, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x23, 0x35, 0x1, 0x21, 0x11, 0x23, 0x27, 0x6, 0x23, 0x22, 0x2, 0x35, 0x35, 0x34, 0x12, 0x33, 0x32, 0x17, 0x11, 0x33, 0x11, 0x21, 0x17, 0x1, 0x16, 0x16, 0x15, 0x14, 0x4, 0x2, 0x37, 0x95, 0x45, 0x44, 0x94, 0x84, 0x73, 0x72, 0x3, 0x5C, 0xB3, 0xFE, 0xDA, 0x26, 0xF3, 0x14, 0x7F, 0x76, 0x83, 0x8E, 0x9A, 0x94, 0x8D, 0x1, 0x6A, 0xFE, 0x37, 0xDD, 0xB, 0x6C, 0xB7, 0xC3, 0xE6, 0xE5, 0xC6, 0xAC, 0x6A, 0xF3, 0x2, 0xE2, 0x1, 0xFE, 0x79, 0xCE, 0xE3, 0xFE, 0xDF, 0xB3, 0x86, 0x1, 0xCD, 0x82, 0xD0, 0x92, 0x15, 0x91, 0xCD, 0xFD, 0x98, 0x99, 0xCB, 0x48, 0x59, 0x89, 0x6B, 0x8F, 0x80, 0xAC, 0x1, 0xBA, 0xFC, 0x89, 0x70, 0x84, 0x1, 0x39, 0xEC, 0x15, 0xF7, 0x1, 0x31, 0x77, 0x2, 0x29, 0xFE, 0x3A, 0x9B, 0xFE, 0x1D, 0x15, 0xE6, 0xC4, 0xD1, 0xE1, 0x0, 0x4, 0x0, 0x50, 0xFF, 0x1B, 0x8, 0x94, 0x6, 0x0, 0x0, 0xB, 0x0, 0xE, 0x0, 0x17, 0x0, 0x38, 0x0, 0x0, 0x25, 0x32, 0x37, 0x11, 0x26, 0x23, 0x22, 0x6, 0x15, 0x15, 0x14, 0x16, 0x5, 0x1, 0x21, 0x1, 0x22, 0x6, 0x7, 0x33, 0x32, 0x36, 0x35, 0x34, 0x1, 0x7, 0x27, 0x37, 0x21, 0x27, 0x6, 0x23, 0x22, 0x2, 0x35, 0x35, 0x34, 0x12, 0x33, 0x32, 0x17, 0x11, 0x33, 0x11, 0x21, 0x15, 0x1, 0x33, 0x36, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x6, 0x23, 0x2, 0x37, 0x95, 0x45, 0x44, 0x94, 0x84, 0x73, 0x72, 0x2, 0x50, 0x2, 0x25, 0xFD, 0xDB, 0x3, 0x77, 0x32, 0x66, 0x4C, 0x69, 0x56, 0x72, 0xFE, 0x4C, 0x9A, 0x9C, 0x53, 0xFD, 0xF6, 0xB, 0x6C, 0xB7, 0xC3, 0xE6, 0xE5, 0xC6, 0xAC, 0x6A, 0xF3, 0x3, 0x58, 0xFD, 0xD6, 0x8A, 0x8E, 0xC5, 0x83, 0x80, 0x82, 0xF0, 0xAC, 0xB3, 0x86, 0x1, 0xCD, 0x82, 0xD0, 0x92, 0x15, 0x91, 0xCD, 0x13, 0x2, 0xD6, 0xFE, 0x28, 0x6C, 0x6F, 0x4E, 0x41, 0x4C, 0xFE, 0x62, 0xE5, 0x71, 0x74, 0x70, 0x84, 0x1, 0x39, 0xEC, 0x15, 0xF7, 0x1, 0x31, 0x77, 0x2, 0x29, 0xFE, 0x3A, 0x99, 0xFD, 0x22, 0xC8, 0xC7, 0x89, 0x72, 0x9A, 0xBD, 0x0, 0x2, 0x0, 0x8, 0x0, 0x0, 0x5, 0x86, 0x5, 0x41, 0x0, 0x11, 0x0, 0x32, 0x0, 0x0, 0x25, 0x32, 0x35, 0x34, 0x26, 0x27, 0x26, 0x26, 0x35, 0x34, 0x37, 0x23, 0x11, 0x14, 0x16, 0x33, 0x33, 0x31, 0x7, 0x22, 0x26, 0x35, 0x11, 0x23, 0x35, 0x33, 0x11, 0x33, 0x11, 0x21, 0x36, 0x33, 0x32, 0x16, 0x15, 0x23, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x14, 0x16, 0x17, 0x16, 0x16, 0x15, 0x14, 0x6, 0x23, 0x3, 0xD3, 0xC4, 0x53, 0x90, 0xB7, 0xD2, 0x1F, 0x9D, 0x40, 0x31, 0x55, 0xA0, 0x79, 0x9F, 0xB3, 0xB3, 0xF2, 0x1, 0x87, 0x47, 0x52, 0xCB, 0xE6, 0xF3, 0x60, 0x5F, 0x5B, 0x59, 0x72, 0x6B, 0xCA, 0xC7, 0xEF, 0xC7, 0xC9, 0x66, 0x31, 0x48, 0x1D, 0x25, 0x99, 0x83, 0x44, 0x3D, 0xFD, 0xCB, 0x50, 0x38, 0xCA, 0x9D, 0xB5, 0x2, 0x35, 0xB3, 0x1, 0x7, 0xFE, 0xF9, 0x14, 0xC6, 0x92, 0x3F, 0x63, 0x52, 0x36, 0x40, 0x39, 0x17, 0x2B, 0x98, 0x89, 0x90, 0xA4, 0x0, 0x2, 0x0, 0x8, 0xFE, 0x4B, 0x4, 0x7A, 0x6, 0x15, 0x0, 0x7, 0x0, 0x2B, 0x0, 0x0, 0x25, 0x32, 0x37, 0x11, 0x23, 0x11, 0x14, 0x16, 0x13, 0x22, 0x27, 0x37, 0x16, 0x33, 0x32, 0x37, 0x35, 0x6, 0x23, 0x22, 0x26, 0x35, 0x11, 0x23, 0x35, 0x33, 0x11, 0x33, 0x11, 0x33, 0x35, 0x34, 0x36, 0x33, 0x32, 0x17, 0x7, 0x26, 0x23, 0x22, 0x15, 0x11, 0x14, 0x6, 0x2, 0x1E, 0x25, 0x32, 0xC8, 0x33, 0xD, 0x43, 0x46, 0x7, 0x28, 0x35, 0xAB, 0x2, 0x52, 0x49, 0xA6, 0x79, 0xB3, 0xB3, 0xF2, 0xC8, 0xCD, 0xB0, 0x42, 0x46, 0x6, 0x2A, 0x34, 0xAD, 0xCC, 0xB6, 0x7, 0x2, 0xCA, 0xFD, 0xB7, 0x4E, 0x3A, 0xFD, 0x95, 0x12, 0xBE, 0x8, 0xA8, 0x40, 0xF, 0xB6, 0x9C, 0x2, 0x49, 0xB3, 0x1, 0x7, 0xFE, 0xF9, 0x67, 0xB5, 0xBF, 0x12, 0xBE, 0x8, 0xAC, 0xFB, 0x1E, 0xB4, 0xC0, 0x0, 0x2, 0x0, 0x8, 0xFF, 0xEC, 0x6, 0x2, 0x5, 0x41, 0x0, 0x32, 0x0, 0x3D, 0x0, 0x0, 0x25, 0x32, 0x37, 0x26, 0x35, 0x35, 0x34, 0x12, 0x33, 0x32, 0x16, 0x17, 0x23, 0x26, 0x26, 0x23, 0x22, 0x6, 0x15, 0x15, 0x14, 0x17, 0x36, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x6, 0x23, 0x22, 0x27, 0x6, 0x23, 0x22, 0x26, 0x35, 0x11, 0x23, 0x35, 0x33, 0x11, 0x33, 0x11, 0x33, 0x15, 0x23, 0x11, 0x14, 0x16, 0x5, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x7, 0x16, 0x2, 0x13, 0x37, 0x50, 0x3E, 0xF4, 0xF8, 0xC5, 0xF1, 0x4, 0xE4, 0x5, 0x70, 0x63, 0x94, 0x63, 0xD, 0x5D, 0xCE, 0x6F, 0x87, 0x85, 0xF7, 0xC2, 0xC1, 0x7D, 0xA3, 0x95, 0x79, 0x9F, 0xB3, 0xB3, 0xF2, 0xB1, 0xB1, 0x3A, 0x2, 0x6C, 0x4F, 0x7B, 0x36, 0x21, 0x3C, 0x86, 0x4C, 0x3C, 0xB6, 0x33, 0x7E, 0xA4, 0x24, 0xDE, 0x1, 0x41, 0xE4, 0xB3, 0x57, 0x7D, 0xDB, 0x81, 0x24, 0x50, 0x3D, 0x48, 0x78, 0x93, 0x67, 0x94, 0xC4, 0x6A, 0x6A, 0x9D, 0xB5, 0x2, 0x49, 0xB3, 0x1, 0x7, 0xFE, 0xF9, 0xB3, 0xFD, 0xB7, 0x50, 0x38, 0x7, 0x44, 0x3C, 0x2D, 0x22, 0x61, 0x40, 0x2E, 0x0, 0x1, 0x0, 0x2D, 0xFE, 0x7D, 0x6, 0x59, 0x6, 0x15, 0x0, 0x2E, 0x0, 0x0, 0x1, 0x22, 0x27, 0x35, 0x16, 0x33, 0x32, 0x36, 0x35, 0x11, 0x34, 0x26, 0x23, 0x22, 0x7, 0x11, 0x23, 0x11, 0x21, 0x11, 0x23, 0x11, 0x23, 0x35, 0x33, 0x35, 0x34, 0x36, 0x33, 0x32, 0x17, 0x7, 0x26, 0x23, 0x22, 0x7, 0x15, 0x21, 0x15, 0x36, 0x33, 0x32, 0x16, 0x15, 0x11, 0x14, 0x6, 0x5, 0x5, 0x43, 0x39, 0x1D, 0x23, 0x41, 0x5C, 0x62, 0x5D, 0x93, 0x48, 0xF2, 0xFE, 0xEC, 0xF4, 0xA5, 0xA5, 0xCC, 0xB0, 0x43, 0x46, 0x6, 0x2A, 0x34, 0xAB, 0x2, 0x2, 0x6, 0x76, 0xB7, 0xA0, 0xC0, 0xD6, 0xFE, 0x7D, 0xF, 0xA3, 0x7, 0x3F, 0x56, 0x2, 0xD9, 0x83, 0x6F, 0x83, 0xFC, 0xFB, 0x3, 0x87, 0xFC, 0x79, 0x3, 0x87, 0xB3, 0x67, 0xB5, 0xBF, 0x12, 0xBE, 0x8, 0xA8, 0x6B, 0x77, 0x8B, 0xD0, 0xEA, 0xFD, 0x29, 0xB3, 0x8D, 0x0, 0x1, 0x0, 0x8C, 0xFF, 0xEC, 0x5, 0x1E, 0x6, 0x0, 0x0, 0x27, 0x0, 0x0, 0x5, 0x20, 0x27, 0x15, 0x23, 0x11, 0x33, 0x11, 0x16, 0x4, 0x33, 0x32, 0x35, 0x34, 0x26, 0x27, 0x26, 0x26, 0x35, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x23, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x14, 0x16, 0x17, 0x16, 0x16, 0x15, 0x14, 0x6, 0x3, 0x5D, 0xFE, 0xF7, 0xD5, 0xF3, 0xF3, 0x8A, 0x1, 0x4, 0x4F, 0xD3, 0x5D, 0x84, 0xB2, 0xD8, 0xE0, 0xC1, 0xCB, 0xE6, 0xF2, 0x60, 0x5F, 0x5C, 0x58, 0x6E, 0x76, 0xC1, 0xC8, 0xF1, 0x14, 0x6E, 0x5A, 0x6, 0x0, 0xFB, 0x3D, 0x5C, 0x3D, 0x82, 0x3B, 0x46, 0x1D, 0x27, 0x93, 0x88, 0x85, 0xC3, 0xC6, 0x92, 0x3F, 0x63, 0x52, 0x36, 0x3C, 0x3F, 0x18, 0x27, 0x99, 0x89, 0x90, 0xB8, 0x0, 0x2, 0x0, 0x8C, 0x0, 0x0, 0x4, 0xEE, 0x6, 0x0, 0x0, 0x2, 0x0, 0xB, 0x0, 0x0, 0x25, 0x1, 0x21, 0x3, 0x11, 0x33, 0x11, 0x21, 0x15, 0x1, 0x21, 0x15, 0x1, 0x7F, 0x2, 0x22, 0xFD, 0xDE, 0xF3, 0xF3, 0x3, 0x5A, 0xFD, 0xAC, 0x2, 0x69, 0xD2, 0x2, 0xA4, 0xFC, 0x8A, 0x6, 0x0, 0xFE, 0x3A, 0x99, 0xFD, 0x22, 0xC3, 0x0, 0x2, 0x0, 0x36, 0x0, 0x0, 0x3, 0x90, 0x5, 0xB0, 0x0, 0xC, 0x0, 0x19, 0x0, 0x0, 0x13, 0x3, 0x33, 0x13, 0x13, 0x33, 0x13, 0x13, 0x33, 0x3, 0x23, 0xB, 0x3, 0x33, 0x13, 0x13, 0x33, 0x13, 0x13, 0x33, 0x3, 0x23, 0x3, 0x3, 0xDB, 0xA5, 0xB0, 0x49, 0x6E, 0x8C, 0x70, 0x47, 0xB0, 0xA5, 0x90, 0x77, 0x78, 0x91, 0xA5, 0xB0, 0x49, 0x6E, 0x8C, 0x70, 0x47, 0xB0, 0xA5, 0x90, 0x77, 0x78, 0x3, 0x67, 0x2, 0x49, 0xFE, 0xA3, 0x1, 0x5D, 0xFE, 0xA3, 0x1, 0x5D, 0xFD, 0xB7, 0x1, 0x6D, 0xFE, 0x93, 0xFC, 0x99, 0x2, 0x49, 0xFE, 0xA3, 0x1, 0x5D, 0xFE, 0xA3, 0x1, 0x5D, 0xFD, 0xB7, 0x1, 0x6D, 0xFE, 0x93, 0x0, 0x2, 0x0, 0x57, 0x0, 0x0, 0x3, 0x86, 0x5, 0xAF, 0x0, 0x7, 0x0, 0xF, 0x0, 0x0, 0x1, 0x11, 0x21, 0x11, 0x23, 0x11, 0x21, 0x11, 0x3, 0x11, 0x21, 0x11, 0x23, 0x11, 0x21, 0x11, 0x2, 0xD2, 0xFE, 0x39, 0xB4, 0x3, 0x2F, 0xB4, 0xFE, 0x39, 0xB4, 0x3, 0x2F, 0x3, 0x69, 0x1, 0xB6, 0xFE, 0x4A, 0x2, 0x46, 0xFD, 0xBA, 0xFC, 0x97, 0x1, 0xB6, 0xFE, 0x4A, 0x2, 0x46, 0xFD, 0xBA, 0x0, 0x1, 0x0, 0x1B, 0xFE, 0x60, 0x4, 0x8E, 0x4, 0x4E, 0x0, 0x1B, 0x0, 0x0, 0x1, 0x11, 0x23, 0x11, 0x6, 0x23, 0x22, 0x26, 0x35, 0x11, 0x34, 0x26, 0x23, 0x22, 0x7, 0x35, 0x36, 0x33, 0x32, 0x16, 0x15, 0x11, 0x16, 0x16, 0x33, 0x32, 0x37, 0x11, 0x4, 0x8E, 0xF3, 0x6B, 0xBD, 0xA0, 0xC5, 0x65, 0x48, 0x26, 0x20, 0x3F, 0x48, 0x8B, 0xD4, 0x1, 0x6B, 0x46, 0xAF, 0x39, 0x4, 0x3A, 0xFA, 0x26, 0x2, 0x10, 0x84, 0xDB, 0xFA, 0x1, 0x2D, 0x5F, 0x46, 0x7, 0xB1, 0x11, 0x9E, 0xC2, 0xFE, 0xCA, 0x9D, 0x68, 0x98, 0x2, 0xEF, 0x0, 0x1, 0x0, 0x1B, 0xFE, 0x4B, 0x5, 0x56, 0x4, 0x4E, 0x0, 0x27, 0x0, 0x0, 0x1, 0x6, 0x23, 0x22, 0x26, 0x35, 0x35, 0x6, 0x23, 0x22, 0x26, 0x35, 0x35, 0x23, 0x35, 0x34, 0x26, 0x23, 0x22, 0x7, 0x35, 0x36, 0x33, 0x32, 0x16, 0x15, 0x11, 0x16, 0x16, 0x33, 0x32, 0x37, 0x11, 0x33, 0x11, 0x14, 0x16, 0x33, 0x32, 0x37, 0x5, 0x56, 0x37, 0x45, 0x7E, 0xD6, 0x6B, 0xBD, 0xA0, 0xC5, 0x1, 0x5C, 0x41, 0x1D, 0x23, 0x37, 0x45, 0x7E, 0xD7, 0x1, 0x6A, 0x47, 0xB1, 0x37, 0xF3, 0x5D, 0x40, 0x22, 0x1E, 0xFE, 0x58, 0xD, 0x8D, 0xB3, 0xE6, 0x85, 0xDB, 0xFA, 0x7A, 0xD4, 0x56, 0x40, 0x7, 0xA3, 0xD, 0x8D, 0xB2, 0xFE, 0xA9, 0x9D, 0x68, 0x9A, 0x2, 0xED, 0xFB, 0x51, 0x56, 0x40, 0x6, 0x0, 0x1, 0x0, 0x64, 0x2, 0x8C, 0x2, 0xFA, 0x7, 0x2E, 0x0, 0x10, 0x0, 0x0, 0x1, 0x22, 0x7, 0x11, 0x23, 0x11, 0x33, 0x11, 0x36, 0x33, 0x32, 0x16, 0x15, 0x11, 0x23, 0x11, 0x26, 0x1, 0xB3, 0x62, 0x28, 0xC5, 0xC5, 0x4C, 0x82, 0x78, 0x8B, 0xC5, 0x4, 0x5, 0x13, 0x59, 0xFD, 0xD2, 0x4, 0xA2, 0xFE, 0x1B, 0x71, 0x91, 0xA2, 0xFE, 0x5, 0x1, 0xD9, 0xAE, 0x0, 0x1, 0x0, 0x64, 0x2, 0x8C, 0x2, 0xFA, 0x7, 0xE, 0x0, 0x17, 0x0, 0x0, 0x1, 0x22, 0x7, 0x11, 0x23, 0x11, 0x36, 0x33, 0x32, 0x17, 0x15, 0x27, 0x22, 0x15, 0x15, 0x36, 0x33, 0x32, 0x16, 0x15, 0x11, 0x23, 0x11, 0x26, 0x1, 0xB3, 0x62, 0x28, 0xC5, 0x2, 0xBA, 0x40, 0x55, 0x44, 0x48, 0x4C, 0x82, 0x78, 0x8B, 0xC5, 0x4, 0x5, 0x13, 0x59, 0xFD, 0xD2, 0x3, 0x8D, 0xF5, 0x10, 0xB4, 0x8, 0x4F, 0xBA, 0x71, 0x91, 0xA2, 0xFE, 0x5, 0x1, 0xD9, 0xAE, 0x0, 0x2, 0x0, 0x22, 0x1, 0x4C, 0x1, 0x8B, 0x6, 0xED, 0x0, 0x9, 0x0, 0x16, 0x0, 0x0, 0x12, 0x36, 0x33, 0x32, 0x16, 0x14, 0x6, 0x23, 0x22, 0x26, 0x17, 0x33, 0x11, 0x14, 0x6, 0x23, 0x22, 0x27, 0x35, 0x16, 0x33, 0x32, 0x35, 0xA5, 0x3C, 0x36, 0x38, 0x3C, 0x3C, 0x38, 0x36, 0x3C, 0x14, 0xC5, 0x79, 0x83, 0x31, 0x2F, 0x16, 0x21, 0x60, 0x6, 0xAF, 0x3E, 0x3E, 0x5C, 0x3D, 0x3D, 0xA3, 0xFC, 0xC9, 0x86, 0xA7, 0xD, 0xA6, 0x6, 0x80, 0x0, 0x1, 0x0, 0x64, 0x2, 0x8C, 0x2, 0x12, 0x5, 0xBA, 0x0, 0xD, 0x0, 0x0, 0x1, 0x22, 0x7, 0x11, 0x23, 0x11, 0x33, 0x17, 0x36, 0x33, 0x32, 0x17, 0x15, 0x26, 0x1, 0xAE, 0x5E, 0x27, 0xC5, 0x98, 0x1E, 0x44, 0x74, 0x2F, 0x11, 0x2E, 0x4, 0xFB, 0x4F, 0xFD, 0xE0, 0x3, 0x21, 0x73, 0x80, 0x7, 0xCE, 0x16, 0x0, 0x1, 0x0, 0x28, 0x2, 0x7F, 0x1, 0xD6, 0x5, 0xAD, 0x0, 0xD, 0x0, 0x0, 0x1, 0x27, 0x6, 0x23, 0x22, 0x27, 0x35, 0x16, 0x33, 0x32, 0x37, 0x11, 0x33, 0x11, 0x1, 0x3E, 0x1E, 0x44, 0x73, 0x2F, 0x12, 0x33, 0x31, 0x5E, 0x27, 0xC5, 0x2, 0x8C, 0x73, 0x80, 0x7, 0xCE, 0x16, 0x4F, 0x2, 0x20, 0xFC, 0xDF, 0x0, 0x1, 0x0, 0x28, 0x1, 0x4C, 0x2, 0x62, 0x5, 0xAD, 0x0, 0x15, 0x0, 0x0, 0x1, 0x22, 0x27, 0x35, 0x6, 0x23, 0x22, 0x27, 0x35, 0x16, 0x33, 0x32, 0x37, 0x11, 0x33, 0x11, 0x14, 0x33, 0x32, 0x37, 0x15, 0x6, 0x1, 0xCD, 0xB7, 0x5, 0x42, 0x66, 0x2F, 0x12, 0x33, 0x31, 0x5E, 0x27, 0xC5, 0x48, 0x1D, 0x27, 0x52, 0x1, 0x4C, 0xED, 0xAD, 0x67, 0x7, 0xCE, 0x16, 0x4F, 0x2, 0x20, 0xFC, 0xAB, 0x50, 0x9, 0xB4, 0x11, 0x0, 0x2, 0x0, 0x64, 0x2, 0x8C, 0x3, 0x3E, 0x5, 0xAD, 0x0, 0xC, 0x0, 0x15, 0x0, 0x0, 0x13, 0x11, 0x33, 0x11, 0x33, 0x13, 0x33, 0x3, 0x16, 0x15, 0x14, 0x6, 0x23, 0x27, 0x33, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x23, 0x64, 0xC5, 0x99, 0x9C, 0xE0, 0xB7, 0x88, 0xAC, 0x98, 0xA2, 0x91, 0x4C, 0x44, 0x40, 0x46, 0x9B, 0x2, 0x8C, 0x3, 0x21, 0xFE, 0xFF, 0x1, 0x1, 0xFE, 0xD3, 0x4E, 0x99, 0x6D, 0xA0, 0xA7, 0x3D, 0x2E, 0x2C, 0x3B, 0x0, 0x1, 0x0, 0x28, 0x2, 0x8C, 0x4, 0x52, 0x5, 0xAD, 0x0, 0xF, 0x0, 0x0, 0x13, 0x3, 0x33, 0x13, 0x35, 0x13, 0x33, 0x13, 0x15, 0x37, 0x13, 0x33, 0x3, 0x23, 0x3, 0x3, 0xF6, 0xCE, 0xD0, 0x67, 0x91, 0x9A, 0x91, 0x1, 0x66, 0xD0, 0xCD, 0xB5, 0x93, 0x93, 0x2, 0x8C, 0x3, 0x21, 0xFE, 0x2, 0x3, 0x1, 0xFB, 0xFE, 0x6, 0x2, 0x7, 0x1, 0xF5, 0xFC, 0xDF, 0x1, 0xDE, 0xFE, 0x22, 0x0, 0x1, 0x0, 0x2F, 0x1, 0x4C, 0x3, 0x1D, 0x5, 0xAD, 0x0, 0x10, 0x0, 0x0, 0x13, 0x22, 0x27, 0x35, 0x17, 0x32, 0x36, 0x37, 0x37, 0x1, 0x33, 0x13, 0x13, 0x33, 0x1, 0x6, 0x6, 0xE6, 0x2F, 0x2C, 0x30, 0x38, 0x34, 0x10, 0x12, 0xFE, 0xE6, 0xDE, 0x9A, 0x9E, 0xD8, 0xFE, 0xC3, 0x17, 0x71, 0x1, 0x4C, 0xD, 0x9D, 0x2, 0x30, 0x31, 0x37, 0x3, 0x21, 0xFE, 0x6, 0x1, 0xFA, 0xFC, 0x69, 0x43, 0x87, 0x0, 0x1, 0x0, 0x23, 0x4, 0xBC, 0x1, 0x72, 0x6, 0x1A, 0x0, 0x3, 0x0, 0x0, 0x13, 0x13, 0x33, 0x3, 0x23, 0x6E, 0xE1, 0xC8, 0x4, 0xBC, 0x1, 0x5E, 0xFE, 0xA2, 0xFF, 0xFF, 0x0, 0x23, 0x4, 0xBC, 0x2, 0xC1, 0x6, 0x1A, 0x0, 0x26, 0x1, 0x6B, 0x0, 0x0, 0x0, 0x7, 0x1, 0x6B, 0x1, 0x4F, 0x0, 0x0, 0x0, 0x1, 0x0, 0x50, 0x3, 0xE1, 0x1, 0x86, 0x6, 0x25, 0x0, 0x8, 0x0, 0x0, 0x13, 0x35, 0x34, 0x36, 0x37, 0x17, 0x6, 0x7, 0x15, 0x50, 0x65, 0x51, 0x80, 0x58, 0x2, 0x3, 0xE1, 0xBE, 0x64, 0xDC, 0x46, 0x4D, 0x88, 0xA4, 0xCB, 0x0, 0x1, 0x0, 0x50, 0x3, 0xE1, 0x1, 0x86, 0x6, 0x25, 0x0, 0x8, 0x0, 0x0, 0x13, 0x33, 0x15, 0x16, 0x17, 0x7, 0x26, 0x26, 0x35, 0x50, 0xDC, 0x2, 0x58, 0x80, 0x51, 0x65, 0x6, 0x25, 0xCB, 0xA2, 0x8A, 0x4D, 0x47, 0xDC, 0x63, 0x0, 0x1, 0x0, 0x36, 0x4, 0x62, 0x1, 0x6, 0x5, 0xEB, 0x0, 0xC, 0x0, 0x0, 0x13, 0x35, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x35, 0x32, 0x16, 0x14, 0x6, 0x36, 0x2A, 0x38, 0x38, 0x2A, 0x56, 0x7A, 0x7A, 0x4, 0x62, 0x5D, 0x3A, 0x2B, 0x2E, 0x3A, 0x5F, 0x71, 0xAC, 0x6C, 0x0, 0x1, 0x0, 0x36, 0x4, 0x62, 0x1, 0x6, 0x5, 0xEB, 0x0, 0xC, 0x0, 0x0, 0x1, 0x15, 0x22, 0x26, 0x34, 0x36, 0x33, 0x15, 0x22, 0x6, 0x15, 0x14, 0x16, 0x1, 0x6, 0x56, 0x7A, 0x7A, 0x56, 0x2B, 0x37, 0x37, 0x4, 0xBF, 0x5D, 0x6C, 0xAC, 0x71, 0x5F, 0x3A, 0x2E, 0x2B, 0x3A, 0x0, 0x1, 0x0, 0x1B, 0x2, 0x8C, 0x2, 0xC1, 0x7, 0xE, 0x0, 0x18, 0x0, 0x0, 0x1, 0x23, 0x11, 0x33, 0x32, 0x36, 0x35, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x7, 0x23, 0x36, 0x36, 0x33, 0x32, 0x16, 0x15, 0x15, 0x14, 0x6, 0x7, 0x1, 0xD1, 0xC9, 0x46, 0x6B, 0x40, 0x3F, 0x5E, 0x46, 0x3D, 0x8, 0xB6, 0x4, 0xAD, 0x8F, 0xB3, 0xB3, 0x78, 0x78, 0x2, 0x8C, 0x1, 0x7D, 0x93, 0x5E, 0x87, 0x67, 0x80, 0x45, 0x35, 0x7E, 0xA2, 0xE1, 0xAA, 0x85, 0x9A, 0xCE, 0x22, 0x0, 0x1, 0x0, 0x3C, 0x2, 0x8C, 0x2, 0xE2, 0x7, 0xE, 0x0, 0x16, 0x0, 0x0, 0x1, 0x11, 0x23, 0x35, 0x26, 0x11, 0x35, 0x34, 0x36, 0x33, 0x32, 0x16, 0x17, 0x23, 0x26, 0x23, 0x22, 0x6, 0x15, 0x15, 0x14, 0x16, 0x33, 0x1, 0xF5, 0xC9, 0xF0, 0xB4, 0xB3, 0x8F, 0xAD, 0x3, 0xB6, 0x10, 0x7B, 0x5E, 0x3E, 0x40, 0x6A, 0x4, 0x9, 0xFE, 0x83, 0xE8, 0x44, 0x1, 0x54, 0x77, 0xAA, 0xE1, 0xA2, 0x7E, 0x7A, 0x80, 0x67, 0x87, 0x5E, 0x93, 0x0, 0x1, 0x0, 0x3D, 0x2, 0x4F, 0x3, 0x23, 0x5, 0x35, 0x0, 0x8, 0x0, 0x0, 0x1, 0x1, 0x35, 0x1, 0x15, 0x5, 0x7, 0x17, 0x5, 0x3, 0x23, 0xFD, 0x1A, 0x2, 0xE6, 0xFE, 0x40, 0x3F, 0x3F, 0x1, 0xC0, 0x2, 0x4F, 0x1, 0x21, 0xA4, 0x1, 0x21, 0xC0, 0xA6, 0xE, 0xF, 0xA3, 0x0, 0x1, 0x0, 0x3D, 0x2, 0x4F, 0x3, 0x23, 0x5, 0x35, 0x0, 0x8, 0x0, 0x0, 0x13, 0x35, 0x25, 0x37, 0x27, 0x25, 0x35, 0x1, 0x15, 0x3D, 0x1, 0xC0, 0x3F, 0x3F, 0xFE, 0x40, 0x2, 0xE6, 0x2, 0x4F, 0xC0, 0xA3, 0xF, 0xE, 0xA6, 0xC0, 0xFE, 0xDF, 0xA4, 0x0, 0x1, 0x0, 0x30, 0x2, 0x44, 0x3, 0x15, 0x5, 0x2B, 0x0, 0x8, 0x0, 0x0, 0x1, 0x3, 0x23, 0x1, 0x33, 0x1, 0x23, 0x3, 0x27, 0x1, 0x93, 0xA4, 0xBF, 0x1, 0x21, 0xA3, 0x1, 0x21, 0xBF, 0xA6, 0xE, 0x4, 0x4, 0xFE, 0x40, 0x2, 0xE7, 0xFD, 0x19, 0x1, 0xC0, 0x3F, 0x0, 0x1, 0x0, 0x30, 0x2, 0x44, 0x3, 0x15, 0x5, 0x2B, 0x0, 0x8, 0x0, 0x0, 0x1, 0x1, 0x33, 0x13, 0x17, 0x37, 0x13, 0x33, 0x1, 0x1, 0x51, 0xFE, 0xDF, 0xBF, 0xA4, 0xF, 0xE, 0xA6, 0xBF, 0xFE, 0xDF, 0x2, 0x44, 0x2, 0xE7, 0xFE, 0x40, 0x3F, 0x3F, 0x1, 0xC0, 0xFD, 0x19, 0x0, 0x1, 0x0, 0x95, 0x4, 0xE1, 0x3, 0x44, 0x6, 0x1, 0x0, 0x8, 0x0, 0x0, 0x1, 0x1, 0x15, 0x23, 0x27, 0x7, 0x23, 0x35, 0x1, 0x2, 0x32, 0x1, 0x12, 0xC3, 0x96, 0x96, 0xC0, 0x1, 0xE, 0x6, 0x1, 0xFE, 0xEB, 0xB, 0x9C, 0x9C, 0xD, 0x1, 0x13, 0x0, 0x1, 0x0, 0x72, 0x4, 0xE1, 0x3, 0x35, 0x6, 0x2, 0x0, 0x8, 0x0, 0x0, 0x1, 0x17, 0x37, 0x33, 0x15, 0x1, 0x23, 0x1, 0x35, 0x1, 0x40, 0x93, 0x92, 0xD0, 0xFE, 0xE9, 0x96, 0xFE, 0xEA, 0x6, 0x2, 0x9B, 0x9B, 0xB, 0xFE, 0xEA, 0x1, 0x17, 0xA, 0x0, 0x1, 0x0, 0x3D, 0x4, 0x7A, 0x0, 0xE4, 0x6, 0x1F, 0x0, 0x3, 0x0, 0x0, 0x13, 0x11, 0x23, 0x11, 0xE4, 0xA7, 0x6, 0x1F, 0xFE, 0x5B, 0x1, 0xA5, 0xFF, 0xFF, 0x0, 0x9C, 0x5, 0xC, 0x3, 0x4A, 0x5, 0xAA, 0x0, 0x6, 0x0, 0x71, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x48, 0x4, 0xD2, 0x2, 0x20, 0x6, 0x0, 0x0, 0x6, 0x0, 0x76, 0xD7, 0x0, 0xFF, 0xFF, 0x0, 0x37, 0x4, 0xD2, 0x2, 0x10, 0x6, 0x0, 0x0, 0x6, 0x0, 0x45, 0x6, 0x0, 0x0, 0x1, 0x0, 0x3D, 0xFE, 0x2, 0x0, 0xE4, 0xFF, 0xA2, 0x0, 0x3, 0x0, 0x0, 0x17, 0x11, 0x23, 0x11, 0xE4, 0xA7, 0x5E, 0xFE, 0x60, 0x1, 0xA0, 0xFF, 0xFF, 0x0, 0x51, 0xFE, 0xC1, 0x2, 0xFF, 0xFF, 0x5F, 0x0, 0x7, 0x0, 0x71, 0xFF, 0xB5, 0xF9, 0xB5, 0xFF, 0xFF, 0x0, 0x37, 0xFE, 0x92, 0x2, 0x10, 0xFF, 0xC0, 0x0, 0x7, 0x0, 0x45, 0x0, 0x6, 0xF9, 0xC0, 0xFF, 0xFF, 0x0, 0x48, 0xFE, 0x92, 0x2, 0x20, 0xFF, 0xC0, 0x0, 0x7, 0x0, 0x76, 0xFF, 0xD7, 0xF9, 0xC0, 0x0, 0x2, 0x0, 0x5F, 0x0, 0x0, 0x1, 0x95, 0x4, 0x3A, 0x0, 0x3, 0x0, 0x7, 0x0, 0x0, 0x13, 0x21, 0x7, 0x23, 0x3, 0x37, 0x33, 0x17, 0x5F, 0x1, 0x36, 0x91, 0x15, 0x90, 0x90, 0x15, 0x91, 0x4, 0x3A, 0xF2, 0xFC, 0xB8, 0xF2, 0xF2, 0x0, 0x1, 0x0, 0x5F, 0x3, 0x48, 0x1, 0x95, 0x4, 0x3A, 0x0, 0x3, 0x0, 0x0, 0x13, 0x21, 0x7, 0x23, 0x5F, 0x1, 0x36, 0x91, 0x15, 0x4, 0x3A, 0xF2, 0xFF, 0xFF, 0x0, 0x36, 0x0, 0x90, 0x1, 0x6, 0x2, 0x19, 0x0, 0x7, 0x1, 0x6F, 0x0, 0x0, 0xFC, 0x2E, 0x0, 0x1, 0x0, 0x36, 0x0, 0x90, 0x1, 0x6, 0x2, 0x19, 0x0, 0xD, 0x0, 0x0, 0x25, 0x15, 0x22, 0x26, 0x35, 0x34, 0x36, 0x33, 0x15, 0x22, 0x6, 0x15, 0x14, 0x16, 0x1, 0x6, 0x56, 0x7A, 0x7A, 0x56, 0x2B, 0x37, 0x37, 0xEE, 0x5E, 0x6C, 0x57, 0x56, 0x70, 0x5F, 0x3A, 0x2D, 0x2C, 0x39, 0x0, 0x1, 0x0, 0x50, 0x0, 0xA3, 0x2, 0x8, 0x2, 0x18, 0x0, 0x7, 0x0, 0x0, 0x25, 0x21, 0x35, 0x33, 0x35, 0x33, 0x15, 0x33, 0x2, 0x8, 0xFE, 0x48, 0x88, 0xA8, 0x88, 0xA3, 0x9F, 0xD6, 0xD6, 0x0, 0x1, 0x0, 0x50, 0x0, 0xA3, 0x2, 0x8, 0x2, 0x2C, 0x0, 0x7, 0x0, 0x0, 0x37, 0x35, 0x23, 0x35, 0x21, 0x15, 0x23, 0x15, 0xD8, 0x88, 0x1, 0xB8, 0x88, 0xA3, 0xEA, 0x9F, 0x9F, 0xEA, 0x0, 0x1, 0x0, 0x50, 0x0, 0x81, 0x2, 0x8, 0x2, 0x47, 0x0, 0xB, 0x0, 0x0, 0x1, 0x23, 0x15, 0x23, 0x35, 0x23, 0x35, 0x33, 0x35, 0x33, 0x15, 0x33, 0x2, 0x8, 0x88, 0xA8, 0x88, 0x88, 0xA8, 0x88, 0x1, 0x14, 0x93, 0x93, 0x9F, 0x94, 0x94, 0x0, 0x1, 0x0, 0x3D, 0x1, 0x14, 0x2, 0x1C, 0x1, 0xB3, 0x0, 0x3, 0x0, 0x0, 0x13, 0x21, 0x15, 0x21, 0x3D, 0x1, 0xDF, 0xFE, 0x21, 0x1, 0xB3, 0x9F, 0x0, 0x1, 0x0, 0x76, 0x4, 0xCC, 0x2, 0xFB, 0x5, 0xE7, 0x0, 0xC, 0x0, 0x0, 0x1, 0x33, 0x14, 0x6, 0x20, 0x26, 0x35, 0x33, 0x14, 0x16, 0x33, 0x32, 0x36, 0x2, 0x45, 0xB6, 0xAD, 0xFE, 0xD6, 0xAE, 0xB6, 0x40, 0x4D, 0x4C, 0x40, 0x5, 0xE7, 0x7C, 0x9F, 0x9F, 0x7C, 0x37, 0x54, 0x54, 0x0, 0x1, 0x0, 0x82, 0x4, 0xE0, 0x1, 0x88, 0x5, 0xD5, 0x0, 0x9, 0x0, 0x0, 0x13, 0x34, 0x36, 0x32, 0x16, 0x15, 0x14, 0x6, 0x22, 0x26, 0x82, 0x45, 0x7C, 0x45, 0x45, 0x7C, 0x45, 0x5, 0x5A, 0x35, 0x46, 0x46, 0x35, 0x34, 0x46, 0x46, 0x0, 0x2, 0x0, 0x79, 0x4, 0x8E, 0x2, 0x34, 0x6, 0x2A, 0x0, 0x9, 0x0, 0x13, 0x0, 0x0, 0x12, 0x36, 0x33, 0x32, 0x16, 0x14, 0x6, 0x23, 0x22, 0x26, 0x37, 0x14, 0x16, 0x32, 0x36, 0x35, 0x34, 0x26, 0x22, 0x6, 0x79, 0x7F, 0x5E, 0x5F, 0x7F, 0x7F, 0x5F, 0x5E, 0x7F, 0x6D, 0x3E, 0x64, 0x3F, 0x3F, 0x64, 0x3E, 0x5, 0xB0, 0x7A, 0x7A, 0xAC, 0x76, 0x76, 0x56, 0x2B, 0x44, 0x43, 0x2C, 0x2E, 0x44, 0x44, 0x0, 0x1, 0x0, 0x29, 0xFE, 0x52, 0x1, 0xA1, 0x0, 0x3C, 0x0, 0x10, 0x0, 0x0, 0x25, 0x17, 0x6, 0x6, 0x15, 0x14, 0x33, 0x32, 0x37, 0x17, 0x6, 0x23, 0x22, 0x26, 0x35, 0x34, 0x36, 0x1, 0x1D, 0x70, 0x45, 0x5D, 0x47, 0x2C, 0x2E, 0x15, 0x49, 0x5C, 0x58, 0x7B, 0x6C, 0x3C, 0x3C, 0x2D, 0x5F, 0x3B, 0x44, 0x17, 0x8E, 0x2C, 0x66, 0x63, 0x4E, 0x96, 0x0, 0x1, 0x0, 0x7A, 0x4, 0xDB, 0x3, 0x58, 0x5, 0xF5, 0x0, 0x14, 0x0, 0x0, 0x1, 0x17, 0x14, 0x6, 0x23, 0x22, 0x26, 0x26, 0x23, 0x22, 0x6, 0x15, 0x27, 0x34, 0x36, 0x33, 0x32, 0x16, 0x33, 0x32, 0x36, 0x2, 0xC3, 0x95, 0x81, 0x5F, 0x40, 0x51, 0x47, 0x36, 0x26, 0x34, 0x96, 0x7F, 0x60, 0x52, 0x6F, 0x4D, 0x26, 0x36, 0x5, 0xF5, 0xC, 0x6F, 0x91, 0x2D, 0x2C, 0x39, 0x2E, 0x8, 0x6E, 0x96, 0x59, 0x39, 0x0, 0x2, 0x0, 0x4A, 0x4, 0xD1, 0x3, 0x57, 0x5, 0xFF, 0x0, 0x3, 0x0, 0x7, 0x0, 0x0, 0x13, 0x13, 0x33, 0x3, 0x33, 0x13, 0x33, 0x1, 0x4A, 0xAE, 0xE8, 0xDE, 0x85, 0xE1, 0xEF, 0xFE, 0xF6, 0x4, 0xD1, 0x1, 0x2E, 0xFE, 0xD2, 0x1, 0x2E, 0xFE, 0xD2, 0x0, 0x1, 0xFF, 0x3A, 0x1, 0x48, 0x1, 0x9C, 0x3, 0x32, 0x0, 0xC, 0x0, 0x0, 0x3, 0x35, 0x25, 0x16, 0x16, 0x33, 0x37, 0x17, 0x6, 0x23, 0x22, 0x26, 0x27, 0xC6, 0x1, 0x85, 0x13, 0x22, 0x52, 0x31, 0x25, 0x43, 0x4B, 0x82, 0x5C, 0x20, 0x2, 0x1D, 0xC6, 0x4F, 0x7E, 0x97, 0x3, 0xB4, 0x24, 0x92, 0x71, 0x0, 0x1, 0x0, 0x50, 0x4, 0x82, 0x2, 0x55, 0x6, 0x8F, 0x0, 0xB, 0x0, 0x0, 0x1, 0x27, 0x7, 0x27, 0x37, 0x27, 0x37, 0x17, 0x37, 0x17, 0x7, 0x17, 0x1, 0xE5, 0x93, 0x94, 0x6E, 0x94, 0x92, 0x6E, 0x93, 0x94, 0x6E, 0x94, 0x92, 0x4, 0x82, 0x97, 0x95, 0x70, 0x95, 0x95, 0x71, 0x96, 0x95, 0x71, 0x95, 0x96, 0x0, 0x2, 0x0, 0x35, 0x0, 0xD7, 0x3, 0x36, 0x5, 0xAD, 0x0, 0x12, 0x0, 0x1A, 0x0, 0x0, 0x24, 0x26, 0x35, 0x34, 0x37, 0x37, 0x1, 0x33, 0x13, 0x17, 0x37, 0x13, 0x33, 0x1, 0x17, 0x16, 0x15, 0x14, 0x6, 0x27, 0x32, 0x35, 0x34, 0x27, 0x6, 0x15, 0x14, 0x1, 0x52, 0x79, 0x1F, 0x50, 0xFE, 0xED, 0xE2, 0x96, 0x9, 0x9, 0x96, 0xE1, 0xFE, 0xE9, 0x42, 0x25, 0x76, 0x5F, 0x26, 0x24, 0x29, 0xD7, 0x5F, 0x5B, 0x27, 0x48, 0xB8, 0x2, 0xF5, 0xFE, 0xC, 0x30, 0x30, 0x1, 0xF4, 0xFD, 0x0, 0x97, 0x51, 0x34, 0x5B, 0x5F, 0x98, 0x30, 0x1F, 0x57, 0x5B, 0x1B, 0x30, 0x0, 0x1, 0x0, 0x64, 0x2, 0x8C, 0x1, 0x29, 0x7, 0x2E, 0x0, 0x3, 0x0, 0x0, 0x1, 0x11, 0x23, 0x11, 0x1, 0x29, 0xC5, 0x7, 0x2E, 0xFB, 0x5E, 0x4, 0xA2, 0x0, 0x1, 0x0, 0x3C, 0x2, 0x7C, 0x2, 0xDF, 0x5, 0xBA, 0x0, 0x21, 0x0, 0x0, 0x1, 0x34, 0x27, 0x26, 0x26, 0x35, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x23, 0x26, 0x26, 0x23, 0x22, 0x15, 0x14, 0x16, 0x17, 0x16, 0x16, 0x15, 0x14, 0x6, 0x23, 0x22, 0x26, 0x35, 0x33, 0x16, 0x33, 0x32, 0x2, 0x1B, 0xAD, 0x86, 0x92, 0xAC, 0x87, 0x9D, 0xB3, 0xC3, 0x1, 0x40, 0x46, 0x76, 0x4E, 0x56, 0x8E, 0x94, 0xA7, 0x9C, 0xB0, 0xB0, 0xBE, 0x10, 0x98, 0x79, 0x3, 0x62, 0x47, 0x27, 0x1E, 0x73, 0x6A, 0x6E, 0x81, 0x93, 0x6B, 0x28, 0x3D, 0x4E, 0x28, 0x2A, 0x13, 0x1F, 0x74, 0x6D, 0x72, 0x80, 0xA9, 0x63, 0x72, 0x0, 0x1, 0x0, 0x2F, 0x2, 0x8C, 0x3, 0x19, 0x5, 0xAD, 0x0, 0xB, 0x0, 0x0, 0x1, 0x13, 0x13, 0x33, 0x3, 0x13, 0x23, 0x3, 0x3, 0x23, 0x13, 0x3, 0x1, 0x19, 0x89, 0x8D, 0xE1, 0xE8, 0xF1, 0xE1, 0x94, 0x92, 0xE3, 0xF0, 0xE8, 0x5, 0xAD, 0xFE, 0xFB, 0x1, 0x5, 0xFE, 0x77, 0xFE, 0x68, 0x1, 0x10, 0xFE, 0xF0, 0x1, 0x98, 0x1, 0x89, 0x0, 0x1, 0x0, 0x51, 0x2, 0x8C, 0x3, 0xE, 0x5, 0xBA, 0x0, 0x15, 0x0, 0x0, 0x1, 0x15, 0x23, 0x35, 0x26, 0x26, 0x35, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x23, 0x26, 0x26, 0x23, 0x22, 0x6, 0x15, 0x14, 0x17, 0x2, 0xF, 0xC5, 0x70, 0x89, 0xC8, 0x98, 0x94, 0xC9, 0xC3, 0x3, 0x50, 0x43, 0x54, 0x4C, 0x93, 0x3, 0x8A, 0xFE, 0x6B, 0x19, 0xB2, 0x8B, 0xB0, 0xBD, 0xA4, 0x89, 0x3B, 0x4B, 0x6D, 0x5B, 0xBC, 0x5, 0x0, 0x1, 0x0, 0x1A, 0x0, 0x0, 0x2, 0x19, 0x5, 0xB0, 0x0, 0x5, 0x0, 0x0, 0x21, 0x23, 0x11, 0x21, 0x35, 0x21, 0x2, 0x19, 0xF4, 0xFE, 0xF5, 0x1, 0xFF, 0x4, 0xED, 0xC3, 0x0, 0x1, 0x0, 0x1A, 0x0, 0x0, 0x2, 0x19, 0x5, 0xB0, 0x0, 0x7, 0x0, 0x0, 0x21, 0x23, 0x11, 0x21, 0x35, 0x21, 0x11, 0x33, 0x2, 0x19, 0xF4, 0xFE, 0xF5, 0x1, 0xB, 0xF4, 0x3, 0xE2, 0xC3, 0x1, 0xB, 0x0, 0x1, 0x0, 0x1A, 0x0, 0x0, 0x2, 0x19, 0x5, 0xB0, 0x0, 0x7, 0x0, 0x0, 0x21, 0x23, 0x11, 0x21, 0x35, 0x21, 0x11, 0x33, 0x2, 0x19, 0xF4, 0xFE, 0xF5, 0x1, 0xB, 0xF4, 0x2, 0x77, 0xC3, 0x2, 0x76, 0x0, 0x1, 0x0, 0x1A, 0x0, 0x0, 0x2, 0x19, 0x5, 0xB0, 0x0, 0x7, 0x0, 0x0, 0x21, 0x23, 0x11, 0x21, 0x35, 0x21, 0x11, 0x33, 0x2, 0x19, 0xF4, 0xFE, 0xF5, 0x1, 0xB, 0xF4, 0x1, 0xB, 0xC3, 0x3, 0xE2, 0x0, 0x1, 0x0, 0x1A, 0x0, 0x0, 0x2, 0x19, 0x5, 0xB0, 0x0, 0x5, 0x0, 0x0, 0x33, 0x35, 0x21, 0x11, 0x33, 0x11, 0x1A, 0x1, 0xB, 0xF4, 0xC3, 0x4, 0xED, 0xFA, 0x50, 0x0, 0x1, 0x0, 0x84, 0x0, 0x0, 0x2, 0xEE, 0x3, 0x8C, 0x0, 0x5, 0x0, 0x0, 0x33, 0x11, 0x33, 0x11, 0x21, 0x15, 0x84, 0xF2, 0x1, 0x78, 0x3, 0x8C, 0xFD, 0x37, 0xC3, 0x0, 0x1, 0x0, 0x84, 0x0, 0x0, 0x2, 0xC7, 0x3, 0x8C, 0x0, 0x7, 0x0, 0x0, 0x1, 0x21, 0x11, 0x23, 0x11, 0x33, 0x11, 0x21, 0x2, 0xC7, 0xFE, 0xAF, 0xF2, 0xF2, 0x1, 0x51, 0x1, 0x67, 0xFE, 0x99, 0x3, 0x8C, 0xFE, 0x9E, 0x0, 0x1, 0x0, 0x49, 0xFE, 0x5C, 0x3, 0xB, 0xFF, 0x7D, 0x0, 0x8, 0x0, 0x0, 0x5, 0x17, 0x37, 0x33, 0x15, 0x1, 0x23, 0x1, 0x35, 0x1, 0x17, 0x92, 0x93, 0xCF, 0xFE, 0xE9, 0x96, 0xFE, 0xEB, 0x83, 0x9B, 0x9B, 0xA, 0xFE, 0xE9, 0x1, 0x18, 0x9, 0x0, 0x2, 0x0, 0x43, 0x4, 0x8A, 0x2, 0xD9, 0x6, 0x10, 0x0, 0x3, 0x0, 0x7, 0x0, 0x0, 0x1, 0x15, 0x21, 0x35, 0x5, 0x15, 0x21, 0x35, 0x2, 0xD9, 0xFD, 0x6A, 0x2, 0x96, 0xFD, 0x6A, 0x6, 0x10, 0x99, 0x99, 0xEE, 0x98, 0x98, 0x0, 0x2, 0x0, 0x50, 0x3, 0xD6, 0x2, 0xD9, 0x6, 0x18, 0x0, 0x8, 0x0, 0x11, 0x0, 0x0, 0x1, 0x15, 0x14, 0x6, 0x7, 0x27, 0x36, 0x37, 0x35, 0x23, 0x15, 0x14, 0x6, 0x7, 0x27, 0x36, 0x37, 0x35, 0x2, 0xD9, 0x65, 0x51, 0x80, 0x58, 0x2, 0x77, 0x65, 0x52, 0x7F, 0x57, 0x3, 0x6, 0x18, 0xBB, 0x64, 0xDC, 0x47, 0x4E, 0x8A, 0xA2, 0xC8, 0xBB, 0x64, 0xDC, 0x47, 0x4E, 0x8C, 0x9C, 0xCC, 0x0, 0x1, 0x0, 0x3D, 0xFD, 0xDD, 0x2, 0x43, 0xFF, 0xB8, 0x0, 0x8, 0x0, 0x0, 0x1, 0x3, 0x33, 0x13, 0x17, 0x37, 0x13, 0x33, 0x3, 0x1, 0x7, 0xCA, 0x85, 0x73, 0xB, 0xA, 0x74, 0x85, 0xCA, 0xFD, 0xDD, 0x1, 0xDB, 0xFE, 0xE2, 0x2A, 0x2A, 0x1, 0x1E, 0xFE, 0x25, 0x0, 0x1, 0x0, 0x3D, 0xFD, 0xDD, 0x2, 0x43, 0xFF, 0xB8, 0x0, 0x8, 0x0, 0x0, 0x1, 0x3, 0x23, 0x13, 0x33, 0x13, 0x23, 0x3, 0x27, 0x1, 0x35, 0x73, 0x85, 0xCA, 0x72, 0xCA, 0x86, 0x74, 0xA, 0xFE, 0xFC, 0xFE, 0xE1, 0x1, 0xDB, 0xFE, 0x25, 0x1, 0x1F, 0x28, 0x0, 0x1, 0x0, 0x3D, 0xFD, 0xDB, 0x2, 0x44, 0xFF, 0xBC, 0x0, 0x8, 0x0, 0x0, 0x1, 0x25, 0x35, 0x25, 0x15, 0x5, 0x7, 0x17, 0x5, 0x2, 0x44, 0xFD, 0xF9, 0x2, 0x7, 0xFE, 0xC7, 0x2C, 0x2C, 0x1, 0x39, 0xFD, 0xDB, 0xBC, 0x6A, 0xBB, 0x7C, 0x6C, 0x9, 0xA, 0x6A, 0x0, 0x1, 0x0, 0x3D, 0xFD, 0xDB, 0x2, 0x44, 0xFF, 0xBC, 0x0, 0x8, 0x0, 0x0, 0x13, 0x35, 0x25, 0x37, 0x27, 0x25, 0x35, 0x5, 0x15, 0x3D, 0x1, 0x39, 0x2C, 0x2C, 0xFE, 0xC7, 0x2, 0x7, 0xFD, 0xDB, 0x7C, 0x6A, 0xA, 0x9, 0x6C, 0x7C, 0xBB, 0x6A, 0x0, 0x2, 0x0, 0x83, 0xFE, 0x6A, 0x1, 0xEC, 0xFF, 0xBE, 0x0, 0xA, 0x0, 0x14, 0x0, 0x0, 0x16, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x6, 0x23, 0x22, 0x26, 0x37, 0x14, 0x16, 0x33, 0x32, 0x35, 0x34, 0x23, 0x22, 0x6, 0x83, 0x6B, 0x4C, 0x4A, 0x68, 0x68, 0x4A, 0x4C, 0x6B, 0x65, 0x30, 0x22, 0x4E, 0x4E, 0x22, 0x30, 0xA4, 0x62, 0x62, 0x4A, 0x4B, 0x5D, 0x5E, 0x4A, 0x22, 0x2E, 0x50, 0x53, 0x2F, 0xFF, 0xFF, 0x0, 0x37, 0x0, 0xD8, 0x2, 0x10, 0x2, 0x6, 0x0, 0x7, 0x0, 0x45, 0x0, 0x6, 0xFC, 0x6, 0xFF, 0xFF, 0x0, 0x37, 0x0, 0xD8, 0x3, 0xB6, 0x2, 0x6, 0x0, 0x27, 0x0, 0x45, 0x0, 0x6, 0xFC, 0x6, 0x0, 0x7, 0x0, 0x45, 0x1, 0xAC, 0xFC, 0x6, 0xFF, 0xFF, 0x0, 0x48, 0x0, 0xD8, 0x3, 0xC6, 0x2, 0x6, 0x0, 0x27, 0x0, 0x76, 0xFF, 0xD7, 0xFC, 0x6, 0x0, 0x7, 0x0, 0x76, 0x1, 0x7D, 0xFC, 0x6, 0x0, 0x1, 0x0, 0x4A, 0xFE, 0x4F, 0x3, 0x27, 0xFF, 0x69, 0x0, 0x14, 0x0, 0x0, 0x5, 0x17, 0x14, 0x6, 0x23, 0x22, 0x26, 0x26, 0x23, 0x22, 0x6, 0x15, 0x27, 0x34, 0x36, 0x33, 0x32, 0x16, 0x33, 0x32, 0x36, 0x2, 0x92, 0x95, 0x81, 0x5F, 0x41, 0x50, 0x48, 0x35, 0x26, 0x34, 0x95, 0x7F, 0x5F, 0x52, 0x6F, 0x4D, 0x26, 0x36, 0x97, 0xC, 0x70, 0x90, 0x2C, 0x2D, 0x39, 0x2E, 0x8, 0x6D, 0x97, 0x5A, 0x39, 0xFF, 0xFF, 0x0, 0x51, 0x1, 0x7D, 0x1, 0x6C, 0x5, 0xDB, 0x0, 0x27, 0x0, 0x13, 0xFF, 0xC9, 0x1, 0x89, 0x0, 0x7, 0x0, 0x13, 0xFF, 0xC9, 0x4, 0xDA, 0x0, 0x1, 0x0, 0x50, 0x4, 0x77, 0x1, 0xE5, 0x6, 0x0, 0x0, 0x5, 0x0, 0x0, 0x1, 0x23, 0x15, 0x23, 0x11, 0x21, 0x1, 0xE5, 0xED, 0xA8, 0x1, 0x95, 0x5, 0x63, 0xEC, 0x1, 0x89, 0x0, 0x1, 0x0, 0x50, 0x4, 0x77, 0x1, 0xE5, 0x6, 0x0, 0x0, 0x5, 0x0, 0x0, 0x1, 0x35, 0x23, 0x35, 0x21, 0x11, 0x1, 0x3E, 0xEE, 0x1, 0x95, 0x4, 0x77, 0xEC, 0x9D, 0xFE, 0x77, 0x0, 0x1, 0x0, 0x50, 0xFE, 0x2A, 0x1, 0xE5, 0xFF, 0xB3, 0x0, 0x5, 0x0, 0x0, 0x13, 0x11, 0x33, 0x15, 0x33, 0x15, 0x50, 0xA8, 0xED, 0xFE, 0x2A, 0x1, 0x89, 0xEB, 0x9E, 0x0, 0x1, 0x0, 0x50, 0xFE, 0x2A, 0x1, 0xE5, 0xFF, 0xB3, 0x0, 0x5, 0x0, 0x0, 0x1, 0x21, 0x35, 0x33, 0x35, 0x33, 0x1, 0xE5, 0xFE, 0x6B, 0xEE, 0xA7, 0xFE, 0x2A, 0x9E, 0xEB, 0x0, 0x1, 0x0, 0x50, 0xFE, 0x3B, 0x3, 0x7, 0xFF, 0xA9, 0x0, 0x7, 0x0, 0x0, 0x13, 0x11, 0x33, 0x15, 0x21, 0x35, 0x33, 0x11, 0x50, 0xA9, 0x1, 0x66, 0xA8, 0xFE, 0x3B, 0x1, 0x6E, 0xDC, 0xDC, 0xFE, 0x92, 0x0, 0x1, 0x0, 0x50, 0xFE, 0x2A, 0x2, 0xE9, 0xFF, 0xB3, 0x0, 0x5, 0x0, 0x0, 0x13, 0x11, 0x33, 0x15, 0x21, 0x15, 0x50, 0xA9, 0x1, 0xF0, 0xFE, 0x2A, 0x1, 0x89, 0xF6, 0x93, 0x0, 0x1, 0x0, 0x43, 0xFE, 0x4D, 0x3, 0x48, 0x0, 0xA9, 0x0, 0x8, 0x0, 0x0, 0x5, 0x21, 0x17, 0x23, 0x1, 0x1, 0x33, 0x7, 0x21, 0x3, 0x48, 0xFE, 0xA, 0xE1, 0xC3, 0xFE, 0xD3, 0x1, 0x2D, 0xC3, 0xE2, 0x1, 0xF7, 0xD1, 0xE2, 0x1, 0x2E, 0x1, 0x2E, 0xE3, 0x0, 0x1, 0xFC, 0x8D, 0x4, 0xD2, 0xFE, 0x66, 0x6, 0x0, 0x0, 0x3, 0x0, 0x0, 0x1, 0x13, 0x23, 0x1, 0xFD, 0xA2, 0xC4, 0xCA, 0xFE, 0xF1, 0x6, 0x0, 0xFE, 0xD2, 0x1, 0x2E, 0x0, 0x1, 0xFD, 0x5E, 0x4, 0xD2, 0xFF, 0x35, 0x6, 0x0, 0x0, 0x3, 0x0, 0x0, 0x1, 0x13, 0x21, 0x1, 0xFD, 0x5E, 0xC3, 0x1, 0x14, 0xFE, 0xEC, 0x4, 0xD2, 0x1, 0x2E, 0xFE, 0xD2, 0xFF, 0xFF, 0xFC, 0x60, 0x4, 0xE1, 0xFF, 0xF, 0x6, 0x1, 0x0, 0x7, 0x1, 0x77, 0xFB, 0xCB, 0x0, 0x0, 0xFF, 0xFF, 0xFC, 0x72, 0x4, 0xDB, 0xFF, 0x50, 0x5, 0xF5, 0x0, 0x7, 0x1, 0x8D, 0xFB, 0xF8, 0x0, 0x0, 0x0, 0x1, 0xFC, 0x60, 0x5, 0xC, 0xFF, 0xF, 0x5, 0xAA, 0x0, 0x3, 0x0, 0x0, 0x3, 0x15, 0x21, 0x35, 0xF1, 0xFD, 0x51, 0x5, 0xAA, 0x9E, 0x9E, 0xFF, 0xFF, 0xFB, 0xEE, 0x6, 0x2F, 0xFF, 0x84, 0x6, 0xEF, 0x0, 0x7, 0x0, 0x44, 0xFB, 0xEB, 0x6, 0xEF, 0x0, 0x1, 0xFC, 0x75, 0x4, 0xCC, 0xFE, 0xFB, 0x5, 0xE7, 0x0, 0xC, 0x0, 0x0, 0x1, 0x33, 0x14, 0x6, 0x20, 0x26, 0x35, 0x33, 0x14, 0x16, 0x33, 0x32, 0x36, 0xFE, 0x44, 0xB7, 0xAE, 0xFE, 0xD6, 0xAE, 0xB6, 0x40, 0x4D, 0x4C, 0x40, 0x5, 0xE7, 0x7C, 0x9F, 0x9F, 0x7C, 0x37, 0x54, 0x54, 0x0, 0x1, 0xFD, 0x2F, 0x4, 0xD3, 0xFE, 0x42, 0x5, 0xD5, 0x0, 0x9, 0x0, 0x0, 0x1, 0x34, 0x36, 0x32, 0x16, 0x15, 0x14, 0x6, 0x22, 0x26, 0xFD, 0x2F, 0x48, 0x82, 0x49, 0x49, 0x82, 0x48, 0x5, 0x54, 0x38, 0x49, 0x49, 0x38, 0x37, 0x4A, 0x4A, 0x0, 0x2, 0xFC, 0x4, 0x4, 0xE0, 0xFE, 0xCA, 0x5, 0xCD, 0x0, 0xB, 0x0, 0x17, 0x0, 0x0, 0x1, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x6, 0x23, 0x22, 0x26, 0x25, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x6, 0x23, 0x22, 0x26, 0xFC, 0x4, 0x43, 0x3B, 0x3A, 0x45, 0x45, 0x3A, 0x3B, 0x43, 0x1, 0xC9, 0x43, 0x3B, 0x3A, 0x45, 0x45, 0x3A, 0x3B, 0x43, 0x5, 0x56, 0x32, 0x45, 0x45, 0x32, 0x31, 0x44, 0x44, 0x30, 0x32, 0x45, 0x45, 0x32, 0x31, 0x44, 0x44, 0x0, 0x1, 0xFD, 0x3D, 0x4, 0xE7, 0xFE, 0x99, 0x6, 0x80, 0x0, 0xD, 0x0, 0x0, 0x1, 0x23, 0x27, 0x36, 0x35, 0x34, 0x23, 0x37, 0x32, 0x16, 0x15, 0x14, 0x6, 0x7, 0xFE, 0x2, 0xB1, 0x8, 0x8B, 0x97, 0x7, 0xA8, 0xAD, 0x5F, 0x37, 0x4, 0xE7, 0x92, 0x7, 0x3D, 0x48, 0x7B, 0x69, 0x58, 0x48, 0x44, 0x8, 0xFF, 0xFF, 0xFC, 0xDC, 0x4, 0x8E, 0xFE, 0x97, 0x6, 0x2A, 0x0, 0x7, 0x1, 0x8B, 0xFC, 0x63, 0x0, 0x0, 0xFF, 0xFF, 0xFB, 0xEE, 0x4, 0xD2, 0xFF, 0x79, 0x6, 0x0, 0x0, 0x27, 0x0, 0x76, 0xFB, 0x7D, 0x0, 0x0, 0x0, 0x7, 0x0, 0x76, 0xFD, 0x30, 0x0, 0x0, 0x0, 0x1, 0xFC, 0x60, 0x4, 0xE1, 0xFF, 0xE, 0x6, 0x1, 0x0, 0x8, 0x0, 0x0, 0x3, 0x1, 0x23, 0x1, 0x35, 0x33, 0x17, 0x37, 0x33, 0xF2, 0xFE, 0xEF, 0x8F, 0xFE, 0xF2, 0xC0, 0x95, 0x96, 0xC3, 0x5, 0xF6, 0xFE, 0xEB, 0x1, 0x13, 0xD, 0x9C, 0x9C, 0xFF, 0xFF, 0xFD, 0x65, 0x4, 0x7A, 0xFE, 0xC, 0x6, 0x1F, 0x0, 0x7, 0x1, 0x79, 0xFD, 0x28, 0x0, 0x0, 0xFF, 0xFF, 0xFC, 0xDD, 0x4, 0x7A, 0xFE, 0x8F, 0x6, 0x1F, 0x0, 0x27, 0x1, 0x79, 0xFC, 0xA0, 0x0, 0x0, 0x0, 0x7, 0x1, 0x79, 0xFD, 0xAB, 0x0, 0x0, 0x0, 0x2, 0xFC, 0xB, 0x4, 0xE4, 0xFF, 0x33, 0x5, 0xEE, 0x0, 0x3, 0x0, 0x7, 0x0, 0x0, 0x1, 0x13, 0x23, 0x3, 0x23, 0x13, 0x23, 0x1, 0xFE, 0x75, 0xBE, 0xC2, 0xF5, 0x6A, 0xF5, 0xD1, 0xFE, 0xD5, 0x5, 0xEE, 0xFE, 0xF6, 0x1, 0xA, 0xFE, 0xF6, 0x1, 0xA, 0x0, 0x2, 0xFC, 0x75, 0x4, 0xC6, 0xFE, 0xFB, 0x6, 0xBA, 0x0, 0x9, 0x0, 0x16, 0x0, 0x0, 0x1, 0x34, 0x36, 0x32, 0x16, 0x15, 0x14, 0x6, 0x22, 0x26, 0x5, 0x33, 0x14, 0x6, 0x20, 0x26, 0x35, 0x33, 0x14, 0x16, 0x33, 0x32, 0x36, 0xFD, 0x2F, 0x49, 0x82, 0x49, 0x49, 0x82, 0x49, 0x1, 0x15, 0xB7, 0xAE, 0xFE, 0xD6, 0xAE, 0xB6, 0x40, 0x4D, 0x4C, 0x40, 0x6, 0x3E, 0x35, 0x47, 0x47, 0x35, 0x34, 0x47, 0x47, 0x2A, 0x7C, 0x9E, 0x9E, 0x7C, 0x37, 0x53, 0x53, 0x0, 0x1, 0xFC, 0x75, 0x4, 0x96, 0xFE, 0xFB, 0x5, 0xB0, 0x0, 0xD, 0x0, 0x0, 0x1, 0x23, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x23, 0x34, 0x36, 0x33, 0x32, 0x16, 0xFE, 0xFB, 0xB7, 0x3F, 0x4C, 0x4D, 0x40, 0xB7, 0xAF, 0x95, 0x94, 0xAE, 0x4, 0x96, 0x37, 0x53, 0x53, 0x37, 0x7D, 0x9D, 0x9D, 0x0, 0x1, 0xFD, 0x47, 0x3, 0xE1, 0xFE, 0x7D, 0x6, 0x25, 0x0, 0x8, 0x0, 0x0, 0x1, 0x35, 0x34, 0x36, 0x37, 0x17, 0x6, 0x7, 0x15, 0xFD, 0x47, 0x65, 0x52, 0x7F, 0x57, 0x3, 0x3, 0xE1, 0xBE, 0x64, 0xDC, 0x46, 0x4D, 0x8A, 0x9E, 0xCF, 0xFF, 0xFF, 0xFD, 0x1E, 0x3, 0xE1, 0xFE, 0x54, 0x6, 0x25, 0x0, 0xF, 0x1, 0xC3, 0xFB, 0x9B, 0xA, 0x6, 0xC0, 0x0, 0x0, 0x1, 0xFD, 0x1D, 0x3, 0xE1, 0xFE, 0x53, 0x6, 0x25, 0x0, 0x8, 0x0, 0x0, 0x1, 0x33, 0x15, 0x16, 0x17, 0x7, 0x26, 0x26, 0x35, 0xFD, 0x1D, 0xDD, 0x3, 0x56, 0x7F, 0x52, 0x65, 0x6, 0x25, 0xD0, 0x9D, 0x8A, 0x4D, 0x47, 0xDC, 0x63, 0xFF, 0xFF, 0xFF, 0x3A, 0x3, 0xE1, 0x0, 0x70, 0x6, 0x25, 0x0, 0xF, 0x1, 0xC3, 0xFD, 0xB7, 0xA, 0x6, 0xC0, 0x0, 0x0, 0x1, 0xFC, 0xB8, 0xFE, 0x7A, 0xFE, 0x91, 0xFF, 0xA8, 0x0, 0x3, 0x0, 0x0, 0x5, 0x13, 0x23, 0x1, 0xFD, 0xCD, 0xC4, 0xCA, 0xFE, 0xF1, 0x58, 0xFE, 0xD2, 0x1, 0x2E, 0x0, 0x1, 0xFC, 0xC7, 0xFE, 0x7A, 0xFE, 0x9F, 0xFF, 0xA8, 0x0, 0x3, 0x0, 0x0, 0x1, 0x13, 0x21, 0x1, 0xFC, 0xC7, 0xC3, 0x1, 0x15, 0xFE, 0xEB, 0xFE, 0x7A, 0x1, 0x2E, 0xFE, 0xD2, 0x0, 0x1, 0xFC, 0xD4, 0xFE, 0x24, 0xFE, 0x8D, 0xFF, 0xC2, 0x0, 0x7, 0x0, 0x0, 0x1, 0x23, 0x35, 0x21, 0x35, 0x21, 0x35, 0x33, 0xFE, 0x8D, 0xA7, 0xFE, 0xEE, 0x1, 0x12, 0xA7, 0xFE, 0x24, 0x80, 0x9E, 0x80, 0x0, 0x1, 0xFC, 0xDC, 0xFE, 0x24, 0xFE, 0x95, 0xFF, 0xC2, 0x0, 0x7, 0x0, 0x0, 0x1, 0x11, 0x33, 0x15, 0x21, 0x15, 0x21, 0x15, 0xFC, 0xDC, 0xA8, 0x1, 0x11, 0xFE, 0xEF, 0xFE, 0x24, 0x1, 0x9E, 0x80, 0x9E, 0x80, 0x0, 0x1, 0xFC, 0xF3, 0x5, 0x3, 0xFF, 0x9C, 0x6, 0x7B, 0x0, 0x5, 0x0, 0x0, 0x3, 0x23, 0x35, 0x21, 0x35, 0x21, 0x64, 0xA8, 0xFD, 0xFF, 0x2, 0xA9, 0x5, 0x3, 0xE6, 0x92, 0x0, 0x1, 0xFE, 0x65, 0x3, 0xE1, 0xFF, 0x9A, 0x6, 0x25, 0x0, 0x8, 0x0, 0x0, 0x3, 0x15, 0x6, 0x6, 0x7, 0x27, 0x36, 0x36, 0x35, 0x66, 0x1, 0x64, 0x51, 0x7F, 0x35, 0x24, 0x6, 0x25, 0x4E, 0xB9, 0xF7, 0x46, 0x4D, 0x61, 0xD7, 0xBF, 0x0, 0x1, 0xFD, 0x71, 0xFE, 0x2B, 0xFE, 0x41, 0xFF, 0xB4, 0x0, 0xC, 0x0, 0x0, 0x1, 0x15, 0x22, 0x26, 0x34, 0x36, 0x33, 0x15, 0x22, 0x6, 0x15, 0x14, 0x16, 0xFE, 0x41, 0x56, 0x7A, 0x7A, 0x56, 0x2A, 0x38, 0x38, 0xFE, 0x88, 0x5D, 0x6C, 0xAC, 0x71, 0x5F, 0x3A, 0x2E, 0x2C, 0x39, 0x0, 0x1, 0xFC, 0xDB, 0xFE, 0x3D, 0xFE, 0x93, 0xFF, 0xB2, 0x0, 0x7, 0x0, 0x0, 0x1, 0x21, 0x35, 0x33, 0x35, 0x33, 0x15, 0x33, 0xFE, 0x93, 0xFE, 0x48, 0x88, 0xA8, 0x88, 0xFE, 0x3D, 0x9F, 0xD6, 0xD6, 0x0, 0x1, 0xFC, 0xDC, 0xFE, 0x32, 0xFE, 0x94, 0xFF, 0xA8, 0x0, 0x7, 0x0, 0x0, 0x1, 0x35, 0x23, 0x35, 0x21, 0x15, 0x23, 0x15, 0xFD, 0x63, 0x87, 0x1, 0xB8, 0x88, 0xFE, 0x32, 0xD7, 0x9F, 0x9F, 0xD7, 0x0, 0x1, 0xFC, 0xDC, 0xFE, 0x13, 0xFE, 0x94, 0xFF, 0xC8, 0x0, 0xB, 0x0, 0x0, 0x1, 0x23, 0x15, 0x23, 0x35, 0x23, 0x35, 0x33, 0x35, 0x33, 0x15, 0x33, 0xFE, 0x94, 0x88, 0xA8, 0x88, 0x88, 0xA8, 0x88, 0xFE, 0xA0, 0x8D, 0x8D, 0x99, 0x8F, 0x8F, 0x0, 0x1, 0xFC, 0xC2, 0xFE, 0xA4, 0xFE, 0xB0, 0xFF, 0x43, 0x0, 0x3, 0x0, 0x0, 0x5, 0x21, 0x15, 0x21, 0xFC, 0xC2, 0x1, 0xEE, 0xFE, 0x12, 0xBD, 0x9F, 0x0, 0x1, 0xFD, 0xBD, 0xFE, 0x52, 0xFF, 0x66, 0x0, 0xBE, 0x0, 0xC, 0x0, 0x0, 0x25, 0x33, 0x11, 0x10, 0x21, 0x22, 0x27, 0x35, 0x16, 0x33, 0x32, 0x36, 0x35, 0xFE, 0x96, 0xD0, 0xFE, 0xD1, 0x41, 0x39, 0x20, 0x26, 0x3E, 0x55, 0xBE, 0xFE, 0xF4, 0xFE, 0xA0, 0x11, 0xB1, 0x7, 0x46, 0x5F, 0x0, 0x1, 0xFE, 0xCE, 0xFE, 0x52, 0x0, 0x76, 0x0, 0xBE, 0x0, 0xC, 0x0, 0x0, 0x25, 0x33, 0x11, 0x14, 0x16, 0x33, 0x32, 0x37, 0x15, 0x6, 0x23, 0x20, 0x3, 0xFE, 0xCE, 0xCF, 0x56, 0x3E, 0x26, 0x1F, 0x38, 0x41, 0xFE, 0xD9, 0x8, 0xBE, 0xFE, 0xF4, 0x5F, 0x46, 0x7, 0xB1, 0x11, 0x1, 0x4E, 0x0, 0x1, 0xFD, 0x1B, 0xFE, 0x93, 0xFE, 0x2F, 0xFF, 0x8B, 0x0, 0x7, 0x0, 0x0, 0x4, 0x36, 0x32, 0x16, 0x14, 0x6, 0x22, 0x26, 0xFD, 0x1B, 0x49, 0x82, 0x49, 0x49, 0x82, 0x49, 0xBE, 0x49, 0x49, 0x68, 0x47, 0x47, 0x0, 0x2, 0xFC, 0x3, 0xFE, 0x98, 0xFE, 0xC9, 0xFF, 0x85, 0x0, 0x7, 0x0, 0xF, 0x0, 0x0, 0x4, 0x36, 0x32, 0x16, 0x14, 0x6, 0x22, 0x26, 0x24, 0x36, 0x32, 0x16, 0x14, 0x6, 0x22, 0x26, 0xFC, 0x3, 0x43, 0x76, 0x44, 0x44, 0x76, 0x43, 0x1, 0xC9, 0x43, 0x76, 0x44, 0x44, 0x76, 0x43, 0xC0, 0x45, 0x45, 0x64, 0x43, 0x43, 0x63, 0x45, 0x45, 0x64, 0x43, 0x43, 0x0, 0x2, 0xFC, 0xDD, 0xFE, 0x26, 0xFE, 0x98, 0xFF, 0xC2, 0x0, 0x9, 0x0, 0x13, 0x0, 0x0, 0x4, 0x36, 0x33, 0x32, 0x16, 0x14, 0x6, 0x23, 0x22, 0x26, 0x37, 0x14, 0x16, 0x32, 0x36, 0x35, 0x34, 0x26, 0x22, 0x6, 0xFC, 0xDD, 0x7E, 0x5F, 0x5E, 0x80, 0x80, 0x5E, 0x5F, 0x7E, 0x6D, 0x3E, 0x64, 0x3F, 0x3F, 0x64, 0x3E, 0xB8, 0x7A, 0x7A, 0xAC, 0x76, 0x76, 0x56, 0x2C, 0x43, 0x43, 0x2C, 0x2E, 0x44, 0x44, 0x0, 0x1, 0xFD, 0x32, 0xFD, 0xD7, 0xFE, 0x46, 0xFF, 0x70, 0x0, 0x8, 0x0, 0x0, 0x5, 0x15, 0x14, 0x6, 0x7, 0x27, 0x36, 0x37, 0x35, 0xFE, 0x46, 0x4E, 0x46, 0x80, 0x4A, 0x2, 0x90, 0x4B, 0x55, 0xBC, 0x3D, 0x4C, 0x70, 0x7F, 0x5E, 0x0, 0x1, 0xFD, 0x28, 0xFE, 0x40, 0xFE, 0x83, 0x0, 0x4, 0x0, 0xE, 0x0, 0x0, 0x25, 0x33, 0x7, 0x16, 0x16, 0x15, 0x14, 0x6, 0x23, 0x27, 0x32, 0x35, 0x34, 0x26, 0x27, 0xFD, 0x47, 0xB2, 0xC, 0x38, 0x5E, 0xA5, 0xA1, 0x7, 0x88, 0x47, 0x4F, 0x4, 0x37, 0xA, 0x4D, 0x56, 0x65, 0x7B, 0x8A, 0x59, 0x2D, 0x22, 0x6, 0x0, 0x1, 0xFC, 0xCA, 0xFE, 0x52, 0xFE, 0x42, 0x0, 0x3C, 0x0, 0x10, 0x0, 0x0, 0x25, 0x17, 0x6, 0x6, 0x15, 0x14, 0x33, 0x32, 0x37, 0x17, 0x6, 0x23, 0x22, 0x26, 0x35, 0x34, 0x36, 0xFD, 0xCA, 0x64, 0x44, 0x5D, 0x47, 0x2B, 0x2E, 0x15, 0x49, 0x5B, 0x59, 0x7B, 0x78, 0x3C, 0x3C, 0x2D, 0x5F, 0x3B, 0x44, 0x17, 0x8E, 0x2C, 0x66, 0x63, 0x4E, 0x96, 0x0, 0x1, 0xFD, 0x65, 0xFE, 0xE, 0xFE, 0xC, 0xFF, 0xB3, 0x0, 0x3, 0x0, 0x0, 0x5, 0x11, 0x23, 0x11, 0xFE, 0xC, 0xA7, 0x4D, 0xFE, 0x5B, 0x1, 0xA5, 0x0, 0x1, 0xFC, 0x5B, 0xFE, 0x2B, 0xFF, 0x12, 0xFF, 0x9A, 0x0, 0x7, 0x0, 0x0, 0x1, 0x11, 0x21, 0x11, 0x23, 0x35, 0x21, 0x15, 0xFC, 0x5B, 0x2, 0xB7, 0xA8, 0xFE, 0x9A, 0xFE, 0x2B, 0x1, 0x6F, 0xFE, 0x91, 0xDC, 0xDC, 0x0, 0x1, 0xFC, 0x2B, 0xFE, 0x9B, 0xFF, 0x49, 0xFF, 0x90, 0x0, 0x16, 0x0, 0x0, 0x1, 0x22, 0x27, 0x6, 0x23, 0x22, 0x26, 0x35, 0x33, 0x14, 0x16, 0x33, 0x32, 0x35, 0x33, 0x14, 0x33, 0x32, 0x36, 0x35, 0x33, 0x14, 0x6, 0xFE, 0x68, 0x70, 0x3F, 0x3F, 0x71, 0x61, 0x7D, 0x67, 0x44, 0x33, 0x7D, 0x67, 0x7B, 0x34, 0x45, 0x68, 0x80, 0xFE, 0x9B, 0x50, 0x50, 0x8A, 0x6B, 0x37, 0x41, 0x78, 0x78, 0x41, 0x37, 0x6B, 0x8A, 0x0, 0x1, 0xFC, 0x61, 0xFE, 0x69, 0xFF, 0x10, 0xFF, 0x89, 0x0, 0x8, 0x0, 0x0, 0x7, 0x1, 0x23, 0x1, 0x35, 0x33, 0x17, 0x37, 0x33, 0xF0, 0xFE, 0xEE, 0x8F, 0xFE, 0xF2, 0xC0, 0x95, 0x97, 0xC3, 0x82, 0xFE, 0xEB, 0x1, 0x13, 0xD, 0x9C, 0x9C, 0x0, 0x1, 0xFC, 0x61, 0xFE, 0x76, 0xFF, 0x10, 0xFF, 0x96, 0x0, 0x8, 0x0, 0x0, 0x5, 0x1, 0x15, 0x23, 0x27, 0x7, 0x23, 0x35, 0x1, 0xFD, 0xFE, 0x1, 0x12, 0xC3, 0x96, 0x96, 0xC0, 0x1, 0xE, 0x6A, 0xFE, 0xEB, 0xB, 0x9C, 0x9C, 0xD, 0x1, 0x13, 0x0, 0x1, 0xFC, 0x75, 0xFE, 0x8B, 0xFE, 0xFB, 0xFF, 0xA5, 0x0, 0xC, 0x0, 0x0, 0x5, 0x33, 0x14, 0x6, 0x20, 0x26, 0x35, 0x33, 0x14, 0x16, 0x33, 0x32, 0x36, 0xFE, 0x44, 0xB7, 0xAE, 0xFE, 0xD6, 0xAE, 0xB6, 0x40, 0x4D, 0x4C, 0x40, 0x5B, 0x7D, 0x9D, 0x9D, 0x7D, 0x37, 0x54, 0x54, 0x0, 0x1, 0xFC, 0x75, 0xFE, 0x83, 0xFE, 0xFB, 0xFF, 0x9D, 0x0, 0xC, 0x0, 0x0, 0x1, 0x23, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x23, 0x34, 0x36, 0x20, 0x16, 0xFE, 0xFB, 0xB7, 0x40, 0x4C, 0x4D, 0x40, 0xB6, 0xAE, 0x1, 0x2A, 0xAE, 0xFE, 0x83, 0x37, 0x53, 0x53, 0x37, 0x7C, 0x9E, 0x9E, 0x0, 0x1, 0xFC, 0x43, 0xFE, 0x79, 0xFF, 0x21, 0xFF, 0x93, 0x0, 0x14, 0x0, 0x0, 0x5, 0x17, 0x14, 0x6, 0x23, 0x22, 0x26, 0x26, 0x23, 0x22, 0x6, 0x15, 0x27, 0x34, 0x36, 0x33, 0x32, 0x16, 0x33, 0x32, 0x36, 0xFE, 0x8C, 0x95, 0x81, 0x5F, 0x41, 0x50, 0x47, 0x36, 0x26, 0x34, 0x96, 0x7F, 0x60, 0x52, 0x6F, 0x4D, 0x26, 0x36, 0x6D, 0xC, 0x6F, 0x91, 0x2C, 0x2D, 0x39, 0x2E, 0x8, 0x6E, 0x96, 0x59, 0x39, 0x0, 0x1, 0xFC, 0x62, 0xFE, 0xC1, 0xFF, 0x10, 0xFF, 0x5F, 0x0, 0x3, 0x0, 0x0, 0x7, 0x15, 0x21, 0x35, 0xF0, 0xFD, 0x52, 0xA1, 0x9E, 0x9E, 0xFF, 0xFF, 0xFB, 0xED, 0xFE, 0xAD, 0xFF, 0x83, 0xFF, 0x6D, 0x0, 0x7, 0x0, 0x44, 0xFB, 0xEA, 0xFF, 0x6D, 0x0, 0x2, 0xFB, 0xED, 0xFD, 0xF9, 0xFF, 0x84, 0xFF, 0xAC, 0x0, 0x3, 0x0, 0x7, 0x0, 0x0, 0x7, 0x15, 0x21, 0x35, 0x1, 0x15, 0x21, 0x35, 0x7D, 0xFC, 0x6A, 0x3, 0x97, 0xFC, 0x6A, 0x54, 0xAC, 0xAC, 0xFE, 0xF9, 0xAC, 0xAC, 0xFF, 0xFF, 0xFC, 0x49, 0x1, 0x8F, 0xFF, 0x27, 0x2, 0xA9, 0x0, 0x7, 0x1, 0x8D, 0xFB, 0xCF, 0xFC, 0xB4, 0xFF, 0xFF, 0xFC, 0x69, 0x1, 0xC2, 0xFF, 0x7, 0x2, 0x6D, 0x0, 0x7, 0x7, 0xA4, 0xFB, 0xD9, 0xFF, 0x3B, 0x0, 0x1, 0xFB, 0x44, 0x1, 0xC2, 0x0, 0x2C, 0x2, 0x6D, 0x0, 0x3, 0x0, 0x0, 0x13, 0x15, 0x21, 0x35, 0x2C, 0xFB, 0x18, 0x2, 0x6D, 0xAB, 0xAB, 0x0, 0x1, 0xFC, 0x1E, 0xFF, 0x76, 0xFF, 0x46, 0x4, 0xBC, 0x0, 0x3, 0x0, 0x0, 0x3, 0x1, 0x23, 0x1, 0xBA, 0xFD, 0x69, 0x91, 0x2, 0x97, 0x4, 0xBC, 0xFA, 0xBA, 0x5, 0x46, 0x0, 0x1, 0xFB, 0xA, 0xFF, 0xA1, 0xFF, 0x51, 0x5, 0xEE, 0x0, 0x3, 0x0, 0x0, 0x3, 0x1, 0x23, 0x1, 0xAF, 0xFC, 0x2C, 0x73, 0x3, 0xD4, 0x5, 0xEE, 0xF9, 0xB3, 0x6, 0x4D, 0x0, 0x1, 0xFD, 0x50, 0xFE, 0x2B, 0xFE, 0x20, 0xFF, 0xB4, 0x0, 0xC, 0x0, 0x0, 0x1, 0x35, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x35, 0x32, 0x16, 0x14, 0x6, 0xFD, 0x50, 0x2A, 0x38, 0x38, 0x2A, 0x56, 0x7A, 0x7A, 0xFE, 0x2B, 0x5D, 0x39, 0x2C, 0x2E, 0x3A, 0x5F, 0x71, 0xAC, 0x6C, 0x0, 0x1, 0xFC, 0x5C, 0xFE, 0x23, 0xFF, 0x13, 0xFF, 0x91, 0x0, 0x7, 0x0, 0x0, 0x1, 0x11, 0x33, 0x15, 0x21, 0x35, 0x33, 0x11, 0xFC, 0x5C, 0xA9, 0x1, 0x66, 0xA8, 0xFE, 0x23, 0x1, 0x6E, 0xDC, 0xDC, 0xFE, 0x92, 0x0, 0x2, 0xFC, 0xE8, 0xFE, 0xE, 0xFE, 0x8A, 0xFF, 0xB0, 0x0, 0x3, 0x0, 0x7, 0x0, 0x0, 0x1, 0x11, 0x21, 0x11, 0x1, 0x15, 0x33, 0x35, 0xFC, 0xE8, 0x1, 0xA2, 0xFE, 0xDC, 0xA7, 0xFE, 0xE, 0x1, 0xA2, 0xFE, 0x5E, 0x1, 0x24, 0xA7, 0xA7, 0x0, 0x1, 0xFC, 0x2B, 0xFE, 0x9E, 0xFF, 0x49, 0xFF, 0x93, 0x0, 0x16, 0x0, 0x0, 0x1, 0x23, 0x34, 0x36, 0x33, 0x32, 0x17, 0x36, 0x33, 0x32, 0x16, 0x15, 0x23, 0x34, 0x26, 0x23, 0x22, 0x15, 0x23, 0x34, 0x23, 0x22, 0x6, 0xFC, 0x92, 0x67, 0x7D, 0x61, 0x71, 0x3F, 0x3F, 0x70, 0x61, 0x80, 0x68, 0x45, 0x34, 0x7B, 0x67, 0x7D, 0x33, 0x44, 0xFE, 0x9E, 0x6A, 0x8B, 0x50, 0x50, 0x8B, 0x6A, 0x37, 0x41, 0x77, 0x77, 0x41, 0x0, 0x1, 0xFD, 0x4, 0x4, 0xDF, 0xFE, 0xE3, 0x6, 0xC6, 0x0, 0xB, 0x0, 0x0, 0x1, 0x27, 0x7, 0x27, 0x37, 0x27, 0x37, 0x17, 0x37, 0x17, 0x7, 0x17, 0xFE, 0x7C, 0x89, 0x8A, 0x65, 0x8A, 0x88, 0x65, 0x89, 0x8A, 0x65, 0x8A, 0x89, 0x4, 0xDF, 0x8D, 0x8B, 0x68, 0x8A, 0x8B, 0x68, 0x8C, 0x8B, 0x68, 0x8A, 0x8C, 0x0, 0x1, 0xFD, 0x45, 0x4, 0x62, 0xFE, 0x2A, 0x6, 0x87, 0x0, 0x12, 0x0, 0x0, 0x1, 0x35, 0x32, 0x36, 0x35, 0x34, 0x26, 0x35, 0x34, 0x36, 0x33, 0x15, 0x22, 0x15, 0x14, 0x16, 0x15, 0x14, 0x6, 0xFD, 0x45, 0x28, 0x20, 0x46, 0x80, 0x62, 0x40, 0x41, 0x7A, 0x4, 0x62, 0x83, 0x25, 0x13, 0x27, 0x75, 0x3F, 0x4A, 0x45, 0x82, 0x32, 0x2A, 0x72, 0x41, 0x49, 0x4B, 0x0, 0x2, 0xFB, 0xED, 0x5, 0xD4, 0xFF, 0x83, 0x7, 0x7F, 0x0, 0x3, 0x0, 0x7, 0x0, 0x0, 0x3, 0x15, 0x21, 0x35, 0x1, 0x15, 0x21, 0x35, 0x7D, 0xFC, 0x6A, 0x3, 0x96, 0xFC, 0x6B, 0x7, 0x7F, 0x9D, 0x9D, 0xFE, 0xF2, 0x9D, 0x9D, 0xFF, 0xFF, 0xFF, 0x0, 0x4, 0xD2, 0x0, 0xD9, 0x6, 0x0, 0x0, 0x7, 0x0, 0x45, 0xFE, 0xCF, 0x0, 0x0, 0xFF, 0xFF, 0xFF, 0xF, 0x4, 0xD2, 0x0, 0xE7, 0x6, 0x0, 0x0, 0x7, 0x0, 0x76, 0xFE, 0x9E, 0x0, 0x0, 0xFF, 0xFF, 0xFC, 0x49, 0x4, 0xDB, 0xFF, 0x27, 0x5, 0xF5, 0x0, 0x7, 0x1, 0x8D, 0xFB, 0xCF, 0x0, 0x0, 0xFF, 0xFF, 0xFD, 0x30, 0x4, 0xC5, 0xFE, 0x44, 0x6, 0x65, 0x0, 0x7, 0x7, 0x25, 0xFC, 0xEA, 0x5, 0x5F, 0xFF, 0xFF, 0xFC, 0xB, 0x4, 0xE0, 0xFF, 0x5E, 0x6, 0xAF, 0x0, 0x7, 0x2, 0x2E, 0xFB, 0xA3, 0x0, 0x0, 0x0, 0x1, 0xFD, 0x60, 0xFD, 0xF2, 0xFE, 0x62, 0xFF, 0xBA, 0x0, 0xB, 0x0, 0x0, 0x5, 0x33, 0x11, 0x14, 0x33, 0x37, 0x15, 0x6, 0x23, 0x22, 0x26, 0x35, 0xFD, 0x60, 0xA4, 0x33, 0x2B, 0x22, 0x30, 0x4D, 0x63, 0x46, 0xFE, 0xF6, 0x48, 0x4, 0x6E, 0xC, 0x57, 0x63, 0x0, 0x1, 0xFC, 0x5C, 0x4, 0xC0, 0xFF, 0x13, 0x6, 0x49, 0x0, 0x7, 0x0, 0x0, 0x1, 0x11, 0x21, 0x11, 0x23, 0x35, 0x21, 0x15, 0xFC, 0x5C, 0x2, 0xB7, 0xA8, 0xFE, 0x9A, 0x4, 0xC0, 0x1, 0x89, 0xFE, 0x77, 0xF7, 0xF7, 0x0, 0x2, 0xFC, 0xC2, 0xFE, 0xE, 0xFE, 0xB0, 0xFF, 0x9D, 0x0, 0x3, 0x0, 0x7, 0x0, 0x0, 0x5, 0x21, 0x15, 0x21, 0x15, 0x21, 0x15, 0x21, 0xFC, 0xC2, 0x1, 0xEE, 0xFE, 0x12, 0x1, 0xEE, 0xFE, 0x12, 0x63, 0x9B, 0x59, 0x9B, 0xFF, 0xFF, 0xFC, 0xCE, 0xFE, 0xE, 0xFE, 0xA2, 0xFF, 0xB3, 0x0, 0x27, 0x1, 0x79, 0xFC, 0x91, 0xF9, 0x94, 0x0, 0x7, 0x1, 0x79, 0xFD, 0xBE, 0xF9, 0x94, 0x0, 0x1, 0xFD, 0x9, 0xFE, 0x6, 0xFE, 0x9E, 0xFF, 0x8F, 0x0, 0x5, 0x0, 0x0, 0x1, 0x35, 0x23, 0x35, 0x21, 0x11, 0xFD, 0xF7, 0xEE, 0x1, 0x95, 0xFE, 0x6, 0xEC, 0x9D, 0xFE, 0x77, 0x0, 0x1, 0xFC, 0x4A, 0x4, 0x99, 0xFF, 0x27, 0x6, 0x2F, 0x0, 0x1A, 0x0, 0x0, 0x1, 0x22, 0x27, 0x7, 0x27, 0x37, 0x26, 0x23, 0x22, 0x6, 0x15, 0x27, 0x34, 0x36, 0x33, 0x32, 0x17, 0x37, 0x17, 0x7, 0x17, 0x32, 0x36, 0x35, 0x17, 0x14, 0x6, 0xFE, 0x47, 0x3D, 0x39, 0x39, 0x6A, 0x36, 0x14, 0x16, 0x27, 0x34, 0x95, 0x7F, 0x5F, 0x3A, 0x46, 0x3B, 0x68, 0x33, 0x1E, 0x26, 0x36, 0x95, 0x80, 0x4, 0xE9, 0x1E, 0x6E, 0x3D, 0x67, 0x5, 0x39, 0x2E, 0x8, 0x6E, 0x96, 0x28, 0x70, 0x3D, 0x61, 0x3, 0x39, 0x2E, 0xC, 0x6F, 0x91, 0x0, 0x3, 0xFC, 0x2A, 0x4, 0x79, 0xFF, 0x7, 0x7, 0x92, 0x0, 0x9, 0x0, 0x1E, 0x0, 0x28, 0x0, 0x0, 0x1, 0x34, 0x36, 0x32, 0x16, 0x15, 0x14, 0x6, 0x22, 0x26, 0x5, 0x17, 0x14, 0x6, 0x23, 0x22, 0x26, 0x26, 0x23, 0x22, 0x6, 0x15, 0x27, 0x34, 0x36, 0x33, 0x32, 0x16, 0x33, 0x32, 0x36, 0x1, 0x34, 0x36, 0x32, 0x16, 0x15, 0x14, 0x6, 0x22, 0x26, 0xFD, 0x12, 0x48, 0x82, 0x49, 0x49, 0x82, 0x48, 0x1, 0x60, 0x95, 0x80, 0x5F, 0x41, 0x50, 0x48, 0x35, 0x26, 0x35, 0x95, 0x7F, 0x60, 0x51, 0x6F, 0x4D, 0x27, 0x35, 0xFE, 0xA0, 0x48, 0x82, 0x49, 0x49, 0x82, 0x48, 0x7, 0x16, 0x35, 0x47, 0x47, 0x35, 0x34, 0x47, 0x47, 0x51, 0xC, 0x70, 0x90, 0x2D, 0x2C, 0x39, 0x2E, 0x8, 0x6E, 0x96, 0x5A, 0x3A, 0xFE, 0x91, 0x35, 0x48, 0x48, 0x35, 0x34, 0x47, 0x47, 0x0, 0x2, 0xFC, 0x55, 0x4, 0xDC, 0xFF, 0x32, 0x6, 0x9E, 0x0, 0x13, 0x0, 0x28, 0x0, 0x0, 0x1, 0x17, 0x14, 0x6, 0x23, 0x22, 0x26, 0x26, 0x23, 0x22, 0x15, 0x27, 0x34, 0x36, 0x33, 0x32, 0x16, 0x33, 0x32, 0x36, 0x15, 0x17, 0x14, 0x6, 0x23, 0x22, 0x26, 0x26, 0x23, 0x22, 0x6, 0x15, 0x27, 0x34, 0x36, 0x33, 0x32, 0x16, 0x33, 0x32, 0x36, 0xFE, 0x9D, 0x95, 0x80, 0x60, 0x42, 0x4F, 0x48, 0x34, 0x5B, 0x95, 0x7F, 0x5F, 0x52, 0x6F, 0x4D, 0x26, 0x36, 0x95, 0x80, 0x60, 0x42, 0x4F, 0x48, 0x34, 0x27, 0x34, 0x95, 0x7F, 0x5F, 0x52, 0x6F, 0x4D, 0x26, 0x36, 0x6, 0x9E, 0xA, 0x57, 0x73, 0x23, 0x23, 0x50, 0x7, 0x56, 0x76, 0x46, 0x2C, 0xBE, 0xA, 0x58, 0x72, 0x23, 0x23, 0x2D, 0x24, 0x7, 0x56, 0x76, 0x45, 0x2C, 0x0, 0x1, 0xFC, 0xD, 0xFD, 0xD9, 0xFF, 0x63, 0xFF, 0x89, 0x0, 0xD, 0x0, 0x0, 0x1, 0x37, 0x21, 0x17, 0x23, 0x27, 0x37, 0x33, 0x7, 0x21, 0x27, 0x33, 0x17, 0x7, 0xFE, 0x8, 0x9C, 0xFE, 0x29, 0x9C, 0x89, 0xD3, 0xD3, 0x89, 0x9A, 0x1, 0xD3, 0x9A, 0x89, 0xD2, 0xD2, 0xFD, 0xD9, 0xA0, 0xA0, 0xD8, 0xD8, 0x9E, 0x9E, 0xD8, 0xD8, 0x0, 0x1, 0xFC, 0xD1, 0xFD, 0xDA, 0xFE, 0x9F, 0xFF, 0xA8, 0x0, 0x8, 0x0, 0x0, 0x1, 0x27, 0x11, 0x23, 0x11, 0x7, 0x35, 0x37, 0x17, 0xFE, 0x9F, 0xAD, 0x73, 0xAE, 0xE7, 0xE7, 0xFE, 0x56, 0x9A, 0xFE, 0xEA, 0x1, 0x17, 0x9B, 0x85, 0xCD, 0xCD, 0x0, 0x1, 0xFC, 0x7C, 0x4, 0xA8, 0xFF, 0x12, 0x7, 0x30, 0x0, 0x8, 0x0, 0x0, 0x1, 0x35, 0x25, 0x37, 0x27, 0x25, 0x35, 0x5, 0x15, 0xFC, 0x7C, 0x1, 0x92, 0x3D, 0x3D, 0xFE, 0x6E, 0x2, 0x96, 0x4, 0xA8, 0xA4, 0x91, 0xE, 0xE, 0x93, 0xA4, 0xFF, 0x89, 0x0, 0x1, 0xFD, 0x6F, 0x4, 0x62, 0xFE, 0x3F, 0x5, 0xEB, 0x0, 0xC, 0x0, 0x0, 0x1, 0x22, 0x26, 0x34, 0x36, 0x33, 0x15, 0x22, 0x6, 0x15, 0x14, 0x16, 0x33, 0xFE, 0x3F, 0x56, 0x7A, 0x7A, 0x56, 0x2A, 0x38, 0x38, 0x2A, 0x4, 0x62, 0x6C, 0xAC, 0x71, 0x5F, 0x3A, 0x2E, 0x2B, 0x3A, 0x0, 0x2, 0xFC, 0x75, 0x4, 0x8F, 0xFE, 0xFB, 0x6, 0xBD, 0x0, 0xD, 0x0, 0x19, 0x0, 0x0, 0x1, 0x23, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x23, 0x34, 0x36, 0x33, 0x32, 0x16, 0x1, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x6, 0x23, 0x22, 0x26, 0xFE, 0xFB, 0xB7, 0x3F, 0x4C, 0x4D, 0x40, 0xB7, 0xAF, 0x95, 0x94, 0xAE, 0xFE, 0x33, 0x49, 0x41, 0x40, 0x4A, 0x4A, 0x40, 0x41, 0x49, 0x5, 0xA2, 0x37, 0x54, 0x54, 0x37, 0x7D, 0x9E, 0x9E, 0xFE, 0xEB, 0x35, 0x47, 0x47, 0x35, 0x34, 0x47, 0x47, 0x0, 0x1, 0xFD, 0x4, 0xFD, 0xF0, 0xFE, 0xD3, 0xFF, 0xC7, 0x0, 0xB, 0x0, 0x0, 0x1, 0x27, 0x7, 0x27, 0x37, 0x27, 0x37, 0x17, 0x37, 0x17, 0x7, 0x17, 0xFE, 0x6F, 0x84, 0x85, 0x62, 0x85, 0x84, 0x63, 0x84, 0x85, 0x62, 0x85, 0x84, 0xFD, 0xF0, 0x88, 0x86, 0x64, 0x86, 0x87, 0x64, 0x87, 0x86, 0x64, 0x86, 0x88, 0xFF, 0xFF, 0xFC, 0xBE, 0xFD, 0xDB, 0xFE, 0xC5, 0xFF, 0xBC, 0x0, 0x7, 0x1, 0xA2, 0xFC, 0x81, 0x0, 0x0, 0xFF, 0xFF, 0xFC, 0xCE, 0xFD, 0xDB, 0xFE, 0xD5, 0xFF, 0xBC, 0x0, 0x7, 0x1, 0xA3, 0xFC, 0x91, 0x0, 0x0, 0xFF, 0xFF, 0xFC, 0x17, 0xFD, 0xDB, 0x0, 0x1E, 0xFF, 0xBC, 0x0, 0x27, 0x1, 0xA3, 0xFB, 0xDA, 0x0, 0x0, 0x0, 0x7, 0x1, 0xA1, 0xFD, 0xDB, 0x0, 0x0, 0xFF, 0xFF, 0xFD, 0x4F, 0x4, 0x62, 0xFE, 0x1F, 0x5, 0xEB, 0x0, 0x7, 0x1, 0x6F, 0xFD, 0x19, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x49, 0x4, 0xA6, 0x1, 0x5D, 0x5, 0x9E, 0x0, 0x7, 0x1, 0xD4, 0x3, 0x2E, 0x6, 0x13, 0x0, 0x1, 0xFC, 0xD9, 0xFD, 0xEB, 0xFE, 0x96, 0xFF, 0xB7, 0x0, 0xE, 0x0, 0x0, 0x1, 0x37, 0x27, 0x37, 0x17, 0x27, 0x33, 0x7, 0x37, 0x17, 0x7, 0x17, 0x7, 0x27, 0x7, 0xFD, 0xC, 0x6B, 0x9E, 0x1C, 0x9D, 0x7, 0x5D, 0x8, 0x9A, 0x1C, 0xA1, 0x68, 0x4C, 0x5D, 0x5D, 0xFE, 0x25, 0x91, 0x2E, 0x5A, 0x3E, 0xB7, 0xBB, 0x3D, 0x5A, 0x30, 0x8D, 0x37, 0x98, 0x94, 0x0, 0x3, 0xFC, 0x41, 0xFE, 0x1F, 0xFF, 0x50, 0xFF, 0xBC, 0x0, 0x13, 0x0, 0x1C, 0x0, 0x25, 0x0, 0x0, 0x1, 0x22, 0x27, 0x6, 0x23, 0x22, 0x26, 0x35, 0x34, 0x36, 0x33, 0x32, 0x17, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x6, 0x27, 0x14, 0x16, 0x32, 0x36, 0x34, 0x26, 0x22, 0x6, 0x5, 0x14, 0x16, 0x32, 0x36, 0x34, 0x26, 0x22, 0x6, 0xFE, 0x73, 0x6A, 0x40, 0x41, 0x69, 0x5F, 0x7F, 0x7F, 0x5F, 0x68, 0x42, 0x41, 0x69, 0x5E, 0x7F, 0x7F, 0xCE, 0x3E, 0x64, 0x3E, 0x3E, 0x64, 0x3E, 0xFE, 0xAC, 0x3E, 0x64, 0x3E, 0x3E, 0x64, 0x3E, 0xFE, 0x1F, 0x47, 0x47, 0x76, 0x57, 0x55, 0x7B, 0x49, 0x49, 0x7B, 0x55, 0x57, 0x76, 0xCD, 0x2C, 0x44, 0x43, 0x5A, 0x44, 0x44, 0x2D, 0x2C, 0x44, 0x43, 0x5A, 0x44, 0x44, 0x0, 0x1, 0xFC, 0xFC, 0x4, 0x9D, 0xFE, 0x94, 0x6, 0x7D, 0x0, 0x7, 0x0, 0x0, 0x1, 0x33, 0x7, 0x33, 0x3, 0x23, 0x37, 0x23, 0xFD, 0x67, 0x86, 0x3C, 0xE3, 0x6B, 0x86, 0x3C, 0xE3, 0x6, 0x7D, 0xAD, 0xFE, 0xCD, 0xAD, 0xFF, 0xFF, 0xFD, 0x34, 0xFE, 0x52, 0x2, 0xCB, 0xFF, 0x98, 0x0, 0x7, 0x2, 0xE, 0x0, 0x0, 0xF9, 0xBC, 0x0, 0x1, 0xFD, 0x34, 0x4, 0x96, 0x2, 0xCB, 0x5, 0xDC, 0x0, 0xC, 0x0, 0x0, 0x1, 0x33, 0x6, 0x4, 0x20, 0x24, 0x27, 0x33, 0x16, 0x4, 0x33, 0x32, 0x24, 0x2, 0x15, 0xB6, 0x4A, 0xFE, 0x9F, 0xFD, 0xC0, 0xFE, 0x9E, 0x4A, 0xB6, 0x39, 0x1, 0xF, 0xCE, 0xCD, 0x1, 0x11, 0x5, 0xDC, 0x7C, 0xCA, 0xCA, 0x7C, 0x37, 0x80, 0x80, 0x0, 0x1, 0xFD, 0xB6, 0x5, 0x6, 0x2, 0x4B, 0x5, 0xA4, 0x0, 0x3, 0x0, 0x0, 0x1, 0x15, 0x21, 0x35, 0x2, 0x4B, 0xFB, 0x6B, 0x5, 0xA4, 0x9E, 0x9E, 0xFF, 0xFF, 0xFD, 0xB6, 0xFE, 0xCF, 0x2, 0x4B, 0xFF, 0x6D, 0x0, 0x7, 0x2, 0xF, 0x0, 0x0, 0xF9, 0xC9, 0x0, 0x1, 0xFC, 0x2E, 0x4, 0xD7, 0x3, 0xD1, 0x5, 0xF8, 0x0, 0x15, 0x0, 0x0, 0x1, 0x17, 0x6, 0x6, 0x23, 0x22, 0x2C, 0x2, 0x23, 0x22, 0x7, 0x27, 0x36, 0x36, 0x33, 0x32, 0xC, 0x2, 0x33, 0x32, 0x3, 0x4F, 0x82, 0xE, 0xAB, 0x83, 0x8E, 0xFE, 0xA7, 0xFE, 0x72, 0xFE, 0xC8, 0x6C, 0xA0, 0x2B, 0x83, 0x14, 0xA6, 0x85, 0x78, 0x1, 0x5E, 0x1, 0x8B, 0x1, 0x4E, 0x69, 0xAB, 0x5, 0xF8, 0x28, 0x6A, 0x7B, 0x1B, 0x28, 0x1A, 0x71, 0x23, 0x65, 0x84, 0x1C, 0x26, 0x1B, 0x0, 0x1, 0xFD, 0x34, 0x4, 0x88, 0x2, 0xCB, 0x5, 0xCE, 0x0, 0xC, 0x0, 0x0, 0x1, 0x23, 0x26, 0x24, 0x23, 0x22, 0x4, 0x7, 0x23, 0x36, 0x24, 0x20, 0x4, 0x2, 0xCB, 0xB6, 0x37, 0xFE, 0xEF, 0xCD, 0xCE, 0xFE, 0xF1, 0x39, 0xB6, 0x4A, 0x1, 0x62, 0x2, 0x40, 0x1, 0x61, 0x4, 0x88, 0x37, 0x7F, 0x7F, 0x37, 0x7D, 0xC9, 0xC9, 0x0, 0x1, 0xFD, 0x27, 0xFD, 0xD7, 0x3, 0x6D, 0xFF, 0x89, 0x0, 0x8, 0x0, 0x0, 0x1, 0x23, 0x37, 0x21, 0x35, 0x21, 0x27, 0x33, 0x5, 0x2, 0x40, 0xC3, 0xE4, 0xFA, 0xC6, 0x5, 0x38, 0xE2, 0xC3, 0x1, 0x2D, 0xFD, 0xD7, 0xA4, 0x6B, 0xA3, 0xD8, 0x0, 0x2, 0xFC, 0xD0, 0x4, 0xA8, 0xFE, 0xC1, 0x6, 0xE0, 0x0, 0x9, 0x0, 0x23, 0x0, 0x0, 0x1, 0x32, 0x36, 0x37, 0x35, 0x23, 0x22, 0x6, 0x15, 0x14, 0x17, 0x26, 0x27, 0x6, 0x23, 0x22, 0x26, 0x35, 0x34, 0x37, 0x33, 0x35, 0x34, 0x23, 0x22, 0x15, 0x27, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x15, 0x14, 0x17, 0xFD, 0xAC, 0x25, 0x41, 0xC, 0x53, 0x37, 0x35, 0xD3, 0xA, 0x6, 0x38, 0x63, 0x54, 0x63, 0xEF, 0x5F, 0x50, 0x58, 0x8A, 0x7D, 0x68, 0x60, 0x7C, 0x14, 0x5, 0x16, 0x26, 0x16, 0x50, 0x30, 0x20, 0x3C, 0x64, 0x1B, 0x22, 0x47, 0x5A, 0x4B, 0xA8, 0x4, 0x22, 0x55, 0x42, 0x6, 0x4A, 0x62, 0x63, 0x63, 0xE3, 0x4C, 0x39, 0x0, 0x2, 0xFC, 0xCE, 0x4, 0xA3, 0xFE, 0xC0, 0x6, 0xDF, 0x0, 0x5, 0x0, 0x19, 0x0, 0x0, 0x1, 0x22, 0x7, 0x33, 0x35, 0x26, 0x13, 0x6, 0x6, 0x23, 0x22, 0x26, 0x35, 0x35, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x15, 0x21, 0x16, 0x33, 0x32, 0x37, 0xFD, 0xCD, 0x5E, 0xF, 0xD8, 0x5, 0x81, 0x1B, 0x6B, 0x52, 0x81, 0x8D, 0x8E, 0x71, 0x79, 0x7A, 0xFE, 0x9E, 0xB, 0x7A, 0x5A, 0x30, 0x6, 0x6B, 0x76, 0x9, 0x6D, 0xFE, 0xA0, 0x27, 0x41, 0x99, 0x72, 0x15, 0x85, 0x97, 0x99, 0x77, 0x37, 0x80, 0x3E, 0x0, 0x2, 0xFD, 0x79, 0x4, 0xB1, 0xFE, 0x1C, 0x7, 0xAD, 0x0, 0x5, 0x0, 0x9, 0x0, 0x0, 0x0, 0x33, 0x32, 0x14, 0x23, 0x22, 0x17, 0x11, 0x23, 0x11, 0xFD, 0x79, 0x51, 0x52, 0x52, 0x51, 0x9A, 0x90, 0x7, 0xAD, 0x98, 0x3C, 0xFD, 0xD8, 0x2, 0x28, 0x0, 0x2, 0xFC, 0xC2, 0x4, 0xA3, 0xFE, 0xD0, 0x6, 0xDF, 0x0, 0xA, 0x0, 0x12, 0x0, 0x0, 0x0, 0x26, 0x35, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x6, 0x27, 0x32, 0x35, 0x34, 0x23, 0x22, 0x15, 0x14, 0xFD, 0x50, 0x8E, 0x8E, 0x78, 0x7A, 0x8E, 0x8E, 0x79, 0x78, 0x79, 0x76, 0x4, 0xA3, 0x9C, 0x87, 0x7D, 0x9C, 0x9C, 0x88, 0x7C, 0x9C, 0x74, 0xAF, 0xA5, 0xB0, 0xA4, 0x0, 0x1, 0xFC, 0xD6, 0x4, 0xA7, 0xFE, 0xB3, 0x6, 0xD9, 0x0, 0x10, 0x0, 0x0, 0x1, 0x27, 0x6, 0x23, 0x22, 0x26, 0x35, 0x11, 0x33, 0x11, 0x14, 0x33, 0x32, 0x37, 0x11, 0x33, 0x11, 0xFE, 0x41, 0xF, 0x37, 0x68, 0x56, 0x67, 0x90, 0x56, 0x4B, 0x1C, 0x90, 0x4, 0xB1, 0x3F, 0x49, 0x6C, 0x7C, 0x1, 0x4A, 0xFE, 0xB5, 0x73, 0x38, 0x1, 0x86, 0xFD, 0xD8, 0x0, 0x1, 0xFC, 0xCC, 0x4, 0xA3, 0xFE, 0xB7, 0x6, 0xDF, 0x0, 0x18, 0x0, 0x0, 0x1, 0x22, 0x26, 0x35, 0x35, 0x34, 0x36, 0x33, 0x32, 0x16, 0x17, 0x23, 0x26, 0x26, 0x23, 0x22, 0x15, 0x14, 0x16, 0x33, 0x32, 0x37, 0x33, 0x6, 0x6, 0xFD, 0xCE, 0x84, 0x7E, 0x7E, 0x84, 0x69, 0x7E, 0x2, 0x88, 0x2, 0x2E, 0x32, 0x72, 0x34, 0x3E, 0x59, 0x9, 0x88, 0x2, 0x86, 0x4, 0xA3, 0xA4, 0x71, 0x12, 0x71, 0xA4, 0x74, 0x5B, 0x22, 0x39, 0xB3, 0x43, 0x5E, 0x4D, 0x50, 0x71, 0x0, 0x2, 0xFC, 0xC0, 0x4, 0xA4, 0xFE, 0xBE, 0x7, 0xC8, 0x0, 0x9, 0x0, 0x18, 0x0, 0x0, 0x1, 0x32, 0x37, 0x35, 0x26, 0x23, 0x22, 0x15, 0x14, 0x16, 0x17, 0x27, 0x6, 0x23, 0x22, 0x26, 0x35, 0x34, 0x36, 0x33, 0x32, 0x17, 0x11, 0x33, 0x11, 0xFD, 0xBF, 0x4F, 0x20, 0x20, 0x4E, 0x71, 0x37, 0xBB, 0x9, 0x37, 0x62, 0x68, 0x77, 0x76, 0x6A, 0x59, 0x35, 0x90, 0x5, 0x19, 0x48, 0xC5, 0x47, 0xB1, 0x49, 0x5A, 0x68, 0x35, 0x42, 0x9E, 0x85, 0x7D, 0x9B, 0x36, 0x1, 0x1F, 0xFC, 0xE9, 0x0, 0x1, 0xFC, 0xD6, 0x4, 0xB1, 0xFE, 0xB3, 0x7, 0xC8, 0x0, 0x10, 0x0, 0x0, 0x1, 0x22, 0x7, 0x11, 0x23, 0x11, 0x33, 0x11, 0x36, 0x33, 0x32, 0x16, 0x15, 0x11, 0x23, 0x11, 0x34, 0xFD, 0xC9, 0x47, 0x1C, 0x90, 0x90, 0x36, 0x5A, 0x56, 0x67, 0x90, 0x6, 0x6B, 0x33, 0xFE, 0x79, 0x3, 0x17, 0xFE, 0xDB, 0x3C, 0x6F, 0x80, 0xFE, 0xC1, 0x1, 0x40, 0x7A, 0x0, 0x1, 0xFC, 0x33, 0x4, 0xB1, 0xFF, 0x5D, 0x6, 0xDF, 0x0, 0x1C, 0x0, 0x0, 0x1, 0x22, 0x7, 0x11, 0x23, 0x11, 0x33, 0x17, 0x36, 0x33, 0x32, 0x17, 0x36, 0x33, 0x32, 0x16, 0x15, 0x11, 0x23, 0x11, 0x34, 0x23, 0x22, 0x7, 0x17, 0x11, 0x23, 0x11, 0x34, 0xFD, 0x2A, 0x4B, 0x1C, 0x90, 0x72, 0xF, 0x37, 0x68, 0x75, 0x2D, 0x36, 0x75, 0x56, 0x67, 0x8F, 0x57, 0x4F, 0x1B, 0x3, 0x90, 0x6, 0x6B, 0x38, 0xFE, 0x7E, 0x2, 0x28, 0x42, 0x48, 0x5B, 0x5B, 0x6C, 0x7C, 0xFE, 0xBA, 0x1, 0x47, 0x73, 0x3E, 0x26, 0xFE, 0xAA, 0x1, 0x47, 0x73, 0x0, 0x1, 0xFD, 0x46, 0x4, 0xB1, 0xFE, 0x79, 0x6, 0xDF, 0x0, 0xD, 0x0, 0x0, 0x1, 0x22, 0x7, 0x11, 0x23, 0x11, 0x33, 0x17, 0x36, 0x33, 0x32, 0x17, 0x15, 0x26, 0xFE, 0x3C, 0x4B, 0x1C, 0x8F, 0x72, 0xE, 0x31, 0x55, 0x1B, 0x12, 0x1C, 0x6, 0x5F, 0x38, 0xFE, 0x8A, 0x2, 0x28, 0x3F, 0x45, 0x5, 0x89, 0xE, 0x0, 0x1, 0xFC, 0xFB, 0x4, 0xAC, 0xFE, 0x46, 0x7, 0x64, 0x0, 0x12, 0x0, 0x0, 0x1, 0x6, 0x23, 0x22, 0x27, 0x11, 0x23, 0x35, 0x33, 0x35, 0x33, 0x15, 0x33, 0x15, 0x23, 0x11, 0x14, 0x33, 0x37, 0xFE, 0x43, 0x21, 0x31, 0x99, 0x3, 0x5A, 0x5A, 0x90, 0x61, 0x61, 0x33, 0x2B, 0x4, 0xB8, 0xC, 0xB3, 0x1, 0x11, 0x6F, 0x85, 0x85, 0x6F, 0xFE, 0xFA, 0x48, 0x4, 0x0, 0x1, 0xFC, 0xC5, 0x4, 0xB1, 0xFE, 0xCB, 0x6, 0xDB, 0x0, 0x8, 0x0, 0x0, 0x1, 0x3, 0x33, 0x13, 0x17, 0x37, 0x13, 0x33, 0x3, 0xFD, 0x86, 0xC1, 0x9A, 0x62, 0x8, 0x9, 0x5F, 0x9A, 0xC0, 0x4, 0xB1, 0x2, 0x2A, 0xFE, 0xA7, 0x2F, 0x2F, 0x1, 0x59, 0xFD, 0xD6, 0x0, 0x1, 0xFC, 0xE6, 0x4, 0xB1, 0xFE, 0xEE, 0x6, 0xDB, 0x0, 0xB, 0x0, 0x0, 0x1, 0x17, 0x37, 0x33, 0x3, 0x13, 0x23, 0x27, 0x7, 0x23, 0x13, 0x3, 0xFD, 0x8E, 0x5B, 0x5C, 0xA3, 0xA2, 0xA8, 0xA3, 0x61, 0x61, 0xA3, 0xA8, 0xA2, 0x6, 0xDB, 0xA4, 0xA4, 0xFE, 0xEF, 0xFE, 0xE7, 0xAC, 0xAC, 0x1, 0x19, 0x1, 0x11, 0x0, 0x1, 0x0, 0x95, 0x0, 0x0, 0x4, 0x50, 0x5, 0xB0, 0x0, 0x7, 0x0, 0x0, 0x1, 0x21, 0x11, 0x23, 0x11, 0x33, 0x11, 0x21, 0x4, 0x50, 0xFD, 0x41, 0xFC, 0xFC, 0x2, 0xBF, 0x2, 0x88, 0xFD, 0x78, 0x5, 0xB0, 0xFD, 0xA2, 0x0, 0x1, 0x0, 0x1B, 0x0, 0x0, 0x3, 0xD0, 0x4, 0x4E, 0x0, 0x11, 0x0, 0x0, 0x1, 0x21, 0x11, 0x23, 0x11, 0x34, 0x26, 0x23, 0x22, 0x7, 0x35, 0x36, 0x33, 0x32, 0x16, 0x15, 0x15, 0x21, 0x3, 0xD0, 0xFE, 0x1B, 0xF3, 0x5C, 0x41, 0x1D, 0x23, 0x37, 0x45, 0x7E, 0xD6, 0x1, 0xE5, 0x1, 0xB5, 0xFE, 0x4B, 0x3, 0xF, 0x56, 0x40, 0x7, 0xA3, 0xD, 0x8D, 0xB2, 0x98, 0x0, 0x1, 0x0, 0x2D, 0x0, 0x0, 0x4, 0xB0, 0x5, 0xB0, 0x0, 0xB, 0x0, 0x0, 0x1, 0x11, 0x23, 0x11, 0x23, 0x11, 0x23, 0x11, 0x23, 0x11, 0x21, 0x11, 0x3, 0xE5, 0xFA, 0xFC, 0xF7, 0xCB, 0x4, 0x83, 0x3, 0x84, 0x1, 0x61, 0xFB, 0x1B, 0x4, 0xE5, 0xFE, 0x9F, 0x2, 0x2C, 0xFD, 0xD4, 0x0, 0x1, 0x0, 0x36, 0x0, 0x0, 0x3, 0xF7, 0x5, 0xB0, 0x0, 0xB, 0x0, 0x0, 0x1, 0x11, 0x23, 0x11, 0x23, 0x11, 0x23, 0x11, 0x23, 0x11, 0x21, 0x11, 0x3, 0x34, 0xA5, 0xF1, 0xA5, 0xC3, 0x3, 0xC1, 0x3, 0xC5, 0x1, 0x28, 0xFB, 0x13, 0x4, 0xED, 0xFE, 0xD8, 0x1, 0xEB, 0xFE, 0x15, 0xFF, 0xFF, 0x0, 0x51, 0x4, 0xBC, 0x1, 0xA0, 0x6, 0x1A, 0x0, 0x6, 0x1, 0x6B, 0x2E, 0x0, 0x0, 0x1, 0x0, 0x50, 0xFE, 0x56, 0x1, 0x9F, 0xFF, 0xB4, 0x0, 0x3, 0x0, 0x0, 0x5, 0x3, 0x23, 0x13, 0x1, 0x9F, 0x6E, 0xE1, 0xC8, 0x4C, 0xFE, 0xA2, 0x1, 0x5E, 0xFF, 0xFF, 0x0, 0x95, 0x0, 0x0, 0x5, 0xD, 0x5, 0xB0, 0x0, 0x6, 0x2, 0x72, 0x0, 0x0, 0x0, 0x1, 0x0, 0x86, 0xFF, 0xEB, 0x4, 0x8F, 0x4, 0x3A, 0x0, 0x12, 0x0, 0x0, 0x5, 0x22, 0x26, 0x35, 0x11, 0x1, 0x23, 0x11, 0x33, 0x11, 0x1, 0x33, 0x11, 0x16, 0x33, 0x32, 0x37, 0x17, 0x6, 0x4, 0x10, 0x70, 0x80, 0xFE, 0x59, 0xF3, 0xF3, 0x1, 0xA7, 0xF3, 0x3, 0x46, 0x10, 0xA, 0x19, 0x33, 0x15, 0xA4, 0xB5, 0x1, 0x94, 0xFD, 0x28, 0x4, 0x3A, 0xFD, 0x29, 0x2, 0xD7, 0xFC, 0xFA, 0x7B, 0x4, 0xB3, 0x1F, 0x0, 0x1, 0x0, 0x3B, 0xFF, 0xEC, 0x3, 0xE1, 0x4, 0x4E, 0x0, 0x1B, 0x0, 0x0, 0x13, 0x33, 0x16, 0x16, 0x33, 0x32, 0x36, 0x35, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x7, 0x23, 0x36, 0x36, 0x33, 0x32, 0x12, 0x17, 0x15, 0x14, 0x2, 0x23, 0x22, 0x24, 0x3B, 0xE5, 0x5, 0x7A, 0x58, 0x95, 0x62, 0x62, 0x95, 0x63, 0x6F, 0x5, 0xE5, 0x5, 0xF1, 0xC4, 0xF7, 0xF3, 0x2, 0xF3, 0xFA, 0xB4, 0xFF, 0x0, 0x1, 0x66, 0x4F, 0x68, 0xD9, 0x83, 0x24, 0x81, 0xDB, 0x7D, 0x57, 0xB3, 0xE4, 0xFE, 0xC4, 0xDD, 0x2A, 0xDF, 0xFE, 0xC0, 0xDD, 0x0, 0x2, 0x0, 0x50, 0xFF, 0xEC, 0x3, 0xF5, 0x4, 0x4E, 0x0, 0x1B, 0x0, 0x23, 0x0, 0x0, 0x5, 0x22, 0x2, 0x35, 0x35, 0x34, 0x12, 0x33, 0x32, 0x16, 0x17, 0x23, 0x26, 0x26, 0x23, 0x22, 0x6, 0x15, 0x15, 0x14, 0x16, 0x33, 0x32, 0x36, 0x37, 0x33, 0x6, 0x4, 0x0, 0x36, 0x32, 0x16, 0x14, 0x6, 0x22, 0x26, 0x2, 0x3C, 0xFA, 0xF2, 0xF3, 0xF9, 0xC5, 0xF0, 0x4, 0xE4, 0x5, 0x70, 0x63, 0x94, 0x63, 0x62, 0x96, 0x58, 0x7A, 0x5, 0xE4, 0x4, 0xFF, 0x0, 0xFE, 0xC0, 0x42, 0x76, 0x42, 0x42, 0x76, 0x42, 0x14, 0x1, 0x40, 0xDF, 0x24, 0xDE, 0x1, 0x41, 0xE4, 0xB3, 0x57, 0x7D, 0xDB, 0x81, 0x24, 0x83, 0xD9, 0x68, 0x4F, 0x9D, 0xDD, 0x2, 0x5E, 0x45, 0x45, 0x64, 0x44, 0x44, 0x0, 0x2, 0x0, 0x3B, 0xFF, 0xEC, 0x3, 0xE1, 0x4, 0x4E, 0x0, 0x7, 0x0, 0x23, 0x0, 0x0, 0x0, 0x26, 0x34, 0x36, 0x32, 0x16, 0x14, 0x6, 0x5, 0x33, 0x16, 0x16, 0x33, 0x32, 0x36, 0x35, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x7, 0x23, 0x36, 0x36, 0x33, 0x32, 0x12, 0x17, 0x15, 0x14, 0x2, 0x23, 0x22, 0x24, 0x1, 0xB7, 0x42, 0x42, 0x76, 0x42, 0x42, 0xFE, 0xE, 0xE5, 0x5, 0x7A, 0x58, 0x95, 0x62, 0x62, 0x95, 0x63, 0x6F, 0x5, 0xE5, 0x5, 0xF1, 0xC4, 0xF7, 0xF3, 0x2, 0xF3, 0xFA, 0xB4, 0xFF, 0x0, 0x1, 0xA2, 0x44, 0x64, 0x45, 0x45, 0x64, 0x44, 0x3C, 0x4F, 0x68, 0xD9, 0x83, 0x24, 0x81, 0xDB, 0x7D, 0x57, 0xB3, 0xE4, 0xFE, 0xC4, 0xDD, 0x2A, 0xDF, 0xFE, 0xC0, 0xDD, 0xFF, 0xFF, 0x0, 0x47, 0xFE, 0xB8, 0x1, 0x9F, 0x4, 0x52, 0x0, 0x27, 0x0, 0x13, 0xFF, 0xFC, 0x3, 0x51, 0x0, 0x6, 0x0, 0x11, 0x2A, 0x0, 0x0, 0x1, 0x0, 0xC7, 0x4, 0xEA, 0x1, 0xE2, 0x6, 0x41, 0x0, 0x3, 0x0, 0x0, 0x13, 0x13, 0x33, 0x3, 0xC7, 0x3C, 0xDF, 0x8B, 0x4, 0xEA, 0x1, 0x57, 0xFE, 0xA9, 0x0, 0x3, 0x0, 0x68, 0x4, 0xE0, 0x3, 0xBB, 0x6, 0xAF, 0x0, 0x3, 0x0, 0xF, 0x0, 0x1B, 0x0, 0x0, 0x1, 0x13, 0x33, 0x3, 0x5, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x6, 0x23, 0x22, 0x26, 0x25, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x6, 0x23, 0x22, 0x26, 0x1, 0xC0, 0x2F, 0xE4, 0x81, 0xFE, 0x16, 0x44, 0x3A, 0x3B, 0x44, 0x44, 0x3B, 0x3A, 0x44, 0x2, 0x55, 0x45, 0x3A, 0x3B, 0x44, 0x44, 0x3B, 0x3A, 0x45, 0x5, 0x86, 0x1, 0x29, 0xFE, 0xD7, 0x30, 0x32, 0x45, 0x45, 0x32, 0x31, 0x44, 0x44, 0x30, 0x32, 0x45, 0x45, 0x32, 0x31, 0x44, 0x44, 0xFF, 0xFF, 0x0, 0x8E, 0x2, 0x46, 0x1, 0xAA, 0x3, 0x52, 0x0, 0x6, 0x0, 0x79, 0x0, 0x0, 0x0, 0x1, 0x0, 0x9B, 0x0, 0x0, 0x4, 0x38, 0x5, 0xB0, 0x0, 0x5, 0x0, 0x0, 0x1, 0x15, 0x21, 0x11, 0x23, 0x11, 0x4, 0x38, 0xFD, 0x5F, 0xFC, 0x5, 0xB0, 0xCB, 0xFB, 0x1B, 0x5, 0xB0, 0x0, 0x2, 0x0, 0x19, 0x0, 0x0, 0x5, 0xA1, 0x5, 0xB0, 0x0, 0x2, 0x0, 0x6, 0x0, 0x0, 0x25, 0x1, 0x1, 0x5, 0x1, 0x33, 0x1, 0x4, 0x4F, 0xFE, 0x98, 0xFE, 0x88, 0xFE, 0xAA, 0x2, 0x56, 0xF4, 0x2, 0x3E, 0xCA, 0x3, 0xBD, 0xFC, 0x43, 0xCA, 0x5, 0xB0, 0xFA, 0x50, 0x0, 0x3, 0x0, 0x5C, 0xFF, 0xEC, 0x5, 0x14, 0x5, 0xC4, 0x0, 0xD, 0x0, 0x1B, 0x0, 0x1F, 0x0, 0x0, 0x1, 0x10, 0x0, 0x21, 0x20, 0x0, 0x11, 0x35, 0x10, 0x0, 0x21, 0x20, 0x0, 0x11, 0x27, 0x34, 0x2, 0x23, 0x22, 0x2, 0x15, 0x15, 0x14, 0x12, 0x33, 0x32, 0x12, 0x35, 0x27, 0x15, 0x21, 0x35, 0x5, 0x14, 0xFE, 0xB5, 0xFE, 0xF0, 0xFE, 0xF6, 0xFE, 0xAD, 0x1, 0x51, 0x1, 0xA, 0x1, 0x10, 0x1, 0x4D, 0xFD, 0xB9, 0xA7, 0xA2, 0xBC, 0xBE, 0xA2, 0xA8, 0xB6, 0x74, 0xFE, 0x40, 0x2, 0xB3, 0xFE, 0xB4, 0xFE, 0x85, 0x1, 0x7B, 0x1, 0x4C, 0x49, 0x1, 0x4C, 0x1, 0x7C, 0xFE, 0x84, 0xFE, 0xB4, 0x2, 0xF5, 0x1, 0x0, 0xFF, 0x0, 0xF5, 0x4B, 0xF5, 0xFE, 0xFE, 0x1, 0x2, 0xF5, 0x89, 0xC3, 0xC3, 0x0, 0x1, 0x0, 0x20, 0x0, 0x0, 0x5, 0x12, 0x5, 0xB0, 0x0, 0x6, 0x0, 0x0, 0x21, 0x1, 0x1, 0x21, 0x1, 0x33, 0x1, 0x4, 0x2, 0xFE, 0x97, 0xFE, 0x97, 0xFE, 0xF0, 0x1, 0xFE, 0xF6, 0x1, 0xFE, 0x4, 0x44, 0xFB, 0xBC, 0x5, 0xB0, 0xFA, 0x50, 0x0, 0x3, 0x0, 0x6D, 0x0, 0x0, 0x4, 0x2F, 0x5, 0xB0, 0x0, 0x3, 0x0, 0x7, 0x0, 0xB, 0x0, 0x0, 0x13, 0x35, 0x21, 0x15, 0x1, 0x35, 0x21, 0x15, 0x1, 0x35, 0x21, 0x15, 0x79, 0x3, 0x9A, 0xFC, 0xBD, 0x2, 0xF7, 0xFC, 0xA6, 0x3, 0xC2, 0x4, 0xE5, 0xCB, 0xCB, 0xFD, 0xA2, 0xC6, 0xC6, 0xFD, 0x79, 0xCA, 0xCA, 0x0, 0x1, 0x0, 0x9B, 0x0, 0x0, 0x5, 0x15, 0x5, 0xB0, 0x0, 0x7, 0x0, 0x0, 0x1, 0x11, 0x23, 0x11, 0x21, 0x11, 0x23, 0x11, 0x5, 0x15, 0xFD, 0xFD, 0x7F, 0xFC, 0x5, 0xB0, 0xFA, 0x50, 0x4, 0xE5, 0xFB, 0x1B, 0x5, 0xB0, 0x0, 0x1, 0x0, 0x48, 0x0, 0x0, 0x4, 0x4D, 0x5, 0xB0, 0x0, 0xC, 0x0, 0x0, 0x33, 0x35, 0x1, 0x1, 0x35, 0x21, 0x15, 0x21, 0x1, 0x15, 0x1, 0x21, 0x15, 0x48, 0x1, 0xC9, 0xFE, 0x37, 0x3, 0xE1, 0xFD, 0x6B, 0x1, 0x88, 0xFE, 0x77, 0x2, 0xBA, 0x98, 0x2, 0x42, 0x2, 0x3F, 0x97, 0xCB, 0xFD, 0xFE, 0x13, 0xFD, 0xFB, 0xCB, 0x0, 0x3, 0x0, 0x4A, 0x0, 0x0, 0x5, 0xAF, 0x5, 0xB0, 0x0, 0x11, 0x0, 0x18, 0x0, 0x1F, 0x0, 0x0, 0x21, 0x23, 0x35, 0x26, 0x0, 0x35, 0x34, 0x0, 0x37, 0x35, 0x33, 0x15, 0x16, 0x0, 0x15, 0x14, 0x0, 0x7, 0x1, 0x14, 0x16, 0x17, 0x11, 0x6, 0x6, 0x5, 0x34, 0x26, 0x27, 0x11, 0x36, 0x36, 0x3, 0x7C, 0xFC, 0xFE, 0xFE, 0xC8, 0x1, 0x3C, 0xFA, 0xFC, 0xF9, 0x1, 0x3A, 0xFE, 0xC9, 0xFC, 0xFD, 0xC7, 0xA1, 0x9C, 0x99, 0xA4, 0x3, 0x73, 0xA2, 0x98, 0x9C, 0x9E, 0xA9, 0x7, 0x1, 0x2C, 0xF3, 0xF8, 0x1, 0x33, 0x6, 0xB0, 0xB0, 0x7, 0xFE, 0xD0, 0xF8, 0xF3, 0xFE, 0xD3, 0x8, 0x2, 0x26, 0x9B, 0xB0, 0x6, 0x2, 0xAD, 0x5, 0xB6, 0x9F, 0xA0, 0xB4, 0x6, 0xFD, 0x53, 0x7, 0xB2, 0x0, 0x1, 0x0, 0x44, 0x0, 0x0, 0x5, 0x5D, 0x5, 0xB0, 0x0, 0x16, 0x0, 0x0, 0x21, 0x23, 0x11, 0x26, 0x0, 0x11, 0x11, 0x33, 0x11, 0x14, 0x16, 0x17, 0x11, 0x33, 0x11, 0x24, 0x13, 0x11, 0x33, 0x11, 0x6, 0x0, 0x7, 0x3, 0x4D, 0xFC, 0xEB, 0xFE, 0xDE, 0xFC, 0x94, 0x7D, 0xFC, 0x1, 0xD, 0x6, 0xFD, 0x3, 0xFE, 0xDE, 0xEB, 0x1, 0x75, 0x17, 0x1, 0x2E, 0x1, 0x6, 0x1, 0xF0, 0xFE, 0x10, 0xA4, 0xBF, 0x19, 0x3, 0x6C, 0xFC, 0x93, 0x2F, 0x1, 0x40, 0x1, 0xFE, 0xFE, 0x6, 0xFF, 0xFE, 0xD8, 0x19, 0x0, 0x1, 0x0, 0x6B, 0x0, 0x0, 0x4, 0xDD, 0x5, 0xC4, 0x0, 0x23, 0x0, 0x0, 0x21, 0x21, 0x35, 0x33, 0x26, 0x2, 0x35, 0x35, 0x10, 0x0, 0x33, 0x32, 0x0, 0x11, 0x15, 0x14, 0x2, 0x7, 0x33, 0x15, 0x21, 0x35, 0x36, 0x12, 0x37, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x15, 0x14, 0x12, 0x17, 0x2, 0x6F, 0xFE, 0x8, 0xD7, 0x66, 0x7D, 0x1, 0x3B, 0xFD, 0xFE, 0x1, 0x3C, 0x7C, 0x65, 0xD3, 0xFE, 0x10, 0x6D, 0x81, 0x2, 0xA0, 0x8C, 0x89, 0xA1, 0x86, 0x70, 0xCC, 0x61, 0x1, 0x21, 0xA0, 0x64, 0x1, 0x15, 0x1, 0x5D, 0xFE, 0xA3, 0xFE, 0xEB, 0x64, 0xA0, 0xFE, 0xE0, 0x62, 0xCC, 0xD0, 0x1D, 0x1, 0x3, 0xEE, 0x76, 0xD0, 0xD4, 0xD4, 0xD0, 0x66, 0xFA, 0xFE, 0xF9, 0x1D, 0x0, 0x2, 0x0, 0x56, 0xFF, 0xEB, 0x4, 0x7A, 0x4, 0x4E, 0x0, 0x16, 0x0, 0x21, 0x0, 0x0, 0x5, 0x22, 0x27, 0x6, 0x23, 0x22, 0x2, 0x35, 0x35, 0x34, 0x12, 0x33, 0x32, 0x17, 0x37, 0x33, 0x11, 0x16, 0x33, 0x32, 0x37, 0x17, 0x6, 0x25, 0x32, 0x37, 0x11, 0x26, 0x23, 0x22, 0x6, 0x15, 0x14, 0x16, 0x3, 0xFB, 0xA2, 0x35, 0x68, 0xC0, 0xCA, 0xDC, 0xDB, 0xCD, 0xB6, 0x66, 0x14, 0xD0, 0x3, 0x46, 0x10, 0xA, 0x19, 0x33, 0xFD, 0xF3, 0x8C, 0x45, 0x44, 0x8B, 0x84, 0x6E, 0x6D, 0x15, 0xA3, 0xA3, 0x1, 0x28, 0xE7, 0x15, 0xFC, 0x1, 0x43, 0x97, 0x83, 0xFC, 0xFA, 0x7B, 0x4, 0xB3, 0x1F, 0xC3, 0x87, 0x1, 0xCA, 0x8C, 0xE0, 0xB1, 0x8B, 0xC1, 0x0, 0x2, 0x0, 0x96, 0xFE, 0x76, 0x4, 0x6A, 0x5, 0xC4, 0x0, 0x14, 0x0, 0x26, 0x0, 0x0, 0x25, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x23, 0x35, 0x33, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x11, 0x16, 0x17, 0x22, 0x27, 0x11, 0x23, 0x11, 0x34, 0x24, 0x33, 0x32, 0x16, 0x15, 0x14, 0x7, 0x16, 0x11, 0x14, 0x6, 0x2, 0x7D, 0x77, 0x84, 0x75, 0x6F, 0x79, 0x4A, 0x71, 0x62, 0x67, 0x68, 0x5F, 0x81, 0x5A, 0xC4, 0xA6, 0x78, 0xF3, 0x1, 0x14, 0xBF, 0xCD, 0xF5, 0xBB, 0xFA, 0xF9, 0xAF, 0x8C, 0x6A, 0x68, 0x98, 0xB9, 0x74, 0x60, 0x50, 0x7F, 0x7D, 0x65, 0xFC, 0xE1, 0x51, 0xC3, 0x53, 0xFE, 0x37, 0x5, 0xA9, 0xB6, 0xEF, 0xD5, 0xB5, 0xC5, 0x65, 0x5B, 0xFE, 0xF0, 0xD3, 0xE6, 0x0, 0x1, 0x0, 0x21, 0xFE, 0x5F, 0x3, 0xF5, 0x4, 0x3A, 0x0, 0x8, 0x0, 0x0, 0x1, 0x23, 0x11, 0x1, 0x33, 0x13, 0x13, 0x33, 0x1, 0x2, 0x84, 0xF2, 0xFE, 0x8F, 0xFB, 0xF3, 0xEC, 0xFA, 0xFE, 0x8F, 0xFE, 0x5F, 0x1, 0xD1, 0x4, 0xA, 0xFD, 0x4, 0x2, 0xFC, 0xFB, 0xEE, 0x0, 0x2, 0x0, 0x54, 0xFF, 0xEC, 0x4, 0x39, 0x6, 0x21, 0x0, 0x1E, 0x0, 0x2C, 0x0, 0x0, 0x13, 0x34, 0x36, 0x33, 0x32, 0x16, 0x17, 0x15, 0x26, 0x23, 0x22, 0x15, 0x14, 0x16, 0x17, 0x4, 0x13, 0x15, 0x14, 0x0, 0x23, 0x22, 0x0, 0x35, 0x35, 0x34, 0x36, 0x37, 0x27, 0x26, 0x26, 0x13, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x35, 0x34, 0x26, 0x27, 0x22, 0x6, 0x15, 0xD0, 0xD3, 0xB8, 0x4F, 0x75, 0x46, 0x98, 0x68, 0xA8, 0x49, 0x79, 0x1, 0xB1, 0x9, 0xFE, 0xFB, 0xEC, 0xEE, 0xFE, 0xFA, 0xBF, 0x82, 0x2, 0x59, 0x6A, 0x77, 0x7C, 0x85, 0x84, 0x7A, 0x89, 0x75, 0x84, 0x7D, 0x4, 0xEA, 0x92, 0xA5, 0x19, 0x19, 0xC2, 0x34, 0x71, 0x22, 0x54, 0x2B, 0x9A, 0xFE, 0x74, 0x24, 0xE5, 0xFE, 0xCC, 0x1, 0x30, 0xE3, 0x13, 0xAC, 0xFA, 0x20, 0x5, 0x29, 0x89, 0xFD, 0x7C, 0x8E, 0xCF, 0xCF, 0x8E, 0x14, 0x71, 0xD2, 0x17, 0xCF, 0x8B, 0x0, 0x1, 0x0, 0x61, 0xFF, 0xEC, 0x4, 0xD, 0x4, 0x4D, 0x0, 0x26, 0x0, 0x0, 0x1, 0x14, 0x6, 0x6, 0x23, 0x22, 0x24, 0x35, 0x34, 0x37, 0x26, 0x35, 0x34, 0x36, 0x33, 0x32, 0x4, 0x15, 0x23, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x14, 0x16, 0x33, 0x33, 0x15, 0x23, 0x6, 0x15, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x4, 0xD, 0x89, 0xD4, 0x72, 0xCD, 0xFE, 0xF0, 0xCB, 0xB8, 0xFD, 0xCD, 0xB6, 0x1, 0x7, 0xF2, 0x79, 0x59, 0x6D, 0x64, 0x62, 0x68, 0xC7, 0xD2, 0xD1, 0x75, 0x6D, 0x6B, 0x7A, 0x1, 0x41, 0x76, 0x97, 0x48, 0xAC, 0x9A, 0xB9, 0x42, 0x4D, 0x98, 0x9A, 0xA1, 0xAE, 0x98, 0x3E, 0x4D, 0x57, 0x34, 0x3C, 0x4C, 0xAD, 0x4, 0x91, 0x3A, 0x5C, 0x5D, 0x3D, 0x0, 0x1, 0x0, 0x61, 0xFE, 0x7E, 0x3, 0xCA, 0x5, 0xB0, 0x0, 0x1D, 0x0, 0x0, 0x1, 0x27, 0x36, 0x27, 0x36, 0x27, 0x27, 0x26, 0x26, 0x35, 0x10, 0x1, 0x13, 0x21, 0x35, 0x21, 0x15, 0x1, 0x6, 0x6, 0x15, 0x14, 0x16, 0x17, 0x17, 0x16, 0x16, 0x7, 0x6, 0x6, 0x2, 0xD8, 0x7E, 0x5E, 0x1, 0x1, 0x82, 0x57, 0xAF, 0x94, 0x1, 0x10, 0xF3, 0xFD, 0xC2, 0x3, 0x69, 0xFE, 0xA3, 0x6B, 0x74, 0x4C, 0x50, 0x65, 0x78, 0x9E, 0x1, 0x1, 0x88, 0xFE, 0x7E, 0x64, 0x67, 0x46, 0x41, 0x24, 0x17, 0x2F, 0xAB, 0x9B, 0x1, 0x14, 0x1, 0x44, 0x1, 0x16, 0xC2, 0x91, 0xFE, 0x5B, 0x7D, 0xD3, 0x92, 0x60, 0x56, 0x17, 0x1D, 0x23, 0x52, 0x7D, 0x53, 0xB9, 0x0, 0x1, 0x0, 0x7F, 0xFE, 0x61, 0x4, 0x6, 0x4, 0x4E, 0x0, 0x11, 0x0, 0x0, 0x1, 0x23, 0x11, 0x34, 0x26, 0x23, 0x22, 0x7, 0x11, 0x23, 0x11, 0x33, 0x17, 0x36, 0x33, 0x32, 0x16, 0x17, 0x4, 0x6, 0xF3, 0x65, 0x60, 0x98, 0x45, 0xF2, 0xDE, 0xB, 0x76, 0xC3, 0xA1, 0xC3, 0x1, 0xFE, 0x61, 0x4, 0x53, 0x77, 0x60, 0x7B, 0xFC, 0xF0, 0x4, 0x3A, 0x83, 0x97, 0xAF, 0xE4, 0x0, 0x3, 0x0, 0x74, 0xFF, 0xEC, 0x4, 0x2D, 0x5, 0xC4, 0x0, 0xD, 0x0, 0x14, 0x0, 0x1B, 0x0, 0x0, 0x1, 0x10, 0x0, 0x23, 0x22, 0x0, 0x3, 0x35, 0x10, 0x0, 0x33, 0x32, 0x0, 0x13, 0x5, 0x21, 0x35, 0x10, 0x23, 0x22, 0x3, 0x13, 0x32, 0x13, 0x37, 0x21, 0x15, 0x10, 0x4, 0x2D, 0xFE, 0xFC, 0xD7, 0xD4, 0xFE, 0xF9, 0x3, 0x1, 0x6, 0xD6, 0xD5, 0x1, 0x5, 0x3, 0xFD, 0x3A, 0x1, 0xD3, 0xEA, 0xD9, 0xF, 0xEA, 0xD8, 0xF, 0x1, 0xFE, 0x2D, 0x2, 0x73, 0xFE, 0xB4, 0xFE, 0xC5, 0x1, 0x35, 0x1, 0x43, 0xE0, 0x1, 0x4C, 0x1, 0x34, 0xFE, 0xD2, 0xFE, 0xBD, 0x1B, 0x31, 0x1, 0x98, 0xFE, 0x9E, 0xFD, 0x10, 0x1, 0x6A, 0x61, 0x2A, 0xFE, 0x5F, 0x0, 0x1, 0x0, 0xAA, 0xFF, 0xF4, 0x2, 0x62, 0x4, 0x3A, 0x0, 0xD, 0x0, 0x0, 0x13, 0x33, 0x3, 0x14, 0x16, 0x33, 0x32, 0x37, 0x15, 0x6, 0x23, 0x22, 0x26, 0x35, 0xAA, 0xF3, 0x1, 0x40, 0x31, 0x2A, 0x2B, 0x43, 0x5D, 0x79, 0x9F, 0x4, 0x3A, 0xFC, 0xF8, 0x49, 0x2C, 0xA, 0xBB, 0x18, 0x89, 0xA7, 0x0, 0x1, 0x0, 0x16, 0xFF, 0xEE, 0x4, 0x4A, 0x5, 0xFC, 0x0, 0x17, 0x0, 0x0, 0x5, 0x22, 0x26, 0x27, 0x3, 0x3, 0x21, 0x1, 0x27, 0x26, 0x23, 0x7, 0x27, 0x36, 0x33, 0x32, 0x16, 0x17, 0x1, 0x16, 0x33, 0x37, 0x17, 0x6, 0x3, 0xEC, 0x65, 0x79, 0x2D, 0xCA, 0xF8, 0xFE, 0xF7, 0x1, 0x82, 0x56, 0x26, 0x53, 0x35, 0x3, 0x31, 0x51, 0x6B, 0x78, 0x1F, 0x1, 0xAC, 0x26, 0x3D, 0x23, 0x3, 0x28, 0x12, 0x51, 0x73, 0x2, 0x18, 0xFD, 0x36, 0x4, 0x11, 0xCC, 0x5B, 0x2, 0xB5, 0x11, 0x55, 0x50, 0xFB, 0xBE, 0x5E, 0x2, 0xC2, 0x9, 0x0, 0x1, 0x0, 0x64, 0xFE, 0x75, 0x3, 0xD5, 0x5, 0xC4, 0x0, 0x2C, 0x0, 0x0, 0x5, 0x6, 0x6, 0x7, 0x27, 0x36, 0x36, 0x35, 0x34, 0x27, 0x2E, 0x2, 0x35, 0x34, 0x36, 0x37, 0x26, 0x26, 0x35, 0x34, 0x24, 0x33, 0x32, 0x17, 0x7, 0x26, 0x23, 0x22, 0x6, 0x15, 0x14, 0x16, 0x33, 0x33, 0x15, 0x23, 0x4, 0x11, 0x14, 0x16, 0x17, 0x17, 0x16, 0x16, 0x3, 0xD4, 0x1, 0x88, 0x43, 0x84, 0x30, 0x33, 0x82, 0xBC, 0xD5, 0x70, 0xA3, 0x90, 0x6D, 0x7C, 0x1, 0x8, 0xDD, 0x9A, 0x7B, 0x25, 0x88, 0x58, 0x86, 0x7C, 0x7F, 0x93, 0x93, 0xA2, 0xFE, 0xB3, 0x9A, 0x64, 0x6A, 0x80, 0x96, 0x4D, 0x53, 0xB9, 0x32, 0x64, 0x34, 0x4F, 0x2F, 0x3F, 0x22, 0x31, 0x62, 0xAB, 0x96, 0x92, 0xC3, 0x2E, 0x27, 0x8F, 0x60, 0xAB, 0xC0, 0x2C, 0xBD, 0x24, 0x5F, 0x43, 0x51, 0x66, 0xC7, 0x8, 0xFE, 0xEC, 0x75, 0x7B, 0x18, 0x19, 0x1F, 0x5D, 0x0, 0x1, 0x0, 0x2E, 0xFF, 0xF4, 0x4, 0xCF, 0x4, 0x3A, 0x0, 0x15, 0x0, 0x0, 0x25, 0x6, 0x23, 0x22, 0x26, 0x35, 0x11, 0x21, 0x11, 0x23, 0x11, 0x23, 0x35, 0x21, 0x15, 0x23, 0x3, 0x14, 0x16, 0x33, 0x32, 0x37, 0x4, 0xCF, 0x43, 0x5C, 0x79, 0xA0, 0xFE, 0xB4, 0xF2, 0xAB, 0x4, 0x7C, 0x9F, 0x1, 0x3F, 0x32, 0x29, 0x2B, 0xC, 0x18, 0x89, 0xA7, 0x2, 0x59, 0xFC, 0x83, 0x3, 0x7D, 0xBD, 0xBD, 0xFD, 0xB5, 0x49, 0x2C, 0xA, 0x0, 0x2, 0x0, 0x81, 0xFE, 0x60, 0x4, 0x32, 0x4, 0x4E, 0x0, 0xC, 0x0, 0x1B, 0x0, 0x0, 0x25, 0x32, 0x36, 0x35, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x11, 0x16, 0x17, 0x22, 0x27, 0x11, 0x23, 0x11, 0x34, 0x0, 0x33, 0x32, 0x12, 0x15, 0x15, 0x14, 0x2, 0x2, 0x4C, 0x83, 0x70, 0x6C, 0x83, 0x75, 0x68, 0x44, 0xD9, 0xB2, 0x6B, 0xF2, 0x1, 0xA, 0xCC, 0xEC, 0xEF, 0xD7, 0xAF, 0xC0, 0x8B, 0x15, 0x9B, 0xE1, 0xDC, 0x7C, 0xFE, 0xF3, 0x77, 0xC3, 0x78, 0xFD, 0xFC, 0x3, 0xE0, 0xF5, 0x1, 0x19, 0xFE, 0xBD, 0xFD, 0x14, 0xE7, 0xFE, 0xD9, 0x0, 0x1, 0x0, 0x52, 0xFE, 0x8A, 0x3, 0xEA, 0x4, 0x4E, 0x0, 0x20, 0x0, 0x0, 0x1, 0x32, 0x16, 0x15, 0x23, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x15, 0x14, 0x16, 0x4, 0x16, 0x17, 0x17, 0x6, 0x6, 0x7, 0x27, 0x36, 0x36, 0x27, 0x34, 0x27, 0x26, 0x26, 0x35, 0x35, 0x34, 0x12, 0x2, 0x39, 0xBF, 0xF2, 0xE5, 0x64, 0x68, 0x86, 0x6E, 0x92, 0x1, 0x2E, 0x8B, 0x7, 0x1, 0x1, 0x86, 0x43, 0x7F, 0x30, 0x2D, 0x1, 0x82, 0xE9, 0xEE, 0xFB, 0x4, 0x4E, 0xD6, 0xC1, 0x57, 0x7D, 0xDB, 0x81, 0x24, 0x83, 0x9A, 0x57, 0x4F, 0x6B, 0x14, 0x53, 0xBA, 0x32, 0x65, 0x34, 0x4D, 0x2F, 0x45, 0x1F, 0x38, 0xFA, 0xD6, 0x24, 0xDE, 0x1, 0x41, 0x0, 0x2, 0x0, 0x53, 0xFF, 0xEC, 0x4, 0x7F, 0x4, 0x3A, 0x0, 0xF, 0x0, 0x1D, 0x0, 0x0, 0x1, 0x14, 0x2, 0x23, 0x22, 0x0, 0x35, 0x35, 0x34, 0x0, 0x33, 0x21, 0x15, 0x21, 0x16, 0x16, 0x5, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x4, 0x2D, 0xFF, 0xEA, 0xED, 0xFE, 0xFC, 0x1, 0x4, 0xEB, 0x2, 0x3D, 0xFE, 0xF5, 0x54, 0x65, 0xFD, 0x19, 0x76, 0x88, 0x83, 0x73, 0x72, 0x85, 0x87, 0x76, 0x1, 0xE9, 0xCD, 0xFE, 0xD0, 0x1, 0x3B, 0xEB, 0x15, 0xE3, 0x1, 0x30, 0xC4, 0x42, 0xC1, 0x61, 0x91, 0xD2, 0xD2, 0x91, 0x15, 0x87, 0xC8, 0xC8, 0x87, 0x0, 0x1, 0x0, 0x40, 0xFF, 0xEC, 0x3, 0xED, 0x4, 0x3A, 0x0, 0x11, 0x0, 0x0, 0x25, 0x6, 0x23, 0x22, 0x26, 0x35, 0x11, 0x21, 0x35, 0x21, 0x15, 0x21, 0x11, 0x14, 0x16, 0x33, 0x32, 0x37, 0x3, 0x66, 0x4F, 0x6D, 0x83, 0x95, 0xFE, 0xAE, 0x3, 0xAD, 0xFE, 0x98, 0x35, 0x28, 0x2A, 0x34, 0x19, 0x2D, 0x9A, 0xAB, 0x2, 0x48, 0xC1, 0xC1, 0xFD, 0xB1, 0x47, 0x30, 0x16, 0x0, 0x1, 0x0, 0x80, 0xFF, 0xEB, 0x4, 0x8, 0x4, 0x3A, 0x0, 0x15, 0x0, 0x0, 0x13, 0x33, 0x11, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x26, 0x3, 0x33, 0x16, 0x12, 0x15, 0x14, 0x2, 0x6, 0x23, 0x22, 0x26, 0x27, 0x80, 0xF3, 0x5D, 0x44, 0x7D, 0x85, 0x5, 0x6D, 0xF1, 0x2E, 0x45, 0x67, 0xD9, 0xAA, 0xBD, 0xE0, 0x1, 0x4, 0x3A, 0xFD, 0x6D, 0x89, 0x70, 0xFB, 0x8D, 0xEB, 0x1, 0x19, 0x5C, 0xFE, 0xFD, 0xA5, 0x9E, 0xFE, 0xF4, 0xA1, 0xD4, 0xE6, 0x0, 0x2, 0x0, 0x45, 0xFE, 0x22, 0x5, 0x85, 0x4, 0x41, 0x0, 0x1C, 0x0, 0x25, 0x0, 0x0, 0x1, 0x23, 0x11, 0x2E, 0x2, 0x35, 0x34, 0x12, 0x37, 0x17, 0x6, 0x6, 0x7, 0x14, 0x16, 0x17, 0x11, 0x34, 0x36, 0x33, 0x32, 0x16, 0x16, 0x15, 0x14, 0x6, 0x6, 0x7, 0x35, 0x36, 0x36, 0x35, 0x26, 0x26, 0x23, 0x22, 0x15, 0x3, 0x59, 0xF3, 0xC8, 0xEF, 0x6A, 0x7F, 0x71, 0x98, 0x4D, 0x45, 0x4, 0x86, 0xA9, 0x9F, 0x7B, 0x9E, 0xE8, 0x7F, 0x6C, 0xF3, 0xCD, 0xAF, 0x8B, 0x3, 0x82, 0x7E, 0x37, 0xFE, 0x22, 0x1, 0xD0, 0x16, 0xAE, 0xFF, 0x8F, 0xA3, 0x1, 0x8, 0x52, 0x93, 0x4B, 0xC3, 0x5C, 0x87, 0xE2, 0x22, 0x2, 0x84, 0x74, 0x90, 0x96, 0xF5, 0x8F, 0x88, 0xF3, 0xA7, 0x14, 0xC7, 0x1E, 0xD6, 0x7B, 0x8A, 0xCD, 0x3E, 0x0, 0x1, 0x0, 0x50, 0xFE, 0x22, 0x5, 0x7F, 0x4, 0x3A, 0x0, 0x1B, 0x0, 0x0, 0x1, 0x23, 0x11, 0x26, 0x0, 0x11, 0x11, 0x33, 0x11, 0x16, 0x16, 0x17, 0x11, 0x33, 0x11, 0x36, 0x36, 0x35, 0x26, 0x3, 0x33, 0x16, 0x16, 0x15, 0x14, 0x2, 0x6, 0x7, 0x3, 0x52, 0xF3, 0xF3, 0xFE, 0xE4, 0xF3, 0x2, 0x9F, 0x7B, 0xF3, 0xAE, 0x8C, 0x3, 0x71, 0xED, 0x30, 0x4A, 0x6A, 0xF4, 0xCF, 0xFE, 0x22, 0x1, 0xD0, 0x1D, 0x1, 0x25, 0x1, 0x1E, 0x1, 0xE8, 0xFE, 0xC, 0xBA, 0xB8, 0x1A, 0x3, 0x80, 0xFC, 0x7F, 0x20, 0xE3, 0x88, 0xDD, 0x1, 0x19, 0x59, 0xFC, 0xA1, 0x91, 0xFE, 0xFF, 0xAE, 0x14, 0x0, 0x1, 0x0, 0x66, 0xFF, 0xEB, 0x6, 0x2E, 0x4, 0x3A, 0x0, 0x26, 0x0, 0x0, 0x5, 0x22, 0x27, 0x6, 0x23, 0x22, 0x26, 0x2, 0x35, 0x34, 0x12, 0x37, 0x33, 0x2, 0x7, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x11, 0x33, 0x11, 0x16, 0x16, 0x33, 0x32, 0x36, 0x35, 0x26, 0x3, 0x33, 0x16, 0x12, 0x15, 0x14, 0x2, 0x6, 0x4, 0x8D, 0xE7, 0x5C, 0x5C, 0xE7, 0x9B, 0xB7, 0x4F, 0x55, 0x39, 0xF1, 0x85, 0x7, 0x51, 0x67, 0x50, 0x6C, 0xFB, 0x1, 0x6B, 0x4F, 0x67, 0x52, 0x7, 0x86, 0xF1, 0x38, 0x56, 0x4F, 0xB6, 0x15, 0xDF, 0xDF, 0xA1, 0x1, 0xC, 0x9E, 0xA5, 0x1, 0x3, 0x5C, 0xFE, 0xE9, 0xED, 0x9A, 0xEE, 0x8A, 0xA9, 0x1, 0x45, 0xFE, 0xB5, 0xA5, 0x88, 0xEC, 0x9C, 0xEF, 0x1, 0x15, 0x5C, 0xFE, 0xFD, 0xA5, 0x9E, 0xFE, 0xF4, 0xA1, 0x0, 0x1, 0x0, 0x95, 0xFE, 0x91, 0x5, 0x18, 0x5, 0xB0, 0x0, 0xE, 0x0, 0x0, 0x1, 0x27, 0x37, 0x1, 0x7, 0x11, 0x23, 0x11, 0x33, 0x11, 0x37, 0x1, 0x21, 0x1, 0x1, 0x3, 0x72, 0x84, 0xFC, 0xFE, 0x4D, 0xA6, 0xFC, 0xFC, 0x8D, 0x1, 0xAA, 0x1, 0x32, 0xFD, 0xE3, 0x2, 0x3B, 0xFE, 0x91, 0x98, 0xDB, 0x2, 0x72, 0xB0, 0xFE, 0x3A, 0x5, 0xB0, 0xFD, 0x54, 0xAE, 0x1, 0xFE, 0xFD, 0x7C, 0xFC, 0xD4, 0x0, 0x3, 0x0, 0x50, 0xFF, 0xEB, 0x4, 0x31, 0x6, 0x15, 0x0, 0x9, 0x0, 0x22, 0x0, 0x2D, 0x0, 0x0, 0x1, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x22, 0x7, 0x16, 0x1, 0x14, 0x0, 0x23, 0x22, 0x2, 0x3, 0x35, 0x10, 0x0, 0x21, 0x32, 0x16, 0x15, 0x14, 0x6, 0x23, 0x22, 0x27, 0x6, 0x15, 0x36, 0x33, 0x32, 0x16, 0x25, 0x22, 0x6, 0x15, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x10, 0x2, 0x4F, 0x4A, 0x46, 0x3F, 0x48, 0x90, 0x54, 0x7A, 0x2, 0x43, 0xFE, 0xFF, 0xE8, 0xF8, 0xFC, 0x4, 0x1, 0x20, 0x1, 0x8, 0x97, 0xBB, 0xA8, 0xBB, 0x9C, 0x94, 0x1C, 0x8A, 0xD5, 0xC5, 0xF2, 0xFE, 0x15, 0x67, 0x96, 0x76, 0x82, 0x83, 0x7A, 0x4, 0x98, 0x3A, 0x21, 0x27, 0x40, 0x94, 0x2E, 0xFD, 0x3F, 0xD9, 0xFE, 0xED, 0x1, 0x55, 0x1, 0x56, 0x58, 0x1, 0x6F, 0x1, 0xB8, 0x94, 0x81, 0x67, 0xB1, 0x38, 0x7A, 0x99, 0x97, 0xF2, 0x2F, 0x86, 0x84, 0x85, 0xA4, 0xA4, 0x85, 0x1, 0xA, 0x0, 0x2, 0x0, 0x76, 0xFF, 0xEB, 0x4, 0x99, 0x5, 0xC5, 0x0, 0x9, 0x0, 0x28, 0x0, 0x0, 0x1, 0x14, 0x16, 0x17, 0x11, 0x26, 0x23, 0x22, 0x6, 0x15, 0x13, 0x22, 0x0, 0x35, 0x11, 0x37, 0x11, 0x14, 0x16, 0x33, 0x32, 0x37, 0x35, 0x26, 0x0, 0x35, 0x35, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x11, 0x37, 0x17, 0x6, 0x7, 0x15, 0x6, 0x6, 0x2, 0x39, 0x77, 0x71, 0x2, 0x6E, 0x34, 0x44, 0x13, 0xD3, 0xFE, 0xFD, 0xEC, 0x81, 0x70, 0xCA, 0x4, 0xD1, 0xFE, 0xFE, 0xCC, 0x9E, 0xA4, 0xBE, 0x76, 0x9, 0x3D, 0x42, 0x1, 0xFE, 0x4, 0x42, 0x68, 0xA4, 0x21, 0x1, 0x3B, 0xA3, 0x49, 0x53, 0xFB, 0x94, 0x1, 0x6, 0xCE, 0x1, 0x24, 0x1, 0xFE, 0xDB, 0x77, 0x91, 0xFE, 0x87, 0x26, 0x1, 0x17, 0xC5, 0x11, 0xB0, 0xC6, 0xCE, 0xBC, 0xFE, 0xCD, 0x16, 0xC6, 0x14, 0xC, 0x7C, 0xD9, 0xF8, 0x0, 0x1, 0xFF, 0xE1, 0x0, 0x0, 0x4, 0x9E, 0x5, 0xC4, 0x0, 0x1A, 0x0, 0x0, 0x21, 0x23, 0x11, 0x1, 0x26, 0x23, 0x22, 0x7, 0x27, 0x36, 0x33, 0x32, 0x16, 0x17, 0x13, 0x13, 0x36, 0x36, 0x33, 0x32, 0x17, 0x7, 0x26, 0x23, 0x22, 0x7, 0x1, 0x2, 0xBC, 0xFC, 0xFE, 0xDB, 0x1E, 0x43, 0x28, 0xC, 0x25, 0x43, 0x44, 0x56, 0x86, 0x33, 0xC9, 0xCA, 0x32, 0x7F, 0x5B, 0x48, 0x40, 0x26, 0xC, 0x28, 0x42, 0x1F, 0xFE, 0xD9, 0x2, 0x14, 0x2, 0x94, 0x45, 0x6, 0xC2, 0x1B, 0x54, 0x7D, 0xFE, 0x16, 0x1, 0xE6, 0x77, 0x5E, 0x1B, 0xC2, 0x6, 0x45, 0xFD, 0x69, 0xFF, 0xFF, 0x0, 0x54, 0xFE, 0x60, 0x5, 0x7F, 0x6, 0x0, 0x0, 0x6, 0x2, 0x8D, 0x0, 0x0, 0x0, 0x2, 0x0, 0x33, 0xFF, 0xEB, 0x6, 0x55, 0x4, 0x3A, 0x0, 0x13, 0x0, 0x28, 0x0, 0x0, 0x25, 0x32, 0x36, 0x35, 0x26, 0x27, 0x21, 0x6, 0x7, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x35, 0x33, 0x15, 0x16, 0x16, 0x1, 0x14, 0x2, 0x6, 0x23, 0x22, 0x27, 0x6, 0x23, 0x22, 0x26, 0x2, 0x35, 0x34, 0x37, 0x23, 0x35, 0x21, 0x15, 0x23, 0x16, 0x4, 0x7C, 0x58, 0x45, 0x4, 0x3D, 0xFC, 0xC8, 0x3D, 0x4, 0x46, 0x58, 0x52, 0x70, 0xFA, 0x1, 0x71, 0x1, 0xE0, 0x49, 0xAA, 0x92, 0xED, 0x5D, 0x5D, 0xED, 0x91, 0xAB, 0x4A, 0x38, 0x71, 0x6, 0x22, 0x81, 0x37, 0xAE, 0xEC, 0x9C, 0x9A, 0xB4, 0xB4, 0x9A, 0x9A, 0xEE, 0x8A, 0xA9, 0xE1, 0xE8, 0xA4, 0x88, 0x1, 0x88, 0x9E, 0xFE, 0xF4, 0xA1, 0xE2, 0xE2, 0xA1, 0x1, 0xC, 0x9E, 0xAF, 0x9F, 0xB6, 0xB6, 0x9C, 0x0, 0x1, 0x0, 0x23, 0xFE, 0x73, 0x5, 0x2F, 0x4, 0x4E, 0x0, 0x25, 0x0, 0x0, 0x1, 0x22, 0x27, 0x35, 0x16, 0x33, 0x32, 0x35, 0x34, 0x26, 0x2, 0x27, 0x1, 0x23, 0x37, 0x11, 0x34, 0x26, 0x23, 0x22, 0x7, 0x35, 0x36, 0x33, 0x32, 0x16, 0x15, 0x11, 0x1, 0x33, 0x7, 0x16, 0x12, 0x12, 0x16, 0x15, 0x14, 0x6, 0x3, 0xDC, 0x41, 0x3A, 0x16, 0x22, 0xB3, 0x64, 0x5B, 0x13, 0xFE, 0x7, 0xDC, 0x65, 0x5B, 0x47, 0x26, 0x1F, 0x3A, 0x4B, 0xA1, 0x9D, 0x1, 0xE1, 0xE5, 0x80, 0x10, 0x4D, 0x7D, 0x29, 0xA6, 0xFE, 0x73, 0xE, 0xB8, 0x6, 0xA3, 0x6F, 0xBD, 0x1, 0x12, 0x8D, 0xFD, 0x5F, 0x88, 0x2, 0x67, 0x5B, 0x44, 0x7, 0xB6, 0x11, 0xBC, 0xA3, 0xFE, 0xC2, 0x2, 0x89, 0xAA, 0xB5, 0xFE, 0xE6, 0xFE, 0xFA, 0x93, 0x60, 0x8C, 0xC9, 0x0, 0x2, 0x0, 0x66, 0xFE, 0x60, 0x5, 0x1F, 0x5, 0xC4, 0x0, 0x10, 0x0, 0x1E, 0x0, 0x0, 0x1, 0x23, 0x11, 0x26, 0x0, 0x11, 0x35, 0x10, 0x0, 0x21, 0x20, 0x0, 0x11, 0x15, 0x10, 0x0, 0x7, 0x13, 0x34, 0x2, 0x23, 0x22, 0x2, 0x15, 0x15, 0x14, 0x12, 0x33, 0x32, 0x12, 0x35, 0x3, 0x42, 0xFD, 0xD7, 0xFE, 0xF8, 0x1, 0x52, 0x1, 0xA, 0x1, 0x10, 0x1, 0x4D, 0xFE, 0xFD, 0xDA, 0xE0, 0xB9, 0xA7, 0xA2, 0xBD, 0xBF, 0xA2, 0xA8, 0xB6, 0xFE, 0x60, 0x1, 0x98, 0x2B, 0x1, 0x6D, 0x1, 0x23, 0x49, 0x1, 0x4C, 0x1, 0x7C, 0xFE, 0x84, 0xFE, 0xB4, 0x49, 0xFE, 0xDC, 0xFE, 0x93, 0x2A, 0x3, 0x6, 0xF5, 0x1, 0x0, 0xFF, 0x0, 0xF5, 0x4B, 0xF5, 0xFE, 0xFE, 0x1, 0x2, 0xF5, 0x0, 0x2, 0x0, 0x50, 0xFE, 0x60, 0x4, 0x3E, 0x4, 0x4E, 0x0, 0x10, 0x0, 0x1E, 0x0, 0x0, 0x1, 0x23, 0x11, 0x26, 0x2, 0x35, 0x35, 0x34, 0x0, 0x33, 0x32, 0x0, 0x15, 0x15, 0x14, 0x2, 0x7, 0x1, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x2, 0xC1, 0xF3, 0xB6, 0xC8, 0x1, 0xA, 0xEC, 0xEF, 0x1, 0x9, 0xC8, 0xB5, 0xFE, 0x81, 0x7D, 0x89, 0x86, 0x7D, 0x7C, 0x89, 0x87, 0x7D, 0xFE, 0x60, 0x1, 0x99, 0x27, 0x1, 0x27, 0xCB, 0x15, 0xEC, 0x1, 0x3B, 0xFE, 0xC5, 0xEC, 0x15, 0xCC, 0xFE, 0xDA, 0x27, 0x2, 0x19, 0x91, 0xD2, 0xD2, 0x91, 0x15, 0x8F, 0xD5, 0xD5, 0x8F, 0x0, 0x1, 0x0, 0x66, 0xFE, 0x78, 0x4, 0xEC, 0x5, 0xC4, 0x0, 0x20, 0x0, 0x0, 0x1, 0x27, 0x36, 0x35, 0x34, 0x27, 0x25, 0x26, 0x0, 0x11, 0x35, 0x10, 0x0, 0x21, 0x20, 0x0, 0x17, 0x23, 0x26, 0x26, 0x23, 0x22, 0x6, 0x15, 0x15, 0x14, 0x16, 0x17, 0x5, 0x16, 0x15, 0x14, 0x6, 0x3, 0x3C, 0x1, 0x82, 0x55, 0xFE, 0xCB, 0xC2, 0xFE, 0xF5, 0x1, 0x4A, 0x1, 0xF, 0x1, 0x5, 0x1, 0x12, 0x16, 0xFC, 0xE, 0x7B, 0xA8, 0xB4, 0xA6, 0xA3, 0x7C, 0x1, 0x4F, 0xE8, 0xCE, 0xFE, 0x78, 0xC5, 0x9, 0x4D, 0x40, 0x1B, 0x60, 0x3D, 0x1, 0x20, 0x1, 0x1B, 0x68, 0x1, 0x28, 0x1, 0x6E, 0xFE, 0xE2, 0xD7, 0x7B, 0xAE, 0xFF, 0xC9, 0x6A, 0xBC, 0xBE, 0x2A, 0x71, 0x4E, 0xBC, 0x87, 0x9F, 0x0, 0x1, 0x0, 0x50, 0xFE, 0x7C, 0x4, 0x3, 0x4, 0x4E, 0x0, 0x22, 0x0, 0x0, 0x1, 0x35, 0x32, 0x35, 0x34, 0x27, 0x27, 0x2E, 0x2, 0x35, 0x35, 0x34, 0x12, 0x33, 0x32, 0x16, 0x17, 0x23, 0x26, 0x26, 0x23, 0x22, 0x6, 0x15, 0x15, 0x14, 0x16, 0x17, 0x17, 0x16, 0x16, 0x15, 0x14, 0x6, 0x2, 0x93, 0x7D, 0x5D, 0xF5, 0x60, 0xA7, 0x67, 0xF3, 0xF9, 0xC5, 0xF0, 0x4, 0xE4, 0x5, 0x70, 0x63, 0x91, 0x66, 0x97, 0x6B, 0xF9, 0x5A, 0x6C, 0xC8, 0xFE, 0x7C, 0xC2, 0x55, 0x46, 0x14, 0x40, 0x1C, 0x67, 0xC2, 0xA3, 0x24, 0xD9, 0x1, 0x3C, 0xE4, 0xB3, 0x57, 0x7D, 0xCF, 0x81, 0x24, 0x96, 0x88, 0x1F, 0x48, 0x1D, 0x70, 0x6D, 0x92, 0x8A, 0x0, 0x1, 0x0, 0x95, 0x0, 0x0, 0x4, 0x31, 0x5, 0xB0, 0x0, 0xB, 0x0, 0x0, 0x1, 0x35, 0x21, 0x11, 0x23, 0x11, 0x21, 0x15, 0x21, 0x11, 0x21, 0x11, 0x3, 0x11, 0xFE, 0x80, 0xFC, 0x3, 0x9C, 0xFD, 0x60, 0x2, 0x4A, 0x1, 0x95, 0xD4, 0xFD, 0x97, 0x5, 0xB0, 0xCB, 0xFE, 0x4E, 0xFE, 0x62, 0x0, 0x1, 0x0, 0x87, 0xFE, 0x60, 0x3, 0xD3, 0x4, 0x3A, 0x0, 0xB, 0x0, 0x0, 0x25, 0x35, 0x21, 0x11, 0x23, 0x11, 0x21, 0x15, 0x21, 0x11, 0x21, 0x11, 0x2, 0xBA, 0xFE, 0xC0, 0xF3, 0x3, 0x4C, 0xFD, 0xA7, 0x2, 0x2, 0xC4, 0xB8, 0xFC, 0xE4, 0x5, 0xDA, 0xC1, 0xFE, 0xC5, 0xFE, 0x86, 0x0, 0x1, 0x0, 0x23, 0xFF, 0xEB, 0x5, 0x8, 0x5, 0xCE, 0x0, 0x1E, 0x0, 0x0, 0x5, 0x22, 0x26, 0x35, 0x37, 0x13, 0x1, 0x27, 0x13, 0x37, 0x34, 0x23, 0x7, 0x37, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x7, 0x3, 0x1, 0x17, 0x3, 0x7, 0x14, 0x33, 0x37, 0x7, 0x6, 0x4, 0xA5, 0xA3, 0xAC, 0x3, 0x2A, 0xFD, 0x4C, 0x21, 0x4A, 0x2, 0xB2, 0x25, 0x11, 0x27, 0x2E, 0xA1, 0xAC, 0x6, 0x20, 0x2, 0xBE, 0x20, 0x5A, 0x3, 0xAC, 0x2B, 0x11, 0x27, 0x15, 0xA9, 0x8D, 0x4F, 0x1, 0xB0, 0xFD, 0xDA, 0x16, 0x3, 0x3D, 0x25, 0xA0, 0x1, 0xB7, 0x6, 0xB0, 0xA1, 0x28, 0x30, 0xFE, 0xAF, 0x2, 0x35, 0x18, 0xFC, 0x80, 0x32, 0x98, 0x2, 0xB8, 0x6, 0x0, 0x1, 0x0, 0x52, 0x0, 0x0, 0x4, 0x14, 0x5, 0xB0, 0x0, 0x9, 0x0, 0x0, 0x21, 0x21, 0x13, 0x21, 0x35, 0x1, 0x21, 0x3, 0x21, 0x15, 0x2, 0xF9, 0xFE, 0xF9, 0xFA, 0xFD, 0x66, 0x1, 0x20, 0x1, 0x8, 0xFB, 0x2, 0x95, 0x2, 0x6E, 0x6C, 0x2, 0xD6, 0xFD, 0x81, 0x66, 0x0, 0x1, 0x0, 0x21, 0xFE, 0x4B, 0x5, 0x93, 0x5, 0xC4, 0x0, 0x1C, 0x0, 0x0, 0x1, 0x35, 0x32, 0x12, 0x13, 0x1, 0x27, 0x1, 0x26, 0x27, 0x1, 0x27, 0x1, 0x26, 0x23, 0x22, 0x6, 0x7, 0x23, 0x36, 0x12, 0x24, 0x33, 0x20, 0x0, 0x13, 0x15, 0x10, 0x0, 0x2, 0xC0, 0xD6, 0xEE, 0x13, 0xFD, 0xD8, 0x61, 0x2, 0x8D, 0x1, 0x28, 0xFD, 0x2F, 0x61, 0x2, 0xE2, 0x7F, 0xEC, 0xBB, 0xCD, 0x1B, 0xF3, 0x13, 0x95, 0x1, 0x1A, 0xD9, 0x1, 0x60, 0x1, 0x73, 0x4, 0xFE, 0x85, 0xFE, 0x4B, 0xEA, 0x1, 0x2A, 0x1, 0xA, 0xFE, 0xC1, 0xA9, 0x1, 0x7A, 0xB0, 0x89, 0xFE, 0x5E, 0xAA, 0x1, 0xAB, 0xBF, 0xE1, 0xC0, 0x9E, 0x1, 0x1C, 0xB3, 0xFE, 0x1F, 0xFE, 0x6B, 0x7C, 0xFE, 0x64, 0xFE, 0x15, 0x0, 0x1, 0x0, 0x21, 0xFE, 0x4B, 0x5, 0x3F, 0x6, 0x1F, 0x0, 0x12, 0x0, 0x0, 0x1, 0x34, 0x2, 0x27, 0x1, 0x27, 0x1, 0x26, 0x27, 0x1, 0x27, 0x1, 0x2, 0x25, 0x37, 0x4, 0x0, 0x12, 0x11, 0x4, 0x5F, 0x21, 0x28, 0xFD, 0x75, 0x62, 0x2, 0xB3, 0x36, 0x4F, 0xFD, 0x59, 0x61, 0x2, 0x91, 0xEF, 0xFE, 0x30, 0xDF, 0x1, 0xAA, 0x1, 0xD9, 0xBC, 0xFE, 0x4B, 0xE8, 0x1, 0x8A, 0xA8, 0xFE, 0x87, 0xA9, 0x1, 0x90, 0x91, 0x7A, 0xFE, 0x77, 0xA9, 0x1, 0x7C, 0x1, 0xB, 0xCF, 0x79, 0xB7, 0xFE, 0x2, 0xFD, 0x3B, 0xFE, 0x20, 0x0, 0x1, 0x0, 0x23, 0xFF, 0xEC, 0x5, 0x13, 0x4, 0x4E, 0x0, 0x1E, 0x0, 0x0, 0x5, 0x22, 0x26, 0x35, 0x11, 0x1, 0x23, 0x37, 0x11, 0x34, 0x26, 0x23, 0x22, 0x7, 0x27, 0x36, 0x33, 0x32, 0x16, 0x15, 0x11, 0x1, 0x33, 0x7, 0x13, 0x16, 0x33, 0x32, 0x37, 0x15, 0x6, 0x4, 0x8E, 0xA0, 0x9E, 0xFE, 0x31, 0xDC, 0x65, 0x5B, 0x47, 0x27, 0x1D, 0x1, 0x3A, 0x4B, 0xA1, 0x9D, 0x1, 0xE1, 0xE5, 0x80, 0x1, 0x5, 0x9D, 0x25, 0x1F, 0x3C, 0x14, 0xBC, 0xA3, 0x1, 0x1F, 0xFD, 0x96, 0x88, 0x2, 0x67, 0x5B, 0x44, 0x7, 0xB6, 0x11, 0xBC, 0xA3, 0xFE, 0xC2, 0x2, 0x89, 0xAB, 0xFD, 0xAF, 0x92, 0x7, 0xB7, 0x10, 0x0, 0x2, 0x0, 0x50, 0xFE, 0x25, 0x4, 0x32, 0x4, 0x4E, 0x0, 0xD, 0x0, 0x27, 0x0, 0x0, 0x25, 0x32, 0x36, 0x35, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x15, 0x14, 0x16, 0x1, 0x23, 0x34, 0x26, 0x27, 0x26, 0x0, 0x3, 0x35, 0x34, 0x0, 0x33, 0x32, 0x0, 0x15, 0x15, 0x14, 0x2, 0x23, 0x22, 0x27, 0x16, 0x16, 0x17, 0x16, 0x16, 0x2, 0x40, 0x89, 0x76, 0x76, 0x87, 0x88, 0x77, 0x76, 0x2, 0x24, 0xC4, 0x5B, 0x85, 0xDB, 0xFE, 0xF3, 0x1, 0x1, 0x4, 0xEE, 0xED, 0x1, 0x3, 0xEC, 0xD7, 0xC7, 0x8D, 0x1D, 0xB1, 0x80, 0xAF, 0xC5, 0xFE, 0xB6, 0x79, 0x15, 0x86, 0xC3, 0xC3, 0x86, 0x15, 0x79, 0xB6, 0xFD, 0x27, 0x3D, 0x39, 0x1C, 0x2E, 0x1, 0x7C, 0x1, 0x7D, 0x4F, 0xEA, 0x1, 0x37, 0xFE, 0xD4, 0xE0, 0x15, 0xD6, 0xFE, 0xE4, 0x96, 0xA4, 0x97, 0x1B, 0x25, 0x7C, 0x0, 0x1, 0x0, 0x50, 0xFF, 0xF9, 0x3, 0x6D, 0x4, 0x41, 0x0, 0x15, 0x0, 0x0, 0x25, 0x15, 0x21, 0x22, 0x2, 0x35, 0x35, 0x34, 0x12, 0x37, 0x21, 0x15, 0x21, 0x22, 0x6, 0x7, 0x21, 0x15, 0x21, 0x16, 0x16, 0x33, 0x3, 0x6D, 0xFE, 0xD0, 0xF9, 0xF4, 0xF2, 0xF3, 0x1, 0x37, 0xFE, 0xD3, 0x80, 0x6E, 0xA, 0x1, 0x7B, 0xFE, 0x84, 0xB, 0x6D, 0x7F, 0xBC, 0xC3, 0x1, 0x33, 0xDF, 0x24, 0xDC, 0x1, 0x34, 0x2, 0xC3, 0x9B, 0x6B, 0xB6, 0x6B, 0x9B, 0x0, 0x1, 0x0, 0x28, 0xFF, 0xF9, 0x3, 0x45, 0x4, 0x41, 0x0, 0x15, 0x0, 0x0, 0x17, 0x35, 0x21, 0x32, 0x36, 0x37, 0x21, 0x35, 0x21, 0x26, 0x26, 0x23, 0x21, 0x35, 0x21, 0x16, 0x12, 0x17, 0x15, 0x14, 0x2, 0x23, 0x28, 0x1, 0x30, 0x7F, 0x6D, 0xB, 0xFE, 0x84, 0x1, 0x7B, 0xA, 0x6E, 0x80, 0xFE, 0xD3, 0x1, 0x33, 0xF5, 0xF3, 0x1, 0xF4, 0xF9, 0x7, 0xC3, 0x9B, 0x6B, 0xB6, 0x6B, 0x9B, 0xC3, 0x1, 0xFE, 0xCE, 0xDC, 0x27, 0xDF, 0xFE, 0xCD, 0x0, 0x1, 0x0, 0x7D, 0xFE, 0x60, 0x5, 0x5D, 0x4, 0x3A, 0x0, 0xC, 0x0, 0x0, 0x21, 0x1, 0x11, 0x23, 0x11, 0x21, 0x1, 0x1, 0x21, 0x11, 0x23, 0x11, 0x1, 0x2, 0x9A, 0xFE, 0xD5, 0xF2, 0x1, 0x32, 0x1, 0x3E, 0x1, 0x40, 0x1, 0x30, 0xF3, 0xFE, 0xD5, 0x2, 0xD2, 0xFB, 0x8E, 0x5, 0xDA, 0xFC, 0xF1, 0x3, 0xF, 0xFB, 0xC6, 0x2, 0xCD, 0xFD, 0x33, 0xFF, 0xFF, 0x0, 0x14, 0xFE, 0x60, 0x4, 0x81, 0x4, 0x4E, 0x0, 0x26, 0x2, 0x46, 0x4F, 0x0, 0x0, 0x7, 0x7, 0xA4, 0xFF, 0x84, 0xFC, 0x6A, 0x0, 0x1, 0x0, 0x4D, 0xFF, 0xEC, 0x4, 0xD3, 0x5, 0xC4, 0x0, 0x1B, 0x0, 0x0, 0x13, 0x33, 0x16, 0x16, 0x33, 0x32, 0x36, 0x37, 0x35, 0x34, 0x2, 0x23, 0x22, 0x6, 0x7, 0x23, 0x36, 0x0, 0x21, 0x20, 0x0, 0x13, 0x15, 0x10, 0x0, 0x21, 0x20, 0x0, 0x4D, 0xFC, 0x11, 0x86, 0x9D, 0xAB, 0xAC, 0x1, 0x9C, 0xB1, 0xA3, 0x89, 0x12, 0xFC, 0x14, 0x1, 0x1A, 0x1, 0xC, 0x1, 0xA, 0x1, 0x3D, 0x4, 0xFE, 0xBD, 0xFE, 0xED, 0xFE, 0xFA, 0xFE, 0xEC, 0x1, 0xE1, 0x8B, 0x9E, 0xFB, 0xE4, 0x7D, 0xDA, 0x1, 0xA, 0x96, 0x8C, 0xD4, 0x1, 0x1A, 0xFE, 0x92, 0xFE, 0xCD, 0x85, 0xFE, 0xC5, 0xFE, 0x89, 0x1, 0x1B, 0x0, 0x2, 0x0, 0x66, 0xFF, 0xEC, 0x4, 0xEC, 0x5, 0xC4, 0x0, 0x1B, 0x0, 0x25, 0x0, 0x0, 0x1, 0x33, 0x6, 0x0, 0x21, 0x20, 0x0, 0x11, 0x35, 0x10, 0x0, 0x21, 0x20, 0x0, 0x17, 0x23, 0x26, 0x26, 0x23, 0x22, 0x6, 0x7, 0x15, 0x14, 0x12, 0x33, 0x32, 0x36, 0x1, 0x34, 0x36, 0x32, 0x16, 0x15, 0x14, 0x6, 0x22, 0x26, 0x3, 0xEF, 0xFC, 0x13, 0xFE, 0xE5, 0xFE, 0xF4, 0xFE, 0xF3, 0xFE, 0xC2, 0x1, 0x44, 0x1, 0x13, 0x1, 0x5, 0x1, 0x14, 0x16, 0xFC, 0x10, 0x87, 0x9C, 0xAB, 0xAC, 0x1, 0x9B, 0xB1, 0xA3, 0x89, 0xFE, 0x4C, 0x48, 0x82, 0x49, 0x49, 0x82, 0x48, 0x1, 0xDA, 0xD4, 0xFE, 0xE6, 0x1, 0x76, 0x1, 0x3B, 0x76, 0x1, 0x3A, 0x1, 0x77, 0xFE, 0xE5, 0xDA, 0x8C, 0x9D, 0xFA, 0xE4, 0x7D, 0xDA, 0xFE, 0xF5, 0x97, 0x1, 0x88, 0x35, 0x48, 0x48, 0x35, 0x34, 0x47, 0x47, 0x0, 0x2, 0x0, 0x4D, 0xFF, 0xEC, 0x4, 0xD3, 0x5, 0xC4, 0x0, 0x9, 0x0, 0x25, 0x0, 0x0, 0x0, 0x26, 0x35, 0x34, 0x36, 0x32, 0x16, 0x15, 0x14, 0x6, 0x5, 0x33, 0x16, 0x16, 0x33, 0x32, 0x36, 0x37, 0x35, 0x34, 0x2, 0x23, 0x22, 0x6, 0x7, 0x23, 0x36, 0x0, 0x21, 0x20, 0x0, 0x13, 0x15, 0x10, 0x0, 0x21, 0x20, 0x0, 0x2, 0x2C, 0x49, 0x49, 0x82, 0x49, 0x49, 0xFD, 0x9F, 0xFC, 0x11, 0x86, 0x9D, 0xAB, 0xAC, 0x1, 0x9C, 0xB1, 0xA3, 0x89, 0x12, 0xFC, 0x14, 0x1, 0x1A, 0x1, 0xC, 0x1, 0xA, 0x1, 0x3D, 0x4, 0xFE, 0xBD, 0xFE, 0xED, 0xFE, 0xFA, 0xFE, 0xEC, 0x2, 0x5C, 0x47, 0x34, 0x35, 0x48, 0x48, 0x35, 0x34, 0x47, 0x7B, 0x8B, 0x9E, 0xFB, 0xE4, 0x7D, 0xDA, 0x1, 0xA, 0x96, 0x8C, 0xD4, 0x1, 0x1A, 0xFE, 0x92, 0xFE, 0xCD, 0x85, 0xFE, 0xC5, 0xFE, 0x89, 0x1, 0x1B, 0x0, 0x1, 0x0, 0x23, 0xFF, 0xF1, 0x5, 0xBC, 0x5, 0xB0, 0x0, 0x19, 0x0, 0x0, 0x1, 0x14, 0x2, 0x21, 0x27, 0x32, 0x36, 0x35, 0x26, 0x26, 0x23, 0x22, 0x7, 0x11, 0x23, 0x11, 0x21, 0x35, 0x21, 0x15, 0x21, 0x11, 0x36, 0x33, 0x32, 0x4, 0x5, 0xBC, 0xF8, 0xFE, 0xE9, 0x2, 0xAB, 0x6A, 0x1, 0x8F, 0x8E, 0x85, 0x7A, 0xFC, 0xFE, 0x7C, 0x4, 0x6E, 0xFE, 0x12, 0x94, 0x72, 0xF5, 0x1, 0x1E, 0x1, 0xB7, 0xC1, 0xFE, 0xFB, 0xC1, 0x98, 0x64, 0x77, 0x88, 0x20, 0xFD, 0x73, 0x4, 0xE5, 0xCB, 0xCB, 0xFE, 0x73, 0x26, 0xE8, 0x0, 0x1, 0x0, 0x69, 0xFF, 0xEC, 0x4, 0xEF, 0x5, 0xC4, 0x0, 0x1D, 0x0, 0x0, 0x1, 0x6, 0x0, 0x21, 0x20, 0x0, 0x11, 0x35, 0x10, 0x0, 0x21, 0x20, 0x0, 0x17, 0x23, 0x26, 0x26, 0x23, 0x22, 0x6, 0x7, 0x21, 0x15, 0x21, 0x16, 0x16, 0x33, 0x32, 0x36, 0x37, 0x4, 0xEF, 0x14, 0xFE, 0xE4, 0xFE, 0xF5, 0xFE, 0xF3, 0xFE, 0xC2, 0x1, 0x43, 0x1, 0x14, 0x1, 0x5, 0x1, 0x14, 0x16, 0xFC, 0x10, 0x86, 0x9D, 0xA4, 0xAC, 0x9, 0x1, 0xFA, 0xFE, 0x6, 0x6, 0x9E, 0xA9, 0xA3, 0x89, 0x11, 0x1, 0xDA, 0xD5, 0xFE, 0xE7, 0x1, 0x75, 0x1, 0x3B, 0x75, 0x1, 0x3C, 0x1, 0x77, 0xFE, 0xE5, 0xDA, 0x8B, 0x9F, 0xE6, 0xD1, 0xCB, 0xCA, 0xF7, 0x98, 0x8C, 0x0, 0x2, 0x0, 0x2D, 0x0, 0x0, 0x8, 0x41, 0x5, 0xB0, 0x0, 0x16, 0x0, 0x1E, 0x0, 0x0, 0x33, 0x35, 0x37, 0x36, 0x36, 0x13, 0x13, 0x21, 0x11, 0x21, 0x16, 0x0, 0x15, 0x14, 0x0, 0x23, 0x21, 0x11, 0x21, 0x3, 0x2, 0x2, 0x7, 0x25, 0x21, 0x32, 0x36, 0x34, 0x26, 0x23, 0x21, 0x2D, 0x31, 0x7B, 0x61, 0xD, 0x1B, 0x3, 0xAC, 0x1, 0x30, 0xF3, 0x1, 0x10, 0xFE, 0xED, 0xF8, 0xFD, 0xDB, 0xFE, 0x43, 0x1B, 0x16, 0xC5, 0xE7, 0x4, 0x97, 0x1, 0x28, 0x8D, 0x83, 0x83, 0x8D, 0xFE, 0xD8, 0xCA, 0x5, 0xE, 0xF4, 0x1, 0x2E, 0x2, 0xB1, 0xFD, 0xF1, 0x2, 0xFE, 0xFA, 0xC9, 0xC8, 0xFE, 0xF8, 0x4, 0xE5, 0xFD, 0xCB, 0xFE, 0x8C, 0xFE, 0xC7, 0x3, 0xCA, 0xA3, 0xCA, 0x9F, 0x0, 0x2, 0x0, 0x9B, 0x0, 0x0, 0x8, 0x47, 0x5, 0xB0, 0x0, 0x8, 0x0, 0x1B, 0x0, 0x0, 0x25, 0x21, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x21, 0x3, 0x11, 0x21, 0x11, 0x23, 0x11, 0x33, 0x11, 0x21, 0x11, 0x33, 0x11, 0x21, 0x16, 0x4, 0x15, 0x14, 0x0, 0x23, 0x5, 0x14, 0x1, 0x29, 0x8D, 0x82, 0x82, 0x8D, 0xFE, 0xD7, 0xFC, 0xFD, 0x7F, 0xFC, 0xFC, 0x2, 0x81, 0xFC, 0x1, 0x34, 0xF3, 0x1, 0xC, 0xFE, 0xEE, 0xF8, 0xD0, 0x96, 0x61, 0x5F, 0x93, 0xFD, 0x47, 0x2, 0x7B, 0xFD, 0x85, 0x5, 0xB0, 0xFD, 0x95, 0x2, 0x6B, 0xFD, 0xD3, 0x3, 0xF9, 0xC2, 0xC4, 0xFE, 0xFF, 0x0, 0x1, 0x0, 0x31, 0x0, 0x0, 0x5, 0xC8, 0x5, 0xB0, 0x0, 0x15, 0x0, 0x0, 0x1, 0x22, 0x7, 0x11, 0x23, 0x11, 0x21, 0x35, 0x21, 0x15, 0x21, 0x11, 0x36, 0x33, 0x32, 0x4, 0x15, 0x11, 0x23, 0x11, 0x34, 0x26, 0x3, 0xB6, 0x84, 0x8E, 0xFD, 0xFE, 0x8A, 0x4, 0x62, 0xFE, 0x11, 0x87, 0x8B, 0xF5, 0x1, 0x1D, 0xFC, 0x8A, 0x2, 0xD0, 0x1C, 0xFD, 0x4C, 0x4, 0xE5, 0xCB, 0xCB, 0xFE, 0x9B, 0x1B, 0xDA, 0xF9, 0xFE, 0x38, 0x1, 0xC8, 0x9B, 0x6D, 0x0, 0x1, 0x0, 0x93, 0xFE, 0x98, 0x5, 0xD, 0x5, 0xB0, 0x0, 0xB, 0x0, 0x0, 0x21, 0x21, 0x11, 0x23, 0x11, 0x21, 0x11, 0x33, 0x11, 0x21, 0x11, 0x33, 0x5, 0xD, 0xFE, 0x4B, 0xFC, 0xFE, 0x37, 0xFC, 0x2, 0x81, 0xFD, 0xFE, 0x98, 0x1, 0x68, 0x5, 0xB0, 0xFB, 0x1A, 0x4, 0xE6, 0x0, 0x2, 0x0, 0x90, 0x0, 0x0, 0x4, 0xC2, 0x5, 0xB0, 0x0, 0x7, 0x0, 0x14, 0x0, 0x0, 0x25, 0x21, 0x32, 0x36, 0x34, 0x26, 0x23, 0x21, 0x3, 0x11, 0x21, 0x15, 0x21, 0x11, 0x21, 0x16, 0x4, 0x15, 0x14, 0x4, 0x23, 0x1, 0x8E, 0x1, 0x28, 0x8D, 0x82, 0x82, 0x8D, 0xFE, 0xD8, 0xFE, 0x3, 0x9D, 0xFD, 0x61, 0x1, 0x2C, 0xF6, 0x1, 0x12, 0xFE, 0xEC, 0xF8, 0xCA, 0x99, 0xCA, 0x8B, 0xFD, 0x48, 0x5, 0xB0, 0xCB, 0xFE, 0x9E, 0x1, 0xF3, 0xC9, 0xC8, 0xFE, 0x0, 0x2, 0x0, 0x24, 0xFE, 0x9A, 0x5, 0xDC, 0x5, 0xB0, 0x0, 0x5, 0x0, 0x14, 0x0, 0x0, 0x25, 0x21, 0x11, 0x21, 0x3, 0x2, 0x1, 0x11, 0x21, 0x11, 0x23, 0x3, 0x33, 0x36, 0x12, 0x13, 0x13, 0x21, 0x11, 0x33, 0x3, 0x1, 0xB7, 0x2, 0x70, 0xFE, 0x57, 0x18, 0x1D, 0x2, 0x96, 0xFC, 0x41, 0xF3, 0x9, 0x76, 0x36, 0x84, 0x14, 0x26, 0x3, 0x96, 0xB8, 0xD, 0xCA, 0x4, 0x1B, 0xFE, 0x55, 0xFE, 0x6F, 0xFC, 0xF1, 0x1, 0x66, 0xFE, 0x9A, 0x2, 0x30, 0x34, 0x1, 0x19, 0x1, 0x27, 0x2, 0x72, 0xFB, 0x1A, 0xFD, 0xD0, 0x0, 0x1, 0x0, 0x17, 0x0, 0x0, 0x7, 0x9C, 0x5, 0xB0, 0x0, 0x15, 0x0, 0x0, 0x21, 0x11, 0x23, 0x1, 0x21, 0x1, 0x1, 0x21, 0x1, 0x33, 0x11, 0x33, 0x11, 0x33, 0x1, 0x21, 0x1, 0x1, 0x21, 0x1, 0x23, 0x11, 0x3, 0x61, 0xAB, 0xFE, 0x9B, 0xFE, 0xC6, 0x1, 0xD4, 0xFE, 0x4B, 0x1, 0x32, 0x1, 0x5C, 0x9D, 0xFB, 0x97, 0x1, 0x58, 0x1, 0x32, 0xFE, 0x4E, 0x1, 0xD1, 0xFE, 0xC6, 0xFE, 0x9E, 0xA4, 0x2, 0x74, 0xFD, 0x8C, 0x3, 0x8, 0x2, 0xA8, 0xFD, 0xA1, 0x2, 0x5F, 0xFD, 0xA1, 0x2, 0x5F, 0xFD, 0x59, 0xFC, 0xF7, 0x2, 0x74, 0xFD, 0x8C, 0x0, 0x1, 0x0, 0x49, 0xFF, 0xEC, 0x4, 0x7F, 0x5, 0xC4, 0x0, 0x27, 0x0, 0x0, 0x5, 0x22, 0x26, 0x26, 0x35, 0x33, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x34, 0x25, 0x23, 0x35, 0x33, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x23, 0x34, 0x24, 0x33, 0x32, 0x4, 0x15, 0x14, 0x6, 0x7, 0x16, 0x15, 0x14, 0x4, 0x2, 0x5A, 0x81, 0xF3, 0x9D, 0xFD, 0x98, 0x7C, 0x8E, 0x9A, 0xFE, 0xF6, 0xB9, 0xAB, 0x8A, 0x78, 0x83, 0x8F, 0x6C, 0x94, 0xFC, 0x1, 0x2D, 0xCF, 0xF0, 0x1, 0x1F, 0x79, 0x6B, 0xFA, 0xFE, 0xCB, 0x14, 0x58, 0xBB, 0x95, 0x5B, 0x83, 0x81, 0x61, 0xE5, 0x6, 0xC7, 0x79, 0x61, 0x56, 0x7F, 0x72, 0x5B, 0xBE, 0xDA, 0xD3, 0xCC, 0x63, 0xA6, 0x30, 0x57, 0xFD, 0xCD, 0xDF, 0x0, 0x1, 0x0, 0x95, 0x0, 0x0, 0x5, 0xD, 0x5, 0xB0, 0x0, 0x9, 0x0, 0x0, 0x1, 0x1, 0x33, 0x11, 0x23, 0x11, 0x1, 0x23, 0x11, 0x33, 0x1, 0x91, 0x2, 0x80, 0xFC, 0xFC, 0xFD, 0x80, 0xFC, 0xFC, 0x1, 0xA3, 0x4, 0xD, 0xFA, 0x50, 0x4, 0xE, 0xFB, 0xF2, 0x5, 0xB0, 0x0, 0x1, 0x0, 0x2D, 0x0, 0x0, 0x5, 0xE, 0x5, 0xB0, 0x0, 0xF, 0x0, 0x0, 0x33, 0x35, 0x37, 0x36, 0x36, 0x13, 0x13, 0x21, 0x11, 0x23, 0x11, 0x21, 0x3, 0x2, 0x2, 0x7, 0x2D, 0x31, 0x7B, 0x61, 0xD, 0x1B, 0x3, 0xAC, 0xFD, 0xFE, 0x43, 0x1B, 0x16, 0xC5, 0xE7, 0xCA, 0x5, 0xE, 0xF4, 0x1, 0x2E, 0x2, 0xB1, 0xFA, 0x50, 0x4, 0xE5, 0xFD, 0xCB, 0xFE, 0x8C, 0xFE, 0xC7, 0x3, 0x0, 0x1, 0x0, 0x3A, 0xFF, 0xEB, 0x4, 0xDE, 0x5, 0xB0, 0x0, 0xF, 0x0, 0x0, 0x5, 0x27, 0x37, 0x17, 0x32, 0x36, 0x37, 0x37, 0x1, 0x21, 0x1, 0x1, 0x21, 0x1, 0x6, 0x6, 0x1, 0x70, 0x67, 0x1, 0x55, 0x47, 0x45, 0x27, 0x19, 0xFE, 0xF, 0x1, 0x14, 0x1, 0x53, 0x1, 0x24, 0x1, 0x19, 0xFE, 0xA, 0x31, 0x99, 0x15, 0x6, 0xC8, 0x4, 0x3B, 0x60, 0x3E, 0x4, 0x22, 0xFD, 0x9, 0x2, 0xF7, 0xFB, 0x57, 0x71, 0xAB, 0x0, 0x3, 0x0, 0x4F, 0xFF, 0xC4, 0x6, 0x19, 0x5, 0xEC, 0x0, 0x8, 0x0, 0x11, 0x0, 0x27, 0x0, 0x0, 0x1, 0x11, 0x23, 0x22, 0x6, 0x15, 0x14, 0x16, 0x33, 0x1, 0x11, 0x33, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x3, 0x15, 0x23, 0x35, 0x23, 0x26, 0x0, 0x11, 0x10, 0x0, 0x33, 0x33, 0x35, 0x33, 0x15, 0x33, 0x16, 0x0, 0x11, 0x10, 0x0, 0x7, 0x2, 0xBC, 0x18, 0xA8, 0xBD, 0xBE, 0xA7, 0x1, 0xB, 0x18, 0xA6, 0xBC, 0xBC, 0xA6, 0x18, 0xF3, 0x1E, 0xFC, 0xFE, 0xAD, 0x1, 0x58, 0xFD, 0x18, 0xF3, 0x1C, 0xFB, 0x1, 0x53, 0xFE, 0xAC, 0xFA, 0x1, 0x4D, 0x3, 0xF, 0xD1, 0xBB, 0xB7, 0xCC, 0x3, 0xF, 0xFC, 0xF1, 0xCF, 0xB6, 0xBA, 0xD0, 0xFC, 0x27, 0xBF, 0xBF, 0x2, 0x1, 0x44, 0x1, 0x7, 0x1, 0xD, 0x1, 0x49, 0xC6, 0xC6, 0x2, 0xFE, 0xB9, 0xFE, 0xF5, 0xFE, 0xF8, 0xFE, 0xBB, 0x2, 0x0, 0x1, 0x0, 0x93, 0xFE, 0xA1, 0x5, 0xBD, 0x5, 0xB0, 0x0, 0xB, 0x0, 0x0, 0x1, 0x23, 0x11, 0x21, 0x11, 0x33, 0x11, 0x21, 0x11, 0x33, 0x11, 0x33, 0x5, 0xA9, 0xE7, 0xFB, 0xD1, 0xFC, 0x2, 0x81, 0xFD, 0xB0, 0xFE, 0xA1, 0x1, 0x5F, 0x5, 0xB0, 0xFB, 0x1A, 0x4, 0xE6, 0xFB, 0x1D, 0x0, 0x1, 0x0, 0x8E, 0x0, 0x0, 0x4, 0xEF, 0x5, 0xB0, 0x0, 0x11, 0x0, 0x0, 0x21, 0x23, 0x11, 0x6, 0x23, 0x22, 0x24, 0x35, 0x11, 0x33, 0x11, 0x16, 0x16, 0x33, 0x32, 0x37, 0x11, 0x33, 0x4, 0xEF, 0xFD, 0x9E, 0xB4, 0xF5, 0xFE, 0xE3, 0xFD, 0x1, 0x89, 0x8B, 0xA9, 0xA9, 0xFD, 0x2, 0x3E, 0x29, 0xD9, 0xF9, 0x1, 0xC9, 0xFE, 0x32, 0x96, 0x6C, 0x29, 0x2, 0xA7, 0x0, 0x1, 0x0, 0x99, 0x0, 0x0, 0x7, 0x4, 0x5, 0xB0, 0x0, 0xB, 0x0, 0x0, 0x13, 0x33, 0x11, 0x21, 0x11, 0x33, 0x11, 0x21, 0x11, 0x33, 0x11, 0x21, 0x99, 0xFD, 0x1, 0xBD, 0xFB, 0x1, 0xBA, 0xFC, 0xF9, 0x95, 0x5, 0xB0, 0xFB, 0x1A, 0x4, 0xE6, 0xFB, 0x1A, 0x4, 0xE6, 0xFA, 0x50, 0x0, 0x1, 0x0, 0x99, 0xFE, 0xA1, 0x7, 0xAD, 0x5, 0xB0, 0x0, 0xF, 0x0, 0x0, 0x1, 0x23, 0x11, 0x21, 0x11, 0x33, 0x11, 0x21, 0x11, 0x33, 0x11, 0x21, 0x11, 0x33, 0x11, 0x33, 0x7, 0x99, 0xDD, 0xF9, 0xDD, 0xFD, 0x1, 0xBD, 0xFB, 0x1, 0xBA, 0xFC, 0xA9, 0xFE, 0xA1, 0x1, 0x5F, 0x5, 0xB0, 0xFB, 0x1A, 0x4, 0xE6, 0xFB, 0x1A, 0x4, 0xE6, 0xFB, 0x13, 0x0, 0x2, 0x0, 0x18, 0x0, 0x0, 0x5, 0xD4, 0x5, 0xB0, 0x0, 0xC, 0x0, 0x14, 0x0, 0x0, 0x21, 0x11, 0x21, 0x35, 0x21, 0x11, 0x21, 0x16, 0x4, 0x15, 0x14, 0x4, 0x23, 0x25, 0x21, 0x32, 0x36, 0x34, 0x26, 0x23, 0x21, 0x1, 0xA3, 0xFE, 0x75, 0x2, 0x88, 0x1, 0x2D, 0xF6, 0x1, 0x11, 0xFE, 0xED, 0xF8, 0xFE, 0xD7, 0x1, 0x29, 0x8C, 0x83, 0x83, 0x8C, 0xFE, 0xD7, 0x4, 0xED, 0xC3, 0xFD, 0xD3, 0x1, 0xF3, 0xC9, 0xC8, 0xFE, 0xCA, 0x99, 0xCA, 0x8B, 0x0, 0x3, 0x0, 0x9C, 0x0, 0x0, 0x6, 0x59, 0x5, 0xB0, 0x0, 0x3, 0x0, 0xE, 0x0, 0x16, 0x0, 0x0, 0x1, 0x11, 0x23, 0x11, 0x1, 0x11, 0x33, 0x11, 0x21, 0x16, 0x4, 0x15, 0x14, 0x4, 0x23, 0x25, 0x21, 0x32, 0x36, 0x34, 0x26, 0x23, 0x21, 0x6, 0x59, 0xFC, 0xFB, 0x3F, 0xFD, 0x1, 0x2C, 0xF6, 0x1, 0x12, 0xFE, 0xEC, 0xF8, 0xFE, 0xD8, 0x1, 0x28, 0x8D, 0x82, 0x82, 0x8D, 0xFE, 0xD8, 0x5, 0xB0, 0xFA, 0x50, 0x5, 0xB0, 0xFA, 0x50, 0x5, 0xB0, 0xFD, 0xD3, 0x1, 0xF3, 0xC9, 0xC8, 0xFE, 0xCA, 0x99, 0xCA, 0x8B, 0x0, 0x2, 0x0, 0x91, 0x0, 0x0, 0x4, 0xC2, 0x5, 0xB0, 0x0, 0xA, 0x0, 0x12, 0x0, 0x0, 0x33, 0x11, 0x33, 0x11, 0x21, 0x16, 0x4, 0x15, 0x14, 0x4, 0x23, 0x25, 0x21, 0x32, 0x36, 0x34, 0x26, 0x23, 0x21, 0x91, 0xFD, 0x1, 0x2C, 0xF6, 0x1, 0x12, 0xFE, 0xEC, 0xF8, 0xFE, 0xD8, 0x1, 0x28, 0x8D, 0x82, 0x82, 0x8D, 0xFE, 0xD8, 0x5, 0xB0, 0xFD, 0xD3, 0x1, 0xF3, 0xC9, 0xC8, 0xFE, 0xCA, 0x99, 0xCA, 0x8B, 0x0, 0x1, 0x0, 0x6B, 0xFF, 0xEC, 0x4, 0xF1, 0x5, 0xC4, 0x0, 0x1D, 0x0, 0x0, 0x5, 0x20, 0x0, 0x27, 0x33, 0x16, 0x16, 0x33, 0x32, 0x36, 0x37, 0x21, 0x35, 0x21, 0x26, 0x26, 0x23, 0x22, 0x6, 0x7, 0x23, 0x36, 0x0, 0x21, 0x20, 0x0, 0x13, 0x15, 0x10, 0x0, 0x2, 0xA6, 0xFE, 0xF5, 0xFE, 0xE5, 0x14, 0xFC, 0x12, 0x89, 0xA3, 0xA8, 0x9F, 0x7, 0xFD, 0xFE, 0x2, 0x2, 0x7, 0xAE, 0xA4, 0x9D, 0x86, 0x11, 0xFC, 0x17, 0x1, 0x13, 0x1, 0x6, 0x1, 0x10, 0x1, 0x42, 0x4, 0xFE, 0xC2, 0x14, 0x1, 0x19, 0xD5, 0x8C, 0x98, 0xF3, 0xC8, 0xCB, 0xD4, 0xE9, 0x9F, 0x8B, 0xDA, 0x1, 0x1B, 0xFE, 0x91, 0xFE, 0xCB, 0x84, 0xFE, 0xC5, 0xFE, 0x8B, 0x0, 0x2, 0x0, 0xA0, 0xFF, 0xEC, 0x7, 0x8, 0x5, 0xC4, 0x0, 0x13, 0x0, 0x21, 0x0, 0x0, 0x5, 0x22, 0x0, 0x3, 0x23, 0x11, 0x23, 0x11, 0x33, 0x11, 0x33, 0x12, 0x0, 0x21, 0x20, 0x0, 0x11, 0x15, 0x10, 0x0, 0x13, 0x34, 0x2, 0x23, 0x22, 0x2, 0x15, 0x15, 0x14, 0x12, 0x33, 0x32, 0x12, 0x35, 0x4, 0xAD, 0xF9, 0xFE, 0xB5, 0x17, 0xB6, 0xFC, 0xFC, 0xB4, 0xA, 0x1, 0x4E, 0x1, 0x3, 0x1, 0x10, 0x1, 0x4D, 0xFE, 0xB5, 0x4E, 0xB9, 0xA7, 0xA2, 0xBD, 0xBF, 0xA2, 0xA8, 0xB6, 0x14, 0x1, 0x4C, 0x1, 0x26, 0xFD, 0xA2, 0x5, 0xB0, 0xFD, 0x71, 0x1, 0x3C, 0x1, 0x67, 0xFE, 0x84, 0xFE, 0xB4, 0x49, 0xFE, 0xB4, 0xFE, 0x85, 0x3, 0x12, 0xF5, 0x1, 0x0, 0xFF, 0x0, 0xF5, 0x4B, 0xF5, 0xFE, 0xFE, 0x1, 0x2, 0xF5, 0x0, 0x2, 0x0, 0x21, 0x0, 0x0, 0x4, 0x5F, 0x5, 0xB0, 0x0, 0x8, 0x0, 0x15, 0x0, 0x0, 0x1, 0x11, 0x23, 0x22, 0x6, 0x15, 0x14, 0x16, 0x33, 0x13, 0x11, 0x21, 0x1, 0x21, 0x1, 0x26, 0x11, 0x34, 0x24, 0x33, 0x21, 0x11, 0x3, 0x63, 0xEC, 0x8B, 0x88, 0x8A, 0x89, 0xEC, 0xFE, 0xE6, 0xFE, 0xE7, 0xFE, 0xF1, 0x1, 0x45, 0xFE, 0x1, 0x1B, 0xF4, 0x1, 0xE8, 0x2, 0xE4, 0x2, 0x1, 0x87, 0x75, 0x7A, 0x8B, 0xFD, 0x1C, 0x2, 0x21, 0xFD, 0xDF, 0x2, 0x6C, 0x77, 0x1, 0x11, 0xD8, 0xE4, 0xFA, 0x50, 0x0, 0x2, 0x0, 0x5C, 0xFF, 0xEB, 0x4, 0x3D, 0x6, 0x13, 0x0, 0x19, 0x0, 0x27, 0x0, 0x0, 0x5, 0x22, 0x0, 0x27, 0x35, 0x10, 0x0, 0x37, 0x36, 0x36, 0x35, 0x33, 0x14, 0x6, 0x7, 0x6, 0x6, 0x7, 0x36, 0x33, 0x32, 0x12, 0x15, 0x15, 0x14, 0x0, 0x3, 0x22, 0x6, 0x15, 0x15, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x35, 0x34, 0x26, 0x2, 0x4D, 0xEC, 0xFE, 0xFE, 0x3, 0x1, 0xA, 0xDA, 0x71, 0x73, 0xC5, 0xC8, 0xAE, 0x7E, 0xB1, 0x1E, 0x90, 0xC4, 0xD8, 0xEB, 0xFE, 0xFD, 0xEF, 0x87, 0x76, 0x77, 0x88, 0x87, 0x76, 0x76, 0x15, 0x1, 0x31, 0xE6, 0x57, 0x1, 0x7D, 0x1, 0x7C, 0x2E, 0x18, 0x36, 0x45, 0xB5, 0x7C, 0x25, 0x1B, 0x96, 0xA4, 0x96, 0xFE, 0xE4, 0xD6, 0x15, 0xE0, 0xFE, 0xD4, 0x3, 0x50, 0xB5, 0x7A, 0x15, 0x86, 0xC3, 0xC3, 0x86, 0x15, 0x7A, 0xB5, 0x0, 0x3, 0x0, 0x8F, 0x0, 0x0, 0x4, 0x3B, 0x4, 0x3A, 0x0, 0x6, 0x0, 0xD, 0x0, 0x1B, 0x0, 0x0, 0x1, 0x15, 0x33, 0x32, 0x35, 0x34, 0x27, 0x3, 0x11, 0x21, 0x32, 0x35, 0x34, 0x27, 0x1, 0x11, 0x21, 0x32, 0x16, 0x15, 0x14, 0x7, 0x16, 0x16, 0x15, 0x14, 0x6, 0x23, 0x1, 0x82, 0xC9, 0xCF, 0xCA, 0xCE, 0x1, 0xA, 0xBC, 0xB4, 0xFD, 0xFB, 0x1, 0xB8, 0xD1, 0xF4, 0xB7, 0x73, 0x73, 0xE3, 0xCC, 0x3, 0x79, 0xFE, 0x7B, 0x80, 0x3, 0xFE, 0x54, 0xFE, 0xF4, 0x85, 0x84, 0x3, 0xFE, 0x33, 0x4, 0x3A, 0x92, 0x9A, 0x9F, 0x42, 0x19, 0x89, 0x56, 0x9A, 0x9B, 0x0, 0x1, 0x0, 0x85, 0x0, 0x0, 0x3, 0x4D, 0x4, 0x3A, 0x0, 0x5, 0x0, 0x0, 0x1, 0x15, 0x21, 0x11, 0x23, 0x11, 0x3, 0x4D, 0xFE, 0x2B, 0xF3, 0x4, 0x3A, 0xC4, 0xFC, 0x8A, 0x4, 0x3A, 0x0, 0x2, 0x0, 0x27, 0xFE, 0xBE, 0x4, 0xC6, 0x4, 0x3A, 0x0, 0x5, 0x0, 0x14, 0x0, 0x0, 0x25, 0x21, 0x11, 0x21, 0x7, 0x2, 0x3, 0x11, 0x23, 0x13, 0x33, 0x36, 0x36, 0x37, 0x13, 0x21, 0x11, 0x33, 0x11, 0x23, 0x11, 0x1, 0x9F, 0x1, 0x9E, 0xFE, 0xEF, 0x5, 0xC, 0xFD, 0xF7, 0x1, 0x59, 0x54, 0x58, 0x7, 0xC, 0x2, 0xF0, 0x96, 0xF3, 0xC3, 0x2, 0xA6, 0xB6, 0xFE, 0xC5, 0xFE, 0x88, 0xFE, 0xBE, 0x2, 0x5, 0x5E, 0xC9, 0xCD, 0x1, 0x83, 0xFC, 0x89, 0xFD, 0xFB, 0x1, 0x42, 0x0, 0x1, 0x0, 0x1E, 0x0, 0x0, 0x6, 0x5C, 0x4, 0x3A, 0x0, 0x15, 0x0, 0x0, 0x21, 0x11, 0x23, 0x3, 0x21, 0x1, 0x1, 0x21, 0x13, 0x33, 0x11, 0x33, 0x11, 0x33, 0x13, 0x21, 0x1, 0x1, 0x21, 0x3, 0x23, 0x11, 0x2, 0xC2, 0x80, 0xFA, 0xFE, 0xD6, 0x1, 0x68, 0xFE, 0xAB, 0x1, 0x29, 0xF6, 0x72, 0xF2, 0x74, 0xF5, 0x1, 0x29, 0xFE, 0xAE, 0x1, 0x68, 0xFE, 0xD2, 0xF9, 0x81, 0x1, 0xB3, 0xFE, 0x4D, 0x2, 0x33, 0x2, 0x7, 0xFE, 0x58, 0x1, 0xA8, 0xFE, 0x58, 0x1, 0xA8, 0xFD, 0xFD, 0xFD, 0xC9, 0x1, 0xB3, 0xFE, 0x4D, 0x0, 0x1, 0x0, 0x4E, 0xFF, 0xEC, 0x3, 0xC4, 0x4, 0x4D, 0x0, 0x25, 0x0, 0x0, 0x5, 0x22, 0x26, 0x26, 0x35, 0x33, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x34, 0x27, 0x23, 0x35, 0x33, 0x36, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x23, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x7, 0x16, 0x15, 0x14, 0x6, 0x2, 0x8, 0x6D, 0xCB, 0x82, 0xF2, 0x6E, 0x61, 0x64, 0x5E, 0xB7, 0xB3, 0xBB, 0x9C, 0x4D, 0x62, 0x52, 0x6C, 0xF2, 0xFA, 0xAF, 0xC4, 0xE5, 0xA6, 0xB9, 0xF7, 0x14, 0x48, 0x97, 0x76, 0x3D, 0x5E, 0x5D, 0x3A, 0x92, 0x2, 0xB0, 0x4, 0x82, 0x34, 0x57, 0x4D, 0x3E, 0x98, 0xAE, 0xA1, 0x9A, 0x99, 0x4C, 0x41, 0xBA, 0x9A, 0xAC, 0x0, 0x1, 0x0, 0x86, 0x0, 0x0, 0x4, 0x13, 0x4, 0x3A, 0x0, 0x9, 0x0, 0x0, 0x1, 0x1, 0x33, 0x11, 0x23, 0x11, 0x1, 0x23, 0x11, 0x33, 0x1, 0x79, 0x1, 0xA7, 0xF3, 0xF3, 0xFE, 0x59, 0xF3, 0xF3, 0x1, 0x68, 0x2, 0xD2, 0xFB, 0xC6, 0x2, 0xD2, 0xFD, 0x2E, 0x4, 0x3A, 0x0, 0x1, 0x0, 0x8F, 0x0, 0x0, 0x4, 0x65, 0x4, 0x3A, 0x0, 0xC, 0x0, 0x0, 0x21, 0x1, 0x23, 0x11, 0x23, 0x11, 0x33, 0x11, 0x33, 0x1, 0x21, 0x1, 0x1, 0x3, 0x2A, 0xFE, 0xD3, 0x7B, 0xF3, 0xF3, 0x6C, 0x1, 0x2A, 0x1, 0x2D, 0xFE, 0x78, 0x1, 0xA8, 0x1, 0xAD, 0xFE, 0x53, 0x4, 0x3A, 0xFE, 0x51, 0x1, 0xAF, 0xFD, 0xFA, 0xFD, 0xCC, 0x0, 0x1, 0x0, 0x22, 0x0, 0x0, 0x4, 0x14, 0x4, 0x3A, 0x0, 0xF, 0x0, 0x0, 0x33, 0x27, 0x37, 0x36, 0x36, 0x37, 0x13, 0x21, 0x11, 0x23, 0x11, 0x21, 0x3, 0x2, 0x6, 0x7, 0x23, 0x1, 0x27, 0x5F, 0x44, 0xA, 0x14, 0x3, 0xA, 0xF3, 0xFE, 0xCF, 0x15, 0x13, 0xAA, 0xAC, 0xCB, 0x3, 0x8, 0xC1, 0xD5, 0x1, 0xCE, 0xFB, 0xC6, 0x3, 0x76, 0xFE, 0x8B, 0xFE, 0xEB, 0xEA, 0x2, 0x0, 0x1, 0x0, 0x8F, 0x0, 0x0, 0x5, 0x6F, 0x4, 0x3A, 0x0, 0xC, 0x0, 0x0, 0x21, 0x1, 0x11, 0x23, 0x11, 0x21, 0x1, 0x1, 0x21, 0x11, 0x23, 0x11, 0x1, 0x2, 0xAD, 0xFE, 0xD5, 0xF3, 0x1, 0x33, 0x1, 0x3D, 0x1, 0x41, 0x1, 0x2F, 0xF2, 0xFE, 0xD5, 0x2, 0xD2, 0xFD, 0x2E, 0x4, 0x3A, 0xFC, 0xF1, 0x3, 0xF, 0xFB, 0xC6, 0x2, 0xCF, 0xFD, 0x31, 0x0, 0x1, 0x0, 0x86, 0x0, 0x0, 0x4, 0x11, 0x4, 0x3A, 0x0, 0xB, 0x0, 0x0, 0x21, 0x11, 0x21, 0x11, 0x23, 0x11, 0x33, 0x11, 0x21, 0x11, 0x33, 0x11, 0x3, 0x1E, 0xFE, 0x5B, 0xF3, 0xF3, 0x1, 0xA5, 0xF3, 0x1, 0xB5, 0xFE, 0x4B, 0x4, 0x3A, 0xFE, 0x3D, 0x1, 0xC3, 0xFB, 0xC6, 0x0, 0x1, 0x0, 0x86, 0x0, 0x0, 0x4, 0x13, 0x4, 0x3A, 0x0, 0x7, 0x0, 0x0, 0x21, 0x11, 0x21, 0x11, 0x23, 0x11, 0x21, 0x11, 0x3, 0x20, 0xFE, 0x59, 0xF3, 0x3, 0x8D, 0x3, 0x76, 0xFC, 0x8A, 0x4, 0x3A, 0xFB, 0xC6, 0x0, 0x1, 0x0, 0x24, 0x0, 0x0, 0x3, 0xD1, 0x4, 0x3A, 0x0, 0x7, 0x0, 0x0, 0x1, 0x21, 0x11, 0x23, 0x11, 0x21, 0x35, 0x21, 0x3, 0xD1, 0xFE, 0xA0, 0xF3, 0xFE, 0xA6, 0x3, 0xAD, 0x3, 0x79, 0xFC, 0x87, 0x3, 0x79, 0xC1, 0x0, 0x3, 0x0, 0x54, 0xFE, 0x60, 0x5, 0x7F, 0x6, 0x0, 0x0, 0xA, 0x0, 0x15, 0x0, 0x31, 0x0, 0x0, 0x25, 0x32, 0x37, 0x11, 0x26, 0x23, 0x22, 0x6, 0x15, 0x14, 0x16, 0x5, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x22, 0x7, 0x11, 0x16, 0x17, 0x22, 0x27, 0x11, 0x23, 0x11, 0x6, 0x23, 0x22, 0x2, 0x35, 0x35, 0x34, 0x12, 0x33, 0x32, 0x17, 0x11, 0x33, 0x11, 0x36, 0x33, 0x32, 0x12, 0x17, 0x15, 0x14, 0x2, 0x2, 0x1D, 0x2B, 0x22, 0x21, 0x2A, 0x79, 0x5F, 0x5D, 0x2, 0xC, 0x78, 0x64, 0x65, 0x79, 0x2D, 0x24, 0x24, 0x73, 0x55, 0x42, 0xF3, 0x3D, 0x4E, 0xC1, 0xCA, 0xC9, 0xC4, 0x4C, 0x3D, 0xF3, 0x41, 0x54, 0xC3, 0xC9, 0x1, 0xC9, 0xAF, 0xA, 0x2, 0xC8, 0xA, 0xE0, 0xB1, 0x8B, 0xC0, 0x1, 0xC0, 0xA1, 0x9B, 0xE1, 0xC, 0xFD, 0x39, 0xA, 0xC3, 0x1E, 0xFE, 0x57, 0x1, 0xA6, 0x1B, 0x1, 0x28, 0xE7, 0x15, 0xFC, 0x1, 0x43, 0x1B, 0x1, 0xCD, 0xFE, 0x2F, 0x1F, 0xFE, 0xC0, 0xFA, 0x1A, 0xE7, 0xFE, 0xD8, 0x0, 0x1, 0x0, 0x86, 0xFE, 0xBF, 0x4, 0xA6, 0x4, 0x3A, 0x0, 0xB, 0x0, 0x0, 0x1, 0x23, 0x11, 0x21, 0x11, 0x33, 0x11, 0x21, 0x11, 0x33, 0x11, 0x33, 0x4, 0x92, 0xDE, 0xFC, 0xD2, 0xF3, 0x1, 0xA7, 0xF3, 0x93, 0xFE, 0xBF, 0x1, 0x41, 0x4, 0x3A, 0xFC, 0x89, 0x3, 0x77, 0xFC, 0x88, 0x0, 0x1, 0x0, 0x5F, 0x0, 0x0, 0x3, 0xE1, 0x4, 0x3B, 0x0, 0x11, 0x0, 0x0, 0x21, 0x23, 0x11, 0x6, 0x23, 0x22, 0x26, 0x35, 0x11, 0x33, 0x11, 0x14, 0x16, 0x33, 0x32, 0x37, 0x11, 0x33, 0x3, 0xE1, 0xF3, 0x64, 0x63, 0xD1, 0xF7, 0xF3, 0x6B, 0x6A, 0x65, 0x62, 0xF3, 0x1, 0x6A, 0x16, 0xC9, 0xD2, 0x1, 0x4C, 0xFE, 0xB4, 0x76, 0x62, 0x17, 0x2, 0xC, 0x0, 0x1, 0x0, 0x86, 0x0, 0x0, 0x6, 0x4, 0x4, 0x3A, 0x0, 0xB, 0x0, 0x0, 0x13, 0x33, 0x11, 0x21, 0x11, 0x33, 0x11, 0x21, 0x11, 0x33, 0x11, 0x21, 0x86, 0xF3, 0x1, 0x53, 0xF3, 0x1, 0x52, 0xF3, 0xFA, 0x82, 0x4, 0x3A, 0xFC, 0x89, 0x3, 0x77, 0xFC, 0x89, 0x3, 0x77, 0xFB, 0xC6, 0x0, 0x1, 0x0, 0x7F, 0xFE, 0xBF, 0x6, 0xB5, 0x4, 0x3A, 0x0, 0xF, 0x0, 0x0, 0x1, 0x23, 0x11, 0x21, 0x11, 0x33, 0x11, 0x21, 0x11, 0x33, 0x11, 0x21, 0x11, 0x33, 0x11, 0x33, 0x6, 0xA1, 0xDD, 0xFA, 0xBB, 0xF2, 0x1, 0x53, 0xF3, 0x1, 0x52, 0xF3, 0xB9, 0xFE, 0xBF, 0x1, 0x41, 0x4, 0x3A, 0xFC, 0x89, 0x3, 0x77, 0xFC, 0x89, 0x3, 0x77, 0xFC, 0x88, 0x0, 0x2, 0x0, 0x1F, 0x0, 0x0, 0x4, 0xEB, 0x4, 0x3A, 0x0, 0xC, 0x0, 0x14, 0x0, 0x0, 0x21, 0x11, 0x21, 0x35, 0x21, 0x11, 0x33, 0x16, 0x16, 0x15, 0x14, 0x6, 0x23, 0x27, 0x33, 0x32, 0x36, 0x34, 0x26, 0x23, 0x23, 0x1, 0x58, 0xFE, 0xC7, 0x2, 0x2C, 0xF1, 0xCF, 0xE0, 0xE2, 0xD1, 0xED, 0xED, 0x69, 0x57, 0x57, 0x69, 0xED, 0x3, 0x77, 0xC3, 0xFE, 0xA8, 0x1, 0xCE, 0xA1, 0x9D, 0xD5, 0xC2, 0x6A, 0x84, 0x70, 0x0, 0x3, 0x0, 0x8F, 0x0, 0x0, 0x5, 0xCA, 0x4, 0x3A, 0x0, 0x3, 0x0, 0xE, 0x0, 0x16, 0x0, 0x0, 0x1, 0x11, 0x23, 0x11, 0x1, 0x11, 0x33, 0x11, 0x33, 0x16, 0x16, 0x15, 0x14, 0x6, 0x23, 0x27, 0x33, 0x32, 0x36, 0x34, 0x26, 0x23, 0x23, 0x5, 0xCA, 0xF3, 0xFB, 0xB8, 0xF4, 0xF1, 0xCF, 0xE0, 0xE2, 0xD1, 0xED, 0xED, 0x69, 0x57, 0x57, 0x69, 0xED, 0x4, 0x3A, 0xFB, 0xC6, 0x4, 0x3A, 0xFB, 0xC6, 0x4, 0x3A, 0xFE, 0xA8, 0x1, 0xCE, 0xA1, 0x9D, 0xD5, 0xC2, 0x6A, 0x84, 0x70, 0x0, 0x2, 0x0, 0x8F, 0x0, 0x0, 0x4, 0x23, 0x4, 0x3A, 0x0, 0xA, 0x0, 0x12, 0x0, 0x0, 0x33, 0x11, 0x33, 0x11, 0x33, 0x16, 0x16, 0x15, 0x14, 0x6, 0x23, 0x27, 0x33, 0x32, 0x36, 0x34, 0x26, 0x23, 0x23, 0x8F, 0xF4, 0xF1, 0xCF, 0xE0, 0xE2, 0xD1, 0xED, 0xED, 0x69, 0x57, 0x57, 0x69, 0xED, 0x4, 0x3A, 0xFE, 0xA8, 0x1, 0xCE, 0xA1, 0x9D, 0xD5, 0xC2, 0x6A, 0x84, 0x70, 0x0, 0x1, 0x0, 0x52, 0xFF, 0xEB, 0x3, 0xE9, 0x4, 0x4E, 0x0, 0x1D, 0x0, 0x0, 0x5, 0x22, 0x26, 0x35, 0x33, 0x14, 0x16, 0x33, 0x32, 0x36, 0x37, 0x21, 0x35, 0x21, 0x26, 0x26, 0x23, 0x22, 0x6, 0x15, 0x23, 0x34, 0x24, 0x33, 0x32, 0x12, 0x15, 0x15, 0x14, 0x2, 0x2, 0x2, 0xBE, 0xF2, 0xE5, 0x70, 0x5B, 0x77, 0x70, 0xA, 0xFE, 0xAB, 0x1, 0x54, 0xC, 0x70, 0x74, 0x53, 0x78, 0xE5, 0x1, 0x1, 0xAF, 0xED, 0xFA, 0xFB, 0x15, 0xE5, 0xB3, 0x57, 0x7E, 0xB1, 0x72, 0xA8, 0x6E, 0xA4, 0x67, 0x50, 0x9D, 0xDD, 0xFE, 0xBF, 0xDF, 0x23, 0xDF, 0xFE, 0xBF, 0x0, 0x2, 0x0, 0x91, 0xFF, 0xEC, 0x6, 0x39, 0x4, 0x4E, 0x0, 0x13, 0x0, 0x21, 0x0, 0x0, 0x5, 0x22, 0x0, 0x27, 0x23, 0x11, 0x23, 0x11, 0x33, 0x11, 0x33, 0x36, 0x0, 0x33, 0x32, 0x0, 0x17, 0x15, 0x14, 0x0, 0x1, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x4, 0x42, 0xD9, 0xFE, 0xFB, 0x16, 0xCA, 0xF3, 0xF3, 0xCC, 0x1B, 0x1, 0x2, 0xD3, 0xEC, 0x1, 0x9, 0x4, 0xFE, 0xF6, 0xFE, 0xE, 0x7D, 0x88, 0x87, 0x7D, 0x7D, 0x89, 0x87, 0x7C, 0x14, 0x1, 0xA, 0xCE, 0xFE, 0x3C, 0x4, 0x3A, 0xFE, 0x4E, 0xC6, 0x1, 0x0, 0xFE, 0xCD, 0xE7, 0x22, 0xEB, 0xFE, 0xC5, 0x2, 0x26, 0x91, 0xD2, 0xD2, 0x91, 0x15, 0x8F, 0xD5, 0xD5, 0x8F, 0x0, 0x2, 0x0, 0x27, 0x0, 0x0, 0x3, 0xE0, 0x4, 0x3A, 0x0, 0x8, 0x0, 0x15, 0x0, 0x0, 0x1, 0x11, 0x23, 0x22, 0x6, 0x15, 0x14, 0x16, 0x33, 0x13, 0x11, 0x23, 0x3, 0x23, 0x13, 0x26, 0x35, 0x34, 0x36, 0x33, 0x21, 0x11, 0x2, 0xEE, 0xE1, 0x65, 0x5D, 0x57, 0x5E, 0xEE, 0xE2, 0xE8, 0xFD, 0xFF, 0xCF, 0xE8, 0xCE, 0x1, 0xD3, 0x2, 0x42, 0x1, 0x37, 0x65, 0x39, 0x38, 0x61, 0xFD, 0xBE, 0x1, 0x8E, 0xFE, 0x72, 0x1, 0xB6, 0x57, 0xD3, 0x95, 0xC5, 0xFB, 0xC6, 0x0, 0x1, 0xFF, 0xDA, 0xFE, 0x4B, 0x3, 0xF9, 0x6, 0x0, 0x0, 0x22, 0x0, 0x0, 0x1, 0x22, 0x27, 0x37, 0x16, 0x33, 0x32, 0x37, 0x11, 0x34, 0x26, 0x23, 0x22, 0x7, 0x11, 0x23, 0x11, 0x23, 0x35, 0x33, 0x35, 0x33, 0x15, 0x21, 0x15, 0x21, 0x15, 0x36, 0x33, 0x32, 0x16, 0x17, 0x11, 0x14, 0x6, 0x2, 0x99, 0x45, 0x3B, 0xF, 0x29, 0x3A, 0x7A, 0x1, 0x62, 0x5D, 0x93, 0x48, 0xF2, 0xA0, 0xA0, 0xF2, 0x1, 0xC, 0xFE, 0xF4, 0x76, 0xB7, 0x9F, 0xC0, 0x1, 0xBB, 0xFE, 0x4B, 0x11, 0xBF, 0xD, 0xB0, 0x2, 0xFD, 0x71, 0x5C, 0x83, 0xFC, 0xFB, 0x4, 0xAE, 0xAB, 0xA7, 0xA7, 0xAB, 0xEB, 0x8B, 0xB6, 0xDA, 0xFD, 0x3, 0xB6, 0xC0, 0x0, 0x1, 0x0, 0x54, 0xFF, 0xEC, 0x3, 0xFA, 0x4, 0x4E, 0x0, 0x1D, 0x0, 0x0, 0x1, 0x6, 0x4, 0x23, 0x22, 0x2, 0x27, 0x35, 0x34, 0x12, 0x33, 0x32, 0x16, 0x17, 0x23, 0x26, 0x26, 0x23, 0x22, 0x6, 0x7, 0x21, 0x15, 0x21, 0x16, 0x16, 0x33, 0x32, 0x36, 0x37, 0x3, 0xFA, 0x5, 0xFF, 0x0, 0xB4, 0xF8, 0xF3, 0x2, 0xF3, 0xF9, 0xC5, 0xF0, 0x5, 0xE5, 0x4, 0x70, 0x63, 0x83, 0x69, 0x9, 0x1, 0x5A, 0xFE, 0xA7, 0xA, 0x69, 0x81, 0x59, 0x7A, 0x4, 0x1, 0x66, 0x9D, 0xDD, 0x1, 0x3B, 0xDE, 0x2A, 0xDE, 0x1, 0x41, 0xE4, 0xB3, 0x57, 0x7D, 0xAF, 0x71, 0xA8, 0x6F, 0xA5, 0x68, 0x4F, 0x0, 0x2, 0x0, 0x1F, 0x0, 0x0, 0x6, 0x9B, 0x4, 0x3A, 0x0, 0x17, 0x0, 0x20, 0x0, 0x0, 0x33, 0x27, 0x37, 0x36, 0x36, 0x37, 0x13, 0x21, 0x11, 0x33, 0x16, 0x17, 0x16, 0x15, 0x14, 0x6, 0x23, 0x21, 0x11, 0x21, 0x3, 0x2, 0x6, 0x7, 0x25, 0x33, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x23, 0x20, 0x1, 0x27, 0x5F, 0x45, 0xA, 0x14, 0x2, 0xF2, 0xF2, 0xCE, 0x70, 0x71, 0xE2, 0xD1, 0xFE, 0x1F, 0xFE, 0xE6, 0x13, 0x12, 0xAD, 0xAE, 0x3, 0x8D, 0xEE, 0x69, 0x57, 0x57, 0x69, 0xEE, 0xCB, 0x3, 0x8, 0xC1, 0xD5, 0x1, 0xCE, 0xFE, 0x88, 0x1, 0x62, 0x63, 0x98, 0x99, 0xCB, 0x3, 0x76, 0xFE, 0x9A, 0xFE, 0xE0, 0xEF, 0x1, 0xC1, 0x68, 0x3D, 0x3B, 0x5E, 0x0, 0x2, 0x0, 0x86, 0x0, 0x0, 0x6, 0xB1, 0x4, 0x3A, 0x0, 0x8, 0x0, 0x1B, 0x0, 0x0, 0x25, 0x33, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x23, 0x3, 0x11, 0x21, 0x11, 0x23, 0x11, 0x33, 0x11, 0x21, 0x11, 0x33, 0x11, 0x33, 0x16, 0x16, 0x15, 0x14, 0x6, 0x23, 0x4, 0x11, 0xED, 0x6A, 0x56, 0x56, 0x6A, 0xED, 0xF3, 0xFE, 0x5B, 0xF3, 0xF3, 0x1, 0xA5, 0xF3, 0xF2, 0xCE, 0xE0, 0xE2, 0xD1, 0xC1, 0x68, 0x3D, 0x3B, 0x5E, 0xFE, 0x1, 0x1, 0xDD, 0xFE, 0x23, 0x4, 0x3A, 0xFE, 0x65, 0x1, 0x9B, 0xFE, 0x87, 0x1, 0xC5, 0x97, 0x99, 0xCB, 0x0, 0x1, 0xFF, 0xEE, 0x0, 0x0, 0x3, 0xF9, 0x6, 0x0, 0x0, 0x19, 0x0, 0x0, 0x1, 0x22, 0x7, 0x11, 0x23, 0x11, 0x23, 0x35, 0x33, 0x35, 0x33, 0x15, 0x21, 0x15, 0x21, 0x15, 0x36, 0x33, 0x32, 0x16, 0x17, 0x11, 0x23, 0x11, 0x34, 0x26, 0x2, 0x47, 0x93, 0x48, 0xF2, 0x8C, 0x8C, 0xF2, 0x1, 0x20, 0xFE, 0xE0, 0x76, 0xB7, 0x9F, 0xC0, 0x1, 0xF3, 0x62, 0x3, 0x88, 0x83, 0xFC, 0xFB, 0x4, 0xB5, 0xAB, 0xA0, 0xA0, 0xAB, 0xF2, 0x8B, 0xB6, 0xDA, 0xFD, 0x42, 0x2, 0xBB, 0x71, 0x5C, 0x0, 0x1, 0x0, 0x86, 0xFE, 0x9A, 0x4, 0x13, 0x4, 0x3A, 0x0, 0xB, 0x0, 0x0, 0x21, 0x21, 0x11, 0x23, 0x11, 0x21, 0x11, 0x33, 0x11, 0x21, 0x11, 0x33, 0x4, 0x13, 0xFE, 0xB4, 0xF2, 0xFE, 0xB1, 0xF3, 0x1, 0xA7, 0xF3, 0xFE, 0x9A, 0x1, 0x66, 0x4, 0x3A, 0xFC, 0x89, 0x3, 0x77, 0x0, 0x1, 0x0, 0x89, 0xFF, 0xEB, 0x6, 0xC2, 0x5, 0xB0, 0x0, 0x1D, 0x0, 0x0, 0x5, 0x22, 0x27, 0x6, 0x23, 0x22, 0x24, 0x35, 0x11, 0x33, 0x11, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x11, 0x21, 0x11, 0x14, 0x16, 0x32, 0x36, 0x35, 0x11, 0x33, 0x11, 0x14, 0x4, 0x4, 0xF7, 0xE4, 0x6E, 0x71, 0xE9, 0xC2, 0xFF, 0x0, 0xFD, 0x6E, 0x57, 0x62, 0x78, 0x1, 0x1, 0x75, 0xB8, 0x72, 0xFD, 0xFE, 0xFB, 0x15, 0xA6, 0xA6, 0xE3, 0xDF, 0x4, 0x3, 0xFB, 0xFD, 0x7F, 0x79, 0x79, 0x7F, 0x4, 0x3, 0xFB, 0xFD, 0x7F, 0x79, 0x79, 0x7F, 0x4, 0x3, 0xFB, 0xFD, 0xDF, 0xE3, 0x0, 0x1, 0x0, 0x70, 0xFF, 0xEB, 0x5, 0xEE, 0x4, 0x3A, 0x0, 0x1D, 0x0, 0x0, 0x5, 0x22, 0x27, 0x6, 0x23, 0x22, 0x26, 0x35, 0x11, 0x33, 0x11, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x11, 0x33, 0x11, 0x16, 0x33, 0x32, 0x36, 0x35, 0x11, 0x33, 0x11, 0x14, 0x6, 0x4, 0x55, 0xC5, 0x61, 0x66, 0xCC, 0xAC, 0xE1, 0xF3, 0x54, 0x46, 0x53, 0x67, 0xF4, 0x2, 0xA8, 0x4B, 0x5B, 0xF3, 0xE7, 0x15, 0x8F, 0x8F, 0xD1, 0xD0, 0x2, 0xAE, 0xFD, 0x52, 0x72, 0x6C, 0x6C, 0x72, 0x2, 0xAE, 0xFD, 0x4D, 0xD9, 0x6C, 0x72, 0x2, 0xAE, 0xFD, 0x52, 0xD0, 0xD1, 0x0, 0x2, 0xFF, 0xDF, 0x0, 0x0, 0x4, 0x22, 0x6, 0x19, 0x0, 0x11, 0x0, 0x1A, 0x0, 0x0, 0x24, 0x6, 0x23, 0x21, 0x11, 0x23, 0x35, 0x33, 0x11, 0x33, 0x11, 0x21, 0x15, 0x21, 0x11, 0x33, 0x16, 0x16, 0x1, 0x33, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x23, 0x4, 0x22, 0xE2, 0xD2, 0xFE, 0x20, 0xAF, 0xAF, 0xF3, 0x1, 0x22, 0xFE, 0xDE, 0xF1, 0xD0, 0xE0, 0xFD, 0x5F, 0xED, 0x6A, 0x57, 0x57, 0x6A, 0xED, 0xDF, 0xDF, 0x4, 0x3A, 0xAB, 0x1, 0x34, 0xFE, 0xCC, 0xAB, 0xFE, 0xC9, 0x1, 0xD7, 0xFE, 0x97, 0x75, 0x49, 0x47, 0x7A, 0x0, 0x1, 0x0, 0x99, 0xFF, 0xED, 0x6, 0xCE, 0x5, 0xC5, 0x0, 0x23, 0x0, 0x0, 0x1, 0x6, 0x0, 0x21, 0x20, 0x0, 0x3, 0x23, 0x11, 0x23, 0x11, 0x33, 0x11, 0x33, 0x12, 0x0, 0x21, 0x20, 0x0, 0x17, 0x23, 0x26, 0x26, 0x23, 0x22, 0x6, 0x7, 0x21, 0x15, 0x21, 0x16, 0x12, 0x33, 0x32, 0x36, 0x37, 0x6, 0xCD, 0x13, 0xFE, 0xE5, 0xFE, 0xF4, 0xFE, 0xF7, 0xFE, 0xC3, 0x5, 0xB3, 0xFC, 0xFC, 0xB5, 0x10, 0x1, 0x3F, 0x1, 0x6, 0x1, 0x5, 0x1, 0x14, 0x16, 0xFC, 0x10, 0x87, 0x9C, 0xA1, 0xAC, 0xB, 0x1, 0xE9, 0xFE, 0x16, 0x3, 0x9D, 0xAD, 0xA3, 0x89, 0x12, 0x1, 0xDB, 0xD4, 0xFE, 0xE6, 0x1, 0x6C, 0x1, 0x33, 0xFD, 0x74, 0x5, 0xB0, 0xFD, 0xA0, 0x1, 0x20, 0x1, 0x55, 0xFE, 0xE5, 0xDA, 0x8C, 0x9D, 0xDE, 0xCB, 0xC4, 0xD3, 0xFF, 0x0, 0x97, 0x8B, 0x0, 0x1, 0x0, 0x87, 0xFF, 0xEC, 0x5, 0xBB, 0x4, 0x4E, 0x0, 0x23, 0x0, 0x0, 0x1, 0x6, 0x4, 0x23, 0x22, 0x2, 0x27, 0x23, 0x11, 0x23, 0x11, 0x33, 0x11, 0x33, 0x36, 0x12, 0x33, 0x32, 0x16, 0x17, 0x23, 0x26, 0x26, 0x23, 0x22, 0x6, 0x7, 0x21, 0x15, 0x21, 0x16, 0x16, 0x33, 0x32, 0x36, 0x37, 0x5, 0xBB, 0x5, 0xFF, 0x0, 0xB4, 0xE7, 0xF2, 0x11, 0x9E, 0xF3, 0xF3, 0x9E, 0x11, 0xF2, 0xE6, 0xC5, 0xF0, 0x5, 0xE5, 0x4, 0x71, 0x63, 0x81, 0x69, 0x9, 0x1, 0x7B, 0xFE, 0x85, 0x9, 0x69, 0x82, 0x59, 0x7A, 0x4, 0x1, 0x66, 0x9D, 0xDD, 0x1, 0x14, 0xC7, 0xFE, 0x39, 0x4, 0x3A, 0xFE, 0x38, 0xC7, 0x1, 0x15, 0xE4, 0xB3, 0x57, 0x7D, 0xAA, 0x6F, 0xAB, 0x70, 0xA8, 0x68, 0x4F, 0x0, 0x2, 0x0, 0x1D, 0x0, 0x0, 0x5, 0x18, 0x5, 0xB0, 0x0, 0x2, 0x0, 0xE, 0x0, 0x0, 0x1, 0x3, 0x3, 0x13, 0x11, 0x23, 0x3, 0x21, 0x1, 0x33, 0x1, 0x21, 0x3, 0x23, 0x11, 0x3, 0x45, 0xA8, 0xAA, 0x31, 0x72, 0x8F, 0xFE, 0xFA, 0x2, 0x6, 0xF5, 0x2, 0x0, 0xFE, 0xFA, 0x8E, 0x7E, 0x2, 0x69, 0x1, 0xFA, 0xFE, 0x6, 0xFD, 0x97, 0x1, 0xAA, 0xFE, 0x56, 0x5, 0xB0, 0xFA, 0x50, 0x1, 0xAA, 0xFE, 0x56, 0x0, 0x2, 0x0, 0xA, 0x0, 0x0, 0x4, 0x46, 0x4, 0x3A, 0x0, 0x4, 0x0, 0x10, 0x0, 0x0, 0x1, 0x3, 0x33, 0x3, 0x27, 0x3, 0x11, 0x23, 0x3, 0x23, 0x1, 0x33, 0x1, 0x23, 0x3, 0x23, 0x11, 0x2, 0xC, 0x61, 0xF7, 0x63, 0x19, 0x61, 0x5B, 0x68, 0xF8, 0x1, 0xAA, 0xE7, 0x1, 0xAB, 0xF8, 0x6A, 0x5C, 0x2, 0xCA, 0xFE, 0xFB, 0x1, 0x5, 0x67, 0xFC, 0xCF, 0x1, 0x18, 0xFE, 0xE8, 0x4, 0x3A, 0xFB, 0xC6, 0x1, 0x18, 0xFE, 0xE8, 0x0, 0x2, 0x0, 0xAD, 0x0, 0x0, 0x7, 0x30, 0x5, 0xB0, 0x0, 0x2, 0x0, 0x16, 0x0, 0x0, 0x1, 0x3, 0x3, 0x1, 0x13, 0x21, 0x11, 0x23, 0x11, 0x33, 0x11, 0x21, 0x1, 0x33, 0x1, 0x21, 0x3, 0x23, 0x11, 0x23, 0x11, 0x23, 0x3, 0x5, 0x5D, 0xA8, 0xAA, 0xFE, 0x2A, 0x99, 0xFE, 0xDB, 0xFC, 0xFC, 0x1, 0x67, 0x1, 0x2C, 0xF5, 0x1, 0xFF, 0xFE, 0xFA, 0x8D, 0x7F, 0xE1, 0x72, 0x90, 0x2, 0x69, 0x1, 0xFA, 0xFE, 0x6, 0xFD, 0x97, 0x1, 0xAC, 0xFE, 0x54, 0x5, 0xB0, 0xFC, 0xB7, 0x3, 0x49, 0xFA, 0x50, 0x1, 0xAA, 0xFE, 0x56, 0x1, 0xAA, 0xFE, 0x56, 0x0, 0x2, 0x0, 0x9E, 0x0, 0x0, 0x6, 0x19, 0x4, 0x3A, 0x0, 0x4, 0x0, 0x18, 0x0, 0x0, 0x1, 0x3, 0x33, 0x3, 0x27, 0x1, 0x13, 0x23, 0x11, 0x23, 0x11, 0x33, 0x11, 0x33, 0x13, 0x33, 0x1, 0x23, 0x3, 0x23, 0x11, 0x23, 0x11, 0x23, 0x3, 0x3, 0xDF, 0x61, 0xF6, 0x63, 0x18, 0xFD, 0xE4, 0x6E, 0xBA, 0xF3, 0xF3, 0xFE, 0xF7, 0xE8, 0x1, 0xAB, 0xF8, 0x6B, 0x5B, 0xC3, 0x5B, 0x68, 0x2, 0xCA, 0xFE, 0xFB, 0x1, 0x5, 0x65, 0xFC, 0xD1, 0x1, 0x17, 0xFE, 0xE9, 0x4, 0x3A, 0xFD, 0x8B, 0x2, 0x75, 0xFB, 0xC6, 0x1, 0x18, 0xFE, 0xE8, 0x1, 0x18, 0xFE, 0xE8, 0x0, 0x2, 0x0, 0x80, 0x0, 0x0, 0x6, 0x6E, 0x5, 0xB0, 0x0, 0x2, 0x0, 0x1D, 0x0, 0x0, 0x1, 0x13, 0x21, 0x1, 0x23, 0x11, 0x36, 0x24, 0x33, 0x1, 0x21, 0x1, 0x16, 0x4, 0x15, 0x11, 0x23, 0x11, 0x34, 0x26, 0x23, 0x23, 0x7, 0x11, 0x23, 0x11, 0x23, 0x22, 0x6, 0x15, 0x3, 0x84, 0xE9, 0xFE, 0x2E, 0xFE, 0xE1, 0xFC, 0x3, 0x1, 0x10, 0xFA, 0xFE, 0x85, 0x4, 0xE4, 0xFE, 0x85, 0xEC, 0x1, 0x7, 0xFC, 0x82, 0x86, 0x66, 0x6, 0xFC, 0x7E, 0x85, 0x83, 0x3, 0x3A, 0x1, 0xA9, 0xFB, 0x1D, 0x1, 0x6C, 0xF4, 0xC9, 0x2, 0x87, 0xFD, 0x79, 0x3, 0xCF, 0xF6, 0xFE, 0x9F, 0x1, 0x61, 0x93, 0x68, 0xA, 0xFD, 0xAE, 0x2, 0x5C, 0x68, 0x93, 0x0, 0x2, 0x0, 0x83, 0x0, 0x0, 0x5, 0x64, 0x4, 0x3B, 0x0, 0x2, 0x0, 0x21, 0x0, 0x0, 0x1, 0x13, 0x21, 0x3, 0x23, 0x35, 0x36, 0x36, 0x37, 0x1, 0x33, 0x35, 0x21, 0x15, 0x33, 0x1, 0x16, 0x16, 0x15, 0x15, 0x23, 0x35, 0x26, 0x26, 0x27, 0x23, 0x7, 0x11, 0x23, 0x11, 0x23, 0x22, 0x6, 0x15, 0x2, 0xFB, 0x95, 0xFE, 0xD5, 0xEF, 0xF3, 0x2, 0xD4, 0xBC, 0xFE, 0xEB, 0xA9, 0x2, 0xC6, 0x86, 0xFE, 0xEA, 0xB7, 0xCE, 0xF3, 0x1, 0x6A, 0x6D, 0x27, 0x1, 0xF3, 0x2C, 0x70, 0x6C, 0x2, 0x69, 0x1, 0x22, 0xFC, 0x75, 0xB2, 0xDB, 0xC7, 0xC, 0x1, 0xDA, 0x1, 0x1, 0xFE, 0x25, 0xF, 0xCB, 0xDB, 0xAA, 0xAF, 0x8F, 0x65, 0x1, 0x1, 0xFE, 0x5D, 0x1, 0xA4, 0x67, 0x93, 0x0, 0x2, 0x0, 0xA4, 0x0, 0x0, 0x8, 0xB4, 0x5, 0xB0, 0x0, 0x2, 0x0, 0x23, 0x0, 0x0, 0x1, 0x13, 0x21, 0x1, 0x21, 0x11, 0x23, 0x11, 0x33, 0x11, 0x21, 0x1, 0x21, 0x1, 0x16, 0x4, 0x15, 0x11, 0x23, 0x11, 0x34, 0x26, 0x23, 0x23, 0x7, 0x11, 0x23, 0x11, 0x23, 0x22, 0x6, 0x15, 0x11, 0x23, 0x11, 0x34, 0x5, 0xC9, 0xE9, 0xFE, 0x2E, 0xFE, 0x21, 0xFE, 0x9F, 0xFC, 0xFC, 0x3, 0x31, 0xFE, 0x86, 0x4, 0xE4, 0xFE, 0x85, 0xEC, 0x1, 0x8, 0xFC, 0x82, 0x86, 0x67, 0x6, 0xFC, 0x7E, 0x85, 0x82, 0xFC, 0x3, 0x3B, 0x1, 0xA8, 0xFD, 0x84, 0xFD, 0x99, 0x5, 0xB0, 0xFD, 0x7B, 0x2, 0x85, 0xFD, 0x79, 0x3, 0xCF, 0xF6, 0xFE, 0x9F, 0x1, 0x61, 0x93, 0x68, 0xA, 0xFD, 0xAE, 0x2, 0x5C, 0x68, 0x93, 0xFE, 0x9F, 0x1, 0x61, 0xA0, 0x0, 0x2, 0x0, 0x90, 0x0, 0x0, 0x7, 0x77, 0x4, 0x3B, 0x0, 0x2, 0x0, 0x27, 0x0, 0x0, 0x1, 0x13, 0x21, 0x1, 0x21, 0x11, 0x23, 0x11, 0x33, 0x11, 0x21, 0x1, 0x33, 0x35, 0x21, 0x15, 0x33, 0x1, 0x16, 0x16, 0x15, 0x15, 0x23, 0x35, 0x26, 0x26, 0x27, 0x23, 0x7, 0x11, 0x23, 0x11, 0x23, 0x22, 0x6, 0x15, 0x15, 0x23, 0x35, 0x34, 0x5, 0xD, 0x95, 0xFE, 0xD6, 0xFE, 0x54, 0xFE, 0xB7, 0xF3, 0xF3, 0x2, 0xA4, 0xFE, 0xEC, 0xA9, 0x2, 0xC5, 0x86, 0xFE, 0xEB, 0xB7, 0xCE, 0xF3, 0x1, 0x6A, 0x6D, 0x27, 0x1, 0xF3, 0x2C, 0x70, 0x6D, 0xF2, 0x2, 0x69, 0x1, 0x22, 0xFE, 0x1D, 0xFE, 0x58, 0x4, 0x3A, 0xFE, 0x28, 0x1, 0xD8, 0x1, 0x1, 0xFE, 0x25, 0xF, 0xCB, 0xDB, 0xAA, 0xAF, 0x8F, 0x65, 0x1, 0x1, 0xFE, 0x5D, 0x1, 0xA4, 0x67, 0x93, 0xAA, 0xAA, 0x9B, 0x0, 0x2, 0x0, 0x29, 0xFE, 0x40, 0x3, 0xAA, 0x7, 0x89, 0x0, 0x8, 0x0, 0x32, 0x0, 0x0, 0x1, 0x17, 0x37, 0x33, 0x15, 0x1, 0x23, 0x1, 0x35, 0x13, 0x26, 0x26, 0x27, 0x34, 0x36, 0x33, 0x33, 0x32, 0x36, 0x35, 0x34, 0x25, 0x23, 0x35, 0x33, 0x36, 0x36, 0x35, 0x34, 0x26, 0x23, 0x21, 0x35, 0x21, 0x32, 0x4, 0x15, 0x14, 0x6, 0x7, 0x4, 0x11, 0x14, 0x4, 0x23, 0x23, 0x22, 0x15, 0x14, 0x16, 0x17, 0x1, 0x71, 0x92, 0x92, 0xD0, 0xFE, 0xE9, 0x96, 0xFE, 0xEB, 0xAE, 0x7D, 0xA9, 0x2, 0xBD, 0xA0, 0x33, 0x79, 0x85, 0xFE, 0xE3, 0x9D, 0x98, 0x89, 0x78, 0x7C, 0x83, 0xFE, 0xE5, 0x1, 0x1B, 0xDC, 0x1, 0x16, 0x7D, 0x6F, 0x1, 0xD, 0xFE, 0xEF, 0xD8, 0x32, 0x85, 0x6F, 0x29, 0x7, 0x89, 0x9B, 0x9B, 0xB, 0xFE, 0xEA, 0x1, 0x17, 0xA, 0xF6, 0xB7, 0x26, 0xB3, 0x84, 0x8F, 0x86, 0x81, 0x61, 0xED, 0x6, 0xC7, 0x1, 0x77, 0x5B, 0x56, 0x73, 0xC6, 0xC5, 0xBF, 0x6F, 0xA4, 0x2C, 0x55, 0xFF, 0x0, 0xCD, 0xE0, 0x67, 0x4A, 0x4E, 0x13, 0x0, 0x2, 0x0, 0x33, 0xFE, 0x47, 0x3, 0x88, 0x6, 0x1C, 0x0, 0x8, 0x0, 0x31, 0x0, 0x0, 0x1, 0x17, 0x37, 0x33, 0x15, 0x1, 0x23, 0x1, 0x35, 0x13, 0x26, 0x26, 0x27, 0x34, 0x36, 0x33, 0x33, 0x32, 0x36, 0x35, 0x34, 0x27, 0x23, 0x35, 0x33, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x21, 0x35, 0x21, 0x32, 0x4, 0x15, 0x14, 0x7, 0x16, 0x15, 0x14, 0x6, 0x23, 0x23, 0x22, 0x15, 0x14, 0x16, 0x17, 0x1, 0x42, 0x92, 0x93, 0xCF, 0xFE, 0xE9, 0x96, 0xFE, 0xEB, 0xD9, 0x6C, 0xAC, 0x2, 0xB7, 0x98, 0x30, 0x6B, 0x78, 0xF0, 0xA8, 0x9A, 0x77, 0x67, 0x6D, 0x71, 0xFE, 0xE5, 0x1, 0x1B, 0xCD, 0x1, 0x3, 0xB8, 0xD9, 0xFA, 0xC6, 0x2E, 0x8C, 0x69, 0x28, 0x6, 0x1C, 0x9B, 0x9B, 0xA, 0xFE, 0xE9, 0x1, 0x17, 0xA, 0xF8, 0x2B, 0x29, 0xAD, 0x80, 0x87, 0x7F, 0x52, 0x3E, 0x8E, 0x5, 0xAA, 0x4F, 0x3F, 0x38, 0x4B, 0xB9, 0x9C, 0x95, 0x9F, 0x4B, 0x44, 0xAB, 0x9A, 0xAB, 0x67, 0x4A, 0x4E, 0x13, 0x0, 0x3, 0x0, 0x5F, 0xFF, 0xEC, 0x5, 0x18, 0x5, 0xC4, 0x0, 0xD, 0x0, 0x14, 0x0, 0x1A, 0x0, 0x0, 0x1, 0x10, 0x0, 0x21, 0x20, 0x0, 0x11, 0x35, 0x10, 0x0, 0x21, 0x20, 0x0, 0x11, 0x1, 0x22, 0x6, 0x7, 0x21, 0x26, 0x26, 0x3, 0x20, 0x13, 0x21, 0x16, 0x16, 0x5, 0x18, 0xFE, 0xB5, 0xFE, 0xF0, 0xFE, 0xF6, 0xFE, 0xAC, 0x1, 0x52, 0x1, 0xA, 0x1, 0x10, 0x1, 0x4D, 0xFD, 0xA3, 0x9B, 0xBA, 0x9, 0x2, 0xBD, 0x8, 0xB7, 0x9E, 0x1, 0x49, 0x14, 0xFD, 0x43, 0xB, 0xBC, 0x2, 0xB3, 0xFE, 0xB4, 0xFE, 0x85, 0x1, 0x7B, 0x1, 0x4C, 0x49, 0x1, 0x4C, 0x1, 0x7C, 0xFE, 0x84, 0xFE, 0xB4, 0x1, 0xF7, 0xE9, 0xE0, 0xE0, 0xE9, 0xFB, 0xC9, 0x1, 0xC3, 0xDC, 0xE7, 0x0, 0x3, 0x0, 0x4F, 0xFF, 0xEC, 0x4, 0x3D, 0x4, 0x4E, 0x0, 0xD, 0x0, 0x14, 0x0, 0x1B, 0x0, 0x0, 0x13, 0x34, 0x0, 0x33, 0x32, 0x0, 0x15, 0x15, 0x14, 0x0, 0x23, 0x22, 0x0, 0x27, 0x1, 0x22, 0x6, 0x7, 0x21, 0x26, 0x26, 0x3, 0x32, 0x36, 0x37, 0x21, 0x16, 0x16, 0x4F, 0x1, 0xA, 0xEC, 0xEF, 0x1, 0x9, 0xFE, 0xF7, 0xED, 0xEB, 0xFE, 0xF7, 0x4, 0x1, 0xF6, 0x74, 0x7C, 0xE, 0x1, 0xFF, 0xE, 0x7D, 0x74, 0x76, 0x7C, 0xE, 0xFD, 0xFF, 0xE, 0x7C, 0x2, 0x27, 0xEC, 0x1, 0x3B, 0xFE, 0xC5, 0xEC, 0x15, 0xEB, 0xFE, 0xC5, 0x1, 0x33, 0xE6, 0x1, 0x86, 0xA2, 0x75, 0x75, 0xA2, 0xFD, 0x24, 0xA2, 0x78, 0x78, 0xA2, 0x0, 0x1, 0x0, 0x10, 0x0, 0x0, 0x4, 0xF4, 0x5, 0xC3, 0x0, 0xF, 0x0, 0x0, 0x21, 0x1, 0x21, 0x1, 0x17, 0x37, 0x13, 0x36, 0x36, 0x33, 0x17, 0x7, 0x23, 0x6, 0x7, 0x1, 0x2, 0x2, 0xFE, 0xE, 0x1, 0xE, 0x1, 0x43, 0x1B, 0x1B, 0xE4, 0x34, 0x96, 0x82, 0x2D, 0x2, 0x17, 0x55, 0x29, 0xFE, 0x99, 0x5, 0xB0, 0xFB, 0xDB, 0x72, 0x70, 0x2, 0xF7, 0xA3, 0xA0, 0x1, 0xD7, 0x2, 0x80, 0xFB, 0x97, 0x0, 0x1, 0x0, 0x21, 0x0, 0x0, 0x4, 0x19, 0x4, 0x4E, 0x0, 0x11, 0x0, 0x0, 0x21, 0x1, 0x33, 0x13, 0x17, 0x37, 0x13, 0x12, 0x33, 0x32, 0x17, 0x7, 0x26, 0x23, 0x22, 0x6, 0x7, 0x1, 0x1, 0x8E, 0xFE, 0x93, 0xFB, 0xC8, 0x14, 0x14, 0x7A, 0x58, 0xD1, 0x44, 0x26, 0x17, 0x8, 0x24, 0x22, 0x3B, 0xD, 0xFE, 0xF5, 0x4, 0x3A, 0xFD, 0x35, 0x61, 0x61, 0x1, 0xBD, 0x1, 0x22, 0x15, 0xC0, 0x5, 0x35, 0x27, 0xFC, 0xDE, 0x0, 0x2, 0x0, 0x5F, 0xFF, 0x76, 0x5, 0x18, 0x6, 0x2E, 0x0, 0x13, 0x0, 0x25, 0x0, 0x0, 0x5, 0x23, 0x35, 0x26, 0x0, 0x3, 0x35, 0x10, 0x0, 0x37, 0x35, 0x33, 0x15, 0x16, 0x0, 0x13, 0x15, 0x10, 0x0, 0x7, 0x3, 0x33, 0x15, 0x36, 0x13, 0x35, 0x10, 0x27, 0x15, 0x23, 0x35, 0x6, 0x6, 0x15, 0x15, 0x14, 0x16, 0x17, 0x3, 0x21, 0xC5, 0xE2, 0xFE, 0xE7, 0x2, 0x1, 0x19, 0xE3, 0xC5, 0xE4, 0x1, 0x12, 0x2, 0xFE, 0xEE, 0xE5, 0xC5, 0xC5, 0xF4, 0x6, 0xFB, 0xC5, 0x77, 0x88, 0x89, 0x77, 0x8A, 0x7D, 0x22, 0x1, 0x6D, 0x1, 0x28, 0x52, 0x1, 0x2D, 0x1, 0x73, 0x21, 0x71, 0x71, 0x23, 0xFE, 0x92, 0xFE, 0xD9, 0x52, 0xFE, 0xD3, 0xFE, 0x8F, 0x22, 0x1, 0x37, 0x61, 0x47, 0x1, 0x90, 0x5E, 0x1, 0x9E, 0x49, 0x61, 0x62, 0x22, 0xF7, 0xCF, 0x4B, 0xCE, 0xF9, 0x23, 0x0, 0x2, 0x0, 0x50, 0xFF, 0x88, 0x4, 0x3E, 0x4, 0xB4, 0x0, 0x13, 0x0, 0x23, 0x0, 0x0, 0x5, 0x23, 0x35, 0x26, 0x2, 0x35, 0x35, 0x34, 0x12, 0x37, 0x35, 0x33, 0x15, 0x16, 0x12, 0x15, 0x15, 0x14, 0x2, 0x7, 0x11, 0x15, 0x36, 0x11, 0x34, 0x26, 0x27, 0x15, 0x23, 0x35, 0x6, 0x11, 0x14, 0x16, 0x17, 0x35, 0x2, 0x9F, 0xB7, 0xC2, 0xD6, 0xD8, 0xC2, 0xB8, 0xC4, 0xD8, 0xDA, 0xC5, 0xAC, 0x51, 0x58, 0xB8, 0xA8, 0x50, 0x56, 0x78, 0x6C, 0x20, 0x1, 0x2B, 0xD3, 0x15, 0xD4, 0x1, 0x2C, 0x20, 0x6D, 0x6D, 0x1F, 0xFE, 0xD3, 0xD4, 0x15, 0xD5, 0xFE, 0xD3, 0x1E, 0x1, 0x36, 0x6A, 0x40, 0x1, 0x29, 0x74, 0xBD, 0x22, 0x5F, 0x5F, 0x44, 0xFE, 0xDC, 0x75, 0xB9, 0x23, 0x67, 0x0, 0x3, 0x0, 0x89, 0xFF, 0xEB, 0x6, 0xB6, 0x7, 0x3F, 0x0, 0x11, 0x0, 0x1A, 0x0, 0x45, 0x0, 0x0, 0x1, 0x15, 0x22, 0x26, 0x26, 0x23, 0x22, 0x7, 0x15, 0x23, 0x35, 0x34, 0x36, 0x33, 0x32, 0x16, 0x16, 0x33, 0x1, 0x27, 0x36, 0x35, 0x35, 0x33, 0x15, 0x14, 0x6, 0x1, 0x22, 0x27, 0x6, 0x23, 0x22, 0x24, 0x35, 0x11, 0x34, 0x24, 0x33, 0x15, 0x22, 0x6, 0x15, 0x11, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x11, 0x33, 0x11, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x11, 0x34, 0x26, 0x23, 0x35, 0x32, 0x16, 0x15, 0x11, 0x14, 0x6, 0x5, 0x5F, 0x94, 0xAD, 0x88, 0x38, 0x67, 0x1, 0x86, 0x7D, 0x6D, 0x4E, 0x8E, 0xA1, 0x68, 0xFE, 0x39, 0x52, 0x44, 0xA9, 0x69, 0x1, 0x4B, 0xE4, 0x71, 0x72, 0xE3, 0xC2, 0xFF, 0x0, 0x1, 0x0, 0xC2, 0x57, 0x6E, 0x6E, 0x57, 0x62, 0x78, 0xF5, 0x79, 0x62, 0x56, 0x6F, 0x6F, 0x56, 0xC2, 0xFF, 0xFF, 0x6, 0xC7, 0x86, 0x3C, 0x3C, 0x64, 0x14, 0x25, 0x70, 0x69, 0x3C, 0x3C, 0xFE, 0x4F, 0x39, 0x55, 0x42, 0x5F, 0x66, 0x3A, 0x74, 0xFA, 0xBA, 0x9E, 0x9E, 0xEE, 0xEA, 0x2, 0x14, 0xEA, 0xEF, 0xCB, 0x83, 0x8B, 0xFD, 0xEC, 0x8B, 0x83, 0x79, 0x7F, 0x1, 0x83, 0xFE, 0x7D, 0x7F, 0x79, 0x83, 0x8B, 0x2, 0x14, 0x8B, 0x83, 0xCB, 0xEF, 0xEA, 0xFD, 0xEC, 0xEA, 0xEE, 0x0, 0x3, 0x0, 0x74, 0xFF, 0xEB, 0x5, 0xD2, 0x5, 0xE3, 0x0, 0x12, 0x0, 0x1B, 0x0, 0x46, 0x0, 0x0, 0x1, 0x15, 0x22, 0x26, 0x27, 0x26, 0x23, 0x22, 0x7, 0x15, 0x23, 0x35, 0x34, 0x36, 0x33, 0x32, 0x16, 0x16, 0x33, 0x1, 0x27, 0x36, 0x35, 0x35, 0x33, 0x15, 0x14, 0x6, 0x1, 0x22, 0x27, 0x6, 0x23, 0x22, 0x26, 0x35, 0x35, 0x34, 0x36, 0x33, 0x15, 0x22, 0x6, 0x15, 0x15, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x35, 0x33, 0x15, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x35, 0x34, 0x26, 0x23, 0x35, 0x32, 0x16, 0x15, 0x15, 0x14, 0x6, 0x4, 0xF7, 0x75, 0x84, 0x95, 0x3F, 0x35, 0x68, 0x1, 0x87, 0x7E, 0x6E, 0x4E, 0x8D, 0xA1, 0x68, 0xFE, 0x3E, 0x52, 0x44, 0xA9, 0x69, 0x1, 0x3, 0xC4, 0x61, 0x62, 0xC3, 0xAB, 0xDF, 0xE8, 0xB0, 0x49, 0x5C, 0x54, 0x43, 0x4D, 0x62, 0xEC, 0x63, 0x4C, 0x43, 0x54, 0x5C, 0x49, 0xB0, 0xE8, 0xE0, 0x5, 0x6B, 0x86, 0x1D, 0x40, 0x1B, 0x64, 0x14, 0x25, 0x70, 0x69, 0x3C, 0x3C, 0xFE, 0x4D, 0x39, 0x55, 0x42, 0x5F, 0x66, 0x3A, 0x74, 0xFC, 0x18, 0x92, 0x92, 0xDB, 0xD9, 0xF5, 0xD9, 0xDB, 0xC3, 0x75, 0x7C, 0xF5, 0x7C, 0x75, 0x6C, 0x72, 0xC6, 0xC6, 0x72, 0x6C, 0x75, 0x7C, 0xF5, 0x7C, 0x75, 0xC3, 0xDB, 0xD9, 0xF5, 0xD9, 0xDB, 0x0, 0x2, 0x0, 0x89, 0xFF, 0xEB, 0x6, 0xC2, 0x7, 0x12, 0x0, 0x7, 0x0, 0x25, 0x0, 0x0, 0x1, 0x21, 0x35, 0x21, 0x17, 0x21, 0x15, 0x23, 0x1, 0x22, 0x27, 0x6, 0x23, 0x22, 0x24, 0x35, 0x11, 0x33, 0x11, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x11, 0x21, 0x11, 0x14, 0x16, 0x32, 0x36, 0x35, 0x11, 0x33, 0x11, 0x14, 0x4, 0x3, 0x46, 0xFE, 0xB9, 0x3, 0x54, 0x2, 0xFE, 0xA6, 0xB5, 0x1, 0xB1, 0xE4, 0x6E, 0x71, 0xE9, 0xC2, 0xFF, 0x0, 0xFD, 0x6E, 0x57, 0x62, 0x78, 0x1, 0x1, 0x75, 0xB8, 0x72, 0xFD, 0xFE, 0xFB, 0x6, 0x97, 0x7B, 0x7B, 0x7F, 0xF9, 0xD3, 0xA6, 0xA6, 0xE3, 0xDF, 0x4, 0x3, 0xFB, 0xFD, 0x7F, 0x79, 0x79, 0x7F, 0x4, 0x3, 0xFB, 0xFD, 0x7F, 0x79, 0x79, 0x7F, 0x4, 0x3, 0xFB, 0xFD, 0xDF, 0xE3, 0x0, 0x2, 0x0, 0x70, 0xFF, 0xEB, 0x5, 0xEE, 0x5, 0xB1, 0x0, 0x7, 0x0, 0x25, 0x0, 0x0, 0x1, 0x21, 0x35, 0x21, 0x17, 0x21, 0x15, 0x23, 0x1, 0x22, 0x27, 0x6, 0x23, 0x22, 0x26, 0x35, 0x11, 0x33, 0x11, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x11, 0x33, 0x11, 0x16, 0x33, 0x32, 0x36, 0x35, 0x11, 0x33, 0x11, 0x14, 0x6, 0x2, 0xD0, 0xFE, 0xC7, 0x3, 0x38, 0x5, 0xFE, 0xB1, 0xB5, 0x1, 0x85, 0xC5, 0x61, 0x66, 0xCC, 0xAC, 0xE1, 0xF3, 0x54, 0x46, 0x53, 0x67, 0xF4, 0x2, 0xA8, 0x4B, 0x5B, 0xF3, 0xE7, 0x5, 0x37, 0x7A, 0x7A, 0x7F, 0xFB, 0x33, 0x8F, 0x8F, 0xD1, 0xD0, 0x2, 0xAE, 0xFD, 0x52, 0x72, 0x6C, 0x6C, 0x72, 0x2, 0xAE, 0xFD, 0x4D, 0xD9, 0x6C, 0x72, 0x2, 0xAE, 0xFD, 0x52, 0xD0, 0xD1, 0x0, 0x1, 0x0, 0x67, 0xFE, 0x8B, 0x4, 0xB6, 0x5, 0xC5, 0x0, 0x17, 0x0, 0x0, 0x25, 0x11, 0x23, 0x11, 0x26, 0x2, 0x35, 0x11, 0x10, 0x0, 0x33, 0x32, 0x0, 0x15, 0x23, 0x10, 0x21, 0x22, 0x6, 0x15, 0x11, 0x14, 0x16, 0x33, 0x3, 0x35, 0xFC, 0xD5, 0xFD, 0x1, 0x33, 0xFD, 0xFE, 0x1, 0x21, 0xFC, 0xFE, 0xDD, 0x94, 0xA0, 0xA0, 0x94, 0xB5, 0xFD, 0xD6, 0x1, 0x67, 0x20, 0x1, 0x4A, 0xEF, 0x1, 0x19, 0x1, 0x9, 0x1, 0x58, 0xFE, 0xFB, 0xEC, 0x1, 0x26, 0xEA, 0xAA, 0xFE, 0xE5, 0xAB, 0xEB, 0x0, 0x1, 0x0, 0x5C, 0xFE, 0x88, 0x3, 0xF3, 0x4, 0x4E, 0x0, 0x18, 0x0, 0x0, 0x25, 0x11, 0x23, 0x11, 0x26, 0x2, 0x35, 0x35, 0x34, 0x12, 0x33, 0x32, 0x16, 0x15, 0x23, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x15, 0x14, 0x16, 0x33, 0x2, 0xD5, 0xF2, 0xBF, 0xC8, 0xFB, 0xEC, 0xBF, 0xF1, 0xE4, 0x70, 0x5C, 0x86, 0x6E, 0x6D, 0x88, 0xAE, 0xFD, 0xDA, 0x1, 0x6B, 0x22, 0x1, 0x2F, 0xC8, 0x23, 0xDE, 0x1, 0x41, 0xE4, 0xB3, 0x57, 0x7D, 0xDB, 0x81, 0x24, 0x83, 0xDA, 0x0, 0x1, 0x0, 0x6E, 0x0, 0x0, 0x4, 0x94, 0x5, 0x3E, 0x0, 0x13, 0x0, 0x0, 0x1, 0x3, 0x5, 0x7, 0x25, 0x3, 0x23, 0x13, 0x25, 0x37, 0x5, 0x13, 0x25, 0x37, 0x5, 0x13, 0x33, 0x3, 0x5, 0x7, 0x3, 0x28, 0xCC, 0x1, 0x21, 0x48, 0xFE, 0xDD, 0xB5, 0xAF, 0xE1, 0xFE, 0xDF, 0x47, 0x1, 0x25, 0xCA, 0xFE, 0xDE, 0x49, 0x1, 0x23, 0xB9, 0xAC, 0xE4, 0x1, 0x25, 0x4C, 0x3, 0x29, 0xFE, 0x98, 0xAC, 0x80, 0xAA, 0xFE, 0xC1, 0x1, 0x8E, 0xAB, 0x80, 0xAB, 0x1, 0x68, 0xAB, 0x82, 0xAB, 0x1, 0x46, 0xFE, 0x6B, 0xAB, 0x7F, 0x0, 0x1, 0xFC, 0x65, 0x4, 0xA2, 0xFF, 0x38, 0x5, 0xFD, 0x0, 0x7, 0x0, 0x0, 0x3, 0x21, 0x15, 0x27, 0x37, 0x21, 0x27, 0x17, 0xC8, 0xFD, 0xDF, 0xB2, 0x1, 0x2, 0x22, 0x1, 0xB1, 0x5, 0x20, 0x7E, 0x1, 0xEE, 0x6C, 0x1, 0x0, 0x1, 0xFC, 0x72, 0x5, 0x17, 0xFF, 0x6C, 0x6, 0x15, 0x0, 0x12, 0x0, 0x0, 0x1, 0x32, 0x36, 0x37, 0x36, 0x33, 0x32, 0x16, 0x15, 0x15, 0x23, 0x35, 0x26, 0x23, 0x22, 0x6, 0x6, 0x23, 0x23, 0xFC, 0x72, 0x66, 0x72, 0x9B, 0x4A, 0x4F, 0x6F, 0x7F, 0x88, 0x1, 0x69, 0x39, 0x87, 0xB0, 0x74, 0x24, 0x5, 0x9D, 0x18, 0x41, 0x1F, 0x69, 0x70, 0x25, 0x14, 0x64, 0x3C, 0x3C, 0x0, 0x1, 0xFD, 0x7A, 0x5, 0x17, 0xFE, 0x71, 0x6, 0x61, 0x0, 0x5, 0x0, 0x0, 0x1, 0x27, 0x35, 0x33, 0x7, 0x17, 0xFE, 0x20, 0xA6, 0xBE, 0x1, 0x3A, 0x5, 0x17, 0xC5, 0x85, 0x97, 0x6F, 0x0, 0x1, 0xFD, 0xA5, 0x5, 0x17, 0xFE, 0x9C, 0x6, 0x61, 0x0, 0x5, 0x0, 0x0, 0x1, 0x7, 0x27, 0x37, 0x27, 0x33, 0xFE, 0x9C, 0xA6, 0x51, 0x3A, 0x1, 0xBE, 0x5, 0xDC, 0xC5, 0x44, 0x6F, 0x97, 0x0, 0x1, 0xFC, 0x2D, 0x5, 0x17, 0xFF, 0x63, 0x6, 0x15, 0x0, 0x13, 0x0, 0x0, 0x3, 0x15, 0x23, 0x22, 0x26, 0x26, 0x23, 0x22, 0x6, 0x15, 0x15, 0x23, 0x35, 0x34, 0x36, 0x33, 0x32, 0x16, 0x16, 0x33, 0x9D, 0xB1, 0x44, 0x62, 0x75, 0x5F, 0x30, 0x53, 0x88, 0x93, 0x85, 0x67, 0x82, 0x5F, 0x34, 0x5, 0x9D, 0x86, 0x3C, 0x3C, 0x30, 0x36, 0x12, 0x25, 0x63, 0x76, 0x3C, 0x3C, 0x0, 0x8, 0xFA, 0x24, 0xFE, 0xC4, 0x1, 0xC0, 0x5, 0xAF, 0x0, 0xD, 0x0, 0x1B, 0x0, 0x29, 0x0, 0x37, 0x0, 0x45, 0x0, 0x53, 0x0, 0x61, 0x0, 0x6F, 0x0, 0x0, 0x1, 0x23, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x23, 0x34, 0x26, 0x23, 0x22, 0x6, 0x1, 0x23, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x23, 0x34, 0x26, 0x23, 0x22, 0x6, 0x5, 0x23, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x23, 0x34, 0x26, 0x23, 0x22, 0x6, 0x1, 0x23, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x23, 0x34, 0x26, 0x23, 0x22, 0x6, 0x5, 0x23, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x23, 0x34, 0x26, 0x23, 0x22, 0x6, 0x1, 0x23, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x23, 0x34, 0x26, 0x23, 0x22, 0x6, 0x5, 0x23, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x23, 0x34, 0x26, 0x23, 0x22, 0x6, 0x1, 0x23, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x23, 0x34, 0x26, 0x23, 0x22, 0x6, 0xFD, 0x82, 0x71, 0x70, 0x62, 0x61, 0x72, 0x70, 0x2D, 0x36, 0x35, 0x2C, 0xFD, 0xC4, 0x72, 0x71, 0x62, 0x61, 0x72, 0x70, 0x2D, 0x36, 0x35, 0x2C, 0x4, 0x8C, 0x72, 0x71, 0x61, 0x62, 0x72, 0x71, 0x2C, 0x37, 0x35, 0x2B, 0xFA, 0xC3, 0x71, 0x71, 0x61, 0x62, 0x71, 0x70, 0x2C, 0x37, 0x35, 0x2C, 0x5, 0xF7, 0x71, 0x71, 0x61, 0x62, 0x71, 0x70, 0x2C, 0x37, 0x34, 0x2D, 0xFA, 0xB0, 0x72, 0x71, 0x61, 0x62, 0x72, 0x71, 0x2C, 0x37, 0x35, 0x2B, 0x4, 0x8B, 0x71, 0x71, 0x61, 0x62, 0x71, 0x70, 0x2C, 0x37, 0x35, 0x2C, 0xFD, 0xC0, 0x71, 0x70, 0x62, 0x61, 0x72, 0x70, 0x2D, 0x36, 0x35, 0x2C, 0x4, 0xF3, 0x53, 0x69, 0x69, 0x53, 0x28, 0x3D, 0x3D, 0xFE, 0xC3, 0x53, 0x69, 0x69, 0x53, 0x28, 0x3D, 0x3D, 0x28, 0x53, 0x69, 0x69, 0x53, 0x28, 0x3D, 0x3D, 0xFD, 0xE1, 0x53, 0x69, 0x69, 0x53, 0x28, 0x3D, 0x3D, 0x28, 0x53, 0x69, 0x69, 0x53, 0x28, 0x3D, 0x3D, 0xFD, 0xD1, 0x53, 0x69, 0x69, 0x53, 0x28, 0x3D, 0x3D, 0x28, 0x53, 0x69, 0x69, 0x53, 0x28, 0x3D, 0x3D, 0xFE, 0xBC, 0x52, 0x6A, 0x6A, 0x52, 0x28, 0x3D, 0x3D, 0x0, 0x8, 0xFA, 0x4C, 0xFE, 0x63, 0x1, 0x8C, 0x5, 0xC6, 0x0, 0x4, 0x0, 0x9, 0x0, 0xE, 0x0, 0x13, 0x0, 0x18, 0x0, 0x1D, 0x0, 0x22, 0x0, 0x27, 0x0, 0x0, 0x1, 0x23, 0x27, 0x13, 0x33, 0x1, 0x7, 0x27, 0x3, 0x37, 0x1, 0x27, 0x37, 0x25, 0x17, 0x1, 0x15, 0x7, 0x25, 0x35, 0x5, 0x35, 0x37, 0x5, 0x15, 0x1, 0x37, 0x17, 0x13, 0x7, 0x1, 0x17, 0x7, 0x5, 0x27, 0x25, 0x33, 0x17, 0x3, 0x23, 0xFE, 0x14, 0x88, 0xC, 0x7A, 0x60, 0xFE, 0x12, 0x62, 0x11, 0x94, 0x41, 0x3, 0xFD, 0x61, 0x2, 0x1, 0x41, 0x44, 0xFA, 0xDD, 0xD, 0xFE, 0xB3, 0x5, 0xE6, 0xD, 0x1, 0x4D, 0xFD, 0xDF, 0x61, 0x11, 0x95, 0x42, 0xFC, 0x5, 0x61, 0x2, 0xFE, 0xC0, 0x45, 0x2, 0xB7, 0x89, 0xB, 0x7A, 0x60, 0x4, 0x66, 0xE, 0x1, 0x52, 0xFD, 0xF8, 0x62, 0x2, 0x1, 0x46, 0x45, 0xFE, 0x9E, 0x63, 0x10, 0x99, 0x44, 0xFD, 0xED, 0x8B, 0xC, 0x7C, 0x62, 0x97, 0x8B, 0xC, 0x7C, 0x62, 0xFE, 0x99, 0x63, 0x2, 0xFE, 0xBB, 0x47, 0x1, 0x65, 0x63, 0x11, 0x99, 0x45, 0x14, 0xE, 0xFE, 0xAD, 0xFF, 0xFF, 0x0, 0x95, 0xFE, 0x7D, 0x5, 0xDD, 0x7, 0x25, 0x0, 0x26, 0x2, 0x72, 0x0, 0x0, 0x0, 0x27, 0x1, 0x89, 0x1, 0x1C, 0x1, 0x3E, 0x0, 0x7, 0x0, 0x11, 0x4, 0x80, 0xFF, 0xC5, 0xFF, 0xFF, 0x0, 0x86, 0xFE, 0x7D, 0x4, 0xE4, 0x5, 0xD9, 0x0, 0x26, 0x2, 0x86, 0x0, 0x0, 0x0, 0x27, 0x1, 0x89, 0x0, 0x97, 0xFF, 0xF2, 0x0, 0x7, 0x0, 0x11, 0x3, 0x87, 0xFF, 0xC5, 0x0, 0x2, 0xFF, 0xDF, 0x0, 0x0, 0x4, 0x22, 0x6, 0x63, 0x0, 0x11, 0x0, 0x1A, 0x0, 0x0, 0x24, 0x6, 0x23, 0x21, 0x11, 0x23, 0x35, 0x33, 0x35, 0x33, 0x15, 0x21, 0x15, 0x21, 0x11, 0x33, 0x16, 0x16, 0x1, 0x33, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x23, 0x4, 0x22, 0xE2, 0xD2, 0xFE, 0x20, 0xAF, 0xAF, 0xF3, 0x1, 0x22, 0xFE, 0xDE, 0xF1, 0xD0, 0xE0, 0xFD, 0x5F, 0xED, 0x6A, 0x57, 0x57, 0x6A, 0xED, 0xDF, 0xDF, 0x5, 0x5, 0xAB, 0xB3, 0xB3, 0xAB, 0xFD, 0xFE, 0x1, 0xD7, 0xFE, 0x97, 0x75, 0x49, 0x47, 0x7A, 0x0, 0x2, 0x0, 0x95, 0x0, 0x0, 0x4, 0xDA, 0x5, 0xB0, 0x0, 0xC, 0x0, 0x1B, 0x0, 0x0, 0x1, 0x32, 0x37, 0x27, 0x37, 0x17, 0x36, 0x35, 0x34, 0x26, 0x23, 0x21, 0x11, 0x15, 0x11, 0x23, 0x11, 0x21, 0x32, 0x0, 0x15, 0x14, 0x7, 0x17, 0x7, 0x27, 0x6, 0x23, 0x2, 0xC2, 0x50, 0x39, 0x73, 0x6E, 0x75, 0x1B, 0x81, 0x93, 0xFE, 0xCF, 0xFC, 0x2, 0x2D, 0xFD, 0x1, 0x15, 0x74, 0x7A, 0x6E, 0x88, 0x79, 0xA9, 0x2, 0xE8, 0x16, 0x80, 0x64, 0x81, 0x35, 0x49, 0x66, 0xA0, 0xFE, 0x3, 0xCB, 0xFD, 0xE3, 0x5, 0xB0, 0xFE, 0xFA, 0xC9, 0xC2, 0x75, 0x87, 0x64, 0x96, 0x38, 0x0, 0x2, 0x0, 0x7D, 0xFE, 0x60, 0x4, 0x31, 0x4, 0x4E, 0x0, 0xE, 0x0, 0x22, 0x0, 0x0, 0x25, 0x32, 0x37, 0x27, 0x37, 0x17, 0x36, 0x35, 0x34, 0x26, 0x23, 0x22, 0x7, 0x11, 0x16, 0x17, 0x22, 0x27, 0x11, 0x23, 0x11, 0x33, 0x17, 0x36, 0x33, 0x32, 0x12, 0x15, 0x15, 0x14, 0x7, 0x17, 0x7, 0x27, 0x6, 0x2, 0x48, 0x44, 0x33, 0x6A, 0x6F, 0x58, 0x22, 0x75, 0x83, 0x96, 0x41, 0x43, 0xDA, 0xB1, 0x6C, 0xF2, 0xDF, 0xA, 0x6D, 0xB7, 0xCE, 0xD9, 0x6E, 0x6A, 0x6F, 0x68, 0x58, 0xAF, 0x21, 0x7B, 0x64, 0x66, 0x54, 0x8A, 0x92, 0xCF, 0x7D, 0xFE, 0x23, 0x7F, 0xC3, 0x75, 0xFD, 0xFF, 0x5, 0xDA, 0x6D, 0x81, 0xFE, 0xD0, 0xF8, 0x14, 0xF5, 0x95, 0x7B, 0x63, 0x78, 0x36, 0x0, 0x1, 0x0, 0x90, 0x0, 0x0, 0x4, 0x34, 0x7, 0x10, 0x0, 0x9, 0x0, 0x0, 0x1, 0x11, 0x23, 0x11, 0x21, 0x11, 0x33, 0x11, 0x23, 0x15, 0x1, 0x8C, 0xFC, 0x2, 0xB1, 0xF3, 0x7, 0x4, 0xE5, 0xFB, 0x1B, 0x5, 0xB0, 0x1, 0x60, 0xFD, 0xDD, 0x8, 0x0, 0x1, 0x0, 0x7F, 0x0, 0x0, 0x3, 0x5C, 0x5, 0x74, 0x0, 0x7, 0x0, 0x0, 0x21, 0x23, 0x11, 0x21, 0x11, 0x33, 0x11, 0x21, 0x1, 0x71, 0xF2, 0x1, 0xEA, 0xF3, 0xFE, 0x15, 0x4, 0x3A, 0x1, 0x3A, 0xFE, 0x2, 0x0, 0x1, 0x0, 0x9B, 0xFE, 0xC5, 0x4, 0x9E, 0x5, 0xB0, 0x0, 0x15, 0x0, 0x0, 0x1, 0x27, 0x32, 0x36, 0x35, 0x2, 0x25, 0x23, 0x11, 0x23, 0x11, 0x21, 0x15, 0x21, 0x11, 0x33, 0x16, 0x4, 0x12, 0x15, 0x14, 0x2, 0x2, 0xA1, 0x2, 0xA3, 0x69, 0x2, 0xFE, 0xAB, 0xBD, 0xFC, 0x3, 0x9D, 0xFD, 0x5F, 0xB3, 0xBC, 0x1, 0xD, 0x8B, 0xF3, 0xFE, 0xC5, 0xBB, 0xE5, 0x91, 0x1, 0x7A, 0x9, 0xFD, 0x87, 0x5, 0xB0, 0xCB, 0xFE, 0x5E, 0x1, 0x8D, 0xFF, 0x0, 0xB8, 0xF4, 0xFE, 0xBC, 0x0, 0x1, 0x0, 0x7F, 0xFE, 0xE2, 0x3, 0xDC, 0x4, 0x3A, 0x0, 0x15, 0x0, 0x0, 0x1, 0x27, 0x36, 0x27, 0x34, 0x26, 0x23, 0x23, 0x11, 0x23, 0x11, 0x21, 0x15, 0x21, 0x15, 0x33, 0x16, 0x4, 0x15, 0x16, 0x6, 0x6, 0x2, 0x60, 0x55, 0xDF, 0x2, 0xA1, 0x84, 0x52, 0xF2, 0x2, 0xC8, 0xFE, 0x2A, 0x5A, 0xE7, 0x1, 0x29, 0x1, 0x4D, 0xA7, 0xFE, 0xE2, 0xAD, 0x4C, 0xD4, 0x89, 0x8F, 0xFE, 0x39, 0x4, 0x3A, 0xC4, 0xE5, 0x2, 0xF9, 0xE7, 0x4D, 0xBD, 0xA1, 0xFF, 0xFF, 0x0, 0x17, 0xFE, 0x99, 0x8, 0x6, 0x5, 0xB0, 0x0, 0x26, 0x2, 0x70, 0x0, 0x0, 0x0, 0x7, 0x7, 0xDB, 0x6, 0xB6, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x1E, 0xFE, 0x99, 0x6, 0xB5, 0x4, 0x3A, 0x0, 0x26, 0x2, 0x84, 0x0, 0x0, 0x0, 0x7, 0x7, 0xDB, 0x5, 0x65, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x9B, 0xFE, 0x99, 0x5, 0x80, 0x5, 0xB0, 0x0, 0x26, 0x7, 0xAA, 0x0, 0x0, 0x0, 0x7, 0x7, 0xDB, 0x4, 0x30, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x8F, 0xFE, 0x99, 0x4, 0xC3, 0x4, 0x3A, 0x0, 0x26, 0x2, 0x87, 0x0, 0x0, 0x0, 0x7, 0x7, 0xDB, 0x3, 0x73, 0x0, 0x0, 0x0, 0x1, 0x0, 0x91, 0x0, 0x0, 0x5, 0x36, 0x5, 0xB0, 0x0, 0x14, 0x0, 0x0, 0x1, 0x35, 0x23, 0x11, 0x23, 0x11, 0x33, 0x11, 0x33, 0x35, 0x33, 0x15, 0x33, 0x1, 0x21, 0x1, 0x1, 0x21, 0x1, 0x23, 0x15, 0x1, 0xE6, 0x58, 0xFD, 0xFD, 0x58, 0xA3, 0x38, 0x1, 0x1B, 0x1, 0x32, 0xFE, 0x7D, 0x1, 0xAB, 0xFE, 0xC1, 0xFE, 0xD5, 0x43, 0x1, 0x85, 0xE8, 0xFD, 0x93, 0x5, 0xB0, 0xFD, 0x9A, 0xFF, 0xFF, 0x2, 0x66, 0xFD, 0x5B, 0xFC, 0xF5, 0x2, 0x6D, 0xE8, 0x0, 0x1, 0x0, 0x8E, 0x0, 0x0, 0x4, 0xAF, 0x4, 0x3A, 0x0, 0x14, 0x0, 0x0, 0x25, 0x35, 0x23, 0x11, 0x23, 0x11, 0x33, 0x11, 0x33, 0x35, 0x33, 0x15, 0x33, 0x13, 0x21, 0x1, 0x1, 0x21, 0x3, 0x23, 0x15, 0x1, 0xD7, 0x56, 0xF3, 0xF3, 0x56, 0x9C, 0x27, 0xCF, 0x1, 0x2C, 0xFE, 0xC3, 0x1, 0x57, 0xFE, 0xCB, 0xD9, 0x2E, 0xFA, 0xB3, 0xFE, 0x53, 0x4, 0x3A, 0xFE, 0x51, 0xC7, 0xC7, 0x1, 0xAF, 0xFD, 0xFE, 0xFD, 0xC8, 0x1, 0xAD, 0xB3, 0x0, 0x1, 0x0, 0x34, 0x0, 0x0, 0x6, 0xA3, 0x5, 0xB0, 0x0, 0xE, 0x0, 0x0, 0x21, 0x1, 0x23, 0x11, 0x23, 0x11, 0x21, 0x35, 0x21, 0x11, 0x33, 0x1, 0x21, 0x1, 0x1, 0x5, 0x73, 0xFE, 0x43, 0xAC, 0xFD, 0xFE, 0x27, 0x2, 0xD6, 0x8A, 0x1, 0xAD, 0x1, 0x36, 0xFE, 0xD, 0x2, 0x1F, 0x2, 0x70, 0xFD, 0x90, 0x4, 0xED, 0xC3, 0xFD, 0x9D, 0x2, 0x63, 0xFD, 0x47, 0xFD, 0x9, 0x0, 0x1, 0x0, 0x3E, 0x0, 0x0, 0x5, 0xA9, 0x4, 0x3A, 0x0, 0xE, 0x0, 0x0, 0x21, 0x1, 0x23, 0x11, 0x23, 0x11, 0x21, 0x35, 0x21, 0x11, 0x33, 0x1, 0x21, 0x1, 0x1, 0x4, 0x6D, 0xFE, 0xD4, 0x7B, 0xF3, 0xFE, 0x6B, 0x2, 0x88, 0x6B, 0x1, 0x2B, 0x1, 0x2C, 0xFE, 0x79, 0x1, 0xA8, 0x1, 0xAD, 0xFE, 0x53, 0x3, 0x76, 0xC4, 0xFE, 0x51, 0x1, 0xAF, 0xFD, 0xFA, 0xFD, 0xCC, 0xFF, 0xFF, 0x0, 0x95, 0xFE, 0x99, 0x5, 0xDC, 0x5, 0xB0, 0x0, 0x26, 0x0, 0x2D, 0x0, 0x0, 0x0, 0x7, 0x7, 0xDB, 0x4, 0x8C, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x86, 0xFE, 0x99, 0x4, 0xD6, 0x4, 0x3A, 0x0, 0x26, 0x2, 0x8A, 0x0, 0x0, 0x0, 0x7, 0x7, 0xDB, 0x3, 0x86, 0x0, 0x0, 0x0, 0x1, 0x0, 0x95, 0x0, 0x0, 0x7, 0x84, 0x5, 0xB0, 0x0, 0xD, 0x0, 0x0, 0x21, 0x11, 0x21, 0x11, 0x23, 0x11, 0x33, 0x11, 0x21, 0x11, 0x21, 0x15, 0x21, 0x11, 0x4, 0x1C, 0xFD, 0x75, 0xFC, 0xFC, 0x2, 0x8B, 0x3, 0x68, 0xFD, 0x95, 0x2, 0x88, 0xFD, 0x78, 0x5, 0xB0, 0xFD, 0xA2, 0x2, 0x5E, 0xC3, 0xFB, 0x13, 0x0, 0x1, 0x0, 0x7F, 0x0, 0x0, 0x5, 0x67, 0x4, 0x3A, 0x0, 0xD, 0x0, 0x0, 0x21, 0x11, 0x21, 0x11, 0x23, 0x11, 0x33, 0x11, 0x21, 0x11, 0x21, 0x15, 0x21, 0x11, 0x3, 0x16, 0xFE, 0x5B, 0xF2, 0xF2, 0x1, 0xA5, 0x2, 0x51, 0xFE, 0xA2, 0x1, 0xB5, 0xFE, 0x4B, 0x4, 0x3A, 0xFE, 0x3D, 0x1, 0xC3, 0xC4, 0xFC, 0x8A, 0x0, 0x1, 0x0, 0x9B, 0xFE, 0xC3, 0x7, 0xF0, 0x5, 0xB0, 0x0, 0x16, 0x0, 0x0, 0x1, 0x27, 0x32, 0x36, 0x35, 0x2, 0x25, 0x23, 0x11, 0x23, 0x11, 0x21, 0x11, 0x23, 0x11, 0x21, 0x11, 0x33, 0x4, 0x0, 0x11, 0x14, 0x2, 0x5, 0xF3, 0x2, 0xA3, 0x69, 0x2, 0xFE, 0xAB, 0x91, 0xFD, 0xFD, 0x7F, 0xFC, 0x4, 0x7A, 0x88, 0x1, 0x14, 0x1, 0x3F, 0xF3, 0xFE, 0xC3, 0xBB, 0xE5, 0x91, 0x1, 0x7A, 0x9, 0xFD, 0x89, 0x4, 0xE5, 0xFB, 0x1B, 0x5, 0xB0, 0xFD, 0x91, 0x2, 0xFE, 0xD3, 0xFE, 0xE9, 0xF4, 0xFE, 0xBC, 0x0, 0x1, 0x0, 0x7F, 0xFE, 0xE5, 0x6, 0xBB, 0x4, 0x3A, 0x0, 0x17, 0x0, 0x0, 0x1, 0x27, 0x36, 0x35, 0x26, 0x26, 0x23, 0x23, 0x11, 0x23, 0x11, 0x21, 0x11, 0x23, 0x11, 0x21, 0x11, 0x33, 0x16, 0x4, 0x15, 0x14, 0x6, 0x6, 0x5, 0x3F, 0x55, 0xDE, 0x1, 0xAB, 0x8E, 0x83, 0xF3, 0xFE, 0x59, 0xF2, 0x3, 0x8C, 0x8E, 0xF0, 0x1, 0x32, 0x4C, 0xA7, 0xFE, 0xE5, 0xAE, 0x4A, 0xD5, 0x89, 0x8F, 0xFE, 0x36, 0x3, 0x76, 0xFC, 0x8A, 0x4, 0x3A, 0xFE, 0x5B, 0x3, 0xF9, 0xE7, 0x4D, 0xBD, 0xA1, 0x0, 0x2, 0x0, 0x67, 0xFF, 0xEA, 0x5, 0xD8, 0x5, 0xC5, 0x0, 0x23, 0x0, 0x2E, 0x0, 0x0, 0x5, 0x22, 0x27, 0x6, 0x23, 0x20, 0x0, 0x11, 0x35, 0x10, 0x0, 0x33, 0x15, 0x22, 0x6, 0x15, 0x15, 0x14, 0x12, 0x33, 0x32, 0x37, 0x26, 0x11, 0x35, 0x34, 0x12, 0x33, 0x32, 0x12, 0x15, 0x15, 0x10, 0x7, 0x16, 0x33, 0x1, 0x10, 0x17, 0x36, 0x37, 0x35, 0x10, 0x23, 0x22, 0x6, 0x15, 0x5, 0xD8, 0xDE, 0xB6, 0x96, 0xB4, 0xFE, 0xE0, 0xFE, 0x8D, 0x1, 0xE, 0xDC, 0x6B, 0x79, 0xD4, 0xB9, 0x2E, 0x2B, 0xE1, 0xE8, 0xBD, 0xC4, 0xF1, 0xBA, 0x5C, 0x6A, 0xFD, 0x8E, 0xC8, 0xA1, 0x1, 0xB9, 0x53, 0x5E, 0x16, 0x48, 0x47, 0x1, 0x86, 0x1, 0x35, 0xB2, 0x1, 0x7, 0x1, 0x66, 0xD4, 0xE9, 0xAE, 0xBE, 0xCD, 0xFE, 0xEF, 0x7, 0xCB, 0x1, 0x3E, 0xD0, 0xE9, 0x1, 0x3D, 0xFE, 0xBD, 0xFD, 0xCD, 0xFE, 0xD8, 0xC8, 0x14, 0x2, 0x19, 0xFE, 0xF0, 0x92, 0x8D, 0xFD, 0xE4, 0x1, 0x59, 0xB0, 0xA0, 0x0, 0x2, 0x0, 0x61, 0xFF, 0xEB, 0x4, 0xC9, 0x4, 0x4F, 0x0, 0xA, 0x0, 0x2D, 0x0, 0x0, 0x1, 0x14, 0x17, 0x36, 0x35, 0x35, 0x34, 0x26, 0x22, 0x6, 0x15, 0x1, 0x22, 0x27, 0x6, 0x23, 0x22, 0x0, 0x35, 0x35, 0x34, 0x12, 0x33, 0x15, 0x6, 0x6, 0x15, 0x15, 0x14, 0x16, 0x33, 0x37, 0x26, 0x27, 0x35, 0x34, 0x36, 0x33, 0x32, 0x12, 0x15, 0x15, 0x14, 0x7, 0x16, 0x33, 0x2, 0xD8, 0x78, 0x62, 0x38, 0x6A, 0x38, 0x1, 0xF1, 0xBA, 0x93, 0x78, 0x91, 0xEE, 0xFE, 0xDC, 0xD7, 0xAF, 0x41, 0x4B, 0x96, 0x82, 0x25, 0x8E, 0x1, 0xB3, 0x97, 0x9B, 0xB7, 0x80, 0x4C, 0x58, 0x2, 0x22, 0xAA, 0x6C, 0x62, 0xA5, 0x80, 0x65, 0x8D, 0x7E, 0x61, 0xFD, 0x47, 0x37, 0x39, 0x1, 0x4A, 0xF3, 0x4B, 0xCB, 0x1, 0x10, 0xCA, 0x4, 0x96, 0x75, 0x4D, 0x9E, 0xD4, 0x2, 0x95, 0xDA, 0x83, 0xB6, 0xEF, 0xFE, 0xFB, 0xC1, 0x7D, 0xD3, 0x95, 0x11, 0xFF, 0xFF, 0x0, 0x29, 0xFE, 0x99, 0x5, 0x23, 0x5, 0xB0, 0x0, 0x26, 0x0, 0x3D, 0x0, 0x0, 0x0, 0x7, 0x7, 0xDB, 0x3, 0xD3, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x1F, 0xFE, 0x99, 0x4, 0x28, 0x4, 0x3A, 0x0, 0x26, 0x0, 0x5D, 0x0, 0x0, 0x0, 0x7, 0x7, 0xDB, 0x2, 0xD8, 0x0, 0x0, 0x0, 0x1, 0x0, 0x2E, 0xFE, 0xA1, 0x6, 0xB8, 0x5, 0xB0, 0x0, 0xF, 0x0, 0x0, 0x25, 0x3, 0x23, 0x11, 0x21, 0x11, 0x21, 0x35, 0x21, 0x15, 0x21, 0x11, 0x21, 0x11, 0x33, 0x11, 0x6, 0xB8, 0x14, 0xE7, 0xFB, 0xD1, 0xFE, 0xA0, 0x3, 0xBD, 0xFE, 0x9F, 0x2, 0x81, 0xFD, 0xCD, 0xFD, 0xD4, 0x1, 0x5F, 0x4, 0xED, 0xC3, 0xC3, 0xFB, 0xDD, 0x4, 0xE6, 0xFB, 0x1D, 0x0, 0x1, 0x0, 0x26, 0xFE, 0xBF, 0x5, 0x3B, 0x4, 0x3B, 0x0, 0xF, 0x0, 0x0, 0x25, 0x3, 0x23, 0x11, 0x21, 0x11, 0x23, 0x35, 0x21, 0x15, 0x23, 0x11, 0x21, 0x11, 0x33, 0x11, 0x5, 0x3B, 0x14, 0xDD, 0xFC, 0xD2, 0xF6, 0x2, 0xC4, 0xDC, 0x1, 0xA7, 0xF3, 0xC2, 0xFD, 0xFD, 0x1, 0x41, 0x3, 0x77, 0xC4, 0xC4, 0xFD, 0x4C, 0x3, 0x77, 0xFC, 0x88, 0xFF, 0xFF, 0x0, 0x8E, 0xFE, 0x99, 0x5, 0xAE, 0x5, 0xB0, 0x0, 0x26, 0x2, 0x77, 0x0, 0x0, 0x0, 0x7, 0x7, 0xDB, 0x4, 0x5E, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x5F, 0xFE, 0x99, 0x4, 0xA6, 0x4, 0x3B, 0x0, 0x26, 0x2, 0x8F, 0x0, 0x0, 0x0, 0x7, 0x7, 0xDB, 0x3, 0x56, 0x0, 0x0, 0x0, 0x1, 0x0, 0x81, 0x0, 0x0, 0x4, 0xE1, 0x5, 0xB0, 0x0, 0x17, 0x0, 0x0, 0x21, 0x23, 0x11, 0x6, 0x7, 0x15, 0x23, 0x35, 0x26, 0x24, 0x35, 0x11, 0x33, 0x11, 0x14, 0x16, 0x17, 0x11, 0x33, 0x11, 0x36, 0x37, 0x11, 0x33, 0x4, 0xE1, 0xFC, 0x61, 0x6F, 0xA3, 0xE7, 0xFE, 0xF6, 0xFC, 0x7A, 0x7B, 0xA3, 0x6E, 0x62, 0xFC, 0x2, 0x3E, 0x19, 0xA, 0xEB, 0xE5, 0x7, 0xDA, 0xF1, 0x1, 0xC9, 0xFE, 0x37, 0x91, 0x70, 0x5, 0x1, 0x2A, 0xFE, 0xDC, 0xB, 0x17, 0x2, 0xA7, 0x0, 0x1, 0x0, 0x74, 0x0, 0x0, 0x3, 0xF6, 0x4, 0x3B, 0x0, 0x16, 0x0, 0x0, 0x21, 0x23, 0x11, 0x6, 0x7, 0x15, 0x23, 0x35, 0x26, 0x26, 0x35, 0x11, 0x33, 0x11, 0x14, 0x17, 0x11, 0x33, 0x11, 0x36, 0x37, 0x11, 0x33, 0x3, 0xF6, 0xF4, 0x3A, 0x3B, 0xA4, 0xAD, 0xC8, 0xF3, 0x82, 0xA4, 0x3A, 0x3B, 0xF4, 0x1, 0x6A, 0xD, 0x5, 0x8C, 0x8C, 0x13, 0xC8, 0xBC, 0x1, 0x4C, 0xFE, 0xB4, 0xAF, 0x20, 0x1, 0xB, 0xFE, 0xF0, 0x5, 0xE, 0x2, 0xC, 0x0, 0x1, 0x0, 0x85, 0x0, 0x0, 0x4, 0xE5, 0x5, 0xB0, 0x0, 0x11, 0x0, 0x0, 0x1, 0x22, 0x7, 0x11, 0x23, 0x11, 0x33, 0x11, 0x36, 0x33, 0x32, 0x4, 0x15, 0x11, 0x23, 0x11, 0x26, 0x26, 0x2, 0xD3, 0xA9, 0xA9, 0xFC, 0xFC, 0x9E, 0xB4, 0xF6, 0x1, 0x1C, 0xFC, 0x1, 0x89, 0x2, 0xD0, 0x29, 0xFD, 0x59, 0x5, 0xB0, 0xFD, 0xC2, 0x29, 0xD9, 0xF9, 0xFE, 0x37, 0x1, 0xCE, 0x97, 0x6B, 0x0, 0x2, 0x0, 0x17, 0xFF, 0xE9, 0x5, 0xBD, 0x5, 0xC4, 0x0, 0x7, 0x0, 0x25, 0x0, 0x0, 0x1, 0x21, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x1, 0x6, 0x6, 0x23, 0x20, 0x0, 0x11, 0x35, 0x26, 0x26, 0x35, 0x33, 0x14, 0x17, 0x36, 0x12, 0x24, 0x17, 0x20, 0x0, 0x11, 0x15, 0x21, 0x15, 0x14, 0x16, 0x33, 0x32, 0x36, 0x37, 0x2, 0x55, 0x2, 0x6C, 0x85, 0xA9, 0x9B, 0xA3, 0x3, 0x16, 0x1F, 0xC9, 0xA7, 0xFE, 0xC5, 0xFE, 0xB7, 0x9D, 0xA4, 0xB5, 0x8C, 0x1, 0x99, 0x1, 0x2, 0x9F, 0x1, 0x13, 0x1, 0x17, 0xFC, 0x98, 0xB1, 0xD6, 0x7C, 0xAC, 0x36, 0x3, 0x55, 0x1F, 0x9E, 0xDB, 0xED, 0xFC, 0x3F, 0x12, 0x44, 0x1, 0x62, 0x1, 0x14, 0x45, 0x18, 0xD7, 0xA7, 0xB4, 0x2A, 0xB5, 0x1, 0x16, 0x9D, 0x1, 0xFE, 0x91, 0xFE, 0xC9, 0x88, 0x36, 0xAC, 0xF5, 0x31, 0x16, 0x0, 0x2, 0xFF, 0xCA, 0xFF, 0xEC, 0x4, 0x8B, 0x4, 0x4E, 0x0, 0x7, 0x0, 0x21, 0x0, 0x0, 0x1, 0x22, 0x6, 0x7, 0x21, 0x35, 0x26, 0x26, 0x1, 0x6, 0x6, 0x23, 0x22, 0x0, 0x27, 0x26, 0x26, 0x35, 0x33, 0x14, 0x17, 0x36, 0x24, 0x33, 0x32, 0x12, 0x15, 0x15, 0x21, 0x16, 0x16, 0x33, 0x32, 0x37, 0x2, 0xBC, 0x63, 0x7B, 0x11, 0x1, 0xCE, 0x4, 0x61, 0x1, 0x44, 0x34, 0xCC, 0xA1, 0xED, 0xFE, 0xEC, 0x4, 0x83, 0x87, 0xAA, 0x69, 0x21, 0x1, 0xA, 0xB5, 0xEC, 0xE2, 0xFD, 0x3D, 0xA, 0x95, 0x80, 0xA8, 0x68, 0x3, 0x8B, 0x8C, 0x7C, 0x12, 0x5F, 0x97, 0xFD, 0x2D, 0x4C, 0x80, 0x1, 0x25, 0xDA, 0x1E, 0xBF, 0x93, 0x95, 0x30, 0xCD, 0xEB, 0xFE, 0xD4, 0xEA, 0x67, 0x7D, 0xA5, 0x86, 0x0, 0x1, 0x0, 0x91, 0xFE, 0xBE, 0x4, 0xEE, 0x5, 0xB0, 0x0, 0x18, 0x0, 0x0, 0x1, 0x27, 0x32, 0x36, 0x36, 0x27, 0x10, 0x25, 0x21, 0x35, 0x23, 0x11, 0x23, 0x11, 0x33, 0x11, 0x33, 0x1, 0x21, 0x1, 0x16, 0x0, 0x15, 0x14, 0x2, 0x2, 0xEA, 0x1, 0x6D, 0x72, 0x2A, 0x1, 0xFE, 0xB0, 0xFE, 0xF5, 0x8, 0xFD, 0xFD, 0x70, 0x1, 0xB3, 0x1, 0x31, 0xFE, 0x23, 0xE4, 0x1, 0x5, 0xF3, 0xFE, 0xBE, 0xC2, 0x6D, 0xA9, 0x5B, 0x1, 0x78, 0x8, 0x1, 0xFD, 0x8E, 0x5, 0xB0, 0xFD, 0xA5, 0x2, 0x5B, 0xFD, 0x8B, 0x1D, 0xFE, 0xDA, 0xFE, 0xEE, 0xFE, 0xB2, 0x0, 0x1, 0x0, 0x8E, 0xFE, 0xE9, 0x4, 0x43, 0x4, 0x3A, 0x0, 0x15, 0x0, 0x0, 0x1, 0x27, 0x36, 0x35, 0x2, 0x21, 0x23, 0x11, 0x23, 0x11, 0x33, 0x11, 0x33, 0x1, 0x21, 0x1, 0x16, 0x16, 0x15, 0x14, 0x6, 0x6, 0x2, 0xBE, 0x55, 0xDE, 0x2, 0xFE, 0xBE, 0x82, 0xF3, 0xF3, 0x54, 0x1, 0x42, 0x1, 0x2C, 0xFE, 0x8B, 0xA5, 0xC6, 0x4C, 0xA7, 0xFE, 0xE9, 0xAD, 0x49, 0xC9, 0x1, 0x5, 0xFE, 0x53, 0x4, 0x3A, 0xFE, 0x51, 0x1, 0xAF, 0xFE, 0x28, 0x26, 0xDC, 0xB8, 0x4B, 0xB7, 0x9B, 0xFF, 0xFF, 0x0, 0x2D, 0xFE, 0x7D, 0x5, 0xDB, 0x5, 0xB0, 0x0, 0x26, 0x2, 0x73, 0x0, 0x0, 0x0, 0x7, 0x0, 0x11, 0x4, 0x7E, 0xFF, 0xC5, 0xFF, 0xFF, 0x0, 0x22, 0xFE, 0x7D, 0x4, 0xE5, 0x4, 0x3A, 0x0, 0x26, 0x2, 0x88, 0x0, 0x0, 0x0, 0x7, 0x0, 0x11, 0x3, 0x88, 0xFF, 0xC5, 0x0, 0x1, 0x0, 0x9B, 0xFE, 0x4B, 0x5, 0x13, 0x5, 0xB0, 0x0, 0x14, 0x0, 0x0, 0x13, 0x33, 0x11, 0x21, 0x11, 0x33, 0x11, 0x14, 0x6, 0x23, 0x22, 0x27, 0x37, 0x16, 0x33, 0x32, 0x37, 0x11, 0x21, 0x11, 0x23, 0x9B, 0xFC, 0x2, 0x80, 0xFC, 0xBF, 0xA7, 0x46, 0x3C, 0xE, 0x2A, 0x39, 0x7A, 0x1, 0xFD, 0x80, 0xFC, 0x5, 0xB0, 0xFD, 0x83, 0x2, 0x7D, 0xFA, 0x17, 0xB9, 0xC3, 0x11, 0xC7, 0xD, 0xAE, 0x2, 0xA5, 0xFD, 0x97, 0x0, 0x1, 0x0, 0x7F, 0xFE, 0x4B, 0x4, 0x9, 0x4, 0x3A, 0x0, 0x14, 0x0, 0x0, 0x13, 0x33, 0x11, 0x21, 0x11, 0x33, 0x11, 0x14, 0x6, 0x23, 0x22, 0x27, 0x37, 0x16, 0x33, 0x32, 0x37, 0x11, 0x21, 0x11, 0x23, 0x7F, 0xF2, 0x1, 0xA5, 0xF3, 0xBC, 0xA4, 0x45, 0x3A, 0xE, 0x29, 0x39, 0x7B, 0x1, 0xFE, 0x5B, 0xF2, 0x4, 0x3A, 0xFE, 0x3D, 0x1, 0xC3, 0xFB, 0x87, 0xB6, 0xC0, 0x11, 0xBF, 0xD, 0xB0, 0x1, 0xF7, 0xFE, 0x4B, 0xFF, 0xFF, 0x0, 0x95, 0xFE, 0x7D, 0x5, 0xE8, 0x5, 0xB0, 0x0, 0x26, 0x0, 0x2D, 0x0, 0x0, 0x0, 0x7, 0x0, 0x11, 0x4, 0x8B, 0xFF, 0xC5, 0xFF, 0xFF, 0x0, 0x86, 0xFE, 0x7D, 0x4, 0xE2, 0x4, 0x3A, 0x0, 0x26, 0x2, 0x8A, 0x0, 0x0, 0x0, 0x7, 0x0, 0x11, 0x3, 0x85, 0xFF, 0xC5, 0xFF, 0xFF, 0x0, 0x95, 0xFE, 0x7D, 0x7, 0x31, 0x5, 0xB0, 0x0, 0x26, 0x0, 0x32, 0x0, 0x0, 0x0, 0x7, 0x0, 0x11, 0x5, 0xD4, 0xFF, 0xC5, 0xFF, 0xFF, 0x0, 0x8F, 0xFE, 0x7D, 0x6, 0x41, 0x4, 0x3A, 0x0, 0x26, 0x2, 0x89, 0x0, 0x0, 0x0, 0x7, 0x0, 0x11, 0x4, 0xE4, 0xFF, 0xC5, 0x0, 0x2, 0x0, 0x51, 0xFF, 0xEB, 0x5, 0x1E, 0x5, 0xC4, 0x0, 0x16, 0x0, 0x1E, 0x0, 0x0, 0x1, 0x14, 0x2, 0x4, 0x27, 0x20, 0x0, 0x11, 0x35, 0x21, 0x26, 0x2, 0x23, 0x22, 0x6, 0x7, 0x27, 0x36, 0x36, 0x33, 0x20, 0x0, 0x11, 0x1, 0x32, 0x36, 0x37, 0x21, 0x15, 0x14, 0x16, 0x5, 0x1E, 0xA4, 0xFE, 0xEA, 0xAC, 0xFE, 0xD0, 0xFE, 0xC9, 0x3, 0xD1, 0x3, 0xC6, 0xE7, 0x83, 0xB6, 0x39, 0x31, 0x20, 0xD4, 0xAF, 0x1, 0x4F, 0x1, 0x5D, 0xFD, 0x9A, 0xA1, 0xB7, 0xF, 0xFD, 0x2F, 0xA0, 0x2, 0x9B, 0xCB, 0xFE, 0xCA, 0xAF, 0x1, 0x1, 0x6E, 0x1, 0x36, 0x8E, 0xC1, 0x1, 0xF, 0x30, 0x16, 0xC5, 0x13, 0x44, 0xFE, 0x7D, 0xFE, 0xCF, 0xFD, 0xB1, 0xEB, 0xAC, 0x1F, 0x9D, 0xDB, 0x0, 0x1, 0x0, 0x5C, 0xFF, 0xEB, 0x4, 0x4B, 0x5, 0xB0, 0x0, 0x1B, 0x0, 0x0, 0x5, 0x22, 0x26, 0x26, 0x35, 0x33, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x23, 0x35, 0x1, 0x21, 0x35, 0x21, 0x17, 0x1, 0x16, 0x16, 0x15, 0x14, 0x4, 0x2, 0x47, 0x78, 0xE2, 0x91, 0xFC, 0x82, 0x6D, 0x7E, 0x8A, 0x98, 0x92, 0x8C, 0x1, 0x66, 0xFD, 0x93, 0x3, 0x91, 0x1, 0xFE, 0x86, 0xC7, 0xDA, 0xFE, 0xDD, 0x15, 0x58, 0xBC, 0x95, 0x5B, 0x84, 0x82, 0x61, 0x95, 0x84, 0xAD, 0x1, 0x87, 0xCB, 0xA3, 0xFE, 0x51, 0x19, 0xE9, 0xC4, 0xCD, 0xE0, 0x0, 0x1, 0x0, 0x5E, 0xFE, 0x75, 0x4, 0x46, 0x4, 0x3A, 0x0, 0x1B, 0x0, 0x0, 0x1, 0x22, 0x26, 0x26, 0x35, 0x33, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x23, 0x35, 0x1, 0x21, 0x35, 0x21, 0x17, 0x1, 0x16, 0x16, 0x15, 0x14, 0x4, 0x2, 0x46, 0x77, 0xE1, 0x90, 0xF3, 0x85, 0x70, 0x80, 0x8E, 0x9B, 0x93, 0x8E, 0x1, 0x5C, 0xFD, 0x9B, 0x3, 0x8D, 0x1, 0xFE, 0x89, 0xC7, 0xD9, 0xFE, 0xDF, 0xFE, 0x75, 0x58, 0xBB, 0x95, 0x5E, 0x87, 0x85, 0x64, 0x97, 0x82, 0xAB, 0x1, 0x91, 0xC4, 0x9B, 0xFE, 0x44, 0x18, 0xE7, 0xC3, 0xCC, 0xE0, 0xFF, 0xFF, 0x0, 0x32, 0xFE, 0x4B, 0x4, 0x8A, 0x5, 0xB0, 0x0, 0x26, 0x2, 0x30, 0x52, 0x0, 0x0, 0x26, 0x7, 0xA4, 0xA2, 0x29, 0x0, 0x7, 0x7, 0xE3, 0x1, 0x35, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x2C, 0xFE, 0x47, 0x3, 0xA2, 0x4, 0x3A, 0x0, 0x26, 0x2, 0x82, 0x55, 0x0, 0x0, 0x27, 0x7, 0xA4, 0xFF, 0x9C, 0xFF, 0x79, 0x0, 0x7, 0x7, 0xE3, 0x1, 0xB, 0xFF, 0xFC, 0xFF, 0xFF, 0x0, 0x29, 0xFE, 0x4B, 0x5, 0x51, 0x5, 0xB0, 0x0, 0x26, 0x0, 0x3D, 0x0, 0x0, 0x0, 0x7, 0x7, 0xE3, 0x3, 0xC3, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x1F, 0xFE, 0x4B, 0x4, 0x55, 0x4, 0x3A, 0x0, 0x26, 0x0, 0x5D, 0x0, 0x0, 0x0, 0x7, 0x7, 0xE3, 0x2, 0xC7, 0x0, 0x0, 0x0, 0x2, 0x0, 0x52, 0x0, 0x0, 0x4, 0x83, 0x5, 0xB0, 0x0, 0xA, 0x0, 0x12, 0x0, 0x0, 0x21, 0x21, 0x22, 0x0, 0x35, 0x34, 0x0, 0x33, 0x21, 0x11, 0x33, 0x3, 0x11, 0x21, 0x22, 0x6, 0x14, 0x16, 0x33, 0x4, 0x83, 0xFD, 0xDA, 0xF7, 0xFE, 0xEC, 0x1, 0x14, 0xF7, 0x1, 0x29, 0xFD, 0xFD, 0xFE, 0xD7, 0x8D, 0x81, 0x81, 0x8D, 0x1, 0x8, 0xC8, 0xCA, 0x1, 0x2, 0x2, 0x14, 0xFB, 0x1A, 0x2, 0x7, 0x9A, 0xCA, 0xA3, 0x0, 0x2, 0x0, 0x68, 0x0, 0x0, 0x6, 0xB0, 0x5, 0xB0, 0x0, 0x7, 0x0, 0x20, 0x0, 0x0, 0x25, 0x11, 0x21, 0x22, 0x6, 0x14, 0x16, 0x33, 0x15, 0x22, 0x0, 0x35, 0x34, 0x0, 0x33, 0x21, 0x11, 0x33, 0x11, 0x37, 0x36, 0x36, 0x37, 0x36, 0x26, 0x27, 0x33, 0x16, 0x16, 0x7, 0x6, 0x6, 0x23, 0x3, 0x9C, 0xFE, 0xD7, 0x8D, 0x81, 0x81, 0x8D, 0xF7, 0xFE, 0xEC, 0x1, 0x14, 0xF7, 0x1, 0x29, 0xFD, 0x4A, 0x6C, 0x60, 0x3, 0x2, 0x20, 0x1E, 0xF5, 0x1A, 0x2B, 0x2, 0x4, 0xF8, 0xCF, 0xCA, 0x2, 0x7, 0x9A, 0xCA, 0xA3, 0xCA, 0x1, 0x8, 0xC8, 0xCA, 0x1, 0x2, 0x2, 0x14, 0xFB, 0x1A, 0x1, 0x2, 0xA0, 0x66, 0x4D, 0xD5, 0x4D, 0x4D, 0xD2, 0x50, 0xD7, 0xFC, 0x0, 0x2, 0x0, 0x5F, 0xFF, 0xE7, 0x6, 0x7E, 0x6, 0x18, 0x0, 0x1E, 0x0, 0x2A, 0x0, 0x0, 0x5, 0x6, 0x27, 0x6, 0x23, 0x22, 0x2, 0x35, 0x35, 0x34, 0x12, 0x33, 0x32, 0x17, 0x11, 0x33, 0x11, 0x14, 0x16, 0x33, 0x36, 0x36, 0x37, 0x36, 0x27, 0x33, 0x16, 0x16, 0x7, 0x2, 0x0, 0x25, 0x32, 0x37, 0x27, 0x11, 0x26, 0x23, 0x22, 0x6, 0x15, 0x14, 0x16, 0x4, 0x90, 0xFF, 0x57, 0x69, 0xCD, 0xCA, 0xDB, 0xDA, 0xCD, 0xA2, 0x65, 0xF3, 0x4E, 0x42, 0x77, 0x7F, 0x3, 0x3, 0x3F, 0xEC, 0x1B, 0x2A, 0x2, 0x4, 0xFE, 0xDB, 0xFC, 0xEF, 0x8A, 0x48, 0x7, 0x47, 0x82, 0x84, 0x6F, 0x6E, 0x15, 0x4, 0xB7, 0xB3, 0x1, 0x28, 0xE8, 0x14, 0xFC, 0x1, 0x43, 0x77, 0x2, 0x41, 0xFB, 0x4C, 0x4F, 0x66, 0x2, 0xBE, 0xA2, 0xC2, 0xD1, 0x61, 0xCB, 0x67, 0xFE, 0xEA, 0xFE, 0xF0, 0xC7, 0x71, 0x45, 0x1, 0xB8, 0x68, 0xDD, 0xB1, 0x8B, 0xBD, 0x0, 0x1, 0x0, 0x3C, 0xFF, 0xE8, 0x5, 0xE4, 0x5, 0xB0, 0x0, 0x2A, 0x0, 0x0, 0x5, 0x6, 0x26, 0x27, 0x35, 0x34, 0x26, 0x23, 0x23, 0x35, 0x33, 0x36, 0x36, 0x35, 0x34, 0x26, 0x23, 0x21, 0x35, 0x21, 0x16, 0x4, 0x15, 0x14, 0x7, 0x16, 0x16, 0x15, 0x15, 0x6, 0x16, 0x33, 0x36, 0x36, 0x37, 0x36, 0x27, 0x33, 0x16, 0x16, 0x7, 0x2, 0x0, 0x4, 0x2, 0x9F, 0xBA, 0x8, 0x79, 0x68, 0xD9, 0xA6, 0x97, 0x81, 0x7B, 0x8F, 0xFE, 0xA1, 0x1, 0x68, 0xF7, 0x1, 0x6, 0xFF, 0x8D, 0x6E, 0x1, 0x3B, 0x34, 0x68, 0x6F, 0x4, 0x4, 0x41, 0xF6, 0x1A, 0x2B, 0x2, 0x4, 0xFE, 0xE1, 0x15, 0x3, 0x9D, 0xB3, 0x42, 0x68, 0x81, 0xCD, 0x1, 0x72, 0x6F, 0x5F, 0x72, 0xCD, 0x2, 0xD4, 0xCA, 0xE5, 0x64, 0x26, 0xAF, 0x76, 0x44, 0x37, 0x4A, 0x2, 0xBA, 0x9E, 0xBB, 0xD8, 0x61, 0xCB, 0x67, 0xFE, 0xE9, 0xFE, 0xF1, 0x0, 0x1, 0x0, 0x30, 0xFF, 0xE2, 0x4, 0xFF, 0x4, 0x3A, 0x0, 0x26, 0x0, 0x0, 0x5, 0x6, 0x26, 0x27, 0x35, 0x26, 0x27, 0x23, 0x27, 0x33, 0x36, 0x35, 0x34, 0x26, 0x23, 0x21, 0x27, 0x21, 0x16, 0x16, 0x15, 0x14, 0x7, 0x16, 0x15, 0x15, 0x6, 0x33, 0x36, 0x36, 0x37, 0x36, 0x27, 0x33, 0x16, 0x16, 0x7, 0x6, 0x6, 0x3, 0x54, 0x9D, 0xA0, 0x9, 0x2, 0x98, 0xED, 0x2, 0xC2, 0xB8, 0x5A, 0x69, 0xFE, 0xFA, 0x6, 0x1, 0x1A, 0xCB, 0xDE, 0xB0, 0xBE, 0x2, 0x4E, 0x59, 0x61, 0x3, 0x3, 0x3F, 0xEB, 0x1B, 0x2B, 0x2, 0x4, 0xFE, 0x1B, 0x3, 0x72, 0x82, 0x4E, 0x78, 0x2, 0xBC, 0x4, 0x83, 0x41, 0x56, 0xC2, 0x3, 0xA9, 0x97, 0x9B, 0x4A, 0x30, 0xBA, 0x3C, 0x58, 0x2, 0x90, 0x7D, 0x9D, 0xA2, 0x50, 0xA1, 0x4E, 0xE1, 0xDD, 0x0, 0x1, 0x0, 0x49, 0xFE, 0xB9, 0x4, 0x38, 0x5, 0xB0, 0x0, 0x25, 0x0, 0x0, 0x1, 0x27, 0x36, 0x36, 0x37, 0x23, 0x26, 0x26, 0x35, 0x35, 0x34, 0x26, 0x23, 0x23, 0x27, 0x33, 0x36, 0x36, 0x35, 0x34, 0x26, 0x23, 0x21, 0x27, 0x21, 0x16, 0x4, 0x15, 0x14, 0x7, 0x16, 0x16, 0x15, 0x15, 0x33, 0x7, 0x14, 0x6, 0x3, 0x7A, 0x83, 0x23, 0x37, 0x9, 0xA3, 0x2E, 0x11, 0x7E, 0x71, 0xF2, 0x1, 0xCE, 0x92, 0x81, 0x7F, 0x8C, 0xFE, 0xE0, 0x3, 0x1, 0x30, 0xEC, 0x1, 0x4, 0xE5, 0x82, 0x65, 0xCD, 0x1, 0x67, 0xFE, 0xB9, 0x4E, 0x38, 0x78, 0x49, 0x28, 0xAA, 0x23, 0x73, 0x71, 0x83, 0xC3, 0x1, 0x74, 0x6F, 0x69, 0x81, 0xC3, 0x3, 0xDB, 0xC9, 0xE0, 0x65, 0x29, 0xB7, 0x7A, 0x7D, 0xAD, 0x65, 0xDA, 0x0, 0x1, 0x0, 0x75, 0xFE, 0xA8, 0x4, 0x1B, 0x4, 0x3A, 0x0, 0x21, 0x0, 0x0, 0x1, 0x27, 0x36, 0x36, 0x37, 0x23, 0x26, 0x26, 0x2, 0x27, 0x21, 0x35, 0x33, 0x36, 0x35, 0x34, 0x26, 0x23, 0x21, 0x27, 0x21, 0x16, 0x16, 0x15, 0x14, 0x7, 0x16, 0x16, 0x15, 0x15, 0x33, 0x15, 0x14, 0x6, 0x3, 0x5D, 0x83, 0x26, 0x38, 0x7, 0xA7, 0x18, 0x12, 0x2, 0xB7, 0xFE, 0xFE, 0xF0, 0xC2, 0x62, 0x6B, 0xFE, 0xE1, 0x4, 0x1, 0x2C, 0xCF, 0xE9, 0xAE, 0x65, 0x4F, 0xBC, 0x67, 0xFE, 0xA8, 0x4E, 0x3C, 0x7E, 0x50, 0x12, 0x4B, 0x1, 0x3B, 0x4, 0xB3, 0x4, 0x8A, 0x42, 0x5A, 0xC1, 0x2, 0xB2, 0x9B, 0x9E, 0x4F, 0x21, 0x89, 0x5A, 0x1E, 0xAD, 0x65, 0xDA, 0x0, 0x1, 0x0, 0x43, 0xFF, 0xEB, 0x7, 0x80, 0x5, 0xB0, 0x0, 0x20, 0x0, 0x0, 0x5, 0x22, 0x26, 0x35, 0x11, 0x21, 0x3, 0x2, 0x2, 0x7, 0x23, 0x35, 0x37, 0x36, 0x36, 0x13, 0x13, 0x21, 0x11, 0x14, 0x16, 0x37, 0x36, 0x36, 0x37, 0x36, 0x27, 0x33, 0x16, 0x16, 0x7, 0x2, 0x0, 0x5, 0x90, 0xB1, 0xD7, 0xFE, 0x61, 0x1A, 0x16, 0xC6, 0xE7, 0x49, 0x31, 0x7B, 0x61, 0xD, 0x1B, 0x3, 0x8D, 0x4A, 0x41, 0x73, 0x7B, 0x3, 0x4, 0x40, 0xF6, 0x1A, 0x2B, 0x2, 0x4, 0xFE, 0xD9, 0x15, 0xB2, 0xCD, 0x3, 0x79, 0xFD, 0xCD, 0xFE, 0x8C, 0xFE, 0xC7, 0x3, 0xCA, 0x5, 0xE, 0xF4, 0x1, 0x2E, 0x2, 0xB1, 0xFB, 0xBA, 0x4E, 0x66, 0x1, 0x1, 0xBB, 0x9E, 0xBE, 0xD5, 0x61, 0xCB, 0x67, 0xFE, 0xEA, 0xFE, 0xF0, 0x0, 0x1, 0x0, 0x41, 0xFF, 0xEB, 0x6, 0x59, 0x4, 0x3A, 0x0, 0x20, 0x0, 0x0, 0x5, 0x22, 0x26, 0x35, 0x11, 0x21, 0x3, 0x2, 0x6, 0x7, 0x23, 0x27, 0x37, 0x36, 0x36, 0x37, 0x13, 0x21, 0x11, 0x14, 0x16, 0x37, 0x36, 0x36, 0x37, 0x36, 0x27, 0x33, 0x16, 0x16, 0x7, 0x2, 0x4, 0x4, 0xA1, 0xB1, 0xD9, 0xFE, 0xF8, 0x15, 0x13, 0xAA, 0xAC, 0x4F, 0x1, 0x27, 0x5F, 0x45, 0xA, 0x14, 0x2, 0xE0, 0x51, 0x46, 0x5D, 0x64, 0x2, 0x4, 0x40, 0xEC, 0x1A, 0x2B, 0x2, 0x4, 0xFE, 0xFB, 0x15, 0xB1, 0xCC, 0x2, 0xD, 0xFE, 0x8C, 0xFE, 0xEB, 0xEA, 0x2, 0xCB, 0x3, 0x8, 0xC1, 0xD5, 0x1, 0xCE, 0xFD, 0x2E, 0x50, 0x6A, 0x1, 0x1, 0xA9, 0x8F, 0xB5, 0xC8, 0x5C, 0xC0, 0x61, 0xFE, 0xFF, 0xFC, 0x0, 0x1, 0x0, 0x94, 0xFF, 0xE8, 0x7, 0x86, 0x5, 0xB0, 0x0, 0x1C, 0x0, 0x0, 0x5, 0x6, 0x26, 0x27, 0x35, 0x21, 0x11, 0x23, 0x11, 0x33, 0x11, 0x21, 0x11, 0x33, 0x11, 0x14, 0x16, 0x33, 0x36, 0x36, 0x37, 0x36, 0x27, 0x33, 0x16, 0x16, 0x7, 0x2, 0x0, 0x5, 0x95, 0xB0, 0xCC, 0xB, 0xFD, 0x83, 0xFD, 0xFD, 0x2, 0x7D, 0xFD, 0x4B, 0x3F, 0x74, 0x7B, 0x3, 0x4, 0x41, 0xF6, 0x1C, 0x2A, 0x2, 0x4, 0xFE, 0xD9, 0x15, 0x3, 0xB5, 0xCD, 0xFF, 0xFD, 0x97, 0x5, 0xB0, 0xFD, 0x83, 0x2, 0x7D, 0xFB, 0xB6, 0x4D, 0x62, 0x2, 0xBA, 0x9E, 0xBB, 0xD8, 0x65, 0xC8, 0x66, 0xFE, 0xEA, 0xFE, 0xF0, 0x0, 0x1, 0x0, 0x77, 0xFF, 0xE8, 0x6, 0x5D, 0x4, 0x3A, 0x0, 0x1C, 0x0, 0x0, 0x5, 0x6, 0x26, 0x27, 0x35, 0x21, 0x11, 0x23, 0x11, 0x33, 0x11, 0x21, 0x11, 0x33, 0x11, 0x14, 0x16, 0x33, 0x36, 0x36, 0x37, 0x36, 0x27, 0x33, 0x16, 0x16, 0x7, 0x2, 0x4, 0x4, 0xA4, 0xB1, 0xCE, 0xB, 0xFE, 0x50, 0xF3, 0xF3, 0x1, 0xB0, 0xF3, 0x52, 0x45, 0x5D, 0x64, 0x3, 0x4, 0x40, 0xEB, 0x28, 0x1E, 0x2, 0x4, 0xFE, 0xFA, 0x15, 0x3, 0xB4, 0xCC, 0x52, 0xFE, 0x46, 0x4, 0x3A, 0xFE, 0x44, 0x1, 0xBC, 0xFD, 0x2A, 0x4E, 0x67, 0x2, 0xA8, 0x8F, 0xAF, 0xCE, 0x8F, 0x9F, 0x4F, 0xFE, 0xFF, 0xFC, 0x0, 0x1, 0x0, 0x5D, 0xFF, 0xEB, 0x4, 0xBC, 0x5, 0xC5, 0x0, 0x1E, 0x0, 0x0, 0x5, 0x20, 0x0, 0x11, 0x11, 0x10, 0x0, 0x21, 0x32, 0x17, 0x7, 0x26, 0x23, 0x22, 0x6, 0x15, 0x11, 0x14, 0x16, 0x33, 0x36, 0x36, 0x37, 0x36, 0x27, 0x33, 0x17, 0x16, 0x7, 0x6, 0x4, 0x2, 0xBB, 0xFE, 0xF1, 0xFE, 0xB1, 0x1, 0x4F, 0x1, 0xF, 0xDE, 0x89, 0x3E, 0x86, 0xA3, 0xA6, 0xBB, 0xBB, 0xA6, 0x7C, 0x84, 0x3, 0x3, 0x35, 0xF5, 0x27, 0x14, 0x2, 0x4, 0xFE, 0xD0, 0x15, 0x1, 0x61, 0x1, 0x9, 0x1, 0x6, 0x1, 0xA, 0x1, 0x60, 0x59, 0xB8, 0x44, 0xF2, 0xA9, 0xFE, 0xF8, 0xAB, 0xF3, 0x2, 0x86, 0x73, 0x96, 0xCA, 0xAC, 0x5B, 0x59, 0xE7, 0xE0, 0x0, 0x1, 0x0, 0x55, 0xFF, 0xEB, 0x3, 0xE6, 0x4, 0x4E, 0x0, 0x1D, 0x0, 0x0, 0x25, 0x36, 0x36, 0x37, 0x34, 0x27, 0x33, 0x16, 0x7, 0x6, 0x6, 0x23, 0x22, 0x0, 0x35, 0x35, 0x34, 0x0, 0x33, 0x32, 0x17, 0x7, 0x26, 0x23, 0x22, 0x6, 0x15, 0x15, 0x14, 0x16, 0x2, 0x5A, 0x57, 0x3F, 0x2, 0x13, 0xEB, 0x1C, 0x1, 0x4, 0xDF, 0xA8, 0xF9, 0xFE, 0xF4, 0x1, 0x3, 0xEE, 0xBB, 0x5F, 0x2E, 0x62, 0x8A, 0x87, 0x77, 0x7F, 0xAF, 0x2, 0x49, 0x41, 0x76, 0x68, 0x8C, 0x52, 0xAA, 0xA6, 0x1, 0x45, 0xD8, 0x2A, 0xD8, 0x1, 0x44, 0x42, 0xBC, 0x3A, 0xDD, 0x7B, 0x2A, 0x7C, 0xDD, 0x0, 0x1, 0x0, 0x22, 0xFF, 0xE8, 0x5, 0x5A, 0x5, 0xB0, 0x0, 0x18, 0x0, 0x0, 0x5, 0x6, 0x26, 0x27, 0x11, 0x21, 0x35, 0x21, 0x15, 0x21, 0x11, 0x6, 0x16, 0x33, 0x36, 0x36, 0x37, 0x36, 0x27, 0x33, 0x16, 0x16, 0x7, 0x2, 0x0, 0x3, 0x6A, 0xB0, 0xCD, 0xA, 0xFE, 0x3F, 0x4, 0x80, 0xFE, 0x3D, 0x1, 0x4C, 0x40, 0x74, 0x7B, 0x3, 0x4, 0x40, 0xF5, 0x1B, 0x2A, 0x2, 0x4, 0xFE, 0xDA, 0x15, 0x3, 0xB5, 0xCD, 0x3, 0x79, 0xCD, 0xCD, 0xFC, 0x87, 0x4E, 0x65, 0x2, 0xBA, 0x9E, 0xB7, 0xDC, 0x61, 0xCB, 0x67, 0xFE, 0xEA, 0xFE, 0xF0, 0x0, 0x1, 0x0, 0x45, 0xFF, 0xE8, 0x4, 0xCD, 0x4, 0x3A, 0x0, 0x18, 0x0, 0x0, 0x5, 0x6, 0x26, 0x27, 0x11, 0x21, 0x35, 0x21, 0x15, 0x21, 0x11, 0x6, 0x16, 0x33, 0x36, 0x36, 0x37, 0x36, 0x27, 0x33, 0x16, 0x16, 0x7, 0x6, 0x4, 0x3, 0x13, 0xB1, 0xCE, 0xA, 0xFE, 0xBB, 0x3, 0x8B, 0xFE, 0xAD, 0x1, 0x51, 0x46, 0x5E, 0x64, 0x3, 0x3, 0x3F, 0xEB, 0x1B, 0x2B, 0x2, 0x4, 0xFE, 0xF9, 0x15, 0x3, 0xB4, 0xCC, 0x2, 0x10, 0xC2, 0xC2, 0xFD, 0xF0, 0x50, 0x69, 0x2, 0x85, 0x73, 0x93, 0x9E, 0x4C, 0x99, 0x4C, 0xE1, 0xDD, 0x0, 0x1, 0x0, 0x82, 0xFF, 0xEB, 0x4, 0xFF, 0x5, 0xC5, 0x0, 0x27, 0x0, 0x0, 0x1, 0x14, 0x6, 0x4, 0x23, 0x20, 0x24, 0x35, 0x34, 0x25, 0x26, 0x26, 0x35, 0x34, 0x24, 0x21, 0x32, 0x4, 0x15, 0x23, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x14, 0x16, 0x33, 0x33, 0x15, 0x23, 0x4, 0x15, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x4, 0xFF, 0xA5, 0xFE, 0xFF, 0x8A, 0xFF, 0x0, 0xFE, 0xB3, 0x1, 0xD, 0x73, 0x84, 0x1, 0x37, 0x1, 0x0, 0xDD, 0x1, 0x3F, 0xFC, 0xA7, 0x79, 0xA3, 0x97, 0x8C, 0x9E, 0xC0, 0xD2, 0xFE, 0xD2, 0xB0, 0xA0, 0x8A, 0xAA, 0x1, 0x94, 0x95, 0xBC, 0x58, 0xE0, 0xCD, 0xFD, 0x57, 0x30, 0xA5, 0x64, 0xCC, 0xD4, 0xDB, 0xBE, 0x5B, 0x73, 0x80, 0x56, 0x61, 0x79, 0xC7, 0x7, 0xE4, 0x61, 0x82, 0x84, 0x5B, 0xFF, 0xFF, 0x0, 0x2D, 0xFE, 0x4B, 0x5, 0xFC, 0x5, 0xB0, 0x0, 0x26, 0x2, 0x73, 0x0, 0x0, 0x0, 0x7, 0x7, 0xE3, 0x4, 0x6E, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x22, 0xFE, 0x4B, 0x5, 0x6, 0x4, 0x3A, 0x0, 0x26, 0x2, 0x88, 0x0, 0x0, 0x0, 0x7, 0x7, 0xE3, 0x3, 0x78, 0x0, 0x0, 0x0, 0x1, 0x0, 0x2D, 0x0, 0x0, 0x7, 0x88, 0x5, 0xB0, 0x0, 0x17, 0x0, 0x0, 0x33, 0x35, 0x37, 0x36, 0x36, 0x13, 0x13, 0x21, 0x1, 0x1, 0x21, 0x1, 0x1, 0x21, 0x1, 0x1, 0x21, 0x1, 0x1, 0x23, 0x3, 0x2, 0x2, 0x7, 0x2D, 0x31, 0x7B, 0x61, 0xD, 0x1B, 0x2, 0x94, 0x1, 0x32, 0x1, 0x31, 0x1, 0x24, 0xFE, 0x48, 0x1, 0xC3, 0xFE, 0xD9, 0xFE, 0xC7, 0xFE, 0xC6, 0xFE, 0xD9, 0x1, 0xC3, 0xFE, 0xC4, 0xFA, 0x1B, 0x16, 0xC5, 0xE7, 0xCA, 0x5, 0xE, 0xF4, 0x1, 0x2E, 0x2, 0xB1, 0xFD, 0xF2, 0x2, 0xE, 0xFD, 0x2E, 0xFD, 0x22, 0x2, 0x17, 0xFD, 0xE9, 0x2, 0xDE, 0x2, 0x7, 0xFD, 0xCB, 0xFE, 0x8C, 0xFE, 0xC7, 0x3, 0x0, 0x1, 0x0, 0x22, 0x0, 0x0, 0x5, 0xFE, 0x4, 0x3A, 0x0, 0x17, 0x0, 0x0, 0x33, 0x27, 0x37, 0x36, 0x36, 0x37, 0x13, 0x21, 0x13, 0x13, 0x21, 0x1, 0x1, 0x21, 0x3, 0x3, 0x21, 0x1, 0x3, 0x23, 0x3, 0x2, 0x6, 0x7, 0x23, 0x1, 0x27, 0x5F, 0x44, 0xA, 0x14, 0x2, 0x43, 0xCA, 0xCE, 0x1, 0xD, 0xFE, 0xB6, 0x1, 0x56, 0xFE, 0xF3, 0xD8, 0xD7, 0xFE, 0xF2, 0x1, 0x56, 0xD0, 0xCA, 0x15, 0x13, 0xAA, 0xAC, 0xCB, 0x3, 0x8, 0xC1, 0xD5, 0x1, 0xCE, 0xFE, 0x9C, 0x1, 0x64, 0xFD, 0xEC, 0xFD, 0xDA, 0x1, 0x72, 0xFE, 0x8E, 0x2, 0x26, 0x1, 0x50, 0xFE, 0x8B, 0xFE, 0xEB, 0xEA, 0x2, 0x0, 0x2, 0x0, 0x95, 0x0, 0x0, 0x6, 0xF8, 0x5, 0xB0, 0x0, 0x8, 0x0, 0x18, 0x0, 0x0, 0x1, 0x11, 0x21, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x1, 0x11, 0x23, 0x11, 0x21, 0x32, 0x4, 0x17, 0x13, 0x21, 0x1, 0x1, 0x21, 0x1, 0x6, 0x23, 0x1, 0x91, 0x1, 0x31, 0x93, 0x81, 0x81, 0x93, 0xFE, 0xCF, 0xFC, 0x2, 0x2D, 0xC6, 0x1, 0x1, 0x30, 0xF2, 0x1, 0x2F, 0xFD, 0xE9, 0x2, 0x35, 0xFE, 0xD4, 0xFE, 0x4D, 0x85, 0xD2, 0x4, 0xE5, 0xFE, 0x3, 0x8A, 0x6D, 0x66, 0xA0, 0xFD, 0x38, 0xFD, 0xE3, 0x5, 0xB0, 0xA4, 0x87, 0x1, 0x2B, 0xFD, 0x74, 0xFC, 0xDC, 0x2, 0x72, 0x55, 0x0, 0x2, 0x0, 0x7D, 0xFE, 0x60, 0x6, 0x2D, 0x4, 0x4E, 0x0, 0xB, 0x0, 0x20, 0x0, 0x0, 0x25, 0x32, 0x36, 0x35, 0x35, 0x34, 0x26, 0x23, 0x22, 0x7, 0x11, 0x16, 0x17, 0x22, 0x27, 0x11, 0x23, 0x11, 0x33, 0x17, 0x36, 0x33, 0x32, 0x16, 0x17, 0x13, 0x21, 0x1, 0x1, 0x21, 0x3, 0x6, 0x6, 0x2, 0x48, 0x83, 0x73, 0x75, 0x83, 0x96, 0x41, 0x43, 0xDA, 0xB1, 0x6C, 0xF2, 0xDF, 0xA, 0x6D, 0xB7, 0x98, 0xC7, 0x2A, 0xCD, 0x1, 0x2D, 0xFE, 0x89, 0x1, 0x97, 0xFE, 0xC5, 0xDC, 0x28, 0xC8, 0xAF, 0xD3, 0x90, 0x15, 0x92, 0xCF, 0x7D, 0xFE, 0x23, 0x7F, 0xC3, 0x75, 0xFD, 0xFF, 0x5, 0xDA, 0x6D, 0x81, 0xAB, 0x93, 0x1, 0x2A, 0xFD, 0xE8, 0xFD, 0xDE, 0x1, 0x3B, 0x97, 0xB8, 0x0, 0x2, 0x0, 0x43, 0x0, 0x0, 0x7, 0x3C, 0x5, 0xB0, 0x0, 0x8, 0x0, 0x1D, 0x0, 0x0, 0x1, 0x11, 0x23, 0x22, 0x6, 0x15, 0x14, 0x16, 0x33, 0x13, 0x11, 0x21, 0x1, 0x21, 0x1, 0x26, 0x11, 0x34, 0x24, 0x33, 0x21, 0x15, 0x21, 0x11, 0x21, 0x15, 0x21, 0x11, 0x21, 0x15, 0x3, 0x85, 0xEC, 0x8B, 0x88, 0x8A, 0x89, 0xEC, 0xFE, 0xE6, 0xFE, 0xE7, 0xFE, 0xF1, 0x1, 0x45, 0xFE, 0x1, 0x1B, 0xF4, 0x4, 0x9C, 0xFD, 0x4C, 0x2, 0x56, 0xFD, 0xAA, 0x2, 0xBB, 0x2, 0xE4, 0x2, 0x1, 0x87, 0x75, 0x7A, 0x8B, 0xFD, 0x1C, 0x2, 0x21, 0xFD, 0xDF, 0x2, 0x6C, 0x77, 0x1, 0x11, 0xD8, 0xE4, 0xCB, 0xFE, 0x6D, 0xC7, 0xFE, 0x3F, 0xCA, 0x0, 0x3, 0x0, 0x27, 0xFF, 0xEC, 0x6, 0xA5, 0x4, 0x4E, 0x0, 0x7, 0x0, 0x10, 0x0, 0x2E, 0x0, 0x0, 0x1, 0x22, 0x6, 0x7, 0x21, 0x35, 0x26, 0x26, 0x1, 0x11, 0x23, 0x22, 0x6, 0x15, 0x14, 0x16, 0x33, 0x1, 0x6, 0x6, 0x23, 0x22, 0x24, 0x27, 0x23, 0x3, 0x23, 0x13, 0x26, 0x35, 0x34, 0x36, 0x33, 0x21, 0x15, 0x36, 0x33, 0x32, 0x12, 0x15, 0x15, 0x21, 0x16, 0x16, 0x33, 0x32, 0x37, 0x4, 0xD6, 0x63, 0x7B, 0x11, 0x1, 0xCE, 0x4, 0x62, 0xFD, 0x9F, 0xE1, 0x65, 0x5D, 0x57, 0x5E, 0x4, 0x94, 0x34, 0xCC, 0xA1, 0xD3, 0xFE, 0xF5, 0x1E, 0xEB, 0xE8, 0xFD, 0xFF, 0xCF, 0xE8, 0xCE, 0x1, 0xB7, 0x78, 0x9B, 0xEC, 0xE2, 0xFD, 0x3D, 0xA, 0x95, 0x80, 0xA8, 0x68, 0x3, 0x8B, 0x8C, 0x7C, 0x12, 0x5F, 0x97, 0xFE, 0xB7, 0x1, 0x37, 0x65, 0x39, 0x38, 0x61, 0xFE, 0x76, 0x4C, 0x80, 0xEB, 0xB7, 0xFE, 0x72, 0x1, 0xB6, 0x57, 0xD3, 0x95, 0xC5, 0x42, 0x56, 0xFE, 0xD4, 0xEA, 0x67, 0x7D, 0xA5, 0x86, 0x0, 0x1, 0x0, 0x9B, 0x0, 0x0, 0x5, 0x26, 0x5, 0xB0, 0x0, 0x14, 0x0, 0x0, 0x21, 0x1, 0x23, 0x11, 0x23, 0x11, 0x33, 0x11, 0x33, 0x13, 0x27, 0x37, 0x17, 0x37, 0x21, 0x1, 0x17, 0x7, 0x27, 0x7, 0x1, 0x3, 0xEE, 0xFE, 0x12, 0x69, 0xFC, 0xFC, 0x5A, 0xE8, 0x96, 0x6F, 0x8D, 0x8A, 0x1, 0x39, 0xFE, 0xF8, 0xA9, 0x6E, 0xA2, 0xAC, 0x2, 0x3F, 0x2, 0x8B, 0xFD, 0x75, 0x5, 0xB0, 0xFD, 0x82, 0x1, 0x3A, 0x80, 0x82, 0x79, 0xBB, 0xFE, 0xA5, 0x91, 0x81, 0x8A, 0xE3, 0xFD, 0x16, 0x0, 0x1, 0x0, 0x8F, 0x0, 0x0, 0x4, 0x5E, 0x4, 0x3B, 0x0, 0x14, 0x0, 0x0, 0x21, 0x1, 0x23, 0x11, 0x23, 0x11, 0x33, 0x11, 0x33, 0x37, 0x27, 0x37, 0x17, 0x37, 0x21, 0x7, 0x17, 0x7, 0x27, 0x7, 0x1, 0x3, 0x2D, 0xFE, 0xCF, 0x7A, 0xF3, 0xF3, 0x6F, 0x89, 0x88, 0x6B, 0x81, 0x4C, 0x1, 0x1B, 0xB7, 0x9C, 0x6A, 0x96, 0x6B, 0x1, 0x9F, 0x1, 0xAD, 0xFE, 0x53, 0x4, 0x3A, 0xFE, 0x51, 0xBD, 0x70, 0x83, 0x6A, 0x69, 0xFA, 0x80, 0x84, 0x7B, 0x92, 0xFD, 0xDB, 0x0, 0x1, 0x0, 0x2D, 0xFE, 0x4B, 0x8, 0x32, 0x5, 0xB0, 0x0, 0x26, 0x0, 0x0, 0x1, 0x22, 0x27, 0x37, 0x16, 0x33, 0x32, 0x35, 0x11, 0x34, 0x26, 0x23, 0x22, 0x7, 0x11, 0x23, 0x11, 0x21, 0x3, 0x2, 0x2, 0x7, 0x23, 0x35, 0x37, 0x36, 0x36, 0x13, 0x13, 0x21, 0x11, 0x36, 0x33, 0x32, 0x4, 0x15, 0x11, 0x14, 0x6, 0x6, 0xCD, 0x45, 0x3A, 0xF, 0x32, 0x2D, 0x7A, 0x8F, 0x8C, 0x7A, 0x93, 0xFD, 0xFE, 0x43, 0x1B, 0x16, 0xC5, 0xE7, 0x4A, 0x31, 0x7B, 0x61, 0xD, 0x1B, 0x3, 0xAC, 0x95, 0xA4, 0xE4, 0x1, 0x7, 0xC0, 0xFE, 0x4B, 0x11, 0xCD, 0xD, 0xA5, 0x2, 0x7, 0x9B, 0x6D, 0x1D, 0xFD, 0x4D, 0x4, 0xE5, 0xFD, 0xCB, 0xFE, 0x8C, 0xFE, 0xC7, 0x3, 0xCA, 0x5, 0xE, 0xF4, 0x1, 0x2E, 0x2, 0xB1, 0xFD, 0xCF, 0x1C, 0xDA, 0xF9, 0xFD, 0xF9, 0xB6, 0xC0, 0x0, 0x1, 0x0, 0x22, 0xFE, 0x4B, 0x6, 0xA3, 0x4, 0x3A, 0x0, 0x26, 0x0, 0x0, 0x1, 0x22, 0x27, 0x37, 0x16, 0x33, 0x32, 0x37, 0x11, 0x34, 0x26, 0x23, 0x22, 0x7, 0x11, 0x23, 0x11, 0x21, 0x3, 0x2, 0x6, 0x7, 0x23, 0x27, 0x37, 0x36, 0x36, 0x37, 0x13, 0x21, 0x11, 0x36, 0x33, 0x32, 0x16, 0x15, 0x11, 0x14, 0x6, 0x5, 0x44, 0x45, 0x3B, 0xF, 0x27, 0x3C, 0x7A, 0x1, 0x6D, 0x68, 0x5F, 0x69, 0xF3, 0xFE, 0xCF, 0x15, 0x13, 0xAA, 0xAC, 0x4F, 0x1, 0x27, 0x5F, 0x44, 0xA, 0x14, 0x3, 0xA, 0x75, 0x79, 0xBD, 0xE4, 0xBA, 0xFE, 0x4B, 0x11, 0xBF, 0xD, 0xB0, 0x1, 0x8D, 0x76, 0x62, 0x19, 0xFD, 0xF6, 0x3, 0x76, 0xFE, 0x8B, 0xFE, 0xEB, 0xEA, 0x2, 0xCB, 0x3, 0x8, 0xC1, 0xD5, 0x1, 0xCE, 0xFE, 0x92, 0x1A, 0xC8, 0xD3, 0xFE, 0x76, 0xB6, 0xC0, 0x0, 0x1, 0x0, 0x9B, 0xFE, 0x4B, 0x8, 0x44, 0x5, 0xB0, 0x0, 0x22, 0x0, 0x0, 0x1, 0x22, 0x27, 0x37, 0x16, 0x33, 0x32, 0x35, 0x11, 0x34, 0x26, 0x23, 0x22, 0x7, 0x11, 0x23, 0x11, 0x21, 0x11, 0x23, 0x11, 0x33, 0x11, 0x21, 0x11, 0x33, 0x11, 0x36, 0x33, 0x32, 0x4, 0x15, 0x11, 0x14, 0x6, 0x6, 0xDF, 0x45, 0x3A, 0xE, 0x32, 0x2D, 0x7B, 0x8A, 0x8C, 0x85, 0x8E, 0xFC, 0xFD, 0x74, 0xFC, 0xFC, 0x2, 0x8C, 0xFC, 0x87, 0x8C, 0xF5, 0x1, 0x1D, 0xC0, 0xFE, 0x4B, 0x11, 0xCD, 0xD, 0xA5, 0x2, 0x7, 0x9B, 0x6D, 0x1C, 0xFD, 0x4C, 0x2, 0x88, 0xFD, 0x78, 0x5, 0xB0, 0xFD, 0xA2, 0x2, 0x5E, 0xFD, 0xD0, 0x1B, 0xDA, 0xF9, 0xFD, 0xF9, 0xB6, 0xC0, 0x0, 0x1, 0x0, 0x86, 0xFE, 0x4B, 0x6, 0xA0, 0x4, 0x3A, 0x0, 0x22, 0x0, 0x0, 0x1, 0x22, 0x27, 0x37, 0x16, 0x33, 0x32, 0x37, 0x11, 0x34, 0x26, 0x23, 0x22, 0x7, 0x11, 0x23, 0x11, 0x21, 0x11, 0x23, 0x11, 0x33, 0x11, 0x21, 0x11, 0x33, 0x11, 0x36, 0x33, 0x32, 0x16, 0x15, 0x11, 0x14, 0x6, 0x5, 0x41, 0x45, 0x3B, 0xF, 0x27, 0x3C, 0x7A, 0x1, 0x6A, 0x6B, 0x65, 0x63, 0xF3, 0xFE, 0x5B, 0xF3, 0xF3, 0x1, 0xA5, 0xF3, 0x64, 0x64, 0xD1, 0xF6, 0xBA, 0xFE, 0x4B, 0x11, 0xBF, 0xD, 0xB0, 0x1, 0x8D, 0x76, 0x62, 0x18, 0xFD, 0xF5, 0x1, 0xB5, 0xFE, 0x4B, 0x4, 0x3A, 0xFE, 0x3D, 0x1, 0xC3, 0xFE, 0x96, 0x16, 0xC8, 0xD3, 0xFE, 0x76, 0xB6, 0xC0, 0x0, 0x1, 0x0, 0x9B, 0xFE, 0x99, 0x5, 0xD6, 0x5, 0xB0, 0x0, 0xB, 0x0, 0x0, 0x25, 0x11, 0x23, 0x11, 0x23, 0x11, 0x21, 0x11, 0x23, 0x11, 0x21, 0x11, 0x5, 0xD6, 0xF2, 0xCC, 0xFD, 0x7F, 0xFC, 0x4, 0x7A, 0xB5, 0xFD, 0xE4, 0x1, 0x67, 0x4, 0xE5, 0xFB, 0x1B, 0x5, 0xB0, 0xFB, 0x5, 0x0, 0x1, 0x0, 0x86, 0xFE, 0x99, 0x4, 0xD7, 0x4, 0x3A, 0x0, 0xB, 0x0, 0x0, 0x25, 0x11, 0x23, 0x11, 0x23, 0x11, 0x21, 0x11, 0x23, 0x11, 0x21, 0x11, 0x4, 0xD7, 0xF3, 0xC4, 0xFE, 0x59, 0xF3, 0x3, 0x8D, 0xB5, 0xFD, 0xE4, 0x1, 0x67, 0x3, 0x76, 0xFC, 0x8A, 0x4, 0x3A, 0xFC, 0x7B, 0x0, 0x1, 0x0, 0x85, 0xFE, 0x99, 0x5, 0xB0, 0x5, 0xB0, 0x0, 0x15, 0x0, 0x0, 0x21, 0x23, 0x11, 0x33, 0x11, 0x36, 0x33, 0x32, 0x4, 0x17, 0x11, 0x33, 0x11, 0x23, 0x11, 0x23, 0x11, 0x26, 0x26, 0x23, 0x22, 0x7, 0x1, 0x81, 0xFC, 0xFC, 0xA2, 0xB0, 0xF4, 0x1, 0x1C, 0x2, 0xCB, 0xF3, 0xD4, 0x1, 0x89, 0x8C, 0xA7, 0xAB, 0x5, 0xB0, 0xFD, 0xC1, 0x2A, 0xD6, 0xF5, 0xFE, 0xE5, 0xFD, 0xE4, 0x1, 0x67, 0x1, 0xCE, 0x97, 0x6B, 0x2A, 0x0, 0x1, 0x0, 0x7A, 0xFE, 0x99, 0x4, 0xBD, 0x6, 0x0, 0x0, 0x15, 0x0, 0x0, 0x25, 0x11, 0x23, 0x11, 0x23, 0x11, 0x34, 0x26, 0x23, 0x22, 0x7, 0x11, 0x23, 0x11, 0x33, 0x11, 0x36, 0x33, 0x32, 0x16, 0x17, 0x11, 0x4, 0xBD, 0xF2, 0xC5, 0x62, 0x5D, 0x91, 0x4A, 0xF2, 0xF2, 0x78, 0xB5, 0x9F, 0xC0, 0x1, 0xB5, 0xFD, 0xE4, 0x1, 0x67, 0x2, 0xBB, 0x71, 0x5C, 0x81, 0xFC, 0xF9, 0x6, 0x0, 0xFD, 0xC3, 0x8B, 0xB6, 0xDA, 0xFD, 0xF7, 0x0, 0x1, 0x0, 0xD, 0xFE, 0x4B, 0x5, 0x78, 0x5, 0xB0, 0x0, 0x14, 0x0, 0x0, 0x13, 0x22, 0x27, 0x37, 0x16, 0x33, 0x32, 0x35, 0x11, 0x33, 0x11, 0x21, 0x11, 0x33, 0x11, 0x23, 0x11, 0x21, 0x11, 0x14, 0x6, 0x8C, 0x45, 0x3A, 0xE, 0x32, 0x2D, 0x7B, 0xFC, 0x2, 0x8B, 0xFC, 0xFC, 0xFD, 0x75, 0xC1, 0xFE, 0x4B, 0x11, 0xCD, 0xD, 0xA5, 0x5, 0xEF, 0xFD, 0xA2, 0x2, 0x5E, 0xFA, 0x50, 0x2, 0x88, 0xFD, 0x39, 0xB6, 0xC0, 0x0, 0x1, 0x0, 0xD, 0xFE, 0x4B, 0x4, 0x84, 0x4, 0x3A, 0x0, 0x14, 0x0, 0x0, 0x13, 0x22, 0x27, 0x37, 0x16, 0x33, 0x32, 0x37, 0x11, 0x33, 0x11, 0x21, 0x11, 0x33, 0x11, 0x23, 0x11, 0x21, 0x11, 0x6, 0x6, 0x8C, 0x45, 0x3A, 0xE, 0x26, 0x3D, 0x7A, 0x1, 0xF3, 0x1, 0xA5, 0xF3, 0xF3, 0xFE, 0x5B, 0x1, 0xBB, 0xFE, 0x4B, 0x11, 0xC5, 0xC, 0xA9, 0x4, 0x7C, 0xFE, 0x3D, 0x1, 0xC3, 0xFB, 0xC6, 0x1, 0xB5, 0xFE, 0x8, 0xB4, 0xBE, 0x0, 0x2, 0x0, 0x24, 0xFE, 0x9A, 0xA, 0xCF, 0x5, 0xB0, 0x0, 0x5, 0x0, 0x25, 0x0, 0x0, 0x25, 0x21, 0x11, 0x21, 0x3, 0x2, 0x1, 0x11, 0x21, 0x11, 0x23, 0x3, 0x33, 0x36, 0x12, 0x13, 0x13, 0x21, 0x11, 0x21, 0x11, 0x33, 0x11, 0x33, 0x1, 0x21, 0x1, 0x1, 0x21, 0x1, 0x23, 0x11, 0x23, 0x11, 0x21, 0x11, 0x33, 0x3, 0x1, 0xB7, 0x2, 0x70, 0xFE, 0x57, 0x18, 0x1D, 0x2, 0x96, 0xFC, 0x41, 0xF3, 0x9, 0x76, 0x36, 0x84, 0x14, 0x26, 0x3, 0x96, 0x1, 0x27, 0xFD, 0x8A, 0x1, 0xAC, 0x1, 0x32, 0xFE, 0x6, 0x2, 0x19, 0xFE, 0xD4, 0xFE, 0x4A, 0xA5, 0xFD, 0xFE, 0xD9, 0xB8, 0xD, 0xCA, 0x4, 0x1B, 0xFE, 0x55, 0xFE, 0x6F, 0xFC, 0xF1, 0x1, 0x66, 0xFE, 0x9A, 0x2, 0x30, 0x34, 0x1, 0x19, 0x1, 0x27, 0x2, 0x72, 0xFD, 0x98, 0x2, 0x68, 0xFD, 0x98, 0x2, 0x68, 0xFD, 0x4C, 0xFD, 0x4, 0x2, 0x76, 0xFD, 0x8A, 0x2, 0x76, 0xFE, 0x54, 0xFD, 0xD0, 0x0, 0x2, 0x0, 0x27, 0xFE, 0xBE, 0x8, 0xFC, 0x4, 0x3A, 0x0, 0x5, 0x0, 0x25, 0x0, 0x0, 0x25, 0x21, 0x11, 0x21, 0x7, 0x2, 0x3, 0x11, 0x23, 0x11, 0x33, 0x36, 0x36, 0x37, 0x13, 0x21, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x1, 0x21, 0x1, 0x1, 0x21, 0x1, 0x23, 0x11, 0x23, 0x11, 0x23, 0x15, 0x33, 0x11, 0x23, 0x11, 0x1, 0x9E, 0x1, 0x9F, 0xFE, 0xEF, 0x5, 0xE, 0xFB, 0xF7, 0x5A, 0x54, 0x58, 0x7, 0xC, 0x2, 0xF0, 0xF6, 0xF3, 0x6B, 0x1, 0x2B, 0x1, 0x2C, 0xFE, 0x79, 0x1, 0xA8, 0xFE, 0xC4, 0xFE, 0xD4, 0x7B, 0xF3, 0xF6, 0x96, 0xF3, 0xC3, 0x2, 0xA6, 0xB6, 0xFE, 0xC4, 0xFE, 0x89, 0xFE, 0xBE, 0x2, 0x5, 0x5E, 0xC9, 0xCD, 0x1, 0x83, 0xFE, 0x51, 0x1, 0xAF, 0xFE, 0x51, 0x1, 0xAF, 0xFD, 0xFA, 0xFD, 0xCC, 0x1, 0xAD, 0xFE, 0x53, 0x1, 0xAD, 0xEA, 0xFD, 0xFB, 0x1, 0x42, 0x0, 0x3, 0x0, 0x3A, 0xFE, 0x9A, 0x5, 0xF2, 0x5, 0xB0, 0x0, 0x3, 0x0, 0x7, 0x0, 0x1B, 0x0, 0x0, 0x1, 0x11, 0x23, 0x1, 0x7, 0x3, 0x21, 0x11, 0x13, 0x11, 0x21, 0x11, 0x23, 0x3, 0x33, 0x13, 0x26, 0x3, 0x11, 0x33, 0x11, 0x14, 0x17, 0x1, 0x21, 0x11, 0x33, 0x3, 0x4, 0x3D, 0x66, 0xFE, 0xEB, 0x6C, 0xB1, 0x2, 0x98, 0xB8, 0xFC, 0x41, 0xF4, 0x8, 0x51, 0xD6, 0xEC, 0x7, 0xFD, 0x61, 0x1, 0x82, 0x1, 0xEB, 0xB9, 0xD, 0x2, 0xE0, 0x2, 0x5, 0xFD, 0xFB, 0xCA, 0xFE, 0xB4, 0x1, 0x4B, 0xFC, 0x85, 0x1, 0x66, 0xFE, 0x9A, 0x2, 0x30, 0x1, 0x7C, 0x62, 0x1, 0x2C, 0x1, 0xDC, 0xFE, 0x37, 0xAE, 0x36, 0x2, 0xAD, 0xFB, 0x1A, 0xFD, 0xD0, 0x0, 0x3, 0x0, 0x2B, 0xFE, 0xBE, 0x4, 0xC9, 0x4, 0x3A, 0x0, 0x3, 0x0, 0x8, 0x0, 0x1C, 0x0, 0x0, 0x1, 0x23, 0x3, 0x33, 0x5, 0x7, 0x21, 0x35, 0x21, 0x3, 0x11, 0x23, 0x11, 0x33, 0x37, 0x26, 0x27, 0x11, 0x33, 0x11, 0x14, 0x17, 0x1, 0x21, 0x11, 0x33, 0x11, 0x23, 0x11, 0x3, 0x41, 0x1F, 0xD1, 0xF0, 0xFE, 0x9B, 0x6A, 0x1, 0xCF, 0xFE, 0xC2, 0xE2, 0xF6, 0x3A, 0x97, 0xA4, 0x2, 0xE8, 0x31, 0x1, 0x3F, 0x1, 0x85, 0x96, 0xF2, 0x3, 0x69, 0xFE, 0xB8, 0xB8, 0xA6, 0xA4, 0xFE, 0x99, 0xFE, 0xBE, 0x2, 0x5, 0xE6, 0x64, 0xF0, 0x1, 0x3D, 0xFE, 0xC9, 0x76, 0x36, 0x1, 0xE3, 0xFC, 0x89, 0xFD, 0xFB, 0x1, 0x42, 0x0, 0x1, 0x0, 0x2D, 0xFE, 0x99, 0x5, 0xCF, 0x5, 0xB0, 0x0, 0x13, 0x0, 0x0, 0x1, 0x21, 0x11, 0x33, 0x11, 0x23, 0x11, 0x23, 0x11, 0x21, 0x3, 0x2, 0x2, 0x7, 0x23, 0x35, 0x37, 0x36, 0x36, 0x13, 0x1, 0x62, 0x3, 0xAC, 0xC1, 0xF3, 0xCB, 0xFE, 0x42, 0x1A, 0x16, 0xC5, 0xE7, 0x4A, 0x31, 0x7B, 0x61, 0xD, 0x5, 0xB0, 0xFB, 0x5, 0xFD, 0xE4, 0x1, 0x67, 0x4, 0xE5, 0xFD, 0xCB, 0xFE, 0x8C, 0xFE, 0xC7, 0x3, 0xCA, 0x5, 0xE, 0xF4, 0x1, 0x2E, 0x0, 0x1, 0x0, 0x22, 0xFE, 0x99, 0x4, 0xD8, 0x4, 0x3A, 0x0, 0x13, 0x0, 0x0, 0x1, 0x21, 0x11, 0x33, 0x11, 0x23, 0x11, 0x23, 0x11, 0x21, 0x3, 0x2, 0x6, 0x7, 0x23, 0x27, 0x37, 0x36, 0x36, 0x37, 0x1, 0xA, 0x3, 0xA, 0xC4, 0xF2, 0xC5, 0xFE, 0xCF, 0x15, 0x13, 0xAA, 0xAC, 0x4F, 0x1, 0x27, 0x5F, 0x44, 0xA, 0x4, 0x3A, 0xFC, 0x7B, 0xFD, 0xE4, 0x1, 0x67, 0x3, 0x76, 0xFE, 0x8B, 0xFE, 0xEB, 0xEA, 0x2, 0xCB, 0x3, 0x8, 0xC1, 0xD5, 0x0, 0x1, 0xFB, 0x6C, 0x4, 0xE1, 0x0, 0x1D, 0x6, 0x1, 0x0, 0xE, 0x0, 0x0, 0x1, 0x7, 0x23, 0x35, 0x1, 0x33, 0x17, 0x37, 0x33, 0x1, 0x15, 0x23, 0x27, 0x7, 0x23, 0xFC, 0xC2, 0x95, 0xC1, 0x1, 0xF, 0x8F, 0xB9, 0xBA, 0x8F, 0x1, 0x11, 0xC3, 0x96, 0x95, 0xD7, 0x5, 0x7D, 0x9C, 0xD, 0x1, 0x13, 0xBE, 0xBE, 0xFE, 0xEB, 0xB, 0x9C, 0x9C, 0x0, 0x4, 0xFB, 0xAF, 0x4, 0xC4, 0xFF, 0xC1, 0x6, 0x60, 0x0, 0x9, 0x0, 0x15, 0x0, 0x1F, 0x0, 0x2B, 0x0, 0x0, 0x0, 0x36, 0x33, 0x32, 0x16, 0x14, 0x6, 0x23, 0x22, 0x26, 0x37, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x5, 0x34, 0x36, 0x32, 0x16, 0x15, 0x14, 0x6, 0x22, 0x26, 0x25, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x6, 0x23, 0x22, 0x26, 0xFC, 0xDB, 0x7F, 0x5F, 0x5E, 0x7F, 0x7F, 0x5E, 0x5F, 0x7F, 0x6D, 0x3F, 0x32, 0x31, 0x3F, 0x3F, 0x31, 0x32, 0x3F, 0xFE, 0x67, 0x43, 0x7C, 0x45, 0x45, 0x7C, 0x43, 0x3, 0xE, 0x44, 0x3E, 0x3D, 0x45, 0x45, 0x3D, 0x3E, 0x44, 0x5, 0xE6, 0x7A, 0x7A, 0xAC, 0x76, 0x76, 0x56, 0x2B, 0x44, 0x43, 0x2C, 0x2E, 0x44, 0x44, 0x6F, 0x32, 0x44, 0x44, 0x32, 0x31, 0x45, 0x45, 0x2F, 0x32, 0x45, 0x45, 0x32, 0x31, 0x44, 0x44, 0x0, 0x3, 0xFB, 0xD1, 0x4, 0x60, 0xFF, 0x9F, 0x6, 0x9D, 0x0, 0x19, 0x0, 0x25, 0x0, 0x31, 0x0, 0x0, 0x1, 0x22, 0x26, 0x27, 0x6, 0x6, 0x23, 0x22, 0x26, 0x35, 0x35, 0x34, 0x36, 0x33, 0x32, 0x16, 0x17, 0x36, 0x36, 0x33, 0x32, 0x16, 0x15, 0x15, 0x14, 0x6, 0x27, 0x32, 0x37, 0x35, 0x34, 0x23, 0x22, 0x6, 0x7, 0x15, 0x16, 0x16, 0x21, 0x32, 0x36, 0x37, 0x35, 0x26, 0x26, 0x23, 0x22, 0x7, 0x15, 0x14, 0xFE, 0xA7, 0x52, 0x7A, 0x23, 0x23, 0x79, 0x52, 0x74, 0x85, 0x85, 0x73, 0x52, 0x7A, 0x23, 0x23, 0x7B, 0x52, 0x72, 0x85, 0x85, 0x73, 0x6F, 0x3, 0x71, 0x4E, 0x5B, 0x7, 0x6, 0x5C, 0xFE, 0x70, 0x4C, 0x5C, 0x6, 0x6, 0x5B, 0x4E, 0x73, 0x2, 0x4, 0x60, 0x60, 0x3B, 0x3B, 0x60, 0x9D, 0x73, 0x1D, 0x73, 0x9D, 0x5E, 0x3A, 0x3A, 0x5E, 0x9D, 0x73, 0x1D, 0x73, 0x9D, 0x71, 0x97, 0x25, 0x9F, 0x86, 0x1D, 0x11, 0x1D, 0x8A, 0x8A, 0x1D, 0x11, 0x1D, 0x86, 0x9A, 0x22, 0x9F, 0x0, 0x1, 0xFC, 0x8A, 0x4, 0x86, 0xFE, 0xE6, 0x7, 0x2E, 0x0, 0x8, 0x0, 0x0, 0x1, 0x1, 0x35, 0x17, 0x11, 0x33, 0x11, 0x37, 0x15, 0xFD, 0xB8, 0xFE, 0xD2, 0xE3, 0x97, 0xE2, 0x4, 0x86, 0x1, 0x2D, 0xC3, 0xE2, 0x1, 0x9A, 0xFE, 0x67, 0xE1, 0xC3, 0xFF, 0xFF, 0xFC, 0x25, 0x4, 0xA7, 0xFF, 0x14, 0x6, 0xCB, 0x0, 0x27, 0x1, 0xD4, 0xFF, 0xA, 0x6, 0x14, 0x0, 0x27, 0x1, 0xD4, 0x0, 0xE5, 0x6, 0x14, 0x0, 0x7, 0x1, 0xD4, 0xFF, 0xF7, 0x7, 0x40, 0x0, 0x2, 0xFB, 0xA6, 0xFD, 0xD8, 0x0, 0x6, 0xFF, 0x7F, 0x0, 0xB, 0x0, 0x17, 0x0, 0x0, 0x5, 0x17, 0x37, 0x33, 0x7, 0x17, 0x23, 0x27, 0x7, 0x23, 0x37, 0x27, 0x21, 0x17, 0x37, 0x33, 0x7, 0x17, 0x23, 0x27, 0x7, 0x23, 0x37, 0x27, 0xFE, 0xA6, 0x5B, 0x5C, 0xA3, 0xA2, 0xA8, 0xA3, 0x61, 0x61, 0xA3, 0xA8, 0xA2, 0xFE, 0x4A, 0x5B, 0x5C, 0xA3, 0xA2, 0xA8, 0xA3, 0x61, 0x61, 0xA3, 0xA8, 0xA2, 0x81, 0x7D, 0x7D, 0xD0, 0xD7, 0x84, 0x84, 0xD7, 0xD0, 0x7D, 0x7D, 0xD0, 0xD7, 0x84, 0x84, 0xD7, 0xD0, 0x0, 0x1, 0xFB, 0x4C, 0xFE, 0x94, 0x0, 0x25, 0xFF, 0x8B, 0x0, 0x26, 0x0, 0x0, 0x5, 0x32, 0x36, 0x33, 0x32, 0x16, 0x17, 0x7, 0x26, 0x23, 0x22, 0x6, 0x6, 0x23, 0x22, 0x26, 0x26, 0x27, 0x23, 0x22, 0x6, 0x6, 0x22, 0x26, 0x26, 0x23, 0x22, 0x7, 0x27, 0x36, 0x36, 0x33, 0x32, 0x16, 0x32, 0x36, 0x33, 0x32, 0x16, 0xFE, 0x86, 0x37, 0x50, 0x55, 0x45, 0x6B, 0x13, 0x7D, 0x1A, 0x3B, 0x2B, 0x34, 0x3C, 0x32, 0x34, 0x3B, 0x33, 0x27, 0x4, 0x2B, 0x34, 0x3C, 0x66, 0x3B, 0x35, 0x2A, 0x39, 0x1C, 0x7D, 0x13, 0x6E, 0x47, 0x51, 0x4F, 0x6E, 0x4B, 0x4C, 0x4B, 0x4A, 0xCF, 0x5A, 0x6A, 0x4E, 0x33, 0x4D, 0x2D, 0x2C, 0x2C, 0x2C, 0x1, 0x2D, 0x2C, 0x2C, 0x2D, 0x4B, 0x33, 0x4D, 0x69, 0x5A, 0x5A, 0x5A, 0x0, 0x1, 0xFD, 0x5B, 0xFD, 0xD5, 0xFE, 0xBD, 0xFF, 0x9C, 0x0, 0xB, 0x0, 0x0, 0x5, 0x33, 0x15, 0x16, 0x33, 0x32, 0x37, 0x15, 0x6, 0x23, 0x22, 0x3, 0xFD, 0x5B, 0xB4, 0x4, 0x70, 0x1F, 0x1B, 0x30, 0x36, 0xF7, 0x5, 0x64, 0xC5, 0x68, 0x7, 0x93, 0xE, 0x1, 0x2, 0xFF, 0xFF, 0xFC, 0x76, 0xFD, 0xD5, 0xFF, 0x3D, 0xFF, 0x9C, 0x0, 0x27, 0x3, 0x27, 0xFF, 0x1B, 0x0, 0x0, 0x0, 0x7, 0x3, 0x27, 0x0, 0x80, 0x0, 0x0, 0x0, 0x1, 0xFD, 0x5B, 0xFE, 0x18, 0xFF, 0x38, 0x0, 0x96, 0x0, 0x3, 0x0, 0x0, 0x27, 0x1, 0x27, 0x1, 0xC8, 0xFE, 0xA1, 0x7E, 0x1, 0x64, 0x4B, 0xFD, 0xCD, 0x49, 0x2, 0x35, 0x0, 0x1, 0xFD, 0x57, 0xFE, 0x10, 0xFF, 0x3F, 0x0, 0x96, 0x0, 0xD, 0x0, 0x0, 0x1, 0x22, 0x26, 0x35, 0x34, 0x36, 0x37, 0x13, 0x17, 0x3, 0x16, 0x15, 0x14, 0x6, 0xFD, 0xD2, 0x33, 0x48, 0x43, 0x31, 0xFC, 0x78, 0xFA, 0x9, 0x48, 0xFE, 0x10, 0x48, 0x33, 0x32, 0x47, 0x3, 0x1, 0x8F, 0x4B, 0xFE, 0x70, 0x17, 0x19, 0x33, 0x48, 0x0, 0x2, 0xFB, 0xAA, 0x5, 0x2, 0xFF, 0xDD, 0x6, 0xAF, 0x0, 0xD, 0x0, 0x1B, 0x0, 0x0, 0x3, 0x27, 0x36, 0x36, 0x35, 0x34, 0x26, 0x27, 0x37, 0x16, 0x16, 0x15, 0x14, 0x6, 0x5, 0x26, 0x26, 0x35, 0x34, 0x36, 0x37, 0x17, 0x6, 0x6, 0x15, 0x14, 0x16, 0x17, 0xDE, 0xE, 0x22, 0x40, 0x3F, 0x23, 0xE, 0x3A, 0x81, 0x81, 0xFD, 0x8, 0x39, 0x81, 0x81, 0x39, 0xE, 0x23, 0x3E, 0x3F, 0x22, 0x5, 0x2, 0x4A, 0x11, 0x3E, 0x3F, 0x3C, 0x3E, 0x10, 0x4B, 0xF, 0x6B, 0x5B, 0x5C, 0x6C, 0x10, 0x10, 0x6C, 0x5C, 0x5A, 0x6C, 0xF, 0x4B, 0x10, 0x40, 0x3A, 0x3E, 0x3F, 0x11, 0x0, 0x4, 0xFA, 0xED, 0x5, 0x2, 0x0, 0xB0, 0x6, 0xAF, 0x0, 0xD, 0x0, 0x1B, 0x0, 0x29, 0x0, 0x37, 0x0, 0x0, 0x3, 0x27, 0x36, 0x36, 0x35, 0x34, 0x26, 0x27, 0x37, 0x16, 0x16, 0x15, 0x14, 0x6, 0x5, 0x27, 0x36, 0x36, 0x35, 0x34, 0x26, 0x27, 0x37, 0x16, 0x16, 0x15, 0x14, 0x6, 0x5, 0x26, 0x26, 0x35, 0x34, 0x36, 0x37, 0x17, 0x6, 0x6, 0x15, 0x14, 0x16, 0x17, 0x7, 0x26, 0x26, 0x35, 0x34, 0x36, 0x37, 0x17, 0x6, 0x6, 0x15, 0x14, 0x16, 0x17, 0xB, 0xE, 0x23, 0x3F, 0x3F, 0x23, 0xE, 0x3A, 0x81, 0x81, 0xFE, 0xFE, 0xE, 0x22, 0x40, 0x3F, 0x23, 0xE, 0x3A, 0x81, 0x81, 0xFD, 0x9, 0x3A, 0x81, 0x81, 0x3A, 0xE, 0x23, 0x3F, 0x3F, 0x23, 0xD6, 0x3A, 0x81, 0x81, 0x3A, 0xE, 0x23, 0x3F, 0x3F, 0x23, 0x5, 0x2, 0x4A, 0x11, 0x3E, 0x3F, 0x3C, 0x3E, 0x10, 0x4B, 0xF, 0x6B, 0x5B, 0x5C, 0x6C, 0x10, 0x4A, 0x11, 0x3E, 0x3F, 0x3C, 0x3E, 0x10, 0x4B, 0xF, 0x6B, 0x5B, 0x5C, 0x6C, 0x10, 0x10, 0x6C, 0x5C, 0x5A, 0x6C, 0xF, 0x4B, 0x10, 0x40, 0x3A, 0x3E, 0x3F, 0x11, 0x4A, 0x10, 0x6C, 0x5C, 0x5A, 0x6C, 0xF, 0x4B, 0x10, 0x40, 0x3A, 0x3E, 0x3F, 0x11, 0x0, 0x2, 0xFB, 0x9D, 0xFD, 0xE3, 0xFF, 0xD0, 0xFF, 0x90, 0x0, 0xD, 0x0, 0x1B, 0x0, 0x0, 0x3, 0x27, 0x36, 0x36, 0x35, 0x34, 0x26, 0x27, 0x37, 0x16, 0x16, 0x15, 0x14, 0x6, 0x5, 0x26, 0x26, 0x35, 0x34, 0x36, 0x37, 0x17, 0x6, 0x6, 0x15, 0x14, 0x16, 0x17, 0xEB, 0xE, 0x22, 0x40, 0x3F, 0x23, 0xE, 0x3A, 0x81, 0x81, 0xFD, 0x8, 0x39, 0x81, 0x81, 0x39, 0xE, 0x23, 0x3E, 0x3F, 0x22, 0xFD, 0xE3, 0x49, 0x11, 0x3F, 0x3F, 0x3B, 0x3D, 0x11, 0x4C, 0xF, 0x6B, 0x5B, 0x5C, 0x6D, 0xF, 0xF, 0x6D, 0x5C, 0x59, 0x6D, 0xF, 0x4C, 0x11, 0x3F, 0x39, 0x3F, 0x3F, 0x11, 0x0, 0x2, 0xFA, 0xEF, 0x1, 0x77, 0x0, 0xA0, 0x3, 0x25, 0x0, 0xC, 0x0, 0x19, 0x0, 0x0, 0x3, 0x27, 0x36, 0x36, 0x35, 0x34, 0x26, 0x27, 0x37, 0x16, 0x16, 0x14, 0x6, 0x5, 0x26, 0x26, 0x35, 0x34, 0x36, 0x37, 0x17, 0x6, 0x15, 0x14, 0x16, 0x17, 0x1A, 0xE, 0x22, 0x3F, 0x3E, 0x23, 0xE, 0x39, 0x81, 0x81, 0xFB, 0x8B, 0x3A, 0x81, 0x81, 0x3A, 0xE, 0x62, 0x3F, 0x23, 0x1, 0x77, 0x4A, 0x11, 0x3E, 0x40, 0x3B, 0x3E, 0x10, 0x4C, 0xF, 0x6B, 0xB8, 0x6C, 0x10, 0x10, 0x6C, 0x5C, 0x5A, 0x6D, 0xF, 0x4C, 0x2D, 0x5C, 0x3F, 0x3F, 0x11, 0x0, 0x2, 0x0, 0x8, 0x0, 0x0, 0x4, 0x98, 0x4, 0x3A, 0x0, 0x2, 0x0, 0xA, 0x0, 0x0, 0x1, 0x3, 0x3, 0x1, 0x27, 0x21, 0x7, 0x23, 0x1, 0x33, 0x1, 0x2, 0xF6, 0xA6, 0xA5, 0x1, 0xF0, 0x59, 0xFE, 0x1D, 0x59, 0xFE, 0x1, 0xCD, 0xF7, 0x1, 0xCC, 0x1, 0x99, 0x1, 0x9A, 0xFE, 0x66, 0xFE, 0x67, 0xDC, 0xDC, 0x4, 0x3A, 0xFB, 0xC6, 0x0, 0x2, 0xFF, 0xF0, 0x0, 0x0, 0x6, 0x4, 0x4, 0x3A, 0x0, 0x2, 0x0, 0x12, 0x0, 0x0, 0x1, 0x3, 0x1, 0x1, 0x27, 0x21, 0x7, 0x21, 0x1, 0x21, 0x15, 0x21, 0x17, 0x21, 0x15, 0x21, 0x13, 0x21, 0x15, 0x2, 0xEF, 0x14, 0xFE, 0xFA, 0x1, 0x2B, 0x9, 0xFE, 0x76, 0x78, 0xFE, 0xFB, 0x2, 0x6F, 0x3, 0x77, 0xFD, 0xF6, 0xA, 0x1, 0xC3, 0xFE, 0x45, 0xC, 0x2, 0x1A, 0x1, 0x9D, 0x1, 0xE1, 0xFE, 0x1F, 0xFE, 0x63, 0xDC, 0xDC, 0x4, 0x3A, 0xC1, 0xE4, 0xC1, 0xFE, 0xED, 0xC1, 0x0, 0x3, 0x0, 0x3D, 0xFF, 0xEC, 0x6, 0x79, 0x4, 0x50, 0x0, 0xA, 0x0, 0x12, 0x0, 0x3C, 0x0, 0x0, 0x1, 0x22, 0x6, 0x7, 0x15, 0x33, 0x32, 0x36, 0x35, 0x34, 0x26, 0x1, 0x32, 0x36, 0x37, 0x21, 0x15, 0x14, 0x16, 0x5, 0x22, 0x27, 0x6, 0x27, 0x22, 0x2, 0x35, 0x35, 0x21, 0x26, 0x26, 0x23, 0x22, 0x6, 0x7, 0x27, 0x36, 0x36, 0x33, 0x32, 0x17, 0x36, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x6, 0x23, 0x23, 0x15, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x17, 0x14, 0x6, 0x4, 0xD2, 0x3F, 0x85, 0x2B, 0xBD, 0x71, 0x76, 0x58, 0xFC, 0xD0, 0x6C, 0x77, 0xE, 0xFE, 0x3D, 0x60, 0x3, 0xB, 0xE1, 0x6D, 0x82, 0xC9, 0xD9, 0xE9, 0x2, 0xB7, 0x9, 0x8D, 0x92, 0x70, 0x8B, 0x36, 0x48, 0x29, 0xC7, 0x98, 0xFC, 0x8D, 0x35, 0xCC, 0x9C, 0xB6, 0xC2, 0xEF, 0xE8, 0xBF, 0x5F, 0x58, 0x5F, 0x6F, 0xF2, 0xF7, 0x3, 0x97, 0x3E, 0x29, 0xD0, 0x65, 0x42, 0x3E, 0x52, 0xFD, 0x19, 0x96, 0x73, 0x1E, 0x62, 0x89, 0xC3, 0x84, 0x85, 0x1, 0x1, 0x8, 0xE2, 0x8D, 0x7F, 0xAA, 0x3D, 0x1F, 0xA6, 0x20, 0x59, 0xA2, 0x3E, 0x64, 0xB5, 0x98, 0x9D, 0xAD, 0x47, 0x5A, 0x68, 0x5C, 0x3F, 0x13, 0x8F, 0xBC, 0x0, 0x3, 0x0, 0x1B, 0x0, 0x0, 0x4, 0xF3, 0x4, 0x3A, 0x0, 0x6, 0x0, 0xD, 0x0, 0x21, 0x0, 0x0, 0x1, 0x15, 0x33, 0x32, 0x35, 0x34, 0x27, 0x3, 0x11, 0x21, 0x32, 0x35, 0x34, 0x27, 0x1, 0x11, 0x23, 0x35, 0x33, 0x11, 0x21, 0x32, 0x16, 0x15, 0x14, 0x7, 0x33, 0x15, 0x23, 0x16, 0x15, 0x14, 0x6, 0x23, 0x1, 0xCA, 0xC9, 0xCF, 0xCA, 0xCE, 0x1, 0xA, 0xBC, 0xB4, 0xFD, 0xFB, 0xBC, 0xBC, 0x1, 0xB8, 0xD1, 0xF4, 0x3B, 0xDA, 0xA7, 0x37, 0xE3, 0xCC, 0x3, 0x79, 0xFE, 0x7B, 0x80, 0x3, 0xFE, 0x54, 0xFE, 0xF4, 0x85, 0x84, 0x3, 0xFE, 0x33, 0x1, 0xCD, 0xAE, 0x1, 0xBF, 0x92, 0x9A, 0x54, 0x3F, 0xAE, 0x40, 0x58, 0x9A, 0x9B, 0x0, 0x1, 0x0, 0x50, 0xFF, 0xEF, 0x4, 0x1A, 0x4, 0x4E, 0x0, 0x19, 0x0, 0x0, 0x1, 0x33, 0x6, 0x4, 0x23, 0x22, 0x0, 0x35, 0x35, 0x34, 0x0, 0x33, 0x32, 0x16, 0x17, 0x23, 0x26, 0x23, 0x22, 0x6, 0x15, 0x15, 0x14, 0x16, 0x32, 0x36, 0x3, 0x26, 0xF3, 0xF, 0xFF, 0x0, 0xCD, 0xD5, 0xFE, 0xE8, 0x1, 0x18, 0xD5, 0xD2, 0xFC, 0xF, 0xF3, 0x1D, 0xCD, 0x71, 0x8A, 0x8A, 0xE2, 0x69, 0x1, 0x94, 0xD3, 0xD2, 0x1, 0x12, 0xE0, 0x7C, 0xE0, 0x1, 0x11, 0xD1, 0xD1, 0xE1, 0xAA, 0x85, 0x7D, 0x85, 0xAC, 0x6E, 0x0, 0x2, 0x0, 0x86, 0x0, 0x0, 0x4, 0x3A, 0x4, 0x3A, 0x0, 0x9, 0x0, 0x13, 0x0, 0x0, 0x1, 0x11, 0x33, 0x32, 0x36, 0x35, 0x35, 0x34, 0x26, 0x23, 0x1, 0x11, 0x21, 0x32, 0x0, 0x15, 0x15, 0x14, 0x0, 0x23, 0x1, 0x78, 0xC5, 0x72, 0x98, 0x98, 0x72, 0xFE, 0x49, 0x1, 0xB7, 0xD7, 0x1, 0x26, 0xFE, 0xDA, 0xD7, 0x3, 0x79, 0xFD, 0x48, 0xA3, 0x79, 0x80, 0x7A, 0xA2, 0xFC, 0x87, 0x4, 0x3A, 0xFE, 0xF6, 0xD4, 0x7F, 0xD4, 0xFE, 0xF7, 0xFF, 0xFF, 0x0, 0x2D, 0x0, 0x0, 0x4, 0x9E, 0x4, 0x3A, 0x0, 0x26, 0x3, 0x34, 0x64, 0x0, 0x0, 0x7, 0x7, 0xA4, 0xFF, 0x9D, 0xFF, 0x38, 0x0, 0x1, 0x0, 0x86, 0x0, 0x0, 0x3, 0xC6, 0x4, 0x3A, 0x0, 0xB, 0x0, 0x0, 0x33, 0x11, 0x21, 0x15, 0x21, 0x15, 0x21, 0x15, 0x21, 0x11, 0x21, 0x15, 0x86, 0x3, 0x40, 0xFD, 0xB2, 0x1, 0xF8, 0xFE, 0x8, 0x2, 0x4E, 0x4, 0x3A, 0xC1, 0xE2, 0xC2, 0xFE, 0xEC, 0xC1, 0xFF, 0xFF, 0x0, 0x4E, 0xFF, 0xEC, 0x3, 0xC4, 0x4, 0x4D, 0x0, 0x6, 0x2, 0x85, 0x0, 0x0, 0x0, 0x2, 0x0, 0x7A, 0xFE, 0x65, 0x1, 0x8D, 0x4, 0x3A, 0x0, 0x3, 0x0, 0xF, 0x0, 0x0, 0x1, 0x11, 0x23, 0x11, 0x3, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x6, 0x23, 0x22, 0x26, 0x1, 0x7C, 0xF3, 0xF, 0x49, 0x40, 0x41, 0x49, 0x49, 0x41, 0x40, 0x49, 0x4, 0x3A, 0xFB, 0xC6, 0x4, 0x3A, 0xFA, 0xAE, 0x37, 0x4B, 0x4B, 0x37, 0x38, 0x4B, 0x4B, 0x0, 0x1, 0x0, 0x1A, 0xFF, 0xEE, 0x3, 0x78, 0x4, 0x3A, 0x0, 0xF, 0x0, 0x0, 0x1, 0x33, 0x11, 0x14, 0x6, 0x23, 0x22, 0x26, 0x35, 0x33, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x2, 0x86, 0xF2, 0xEF, 0xB6, 0xC4, 0xF5, 0xF3, 0x70, 0x56, 0x4D, 0x66, 0x4, 0x3A, 0xFD, 0x38, 0xB2, 0xD2, 0xB9, 0xBB, 0x5D, 0x56, 0x6B, 0x58, 0x0, 0x1, 0x0, 0x84, 0x0, 0x0, 0x4, 0x53, 0x4, 0x3A, 0x0, 0xC, 0x0, 0x0, 0x21, 0x1, 0x23, 0x11, 0x23, 0x11, 0x33, 0x11, 0x33, 0x1, 0x21, 0x1, 0x1, 0x3, 0x1E, 0xFE, 0xC6, 0x6E, 0xF2, 0xF2, 0x55, 0x1, 0x42, 0x1, 0x2C, 0xFE, 0x69, 0x1, 0xB1, 0x1, 0xAE, 0xFE, 0x52, 0x4, 0x3A, 0xFE, 0x4C, 0x1, 0xB4, 0xFD, 0xFF, 0xFD, 0xC7, 0x0, 0x1, 0x0, 0x2D, 0x0, 0x0, 0x3, 0x92, 0x4, 0x3A, 0x0, 0xD, 0x0, 0x0, 0x33, 0x11, 0x7, 0x35, 0x37, 0x11, 0x33, 0x11, 0x37, 0x15, 0x7, 0x11, 0x21, 0x15, 0xA7, 0x7A, 0x7A, 0xF2, 0xFE, 0xFE, 0x1, 0xF9, 0x1, 0xF2, 0x25, 0xB8, 0x25, 0x1, 0x90, 0xFE, 0xB9, 0x4D, 0xB8, 0x4D, 0xFE, 0x86, 0xC1, 0x0, 0x1, 0x0, 0x86, 0x0, 0x0, 0x5, 0x66, 0x4, 0x3A, 0x0, 0xC, 0x0, 0x0, 0x21, 0x1, 0x11, 0x23, 0x11, 0x21, 0x1, 0x1, 0x21, 0x11, 0x23, 0x11, 0x1, 0x2, 0xA3, 0xFE, 0xD5, 0xF2, 0x1, 0x32, 0x1, 0x3E, 0x1, 0x40, 0x1, 0x30, 0xF3, 0xFE, 0xD5, 0x2, 0xD2, 0xFD, 0x2E, 0x4, 0x3A, 0xFC, 0xF1, 0x3, 0xF, 0xFB, 0xC6, 0x2, 0xCF, 0xFD, 0x31, 0xFF, 0xFF, 0x0, 0x85, 0x0, 0x0, 0x4, 0x12, 0x4, 0x3A, 0x0, 0x6, 0x2, 0x86, 0xFF, 0x0, 0x0, 0x2, 0x0, 0x50, 0xFF, 0xEE, 0x4, 0x4E, 0x4, 0x4E, 0x0, 0xD, 0x0, 0x1A, 0x0, 0x0, 0x1, 0x14, 0x0, 0x23, 0x22, 0x0, 0x35, 0x35, 0x34, 0x0, 0x33, 0x32, 0x0, 0x15, 0x27, 0x34, 0x26, 0x22, 0x6, 0x15, 0x15, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x4, 0x4E, 0xFE, 0xE5, 0xE3, 0xE2, 0xFE, 0xE2, 0x1, 0x1C, 0xE2, 0xE3, 0x1, 0x1D, 0xF3, 0x8F, 0xFC, 0x8D, 0x8E, 0x7F, 0x7E, 0x8D, 0x1, 0xE7, 0xE0, 0xFE, 0xE7, 0x1, 0x19, 0xE0, 0x70, 0xE0, 0x1, 0x17, 0xFE, 0xE9, 0xE0, 0x1, 0x8B, 0xAA, 0xAA, 0x8B, 0x71, 0x8B, 0xAD, 0xAD, 0x8B, 0x0, 0x1, 0x0, 0x3B, 0xFF, 0xEC, 0x3, 0xE1, 0x4, 0x4E, 0x0, 0x1B, 0x0, 0x0, 0x13, 0x33, 0x16, 0x16, 0x33, 0x32, 0x36, 0x35, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x7, 0x23, 0x36, 0x36, 0x33, 0x32, 0x12, 0x17, 0x15, 0x14, 0x2, 0x23, 0x22, 0x24, 0x3B, 0xE5, 0x5, 0x7A, 0x58, 0x95, 0x62, 0x62, 0x95, 0x63, 0x6F, 0x5, 0xE5, 0x5, 0xF1, 0xC4, 0xF7, 0xF3, 0x2, 0xF3, 0xFA, 0xB4, 0xFF, 0x0, 0x1, 0x66, 0x4F, 0x68, 0xD9, 0x83, 0x24, 0x81, 0xDB, 0x7D, 0x57, 0xB3, 0xE4, 0xFE, 0xC4, 0xDD, 0x2A, 0xDF, 0xFE, 0xC0, 0xDD, 0x0, 0x2, 0x0, 0x50, 0x0, 0x26, 0x4, 0xB2, 0x4, 0x14, 0x0, 0xD, 0x0, 0x1B, 0x0, 0x0, 0x25, 0x22, 0x0, 0x35, 0x34, 0x0, 0x33, 0x33, 0x32, 0x0, 0x15, 0x14, 0x0, 0x7, 0x27, 0x32, 0x36, 0x35, 0x34, 0x26, 0x27, 0x23, 0x22, 0x6, 0x15, 0x14, 0x16, 0x33, 0x2, 0x77, 0xEB, 0xFE, 0xC4, 0x1, 0x3C, 0xEC, 0x14, 0xEC, 0x1, 0x3A, 0xFE, 0xCE, 0xE7, 0xD, 0x92, 0xD1, 0xCE, 0x91, 0x19, 0x8F, 0xD5, 0xD5, 0x8F, 0x26, 0x1, 0xB, 0xEB, 0xEF, 0x1, 0x9, 0xFE, 0xF7, 0xED, 0xEA, 0xFE, 0xF6, 0x4, 0xF3, 0x7D, 0x88, 0x86, 0x7D, 0x1, 0x7D, 0x89, 0x87, 0x7C, 0x0, 0x1, 0x0, 0x50, 0x0, 0x4A, 0x4, 0xB2, 0x3, 0xF0, 0x0, 0x1B, 0x0, 0x0, 0x1, 0x14, 0x16, 0x17, 0x15, 0x26, 0x2, 0x35, 0x34, 0x24, 0x37, 0x33, 0x32, 0x4, 0x15, 0x14, 0x6, 0x7, 0x35, 0x36, 0x36, 0x35, 0x34, 0x26, 0x23, 0x23, 0x22, 0x6, 0x1, 0x13, 0x68, 0x4F, 0x9D, 0xDD, 0x1, 0x3C, 0xDD, 0x2A, 0xDE, 0x1, 0x41, 0xE4, 0xB3, 0x57, 0x7D, 0xDB, 0x81, 0x24, 0x83, 0xD9, 0x2, 0x5, 0x58, 0x79, 0x5, 0xE5, 0x5, 0x1, 0x0, 0xB4, 0xF8, 0xF3, 0x2, 0xF4, 0xF8, 0xC4, 0xF1, 0x5, 0xE5, 0x5, 0x6F, 0x63, 0x95, 0x62, 0x62, 0x0, 0x3, 0x0, 0x25, 0x0, 0x26, 0x5, 0x6A, 0x4, 0x14, 0x0, 0x8, 0x0, 0x11, 0x0, 0x27, 0x0, 0x0, 0x1, 0x22, 0x7, 0x1, 0x36, 0x35, 0x34, 0x26, 0x27, 0x3, 0x32, 0x37, 0x1, 0x6, 0x15, 0x14, 0x16, 0x33, 0x5, 0x27, 0x6, 0x5, 0x23, 0x22, 0x0, 0x35, 0x34, 0x37, 0x27, 0x35, 0x17, 0x36, 0x25, 0x33, 0x32, 0x0, 0x15, 0x14, 0x7, 0x17, 0x2, 0xB7, 0x99, 0x60, 0x2, 0x5E, 0x13, 0xCE, 0x91, 0x4, 0x99, 0x5E, 0xFD, 0xA3, 0x13, 0xD5, 0x8F, 0x2, 0xB3, 0xD7, 0x94, 0xFE, 0xD9, 0x21, 0xEB, 0xFE, 0xC4, 0x20, 0x8B, 0xC9, 0x94, 0x1, 0x29, 0x21, 0xEC, 0x1, 0x3A, 0x20, 0x98, 0x3, 0x22, 0x3E, 0xFE, 0xD6, 0x2D, 0x37, 0x86, 0x7D, 0x1, 0xFD, 0xF7, 0x3C, 0x1, 0x29, 0x2C, 0x36, 0x87, 0x7C, 0x94, 0x6A, 0xC5, 0x4, 0x1, 0xB, 0xEB, 0x66, 0x56, 0x44, 0x91, 0x63, 0xC6, 0x4, 0xFE, 0xF7, 0xED, 0x66, 0x57, 0x4B, 0x0, 0x3, 0x0, 0x4C, 0xFF, 0xEC, 0x6, 0xE3, 0x4, 0x50, 0x0, 0xD, 0x0, 0x15, 0x0, 0x37, 0x0, 0x0, 0x1, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x15, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x1, 0x32, 0x36, 0x37, 0x21, 0x15, 0x14, 0x16, 0x5, 0x22, 0x26, 0x27, 0x6, 0x6, 0x27, 0x22, 0x2, 0x35, 0x35, 0x21, 0x26, 0x26, 0x23, 0x22, 0x6, 0x7, 0x27, 0x36, 0x36, 0x33, 0x32, 0x16, 0x17, 0x36, 0x36, 0x33, 0x32, 0x0, 0x15, 0x15, 0x14, 0x0, 0x5, 0xF1, 0x76, 0x89, 0x87, 0x76, 0x77, 0x88, 0x87, 0x76, 0xFC, 0x1F, 0x5B, 0x74, 0x12, 0xFE, 0x4B, 0x64, 0x3, 0x54, 0x7F, 0xC1, 0x3F, 0x40, 0xB8, 0x6D, 0xE2, 0xE2, 0x2, 0xAA, 0xA, 0x87, 0x80, 0x6B, 0x8D, 0x37, 0x4F, 0x35, 0xC6, 0x91, 0x7E, 0xC4, 0x41, 0x3F, 0xC0, 0x7D, 0xEE, 0x1, 0x3, 0xFE, 0xFD, 0x2, 0x29, 0x92, 0xD2, 0xD2, 0x93, 0x14, 0x8F, 0xD5, 0xD5, 0x8F, 0xFE, 0x9C, 0x93, 0x6F, 0x19, 0x60, 0x89, 0xC3, 0x5E, 0x52, 0x53, 0x5E, 0x1, 0x1, 0xF, 0xD9, 0x8F, 0x7C, 0xAD, 0x36, 0x26, 0x9E, 0x2F, 0x52, 0x5D, 0x52, 0x52, 0x5D, 0xFE, 0xC5, 0xEC, 0x15, 0xEB, 0xFE, 0xC4, 0x0, 0x2, 0x0, 0x4F, 0xFF, 0xEC, 0x3, 0x97, 0x4, 0x4E, 0x0, 0x16, 0x0, 0x20, 0x0, 0x0, 0x4, 0x26, 0x35, 0x35, 0x34, 0x37, 0x26, 0x35, 0x33, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x33, 0x14, 0x7, 0x16, 0x15, 0x15, 0x14, 0x6, 0x1, 0x14, 0x33, 0x32, 0x36, 0x35, 0x34, 0x26, 0x22, 0x6, 0x1, 0x3F, 0xF0, 0x9B, 0x9B, 0xF3, 0x49, 0x68, 0x66, 0x4A, 0xF4, 0x9B, 0x9B, 0xEE, 0xFE, 0x9A, 0xB1, 0x5F, 0x51, 0x52, 0xBE, 0x51, 0x14, 0xD9, 0xC9, 0x10, 0xD1, 0x7D, 0x8B, 0xD7, 0x6E, 0x98, 0x98, 0x6E, 0xD6, 0x8B, 0x7D, 0xD2, 0x10, 0xC9, 0xD9, 0x1, 0xA2, 0xDF, 0x77, 0x78, 0x65, 0x82, 0x7E, 0x0, 0x1, 0x0, 0x4F, 0x2, 0x1D, 0x4, 0x4D, 0x4, 0x4E, 0x0, 0x11, 0x0, 0x0, 0x1, 0x23, 0x35, 0x26, 0x26, 0x23, 0x22, 0x6, 0x15, 0x15, 0x23, 0x35, 0x36, 0x0, 0x33, 0x32, 0x0, 0x15, 0x4, 0x4D, 0xF3, 0x2, 0x8E, 0x7D, 0x7F, 0x8C, 0xF3, 0x1, 0x1, 0x1B, 0xE2, 0xE3, 0x1, 0x1D, 0x2, 0x1D, 0x42, 0x88, 0xA4, 0xA8, 0x8B, 0x3B, 0x3D, 0xDE, 0x1, 0x16, 0xFE, 0xE9, 0xE0, 0x0, 0x1, 0x0, 0x4F, 0xFF, 0xEC, 0x4, 0x4D, 0x2, 0x1E, 0x0, 0x11, 0x0, 0x0, 0x1, 0x33, 0x15, 0x14, 0x0, 0x23, 0x22, 0x0, 0x35, 0x35, 0x33, 0x15, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x3, 0x5A, 0xF3, 0xFE, 0xE3, 0xE3, 0xE2, 0xFE, 0xE4, 0xF3, 0x8C, 0x7F, 0x7E, 0x8F, 0x2, 0x1E, 0x3B, 0xE0, 0xFE, 0xE9, 0x1, 0x17, 0xE0, 0x3B, 0x3C, 0x8B, 0xA8, 0xA8, 0x8B, 0x0, 0x2, 0x0, 0x8F, 0x0, 0x0, 0x4, 0x3E, 0x4, 0x3A, 0x0, 0x8, 0x0, 0x13, 0x0, 0x0, 0x1, 0x11, 0x33, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x3, 0x11, 0x23, 0x11, 0x21, 0x32, 0x16, 0x15, 0x14, 0x6, 0x23, 0x1, 0x82, 0xEE, 0x70, 0x6B, 0x6B, 0x70, 0xEE, 0xF3, 0x1, 0xE1, 0xD8, 0xF6, 0xF6, 0xD8, 0x3, 0x79, 0xFE, 0x8A, 0x70, 0x49, 0x4B, 0x72, 0xFD, 0xC8, 0xFE, 0xBF, 0x4, 0x3A, 0xD5, 0xA7, 0xA8, 0xD5, 0x0, 0x2, 0x0, 0x31, 0x0, 0x0, 0x3, 0xEA, 0x4, 0x3A, 0x0, 0x8, 0x0, 0x15, 0x0, 0x0, 0x1, 0x11, 0x23, 0x22, 0x6, 0x15, 0x14, 0x16, 0x33, 0x13, 0x11, 0x23, 0x3, 0x23, 0x1, 0x26, 0x35, 0x34, 0x36, 0x33, 0x21, 0x11, 0x2, 0xF8, 0xE0, 0x66, 0x5D, 0x57, 0x5F, 0xED, 0xE2, 0xE8, 0xFD, 0x1, 0x0, 0xD0, 0xE9, 0xCE, 0x1, 0xD2, 0x2, 0x42, 0x1, 0x37, 0x65, 0x39, 0x38, 0x61, 0xFD, 0xBE, 0x1, 0x8E, 0xFE, 0x72, 0x1, 0xB6, 0x56, 0xD4, 0x95, 0xC5, 0xFB, 0xC6, 0x0, 0x2, 0x0, 0x31, 0x0, 0x0, 0x3, 0xEA, 0x4, 0x3A, 0x0, 0xC, 0x0, 0x15, 0x0, 0x0, 0x21, 0x21, 0x22, 0x26, 0x35, 0x34, 0x37, 0x1, 0x33, 0x13, 0x33, 0x11, 0x33, 0x3, 0x11, 0x23, 0x22, 0x6, 0x15, 0x14, 0x16, 0x33, 0x3, 0xEA, 0xFE, 0x2E, 0xCE, 0xE9, 0xD0, 0xFF, 0x0, 0xFD, 0xE8, 0xE2, 0xF2, 0xF2, 0xED, 0x5F, 0x57, 0x5D, 0x66, 0xC5, 0x95, 0xD4, 0x56, 0x1, 0xB6, 0xFE, 0x72, 0x1, 0x8E, 0xFC, 0x87, 0x1, 0x37, 0x5F, 0x3A, 0x3B, 0x63, 0xFF, 0xFF, 0x0, 0x25, 0x0, 0x0, 0x3, 0xD2, 0x4, 0x3A, 0x0, 0x6, 0x2, 0x8C, 0x1, 0x0, 0x0, 0x1, 0x0, 0x7A, 0xFF, 0xEE, 0x4, 0x78, 0x4, 0x3A, 0x0, 0x11, 0x0, 0x0, 0x1, 0x33, 0x11, 0x14, 0x4, 0x23, 0x22, 0x24, 0x35, 0x11, 0x33, 0x11, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x3, 0x85, 0xF3, 0xFE, 0xE2, 0xE1, 0xDF, 0xFE, 0xE0, 0xF2, 0x94, 0x79, 0x7D, 0x8F, 0x4, 0x3A, 0xFD, 0x5D, 0xCB, 0xDE, 0xDE, 0xCB, 0x2, 0xA3, 0xFD, 0x5D, 0x70, 0x78, 0x78, 0x70, 0x0, 0x1, 0x0, 0x5B, 0x0, 0x53, 0x4, 0xA9, 0x3, 0xD3, 0x0, 0x11, 0x0, 0x0, 0x37, 0x35, 0x21, 0x36, 0x36, 0x35, 0x34, 0x27, 0x21, 0x35, 0x21, 0x15, 0x7, 0x16, 0x15, 0x14, 0x6, 0x23, 0x5B, 0x2, 0x8E, 0x91, 0x69, 0xA3, 0xFD, 0x1B, 0x4, 0x3A, 0x79, 0x8D, 0xD4, 0xF3, 0x53, 0xF3, 0x1, 0x66, 0x44, 0xB8, 0x37, 0xF3, 0xD7, 0xD, 0x6D, 0xCA, 0x9F, 0xC6, 0x0, 0x3, 0x0, 0x5B, 0x0, 0x53, 0x6, 0x10, 0x3, 0xD3, 0x0, 0x11, 0x0, 0x1B, 0x0, 0x25, 0x0, 0x0, 0x25, 0x35, 0x21, 0x36, 0x36, 0x35, 0x34, 0x27, 0x21, 0x35, 0x21, 0x15, 0x7, 0x16, 0x15, 0x14, 0x6, 0x23, 0x1, 0x22, 0x26, 0x34, 0x36, 0x33, 0x32, 0x16, 0x14, 0x6, 0x3, 0x22, 0x26, 0x34, 0x36, 0x33, 0x32, 0x16, 0x14, 0x6, 0x1, 0xC2, 0x2, 0x8D, 0x91, 0x69, 0xA3, 0xFD, 0x1C, 0x4, 0x3A, 0x79, 0x8D, 0xD5, 0xF3, 0xFC, 0x8B, 0x31, 0x45, 0x45, 0x31, 0x32, 0x44, 0x44, 0x33, 0x31, 0x46, 0x46, 0x31, 0x32, 0x44, 0x44, 0x53, 0xF3, 0x1, 0x66, 0x44, 0xB8, 0x37, 0xF3, 0xD7, 0xD, 0x6D, 0xCA, 0x9F, 0xC6, 0x2, 0x32, 0x44, 0x7C, 0x44, 0x44, 0x7C, 0x44, 0xFE, 0x1D, 0x44, 0x7C, 0x44, 0x44, 0x7C, 0x44, 0x0, 0x1, 0x0, 0x5B, 0xFF, 0x28, 0x4, 0xA9, 0x5, 0x25, 0x0, 0x1F, 0x0, 0x0, 0x17, 0x35, 0x21, 0x32, 0x36, 0x35, 0x34, 0x26, 0x27, 0x21, 0x35, 0x21, 0x32, 0x36, 0x35, 0x34, 0x27, 0x21, 0x35, 0x21, 0x15, 0x7, 0x16, 0x15, 0x14, 0x7, 0x16, 0x16, 0x15, 0x14, 0x6, 0x23, 0x5B, 0x2, 0x8E, 0x92, 0x68, 0x63, 0x4D, 0xFD, 0x28, 0x2, 0x8E, 0x8A, 0x70, 0x77, 0xFC, 0xEF, 0x4, 0x3A, 0x74, 0x88, 0xAE, 0x4F, 0x5F, 0xD5, 0xEC, 0xD8, 0xF3, 0x69, 0x5A, 0x53, 0x69, 0x14, 0xF2, 0x69, 0x5A, 0x92, 0x3D, 0xF3, 0xDE, 0xB, 0x73, 0xC8, 0xD5, 0x53, 0x35, 0xA7, 0x71, 0x9D, 0xC7, 0xFF, 0xFF, 0x0, 0x1A, 0x0, 0x0, 0x3, 0xDE, 0x4, 0x3A, 0x0, 0x6, 0x0, 0x5B, 0x3, 0x0, 0xFF, 0xFF, 0x0, 0x25, 0x0, 0x0, 0x5, 0xD0, 0x4, 0x3A, 0x0, 0x6, 0x0, 0x5C, 0x3, 0x0, 0xFF, 0xFF, 0x0, 0x56, 0x0, 0x0, 0x3, 0xC4, 0x4, 0x3A, 0x0, 0x6, 0x0, 0x5F, 0x4, 0x0, 0x0, 0x1, 0x0, 0x4E, 0xFF, 0xEC, 0x3, 0xC4, 0x4, 0x3A, 0x0, 0x1A, 0x0, 0x0, 0x5, 0x22, 0x26, 0x26, 0x35, 0x33, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x34, 0x27, 0x23, 0x35, 0x1, 0x21, 0x35, 0x21, 0x15, 0x1, 0x16, 0x16, 0x15, 0x14, 0x6, 0x2, 0x8, 0x6D, 0xCB, 0x82, 0xF2, 0x6E, 0x61, 0x64, 0x5E, 0xBB, 0xB6, 0x1, 0x22, 0xFD, 0xDF, 0x3, 0x4C, 0xFE, 0xC0, 0xA7, 0xB0, 0xF2, 0x14, 0x48, 0x97, 0x76, 0x3D, 0x5E, 0x60, 0x47, 0xA4, 0x4, 0x7C, 0x1, 0x5, 0xC4, 0x9B, 0xFE, 0xCF, 0xB, 0xA2, 0x7E, 0xA6, 0xB1, 0x0, 0x1, 0x0, 0x57, 0xFF, 0xEC, 0x3, 0xD6, 0x4, 0x4E, 0x0, 0x27, 0x0, 0x0, 0x1, 0x14, 0x6, 0x23, 0x22, 0x26, 0x35, 0x34, 0x36, 0x37, 0x35, 0x36, 0x36, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x23, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x6, 0x7, 0x15, 0x22, 0x6, 0x15, 0x14, 0x16, 0x33, 0x32, 0x36, 0x37, 0x3, 0xD6, 0xEA, 0xDF, 0xC7, 0xEF, 0xC0, 0xA8, 0x8C, 0x7A, 0x58, 0x5C, 0x5F, 0x60, 0xF3, 0xE7, 0xCA, 0xC1, 0xE1, 0x9E, 0x94, 0xB8, 0x82, 0x64, 0x60, 0x52, 0x89, 0x5, 0x1, 0x56, 0x86, 0xE4, 0xAD, 0x91, 0x85, 0x86, 0x16, 0x4E, 0x9, 0x41, 0x3B, 0x34, 0x46, 0x63, 0x3F, 0x92, 0xC6, 0xB2, 0x85, 0x7F, 0x81, 0x1B, 0x55, 0x54, 0x39, 0x31, 0x47, 0x4F, 0x65, 0x0, 0x1, 0x0, 0x39, 0xFF, 0xEC, 0x4, 0x93, 0x4, 0x4D, 0x0, 0x20, 0x0, 0x0, 0x13, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x6, 0x7, 0x16, 0x33, 0x32, 0x37, 0x17, 0x6, 0x23, 0x22, 0x26, 0x27, 0x6, 0x6, 0x23, 0x22, 0x27, 0x37, 0x16, 0x33, 0x32, 0x37, 0x26, 0x27, 0x26, 0xEF, 0xC8, 0xAF, 0xB0, 0xC8, 0xA0, 0x56, 0x3E, 0x77, 0x63, 0x78, 0x1B, 0x77, 0x7F, 0x72, 0x8C, 0x39, 0x3A, 0x8C, 0x71, 0x7F, 0x77, 0x1B, 0x78, 0x63, 0x77, 0x3E, 0x9F, 0x3B, 0x1B, 0x2, 0xF7, 0x8B, 0xCB, 0xCB, 0x8B, 0xAC, 0xE5, 0x64, 0x53, 0x2B, 0xC3, 0x2B, 0x48, 0x3D, 0x3D, 0x48, 0x2B, 0xC3, 0x2B, 0x53, 0xAA, 0xA2, 0x4B, 0xFF, 0xFF, 0x0, 0x8F, 0x0, 0x0, 0x3, 0x57, 0x4, 0x3A, 0x0, 0x6, 0x2, 0x82, 0xA, 0x0, 0x0, 0x1, 0x0, 0x8, 0x0, 0x0, 0x4, 0x98, 0x4, 0x3A, 0x0, 0x6, 0x0, 0x0, 0x21, 0x1, 0x1, 0x23, 0x1, 0x33, 0x1, 0x3, 0x9B, 0xFE, 0xB5, 0xFE, 0xB6, 0xFE, 0x1, 0xCD, 0xF7, 0x1, 0xCC, 0x3, 0x33, 0xFC, 0xCD, 0x4, 0x3A, 0xFB, 0xC6, 0xFF, 0xFF, 0x0, 0x8F, 0x0, 0x0, 0x4, 0x1C, 0x4, 0x3A, 0x0, 0x6, 0x2, 0x8B, 0x9, 0x0, 0xFF, 0xFF, 0x0, 0x8F, 0x0, 0x0, 0x4, 0x3E, 0x4, 0x3A, 0x0, 0x6, 0x3, 0x47, 0x0, 0x0, 0x0, 0x1, 0x0, 0x2E, 0x0, 0x0, 0x5, 0x24, 0x4, 0x3A, 0x0, 0x15, 0x0, 0x0, 0x21, 0x23, 0x11, 0x26, 0x0, 0x3, 0x35, 0x33, 0x15, 0x12, 0x5, 0x11, 0x33, 0x11, 0x24, 0x13, 0x35, 0x33, 0x15, 0x2, 0x2, 0x7, 0x3, 0x26, 0xF3, 0xFF, 0xFE, 0xFD, 0x3, 0xF3, 0x6, 0x1, 0xC, 0xF3, 0x1, 0x5, 0x7, 0xF2, 0x3, 0xFE, 0xFD, 0x1, 0xB, 0x1A, 0x1, 0x2B, 0x1, 0x12, 0xD8, 0xE0, 0xFE, 0xAF, 0x36, 0x2, 0x67, 0xFD, 0x9A, 0x39, 0x1, 0x4A, 0xE3, 0xD9, 0xFE, 0xF2, 0xFE, 0xD5, 0x1C, 0xFF, 0xFF, 0x0, 0x22, 0x0, 0x0, 0x4, 0x14, 0x4, 0x3A, 0x0, 0x6, 0x2, 0x88, 0x0, 0x0, 0x0, 0x2, 0x0, 0x1B, 0x2, 0x8C, 0x4, 0x14, 0x6, 0xC1, 0x0, 0x2, 0x0, 0xA, 0x0, 0x0, 0x1, 0x3, 0x3, 0x1, 0x27, 0x21, 0x7, 0x23, 0x1, 0x33, 0x1, 0x2, 0xB1, 0x98, 0x99, 0x1, 0xBE, 0x52, 0xFE, 0x59, 0x53, 0xD7, 0x1, 0xA2, 0xBA, 0x1, 0x9D, 0x4, 0x1E, 0x1, 0xB1, 0xFE, 0x4F, 0xFE, 0x6E, 0xEB, 0xEB, 0x4, 0x35, 0xFB, 0xCB, 0x0, 0x2, 0x0, 0x1B, 0x2, 0x8C, 0x5, 0x8A, 0x6, 0xC1, 0x0, 0x2, 0x0, 0x12, 0x0, 0x0, 0x1, 0x3, 0x3, 0x1, 0x27, 0x21, 0x7, 0x23, 0x1, 0x21, 0x15, 0x21, 0x13, 0x21, 0x15, 0x21, 0x13, 0x21, 0x15, 0x2, 0xE6, 0x13, 0xF4, 0x1, 0x19, 0xA, 0xFE, 0x99, 0x84, 0xE8, 0x2, 0x5F, 0x2, 0xE2, 0xFE, 0x3E, 0xB, 0x1, 0x7C, 0xFE, 0x8B, 0xD, 0x1, 0xD1, 0x4, 0x30, 0x1, 0xD1, 0xFE, 0x2F, 0xFE, 0x5C, 0xFB, 0xFB, 0x4, 0x35, 0xA8, 0xFE, 0xF2, 0xA7, 0xFE, 0xD0, 0xA8, 0x0, 0x3, 0x0, 0x64, 0x2, 0x8C, 0x3, 0x88, 0x6, 0xC1, 0x0, 0x8, 0x0, 0xF, 0x0, 0x1D, 0x0, 0x0, 0x1, 0x11, 0x33, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x3, 0x11, 0x33, 0x32, 0x35, 0x34, 0x27, 0x1, 0x11, 0x21, 0x32, 0x16, 0x15, 0x14, 0x7, 0x16, 0x16, 0x15, 0x14, 0x6, 0x23, 0x1, 0x29, 0xC0, 0x56, 0x6A, 0x69, 0x62, 0xB5, 0xD7, 0xC3, 0xB5, 0xFE, 0x56, 0x1, 0x91, 0xAE, 0xCC, 0x9E, 0x5C, 0x5B, 0xC6, 0xAC, 0x6, 0x19, 0xFE, 0xEB, 0x47, 0x49, 0x4D, 0x38, 0xFE, 0x4E, 0xFE, 0xCC, 0x9B, 0x96, 0x3, 0xFE, 0x25, 0x4, 0x35, 0x8E, 0x97, 0x9C, 0x41, 0x19, 0x8C, 0x52, 0x9E, 0x9E, 0x0, 0x3, 0x0, 0x1B, 0x2, 0x8C, 0x4, 0x88, 0x6, 0xC1, 0x0, 0x8, 0x0, 0xF, 0x0, 0x23, 0x0, 0x0, 0x1, 0x11, 0x33, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x3, 0x11, 0x33, 0x32, 0x35, 0x34, 0x27, 0x1, 0x11, 0x23, 0x35, 0x33, 0x11, 0x21, 0x32, 0x16, 0x15, 0x14, 0x7, 0x33, 0x15, 0x23, 0x16, 0x15, 0x14, 0x6, 0x23, 0x1, 0xB0, 0xC0, 0x57, 0x6A, 0x6A, 0x61, 0xB6, 0xD7, 0xC3, 0xB5, 0xFE, 0x56, 0xD0, 0xD0, 0x1, 0x91, 0xAE, 0xCC, 0x39, 0xCB, 0xAB, 0x32, 0xC6, 0xAB, 0x6, 0x19, 0xFE, 0xEB, 0x47, 0x49, 0x4D, 0x38, 0xFE, 0x4E, 0xFE, 0xCC, 0x9B, 0x96, 0x3, 0xFE, 0x25, 0x1, 0xDB, 0x9D, 0x1, 0xBD, 0x8E, 0x97, 0x59, 0x3F, 0x9D, 0x43, 0x5C, 0x9E, 0x9E, 0x0, 0x2, 0x0, 0x64, 0x2, 0x8C, 0x3, 0xA7, 0x6, 0xC1, 0x0, 0x7, 0x0, 0x11, 0x0, 0x0, 0x1, 0x11, 0x33, 0x20, 0x13, 0x35, 0x10, 0x25, 0x1, 0x11, 0x21, 0x32, 0x0, 0x15, 0x15, 0x14, 0x0, 0x23, 0x1, 0x28, 0x91, 0x1, 0x21, 0x8, 0xFE, 0xEE, 0xFE, 0x94, 0x1, 0x5F, 0xDD, 0x1, 0x7, 0xFE, 0xF8, 0xE6, 0x6, 0x1B, 0xFD, 0x18, 0x1, 0x47, 0x4A, 0x1, 0x4F, 0x8, 0xFC, 0x71, 0x4, 0x35, 0xFE, 0xEC, 0xEB, 0x36, 0xEA, 0xFE, 0xEA, 0x0, 0x1, 0x0, 0x64, 0x2, 0x8C, 0x3, 0x30, 0x6, 0xC1, 0x0, 0xB, 0x0, 0x0, 0x13, 0x11, 0x21, 0x15, 0x21, 0x11, 0x21, 0x15, 0x21, 0x11, 0x21, 0x15, 0x64, 0x2, 0xC7, 0xFD, 0xFD, 0x1, 0xBD, 0xFE, 0x43, 0x2, 0x8, 0x2, 0x8C, 0x4, 0x35, 0xA6, 0xFE, 0xEA, 0xA7, 0xFE, 0xD5, 0xA7, 0x0, 0x1, 0x0, 0x35, 0x2, 0x8C, 0x3, 0x1, 0x6, 0xC1, 0x0, 0xB, 0x0, 0x0, 0x13, 0x35, 0x21, 0x11, 0x21, 0x35, 0x21, 0x11, 0x21, 0x35, 0x21, 0x11, 0x3A, 0x2, 0x4, 0xFE, 0x42, 0x1, 0xBE, 0xFD, 0xF7, 0x2, 0xCC, 0x2, 0x8C, 0xA7, 0x1, 0x16, 0xA7, 0x1, 0x2B, 0xA6, 0xFB, 0xCB, 0x0, 0x1, 0x0, 0x3C, 0x2, 0x7B, 0x3, 0xA3, 0x6, 0xCE, 0x0, 0x1E, 0x0, 0x0, 0x1, 0x11, 0x6, 0x6, 0x23, 0x22, 0x0, 0x35, 0x35, 0x34, 0x12, 0x33, 0x32, 0x16, 0x17, 0x23, 0x26, 0x26, 0x23, 0x20, 0x3, 0x15, 0x14, 0x16, 0x33, 0x32, 0x36, 0x37, 0x35, 0x23, 0x35, 0x3, 0xA3, 0x22, 0xB1, 0xB6, 0xCA, 0xFE, 0xEC, 0xFD, 0xD1, 0xC2, 0xC4, 0x13, 0xAD, 0xE, 0x6C, 0x70, 0xFE, 0xFD, 0x8, 0x9C, 0x82, 0x65, 0x5D, 0x14, 0xE9, 0x4, 0xB1, 0xFE, 0x66, 0x2C, 0x70, 0x1, 0xB, 0xFA, 0x49, 0xF5, 0x1, 0x10, 0xC0, 0x95, 0x54, 0x5B, 0xFE, 0xB6, 0x5E, 0xAE, 0xB3, 0x2F, 0x15, 0xAE, 0xA0, 0x0, 0x1, 0x0, 0x64, 0x2, 0x8C, 0x3, 0xDC, 0x6, 0xC1, 0x0, 0xB, 0x0, 0x0, 0x1, 0x11, 0x21, 0x11, 0x23, 0x11, 0x33, 0x11, 0x21, 0x11, 0x33, 0x11, 0x3, 0x19, 0xFE, 0xF, 0xC4, 0xC4, 0x1, 0xF1, 0xC3, 0x2, 0x8C, 0x1, 0xC9, 0xFE, 0x37, 0x4, 0x35, 0xFE, 0x3A, 0x1, 0xC6, 0xFB, 0xCB, 0x0, 0x1, 0x0, 0x7F, 0x2, 0x8C, 0x1, 0x42, 0x6, 0xC1, 0x0, 0x3, 0x0, 0x0, 0x1, 0x11, 0x23, 0x11, 0x1, 0x42, 0xC3, 0x6, 0xC1, 0xFB, 0xCB, 0x4, 0x35, 0x0, 0x1, 0x0, 0x28, 0x2, 0x78, 0x2, 0xF1, 0x6, 0xBC, 0x0, 0xE, 0x0, 0x0, 0x1, 0x33, 0x11, 0x14, 0x6, 0x23, 0x22, 0x26, 0x35, 0x33, 0x14, 0x16, 0x33, 0x32, 0x37, 0x2, 0x2D, 0xC4, 0xCD, 0x92, 0x93, 0xD7, 0xBD, 0x64, 0x49, 0x96, 0x5, 0x6, 0xBC, 0xFD, 0x18, 0xB3, 0xA9, 0xA8, 0xAD, 0x56, 0x58, 0xA7, 0x0, 0x1, 0x0, 0x64, 0x2, 0x8C, 0x3, 0xCD, 0x6, 0xC1, 0x0, 0xB, 0x0, 0x0, 0x1, 0x1, 0x7, 0x11, 0x23, 0x11, 0x33, 0x11, 0x1, 0x33, 0x1, 0x1, 0x2, 0xE2, 0xFE, 0xCF, 0x89, 0xC4, 0xC4, 0x1, 0x8F, 0xF7, 0xFE, 0x87, 0x1, 0x98, 0x2, 0x8C, 0x1, 0xD0, 0x99, 0xFE, 0xC9, 0x4, 0x35, 0xFE, 0xF, 0x1, 0xF1, 0xFE, 0x34, 0xFD, 0x97, 0x0, 0x1, 0x0, 0x64, 0x2, 0x8C, 0x3, 0x18, 0x6, 0xC1, 0x0, 0x5, 0x0, 0x0, 0x13, 0x11, 0x33, 0x11, 0x21, 0x15, 0x64, 0xC4, 0x1, 0xF0, 0x2, 0x8C, 0x4, 0x35, 0xFC, 0x72, 0xA7, 0x0, 0x1, 0x0, 0x64, 0x2, 0x8C, 0x4, 0xD4, 0x6, 0xC1, 0x0, 0xE, 0x0, 0x0, 0x1, 0x11, 0x23, 0x11, 0x33, 0x1, 0x1, 0x33, 0x11, 0x23, 0x11, 0x13, 0x1, 0x23, 0x1, 0x1, 0x29, 0xC5, 0xEA, 0x1, 0x4D, 0x1, 0x50, 0xE9, 0xC5, 0xE, 0xFE, 0xCC, 0x9C, 0xFE, 0xCD, 0x3, 0xFC, 0xFE, 0x90, 0x4, 0x35, 0xFC, 0xD2, 0x3, 0x2E, 0xFB, 0xCB, 0x1, 0x70, 0x1, 0x7D, 0xFD, 0x13, 0x2, 0xEE, 0x0, 0x1, 0x0, 0x64, 0x2, 0x8C, 0x3, 0xD9, 0x6, 0xC1, 0x0, 0xB, 0x0, 0x0, 0x1, 0x1, 0x11, 0x23, 0x11, 0x33, 0x1, 0x11, 0x33, 0x11, 0x23, 0x35, 0x3, 0x13, 0xFE, 0x16, 0xC5, 0xC5, 0x1, 0xEC, 0xC4, 0xC4, 0x2, 0x8C, 0x2, 0xEC, 0xFD, 0x14, 0x4, 0x35, 0xFD, 0x9, 0x2, 0xF7, 0xFB, 0xCB, 0x2, 0x0, 0x1, 0x0, 0x64, 0x2, 0x8C, 0x3, 0xD9, 0x6, 0xC1, 0x0, 0xB, 0x0, 0x0, 0x1, 0x27, 0x15, 0x23, 0x11, 0x33, 0x11, 0x1, 0x33, 0x11, 0x23, 0x11, 0x1, 0x2A, 0x2, 0xC4, 0xC4, 0x1, 0xEC, 0xC5, 0xC5, 0x2, 0x8C, 0x2, 0x2, 0x4, 0x35, 0xFD, 0x9, 0x2, 0xF7, 0xFB, 0xCB, 0x2, 0xEC, 0x0, 0x2, 0x0, 0x3C, 0x2, 0x7B, 0x3, 0xD0, 0x6, 0xCE, 0x0, 0xD, 0x0, 0x19, 0x0, 0x0, 0x1, 0x14, 0x2, 0x23, 0x22, 0x0, 0x35, 0x35, 0x34, 0x0, 0x33, 0x32, 0x12, 0x15, 0x27, 0x10, 0x21, 0x22, 0x6, 0x15, 0x15, 0x14, 0x16, 0x33, 0x32, 0x13, 0x3, 0xD0, 0xFC, 0xCD, 0xC9, 0xFE, 0xFE, 0x1, 0x0, 0xC9, 0xCE, 0xFD, 0xC5, 0xFE, 0xFA, 0x79, 0x8B, 0x8C, 0x7A, 0xFE, 0x6, 0x4, 0x89, 0xFA, 0xFE, 0xEC, 0x1, 0x14, 0xFA, 0x38, 0xFA, 0x1, 0x13, 0xFE, 0xED, 0xFA, 0x1, 0x1, 0x66, 0xB0, 0xB6, 0x39, 0xB5, 0xB2, 0x1, 0x57, 0x0, 0x2, 0x0, 0x3C, 0x2, 0x7E, 0x3, 0x3C, 0x6, 0xC1, 0x0, 0x17, 0x0, 0x23, 0x0, 0x0, 0x1, 0x22, 0x26, 0x35, 0x35, 0x34, 0x37, 0x26, 0x35, 0x33, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x33, 0x14, 0x7, 0x16, 0x17, 0x15, 0x14, 0x6, 0x1, 0x14, 0x33, 0x32, 0x37, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x1, 0xBC, 0xB4, 0xCC, 0x7F, 0x7F, 0xC5, 0x5D, 0x5E, 0x5C, 0x5F, 0xC5, 0x7F, 0x7E, 0x1, 0xCB, 0xFE, 0x90, 0xBB, 0xB7, 0x4, 0x61, 0x5B, 0x59, 0x61, 0x2, 0x7E, 0xE6, 0xAB, 0x23, 0xCB, 0x70, 0x67, 0xED, 0x8E, 0x6C, 0x6C, 0x8E, 0xED, 0x67, 0x6E, 0xCA, 0x26, 0xAB, 0xE6, 0x1, 0x96, 0xEF, 0xE5, 0x26, 0x6F, 0x81, 0x81, 0x6F, 0x0, 0x2, 0x0, 0x64, 0x2, 0x8C, 0x3, 0x8B, 0x6, 0xC1, 0x0, 0x7, 0x0, 0x12, 0x0, 0x0, 0x1, 0x11, 0x33, 0x32, 0x35, 0x34, 0x26, 0x23, 0x3, 0x11, 0x23, 0x11, 0x21, 0x32, 0x16, 0x15, 0x14, 0x6, 0x23, 0x1, 0x28, 0xC8, 0xD7, 0x68, 0x6F, 0xC8, 0xC4, 0x1, 0xA2, 0xBF, 0xC6, 0xC6, 0xBF, 0x6, 0x1B, 0xFE, 0xA0, 0xAC, 0x4D, 0x67, 0xFD, 0xF9, 0xFE, 0x78, 0x4, 0x35, 0xC5, 0x94, 0x9D, 0xB7, 0x0, 0x2, 0x0, 0x64, 0x2, 0x8C, 0x3, 0x9E, 0x6, 0xC1, 0x0, 0x6, 0x0, 0x14, 0x0, 0x0, 0x1, 0x11, 0x33, 0x32, 0x35, 0x34, 0x27, 0x13, 0x3, 0x23, 0x11, 0x23, 0x11, 0x21, 0x32, 0x16, 0x15, 0x14, 0x7, 0x13, 0x15, 0x1, 0x29, 0xA9, 0xD4, 0xCE, 0xF1, 0xE4, 0xBC, 0xC5, 0x1, 0x84, 0xB9, 0xCA, 0xC8, 0xFB, 0x6, 0x1B, 0xFE, 0xAB, 0xA5, 0xAD, 0x3, 0xFC, 0x71, 0x1, 0x93, 0xFE, 0x6D, 0x4, 0x35, 0xAB, 0xA4, 0xD9, 0x51, 0xFE, 0x4E, 0xA, 0x0, 0x1, 0x0, 0x28, 0x2, 0x8C, 0x3, 0x7A, 0x6, 0xC1, 0x0, 0x7, 0x0, 0x0, 0x1, 0x21, 0x11, 0x23, 0x11, 0x21, 0x35, 0x21, 0x3, 0x7A, 0xFE, 0xB9, 0xC6, 0xFE, 0xBB, 0x3, 0x52, 0x6, 0x1B, 0xFC, 0x71, 0x3, 0x8F, 0xA6, 0x0, 0x1, 0x0, 0x64, 0x2, 0x7B, 0x3, 0x91, 0x6, 0xBF, 0x0, 0xF, 0x0, 0x0, 0x1, 0x33, 0x11, 0x14, 0x6, 0x23, 0x22, 0x26, 0x35, 0x11, 0x33, 0x11, 0x16, 0x33, 0x32, 0x37, 0x2, 0xCC, 0xC5, 0xE7, 0xAF, 0xB5, 0xE2, 0xC5, 0x2, 0xD0, 0xCF, 0x2, 0x6, 0xBF, 0xFD, 0x3C, 0xC2, 0xBE, 0xBE, 0xC2, 0x2, 0xC4, 0xFD, 0x3F, 0xDD, 0xDD, 0x0, 0x1, 0x0, 0x35, 0x2, 0x8C, 0x5, 0x3F, 0x6, 0xC1, 0x0, 0xC, 0x0, 0x0, 0x1, 0x3, 0x33, 0x13, 0x13, 0x33, 0x13, 0x13, 0x33, 0x3, 0x23, 0x3, 0x3, 0x1, 0x30, 0xFB, 0xC7, 0x9D, 0xCB, 0xB1, 0xC8, 0x9B, 0xC7, 0xFB, 0xB1, 0xD6, 0xDB, 0x2, 0x8C, 0x4, 0x35, 0xFC, 0xFF, 0x3, 0x1, 0xFC, 0xFF, 0x3, 0x1, 0xFB, 0xCB, 0x3, 0x7, 0xFC, 0xF9, 0x0, 0x2, 0x0, 0x3C, 0x2, 0x7D, 0x3, 0x0, 0x5, 0xBA, 0x0, 0x8, 0x0, 0x24, 0x0, 0x0, 0x1, 0x32, 0x36, 0x37, 0x35, 0x23, 0x6, 0x15, 0x14, 0x5, 0x26, 0x27, 0x6, 0x23, 0x22, 0x26, 0x35, 0x34, 0x36, 0x33, 0x33, 0x35, 0x34, 0x23, 0x22, 0x7, 0x23, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x11, 0x14, 0x17, 0x15, 0x1, 0x78, 0x34, 0x59, 0x18, 0x61, 0xBB, 0x1, 0x37, 0xD, 0x7, 0x5A, 0x7F, 0x7A, 0x95, 0xC2, 0xAF, 0x70, 0x86, 0x77, 0xF, 0xBE, 0xBA, 0x97, 0x87, 0xB7, 0x1E, 0x3, 0x1F, 0x2A, 0x1D, 0x93, 0x3, 0x75, 0x62, 0x93, 0x1A, 0x2C, 0x55, 0x82, 0x6B, 0x84, 0x8D, 0x18, 0x87, 0x5C, 0x5F, 0x9D, 0x8B, 0x93, 0xFE, 0xAA, 0x6D, 0x41, 0xC, 0x0, 0x2, 0x0, 0x56, 0x2, 0x7D, 0x3, 0x1A, 0x5, 0xBA, 0x0, 0x8, 0x0, 0x24, 0x0, 0x0, 0x1, 0x22, 0x6, 0x7, 0x15, 0x33, 0x36, 0x35, 0x34, 0x13, 0x14, 0x6, 0x23, 0x22, 0x26, 0x35, 0x11, 0x34, 0x27, 0x35, 0x33, 0x16, 0x17, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x6, 0x23, 0x23, 0x15, 0x14, 0x33, 0x32, 0x37, 0x1, 0xDF, 0x34, 0x5A, 0x18, 0x62, 0xBA, 0xAE, 0xB9, 0x98, 0x87, 0xB7, 0x1E, 0xC9, 0xC, 0x7, 0x5A, 0x80, 0x7A, 0x94, 0xC1, 0xAF, 0x71, 0x86, 0x78, 0xF, 0x5, 0x19, 0x2A, 0x1E, 0x92, 0x3, 0x74, 0x63, 0xFE, 0x61, 0x5E, 0x9F, 0x8B, 0x94, 0x1, 0x56, 0x6D, 0x40, 0xC, 0x1A, 0x2C, 0x55, 0x82, 0x6B, 0x83, 0x8E, 0x18, 0x86, 0x5C, 0x0, 0x2, 0x0, 0x3C, 0x2, 0x7D, 0x3, 0x6A, 0x5, 0xBC, 0x0, 0x15, 0x0, 0x20, 0x0, 0x0, 0x1, 0x22, 0x27, 0x6, 0x23, 0x22, 0x26, 0x35, 0x35, 0x34, 0x36, 0x33, 0x32, 0x17, 0x37, 0x33, 0x11, 0x16, 0x33, 0x37, 0x17, 0x6, 0x25, 0x32, 0x37, 0x11, 0x26, 0x23, 0x22, 0x6, 0x15, 0x14, 0x16, 0x3, 0xD, 0x8E, 0x26, 0x4C, 0x8C, 0x96, 0xAF, 0xAF, 0x98, 0x87, 0x4B, 0xE, 0xAC, 0x2, 0x34, 0x14, 0x11, 0x3B, 0xFE, 0x7F, 0x69, 0x33, 0x32, 0x68, 0x61, 0x4E, 0x4C, 0x2, 0x7D, 0x75, 0x74, 0xDB, 0xAA, 0xF, 0xBC, 0xEE, 0x70, 0x61, 0xFD, 0xD2, 0x5C, 0x3, 0x91, 0x18, 0x95, 0x63, 0x1, 0x4D, 0x66, 0xA1, 0x84, 0x67, 0x8A, 0x0, 0x3, 0x0, 0x3C, 0x2, 0x7D, 0x4, 0xF7, 0x5, 0xBC, 0x0, 0x8, 0x0, 0xF, 0x0, 0x36, 0x0, 0x0, 0x1, 0x22, 0x6, 0x7, 0x15, 0x33, 0x36, 0x35, 0x34, 0x1, 0x32, 0x37, 0x21, 0x15, 0x14, 0x16, 0x5, 0x22, 0x27, 0x6, 0x23, 0x22, 0x26, 0x35, 0x35, 0x21, 0x26, 0x26, 0x23, 0x22, 0x7, 0x27, 0x36, 0x36, 0x33, 0x32, 0x17, 0x36, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x6, 0x23, 0x23, 0x15, 0x14, 0x33, 0x32, 0x37, 0x33, 0x14, 0x6, 0x3, 0xBC, 0x34, 0x5A, 0x18, 0x61, 0xBB, 0xFD, 0x6E, 0x91, 0x1B, 0xFE, 0xB5, 0x50, 0x2, 0x3E, 0xA5, 0x55, 0x67, 0x8F, 0xAF, 0xB4, 0x2, 0x11, 0xE, 0x6F, 0x50, 0x6B, 0x53, 0x73, 0x27, 0x9D, 0x78, 0xB1, 0x6F, 0x3E, 0x8B, 0x67, 0x85, 0x97, 0xC1, 0xAF, 0x71, 0x86, 0x78, 0xF, 0xBD, 0xBA, 0x5, 0x1B, 0x2A, 0x1E, 0x93, 0x3, 0x75, 0x63, 0xFE, 0x9, 0xAD, 0xD, 0x46, 0x5A, 0xA5, 0x5C, 0x5E, 0xDE, 0xAD, 0x63, 0x50, 0x5A, 0x61, 0x73, 0x39, 0x5B, 0x71, 0x39, 0x39, 0x82, 0x6B, 0x84, 0x8D, 0x18, 0x86, 0x5C, 0x5F, 0x9E, 0x0, 0x2, 0x0, 0x64, 0x2, 0x7D, 0x3, 0x3D, 0x7, 0xE, 0x0, 0xF, 0x0, 0x1A, 0x0, 0x0, 0x1, 0x22, 0x27, 0x7, 0x23, 0x11, 0x33, 0x11, 0x36, 0x33, 0x32, 0x16, 0x15, 0x15, 0x14, 0x6, 0x27, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x22, 0x7, 0x11, 0x16, 0x1, 0xFC, 0x8F, 0x50, 0xD, 0xAC, 0xC4, 0x4E, 0x84, 0x9B, 0xA8, 0xA9, 0xC6, 0x5A, 0x50, 0x4E, 0x5D, 0x72, 0x33, 0x34, 0x2, 0x7D, 0x6A, 0x5B, 0x4, 0x82, 0xFE, 0x50, 0x5C, 0xDE, 0xB9, 0x10, 0xB6, 0xE0, 0xA8, 0x80, 0x7E, 0x69, 0x87, 0x62, 0xFE, 0xD7, 0x63, 0x0, 0x2, 0x0, 0x3C, 0x2, 0x7D, 0x3, 0x15, 0x7, 0xE, 0x0, 0x9, 0x0, 0x19, 0x0, 0x0, 0x1, 0x32, 0x37, 0x11, 0x26, 0x23, 0x22, 0x6, 0x15, 0x14, 0x5, 0x27, 0x6, 0x23, 0x22, 0x26, 0x35, 0x35, 0x34, 0x36, 0x33, 0x32, 0x17, 0x11, 0x33, 0x11, 0x1, 0xAB, 0x72, 0x34, 0x33, 0x72, 0x5D, 0x4E, 0x1, 0x68, 0xD, 0x50, 0x8F, 0x98, 0xA9, 0xA9, 0x9A, 0x84, 0x4E, 0xC4, 0x3, 0x25, 0x63, 0x1, 0x29, 0x62, 0x86, 0x7A, 0xEE, 0x99, 0x5A, 0x69, 0xE0, 0xB6, 0x10, 0xB9, 0xDE, 0x5B, 0x1, 0xAF, 0xFB, 0x7E, 0x0, 0x2, 0x0, 0x3C, 0x2, 0x7E, 0x3, 0x16, 0x5, 0xBC, 0x0, 0x6, 0x0, 0x1C, 0x0, 0x0, 0x1, 0x22, 0x7, 0x21, 0x35, 0x34, 0x26, 0x1, 0x6, 0x6, 0x23, 0x22, 0x26, 0x35, 0x35, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x15, 0x21, 0x16, 0x16, 0x33, 0x32, 0x36, 0x37, 0x1, 0xB2, 0x91, 0x1B, 0x1, 0x4B, 0x4F, 0x1, 0x1, 0x26, 0x9E, 0x77, 0xB2, 0xDA, 0xDF, 0x98, 0xAF, 0xB4, 0xFD, 0xEF, 0xE, 0x6F, 0x50, 0x40, 0x5B, 0x24, 0x5, 0x15, 0xAD, 0xD, 0x47, 0x59, 0xFD, 0xFD, 0x39, 0x5B, 0xDE, 0xA4, 0x1F, 0xBE, 0xDF, 0xDE, 0xAD, 0x63, 0x50, 0x5A, 0x39, 0x28, 0x0, 0x2, 0x0, 0x3C, 0x2, 0x7C, 0x3, 0x16, 0x5, 0xBA, 0x0, 0x14, 0x0, 0x1B, 0x0, 0x0, 0x1, 0x22, 0x26, 0x35, 0x35, 0x21, 0x26, 0x26, 0x23, 0x22, 0x7, 0x27, 0x36, 0x36, 0x33, 0x32, 0x16, 0x15, 0x15, 0x14, 0x6, 0x27, 0x32, 0x37, 0x21, 0x15, 0x14, 0x16, 0x1, 0x9F, 0xAF, 0xB4, 0x2, 0x11, 0xE, 0x6F, 0x50, 0x6B, 0x53, 0x73, 0x27, 0x9D, 0x78, 0xB2, 0xD9, 0xDE, 0x98, 0x91, 0x1B, 0xFE, 0xB5, 0x50, 0x2, 0x7C, 0xDE, 0xAD, 0x63, 0x50, 0x5A, 0x61, 0x73, 0x39, 0x5B, 0xDE, 0xA4, 0x1F, 0xBE, 0xDF, 0xA7, 0xAD, 0xD, 0x46, 0x5A, 0x0, 0x1, 0x0, 0x3C, 0x2, 0x7C, 0x2, 0xE8, 0x5, 0xBA, 0x0, 0x20, 0x0, 0x0, 0x1, 0x14, 0x6, 0x23, 0x22, 0x26, 0x35, 0x34, 0x37, 0x26, 0x35, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x23, 0x26, 0x23, 0x22, 0x15, 0x14, 0x17, 0x33, 0x15, 0x23, 0x6, 0x15, 0x14, 0x33, 0x32, 0x37, 0x2, 0xE8, 0xD9, 0x7A, 0x93, 0xC6, 0x94, 0x85, 0xB7, 0x93, 0x83, 0xC4, 0xB9, 0x4, 0x8F, 0x80, 0x78, 0x93, 0x93, 0x86, 0x8E, 0x95, 0xB, 0x3, 0x79, 0x83, 0x7A, 0x80, 0x71, 0x89, 0x31, 0x39, 0x70, 0x72, 0x78, 0x81, 0x71, 0x50, 0x55, 0x52, 0x1, 0x97, 0x1, 0x5B, 0x61, 0x5D, 0x0, 0x1, 0x0, 0x3C, 0x2, 0x7C, 0x2, 0xE8, 0x5, 0xBA, 0x0, 0x20, 0x0, 0x0, 0x1, 0x22, 0x26, 0x35, 0x33, 0x16, 0x33, 0x32, 0x35, 0x34, 0x27, 0x23, 0x35, 0x33, 0x36, 0x35, 0x34, 0x23, 0x22, 0x7, 0x23, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x7, 0x16, 0x15, 0x14, 0x6, 0x1, 0x8F, 0x7A, 0xD9, 0xB9, 0x9, 0x97, 0x8E, 0x87, 0x93, 0x93, 0x79, 0x81, 0x8F, 0x3, 0xBA, 0xC4, 0x83, 0x94, 0xB7, 0x85, 0x93, 0xC5, 0x2, 0x7C, 0x7A, 0x83, 0x5D, 0x61, 0x5B, 0x1, 0x97, 0x1, 0x52, 0x55, 0x50, 0x71, 0x81, 0x78, 0x72, 0x70, 0x39, 0x31, 0x89, 0x71, 0x80, 0x0, 0x2, 0x0, 0x3C, 0x1, 0x4C, 0x3, 0x16, 0x5, 0xBA, 0x0, 0xA, 0x0, 0x24, 0x0, 0x0, 0x1, 0x32, 0x37, 0x11, 0x26, 0x23, 0x22, 0x6, 0x15, 0x14, 0x16, 0x13, 0x22, 0x26, 0x27, 0x37, 0x16, 0x33, 0x32, 0x37, 0x35, 0x6, 0x23, 0x22, 0x26, 0x35, 0x35, 0x34, 0x36, 0x33, 0x32, 0x17, 0x37, 0x33, 0x11, 0x14, 0x6, 0x1, 0xB0, 0x70, 0x31, 0x31, 0x6F, 0x5E, 0x52, 0x50, 0x60, 0x53, 0xBD, 0x3E, 0x61, 0x5C, 0x7A, 0xB1, 0x6, 0x4F, 0x80, 0x92, 0xB4, 0xB3, 0x94, 0x8D, 0x4E, 0xD, 0xAB, 0xC7, 0x3, 0x22, 0x55, 0x1, 0x4A, 0x52, 0x85, 0x7C, 0x6B, 0x85, 0xFE, 0x2A, 0x44, 0x49, 0x7B, 0x64, 0x9B, 0x4A, 0x5A, 0xE8, 0xAF, 0xF, 0xB7, 0xE2, 0x66, 0x57, 0xFC, 0xF0, 0xA2, 0xAD, 0x0, 0x2, 0x0, 0x78, 0x1, 0x4F, 0x1, 0x5C, 0x5, 0xAD, 0x0, 0x3, 0x0, 0xD, 0x0, 0x0, 0x1, 0x11, 0x23, 0x11, 0x2, 0x36, 0x33, 0x32, 0x16, 0x14, 0x6, 0x23, 0x22, 0x26, 0x1, 0x4D, 0xC5, 0x10, 0x3B, 0x37, 0x36, 0x3C, 0x3C, 0x36, 0x37, 0x3B, 0x5, 0xAD, 0xFC, 0xDF, 0x3, 0x21, 0xFC, 0x3C, 0x3D, 0x3D, 0x5C, 0x3E, 0x3E, 0x0, 0x1, 0x0, 0x64, 0x2, 0x8C, 0x3, 0x3E, 0x7, 0xE, 0x0, 0xC, 0x0, 0x0, 0x1, 0x3, 0x7, 0x15, 0x23, 0x11, 0x33, 0x11, 0x37, 0x37, 0x33, 0x1, 0x1, 0x2, 0x54, 0xD8, 0x53, 0xC5, 0xC5, 0x36, 0xDA, 0xE4, 0xFE, 0xDD, 0x1, 0x44, 0x2, 0x8C, 0x1, 0x54, 0x58, 0xFC, 0x4, 0x82, 0xFD, 0x5E, 0x45, 0xFC, 0xFE, 0xBB, 0xFE, 0x24, 0x0, 0x1, 0x0, 0x64, 0x2, 0x8C, 0x4, 0xCC, 0x5, 0xBA, 0x0, 0x1C, 0x0, 0x0, 0x1, 0x22, 0x7, 0x11, 0x23, 0x11, 0x33, 0x17, 0x36, 0x33, 0x32, 0x17, 0x36, 0x33, 0x32, 0x16, 0x15, 0x11, 0x23, 0x11, 0x26, 0x23, 0x22, 0x7, 0x17, 0x11, 0x23, 0x11, 0x26, 0x1, 0xB3, 0x62, 0x28, 0xC5, 0x98, 0x20, 0x4C, 0x8F, 0xB6, 0x37, 0x4B, 0x9A, 0x78, 0x8B, 0xC5, 0x4, 0x7F, 0x64, 0x28, 0x2, 0xC5, 0x4, 0x5, 0x13, 0x59, 0xFD, 0xD2, 0x3, 0x21, 0x7A, 0x87, 0x9A, 0x9A, 0x91, 0xA2, 0xFE, 0x5, 0x1, 0xD9, 0xAE, 0x5F, 0x1F, 0xFD, 0xF7, 0x1, 0xD9, 0xAE, 0x0, 0x1, 0x0, 0x64, 0x1, 0x4C, 0x2, 0xFA, 0x5, 0xBA, 0x0, 0x19, 0x0, 0x0, 0x1, 0x22, 0x27, 0x35, 0x16, 0x33, 0x32, 0x35, 0x11, 0x34, 0x26, 0x23, 0x22, 0x7, 0x11, 0x23, 0x11, 0x33, 0x17, 0x36, 0x33, 0x32, 0x16, 0x15, 0x11, 0x14, 0x2, 0x3F, 0x46, 0x4F, 0x27, 0x1D, 0x47, 0x45, 0x3D, 0x62, 0x28, 0xC5, 0xAB, 0x11, 0x4C, 0x8B, 0x78, 0x8B, 0x1, 0x4C, 0x11, 0xB4, 0x9, 0x50, 0x1, 0xFE, 0x69, 0x54, 0x59, 0xFD, 0xD2, 0x3, 0x21, 0x73, 0x80, 0x91, 0xA2, 0xFD, 0xBF, 0xFA, 0x0, 0x2, 0x0, 0x3C, 0x2, 0x7C, 0x3, 0x32, 0x5, 0xBA, 0x0, 0xD, 0x0, 0x17, 0x0, 0x0, 0x13, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x15, 0x14, 0x6, 0x23, 0x22, 0x26, 0x35, 0x33, 0x14, 0x16, 0x33, 0x32, 0x11, 0x34, 0x26, 0x23, 0x22, 0x3C, 0xCB, 0xAF, 0xB1, 0xCB, 0xCB, 0xB0, 0xAF, 0xCC, 0xC5, 0x5B, 0x5B, 0xB6, 0x5B, 0x5C, 0xB5, 0x4, 0x23, 0xB3, 0xE4, 0xE4, 0xB3, 0x10, 0xB3, 0xE4, 0xE4, 0xB3, 0x6E, 0x82, 0x1, 0x0, 0x6C, 0x84, 0x0, 0x1, 0x0, 0x28, 0x2, 0x7C, 0x2, 0x83, 0x5, 0xBA, 0x0, 0x15, 0x0, 0x0, 0x13, 0x37, 0x16, 0x33, 0x32, 0x11, 0x34, 0x26, 0x23, 0x22, 0x7, 0x27, 0x36, 0x33, 0x32, 0x16, 0x15, 0x15, 0x14, 0x6, 0x23, 0x22, 0x30, 0x54, 0x38, 0x4D, 0xB5, 0x5B, 0x5B, 0x43, 0x38, 0x65, 0x5D, 0x83, 0xB0, 0xCB, 0xCA, 0xB0, 0x7F, 0x2, 0xB9, 0x8F, 0x25, 0x1, 0x0, 0x6C, 0x84, 0x24, 0x88, 0x43, 0xE4, 0xB3, 0x10, 0xB3, 0xE4, 0x0, 0x1, 0x0, 0x28, 0x4, 0x13, 0x3, 0x1E, 0x5, 0xBA, 0x0, 0xD, 0x0, 0x0, 0x1, 0x23, 0x10, 0x23, 0x22, 0x11, 0x23, 0x35, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x3, 0x1E, 0xC5, 0xB7, 0xB5, 0xC5, 0xCB, 0xAF, 0xB1, 0xCB, 0x4, 0x13, 0x1, 0x0, 0xFF, 0x0, 0x10, 0xB3, 0xE4, 0xE4, 0xB3, 0x0, 0x1, 0x0, 0x28, 0x2, 0x83, 0x3, 0x1E, 0x4, 0x2A, 0x0, 0xE, 0x0, 0x0, 0x1, 0x33, 0x15, 0x14, 0x6, 0x23, 0x22, 0x26, 0x35, 0x35, 0x33, 0x14, 0x16, 0x33, 0x32, 0x2, 0x59, 0xC5, 0xCB, 0xB1, 0xAF, 0xCB, 0xC5, 0x5B, 0x5A, 0xB7, 0x4, 0x2A, 0x10, 0xB2, 0xE5, 0xE5, 0xB2, 0x10, 0x7D, 0x83, 0x0, 0x2, 0x0, 0x64, 0x1, 0x29, 0x3, 0x3D, 0x5, 0xBA, 0x0, 0x9, 0x0, 0x19, 0x0, 0x0, 0x1, 0x32, 0x36, 0x35, 0x34, 0x23, 0x22, 0x7, 0x11, 0x16, 0x17, 0x22, 0x27, 0x11, 0x23, 0x11, 0x33, 0x17, 0x36, 0x33, 0x32, 0x16, 0x15, 0x15, 0x14, 0x6, 0x1, 0xCD, 0x5D, 0x4E, 0xAA, 0x72, 0x34, 0x33, 0x9F, 0x84, 0x4E, 0xC4, 0xAC, 0xD, 0x50, 0x8F, 0x98, 0xA9, 0xA8, 0x3, 0x24, 0x86, 0x7B, 0xED, 0x63, 0xFE, 0xD7, 0x62, 0xA7, 0x5C, 0xFE, 0x50, 0x4, 0x82, 0x5A, 0x69, 0xDF, 0xB6, 0x10, 0xB9, 0xDF, 0x0, 0x1, 0x0, 0x28, 0x2, 0x7D, 0x2, 0x2, 0x6, 0x70, 0x0, 0x15, 0x0, 0x0, 0x1, 0x6, 0x23, 0x22, 0x26, 0x35, 0x11, 0x23, 0x35, 0x33, 0x35, 0x33, 0x15, 0x33, 0x15, 0x23, 0x11, 0x14, 0x16, 0x33, 0x32, 0x37, 0x1, 0xFE, 0x32, 0x56, 0x57, 0x73, 0x84, 0x84, 0xC5, 0x91, 0x91, 0x27, 0x25, 0x23, 0x1E, 0x2, 0x8F, 0x12, 0x74, 0x86, 0x1, 0x95, 0xA0, 0xC4, 0xC4, 0xA0, 0xFE, 0x7E, 0x3B, 0x2A, 0x7, 0x0, 0x1, 0x0, 0x64, 0x2, 0x7F, 0x2, 0xFA, 0x5, 0xAD, 0x0, 0x10, 0x0, 0x0, 0x1, 0x27, 0x6, 0x23, 0x22, 0x26, 0x35, 0x11, 0x33, 0x11, 0x16, 0x33, 0x32, 0x37, 0x11, 0x33, 0x11, 0x2, 0x51, 0x12, 0x4C, 0x8B, 0x79, 0x8B, 0xC5, 0x4, 0x7F, 0x61, 0x28, 0xC5, 0x2, 0x8C, 0x74, 0x81, 0x91, 0xA2, 0x1, 0xFB, 0xFE, 0x28, 0xAF, 0x58, 0x2, 0x2F, 0xFC, 0xDF, 0x0, 0x1, 0x0, 0x3C, 0x2, 0xCB, 0x3, 0x6A, 0x5, 0x61, 0x0, 0x10, 0x0, 0x0, 0x13, 0x35, 0x21, 0x36, 0x35, 0x34, 0x27, 0x21, 0x35, 0x21, 0x15, 0x7, 0x16, 0x15, 0x14, 0x6, 0x23, 0x3C, 0x1, 0xD8, 0xAF, 0x59, 0xFD, 0xD2, 0x3, 0x20, 0x74, 0x82, 0x91, 0xA2, 0x2, 0xCB, 0xC5, 0x4, 0x7E, 0x62, 0x28, 0xC5, 0xA8, 0x13, 0x4C, 0x8C, 0x78, 0x8B, 0x0, 0x1, 0x0, 0x64, 0x2, 0x7F, 0x4, 0xCC, 0x5, 0xAD, 0x0, 0x1C, 0x0, 0x0, 0x1, 0x27, 0x6, 0x23, 0x22, 0x27, 0x6, 0x23, 0x22, 0x26, 0x35, 0x11, 0x33, 0x11, 0x16, 0x33, 0x32, 0x37, 0x27, 0x11, 0x33, 0x11, 0x16, 0x33, 0x32, 0x37, 0x11, 0x33, 0x11, 0x4, 0x34, 0x20, 0x4C, 0x8F, 0xB6, 0x36, 0x4B, 0x9A, 0x79, 0x8B, 0xC5, 0x4, 0x7F, 0x65, 0x27, 0x2, 0xC5, 0x4, 0x7F, 0x61, 0x28, 0xC5, 0x2, 0x8C, 0x79, 0x86, 0x9A, 0x9A, 0x91, 0xA2, 0x1, 0xFB, 0xFE, 0x28, 0xAF, 0x5E, 0x20, 0x2, 0x9, 0xFE, 0x28, 0xAF, 0x59, 0x2, 0x2E, 0xFC, 0xDF, 0x0, 0x1, 0x0, 0x28, 0x2, 0x8C, 0x3, 0xB, 0x5, 0xAD, 0x0, 0x8, 0x0, 0x0, 0x1, 0x1, 0x33, 0x13, 0x17, 0x37, 0x13, 0x33, 0x1, 0x1, 0x40, 0xFE, 0xE8, 0xD4, 0x96, 0x9, 0xA, 0x93, 0xD3, 0xFE, 0xEB, 0x2, 0x8C, 0x3, 0x21, 0xFD, 0xF3, 0x32, 0x32, 0x2, 0xD, 0xFC, 0xDF, 0x0, 0x1, 0x0, 0x35, 0x2, 0x7D, 0x3, 0x6D, 0x5, 0xBA, 0x0, 0x1E, 0x0, 0x0, 0x13, 0x34, 0x36, 0x32, 0x16, 0x15, 0x14, 0x6, 0x7, 0x16, 0x33, 0x32, 0x37, 0x17, 0x6, 0x23, 0x22, 0x26, 0x27, 0x6, 0x6, 0x23, 0x22, 0x27, 0x37, 0x16, 0x33, 0x32, 0x37, 0x26, 0x27, 0xBB, 0x97, 0xFE, 0x97, 0x6F, 0x40, 0x2D, 0x52, 0x4A, 0x58, 0x14, 0x5B, 0x5B, 0x54, 0x68, 0x2A, 0x2B, 0x67, 0x54, 0x5B, 0x5B, 0x14, 0x58, 0x4A, 0x52, 0x2D, 0x9E, 0xF, 0x4, 0xBC, 0x65, 0x99, 0x99, 0x65, 0x73, 0xA0, 0x47, 0x3E, 0x20, 0xA7, 0x20, 0x35, 0x2D, 0x2D, 0x35, 0x20, 0xA7, 0x20, 0x3E, 0xAA, 0x86, 0x0, 0x2, 0x0, 0x64, 0x1, 0x66, 0x3, 0x45, 0x6, 0xCF, 0x0, 0x10, 0x0, 0x22, 0x0, 0x0, 0x1, 0x32, 0x35, 0x34, 0x27, 0x23, 0x35, 0x33, 0x36, 0x35, 0x34, 0x26, 0x23, 0x22, 0x15, 0x11, 0x16, 0x17, 0x22, 0x27, 0x11, 0x23, 0x11, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x7, 0x16, 0x15, 0x14, 0x6, 0x1, 0xD1, 0xAF, 0xB3, 0x48, 0x38, 0x93, 0x42, 0x4C, 0x9A, 0x3C, 0x89, 0x6F, 0x56, 0xC4, 0xCD, 0x8E, 0x98, 0xBF, 0x92, 0xC1, 0xC3, 0x3, 0x23, 0xA9, 0xA1, 0x5, 0x9F, 0x2, 0x92, 0x34, 0x4F, 0xA7, 0xFD, 0xCE, 0x2C, 0xA7, 0x34, 0xFE, 0xB6, 0x4, 0x31, 0x87, 0xB1, 0x9E, 0x86, 0x91, 0x4C, 0x44, 0xC8, 0x9C, 0xAA, 0x0, 0x1, 0x0, 0x28, 0x1, 0x4C, 0x3, 0x32, 0x5, 0xAB, 0x0, 0xA, 0x0, 0x0, 0x1, 0x23, 0x11, 0x1, 0x33, 0x13, 0x17, 0x37, 0x13, 0x33, 0x1, 0x2, 0x11, 0xC5, 0xFE, 0xDC, 0xD8, 0xA6, 0x9, 0xA, 0xA2, 0xD7, 0xFE, 0xDF, 0x1, 0x4C, 0x1, 0x47, 0x3, 0x18, 0xFD, 0xEF, 0x32, 0x32, 0x2, 0x11, 0xFC, 0xEE, 0x0, 0x2, 0x0, 0x3C, 0x2, 0x7C, 0x3, 0x24, 0x7, 0x14, 0x0, 0x1C, 0x0, 0x26, 0x0, 0x0, 0x13, 0x34, 0x36, 0x33, 0x32, 0x17, 0x7, 0x26, 0x23, 0x22, 0x15, 0x14, 0x17, 0x4, 0x13, 0x15, 0x14, 0x6, 0x23, 0x22, 0x26, 0x35, 0x35, 0x34, 0x36, 0x37, 0x37, 0x26, 0x26, 0x13, 0x14, 0x16, 0x33, 0x32, 0x35, 0x34, 0x26, 0x27, 0x6, 0x96, 0xA1, 0x82, 0x7C, 0x89, 0x26, 0x84, 0x56, 0x65, 0x84, 0x1, 0x44, 0x3, 0xC4, 0xAE, 0xB0, 0xC6, 0x8F, 0x60, 0x3, 0x42, 0x56, 0x6C, 0x56, 0x5A, 0xAC, 0x56, 0x56, 0xB0, 0x6, 0x35, 0x69, 0x76, 0x46, 0x8F, 0x33, 0x47, 0x42, 0x2F, 0x73, 0xFE, 0xD6, 0x14, 0xA9, 0xE4, 0xE2, 0xA6, 0xF, 0x7F, 0xB4, 0x18, 0x8, 0x1F, 0x67, 0xFE, 0x22, 0x69, 0x83, 0xFB, 0x53, 0x92, 0x11, 0x7, 0x0, 0x2, 0x0, 0x3C, 0x1, 0x4C, 0x4, 0x2C, 0x5, 0xC4, 0x0, 0x18, 0x0, 0x21, 0x0, 0x0, 0x1, 0x23, 0x11, 0x26, 0x2, 0x35, 0x34, 0x36, 0x37, 0x17, 0x6, 0x15, 0x14, 0x16, 0x17, 0x11, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x6, 0x7, 0x35, 0x36, 0x36, 0x35, 0x34, 0x26, 0x23, 0x22, 0x15, 0x2, 0x90, 0xC5, 0xD9, 0xB6, 0x64, 0x55, 0x71, 0x66, 0x57, 0x74, 0x78, 0x63, 0xB0, 0xD6, 0xBC, 0xE0, 0x7C, 0x5B, 0x5C, 0x44, 0x37, 0x1, 0x4C, 0x1, 0x3F, 0x1D, 0x1, 0x7, 0x9D, 0x78, 0xC2, 0x3D, 0x72, 0x74, 0x91, 0x62, 0x9B, 0x19, 0x1, 0xA2, 0x7F, 0x6D, 0xF0, 0x9E, 0x96, 0xFD, 0x19, 0xAA, 0x15, 0x93, 0x5A, 0x66, 0x84, 0x48, 0x0, 0x1, 0x0, 0x35, 0x1, 0x4A, 0x3, 0x4E, 0x5, 0xBA, 0x0, 0x1D, 0x0, 0x0, 0x1, 0x6, 0x27, 0x26, 0x26, 0x27, 0x27, 0x3, 0x23, 0x1, 0x3, 0x26, 0x26, 0x23, 0x7, 0x27, 0x36, 0x33, 0x32, 0x16, 0x17, 0x17, 0x13, 0x33, 0x1, 0x13, 0x16, 0x17, 0x16, 0x37, 0x3, 0x3C, 0x22, 0x30, 0x5B, 0x69, 0x25, 0x42, 0xAD, 0xBE, 0x1, 0x11, 0x87, 0x14, 0x33, 0x2F, 0x31, 0x2, 0x3B, 0x2F, 0x6F, 0x60, 0x1B, 0x46, 0xA1, 0xBC, 0xFE, 0xFD, 0x90, 0x2D, 0x32, 0x18, 0x1E, 0x1, 0x57, 0xD, 0x3, 0x5, 0x86, 0x53, 0x94, 0xFE, 0x9C, 0x2, 0x2E, 0x1, 0x2E, 0x2E, 0x34, 0x4, 0x97, 0xE, 0x80, 0x3C, 0x9C, 0x1, 0x4A, 0xFD, 0xEC, 0xFE, 0xBE, 0x5F, 0x3, 0x2, 0x4, 0x0, 0x2, 0x0, 0x78, 0xFF, 0x38, 0x1, 0x5C, 0x3, 0x96, 0x0, 0xB, 0x0, 0xF, 0x0, 0x0, 0x13, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x6, 0x23, 0x22, 0x26, 0x17, 0x11, 0x23, 0x11, 0x78, 0x3B, 0x37, 0x36, 0x3C, 0x3C, 0x36, 0x37, 0x3B, 0xD5, 0xC5, 0x3, 0x2A, 0x2F, 0x3D, 0x3D, 0x2F, 0x2D, 0x3D, 0x3D, 0xA4, 0xFC, 0xDF, 0x3, 0x21, 0xFF, 0xFF, 0x0, 0x64, 0xFF, 0x38, 0x2, 0x12, 0x2, 0x66, 0x0, 0x7, 0x1, 0x65, 0x0, 0x0, 0xFC, 0xAC, 0xFF, 0xFF, 0x0, 0x64, 0xFF, 0x2B, 0x2, 0xFA, 0x2, 0x59, 0x0, 0x7, 0x3, 0x87, 0x0, 0x0, 0xFC, 0xAC, 0xFF, 0xFF, 0x0, 0x28, 0xFF, 0x38, 0x3, 0xB, 0x2, 0x59, 0x0, 0x7, 0x3, 0x8A, 0x0, 0x0, 0xFC, 0xAC, 0xFF, 0xFF, 0x0, 0x64, 0xFE, 0x17, 0x3, 0x45, 0x3, 0x80, 0x0, 0x7, 0x3, 0x8C, 0x0, 0x0, 0xFC, 0xB1, 0xFF, 0xFF, 0x0, 0x28, 0xFD, 0xFA, 0x3, 0x32, 0x2, 0x59, 0x0, 0x7, 0x3, 0x8D, 0x0, 0x0, 0xFC, 0xAE, 0x0, 0x2, 0x0, 0x64, 0xFE, 0x8, 0x3, 0x39, 0x2, 0x6C, 0x0, 0xB, 0x0, 0x1A, 0x0, 0x0, 0x5, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x15, 0x16, 0x17, 0x22, 0x27, 0x11, 0x23, 0x11, 0x34, 0x36, 0x33, 0x32, 0x16, 0x17, 0x15, 0x14, 0x6, 0x1, 0xC9, 0x5C, 0x4F, 0x4E, 0x59, 0x57, 0x4D, 0x33, 0xA0, 0x84, 0x4F, 0xC5, 0xD7, 0x97, 0xAC, 0xB9, 0x2, 0xA7, 0x2C, 0x76, 0x78, 0x73, 0x90, 0x8C, 0x5C, 0xBD, 0x4C, 0xA7, 0x59, 0xFE, 0x82, 0x2, 0xDE, 0xB6, 0xD0, 0xEA, 0xB9, 0x17, 0xAA, 0xDB, 0xFF, 0xFF, 0x0, 0x3C, 0xFD, 0xEB, 0x4, 0x2C, 0x2, 0x63, 0x0, 0x7, 0x3, 0x8F, 0x0, 0x0, 0xFC, 0x9F, 0xFF, 0xFF, 0x0, 0x42, 0xFD, 0xF4, 0x3, 0x5B, 0x2, 0x64, 0x0, 0x7, 0x3, 0x90, 0x0, 0xD, 0xFC, 0xAA, 0x0, 0x2, 0x0, 0x77, 0xFF, 0xEC, 0x6, 0xBC, 0x4, 0x4E, 0x0, 0x23, 0x0, 0x2B, 0x0, 0x0, 0x5, 0x22, 0x26, 0x27, 0x6, 0x6, 0x23, 0x22, 0x26, 0x35, 0x11, 0x33, 0x11, 0x16, 0x16, 0x33, 0x32, 0x37, 0x11, 0x33, 0x15, 0x36, 0x33, 0x32, 0x12, 0x15, 0x15, 0x21, 0x16, 0x16, 0x33, 0x32, 0x37, 0x17, 0x6, 0x6, 0x3, 0x22, 0x6, 0x7, 0x21, 0x35, 0x26, 0x26, 0x5, 0xA, 0x9B, 0xE5, 0x3F, 0x2D, 0xB5, 0x8D, 0x9F, 0xC6, 0xF3, 0x1, 0x66, 0x45, 0xB7, 0x37, 0xE5, 0x74, 0x91, 0xEC, 0xE2, 0xFD, 0x3D, 0xA, 0x95, 0x80, 0xA8, 0x68, 0x83, 0x34, 0xCC, 0xBE, 0x63, 0x7B, 0x11, 0x1, 0xCE, 0x5, 0x61, 0x14, 0x83, 0x6E, 0x6F, 0x82, 0xD5, 0xF3, 0x2, 0x86, 0xFD, 0x72, 0x8F, 0x6A, 0xA3, 0x2, 0xE4, 0x38, 0x4C, 0xFE, 0xD4, 0xEA, 0x67, 0x7D, 0xA5, 0x86, 0x7D, 0x4C, 0x80, 0x3, 0x9F, 0x8C, 0x7C, 0x12, 0x5F, 0x97, 0x0, 0x2, 0xFF, 0xEC, 0xFF, 0xEC, 0x4, 0xBF, 0x6, 0x0, 0x0, 0x24, 0x0, 0x2F, 0x0, 0x0, 0x1, 0x14, 0x2, 0x23, 0x22, 0x27, 0x7, 0x23, 0x11, 0x27, 0x22, 0x6, 0x15, 0x27, 0x34, 0x36, 0x33, 0x32, 0x17, 0x35, 0x33, 0x15, 0x33, 0x32, 0x36, 0x35, 0x17, 0x14, 0x6, 0x23, 0x27, 0x15, 0x36, 0x33, 0x32, 0x12, 0x17, 0x1, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x22, 0x7, 0x11, 0x16, 0x4, 0xBF, 0xD8, 0xCE, 0xBC, 0x6C, 0xC, 0xDC, 0x19, 0x29, 0x38, 0xA3, 0x89, 0x67, 0x17, 0x16, 0xF3, 0x3, 0x29, 0x3A, 0xA3, 0x8A, 0x68, 0x17, 0x6A, 0xB1, 0xD0, 0xD7, 0x1, 0xFE, 0x1D, 0x87, 0x69, 0x66, 0x8C, 0x9C, 0x42, 0x43, 0x2, 0x12, 0xEF, 0xFE, 0xC9, 0x89, 0x75, 0x4, 0xDC, 0x2, 0x3B, 0x2F, 0x8, 0x72, 0x9C, 0x5, 0x7B, 0xD2, 0x3B, 0x2F, 0xC, 0x73, 0x97, 0x1, 0xB0, 0x7B, 0xFE, 0xD0, 0xF3, 0xFE, 0x88, 0xCA, 0xAA, 0x8F, 0xD2, 0x8B, 0xFE, 0x43, 0x8D, 0x0, 0x2, 0x0, 0x50, 0xFF, 0xEC, 0x5, 0x9, 0x6, 0x0, 0x0, 0xB, 0x0, 0x2F, 0x0, 0x0, 0x25, 0x32, 0x37, 0x11, 0x26, 0x23, 0x22, 0x6, 0x15, 0x15, 0x14, 0x16, 0x5, 0x27, 0x6, 0x23, 0x22, 0x2, 0x35, 0x35, 0x34, 0x12, 0x33, 0x32, 0x17, 0x11, 0x27, 0x22, 0x6, 0x15, 0x27, 0x34, 0x36, 0x33, 0x32, 0x17, 0x35, 0x33, 0x15, 0x32, 0x36, 0x35, 0x17, 0x14, 0x6, 0x23, 0x27, 0x11, 0x2, 0x37, 0x95, 0x45, 0x44, 0x94, 0x84, 0x73, 0x72, 0x1, 0x73, 0xB, 0x6C, 0xB7, 0xC3, 0xE6, 0xE5, 0xC6, 0xAC, 0x6A, 0x1D, 0x29, 0x38, 0xA3, 0x89, 0x67, 0x19, 0x18, 0xF3, 0x29, 0x39, 0xA3, 0x8A, 0x68, 0x13, 0xB3, 0x86, 0x1, 0xCD, 0x82, 0xD0, 0x92, 0x15, 0x91, 0xCD, 0xB3, 0x70, 0x84, 0x1, 0x39, 0xEC, 0x15, 0xF7, 0x1, 0x31, 0x77, 0x1, 0x9, 0x2, 0x3B, 0x30, 0x9, 0x71, 0x9C, 0x6, 0x79, 0xCF, 0x3B, 0x30, 0xD, 0x73, 0x97, 0x1, 0xFB, 0x7A, 0x0, 0x1, 0x0, 0x13, 0x0, 0x0, 0x3, 0x33, 0x6, 0x15, 0x0, 0x27, 0x0, 0x0, 0x1, 0x27, 0x11, 0x23, 0x11, 0x27, 0x22, 0x6, 0x15, 0x27, 0x34, 0x36, 0x33, 0x17, 0x35, 0x23, 0x35, 0x33, 0x35, 0x34, 0x36, 0x33, 0x32, 0x17, 0x7, 0x26, 0x23, 0x22, 0x7, 0x15, 0x33, 0x15, 0x23, 0x11, 0x32, 0x36, 0x35, 0x17, 0x14, 0x6, 0x2, 0x3A, 0x18, 0xF3, 0x18, 0x29, 0x38, 0xA3, 0x89, 0x67, 0x2C, 0xA5, 0xA5, 0xCC, 0xB0, 0x42, 0x46, 0x6, 0x2A, 0x34, 0xAB, 0x2, 0xDC, 0xDC, 0x2E, 0x39, 0xA3, 0x8A, 0x1, 0x8A, 0x1, 0xFE, 0x75, 0x1, 0xE5, 0x1, 0x3B, 0x2F, 0x8, 0x72, 0x9C, 0x4, 0xF9, 0xB3, 0x67, 0xB5, 0xBF, 0x12, 0xBE, 0x8, 0xA8, 0x6B, 0xB3, 0xFE, 0xAF, 0x3B, 0x2F, 0xC, 0x73, 0x97, 0x0, 0x3, 0x0, 0x14, 0x0, 0x0, 0x7, 0xC3, 0x4, 0x4E, 0x0, 0x9, 0x0, 0x12, 0x0, 0x37, 0x0, 0x0, 0x1, 0x16, 0x17, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x7, 0x25, 0x22, 0x7, 0x15, 0x16, 0x17, 0x35, 0x26, 0x26, 0x13, 0x11, 0x26, 0x27, 0x11, 0x23, 0x11, 0x6, 0x7, 0x27, 0x36, 0x37, 0x11, 0x33, 0x17, 0x36, 0x33, 0x32, 0x17, 0x36, 0x36, 0x33, 0x32, 0x16, 0x17, 0x15, 0x36, 0x37, 0x17, 0x6, 0x7, 0x11, 0x23, 0x11, 0x26, 0x27, 0x11, 0x4, 0x65, 0xFA, 0x98, 0x69, 0x59, 0x52, 0x69, 0x15, 0xFE, 0x4A, 0x93, 0x3C, 0x9C, 0xF6, 0x1, 0x68, 0x69, 0xFC, 0x96, 0xF3, 0x34, 0x25, 0x80, 0x3B, 0x9E, 0xE5, 0x7, 0x73, 0xC5, 0xD8, 0x51, 0x35, 0xA7, 0x70, 0xA5, 0xBD, 0x2, 0x33, 0x28, 0x7E, 0x3F, 0x9A, 0xF3, 0xA2, 0xF0, 0x2, 0x67, 0x19, 0x3, 0x73, 0x78, 0x52, 0x58, 0x47, 0x9F, 0x78, 0x6E, 0x5, 0x1C, 0x40, 0x6E, 0x59, 0xFC, 0x78, 0x1, 0xE4, 0x1D, 0x3, 0xFD, 0xFC, 0x1, 0xE5, 0x1B, 0x42, 0x32, 0x92, 0x3A, 0x1, 0xB4, 0x71, 0x85, 0xA5, 0x4B, 0x5A, 0xB6, 0xD2, 0x54, 0x1E, 0x3D, 0x3C, 0x95, 0x33, 0xFE, 0x37, 0x1, 0xAC, 0x3, 0x1A, 0xFE, 0x37, 0x0, 0x2, 0x0, 0x14, 0x0, 0x0, 0x5, 0x39, 0x4, 0x4E, 0x0, 0x8, 0x0, 0x24, 0x0, 0x0, 0x1, 0x35, 0x34, 0x26, 0x23, 0x22, 0x7, 0x15, 0x16, 0x7, 0x11, 0x23, 0x11, 0x6, 0x7, 0x27, 0x34, 0x36, 0x37, 0x11, 0x33, 0x17, 0x36, 0x33, 0x32, 0x16, 0x17, 0x15, 0x36, 0x37, 0x17, 0x14, 0x6, 0x7, 0x11, 0x23, 0x11, 0x3, 0x71, 0x62, 0x5D, 0x92, 0x49, 0xA8, 0xA8, 0xF2, 0x44, 0xA, 0x83, 0x6B, 0x66, 0xE4, 0x8, 0x77, 0xC3, 0x9C, 0xBC, 0x1, 0x47, 0xC, 0x82, 0x6D, 0x68, 0xF3, 0x2, 0x4D, 0x71, 0x70, 0x5A, 0x86, 0x7C, 0x14, 0x8D, 0xFE, 0x1B, 0x1, 0xF0, 0x14, 0x54, 0x23, 0x51, 0x84, 0x10, 0x1, 0xAA, 0x7D, 0x91, 0xB3, 0xDA, 0x82, 0x12, 0x58, 0x28, 0x54, 0x81, 0xD, 0xFE, 0x61, 0x1, 0xAB, 0x0, 0x2, 0xFF, 0xE6, 0xFE, 0x60, 0x4, 0xA0, 0x4, 0x4E, 0x0, 0xB, 0x0, 0x2F, 0x0, 0x0, 0x25, 0x32, 0x36, 0x35, 0x35, 0x34, 0x26, 0x23, 0x22, 0x7, 0x11, 0x16, 0x3, 0x27, 0x15, 0x23, 0x35, 0x23, 0x22, 0x6, 0x15, 0x27, 0x34, 0x36, 0x33, 0x17, 0x11, 0x33, 0x17, 0x36, 0x33, 0x32, 0x12, 0x15, 0x15, 0x14, 0x2, 0x23, 0x22, 0x27, 0x11, 0x17, 0x32, 0x36, 0x35, 0x17, 0x14, 0x6, 0x2, 0xB7, 0x83, 0x74, 0x76, 0x83, 0x94, 0x42, 0x43, 0x14, 0x2F, 0xF3, 0x2, 0x28, 0x38, 0xA4, 0x8A, 0x67, 0x15, 0xE0, 0xA, 0x6C, 0xB7, 0xCE, 0xD9, 0xD9, 0xCB, 0xB1, 0x6C, 0x1B, 0x29, 0x3A, 0xA2, 0x89, 0xAF, 0xD3, 0x91, 0x14, 0x92, 0xCF, 0x7B, 0xFE, 0x20, 0x7E, 0xFD, 0xFF, 0x4, 0x52, 0xAB, 0x3B, 0x30, 0x9, 0x71, 0x9C, 0x1, 0x4, 0x85, 0x6D, 0x81, 0xFE, 0xD0, 0xF8, 0x14, 0xEC, 0xFE, 0xC6, 0x75, 0xFE, 0xFB, 0x2, 0x3B, 0x30, 0xD, 0x74, 0x96, 0x0, 0x1, 0xFF, 0xDD, 0x0, 0x0, 0x3, 0x34, 0x4, 0x4E, 0x0, 0x21, 0x0, 0x0, 0x1, 0x27, 0x11, 0x23, 0x11, 0x27, 0x22, 0x6, 0x15, 0x27, 0x34, 0x36, 0x33, 0x32, 0x17, 0x11, 0x33, 0x17, 0x36, 0x33, 0x32, 0x17, 0x7, 0x26, 0x23, 0x22, 0x7, 0x15, 0x32, 0x36, 0x35, 0x17, 0x14, 0x6, 0x2, 0x5, 0x17, 0xF2, 0x1B, 0x29, 0x38, 0xA3, 0x89, 0x67, 0x18, 0x17, 0xE7, 0x7, 0x57, 0x9D, 0x31, 0x25, 0x2, 0x32, 0x30, 0xA9, 0x39, 0x2C, 0x39, 0xA3, 0x8A, 0x1, 0x74, 0x1, 0xFE, 0x8B, 0x1, 0xCF, 0x2, 0x3B, 0x30, 0x9, 0x71, 0x9C, 0x5, 0x1, 0xC3, 0x79, 0x8D, 0xD, 0xE5, 0x8, 0x80, 0xC4, 0x3B, 0x30, 0xD, 0x73, 0x97, 0x0, 0x1, 0xFF, 0xFC, 0x0, 0x0, 0x3, 0x15, 0x4, 0x4E, 0x0, 0x1E, 0x0, 0x0, 0x1, 0x22, 0x27, 0x11, 0x23, 0x11, 0x6, 0x15, 0x27, 0x34, 0x36, 0x33, 0x35, 0x34, 0x36, 0x33, 0x32, 0x17, 0x7, 0x26, 0x23, 0x22, 0x7, 0x15, 0x17, 0x32, 0x36, 0x35, 0x17, 0x14, 0x6, 0x2, 0x23, 0x1E, 0x1B, 0xF3, 0x58, 0xA3, 0x89, 0x72, 0xCC, 0xB0, 0x42, 0x46, 0x6, 0x2A, 0x34, 0xAB, 0x2, 0x26, 0x29, 0x39, 0xA3, 0x8A, 0x1, 0x74, 0x6, 0xFE, 0x86, 0x1, 0xD1, 0x8, 0x63, 0x9, 0x72, 0x9B, 0x5E, 0xB4, 0xC0, 0x12, 0xBE, 0x8, 0xA8, 0xBA, 0x4, 0x3B, 0x30, 0xD, 0x73, 0x97, 0x0, 0x1, 0x0, 0x28, 0xFF, 0xEC, 0x4, 0x29, 0x4, 0x4E, 0x0, 0x35, 0x0, 0x0, 0x5, 0x22, 0x26, 0x35, 0x33, 0x16, 0x16, 0x33, 0x32, 0x36, 0x35, 0x34, 0x26, 0x24, 0x27, 0x26, 0x23, 0x22, 0x6, 0x7, 0x27, 0x34, 0x36, 0x37, 0x26, 0x35, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x23, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x14, 0x16, 0x17, 0x16, 0x17, 0x17, 0x32, 0x37, 0x17, 0x14, 0x7, 0x16, 0x15, 0x14, 0x6, 0x2, 0x32, 0xDF, 0xEA, 0xEC, 0x5, 0x8A, 0x51, 0x5F, 0x65, 0x4F, 0xFF, 0x0, 0x3E, 0x2F, 0x18, 0x3D, 0x38, 0x5, 0x83, 0x43, 0x43, 0x21, 0xE1, 0xC0, 0xCB, 0xE7, 0xF3, 0x60, 0x5F, 0x5C, 0x58, 0x5C, 0x82, 0x6B, 0x49, 0x23, 0x6D, 0xB, 0x82, 0x6A, 0x28, 0xEE, 0x14, 0xE4, 0x86, 0x64, 0x50, 0x4A, 0x3A, 0x33, 0x4B, 0x39, 0x19, 0x8, 0x41, 0x2D, 0x23, 0x40, 0x72, 0x20, 0x38, 0x49, 0x85, 0xC3, 0xC6, 0x92, 0x3F, 0x63, 0x52, 0x36, 0x35, 0x40, 0x1C, 0x17, 0x1D, 0x2, 0x68, 0x27, 0x81, 0x40, 0x3F, 0x56, 0x90, 0xB8, 0x0, 0x1, 0xFF, 0xE2, 0xFF, 0xEC, 0x2, 0xD1, 0x5, 0x41, 0x0, 0x29, 0x0, 0x0, 0x25, 0x6, 0x23, 0x22, 0x26, 0x35, 0x35, 0x27, 0x22, 0x6, 0x15, 0x27, 0x34, 0x36, 0x33, 0x32, 0x17, 0x35, 0x23, 0x35, 0x33, 0x11, 0x33, 0x11, 0x33, 0x15, 0x23, 0x11, 0x32, 0x36, 0x35, 0x17, 0x14, 0x6, 0x23, 0x27, 0x15, 0x14, 0x16, 0x33, 0x32, 0x37, 0x2, 0xA5, 0x43, 0x5C, 0x79, 0xA0, 0x1B, 0x26, 0x35, 0x95, 0x7F, 0x5F, 0x16, 0x17, 0xB2, 0xB2, 0xF3, 0xBF, 0xBF, 0x26, 0x36, 0x95, 0x81, 0x5F, 0x11, 0x3F, 0x32, 0x29, 0x2B, 0x4, 0x18, 0x89, 0xA7, 0xD6, 0x2, 0x39, 0x2E, 0x8, 0x6E, 0x96, 0x5, 0xF3, 0xB3, 0x1, 0x7, 0xFE, 0xF9, 0xB3, 0xFE, 0xB8, 0x3A, 0x2E, 0xC, 0x70, 0x90, 0x1, 0x72, 0x49, 0x2B, 0xA, 0x0, 0x1, 0x0, 0x2D, 0x0, 0x0, 0x3, 0xE8, 0x4, 0x3A, 0x0, 0x21, 0x0, 0x0, 0x33, 0x35, 0x13, 0x26, 0x23, 0x22, 0x6, 0x15, 0x27, 0x34, 0x36, 0x33, 0x32, 0x17, 0x37, 0x21, 0x35, 0x21, 0x15, 0x1, 0x16, 0x33, 0x32, 0x36, 0x35, 0x17, 0x14, 0x6, 0x23, 0x22, 0x27, 0x7, 0x21, 0x15, 0x67, 0xFE, 0x2E, 0x21, 0x2E, 0x39, 0x82, 0x7D, 0x63, 0x3A, 0x85, 0xC0, 0xFD, 0xE5, 0x3, 0x4F, 0xFE, 0xF8, 0x29, 0x1D, 0x2E, 0x39, 0x83, 0x7C, 0x65, 0x47, 0x71, 0xB9, 0x2, 0x3F, 0x9F, 0x1, 0x50, 0x8, 0x40, 0x2E, 0x24, 0x5C, 0x8D, 0x1E, 0xFE, 0xC4, 0x99, 0xFE, 0xA2, 0x7, 0x41, 0x2E, 0x28, 0x5C, 0x89, 0x1A, 0xF5, 0xC3, 0x0, 0x2, 0x0, 0x7C, 0xFE, 0x55, 0x4, 0x37, 0x4, 0x4D, 0x0, 0x1A, 0x0, 0x26, 0x0, 0x0, 0x25, 0x14, 0x2, 0x23, 0x22, 0x27, 0x7, 0x23, 0x11, 0x34, 0x24, 0x33, 0x32, 0x16, 0x17, 0x7, 0x26, 0x23, 0x22, 0x6, 0x15, 0x15, 0x36, 0x33, 0x32, 0x12, 0x17, 0x1, 0x32, 0x36, 0x35, 0x35, 0x34, 0x26, 0x23, 0x22, 0x7, 0x11, 0x16, 0x4, 0x37, 0xE9, 0xC9, 0xBA, 0x69, 0xA, 0xDC, 0x1, 0x12, 0xD9, 0x59, 0xF4, 0x48, 0x73, 0x70, 0xA4, 0x79, 0x8D, 0x6A, 0xAE, 0xC6, 0xE8, 0x2, 0xFE, 0x11, 0x83, 0x79, 0x77, 0x83, 0x96, 0x45, 0x43, 0x7E, 0xF7, 0xFE, 0xCE, 0x7F, 0x6B, 0x4, 0x1C, 0xDB, 0xED, 0x51, 0x62, 0x91, 0x85, 0x85, 0x7E, 0x4A, 0x76, 0xFE, 0xCC, 0xE8, 0xFE, 0x81, 0xD0, 0x92, 0x15, 0x90, 0xCD, 0x7F, 0xFE, 0x27, 0x7C, 0xFF, 0xFF, 0x0, 0x64, 0x2, 0x8C, 0x3, 0xDC, 0x6, 0xC1, 0x0, 0x6, 0x3, 0x63, 0x0, 0x0, 0x0, 0x2, 0x0, 0x3E, 0xFE, 0x60, 0x4, 0x3, 0x4, 0x3A, 0x0, 0x18, 0x0, 0x24, 0x0, 0x0, 0x1, 0x22, 0x24, 0x35, 0x34, 0x36, 0x37, 0x26, 0x35, 0x34, 0x37, 0x21, 0x35, 0x21, 0x15, 0x6, 0x6, 0x15, 0x14, 0x1E, 0x2, 0x15, 0x14, 0x4, 0x27, 0x32, 0x36, 0x35, 0x34, 0x26, 0x27, 0x6, 0x6, 0x15, 0x14, 0x16, 0x2, 0x21, 0xBE, 0xFE, 0xDB, 0xF3, 0xDC, 0x4D, 0x8A, 0xFE, 0x1C, 0x3, 0x72, 0x90, 0x9B, 0x66, 0x8A, 0x66, 0xFE, 0xE6, 0xC5, 0x67, 0x85, 0x50, 0x35, 0xB4, 0xA6, 0x87, 0xFE, 0x60, 0xDC, 0xD5, 0xC7, 0xEE, 0x17, 0x64, 0x5B, 0x80, 0x5A, 0xC4, 0x9B, 0x3D, 0x71, 0x4D, 0x3E, 0x73, 0x8C, 0xC1, 0x8C, 0xD7, 0xE3, 0xC3, 0x88, 0x6C, 0x65, 0x94, 0x3E, 0x13, 0x9A, 0x83, 0x77, 0x84, 0x0, 0x1, 0x0, 0x22, 0xFF, 0x83, 0x6, 0x64, 0x6, 0x0, 0x0, 0x2F, 0x0, 0x0, 0x5, 0x22, 0x27, 0x7, 0x23, 0x13, 0x26, 0x35, 0x11, 0x23, 0x35, 0x33, 0x11, 0x33, 0x11, 0x33, 0x15, 0x23, 0x11, 0x1, 0x11, 0x33, 0x11, 0x1, 0x33, 0x1, 0x37, 0x32, 0x16, 0x17, 0x11, 0x23, 0x11, 0x34, 0x26, 0x23, 0x22, 0x7, 0x11, 0x23, 0x11, 0x3, 0x16, 0x33, 0x32, 0x37, 0x15, 0x6, 0x2, 0x4, 0x56, 0x3C, 0x6B, 0xE5, 0xDB, 0x12, 0xB2, 0xB2, 0xF3, 0xBF, 0xBF, 0x1, 0x6, 0xF3, 0x1, 0x31, 0xE5, 0xFE, 0xE5, 0x32, 0x9F, 0xC0, 0x1, 0xF3, 0x62, 0x5D, 0x94, 0x47, 0xF3, 0xDE, 0x19, 0x30, 0x29, 0x2B, 0x43, 0x14, 0x1E, 0x87, 0x1, 0x14, 0x39, 0x4C, 0x2, 0x6B, 0xB3, 0x1, 0x7, 0xFE, 0xF9, 0xB3, 0xFE, 0x2C, 0x1, 0x4A, 0x3, 0x3, 0xFE, 0x2F, 0x1, 0x81, 0xFE, 0x9B, 0x3, 0xB6, 0xDA, 0xFD, 0x42, 0x2, 0xBB, 0x71, 0x5C, 0x82, 0xFC, 0xFA, 0x1, 0xDC, 0xFE, 0xE9, 0xF, 0xA, 0xBC, 0x18, 0xFF, 0xFF, 0x0, 0x14, 0x0, 0x0, 0x2, 0xB2, 0x4, 0x3A, 0x0, 0x26, 0x1, 0x1F, 0xF9, 0x0, 0x0, 0x7, 0x7, 0xA4, 0xFF, 0x84, 0xFF, 0x5A, 0xFF, 0xFF, 0x0, 0x14, 0xFF, 0xF4, 0x2, 0xB2, 0x4, 0x3A, 0x0, 0x26, 0x2, 0x42, 0x3B, 0x0, 0x0, 0x7, 0x7, 0xA4, 0xFF, 0x84, 0xFF, 0x5E, 0x0, 0x3, 0x0, 0x18, 0xFE, 0x60, 0x4, 0xFF, 0x4, 0x4E, 0x0, 0x6, 0x0, 0xD, 0x0, 0x22, 0x0, 0x0, 0x1, 0x22, 0x7, 0x15, 0x21, 0x26, 0x26, 0x3, 0x32, 0x36, 0x37, 0x21, 0x15, 0x16, 0x17, 0x22, 0x27, 0x11, 0x23, 0x11, 0x23, 0x35, 0x33, 0x11, 0x33, 0x17, 0x36, 0x20, 0x16, 0x17, 0x33, 0x15, 0x23, 0x6, 0x2, 0x2, 0x87, 0x95, 0x41, 0x1, 0xC7, 0x11, 0x75, 0x69, 0x79, 0x75, 0x8, 0xFE, 0x32, 0x43, 0xDA, 0xB1, 0x6C, 0xF2, 0xA7, 0xA7, 0xDF, 0xA, 0x6C, 0x1, 0x6E, 0xD6, 0x16, 0x91, 0x8D, 0xA, 0xD9, 0x3, 0x88, 0x7C, 0x7C, 0x6C, 0x8C, 0xFD, 0x27, 0xB5, 0x81, 0xB8, 0x7E, 0xC3, 0x75, 0xFD, 0xFF, 0x3, 0x85, 0xAB, 0x1, 0xAA, 0x6D, 0x81, 0xF3, 0xCB, 0xAB, 0xDB, 0xFE, 0xE2, 0x0, 0x2, 0x0, 0x18, 0xFF, 0xEE, 0x5, 0x48, 0x4, 0x3A, 0x0, 0x8, 0x0, 0x1D, 0x0, 0x0, 0x25, 0x32, 0x36, 0x35, 0x35, 0x21, 0x15, 0x14, 0x16, 0x17, 0x22, 0x24, 0x35, 0x35, 0x23, 0x35, 0x33, 0x11, 0x33, 0x11, 0x21, 0x11, 0x33, 0x11, 0x33, 0x15, 0x23, 0x15, 0x14, 0x4, 0x2, 0xB0, 0x7D, 0x8F, 0xFD, 0xE7, 0x94, 0x79, 0xDF, 0xFE, 0xE0, 0x99, 0x99, 0xF2, 0x2, 0x19, 0xF3, 0x99, 0x99, 0xFE, 0xE2, 0xAF, 0x78, 0x70, 0x4E, 0x4E, 0x70, 0x78, 0xC1, 0xDE, 0xCB, 0x4E, 0xAB, 0x1, 0xAA, 0xFE, 0x56, 0x1, 0xAA, 0xFE, 0x56, 0xAB, 0x4E, 0xCB, 0xDE, 0x0, 0x2, 0x0, 0x18, 0xFF, 0xEB, 0x4, 0xD9, 0x4, 0x4E, 0x0, 0xA, 0x0, 0x39, 0x0, 0x0, 0x25, 0x32, 0x36, 0x36, 0x35, 0x27, 0x21, 0x7, 0x14, 0x16, 0x16, 0x25, 0x14, 0x6, 0x6, 0x23, 0x22, 0x26, 0x26, 0x35, 0x34, 0x37, 0x23, 0x35, 0x33, 0x37, 0x36, 0x35, 0x34, 0x26, 0x23, 0x35, 0x32, 0x16, 0x16, 0x15, 0x14, 0x6, 0x7, 0x21, 0x27, 0x26, 0x35, 0x34, 0x36, 0x36, 0x33, 0x15, 0x22, 0x6, 0x15, 0x14, 0x16, 0x17, 0x33, 0x15, 0x23, 0x16, 0x2, 0x78, 0x7A, 0x7D, 0x2D, 0x3, 0xFD, 0xBF, 0x3, 0x2D, 0x7D, 0x2, 0x90, 0x59, 0xE7, 0xD7, 0xD6, 0xE7, 0x59, 0x8, 0x52, 0x88, 0x28, 0x10, 0x4F, 0x22, 0x9D, 0x99, 0x30, 0x29, 0x18, 0x1, 0xD9, 0x2D, 0x15, 0x31, 0x99, 0x9C, 0x22, 0x4E, 0x23, 0x15, 0x88, 0x52, 0x8, 0xAE, 0x57, 0x7C, 0x36, 0x2E, 0x2E, 0x36, 0x7C, 0x57, 0xD1, 0x5C, 0xBB, 0x7D, 0x7D, 0xBB, 0x5C, 0x35, 0x31, 0xAB, 0x5B, 0x26, 0x26, 0x39, 0x21, 0xBD, 0x4E, 0x6E, 0x2F, 0x35, 0x67, 0x37, 0x6A, 0x34, 0x35, 0x2F, 0x6E, 0x4E, 0xBD, 0x21, 0x39, 0x28, 0x4F, 0x30, 0xAB, 0x31, 0x0, 0x2, 0x0, 0x7D, 0xFE, 0x52, 0x4, 0x32, 0x6, 0x0, 0x0, 0xA, 0x0, 0x28, 0x0, 0x0, 0x25, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x22, 0x7, 0x11, 0x16, 0x13, 0x22, 0x27, 0x35, 0x16, 0x33, 0x32, 0x36, 0x35, 0x35, 0x6, 0x23, 0x22, 0x27, 0x7, 0x23, 0x11, 0x33, 0x11, 0x36, 0x33, 0x32, 0x12, 0x15, 0x15, 0x14, 0x7, 0x11, 0x14, 0x6, 0x2, 0x4F, 0x87, 0x6A, 0x67, 0x8C, 0x9B, 0x43, 0x44, 0xE7, 0x3B, 0x33, 0x1D, 0x23, 0x41, 0x5C, 0x3A, 0x42, 0xBD, 0x6C, 0xB, 0xDC, 0xF2, 0x6A, 0xB2, 0xD1, 0xD6, 0x5A, 0xB6, 0xB3, 0xCA, 0xAA, 0x8F, 0xD2, 0x8C, 0xFE, 0x44, 0x8D, 0xFD, 0x9F, 0xF, 0xA3, 0x7, 0x3F, 0x56, 0x6C, 0x12, 0x8A, 0x76, 0x6, 0x0, 0xFD, 0xD2, 0x7C, 0xFE, 0xCD, 0xF4, 0x15, 0xE0, 0x91, 0xFE, 0xF1, 0x9B, 0xA5, 0x0, 0x2, 0x0, 0x50, 0xFE, 0x52, 0x4, 0xA4, 0x6, 0x0, 0x0, 0xB, 0x0, 0x29, 0x0, 0x0, 0x25, 0x32, 0x37, 0x11, 0x26, 0x23, 0x22, 0x6, 0x15, 0x15, 0x14, 0x16, 0x1, 0x22, 0x27, 0x35, 0x16, 0x33, 0x32, 0x36, 0x35, 0x35, 0x23, 0x27, 0x6, 0x23, 0x22, 0x2, 0x35, 0x35, 0x34, 0x12, 0x33, 0x32, 0x17, 0x11, 0x33, 0x11, 0x33, 0x11, 0x14, 0x6, 0x2, 0x37, 0x95, 0x45, 0x44, 0x94, 0x84, 0x73, 0x72, 0x1, 0xB2, 0x3B, 0x33, 0x1D, 0x23, 0x41, 0x5C, 0xAE, 0xB, 0x6C, 0xB7, 0xC3, 0xE6, 0xE5, 0xC6, 0xAC, 0x6A, 0xF3, 0xA0, 0xB6, 0xB3, 0x86, 0x1, 0xCD, 0x82, 0xD0, 0x92, 0x15, 0x91, 0xCD, 0xFD, 0x9F, 0xF, 0xA3, 0x7, 0x3F, 0x56, 0x6E, 0x70, 0x84, 0x1, 0x39, 0xEC, 0x15, 0xF7, 0x1, 0x31, 0x77, 0x2, 0x29, 0xFA, 0xC3, 0xFE, 0xCF, 0x9B, 0xA5, 0x0, 0x1, 0x0, 0x2D, 0xFE, 0x52, 0x2, 0xD7, 0x6, 0x15, 0x0, 0x22, 0x0, 0x0, 0x1, 0x22, 0x27, 0x35, 0x16, 0x33, 0x32, 0x36, 0x35, 0x35, 0x23, 0x11, 0x23, 0x35, 0x33, 0x35, 0x34, 0x36, 0x33, 0x32, 0x17, 0x7, 0x26, 0x23, 0x22, 0x7, 0x15, 0x33, 0x15, 0x23, 0x11, 0x33, 0x11, 0x14, 0x6, 0x1, 0x28, 0x3B, 0x33, 0x1D, 0x23, 0x41, 0x5C, 0xC5, 0xA5, 0xA5, 0xCC, 0xB0, 0x43, 0x46, 0x6, 0x2A, 0x34, 0xAB, 0x2, 0xDB, 0xDB, 0xA0, 0xB6, 0xFE, 0x52, 0xF, 0xA3, 0x7, 0x3F, 0x56, 0x6E, 0x3, 0x87, 0xB3, 0x67, 0xB5, 0xBF, 0x12, 0xBE, 0x8, 0xA8, 0x6B, 0xB3, 0xFD, 0x3C, 0xFE, 0xCF, 0x9B, 0xA5, 0x0, 0x2, 0x0, 0x51, 0xFE, 0x52, 0x5, 0xA1, 0x4, 0x4E, 0x0, 0xB, 0x0, 0x35, 0x0, 0x0, 0x25, 0x32, 0x37, 0x11, 0x26, 0x23, 0x22, 0x6, 0x15, 0x15, 0x14, 0x16, 0x1, 0x22, 0x27, 0x35, 0x16, 0x33, 0x32, 0x36, 0x35, 0x35, 0x23, 0x6, 0x4, 0x23, 0x22, 0x26, 0x27, 0x37, 0x16, 0x33, 0x32, 0x36, 0x35, 0x35, 0x6, 0x23, 0x22, 0x2, 0x27, 0x35, 0x34, 0x12, 0x33, 0x32, 0x17, 0x37, 0x33, 0x11, 0x21, 0x11, 0x14, 0x6, 0x2, 0x3E, 0x97, 0x44, 0x43, 0x96, 0x83, 0x79, 0x77, 0x2, 0xA8, 0x3C, 0x33, 0x1D, 0x23, 0x41, 0x5D, 0xC7, 0xA, 0xFE, 0xF2, 0xD2, 0x59, 0xF4, 0x48, 0x73, 0x6F, 0xA5, 0x79, 0x8D, 0x6A, 0xAF, 0xC5, 0xE8, 0x2, 0xE9, 0xC8, 0xBB, 0x69, 0xA, 0xDC, 0x1, 0x95, 0xB6, 0xB3, 0x80, 0x1, 0xD9, 0x7C, 0xD0, 0x92, 0x15, 0x91, 0xCD, 0xFD, 0x9F, 0xF, 0xA3, 0x7, 0x3F, 0x56, 0x6E, 0xCD, 0xDD, 0x51, 0x62, 0x91, 0x85, 0x85, 0x7F, 0x49, 0x76, 0x1, 0x35, 0xE8, 0x1D, 0xF7, 0x1, 0x31, 0x80, 0x6C, 0xFC, 0x89, 0xFE, 0xCF, 0x9B, 0xA5, 0x0, 0x1, 0x0, 0x7D, 0xFE, 0x52, 0x4, 0x4C, 0x6, 0x0, 0x0, 0x1A, 0x0, 0x0, 0x1, 0x22, 0x27, 0x35, 0x16, 0x33, 0x32, 0x36, 0x35, 0x35, 0x23, 0x1, 0x7, 0x11, 0x23, 0x11, 0x33, 0x11, 0x37, 0x1, 0x21, 0x1, 0x1, 0x33, 0x11, 0x14, 0x6, 0x3, 0xE, 0x3B, 0x33, 0x1D, 0x23, 0x41, 0x5C, 0x5F, 0xFE, 0xBF, 0x6D, 0xF3, 0xF3, 0x4D, 0x1, 0x2B, 0x1, 0x24, 0xFE, 0x6D, 0x1, 0x34, 0x9F, 0xB6, 0xFE, 0x52, 0xF, 0xA3, 0x7, 0x3F, 0x56, 0x6E, 0x1, 0xD2, 0x70, 0xFE, 0x9E, 0x6, 0x0, 0xFC, 0x8A, 0x60, 0x1, 0x50, 0xFE, 0x3E, 0xFE, 0x4B, 0xFE, 0xCF, 0x9B, 0xA5, 0x0, 0x1, 0x0, 0x82, 0xFE, 0x52, 0x2, 0x2E, 0x6, 0x0, 0x0, 0x11, 0x0, 0x0, 0x13, 0x22, 0x27, 0x35, 0x16, 0x33, 0x32, 0x36, 0x35, 0x35, 0x23, 0x11, 0x33, 0x11, 0x33, 0x11, 0x14, 0x6, 0xF0, 0x3B, 0x33, 0x1C, 0x23, 0x41, 0x5D, 0xC4, 0xF3, 0xA0, 0xB6, 0xFE, 0x52, 0xF, 0xA3, 0x7, 0x3F, 0x56, 0x6E, 0x6, 0x0, 0xFA, 0xC3, 0xFE, 0xCF, 0x9B, 0xA5, 0x0, 0x1, 0x0, 0x7D, 0xFE, 0x52, 0x7, 0x1B, 0x4, 0x4E, 0x0, 0x2C, 0x0, 0x0, 0x1, 0x22, 0x27, 0x35, 0x16, 0x33, 0x32, 0x36, 0x35, 0x35, 0x23, 0x11, 0x34, 0x26, 0x23, 0x22, 0x6, 0x7, 0x11, 0x23, 0x11, 0x34, 0x26, 0x23, 0x22, 0x7, 0x11, 0x23, 0x11, 0x33, 0x17, 0x36, 0x33, 0x32, 0x17, 0x36, 0x33, 0x32, 0x16, 0x17, 0x11, 0x33, 0x11, 0x14, 0x6, 0x5, 0xDD, 0x3C, 0x33, 0x1D, 0x23, 0x41, 0x5D, 0xC5, 0x69, 0x59, 0x53, 0x69, 0x14, 0xF3, 0x69, 0x5A, 0x93, 0x3C, 0xF3, 0xE5, 0x7, 0x73, 0xC5, 0xD8, 0x51, 0x77, 0xD6, 0xA5, 0xBD, 0x2, 0xA0, 0xB6, 0xFE, 0x52, 0xF, 0xA3, 0x7, 0x3F, 0x56, 0x6E, 0x2, 0xBE, 0x78, 0x52, 0x5A, 0x48, 0xFD, 0x1A, 0x2, 0xBC, 0x72, 0x5A, 0x78, 0xFC, 0xF0, 0x4, 0x3A, 0x71, 0x85, 0xA5, 0xA5, 0xB6, 0xD2, 0xFD, 0xFD, 0xFE, 0xCF, 0x9B, 0xA5, 0x0, 0x1, 0x0, 0x7D, 0xFE, 0x52, 0x4, 0x9E, 0x4, 0x4E, 0x0, 0x1F, 0x0, 0x0, 0x1, 0x22, 0x27, 0x35, 0x16, 0x33, 0x32, 0x36, 0x35, 0x35, 0x23, 0x11, 0x34, 0x26, 0x23, 0x22, 0x7, 0x11, 0x23, 0x11, 0x33, 0x17, 0x36, 0x33, 0x32, 0x16, 0x17, 0x11, 0x33, 0x11, 0x14, 0x6, 0x3, 0x60, 0x3C, 0x33, 0x1D, 0x23, 0x41, 0x5D, 0xC6, 0x61, 0x5D, 0x92, 0x49, 0xF3, 0xE5, 0x8, 0x77, 0xC3, 0x9B, 0xBC, 0x1, 0xA2, 0xB6, 0xFE, 0x52, 0xF, 0xA3, 0x7, 0x3F, 0x56, 0x6E, 0x2, 0xBE, 0x70, 0x5A, 0x85, 0xFC, 0xFD, 0x4, 0x3A, 0x7D, 0x91, 0xB3, 0xDA, 0xFE, 0x2, 0xFE, 0xCF, 0x9B, 0xA5, 0x0, 0x2, 0x0, 0x7D, 0xFE, 0x52, 0x4, 0x31, 0x4, 0x4E, 0x0, 0x1D, 0x0, 0x29, 0x0, 0x0, 0x1, 0x22, 0x27, 0x35, 0x16, 0x33, 0x32, 0x36, 0x35, 0x35, 0x6, 0x23, 0x22, 0x27, 0x11, 0x23, 0x11, 0x33, 0x17, 0x36, 0x33, 0x32, 0x12, 0x15, 0x15, 0x14, 0x7, 0x11, 0x14, 0x6, 0x3, 0x32, 0x36, 0x35, 0x35, 0x34, 0x26, 0x23, 0x22, 0x7, 0x11, 0x16, 0x2, 0x9A, 0x3B, 0x33, 0x1D, 0x23, 0x41, 0x5C, 0x3A, 0x43, 0xB1, 0x6C, 0xF2, 0xDF, 0xA, 0x6D, 0xB7, 0xCE, 0xD9, 0x59, 0xB6, 0xDA, 0x83, 0x73, 0x75, 0x83, 0x96, 0x41, 0x43, 0xFE, 0x52, 0xF, 0xA3, 0x7, 0x3F, 0x56, 0x6D, 0x13, 0x75, 0xFD, 0xFF, 0x5, 0xDA, 0x6D, 0x81, 0xFE, 0xD0, 0xF8, 0x14, 0xDA, 0x91, 0xFE, 0xEB, 0x9B, 0xA5, 0x2, 0x5D, 0xD3, 0x90, 0x15, 0x92, 0xCF, 0x7D, 0xFE, 0x23, 0x7F, 0x0, 0x1, 0x0, 0x64, 0xFE, 0x52, 0x2, 0xB5, 0x4, 0x4E, 0x0, 0x1B, 0x0, 0x0, 0x13, 0x22, 0x27, 0x35, 0x16, 0x33, 0x32, 0x36, 0x35, 0x35, 0x23, 0x11, 0x33, 0x17, 0x36, 0x33, 0x32, 0x17, 0x7, 0x26, 0x23, 0x22, 0x7, 0x11, 0x33, 0x11, 0x14, 0x6, 0xD2, 0x3B, 0x33, 0x1D, 0x22, 0x41, 0x5D, 0xC4, 0xE8, 0x6, 0x56, 0x9E, 0x31, 0x25, 0x2, 0x32, 0x30, 0xA9, 0x39, 0xA1, 0xB6, 0xFE, 0x52, 0xF, 0xA3, 0x7, 0x3F, 0x56, 0x6E, 0x4, 0x3A, 0x7A, 0x8E, 0xD, 0xE5, 0x8, 0x80, 0xFD, 0xDF, 0xFE, 0xCF, 0x9B, 0xA5, 0x0, 0x1, 0x0, 0x4C, 0xFE, 0x52, 0x3, 0xCA, 0x4, 0x4E, 0x0, 0x30, 0x0, 0x0, 0x1, 0x22, 0x27, 0x35, 0x16, 0x33, 0x32, 0x36, 0x35, 0x35, 0x6, 0x23, 0x22, 0x26, 0x35, 0x33, 0x16, 0x16, 0x33, 0x32, 0x36, 0x35, 0x34, 0x26, 0x27, 0x26, 0x26, 0x35, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x23, 0x34, 0x26, 0x23, 0x22, 0x6, 0x14, 0x16, 0x17, 0x16, 0x16, 0x15, 0x11, 0x14, 0x6, 0x2, 0x8C, 0x3B, 0x33, 0x1D, 0x23, 0x41, 0x5C, 0x64, 0x82, 0xDF, 0xEA, 0xEC, 0x5, 0x8A, 0x50, 0x60, 0x65, 0x55, 0x8E, 0xB0, 0xD9, 0xE0, 0xC1, 0xCB, 0xE7, 0xF3, 0x60, 0x5F, 0x5C, 0x58, 0x5F, 0x7F, 0xBC, 0xD3, 0xB6, 0xFE, 0x52, 0xF, 0xA3, 0x7, 0x3F, 0x56, 0x84, 0x2A, 0xE4, 0x86, 0x64, 0x50, 0x4A, 0x3A, 0x35, 0x4C, 0x1E, 0x25, 0x93, 0x89, 0x85, 0xC3, 0xC6, 0x92, 0x3F, 0x63, 0x52, 0x6C, 0x40, 0x1B, 0x28, 0x92, 0x91, 0xFE, 0x5E, 0x9B, 0xA5, 0x0, 0x1, 0x0, 0x1B, 0xFE, 0x4B, 0x3, 0xDA, 0x6, 0x15, 0x0, 0x25, 0x0, 0x0, 0x13, 0x22, 0x27, 0x37, 0x16, 0x33, 0x32, 0x35, 0x11, 0x34, 0x36, 0x33, 0x32, 0x17, 0x7, 0x26, 0x23, 0x22, 0x7, 0x11, 0x21, 0x11, 0x14, 0x6, 0x23, 0x22, 0x27, 0x35, 0x16, 0x33, 0x32, 0x36, 0x35, 0x35, 0x23, 0x15, 0x14, 0x6, 0xA4, 0x43, 0x46, 0x7, 0x28, 0x35, 0xAD, 0xCD, 0xAF, 0x43, 0x46, 0x7, 0x28, 0x35, 0xAC, 0x1, 0x1, 0xBA, 0xB6, 0x88, 0x3B, 0x33, 0x1D, 0x23, 0x41, 0x5C, 0xEB, 0xCC, 0xFE, 0x4B, 0x12, 0xBE, 0x8, 0xAC, 0x4, 0xE2, 0xB5, 0xBF, 0x12, 0xBE, 0x8, 0xAA, 0xFC, 0x20, 0xFE, 0xCF, 0x9B, 0xA5, 0xF, 0xA3, 0x7, 0x3F, 0x56, 0x6E, 0x41, 0xB4, 0xC0, 0x0, 0x1, 0x0, 0x17, 0xFE, 0x52, 0x3, 0xDB, 0x4, 0x3A, 0x0, 0x14, 0x0, 0x0, 0x1, 0x22, 0x27, 0x35, 0x16, 0x33, 0x32, 0x36, 0x35, 0x35, 0x21, 0x1, 0x33, 0x13, 0x13, 0x33, 0x1, 0x33, 0x11, 0x14, 0x6, 0x2, 0x47, 0x3B, 0x33, 0x1D, 0x23, 0x41, 0x5C, 0xFE, 0xDB, 0xFE, 0x86, 0xFB, 0xEA, 0xE4, 0xFB, 0xFE, 0xCD, 0xDD, 0xB6, 0xFE, 0x52, 0xF, 0xA3, 0x7, 0x3F, 0x56, 0x6E, 0x4, 0x3A, 0xFC, 0xFB, 0x3, 0x5, 0xFC, 0x89, 0xFE, 0xCF, 0x9B, 0xA5, 0x0, 0x1, 0x0, 0x1F, 0xFE, 0x52, 0x4, 0x7, 0x4, 0x3A, 0x0, 0x19, 0x0, 0x0, 0x1, 0x22, 0x27, 0x35, 0x16, 0x33, 0x32, 0x36, 0x35, 0x35, 0x23, 0x3, 0x3, 0x21, 0x1, 0x1, 0x21, 0x13, 0x13, 0x21, 0x1, 0x13, 0x33, 0x11, 0x14, 0x6, 0x2, 0xC9, 0x3C, 0x33, 0x1D, 0x23, 0x41, 0x5C, 0x5B, 0xD8, 0xD7, 0xFE, 0xF2, 0x1, 0x56, 0xFE, 0xB6, 0x1, 0xD, 0xCA, 0xCE, 0x1, 0xD, 0xFE, 0xB6, 0xDD, 0x97, 0xB6, 0xFE, 0x52, 0xF, 0xA3, 0x7, 0x3F, 0x56, 0x6E, 0x1, 0x72, 0xFE, 0x8E, 0x2, 0x26, 0x2, 0x14, 0xFE, 0x9C, 0x1, 0x64, 0xFD, 0xEC, 0xFE, 0x9D, 0xFE, 0xCF, 0x9B, 0xA5, 0x0, 0x1, 0x0, 0x52, 0xFE, 0x52, 0x3, 0xC0, 0x4, 0x3A, 0x0, 0x15, 0x0, 0x0, 0x1, 0x22, 0x27, 0x35, 0x16, 0x33, 0x32, 0x36, 0x35, 0x35, 0x21, 0x35, 0x1, 0x21, 0x35, 0x21, 0x15, 0x1, 0x21, 0x11, 0x14, 0x6, 0x2, 0x82, 0x3B, 0x33, 0x1D, 0x23, 0x41, 0x5C, 0xFD, 0x61, 0x2, 0x26, 0xFD, 0xE5, 0x3, 0x4E, 0xFD, 0xD6, 0x2, 0x3F, 0xB6, 0xFE, 0x52, 0xF, 0xA3, 0x7, 0x3F, 0x56, 0x6E, 0x9F, 0x2, 0xD7, 0xC4, 0x99, 0xFD, 0x22, 0xFE, 0xCF, 0x9B, 0xA5, 0x0, 0x2, 0x0, 0x5B, 0xFE, 0x52, 0x5, 0x1F, 0x4, 0x4E, 0x0, 0x29, 0x0, 0x32, 0x0, 0x0, 0x1, 0x22, 0x26, 0x35, 0x35, 0x23, 0x26, 0x27, 0x6, 0x23, 0x22, 0x26, 0x35, 0x34, 0x24, 0x33, 0x33, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x23, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x11, 0x17, 0x33, 0x11, 0x14, 0x16, 0x33, 0x32, 0x37, 0x15, 0x6, 0x0, 0x36, 0x37, 0x35, 0x23, 0x6, 0x15, 0x14, 0x16, 0x4, 0xB0, 0x88, 0xB6, 0x6E, 0x12, 0xA, 0x73, 0xAA, 0xA2, 0xCE, 0x1, 0x2, 0xEA, 0x99, 0x5F, 0x5F, 0x57, 0x67, 0xF2, 0xF1, 0xCD, 0xB6, 0xED, 0x2, 0x6D, 0x5D, 0x40, 0x23, 0x1D, 0x33, 0xFD, 0x61, 0x7A, 0x19, 0x94, 0xFF, 0x58, 0xFE, 0x52, 0xA5, 0x9B, 0x6E, 0x25, 0x41, 0x7A, 0xBA, 0x8A, 0xAD, 0xB8, 0x47, 0x55, 0x65, 0x56, 0x3E, 0x80, 0xCC, 0xBA, 0xBA, 0xFE, 0xF, 0x26, 0xFE, 0xCF, 0x56, 0x3F, 0x7, 0xA3, 0xF, 0x2, 0x5D, 0x51, 0x31, 0xCC, 0x6, 0xAF, 0x41, 0x58, 0x0, 0x2, 0x0, 0x50, 0xFE, 0x52, 0x5, 0x69, 0x4, 0x4E, 0x0, 0x1F, 0x0, 0x2A, 0x0, 0x0, 0x1, 0x22, 0x26, 0x35, 0x35, 0x26, 0x27, 0x6, 0x23, 0x22, 0x2, 0x35, 0x35, 0x34, 0x12, 0x33, 0x32, 0x17, 0x37, 0x33, 0x11, 0x16, 0x17, 0x33, 0x11, 0x14, 0x16, 0x33, 0x32, 0x37, 0x15, 0x6, 0x1, 0x32, 0x37, 0x11, 0x26, 0x23, 0x22, 0x6, 0x15, 0x14, 0x16, 0x4, 0xFB, 0x88, 0xB6, 0x76, 0x2B, 0x67, 0xC0, 0xCA, 0xDB, 0xDA, 0xCD, 0xB6, 0x66, 0x14, 0xD0, 0x3, 0x45, 0x4D, 0x5D, 0x40, 0x23, 0x1D, 0x33, 0xFC, 0xFD, 0x8D, 0x44, 0x44, 0x8B, 0x83, 0x6F, 0x6D, 0xFE, 0x52, 0xA5, 0x9B, 0x5E, 0x18, 0x85, 0xA2, 0x1, 0x28, 0xE8, 0x14, 0xFC, 0x1, 0x43, 0x97, 0x83, 0xFC, 0xF9, 0x76, 0x1, 0xFE, 0xD6, 0x56, 0x3F, 0x7, 0xA3, 0xF, 0x2, 0x5C, 0x88, 0x1, 0xCA, 0x8B, 0xE0, 0xB1, 0x8B, 0xC1, 0x0, 0x2, 0x0, 0x4E, 0xFE, 0x52, 0x4, 0xDF, 0x6, 0x1F, 0x0, 0xB, 0x0, 0x2F, 0x0, 0x0, 0x25, 0x32, 0x37, 0x11, 0x26, 0x23, 0x22, 0x6, 0x15, 0x15, 0x14, 0x16, 0x1, 0x6, 0x23, 0x22, 0x26, 0x35, 0x35, 0x6, 0x23, 0x22, 0x2, 0x35, 0x35, 0x34, 0x12, 0x33, 0x32, 0x17, 0x11, 0x34, 0x36, 0x33, 0x32, 0x17, 0x15, 0x26, 0x23, 0x22, 0x6, 0x15, 0x11, 0x14, 0x16, 0x33, 0x32, 0x37, 0x2, 0x35, 0x94, 0x45, 0x43, 0x94, 0x84, 0x73, 0x72, 0x3, 0x2D, 0x2F, 0x4C, 0x88, 0xCD, 0x6B, 0xAD, 0xC3, 0xE6, 0xE5, 0xC6, 0xAB, 0x6A, 0xD7, 0x7D, 0x49, 0x33, 0x25, 0x1A, 0x41, 0x5C, 0x5D, 0x40, 0x23, 0x1D, 0xB3, 0x84, 0x1, 0xD1, 0x80, 0xD0, 0x92, 0x15, 0x91, 0xCD, 0xFD, 0xAE, 0xF, 0x95, 0xAB, 0xD2, 0x78, 0x1, 0x39, 0xEC, 0x15, 0xF7, 0x1, 0x31, 0x76, 0x1, 0x8, 0xB3, 0x8C, 0xF, 0xA2, 0x7, 0x3F, 0x56, 0xFA, 0xB2, 0x56, 0x3F, 0x7, 0x0, 0x2, 0x0, 0x54, 0xFE, 0x52, 0x4, 0xD7, 0x4, 0x4E, 0x0, 0x7, 0x0, 0x28, 0x0, 0x0, 0x1, 0x22, 0x6, 0x7, 0x21, 0x35, 0x26, 0x26, 0x1, 0x6, 0x23, 0x22, 0x26, 0x35, 0x35, 0x6, 0x23, 0x22, 0x0, 0x35, 0x35, 0x10, 0x0, 0x33, 0x32, 0x12, 0x15, 0x15, 0x21, 0x16, 0x16, 0x33, 0x32, 0x37, 0x17, 0x11, 0x14, 0x16, 0x33, 0x32, 0x37, 0x2, 0x3D, 0x64, 0x7A, 0x12, 0x1, 0xCE, 0x4, 0x61, 0x2, 0x21, 0x33, 0x3B, 0x88, 0xB6, 0x5F, 0x73, 0xF1, 0xFE, 0xEC, 0x1, 0x1B, 0xCE, 0xEC, 0xE3, 0xFD, 0x3D, 0xA, 0x95, 0x80, 0xA7, 0x68, 0x83, 0x5D, 0x41, 0x23, 0x1C, 0x3, 0x8B, 0x8C, 0x7C, 0x12, 0x5F, 0x97, 0xFA, 0xD6, 0xF, 0xA5, 0x9B, 0x80, 0x26, 0x1, 0x2C, 0xDF, 0x29, 0x1, 0x1, 0x1, 0x2D, 0xFE, 0xD4, 0xEA, 0x67, 0x7D, 0xA5, 0x86, 0x7D, 0xFE, 0xDA, 0x56, 0x3F, 0x7, 0x0, 0x1, 0x0, 0x61, 0xFE, 0x52, 0x4, 0xEB, 0x4, 0x4D, 0x0, 0x31, 0x0, 0x0, 0x1, 0x6, 0x23, 0x22, 0x26, 0x35, 0x35, 0x6, 0x23, 0x22, 0x24, 0x35, 0x34, 0x37, 0x26, 0x35, 0x34, 0x36, 0x33, 0x32, 0x4, 0x15, 0x23, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x14, 0x16, 0x33, 0x33, 0x15, 0x23, 0x6, 0x15, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x33, 0x11, 0x14, 0x16, 0x33, 0x32, 0x37, 0x4, 0xEB, 0x33, 0x3C, 0x88, 0xB6, 0x72, 0x8E, 0xCD, 0xFE, 0xF0, 0xCB, 0xB8, 0xFD, 0xCD, 0xB6, 0x1, 0x7, 0xF2, 0x79, 0x59, 0x6D, 0x64, 0x62, 0x68, 0xC7, 0xD2, 0xD1, 0x75, 0x6D, 0x6B, 0x7A, 0xF3, 0x5C, 0x41, 0x23, 0x1D, 0xFE, 0x61, 0xF, 0xA5, 0x9B, 0x8C, 0x32, 0xAC, 0x9A, 0xB9, 0x42, 0x4D, 0x98, 0x9A, 0xA1, 0xAE, 0x98, 0x3E, 0x4D, 0x57, 0x34, 0x3C, 0x4C, 0xAD, 0x4, 0x91, 0x3A, 0x5C, 0x5D, 0x3D, 0xFE, 0x51, 0x56, 0x3F, 0x7, 0x0, 0x1, 0x0, 0x4D, 0xFE, 0x52, 0x3, 0xFA, 0x4, 0x4D, 0x0, 0x31, 0x0, 0x0, 0x1, 0x6, 0x23, 0x22, 0x26, 0x35, 0x11, 0x33, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x34, 0x27, 0x23, 0x35, 0x33, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x23, 0x34, 0x24, 0x33, 0x32, 0x16, 0x15, 0x14, 0x7, 0x16, 0x15, 0x14, 0x4, 0x23, 0x22, 0x27, 0x15, 0x14, 0x16, 0x33, 0x32, 0x37, 0x1, 0xFA, 0x33, 0x3C, 0x88, 0xB6, 0xF2, 0x7A, 0x6B, 0x6E, 0x75, 0xD4, 0xD0, 0xC7, 0x69, 0x61, 0x63, 0x6E, 0x58, 0x7A, 0xF2, 0x1, 0x8, 0xB5, 0xCE, 0xFD, 0xB8, 0xCB, 0xFE, 0xF0, 0xCE, 0x8E, 0x72, 0x5E, 0x40, 0x23, 0x1D, 0xFE, 0x61, 0xF, 0xA5, 0x9B, 0x1, 0xAF, 0x3D, 0x5D, 0x5C, 0x3A, 0x92, 0x3, 0xAD, 0x4C, 0x3C, 0x34, 0x57, 0x4D, 0x3E, 0x98, 0xAE, 0xA1, 0x9A, 0x98, 0x4D, 0x42, 0xB9, 0x9A, 0xAC, 0x32, 0x8C, 0x56, 0x3F, 0x7, 0x0, 0x2, 0x0, 0x47, 0xFE, 0x52, 0x5, 0xD6, 0x4, 0x4E, 0x0, 0x22, 0x0, 0x2A, 0x0, 0x0, 0x1, 0x22, 0x26, 0x35, 0x11, 0x23, 0x6, 0x4, 0x23, 0x22, 0x2, 0x35, 0x35, 0x21, 0x26, 0x26, 0x23, 0x22, 0x7, 0x27, 0x36, 0x36, 0x33, 0x32, 0x0, 0x17, 0x33, 0x11, 0x14, 0x16, 0x33, 0x32, 0x37, 0x15, 0x6, 0x1, 0x32, 0x36, 0x37, 0x21, 0x15, 0x16, 0x16, 0x5, 0x67, 0x87, 0xB6, 0x31, 0x1C, 0xFE, 0xF2, 0xBA, 0xEC, 0xE2, 0x2, 0xC3, 0xA, 0x95, 0x80, 0xA8, 0x68, 0x83, 0x34, 0xCC, 0xA1, 0xE6, 0x1, 0x13, 0xC, 0xFB, 0x5D, 0x40, 0x23, 0x1D, 0x33, 0xFC, 0x73, 0x63, 0x7B, 0x11, 0xFE, 0x32, 0x5, 0x61, 0xFE, 0x52, 0xA5, 0x9B, 0x2, 0x25, 0xD5, 0xF6, 0x1, 0x2C, 0xEA, 0x67, 0x7D, 0xA5, 0x86, 0x7D, 0x4D, 0x7F, 0xFE, 0xEC, 0xD1, 0xFD, 0x29, 0x56, 0x3F, 0x7, 0xA3, 0xF, 0x2, 0x5D, 0x8C, 0x7C, 0x12, 0x5E, 0x98, 0x0, 0x2, 0x0, 0x7D, 0xFE, 0x52, 0x2, 0xD4, 0x5, 0xD5, 0x0, 0x9, 0x0, 0x1B, 0x0, 0x0, 0x13, 0x34, 0x36, 0x32, 0x16, 0x15, 0x14, 0x6, 0x22, 0x26, 0x1, 0x22, 0x26, 0x35, 0x35, 0x23, 0x11, 0x33, 0x11, 0x33, 0x11, 0x14, 0x16, 0x33, 0x32, 0x37, 0x15, 0x6, 0x7D, 0x49, 0x82, 0x49, 0x49, 0x82, 0x49, 0x1, 0xE8, 0x88, 0xB6, 0x9B, 0xF3, 0x78, 0x5D, 0x40, 0x23, 0x1D, 0x33, 0x5, 0x54, 0x38, 0x49, 0x49, 0x38, 0x37, 0x4A, 0x4A, 0xF9, 0x35, 0xA5, 0x9B, 0x6E, 0x4, 0x3A, 0xFC, 0x9E, 0xFE, 0xBA, 0x56, 0x3F, 0x7, 0xA3, 0xF, 0x0, 0x1, 0x0, 0x3B, 0xFE, 0x52, 0x3, 0xE8, 0x4, 0x4E, 0x0, 0x27, 0x0, 0x0, 0x1, 0x6, 0x23, 0x22, 0x26, 0x35, 0x11, 0x33, 0x16, 0x16, 0x33, 0x32, 0x36, 0x35, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x7, 0x23, 0x36, 0x36, 0x33, 0x32, 0x12, 0x17, 0x15, 0x14, 0x2, 0x23, 0x22, 0x27, 0x15, 0x14, 0x16, 0x33, 0x32, 0x37, 0x1, 0xE8, 0x33, 0x3C, 0x88, 0xB6, 0xEC, 0x5, 0x7A, 0x58, 0x95, 0x62, 0x62, 0x95, 0x63, 0x6F, 0x5, 0xE5, 0x5, 0xF1, 0xC4, 0xF7, 0xF3, 0x2, 0xF3, 0xFA, 0x84, 0x6D, 0x5D, 0x41, 0x23, 0x1D, 0xFE, 0x61, 0xF, 0xA5, 0x9B, 0x1, 0xD4, 0x4F, 0x68, 0xD9, 0x83, 0x24, 0x81, 0xDB, 0x7D, 0x57, 0xB3, 0xE4, 0xFE, 0xC4, 0xDD, 0x2A, 0xDF, 0xFE, 0xC0, 0x42, 0x9C, 0x56, 0x3F, 0x7, 0x0, 0x1, 0x0, 0x1B, 0xFE, 0x4B, 0x3, 0x31, 0x6, 0x2D, 0x0, 0x20, 0x0, 0x0, 0x1, 0x22, 0x26, 0x35, 0x35, 0x37, 0x16, 0x33, 0x32, 0x37, 0x11, 0x34, 0x36, 0x33, 0x32, 0x17, 0x7, 0x26, 0x23, 0x22, 0x7, 0x11, 0x14, 0x6, 0x7, 0x15, 0x14, 0x16, 0x33, 0x32, 0x37, 0x15, 0x6, 0x1, 0x59, 0x88, 0xB6, 0x7, 0x27, 0x36, 0xAD, 0x1, 0xCC, 0xAF, 0x43, 0x46, 0x6, 0x2A, 0x34, 0xAC, 0x1, 0xA4, 0x91, 0x5D, 0x40, 0x23, 0x1D, 0x33, 0xFE, 0x4B, 0xA5, 0x9B, 0x25, 0xBF, 0x9, 0xAB, 0x3, 0xA8, 0xB5, 0xBF, 0x12, 0xBE, 0x8, 0xAA, 0xFC, 0x58, 0xA2, 0xBB, 0x13, 0x18, 0x56, 0x3F, 0x7, 0xA3, 0xF, 0x0, 0x1, 0x0, 0x77, 0xFE, 0x52, 0x5, 0x58, 0x4, 0x3A, 0x0, 0x1F, 0x0, 0x0, 0x1, 0x22, 0x26, 0x35, 0x35, 0x23, 0x27, 0x6, 0x23, 0x22, 0x26, 0x27, 0x11, 0x33, 0x11, 0x14, 0x16, 0x33, 0x32, 0x37, 0x11, 0x33, 0x11, 0x33, 0x11, 0x14, 0x16, 0x33, 0x32, 0x37, 0x15, 0x6, 0x4, 0xEA, 0x88, 0xB6, 0x9A, 0x6, 0x6A, 0xC6, 0x9E, 0xC6, 0x1, 0xF3, 0x67, 0x45, 0xAE, 0x40, 0xF3, 0x84, 0x5D, 0x41, 0x23, 0x1C, 0x33, 0xFE, 0x52, 0xA5, 0x9B, 0x6E, 0x6A, 0x7E, 0xBA, 0xD5, 0x2, 0xBF, 0xFD, 0x43, 0x75, 0x55, 0x7D, 0x3, 0xA, 0xFC, 0x9E, 0xFE, 0xBA, 0x56, 0x3F, 0x7, 0xA3, 0xF, 0x0, 0x1, 0x0, 0x5E, 0xFD, 0xDA, 0x4, 0x46, 0x4, 0x3A, 0x0, 0x26, 0x0, 0x0, 0x1, 0x6, 0x23, 0x22, 0x26, 0x35, 0x11, 0x33, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x23, 0x35, 0x1, 0x21, 0x35, 0x21, 0x17, 0x1, 0x16, 0x16, 0x15, 0x14, 0x4, 0x23, 0x22, 0x27, 0x15, 0x14, 0x16, 0x33, 0x32, 0x37, 0x2, 0xA, 0x33, 0x3B, 0x88, 0xB6, 0xF3, 0x85, 0x70, 0x80, 0x8E, 0x9B, 0x93, 0x84, 0x1, 0x49, 0xFD, 0xA4, 0x3, 0x8D, 0x1, 0xFE, 0x87, 0xC8, 0xDA, 0xFE, 0xDF, 0xDF, 0xA7, 0x7F, 0x6A, 0x41, 0x22, 0x1D, 0xFD, 0xE9, 0xF, 0xA3, 0x9B, 0x1, 0x6E, 0x5E, 0x88, 0x88, 0x65, 0x7A, 0x69, 0xAB, 0x1, 0x5B, 0xC4, 0x9B, 0xFE, 0x7B, 0x15, 0xCC, 0xAC, 0xCE, 0xE2, 0x4A, 0xF, 0x56, 0x3D, 0x7, 0x0, 0x2, 0x0, 0x41, 0x2, 0x7D, 0x3, 0x70, 0x5, 0xBC, 0x0, 0x15, 0x0, 0x20, 0x0, 0x0, 0x1, 0x22, 0x27, 0x7, 0x23, 0x11, 0x26, 0x23, 0x7, 0x27, 0x36, 0x33, 0x32, 0x17, 0x36, 0x33, 0x32, 0x16, 0x15, 0x15, 0x14, 0x6, 0x27, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x22, 0x7, 0x11, 0x16, 0x2, 0x29, 0x86, 0x4C, 0xE, 0xAC, 0x2, 0x35, 0x13, 0x12, 0x38, 0x26, 0x8E, 0x26, 0x4C, 0x8C, 0x96, 0xAF, 0xAF, 0xC5, 0x61, 0x4E, 0x4C, 0x62, 0x68, 0x33, 0x32, 0x2, 0x7D, 0x70, 0x61, 0x2, 0x30, 0x5B, 0x3, 0x91, 0x17, 0x74, 0x74, 0xDB, 0xAA, 0xF, 0xBB, 0xF0, 0x95, 0xA2, 0x83, 0x67, 0x8A, 0x63, 0xFE, 0xB2, 0x65, 0x0, 0x1, 0x0, 0x3C, 0x2, 0x7C, 0x2, 0xF5, 0x5, 0xBA, 0x0, 0x19, 0x0, 0x0, 0x1, 0x32, 0x37, 0x33, 0x6, 0x6, 0x23, 0x22, 0x26, 0x35, 0x35, 0x34, 0x36, 0x33, 0x32, 0x16, 0x17, 0x23, 0x26, 0x23, 0x22, 0x6, 0x15, 0x15, 0x14, 0x16, 0x1, 0xAD, 0x88, 0x14, 0xAC, 0x4, 0xBC, 0x86, 0xB8, 0xBB, 0xBB, 0xB8, 0x92, 0xB0, 0x4, 0xAC, 0x15, 0x87, 0x5F, 0x4D, 0x4B, 0x3, 0x23, 0x71, 0x74, 0xA4, 0xED, 0xA5, 0x1A, 0xA5, 0xED, 0xA8, 0x85, 0x86, 0x8B, 0x60, 0x1A, 0x61, 0x8A, 0x0, 0x2, 0x0, 0x3C, 0x2, 0x26, 0x3, 0x40, 0x5, 0xBA, 0x0, 0x8, 0x0, 0x27, 0x0, 0x0, 0x1, 0x32, 0x36, 0x35, 0x34, 0x23, 0x22, 0x7, 0x16, 0x17, 0x22, 0x27, 0x7, 0x27, 0x37, 0x26, 0x35, 0x35, 0x34, 0x36, 0x33, 0x32, 0x16, 0x17, 0x23, 0x26, 0x23, 0x22, 0x6, 0x15, 0x15, 0x14, 0x17, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x6, 0x2, 0x1, 0x32, 0x50, 0x39, 0x40, 0x68, 0x27, 0x34, 0x78, 0x57, 0x71, 0x81, 0x82, 0x3A, 0xBE, 0xB3, 0x92, 0xB3, 0x4, 0xAC, 0x15, 0x87, 0x61, 0x4C, 0x6, 0x86, 0x89, 0x77, 0x6B, 0xC2, 0x3, 0x1B, 0x26, 0x29, 0x31, 0x67, 0x19, 0x9F, 0x36, 0x8C, 0x5F, 0x9F, 0x63, 0x86, 0x1B, 0xAA, 0xE8, 0xA8, 0x85, 0x86, 0x8C, 0x5F, 0x1B, 0x2A, 0x23, 0x7A, 0x78, 0x4D, 0x72, 0x87, 0x0, 0x2, 0x0, 0x3C, 0x2, 0x7D, 0x3, 0x3A, 0x6, 0xEF, 0x0, 0x1A, 0x0, 0x25, 0x0, 0x0, 0x1, 0x22, 0x26, 0x35, 0x34, 0x36, 0x33, 0x32, 0x17, 0x26, 0x27, 0x7, 0x27, 0x37, 0x26, 0x27, 0x37, 0x16, 0x17, 0x37, 0x17, 0x7, 0x16, 0x13, 0x15, 0x14, 0x6, 0x27, 0x32, 0x11, 0x35, 0x26, 0x23, 0x22, 0x6, 0x15, 0x14, 0x16, 0x1, 0xBB, 0xAA, 0xD5, 0xC3, 0xAB, 0x62, 0x50, 0x20, 0x49, 0xAB, 0x40, 0x8B, 0x29, 0x2F, 0x3E, 0x6F, 0x5B, 0xA9, 0x40, 0x93, 0xA0, 0x1, 0xDA, 0xA2, 0xB7, 0x42, 0x79, 0x5B, 0x5E, 0x5F, 0x2, 0x7D, 0xD3, 0x97, 0xA9, 0xCD, 0x36, 0x6F, 0x4C, 0x60, 0x5C, 0x4E, 0x17, 0xF, 0x9D, 0x1B, 0x45, 0x5F, 0x5C, 0x53, 0xB6, 0xFE, 0xE5, 0x42, 0xBF, 0xF0, 0xA7, 0x1, 0x12, 0x4A, 0x3B, 0x71, 0x63, 0x54, 0x6F, 0x0, 0x1, 0x0, 0x32, 0x2, 0x7C, 0x2, 0xDE, 0x5, 0xBA, 0x0, 0x20, 0x0, 0x0, 0x1, 0x22, 0x26, 0x35, 0x33, 0x16, 0x33, 0x32, 0x35, 0x34, 0x27, 0x23, 0x35, 0x33, 0x36, 0x35, 0x34, 0x23, 0x22, 0x7, 0x23, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x7, 0x16, 0x15, 0x14, 0x6, 0x1, 0x85, 0x7A, 0xD9, 0xB8, 0xB, 0x95, 0x8E, 0x86, 0x93, 0x93, 0x78, 0x80, 0x8F, 0x4, 0xB9, 0xC4, 0x83, 0x93, 0xB7, 0x85, 0x94, 0xC6, 0x2, 0x7C, 0x7A, 0x83, 0x5D, 0x61, 0x5B, 0x1, 0x97, 0x1, 0x52, 0x55, 0x50, 0x71, 0x81, 0x78, 0x72, 0x6F, 0x3A, 0x30, 0x8A, 0x71, 0x80, 0x0, 0x1, 0x0, 0x35, 0x2, 0x8C, 0x2, 0x34, 0x7, 0x1E, 0x0, 0x14, 0x0, 0x0, 0x1, 0x23, 0x11, 0x23, 0x11, 0x23, 0x35, 0x33, 0x35, 0x34, 0x36, 0x33, 0x32, 0x17, 0x7, 0x26, 0x23, 0x22, 0x7, 0x15, 0x33, 0x2, 0x19, 0xA5, 0xC5, 0x7A, 0x7A, 0x9B, 0x82, 0x34, 0x34, 0x5, 0x1C, 0x2B, 0x73, 0x1, 0xA5, 0x5, 0xC, 0xFD, 0x80, 0x2, 0x80, 0xA0, 0x55, 0x8D, 0x90, 0xD, 0x9F, 0x6, 0x75, 0x57, 0x0, 0x1, 0x0, 0x33, 0x1, 0x4C, 0x2, 0x4D, 0x5, 0xAD, 0x0, 0x15, 0x0, 0x0, 0x13, 0x22, 0x27, 0x35, 0x16, 0x33, 0x32, 0x36, 0x35, 0x11, 0x23, 0x35, 0x33, 0x11, 0x33, 0x11, 0x33, 0x15, 0x23, 0x11, 0x14, 0x6, 0xAB, 0x36, 0x2A, 0x17, 0x20, 0x32, 0x2F, 0xB0, 0xB0, 0xC5, 0xA5, 0xA5, 0x7A, 0x1, 0x4C, 0xD, 0xA6, 0x6, 0x38, 0x49, 0x1, 0x91, 0xA0, 0x1, 0x2, 0xFE, 0xFE, 0xA0, 0xFE, 0x70, 0x87, 0xA8, 0xFF, 0xFF, 0x0, 0x3C, 0x1, 0x4C, 0x3, 0x16, 0x5, 0xBA, 0x0, 0x6, 0x3, 0x7C, 0x0, 0x0, 0x0, 0x1, 0x0, 0x64, 0x1, 0xB, 0x2, 0xFA, 0x5, 0xAD, 0x0, 0x10, 0x0, 0x0, 0x1, 0x23, 0x11, 0x6, 0x23, 0x22, 0x26, 0x35, 0x11, 0x33, 0x11, 0x16, 0x33, 0x32, 0x37, 0x11, 0x33, 0x2, 0xFA, 0xC5, 0x4B, 0x82, 0x79, 0x8B, 0xC5, 0x4, 0x7F, 0x61, 0x28, 0xC5, 0x1, 0xB, 0x1, 0xE5, 0x71, 0x91, 0xA2, 0x1, 0xFB, 0xFE, 0x28, 0xAF, 0x58, 0x2, 0x2F, 0x0, 0x2, 0x0, 0x28, 0x2, 0x8C, 0x2, 0x42, 0x6, 0xEA, 0x0, 0x9, 0x0, 0x15, 0x0, 0x0, 0x12, 0x36, 0x33, 0x32, 0x16, 0x14, 0x6, 0x23, 0x22, 0x26, 0x1, 0x23, 0x11, 0x23, 0x11, 0x23, 0x35, 0x33, 0x11, 0x33, 0x11, 0x33, 0xC2, 0x3B, 0x37, 0x36, 0x3C, 0x3C, 0x36, 0x37, 0x3B, 0x1, 0x80, 0xAC, 0xC5, 0xA9, 0xA9, 0xC5, 0xAC, 0x6, 0xAC, 0x3E, 0x3E, 0x5C, 0x3D, 0x3D, 0xFD, 0xBB, 0xFE, 0x81, 0x1, 0x7F, 0xA0, 0x1, 0x2, 0xFE, 0xFE, 0x0, 0x1, 0x0, 0x64, 0x2, 0x82, 0x1, 0xCF, 0x5, 0xAD, 0x0, 0xC, 0x0, 0x0, 0x13, 0x33, 0x11, 0x16, 0x33, 0x32, 0x37, 0x17, 0x6, 0x23, 0x22, 0x26, 0x35, 0x64, 0xC4, 0x3, 0x43, 0x1C, 0x2A, 0x1B, 0x3A, 0x50, 0x62, 0x7F, 0x5, 0xAD, 0xFD, 0xC9, 0x4D, 0x10, 0x95, 0x22, 0x73, 0x7E, 0x0, 0x1, 0x0, 0x3F, 0x2, 0x8C, 0x2, 0x2B, 0x5, 0xEB, 0x0, 0xB, 0x0, 0x0, 0x1, 0x21, 0x35, 0x33, 0x11, 0x23, 0x35, 0x21, 0x15, 0x23, 0x11, 0x33, 0x2, 0x2B, 0xFE, 0x14, 0x93, 0x93, 0x1, 0xEC, 0x94, 0x94, 0x2, 0x8C, 0xA0, 0x2, 0x1F, 0xA0, 0xA0, 0xFD, 0xE1, 0x0, 0x1, 0x0, 0x28, 0x2, 0x8C, 0x2, 0x42, 0x5, 0xEB, 0x0, 0x13, 0x0, 0x0, 0x1, 0x21, 0x35, 0x33, 0x35, 0x23, 0x35, 0x33, 0x35, 0x23, 0x35, 0x21, 0x15, 0x23, 0x15, 0x33, 0x15, 0x23, 0x15, 0x33, 0x2, 0x2B, 0xFE, 0x14, 0x93, 0xAA, 0xAA, 0x93, 0x1, 0xEC, 0x94, 0xAB, 0xAB, 0x94, 0x2, 0x8C, 0xA0, 0xEC, 0xA0, 0x93, 0xA0, 0xA0, 0x93, 0xA0, 0xEC, 0x0, 0x3, 0x0, 0x0, 0x1, 0x3D, 0x2, 0x7D, 0x6, 0xEA, 0x0, 0x7, 0x0, 0x17, 0x0, 0x20, 0x0, 0x0, 0x0, 0x36, 0x32, 0x16, 0x14, 0x6, 0x22, 0x26, 0x3, 0x22, 0x26, 0x35, 0x34, 0x36, 0x33, 0x33, 0x11, 0x33, 0x11, 0x33, 0x15, 0x23, 0x14, 0x6, 0x27, 0x32, 0x36, 0x35, 0x35, 0x23, 0x22, 0x15, 0x14, 0x1, 0x1F, 0x3B, 0x6C, 0x3D, 0x3D, 0x6C, 0x3B, 0x24, 0x67, 0x94, 0x9D, 0x6A, 0x27, 0xC5, 0x8A, 0x8A, 0x70, 0x90, 0x24, 0x17, 0x21, 0x50, 0x6, 0xAC, 0x3E, 0x3E, 0x5C, 0x3D, 0x3D, 0xFA, 0xED, 0x6A, 0x67, 0x77, 0x7C, 0x2, 0xAC, 0xFD, 0x54, 0xA7, 0x83, 0x9A, 0xA3, 0x2C, 0x22, 0x2C, 0x40, 0x3A, 0x0, 0x1, 0x0, 0x64, 0x1, 0x4C, 0x1, 0xB5, 0x7, 0xE, 0x0, 0xB, 0x0, 0x0, 0x1, 0x6, 0x23, 0x22, 0x27, 0x11, 0x33, 0x11, 0x14, 0x33, 0x32, 0x37, 0x1, 0xB5, 0x52, 0x43, 0xBA, 0x2, 0xC5, 0x48, 0x1D, 0x27, 0x1, 0x5D, 0x11, 0xF5, 0x4, 0xCD, 0xFB, 0x4A, 0x50, 0x9, 0x0, 0x1, 0x0, 0x64, 0x1, 0x4C, 0x1, 0xC3, 0x7, 0xE, 0x0, 0xF, 0x0, 0x0, 0x1, 0x22, 0x27, 0x35, 0x16, 0x33, 0x32, 0x35, 0x35, 0x23, 0x11, 0x33, 0x11, 0x33, 0x15, 0x14, 0x1, 0x7, 0x43, 0x52, 0x27, 0x1D, 0x48, 0x9A, 0xC5, 0x9A, 0x1, 0x4C, 0x11, 0xB4, 0x9, 0x50, 0x34, 0x4, 0x82, 0xFC, 0x25, 0xED, 0xFA, 0x0, 0x1, 0x0, 0x65, 0x2, 0x8C, 0x2, 0xC0, 0x5, 0xAD, 0x0, 0x5, 0x0, 0x0, 0x13, 0x11, 0x33, 0x11, 0x21, 0x15, 0x65, 0xC5, 0x1, 0x96, 0x2, 0x8C, 0x3, 0x21, 0xFD, 0x86, 0xA7, 0x0, 0x1, 0x0, 0x64, 0x1, 0x4C, 0x4, 0xCA, 0x5, 0xBA, 0x0, 0x25, 0x0, 0x0, 0x1, 0x22, 0x27, 0x35, 0x16, 0x33, 0x32, 0x35, 0x11, 0x34, 0x26, 0x23, 0x22, 0x7, 0x17, 0x11, 0x23, 0x11, 0x26, 0x23, 0x22, 0x7, 0x11, 0x23, 0x11, 0x33, 0x17, 0x36, 0x33, 0x32, 0x17, 0x36, 0x33, 0x32, 0x16, 0x15, 0x11, 0x14, 0x4, 0xE, 0x45, 0x50, 0x2A, 0x1A, 0x48, 0x46, 0x3D, 0x63, 0x27, 0x2, 0xC5, 0x4, 0x7E, 0x62, 0x28, 0xC5, 0x98, 0x20, 0x4C, 0x8F, 0xB5, 0x37, 0x4A, 0x99, 0x79, 0x8B, 0x1, 0x4C, 0x11, 0xB4, 0x9, 0x50, 0x1, 0xFE, 0x69, 0x54, 0x5A, 0x23, 0xFD, 0xF6, 0x1, 0xD9, 0xAE, 0x59, 0xFD, 0xD2, 0x3, 0x21, 0x7A, 0x87, 0x98, 0x98, 0x91, 0xA2, 0xFD, 0xBF, 0xFA, 0x0, 0x1, 0x0, 0x64, 0x1, 0x4C, 0x4, 0xCA, 0x5, 0xAD, 0x0, 0x1C, 0x0, 0x0, 0x1, 0x23, 0x11, 0x6, 0x23, 0x22, 0x27, 0x6, 0x23, 0x22, 0x26, 0x35, 0x11, 0x33, 0x11, 0x16, 0x33, 0x32, 0x37, 0x27, 0x11, 0x33, 0x11, 0x16, 0x33, 0x32, 0x37, 0x11, 0x33, 0x4, 0xCA, 0xC5, 0x4C, 0x82, 0xB5, 0x37, 0x4A, 0x99, 0x79, 0x8B, 0xC5, 0x4, 0x7F, 0x63, 0x27, 0x2, 0xC5, 0x4, 0x7E, 0x62, 0x28, 0xC5, 0x1, 0x4C, 0x1, 0xA4, 0x71, 0x98, 0x98, 0x91, 0xA2, 0x1, 0xFB, 0xFE, 0x28, 0xAF, 0x5A, 0x23, 0x2, 0xA, 0xFE, 0x28, 0xAF, 0x59, 0x2, 0x2E, 0x0, 0x1, 0x0, 0x1A, 0x1, 0x4C, 0x3, 0x3C, 0x5, 0xBA, 0x0, 0x18, 0x0, 0x0, 0x13, 0x22, 0x27, 0x35, 0x16, 0x33, 0x32, 0x35, 0x11, 0x33, 0x17, 0x36, 0x33, 0x32, 0x16, 0x15, 0x11, 0x23, 0x11, 0x26, 0x23, 0x22, 0x7, 0x11, 0x6, 0xAF, 0x46, 0x4F, 0x27, 0x1D, 0x47, 0xAB, 0x11, 0x4C, 0x8B, 0x79, 0x8B, 0xC5, 0x4, 0x7F, 0x61, 0x28, 0x3, 0x1, 0x4C, 0x11, 0xB4, 0x9, 0x50, 0x3, 0x55, 0x73, 0x80, 0x91, 0xA2, 0xFE, 0x5, 0x1, 0xD9, 0xAE, 0x58, 0xFD, 0x83, 0xF2, 0x0, 0x1, 0x0, 0x64, 0x1, 0x4C, 0x3, 0x86, 0x5, 0xBA, 0x0, 0x18, 0x0, 0x0, 0x1, 0x6, 0x23, 0x22, 0x27, 0x11, 0x26, 0x23, 0x22, 0x7, 0x11, 0x23, 0x11, 0x33, 0x17, 0x36, 0x33, 0x32, 0x16, 0x15, 0x11, 0x14, 0x33, 0x32, 0x37, 0x3, 0x86, 0x4F, 0x46, 0xB9, 0x3, 0x4, 0x7E, 0x62, 0x28, 0xC5, 0xAB, 0x12, 0x4C, 0x8A, 0x78, 0x8B, 0x48, 0x1D, 0x27, 0x1, 0x5D, 0x11, 0xF2, 0x2, 0x27, 0xAE, 0x59, 0xFD, 0xD2, 0x3, 0x21, 0x71, 0x7E, 0x91, 0xA2, 0xFD, 0xD1, 0x50, 0x9, 0x0, 0x1, 0x0, 0x64, 0x2, 0x8C, 0x3, 0x83, 0x5, 0xAD, 0x0, 0x9, 0x0, 0x0, 0x1, 0x1, 0x11, 0x23, 0x11, 0x33, 0x1, 0x11, 0x33, 0x11, 0x2, 0xBD, 0xFE, 0x6C, 0xC5, 0xC5, 0x1, 0x94, 0xC6, 0x2, 0x8C, 0x1, 0xEA, 0xFE, 0x16, 0x3, 0x21, 0xFE, 0x17, 0x1, 0xE9, 0xFC, 0xDF, 0x0, 0x3, 0x0, 0x3C, 0x2, 0x7C, 0x3, 0x32, 0x5, 0xBA, 0x0, 0xD, 0x0, 0x12, 0x0, 0x17, 0x0, 0x0, 0x13, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x15, 0x14, 0x6, 0x23, 0x22, 0x26, 0x35, 0x1, 0x22, 0x7, 0x21, 0x26, 0x3, 0x32, 0x37, 0x21, 0x16, 0x3C, 0xCB, 0xAF, 0xB1, 0xCB, 0xCB, 0xB0, 0xAF, 0xCC, 0x1, 0x7A, 0x8E, 0x20, 0x1, 0x5E, 0x20, 0x8F, 0x93, 0x1D, 0xFE, 0xA0, 0x1C, 0x4, 0x23, 0xB3, 0xE4, 0xE4, 0xB3, 0x10, 0xB3, 0xE4, 0xE4, 0xB3, 0x1, 0x0, 0x9F, 0x9F, 0xFE, 0x10, 0xA7, 0xA7, 0x0, 0x3, 0x0, 0x3C, 0x1, 0x57, 0x4, 0x31, 0x7, 0xD, 0x0, 0x9, 0x0, 0x14, 0x0, 0x2D, 0x0, 0x0, 0x1, 0x32, 0x37, 0x11, 0x26, 0x23, 0x22, 0x6, 0x15, 0x14, 0x21, 0x32, 0x35, 0x35, 0x34, 0x26, 0x23, 0x22, 0x7, 0x11, 0x16, 0x17, 0x22, 0x27, 0x11, 0x23, 0x11, 0x6, 0x23, 0x22, 0x26, 0x10, 0x36, 0x33, 0x32, 0x17, 0x11, 0x33, 0x11, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x6, 0x1, 0x95, 0x21, 0x1B, 0x1A, 0x21, 0x50, 0x45, 0x1, 0xD2, 0x98, 0x49, 0x50, 0x21, 0x1B, 0x1B, 0x55, 0x3F, 0x31, 0xC5, 0x2F, 0x3B, 0x8E, 0x9D, 0x9C, 0x91, 0x3A, 0x2E, 0xC5, 0x30, 0x3E, 0x91, 0x9C, 0x9C, 0x3, 0x20, 0xB, 0x1, 0xDF, 0xB, 0x90, 0x84, 0xE1, 0xE7, 0xA, 0x73, 0x91, 0xC, 0xFE, 0x21, 0xA, 0xA5, 0x16, 0xFE, 0xC6, 0x1, 0x39, 0x15, 0xDB, 0x1, 0x76, 0xEE, 0x15, 0x1, 0x68, 0xFE, 0x96, 0x17, 0xED, 0xCC, 0xAA, 0xDC, 0x0, 0x1, 0x0, 0x3C, 0x1, 0x4C, 0x2, 0xDF, 0x5, 0xBA, 0x0, 0x2C, 0x0, 0x0, 0x1, 0x6, 0x23, 0x22, 0x26, 0x35, 0x11, 0x33, 0x16, 0x33, 0x32, 0x35, 0x34, 0x27, 0x26, 0x26, 0x35, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x23, 0x26, 0x26, 0x23, 0x22, 0x15, 0x14, 0x16, 0x17, 0x16, 0x16, 0x15, 0x14, 0x6, 0x23, 0x22, 0x27, 0x15, 0x16, 0x33, 0x32, 0x37, 0x1, 0x8D, 0x4F, 0x46, 0x66, 0x56, 0xBE, 0x10, 0x98, 0x79, 0xAD, 0x86, 0x92, 0xAC, 0x87, 0x9D, 0xB3, 0xC3, 0x1, 0x40, 0x46, 0x76, 0x4E, 0x56, 0x8E, 0x94, 0xA7, 0x9C, 0x5C, 0x49, 0x3, 0x4F, 0x1D, 0x27, 0x1, 0x5D, 0x11, 0x81, 0x84, 0x1, 0x37, 0x72, 0x4C, 0x47, 0x27, 0x1E, 0x73, 0x6A, 0x6E, 0x81, 0x93, 0x6B, 0x28, 0x3D, 0x4E, 0x28, 0x2A, 0x13, 0x1F, 0x74, 0x6D, 0x72, 0x80, 0x1C, 0x48, 0x48, 0x9, 0x0, 0x1, 0x0, 0x1A, 0x1, 0x4C, 0x1, 0xF6, 0x7, 0xE, 0x0, 0x13, 0x0, 0x0, 0x13, 0x22, 0x27, 0x35, 0x16, 0x33, 0x32, 0x35, 0x11, 0x36, 0x33, 0x32, 0x17, 0x15, 0x26, 0x23, 0x22, 0x15, 0x11, 0x6, 0xAF, 0x43, 0x52, 0x27, 0x1D, 0x47, 0x2, 0xBA, 0x42, 0x53, 0x34, 0x10, 0x47, 0x2, 0x1, 0x4C, 0x11, 0xB4, 0x9, 0x50, 0x3, 0xC1, 0xF5, 0x10, 0xB4, 0x8, 0x4F, 0xFC, 0x3E, 0xF5, 0x0, 0x1, 0x0, 0x28, 0x1, 0x4C, 0x2, 0x7, 0x6, 0x70, 0x0, 0x1B, 0x0, 0x0, 0x1, 0x22, 0x27, 0x35, 0x16, 0x33, 0x32, 0x35, 0x35, 0x26, 0x27, 0x11, 0x23, 0x35, 0x33, 0x35, 0x33, 0x15, 0x33, 0x15, 0x23, 0x11, 0x14, 0x33, 0x32, 0x37, 0x15, 0x6, 0x1, 0x47, 0x46, 0x4F, 0x27, 0x1D, 0x48, 0x90, 0x2, 0x84, 0x84, 0xC5, 0x96, 0x96, 0x51, 0x19, 0x28, 0x5, 0x1, 0x4C, 0x11, 0xB4, 0x9, 0x4A, 0x32, 0x24, 0xD2, 0x1, 0x8C, 0xA7, 0xC3, 0xC3, 0xA7, 0xFE, 0x8B, 0x6D, 0x8, 0xF3, 0xED, 0x0, 0x2, 0x0, 0x28, 0x2, 0x7F, 0x3, 0xA2, 0x5, 0xAD, 0x0, 0x6, 0x0, 0x1C, 0x0, 0x0, 0x1, 0x32, 0x37, 0x35, 0x21, 0x14, 0x16, 0x17, 0x27, 0x6, 0x23, 0x22, 0x26, 0x35, 0x35, 0x23, 0x35, 0x33, 0x11, 0x33, 0x11, 0x21, 0x11, 0x33, 0x11, 0x33, 0x15, 0x23, 0x11, 0x1, 0xE2, 0x61, 0x28, 0xFE, 0xF4, 0x46, 0xE1, 0x12, 0x4B, 0x8C, 0x78, 0x8B, 0x72, 0x72, 0xC5, 0x1, 0xC, 0xC5, 0x72, 0x72, 0x3, 0x26, 0x59, 0x64, 0x69, 0x54, 0x9A, 0x73, 0x80, 0x91, 0xA2, 0x31, 0xA7, 0x1, 0x23, 0xFE, 0xDD, 0x1, 0x23, 0xFE, 0xDD, 0xA7, 0xFE, 0xA9, 0x0, 0x1, 0x0, 0x4C, 0x2, 0x7F, 0x3, 0x81, 0x5, 0xAD, 0x0, 0x2D, 0x0, 0x0, 0x0, 0x36, 0x34, 0x26, 0x26, 0x27, 0x35, 0x34, 0x36, 0x36, 0x33, 0x15, 0x22, 0x6, 0x15, 0x14, 0x16, 0x16, 0x15, 0x14, 0x6, 0x6, 0x23, 0x22, 0x26, 0x26, 0x35, 0x34, 0x36, 0x37, 0x36, 0x35, 0x34, 0x26, 0x23, 0x35, 0x32, 0x16, 0x16, 0x15, 0x14, 0x6, 0x7, 0x6, 0x14, 0x16, 0x2, 0x6A, 0x51, 0x3C, 0x3B, 0x2, 0x29, 0x84, 0x87, 0x22, 0x49, 0x3B, 0x3B, 0x44, 0xB2, 0xA5, 0xA4, 0xB2, 0x44, 0x3B, 0x1D, 0x1E, 0x48, 0x23, 0x88, 0x83, 0x29, 0x3C, 0x1D, 0x20, 0x50, 0x3, 0x26, 0x74, 0x68, 0x58, 0x5A, 0x36, 0x7, 0x25, 0x57, 0x40, 0xA1, 0x17, 0x29, 0x22, 0x47, 0x5F, 0x49, 0x47, 0x93, 0x62, 0x62, 0x93, 0x47, 0x49, 0x5F, 0x23, 0x24, 0x22, 0x29, 0x17, 0xA1, 0x40, 0x57, 0x25, 0x3A, 0x5D, 0x2A, 0x2E, 0x68, 0x74, 0x0, 0x1, 0x0, 0x5B, 0x2, 0x7E, 0x3, 0x50, 0x5, 0xAD, 0x0, 0xF, 0x0, 0x0, 0x1, 0x33, 0x11, 0x14, 0x6, 0x23, 0x22, 0x26, 0x35, 0x11, 0x33, 0x11, 0x16, 0x33, 0x32, 0x37, 0x2, 0x8B, 0xC5, 0xD2, 0xA9, 0xA6, 0xD4, 0xC5, 0x1, 0xB4, 0xB5, 0x1, 0x5, 0xAD, 0xFE, 0x27, 0xAD, 0xA9, 0xA9, 0xAD, 0x1, 0xD9, 0xFE, 0x25, 0xAE, 0xAE, 0x0, 0x1, 0x0, 0x5B, 0x2, 0x7F, 0x3, 0x13, 0x5, 0xBA, 0x0, 0x18, 0x0, 0x0, 0x1, 0x32, 0x36, 0x35, 0x35, 0x34, 0x23, 0x22, 0x7, 0x35, 0x36, 0x33, 0x32, 0x17, 0x15, 0x14, 0x6, 0x20, 0x26, 0x35, 0x11, 0x33, 0x11, 0x14, 0x16, 0x1, 0xB7, 0x41, 0x56, 0x41, 0x1C, 0x27, 0x4F, 0x3E, 0xB7, 0x5, 0xC1, 0xFE, 0xCA, 0xC1, 0xC5, 0x57, 0x3, 0x26, 0x54, 0x6A, 0xD0, 0x4A, 0x9, 0xB4, 0x11, 0xED, 0xFA, 0xBA, 0x9A, 0x9A, 0xBA, 0x1, 0xDA, 0xFE, 0x37, 0x6A, 0x54, 0x0, 0x1, 0x0, 0x1C, 0x2, 0x8C, 0x2, 0xFF, 0x5, 0xAD, 0x0, 0x8, 0x0, 0x0, 0x1, 0x3, 0x23, 0x1, 0x33, 0x1, 0x23, 0x3, 0x27, 0x1, 0x87, 0x97, 0xD4, 0x1, 0x18, 0xB6, 0x1, 0x15, 0xD3, 0x93, 0x9, 0x4, 0x99, 0xFD, 0xF3, 0x3, 0x21, 0xFC, 0xDF, 0x2, 0xD, 0x30, 0x0, 0x1, 0x0, 0x2E, 0x2, 0x8C, 0x2, 0xB8, 0x5, 0xAD, 0x0, 0x9, 0x0, 0x0, 0x13, 0x35, 0x1, 0x21, 0x35, 0x21, 0x15, 0x1, 0x21, 0x15, 0x2E, 0x1, 0x7C, 0xFE, 0x8C, 0x2, 0x72, 0xFE, 0x82, 0x1, 0x8E, 0x2, 0x8C, 0x84, 0x1, 0xF6, 0xA7, 0x7F, 0xFE, 0x5, 0xA7, 0x0, 0x1, 0x0, 0x2E, 0x1, 0x4C, 0x3, 0x43, 0x5, 0xAD, 0x0, 0x13, 0x0, 0x0, 0x1, 0x6, 0x23, 0x22, 0x27, 0x35, 0x21, 0x35, 0x1, 0x21, 0x35, 0x21, 0x15, 0x1, 0x21, 0x15, 0x14, 0x33, 0x32, 0x37, 0x3, 0x43, 0x4F, 0x46, 0xB8, 0x4, 0xFE, 0x3C, 0x1, 0x7C, 0xFE, 0x8C, 0x2, 0x72, 0xFE, 0x82, 0x1, 0x8E, 0x47, 0x1D, 0x27, 0x1, 0x5D, 0x11, 0xF0, 0x50, 0x84, 0x1, 0xF6, 0xA7, 0x7F, 0xFE, 0x5, 0xE1, 0x4A, 0x9, 0x0, 0x2, 0x0, 0x2E, 0x1, 0xEA, 0x3, 0xA3, 0x5, 0xAD, 0x0, 0x6, 0x0, 0x1C, 0x0, 0x0, 0x1, 0x22, 0x7, 0x33, 0x36, 0x35, 0x34, 0x1, 0x7, 0x27, 0x37, 0x23, 0x35, 0x1, 0x21, 0x35, 0x21, 0x15, 0x1, 0x33, 0x36, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x6, 0x23, 0x2, 0xB1, 0x2B, 0x48, 0x15, 0x8B, 0xFE, 0xF7, 0x6C, 0x97, 0x29, 0xCD, 0x1, 0x7C, 0xFE, 0x8C, 0x2, 0x72, 0xFE, 0x82, 0x47, 0x63, 0x94, 0x6B, 0x62, 0x6E, 0xB6, 0xA2, 0x3, 0xA3, 0x70, 0x2, 0x43, 0x2B, 0xFE, 0xE9, 0xA2, 0x68, 0x3A, 0x84, 0x1, 0xF6, 0xA7, 0x7F, 0xFE, 0x5, 0x8D, 0x8D, 0x6C, 0x56, 0x74, 0x8B, 0x0, 0x1, 0x0, 0x33, 0x1, 0x54, 0x3, 0x2B, 0x5, 0xAD, 0x0, 0x19, 0x0, 0x0, 0x1, 0x22, 0x26, 0x35, 0x33, 0x16, 0x16, 0x33, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x23, 0x35, 0x13, 0x21, 0x35, 0x21, 0x17, 0x1, 0x4, 0x11, 0x14, 0x6, 0x1, 0xAE, 0x8E, 0xED, 0xC7, 0x4, 0x55, 0x5B, 0x56, 0x62, 0x7E, 0x63, 0x63, 0xF7, 0xFE, 0x45, 0x2, 0xAD, 0x1, 0xFE, 0xF4, 0x1, 0x2B, 0xE0, 0x1, 0x54, 0x96, 0xA7, 0x41, 0x57, 0x57, 0x49, 0x65, 0x4A, 0xA5, 0x1, 0x19, 0xA7, 0x80, 0xFE, 0xBA, 0x30, 0xFE, 0xE0, 0x97, 0xAC, 0x0, 0x3, 0x0, 0x58, 0x2, 0x7B, 0x3, 0x49, 0x6, 0xCE, 0x0, 0xD, 0x0, 0x15, 0x0, 0x1D, 0x0, 0x0, 0x1, 0x22, 0x26, 0x35, 0x35, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x15, 0x14, 0x6, 0x1, 0x21, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x13, 0x32, 0x36, 0x35, 0x21, 0x15, 0x14, 0x16, 0x1, 0xD1, 0x9A, 0xDF, 0xDD, 0x9B, 0x9D, 0xDC, 0xDB, 0xFE, 0xAE, 0x1, 0x68, 0x58, 0x5C, 0x5A, 0x5A, 0xB5, 0x5E, 0x55, 0xFE, 0x98, 0x5B, 0x2, 0x7B, 0xEF, 0xFC, 0x84, 0xFD, 0xE7, 0xE7, 0xFD, 0x84, 0xFC, 0xEF, 0x2, 0x7F, 0x9, 0x9E, 0x87, 0x86, 0xFD, 0x80, 0x90, 0xA1, 0x4, 0x9D, 0x90, 0x0, 0x3, 0xFB, 0xCE, 0x4, 0x90, 0xFF, 0x6A, 0x6, 0x0, 0x0, 0x3, 0x0, 0xD, 0x0, 0x17, 0x0, 0x0, 0x1, 0x13, 0x23, 0x1, 0x5, 0x34, 0x36, 0x32, 0x16, 0x15, 0x14, 0x6, 0x22, 0x26, 0x5, 0x34, 0x36, 0x32, 0x16, 0x15, 0x14, 0x6, 0x22, 0x26, 0xFD, 0x9B, 0xC3, 0xCA, 0xFE, 0xF2, 0x1, 0xD0, 0x49, 0x82, 0x49, 0x49, 0x82, 0x49, 0xFD, 0x78, 0x49, 0x82, 0x49, 0x49, 0x82, 0x49, 0x6, 0x0, 0xFE, 0xD2, 0x1, 0x2E, 0x92, 0x35, 0x48, 0x48, 0x35, 0x34, 0x47, 0x47, 0x2F, 0x35, 0x47, 0x47, 0x35, 0x34, 0x47, 0x47, 0x0, 0x3, 0xFB, 0xCB, 0x4, 0x90, 0xFF, 0x67, 0x6, 0x0, 0x0, 0x3, 0x0, 0xD, 0x0, 0x17, 0x0, 0x0, 0x1, 0x13, 0x21, 0x1, 0x25, 0x34, 0x36, 0x32, 0x16, 0x15, 0x14, 0x6, 0x22, 0x26, 0x5, 0x34, 0x36, 0x32, 0x16, 0x15, 0x14, 0x6, 0x22, 0x26, 0xFC, 0xDE, 0xC3, 0x1, 0x15, 0xFE, 0xEB, 0xFE, 0x2A, 0x49, 0x82, 0x49, 0x49, 0x82, 0x49, 0x2, 0x89, 0x48, 0x82, 0x49, 0x49, 0x82, 0x48, 0x4, 0xD2, 0x1, 0x2E, 0xFE, 0xD2, 0x9C, 0x35, 0x48, 0x48, 0x35, 0x34, 0x47, 0x47, 0x2F, 0x35, 0x47, 0x47, 0x35, 0x34, 0x47, 0x47, 0x0, 0x1, 0xFD, 0xA, 0xFD, 0xD5, 0xFE, 0x64, 0xFF, 0xAE, 0x0, 0x29, 0x0, 0x0, 0x5, 0x36, 0x33, 0x32, 0x16, 0x14, 0x6, 0x7, 0x6, 0x14, 0x16, 0x16, 0x14, 0x6, 0x6, 0x7, 0x15, 0x14, 0x17, 0x7, 0x26, 0x26, 0x35, 0x34, 0x36, 0x36, 0x37, 0x35, 0x34, 0x26, 0x27, 0x26, 0x35, 0x34, 0x36, 0x37, 0x36, 0x35, 0x34, 0x23, 0x22, 0x7, 0xFD, 0xA, 0x58, 0x6F, 0x43, 0x45, 0x46, 0x22, 0x23, 0x4B, 0x4B, 0x4C, 0x49, 0x2, 0x7C, 0x14, 0x6B, 0x82, 0x4A, 0x4A, 0x1, 0x4F, 0x22, 0x25, 0x4E, 0x28, 0x26, 0x23, 0x3F, 0x45, 0x88, 0x36, 0x3C, 0x50, 0x21, 0x8, 0x8, 0x18, 0xB, 0x1A, 0x44, 0x17, 0x9, 0xA, 0x1, 0x13, 0x8, 0x55, 0x8, 0x38, 0x2C, 0x22, 0x17, 0x9, 0xC, 0x1, 0xA, 0xC, 0xB, 0xC, 0x1F, 0x1C, 0x20, 0xB, 0xA, 0xC, 0x14, 0x24, 0x0, 0x1, 0xFC, 0xCB, 0x4, 0xAC, 0xFF, 0x6C, 0x6, 0x28, 0x0, 0x5, 0x0, 0x0, 0x1, 0x25, 0x37, 0x17, 0x25, 0x17, 0xFD, 0xCF, 0xFE, 0xFC, 0x54, 0xB0, 0x1, 0x48, 0x55, 0x4, 0xAC, 0x95, 0x90, 0x65, 0xBC, 0x90, 0x0, 0x1, 0xFC, 0xDE, 0x4, 0xD2, 0xFF, 0xBC, 0x6, 0x0, 0x0, 0x5, 0x0, 0x0, 0x1, 0x35, 0x21, 0x37, 0x21, 0x3, 0xFC, 0xDE, 0x1, 0x8D, 0x49, 0x1, 0x8, 0xEE, 0x4, 0xD2, 0x9E, 0x90, 0xFE, 0xD2, 0x0, 0x1, 0xFC, 0x3C, 0x4, 0xD2, 0xFF, 0x1A, 0x6, 0x0, 0x0, 0x5, 0x0, 0x0, 0x1, 0x3, 0x21, 0x17, 0x21, 0x15, 0xFD, 0x2A, 0xEE, 0x1, 0x4, 0x4A, 0x1, 0x90, 0x4, 0xD2, 0x1, 0x2E, 0x90, 0x9E, 0x0, 0x1, 0xFC, 0xA4, 0x4, 0xD2, 0xFF, 0x71, 0x6, 0x0, 0x0, 0x5, 0x0, 0x0, 0x1, 0x35, 0x21, 0x13, 0x23, 0x27, 0xFC, 0xA4, 0x2, 0x9, 0xC4, 0xCA, 0x81, 0x5, 0x62, 0x9E, 0xFE, 0xD2, 0x90, 0x0, 0x1, 0xFC, 0x6E, 0x4, 0xD2, 0xFF, 0x35, 0x6, 0x0, 0x0, 0x5, 0x0, 0x0, 0x1, 0x13, 0x21, 0x15, 0x21, 0x7, 0xFC, 0x6E, 0xC3, 0x2, 0x4, 0xFE, 0x84, 0x81, 0x4, 0xD2, 0x1, 0x2E, 0x9E, 0x90, 0x0, 0x1, 0xFC, 0x22, 0x4, 0xD2, 0xFF, 0x8F, 0x6, 0x0, 0x0, 0x9, 0x0, 0x0, 0x1, 0x3, 0x33, 0x17, 0x37, 0x21, 0x13, 0x23, 0x27, 0x7, 0xFC, 0xED, 0xCB, 0xEF, 0x5C, 0x61, 0x1, 0x35, 0x8C, 0xB4, 0x7A, 0x7E, 0x4, 0xD2, 0x1, 0x2E, 0xA0, 0xA0, 0xFE, 0xD2, 0xA7, 0xA7, 0x0, 0x1, 0xFC, 0x60, 0x4, 0xD2, 0xFF, 0xCE, 0x6, 0x0, 0x0, 0x9, 0x0, 0x0, 0x1, 0x13, 0x21, 0x17, 0x37, 0x33, 0x3, 0x23, 0x27, 0x7, 0xFC, 0x60, 0x8D, 0x1, 0x34, 0x61, 0x5C, 0xF0, 0xCC, 0xF6, 0x81, 0x7B, 0x4, 0xD2, 0x1, 0x2E, 0xA0, 0xA0, 0xFE, 0xD2, 0xA7, 0xA7, 0x0, 0x1, 0xFD, 0x44, 0xFD, 0xDA, 0xFE, 0x77, 0xFF, 0x87, 0x0, 0xD, 0x0, 0x0, 0x5, 0x22, 0x7, 0x15, 0x23, 0x11, 0x33, 0x17, 0x36, 0x33, 0x32, 0x17, 0x15, 0x26, 0xFE, 0x3A, 0x4B, 0x1C, 0x8F, 0x72, 0xE, 0x31, 0x55, 0x1B, 0x12, 0x1A, 0xFA, 0x37, 0xF5, 0x1, 0xA7, 0x3F, 0x45, 0x5, 0x89, 0xD, 0x0, 0x1, 0xFB, 0x61, 0x4, 0xCC, 0x0, 0x36, 0x5, 0xE7, 0x0, 0xE, 0x0, 0x0, 0x13, 0x21, 0x6, 0x23, 0x22, 0x26, 0x35, 0x33, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x21, 0x36, 0xFD, 0x83, 0x58, 0xBC, 0x95, 0xAF, 0xB7, 0x40, 0x4D, 0x4C, 0x3F, 0x3, 0x6, 0x5, 0x49, 0x7D, 0x9F, 0x7C, 0x37, 0x54, 0x54, 0x37, 0x0, 0x1, 0xFB, 0x3D, 0x4, 0xCC, 0x0, 0x10, 0x5, 0xE7, 0x0, 0xE, 0x0, 0x0, 0x1, 0x22, 0x27, 0x21, 0x35, 0x21, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x33, 0x14, 0x6, 0xFE, 0xCE, 0xBF, 0x56, 0xFD, 0x84, 0x3, 0x4, 0x40, 0x4D, 0x4C, 0x3F, 0xB7, 0xAE, 0x4, 0xCC, 0x7D, 0x9E, 0x37, 0x54, 0x54, 0x37, 0x7C, 0x9F, 0x0, 0x1, 0xFC, 0x9F, 0x4, 0xA1, 0x3, 0x63, 0x5, 0xEE, 0x0, 0x8, 0x0, 0x0, 0x13, 0x5, 0x15, 0x7, 0x25, 0x5, 0x27, 0x35, 0x25, 0x47, 0x3, 0x1C, 0xCD, 0xFD, 0x69, 0xFD, 0x6B, 0xCB, 0x3, 0x19, 0x5, 0xEE, 0xF1, 0x19, 0x43, 0xD2, 0xD2, 0x43, 0x1B, 0xEF, 0xFF, 0xFF, 0xFD, 0x2F, 0x3, 0xE6, 0xFE, 0xA7, 0x5, 0xD0, 0x0, 0xF, 0x1, 0x8C, 0xFE, 0xD0, 0x4, 0x22, 0xC0, 0x0, 0x0, 0x1, 0xFC, 0xD6, 0xFD, 0xD5, 0xFE, 0x9A, 0xFF, 0x90, 0x0, 0x7, 0x0, 0x0, 0x1, 0x23, 0x37, 0x21, 0x13, 0x33, 0x7, 0x21, 0xFE, 0x47, 0x99, 0x31, 0xFE, 0xF7, 0x53, 0x99, 0x31, 0x1, 0x9, 0xFD, 0xD5, 0xA4, 0x1, 0x17, 0xA4, 0x0, 0x1, 0xFC, 0xC9, 0xFE, 0x14, 0xFF, 0xAE, 0xFF, 0xC0, 0x0, 0x13, 0x0, 0x0, 0x5, 0x33, 0x7, 0x36, 0x33, 0x32, 0x16, 0x33, 0x32, 0x37, 0x17, 0x6, 0x6, 0x23, 0x22, 0x26, 0x23, 0x22, 0x7, 0x27, 0xFD, 0x5A, 0x98, 0x60, 0x4C, 0x3B, 0x38, 0x57, 0x32, 0x46, 0x16, 0x78, 0x8, 0x57, 0x5C, 0x53, 0x84, 0x42, 0x47, 0x62, 0x68, 0x40, 0xF5, 0x2E, 0x40, 0x50, 0x27, 0x4E, 0x80, 0x4B, 0x3B, 0x30, 0x0, 0x1, 0xFC, 0x94, 0x4, 0x7A, 0xFE, 0xDB, 0x5, 0xDF, 0x0, 0x20, 0x0, 0x0, 0x1, 0x32, 0x35, 0x34, 0x26, 0x27, 0x35, 0x32, 0x16, 0x15, 0x14, 0x6, 0x23, 0x22, 0x26, 0x26, 0x23, 0x22, 0x15, 0x14, 0x17, 0x15, 0x22, 0x26, 0x35, 0x34, 0x36, 0x33, 0x32, 0x16, 0x17, 0x16, 0x16, 0xFE, 0x36, 0x3A, 0x23, 0x2E, 0x45, 0x77, 0x59, 0x51, 0x4C, 0x4C, 0x32, 0x2D, 0x3B, 0x48, 0x4C, 0x67, 0x5F, 0x4A, 0x4C, 0x4E, 0x13, 0x10, 0x22, 0x4, 0xE4, 0x42, 0x1F, 0x34, 0x2, 0x64, 0x5F, 0x58, 0x4A, 0x64, 0x50, 0x9D, 0x3B, 0x42, 0x6, 0x68, 0x62, 0x4E, 0x4A, 0x5C, 0x58, 0x3B, 0x36, 0x25, 0x0, 0x1, 0xFC, 0x9B, 0x4, 0x7E, 0xFE, 0xE0, 0x7, 0x7A, 0x0, 0x1D, 0x0, 0x0, 0x1, 0x22, 0x26, 0x35, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x6, 0x6, 0x7, 0x27, 0x3E, 0x2, 0x35, 0x34, 0x26, 0x22, 0x6, 0x15, 0x14, 0x33, 0x32, 0x37, 0x17, 0x6, 0xFD, 0x95, 0x5F, 0x9B, 0xA3, 0x74, 0x83, 0xAB, 0x78, 0xB1, 0x57, 0x2D, 0x3E, 0x85, 0x5B, 0x57, 0x82, 0x4E, 0x7F, 0x39, 0x27, 0x19, 0x3A, 0x5, 0x91, 0x6B, 0x7D, 0x73, 0x8E, 0xA4, 0x92, 0x97, 0xB7, 0x61, 0x17, 0x70, 0x15, 0x44, 0x87, 0x77, 0x63, 0x61, 0x4A, 0x40, 0x84, 0x12, 0x56, 0x26, 0x0, 0x1, 0xFC, 0x3D, 0x4, 0xA8, 0xFF, 0x32, 0x5, 0x6C, 0x0, 0x14, 0x0, 0x0, 0x1, 0x22, 0x27, 0x6, 0x23, 0x22, 0x26, 0x35, 0x33, 0x14, 0x33, 0x32, 0x35, 0x33, 0x14, 0x33, 0x32, 0x35, 0x33, 0x14, 0x6, 0xFE, 0x52, 0x61, 0x39, 0x32, 0x68, 0x65, 0x7C, 0x8A, 0x57, 0x51, 0x85, 0x5E, 0x51, 0x8F, 0x7D, 0x4, 0xA8, 0x34, 0x34, 0x6E, 0x56, 0x54, 0x54, 0x54, 0x54, 0x62, 0x62, 0x0, 0x3, 0xFC, 0x1F, 0x4, 0xA3, 0xFF, 0x60, 0x6, 0xE0, 0x0, 0x5, 0x0, 0xF, 0x0, 0x34, 0x0, 0x0, 0x1, 0x22, 0x7, 0x33, 0x35, 0x26, 0x1, 0x32, 0x37, 0x26, 0x27, 0x23, 0x22, 0x6, 0x15, 0x14, 0x5, 0x6, 0x6, 0x23, 0x22, 0x27, 0x6, 0x6, 0x23, 0x22, 0x26, 0x35, 0x34, 0x37, 0x33, 0x35, 0x34, 0x23, 0x22, 0x15, 0x27, 0x34, 0x36, 0x33, 0x32, 0x17, 0x36, 0x33, 0x32, 0x16, 0x15, 0x15, 0x21, 0x16, 0x33, 0x32, 0x37, 0xFE, 0x6D, 0x5E, 0xF, 0xD8, 0x5, 0xFE, 0x28, 0x59, 0x24, 0x9, 0x1, 0x54, 0x37, 0x35, 0x2, 0xA6, 0x1B, 0x6B, 0x52, 0xA3, 0x47, 0x16, 0x5D, 0x49, 0x54, 0x63, 0xEF, 0x5F, 0x50, 0x58, 0x8A, 0x7D, 0x68, 0x6D, 0x3B, 0x43, 0x62, 0x79, 0x7A, 0xFE, 0x9E, 0xB, 0x7A, 0x5A, 0x30, 0x6, 0x6B, 0x76, 0x9, 0x6D, 0xFE, 0xAB, 0x4A, 0x1F, 0x23, 0x30, 0x20, 0x3C, 0xB, 0x27, 0x41, 0x7A, 0x2E, 0x47, 0x5A, 0x4B, 0xA8, 0x4, 0x22, 0x55, 0x42, 0x6, 0x4A, 0x62, 0x3B, 0x3A, 0x99, 0x77, 0x37, 0x80, 0x3E, 0x0, 0x3, 0xFC, 0x19, 0x4, 0xA3, 0xFF, 0x76, 0x6, 0xE0, 0x0, 0x7, 0x0, 0x25, 0x0, 0x2F, 0x0, 0x0, 0x1, 0x32, 0x35, 0x34, 0x23, 0x22, 0x15, 0x14, 0x17, 0x22, 0x27, 0x6, 0x6, 0x23, 0x22, 0x26, 0x35, 0x34, 0x37, 0x33, 0x35, 0x34, 0x23, 0x22, 0x15, 0x27, 0x34, 0x36, 0x33, 0x32, 0x17, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x6, 0x25, 0x32, 0x37, 0x26, 0x27, 0x23, 0x22, 0x6, 0x15, 0x14, 0xFE, 0x6F, 0x78, 0x79, 0x76, 0x77, 0x9D, 0x45, 0x16, 0x5D, 0x4A, 0x54, 0x63, 0xEE, 0x60, 0x50, 0x58, 0x8A, 0x7D, 0x68, 0x6E, 0x3B, 0x45, 0x66, 0x7A, 0x8E, 0x8E, 0xFE, 0xD, 0x5A, 0x24, 0x8, 0x2, 0x56, 0x36, 0x35, 0x5, 0x17, 0xAF, 0xA5, 0xB0, 0xA4, 0x74, 0x7D, 0x2F, 0x49, 0x5A, 0x4B, 0xA8, 0x4, 0x22, 0x55, 0x42, 0x6, 0x4A, 0x62, 0x3C, 0x3B, 0x9C, 0x88, 0x7C, 0x9C, 0x73, 0x4C, 0x1E, 0x22, 0x30, 0x20, 0x3C, 0x0, 0x2, 0xFC, 0x13, 0x4, 0xA8, 0xFF, 0x1F, 0x6, 0xE0, 0x0, 0x9, 0x0, 0x25, 0x0, 0x0, 0x1, 0x32, 0x36, 0x37, 0x35, 0x23, 0x22, 0x6, 0x15, 0x14, 0x17, 0x26, 0x27, 0x6, 0x23, 0x22, 0x26, 0x35, 0x34, 0x37, 0x33, 0x35, 0x34, 0x23, 0x22, 0x15, 0x27, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x15, 0x37, 0x13, 0x33, 0x3, 0xFC, 0xEE, 0x25, 0x41, 0xC, 0x53, 0x36, 0x35, 0xD2, 0xA, 0x6, 0x38, 0x63, 0x53, 0x63, 0xEE, 0x5F, 0x50, 0x58, 0x8A, 0x7E, 0x68, 0x60, 0x7C, 0xB, 0x8A, 0x9A, 0xE5, 0x5, 0x16, 0x26, 0x16, 0x50, 0x30, 0x20, 0x3C, 0x64, 0x1B, 0x22, 0x47, 0x5A, 0x4B, 0xA8, 0x4, 0x22, 0x55, 0x42, 0x6, 0x4A, 0x62, 0x63, 0x63, 0xC8, 0x25, 0x1, 0x65, 0xFD, 0xD6, 0x0, 0x1, 0xFC, 0xCC, 0x3, 0xC8, 0xFE, 0xB7, 0x6, 0xDF, 0x0, 0x23, 0x0, 0x0, 0x1, 0x14, 0x7, 0x27, 0x32, 0x35, 0x34, 0x27, 0x37, 0x26, 0x26, 0x35, 0x34, 0x36, 0x33, 0x32, 0x16, 0x17, 0x23, 0x26, 0x26, 0x23, 0x22, 0x15, 0x14, 0x16, 0x33, 0x32, 0x37, 0x33, 0x6, 0x6, 0x7, 0x7, 0x16, 0x16, 0xFE, 0x41, 0xB0, 0x4, 0x40, 0x48, 0x10, 0x66, 0x63, 0x7E, 0x84, 0x69, 0x7E, 0x2, 0x88, 0x2, 0x2E, 0x32, 0x72, 0x34, 0x3E, 0x59, 0x9, 0x88, 0x2, 0x6D, 0x52, 0x4, 0x21, 0x2E, 0x4, 0x3A, 0x70, 0x2, 0x4E, 0x28, 0x1E, 0x8, 0x44, 0x12, 0x99, 0x77, 0x71, 0xA4, 0x74, 0x5B, 0x22, 0x39, 0xB3, 0x43, 0x5E, 0x4D, 0x48, 0x6A, 0xC, 0x14, 0x7, 0x25, 0x0, 0x2, 0xFC, 0xAA, 0x4, 0xA8, 0xFE, 0xCA, 0x7, 0xC5, 0x0, 0x12, 0x0, 0x1D, 0x0, 0x0, 0x1, 0x22, 0x26, 0x35, 0x34, 0x36, 0x33, 0x32, 0x17, 0x26, 0x26, 0x27, 0x37, 0x16, 0x16, 0x15, 0x15, 0x14, 0x6, 0x27, 0x32, 0x37, 0x35, 0x26, 0x23, 0x22, 0x6, 0x15, 0x14, 0x16, 0xFD, 0xB8, 0x76, 0x98, 0x92, 0x71, 0x40, 0x39, 0x1E, 0x80, 0x44, 0x2F, 0x89, 0xCE, 0xA0, 0x71, 0x7F, 0x3, 0x25, 0x5E, 0x42, 0x3D, 0x41, 0x4, 0xA8, 0x92, 0x68, 0x74, 0x8E, 0x22, 0x59, 0x65, 0x16, 0x6F, 0x22, 0xF4, 0xB1, 0x2C, 0x84, 0xA6, 0x74, 0xAE, 0x40, 0x29, 0x51, 0x40, 0x3A, 0x4C, 0x0, 0x2, 0xFC, 0xAA, 0x4, 0xA8, 0xFE, 0xCA, 0x7, 0xC5, 0x0, 0x1A, 0x0, 0x25, 0x0, 0x0, 0x1, 0x22, 0x26, 0x35, 0x34, 0x36, 0x33, 0x32, 0x17, 0x26, 0x27, 0x7, 0x27, 0x37, 0x26, 0x27, 0x37, 0x16, 0x17, 0x37, 0x17, 0x7, 0x16, 0x15, 0x15, 0x14, 0x6, 0x27, 0x32, 0x37, 0x35, 0x26, 0x23, 0x22, 0x6, 0x15, 0x14, 0x16, 0xFD, 0xB8, 0x76, 0x98, 0x92, 0x71, 0x40, 0x39, 0x18, 0x35, 0x70, 0x28, 0x5F, 0x2A, 0x32, 0x2F, 0x5C, 0x4D, 0x73, 0x27, 0x67, 0x7B, 0xA0, 0x71, 0x7F, 0x3, 0x25, 0x5E, 0x42, 0x3D, 0x41, 0x4, 0xA8, 0x92, 0x68, 0x74, 0x8E, 0x22, 0x47, 0x34, 0x3F, 0x38, 0x35, 0x1B, 0x10, 0x6F, 0x17, 0x3D, 0x40, 0x37, 0x3A, 0x86, 0xC2, 0x26, 0x84, 0xA6, 0x74, 0xAE, 0x40, 0x29, 0x51, 0x40, 0x3A, 0x4C, 0x0, 0x2, 0xFC, 0xB8, 0x3, 0xDA, 0xFE, 0xC0, 0x6, 0xE6, 0x0, 0x8, 0x0, 0x21, 0x0, 0x0, 0x1, 0x32, 0x37, 0x35, 0x26, 0x23, 0x22, 0x15, 0x14, 0x13, 0x22, 0x26, 0x27, 0x37, 0x16, 0x33, 0x32, 0x37, 0x35, 0x6, 0x23, 0x22, 0x26, 0x35, 0x34, 0x36, 0x33, 0x32, 0x17, 0x37, 0x33, 0x11, 0x14, 0x6, 0xFD, 0xC1, 0x4E, 0x21, 0x21, 0x4D, 0x7B, 0x6B, 0x3A, 0x7C, 0x25, 0x41, 0x3A, 0x59, 0x80, 0x5, 0x36, 0x59, 0x65, 0x84, 0x83, 0x67, 0x62, 0x36, 0x8, 0x7E, 0xA0, 0x5, 0x1D, 0x38, 0xE7, 0x36, 0xB1, 0xA4, 0xFE, 0xBD, 0x2E, 0x2F, 0x5A, 0x45, 0x6A, 0x2F, 0x3C, 0xA0, 0x83, 0x7E, 0x9C, 0x45, 0x3A, 0xFD, 0xE8, 0x79, 0x70, 0x0, 0x1, 0xFC, 0xAA, 0x4, 0xA7, 0xFE, 0xC5, 0x7, 0x9, 0x0, 0x1A, 0x0, 0x0, 0x1, 0x22, 0x26, 0x35, 0x35, 0x34, 0x36, 0x32, 0x16, 0x17, 0x23, 0x26, 0x23, 0x22, 0x7, 0x15, 0x14, 0x33, 0x32, 0x37, 0x35, 0x23, 0x35, 0x21, 0x15, 0x6, 0x6, 0xFD, 0xBD, 0x77, 0x9C, 0x9A, 0xE8, 0x80, 0x9, 0x88, 0x11, 0x64, 0x7D, 0x1, 0x83, 0x54, 0x25, 0x76, 0x1, 0x5, 0x16, 0x88, 0x4, 0xA7, 0x87, 0x6C, 0x7C, 0x6D, 0x86, 0x66, 0x58, 0x4B, 0x90, 0x61, 0x8B, 0x1C, 0x50, 0x6B, 0xF0, 0x1C, 0x3E, 0x0, 0x1, 0xFC, 0xD2, 0x4, 0xB1, 0xFE, 0xDA, 0x7, 0xCD, 0x0, 0xC, 0x0, 0x0, 0x1, 0x27, 0x7, 0x15, 0x23, 0x11, 0x33, 0x11, 0x37, 0x37, 0x33, 0x7, 0x13, 0xFE, 0x36, 0x9A, 0x3A, 0x90, 0x90, 0x23, 0x92, 0x9F, 0xC1, 0xE5, 0x4, 0xB1, 0xE9, 0x3D, 0xAC, 0x3, 0x1C, 0xFE, 0x35, 0x2C, 0xAB, 0xDE, 0xFE, 0xB6, 0x0, 0x1, 0xFD, 0x71, 0x4, 0xB1, 0xFE, 0x0, 0x7, 0xC8, 0x0, 0x3, 0x0, 0x0, 0x1, 0x33, 0x11, 0x23, 0xFD, 0x71, 0x8F, 0x8F, 0x7, 0xC8, 0xFC, 0xE9, 0x0, 0x1, 0xFD, 0xB, 0x4, 0xB1, 0xFE, 0x9C, 0x7, 0x4, 0x0, 0x5, 0x0, 0x0, 0x1, 0x11, 0x33, 0x11, 0x21, 0x15, 0xFD, 0xB, 0x8F, 0x1, 0x2, 0x4, 0xB1, 0x2, 0x53, 0xFE, 0x21, 0x74, 0x0, 0x1, 0xFC, 0x65, 0x4, 0xB1, 0xFF, 0x9, 0x7, 0x4, 0x0, 0xC, 0x0, 0x0, 0x1, 0x3, 0x11, 0x23, 0x11, 0x33, 0x13, 0x13, 0x33, 0x11, 0x23, 0x11, 0x3, 0xFD, 0x80, 0x8C, 0x8F, 0xB0, 0xA2, 0xA3, 0xAF, 0x8F, 0x8C, 0x4, 0xB1, 0x1, 0x6D, 0xFE, 0x93, 0x2, 0x53, 0xFE, 0x4C, 0x1, 0xB4, 0xFD, 0xAD, 0x1, 0x6C, 0xFE, 0x94, 0xFF, 0xFF, 0xFC, 0xC9, 0x4, 0xB1, 0xFE, 0xA6, 0x6, 0xE3, 0x0, 0xF, 0x2, 0x18, 0xFB, 0x7C, 0xB, 0x8A, 0xC0, 0x0, 0x0, 0x1, 0xFC, 0x97, 0x4, 0xB1, 0xFE, 0xC4, 0x7, 0x4, 0x0, 0x9, 0x0, 0x0, 0x1, 0x1, 0x11, 0x23, 0x11, 0x33, 0x1, 0x11, 0x33, 0x11, 0xFE, 0x35, 0xFE, 0xF1, 0x8F, 0x8F, 0x1, 0xF, 0x8F, 0x4, 0xB1, 0x1, 0x7B, 0xFE, 0x85, 0x2, 0x53, 0xFE, 0x85, 0x1, 0x7B, 0xFD, 0xAD, 0x0, 0x2, 0xFC, 0xBB, 0x4, 0xB1, 0xFE, 0xB5, 0x7, 0x4, 0x0, 0x6, 0x0, 0x1A, 0x0, 0x0, 0x1, 0x15, 0x33, 0x32, 0x35, 0x34, 0x23, 0x3, 0x15, 0x23, 0x11, 0x33, 0x32, 0x16, 0x15, 0x14, 0x7, 0x16, 0x14, 0x17, 0x15, 0x23, 0x26, 0x26, 0x34, 0x26, 0x23, 0xFD, 0x4A, 0x6F, 0x56, 0x56, 0x6F, 0x8F, 0xFE, 0x6C, 0x79, 0x58, 0x5C, 0x13, 0x93, 0xB, 0x5, 0x32, 0x30, 0x6, 0x91, 0x99, 0x52, 0x47, 0xFE, 0xF3, 0xD3, 0x2, 0x53, 0x5E, 0x53, 0x5D, 0x2E, 0x20, 0xD6, 0x18, 0x9, 0xD, 0x3D, 0x6D, 0x1C, 0x0, 0x1, 0xFD, 0x1, 0x4, 0xB1, 0xFE, 0x91, 0x6, 0xDF, 0x0, 0x12, 0x0, 0x0, 0x1, 0x23, 0x27, 0x36, 0x36, 0x35, 0x34, 0x23, 0x22, 0x7, 0x27, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x7, 0x17, 0xFE, 0x91, 0x96, 0x8D, 0x46, 0x44, 0x44, 0x2E, 0x43, 0x42, 0x5E, 0x64, 0x52, 0x72, 0x70, 0x7A, 0x4, 0xB1, 0xEE, 0x21, 0x3B, 0x2C, 0x44, 0x25, 0x56, 0x43, 0x5F, 0x53, 0x62, 0x47, 0xCD, 0x0, 0x1, 0xFC, 0xC3, 0x4, 0xA7, 0xFE, 0x9E, 0x6, 0xE3, 0x0, 0x1F, 0x0, 0x0, 0x1, 0x34, 0x2E, 0x2, 0x35, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x23, 0x26, 0x23, 0x22, 0x15, 0x14, 0x16, 0x16, 0x15, 0x14, 0x6, 0x23, 0x22, 0x26, 0x35, 0x33, 0x16, 0x16, 0x33, 0x32, 0xFE, 0x11, 0x2D, 0xA0, 0x6F, 0x79, 0x62, 0x67, 0x84, 0x89, 0xA, 0x58, 0x4E, 0xCA, 0x72, 0x86, 0x62, 0x74, 0x7F, 0x85, 0x2, 0x46, 0x2A, 0x57, 0x5, 0x49, 0x18, 0x21, 0x26, 0x4D, 0x48, 0x4A, 0x5C, 0x65, 0x4A, 0x46, 0x39, 0x2D, 0x2E, 0x4B, 0x4D, 0x4F, 0x58, 0x74, 0x44, 0x2D, 0x22, 0x0, 0x1, 0xFD, 0x6B, 0x4, 0xB1, 0xFE, 0x81, 0x7, 0xD8, 0x0, 0xC, 0x0, 0x0, 0x1, 0x23, 0x11, 0x34, 0x36, 0x33, 0x32, 0x17, 0x7, 0x26, 0x23, 0x22, 0x15, 0xFD, 0xFB, 0x90, 0x74, 0x56, 0x22, 0x2A, 0x8, 0x14, 0x1A, 0x50, 0x4, 0xB1, 0x2, 0x60, 0x63, 0x64, 0xB, 0x6F, 0x6, 0x53, 0x0, 0x1, 0xFC, 0xD8, 0x4, 0xB1, 0xFE, 0x98, 0x6, 0xD9, 0x0, 0x9, 0x0, 0x0, 0x1, 0x35, 0x1, 0x21, 0x35, 0x21, 0x15, 0x1, 0x21, 0x15, 0xFC, 0xD8, 0x1, 0x9, 0xFE, 0xFD, 0x1, 0xAF, 0xFE, 0xFB, 0x1, 0x10, 0x4, 0xB1, 0x63, 0x1, 0x51, 0x74, 0x5E, 0xFE, 0xAB, 0x75, 0x0, 0x2, 0xFC, 0x9B, 0x4, 0xA7, 0xFE, 0xD6, 0x6, 0xE4, 0x0, 0x14, 0x0, 0x1D, 0x0, 0x0, 0x1, 0x22, 0x27, 0x6, 0x23, 0x22, 0x26, 0x35, 0x34, 0x36, 0x33, 0x32, 0x17, 0x37, 0x33, 0x11, 0x14, 0x33, 0x37, 0x17, 0x6, 0x25, 0x32, 0x37, 0x35, 0x26, 0x23, 0x22, 0x15, 0x14, 0xFE, 0x88, 0x57, 0x1B, 0x35, 0x62, 0x6A, 0x7A, 0x79, 0x6C, 0x5C, 0x35, 0x9, 0x7E, 0x26, 0xD, 0xB, 0x19, 0xFE, 0xE1, 0x49, 0x22, 0x23, 0x47, 0x75, 0x4, 0xA7, 0x53, 0x53, 0x97, 0x80, 0x81, 0xA5, 0x4D, 0x43, 0xFE, 0x7D, 0x3E, 0x1, 0x64, 0xF, 0x74, 0x3C, 0xD9, 0x40, 0xBD, 0x98, 0x0, 0x2, 0xFC, 0xBA, 0x4, 0xA4, 0xFE, 0xB7, 0x7, 0xC8, 0x0, 0xE, 0x0, 0x18, 0x0, 0x0, 0x1, 0x22, 0x27, 0x7, 0x23, 0x11, 0x33, 0x11, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x6, 0x27, 0x32, 0x35, 0x34, 0x26, 0x23, 0x22, 0x7, 0x15, 0x16, 0xFD, 0xD8, 0x62, 0x37, 0x9, 0x7C, 0x8F, 0x35, 0x59, 0x6A, 0x76, 0x77, 0x88, 0x70, 0x37, 0x3A, 0x4E, 0x20, 0x20, 0x4, 0xA4, 0x43, 0x36, 0x3, 0x17, 0xFE, 0xE1, 0x36, 0x9A, 0x89, 0x79, 0x9F, 0x75, 0xAE, 0x4A, 0x5C, 0x47, 0xC5, 0x48, 0x0, 0x2, 0xFC, 0xAD, 0x3, 0xE8, 0xFE, 0xC4, 0x7, 0xA2, 0x0, 0x10, 0x0, 0x22, 0x0, 0x0, 0x1, 0x32, 0x35, 0x34, 0x27, 0x23, 0x35, 0x33, 0x36, 0x35, 0x34, 0x23, 0x22, 0x6, 0x15, 0x11, 0x16, 0x17, 0x22, 0x27, 0x15, 0x23, 0x11, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x7, 0x16, 0x15, 0x14, 0x6, 0xFD, 0xB9, 0x7C, 0x74, 0x3A, 0x28, 0x66, 0x68, 0x2C, 0x45, 0x2F, 0x64, 0x55, 0x3E, 0x8F, 0xA0, 0x62, 0x68, 0x85, 0x60, 0x88, 0x85, 0x5, 0x16, 0x72, 0x7B, 0x1, 0x69, 0x1, 0x67, 0x5D, 0x36, 0x43, 0xFE, 0x88, 0x2B, 0x6F, 0x28, 0xE7, 0x2, 0xD0, 0x7A, 0x70, 0x66, 0x5C, 0x6D, 0x32, 0x2E, 0x8B, 0x6C, 0x75, 0x0, 0x2, 0xFC, 0xBF, 0x4, 0xA3, 0xFE, 0xB2, 0x6, 0xDF, 0x0, 0x13, 0x0, 0x19, 0x0, 0x0, 0x1, 0x22, 0x26, 0x35, 0x35, 0x21, 0x26, 0x23, 0x22, 0x7, 0x27, 0x36, 0x36, 0x33, 0x32, 0x16, 0x15, 0x15, 0x14, 0x6, 0x27, 0x32, 0x37, 0x23, 0x15, 0x16, 0xFD, 0xB2, 0x79, 0x7A, 0x1, 0x62, 0xB, 0x7A, 0x5B, 0x2E, 0x48, 0x1B, 0x6B, 0x53, 0x80, 0x8E, 0x90, 0x70, 0x5E, 0xF, 0xD8, 0x5, 0x4, 0xA3, 0x99, 0x77, 0x37, 0x80, 0x3E, 0x4B, 0x27, 0x41, 0x99, 0x72, 0x15, 0x85, 0x97, 0x74, 0x76, 0x9, 0x6D, 0x0, 0x1, 0xFD, 0xD, 0x4, 0xB1, 0xFE, 0x81, 0x7, 0xD8, 0x0, 0x14, 0x0, 0x0, 0x1, 0x23, 0x11, 0x23, 0x11, 0x23, 0x35, 0x33, 0x35, 0x34, 0x36, 0x33, 0x32, 0x17, 0x7, 0x26, 0x23, 0x22, 0x7, 0x15, 0x33, 0xFE, 0x58, 0x5D, 0x90, 0x5E, 0x5E, 0x74, 0x56, 0x22, 0x2A, 0x8, 0x14, 0x1A, 0x4F, 0x1, 0x5D, 0x6, 0x70, 0xFE, 0x41, 0x1, 0xBF, 0x6F, 0x32, 0x63, 0x64, 0xB, 0x6F, 0x6, 0x51, 0x34, 0x0, 0x1, 0xFC, 0xFB, 0x4, 0xB1, 0xFE, 0x72, 0x7, 0xC8, 0x0, 0x23, 0x0, 0x0, 0x1, 0x11, 0x23, 0x11, 0x23, 0x22, 0x15, 0x27, 0x34, 0x36, 0x33, 0x17, 0x35, 0x23, 0x22, 0x15, 0x27, 0x34, 0x36, 0x33, 0x17, 0x35, 0x33, 0x11, 0x32, 0x35, 0x17, 0x14, 0x6, 0x23, 0x15, 0x32, 0x35, 0x17, 0x14, 0x6, 0xFE, 0x0, 0x8F, 0x4, 0x2F, 0x43, 0x3C, 0x2F, 0xB, 0x4, 0x2F, 0x43, 0x3C, 0x2F, 0xB, 0x8F, 0x2F, 0x43, 0x3D, 0x35, 0x2F, 0x43, 0x3D, 0x5, 0xB4, 0xFE, 0xFD, 0x1, 0x30, 0x38, 0x12, 0x2F, 0x48, 0x1, 0x4A, 0x38, 0x12, 0x2F, 0x48, 0x1, 0xFD, 0xFE, 0xD6, 0x38, 0x14, 0x2F, 0x46, 0x49, 0x39, 0x14, 0x2F, 0x46, 0x0, 0x2, 0xFC, 0x75, 0x3, 0xED, 0xFE, 0xC1, 0x6, 0xDF, 0x0, 0x8, 0x0, 0x18, 0x0, 0x0, 0x1, 0x32, 0x36, 0x35, 0x34, 0x23, 0x22, 0x15, 0x14, 0x17, 0x22, 0x27, 0x7, 0x27, 0x37, 0x26, 0x35, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x6, 0xFD, 0xBA, 0x40, 0x37, 0x78, 0x77, 0x78, 0x30, 0x2A, 0x7A, 0x71, 0x7E, 0x40, 0x8E, 0x78, 0x7A, 0x8E, 0x8E, 0x5, 0x17, 0x59, 0x56, 0xA5, 0xB0, 0xA4, 0x74, 0xD, 0xC3, 0x41, 0xCA, 0x4C, 0x82, 0x7D, 0x9C, 0x9C, 0x88, 0x7C, 0x9C, 0xFF, 0xFF, 0xFC, 0xB9, 0x3, 0xBE, 0xFE, 0xB7, 0x6, 0xE2, 0x0, 0xF, 0x2, 0x1A, 0xFB, 0x77, 0xB, 0x86, 0xC0, 0x0, 0x0, 0x1, 0xFC, 0xE5, 0x3, 0xBC, 0xFE, 0x82, 0x7, 0xD8, 0x0, 0x15, 0x0, 0x0, 0x1, 0x22, 0x27, 0x37, 0x16, 0x33, 0x32, 0x35, 0x11, 0x34, 0x36, 0x33, 0x32, 0x17, 0x7, 0x26, 0x23, 0x22, 0x15, 0x11, 0x14, 0x6, 0xFD, 0x31, 0x18, 0x34, 0x9, 0xF, 0x1E, 0x51, 0x74, 0x57, 0x21, 0x2A, 0x8, 0x14, 0x19, 0x51, 0x74, 0x3, 0xBC, 0xB, 0x6E, 0x5, 0x53, 0x2, 0x8E, 0x63, 0x64, 0xB, 0x6F, 0x6, 0x53, 0xFD, 0x72, 0x63, 0x64, 0x0, 0x1, 0xFC, 0x6E, 0x3, 0xED, 0xFE, 0xA6, 0x6, 0xD9, 0x0, 0x13, 0x0, 0x0, 0x1, 0x27, 0x7, 0x27, 0x37, 0x26, 0x35, 0x11, 0x33, 0x11, 0x14, 0x33, 0x32, 0x37, 0x11, 0x33, 0x11, 0x23, 0x27, 0x6, 0xFD, 0x86, 0x30, 0x77, 0x71, 0x7D, 0x22, 0x90, 0x56, 0x4B, 0x1C, 0x90, 0x72, 0xF, 0x37, 0x4, 0xA7, 0x4, 0xBE, 0x41, 0xC7, 0x39, 0x61, 0x1, 0x4A, 0xFE, 0xB5, 0x73, 0x38, 0x1, 0x86, 0xFD, 0xD8, 0x3F, 0x49, 0x0, 0x1, 0xFC, 0x40, 0x4, 0xB1, 0xFF, 0x31, 0x6, 0xD9, 0x0, 0xF, 0x0, 0x0, 0x1, 0x3, 0x33, 0x13, 0x13, 0x33, 0x13, 0x35, 0x13, 0x33, 0x3, 0x23, 0x3, 0x27, 0x7, 0x3, 0xFC, 0xD3, 0x93, 0x8D, 0x4B, 0x65, 0x77, 0x67, 0x49, 0x8D, 0x93, 0x73, 0x66, 0xD, 0xC, 0x66, 0x4, 0xB1, 0x2, 0x28, 0xFE, 0x9E, 0x1, 0x62, 0xFE, 0x97, 0x3, 0x1, 0x66, 0xFD, 0xD8, 0x1, 0x4E, 0x2F, 0x2E, 0xFE, 0xB1, 0x0, 0x4, 0xFC, 0xD0, 0x4, 0xA8, 0xFE, 0xC1, 0x7, 0xAD, 0x0, 0x5, 0x0, 0xB, 0x0, 0x15, 0x0, 0x2F, 0x0, 0x0, 0x0, 0x33, 0x32, 0x14, 0x23, 0x22, 0x26, 0x33, 0x32, 0x14, 0x23, 0x22, 0x13, 0x32, 0x36, 0x37, 0x35, 0x23, 0x22, 0x6, 0x15, 0x14, 0x17, 0x26, 0x27, 0x6, 0x23, 0x22, 0x26, 0x35, 0x34, 0x37, 0x33, 0x35, 0x34, 0x23, 0x22, 0x15, 0x27, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x15, 0x14, 0x17, 0xFD, 0xF4, 0x52, 0x51, 0x51, 0x52, 0xFE, 0x52, 0x51, 0x51, 0x52, 0xB6, 0x25, 0x41, 0xC, 0x53, 0x37, 0x35, 0xD3, 0xA, 0x6, 0x38, 0x63, 0x54, 0x63, 0xEF, 0x5F, 0x50, 0x58, 0x8A, 0x7D, 0x68, 0x60, 0x7C, 0x14, 0x7, 0xAD, 0x98, 0x98, 0x98, 0xFE, 0x1, 0x26, 0x16, 0x50, 0x30, 0x20, 0x3C, 0x64, 0x1B, 0x22, 0x47, 0x5A, 0x4B, 0xA8, 0x4, 0x22, 0x55, 0x42, 0x6, 0x4A, 0x62, 0x63, 0x63, 0xE3, 0x4C, 0x39, 0x0, 0x4, 0xFC, 0xB1, 0x4, 0xA3, 0xFE, 0xBF, 0x7, 0xAD, 0x0, 0x5, 0x0, 0xB, 0x0, 0x16, 0x0, 0x1F, 0x0, 0x0, 0x0, 0x33, 0x32, 0x14, 0x23, 0x22, 0x26, 0x33, 0x32, 0x14, 0x23, 0x22, 0x13, 0x22, 0x26, 0x35, 0x34, 0x36, 0x32, 0x16, 0x15, 0x14, 0x6, 0x27, 0x32, 0x36, 0x35, 0x34, 0x23, 0x22, 0x15, 0x14, 0xFD, 0xE6, 0x51, 0x52, 0x52, 0x51, 0xFE, 0x51, 0x52, 0x52, 0x51, 0xD1, 0x7A, 0x8E, 0x8E, 0xF2, 0x8E, 0x8D, 0x79, 0x40, 0x37, 0x78, 0x77, 0x7, 0xAD, 0x98, 0x98, 0x98, 0xFD, 0x8E, 0x9C, 0x87, 0x7D, 0x9C, 0x9B, 0x89, 0x7C, 0x9C, 0x74, 0x59, 0x56, 0xA5, 0xB0, 0xA4, 0x0, 0x3, 0xFC, 0xC9, 0x4, 0xA7, 0xFE, 0xA6, 0x7, 0xAD, 0x0, 0x3, 0x0, 0x7, 0x0, 0x18, 0x0, 0x0, 0x0, 0x32, 0x14, 0x22, 0x26, 0x32, 0x14, 0x22, 0x1, 0x27, 0x6, 0x23, 0x22, 0x26, 0x35, 0x11, 0x33, 0x11, 0x14, 0x33, 0x32, 0x37, 0x11, 0x33, 0x11, 0xFD, 0xE4, 0xA2, 0xA2, 0xFE, 0xA2, 0xA2, 0x1, 0x4E, 0xF, 0x37, 0x68, 0x56, 0x67, 0x90, 0x56, 0x4B, 0x1C, 0x90, 0x7, 0xAD, 0x98, 0x98, 0x98, 0xFD, 0x9C, 0x3F, 0x49, 0x6C, 0x7C, 0x1, 0x4A, 0xFE, 0xB5, 0x73, 0x38, 0x1, 0x86, 0xFD, 0xD8, 0xFF, 0xFF, 0xFC, 0xDB, 0x4, 0x96, 0xFE, 0x93, 0x6, 0xB, 0x0, 0x7, 0x1, 0x85, 0xFC, 0x8B, 0x3, 0xF3, 0x0, 0x1, 0xFD, 0x23, 0xFE, 0x5A, 0x2, 0xBA, 0xFF, 0xA0, 0x0, 0xC, 0x0, 0x0, 0x1, 0x23, 0x26, 0x24, 0x23, 0x22, 0x4, 0x7, 0x23, 0x36, 0x24, 0x20, 0x4, 0x2, 0xBA, 0xB6, 0x37, 0xFE, 0xEF, 0xCD, 0xCE, 0xFE, 0xF2, 0x3A, 0xB6, 0x4A, 0x1, 0x62, 0x2, 0x40, 0x1, 0x61, 0xFE, 0x5A, 0x37, 0x80, 0x80, 0x37, 0x7C, 0xCA, 0xCA, 0x0, 0x2, 0xFC, 0x55, 0xFE, 0x2, 0xFF, 0x32, 0xFF, 0xC4, 0x0, 0x13, 0x0, 0x28, 0x0, 0x0, 0x5, 0x17, 0x14, 0x6, 0x23, 0x22, 0x26, 0x26, 0x23, 0x22, 0x15, 0x27, 0x34, 0x36, 0x33, 0x32, 0x16, 0x33, 0x32, 0x36, 0x15, 0x17, 0x14, 0x6, 0x23, 0x22, 0x26, 0x26, 0x23, 0x22, 0x6, 0x15, 0x27, 0x34, 0x36, 0x33, 0x32, 0x16, 0x33, 0x32, 0x36, 0xFE, 0x9D, 0x95, 0x80, 0x60, 0x42, 0x4F, 0x48, 0x34, 0x5B, 0x95, 0x7F, 0x5F, 0x52, 0x6F, 0x4D, 0x26, 0x36, 0x95, 0x80, 0x60, 0x42, 0x4F, 0x48, 0x34, 0x27, 0x34, 0x95, 0x7F, 0x5F, 0x52, 0x6F, 0x4D, 0x26, 0x36, 0x3C, 0xA, 0x57, 0x73, 0x23, 0x23, 0x51, 0x8, 0x55, 0x77, 0x46, 0x2C, 0xBE, 0xA, 0x58, 0x72, 0x23, 0x23, 0x2D, 0x24, 0x7, 0x55, 0x77, 0x45, 0x2C, 0xFF, 0xFF, 0xFC, 0x46, 0x4, 0x9C, 0xFF, 0x2C, 0x7, 0x82, 0x0, 0x7, 0x1, 0x73, 0xFC, 0x9, 0x2, 0x4D, 0x0, 0x2, 0xFA, 0xEF, 0xFD, 0xDD, 0x0, 0xA2, 0xFF, 0xBC, 0x0, 0x6, 0x0, 0xF, 0x0, 0x0, 0x1, 0x35, 0x25, 0x25, 0x35, 0x5, 0x15, 0x5, 0x1, 0x33, 0x13, 0x17, 0x37, 0x13, 0x33, 0x1, 0xFA, 0xEF, 0x1, 0xBE, 0xFE, 0x42, 0x2, 0xE7, 0x1, 0x8, 0xFE, 0xDF, 0xB2, 0xA3, 0x1D, 0x1B, 0xA7, 0xB1, 0xFE, 0xE0, 0xFD, 0xE3, 0x84, 0x68, 0x6A, 0x83, 0xB8, 0x68, 0xBF, 0x1, 0xDA, 0xFE, 0xE2, 0x41, 0x41, 0x1, 0x1E, 0xFE, 0x26, 0xFF, 0xFF, 0x0, 0x95, 0xFE, 0x40, 0x5, 0x19, 0x5, 0xB0, 0x0, 0x26, 0x0, 0x2D, 0x0, 0x0, 0x0, 0x6, 0x0, 0x7A, 0x30, 0x0, 0xFF, 0xFF, 0x0, 0x7A, 0xFE, 0x40, 0x3, 0xF9, 0x6, 0x0, 0x0, 0x26, 0x0, 0x4D, 0x0, 0x0, 0x0, 0x6, 0x0, 0x7A, 0xE, 0x0, 0xFF, 0xFF, 0x0, 0xA, 0xFE, 0x7F, 0x2, 0xE8, 0x5, 0xB0, 0x0, 0x26, 0x0, 0x2E, 0x5E, 0x0, 0x0, 0x7, 0x1, 0x8D, 0xFF, 0x90, 0xF9, 0xA4, 0xFF, 0xFF, 0x0, 0x6, 0xFE, 0x83, 0x2, 0xE4, 0x5, 0xD5, 0x0, 0x26, 0x0, 0x4E, 0x76, 0x0, 0x0, 0x7, 0x1, 0x8D, 0xFF, 0x8C, 0xF9, 0xA8, 0xFF, 0xFF, 0x0, 0x14, 0x0, 0x0, 0x2, 0xD2, 0x7, 0xBE, 0x0, 0x26, 0x0, 0x2E, 0x52, 0x0, 0x0, 0x7, 0x7, 0xB5, 0x3, 0xBA, 0x1, 0x59, 0xFF, 0xFF, 0x0, 0xE, 0x0, 0x0, 0x2, 0xD4, 0x7, 0x26, 0x0, 0x26, 0x0, 0x8E, 0x63, 0x0, 0x0, 0x7, 0x8, 0xBB, 0x3, 0xB7, 0xFF, 0xF9, 0x0, 0x2, 0x0, 0xD2, 0x0, 0x0, 0x2, 0xD7, 0x7, 0x86, 0x0, 0x9, 0x0, 0x16, 0x0, 0x0, 0x1, 0x34, 0x36, 0x32, 0x16, 0x15, 0x14, 0x6, 0x22, 0x26, 0x13, 0x23, 0x11, 0x34, 0x36, 0x33, 0x32, 0x17, 0x7, 0x26, 0x23, 0x22, 0x15, 0x1, 0x92, 0x45, 0x7C, 0x45, 0x45, 0x7C, 0x45, 0x34, 0xF4, 0xCC, 0xB0, 0x43, 0x46, 0x6, 0x2A, 0x34, 0xAD, 0x7, 0xA, 0x35, 0x47, 0x47, 0x35, 0x34, 0x46, 0x46, 0xF9, 0x2A, 0x4, 0xA1, 0xB5, 0xBF, 0x12, 0xBE, 0x8, 0xAC, 0x0, 0x1, 0x0, 0x41, 0x0, 0x0, 0x2, 0xD7, 0x6, 0x15, 0x0, 0x14, 0x0, 0x0, 0x1, 0x7, 0x11, 0x23, 0x11, 0x7, 0x35, 0x37, 0x11, 0x34, 0x36, 0x33, 0x32, 0x17, 0x7, 0x26, 0x23, 0x22, 0x7, 0x11, 0x37, 0x2, 0x63, 0x9D, 0xF4, 0x91, 0x91, 0xCC, 0xB0, 0x43, 0x46, 0x6, 0x2A, 0x34, 0xAC, 0x1, 0x9D, 0x2, 0xD0, 0x37, 0xFD, 0x67, 0x2, 0x42, 0x33, 0xB7, 0x34, 0x1, 0xA7, 0xB5, 0xBF, 0x12, 0xBE, 0x8, 0xAA, 0xFE, 0xAD, 0x38, 0x0, 0x1, 0x0, 0x2D, 0x0, 0x0, 0x2, 0xD7, 0x6, 0x15, 0x0, 0x12, 0x0, 0x0, 0x1, 0x23, 0x11, 0x23, 0x11, 0x23, 0x35, 0x33, 0x36, 0x36, 0x33, 0x32, 0x17, 0x7, 0x26, 0x23, 0x22, 0x7, 0x33, 0x2, 0xA1, 0xDB, 0xF4, 0xA5, 0xA7, 0x10, 0xC7, 0xA3, 0x43, 0x46, 0x6, 0x2A, 0x34, 0x8C, 0x1B, 0xD5, 0x4, 0x31, 0xFB, 0xCF, 0x4, 0x31, 0xA5, 0x9B, 0xA4, 0x12, 0xBE, 0x8, 0x77, 0x0, 0x1, 0x0, 0x74, 0xFF, 0xEB, 0x4, 0xF3, 0x5, 0xC4, 0x0, 0x24, 0x0, 0x0, 0x5, 0x22, 0x27, 0x37, 0x16, 0x33, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x23, 0x35, 0x1, 0x26, 0x26, 0x23, 0x22, 0x6, 0x15, 0x11, 0x23, 0x11, 0x31, 0x12, 0x12, 0x33, 0x32, 0x4, 0x17, 0x1, 0x16, 0x16, 0x15, 0x14, 0x4, 0x3, 0x2, 0x9F, 0x93, 0x45, 0x6E, 0x6F, 0x80, 0x8E, 0x9A, 0x93, 0x8E, 0x1, 0x1C, 0x31, 0x7F, 0x5E, 0x87, 0x66, 0xF2, 0x1, 0xEF, 0xEF, 0xAD, 0x1, 0xE, 0x78, 0xFE, 0xBB, 0xCF, 0xE3, 0xFE, 0xE3, 0x15, 0x36, 0xBE, 0x31, 0x84, 0x69, 0x91, 0x7B, 0xAB, 0x1, 0x53, 0x25, 0x37, 0xB4, 0x91, 0xFC, 0x44, 0x3, 0xBE, 0x1, 0x2, 0x1, 0x4, 0x85, 0x65, 0xFE, 0x77, 0x14, 0xDE, 0xC2, 0xD3, 0xDF, 0xFF, 0xFF, 0x0, 0x54, 0xFF, 0xEC, 0x4, 0x39, 0x6, 0x21, 0x0, 0x6, 0x2, 0x3D, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x95, 0x0, 0x0, 0x5, 0xEF, 0x5, 0xB0, 0x0, 0x26, 0x0, 0x31, 0x0, 0x0, 0x0, 0x7, 0x0, 0x31, 0x1, 0xC8, 0x0, 0x0, 0x0, 0x1, 0x0, 0x1B, 0x0, 0x0, 0x4, 0x50, 0x6, 0x0, 0x0, 0x13, 0x0, 0x0, 0x21, 0x11, 0x23, 0x11, 0x23, 0x11, 0x23, 0x35, 0x33, 0x35, 0x33, 0x15, 0x33, 0x35, 0x33, 0x15, 0x33, 0x15, 0x23, 0x11, 0x2, 0x87, 0xA6, 0xF3, 0xD3, 0xD3, 0xF3, 0xA6, 0xF3, 0xD6, 0xD6, 0x4, 0x9A, 0xFB, 0x66, 0x4, 0x9A, 0xAA, 0xBC, 0xBC, 0xBC, 0xBC, 0xAA, 0xFB, 0x66, 0x0, 0x1, 0x0, 0x66, 0xFF, 0xEC, 0x4, 0x32, 0x5, 0xB7, 0x0, 0x1B, 0x0, 0x0, 0x1, 0x37, 0x16, 0x12, 0x15, 0x14, 0x6, 0x23, 0x22, 0x0, 0x11, 0x35, 0x10, 0x0, 0x25, 0x17, 0x6, 0x2, 0x11, 0x15, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x34, 0x26, 0x2, 0x54, 0x57, 0xAA, 0xDD, 0xF9, 0xE3, 0xDF, 0xFE, 0xEF, 0x1, 0x3B, 0x1, 0x69, 0x20, 0xE2, 0xE8, 0x90, 0x63, 0x6E, 0x7D, 0x8B, 0x3, 0x14, 0xB9, 0x34, 0xFE, 0xEB, 0xBC, 0xDD, 0xFF, 0x1, 0x44, 0x1, 0x6, 0x2C, 0x1, 0x4D, 0x1, 0xD0, 0x38, 0xC8, 0x2B, 0xFE, 0xD4, 0xFE, 0xF3, 0x79, 0xAD, 0xB1, 0x87, 0x7C, 0x92, 0xA7, 0x0, 0x1, 0x0, 0x4E, 0xFF, 0xEC, 0x4, 0x10, 0x6, 0x1F, 0x0, 0x1B, 0x0, 0x0, 0x1, 0x37, 0x16, 0x12, 0x15, 0x14, 0x6, 0x23, 0x22, 0x0, 0x11, 0x35, 0x10, 0x0, 0x25, 0x17, 0x6, 0x0, 0x11, 0x15, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x34, 0x26, 0x2, 0x36, 0x57, 0xA8, 0xDB, 0xF7, 0xE1, 0xDC, 0xFE, 0xF2, 0x1, 0x4A, 0x1, 0x34, 0x52, 0xCF, 0xFE, 0xF3, 0x90, 0x63, 0x6E, 0x7D, 0x8B, 0x3, 0x14, 0xB9, 0x34, 0xFE, 0xEB, 0xBC, 0xDD, 0xFF, 0x1, 0x43, 0x1, 0x6, 0x2D, 0x1, 0x4D, 0x1, 0xED, 0x83, 0xB5, 0x62, 0xFE, 0x86, 0xFE, 0xD2, 0x4E, 0xAF, 0xB3, 0x8A, 0x7D, 0x92, 0xA7, 0x0, 0x2, 0x0, 0x1C, 0xFF, 0xEB, 0x5, 0x46, 0x5, 0xB0, 0x0, 0xF, 0x0, 0x1B, 0x0, 0x0, 0x5, 0x22, 0x26, 0x10, 0x36, 0x33, 0x32, 0x17, 0x1, 0x21, 0x1, 0x1, 0x21, 0x1, 0x6, 0x6, 0x27, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x14, 0x16, 0x1, 0x8D, 0x99, 0xD8, 0xD8, 0x99, 0x44, 0x3E, 0xFE, 0x72, 0x1, 0x11, 0x1, 0x5B, 0x1, 0x49, 0x1, 0x10, 0xFD, 0xA4, 0x27, 0xBE, 0x77, 0x3E, 0x56, 0x56, 0x3E, 0x3F, 0x58, 0x58, 0x15, 0xD8, 0x1, 0x32, 0xD9, 0x17, 0x2, 0xF9, 0xFD, 0x34, 0x2, 0xCC, 0xFB, 0x30, 0x6B, 0x8A, 0xD6, 0x4F, 0x4D, 0x4E, 0x51, 0x51, 0x4E, 0x4D, 0x4F, 0x0, 0x2, 0x0, 0x1B, 0xFE, 0x4B, 0x4, 0x99, 0x4, 0x3A, 0x0, 0x11, 0x0, 0x1D, 0x0, 0x0, 0x1, 0x22, 0x26, 0x35, 0x34, 0x36, 0x33, 0x32, 0x17, 0x1, 0x21, 0x13, 0x17, 0x13, 0x21, 0x1, 0x6, 0x6, 0x27, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x14, 0x16, 0x1, 0x89, 0x97, 0xD7, 0xD8, 0x99, 0x2E, 0x2D, 0xFE, 0xE8, 0x1, 0xA, 0xCB, 0xC, 0xE0, 0x1, 0x9, 0xFE, 0x61, 0x33, 0xB0, 0x8A, 0x3E, 0x56, 0x56, 0x3E, 0x40, 0x57, 0x57, 0xFE, 0x4B, 0xD8, 0x99, 0x98, 0xDA, 0xC, 0x3, 0x18, 0xFD, 0x63, 0x36, 0x2, 0xD3, 0xFB, 0x3B, 0x96, 0x94, 0xD6, 0x4F, 0x4D, 0x4E, 0x50, 0x50, 0x4E, 0x4D, 0x4F, 0x0, 0x1, 0x0, 0x5B, 0x4, 0x6F, 0x1, 0x5B, 0x5, 0xD8, 0x0, 0x7, 0x0, 0x0, 0x1, 0x15, 0x6, 0x7, 0x27, 0x36, 0x35, 0x35, 0x1, 0x5B, 0x2, 0xAE, 0x50, 0x4F, 0x5, 0xD8, 0x5D, 0xB3, 0x59, 0x49, 0x4B, 0x82, 0x53, 0x0, 0x1, 0x0, 0x73, 0xFD, 0xF2, 0x1, 0x75, 0xFF, 0x9C, 0x0, 0xB, 0x0, 0x0, 0x17, 0x33, 0x15, 0x14, 0x33, 0x37, 0x15, 0x6, 0x23, 0x22, 0x26, 0x35, 0x73, 0xA4, 0x33, 0x2B, 0x24, 0x2E, 0x4C, 0x64, 0x64, 0xEC, 0x48, 0x4, 0x6E, 0xC, 0x57, 0x63, 0x0, 0x1, 0x0, 0x5B, 0x4, 0x6F, 0x1, 0x5B, 0x5, 0xD8, 0x0, 0x7, 0x0, 0x0, 0x1, 0x15, 0x6, 0x7, 0x27, 0x36, 0x35, 0x35, 0x1, 0x5B, 0x2, 0xAE, 0x50, 0x4F, 0x5, 0xD8, 0x5D, 0xB3, 0x59, 0x49, 0x4B, 0x82, 0x53, 0x0, 0x1, 0x0, 0x4B, 0x4, 0xDB, 0x3, 0x29, 0x5, 0xF5, 0x0, 0x14, 0x0, 0x0, 0x1, 0x17, 0x14, 0x6, 0x23, 0x22, 0x26, 0x26, 0x23, 0x22, 0x6, 0x15, 0x27, 0x34, 0x36, 0x33, 0x32, 0x16, 0x33, 0x32, 0x36, 0x2, 0x94, 0x95, 0x81, 0x5F, 0x40, 0x51, 0x47, 0x36, 0x26, 0x34, 0x96, 0x7F, 0x60, 0x52, 0x6F, 0x4D, 0x26, 0x36, 0x5, 0xF5, 0xC, 0x6F, 0x91, 0x2D, 0x2C, 0x39, 0x2E, 0x8, 0x6E, 0x96, 0x59, 0x39, 0x0, 0x3, 0x0, 0x6F, 0x4, 0xC7, 0x3, 0x48, 0x6, 0xC7, 0x0, 0x13, 0x0, 0x1F, 0x0, 0x2B, 0x0, 0x0, 0x1, 0x17, 0x14, 0x6, 0x23, 0x22, 0x26, 0x23, 0x22, 0x6, 0x15, 0x27, 0x34, 0x36, 0x33, 0x32, 0x16, 0x33, 0x32, 0x36, 0x1, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x6, 0x23, 0x22, 0x26, 0x25, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x6, 0x23, 0x22, 0x26, 0x2, 0x8B, 0x67, 0x5D, 0x49, 0x50, 0x52, 0x41, 0x1F, 0x2A, 0x68, 0x5C, 0x49, 0x42, 0x63, 0x3F, 0x1E, 0x2C, 0xFD, 0xE4, 0x44, 0x3D, 0x3E, 0x45, 0x45, 0x3E, 0x3D, 0x44, 0x1, 0xD5, 0x44, 0x3D, 0x3E, 0x45, 0x45, 0x3E, 0x3D, 0x44, 0x6, 0xC7, 0x1E, 0x49, 0x6D, 0x47, 0x32, 0x25, 0x1C, 0x47, 0x71, 0x47, 0x32, 0xFE, 0x9C, 0x32, 0x44, 0x44, 0x32, 0x31, 0x45, 0x45, 0x2F, 0x32, 0x45, 0x45, 0x32, 0x31, 0x44, 0x44, 0x0, 0x2, 0x0, 0x5B, 0x4, 0x6F, 0x2, 0xC9, 0x5, 0xD8, 0x0, 0x7, 0x0, 0xD, 0x0, 0x0, 0x1, 0x15, 0x6, 0x7, 0x27, 0x36, 0x35, 0x35, 0x1, 0x15, 0x23, 0x3, 0x35, 0x33, 0x1, 0x5B, 0x2, 0xAE, 0x50, 0x4F, 0x2, 0x1F, 0x5D, 0xE6, 0xD3, 0x5, 0xD8, 0x5D, 0xB3, 0x59, 0x49, 0x4B, 0x82, 0x53, 0xFE, 0xC0, 0x14, 0x1, 0x3F, 0x15, 0x0, 0x2, 0x0, 0x5B, 0x4, 0x6F, 0x2, 0xB5, 0x5, 0xD8, 0x0, 0x7, 0x0, 0xD, 0x0, 0x0, 0x1, 0x15, 0x6, 0x7, 0x27, 0x36, 0x35, 0x35, 0x13, 0x35, 0x13, 0x33, 0x15, 0x3, 0x1, 0x5B, 0x2, 0xAE, 0x50, 0x4F, 0xC9, 0x6F, 0xD3, 0xE6, 0x5, 0xD8, 0x5D, 0xB3, 0x59, 0x49, 0x4B, 0x82, 0x53, 0xFE, 0xAC, 0x14, 0x1, 0x40, 0x15, 0xFE, 0xC1, 0x0, 0x2, 0x0, 0x6F, 0x4, 0x6F, 0x2, 0xA8, 0x6, 0x9F, 0x0, 0x13, 0x0, 0x1C, 0x0, 0x0, 0x1, 0x17, 0x14, 0x6, 0x23, 0x22, 0x26, 0x23, 0x22, 0x6, 0x15, 0x27, 0x34, 0x36, 0x33, 0x32, 0x16, 0x33, 0x32, 0x36, 0x7, 0x15, 0x14, 0x6, 0x7, 0x27, 0x36, 0x35, 0x35, 0x2, 0x41, 0x67, 0x5C, 0x49, 0x50, 0x53, 0x41, 0x1F, 0x2A, 0x67, 0x5C, 0x49, 0x42, 0x62, 0x3F, 0x1E, 0x2C, 0x57, 0x45, 0x3E, 0x55, 0x3F, 0x6, 0x9F, 0x1E, 0x49, 0x6D, 0x47, 0x32, 0x25, 0x1C, 0x48, 0x70, 0x46, 0x31, 0xE1, 0x4B, 0x40, 0x7A, 0x25, 0x3C, 0x3F, 0x65, 0x4A, 0x0, 0x2, 0x0, 0x68, 0x4, 0x6F, 0x2, 0xA4, 0x5, 0xD8, 0x0, 0x8, 0x0, 0xE, 0x0, 0x0, 0x13, 0x33, 0x15, 0x14, 0x17, 0x7, 0x26, 0x26, 0x35, 0x5, 0x15, 0x23, 0x3, 0x35, 0x33, 0x68, 0xB0, 0x50, 0x51, 0x51, 0x5E, 0x2, 0x3C, 0x5C, 0xE6, 0xD3, 0x5, 0xD8, 0x53, 0x83, 0x4A, 0x49, 0x2A, 0x8D, 0x59, 0xE7, 0x14, 0x1, 0x3F, 0x15, 0x0, 0x2, 0x0, 0x68, 0x4, 0x6F, 0x2, 0xD6, 0x5, 0xD8, 0x0, 0x8, 0x0, 0xE, 0x0, 0x0, 0x13, 0x33, 0x15, 0x14, 0x17, 0x7, 0x26, 0x26, 0x35, 0x5, 0x35, 0x13, 0x33, 0x15, 0x3, 0x68, 0xB0, 0x50, 0x51, 0x51, 0x5E, 0x1, 0x2C, 0x6F, 0xD3, 0xE6, 0x5, 0xD8, 0x53, 0x83, 0x4A, 0x49, 0x2A, 0x8D, 0x59, 0xFB, 0x14, 0x1, 0x40, 0x15, 0xFE, 0xC1, 0x0, 0x2, 0x0, 0x6F, 0x4, 0x6F, 0x2, 0xA8, 0x6, 0x9F, 0x0, 0x13, 0x0, 0x1C, 0x0, 0x0, 0x1, 0x17, 0x14, 0x6, 0x23, 0x22, 0x26, 0x23, 0x22, 0x6, 0x15, 0x27, 0x34, 0x36, 0x33, 0x32, 0x16, 0x33, 0x32, 0x36, 0x7, 0x33, 0x15, 0x14, 0x17, 0x7, 0x26, 0x26, 0x35, 0x2, 0x41, 0x67, 0x5C, 0x49, 0x50, 0x53, 0x41, 0x1F, 0x2A, 0x67, 0x5C, 0x49, 0x42, 0x62, 0x3F, 0x1E, 0x2C, 0xF6, 0x99, 0x3F, 0x56, 0x3D, 0x45, 0x6, 0x9F, 0x1E, 0x49, 0x6D, 0x47, 0x32, 0x25, 0x1C, 0x48, 0x70, 0x46, 0x31, 0xE1, 0x4A, 0x65, 0x3F, 0x3C, 0x25, 0x7A, 0x40, 0x0, 0x3, 0x0, 0x6F, 0x4, 0xC7, 0x3, 0x48, 0x6, 0x65, 0x0, 0x3, 0x0, 0xF, 0x0, 0x1B, 0x0, 0x0, 0x1, 0x17, 0x23, 0x27, 0x3, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x6, 0x23, 0x22, 0x26, 0x25, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x6, 0x23, 0x22, 0x26, 0x1, 0xBB, 0x72, 0x8D, 0xA8, 0x89, 0x44, 0x3D, 0x3E, 0x45, 0x45, 0x3E, 0x3D, 0x44, 0x1, 0xD5, 0x44, 0x3D, 0x3E, 0x45, 0x45, 0x3E, 0x3D, 0x44, 0x6, 0x65, 0xD3, 0xD3, 0xFE, 0xD9, 0x32, 0x44, 0x44, 0x32, 0x31, 0x45, 0x45, 0x2F, 0x32, 0x45, 0x45, 0x32, 0x31, 0x44, 0x44, 0x0, 0x3, 0x0, 0x6F, 0x4, 0xC7, 0x3, 0x48, 0x6, 0x65, 0x0, 0x3, 0x0, 0xF, 0x0, 0x1B, 0x0, 0x0, 0x1, 0x37, 0x33, 0x7, 0x5, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x6, 0x23, 0x22, 0x26, 0x25, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x6, 0x23, 0x22, 0x26, 0x1, 0x86, 0x71, 0xC3, 0xA7, 0xFE, 0x5C, 0x44, 0x3D, 0x3E, 0x45, 0x45, 0x3E, 0x3D, 0x44, 0x1, 0xD5, 0x44, 0x3D, 0x3E, 0x45, 0x45, 0x3E, 0x3D, 0x44, 0x5, 0x92, 0xD3, 0xD3, 0x54, 0x32, 0x44, 0x44, 0x32, 0x31, 0x45, 0x45, 0x2F, 0x32, 0x45, 0x45, 0x32, 0x31, 0x44, 0x44, 0x0, 0x1, 0x0, 0x66, 0x4, 0x6F, 0x1, 0xA9, 0x5, 0xC3, 0x0, 0x5, 0x0, 0x0, 0x1, 0x23, 0x3, 0x35, 0x33, 0x13, 0x1, 0xA9, 0x5D, 0xE6, 0xD3, 0x70, 0x4, 0x6F, 0x1, 0x3F, 0x15, 0xFE, 0xC1, 0x0, 0x1, 0x0, 0x64, 0x4, 0x6F, 0x1, 0xA7, 0x5, 0xC3, 0x0, 0x5, 0x0, 0x0, 0x13, 0x35, 0x13, 0x33, 0x15, 0x3, 0x64, 0x70, 0xD3, 0xE6, 0x4, 0x6F, 0x15, 0x1, 0x3F, 0x15, 0xFE, 0xC1, 0x0, 0x1, 0x0, 0x69, 0x4, 0x6F, 0x1, 0x69, 0x5, 0xD8, 0x0, 0x8, 0x0, 0x0, 0x13, 0x33, 0x15, 0x14, 0x17, 0x7, 0x26, 0x26, 0x35, 0x69, 0xB0, 0x50, 0x51, 0x51, 0x5E, 0x5, 0xD8, 0x53, 0x83, 0x4A, 0x49, 0x2A, 0x8D, 0x59, 0x0, 0x1, 0xFD, 0x68, 0xFF, 0x38, 0xFE, 0x9, 0x4, 0xD8, 0x0, 0x3, 0x0, 0x0, 0x5, 0x11, 0x33, 0x11, 0xFD, 0x68, 0xA1, 0xC8, 0x5, 0xA0, 0xFA, 0x60, 0x0, 0x1, 0xFC, 0x94, 0xFF, 0x38, 0xFE, 0xDE, 0x5, 0xF1, 0x0, 0xE, 0x0, 0x0, 0x1, 0x27, 0x11, 0x23, 0x11, 0x7, 0x27, 0x37, 0x27, 0x37, 0x17, 0x37, 0x17, 0x7, 0x17, 0xFE, 0x67, 0x61, 0xA0, 0x5B, 0x77, 0xB0, 0xB0, 0x77, 0xAE, 0xAE, 0x77, 0xB0, 0xB0, 0x3, 0xA0, 0x63, 0xFB, 0x35, 0x4, 0xC5, 0x5D, 0x74, 0xB4, 0xB4, 0x75, 0xB2, 0xB2, 0x75, 0xB4, 0xB4, 0x0, 0x1, 0xFC, 0xAD, 0xFF, 0x38, 0xFF, 0x46, 0x5, 0xD1, 0x0, 0xA, 0x0, 0x0, 0x1, 0x37, 0x23, 0x11, 0x23, 0x11, 0x21, 0x27, 0x33, 0x17, 0x7, 0xFD, 0x98, 0xA8, 0xF2, 0xA1, 0x1, 0x9A, 0xA8, 0xC6, 0xE1, 0xE7, 0x3, 0xE9, 0xA1, 0xFA, 0xAE, 0x5, 0xEB, 0xAE, 0xFB, 0xED, 0x0, 0x1, 0xFC, 0x5E, 0xFF, 0x38, 0xFE, 0xF7, 0x5, 0xD1, 0x0, 0xA, 0x0, 0x0, 0x5, 0x11, 0x23, 0x17, 0x23, 0x27, 0x37, 0x33, 0x7, 0x21, 0x11, 0xFE, 0x57, 0xF3, 0xA8, 0xC6, 0xE8, 0xE1, 0xC7, 0xA9, 0x1, 0x9A, 0xC8, 0x5, 0x52, 0xA1, 0xED, 0xFB, 0xAE, 0xFA, 0x15, 0xFF, 0xFF, 0x0, 0x47, 0x2, 0xA, 0x2, 0x54, 0x2, 0xCD, 0x0, 0x6, 0x0, 0x12, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x47, 0x2, 0xA, 0x2, 0x54, 0x2, 0xCD, 0x0, 0x6, 0x0, 0x12, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x9F, 0x2, 0x6E, 0x3, 0xEF, 0x3, 0x32, 0x0, 0x6, 0x5, 0x3A, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x9E, 0x2, 0x6E, 0x4, 0x97, 0x3, 0x32, 0x0, 0x46, 0x5, 0x3A, 0xDF, 0x0, 0x4C, 0xCD, 0x40, 0x0, 0xFF, 0xFF, 0x0, 0x82, 0x2, 0x6E, 0x5, 0xCF, 0x3, 0x32, 0x0, 0x46, 0x5, 0x3A, 0x84, 0x0, 0x66, 0x66, 0x40, 0x0, 0xFF, 0xFF, 0x0, 0xAB, 0xFE, 0xF2, 0x2, 0x8D, 0x5, 0xB0, 0x0, 0x26, 0x0, 0x61, 0xFD, 0x0, 0x0, 0x7, 0x0, 0x61, 0x1, 0x37, 0x0, 0x0, 0x0, 0x2, 0x0, 0x4, 0xFE, 0x60, 0x3, 0x9A, 0x0, 0x0, 0x0, 0x3, 0x0, 0x7, 0x0, 0x0, 0x21, 0x15, 0x21, 0x35, 0x1, 0x15, 0x21, 0x35, 0x3, 0x9A, 0xFC, 0x6A, 0x3, 0x96, 0xFC, 0x6A, 0x9D, 0x9D, 0xFE, 0xFC, 0x9C, 0x9C, 0x0, 0x1, 0x0, 0x64, 0x4, 0x21, 0x1, 0x96, 0x6, 0x1B, 0x0, 0x8, 0x0, 0x0, 0x13, 0x35, 0x34, 0x36, 0x37, 0x17, 0x6, 0x7, 0x15, 0x64, 0x65, 0x51, 0x7C, 0x59, 0x4, 0x4, 0x21, 0x88, 0x5F, 0xD0, 0x43, 0x4D, 0x87, 0x8B, 0x9B, 0x0, 0x1, 0x0, 0x34, 0x4, 0x0, 0x1, 0x66, 0x6, 0x0, 0x0, 0x8, 0x0, 0x0, 0x1, 0x15, 0x14, 0x6, 0x7, 0x27, 0x36, 0x37, 0x35, 0x1, 0x66, 0x65, 0x51, 0x7C, 0x5A, 0x3, 0x6, 0x0, 0x8E, 0x5E, 0xD0, 0x44, 0x4D, 0x89, 0x8D, 0x9D, 0x0, 0x1, 0x0, 0x32, 0xFE, 0xD6, 0x1, 0x65, 0x0, 0xCB, 0x0, 0x8, 0x0, 0x0, 0x25, 0x7, 0x6, 0x6, 0x7, 0x27, 0x36, 0x37, 0x35, 0x1, 0x65, 0x1, 0x1, 0x63, 0x52, 0x7C, 0x55, 0x3, 0xCB, 0x86, 0x5F, 0xCD, 0x43, 0x4D, 0x81, 0x93, 0x94, 0x0, 0x1, 0x0, 0x4B, 0x4, 0x0, 0x1, 0x7D, 0x6, 0x0, 0x0, 0x8, 0x0, 0x0, 0x13, 0x33, 0x15, 0x16, 0x17, 0x7, 0x26, 0x26, 0x35, 0x4B, 0xD5, 0x3, 0x5A, 0x7C, 0x52, 0x64, 0x6, 0x0, 0x9D, 0x91, 0x85, 0x4D, 0x44, 0xD0, 0x5E, 0xFF, 0xFF, 0x0, 0x6D, 0x4, 0x21, 0x2, 0xEF, 0x6, 0x1B, 0x0, 0x26, 0x4, 0x62, 0x9, 0x0, 0x0, 0x7, 0x4, 0x62, 0x1, 0x59, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x41, 0x4, 0x0, 0x2, 0xC1, 0x6, 0x0, 0x0, 0x26, 0x4, 0x63, 0xD, 0x0, 0x0, 0x7, 0x4, 0x63, 0x1, 0x5B, 0x0, 0x0, 0x0, 0x2, 0x0, 0x32, 0xFE, 0xC2, 0x2, 0xAB, 0x0, 0xFF, 0x0, 0x8, 0x0, 0x11, 0x0, 0x0, 0x25, 0x7, 0x14, 0x6, 0x7, 0x27, 0x36, 0x37, 0x35, 0x23, 0x7, 0x14, 0x6, 0x7, 0x27, 0x36, 0x37, 0x35, 0x2, 0xAB, 0x1, 0x64, 0x52, 0x7F, 0x59, 0x3, 0x6C, 0x1, 0x61, 0x52, 0x7F, 0x55, 0x3, 0xFF, 0xB7, 0x64, 0xDC, 0x46, 0x4D, 0x8D, 0x9B, 0xC8, 0xB7, 0x64, 0xDC, 0x46, 0x4D, 0x87, 0xA0, 0xC9, 0x0, 0x2, 0x0, 0x4F, 0x3, 0xD6, 0x2, 0xE0, 0x6, 0x18, 0x0, 0x8, 0x0, 0x11, 0x0, 0x0, 0x1, 0x33, 0x15, 0x16, 0x17, 0x7, 0x26, 0x26, 0x35, 0x25, 0x33, 0x15, 0x16, 0x17, 0x7, 0x26, 0x26, 0x35, 0x1, 0xAA, 0xDC, 0x2, 0x58, 0x80, 0x51, 0x65, 0xFE, 0xA5, 0xDC, 0x3, 0x57, 0x7F, 0x52, 0x65, 0x6, 0x18, 0xC8, 0xA2, 0x8A, 0x4E, 0x47, 0xDC, 0x64, 0xBB, 0xCC, 0x9C, 0x8C, 0x4E, 0x47, 0xDC, 0x64, 0x0, 0x1, 0x0, 0x41, 0x0, 0x0, 0x4, 0x1E, 0x5, 0xB0, 0x0, 0xB, 0x0, 0x0, 0x1, 0x21, 0x11, 0x23, 0x11, 0x21, 0x35, 0x21, 0x11, 0x33, 0x11, 0x21, 0x4, 0x1E, 0xFE, 0x88, 0xF3, 0xFE, 0x8E, 0x1, 0x72, 0xF3, 0x1, 0x78, 0x3, 0x73, 0xFC, 0x8D, 0x3, 0x73, 0xC7, 0x1, 0x76, 0xFE, 0x8A, 0x0, 0x1, 0x0, 0x5D, 0xFE, 0x60, 0x4, 0x3A, 0x5, 0xB0, 0x0, 0x13, 0x0, 0x0, 0x21, 0x21, 0x11, 0x23, 0x11, 0x21, 0x35, 0x21, 0x11, 0x21, 0x35, 0x21, 0x11, 0x33, 0x11, 0x21, 0x15, 0x21, 0x11, 0x21, 0x4, 0x3A, 0xFE, 0x88, 0xF3, 0xFE, 0x8E, 0x1, 0x72, 0xFE, 0x8E, 0x1, 0x72, 0xF3, 0x1, 0x78, 0xFE, 0x88, 0x1, 0x78, 0xFE, 0x60, 0x1, 0xA0, 0xC3, 0x2, 0xB3, 0xC4, 0x1, 0x76, 0xFE, 0x8A, 0xC4, 0xFD, 0x4D, 0x0, 0x1, 0x0, 0x88, 0x2, 0x7, 0x2, 0x45, 0x3, 0xDB, 0x0, 0xC, 0x0, 0x0, 0x13, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x15, 0x14, 0x6, 0x22, 0x26, 0x35, 0x88, 0x78, 0x65, 0x68, 0x78, 0x77, 0xCE, 0x78, 0x3, 0x3, 0x5F, 0x79, 0x79, 0x5F, 0x27, 0x5E, 0x77, 0x77, 0x5E, 0x0, 0x1, 0x0, 0x98, 0x0, 0x87, 0x4, 0x9, 0x4, 0x90, 0x0, 0x2, 0x0, 0x0, 0x13, 0x1, 0x1, 0x98, 0x3, 0x71, 0xFC, 0x8F, 0x4, 0x90, 0xFD, 0xFB, 0xFD, 0xFC, 0xFF, 0xFF, 0x0, 0x85, 0xFF, 0xF4, 0x1, 0xA0, 0x1, 0x1, 0x0, 0x6, 0x0, 0x13, 0xFD, 0x0, 0xFF, 0xFF, 0x0, 0x8C, 0xFF, 0xF4, 0x3, 0x70, 0x1, 0x1, 0x0, 0x26, 0x0, 0x13, 0x4, 0x0, 0x0, 0x7, 0x0, 0x13, 0x1, 0xCD, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x8C, 0xFF, 0xF4, 0x5, 0x29, 0x1, 0x1, 0x0, 0x22, 0x0, 0x13, 0x4, 0x0, 0x0, 0x23, 0x0, 0x13, 0x1, 0xCD, 0x0, 0x0, 0x0, 0x3, 0x0, 0x13, 0x3, 0x86, 0x0, 0x0, 0x0, 0x1, 0x0, 0x5B, 0x1, 0xEC, 0x1, 0x6E, 0x2, 0xED, 0x0, 0x9, 0x0, 0x0, 0x13, 0x34, 0x36, 0x32, 0x16, 0x15, 0x14, 0x6, 0x22, 0x26, 0x5B, 0x48, 0x82, 0x49, 0x49, 0x82, 0x48, 0x2, 0x6C, 0x38, 0x49, 0x49, 0x38, 0x37, 0x49, 0x49, 0x0, 0x6, 0x0, 0x4B, 0xFF, 0xEB, 0x7, 0x60, 0x5, 0xC5, 0x0, 0xD, 0x0, 0x1B, 0x0, 0x1F, 0x0, 0x35, 0x0, 0x42, 0x0, 0x4F, 0x0, 0x0, 0x13, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x15, 0x14, 0x6, 0x23, 0x22, 0x26, 0x35, 0x33, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x25, 0x1, 0x27, 0x1, 0x1, 0x22, 0x27, 0x6, 0x23, 0x22, 0x26, 0x35, 0x35, 0x34, 0x36, 0x33, 0x32, 0x17, 0x36, 0x33, 0x32, 0x16, 0x15, 0x15, 0x14, 0x6, 0x1, 0x14, 0x16, 0x33, 0x32, 0x35, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x5, 0x14, 0x16, 0x33, 0x32, 0x35, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x4B, 0xA1, 0x8C, 0x92, 0xA3, 0xA3, 0x90, 0x8E, 0xA1, 0xA2, 0x45, 0x48, 0x46, 0x44, 0x45, 0x47, 0x46, 0x45, 0x3, 0x9C, 0xFD, 0x39, 0x7D, 0x2, 0xC7, 0x2, 0x21, 0x96, 0x50, 0x4E, 0x93, 0x91, 0xA5, 0xA4, 0x90, 0x94, 0x4F, 0x50, 0x94, 0x91, 0xA4, 0xA4, 0xFE, 0xE4, 0x49, 0x44, 0x89, 0x44, 0x47, 0x46, 0x45, 0xFE, 0x39, 0x48, 0x45, 0x89, 0x44, 0x47, 0x46, 0x45, 0x4, 0x98, 0x7C, 0xB1, 0xB1, 0x7C, 0x4D, 0x7A, 0xB1, 0xB1, 0x7A, 0x3B, 0x5E, 0x5D, 0x3C, 0x4D, 0x3D, 0x5E, 0x5E, 0x3D, 0x47, 0xFB, 0x8E, 0x49, 0x4, 0x72, 0xFA, 0xC3, 0x6F, 0x6F, 0xB1, 0x7B, 0x4E, 0x7B, 0xB1, 0x6F, 0x6F, 0xB1, 0x7B, 0x4E, 0x7B, 0xB1, 0x1, 0x2C, 0x3C, 0x5E, 0xAA, 0x3E, 0x3C, 0x5E, 0x5E, 0x3C, 0x4E, 0x3C, 0x5E, 0xAA, 0x3E, 0x3C, 0x5E, 0x5E, 0x3C, 0x0, 0x7, 0x0, 0x4B, 0xFF, 0xEB, 0x9, 0x15, 0x5, 0xC5, 0x0, 0xD, 0x0, 0x1B, 0x0, 0x1F, 0x0, 0x3C, 0x0, 0x49, 0x0, 0x56, 0x0, 0x63, 0x0, 0x0, 0x13, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x15, 0x14, 0x6, 0x23, 0x22, 0x26, 0x35, 0x33, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x25, 0x1, 0x27, 0x1, 0x1, 0x22, 0x27, 0x6, 0x23, 0x22, 0x27, 0x6, 0x23, 0x22, 0x26, 0x35, 0x35, 0x34, 0x36, 0x33, 0x32, 0x17, 0x36, 0x33, 0x32, 0x17, 0x36, 0x20, 0x16, 0x15, 0x15, 0x14, 0x6, 0x1, 0x14, 0x16, 0x33, 0x32, 0x35, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x5, 0x14, 0x16, 0x33, 0x32, 0x35, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x5, 0x14, 0x16, 0x33, 0x32, 0x35, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x4B, 0xA1, 0x8C, 0x92, 0xA3, 0xA3, 0x90, 0x8E, 0xA1, 0xA2, 0x45, 0x48, 0x46, 0x44, 0x45, 0x47, 0x46, 0x45, 0x3, 0x8B, 0xFD, 0x39, 0x7D, 0x2, 0xC7, 0x3, 0xE7, 0x92, 0x50, 0x4D, 0x97, 0x95, 0x50, 0x4F, 0x93, 0x91, 0xA5, 0xA5, 0x8F, 0x95, 0x4F, 0x50, 0x93, 0x99, 0x4D, 0x4F, 0x1, 0x22, 0xA4, 0xA4, 0xFE, 0xE4, 0x49, 0x44, 0x89, 0x44, 0x47, 0x46, 0x45, 0xFE, 0x3B, 0x49, 0x43, 0x8A, 0x45, 0x47, 0x46, 0x44, 0xFE, 0x39, 0x48, 0x44, 0x8A, 0x45, 0x47, 0x46, 0x44, 0x4, 0x98, 0x7C, 0xB1, 0xB1, 0x7C, 0x4D, 0x7A, 0xB1, 0xB1, 0x7A, 0x3B, 0x5E, 0x5D, 0x3C, 0x4D, 0x3D, 0x5E, 0x5E, 0x3D, 0x47, 0xFB, 0x8E, 0x49, 0x4, 0x72, 0xFA, 0xC3, 0x6A, 0x6A, 0x6F, 0x6F, 0xB1, 0x7B, 0x4E, 0x7B, 0xB1, 0x6F, 0x6F, 0x6A, 0x6A, 0xB1, 0x7B, 0x4E, 0x7B, 0xB1, 0x1, 0x2C, 0x3C, 0x5E, 0xAA, 0x3E, 0x3C, 0x5E, 0x5E, 0x3C, 0x4E, 0x3C, 0x5E, 0xAC, 0x3C, 0x3C, 0x5E, 0x5E, 0x3C, 0x4E, 0x3C, 0x5E, 0xA9, 0x3F, 0x3C, 0x5E, 0x5E, 0x3C, 0x0, 0x3, 0x0, 0x4C, 0x4, 0xBA, 0x4, 0xA4, 0x6, 0x1A, 0x0, 0x3, 0x0, 0x7, 0x0, 0xB, 0x0, 0x0, 0x1, 0x13, 0x33, 0x3, 0x21, 0x13, 0x33, 0x3, 0x21, 0x13, 0x33, 0x3, 0x3, 0x1B, 0x9A, 0xEF, 0xDE, 0xFD, 0xEE, 0x99, 0xF0, 0xDE, 0xFD, 0xED, 0x9A, 0xEF, 0xDE, 0x4, 0xBA, 0x1, 0x60, 0xFE, 0xA0, 0x1, 0x60, 0xFE, 0xA0, 0x1, 0x60, 0xFE, 0xA0, 0x0, 0x1, 0x0, 0x4C, 0x4, 0xBA, 0x1, 0xD5, 0x6, 0x1A, 0x0, 0x3, 0x0, 0x0, 0x1, 0x13, 0x23, 0x3, 0x1, 0x3C, 0x99, 0xAB, 0xDE, 0x6, 0x1A, 0xFE, 0xA0, 0x1, 0x60, 0x0, 0x2, 0x0, 0x50, 0x4, 0xBA, 0x3, 0x41, 0x6, 0x1A, 0x0, 0x3, 0x0, 0x7, 0x0, 0x0, 0x1, 0x13, 0x23, 0x3, 0x21, 0x13, 0x23, 0x3, 0x1, 0x40, 0x99, 0xAB, 0xDE, 0x2, 0x57, 0x9A, 0xAB, 0xDE, 0x6, 0x1A, 0xFE, 0xA0, 0x1, 0x60, 0xFE, 0xA0, 0x1, 0x60, 0x0, 0x3, 0x0, 0x50, 0x4, 0xBA, 0x4, 0xA8, 0x6, 0x1A, 0x0, 0x3, 0x0, 0x7, 0x0, 0xB, 0x0, 0x0, 0x1, 0x13, 0x23, 0x3, 0x21, 0x13, 0x23, 0x3, 0x21, 0x13, 0x23, 0x3, 0x1, 0x40, 0x99, 0xAB, 0xDE, 0x2, 0x57, 0x9A, 0xAB, 0xDE, 0x2, 0x57, 0x99, 0xAB, 0xDE, 0x6, 0x1A, 0xFE, 0xA0, 0x1, 0x60, 0xFE, 0xA0, 0x1, 0x60, 0xFE, 0xA0, 0x1, 0x60, 0x0, 0x1, 0x0, 0x30, 0xFD, 0xDB, 0x3, 0x49, 0xFF, 0x9D, 0x0, 0x8, 0x0, 0x0, 0x1, 0x3, 0x23, 0x1, 0x33, 0x1, 0x23, 0x3, 0x27, 0x1, 0xAB, 0xB5, 0xC6, 0x1, 0x39, 0xA4, 0x1, 0x3C, 0xC6, 0xBB, 0xE, 0xFE, 0xF5, 0xFE, 0xE6, 0x1, 0xC2, 0xFE, 0x3E, 0x1, 0x1A, 0x24, 0x0, 0x1, 0x0, 0x6C, 0x0, 0x8B, 0x2, 0x34, 0x3, 0xAA, 0x0, 0x6, 0x0, 0x0, 0x25, 0x23, 0x1, 0x35, 0x1, 0x33, 0x3, 0x2, 0x34, 0xA8, 0xFE, 0xE0, 0x1, 0x20, 0xA8, 0xF7, 0x8B, 0x1, 0x86, 0x13, 0x1, 0x86, 0xFE, 0x71, 0x0, 0x1, 0x0, 0x55, 0x0, 0x8A, 0x2, 0x1C, 0x3, 0xA9, 0x0, 0x6, 0x0, 0x0, 0x37, 0x23, 0x13, 0x3, 0x33, 0x1, 0x15, 0xFC, 0xA7, 0xF7, 0xF7, 0xA7, 0x1, 0x20, 0x8A, 0x1, 0x90, 0x1, 0x8F, 0xFE, 0x7A, 0x13, 0x0, 0x5, 0x0, 0x4A, 0x0, 0x6B, 0x4, 0xE1, 0x4, 0xF1, 0x0, 0x9, 0x0, 0x15, 0x0, 0x21, 0x0, 0x2B, 0x0, 0x35, 0x0, 0x0, 0x1, 0x34, 0x36, 0x32, 0x16, 0x15, 0x14, 0x6, 0x22, 0x26, 0x9, 0x2, 0x27, 0x1, 0x1, 0x37, 0x1, 0x1, 0x17, 0x1, 0x1, 0x3, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x6, 0x23, 0x22, 0x26, 0x25, 0x34, 0x36, 0x32, 0x16, 0x15, 0x14, 0x6, 0x22, 0x26, 0x1, 0x34, 0x36, 0x32, 0x16, 0x15, 0x14, 0x6, 0x22, 0x26, 0x2, 0xC, 0x48, 0x82, 0x49, 0x49, 0x82, 0x48, 0x1, 0xC9, 0xFE, 0xC5, 0xFE, 0xC4, 0x94, 0x1, 0x3C, 0xFE, 0xC4, 0x94, 0x1, 0x3C, 0x1, 0x3B, 0x94, 0xFE, 0xC4, 0x1, 0x3C, 0x9C, 0x49, 0x40, 0x41, 0x4A, 0x4A, 0x41, 0x40, 0x49, 0xFC, 0x7D, 0x48, 0x82, 0x49, 0x49, 0x82, 0x48, 0x1, 0xC2, 0x48, 0x82, 0x49, 0x49, 0x82, 0x48, 0x4, 0x75, 0x35, 0x47, 0x47, 0x35, 0x34, 0x47, 0x47, 0xFC, 0x96, 0x1, 0x42, 0xFE, 0xBE, 0x95, 0x1, 0x43, 0x1, 0x42, 0x95, 0xFE, 0xBE, 0x1, 0x42, 0x95, 0xFE, 0xBE, 0xFE, 0xBD, 0x1, 0x46, 0x35, 0x48, 0x48, 0x35, 0x34, 0x47, 0x47, 0x34, 0x35, 0x48, 0x48, 0x35, 0x34, 0x47, 0x47, 0xFE, 0x68, 0x35, 0x48, 0x48, 0x35, 0x34, 0x47, 0x47, 0x0, 0x3, 0x0, 0x2C, 0xFF, 0xF4, 0x3, 0x88, 0x6, 0x78, 0x0, 0x5, 0x0, 0x19, 0x0, 0x23, 0x0, 0x0, 0x1, 0x34, 0x27, 0x3, 0x36, 0x36, 0x1, 0x3, 0x6, 0x15, 0x23, 0x36, 0x36, 0x37, 0x27, 0x21, 0x7, 0x16, 0x16, 0x15, 0x14, 0x6, 0x7, 0x6, 0x6, 0x7, 0x3, 0x34, 0x36, 0x32, 0x16, 0x15, 0x14, 0x6, 0x22, 0x26, 0x2, 0x95, 0x80, 0x8, 0x3A, 0x4E, 0xFE, 0x9F, 0xE, 0x7, 0xF3, 0x2, 0x86, 0x6C, 0x4, 0x1, 0x1, 0x4, 0xAF, 0xC0, 0x5B, 0xA1, 0x35, 0x25, 0x1, 0xF4, 0x49, 0x82, 0x49, 0x49, 0x82, 0x49, 0x4, 0x39, 0x9E, 0x1D, 0xFE, 0x55, 0x38, 0x6A, 0xFD, 0xC2, 0x2, 0xCE, 0x19, 0x1D, 0x87, 0xB1, 0x28, 0xD3, 0xB6, 0xF, 0xC8, 0xA9, 0x65, 0xA4, 0x9A, 0x33, 0x76, 0x49, 0xFE, 0xC9, 0x38, 0x4B, 0x4B, 0x38, 0x37, 0x4B, 0x4B, 0xFF, 0xFF, 0x0, 0xD, 0x6, 0x13, 0x3, 0xA3, 0x6, 0xD3, 0x0, 0x7, 0x0, 0x44, 0x0, 0xA, 0x6, 0xD3, 0x0, 0x1, 0x0, 0xB, 0xFE, 0x1A, 0x6, 0x19, 0xFF, 0x8D, 0x0, 0xD, 0x0, 0x0, 0x1, 0x20, 0x24, 0x27, 0x37, 0x16, 0x4, 0x33, 0x32, 0x24, 0x37, 0x17, 0x6, 0x4, 0x3, 0x11, 0xFE, 0xD7, 0xFE, 0x94, 0x71, 0x71, 0x65, 0x1, 0x41, 0xEF, 0xF0, 0x1, 0x52, 0x65, 0x61, 0x5A, 0xFE, 0x7C, 0xFE, 0x1A, 0x9F, 0x7A, 0x58, 0x41, 0x5C, 0x62, 0x3D, 0x5A, 0x71, 0xA8, 0x0, 0x1, 0x0, 0xB, 0x4, 0x9E, 0x6, 0x19, 0x6, 0x10, 0x0, 0xD, 0x0, 0x0, 0x1, 0x22, 0x4, 0x7, 0x27, 0x36, 0x24, 0x21, 0x20, 0x4, 0x17, 0x7, 0x26, 0x24, 0x3, 0x11, 0xEF, 0xFE, 0xBF, 0x65, 0x71, 0x71, 0x1, 0x6C, 0x1, 0x29, 0x1, 0x2A, 0x1, 0x84, 0x5A, 0x61, 0x65, 0xFE, 0xAE, 0x5, 0x3D, 0x5C, 0x41, 0x57, 0x7A, 0x9F, 0xA8, 0x71, 0x59, 0x3D, 0x62, 0x0, 0x1, 0x0, 0x3B, 0xFE, 0xE, 0x3, 0x3D, 0x2, 0x5A, 0x0, 0x7, 0x0, 0x0, 0x1, 0x3, 0x3, 0x27, 0x1, 0x17, 0x1, 0x13, 0x2, 0x60, 0xC8, 0xC4, 0x99, 0x2, 0x67, 0x9B, 0xFE, 0xC0, 0xFB, 0xFE, 0xE, 0x1, 0x42, 0xFE, 0xBF, 0x58, 0x3, 0xF3, 0x58, 0xFD, 0xF3, 0xFE, 0x6B, 0x0, 0x3, 0x0, 0x50, 0x0, 0x83, 0x5, 0x8, 0x5, 0x27, 0x0, 0x17, 0x0, 0x2F, 0x0, 0x47, 0x0, 0x0, 0x1, 0x27, 0x15, 0x23, 0x35, 0x7, 0x27, 0x37, 0x23, 0x35, 0x33, 0x27, 0x37, 0x17, 0x35, 0x33, 0x15, 0x37, 0x17, 0x7, 0x33, 0x15, 0x23, 0x17, 0x1, 0x27, 0x15, 0x23, 0x35, 0x7, 0x27, 0x37, 0x23, 0x35, 0x33, 0x27, 0x37, 0x17, 0x35, 0x33, 0x15, 0x37, 0x17, 0x7, 0x33, 0x15, 0x23, 0x17, 0x5, 0x27, 0x15, 0x23, 0x35, 0x7, 0x27, 0x37, 0x23, 0x35, 0x33, 0x27, 0x37, 0x17, 0x35, 0x33, 0x15, 0x37, 0x17, 0x7, 0x33, 0x15, 0x23, 0x17, 0x3, 0x4B, 0x65, 0x73, 0x66, 0x51, 0x68, 0x94, 0x91, 0x65, 0x51, 0x67, 0x72, 0x65, 0x50, 0x65, 0x92, 0x95, 0x68, 0xFE, 0x70, 0x65, 0x73, 0x66, 0x51, 0x68, 0x94, 0x91, 0x65, 0x51, 0x67, 0x72, 0x65, 0x50, 0x65, 0x92, 0x95, 0x68, 0x2, 0x30, 0x65, 0x73, 0x66, 0x51, 0x68, 0x94, 0x91, 0x65, 0x51, 0x67, 0x72, 0x65, 0x50, 0x65, 0x92, 0x95, 0x68, 0x3, 0x17, 0x66, 0x8E, 0x90, 0x68, 0x52, 0x69, 0x73, 0x66, 0x51, 0x68, 0x93, 0x91, 0x66, 0x51, 0x67, 0x72, 0x6A, 0xFD, 0x43, 0x66, 0x8E, 0x90, 0x68, 0x52, 0x69, 0x73, 0x66, 0x51, 0x68, 0x93, 0x91, 0x66, 0x51, 0x67, 0x72, 0x6A, 0x51, 0x66, 0x8E, 0x90, 0x68, 0x52, 0x69, 0x73, 0x66, 0x51, 0x68, 0x93, 0x91, 0x66, 0x51, 0x67, 0x72, 0x6A, 0x0, 0x1, 0x0, 0x54, 0x2, 0x17, 0x3, 0x1A, 0x3, 0xBB, 0x0, 0x3, 0x0, 0x0, 0x1, 0x11, 0x21, 0x11, 0x3, 0x1A, 0xFD, 0x3A, 0x3, 0xBB, 0xFE, 0x5C, 0x1, 0xA4, 0x0, 0x1, 0x0, 0x2D, 0x0, 0x6D, 0x3, 0x72, 0x5, 0x28, 0x0, 0x3, 0x0, 0x0, 0x1, 0x1, 0x27, 0x1, 0x3, 0x72, 0xFD, 0x39, 0x7E, 0x2, 0xC7, 0x4, 0xDF, 0xFB, 0x8E, 0x49, 0x4, 0x72, 0x0, 0x1, 0x0, 0x99, 0xFE, 0xBB, 0x2, 0x32, 0x6, 0x8F, 0x0, 0xB, 0x0, 0x0, 0x5, 0x15, 0x21, 0x11, 0x21, 0x15, 0x23, 0x11, 0x33, 0x15, 0x23, 0x11, 0x2, 0x32, 0xFE, 0x67, 0x1, 0x99, 0xA6, 0xA6, 0xA6, 0x87, 0xBE, 0x7, 0xD4, 0xBE, 0xFD, 0x3E, 0xBE, 0xFD, 0x28, 0x0, 0x1, 0x0, 0x5E, 0xFE, 0xBB, 0x1, 0xF7, 0x6, 0x8F, 0x0, 0xB, 0x0, 0x0, 0x1, 0x21, 0x35, 0x33, 0x11, 0x23, 0x35, 0x33, 0x11, 0x23, 0x35, 0x21, 0x1, 0xF7, 0xFE, 0x67, 0xA6, 0xA6, 0xA6, 0xA6, 0x1, 0x99, 0xFE, 0xBB, 0xBE, 0x2, 0xD8, 0xBE, 0x2, 0xC2, 0xBE, 0x0, 0x1, 0x0, 0x3C, 0xFE, 0x60, 0x3, 0x1C, 0x4, 0x3A, 0x0, 0x5, 0x0, 0x0, 0x13, 0x35, 0x21, 0x11, 0x23, 0x11, 0x3C, 0x2, 0xE0, 0xF2, 0x3, 0x76, 0xC4, 0xFA, 0x26, 0x5, 0x16, 0x0, 0x1, 0x0, 0x84, 0x0, 0x0, 0x3, 0xB6, 0x5, 0xB0, 0x0, 0xA, 0x0, 0x0, 0x21, 0x23, 0x11, 0x21, 0x32, 0x12, 0x15, 0x14, 0x2, 0x23, 0x23, 0x1, 0x77, 0xF3, 0x1, 0x46, 0xEF, 0xFD, 0xFD, 0xEF, 0x53, 0x5, 0xB0, 0xFE, 0xF5, 0xC9, 0xCA, 0xFE, 0xF6, 0x0, 0x2, 0x0, 0x66, 0x0, 0xCD, 0x4, 0x97, 0x3, 0xBD, 0x0, 0x7, 0x0, 0xB, 0x0, 0x0, 0x1, 0x11, 0x21, 0x22, 0x26, 0x10, 0x36, 0x33, 0x5, 0x23, 0x11, 0x33, 0x4, 0x97, 0xFD, 0x66, 0xB5, 0xE2, 0xE2, 0xB5, 0x1, 0xD2, 0x6A, 0x6A, 0x3, 0xBD, 0xFD, 0x10, 0xCE, 0x1, 0x54, 0xCE, 0x7B, 0xFE, 0x6, 0x0, 0x2, 0x0, 0x66, 0x0, 0xCD, 0x4, 0x97, 0x3, 0xBD, 0x0, 0x7, 0x0, 0xB, 0x0, 0x0, 0x13, 0x21, 0x32, 0x16, 0x10, 0x6, 0x23, 0x21, 0x1, 0x23, 0x11, 0x33, 0x66, 0x2, 0x9A, 0xB6, 0xE1, 0xE1, 0xB6, 0xFD, 0x66, 0x1, 0x32, 0x6A, 0x6A, 0x3, 0xBD, 0xCE, 0xFE, 0xAC, 0xCE, 0x2, 0x75, 0xFE, 0x6, 0xFF, 0xFF, 0x0, 0x3E, 0xFE, 0x4E, 0x3, 0x97, 0x1, 0xB1, 0x0, 0x7, 0x0, 0xF, 0x0, 0x22, 0xFC, 0x0, 0x0, 0x2, 0x0, 0x84, 0xFE, 0xAB, 0x1, 0xD9, 0x4, 0x52, 0x0, 0x9, 0x0, 0x12, 0x0, 0x0, 0x13, 0x34, 0x36, 0x32, 0x16, 0x15, 0x14, 0x6, 0x22, 0x26, 0x13, 0x33, 0x15, 0x16, 0x17, 0x7, 0x26, 0x26, 0x35, 0x84, 0x4A, 0x86, 0x4B, 0x4B, 0x86, 0x4A, 0x18, 0xE5, 0x3, 0x55, 0x7F, 0x55, 0x69, 0x3, 0xCA, 0x3A, 0x4E, 0x4E, 0x3A, 0x38, 0x4D, 0x4D, 0xFD, 0x59, 0xCC, 0xA0, 0x87, 0x4D, 0x48, 0xE0, 0x65, 0x0, 0x2, 0x0, 0xB, 0xFE, 0x1A, 0x6, 0x19, 0x6, 0x11, 0x0, 0xD, 0x0, 0x1B, 0x0, 0x0, 0x13, 0x36, 0x24, 0x21, 0x20, 0x4, 0x17, 0x7, 0x26, 0x24, 0x23, 0x22, 0x4, 0x7, 0x1, 0x20, 0x24, 0x27, 0x37, 0x16, 0x4, 0x33, 0x32, 0x24, 0x37, 0x17, 0x6, 0x4, 0xB, 0x71, 0x1, 0x6C, 0x1, 0x29, 0x1, 0x2A, 0x1, 0x84, 0x5A, 0x61, 0x65, 0xFE, 0xAE, 0xF0, 0xEF, 0xFE, 0xBF, 0x65, 0x2, 0x95, 0xFE, 0xD7, 0xFE, 0x94, 0x71, 0x71, 0x65, 0x1, 0x41, 0xEF, 0xF0, 0x1, 0x52, 0x65, 0x61, 0x5A, 0xFE, 0x7C, 0x4, 0xF8, 0x7A, 0x9F, 0xA8, 0x71, 0x5A, 0x3D, 0x62, 0x5C, 0x41, 0xF9, 0x7A, 0x9F, 0x7A, 0x58, 0x41, 0x5C, 0x62, 0x3D, 0x5A, 0x71, 0xA8, 0xFF, 0xFF, 0x0, 0x50, 0xFE, 0x4F, 0x3, 0xA9, 0x5, 0xB1, 0x0, 0x26, 0x0, 0xF, 0x34, 0x0, 0x0, 0x7, 0x0, 0xF, 0x0, 0x34, 0xFC, 0x1, 0x0, 0x3, 0x0, 0x43, 0xFF, 0x83, 0x3, 0x6C, 0x5, 0xB0, 0x0, 0x3, 0x0, 0xF, 0x0, 0x19, 0x0, 0x0, 0x1, 0x1, 0x23, 0x1, 0x1, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x6, 0x23, 0x22, 0x26, 0x1, 0x34, 0x36, 0x32, 0x16, 0x15, 0x14, 0x6, 0x22, 0x26, 0x3, 0x55, 0xFD, 0xC3, 0xBF, 0x2, 0x3D, 0xFD, 0xAD, 0x49, 0x40, 0x41, 0x49, 0x49, 0x41, 0x40, 0x49, 0x2, 0x16, 0x48, 0x82, 0x49, 0x49, 0x82, 0x48, 0x5, 0xB0, 0xF9, 0xD3, 0x6, 0x2D, 0xFE, 0x7B, 0x35, 0x48, 0x48, 0x35, 0x34, 0x47, 0x47, 0xFD, 0x18, 0x35, 0x47, 0x47, 0x35, 0x34, 0x47, 0x47, 0x0, 0x1, 0x0, 0x50, 0x1, 0xFB, 0x5, 0x2E, 0x3, 0x89, 0x0, 0x16, 0x0, 0x0, 0x1, 0x17, 0x6, 0x6, 0x23, 0x22, 0x26, 0x27, 0x26, 0x23, 0x22, 0x6, 0x7, 0x27, 0x36, 0x36, 0x33, 0x32, 0x16, 0x16, 0x33, 0x32, 0x36, 0x4, 0xCF, 0x5F, 0x36, 0xA7, 0x6A, 0x6E, 0xC5, 0x5A, 0x5E, 0x5D, 0x4E, 0x73, 0x37, 0x57, 0x41, 0xA9, 0x67, 0x6C, 0xC1, 0xB6, 0x59, 0x44, 0x74, 0x3, 0x1D, 0x98, 0x2E, 0x5C, 0x64, 0x31, 0x33, 0x35, 0x29, 0x9E, 0x31, 0x55, 0x65, 0x63, 0x33, 0x0, 0x1, 0x0, 0xB, 0xFE, 0x1A, 0x6, 0x19, 0xFF, 0x8D, 0x0, 0xD, 0x0, 0x0, 0x5, 0x20, 0x4, 0x17, 0x7, 0x26, 0x24, 0x23, 0x22, 0x4, 0x7, 0x27, 0x36, 0x24, 0x3, 0x11, 0x1, 0x2A, 0x1, 0x84, 0x5A, 0x61, 0x65, 0xFE, 0xAE, 0xF0, 0xEF, 0xFE, 0xBF, 0x65, 0x71, 0x71, 0x1, 0x6C, 0x73, 0xA9, 0x70, 0x5A, 0x3D, 0x62, 0x5D, 0x40, 0x58, 0x79, 0xA0, 0x0, 0x1, 0x0, 0xC0, 0x0, 0x49, 0x4, 0x63, 0x3, 0xEC, 0x0, 0x17, 0x0, 0x0, 0x25, 0x27, 0x15, 0x23, 0x35, 0x7, 0x27, 0x37, 0x23, 0x35, 0x33, 0x27, 0x37, 0x17, 0x35, 0x33, 0x15, 0x37, 0x17, 0x7, 0x33, 0x15, 0x23, 0x17, 0x3, 0x97, 0xAB, 0xB5, 0xAD, 0x7F, 0xB1, 0xFC, 0xF7, 0xAC, 0x7F, 0xAE, 0xB4, 0xAB, 0x80, 0xAD, 0xF9, 0xFD, 0xB1, 0x8B, 0xAF, 0xF1, 0xF3, 0xB1, 0x81, 0xB4, 0xB5, 0xB0, 0x7F, 0xB1, 0xF9, 0xF6, 0xAE, 0x7F, 0xB0, 0xB5, 0xB4, 0xFF, 0xFF, 0x0, 0x43, 0xFF, 0xE2, 0x3, 0x6E, 0x3, 0xED, 0x0, 0x27, 0x1, 0xD4, 0x3, 0x28, 0x2, 0xD9, 0x0, 0x27, 0x1, 0xD4, 0x5, 0x3F, 0x1, 0x4F, 0x0, 0x7, 0x1, 0xD4, 0x5, 0x3F, 0x4, 0x62, 0x0, 0x4, 0x0, 0x50, 0x4, 0xBA, 0x6, 0x13, 0x6, 0x1A, 0x0, 0x3, 0x0, 0x7, 0x0, 0xB, 0x0, 0xF, 0x0, 0x0, 0x1, 0x13, 0x33, 0x3, 0x21, 0x13, 0x33, 0x3, 0x21, 0x13, 0x33, 0x3, 0x21, 0x13, 0x33, 0x3, 0x4, 0x8A, 0x9A, 0xEF, 0xDE, 0xFD, 0xEA, 0x9A, 0xEF, 0xDE, 0xFD, 0xEE, 0x99, 0xF0, 0xDE, 0xFD, 0xED, 0x9A, 0xEF, 0xDE, 0x4, 0xBA, 0x1, 0x60, 0xFE, 0xA0, 0x1, 0x60, 0xFE, 0xA0, 0x1, 0x60, 0xFE, 0xA0, 0x1, 0x60, 0xFE, 0xA0, 0xFF, 0xFF, 0x0, 0x43, 0xFF, 0xE2, 0x4, 0xA0, 0x3, 0xED, 0x0, 0x27, 0x1, 0xD4, 0x3, 0x28, 0x2, 0xD9, 0x0, 0x27, 0x1, 0xD4, 0x4, 0xCC, 0x1, 0x4F, 0x0, 0x27, 0x1, 0xD4, 0x6, 0x71, 0x2, 0xD9, 0x0, 0x7, 0x1, 0xD4, 0x4, 0xCC, 0x4, 0x62, 0xFF, 0xFF, 0x0, 0x43, 0xFF, 0xE2, 0x4, 0x43, 0x3, 0xED, 0x0, 0x27, 0x1, 0xD4, 0x3, 0x28, 0x4, 0x62, 0x0, 0x27, 0x1, 0xD4, 0x6, 0x14, 0x1, 0x4F, 0x0, 0x27, 0x1, 0xD4, 0x3, 0x28, 0x1, 0x4F, 0x0, 0x27, 0x1, 0xD4, 0x6, 0x14, 0x4, 0x62, 0x0, 0x7, 0x1, 0xD4, 0x4, 0x9E, 0x2, 0xD9, 0xFF, 0xFF, 0x0, 0x43, 0xFF, 0xE2, 0x1, 0x57, 0x5, 0x5C, 0x0, 0x27, 0x1, 0xD4, 0x3, 0x28, 0x1, 0x4F, 0x0, 0x7, 0x1, 0xD4, 0x3, 0x28, 0x5, 0xD1, 0xFF, 0xFF, 0x0, 0x43, 0xFF, 0xE2, 0x4, 0x37, 0x5, 0x5C, 0x0, 0x27, 0x1, 0xD4, 0x3, 0x28, 0x3, 0x9A, 0x0, 0x27, 0x1, 0xD4, 0x6, 0x8, 0x3, 0x9A, 0x0, 0x27, 0x1, 0xD4, 0x4, 0x98, 0x1, 0x4F, 0x0, 0x7, 0x1, 0xD4, 0x4, 0x98, 0x5, 0xD1, 0x0, 0x5, 0x0, 0x43, 0xFF, 0xD6, 0x4, 0x5B, 0x3, 0xFA, 0x0, 0xB, 0x0, 0x17, 0x0, 0x23, 0x0, 0x2F, 0x0, 0x39, 0x0, 0x0, 0x1, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x6, 0x23, 0x22, 0x26, 0x25, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x6, 0x23, 0x22, 0x26, 0x1, 0x21, 0x11, 0x23, 0x11, 0x21, 0x35, 0x21, 0x11, 0x33, 0x11, 0x21, 0x1, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x6, 0x23, 0x22, 0x26, 0x25, 0x34, 0x36, 0x32, 0x16, 0x15, 0x14, 0x6, 0x22, 0x26, 0x3, 0x47, 0x49, 0x40, 0x41, 0x49, 0x49, 0x41, 0x40, 0x49, 0xFC, 0xFC, 0x49, 0x40, 0x41, 0x49, 0x49, 0x41, 0x40, 0x49, 0x3, 0xFA, 0xFE, 0x84, 0xEC, 0xFE, 0x82, 0x1, 0x7E, 0xEC, 0x1, 0x7C, 0xFC, 0x6, 0x49, 0x40, 0x41, 0x49, 0x49, 0x41, 0x40, 0x49, 0x3, 0x5, 0x48, 0x82, 0x49, 0x49, 0x82, 0x48, 0x3, 0x70, 0x35, 0x48, 0x48, 0x35, 0x34, 0x47, 0x47, 0x34, 0x35, 0x48, 0x48, 0x35, 0x34, 0x47, 0x47, 0xFE, 0x4C, 0xFE, 0x4E, 0x1, 0xB2, 0xDD, 0x1, 0x95, 0xFE, 0x6B, 0xFD, 0xF9, 0x35, 0x47, 0x47, 0x35, 0x34, 0x47, 0x47, 0x34, 0x35, 0x47, 0x47, 0x35, 0x34, 0x47, 0x47, 0xFF, 0xFF, 0x0, 0x43, 0xFF, 0xE2, 0x1, 0x57, 0x5, 0x5C, 0x0, 0x27, 0x1, 0xD4, 0x3, 0x28, 0x5, 0xD1, 0x0, 0x27, 0x1, 0xD4, 0x3, 0x28, 0x3, 0x90, 0x0, 0x7, 0x1, 0xD4, 0x3, 0x28, 0x1, 0x4F, 0xFF, 0xFF, 0x0, 0x43, 0xFF, 0xE2, 0x1, 0x57, 0x5, 0x5C, 0x0, 0x27, 0x1, 0xD4, 0x3, 0x28, 0x5, 0xD1, 0x0, 0x27, 0x1, 0xD4, 0x3, 0x28, 0x4, 0x4E, 0x0, 0x27, 0x1, 0xD4, 0x3, 0x28, 0x2, 0xCF, 0x0, 0x7, 0x1, 0xD4, 0x3, 0x28, 0x1, 0x4F, 0xFF, 0xFF, 0x0, 0x4C, 0x2, 0x90, 0x2, 0xAA, 0x5, 0xBB, 0x0, 0x7, 0x7, 0x43, 0x0, 0x0, 0x2, 0x9B, 0x0, 0x2, 0x0, 0x79, 0x2, 0x30, 0x1, 0x5F, 0x6, 0x91, 0x0, 0xB, 0x0, 0xF, 0x0, 0x0, 0x13, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x6, 0x23, 0x22, 0x26, 0x17, 0x11, 0x23, 0x11, 0x79, 0x3C, 0x36, 0x38, 0x3C, 0x3C, 0x38, 0x36, 0x3C, 0xD9, 0xC5, 0x6, 0x24, 0x2F, 0x3E, 0x3E, 0x2F, 0x2E, 0x3D, 0x3D, 0xA2, 0xFC, 0xDC, 0x3, 0x24, 0xFF, 0xFF, 0x0, 0x35, 0x2, 0x9B, 0x2, 0xBF, 0x5, 0xB0, 0x0, 0x7, 0x7, 0x9E, 0x0, 0x0, 0x2, 0x9B, 0xFF, 0xFF, 0x0, 0x4F, 0x2, 0x90, 0x2, 0xAE, 0x5, 0xB0, 0x0, 0x7, 0x7, 0x9F, 0x0, 0x0, 0x2, 0x9B, 0xFF, 0xFF, 0x0, 0x4E, 0x2, 0x90, 0x2, 0xB9, 0x5, 0xBD, 0x0, 0x7, 0x7, 0xA0, 0x0, 0x0, 0x2, 0x9B, 0xFF, 0xFF, 0x0, 0x37, 0x2, 0x9B, 0x2, 0xAE, 0x5, 0xB0, 0x0, 0x7, 0x7, 0xA1, 0x0, 0x0, 0x2, 0x9B, 0xFF, 0xFF, 0x0, 0x4C, 0x2, 0x90, 0x2, 0xAA, 0x5, 0xBB, 0x0, 0x7, 0x7, 0xA2, 0x0, 0x0, 0x2, 0x9B, 0xFF, 0xFF, 0x0, 0x47, 0x2, 0x92, 0x2, 0xA4, 0x5, 0xBB, 0x0, 0x7, 0x7, 0xA3, 0x0, 0x0, 0x2, 0x9B, 0x0, 0x1, 0x0, 0x50, 0x2, 0x8E, 0x2, 0xEC, 0x5, 0x53, 0x0, 0xB, 0x0, 0x0, 0x1, 0x23, 0x11, 0x23, 0x11, 0x23, 0x35, 0x33, 0x11, 0x33, 0x11, 0x33, 0x2, 0xEC, 0xFD, 0xA1, 0xFE, 0xFE, 0xA1, 0xFD, 0x3, 0xA3, 0xFE, 0xEB, 0x1, 0x15, 0x9A, 0x1, 0x16, 0xFE, 0xEA, 0x0, 0x1, 0x0, 0x50, 0x3, 0xA3, 0x2, 0xA9, 0x4, 0x3D, 0x0, 0x3, 0x0, 0x0, 0x1, 0x15, 0x21, 0x35, 0x2, 0xA9, 0xFD, 0xA7, 0x4, 0x3D, 0x9A, 0x9A, 0x0, 0x2, 0x0, 0x50, 0x3, 0x10, 0x2, 0xA9, 0x4, 0xD0, 0x0, 0x3, 0x0, 0x7, 0x0, 0x0, 0x1, 0x15, 0x21, 0x35, 0x1, 0x15, 0x21, 0x35, 0x2, 0xA9, 0xFD, 0xA7, 0x2, 0x59, 0xFD, 0xA7, 0x4, 0xD0, 0x9A, 0x9A, 0xFE, 0xDA, 0x9A, 0x9A, 0x0, 0x1, 0x0, 0x50, 0x1, 0x87, 0x1, 0xB0, 0x6, 0x31, 0x0, 0xE, 0x0, 0x0, 0x13, 0x34, 0x12, 0x37, 0x17, 0x6, 0x6, 0x15, 0x14, 0x16, 0x17, 0x7, 0x26, 0x2, 0x35, 0x50, 0xC5, 0x57, 0x44, 0x37, 0x65, 0x65, 0x37, 0x44, 0x57, 0xC5, 0x3, 0xE5, 0xF7, 0x1, 0x2A, 0x2B, 0x7F, 0x3A, 0xCF, 0xD6, 0xCC, 0xCA, 0x3A, 0x7C, 0x2C, 0x1, 0x2A, 0xF8, 0x0, 0x1, 0x0, 0x50, 0x1, 0x87, 0x1, 0xB0, 0x6, 0x31, 0x0, 0xE, 0x0, 0x0, 0x1, 0x14, 0x2, 0x7, 0x27, 0x36, 0x36, 0x35, 0x34, 0x26, 0x27, 0x37, 0x16, 0x12, 0x15, 0x1, 0xB0, 0xC4, 0x58, 0x44, 0x37, 0x65, 0x64, 0x38, 0x44, 0x58, 0xC4, 0x3, 0xD4, 0xF7, 0xFE, 0xD6, 0x2C, 0x7C, 0x3A, 0xC9, 0xE0, 0xC2, 0xD0, 0x3A, 0x7F, 0x2B, 0xFE, 0xD6, 0xF7, 0x0, 0x1, 0x0, 0x6A, 0x2, 0x8C, 0x3, 0x0, 0x5, 0xBA, 0x0, 0x10, 0x0, 0x0, 0x1, 0x22, 0x7, 0x11, 0x23, 0x11, 0x33, 0x17, 0x36, 0x33, 0x32, 0x16, 0x15, 0x11, 0x23, 0x11, 0x26, 0x1, 0xB8, 0x61, 0x28, 0xC5, 0x98, 0x20, 0x4B, 0x8F, 0x79, 0x8B, 0xC5, 0x4, 0x5, 0x13, 0x58, 0xFD, 0xD1, 0x3, 0x21, 0x79, 0x86, 0x91, 0xA2, 0xFE, 0x5, 0x1, 0xD9, 0xAE, 0xFF, 0xFF, 0x0, 0x4C, 0xFE, 0x88, 0x2, 0xAA, 0x1, 0xB3, 0x0, 0x7, 0x7, 0x43, 0x0, 0x0, 0xFE, 0x93, 0xFF, 0xFF, 0x0, 0x81, 0xFE, 0x93, 0x2, 0x3, 0x1, 0xA7, 0x0, 0x7, 0x7, 0x42, 0x0, 0x0, 0xFE, 0x93, 0xFF, 0xFF, 0x0, 0x3C, 0xFE, 0x93, 0x2, 0xB2, 0x1, 0xB3, 0x0, 0x7, 0x7, 0x41, 0x0, 0x0, 0xFE, 0x93, 0xFF, 0xFF, 0x0, 0x37, 0xFE, 0x88, 0x2, 0xA9, 0x1, 0xB3, 0x0, 0x7, 0x7, 0x9D, 0x0, 0x0, 0xFE, 0x93, 0xFF, 0xFF, 0x0, 0x35, 0xFE, 0x93, 0x2, 0xBF, 0x1, 0xA8, 0x0, 0x7, 0x7, 0x9E, 0x0, 0x0, 0xFE, 0x93, 0xFF, 0xFF, 0x0, 0x4F, 0xFE, 0x88, 0x2, 0xAE, 0x1, 0xA8, 0x0, 0x7, 0x7, 0x9F, 0x0, 0x0, 0xFE, 0x93, 0xFF, 0xFF, 0x0, 0x4E, 0xFE, 0x88, 0x2, 0xB9, 0x1, 0xB5, 0x0, 0x7, 0x7, 0xA0, 0x0, 0x0, 0xFE, 0x93, 0xFF, 0xFF, 0x0, 0x37, 0xFE, 0x93, 0x2, 0xAE, 0x1, 0xA8, 0x0, 0x7, 0x7, 0xA1, 0x0, 0x0, 0xFE, 0x93, 0xFF, 0xFF, 0x0, 0x4C, 0xFE, 0x88, 0x2, 0xAA, 0x1, 0xB3, 0x0, 0x7, 0x7, 0xA2, 0x0, 0x0, 0xFE, 0x93, 0xFF, 0xFF, 0x0, 0x47, 0xFE, 0x8A, 0x2, 0xA4, 0x1, 0xB3, 0x0, 0x7, 0x7, 0xA3, 0x0, 0x0, 0xFE, 0x93, 0xFF, 0xFF, 0x0, 0x50, 0xFE, 0xA6, 0x2, 0xEC, 0x1, 0x6B, 0x0, 0x7, 0x4, 0xA3, 0x0, 0x0, 0xFC, 0x18, 0xFF, 0xFF, 0x0, 0x50, 0xFF, 0xBB, 0x2, 0xA9, 0x0, 0x55, 0x0, 0x7, 0x4, 0xA4, 0x0, 0x0, 0xFC, 0x18, 0xFF, 0xFF, 0x0, 0x50, 0xFF, 0x28, 0x2, 0xA9, 0x0, 0xE8, 0x0, 0x7, 0x4, 0xA5, 0x0, 0x0, 0xFC, 0x18, 0x0, 0x1, 0x0, 0x50, 0xFD, 0xEB, 0x1, 0xB0, 0x2, 0x53, 0x0, 0xE, 0x0, 0x0, 0x37, 0x34, 0x12, 0x37, 0x17, 0x6, 0x6, 0x15, 0x14, 0x16, 0x17, 0x7, 0x26, 0x2, 0x35, 0x50, 0xC5, 0x57, 0x44, 0x37, 0x65, 0x65, 0x37, 0x44, 0x57, 0xC5, 0x25, 0xEB, 0x1, 0x1B, 0x28, 0x7F, 0x35, 0xC2, 0xCA, 0xBD, 0xBB, 0x35, 0x7B, 0x28, 0x1, 0x18, 0xE9, 0x0, 0x1, 0x0, 0x50, 0xFD, 0xEB, 0x1, 0xB0, 0x2, 0x53, 0x0, 0xE, 0x0, 0x0, 0x25, 0x14, 0x2, 0x7, 0x27, 0x36, 0x36, 0x35, 0x34, 0x26, 0x27, 0x37, 0x16, 0x12, 0x15, 0x1, 0xB0, 0xC4, 0x58, 0x44, 0x37, 0x65, 0x64, 0x38, 0x44, 0x58, 0xC4, 0x1E, 0xED, 0xFE, 0xE3, 0x29, 0x7B, 0x37, 0xBD, 0xD6, 0xB2, 0xBE, 0x34, 0x7F, 0x28, 0xFE, 0xEA, 0xE6, 0xFF, 0xFF, 0x0, 0x3C, 0xFE, 0x50, 0x3, 0x0, 0x1, 0x8D, 0x0, 0x7, 0x3, 0x72, 0x0, 0x0, 0xFB, 0xD3, 0xFF, 0xFF, 0x0, 0x3C, 0xFE, 0x4B, 0x3, 0x16, 0x1, 0x89, 0x0, 0x7, 0x3, 0x78, 0x0, 0x0, 0xFB, 0xCD, 0xFF, 0xFF, 0x0, 0x3C, 0xFE, 0x4C, 0x3, 0x32, 0x1, 0x8A, 0x0, 0x7, 0x3, 0x81, 0x0, 0x0, 0xFB, 0xD0, 0xFF, 0xFF, 0x0, 0x28, 0xFE, 0x5F, 0x3, 0x12, 0x1, 0x80, 0x0, 0x7, 0x1, 0x94, 0xFF, 0xF9, 0xFB, 0xD3, 0xFF, 0xFF, 0x0, 0x3C, 0xFE, 0x4B, 0x3, 0x16, 0x1, 0x89, 0x0, 0xF, 0x3, 0x78, 0x3, 0x52, 0x4, 0x7, 0xC0, 0x0, 0xFF, 0xFF, 0x0, 0x64, 0xFE, 0x5F, 0x2, 0xFA, 0x3, 0x1, 0x0, 0x7, 0x1, 0x62, 0x0, 0x0, 0xFB, 0xD3, 0xFF, 0xFF, 0x0, 0x64, 0xFE, 0x5F, 0x3, 0x3E, 0x2, 0xE1, 0x0, 0x7, 0x3, 0x7E, 0x0, 0x0, 0xFB, 0xD3, 0xFF, 0xFF, 0x0, 0x78, 0xFE, 0x5F, 0x1, 0x3D, 0x3, 0x1, 0x0, 0x7, 0x1, 0x92, 0x0, 0x14, 0xFB, 0xD3, 0xFF, 0xFF, 0x0, 0x64, 0xFE, 0x5F, 0x4, 0xCC, 0x1, 0x8D, 0x0, 0x7, 0x3, 0x7F, 0x0, 0x0, 0xFB, 0xD3, 0x0, 0x1, 0x0, 0x64, 0xFE, 0x60, 0x2, 0xFA, 0x1, 0x8D, 0x0, 0x10, 0x0, 0x0, 0x25, 0x22, 0x7, 0x11, 0x23, 0x11, 0x33, 0x17, 0x36, 0x33, 0x32, 0x16, 0x15, 0x11, 0x23, 0x11, 0x26, 0x1, 0xB3, 0x62, 0x28, 0xC5, 0xA7, 0x14, 0x4C, 0x8C, 0x78, 0x8B, 0xC5, 0x4, 0xE7, 0x59, 0xFD, 0xD2, 0x3, 0x20, 0x74, 0x81, 0x91, 0xA2, 0xFE, 0x6, 0x1, 0xD8, 0xAF, 0x0, 0x2, 0x0, 0x64, 0xFD, 0xEE, 0x3, 0x3D, 0x1, 0x88, 0x0, 0x9, 0x0, 0x19, 0x0, 0x0, 0x5, 0x32, 0x36, 0x35, 0x34, 0x23, 0x22, 0x7, 0x11, 0x16, 0x17, 0x22, 0x27, 0x15, 0x23, 0x11, 0x33, 0x17, 0x36, 0x33, 0x32, 0x16, 0x15, 0x15, 0x14, 0x6, 0x1, 0xCD, 0x5D, 0x4E, 0xAA, 0x72, 0x34, 0x33, 0x9F, 0x84, 0x4E, 0xC4, 0xAC, 0xC, 0x50, 0x90, 0x98, 0xA9, 0xA8, 0xC8, 0x72, 0x6A, 0xCC, 0x57, 0xFE, 0xFF, 0x50, 0xA6, 0x52, 0xF6, 0x3, 0x8B, 0x55, 0x64, 0xCD, 0xA8, 0xF, 0xA9, 0xC9, 0xFF, 0xFF, 0x0, 0x3C, 0xFE, 0x4B, 0x2, 0xDF, 0x1, 0x89, 0x0, 0x7, 0x1, 0x93, 0x0, 0x0, 0xFB, 0xCF, 0xFF, 0xFF, 0x0, 0x28, 0xFE, 0x4B, 0x2, 0x2, 0x2, 0x3E, 0x0, 0x7, 0x3, 0x86, 0x0, 0x0, 0xFB, 0xCE, 0x0, 0x1, 0x0, 0x58, 0xFF, 0xFF, 0x5, 0x28, 0x6, 0x1, 0x0, 0x20, 0x0, 0x0, 0x5, 0x11, 0x22, 0x0, 0x35, 0x35, 0x34, 0x0, 0x33, 0x32, 0x16, 0x17, 0x23, 0x26, 0x23, 0x22, 0x6, 0x15, 0x15, 0x14, 0x16, 0x33, 0x11, 0x21, 0x15, 0x21, 0x15, 0x21, 0x15, 0x21, 0x11, 0x21, 0x15, 0x2, 0x22, 0xC6, 0xFE, 0xFC, 0x1, 0x3, 0xC7, 0xC4, 0xEA, 0xD, 0xE4, 0x1A, 0xBD, 0x68, 0x7E, 0x7F, 0x67, 0x3, 0x6, 0xFD, 0xDE, 0x1, 0xD2, 0xFE, 0x2E, 0x2, 0x22, 0x1, 0x1, 0xBE, 0x1, 0x3, 0xCF, 0xA0, 0xD0, 0x1, 0x2, 0xC2, 0xC2, 0xCE, 0xA1, 0x7A, 0xA1, 0x79, 0xA4, 0x1, 0x98, 0xB6, 0xE0, 0xB7, 0xFE, 0xF8, 0xB6, 0x0, 0x3, 0x0, 0x66, 0xFF, 0x83, 0x4, 0xEC, 0x6, 0x22, 0x0, 0x5, 0x0, 0xB, 0x0, 0x2C, 0x0, 0x0, 0x1, 0x14, 0x17, 0x13, 0x4, 0x11, 0x13, 0x1, 0x26, 0x27, 0x1, 0x16, 0x3, 0x37, 0x26, 0x27, 0x7, 0x23, 0x13, 0x26, 0x3, 0x35, 0x10, 0x0, 0x25, 0x37, 0x33, 0x7, 0x16, 0x17, 0x37, 0x33, 0x3, 0x16, 0x17, 0x23, 0x1, 0x36, 0x36, 0x37, 0x33, 0x6, 0x0, 0x21, 0x7, 0x1, 0x65, 0xD, 0xFA, 0xFE, 0xF9, 0xDB, 0x1, 0x48, 0x27, 0x37, 0xFE, 0xBA, 0x27, 0x36, 0x2A, 0x33, 0x2E, 0x37, 0xC0, 0x5F, 0x9E, 0x2, 0x1, 0x3D, 0x1, 0xE, 0x1F, 0xBF, 0x25, 0x34, 0x2F, 0x30, 0xBF, 0x55, 0x71, 0x14, 0xF1, 0xFF, 0x0, 0x79, 0x6B, 0x10, 0xFC, 0x13, 0xFE, 0xE6, 0xFE, 0xF9, 0x22, 0x2, 0x9D, 0x5E, 0x4D, 0x2, 0xFE, 0x3A, 0xFE, 0x55, 0xFD, 0xBF, 0x3, 0xF2, 0x20, 0xF, 0xFC, 0x17, 0x26, 0xFE, 0xA7, 0x82, 0xF, 0x18, 0xA9, 0x1, 0x23, 0xB9, 0x1, 0x36, 0x7E, 0x1, 0x37, 0x1, 0x76, 0x4, 0x5E, 0x72, 0xD, 0x16, 0x95, 0xFE, 0xF9, 0x80, 0xCC, 0xFC, 0xEE, 0x10, 0x93, 0x7A, 0xD4, 0xFE, 0xE6, 0x69, 0x0, 0x1, 0x0, 0x66, 0xFF, 0xEC, 0x4, 0xEC, 0x5, 0xC4, 0x0, 0x28, 0x0, 0x0, 0x1, 0x6, 0x0, 0x21, 0x20, 0x0, 0x11, 0x35, 0x10, 0x0, 0x21, 0x20, 0x0, 0x17, 0x23, 0x26, 0x26, 0x23, 0x22, 0x6, 0x7, 0x15, 0x14, 0x16, 0x17, 0x11, 0x33, 0x17, 0x36, 0x33, 0x32, 0x17, 0x7, 0x26, 0x23, 0x22, 0x7, 0x11, 0x36, 0x36, 0x37, 0x4, 0xEB, 0x13, 0xFE, 0xE5, 0xFE, 0xF4, 0xFE, 0xF3, 0xFE, 0xC2, 0x1, 0x44, 0x1, 0x13, 0x1, 0x5, 0x1, 0x14, 0x16, 0xFC, 0x10, 0x87, 0x9C, 0xAB, 0xAC, 0x1, 0x5F, 0x6A, 0xE2, 0xA, 0x5A, 0x9C, 0x35, 0x22, 0x2, 0x32, 0x31, 0xA7, 0x3A, 0x64, 0x5C, 0xE, 0x1, 0xDA, 0xD4, 0xFE, 0xE6, 0x1, 0x76, 0x1, 0x3B, 0x76, 0x1, 0x3A, 0x1, 0x77, 0xFE, 0xE5, 0xDA, 0x8C, 0x9D, 0xFA, 0xE4, 0x7D, 0xAC, 0xF2, 0x2E, 0x2, 0x9B, 0x78, 0x8C, 0xE, 0xE4, 0x8, 0x7F, 0xFE, 0xAD, 0x18, 0x8E, 0x70, 0x0, 0x1, 0x0, 0x60, 0x0, 0x0, 0x4, 0x7C, 0x5, 0xC4, 0x0, 0x28, 0x0, 0x0, 0x21, 0x21, 0x35, 0x33, 0x36, 0x36, 0x35, 0x27, 0x23, 0x35, 0x33, 0x27, 0x23, 0x35, 0x33, 0x27, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x23, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x17, 0x21, 0x15, 0x21, 0x17, 0x21, 0x15, 0x21, 0x17, 0x14, 0x7, 0x21, 0x4, 0x7C, 0xFB, 0xE7, 0x51, 0x32, 0x21, 0x2, 0xA5, 0xA0, 0x4, 0x9C, 0x97, 0x5, 0xFF, 0xC6, 0xD0, 0xE3, 0xF5, 0x7A, 0x4E, 0x51, 0x6E, 0x6, 0x1, 0x3E, 0xFE, 0xC7, 0x5, 0x1, 0x34, 0xFE, 0xD1, 0x2, 0x41, 0x2, 0xB8, 0xCA, 0xD, 0x8A, 0x3D, 0x37, 0x90, 0x79, 0x90, 0xA1, 0xCF, 0xE6, 0xDE, 0xB5, 0x6E, 0x5A, 0x78, 0x72, 0xA1, 0x90, 0x79, 0x90, 0x2F, 0x88, 0x54, 0x0, 0x1, 0x0, 0x7D, 0xFF, 0x83, 0x6, 0x7A, 0x5, 0x1, 0x0, 0x25, 0x0, 0x0, 0x21, 0x35, 0x3, 0x23, 0x1, 0x35, 0x34, 0x26, 0x23, 0x22, 0x7, 0x11, 0x23, 0x11, 0x33, 0x17, 0x36, 0x33, 0x32, 0x17, 0x13, 0x33, 0x7, 0x36, 0x33, 0x32, 0x16, 0x17, 0x11, 0x23, 0x11, 0x34, 0x26, 0x23, 0x22, 0x6, 0x7, 0x11, 0x3, 0x1, 0x80, 0xC0, 0x1, 0x40, 0x68, 0x5A, 0x93, 0x3D, 0xF2, 0xE4, 0x7, 0x73, 0xC6, 0x95, 0x56, 0x69, 0xBF, 0x58, 0x53, 0x67, 0xA6, 0xBD, 0x1, 0xF3, 0x69, 0x5A, 0x53, 0x69, 0x14, 0xC3, 0xFE, 0xC0, 0x3, 0x1E, 0x1B, 0x72, 0x5A, 0x78, 0xFC, 0xF0, 0x4, 0x3A, 0x71, 0x85, 0x52, 0x1, 0x5, 0xDB, 0x28, 0xB8, 0xD4, 0xFD, 0x3E, 0x2, 0xBE, 0x78, 0x52, 0x5A, 0x48, 0xFD, 0x1A, 0x0, 0x5, 0x0, 0x22, 0x0, 0x0, 0x6, 0x4F, 0x5, 0xB0, 0x0, 0x2, 0x0, 0x6, 0x0, 0xA, 0x0, 0x26, 0x0, 0x29, 0x0, 0x0, 0x1, 0x15, 0x33, 0x13, 0x27, 0x23, 0x15, 0x21, 0x35, 0x23, 0x17, 0x13, 0x1, 0x21, 0x11, 0x23, 0x11, 0x23, 0x35, 0x33, 0x35, 0x23, 0x35, 0x33, 0x11, 0x33, 0x1, 0x21, 0x11, 0x33, 0x11, 0x33, 0x15, 0x23, 0x15, 0x33, 0x15, 0x23, 0x11, 0x3, 0x35, 0x23, 0x1, 0xF1, 0x2B, 0xC2, 0x5E, 0x8F, 0x2, 0x8B, 0xF2, 0x5E, 0x92, 0xFE, 0xC9, 0xFE, 0xAE, 0xFD, 0xD2, 0xD2, 0xD2, 0xD2, 0xFD, 0x1, 0x35, 0x1, 0x56, 0xFB, 0xD8, 0xD8, 0xD8, 0xD8, 0xFB, 0x2F, 0x4, 0x9, 0x44, 0xFE, 0xCA, 0x96, 0x96, 0x96, 0x96, 0xFD, 0x71, 0x1, 0xEF, 0xFE, 0x11, 0x1, 0xEF, 0xA0, 0x96, 0xA0, 0x1, 0xEB, 0xFE, 0x15, 0x1, 0xEB, 0xFE, 0x15, 0xA0, 0x96, 0xA0, 0xFE, 0x11, 0x1, 0xA4, 0x4B, 0x0, 0x2, 0x0, 0x99, 0xFF, 0xEC, 0x6, 0x3A, 0x5, 0xB0, 0x0, 0x8, 0x0, 0x28, 0x0, 0x0, 0x1, 0x11, 0x33, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x1, 0x6, 0x23, 0x22, 0x26, 0x35, 0x11, 0x23, 0x6, 0x6, 0x23, 0x23, 0x11, 0x23, 0x11, 0x21, 0x32, 0x16, 0x17, 0x33, 0x11, 0x33, 0x11, 0x33, 0x15, 0x23, 0x11, 0x14, 0x16, 0x33, 0x32, 0x37, 0x1, 0x93, 0x92, 0x95, 0x5F, 0x5F, 0x95, 0x4, 0x15, 0x43, 0x5D, 0x79, 0x9F, 0x77, 0x1A, 0xED, 0xDF, 0x92, 0xFA, 0x1, 0x8C, 0xE5, 0xEE, 0x16, 0x74, 0xF3, 0xBF, 0xBF, 0x3F, 0x31, 0x2A, 0x2B, 0x4, 0xE4, 0xFE, 0x4, 0x9F, 0x61, 0x60, 0x9C, 0xFB, 0x20, 0x18, 0x89, 0xA7, 0x2, 0x6B, 0xA1, 0xCA, 0xFD, 0xE4, 0x5, 0xB0, 0xD1, 0xA5, 0x1, 0x7, 0xFE, 0xF9, 0xB3, 0xFD, 0xA3, 0x49, 0x2B, 0xA, 0xFF, 0xFF, 0x0, 0x95, 0xFF, 0xEC, 0x8, 0x3C, 0x5, 0xB0, 0x0, 0x26, 0x0, 0x37, 0x0, 0x0, 0x0, 0x7, 0x0, 0x58, 0x4, 0x72, 0x0, 0x0, 0x0, 0x6, 0x0, 0x22, 0x0, 0x0, 0x6, 0x7, 0x5, 0xB0, 0x0, 0x3, 0x0, 0x7, 0x0, 0xB, 0x0, 0xE, 0x0, 0x11, 0x0, 0x31, 0x0, 0x0, 0x1, 0x37, 0x23, 0x17, 0x21, 0x27, 0x23, 0x7, 0x21, 0x37, 0x23, 0x17, 0x1, 0x37, 0x23, 0x5, 0x37, 0x23, 0x1, 0x3, 0x23, 0x35, 0x33, 0x27, 0x23, 0x35, 0x33, 0x3, 0x33, 0x13, 0x33, 0x13, 0x33, 0x13, 0x33, 0x13, 0x33, 0x3, 0x33, 0x15, 0x23, 0x7, 0x33, 0x15, 0x23, 0x3, 0x23, 0x3, 0x23, 0x3, 0x2, 0x34, 0x1A, 0xA6, 0x1A, 0x1, 0x74, 0x1A, 0x12, 0x1B, 0x1, 0x75, 0x19, 0xA1, 0x19, 0xFE, 0x7, 0x1F, 0x3F, 0x2, 0x50, 0x1E, 0x3C, 0xFD, 0x6E, 0x77, 0xE3, 0xC3, 0x21, 0xA2, 0x81, 0x4F, 0xFB, 0x3F, 0xD9, 0x3D, 0xE1, 0x3D, 0xD5, 0x3D, 0xFB, 0x4F, 0x87, 0xA7, 0x21, 0xC8, 0xE8, 0x77, 0xFA, 0x5E, 0x7B, 0x60, 0x2, 0xE9, 0xA2, 0xA2, 0xA2, 0xA2, 0xA2, 0xA2, 0xFE, 0x9B, 0xC5, 0xBE, 0xBE, 0xFD, 0xB7, 0x2, 0x49, 0xA0, 0xA2, 0xA0, 0x1, 0x85, 0xFE, 0x7B, 0x1, 0x85, 0xFE, 0x7B, 0x1, 0x85, 0xFE, 0x7B, 0xA0, 0xA2, 0xA0, 0xFD, 0xB7, 0x2, 0x49, 0xFD, 0xB7, 0x0, 0x2, 0x0, 0x7D, 0x0, 0x0, 0x6, 0x10, 0x4, 0x3A, 0x0, 0xD, 0x0, 0x1B, 0x0, 0x0, 0x13, 0x21, 0x32, 0x16, 0x17, 0x11, 0x23, 0x11, 0x34, 0x26, 0x23, 0x21, 0x11, 0x23, 0x21, 0x11, 0x33, 0x11, 0x21, 0x32, 0x36, 0x35, 0x11, 0x33, 0x11, 0x14, 0x4, 0x23, 0x7D, 0x2, 0x90, 0xB6, 0xB3, 0x1, 0xF3, 0x66, 0x5E, 0xFE, 0xAF, 0xF2, 0x1, 0x99, 0xF2, 0x1, 0x51, 0x5E, 0x66, 0xF3, 0xFE, 0xF2, 0xB7, 0x4, 0x3A, 0xBA, 0xD7, 0xFE, 0xBC, 0x1, 0x40, 0x7B, 0x56, 0xFC, 0x8A, 0x2, 0xD6, 0xFD, 0xEE, 0x56, 0x7B, 0x2, 0xA5, 0xFD, 0x5C, 0xD9, 0xBD, 0x0, 0x1, 0x0, 0x5E, 0xFF, 0xEC, 0x4, 0x31, 0x5, 0xC4, 0x0, 0x23, 0x0, 0x0, 0x25, 0x6, 0x23, 0x22, 0x0, 0x3, 0x23, 0x35, 0x33, 0x35, 0x23, 0x35, 0x33, 0x12, 0x0, 0x33, 0x32, 0x17, 0x7, 0x26, 0x23, 0x22, 0x6, 0x7, 0x21, 0x15, 0x21, 0x15, 0x21, 0x15, 0x21, 0x16, 0x16, 0x33, 0x32, 0x37, 0x4, 0x31, 0x7A, 0x7F, 0xF0, 0xFE, 0xCA, 0x8, 0xAC, 0xAC, 0xAC, 0xAD, 0xE, 0x1, 0x38, 0xF0, 0x6B, 0x85, 0x1D, 0x63, 0x67, 0x8E, 0xA9, 0xB, 0x1, 0x63, 0xFE, 0x9C, 0x1, 0x64, 0xFE, 0x9C, 0x6, 0xAE, 0x8D, 0x6C, 0x60, 0xA, 0x1E, 0x1, 0x13, 0x1, 0x11, 0x8C, 0x81, 0x8C, 0x1, 0xC, 0x1, 0xF, 0x1F, 0xCD, 0x21, 0xA1, 0xAF, 0x8C, 0x81, 0x8C, 0xBA, 0xA0, 0x20, 0x0, 0x1, 0x0, 0x22, 0x0, 0x0, 0x5, 0x90, 0x5, 0xB0, 0x0, 0x13, 0x0, 0x0, 0x21, 0x1, 0x23, 0x11, 0x23, 0x11, 0x23, 0x35, 0x33, 0x11, 0x33, 0x11, 0x33, 0x1, 0x21, 0x1, 0x21, 0x15, 0x21, 0x1, 0x4, 0x60, 0xFE, 0x43, 0xAC, 0xFD, 0xD8, 0xD8, 0xFD, 0x8A, 0x1, 0xAD, 0x1, 0x36, 0xFE, 0x44, 0x1, 0xCB, 0xFE, 0x57, 0x1, 0xC6, 0x2, 0x70, 0xFD, 0x90, 0x2, 0x7A, 0xCA, 0x2, 0x6C, 0xFD, 0x9D, 0x2, 0x63, 0xFD, 0x94, 0xCA, 0xFD, 0x86, 0x0, 0x1, 0x0, 0x2D, 0x0, 0x0, 0x4, 0xB0, 0x5, 0xB0, 0x0, 0x17, 0x0, 0x0, 0x1, 0x7, 0x11, 0x23, 0x11, 0x7, 0x35, 0x37, 0x35, 0x7, 0x35, 0x37, 0x11, 0x21, 0x35, 0x21, 0x15, 0x21, 0x15, 0x37, 0x15, 0x7, 0x15, 0x37, 0x3, 0xC5, 0xDA, 0xFC, 0xE3, 0xE3, 0xE3, 0xE3, 0xFE, 0x3E, 0x4, 0x83, 0xFE, 0x3B, 0xDA, 0xDA, 0xDA, 0x2, 0x39, 0x56, 0xFE, 0x1D, 0x1, 0x7F, 0x5A, 0xBE, 0x5A, 0x92, 0x5A, 0xBE, 0x5A, 0x1, 0x58, 0xCB, 0xCB, 0xF4, 0x57, 0xBE, 0x57, 0x92, 0x57, 0x0, 0x5, 0x0, 0x35, 0xFE, 0x60, 0xA, 0x26, 0x6, 0x7E, 0x0, 0xC, 0x0, 0x18, 0x0, 0x22, 0x0, 0x31, 0x0, 0x50, 0x0, 0x0, 0x25, 0x32, 0x36, 0x35, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x11, 0x16, 0x21, 0x32, 0x12, 0x35, 0x35, 0x34, 0x2, 0x23, 0x7, 0x11, 0x16, 0x16, 0x5, 0x32, 0x35, 0x35, 0x26, 0x7, 0x6, 0x15, 0x14, 0x16, 0x5, 0x22, 0x27, 0x11, 0x23, 0x11, 0x34, 0x0, 0x33, 0x32, 0x12, 0x15, 0x15, 0x14, 0x2, 0x21, 0x22, 0x26, 0x27, 0x6, 0x23, 0x22, 0x26, 0x35, 0x34, 0x36, 0x33, 0x32, 0x17, 0x11, 0x6, 0x7, 0x35, 0x36, 0x37, 0x35, 0x33, 0x15, 0x36, 0x33, 0x20, 0x0, 0x11, 0x15, 0x10, 0x0, 0x8, 0x40, 0x83, 0x71, 0x6C, 0x83, 0x75, 0x68, 0x44, 0xFC, 0x42, 0xA7, 0x95, 0xD8, 0xED, 0x8D, 0x39, 0x82, 0xFD, 0xE6, 0x6C, 0x35, 0x32, 0x66, 0x38, 0x7, 0x35, 0xB2, 0x6B, 0xF2, 0x1, 0xA, 0xCC, 0xEC, 0xEE, 0xD6, 0xFA, 0x9E, 0x73, 0xA1, 0x3C, 0x57, 0xCB, 0x9A, 0xAD, 0xA9, 0x8A, 0x42, 0x3B, 0x83, 0x95, 0x93, 0x85, 0xF3, 0x4C, 0x4A, 0x1, 0x47, 0x1, 0x67, 0xFE, 0xD8, 0xAF, 0xC0, 0x8B, 0x15, 0x9B, 0xE1, 0xDC, 0x7C, 0xFE, 0xF1, 0x75, 0x1, 0x1E, 0xE6, 0x4C, 0xEF, 0x1, 0x13, 0x5, 0xFC, 0x3A, 0x36, 0x51, 0x15, 0x78, 0x18, 0x2D, 0x1, 0x2, 0x5B, 0x2B, 0x34, 0xAE, 0x78, 0xFD, 0xFC, 0x3, 0xE0, 0xF5, 0x1, 0x19, 0xFE, 0xBD, 0xFD, 0x14, 0xE7, 0xFE, 0xD9, 0x4B, 0x34, 0x7F, 0x98, 0x78, 0x80, 0x8E, 0x17, 0x2, 0xE9, 0x18, 0x2A, 0xC3, 0x29, 0x18, 0xE0, 0xC0, 0x6, 0xFE, 0x76, 0xFE, 0xC3, 0x4A, 0xFE, 0xB1, 0xFE, 0x88, 0x0, 0x2, 0x0, 0x22, 0xFE, 0x4B, 0x4, 0xC1, 0x6, 0x18, 0x0, 0xB, 0x0, 0x30, 0x0, 0x0, 0x1, 0x36, 0x36, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x14, 0x16, 0x13, 0x22, 0x27, 0x35, 0x16, 0x33, 0x32, 0x36, 0x35, 0x34, 0x26, 0x27, 0x7, 0x3, 0x3, 0x23, 0x1, 0x1, 0x37, 0x3, 0x27, 0x26, 0x35, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x2, 0x3, 0x13, 0x16, 0x15, 0x14, 0x6, 0x3, 0x5A, 0x55, 0x3F, 0x47, 0x3D, 0x3F, 0x45, 0x1D, 0x3F, 0x6C, 0x6E, 0x5A, 0x62, 0x36, 0x32, 0x24, 0x45, 0x89, 0xFF, 0x99, 0xE0, 0x1, 0x58, 0x1, 0x4, 0x4F, 0x79, 0x29, 0x1F, 0xB2, 0xAA, 0xB3, 0xA6, 0x81, 0x8D, 0x8A, 0x39, 0xA5, 0x2, 0xFC, 0xAC, 0xBD, 0x51, 0x48, 0x57, 0x59, 0x49, 0x38, 0x7C, 0xFA, 0x4C, 0x2C, 0xC1, 0x2A, 0x39, 0x2B, 0x34, 0x7C, 0xC8, 0xFE, 0x1, 0x3B, 0xFE, 0xD9, 0x2, 0x93, 0xFE, 0xBB, 0x99, 0x1, 0x63, 0x8D, 0x72, 0x74, 0x95, 0xC6, 0xC9, 0x8E, 0x84, 0xFE, 0xC2, 0xFE, 0xF7, 0xFE, 0x69, 0xB3, 0x69, 0x71, 0x87, 0x0, 0x4, 0x0, 0x22, 0x0, 0x0, 0x5, 0xD5, 0x5, 0xB0, 0x0, 0x4, 0x0, 0x9, 0x0, 0xE, 0x0, 0x28, 0x0, 0x0, 0x1, 0x15, 0x21, 0x26, 0x23, 0x1, 0x27, 0x21, 0x15, 0x21, 0x7, 0x21, 0x15, 0x21, 0x32, 0x5, 0x11, 0x23, 0x11, 0x23, 0x35, 0x33, 0x35, 0x23, 0x35, 0x33, 0x11, 0x21, 0x32, 0x16, 0x17, 0x33, 0x15, 0x23, 0x17, 0x7, 0x33, 0x15, 0x23, 0x6, 0x5, 0x1, 0xD6, 0x1, 0xF2, 0x48, 0x79, 0x1, 0x14, 0x2, 0xFD, 0xBD, 0x2, 0x44, 0x4E, 0xFE, 0xA, 0x1, 0x31, 0x7F, 0xFE, 0x50, 0xFC, 0xB8, 0xB8, 0xB8, 0xB8, 0x2, 0x2D, 0xB9, 0xF9, 0x37, 0xE5, 0xBD, 0x1, 0x1, 0xBD, 0xE1, 0x6D, 0xFE, 0x94, 0x4, 0xE5, 0x3E, 0x3E, 0xFE, 0xFA, 0x28, 0x47, 0xA0, 0x38, 0xCB, 0xFD, 0xE3, 0x3, 0x20, 0xA0, 0x47, 0xA0, 0x1, 0x9, 0x90, 0x79, 0xA0, 0x26, 0x21, 0xA0, 0xFC, 0x7, 0x0, 0x3, 0x0, 0x6A, 0xFF, 0x83, 0x4, 0xF0, 0x6, 0x17, 0x0, 0x19, 0x0, 0x1F, 0x0, 0x25, 0x0, 0x0, 0x25, 0x6, 0x6, 0x7, 0x15, 0x23, 0x35, 0x26, 0x0, 0x3, 0x35, 0x10, 0x0, 0x37, 0x35, 0x33, 0x15, 0x16, 0x16, 0x17, 0x23, 0x26, 0x26, 0x27, 0x11, 0x21, 0x5, 0x10, 0x17, 0x11, 0x6, 0x11, 0x5, 0x23, 0x11, 0x36, 0x36, 0x37, 0x4, 0xF0, 0x2B, 0xDB, 0xD5, 0xC3, 0xDB, 0xFE, 0xF5, 0x2, 0x1, 0x1, 0xE7, 0xC3, 0xE0, 0xE3, 0x18, 0xF8, 0x10, 0x69, 0x6A, 0x1, 0xDB, 0xFC, 0x79, 0xE9, 0xE9, 0x2, 0x8B, 0xDF, 0x66, 0x62, 0x17, 0xBE, 0x3A, 0x8B, 0xB, 0x6B, 0x75, 0x2A, 0x1, 0x5F, 0x1, 0x1E, 0x68, 0x1, 0x2B, 0x1, 0x67, 0x23, 0x5B, 0x57, 0x15, 0xFD, 0xBB, 0x60, 0x8B, 0x14, 0xFD, 0xF9, 0x43, 0xFE, 0x88, 0x60, 0x4, 0x18, 0x4F, 0xFE, 0x6B, 0xD8, 0xFE, 0x8C, 0x7, 0x36, 0x19, 0x0, 0x3, 0x0, 0x22, 0x0, 0x0, 0x5, 0x64, 0x5, 0xB0, 0x0, 0x2, 0x0, 0x6, 0x0, 0x1E, 0x0, 0x0, 0x1, 0x27, 0x7, 0x1, 0x27, 0x21, 0x7, 0x1, 0x3, 0x21, 0x3, 0x21, 0x13, 0x23, 0x35, 0x33, 0x37, 0x21, 0x35, 0x21, 0x13, 0x33, 0x13, 0x21, 0x15, 0x21, 0x17, 0x33, 0x15, 0x23, 0x13, 0x3, 0x21, 0x55, 0x56, 0x1, 0x29, 0x3A, 0xFE, 0xCD, 0x3A, 0x2, 0x64, 0x77, 0xFD, 0xCD, 0x77, 0xFE, 0xF9, 0x83, 0x95, 0xDF, 0x3F, 0xFE, 0xE2, 0x1, 0x67, 0xD1, 0xE3, 0xD1, 0x1, 0x52, 0xFE, 0xF8, 0x3F, 0xC9, 0x80, 0x84, 0x3, 0x88, 0xF4, 0xF4, 0xFE, 0x97, 0xA6, 0xA6, 0xFD, 0xE1, 0x1, 0x54, 0xFE, 0xAC, 0x1, 0x5C, 0xC3, 0xA6, 0xC3, 0x2, 0x28, 0xFD, 0xD8, 0xC3, 0xA6, 0xC3, 0xFE, 0xA4, 0x0, 0x2, 0x0, 0x43, 0xFF, 0xEC, 0x4, 0x8C, 0x5, 0xC4, 0x0, 0x14, 0x0, 0x29, 0x0, 0x0, 0x1, 0x21, 0x35, 0x21, 0x36, 0x35, 0x34, 0x23, 0x22, 0x6, 0x7, 0x23, 0x36, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x7, 0x33, 0x3, 0x6, 0x4, 0x23, 0x22, 0x26, 0x35, 0x34, 0x37, 0x23, 0x35, 0x21, 0x15, 0x21, 0x6, 0x15, 0x14, 0x33, 0x32, 0x36, 0x37, 0x4, 0x8C, 0xFB, 0xB7, 0x2, 0xB2, 0x37, 0xBD, 0x70, 0x5F, 0x2, 0xFD, 0x6, 0xD6, 0xF0, 0xD4, 0xE8, 0x38, 0x9B, 0x3E, 0x5, 0xFE, 0xF8, 0xD9, 0xE1, 0xF5, 0x40, 0x8F, 0x4, 0x49, 0xFD, 0x45, 0x43, 0xDA, 0x66, 0x80, 0x2, 0x3, 0x1E, 0xB2, 0x42, 0x58, 0x91, 0x5A, 0x50, 0x9F, 0xD4, 0xB0, 0xA2, 0x53, 0x4F, 0xFD, 0x97, 0xC5, 0xB6, 0xB4, 0xA4, 0x61, 0x4F, 0xB2, 0xB2, 0x43, 0x64, 0x99, 0x50, 0x63, 0x0, 0x2, 0x0, 0x66, 0xFF, 0x83, 0x4, 0xEC, 0x6, 0x17, 0x0, 0x1B, 0x0, 0x22, 0x0, 0x0, 0x1, 0x6, 0x2, 0x7, 0x15, 0x23, 0x35, 0x26, 0x0, 0x11, 0x35, 0x10, 0x0, 0x37, 0x35, 0x33, 0x15, 0x16, 0x12, 0x17, 0x23, 0x26, 0x26, 0x27, 0x11, 0x36, 0x36, 0x37, 0x25, 0x14, 0x16, 0x17, 0x11, 0x6, 0x11, 0x4, 0xEB, 0x11, 0xEA, 0xDB, 0xC3, 0xE4, 0xFE, 0xF8, 0x1, 0x8, 0xE4, 0xC3, 0xDA, 0xE9, 0x14, 0xFC, 0xE, 0x62, 0x6B, 0x6A, 0x61, 0xF, 0xFD, 0x76, 0x70, 0x7D, 0xED, 0x1, 0xDA, 0xBF, 0xFE, 0xF2, 0x1B, 0x6F, 0x70, 0x20, 0x1, 0x6C, 0x1, 0x1E, 0x76, 0x1, 0x1B, 0x1, 0x6A, 0x24, 0x5B, 0x58, 0x18, 0xFE, 0xEF, 0xC7, 0x76, 0x96, 0x15, 0xFB, 0xD1, 0x16, 0x8F, 0x74, 0xC3, 0xBA, 0xFC, 0x23, 0x4, 0x25, 0x4A, 0xFE, 0x6E, 0x0, 0x1, 0x0, 0x22, 0xFF, 0xEC, 0x4, 0x20, 0x6, 0x0, 0x0, 0x1D, 0x0, 0x0, 0x25, 0x6, 0x23, 0x22, 0x26, 0x35, 0x11, 0x23, 0x11, 0x23, 0x11, 0x23, 0x35, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x15, 0x23, 0x11, 0x14, 0x16, 0x33, 0x32, 0x37, 0x4, 0x20, 0x43, 0x5D, 0x97, 0x81, 0xA5, 0xF3, 0xAE, 0xAE, 0xF3, 0xA5, 0xF3, 0xBF, 0xBF, 0x27, 0x49, 0x2A, 0x2B, 0x4, 0x18, 0xAA, 0x91, 0x2, 0x60, 0xFC, 0x79, 0x3, 0x87, 0xB3, 0x1, 0xC6, 0xFE, 0x3A, 0x1, 0x7, 0xFE, 0xF9, 0xB3, 0xFD, 0xB7, 0x43, 0x45, 0xA, 0x0, 0x3, 0x0, 0x35, 0xFF, 0x89, 0x4, 0xE2, 0x5, 0xC4, 0x0, 0x8, 0x0, 0xF, 0x0, 0x46, 0x0, 0x0, 0x25, 0x37, 0x35, 0x34, 0x23, 0x22, 0x7, 0x17, 0x16, 0x25, 0x22, 0x7, 0x16, 0x17, 0x34, 0x26, 0x13, 0x35, 0x26, 0x27, 0x15, 0x23, 0x11, 0x33, 0x17, 0x36, 0x33, 0x32, 0x17, 0x36, 0x33, 0x32, 0x17, 0x15, 0x36, 0x35, 0x34, 0x26, 0x27, 0x26, 0x24, 0x35, 0x34, 0x24, 0x33, 0x32, 0x0, 0x15, 0x23, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x14, 0x16, 0x17, 0x16, 0x16, 0x15, 0x14, 0x6, 0x7, 0x15, 0x23, 0x35, 0x7, 0x22, 0x27, 0x15, 0x2, 0xC1, 0x38, 0x64, 0x47, 0x23, 0x2, 0x4A, 0xFE, 0xBC, 0x3A, 0x20, 0x46, 0x78, 0x35, 0x35, 0x7A, 0x52, 0x96, 0x74, 0x18, 0x3A, 0x6C, 0x8B, 0x29, 0x39, 0x75, 0xBF, 0x6, 0x57, 0x85, 0x9E, 0xE2, 0xFE, 0xEF, 0x1, 0x1B, 0xE6, 0xFC, 0x1, 0x14, 0xFC, 0x85, 0x91, 0x82, 0x80, 0xB1, 0x8B, 0xE8, 0xF2, 0xB3, 0xA1, 0x95, 0x38, 0x4C, 0x48, 0xB4, 0x2, 0x2F, 0x90, 0x3C, 0x7A, 0xB, 0xC1, 0x2B, 0x41, 0x28, 0x54, 0x40, 0xFE, 0x14, 0x8F, 0x27, 0x46, 0xFC, 0x2, 0x60, 0x5C, 0x66, 0x74, 0x74, 0xDB, 0x3B, 0x32, 0x68, 0x5F, 0x69, 0x30, 0x45, 0xCD, 0xB1, 0xB0, 0xE2, 0xFE, 0xF7, 0xB3, 0x68, 0x8B, 0x74, 0x54, 0x5C, 0x6A, 0x28, 0x43, 0xD6, 0xB3, 0x91, 0xC1, 0x25, 0x79, 0x64, 0x1, 0xA, 0x6D, 0x0, 0x2, 0x0, 0x2D, 0x0, 0x0, 0x4, 0xB0, 0x5, 0xB0, 0x0, 0x3, 0x0, 0xB, 0x0, 0x0, 0x1, 0x15, 0x21, 0x35, 0x1, 0x21, 0x11, 0x23, 0x11, 0x21, 0x35, 0x21, 0x4, 0xB0, 0xFB, 0x7D, 0x4, 0x83, 0xFE, 0x3B, 0xFC, 0xFE, 0x3E, 0x4, 0x83, 0x5, 0xB0, 0xCB, 0xCB, 0xFD, 0xF6, 0xFC, 0x5A, 0x3, 0xA6, 0xCC, 0x0, 0x1, 0x0, 0x28, 0x0, 0x0, 0x4, 0xC, 0x5, 0xB0, 0x0, 0x1A, 0x0, 0x0, 0x25, 0x15, 0x21, 0x1, 0x27, 0x33, 0x32, 0x36, 0x37, 0x21, 0x37, 0x21, 0x26, 0x27, 0x21, 0x37, 0x21, 0x7, 0x23, 0x16, 0x17, 0x33, 0x7, 0x23, 0x6, 0x6, 0x7, 0x3, 0x59, 0xFE, 0xE2, 0xFE, 0x3, 0x1, 0xFC, 0x70, 0x84, 0x16, 0xFD, 0xE6, 0x32, 0x1, 0xE3, 0x2F, 0xC8, 0xFE, 0xE1, 0x37, 0x3, 0xAD, 0x33, 0xD9, 0x33, 0xF, 0xCA, 0x33, 0x95, 0x15, 0xCF, 0xD9, 0xD, 0xD, 0x2, 0x52, 0x99, 0x5E, 0x4B, 0xB6, 0x96, 0x5, 0xCB, 0xB6, 0x4A, 0x66, 0xB6, 0x98, 0xBC, 0x12, 0x0, 0x1, 0x0, 0x22, 0xFF, 0xEC, 0x4, 0x52, 0x5, 0xB0, 0x0, 0x1D, 0x0, 0x0, 0x5, 0x22, 0x27, 0x11, 0x7, 0x35, 0x37, 0x35, 0x7, 0x35, 0x37, 0x11, 0x33, 0x15, 0x37, 0x15, 0x7, 0x15, 0x37, 0x15, 0x7, 0x11, 0x36, 0x36, 0x37, 0x35, 0x33, 0x15, 0x2, 0x0, 0x1, 0xF4, 0x7A, 0x7C, 0xDC, 0xDC, 0xDC, 0xDC, 0xFB, 0xE2, 0xE2, 0xE2, 0xE2, 0xAC, 0xAE, 0x3, 0xFC, 0x4, 0xFE, 0xB3, 0x14, 0x14, 0x2, 0x5D, 0x57, 0xC8, 0x57, 0x89, 0x57, 0xC7, 0x57, 0x1, 0x3B, 0xD7, 0x5A, 0xC8, 0x59, 0x89, 0x5A, 0xC8, 0x5A, 0xFD, 0xFB, 0x2, 0xF4, 0xF0, 0x5E, 0x5C, 0xFE, 0xBB, 0xFE, 0x8D, 0x0, 0x3, 0x0, 0x28, 0x0, 0x0, 0x6, 0x62, 0x5, 0xA4, 0x0, 0x9, 0x0, 0x2D, 0x0, 0x39, 0x0, 0x0, 0x1, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x14, 0x33, 0x1, 0x14, 0x6, 0x6, 0x23, 0x27, 0x7, 0x27, 0x7, 0x15, 0x14, 0x16, 0x33, 0x15, 0x20, 0x24, 0x27, 0x7, 0x27, 0x25, 0x11, 0x23, 0x22, 0x26, 0x35, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x15, 0x21, 0x1E, 0x2, 0x25, 0x15, 0x37, 0x17, 0x37, 0x17, 0x36, 0x36, 0x35, 0x34, 0x26, 0x23, 0x1, 0xD8, 0x34, 0x38, 0x29, 0x38, 0x6B, 0x4, 0xEC, 0x91, 0xCD, 0x5A, 0x81, 0xB1, 0x81, 0x2C, 0x98, 0xD6, 0xFE, 0xC3, 0xFE, 0xF3, 0x13, 0xA2, 0x6A, 0x1, 0x8, 0x7D, 0x8A, 0xA9, 0xAD, 0x9A, 0xC6, 0x96, 0x1, 0x8E, 0xC9, 0xE4, 0x5C, 0xFC, 0x69, 0x5D, 0x77, 0xC6, 0x94, 0x4D, 0x30, 0x84, 0xA1, 0x4, 0x3A, 0x4C, 0x31, 0x3F, 0x33, 0x2C, 0x5D, 0xFE, 0x99, 0x86, 0xA6, 0x4D, 0x82, 0x7A, 0x92, 0x10, 0xA, 0x98, 0x8E, 0xB4, 0xC6, 0xC8, 0x3A, 0xD4, 0x56, 0x1, 0x7, 0x8F, 0x80, 0x78, 0x98, 0xD1, 0x87, 0x12, 0x1, 0x6E, 0xA6, 0x60, 0xB8, 0x1E, 0x85, 0x78, 0xAB, 0xE, 0x63, 0x30, 0x52, 0x5F, 0x0, 0x1, 0x0, 0x50, 0x0, 0x0, 0x5, 0x10, 0x4, 0x3A, 0x0, 0x17, 0x0, 0x0, 0x21, 0x23, 0x35, 0x12, 0x0, 0x37, 0x35, 0x33, 0x15, 0x16, 0x0, 0x11, 0x15, 0x23, 0x35, 0x26, 0x26, 0x27, 0x11, 0x23, 0x11, 0x6, 0x6, 0x15, 0x1, 0x42, 0xF2, 0x2, 0x1, 0xD, 0xD7, 0xF2, 0xDD, 0x1, 0xB, 0xF3, 0x1, 0x81, 0x73, 0xF2, 0x71, 0x83, 0xB8, 0x1, 0x1F, 0x1, 0x6B, 0x29, 0xCF, 0xCF, 0x28, 0xFE, 0x91, 0xFE, 0xDB, 0xAF, 0xB8, 0xC4, 0xF3, 0x29, 0xFD, 0x68, 0x2, 0x97, 0x2A, 0xF5, 0xC7, 0x0, 0x2, 0x0, 0x29, 0x0, 0x0, 0x5, 0x34, 0x5, 0xB0, 0x0, 0x8, 0x0, 0x1F, 0x0, 0x0, 0x1, 0x11, 0x21, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x13, 0x21, 0x15, 0x23, 0x35, 0x23, 0x35, 0x33, 0x35, 0x23, 0x35, 0x33, 0x11, 0x21, 0x32, 0x0, 0x15, 0x14, 0x4, 0x23, 0x21, 0x15, 0x21, 0x1, 0xF2, 0x1, 0x2D, 0x94, 0x83, 0x81, 0x92, 0x11, 0xFE, 0xBE, 0xFC, 0xCD, 0xCD, 0xCD, 0xCD, 0x2, 0x2C, 0xFD, 0x1, 0x15, 0xFE, 0xE9, 0xFB, 0xFE, 0xD0, 0x1, 0x42, 0x4, 0xE4, 0xFE, 0x4, 0x8A, 0x72, 0x62, 0x9E, 0xFC, 0x3, 0xE7, 0xE7, 0xCB, 0x6B, 0xCB, 0x2, 0xC8, 0xFE, 0xFE, 0xC8, 0xD8, 0xF1, 0x6B, 0x0, 0x1, 0x0, 0x66, 0x0, 0x0, 0x5, 0x1F, 0x5, 0xC4, 0x0, 0x25, 0x0, 0x0, 0x21, 0x21, 0x35, 0x33, 0x26, 0x26, 0x35, 0x34, 0x12, 0x37, 0x35, 0x33, 0x15, 0x37, 0x17, 0x35, 0x33, 0x15, 0x16, 0x12, 0x15, 0x23, 0x10, 0x27, 0x11, 0x23, 0x11, 0x27, 0x7, 0x11, 0x23, 0x11, 0x6, 0x11, 0x14, 0x16, 0x33, 0x21, 0x5, 0x15, 0xFB, 0x53, 0xB4, 0x56, 0x60, 0xCC, 0xAC, 0xA8, 0x3C, 0x3D, 0xA8, 0xAE, 0xCA, 0xF0, 0x88, 0xA8, 0x3D, 0x3C, 0xA8, 0x88, 0xC5, 0xA9, 0x2, 0x51, 0xC3, 0x57, 0xF1, 0x94, 0xE9, 0x1, 0x3B, 0x3F, 0xC2, 0x9D, 0x2, 0x2, 0x9D, 0xC1, 0x40, 0xFE, 0xC1, 0xEC, 0x1, 0xF, 0x6E, 0xFE, 0x83, 0x1, 0xC1, 0x4, 0x4, 0xFE, 0x3F, 0x1, 0x7E, 0x6E, 0xFE, 0xF8, 0xE3, 0xFA, 0xFF, 0xFF, 0xFB, 0x5B, 0x5, 0x8, 0xFF, 0xF9, 0x6, 0x15, 0x0, 0x27, 0x0, 0x13, 0xFA, 0xD3, 0x5, 0x14, 0x0, 0x27, 0x0, 0x13, 0xFC, 0x9D, 0x5, 0x14, 0x0, 0x7, 0x0, 0x13, 0xFE, 0x56, 0x5, 0x14, 0xFF, 0xFF, 0xFA, 0x85, 0x5, 0x8, 0x0, 0xD5, 0x6, 0x15, 0x0, 0x27, 0x0, 0x13, 0xF9, 0xFD, 0x5, 0x14, 0x0, 0x27, 0x0, 0x13, 0xFB, 0xC7, 0x5, 0x14, 0x0, 0x27, 0x0, 0x13, 0xFD, 0x80, 0x5, 0x14, 0x0, 0x7, 0x0, 0x13, 0xFF, 0x32, 0x5, 0x14, 0xFF, 0xFF, 0xFB, 0x5B, 0xFE, 0x0, 0xFF, 0xF9, 0xFF, 0xD, 0x0, 0x27, 0x0, 0x13, 0xFA, 0xD3, 0xFE, 0xC, 0x0, 0x27, 0x0, 0x13, 0xFC, 0x9D, 0xFE, 0xC, 0x0, 0x7, 0x0, 0x13, 0xFE, 0x56, 0xFE, 0xC, 0x0, 0x1, 0xFC, 0x54, 0x4, 0xDF, 0xFF, 0x3F, 0x7, 0xD7, 0x0, 0x11, 0x0, 0x0, 0x1, 0x37, 0x7, 0x27, 0x37, 0x27, 0x37, 0x17, 0x27, 0x33, 0x7, 0x37, 0x17, 0x7, 0x17, 0x7, 0x27, 0x17, 0xFD, 0x73, 0x9, 0xD0, 0x57, 0xD9, 0xDA, 0x57, 0xD0, 0x9, 0xAF, 0xA, 0xD0, 0x58, 0xD9, 0xD9, 0x57, 0xD0, 0x9, 0x4, 0xDF, 0xF5, 0x83, 0x97, 0x72, 0x73, 0x97, 0x82, 0xF5, 0xF5, 0x83, 0x97, 0x72, 0x73, 0x98, 0x83, 0xF5, 0x0, 0x4, 0x0, 0x6A, 0xFF, 0xEC, 0x5, 0xB2, 0x5, 0xC0, 0x0, 0x3, 0x0, 0xB, 0x0, 0x27, 0x0, 0x42, 0x0, 0x0, 0x1, 0x1, 0x27, 0x1, 0x1, 0x32, 0x37, 0x35, 0x23, 0x6, 0x15, 0x14, 0x17, 0x26, 0x27, 0x6, 0x23, 0x22, 0x26, 0x35, 0x34, 0x36, 0x33, 0x33, 0x35, 0x34, 0x23, 0x22, 0x7, 0x23, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x11, 0x14, 0x17, 0x15, 0x1, 0x22, 0x26, 0x35, 0x35, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x23, 0x34, 0x26, 0x22, 0x6, 0x15, 0x15, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x33, 0x14, 0x6, 0x4, 0xCB, 0xFD, 0x39, 0x7D, 0x2, 0xC7, 0xFD, 0x20, 0x56, 0x2E, 0x4E, 0x95, 0xF9, 0xA, 0x6, 0x47, 0x6B, 0x63, 0x79, 0x9E, 0x8E, 0x5C, 0x6C, 0x61, 0xB, 0x9D, 0x97, 0x7B, 0x6E, 0x9A, 0x19, 0x1, 0xE4, 0x8B, 0x97, 0x97, 0x89, 0x8A, 0x96, 0xA9, 0x3A, 0x7A, 0x3A, 0x3C, 0x3D, 0x3C, 0x39, 0xA9, 0x94, 0x4, 0xDF, 0xFB, 0x8E, 0x49, 0x4, 0x72, 0xFE, 0x77, 0x3A, 0x78, 0x2, 0x61, 0x4F, 0x77, 0x14, 0x25, 0x45, 0x69, 0x58, 0x6B, 0x73, 0x14, 0x6D, 0x4B, 0x4D, 0x82, 0x72, 0x78, 0xFE, 0xE9, 0x5A, 0x33, 0xA, 0xFC, 0xC4, 0xB1, 0x7A, 0x4D, 0x7C, 0xB1, 0x9C, 0x6B, 0x2D, 0x48, 0x5E, 0x3D, 0x4D, 0x3B, 0x5E, 0x4B, 0x29, 0x6A, 0x9C, 0x0, 0x4, 0x0, 0x6A, 0xFF, 0xEC, 0x5, 0xA6, 0x5, 0xC0, 0x0, 0x3, 0x0, 0xB, 0x0, 0x27, 0x0, 0x46, 0x0, 0x0, 0x1, 0x1, 0x27, 0x1, 0x1, 0x32, 0x37, 0x35, 0x23, 0x6, 0x15, 0x14, 0x17, 0x26, 0x27, 0x6, 0x23, 0x22, 0x26, 0x35, 0x34, 0x36, 0x33, 0x33, 0x35, 0x34, 0x23, 0x22, 0x7, 0x23, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x11, 0x14, 0x17, 0x15, 0x1, 0x22, 0x26, 0x35, 0x33, 0x16, 0x33, 0x32, 0x35, 0x34, 0x27, 0x26, 0x26, 0x35, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x23, 0x26, 0x23, 0x22, 0x15, 0x14, 0x16, 0x16, 0x15, 0x14, 0x6, 0x4, 0xCC, 0xFD, 0x39, 0x7E, 0x2, 0xC7, 0xFD, 0x20, 0x56, 0x2E, 0x4E, 0x95, 0xF9, 0xA, 0x6, 0x47, 0x6B, 0x63, 0x79, 0x9E, 0x8E, 0x5C, 0x6C, 0x61, 0xB, 0x9D, 0x97, 0x7B, 0x6E, 0x9A, 0x19, 0x1, 0xEF, 0x90, 0x8F, 0x9E, 0xC, 0x7A, 0x5F, 0x8B, 0x67, 0x78, 0x8D, 0x6E, 0x80, 0x92, 0xA3, 0x2, 0x66, 0x60, 0xF7, 0x74, 0x8B, 0x4, 0xDF, 0xFB, 0x8E, 0x49, 0x4, 0x72, 0xFE, 0x77, 0x3A, 0x78, 0x2, 0x61, 0x4F, 0x77, 0x14, 0x25, 0x45, 0x69, 0x58, 0x6B, 0x73, 0x14, 0x6D, 0x4B, 0x4D, 0x82, 0x72, 0x78, 0xFE, 0xE9, 0x5A, 0x33, 0xA, 0xFC, 0xC4, 0x8A, 0x50, 0x5A, 0x3D, 0x3A, 0x1F, 0x17, 0x5F, 0x55, 0x57, 0x6C, 0x77, 0x58, 0x4F, 0x3F, 0x34, 0x37, 0x5C, 0x58, 0x5E, 0x68, 0x0, 0x3, 0x0, 0x28, 0xFF, 0xEC, 0x6, 0xD3, 0x5, 0xC5, 0x0, 0x9, 0x0, 0x15, 0x0, 0x31, 0x0, 0x0, 0x12, 0x36, 0x33, 0x32, 0x16, 0x14, 0x6, 0x23, 0x22, 0x26, 0x37, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x1, 0x33, 0x6, 0x0, 0x21, 0x20, 0x0, 0x11, 0x35, 0x10, 0x0, 0x21, 0x20, 0x0, 0x17, 0x23, 0x26, 0x26, 0x23, 0x22, 0x6, 0x7, 0x15, 0x14, 0x12, 0x33, 0x32, 0x36, 0x28, 0x9C, 0x6C, 0x6B, 0x99, 0x99, 0x6B, 0x6C, 0x9C, 0x8B, 0x4A, 0x33, 0x34, 0x46, 0x46, 0x34, 0x33, 0x4A, 0x5, 0x23, 0xFC, 0x13, 0xFE, 0xE5, 0xFE, 0xF4, 0xFE, 0xF3, 0xFE, 0xC2, 0x1, 0x44, 0x1, 0x12, 0x1, 0x6, 0x1, 0x14, 0x16, 0xFC, 0x10, 0x87, 0x9D, 0xAB, 0xAC, 0x1, 0x9C, 0xB1, 0xA3, 0x89, 0x5, 0x26, 0x9F, 0x9F, 0xDC, 0x9B, 0x9B, 0x6E, 0x35, 0x47, 0x47, 0x35, 0x37, 0x49, 0x49, 0xFC, 0xEB, 0xD4, 0xFE, 0xE6, 0x1, 0x76, 0x1, 0x3B, 0x76, 0x1, 0x3A, 0x1, 0x77, 0xFE, 0xE5, 0xDA, 0x8C, 0x9D, 0xFA, 0xE4, 0x7D, 0xDA, 0xFE, 0xF5, 0x97, 0x0, 0x4, 0x0, 0x71, 0xFF, 0xEB, 0x5, 0x89, 0x5, 0xC5, 0x0, 0x1A, 0x0, 0x1E, 0x0, 0x2B, 0x0, 0x38, 0x0, 0x0, 0x1, 0x33, 0x14, 0x6, 0x23, 0x22, 0x26, 0x35, 0x35, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x23, 0x34, 0x26, 0x22, 0x6, 0x15, 0x15, 0x14, 0x16, 0x33, 0x32, 0x36, 0x25, 0x1, 0x27, 0x1, 0x3, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x15, 0x14, 0x6, 0x20, 0x26, 0x35, 0x33, 0x14, 0x16, 0x33, 0x32, 0x35, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x2, 0x8, 0xA9, 0x94, 0x8A, 0x8B, 0x97, 0x97, 0x89, 0x8B, 0x95, 0xA9, 0x3A, 0x7A, 0x3A, 0x3C, 0x3D, 0x3C, 0x39, 0x2, 0x83, 0xFD, 0x39, 0x7D, 0x2, 0xC7, 0xEE, 0xA2, 0x92, 0x95, 0xA0, 0x9F, 0xFE, 0xD8, 0xA2, 0xA9, 0x49, 0x44, 0x8A, 0x45, 0x47, 0x46, 0x45, 0x4, 0x26, 0x6A, 0x9C, 0xB1, 0x7A, 0x4D, 0x7C, 0xB1, 0x9C, 0x6B, 0x2D, 0x48, 0x5E, 0x3D, 0x4D, 0x3B, 0x5E, 0x4B, 0xE2, 0xFB, 0x8E, 0x49, 0x4, 0x72, 0xFC, 0x3D, 0x7B, 0xB1, 0xB1, 0x7B, 0x4E, 0x7B, 0xB1, 0xB1, 0x7B, 0x3C, 0x5E, 0xA9, 0x3F, 0x3C, 0x5E, 0x5E, 0x3C, 0x0, 0x3, 0x0, 0x6A, 0xFF, 0xF4, 0x5, 0x9F, 0x5, 0xC5, 0x0, 0x1A, 0x0, 0x1E, 0x0, 0x2F, 0x0, 0x0, 0x1, 0x22, 0x26, 0x35, 0x35, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x23, 0x34, 0x26, 0x22, 0x6, 0x15, 0x15, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x33, 0x14, 0x6, 0x1, 0x1, 0x27, 0x1, 0x1, 0x27, 0x6, 0x23, 0x22, 0x26, 0x35, 0x11, 0x33, 0x11, 0x14, 0x33, 0x32, 0x37, 0x11, 0x33, 0x11, 0x1, 0x8C, 0x8B, 0x97, 0x97, 0x89, 0x8B, 0x95, 0xA9, 0x3A, 0x7A, 0x3A, 0x3C, 0x3D, 0x3C, 0x39, 0xA9, 0x94, 0x2, 0x68, 0xFD, 0x39, 0x7D, 0x2, 0xC7, 0x1, 0x10, 0xD, 0x40, 0x70, 0x60, 0x73, 0xA4, 0x65, 0x50, 0x20, 0xA5, 0x3, 0x20, 0xB1, 0x7A, 0x4D, 0x7C, 0xB1, 0x9C, 0x6B, 0x2D, 0x48, 0x5E, 0x3D, 0x4D, 0x3B, 0x5E, 0x4B, 0x29, 0x6A, 0x9C, 0x1, 0xBF, 0xFB, 0x8E, 0x49, 0x4, 0x72, 0xFA, 0xD8, 0x54, 0x60, 0x78, 0x88, 0x1, 0x98, 0xFE, 0x7A, 0x8B, 0x47, 0x1, 0xCA, 0xFD, 0x74, 0x0, 0x3, 0x0, 0x28, 0x0, 0x0, 0x6, 0x43, 0x5, 0xC5, 0x0, 0x9, 0x0, 0x15, 0x0, 0x1F, 0x0, 0x0, 0x12, 0x36, 0x33, 0x32, 0x16, 0x14, 0x6, 0x23, 0x22, 0x26, 0x37, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x1, 0x21, 0x11, 0x23, 0x11, 0x21, 0x15, 0x21, 0x11, 0x21, 0x28, 0x9C, 0x6C, 0x6B, 0x99, 0x99, 0x6B, 0x6C, 0x9C, 0x8B, 0x4A, 0x33, 0x34, 0x46, 0x46, 0x34, 0x33, 0x4A, 0x5, 0x3A, 0xFD, 0xB7, 0xFD, 0x3, 0x9C, 0xFD, 0x61, 0x2, 0x49, 0x5, 0x26, 0x9F, 0x9F, 0xDC, 0x9B, 0x9B, 0x6E, 0x35, 0x47, 0x47, 0x35, 0x37, 0x49, 0x49, 0xFD, 0x7A, 0xFD, 0x97, 0x5, 0xB0, 0xCB, 0xFE, 0x4E, 0x0, 0x2, 0x0, 0x4C, 0xFF, 0xEB, 0x3, 0x91, 0x5, 0xF9, 0x0, 0x18, 0x0, 0x20, 0x0, 0x0, 0x5, 0x22, 0x26, 0x35, 0x35, 0x6, 0x23, 0x35, 0x32, 0x37, 0x11, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x15, 0x14, 0x2, 0x7, 0x15, 0x14, 0x16, 0x33, 0x3, 0x36, 0x35, 0x35, 0x34, 0x23, 0x22, 0x7, 0x2, 0xDB, 0xEB, 0xE3, 0x5D, 0x64, 0x67, 0x5A, 0xB5, 0x9B, 0x86, 0xAE, 0xCB, 0xBF, 0x5B, 0x79, 0xD4, 0xA5, 0x4C, 0x56, 0x3, 0x15, 0xF7, 0xCD, 0xD, 0x13, 0xBB, 0x18, 0x1, 0xDE, 0xC3, 0xDC, 0xB1, 0x9A, 0x2A, 0x9E, 0xFE, 0xA2, 0x6D, 0x4F, 0x7D, 0x8A, 0x2, 0x43, 0xA1, 0xEE, 0x17, 0x80, 0xB2, 0x0, 0x4, 0x0, 0x90, 0x0, 0x0, 0x7, 0xC3, 0x5, 0xC0, 0x0, 0xC, 0x0, 0x1A, 0x0, 0x24, 0x0, 0x28, 0x0, 0x0, 0x1, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x15, 0x14, 0x6, 0x20, 0x26, 0x35, 0x33, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x1, 0x11, 0x21, 0x1, 0x11, 0x23, 0x11, 0x21, 0x1, 0x11, 0x1, 0x15, 0x21, 0x35, 0x5, 0xE, 0xBB, 0x9F, 0xA1, 0xBA, 0xB9, 0xFE, 0xC0, 0xBC, 0xAF, 0x55, 0x58, 0x56, 0x54, 0x55, 0x57, 0x56, 0x55, 0xFE, 0xC6, 0xFE, 0xF5, 0xFE, 0xC, 0xF4, 0x1, 0xC, 0x1, 0xF5, 0x4, 0x6, 0xFD, 0x9F, 0x4, 0x60, 0x9B, 0xC5, 0xC5, 0x9B, 0x53, 0x9B, 0xC4, 0xC4, 0x9B, 0x59, 0x74, 0x74, 0x59, 0x53, 0x58, 0x74, 0x74, 0x58, 0x1, 0x50, 0xFA, 0x50, 0x4, 0xB, 0xFB, 0xF5, 0x5, 0xB0, 0xFB, 0xF3, 0x4, 0xD, 0xFC, 0x82, 0x95, 0x95, 0x0, 0x4, 0x0, 0x57, 0xFF, 0xEB, 0x5, 0xE2, 0x5, 0xC4, 0x0, 0xD, 0x0, 0x1B, 0x0, 0x24, 0x0, 0x2E, 0x0, 0x0, 0x4, 0x24, 0x2, 0x35, 0x34, 0x12, 0x24, 0x20, 0x4, 0x12, 0x15, 0x14, 0x2, 0x4, 0x26, 0x24, 0x12, 0x35, 0x34, 0x2, 0x24, 0x20, 0x4, 0x2, 0x15, 0x14, 0x12, 0x4, 0x13, 0x11, 0x33, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x3, 0x11, 0x23, 0x11, 0x21, 0x32, 0x16, 0x14, 0x6, 0x23, 0x2, 0x59, 0xFE, 0xBE, 0xC0, 0xC0, 0x1, 0x42, 0x1, 0x88, 0x1, 0x41, 0xC0, 0xC0, 0xFE, 0xBF, 0x22, 0x1, 0xB, 0x9E, 0x9E, 0xFE, 0xF5, 0xFE, 0xBC, 0xFE, 0xF5, 0x9F, 0x9F, 0x1, 0xB, 0x2B, 0xB7, 0x53, 0x4C, 0x4C, 0x53, 0xB7, 0x97, 0x1, 0x4E, 0x91, 0xA2, 0xA3, 0x90, 0x15, 0xC7, 0x1, 0x54, 0xD3, 0xD4, 0x1, 0x52, 0xC5, 0xC5, 0xFE, 0xAE, 0xD4, 0xD3, 0xFE, 0xAC, 0xC7, 0x7D, 0xA5, 0x1, 0x1C, 0xB0, 0xB1, 0x1, 0x19, 0xA4, 0xA4, 0xFE, 0xE7, 0xB1, 0xB0, 0xFE, 0xE4, 0xA5, 0x3, 0x8E, 0xFE, 0xF3, 0x4A, 0x38, 0x39, 0x52, 0xFE, 0x6C, 0xFE, 0xC7, 0x3, 0x52, 0x97, 0xF0, 0x92, 0x0, 0x2, 0x0, 0x95, 0x0, 0x0, 0x5, 0x4B, 0x5, 0xB0, 0x0, 0x8, 0x0, 0x20, 0x0, 0x0, 0x1, 0x11, 0x21, 0x32, 0x36, 0x35, 0x34, 0x26, 0x27, 0x3, 0x13, 0x27, 0x21, 0x11, 0x23, 0x11, 0x21, 0x32, 0x4, 0x15, 0x14, 0x6, 0x7, 0x17, 0x37, 0x5, 0x3, 0x13, 0x15, 0x21, 0x27, 0x7, 0x21, 0x1, 0x91, 0x1, 0x4, 0x88, 0x89, 0x80, 0x8D, 0x15, 0xDE, 0xA3, 0xFE, 0xD2, 0xFC, 0x2, 0x0, 0xFB, 0x1, 0x12, 0x8E, 0x7D, 0x4F, 0x64, 0x1, 0x1, 0xE1, 0xDE, 0xFE, 0xFA, 0x5C, 0x5D, 0xFE, 0xFB, 0x4, 0xE5, 0xFE, 0x17, 0x89, 0x68, 0x70, 0x87, 0x1, 0xFB, 0x28, 0x1, 0x38, 0xEC, 0xFD, 0xCF, 0x5, 0xB0, 0xE0, 0xD7, 0x92, 0xC6, 0x34, 0x6E, 0x8D, 0x1, 0xFE, 0xBA, 0xFE, 0xC8, 0xD, 0x86, 0x86, 0x0, 0x4, 0x0, 0x95, 0xFE, 0x98, 0x4, 0xDE, 0x6, 0xF4, 0x0, 0x5, 0x0, 0xB, 0x0, 0xE, 0x0, 0x24, 0x0, 0x0, 0x1, 0x11, 0x33, 0x13, 0x26, 0x23, 0x5, 0x34, 0x27, 0x3, 0x36, 0x36, 0x1, 0x13, 0x23, 0x9, 0x2, 0x23, 0x13, 0x23, 0x11, 0x21, 0x32, 0x17, 0x37, 0x27, 0x37, 0x5, 0x7, 0x16, 0x11, 0x14, 0x6, 0x7, 0x1, 0x15, 0x1, 0x91, 0xC1, 0xA2, 0x2B, 0x34, 0x1, 0x11, 0x21, 0x7D, 0x4F, 0x4F, 0xFD, 0xEB, 0x7D, 0x7D, 0x2, 0x3F, 0xFE, 0xE6, 0xFE, 0xCB, 0xAA, 0x79, 0xBB, 0x2, 0x0, 0x58, 0x4A, 0x1E, 0xC4, 0x4A, 0x1, 0x4F, 0x52, 0xCA, 0x8E, 0x7D, 0x1, 0x47, 0x4, 0xE5, 0xFE, 0x17, 0x1, 0xDF, 0xA, 0xF8, 0x53, 0x38, 0xFE, 0x95, 0x1A, 0x77, 0xFD, 0x21, 0x1, 0x72, 0xFD, 0xCF, 0x2, 0x1E, 0xFC, 0x7A, 0x1, 0x68, 0x5, 0xB0, 0xE, 0x59, 0x51, 0xA8, 0x9A, 0xEF, 0x6D, 0xFE, 0xFB, 0x92, 0xC6, 0x34, 0xFD, 0xA0, 0xD, 0x0, 0x2, 0x0, 0x65, 0x3, 0x8B, 0x4, 0xB3, 0x5, 0xB9, 0x0, 0xC, 0x0, 0x2B, 0x0, 0x0, 0x1, 0x3, 0x11, 0x23, 0x11, 0x33, 0x13, 0x13, 0x33, 0x11, 0x23, 0x11, 0x3, 0x25, 0x34, 0x26, 0x27, 0x26, 0x26, 0x35, 0x34, 0x36, 0x33, 0x32, 0x15, 0x23, 0x34, 0x22, 0x15, 0x14, 0x1E, 0x2, 0x15, 0x14, 0x6, 0x23, 0x22, 0x26, 0x35, 0x33, 0x16, 0x33, 0x32, 0x3, 0x80, 0x8C, 0x6E, 0x88, 0x91, 0x91, 0x83, 0x6F, 0x87, 0xFD, 0xF7, 0x2E, 0x44, 0x61, 0x68, 0x6F, 0x62, 0xD1, 0x6E, 0xC6, 0x24, 0xB5, 0x62, 0x77, 0x65, 0x5F, 0x82, 0x6E, 0x2, 0x71, 0x6E, 0x3, 0x95, 0x1, 0x5A, 0xFE, 0xA6, 0x2, 0x1B, 0xFE, 0x83, 0x1, 0x7D, 0xFD, 0xE5, 0x1, 0x4B, 0xFE, 0xB5, 0x91, 0x1B, 0x24, 0xF, 0x16, 0x49, 0x4C, 0x44, 0x56, 0xAA, 0x4E, 0x3E, 0x19, 0x20, 0x2C, 0x4C, 0x47, 0x48, 0x54, 0x54, 0x58, 0x4F, 0x0, 0x3, 0x0, 0x65, 0x3, 0x96, 0x5, 0x4B, 0x5, 0xB0, 0x0, 0x7, 0x0, 0xD, 0x0, 0x19, 0x0, 0x0, 0x1, 0x23, 0x11, 0x23, 0x11, 0x23, 0x35, 0x21, 0x1, 0x11, 0x33, 0x11, 0x33, 0x15, 0x21, 0x11, 0x21, 0x15, 0x23, 0x15, 0x33, 0x15, 0x23, 0x15, 0x33, 0x15, 0x1, 0xEB, 0x89, 0x76, 0x87, 0x1, 0x86, 0x2, 0x17, 0x76, 0xD3, 0xFC, 0xF6, 0x1, 0x48, 0xD3, 0xB1, 0xB1, 0xD3, 0x5, 0x51, 0xFE, 0x45, 0x1, 0xBB, 0x5F, 0xFD, 0xE6, 0x2, 0x1A, 0xFE, 0x45, 0x5F, 0x2, 0x1A, 0x5F, 0x78, 0x5F, 0x85, 0x5F, 0x0, 0x2, 0x0, 0x6E, 0x3, 0x95, 0x4, 0x57, 0x5, 0xB0, 0x0, 0x7, 0x0, 0x14, 0x0, 0x0, 0x1, 0x15, 0x23, 0x11, 0x23, 0x11, 0x23, 0x35, 0x1, 0x11, 0x3, 0x23, 0x3, 0x11, 0x23, 0x11, 0x33, 0x13, 0x13, 0x33, 0x11, 0x1, 0xF9, 0x89, 0x76, 0x8C, 0x3, 0x7B, 0x7D, 0x3D, 0x7D, 0x6E, 0x88, 0x81, 0x85, 0x85, 0x5, 0xB0, 0x5F, 0xFE, 0x45, 0x1, 0xBB, 0x5F, 0xFD, 0xE5, 0x1, 0x74, 0xFE, 0x8C, 0x1, 0x74, 0xFE, 0x8C, 0x2, 0x1B, 0xFE, 0x83, 0x1, 0x7D, 0xFD, 0xE5, 0x0, 0x1, 0x0, 0x12, 0xFE, 0x98, 0x5, 0x1D, 0x6, 0xF4, 0x0, 0x10, 0x0, 0x0, 0x21, 0x27, 0x3, 0x23, 0x1, 0x1, 0x21, 0x13, 0x13, 0x27, 0x37, 0x5, 0x1, 0x17, 0x1, 0x21, 0x1, 0x2, 0x1C, 0x3D, 0xB7, 0xAA, 0x1, 0x8, 0xFE, 0x8C, 0x1, 0x15, 0xDA, 0xFE, 0xC3, 0x49, 0x1, 0x4F, 0xFE, 0x82, 0x40, 0x1, 0x71, 0x1, 0x16, 0xFD, 0xF4, 0xAB, 0xFD, 0xED, 0x3, 0xB, 0x4, 0xD, 0xFD, 0x5D, 0x2, 0xEE, 0x51, 0xA8, 0x9A, 0xFB, 0xAB, 0xC7, 0x4, 0x72, 0xFA, 0x50, 0x0, 0x1, 0x0, 0x51, 0xFE, 0x75, 0x4, 0x42, 0x5, 0xB0, 0x0, 0x22, 0x0, 0x0, 0x1, 0x22, 0x26, 0x26, 0x35, 0x33, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x23, 0x35, 0x1, 0x21, 0x35, 0x33, 0x1, 0x21, 0x35, 0x21, 0x17, 0x1, 0x21, 0x17, 0x1, 0x16, 0x16, 0x15, 0x14, 0x4, 0x2, 0x3D, 0x77, 0xE3, 0x92, 0xFC, 0x82, 0x6E, 0x80, 0x88, 0x95, 0x93, 0x8E, 0x1, 0x30, 0xFE, 0xCF, 0x1, 0x1, 0x2D, 0xFD, 0xBE, 0x3, 0x99, 0x1, 0xFE, 0xAA, 0x1, 0x55, 0x1, 0xFE, 0xA3, 0xBB, 0xD0, 0xFE, 0xDA, 0xFE, 0x75, 0x58, 0xBB, 0x95, 0x58, 0x87, 0x81, 0x69, 0x92, 0x79, 0xAE, 0x1, 0x1D, 0xCA, 0x1, 0x1E, 0xCA, 0x9B, 0xFE, 0xB3, 0x9D, 0xFE, 0xAE, 0x1D, 0xDE, 0xBD, 0xCC, 0xE0, 0xFF, 0xFF, 0x0, 0x95, 0x0, 0x0, 0x5, 0x18, 0x5, 0xB0, 0x0, 0x6, 0x0, 0x30, 0x0, 0x0, 0x0, 0x3, 0x0, 0x12, 0x0, 0x0, 0x5, 0x43, 0x6, 0xEF, 0x0, 0xB, 0x0, 0xE, 0x0, 0x1E, 0x0, 0x0, 0x1, 0x14, 0x16, 0x17, 0x33, 0x36, 0x36, 0x35, 0x34, 0x26, 0x22, 0x6, 0x1, 0x3, 0x3, 0x1, 0x3, 0x21, 0x3, 0x21, 0x1, 0x26, 0x35, 0x34, 0x36, 0x32, 0x16, 0x15, 0x14, 0x7, 0x1, 0x2, 0x39, 0x35, 0x2C, 0x1F, 0x2B, 0x35, 0x3E, 0x64, 0x3E, 0x1, 0x45, 0xD4, 0xD3, 0x2, 0x64, 0x77, 0xFD, 0xCC, 0x76, 0xFE, 0xF8, 0x2, 0x11, 0x57, 0x7E, 0xBE, 0x7E, 0x57, 0x2, 0x14, 0x6, 0x1F, 0x28, 0x41, 0x6, 0x6, 0x40, 0x29, 0x2D, 0x44, 0x44, 0xFB, 0xD3, 0x2, 0x5E, 0xFD, 0xA2, 0xFD, 0xE1, 0x1, 0x54, 0xFE, 0xAC, 0x5, 0x79, 0x3C, 0x6A, 0x56, 0x7A, 0x7A, 0x56, 0x69, 0x3C, 0xFA, 0x86, 0x0, 0x2, 0x0, 0x97, 0xFF, 0xEC, 0x4, 0x92, 0x4, 0x4E, 0x0, 0x13, 0x0, 0x1A, 0x0, 0x0, 0x25, 0x17, 0x6, 0x23, 0x22, 0x26, 0x26, 0x10, 0x36, 0x36, 0x33, 0x32, 0x0, 0x17, 0x15, 0x21, 0x11, 0x16, 0x33, 0x32, 0x3, 0x22, 0x7, 0x11, 0x21, 0x11, 0x26, 0x4, 0x13, 0x2, 0xB8, 0xBA, 0x91, 0xEE, 0x8D, 0x99, 0xF0, 0x83, 0xCC, 0x1, 0x1D, 0x6, 0xFD, 0x0, 0x76, 0x9B, 0xC6, 0xC6, 0x95, 0x7C, 0x2, 0x1C, 0x73, 0xC6, 0x68, 0x72, 0x98, 0xFF, 0x1, 0x34, 0xFF, 0x98, 0xFE, 0xD4, 0xDF, 0x41, 0xFE, 0xB8, 0x6E, 0x3, 0xA4, 0x7A, 0xFE, 0xEB, 0x1, 0x1E, 0x71, 0x0, 0x1, 0x0, 0x35, 0x0, 0x0, 0x3, 0xD1, 0x5, 0xB0, 0x0, 0x9, 0x0, 0x0, 0x33, 0x35, 0x21, 0x11, 0x21, 0x35, 0x21, 0x11, 0x33, 0x11, 0x35, 0x2, 0xA0, 0xFD, 0xB6, 0x2, 0x4A, 0xFC, 0xCB, 0x1, 0xB2, 0xCA, 0x2, 0x69, 0xFA, 0x50, 0x0, 0x4, 0x0, 0x65, 0x3, 0x96, 0x5, 0xE4, 0x5, 0xB0, 0x0, 0x2, 0x0, 0xC, 0x0, 0x18, 0x0, 0x20, 0x0, 0x0, 0x1, 0x27, 0x7, 0x27, 0x23, 0x15, 0x23, 0x11, 0x21, 0x15, 0x23, 0x15, 0x33, 0x25, 0x17, 0x37, 0x33, 0x3, 0x13, 0x23, 0x27, 0x7, 0x23, 0x13, 0x3, 0x3, 0x27, 0x23, 0x7, 0x23, 0x13, 0x33, 0x13, 0x2, 0xFF, 0x50, 0x50, 0xD4, 0xB1, 0x75, 0x1, 0x48, 0xD3, 0xB1, 0x2, 0xF5, 0x6E, 0x6F, 0x83, 0xAD, 0xB1, 0x82, 0x73, 0x72, 0x82, 0xB0, 0xAC, 0xB6, 0x28, 0xE4, 0x28, 0x74, 0xD5, 0x72, 0xD4, 0x4, 0x5C, 0xD7, 0xD7, 0x11, 0xD7, 0x2, 0x1A, 0x5F, 0x85, 0xE3, 0xBA, 0xBA, 0xFE, 0xF6, 0xFE, 0xF1, 0xBF, 0xBF, 0x1, 0xF, 0x1, 0xA, 0xFD, 0xE7, 0x6B, 0x6B, 0x2, 0x19, 0xFD, 0xE7, 0x0, 0x4, 0x0, 0x6A, 0xFF, 0xEC, 0x7, 0xA0, 0x6, 0x88, 0x0, 0x2, 0x0, 0x6, 0x0, 0xE, 0x0, 0x32, 0x0, 0x0, 0x1, 0x3, 0x3, 0x25, 0x1, 0x27, 0x1, 0x1, 0x27, 0x21, 0x7, 0x23, 0x1, 0x33, 0x1, 0x1, 0x34, 0x26, 0x27, 0x26, 0x26, 0x35, 0x34, 0x36, 0x33, 0x32, 0x16, 0x17, 0x23, 0x26, 0x26, 0x23, 0x22, 0x15, 0x14, 0x16, 0x17, 0x16, 0x16, 0x15, 0x14, 0x6, 0x23, 0x22, 0x26, 0x35, 0x33, 0x16, 0x16, 0x33, 0x32, 0x2, 0x82, 0x7A, 0x7D, 0x4, 0x4E, 0xFD, 0x39, 0x7D, 0x2, 0xC7, 0xFD, 0x98, 0x43, 0xFE, 0xAA, 0x43, 0xAE, 0x1, 0x52, 0x97, 0x1, 0x4F, 0x3, 0x59, 0x4E, 0x66, 0x98, 0x9F, 0xA7, 0x8B, 0xA7, 0xA2, 0x8, 0xA2, 0x1, 0x54, 0x5B, 0x8C, 0x63, 0x53, 0xA3, 0x92, 0xA4, 0x9C, 0xA3, 0xC4, 0xA3, 0xB, 0x67, 0x52, 0x9B, 0x4, 0x66, 0x1, 0x60, 0xFE, 0xA0, 0x79, 0xFB, 0x8E, 0x49, 0x4, 0x72, 0xFD, 0xF8, 0xBF, 0xBF, 0x3, 0x68, 0xFC, 0x98, 0xFD, 0xBE, 0x30, 0x3B, 0x23, 0x34, 0x78, 0x71, 0x62, 0x88, 0xA3, 0x6F, 0x2D, 0x5E, 0x66, 0x32, 0x3F, 0x1C, 0x37, 0x76, 0x6C, 0x6A, 0x8A, 0xA7, 0x7D, 0x58, 0x45, 0x0, 0x4, 0x0, 0x57, 0xFF, 0xEC, 0x7, 0xB8, 0x3, 0x80, 0x0, 0x33, 0x0, 0x3D, 0x0, 0x47, 0x0, 0x51, 0x0, 0x0, 0x5, 0x22, 0x27, 0x6, 0x20, 0x27, 0x6, 0x20, 0x27, 0x6, 0x23, 0x35, 0x32, 0x37, 0x26, 0x35, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x7, 0x16, 0x32, 0x37, 0x26, 0x35, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x7, 0x16, 0x32, 0x37, 0x26, 0x35, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x7, 0x16, 0x33, 0x1, 0x14, 0x17, 0x36, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x5, 0x14, 0x17, 0x36, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x5, 0x14, 0x17, 0x36, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x7, 0xB8, 0xAE, 0x8D, 0x8D, 0xFE, 0xA4, 0x8D, 0x8D, 0xFE, 0xA4, 0x8C, 0x8D, 0xAE, 0x55, 0x41, 0x7B, 0x75, 0xAA, 0xAB, 0x75, 0x7B, 0x41, 0xAA, 0x42, 0x7B, 0x75, 0xAA, 0xAB, 0x75, 0x7B, 0x41, 0xAA, 0x42, 0x7B, 0x75, 0xAA, 0xAB, 0x75, 0x7B, 0x41, 0x55, 0xF9, 0x91, 0x49, 0x48, 0x23, 0x26, 0x25, 0x23, 0x2, 0x76, 0x48, 0x49, 0x23, 0x26, 0x25, 0x23, 0x2, 0x76, 0x48, 0x49, 0x23, 0x26, 0x25, 0x23, 0x14, 0x4C, 0x4C, 0x4C, 0x4C, 0x4C, 0x4C, 0xC3, 0x11, 0x99, 0xDB, 0x88, 0xC4, 0xC4, 0x88, 0xDB, 0x99, 0x11, 0x11, 0x99, 0xDB, 0x88, 0xC4, 0xC4, 0x88, 0xDB, 0x99, 0x11, 0x11, 0x99, 0xDB, 0x88, 0xC4, 0xC4, 0x88, 0xDB, 0x99, 0x11, 0x1, 0x84, 0xB0, 0x5D, 0x5E, 0xAF, 0x3B, 0x4F, 0x4F, 0x3B, 0xAF, 0x5E, 0x5D, 0xB0, 0x3B, 0x4F, 0x4F, 0x3B, 0xAF, 0x5E, 0x5D, 0xB0, 0x3B, 0x4F, 0x4F, 0xFF, 0xFF, 0x0, 0x93, 0x0, 0x0, 0x6, 0xA6, 0x5, 0xAC, 0x0, 0x27, 0x7, 0x42, 0x0, 0x12, 0x2, 0x98, 0x0, 0x27, 0x7, 0xA1, 0x3, 0xF8, 0x0, 0x0, 0x0, 0x7, 0x4, 0x83, 0x1, 0x4A, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x93, 0xFF, 0xF7, 0x6, 0x3B, 0x5, 0xAC, 0x0, 0x27, 0x7, 0x42, 0x0, 0x12, 0x2, 0x98, 0x0, 0x27, 0x7, 0xA3, 0x3, 0x97, 0x0, 0x0, 0x0, 0x7, 0x4, 0x83, 0x1, 0x4A, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x93, 0xFF, 0xF5, 0x8, 0x23, 0x5, 0xAC, 0x0, 0x27, 0x7, 0x42, 0x0, 0x12, 0x2, 0x98, 0x0, 0x27, 0x7, 0x43, 0x5, 0x79, 0x0, 0x0, 0x0, 0x27, 0x4, 0x83, 0x1, 0x4B, 0x0, 0x0, 0x0, 0x7, 0x7, 0x42, 0x3, 0x58, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x93, 0xFF, 0xF5, 0x6, 0x57, 0x5, 0xAC, 0x0, 0x27, 0x7, 0x42, 0x0, 0x12, 0x2, 0x98, 0x0, 0x27, 0x7, 0x9D, 0x3, 0xAE, 0x0, 0x0, 0x0, 0x7, 0x4, 0x83, 0x1, 0x4A, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x58, 0xFF, 0xF5, 0x7, 0x7, 0x5, 0xB8, 0x0, 0x27, 0x7, 0x41, 0x0, 0x1C, 0x2, 0x98, 0x0, 0x27, 0x4, 0x83, 0x1, 0xFD, 0x0, 0x0, 0x0, 0x7, 0x7, 0x9D, 0x4, 0x5E, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x93, 0xFF, 0xF5, 0x6, 0x51, 0x5, 0xAC, 0x0, 0x27, 0x7, 0x42, 0x0, 0x12, 0x2, 0x98, 0x0, 0x27, 0x7, 0x9F, 0x3, 0xA3, 0x0, 0x0, 0x0, 0x7, 0x4, 0x83, 0x1, 0x4A, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x58, 0xFF, 0xF5, 0x7, 0x4, 0x5, 0xB8, 0x0, 0x27, 0x7, 0x41, 0x0, 0x1C, 0x2, 0x98, 0x0, 0x27, 0x4, 0x83, 0x1, 0xFC, 0x0, 0x0, 0x0, 0x7, 0x7, 0x9F, 0x4, 0x56, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x5B, 0xFF, 0xF5, 0x6, 0xD7, 0x5, 0xB8, 0x0, 0x27, 0x7, 0x9D, 0x0, 0x24, 0x2, 0x98, 0x0, 0x27, 0x4, 0x83, 0x1, 0xA6, 0x0, 0x0, 0x0, 0x7, 0x7, 0x9F, 0x4, 0x29, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x52, 0xFF, 0xF5, 0x7, 0x3A, 0x5, 0xAD, 0x0, 0x27, 0x7, 0x9E, 0x0, 0x1D, 0x2, 0x98, 0x0, 0x27, 0x4, 0x83, 0x2, 0xC, 0x0, 0x0, 0x0, 0x7, 0x7, 0x9F, 0x4, 0x8C, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x93, 0xFF, 0xF5, 0x6, 0x29, 0x5, 0xAC, 0x0, 0x27, 0x7, 0x42, 0x0, 0x12, 0x2, 0x98, 0x0, 0x27, 0x7, 0xA0, 0x3, 0x70, 0x0, 0x0, 0x0, 0x7, 0x4, 0x83, 0x1, 0x49, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x51, 0xFF, 0xF5, 0x6, 0x76, 0x5, 0xAD, 0x0, 0x27, 0x7, 0x9F, 0x0, 0x2, 0x2, 0x98, 0x0, 0x27, 0x7, 0xA0, 0x3, 0xBD, 0x0, 0x0, 0x0, 0x7, 0x4, 0x83, 0x1, 0x96, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x59, 0xFF, 0xF5, 0x5, 0xCB, 0x5, 0x9A, 0x0, 0x27, 0x7, 0x42, 0xFF, 0xD8, 0x2, 0x86, 0x0, 0x27, 0x4, 0x83, 0x0, 0xFB, 0x0, 0x0, 0x0, 0x7, 0x7, 0xA2, 0x3, 0x21, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x54, 0xFF, 0xF5, 0x6, 0x68, 0x5, 0xB4, 0x0, 0x27, 0x7, 0x9D, 0x0, 0x1D, 0x2, 0x94, 0x0, 0x27, 0x4, 0x83, 0x1, 0xA8, 0x0, 0x0, 0x0, 0x7, 0x7, 0xA2, 0x3, 0xBE, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x5B, 0xFF, 0xF5, 0x6, 0x5C, 0x5, 0xA8, 0x0, 0x27, 0x7, 0x9F, 0x0, 0xC, 0x2, 0x93, 0x0, 0x27, 0x4, 0x83, 0x1, 0x8C, 0x0, 0x0, 0x0, 0x7, 0x7, 0xA2, 0x3, 0xB2, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x59, 0xFF, 0xF5, 0x6, 0x1A, 0x5, 0xA3, 0x0, 0x27, 0x7, 0xA1, 0x0, 0x22, 0x2, 0x8E, 0x0, 0x27, 0x4, 0x83, 0x1, 0x33, 0x0, 0x0, 0x0, 0x7, 0x7, 0xA2, 0x3, 0x70, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x93, 0x0, 0x6D, 0x4, 0xBC, 0x5, 0xAC, 0x0, 0x27, 0x7, 0x42, 0x0, 0x12, 0x2, 0x98, 0x0, 0x7, 0x4, 0x83, 0x1, 0x4A, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0xA4, 0x0, 0x0, 0x1, 0xA0, 0x5, 0xB0, 0x0, 0x6, 0x0, 0x2E, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0xA4, 0x0, 0x0, 0x3, 0xBD, 0x5, 0xB0, 0x0, 0x26, 0x0, 0x2E, 0x0, 0x0, 0x0, 0x7, 0x0, 0x2E, 0x2, 0x1D, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0xA4, 0x0, 0x0, 0x5, 0xDB, 0x5, 0xB0, 0x0, 0x26, 0x0, 0x2E, 0x0, 0x0, 0x0, 0x27, 0x0, 0x2E, 0x2, 0x1D, 0x0, 0x0, 0x0, 0x7, 0x0, 0x2E, 0x4, 0x3B, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0xA4, 0x0, 0x0, 0x7, 0x56, 0x5, 0xB0, 0x0, 0x26, 0x0, 0x2E, 0x0, 0x0, 0x0, 0x7, 0x0, 0x3B, 0x2, 0x39, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x12, 0x0, 0x0, 0x5, 0x1D, 0x5, 0xB0, 0x0, 0x6, 0x0, 0x3B, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x12, 0x0, 0x0, 0x6, 0xC5, 0x5, 0xB0, 0x0, 0x26, 0x0, 0x3B, 0x0, 0x0, 0x0, 0x7, 0x0, 0x2E, 0x5, 0x25, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x12, 0x0, 0x0, 0x8, 0xE2, 0x5, 0xB0, 0x0, 0x26, 0x0, 0x3B, 0x0, 0x0, 0x0, 0x27, 0x0, 0x2E, 0x5, 0x25, 0x0, 0x0, 0x0, 0x7, 0x0, 0x2E, 0x7, 0x42, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x12, 0x0, 0x0, 0xA, 0xFF, 0x5, 0xB0, 0x0, 0x26, 0x0, 0x3B, 0x0, 0x0, 0x0, 0x27, 0x0, 0x2E, 0x5, 0x25, 0x0, 0x0, 0x0, 0x27, 0x0, 0x2E, 0x7, 0x42, 0x0, 0x0, 0x0, 0x7, 0x0, 0x2E, 0x9, 0x5F, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0xA4, 0x0, 0x0, 0x7, 0x31, 0x5, 0xB0, 0x0, 0x26, 0x0, 0x2E, 0x0, 0x0, 0x0, 0x7, 0x0, 0x3D, 0x2, 0x47, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x28, 0x0, 0x0, 0x4, 0xE9, 0x5, 0xB0, 0x0, 0x6, 0x0, 0x3D, 0xFF, 0x0, 0xFF, 0xFF, 0x0, 0x28, 0x0, 0x0, 0x6, 0xBC, 0x5, 0xB0, 0x0, 0x26, 0x0, 0x3D, 0xFF, 0x0, 0x0, 0x7, 0x0, 0x2E, 0x5, 0x1C, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x28, 0x0, 0x0, 0x8, 0xD9, 0x5, 0xB0, 0x0, 0x26, 0x0, 0x3D, 0xFF, 0x0, 0x0, 0x27, 0x0, 0x2E, 0x5, 0x1C, 0x0, 0x0, 0x0, 0x7, 0x0, 0x2E, 0x7, 0x39, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0xA4, 0x0, 0x0, 0x4, 0x36, 0x5, 0xB0, 0x0, 0x6, 0x0, 0x31, 0xF, 0x0, 0xFF, 0xFF, 0x0, 0x65, 0xFF, 0xEC, 0x4, 0xEB, 0x5, 0xC4, 0x0, 0x6, 0x0, 0x28, 0xFF, 0x0, 0xFF, 0xFF, 0x0, 0xA4, 0x0, 0x0, 0x4, 0xE1, 0x5, 0xB0, 0x0, 0x6, 0x0, 0x29, 0xF, 0x0, 0xFF, 0xFF, 0x0, 0xA4, 0x0, 0x0, 0x6, 0x7A, 0x5, 0xB0, 0x0, 0x6, 0x0, 0x32, 0xF, 0x0, 0xFF, 0xFF, 0x0, 0x7E, 0x0, 0x0, 0x1, 0x92, 0x5, 0xD5, 0x0, 0x6, 0x0, 0x4E, 0x1, 0x0, 0xFF, 0xFF, 0x0, 0x7E, 0x0, 0x0, 0x3, 0x9E, 0x5, 0xD5, 0x0, 0x26, 0x0, 0x4E, 0x1, 0x0, 0x0, 0x7, 0x0, 0x4E, 0x2, 0xD, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x7E, 0x0, 0x0, 0x5, 0xA9, 0x5, 0xD5, 0x0, 0x26, 0x0, 0x4E, 0x1, 0x0, 0x0, 0x27, 0x0, 0x4E, 0x2, 0xD, 0x0, 0x0, 0x0, 0x7, 0x0, 0x4E, 0x4, 0x18, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x7E, 0x0, 0x0, 0x5, 0xE8, 0x5, 0xD5, 0x0, 0x26, 0x0, 0x4E, 0x1, 0x0, 0x0, 0x7, 0x0, 0x5B, 0x2, 0xD, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x1A, 0x0, 0x0, 0x3, 0xDE, 0x4, 0x3A, 0x0, 0x6, 0x0, 0x5B, 0x3, 0x0, 0xFF, 0xFF, 0x0, 0x1A, 0x0, 0x0, 0x5, 0x8A, 0x5, 0xD5, 0x0, 0x26, 0x0, 0x5B, 0x3, 0x0, 0x0, 0x7, 0x0, 0x4E, 0x3, 0xF9, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x1A, 0x0, 0x0, 0x7, 0x95, 0x5, 0xD5, 0x0, 0x26, 0x0, 0x5B, 0x3, 0x0, 0x0, 0x27, 0x0, 0x4E, 0x3, 0xF9, 0x0, 0x0, 0x0, 0x7, 0x0, 0x4E, 0x6, 0x4, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x1A, 0x0, 0x0, 0x9, 0xA1, 0x5, 0xD5, 0x0, 0x26, 0x0, 0x5B, 0x3, 0x0, 0x0, 0x27, 0x0, 0x4E, 0x3, 0xF9, 0x0, 0x0, 0x0, 0x27, 0x0, 0x4E, 0x6, 0x4, 0x0, 0x0, 0x0, 0x7, 0x0, 0x4E, 0x8, 0x10, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x7E, 0x0, 0x0, 0x5, 0xF6, 0x5, 0xD5, 0x0, 0x26, 0x0, 0x4E, 0x1, 0x0, 0x0, 0x7, 0x0, 0x5D, 0x2, 0xD, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x22, 0x0, 0x0, 0x3, 0xEC, 0x4, 0x3A, 0x0, 0x6, 0x0, 0x5D, 0x3, 0x0, 0xFF, 0xFF, 0x0, 0x22, 0x0, 0x0, 0x5, 0x9B, 0x5, 0xD5, 0x0, 0x26, 0x0, 0x5D, 0x3, 0x0, 0x0, 0x7, 0x0, 0x4E, 0x4, 0xA, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x22, 0x0, 0x0, 0x7, 0xA7, 0x5, 0xD5, 0x0, 0x26, 0x0, 0x5D, 0x3, 0x0, 0x0, 0x27, 0x0, 0x4E, 0x4, 0xA, 0x0, 0x0, 0x0, 0x7, 0x0, 0x4E, 0x6, 0x16, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x7E, 0x0, 0x0, 0x1, 0x71, 0x6, 0x0, 0x0, 0x6, 0x0, 0x51, 0xF2, 0x0, 0xFF, 0xFF, 0x0, 0x50, 0xFF, 0xEC, 0x3, 0xF5, 0x4, 0x4E, 0x0, 0x6, 0x0, 0x48, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x50, 0xFF, 0xEC, 0x4, 0x4, 0x6, 0x0, 0x0, 0x6, 0x0, 0x49, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x7E, 0x0, 0x0, 0x6, 0x7B, 0x4, 0x4E, 0x0, 0x6, 0x0, 0x52, 0x1, 0x0, 0x0, 0x3, 0x0, 0x68, 0x0, 0x0, 0x6, 0xCC, 0x5, 0xB0, 0x0, 0x9, 0x0, 0x13, 0x0, 0x23, 0x0, 0x0, 0x25, 0x11, 0x23, 0x22, 0x6, 0x7, 0x15, 0x14, 0x12, 0x17, 0x1, 0x11, 0x33, 0x32, 0x12, 0x35, 0x35, 0x34, 0x2, 0x23, 0x1, 0x20, 0x0, 0x11, 0x35, 0x10, 0x0, 0x21, 0x21, 0x20, 0x0, 0x11, 0x15, 0x10, 0x0, 0x21, 0x3, 0x1F, 0x1D, 0xCD, 0xCE, 0x2, 0xCB, 0xD5, 0x1, 0xE, 0x17, 0xD2, 0xD2, 0xC6, 0xD1, 0xFE, 0xCC, 0xFE, 0xD0, 0xFE, 0x95, 0x1, 0x6A, 0x1, 0x24, 0x1, 0x48, 0x1, 0x24, 0x1, 0x6A, 0xFE, 0x95, 0xFE, 0xD0, 0xCA, 0x4, 0x1B, 0xEF, 0xED, 0x56, 0xE0, 0xFE, 0xFA, 0x3, 0x4, 0x1B, 0xFB, 0xE5, 0x1, 0x2, 0xE7, 0x4C, 0xE2, 0x1, 0x4, 0xFB, 0x1B, 0x1, 0x77, 0x1, 0x3C, 0x4A, 0x1, 0x3D, 0x1, 0x76, 0xFE, 0x8A, 0xFE, 0xC3, 0x4A, 0xFE, 0xC4, 0xFE, 0x89, 0x0, 0x3, 0x0, 0x99, 0x0, 0x0, 0x4, 0xF4, 0x5, 0xB0, 0x0, 0x8, 0x0, 0x1C, 0x0, 0x26, 0x0, 0x0, 0x1, 0x11, 0x33, 0x32, 0x37, 0x35, 0x34, 0x26, 0x23, 0x3, 0x15, 0x33, 0x36, 0x12, 0x37, 0x35, 0x34, 0x26, 0x27, 0x23, 0x15, 0x33, 0x16, 0x16, 0x17, 0x15, 0x14, 0x6, 0x23, 0x1, 0x11, 0x21, 0x20, 0x0, 0x11, 0x15, 0x10, 0x0, 0x21, 0x1, 0x8C, 0x75, 0xDB, 0x4, 0x71, 0x65, 0x7E, 0xCF, 0xDA, 0xD9, 0x1, 0xD2, 0xD1, 0xE0, 0x88, 0xAE, 0xD7, 0x1, 0xDA, 0xB8, 0xFE, 0x91, 0x1, 0xCC, 0x1, 0x25, 0x1, 0x6A, 0xFE, 0x94, 0xFE, 0xD0, 0x3, 0xF3, 0xFD, 0xC6, 0xFD, 0x38, 0x8D, 0x78, 0xFD, 0x2B, 0x68, 0x1, 0x1, 0xB, 0xEC, 0x51, 0xFC, 0xFD, 0x2, 0x6C, 0x1, 0xE0, 0xBC, 0x32, 0xBF, 0xE2, 0xFE, 0xE2, 0x5, 0xB0, 0xFE, 0x8A, 0xFE, 0xC3, 0x4A, 0xFE, 0xC4, 0xFE, 0x89, 0x0, 0x5, 0x0, 0x6A, 0x0, 0x0, 0x7, 0x87, 0x5, 0xB0, 0x0, 0x13, 0x0, 0x1C, 0x0, 0x24, 0x0, 0x38, 0x0, 0x48, 0x0, 0x0, 0x25, 0x35, 0x23, 0x26, 0x26, 0x27, 0x35, 0x34, 0x36, 0x33, 0x33, 0x35, 0x23, 0x6, 0x6, 0x7, 0x15, 0x14, 0x12, 0x33, 0x1, 0x11, 0x33, 0x32, 0x37, 0x35, 0x34, 0x26, 0x23, 0x1, 0x11, 0x23, 0x22, 0x7, 0x15, 0x10, 0x17, 0x5, 0x15, 0x33, 0x32, 0x12, 0x35, 0x35, 0x34, 0x26, 0x23, 0x23, 0x15, 0x33, 0x16, 0x16, 0x17, 0x15, 0x14, 0x6, 0x23, 0x1, 0x20, 0x0, 0x11, 0x35, 0x10, 0x0, 0x21, 0x21, 0x20, 0x0, 0x11, 0x15, 0x10, 0x0, 0x21, 0x3, 0x7F, 0x2C, 0xB6, 0xD9, 0x1, 0xDB, 0xAF, 0x32, 0x8D, 0xD0, 0xD1, 0x2, 0xDB, 0xDB, 0x1, 0x6D, 0x22, 0xDB, 0x4, 0x71, 0x65, 0xFE, 0xE2, 0x2B, 0xD0, 0x6, 0xD7, 0x1, 0x1D, 0x7A, 0xDB, 0xDB, 0xD4, 0xD6, 0x86, 0x35, 0xAE, 0xD8, 0x1, 0xDB, 0xB8, 0xFE, 0x6A, 0xFE, 0xD0, 0xFE, 0x95, 0x1, 0x6A, 0x1, 0x24, 0x2, 0x1, 0x1, 0x24, 0x1, 0x6A, 0xFE, 0x95, 0xFE, 0xD0, 0xB6, 0x68, 0x1, 0xE0, 0xBD, 0x31, 0xBF, 0xE2, 0x6C, 0x2, 0xF9, 0xF6, 0x56, 0xF0, 0xFE, 0xF3, 0x3, 0x3D, 0xFD, 0xC6, 0xFD, 0x38, 0x8D, 0x78, 0xFD, 0xC6, 0x2, 0x3A, 0xF4, 0x40, 0xFE, 0xFF, 0x5, 0x9B, 0x68, 0x1, 0xD, 0xF0, 0x4C, 0xFD, 0xFE, 0x6C, 0x1, 0xE0, 0xBD, 0x31, 0xBF, 0xE2, 0xFE, 0xE2, 0x1, 0x77, 0x1, 0x3C, 0x4A, 0x1, 0x3D, 0x1, 0x76, 0xFE, 0x8A, 0xFE, 0xC3, 0x4A, 0xFE, 0xC4, 0xFE, 0x89, 0x0, 0x1, 0x0, 0x4D, 0xFF, 0xEC, 0x4, 0xCD, 0x5, 0xC4, 0x0, 0x1A, 0x0, 0x0, 0x13, 0x33, 0x16, 0x16, 0x33, 0x32, 0x12, 0x35, 0x35, 0x34, 0x2, 0x23, 0x22, 0x6, 0x7, 0x23, 0x36, 0x0, 0x21, 0x20, 0x0, 0x13, 0x15, 0x10, 0x0, 0x20, 0x0, 0x4E, 0xF3, 0x13, 0x8B, 0xA6, 0xB4, 0xA1, 0xB2, 0xB0, 0x9E, 0x89, 0x11, 0xF3, 0x16, 0x1, 0x12, 0x1, 0x3, 0x1, 0x10, 0x1, 0x41, 0x4, 0xFE, 0xC3, 0xFD, 0xEA, 0xFE, 0xE8, 0x1, 0xD9, 0x8E, 0x9C, 0x1, 0x13, 0xD9, 0x7C, 0xE6, 0x1, 0x4, 0xA2, 0x8D, 0xDA, 0x1, 0x18, 0xFE, 0x93, 0xFE, 0xCD, 0x89, 0xFE, 0xC7, 0xFE, 0x8A, 0x1, 0x1A, 0x0, 0x1, 0x0, 0x3B, 0xFF, 0xEC, 0x3, 0xE1, 0x4, 0x4E, 0x0, 0x1B, 0x0, 0x0, 0x13, 0x33, 0x16, 0x16, 0x33, 0x32, 0x36, 0x35, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x7, 0x23, 0x36, 0x36, 0x33, 0x32, 0x12, 0x17, 0x15, 0x14, 0x2, 0x23, 0x22, 0x24, 0x3B, 0xE5, 0x5, 0x7A, 0x58, 0x95, 0x62, 0x62, 0x95, 0x63, 0x6F, 0x5, 0xE5, 0x5, 0xF1, 0xC4, 0xF7, 0xF3, 0x2, 0xF3, 0xFA, 0xB4, 0xFF, 0x0, 0x1, 0x66, 0x4F, 0x68, 0xD9, 0x83, 0x24, 0x81, 0xDB, 0x7D, 0x57, 0xB3, 0xE4, 0xFE, 0xC4, 0xDD, 0x2A, 0xDF, 0xFE, 0xC0, 0xDD, 0x0, 0x1, 0x0, 0x66, 0xFE, 0x98, 0x4, 0xE6, 0x5, 0xC4, 0x0, 0x1D, 0x0, 0x0, 0x1, 0x11, 0x23, 0x11, 0x6, 0x23, 0x20, 0x0, 0x11, 0x35, 0x10, 0x0, 0x21, 0x20, 0x0, 0x17, 0x23, 0x26, 0x26, 0x23, 0x22, 0x2, 0x15, 0x15, 0x14, 0x12, 0x33, 0x32, 0x37, 0x35, 0x4, 0xD6, 0xF3, 0x80, 0xB5, 0xFE, 0xF5, 0xFE, 0xC3, 0x1, 0x43, 0x1, 0x12, 0x1, 0x3, 0x1, 0x12, 0x16, 0xF3, 0x11, 0x89, 0x9E, 0xB0, 0xB2, 0xA1, 0xB4, 0xC6, 0x6F, 0x1, 0xDC, 0xFC, 0xBC, 0x1, 0x9E, 0x4A, 0x1, 0x76, 0x1, 0x39, 0x7A, 0x1, 0x3A, 0x1, 0x75, 0xFE, 0xE8, 0xDA, 0x8D, 0xA2, 0xFE, 0xFC, 0xE6, 0x7C, 0xD9, 0xFE, 0xED, 0x7F, 0xAE, 0x0, 0x1, 0x0, 0x3C, 0x0, 0x0, 0x6, 0x10, 0x5, 0xB0, 0x0, 0x9, 0x0, 0x0, 0x21, 0x1, 0x37, 0x1, 0x11, 0x33, 0x11, 0x1, 0x17, 0x1, 0x2, 0xB6, 0xFD, 0x86, 0xB0, 0x1, 0xBF, 0xF3, 0x1, 0xC8, 0xAA, 0xFD, 0x86, 0x2, 0xA4, 0xAD, 0xFE, 0x17, 0x4, 0x48, 0xFB, 0xB5, 0x1, 0xEC, 0xB4, 0xFD, 0x63, 0x0, 0x4, 0x0, 0x99, 0x0, 0x0, 0x4, 0xF9, 0x5, 0xB0, 0x0, 0x6, 0x0, 0x18, 0x0, 0x2C, 0x0, 0x36, 0x0, 0x0, 0x1, 0x11, 0x36, 0x35, 0x35, 0x34, 0x26, 0x3, 0x15, 0x33, 0x36, 0x36, 0x37, 0x35, 0x34, 0x26, 0x23, 0x23, 0x15, 0x33, 0x4, 0x17, 0x15, 0x14, 0x6, 0x7, 0x15, 0x33, 0x32, 0x12, 0x35, 0x35, 0x10, 0x2, 0x23, 0x23, 0x15, 0x33, 0x16, 0x16, 0x17, 0x15, 0x14, 0x6, 0x7, 0x5, 0x11, 0x21, 0x20, 0x0, 0x11, 0x15, 0x10, 0x0, 0x21, 0x1, 0x8C, 0x83, 0x40, 0x43, 0x6A, 0x88, 0x9D, 0x1, 0x9F, 0x82, 0x6F, 0x17, 0x1, 0x17, 0x5, 0x97, 0x9C, 0xD2, 0xDC, 0xF3, 0xE8, 0xDA, 0xDF, 0x8F, 0xC1, 0xEF, 0x1, 0xF0, 0xCA, 0xFE, 0x87, 0x1, 0xD2, 0x1, 0x29, 0x1, 0x65, 0xFE, 0x9A, 0xFE, 0xCB, 0x3, 0x62, 0xFE, 0xF6, 0x1, 0x71, 0x1E, 0x45, 0x35, 0xFE, 0x68, 0x50, 0x1, 0x90, 0xAF, 0x3A, 0xBC, 0x8B, 0x4B, 0x6, 0xF9, 0x27, 0x80, 0x80, 0xE0, 0x53, 0x1, 0x22, 0xFA, 0x4C, 0x1, 0x1, 0x1, 0x20, 0x55, 0x1, 0xF0, 0xE4, 0x39, 0xE6, 0xEC, 0x1, 0xEA, 0x5, 0xB0, 0xFE, 0x8A, 0xFE, 0xC3, 0x4A, 0xFE, 0xC4, 0xFE, 0x89, 0x0, 0x7, 0x0, 0x6A, 0x0, 0x0, 0x8, 0x37, 0x5, 0xB0, 0x0, 0x13, 0x0, 0x25, 0x0, 0x2D, 0x0, 0x35, 0x0, 0x47, 0x0, 0x5B, 0x0, 0x6B, 0x0, 0x0, 0x25, 0x35, 0x23, 0x26, 0x26, 0x35, 0x35, 0x34, 0x36, 0x33, 0x33, 0x35, 0x23, 0x6, 0x2, 0x7, 0x15, 0x14, 0x12, 0x33, 0x37, 0x35, 0x23, 0x24, 0x27, 0x35, 0x10, 0x25, 0x33, 0x35, 0x23, 0x6, 0x6, 0x7, 0x15, 0x14, 0x16, 0x33, 0x1, 0x11, 0x33, 0x32, 0x35, 0x35, 0x34, 0x26, 0x1, 0x11, 0x23, 0x22, 0x6, 0x15, 0x15, 0x14, 0x5, 0x15, 0x33, 0x32, 0x36, 0x35, 0x35, 0x34, 0x26, 0x23, 0x23, 0x15, 0x33, 0x4, 0x17, 0x15, 0x14, 0x5, 0x7, 0x15, 0x33, 0x32, 0x12, 0x35, 0x35, 0x10, 0x2, 0x23, 0x23, 0x15, 0x33, 0x16, 0x16, 0x17, 0x15, 0x14, 0x6, 0x7, 0x5, 0x20, 0x0, 0x11, 0x35, 0x10, 0x0, 0x21, 0x21, 0x20, 0x0, 0x11, 0x15, 0x10, 0x0, 0x21, 0x3, 0xD7, 0x86, 0xCA, 0xF0, 0xF1, 0xC3, 0x8C, 0xE2, 0xD5, 0xE7, 0x3, 0xF4, 0xDB, 0xD2, 0x1B, 0xFE, 0xE6, 0x6, 0x1, 0x1C, 0x1F, 0x71, 0x81, 0x9D, 0x1, 0xA0, 0x8B, 0x1, 0x58, 0x5, 0x88, 0x42, 0xFE, 0xC2, 0xB, 0x40, 0x44, 0x1, 0x82, 0x65, 0x8C, 0x9F, 0x9F, 0x82, 0x6F, 0x1D, 0x1, 0x18, 0x5, 0xFE, 0xE2, 0x1C, 0xD2, 0xDB, 0xF4, 0xE8, 0xDA, 0xDF, 0x8F, 0xC1, 0xEF, 0x1, 0xF0, 0xCA, 0xFD, 0xB5, 0xFE, 0xCB, 0xFE, 0x9A, 0x1, 0x65, 0x1, 0x29, 0x2, 0xB1, 0x1, 0x29, 0x1, 0x65, 0xFE, 0x9A, 0xFE, 0xCB, 0x97, 0x53, 0x1, 0xEC, 0xE6, 0x35, 0xE7, 0xF2, 0x55, 0x1, 0xFE, 0xE7, 0xFB, 0x58, 0xFA, 0xFE, 0xDE, 0xE3, 0x50, 0x6, 0xF0, 0x28, 0x1, 0x2, 0x6, 0x4B, 0x1, 0x8A, 0xB7, 0x3B, 0xB2, 0x92, 0x1, 0xE8, 0xFE, 0xF6, 0x72, 0x1E, 0x44, 0x36, 0xFE, 0xF6, 0x1, 0xA, 0x35, 0x45, 0x1E, 0x72, 0x8E, 0x50, 0x92, 0xB2, 0x36, 0xBC, 0x8B, 0x4B, 0x6, 0xF9, 0x27, 0xF9, 0x7, 0xE0, 0x53, 0x1, 0x22, 0xFA, 0x4C, 0x1, 0x1, 0x1, 0x20, 0x55, 0x1, 0xF0, 0xE4, 0x39, 0xE6, 0xEC, 0x1, 0xEA, 0x1, 0x77, 0x1, 0x3C, 0x4A, 0x1, 0x3D, 0x1, 0x76, 0xFE, 0x8A, 0xFE, 0xC3, 0x4A, 0xFE, 0xC4, 0xFE, 0x89, 0xFF, 0xFF, 0x0, 0x46, 0xFF, 0xF5, 0x6, 0x51, 0x5, 0xA8, 0x0, 0x27, 0x4, 0x83, 0x1, 0x65, 0x0, 0x0, 0x0, 0x27, 0x7, 0x9D, 0x3, 0xA8, 0x0, 0x0, 0x0, 0x7, 0x7, 0x43, 0xFF, 0xFA, 0x2, 0x88, 0x0, 0x2, 0x0, 0x62, 0xFF, 0xEB, 0x4, 0x43, 0x5, 0xF6, 0x0, 0x19, 0x0, 0x27, 0x0, 0x0, 0x1, 0x32, 0x17, 0x26, 0x26, 0x23, 0x22, 0x6, 0x7, 0x27, 0x36, 0x36, 0x33, 0x20, 0x0, 0x13, 0x15, 0x10, 0x0, 0x23, 0x22, 0x0, 0x35, 0x35, 0x34, 0x12, 0x17, 0x22, 0x6, 0x15, 0x15, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x35, 0x26, 0x26, 0x2, 0x39, 0xAC, 0x78, 0x19, 0xC5, 0x84, 0x4E, 0x74, 0x46, 0x1D, 0x38, 0x8E, 0x73, 0x1, 0x12, 0x1, 0x20, 0x2, 0xFE, 0xFD, 0xEE, 0xED, 0xFE, 0xFD, 0xF6, 0xFC, 0x88, 0x77, 0x76, 0x87, 0x89, 0x76, 0xF, 0x74, 0x4, 0x5, 0x7E, 0xC1, 0xE6, 0x1A, 0x1A, 0xB7, 0x19, 0x2C, 0xFE, 0x4B, 0xFE, 0x84, 0x44, 0xFE, 0xE8, 0xFE, 0x82, 0x1, 0x30, 0xE3, 0x15, 0xD6, 0x1, 0x1C, 0xC3, 0xB9, 0x7D, 0x15, 0x86, 0xC3, 0xE9, 0xA7, 0x5A, 0x2F, 0x7B, 0x0, 0x1, 0x0, 0xA6, 0xFF, 0x1A, 0x4, 0xF4, 0x5, 0xB0, 0x0, 0x7, 0x0, 0x0, 0x1, 0x11, 0x23, 0x11, 0x21, 0x11, 0x23, 0x11, 0x4, 0xF4, 0xF3, 0xFD, 0x99, 0xF4, 0x5, 0xB0, 0xF9, 0x6A, 0x5, 0xD6, 0xFA, 0x2A, 0x6, 0x96, 0x0, 0x1, 0x0, 0x41, 0xFE, 0xF3, 0x4, 0xC1, 0x5, 0xB0, 0x0, 0xC, 0x0, 0x0, 0x13, 0x35, 0x1, 0x1, 0x35, 0x21, 0x15, 0x21, 0x1, 0x15, 0x1, 0x21, 0x15, 0x41, 0x2, 0x4E, 0xFD, 0xB2, 0x4, 0x46, 0xFC, 0xF7, 0x2, 0x12, 0xFD, 0xEE, 0x3, 0x43, 0xFE, 0xF3, 0x97, 0x2, 0xC9, 0x2, 0xC6, 0x97, 0xC3, 0xFD, 0x74, 0x1E, 0xFD, 0x73, 0xC3, 0x0, 0x1, 0x0, 0x9F, 0x2, 0x6E, 0x3, 0xEF, 0x3, 0x32, 0x0, 0x3, 0x0, 0x0, 0x1, 0x15, 0x21, 0x35, 0x3, 0xEF, 0xFC, 0xB0, 0x3, 0x32, 0xC4, 0xC4, 0x0, 0x1, 0x0, 0x3C, 0xFF, 0xFF, 0x4, 0x92, 0x5, 0xB0, 0x0, 0x8, 0x0, 0x0, 0x5, 0x3, 0x23, 0x35, 0x21, 0x13, 0x1, 0x33, 0x1, 0x1, 0xE5, 0xD9, 0xD0, 0x1, 0x66, 0xA0, 0x1, 0x78, 0xD8, 0xFE, 0x17, 0x1, 0x2, 0x42, 0xC6, 0xFE, 0x23, 0x4, 0x86, 0xFA, 0x4F, 0x0, 0x3, 0x0, 0x5E, 0xFF, 0xEB, 0x7, 0xE0, 0x4, 0x4E, 0x0, 0x19, 0x0, 0x29, 0x0, 0x39, 0x0, 0x0, 0x5, 0x22, 0x26, 0x27, 0x6, 0x6, 0x23, 0x22, 0x0, 0x27, 0x35, 0x34, 0x0, 0x33, 0x32, 0x16, 0x17, 0x36, 0x36, 0x33, 0x32, 0x0, 0x15, 0x15, 0x14, 0x0, 0x13, 0x34, 0x26, 0x23, 0x22, 0x6, 0x6, 0x7, 0x15, 0x1E, 0x2, 0x33, 0x32, 0x36, 0x35, 0x21, 0x14, 0x16, 0x33, 0x32, 0x36, 0x36, 0x37, 0x35, 0x2E, 0x2, 0x23, 0x22, 0x6, 0x15, 0x5, 0xE9, 0xB1, 0xDC, 0x3E, 0x3D, 0xDC, 0xB1, 0xE3, 0xFE, 0xF0, 0x3, 0x1, 0x11, 0xE3, 0xB2, 0xDD, 0x3E, 0x3D, 0xDD, 0xB2, 0xDB, 0x1, 0x1A, 0xFE, 0xEE, 0x22, 0x8B, 0x81, 0x6B, 0x8B, 0x49, 0x9, 0x8, 0x4A, 0x8B, 0x69, 0x82, 0x8C, 0xFA, 0x5D, 0x8C, 0x82, 0x6A, 0x8A, 0x4A, 0x8, 0x8, 0x49, 0x8B, 0x6C, 0x81, 0x8B, 0x15, 0xD2, 0x7A, 0x7A, 0xD2, 0x1, 0x40, 0xDD, 0x20, 0xE0, 0x1, 0x46, 0xCE, 0x78, 0x78, 0xCE, 0xFE, 0xC4, 0xF2, 0xF, 0xE0, 0xFE, 0xBA, 0x2, 0x3D, 0x91, 0xCF, 0x8D, 0xA4, 0x25, 0x23, 0x26, 0xA8, 0x8F, 0xCC, 0x93, 0x93, 0xCC, 0x8F, 0xA8, 0x26, 0x23, 0x25, 0xA4, 0x8D, 0xCF, 0x91, 0x0, 0x1, 0xFF, 0xAF, 0xFE, 0x4B, 0x2, 0xA9, 0x6, 0x15, 0x0, 0x15, 0x0, 0x0, 0x13, 0x22, 0x27, 0x37, 0x16, 0x33, 0x32, 0x35, 0x11, 0x34, 0x36, 0x33, 0x32, 0x17, 0x7, 0x26, 0x23, 0x22, 0x15, 0x11, 0x14, 0x6, 0x31, 0x46, 0x3C, 0x11, 0x2B, 0x27, 0x8C, 0xC5, 0xAE, 0x3D, 0x5B, 0x19, 0x2A, 0x32, 0xA3, 0xBB, 0xFE, 0x4B, 0x12, 0xBE, 0xD, 0xA2, 0x4, 0xF3, 0xB4, 0xBE, 0x15, 0xB8, 0xA, 0xAF, 0xFB, 0xD, 0xB5, 0xB0, 0x0, 0x2, 0x0, 0x65, 0x1, 0x1, 0x4, 0x16, 0x3, 0xFB, 0x0, 0x14, 0x0, 0x28, 0x0, 0x0, 0x13, 0x35, 0x36, 0x33, 0x36, 0x1E, 0x2, 0x33, 0x32, 0x37, 0x15, 0x6, 0x23, 0x22, 0x2E, 0x2, 0x7, 0x22, 0x6, 0x3, 0x35, 0x36, 0x33, 0x36, 0x1E, 0x2, 0x33, 0x32, 0x37, 0x15, 0x6, 0x23, 0x22, 0x2E, 0x2, 0x7, 0x22, 0x65, 0x65, 0x91, 0x4F, 0x63, 0x7A, 0x5D, 0x49, 0x85, 0x64, 0x65, 0x80, 0x30, 0x48, 0xDD, 0x4A, 0x33, 0x41, 0x8A, 0x2F, 0x65, 0x8E, 0x4F, 0x63, 0x7A, 0x5D, 0x49, 0x88, 0x64, 0x65, 0x84, 0x30, 0x48, 0xDD, 0x4A, 0x33, 0x92, 0x2, 0xB5, 0xDA, 0x6A, 0x2, 0x2B, 0x3E, 0x27, 0x7E, 0xDA, 0x6A, 0x10, 0x70, 0xF, 0x1, 0x43, 0xFE, 0x21, 0xDA, 0x6A, 0x2, 0x2B, 0x3E, 0x27, 0x7E, 0xDA, 0x6A, 0x10, 0x70, 0xF, 0x1, 0x0, 0x1, 0x0, 0x91, 0x0, 0x80, 0x3, 0xF0, 0x4, 0xC4, 0x0, 0x13, 0x0, 0x0, 0x1, 0x21, 0x7, 0x27, 0x37, 0x23, 0x35, 0x21, 0x37, 0x21, 0x35, 0x21, 0x37, 0x17, 0x7, 0x33, 0x15, 0x21, 0x7, 0x21, 0x3, 0xF0, 0xFD, 0xE2, 0x81, 0x6D, 0x5D, 0xB0, 0x1, 0x22, 0x7E, 0xFE, 0x60, 0x2, 0x11, 0x86, 0x6D, 0x63, 0xBE, 0xFE, 0xD1, 0x7E, 0x1, 0xAD, 0x1, 0x64, 0xE4, 0x3E, 0xA6, 0xCA, 0xDF, 0xC9, 0xEE, 0x3F, 0xAF, 0xC9, 0xDF, 0xFF, 0xFF, 0x0, 0x3C, 0x0, 0x0, 0x3, 0x8C, 0x4, 0x48, 0x0, 0x67, 0x0, 0x21, 0x0, 0x0, 0x0, 0x8B, 0x40, 0x0, 0x37, 0x96, 0x0, 0x47, 0x5, 0x3A, 0xFF, 0x9D, 0xFD, 0xA6, 0x40, 0x0, 0x3D, 0xFC, 0xFF, 0xFF, 0x0, 0x80, 0xFF, 0xFF, 0x3, 0xE0, 0x4, 0x55, 0x0, 0x67, 0x0, 0x23, 0x0, 0x0, 0x0, 0x98, 0x40, 0x0, 0x37, 0x96, 0x0, 0x47, 0x5, 0x3A, 0xFF, 0xE1, 0xFD, 0xA5, 0x40, 0x0, 0x3D, 0xFC, 0x0, 0x1, 0x0, 0x45, 0xFE, 0xB8, 0x4, 0xFB, 0x0, 0x8C, 0x0, 0x7, 0x0, 0x0, 0x37, 0x33, 0x11, 0x21, 0x11, 0x33, 0x11, 0x21, 0x45, 0xC8, 0x3, 0x26, 0xC8, 0xFB, 0x4A, 0x8C, 0xFE, 0xEA, 0x1, 0x16, 0xFE, 0x2C, 0x0, 0x2, 0x0, 0x24, 0x0, 0x0, 0x3, 0xEB, 0x5, 0xB0, 0x0, 0x3, 0x0, 0x9, 0x0, 0x0, 0x1, 0x13, 0x13, 0x3, 0x3, 0x1, 0x1, 0x33, 0x1, 0x1, 0x1, 0x18, 0xF2, 0xED, 0xF1, 0x5F, 0xFE, 0x7D, 0x1, 0x80, 0xC5, 0x1, 0x82, 0xFE, 0x81, 0x2, 0xD7, 0xFE, 0x2A, 0x1, 0xD6, 0x1, 0xD7, 0xFB, 0x52, 0x2, 0xD7, 0x2, 0xD9, 0xFD, 0x27, 0xFD, 0x29, 0x0, 0x2, 0x0, 0x99, 0xFE, 0xBB, 0x3, 0xA8, 0x6, 0x8F, 0x0, 0x3, 0x0, 0xB, 0x0, 0x0, 0x5, 0x33, 0x11, 0x23, 0x3, 0x11, 0x21, 0x15, 0x23, 0x11, 0x33, 0x15, 0x1, 0x6E, 0xA1, 0xA1, 0xD5, 0x3, 0xF, 0xC4, 0xC4, 0x9F, 0x6, 0x87, 0xF8, 0xD3, 0x7, 0xD4, 0xA7, 0xF9, 0x79, 0xA6, 0x0, 0x2, 0x0, 0x52, 0xFE, 0xBB, 0x3, 0x61, 0x6, 0x8F, 0x0, 0x3, 0x0, 0xB, 0x0, 0x0, 0x1, 0x23, 0x11, 0x33, 0x5, 0x35, 0x33, 0x11, 0x23, 0x35, 0x21, 0x11, 0x2, 0x8D, 0xA2, 0xA2, 0xFD, 0xC5, 0xC5, 0xC5, 0x3, 0xF, 0x5, 0xE8, 0xF9, 0x79, 0xA6, 0xA6, 0x6, 0x87, 0xA7, 0xF8, 0x2C, 0x0, 0x1, 0x0, 0x40, 0xFE, 0xBE, 0x2, 0x98, 0x6, 0x8A, 0x0, 0x5, 0x0, 0x0, 0x1, 0x17, 0x1, 0x1, 0x7, 0x1, 0x1, 0xD0, 0xC8, 0xFE, 0x96, 0x1, 0x6A, 0xC8, 0xFE, 0x70, 0x6, 0x8A, 0x58, 0xFC, 0x72, 0xFC, 0x70, 0x56, 0x3, 0xE6, 0x0, 0x1, 0x0, 0x67, 0xFE, 0xBE, 0x2, 0xBF, 0x6, 0x8A, 0x0, 0x5, 0x0, 0x0, 0x13, 0x37, 0x1, 0x1, 0x27, 0x1, 0x67, 0xC8, 0x1, 0x90, 0xFE, 0x70, 0xC8, 0x1, 0x6A, 0x6, 0x32, 0x58, 0xFC, 0x1A, 0xFC, 0x1A, 0x56, 0x3, 0x90, 0xFF, 0xFF, 0x0, 0x40, 0xFE, 0xBE, 0x4, 0x4B, 0x6, 0x8A, 0x0, 0x26, 0x5, 0x46, 0x0, 0x0, 0x0, 0x7, 0x5, 0x46, 0x1, 0xB3, 0x0, 0x0, 0x0, 0x2, 0x0, 0x67, 0xFE, 0xBE, 0x4, 0x72, 0x6, 0x8A, 0x0, 0x5, 0x0, 0xB, 0x0, 0x0, 0x1, 0x37, 0x1, 0x1, 0x27, 0x1, 0x1, 0x37, 0x1, 0x1, 0x27, 0x1, 0x2, 0x1A, 0xC8, 0x1, 0x90, 0xFE, 0x70, 0xC8, 0x1, 0x6A, 0xFC, 0xE3, 0xC8, 0x1, 0x90, 0xFE, 0x70, 0xC8, 0x1, 0x6A, 0x6, 0x32, 0x58, 0xFC, 0x1A, 0xFC, 0x1A, 0x56, 0x3, 0x90, 0x3, 0x8E, 0x58, 0xFC, 0x1A, 0xFC, 0x1A, 0x56, 0x3, 0x90, 0x0, 0x2, 0x0, 0x99, 0xFE, 0x76, 0x3, 0x66, 0x6, 0xDC, 0x0, 0x7, 0x0, 0xB, 0x0, 0x0, 0x1, 0x1, 0x11, 0x1, 0x17, 0x7, 0x11, 0x17, 0x1, 0x17, 0x11, 0x7, 0x2, 0xFA, 0xFD, 0x9F, 0x2, 0x61, 0x6C, 0xA9, 0xA9, 0xFE, 0x8, 0x7A, 0x7A, 0xFE, 0x76, 0x1, 0x7B, 0x5, 0x70, 0x1, 0x7B, 0xA3, 0x6B, 0xF9, 0xB6, 0x6B, 0x1, 0x3F, 0x4D, 0x5, 0x3C, 0x4D, 0x0, 0x2, 0x0, 0x5A, 0xFE, 0x76, 0x3, 0x27, 0x6, 0xDC, 0x0, 0x7, 0x0, 0xB, 0x0, 0x0, 0x13, 0x27, 0x37, 0x11, 0x27, 0x37, 0x1, 0x11, 0x3, 0x27, 0x11, 0x37, 0xC6, 0x6C, 0xA9, 0xA9, 0x6C, 0x2, 0x61, 0xD5, 0x7A, 0x7A, 0xFE, 0x76, 0xA3, 0x6B, 0x6, 0x4A, 0x6B, 0xA3, 0xFE, 0x85, 0xFA, 0x90, 0x5, 0x9, 0x4D, 0xFA, 0xC4, 0x4D, 0x0, 0x1, 0x0, 0x99, 0xFE, 0x76, 0x2, 0x3F, 0x6, 0xDC, 0x0, 0x7, 0x0, 0x0, 0x1, 0x11, 0x17, 0x7, 0x1, 0x11, 0x1, 0x17, 0x1, 0x6E, 0xD1, 0x94, 0xFE, 0xEE, 0x1, 0x12, 0x94, 0x5, 0x77, 0xFA, 0x64, 0xD2, 0x93, 0x1, 0x12, 0x6, 0x42, 0x1, 0x12, 0x93, 0x0, 0x1, 0x0, 0x54, 0xFE, 0x76, 0x1, 0xFA, 0x6, 0xDC, 0x0, 0x7, 0x0, 0x0, 0x17, 0x37, 0x11, 0x27, 0x37, 0x1, 0x11, 0x1, 0x54, 0xD1, 0xD1, 0x94, 0x1, 0x12, 0xFE, 0xEE, 0xF7, 0xD2, 0x5, 0x9C, 0xD2, 0x93, 0xFE, 0xEE, 0xF9, 0xBE, 0xFE, 0xEE, 0x0, 0x1, 0x0, 0x50, 0x0, 0x0, 0x2, 0xCA, 0x4, 0x4E, 0x0, 0x8, 0x0, 0x0, 0x1, 0x3, 0x3, 0x23, 0x13, 0x5, 0x37, 0x25, 0x13, 0x2, 0x97, 0xA0, 0xDB, 0x9D, 0xE6, 0xFE, 0xEB, 0x32, 0x1, 0x72, 0xD6, 0x2, 0x20, 0x1, 0x15, 0xFC, 0xCB, 0x3, 0x5C, 0x9F, 0xBD, 0xD4, 0xFE, 0x8F, 0x0, 0x1, 0x0, 0x50, 0xFF, 0xED, 0x2, 0xCA, 0x4, 0x3A, 0x0, 0x8, 0x0, 0x0, 0x5, 0x25, 0x27, 0x5, 0x3, 0x33, 0x13, 0x13, 0x17, 0x1, 0xF4, 0xFE, 0x8E, 0x32, 0x1, 0x15, 0xE6, 0x9D, 0xDB, 0xA0, 0x33, 0x13, 0xD4, 0xBC, 0x9F, 0x3, 0x5C, 0xFC, 0xCB, 0x1, 0x15, 0xBC, 0x0, 0x1, 0x0, 0x50, 0x0, 0x0, 0x5, 0x2, 0x6, 0x18, 0x0, 0x17, 0x0, 0x0, 0x33, 0x23, 0x1, 0x3E, 0x2, 0x33, 0x32, 0x16, 0x7, 0x7, 0x25, 0x7, 0x5, 0x3, 0x37, 0x13, 0x37, 0x12, 0x23, 0x22, 0x6, 0x7, 0x7, 0xED, 0x9D, 0x1, 0x13, 0x2A, 0x5D, 0x96, 0x7F, 0xBF, 0x97, 0x35, 0x2A, 0x1, 0xC, 0x32, 0xFE, 0x8E, 0xD6, 0x33, 0xA4, 0x29, 0x47, 0xD4, 0x54, 0x5D, 0x1B, 0x30, 0x4, 0x4, 0x9B, 0xF0, 0x89, 0xED, 0xC7, 0x9E, 0x9A, 0xBC, 0xD4, 0x1, 0x71, 0xBC, 0xFE, 0xE5, 0x99, 0x1, 0x9, 0x7A, 0x5F, 0xAB, 0x0, 0x1, 0x0, 0x35, 0xFF, 0xEC, 0x4, 0xBF, 0x6, 0x18, 0x0, 0x16, 0x0, 0x0, 0x5, 0x25, 0x27, 0x5, 0x1, 0x26, 0x26, 0x23, 0x22, 0x6, 0x17, 0x13, 0x7, 0x3, 0x26, 0x12, 0x33, 0x32, 0x16, 0x17, 0x1, 0x13, 0x17, 0x3, 0xE9, 0xFE, 0x8E, 0x32, 0x1, 0x19, 0xFE, 0xF6, 0x16, 0x4F, 0x5F, 0x61, 0x55, 0x22, 0x46, 0x93, 0x4B, 0x2F, 0xA0, 0xBD, 0x96, 0x94, 0x2B, 0x1, 0x8, 0x9D, 0x33, 0x14, 0xD4, 0xBC, 0xA1, 0x3, 0xE0, 0x51, 0x78, 0x84, 0x7E, 0xFE, 0xFD, 0x28, 0x1, 0x12, 0xAF, 0x1, 0x0, 0x9A, 0x9E, 0xFC, 0x28, 0x1, 0x11, 0xBC, 0x0, 0x1, 0x0, 0x50, 0x0, 0x0, 0x4, 0x7F, 0x6, 0x1F, 0x0, 0xA, 0x0, 0x0, 0x33, 0x35, 0x21, 0x1, 0x5, 0x37, 0x25, 0x13, 0x7, 0x3, 0x1, 0x50, 0x1, 0x8D, 0x1, 0x3D, 0xFE, 0xEB, 0x32, 0x1, 0x72, 0xD6, 0x33, 0xA0, 0xFE, 0xA6, 0x94, 0x4, 0x9A, 0x9F, 0xBC, 0xD4, 0xFE, 0x8F, 0xBC, 0x1, 0x15, 0xFA, 0xF9, 0x0, 0x1, 0x0, 0x50, 0xFF, 0xEC, 0x4, 0x7F, 0x6, 0xB, 0x0, 0xA, 0x0, 0x0, 0x5, 0x25, 0x27, 0x5, 0x1, 0x21, 0x35, 0x21, 0x1, 0x13, 0x17, 0x3, 0xA9, 0xFE, 0x8E, 0x32, 0x1, 0x15, 0xFE, 0xC3, 0xFE, 0x73, 0x2, 0x2, 0x1, 0x5A, 0xA0, 0x33, 0x14, 0xD4, 0xBC, 0x9F, 0x4, 0x9A, 0x94, 0xFA, 0xF9, 0x1, 0x15, 0xBC, 0x0, 0x1, 0x0, 0x50, 0xFF, 0xEC, 0x4, 0x6C, 0x6, 0x0, 0x0, 0xB, 0x0, 0x0, 0x25, 0x13, 0x1, 0x27, 0x1, 0x33, 0x1, 0x1, 0x25, 0x37, 0x5, 0x3, 0x3, 0x56, 0x53, 0xFD, 0x20, 0x79, 0x1, 0x80, 0x9A, 0xFE, 0x97, 0x2, 0x5B, 0xFE, 0xCD, 0xA8, 0x1, 0x9B, 0x6E, 0x61, 0x1, 0x35, 0xFE, 0x56, 0x86, 0x5, 0x8E, 0xFA, 0xBC, 0x1, 0x5D, 0x53, 0x62, 0x6F, 0xFE, 0x64, 0x0, 0x1, 0x0, 0x50, 0xFF, 0xEC, 0x4, 0x6C, 0x4, 0x3A, 0x0, 0xB, 0x0, 0x0, 0x25, 0x13, 0x1, 0x27, 0x1, 0x33, 0x3, 0x1, 0x25, 0x37, 0x5, 0x3, 0x3, 0x56, 0x53, 0xFD, 0x20, 0x79, 0x1, 0x8, 0x9B, 0xF2, 0x2, 0x5B, 0xFE, 0xCD, 0xA8, 0x1, 0x9B, 0x6E, 0x61, 0x1, 0x35, 0xFE, 0x56, 0x86, 0x3, 0xC8, 0xFC, 0x82, 0x1, 0x5D, 0x53, 0x62, 0x6F, 0xFE, 0x64, 0xFF, 0xFF, 0x0, 0x21, 0x0, 0x0, 0x4, 0x7A, 0x5, 0xB0, 0x0, 0x26, 0x0, 0x31, 0x53, 0x0, 0x0, 0x27, 0x7, 0xA4, 0xFF, 0x91, 0x0, 0xD5, 0x0, 0x6, 0x7, 0xA4, 0x91, 0xA8, 0xFF, 0xFF, 0x0, 0x21, 0x0, 0x0, 0x2, 0xBF, 0x6, 0x0, 0x0, 0x26, 0x0, 0x51, 0x6A, 0x0, 0x0, 0x27, 0x7, 0xA4, 0xFF, 0x91, 0x0, 0xD5, 0x0, 0x6, 0x7, 0xA4, 0x91, 0xA8, 0x0, 0x1, 0x0, 0x5, 0x0, 0x0, 0x4, 0xA8, 0x5, 0xB0, 0x0, 0x19, 0x0, 0x0, 0x21, 0x11, 0x27, 0x22, 0x6, 0x15, 0x27, 0x34, 0x36, 0x33, 0x17, 0x11, 0x33, 0x11, 0x33, 0x32, 0x36, 0x35, 0x17, 0x14, 0x6, 0x23, 0x27, 0x11, 0x21, 0x15, 0x1, 0x17, 0x10, 0x29, 0x38, 0xA1, 0x87, 0x67, 0x24, 0xFC, 0x1, 0x29, 0x39, 0xA1, 0x89, 0x66, 0x15, 0x2, 0x95, 0x2, 0xE9, 0x1, 0x39, 0x2E, 0x8, 0x6E, 0x96, 0x3, 0x2, 0x24, 0xFD, 0x86, 0x39, 0x2E, 0xC, 0x6F, 0x91, 0x1, 0xFE, 0x38, 0xCA, 0xFF, 0xFF, 0x0, 0x21, 0x0, 0x0, 0x5, 0x15, 0x5, 0xB0, 0x0, 0x26, 0x0, 0x35, 0x41, 0x0, 0x0, 0x7, 0x7, 0xA4, 0xFF, 0x91, 0x0, 0xFF, 0x0, 0x2, 0x0, 0x95, 0xFE, 0x4B, 0x4, 0xDE, 0x5, 0xB0, 0x0, 0x8, 0x0, 0x21, 0x0, 0x0, 0x1, 0x11, 0x21, 0x32, 0x36, 0x35, 0x34, 0x26, 0x27, 0x3, 0x6, 0x23, 0x22, 0x26, 0x35, 0x11, 0x21, 0x16, 0x4, 0x15, 0x14, 0x6, 0x7, 0x1, 0x15, 0x21, 0x1, 0x21, 0x11, 0x14, 0x16, 0x33, 0x32, 0x37, 0x1, 0x91, 0x1, 0x4, 0x88, 0x89, 0x80, 0x8D, 0x26, 0x3E, 0x44, 0x9D, 0xBF, 0x2, 0xD, 0xF5, 0x1, 0xB, 0x8E, 0x7D, 0x1, 0x47, 0xFE, 0xF2, 0xFE, 0xDC, 0xFE, 0xE5, 0x57, 0x40, 0x2A, 0x21, 0x4, 0xE5, 0xFE, 0x17, 0x89, 0x68, 0x70, 0x87, 0x1, 0xF9, 0x77, 0x11, 0xC0, 0xB6, 0x5, 0xEF, 0x3, 0xE0, 0xD4, 0x92, 0xC6, 0x34, 0xFD, 0xA0, 0xD, 0x2, 0x31, 0xFD, 0x90, 0x62, 0x45, 0x8, 0x0, 0x4, 0x0, 0x5B, 0xFF, 0x76, 0x3, 0xFC, 0x4, 0xBC, 0x0, 0x2, 0x0, 0x9, 0x0, 0xE, 0x0, 0x32, 0x0, 0x0, 0x1, 0x35, 0x7, 0x3, 0x32, 0x36, 0x37, 0x35, 0x23, 0x3, 0x27, 0x14, 0x17, 0x13, 0x6, 0x13, 0x22, 0x27, 0x7, 0x23, 0x37, 0x26, 0x35, 0x34, 0x36, 0x37, 0x37, 0x26, 0x23, 0x22, 0x6, 0x15, 0x23, 0x34, 0x36, 0x33, 0x32, 0x17, 0x37, 0x33, 0x7, 0x16, 0x15, 0x11, 0x14, 0x17, 0x15, 0x23, 0x26, 0x27, 0x6, 0x2, 0xE0, 0x19, 0xCE, 0x54, 0x7A, 0x19, 0x63, 0xA3, 0x8D, 0x1B, 0x7F, 0x9A, 0x7E, 0x29, 0x26, 0x3D, 0x90, 0x52, 0xA6, 0xFA, 0xE2, 0x6C, 0x30, 0x51, 0x57, 0x67, 0xF2, 0xF1, 0xCD, 0x74, 0x5A, 0x48, 0x90, 0x6A, 0x67, 0x29, 0xF8, 0x12, 0xA, 0x73, 0x2, 0x95, 0x32, 0x32, 0xFE, 0x1A, 0x51, 0x31, 0xCC, 0xFE, 0xB4, 0x97, 0x34, 0x26, 0x1, 0x3, 0x25, 0xFE, 0x20, 0x7, 0x7D, 0xA7, 0x5B, 0xB8, 0xAA, 0xB8, 0x3, 0xDB, 0x26, 0x56, 0x3E, 0x80, 0xCC, 0x25, 0x93, 0xD8, 0x62, 0xA8, 0xFE, 0x20, 0x92, 0x57, 0x11, 0x25, 0x41, 0x7A, 0x0, 0x2, 0x0, 0x8, 0xFF, 0x76, 0x3, 0x34, 0x5, 0x41, 0x0, 0x2, 0x0, 0x1C, 0x0, 0x0, 0x1, 0x37, 0x23, 0x13, 0x22, 0x27, 0x7, 0x23, 0x13, 0x27, 0x11, 0x23, 0x35, 0x33, 0x11, 0x33, 0x11, 0x33, 0x37, 0x33, 0x1, 0x15, 0x14, 0x16, 0x33, 0x32, 0x37, 0x15, 0x6, 0x1, 0xAD, 0x5E, 0x5E, 0x26, 0x8D, 0x47, 0x62, 0x91, 0xB2, 0x3, 0xB3, 0xB3, 0xF2, 0xB6, 0x40, 0x91, 0xFE, 0x79, 0x40, 0x31, 0x2A, 0x2B, 0x46, 0x2, 0xC7, 0xC0, 0xFC, 0x65, 0x51, 0xC7, 0x1, 0x6B, 0x2A, 0x2, 0x7C, 0xB3, 0x1, 0x7, 0xFE, 0xF9, 0x82, 0xFC, 0xE4, 0x76, 0x49, 0x2B, 0xA, 0xBC, 0x18, 0xFF, 0xFF, 0x0, 0x95, 0xFE, 0x99, 0x5, 0xDC, 0x5, 0xB0, 0x0, 0x26, 0x0, 0x2D, 0x0, 0x0, 0x0, 0x7, 0x7, 0xDB, 0x4, 0x8C, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x7A, 0xFE, 0x99, 0x4, 0xBE, 0x6, 0x0, 0x0, 0x26, 0x0, 0x4D, 0x0, 0x0, 0x0, 0x7, 0x7, 0xDB, 0x3, 0x6E, 0x0, 0x0, 0x0, 0x1, 0x0, 0x95, 0xFE, 0x9A, 0x5, 0x4C, 0x5, 0xB0, 0x0, 0x10, 0x0, 0x0, 0x1, 0x23, 0x11, 0x23, 0x1, 0x7, 0x11, 0x23, 0x11, 0x33, 0x11, 0x37, 0x1, 0x21, 0x1, 0x1, 0x33, 0x5, 0x4C, 0xFB, 0x65, 0xFE, 0x4B, 0xA6, 0xFC, 0xFC, 0x8D, 0x1, 0xAA, 0x1, 0x32, 0xFD, 0xE3, 0x1, 0xAD, 0xC2, 0xFE, 0x9A, 0x1, 0x66, 0x2, 0x76, 0xB0, 0xFE, 0x3A, 0x5, 0xB0, 0xFD, 0x54, 0xAE, 0x1, 0xFE, 0xFD, 0x7C, 0xFD, 0x9E, 0x0, 0x1, 0x0, 0x7D, 0xFE, 0xBE, 0x4, 0x7D, 0x6, 0x0, 0x0, 0x10, 0x0, 0x0, 0x1, 0x23, 0x11, 0x23, 0x1, 0x7, 0x11, 0x23, 0x11, 0x33, 0x11, 0x37, 0x1, 0x21, 0x1, 0x1, 0x33, 0x4, 0x7D, 0xF2, 0x6D, 0xFE, 0xBF, 0x6D, 0xF3, 0xF3, 0x4D, 0x1, 0x2B, 0x1, 0x24, 0xFE, 0x6D, 0x1, 0x34, 0xD0, 0xFE, 0xBE, 0x1, 0x42, 0x1, 0xD2, 0x70, 0xFE, 0x9E, 0x6, 0x0, 0xFC, 0x8A, 0x60, 0x1, 0x50, 0xFE, 0x3E, 0xFE, 0x4B, 0x0, 0x1, 0x0, 0x50, 0xFE, 0x9A, 0x4, 0x8C, 0x5, 0xB0, 0x0, 0xB, 0x0, 0x0, 0x1, 0x23, 0x11, 0x21, 0x35, 0x1, 0x21, 0x35, 0x21, 0x15, 0x1, 0x21, 0x4, 0x8C, 0xFB, 0xFC, 0xBF, 0x2, 0xF2, 0xFD, 0x14, 0x4, 0x1E, 0xFD, 0xE, 0x3, 0xA, 0xFE, 0x9A, 0x1, 0x66, 0xA4, 0x4, 0x41, 0xCB, 0xA0, 0xFB, 0xBA, 0x0, 0x1, 0x0, 0x52, 0xFE, 0xBE, 0x3, 0xD9, 0x4, 0x3A, 0x0, 0xB, 0x0, 0x0, 0x1, 0x23, 0x11, 0x21, 0x35, 0x1, 0x21, 0x35, 0x21, 0x15, 0x1, 0x21, 0x3, 0xD9, 0xF3, 0xFD, 0x6C, 0x2, 0x26, 0xFD, 0xE5, 0x3, 0x4E, 0xFD, 0xD6, 0x2, 0x58, 0xFE, 0xBE, 0x1, 0x42, 0x9F, 0x2, 0xD7, 0xC4, 0x99, 0xFD, 0x22, 0x0, 0x2, 0x0, 0x66, 0xFF, 0xEC, 0x5, 0xFD, 0x5, 0xC4, 0x0, 0xB, 0x0, 0x23, 0x0, 0x0, 0x25, 0x32, 0x37, 0x11, 0x26, 0x23, 0x22, 0x2, 0x15, 0x15, 0x14, 0x12, 0x5, 0x6, 0x23, 0x22, 0x27, 0x6, 0x23, 0x20, 0x0, 0x11, 0x35, 0x10, 0x0, 0x21, 0x32, 0x17, 0x37, 0x33, 0x11, 0x14, 0x16, 0x33, 0x32, 0x37, 0x2, 0xDE, 0xB8, 0x5E, 0x5F, 0xB7, 0xD3, 0xA8, 0xB0, 0x3, 0xEA, 0x51, 0x5A, 0x9E, 0x52, 0x9F, 0xEC, 0xFE, 0xCE, 0xFE, 0xC1, 0x1, 0x49, 0x1, 0x28, 0xC1, 0x91, 0xA, 0xBD, 0x4F, 0x3A, 0x19, 0x26, 0xBC, 0x63, 0x3, 0x88, 0x4D, 0xFE, 0xDD, 0xC8, 0x61, 0xD6, 0xFE, 0xEA, 0xA3, 0x2D, 0x67, 0x67, 0x1, 0x92, 0x1, 0x2A, 0x61, 0x1, 0x32, 0x1, 0x89, 0x3D, 0x29, 0xFB, 0xAB, 0x5F, 0x3F, 0x9, 0x0, 0x1, 0x0, 0x95, 0xFE, 0x4B, 0x6, 0x6B, 0x5, 0xB0, 0x0, 0x17, 0x0, 0x0, 0x1, 0x22, 0x27, 0x37, 0x16, 0x33, 0x32, 0x35, 0x11, 0x13, 0x1, 0x23, 0x1, 0x13, 0x11, 0x23, 0x11, 0x21, 0x1, 0x1, 0x21, 0x11, 0x14, 0x6, 0x5, 0x6, 0x47, 0x38, 0xE, 0x32, 0x2D, 0x7B, 0x18, 0xFE, 0x53, 0xB5, 0xFE, 0x53, 0x19, 0xFC, 0x1, 0x47, 0x1, 0xA4, 0x1, 0xA3, 0x1, 0x48, 0xC1, 0xFE, 0x4B, 0x11, 0xCD, 0xD, 0xA5, 0x2, 0x1F, 0x2, 0x80, 0xFB, 0xA0, 0x4, 0x61, 0xFD, 0x7F, 0xFE, 0x20, 0x5, 0xB0, 0xFB, 0xA4, 0x4, 0x5C, 0xFA, 0x11, 0xB6, 0xC0, 0x0, 0x2, 0x0, 0x12, 0x0, 0x0, 0x5, 0x43, 0x5, 0xB0, 0x0, 0x2, 0x0, 0xA, 0x0, 0x0, 0x1, 0x13, 0x21, 0x13, 0x1, 0x21, 0x13, 0x21, 0x13, 0x21, 0x1, 0x2, 0xAA, 0xD3, 0xFE, 0x5A, 0x61, 0xFD, 0xDA, 0x1, 0x8, 0x76, 0x2, 0x34, 0x77, 0x1, 0x8, 0xFD, 0xD8, 0x1, 0x34, 0x2, 0x5D, 0xFC, 0x6F, 0x5, 0xB0, 0xFE, 0xAC, 0x1, 0x54, 0xFA, 0x50, 0x0, 0x2, 0x0, 0x11, 0xFF, 0xEC, 0x5, 0xA7, 0x5, 0xC4, 0x0, 0x17, 0x0, 0x23, 0x0, 0x0, 0x5, 0x22, 0x27, 0x7, 0x23, 0x11, 0x34, 0x26, 0x23, 0x22, 0x7, 0x27, 0x36, 0x33, 0x32, 0x17, 0x36, 0x33, 0x20, 0x0, 0x11, 0x15, 0x10, 0x0, 0x25, 0x32, 0x12, 0x35, 0x35, 0x34, 0x2, 0x23, 0x22, 0x7, 0x11, 0x16, 0x3, 0x36, 0xC5, 0x8C, 0xA, 0xBE, 0x4F, 0x39, 0x1B, 0x24, 0x45, 0x50, 0x5A, 0x9E, 0x52, 0x9F, 0xEC, 0x1, 0x32, 0x1, 0x3F, 0xFE, 0xB7, 0xFE, 0xD1, 0xD4, 0xA7, 0xB0, 0xCB, 0xB8, 0x5E, 0x61, 0x14, 0x3D, 0x29, 0x4, 0x55, 0x5F, 0x3F, 0x9, 0xAD, 0x2D, 0x67, 0x67, 0xFE, 0x6E, 0xFE, 0xD7, 0x61, 0xFE, 0xCD, 0xFE, 0x77, 0xD0, 0x1, 0x24, 0xC8, 0x61, 0xD5, 0x1, 0x16, 0x63, 0xFC, 0x78, 0x4D, 0x0, 0x1, 0x0, 0x17, 0x0, 0x0, 0x4, 0xA4, 0x4, 0x4D, 0x0, 0x11, 0x0, 0x0, 0x21, 0x1, 0x33, 0x13, 0x17, 0x37, 0x13, 0x36, 0x36, 0x33, 0x32, 0x17, 0x7, 0x26, 0x23, 0x22, 0x7, 0x1, 0x1, 0x91, 0xFE, 0x86, 0xFB, 0xD7, 0x12, 0x13, 0x83, 0x24, 0x86, 0x7C, 0x86, 0x67, 0x4E, 0x3D, 0x31, 0x4F, 0x2D, 0xFE, 0xF8, 0x4, 0x3A, 0xFD, 0x3B, 0x5B, 0x5B, 0x1, 0xB3, 0x7C, 0xA9, 0x54, 0xA4, 0x24, 0x81, 0xFD, 0x8, 0x0, 0x1, 0x0, 0x30, 0x0, 0x0, 0x7, 0xF4, 0x5, 0xC4, 0x0, 0x1B, 0x0, 0x0, 0x21, 0x1, 0x33, 0x13, 0x17, 0x37, 0x1, 0x33, 0x1, 0x17, 0x37, 0x13, 0x36, 0x36, 0x33, 0x32, 0x16, 0x17, 0x7, 0x26, 0x23, 0x22, 0x6, 0x7, 0x3, 0x23, 0x1, 0x1, 0x1, 0x82, 0xFE, 0xAE, 0xFC, 0xDC, 0x4, 0x7, 0x1, 0x12, 0xD3, 0x1, 0xC, 0x9, 0x4, 0x96, 0x24, 0x92, 0x7F, 0x56, 0x88, 0x3A, 0x67, 0x4E, 0x3D, 0x27, 0x34, 0x17, 0xFB, 0xF2, 0xFE, 0xEC, 0xFE, 0xE4, 0x5, 0xB0, 0xFB, 0xD5, 0x28, 0x2A, 0x4, 0x29, 0xFB, 0xD5, 0x30, 0x32, 0x2, 0xDE, 0xAD, 0xB2, 0x4F, 0x34, 0xA4, 0x40, 0x41, 0x62, 0xFB, 0xC6, 0x4, 0x26, 0xFB, 0xDA, 0x0, 0x1, 0x0, 0x22, 0x0, 0x0, 0x6, 0xAA, 0x4, 0x4E, 0x0, 0x1B, 0x0, 0x0, 0x21, 0x1, 0x33, 0x13, 0x17, 0x37, 0x13, 0x33, 0x13, 0x17, 0x37, 0x13, 0x36, 0x36, 0x33, 0x32, 0x17, 0x7, 0x26, 0x23, 0x22, 0x7, 0x3, 0x23, 0x3, 0x27, 0x7, 0x3, 0x1, 0x4A, 0xFE, 0xD8, 0xED, 0xA4, 0x8, 0xB, 0xD5, 0xB8, 0xD6, 0xD, 0xC, 0x58, 0x2A, 0x91, 0x68, 0x7E, 0x6F, 0x4D, 0x38, 0x35, 0x5B, 0x28, 0xC8, 0xC8, 0xCF, 0x18, 0x17, 0xCE, 0x4, 0x3A, 0xFD, 0x3C, 0x3F, 0x3D, 0x2, 0xC6, 0xFD, 0x3B, 0x4B, 0x52, 0x1, 0x8B, 0xB5, 0x92, 0x54, 0xA2, 0x24, 0x94, 0xFD, 0x18, 0x2, 0x9C, 0x6E, 0x6D, 0xFD, 0x63, 0x0, 0x2, 0x0, 0x31, 0x0, 0x0, 0x3, 0xF4, 0x4, 0x4E, 0x0, 0x7, 0x0, 0x1C, 0x0, 0x0, 0x1, 0x36, 0x35, 0x34, 0x23, 0x22, 0x7, 0x6, 0x13, 0x3, 0x7, 0x27, 0x37, 0x27, 0x26, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x6, 0x7, 0x17, 0x17, 0x37, 0x13, 0x33, 0x1, 0x1, 0x6C, 0x48, 0x28, 0x23, 0x8, 0x9, 0x47, 0xB9, 0x72, 0x43, 0x7A, 0x4, 0x4C, 0x9F, 0x82, 0x77, 0x78, 0x57, 0x72, 0x50, 0x18, 0x1A, 0xD5, 0xFB, 0xFE, 0x7E, 0x3, 0x11, 0x31, 0x30, 0x28, 0x25, 0x25, 0xFC, 0xB0, 0x2, 0x1, 0x3B, 0xA5, 0x3C, 0xA, 0xD3, 0xCA, 0x77, 0x56, 0x54, 0x7B, 0x48, 0xF5, 0x72, 0x72, 0x2, 0xC5, 0xFB, 0xC6, 0x0, 0x1, 0x0, 0x95, 0x0, 0x0, 0x4, 0x50, 0x5, 0xB0, 0x0, 0x7, 0x0, 0x0, 0x1, 0x21, 0x11, 0x23, 0x11, 0x33, 0x11, 0x21, 0x4, 0x50, 0xFD, 0x41, 0xFC, 0xFC, 0x2, 0xBF, 0x2, 0x88, 0xFD, 0x78, 0x5, 0xB0, 0xFD, 0xA2, 0x0, 0x1, 0x0, 0x7A, 0x0, 0x0, 0x3, 0x52, 0x4, 0x3A, 0x0, 0x7, 0x0, 0x0, 0x1, 0x21, 0x11, 0x23, 0x11, 0x33, 0x11, 0x21, 0x3, 0x52, 0xFE, 0x1B, 0xF3, 0xF3, 0x1, 0xE5, 0x1, 0xB5, 0xFE, 0x4B, 0x4, 0x3A, 0xFE, 0x3D, 0x0, 0x2, 0x0, 0x49, 0xFF, 0xEB, 0x5, 0x8A, 0x4, 0x41, 0x0, 0x19, 0x0, 0x22, 0x0, 0x0, 0x5, 0x22, 0x24, 0x2, 0x35, 0x34, 0x12, 0x37, 0x17, 0x6, 0x6, 0x15, 0x14, 0x16, 0x17, 0x11, 0x34, 0x36, 0x33, 0x32, 0x16, 0x16, 0x15, 0x14, 0x2, 0x4, 0x27, 0x36, 0x36, 0x35, 0x34, 0x26, 0x23, 0x22, 0x15, 0x2, 0xE6, 0xF7, 0xFE, 0xDA, 0x80, 0x7F, 0x72, 0x97, 0x4D, 0x48, 0x85, 0xA9, 0x9F, 0x7B, 0x9E, 0xE9, 0x7F, 0x82, 0xFE, 0xD8, 0x83, 0xB0, 0x8A, 0x85, 0x7E, 0x37, 0x15, 0xAA, 0x1, 0x12, 0x9D, 0xA3, 0x1, 0x8, 0x52, 0x93, 0x4B, 0xC3, 0x5C, 0x87, 0xE2, 0x22, 0x2, 0x84, 0x74, 0x90, 0x96, 0xF5, 0x8F, 0x94, 0xFE, 0xFB, 0xA3, 0xCD, 0x1E, 0xD6, 0x7B, 0x8A, 0xCD, 0x3E, 0x0, 0x2, 0x0, 0x54, 0xFF, 0xEC, 0x5, 0x5A, 0x4, 0x4E, 0x0, 0x7, 0x0, 0x25, 0x0, 0x0, 0x1, 0x22, 0x6, 0x7, 0x21, 0x35, 0x26, 0x26, 0x1, 0x6, 0x23, 0x22, 0x27, 0x6, 0x23, 0x22, 0x0, 0x35, 0x35, 0x10, 0x0, 0x33, 0x32, 0x12, 0x15, 0x15, 0x21, 0x16, 0x16, 0x33, 0x32, 0x37, 0x17, 0x16, 0x16, 0x33, 0x32, 0x37, 0x2, 0x3D, 0x64, 0x7A, 0x12, 0x1, 0xCE, 0x4, 0x61, 0x2, 0xA4, 0x44, 0x95, 0x90, 0x47, 0x86, 0xCB, 0xF1, 0xFE, 0xEC, 0x1, 0x1B, 0xCE, 0xEC, 0xE3, 0xFD, 0x3D, 0xA, 0x95, 0x80, 0xA7, 0x68, 0x88, 0x1A, 0x39, 0x26, 0x43, 0x20, 0x3, 0x8B, 0x8C, 0x7C, 0x12, 0x5F, 0x97, 0xFD, 0x21, 0xC0, 0x73, 0x73, 0x1, 0x2C, 0xDF, 0x29, 0x1, 0x1, 0x1, 0x2D, 0xFE, 0xD4, 0xEA, 0x67, 0x7D, 0xA5, 0x86, 0x23, 0x44, 0x32, 0x76, 0x0, 0x1, 0x0, 0x28, 0xFF, 0xEC, 0x2, 0x60, 0x6, 0x15, 0x0, 0x17, 0x0, 0x0, 0x21, 0x27, 0x6, 0x23, 0x22, 0x27, 0x37, 0x16, 0x33, 0x32, 0x37, 0x11, 0x34, 0x26, 0x23, 0x22, 0x7, 0x35, 0x36, 0x33, 0x32, 0x16, 0x15, 0x11, 0x1, 0x78, 0x6, 0x55, 0x9F, 0x31, 0x25, 0x2, 0x32, 0x30, 0xA9, 0x39, 0x5D, 0x41, 0x23, 0x1D, 0x39, 0x43, 0x7E, 0xD6, 0x79, 0x8D, 0xD, 0xE5, 0x8, 0x80, 0x3, 0x80, 0x56, 0x3E, 0x7, 0xA3, 0xF, 0x8D, 0xB2, 0xFB, 0x2A, 0x0, 0x3, 0x0, 0x50, 0xFF, 0xEC, 0x4, 0x3E, 0x4, 0x4E, 0x0, 0xD, 0x0, 0x1E, 0x0, 0x2B, 0x0, 0x0, 0x13, 0x34, 0x0, 0x33, 0x32, 0x0, 0x15, 0x15, 0x14, 0x0, 0x23, 0x22, 0x0, 0x27, 0x37, 0x14, 0x17, 0x36, 0x36, 0x33, 0x32, 0x16, 0x17, 0x36, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x1, 0x37, 0x36, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x14, 0x16, 0x17, 0x50, 0x1, 0xA, 0xEC, 0xEF, 0x1, 0x9, 0xFE, 0xF7, 0xED, 0xEB, 0xFE, 0xF7, 0x4, 0xF2, 0x10, 0x1C, 0x87, 0x54, 0x53, 0x84, 0x1C, 0xF, 0x7C, 0x89, 0x87, 0x7D, 0x1, 0x6, 0x17, 0x64, 0x46, 0x34, 0x33, 0x4A, 0x3D, 0x2C, 0x2, 0x27, 0xEC, 0x1, 0x3B, 0xFE, 0xC5, 0xEC, 0x15, 0xEB, 0xFE, 0xC5, 0x1, 0x33, 0xE6, 0xD, 0x4C, 0x3F, 0x4D, 0x63, 0x62, 0x4C, 0x3F, 0x5F, 0x8F, 0xD5, 0xD5, 0x8F, 0xFE, 0x88, 0x1, 0x11, 0x69, 0x37, 0x49, 0x49, 0x37, 0x30, 0x43, 0x7, 0x0, 0x1, 0x0, 0x56, 0x0, 0x0, 0x3, 0x97, 0x4, 0x3A, 0x0, 0xB, 0x0, 0x0, 0x33, 0x35, 0x21, 0x35, 0x21, 0x35, 0x21, 0x11, 0x21, 0x35, 0x21, 0x11, 0x56, 0x2, 0x4E, 0xFE, 0x9, 0x1, 0xF7, 0xFD, 0xB2, 0x3, 0x41, 0xC1, 0xE5, 0xC2, 0x1, 0x11, 0xC1, 0xFB, 0xC6, 0xFF, 0xFF, 0x0, 0x29, 0xFD, 0xF5, 0x1, 0x92, 0x3, 0x96, 0x0, 0x7, 0x1, 0x64, 0x0, 0x7, 0xFC, 0xA9, 0x0, 0x1, 0x0, 0x28, 0x2, 0x8C, 0x3, 0x25, 0x5, 0xD5, 0x0, 0x8, 0x0, 0x0, 0x1, 0x1, 0x33, 0x13, 0x17, 0x37, 0x13, 0x33, 0x1, 0x1, 0x4D, 0xFE, 0xDB, 0xD4, 0xA3, 0x9, 0xA, 0xA0, 0xD3, 0xFE, 0xDE, 0x2, 0x8C, 0x3, 0x49, 0xFD, 0xCB, 0x32, 0x32, 0x2, 0x35, 0xFC, 0xB7, 0x0, 0x1, 0x0, 0x4A, 0xFE, 0x4B, 0x4, 0x8A, 0x5, 0xC4, 0x0, 0x2E, 0x0, 0x0, 0x1, 0x6, 0x23, 0x22, 0x0, 0x3, 0x26, 0x35, 0x33, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x34, 0x26, 0x24, 0x24, 0x35, 0x34, 0x24, 0x33, 0x32, 0x0, 0x15, 0x23, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x14, 0x16, 0x17, 0x16, 0x16, 0x15, 0x14, 0x4, 0x23, 0x27, 0x16, 0x33, 0x32, 0x37, 0x4, 0x24, 0x3D, 0x78, 0xCD, 0xFE, 0xA8, 0xAA, 0x56, 0xFD, 0xB8, 0x85, 0x84, 0x85, 0x72, 0xFE, 0x60, 0xFE, 0xFD, 0x1, 0x1D, 0xE7, 0xF7, 0x1, 0x16, 0xFC, 0x86, 0x8E, 0x85, 0x7F, 0x98, 0x99, 0xF7, 0xED, 0xFE, 0xE7, 0xED, 0x50, 0xA7, 0xC0, 0x47, 0x42, 0xFE, 0x66, 0x1B, 0x1, 0x61, 0x1, 0xC, 0x6D, 0x93, 0x8A, 0x7A, 0x6C, 0x58, 0x57, 0x69, 0x81, 0xCA, 0xAE, 0xB0, 0xE3, 0xFE, 0xF9, 0xB6, 0x6B, 0x89, 0x73, 0x56, 0x52, 0x6B, 0x2D, 0x48, 0xD8, 0xAE, 0xB8, 0xD6, 0x4, 0xD7, 0x10, 0x0, 0x1, 0x0, 0x4F, 0xFE, 0x4B, 0x4, 0x8C, 0x5, 0xB0, 0x0, 0x16, 0x0, 0x0, 0x1, 0x22, 0x2E, 0x2, 0x23, 0x23, 0x27, 0x1, 0x21, 0x35, 0x21, 0x15, 0x1, 0x1E, 0x3, 0x33, 0x32, 0x37, 0x15, 0x6, 0x3, 0xE3, 0x7B, 0xB5, 0xAA, 0xCB, 0x90, 0x5C, 0x3, 0x2, 0xF3, 0xFD, 0x14, 0x4, 0x1E, 0xFD, 0x1, 0x7C, 0xB3, 0x8D, 0x84, 0x4E, 0x43, 0x46, 0x42, 0xFE, 0x4B, 0x84, 0xAD, 0x84, 0xA3, 0x4, 0x42, 0xCB, 0x9F, 0xFB, 0xA5, 0x1F, 0x86, 0x92, 0x66, 0x12, 0xC3, 0x1D, 0x0, 0x2, 0xFC, 0xB4, 0x4, 0xA8, 0xFE, 0xBC, 0x7, 0xC7, 0x0, 0x18, 0x0, 0x22, 0x0, 0x0, 0x1, 0x22, 0x26, 0x35, 0x35, 0x36, 0x36, 0x37, 0x36, 0x36, 0x37, 0x33, 0x14, 0x6, 0x7, 0x6, 0x6, 0x7, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x6, 0x27, 0x32, 0x35, 0x34, 0x23, 0x22, 0x15, 0x15, 0x14, 0x16, 0xFD, 0xB9, 0x7F, 0x86, 0x1, 0x83, 0x70, 0x59, 0x20, 0x2, 0x76, 0x56, 0x67, 0x3F, 0x59, 0x10, 0x3D, 0x5F, 0x73, 0x79, 0x86, 0x7D, 0x73, 0x75, 0x73, 0x39, 0x4, 0xA8, 0xA3, 0x73, 0x27, 0xD0, 0xBF, 0x16, 0x13, 0x17, 0x13, 0x58, 0x43, 0x17, 0xE, 0x3B, 0x4A, 0x3A, 0x8F, 0x7A, 0x72, 0x99, 0x74, 0xA2, 0x8A, 0x8A, 0xB, 0x44, 0x53, 0x0, 0x3, 0xFC, 0xD1, 0x4, 0xB1, 0xFE, 0xC2, 0x6, 0xD9, 0x0, 0x6, 0x0, 0xD, 0x0, 0x19, 0x0, 0x0, 0x1, 0x15, 0x33, 0x32, 0x35, 0x34, 0x27, 0x7, 0x15, 0x33, 0x32, 0x35, 0x34, 0x27, 0x5, 0x11, 0x33, 0x32, 0x16, 0x14, 0x7, 0x16, 0x16, 0x15, 0x14, 0x23, 0xFD, 0x60, 0x5E, 0x5D, 0x5C, 0x5F, 0x80, 0x53, 0x4A, 0xFE, 0xE8, 0xEB, 0x6B, 0x83, 0x62, 0x3B, 0x3F, 0xF0, 0x6, 0x70, 0x76, 0x39, 0x3C, 0x1, 0xD6, 0x80, 0x42, 0x3B, 0x3, 0xE9, 0x2, 0x28, 0x4B, 0x9C, 0x20, 0xE, 0x4A, 0x2B, 0x9E, 0x0, 0x1, 0xFD, 0x3, 0x4, 0xB1, 0xFE, 0x7B, 0x6, 0xD9, 0x0, 0x5, 0x0, 0x0, 0x1, 0x15, 0x23, 0x11, 0x23, 0x11, 0xFE, 0x7B, 0xE9, 0x8F, 0x6, 0xD9, 0x74, 0xFE, 0x4C, 0x2, 0x28, 0x0, 0x2, 0xFC, 0x87, 0x4, 0xC, 0xFE, 0xE9, 0x6, 0xD9, 0x0, 0x5, 0x0, 0x14, 0x0, 0x0, 0x1, 0x6, 0x7, 0x33, 0x11, 0x23, 0x3, 0x15, 0x23, 0x11, 0x33, 0x36, 0x36, 0x37, 0x37, 0x21, 0x11, 0x33, 0x11, 0x23, 0x35, 0xFD, 0x93, 0x7, 0x33, 0xB4, 0x78, 0x8E, 0x80, 0x33, 0x2B, 0x2A, 0x3, 0x4, 0x1, 0x86, 0x4D, 0x7F, 0x6, 0x15, 0x97, 0x59, 0x1, 0x40, 0xFE, 0x4C, 0xA5, 0x1, 0x19, 0x2F, 0x6E, 0x5F, 0xB8, 0xFE, 0x4C, 0xFE, 0xE7, 0xA5, 0x0, 0x1, 0xFC, 0x16, 0x4, 0xB1, 0xFF, 0x5E, 0x6, 0xD9, 0x0, 0x15, 0x0, 0x0, 0x1, 0x35, 0x23, 0x7, 0x23, 0x13, 0x3, 0x33, 0x17, 0x33, 0x35, 0x33, 0x15, 0x33, 0x37, 0x33, 0x3, 0x13, 0x23, 0x27, 0x23, 0x15, 0xFD, 0x72, 0x41, 0x77, 0xA4, 0xB5, 0xA4, 0x9C, 0x7C, 0x33, 0x8F, 0x35, 0x7B, 0x9D, 0xA4, 0xB4, 0xA4, 0x77, 0x42, 0x4, 0xB1, 0xD2, 0xD2, 0x1, 0x20, 0x1, 0x8, 0xD8, 0xD8, 0xD8, 0xD8, 0xFE, 0xF8, 0xFE, 0xE0, 0xD2, 0xD2, 0x0, 0x1, 0xFC, 0xD1, 0x4, 0xA8, 0xFE, 0x9F, 0x6, 0xE0, 0x0, 0x1F, 0x0, 0x0, 0x1, 0x22, 0x26, 0x35, 0x33, 0x16, 0x33, 0x32, 0x35, 0x34, 0x23, 0x23, 0x35, 0x33, 0x32, 0x34, 0x23, 0x22, 0x7, 0x23, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x7, 0x16, 0x15, 0x14, 0x6, 0xFD, 0xB4, 0x52, 0x91, 0x83, 0x8, 0x5C, 0x58, 0x55, 0x5C, 0x5C, 0x4C, 0x4F, 0x58, 0x3, 0x84, 0x83, 0x58, 0x64, 0x7E, 0x56, 0x5F, 0x87, 0x4, 0xA8, 0x53, 0x5A, 0x40, 0x43, 0x3F, 0x66, 0x74, 0x36, 0x4D, 0x58, 0x52, 0x4E, 0x50, 0x24, 0x21, 0x5E, 0x4E, 0x57, 0x0, 0x1, 0xFC, 0xD4, 0x4, 0xB1, 0xFE, 0xC8, 0x6, 0xD9, 0x0, 0xC, 0x0, 0x0, 0x1, 0x27, 0x23, 0x15, 0x23, 0x11, 0x33, 0x15, 0x33, 0x37, 0x33, 0x3, 0x13, 0xFE, 0x20, 0x7D, 0x3F, 0x90, 0x90, 0x34, 0x80, 0x9F, 0xAA, 0xBB, 0x4, 0xB1, 0xD2, 0xD2, 0x2, 0x28, 0xD9, 0xD9, 0xFE, 0xF8, 0xFE, 0xE0, 0x0, 0x1, 0xFC, 0x9E, 0x4, 0xB1, 0xFE, 0xB2, 0x6, 0xD9, 0x0, 0xF, 0x0, 0x0, 0x1, 0x27, 0x37, 0x36, 0x36, 0x37, 0x37, 0x21, 0x11, 0x23, 0x11, 0x23, 0x7, 0x6, 0x6, 0x23, 0xFC, 0xA0, 0x2, 0x12, 0x31, 0x21, 0x5, 0xA, 0x1, 0xA1, 0x8F, 0x8E, 0x7, 0x9, 0x5E, 0x70, 0x4, 0xB1, 0x7D, 0x2, 0x6, 0x55, 0x61, 0xED, 0xFD, 0xD8, 0x1, 0xB4, 0x96, 0x92, 0x8C, 0x0, 0x1, 0xFC, 0x66, 0x4, 0xB1, 0xFF, 0xA, 0x6, 0xD8, 0x0, 0xC, 0x0, 0x0, 0x1, 0x3, 0x11, 0x23, 0x11, 0x33, 0x13, 0x13, 0x33, 0x11, 0x23, 0x11, 0x3, 0xFD, 0x81, 0x8B, 0x90, 0xB6, 0x9C, 0x9D, 0xB5, 0x8F, 0x8C, 0x4, 0xB1, 0x1, 0x4E, 0xFE, 0xB2, 0x2, 0x27, 0xFE, 0x8B, 0x1, 0x75, 0xFD, 0xD9, 0x1, 0x4F, 0xFE, 0xB1, 0x0, 0x1, 0xFC, 0xC1, 0x4, 0xB1, 0xFE, 0xAF, 0x6, 0xD9, 0x0, 0xB, 0x0, 0x0, 0x1, 0x35, 0x23, 0x15, 0x23, 0x11, 0x33, 0x15, 0x33, 0x35, 0x33, 0x11, 0xFE, 0x20, 0xD0, 0x8F, 0x8F, 0xD0, 0x8F, 0x4, 0xB1, 0xDB, 0xDB, 0x2, 0x28, 0xD9, 0xD9, 0xFD, 0xD8, 0xFF, 0xFF, 0xFC, 0xB1, 0x4, 0xA3, 0xFE, 0xBF, 0x6, 0xDF, 0x0, 0x6, 0x2, 0x17, 0xEF, 0x0, 0x0, 0x1, 0xFC, 0xC1, 0x4, 0xB1, 0xFE, 0xAF, 0x6, 0xD9, 0x0, 0x7, 0x0, 0x0, 0x1, 0x11, 0x23, 0x11, 0x23, 0x11, 0x21, 0x11, 0xFE, 0x20, 0xD0, 0x8F, 0x1, 0xEE, 0x4, 0xB1, 0x1, 0xB4, 0xFE, 0x4C, 0x2, 0x28, 0xFD, 0xD8, 0xFF, 0xFF, 0xFC, 0xBF, 0x3, 0xBC, 0xFE, 0xBD, 0x6, 0xE0, 0x0, 0xF, 0x2, 0x1A, 0xFB, 0x7D, 0xB, 0x84, 0xC0, 0x0, 0xFF, 0xFF, 0xFC, 0xC2, 0x4, 0xA3, 0xFE, 0xAD, 0x6, 0xDF, 0x0, 0x6, 0x2, 0x19, 0xF6, 0x0, 0x0, 0x1, 0xFC, 0xC5, 0x4, 0xB1, 0xFE, 0xAB, 0x6, 0xD9, 0x0, 0x7, 0x0, 0x0, 0x1, 0x23, 0x11, 0x23, 0x11, 0x23, 0x35, 0x21, 0xFE, 0xAB, 0xAC, 0x8F, 0xAB, 0x1, 0xE6, 0x6, 0x65, 0xFE, 0x4C, 0x1, 0xB4, 0x74, 0xFF, 0xFF, 0xFC, 0xD4, 0x4, 0xB1, 0xFE, 0xDC, 0x6, 0xDB, 0x0, 0x6, 0x2, 0x20, 0xEE, 0x0, 0x0, 0x1, 0xFC, 0xB1, 0x4, 0xE, 0xFE, 0xEF, 0x6, 0xD9, 0x0, 0xB, 0x0, 0x0, 0x1, 0x23, 0x35, 0x21, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0xFE, 0xEB, 0x7B, 0xFE, 0x41, 0x90, 0xD0, 0x8F, 0x4F, 0x4, 0xE, 0xA3, 0x2, 0x28, 0xFE, 0x4C, 0x1, 0xB4, 0xFE, 0x4C, 0x0, 0x1, 0xFC, 0xAB, 0x4, 0xB1, 0xFE, 0x7C, 0x6, 0xDA, 0x0, 0x11, 0x0, 0x0, 0x1, 0x23, 0x35, 0x6, 0x23, 0x22, 0x26, 0x35, 0x35, 0x33, 0x15, 0x14, 0x16, 0x33, 0x32, 0x37, 0x35, 0x33, 0xFE, 0x7C, 0x90, 0x2D, 0x2B, 0x6B, 0x7E, 0x90, 0x2E, 0x37, 0x26, 0x26, 0x90, 0x4, 0xB1, 0xB6, 0x9, 0x69, 0x70, 0xA3, 0xA3, 0x3C, 0x29, 0x9, 0xFE, 0x0, 0x1, 0xFC, 0x49, 0x4, 0xB1, 0xFF, 0x27, 0x6, 0xD9, 0x0, 0xB, 0x0, 0x0, 0x1, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0xFC, 0x49, 0x90, 0x97, 0x90, 0x97, 0x90, 0x4, 0xB1, 0x2, 0x28, 0xFE, 0x4C, 0x1, 0xB4, 0xFE, 0x4C, 0x1, 0xB4, 0xFD, 0xD8, 0x0, 0x1, 0xFC, 0x34, 0x4, 0xE, 0xFF, 0x60, 0x6, 0xD9, 0x0, 0xF, 0x0, 0x0, 0x3, 0x23, 0x35, 0x21, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0xA4, 0x7B, 0xFD, 0x53, 0x8F, 0x97, 0x90, 0x97, 0x90, 0x4F, 0x4, 0xE, 0xA3, 0x2, 0x28, 0xFE, 0x4C, 0x1, 0xB4, 0xFE, 0x4C, 0x1, 0xB4, 0xFE, 0x4C, 0x0, 0x3, 0xFC, 0xB1, 0x4, 0xA3, 0xFE, 0xBF, 0x6, 0xDF, 0x0, 0xA, 0x0, 0xF, 0x0, 0x14, 0x0, 0x0, 0x0, 0x26, 0x35, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x6, 0x3, 0x22, 0x7, 0x33, 0x26, 0x3, 0x32, 0x37, 0x23, 0x16, 0xFD, 0x3F, 0x8E, 0x8E, 0x78, 0x7A, 0x8E, 0x8E, 0x7A, 0x5F, 0x13, 0xE5, 0x13, 0x5F, 0x64, 0x10, 0xE9, 0x10, 0x4, 0xA3, 0x9C, 0x87, 0x7D, 0x9C, 0x9C, 0x88, 0x7C, 0x9C, 0x1, 0xC8, 0x6B, 0x6B, 0xFE, 0xAC, 0x75, 0x75, 0x0, 0x1, 0xFC, 0x19, 0x4, 0xA3, 0xFF, 0x8E, 0x6, 0xD9, 0x0, 0x19, 0x0, 0x0, 0x1, 0x22, 0x26, 0x35, 0x35, 0x34, 0x36, 0x33, 0x21, 0x15, 0x23, 0x11, 0x23, 0x11, 0x21, 0x22, 0x15, 0x15, 0x14, 0x16, 0x33, 0x32, 0x37, 0x33, 0x6, 0x6, 0xFD, 0x1B, 0x85, 0x7D, 0x7E, 0x83, 0x2, 0x74, 0xAB, 0x90, 0xFE, 0xC6, 0x71, 0x33, 0x3E, 0x59, 0xA, 0x88, 0x3, 0x85, 0x4, 0xA3, 0xA4, 0x71, 0x12, 0x71, 0x9E, 0x74, 0xFE, 0x4C, 0x1, 0xB4, 0xA3, 0xA, 0x43, 0x5E, 0x4D, 0x50, 0x71, 0x0, 0x2, 0xFC, 0xBF, 0x4, 0xA8, 0xFE, 0xB1, 0x6, 0xE0, 0x0, 0x9, 0x0, 0x23, 0x0, 0x0, 0x1, 0x32, 0x36, 0x37, 0x35, 0x23, 0x22, 0x6, 0x15, 0x14, 0x17, 0x26, 0x27, 0x6, 0x23, 0x22, 0x26, 0x35, 0x34, 0x37, 0x33, 0x35, 0x34, 0x23, 0x22, 0x15, 0x27, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x15, 0x14, 0x17, 0xFD, 0x9B, 0x25, 0x41, 0xC, 0x53, 0x37, 0x35, 0xD3, 0xA, 0x6, 0x38, 0x63, 0x54, 0x63, 0xEF, 0x5F, 0x50, 0x58, 0x8A, 0x7D, 0x68, 0x60, 0x7C, 0x15, 0x5, 0x16, 0x26, 0x16, 0x50, 0x30, 0x20, 0x3C, 0x64, 0x1B, 0x22, 0x47, 0x5A, 0x4B, 0xA8, 0x4, 0x22, 0x55, 0x42, 0x6, 0x4A, 0x62, 0x63, 0x63, 0xE3, 0x49, 0x3C, 0x0, 0x2, 0xFC, 0xBF, 0x4, 0xA3, 0xFE, 0xB1, 0x6, 0xDF, 0x0, 0x5, 0x0, 0x19, 0x0, 0x0, 0x1, 0x22, 0x7, 0x33, 0x35, 0x26, 0x13, 0x6, 0x6, 0x23, 0x22, 0x26, 0x35, 0x35, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x15, 0x21, 0x16, 0x33, 0x32, 0x37, 0xFD, 0xBE, 0x5E, 0xF, 0xD8, 0x5, 0x81, 0x1B, 0x6B, 0x52, 0x81, 0x8D, 0x8F, 0x71, 0x78, 0x7A, 0xFE, 0x9E, 0xB, 0x7A, 0x5A, 0x30, 0x6, 0x6B, 0x76, 0x9, 0x6D, 0xFE, 0xA0, 0x27, 0x41, 0x99, 0x72, 0x15, 0x85, 0x97, 0x99, 0x77, 0x37, 0x80, 0x3E, 0x0, 0x1, 0xFC, 0x9C, 0x4, 0xB1, 0xFE, 0xD5, 0x6, 0xD9, 0x0, 0xE, 0x0, 0x0, 0x1, 0x3, 0x3, 0x23, 0x13, 0x23, 0x35, 0x33, 0x35, 0x33, 0x15, 0x33, 0x15, 0x23, 0x13, 0xFE, 0x40, 0x87, 0x88, 0x95, 0xBA, 0x69, 0x86, 0x89, 0x89, 0x6A, 0xBA, 0x4, 0xB1, 0x1, 0xA, 0xFE, 0xF6, 0x1, 0x49, 0x74, 0x6B, 0x6B, 0x74, 0xFE, 0xB7, 0x0, 0x2, 0xFC, 0x93, 0x4, 0xA8, 0xFE, 0xDD, 0x7, 0xC2, 0x0, 0x18, 0x0, 0x21, 0x0, 0x0, 0x0, 0x26, 0x35, 0x34, 0x36, 0x37, 0x26, 0x27, 0x27, 0x33, 0x17, 0x16, 0x17, 0x36, 0x37, 0x37, 0x33, 0x7, 0x6, 0x7, 0x16, 0x16, 0x15, 0x14, 0x6, 0x26, 0x35, 0x34, 0x26, 0x27, 0x6, 0x6, 0x15, 0x14, 0xFD, 0x4D, 0x8B, 0x5E, 0x3D, 0x82, 0x25, 0x23, 0x92, 0x1A, 0x1A, 0x5F, 0x5F, 0x19, 0x1B, 0x92, 0x20, 0x24, 0x86, 0x3D, 0x5E, 0x8B, 0x4, 0x3B, 0x2C, 0x2C, 0x3B, 0x4, 0xA8, 0x67, 0x55, 0x49, 0x66, 0x31, 0x76, 0x7D, 0x8B, 0x75, 0x63, 0x5A, 0x5A, 0x5F, 0x79, 0x84, 0x80, 0x7A, 0x31, 0x66, 0x49, 0x55, 0x67, 0x74, 0x53, 0x21, 0x41, 0x25, 0x25, 0x41, 0x21, 0x53, 0x0, 0x2, 0xFC, 0x84, 0x4, 0xB1, 0xFE, 0xE3, 0x7, 0xEC, 0x0, 0x11, 0x0, 0x18, 0x0, 0x0, 0x1, 0x14, 0x6, 0x23, 0x21, 0x11, 0x23, 0x35, 0x33, 0x35, 0x33, 0x15, 0x33, 0x15, 0x23, 0x15, 0x33, 0x20, 0x1, 0x33, 0x32, 0x35, 0x34, 0x23, 0x23, 0xFE, 0xE3, 0x86, 0x6B, 0xFE, 0xF8, 0x66, 0x66, 0x8F, 0x9B, 0x9B, 0x69, 0x1, 0x1, 0xFE, 0x96, 0x79, 0x62, 0x62, 0x79, 0x5, 0x77, 0x64, 0x62, 0x2, 0x5F, 0x67, 0x75, 0x75, 0x67, 0xD6, 0xFE, 0xE6, 0x57, 0x54, 0x0, 0x2, 0xFC, 0x78, 0x4, 0xA3, 0xFF, 0x71, 0x6, 0xDF, 0x0, 0x12, 0x0, 0x1A, 0x0, 0x0, 0x1, 0x22, 0x26, 0x27, 0x23, 0x15, 0x23, 0x11, 0x33, 0x15, 0x33, 0x36, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x6, 0x27, 0x32, 0x35, 0x34, 0x23, 0x22, 0x15, 0x14, 0xFE, 0x6A, 0x6D, 0x8A, 0xD, 0x5F, 0x8F, 0x8F, 0x60, 0x10, 0x88, 0x6A, 0x7A, 0x8E, 0x8E, 0x79, 0x78, 0x79, 0x76, 0x4, 0xA3, 0x80, 0x69, 0xDB, 0x2, 0x28, 0xD9, 0x65, 0x7A, 0x9C, 0x88, 0x7C, 0x9C, 0x74, 0xAF, 0xA5, 0xB0, 0xA4, 0x0, 0x2, 0xFC, 0x7F, 0x4, 0xA8, 0xFF, 0x69, 0x6, 0xE0, 0x0, 0x9, 0x0, 0x29, 0x0, 0x0, 0x1, 0x32, 0x36, 0x37, 0x35, 0x23, 0x22, 0x6, 0x15, 0x14, 0x17, 0x26, 0x27, 0x6, 0x23, 0x22, 0x27, 0x23, 0x15, 0x23, 0x11, 0x33, 0x11, 0x33, 0x36, 0x37, 0x33, 0x35, 0x34, 0x23, 0x22, 0x15, 0x27, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x15, 0x14, 0x17, 0xFE, 0x53, 0x25, 0x41, 0xC, 0x53, 0x36, 0x35, 0xD2, 0xA, 0x6, 0x38, 0x63, 0x9A, 0x19, 0x6D, 0x8F, 0x8F, 0x7E, 0x35, 0xA8, 0x5C, 0x50, 0x58, 0x8A, 0x7E, 0x68, 0x60, 0x7C, 0x14, 0x5, 0x16, 0x26, 0x16, 0x50, 0x30, 0x20, 0x3C, 0x64, 0x1B, 0x22, 0x47, 0x81, 0x78, 0x2, 0x28, 0xFE, 0xC4, 0x5A, 0x2, 0x22, 0x55, 0x42, 0x6, 0x4A, 0x62, 0x63, 0x63, 0xE3, 0x4C, 0x39, 0x0, 0x2, 0xFC, 0x92, 0x4, 0xB1, 0xFE, 0xE1, 0x6, 0xD9, 0x0, 0x4, 0x0, 0x10, 0x0, 0x0, 0x1, 0x7, 0x33, 0x27, 0x27, 0x3, 0x35, 0x23, 0x7, 0x23, 0x13, 0x33, 0x13, 0x23, 0x27, 0x23, 0x15, 0xFD, 0xAB, 0x31, 0x7D, 0x32, 0xD, 0x38, 0x2B, 0x31, 0x92, 0xDF, 0x90, 0xE0, 0x92, 0x32, 0x2C, 0x6, 0x1D, 0x85, 0x85, 0x29, 0xFE, 0x6B, 0x83, 0x83, 0x2, 0x28, 0xFD, 0xD8, 0x83, 0x83, 0x0, 0x2, 0xFC, 0x6C, 0x4, 0xB1, 0xFF, 0x4, 0x6, 0xD9, 0x0, 0x2, 0x0, 0x19, 0x0, 0x0, 0x1, 0x37, 0x23, 0x3, 0x23, 0x37, 0x36, 0x37, 0x27, 0x21, 0x7, 0x16, 0x17, 0x17, 0x23, 0x35, 0x34, 0x26, 0x23, 0x15, 0x23, 0x35, 0x23, 0x22, 0x6, 0x15, 0xFD, 0xB8, 0x47, 0x8E, 0x7C, 0x89, 0x1, 0xD, 0xBF, 0x9E, 0x2, 0x3A, 0x9F, 0xC0, 0xD, 0x1, 0x89, 0x35, 0x4B, 0x89, 0xD, 0x39, 0x37, 0x5, 0xEC, 0x83, 0xFE, 0x42, 0x76, 0xB1, 0xF, 0xF2, 0xF2, 0xF, 0xB1, 0x76, 0x57, 0x49, 0x2C, 0xCC, 0xCC, 0x2A, 0x4B, 0x0, 0x2, 0xFB, 0xCB, 0x4, 0xB1, 0xFF, 0x5F, 0x6, 0xD9, 0x0, 0x2, 0x0, 0x20, 0x0, 0x0, 0x1, 0x37, 0x23, 0x7, 0x23, 0x15, 0x23, 0x11, 0x33, 0x15, 0x21, 0x27, 0x21, 0x7, 0x16, 0x17, 0x17, 0x23, 0x35, 0x34, 0x26, 0x23, 0x15, 0x23, 0x35, 0x23, 0x22, 0x6, 0x15, 0x15, 0x23, 0x35, 0x34, 0xFE, 0x13, 0x47, 0x8E, 0xEF, 0x83, 0x8F, 0x8F, 0x1, 0x39, 0x9D, 0x2, 0x3A, 0x9F, 0xC0, 0xD, 0x1, 0x89, 0x35, 0x4B, 0x89, 0xD, 0x39, 0x37, 0x89, 0x5, 0xEC, 0x83, 0xF2, 0xCC, 0x2, 0x28, 0xF0, 0xF0, 0xF2, 0xF, 0xB1, 0x76, 0x57, 0x49, 0x2C, 0xCC, 0xCC, 0x2A, 0x4B, 0x57, 0x57, 0x46, 0x0, 0x1, 0x0, 0x50, 0x2, 0x8C, 0x2, 0xF9, 0x5, 0xAB, 0x0, 0x5, 0x0, 0x0, 0x1, 0x21, 0x11, 0x23, 0x11, 0x21, 0x2, 0xF9, 0xFE, 0x1C, 0xC5, 0x2, 0xA9, 0x5, 0x4, 0xFD, 0x88, 0x3, 0x1F, 0x0, 0x2, 0x0, 0x50, 0x2, 0x8C, 0x2, 0xF9, 0x5, 0xAB, 0x0, 0x5, 0x0, 0xF, 0x0, 0x0, 0x1, 0x21, 0x11, 0x23, 0x11, 0x21, 0x1, 0x34, 0x36, 0x32, 0x16, 0x15, 0x14, 0x6, 0x22, 0x26, 0x2, 0xF9, 0xFE, 0x1C, 0xC5, 0x2, 0xA9, 0xFE, 0x81, 0x49, 0x82, 0x49, 0x49, 0x82, 0x49, 0x5, 0x4, 0xFD, 0x88, 0x3, 0x1F, 0xFE, 0x3F, 0x35, 0x47, 0x47, 0x35, 0x34, 0x47, 0x47, 0x0, 0x1, 0x0, 0x50, 0x2, 0x8B, 0x2, 0x33, 0x5, 0xBB, 0x0, 0x5, 0x0, 0x0, 0x1, 0x23, 0x11, 0x1, 0x17, 0x1, 0x1, 0x15, 0xC5, 0x1, 0x67, 0x7C, 0xFE, 0xE2, 0x2, 0x8B, 0x1, 0xCA, 0x1, 0x66, 0x7D, 0xFE, 0xE1, 0x0, 0x1, 0x0, 0x50, 0x2, 0x8B, 0x2, 0x33, 0x5, 0xBB, 0x0, 0x5, 0x0, 0x0, 0x1, 0x11, 0x1, 0x37, 0x1, 0x11, 0x1, 0x6E, 0xFE, 0xE2, 0x7D, 0x1, 0x66, 0x2, 0x8B, 0x1, 0x95, 0x1, 0x1E, 0x7D, 0xFE, 0x9A, 0xFE, 0x36, 0x0, 0x2, 0x0, 0x50, 0x2, 0x8B, 0x2, 0x71, 0x5, 0xBB, 0x0, 0x5, 0x0, 0x11, 0x0, 0x0, 0x1, 0x23, 0x11, 0x1, 0x17, 0x1, 0x17, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x6, 0x23, 0x22, 0x26, 0x1, 0x15, 0xC5, 0x1, 0x67, 0x7C, 0xFE, 0xE2, 0x48, 0x49, 0x40, 0x41, 0x4A, 0x4A, 0x41, 0x40, 0x49, 0x2, 0x8B, 0x1, 0xCA, 0x1, 0x66, 0x7D, 0xFE, 0xE1, 0x53, 0x35, 0x47, 0x47, 0x35, 0x34, 0x47, 0x47, 0x0, 0x2, 0x0, 0x50, 0x2, 0x8B, 0x2, 0xE7, 0x5, 0xBB, 0x0, 0x5, 0x0, 0x11, 0x0, 0x0, 0x1, 0x11, 0x1, 0x37, 0x1, 0x11, 0x1, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x6, 0x23, 0x22, 0x26, 0x2, 0x22, 0xFE, 0xE2, 0x7D, 0x1, 0x66, 0xFD, 0x69, 0x49, 0x40, 0x41, 0x49, 0x49, 0x41, 0x40, 0x49, 0x2, 0x8B, 0x1, 0x95, 0x1, 0x1E, 0x7D, 0xFE, 0x9A, 0xFE, 0x36, 0x1, 0x41, 0x35, 0x47, 0x47, 0x35, 0x34, 0x47, 0x47, 0x0, 0x1, 0x0, 0x50, 0x2, 0x8C, 0x4, 0xC7, 0x5, 0xAB, 0x0, 0x7, 0x0, 0x0, 0x1, 0x21, 0x11, 0x23, 0x11, 0x21, 0x35, 0x21, 0x4, 0xC7, 0xFE, 0x27, 0xC5, 0xFE, 0x27, 0x4, 0x77, 0x5, 0x4, 0xFD, 0x88, 0x2, 0x78, 0xA7, 0x0, 0x2, 0x0, 0x50, 0x2, 0x8C, 0x4, 0xC7, 0x5, 0xAB, 0x0, 0x7, 0x0, 0x11, 0x0, 0x0, 0x1, 0x21, 0x11, 0x23, 0x11, 0x21, 0x35, 0x21, 0x1, 0x34, 0x36, 0x32, 0x16, 0x15, 0x14, 0x6, 0x22, 0x26, 0x4, 0xC7, 0xFE, 0x27, 0xC5, 0xFE, 0x27, 0x4, 0x77, 0xFE, 0x8C, 0x48, 0x82, 0x49, 0x49, 0x82, 0x48, 0x5, 0x4, 0xFD, 0x88, 0x2, 0x78, 0xA7, 0xFE, 0x3F, 0x35, 0x47, 0x47, 0x35, 0x34, 0x47, 0x47, 0x0, 0x2, 0x0, 0x50, 0x2, 0x7E, 0x4, 0x35, 0x5, 0xBA, 0x0, 0x9, 0x0, 0x22, 0x0, 0x0, 0x1, 0x34, 0x36, 0x32, 0x16, 0x15, 0x14, 0x6, 0x22, 0x26, 0x1, 0x22, 0x27, 0x37, 0x16, 0x33, 0x32, 0x36, 0x35, 0x35, 0x36, 0x36, 0x33, 0x32, 0x16, 0x17, 0x7, 0x26, 0x23, 0x22, 0x6, 0x15, 0x15, 0x6, 0x6, 0x2, 0xE7, 0x48, 0x82, 0x49, 0x49, 0x82, 0x48, 0xFE, 0x7B, 0xA5, 0x6D, 0x5B, 0x4D, 0x55, 0x4F, 0x44, 0x2, 0xA9, 0x98, 0x5B, 0x80, 0x37, 0x5D, 0x4C, 0x52, 0x4F, 0x46, 0x2, 0xA8, 0x3, 0xEF, 0x35, 0x47, 0x47, 0x35, 0x34, 0x47, 0x47, 0xFE, 0xC3, 0x53, 0x93, 0x39, 0x58, 0x65, 0x71, 0xB7, 0xAA, 0x2C, 0x26, 0x94, 0x39, 0x58, 0x65, 0x71, 0xB7, 0xAA, 0x0, 0x1, 0x0, 0x50, 0x2, 0x7E, 0x4, 0x35, 0x5, 0xBA, 0x0, 0x18, 0x0, 0x0, 0x1, 0x22, 0x27, 0x37, 0x16, 0x33, 0x32, 0x36, 0x35, 0x35, 0x36, 0x36, 0x33, 0x32, 0x16, 0x17, 0x7, 0x26, 0x23, 0x22, 0x6, 0x15, 0x15, 0x6, 0x6, 0x1, 0x62, 0xA5, 0x6D, 0x5B, 0x4D, 0x55, 0x4F, 0x44, 0x2, 0xA9, 0x98, 0x5B, 0x80, 0x37, 0x5D, 0x4C, 0x52, 0x4F, 0x46, 0x2, 0xA8, 0x2, 0x7E, 0x53, 0x93, 0x39, 0x58, 0x65, 0x71, 0xB7, 0xAA, 0x2C, 0x26, 0x94, 0x39, 0x58, 0x65, 0x71, 0xB7, 0xAA, 0x0, 0x1, 0x0, 0x50, 0x2, 0x7E, 0x4, 0x35, 0x5, 0xBA, 0x0, 0x18, 0x0, 0x0, 0x1, 0x22, 0x26, 0x35, 0x35, 0x34, 0x26, 0x23, 0x22, 0x7, 0x27, 0x36, 0x36, 0x33, 0x32, 0x16, 0x17, 0x15, 0x14, 0x16, 0x33, 0x32, 0x37, 0x17, 0x6, 0x3, 0x23, 0x9A, 0xA9, 0x46, 0x4F, 0x50, 0x4E, 0x5D, 0x37, 0x80, 0x5B, 0x9A, 0xA8, 0x1, 0x45, 0x4E, 0x55, 0x4D, 0x5B, 0x6B, 0x2, 0x7E, 0xAE, 0xBC, 0x68, 0x65, 0x58, 0x39, 0x94, 0x26, 0x2C, 0xAC, 0xB9, 0x6D, 0x65, 0x58, 0x39, 0x93, 0x53, 0x0, 0x2, 0x0, 0x50, 0x2, 0x8C, 0x3, 0x5B, 0x5, 0xAB, 0x0, 0x3, 0x0, 0x7, 0x0, 0x0, 0x1, 0x11, 0x21, 0x11, 0x7, 0x11, 0x21, 0x11, 0x2, 0x96, 0xFE, 0x7F, 0xC5, 0x3, 0xB, 0x3, 0x33, 0x1, 0xD1, 0xFE, 0x2F, 0xA7, 0x3, 0x1F, 0xFC, 0xE1, 0x0, 0x1, 0x0, 0x50, 0x2, 0x7B, 0x3, 0x92, 0x5, 0xBB, 0x0, 0x3, 0x0, 0x0, 0x13, 0x37, 0x1, 0x7, 0x50, 0x7D, 0x2, 0xC5, 0x7D, 0x5, 0x3E, 0x7D, 0xFD, 0x3D, 0x7D, 0xFF, 0xFF, 0x0, 0x50, 0x2, 0x7B, 0x3, 0x92, 0x5, 0xBB, 0x0, 0x47, 0x5, 0xA2, 0x3, 0xE2, 0x0, 0x0, 0xC0, 0x0, 0x40, 0x0, 0x0, 0x7, 0x0, 0x5F, 0xFD, 0xE7, 0x5, 0xAD, 0x7, 0xF9, 0x0, 0x8, 0x0, 0xC, 0x0, 0x10, 0x0, 0x1C, 0x0, 0x20, 0x0, 0x24, 0x0, 0x2D, 0x0, 0x0, 0x1, 0x35, 0x34, 0x36, 0x37, 0x17, 0x6, 0x7, 0x15, 0x17, 0x15, 0x21, 0x35, 0x1, 0x15, 0x21, 0x35, 0x1, 0x21, 0x6, 0x22, 0x27, 0x21, 0x35, 0x21, 0x36, 0x32, 0x17, 0x21, 0x1, 0x15, 0x21, 0x35, 0x1, 0x15, 0x21, 0x35, 0x1, 0x15, 0x14, 0x6, 0x7, 0x27, 0x36, 0x37, 0x35, 0x2, 0x93, 0x4F, 0x46, 0x80, 0x4A, 0x2, 0xA5, 0xFD, 0xF4, 0x2, 0xB5, 0xFC, 0xAF, 0x4, 0x54, 0xFD, 0xB1, 0x20, 0xC0, 0x20, 0xFE, 0x1, 0x1, 0xFF, 0x20, 0xC0, 0x20, 0x2, 0x4F, 0xFE, 0xFD, 0xFC, 0xAF, 0x2, 0xA8, 0xFD, 0xF3, 0x1, 0x7F, 0x4E, 0x47, 0x7F, 0x48, 0x3, 0x6, 0x59, 0x4C, 0x57, 0xBF, 0x3E, 0x4D, 0x72, 0x82, 0x5F, 0x84, 0xB7, 0xB7, 0xFE, 0xC4, 0xBA, 0xBA, 0xFD, 0xFB, 0x49, 0x49, 0xB9, 0x4A, 0x4A, 0xFE, 0xB5, 0xBA, 0xBA, 0xFE, 0xC1, 0xB7, 0xB7, 0xFE, 0xC4, 0x4C, 0x56, 0xC0, 0x3E, 0x4D, 0x6F, 0x80, 0x64, 0x0, 0x1, 0x0, 0x47, 0xFE, 0xC8, 0x5, 0x73, 0xFF, 0x6D, 0x0, 0x3, 0x0, 0x0, 0x5, 0x15, 0x21, 0x35, 0x5, 0x73, 0xFA, 0xD4, 0x93, 0xA5, 0xA5, 0x0, 0x1, 0x0, 0x47, 0xFD, 0xEC, 0x5, 0x73, 0xFF, 0x6D, 0x0, 0x7, 0x0, 0x0, 0x1, 0x21, 0x5, 0x27, 0x37, 0x23, 0x35, 0x21, 0x5, 0x73, 0xFC, 0xE7, 0xFE, 0x81, 0x50, 0x99, 0xDD, 0x5, 0x2C, 0xFE, 0xC8, 0xDC, 0x8A, 0x52, 0xA5, 0x0, 0x1, 0x0, 0x45, 0xFD, 0xED, 0x5, 0x71, 0xFF, 0x6D, 0x0, 0x7, 0x0, 0x0, 0x1, 0x25, 0x21, 0x35, 0x21, 0x15, 0x23, 0x17, 0x4, 0xD5, 0xFE, 0x83, 0xFC, 0xED, 0x5, 0x2C, 0xE3, 0x97, 0xFD, 0xED, 0xDB, 0xA5, 0xA5, 0x51, 0x0, 0x1, 0x0, 0x50, 0xFE, 0xC7, 0x1, 0x73, 0x0, 0xF4, 0x0, 0xB, 0x0, 0x0, 0x37, 0x35, 0x32, 0x16, 0x15, 0x14, 0x6, 0x23, 0x35, 0x32, 0x35, 0x34, 0x50, 0x77, 0xAC, 0xAC, 0x77, 0x7D, 0x52, 0xA2, 0x89, 0x91, 0x90, 0x83, 0xA2, 0x71, 0x78, 0x0, 0x3, 0x0, 0x50, 0x0, 0x74, 0x4, 0x48, 0x6, 0x1F, 0x0, 0x3, 0x0, 0xD, 0x0, 0x17, 0x0, 0x0, 0x1, 0x1, 0x27, 0x1, 0x1, 0x34, 0x36, 0x32, 0x16, 0x15, 0x14, 0x6, 0x22, 0x26, 0x1, 0x34, 0x36, 0x32, 0x16, 0x15, 0x14, 0x6, 0x22, 0x26, 0x4, 0x48, 0xFC, 0x84, 0x7C, 0x3, 0x7D, 0xFC, 0xAE, 0x48, 0x82, 0x49, 0x49, 0x82, 0x48, 0x2, 0x5D, 0x49, 0x82, 0x49, 0x49, 0x82, 0x49, 0x5, 0xD4, 0xFA, 0xA0, 0x4B, 0x5, 0x60, 0xFE, 0x7, 0x35, 0x47, 0x47, 0x35, 0x34, 0x47, 0x47, 0xFE, 0x80, 0x35, 0x47, 0x47, 0x35, 0x34, 0x47, 0x47, 0x0, 0x1, 0x0, 0x37, 0xFF, 0xDD, 0x5, 0x16, 0x6, 0x1F, 0x0, 0xF, 0x0, 0x0, 0x25, 0x6, 0x7, 0x6, 0x24, 0x27, 0x26, 0x37, 0x17, 0x6, 0x17, 0x1, 0x17, 0x1, 0x16, 0x37, 0x2, 0xF4, 0x42, 0x80, 0x81, 0xFE, 0xD8, 0x29, 0x29, 0x42, 0x96, 0x3B, 0x5C, 0x3, 0x6B, 0x7B, 0xFC, 0x97, 0x7C, 0x3A, 0x6F, 0x6D, 0x13, 0x12, 0xB0, 0x79, 0x78, 0x70, 0x5B, 0x63, 0x55, 0x5, 0x44, 0x4B, 0xFA, 0xBD, 0x2C, 0x62, 0xFF, 0xFF, 0x0, 0x3B, 0xFF, 0xEC, 0x5, 0x1A, 0x6, 0x2E, 0x0, 0xF, 0x5, 0xAA, 0x5, 0x51, 0x6, 0xB, 0xC0, 0x0, 0x0, 0x3, 0x0, 0x50, 0x0, 0x5, 0x2, 0xA9, 0x4, 0x43, 0x0, 0x9, 0x0, 0x10, 0x0, 0x1A, 0x0, 0x0, 0x1, 0x34, 0x36, 0x32, 0x16, 0x15, 0x14, 0x6, 0x22, 0x26, 0x3, 0x23, 0x13, 0x3, 0x33, 0x1, 0x15, 0x3, 0x34, 0x36, 0x32, 0x16, 0x15, 0x14, 0x6, 0x22, 0x26, 0x1, 0x96, 0x48, 0x82, 0x49, 0x49, 0x82, 0x48, 0x9E, 0xA8, 0xF7, 0xF7, 0xA8, 0x1, 0x20, 0x82, 0x48, 0x82, 0x49, 0x49, 0x82, 0x48, 0x3, 0xC6, 0x35, 0x48, 0x48, 0x35, 0x34, 0x47, 0x47, 0xFD, 0x3, 0x1, 0x90, 0x1, 0x8F, 0xFE, 0x7A, 0x13, 0xFE, 0x65, 0x35, 0x47, 0x47, 0x35, 0x34, 0x47, 0x47, 0x0, 0x2, 0x0, 0x50, 0x1, 0x28, 0x2, 0x7D, 0x3, 0xAF, 0x0, 0x3, 0x0, 0x7, 0x0, 0x0, 0x1, 0x17, 0x5, 0x27, 0x5, 0x17, 0x5, 0x27, 0x2, 0x4B, 0x32, 0xFE, 0x5, 0x32, 0x1, 0xFB, 0x32, 0xFE, 0x5, 0x32, 0x3, 0xAF, 0xBD, 0x88, 0xBD, 0xBA, 0xBD, 0x88, 0xBD, 0x0, 0x3, 0x0, 0x48, 0xFF, 0x2E, 0x3, 0xA4, 0x5, 0xBD, 0x0, 0x7, 0x0, 0x19, 0x0, 0x1F, 0x0, 0x0, 0x0, 0x6, 0x22, 0x26, 0x34, 0x36, 0x32, 0x16, 0x13, 0x21, 0x37, 0x26, 0x26, 0x35, 0x34, 0x36, 0x37, 0x36, 0x36, 0x37, 0x21, 0x13, 0x33, 0x6, 0x6, 0x7, 0x1, 0x14, 0x17, 0x13, 0x6, 0x6, 0x2, 0x92, 0x48, 0x82, 0x49, 0x49, 0x82, 0x48, 0x2B, 0xFE, 0xFF, 0x4, 0xB3, 0xC5, 0x9A, 0x5F, 0x37, 0x26, 0x1, 0x1, 0x6, 0xD, 0xF2, 0x2, 0x81, 0x68, 0xFE, 0x82, 0x89, 0x8, 0x3D, 0x54, 0x5, 0x4, 0x4D, 0x4D, 0x6E, 0x4B, 0x4B, 0xF9, 0xBC, 0xC1, 0xC, 0xC8, 0xAC, 0x85, 0xC2, 0x5A, 0x32, 0x77, 0x4B, 0xFD, 0x67, 0x84, 0xAF, 0x28, 0x1, 0x68, 0xA5, 0x18, 0x1, 0xB7, 0x3B, 0x6F, 0x0, 0x1, 0x0, 0x57, 0xFF, 0xE2, 0x5, 0xD, 0x6, 0x72, 0x0, 0x23, 0x0, 0x0, 0x5, 0x27, 0x37, 0x3, 0x37, 0x13, 0x37, 0x3, 0x37, 0x13, 0x37, 0x3, 0x37, 0x17, 0x37, 0x3, 0x37, 0x17, 0x37, 0x17, 0x7, 0x37, 0x17, 0x5, 0x7, 0x37, 0x17, 0x5, 0x7, 0x25, 0x17, 0x5, 0x7, 0x25, 0x17, 0x5, 0x1, 0x42, 0xB0, 0x63, 0x9E, 0xAE, 0x70, 0x3E, 0x85, 0xAE, 0x56, 0x3F, 0x6C, 0xAE, 0x3D, 0x40, 0x52, 0xAE, 0x23, 0x74, 0xB0, 0x74, 0x7F, 0x2F, 0xFE, 0xD3, 0x40, 0xE0, 0x2F, 0xFE, 0x72, 0x3E, 0x1, 0x45, 0x2F, 0xFE, 0xC, 0x3E, 0x1, 0xA3, 0x2F, 0xFD, 0xAE, 0x1E, 0x66, 0xAC, 0x2, 0x50, 0x2F, 0xFE, 0x5D, 0x6C, 0x1, 0xF3, 0x2F, 0xFE, 0xBA, 0x6C, 0x1, 0x8D, 0x2F, 0xE0, 0x6D, 0x1, 0x2D, 0x2E, 0x7F, 0xC9, 0x66, 0xC9, 0x21, 0xAD, 0x4F, 0x6F, 0x3B, 0xAD, 0x69, 0x6B, 0x57, 0xAE, 0x86, 0x6C, 0x70, 0xAE, 0x9E, 0x0, 0x3, 0x0, 0x64, 0x2, 0xA, 0x3, 0x2A, 0x5, 0xF, 0x0, 0xB, 0x0, 0x17, 0x0, 0x1B, 0x0, 0x0, 0x13, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x6, 0x23, 0x22, 0x26, 0x25, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x6, 0x23, 0x22, 0x26, 0x13, 0x15, 0x21, 0x35, 0x64, 0x44, 0x3A, 0x3B, 0x44, 0x44, 0x3B, 0x3A, 0x44, 0x1, 0xC9, 0x44, 0x3A, 0x3B, 0x44, 0x44, 0x3B, 0x3A, 0x44, 0x9E, 0xFD, 0xF3, 0x4, 0x98, 0x32, 0x45, 0x45, 0x32, 0x31, 0x44, 0x44, 0x30, 0x32, 0x45, 0x45, 0x32, 0x31, 0x44, 0x44, 0xFE, 0x67, 0xC3, 0xC3, 0x0, 0x3, 0x0, 0x46, 0x1, 0xFC, 0x3, 0x23, 0x4, 0xE3, 0x0, 0x7, 0x0, 0x11, 0x0, 0x26, 0x0, 0x0, 0x12, 0x36, 0x32, 0x16, 0x14, 0x6, 0x22, 0x26, 0x37, 0x14, 0x16, 0x32, 0x36, 0x35, 0x34, 0x26, 0x22, 0x6, 0x1, 0x17, 0x14, 0x6, 0x23, 0x22, 0x26, 0x26, 0x23, 0x22, 0x6, 0x15, 0x27, 0x34, 0x36, 0x33, 0x32, 0x16, 0x33, 0x32, 0x36, 0xDB, 0x7F, 0xBE, 0x7E, 0x7E, 0xBE, 0x7F, 0x6D, 0x3F, 0x64, 0x3E, 0x3E, 0x64, 0x3F, 0x1, 0x46, 0x95, 0x80, 0x60, 0x3F, 0x50, 0x48, 0x36, 0x27, 0x34, 0x95, 0x7F, 0x5F, 0x52, 0x6F, 0x4D, 0x26, 0x36, 0x4, 0x69, 0x7A, 0x7A, 0xAC, 0x76, 0x76, 0x56, 0x2B, 0x44, 0x43, 0x2C, 0x2E, 0x44, 0x44, 0xFE, 0xD5, 0xC, 0x6F, 0x91, 0x2C, 0x2D, 0x39, 0x2E, 0x8, 0x6E, 0x96, 0x59, 0x39, 0x0, 0x1, 0x0, 0x50, 0xFE, 0xDD, 0x3, 0xC, 0x2, 0xBE, 0x0, 0x3, 0x0, 0x0, 0x13, 0x37, 0x1, 0x7, 0x50, 0x7D, 0x2, 0x3F, 0x7E, 0x2, 0x75, 0x49, 0xFC, 0x67, 0x48, 0xFF, 0xFF, 0x0, 0x50, 0xFE, 0xDD, 0x3, 0xC, 0x2, 0xBE, 0x0, 0x47, 0x5, 0xB2, 0x3, 0x5C, 0x0, 0x0, 0xC0, 0x0, 0x40, 0x0, 0x0, 0x2, 0x0, 0x4A, 0x2, 0x6E, 0x3, 0x27, 0x4, 0xAC, 0x0, 0x9, 0x0, 0x1E, 0x0, 0x0, 0x1, 0x34, 0x36, 0x32, 0x16, 0x15, 0x14, 0x6, 0x22, 0x26, 0x5, 0x17, 0x14, 0x6, 0x23, 0x22, 0x26, 0x26, 0x23, 0x22, 0x6, 0x15, 0x27, 0x34, 0x36, 0x33, 0x32, 0x16, 0x33, 0x32, 0x36, 0x1, 0x2C, 0x49, 0x82, 0x49, 0x49, 0x82, 0x49, 0x1, 0x66, 0x95, 0x81, 0x5F, 0x40, 0x51, 0x47, 0x36, 0x26, 0x34, 0x95, 0x7F, 0x5F, 0x52, 0x6F, 0x4D, 0x26, 0x36, 0x4, 0x30, 0x35, 0x47, 0x47, 0x35, 0x34, 0x47, 0x47, 0x74, 0xC, 0x6F, 0x91, 0x2D, 0x2C, 0x39, 0x2E, 0x8, 0x6E, 0x96, 0x59, 0x39, 0x0, 0x2, 0x0, 0x4A, 0x1, 0xAF, 0x3, 0x27, 0x3, 0xF3, 0x0, 0x14, 0x0, 0x1E, 0x0, 0x0, 0x1, 0x17, 0x14, 0x6, 0x23, 0x22, 0x26, 0x26, 0x23, 0x22, 0x6, 0x15, 0x27, 0x34, 0x36, 0x33, 0x32, 0x16, 0x33, 0x32, 0x36, 0x1, 0x34, 0x36, 0x32, 0x16, 0x15, 0x14, 0x6, 0x22, 0x26, 0x2, 0x92, 0x95, 0x81, 0x5F, 0x40, 0x51, 0x47, 0x36, 0x26, 0x34, 0x95, 0x7F, 0x5F, 0x52, 0x6F, 0x4D, 0x26, 0x36, 0xFE, 0xAB, 0x48, 0x82, 0x49, 0x49, 0x82, 0x48, 0x3, 0xF3, 0xC, 0x6F, 0x91, 0x2D, 0x2C, 0x39, 0x2E, 0x8, 0x6E, 0x96, 0x59, 0x39, 0xFE, 0x65, 0x35, 0x48, 0x48, 0x35, 0x34, 0x47, 0x47, 0xFF, 0xFF, 0x0, 0x99, 0xFE, 0xF2, 0x3, 0x7B, 0x5, 0xB0, 0x0, 0x26, 0x0, 0x61, 0xEB, 0x0, 0x0, 0x7, 0x7, 0xA4, 0x0, 0x4D, 0xFF, 0x74, 0xFF, 0xFF, 0x0, 0x42, 0xFE, 0xF2, 0x3, 0x23, 0x5, 0xB0, 0x0, 0x27, 0x0, 0x61, 0x1, 0xCD, 0x0, 0x0, 0x0, 0x7, 0x7, 0xA4, 0xFF, 0xB2, 0xFF, 0x74, 0x0, 0x1, 0x0, 0x50, 0x2, 0x51, 0x1, 0xE9, 0x5, 0xB0, 0x0, 0x5, 0x0, 0x0, 0x1, 0x15, 0x23, 0x11, 0x23, 0x11, 0x1, 0xE9, 0xD4, 0xC5, 0x5, 0xB0, 0xA7, 0xFD, 0x48, 0x3, 0x5F, 0x0, 0x1, 0x0, 0x50, 0x2, 0x51, 0x1, 0xE9, 0x5, 0xB0, 0x0, 0x5, 0x0, 0x0, 0x13, 0x35, 0x21, 0x11, 0x23, 0x11, 0x50, 0x1, 0x99, 0xC4, 0x5, 0x9, 0xA7, 0xFC, 0xA1, 0x2, 0xB8, 0x0, 0x1, 0x0, 0x50, 0xFE, 0xF2, 0x1, 0xE9, 0x2, 0x51, 0x0, 0x5, 0x0, 0x0, 0x5, 0x15, 0x21, 0x11, 0x33, 0x11, 0x1, 0xE9, 0xFE, 0x67, 0xC5, 0x67, 0xA7, 0x3, 0x5F, 0xFD, 0x48, 0x0, 0x1, 0x0, 0x50, 0xFE, 0xF2, 0x1, 0xE9, 0x2, 0x51, 0x0, 0x5, 0x0, 0x0, 0x13, 0x35, 0x33, 0x11, 0x33, 0x11, 0x50, 0xD5, 0xC4, 0xFE, 0xF2, 0xA7, 0x2, 0xB8, 0xFC, 0xA1, 0x0, 0x1, 0x0, 0x57, 0x0, 0x6D, 0x4, 0x63, 0x4, 0xE, 0x0, 0xF, 0x0, 0x0, 0x1, 0x15, 0x21, 0x22, 0x24, 0x35, 0x34, 0x24, 0x33, 0x21, 0x15, 0x21, 0x6, 0x11, 0x10, 0x17, 0x4, 0x63, 0xFD, 0xD2, 0xCA, 0xFE, 0xEC, 0x1, 0x14, 0xCA, 0x2, 0x2E, 0xFD, 0xCB, 0xF3, 0xF3, 0x1, 0x30, 0xC3, 0xF0, 0xE0, 0xDF, 0xF2, 0xC3, 0x4, 0xFE, 0xF6, 0xFE, 0xF7, 0x4, 0x0, 0x1, 0x0, 0x4E, 0x0, 0x6D, 0x4, 0x5A, 0x4, 0xE, 0x0, 0xF, 0x0, 0x0, 0x37, 0x35, 0x21, 0x36, 0x11, 0x10, 0x27, 0x21, 0x35, 0x21, 0x32, 0x4, 0x15, 0x14, 0x4, 0x23, 0x4E, 0x2, 0x35, 0xF3, 0xF3, 0xFD, 0xCB, 0x2, 0x2E, 0xCB, 0x1, 0x13, 0xFE, 0xED, 0xCB, 0x6D, 0xC3, 0x4, 0x1, 0x9, 0x1, 0xA, 0x4, 0xC3, 0xF2, 0xDF, 0xE0, 0xF0, 0xFF, 0xFF, 0x0, 0x81, 0xFE, 0x31, 0x4, 0x3A, 0x6, 0x5F, 0x0, 0x26, 0x0, 0xD, 0x0, 0x0, 0x0, 0x7, 0x0, 0xD, 0x1, 0x97, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x28, 0xFE, 0x31, 0x3, 0xE9, 0x6, 0x5F, 0x0, 0x26, 0x0, 0xE, 0x0, 0x0, 0x0, 0x7, 0x0, 0xE, 0x1, 0x97, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x43, 0xFF, 0xE3, 0x4, 0x43, 0x3, 0xED, 0x0, 0x27, 0x1, 0xD4, 0x3, 0x28, 0x4, 0x62, 0x0, 0x27, 0x1, 0xD4, 0x6, 0x14, 0x4, 0x62, 0x0, 0x7, 0x1, 0xD4, 0x4, 0x9E, 0x1, 0x50, 0xFF, 0xFF, 0x0, 0x43, 0xFF, 0xE4, 0x4, 0x43, 0x3, 0xED, 0x0, 0x27, 0x1, 0xD4, 0x3, 0x28, 0x1, 0x51, 0x0, 0x27, 0x1, 0xD4, 0x6, 0x14, 0x1, 0x51, 0x0, 0x7, 0x1, 0xD4, 0x4, 0x9E, 0x4, 0x62, 0xFF, 0xFF, 0x0, 0x43, 0xFF, 0xE2, 0x4, 0x43, 0x3, 0xED, 0x0, 0x27, 0x1, 0xD4, 0x3, 0x28, 0x4, 0x62, 0x0, 0x27, 0x1, 0xD4, 0x6, 0x14, 0x1, 0x4F, 0x0, 0x27, 0x1, 0xD4, 0x6, 0x14, 0x4, 0x62, 0x0, 0x7, 0x1, 0xD4, 0x3, 0x28, 0x1, 0x4F, 0xFF, 0xFF, 0x0, 0x43, 0xFF, 0xE2, 0x4, 0x5E, 0x3, 0xED, 0x0, 0x27, 0x1, 0xD4, 0x3, 0x28, 0x2, 0xD9, 0x0, 0x27, 0x1, 0xD4, 0x4, 0xAB, 0x4, 0x62, 0x0, 0x27, 0x1, 0xD4, 0x6, 0x2F, 0x2, 0xD9, 0x0, 0x27, 0x1, 0xD4, 0x4, 0xAB, 0x1, 0x4F, 0x0, 0x7, 0x1, 0xD4, 0x4, 0xAB, 0x2, 0xD9, 0x0, 0x2, 0x0, 0x3D, 0xFF, 0xF4, 0x3, 0x9F, 0x5, 0xC5, 0x0, 0x18, 0x0, 0x22, 0x0, 0x0, 0x1, 0x23, 0x26, 0x26, 0x27, 0x26, 0x26, 0x35, 0x34, 0x36, 0x33, 0x32, 0x16, 0x17, 0x23, 0x26, 0x26, 0x23, 0x22, 0x15, 0x14, 0x16, 0x17, 0x16, 0x16, 0x13, 0x14, 0x6, 0x22, 0x26, 0x35, 0x34, 0x36, 0x32, 0x16, 0x2, 0x62, 0xE3, 0x1, 0x1C, 0x39, 0x59, 0x93, 0xE3, 0xCC, 0xB7, 0xFA, 0x2, 0xF3, 0x1, 0x77, 0x48, 0xBC, 0x66, 0x3A, 0x5D, 0x34, 0x16, 0x48, 0x82, 0x49, 0x49, 0x82, 0x48, 0x1, 0xA6, 0x4D, 0x69, 0x38, 0x57, 0xC9, 0x87, 0xBE, 0xCC, 0xC3, 0xBC, 0x60, 0x55, 0xC9, 0x58, 0x88, 0x3E, 0x56, 0x8B, 0xFE, 0x43, 0x37, 0x4B, 0x4B, 0x37, 0x38, 0x4B, 0x4B, 0x0, 0x1, 0x0, 0x50, 0x3, 0xFF, 0x1, 0x71, 0x6, 0xCF, 0x0, 0x13, 0x0, 0x0, 0x13, 0x27, 0x32, 0x36, 0x35, 0x34, 0x26, 0x35, 0x34, 0x36, 0x33, 0x17, 0x22, 0x6, 0x15, 0x14, 0x16, 0x15, 0x14, 0x6, 0x73, 0x23, 0x2E, 0x40, 0x59, 0x8A, 0x5B, 0x27, 0x2E, 0x40, 0x59, 0x8D, 0x3, 0xFF, 0x83, 0x37, 0x26, 0x51, 0x6F, 0x5F, 0x5C, 0x75, 0x82, 0x37, 0x27, 0x4F, 0x76, 0x59, 0x5D, 0x75, 0xFF, 0xFF, 0x0, 0x46, 0x2, 0x3B, 0x2, 0x1, 0x3, 0xD7, 0x0, 0x7, 0x1, 0x8B, 0xFF, 0xCD, 0xFD, 0xAD, 0xFF, 0xFF, 0x0, 0x5E, 0x2, 0xD7, 0x1, 0x79, 0x3, 0xE4, 0x0, 0x7, 0x0, 0x13, 0xFF, 0xD6, 0x2, 0xE3, 0xFF, 0xFF, 0x0, 0x57, 0xFE, 0xE1, 0x1, 0x97, 0x1, 0x14, 0x0, 0xF, 0x0, 0x11, 0x1, 0xB4, 0xFF, 0xCC, 0xC0, 0x0, 0xFF, 0xFF, 0x0, 0x50, 0x1, 0xE1, 0x1, 0x6B, 0x2, 0xEE, 0x0, 0x7, 0x0, 0x13, 0xFF, 0xC8, 0x1, 0xED, 0xFF, 0xFF, 0x0, 0x46, 0x0, 0xB3, 0x1, 0x86, 0x2, 0xE6, 0x0, 0x7, 0x0, 0x11, 0x0, 0x29, 0x1, 0xFB, 0x0, 0x2, 0x0, 0x84, 0xFF, 0xEB, 0x1, 0xE1, 0x5, 0x84, 0x0, 0x9, 0x0, 0x11, 0x0, 0x0, 0x13, 0x37, 0x34, 0x36, 0x37, 0x17, 0x6, 0x6, 0x15, 0x15, 0x2, 0x36, 0x32, 0x16, 0x14, 0x6, 0x22, 0x26, 0xA0, 0x1, 0x66, 0x57, 0x83, 0x2B, 0x3B, 0xF7, 0x4A, 0x86, 0x4B, 0x4B, 0x86, 0x4A, 0x3, 0x51, 0xAC, 0x66, 0xDA, 0x47, 0x4D, 0x43, 0x8F, 0x5F, 0xB5, 0xFD, 0x59, 0x4E, 0x4E, 0x72, 0x4D, 0x4D, 0x0, 0x1, 0x0, 0x50, 0x0, 0x0, 0x2, 0xB5, 0x5, 0xB0, 0x0, 0x7, 0x0, 0x0, 0x21, 0x23, 0x11, 0x21, 0x35, 0x21, 0x11, 0x33, 0x2, 0xB5, 0xF2, 0xFE, 0x8D, 0x1, 0x73, 0xF2, 0x3, 0x73, 0xC7, 0x1, 0x76, 0x0, 0x1, 0x0, 0x99, 0x0, 0x0, 0x3, 0x4, 0x5, 0xB0, 0x0, 0x7, 0x0, 0x0, 0x1, 0x21, 0x11, 0x23, 0x11, 0x33, 0x11, 0x21, 0x3, 0x4, 0xFE, 0x88, 0xF3, 0xF3, 0x1, 0x78, 0x3, 0x73, 0xFC, 0x8D, 0x5, 0xB0, 0xFE, 0x8A, 0x0, 0x1, 0x0, 0x50, 0x0, 0x0, 0x4, 0x2E, 0x5, 0xB0, 0x0, 0xB, 0x0, 0x0, 0x21, 0x11, 0x21, 0x35, 0x21, 0x11, 0x33, 0x11, 0x21, 0x15, 0x21, 0x11, 0x1, 0xC3, 0xFE, 0x8D, 0x1, 0x73, 0xF2, 0x1, 0x79, 0xFE, 0x87, 0x1, 0x76, 0xC7, 0x3, 0x73, 0xFC, 0x8D, 0xC7, 0xFE, 0x8A, 0x0, 0x2, 0x0, 0x5B, 0x0, 0x76, 0x4, 0x8A, 0x5, 0xC5, 0x0, 0xB, 0x0, 0x27, 0x0, 0x0, 0x1, 0x32, 0x36, 0x35, 0x34, 0x26, 0x27, 0x27, 0x6, 0x15, 0x14, 0x16, 0x13, 0x26, 0x26, 0x10, 0x37, 0x26, 0x35, 0x34, 0x24, 0x33, 0x32, 0x4, 0x15, 0x23, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x14, 0x16, 0x4, 0x17, 0x16, 0x15, 0x14, 0x4, 0x2, 0x8C, 0x64, 0xA9, 0x95, 0xC6, 0x85, 0x6B, 0x7D, 0x68, 0xDD, 0xFB, 0xAA, 0x85, 0x1, 0x13, 0xE6, 0xEC, 0x1, 0xF, 0xF2, 0x87, 0x82, 0x88, 0x7E, 0x76, 0x1, 0xAE, 0x77, 0x7C, 0xFE, 0xE6, 0x1, 0x44, 0x2C, 0x52, 0x4D, 0x60, 0x39, 0x2B, 0x2A, 0x7B, 0x58, 0x5B, 0xFE, 0xFB, 0x3E, 0xB3, 0x1, 0x70, 0x5A, 0x66, 0xB7, 0xAA, 0xCD, 0xDE, 0xCF, 0x61, 0x89, 0x69, 0x49, 0x53, 0x56, 0x77, 0x56, 0x5A, 0xB9, 0xA1, 0xB0, 0xFF, 0xFF, 0x0, 0xAE, 0x2, 0x6E, 0xB, 0x33, 0x3, 0x32, 0x0, 0x66, 0x5, 0x3A, 0xB0, 0x0, 0x66, 0x66, 0x40, 0x0, 0x0, 0x47, 0x5, 0x3A, 0x4, 0xE8, 0x0, 0x0, 0x66, 0x66, 0x40, 0x0, 0xFF, 0xFF, 0x0, 0xAE, 0x2, 0x6E, 0x10, 0x6A, 0x3, 0x32, 0x0, 0x66, 0x5, 0x3A, 0xB0, 0x0, 0x66, 0x66, 0x40, 0x0, 0x0, 0x67, 0x5, 0x3A, 0xA, 0x1F, 0x0, 0x0, 0x66, 0x66, 0x40, 0x0, 0x0, 0x47, 0x5, 0x3A, 0x4, 0xE8, 0x0, 0x0, 0x66, 0x66, 0x40, 0x0, 0x0, 0x1, 0x0, 0x50, 0xFF, 0x9E, 0x1, 0xF2, 0x1, 0x47, 0x0, 0xB, 0x0, 0x0, 0x5, 0x27, 0x7, 0x27, 0x37, 0x27, 0x37, 0x17, 0x37, 0x17, 0x7, 0x17, 0x1, 0xAF, 0x8E, 0x8E, 0x43, 0x8F, 0x8F, 0x43, 0x8E, 0x8E, 0x43, 0x8F, 0x8F, 0x62, 0x91, 0x91, 0x43, 0x92, 0x91, 0x43, 0x91, 0x91, 0x43, 0x91, 0x92, 0xFF, 0xFF, 0x0, 0x43, 0xFE, 0x5F, 0x1, 0x57, 0x6, 0xDF, 0x0, 0x27, 0x1, 0xD4, 0x3, 0x28, 0xFF, 0xCC, 0x0, 0x27, 0x1, 0xD4, 0x3, 0x28, 0x2, 0xCF, 0x0, 0x27, 0x1, 0xD4, 0x3, 0x28, 0x7, 0x54, 0x0, 0x27, 0x1, 0xD4, 0x3, 0x28, 0x5, 0xD1, 0x0, 0x27, 0x1, 0xD4, 0x3, 0x28, 0x4, 0x4E, 0x0, 0x7, 0x1, 0xD4, 0x3, 0x28, 0x1, 0x4F, 0x0, 0x1, 0x0, 0x50, 0xFE, 0x46, 0x1, 0x47, 0x6, 0x53, 0x0, 0x40, 0x0, 0x0, 0x36, 0x26, 0x35, 0x34, 0x36, 0x35, 0x34, 0x26, 0x35, 0x34, 0x36, 0x34, 0x26, 0x34, 0x36, 0x35, 0x34, 0x26, 0x35, 0x34, 0x36, 0x37, 0x17, 0x6, 0x15, 0x14, 0x16, 0x16, 0x17, 0x15, 0x14, 0x6, 0x6, 0x14, 0x16, 0x16, 0x17, 0x15, 0x14, 0x6, 0x6, 0x14, 0x16, 0x16, 0x14, 0x6, 0x6, 0x15, 0x14, 0x16, 0x16, 0x17, 0x15, 0x14, 0x6, 0x6, 0x15, 0x14, 0x17, 0x7, 0x26, 0x26, 0x35, 0x34, 0x36, 0xAA, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x6A, 0x4E, 0x33, 0x4D, 0x2D, 0x2B, 0x1, 0x2C, 0x2D, 0x2D, 0x2B, 0x1, 0x2C, 0x2D, 0x2D, 0x2C, 0x2C, 0x2D, 0x2D, 0x2B, 0x1, 0x2C, 0x2D, 0x4B, 0x33, 0x4D, 0x69, 0x5A, 0x1D, 0x4A, 0x4B, 0x4C, 0x4A, 0x37, 0x38, 0x4A, 0x4C, 0x4B, 0x4B, 0x6E, 0x4A, 0x98, 0x4A, 0x37, 0x38, 0x50, 0x55, 0x44, 0x6C, 0x12, 0x7C, 0x1D, 0x39, 0x2A, 0x35, 0x39, 0x30, 0x5, 0x32, 0x3C, 0x35, 0x54, 0x35, 0x39, 0x30, 0x5, 0x32, 0x3C, 0x35, 0x54, 0x35, 0x3C, 0x66, 0x3B, 0x34, 0x2B, 0x2A, 0x35, 0x39, 0x30, 0x5, 0x33, 0x3B, 0x35, 0x2A, 0x3B, 0x1A, 0x7D, 0x13, 0x6D, 0x48, 0x50, 0x4F, 0x0, 0x3, 0x0, 0x41, 0xFE, 0xF3, 0x4, 0x44, 0x5, 0xB0, 0x0, 0x5, 0x0, 0xB, 0x0, 0x2D, 0x0, 0x0, 0x1, 0x37, 0x11, 0x27, 0x7, 0x11, 0x1, 0x14, 0x17, 0x11, 0x6, 0x15, 0x1, 0x27, 0x11, 0x23, 0x11, 0x26, 0x26, 0x35, 0x35, 0x34, 0x36, 0x37, 0x35, 0x33, 0x15, 0x37, 0x17, 0x35, 0x33, 0x15, 0x16, 0x17, 0x7, 0x26, 0x27, 0x11, 0x36, 0x37, 0x17, 0x6, 0x7, 0x11, 0x23, 0x11, 0x2, 0x69, 0x2B, 0x2C, 0x1A, 0xFE, 0xE5, 0x74, 0x74, 0x1, 0x38, 0x1D, 0xA7, 0x9F, 0xC7, 0xC7, 0x9F, 0xA7, 0x1D, 0x29, 0xA7, 0xA1, 0x68, 0x8E, 0x2A, 0x51, 0x59, 0x28, 0x72, 0x55, 0x9E, 0xA7, 0x2, 0x64, 0x2, 0x2, 0x26, 0x1, 0x1, 0xFD, 0xD9, 0x1, 0x2, 0x87, 0x49, 0x1, 0xC0, 0x4B, 0x82, 0xFE, 0x17, 0x1, 0xFD, 0x51, 0x2, 0xC8, 0x2D, 0xE1, 0x9E, 0x23, 0x9E, 0xE1, 0x2D, 0x7A, 0x61, 0x1, 0x1, 0x61, 0x74, 0x24, 0x6C, 0x8C, 0x33, 0x1C, 0xFE, 0x14, 0x1A, 0x26, 0x93, 0x4F, 0x27, 0xFD, 0x39, 0x2, 0xAF, 0xFF, 0xFF, 0x0, 0x64, 0x1, 0x76, 0x2, 0x71, 0x3, 0x5A, 0x0, 0x27, 0x0, 0x12, 0x0, 0x1D, 0xFF, 0x6C, 0x0, 0x7, 0x0, 0x12, 0x0, 0x1D, 0x0, 0x8D, 0x0, 0x1, 0x0, 0x5B, 0xFE, 0xAB, 0x1, 0x98, 0x0, 0xEB, 0x0, 0x8, 0x0, 0x0, 0x37, 0x33, 0x15, 0x16, 0x17, 0x7, 0x26, 0x26, 0x27, 0x5B, 0xE5, 0x3, 0x55, 0x7F, 0x53, 0x69, 0x1, 0xEB, 0xCC, 0xA0, 0x87, 0x4D, 0x47, 0xDE, 0x64, 0x0, 0x2, 0x0, 0x5B, 0xFE, 0xAB, 0x2, 0xEE, 0x0, 0xEB, 0x0, 0x8, 0x0, 0x11, 0x0, 0x0, 0x25, 0x33, 0x15, 0x16, 0x17, 0x7, 0x26, 0x26, 0x35, 0x25, 0x33, 0x15, 0x16, 0x17, 0x7, 0x26, 0x26, 0x27, 0x1, 0xB1, 0xE4, 0x2, 0x57, 0x80, 0x54, 0x69, 0xFE, 0xAA, 0xE5, 0x3, 0x55, 0x7F, 0x53, 0x69, 0x1, 0xEB, 0xC7, 0xA5, 0x87, 0x4D, 0x48, 0xE0, 0x65, 0xB3, 0xCC, 0xA0, 0x87, 0x4D, 0x47, 0xDE, 0x64, 0x0, 0x1, 0x0, 0x50, 0xFE, 0x87, 0x4, 0x8C, 0x5, 0xB0, 0x0, 0x1C, 0x0, 0x0, 0x1, 0x22, 0x6, 0x7, 0x27, 0x36, 0x36, 0x33, 0x32, 0x16, 0x33, 0x32, 0x35, 0x21, 0x35, 0x1, 0x21, 0x35, 0x21, 0x15, 0x1, 0x21, 0x15, 0x31, 0x6, 0x6, 0x23, 0x22, 0x26, 0x1, 0xE7, 0x3D, 0x56, 0x2B, 0x7D, 0x4D, 0x92, 0x58, 0x6E, 0xBC, 0x59, 0x6D, 0xFC, 0x7D, 0x2, 0xF2, 0xFD, 0x14, 0x4, 0x1E, 0xFD, 0xE, 0x3, 0xA, 0x1, 0x7A, 0xA0, 0x70, 0xBE, 0xFE, 0xFC, 0x46, 0x2F, 0x8B, 0x51, 0x55, 0x6B, 0xB3, 0xA4, 0x4, 0x41, 0xCB, 0xA0, 0xFB, 0xBA, 0xCA, 0x97, 0xD8, 0x6B, 0x0, 0x1, 0x0, 0x52, 0xFE, 0x8C, 0x3, 0xC0, 0x4, 0x3A, 0x0, 0x1D, 0x0, 0x0, 0x1, 0x22, 0x6, 0x7, 0x27, 0x36, 0x36, 0x33, 0x32, 0x16, 0x33, 0x32, 0x36, 0x35, 0x21, 0x35, 0x1, 0x21, 0x35, 0x21, 0x15, 0x1, 0x21, 0x15, 0x31, 0x14, 0x6, 0x23, 0x22, 0x26, 0x1, 0x6D, 0x20, 0x32, 0x47, 0x82, 0x48, 0x85, 0x4B, 0x60, 0xA5, 0x4C, 0x34, 0x18, 0xFD, 0x4B, 0x2, 0x26, 0xFD, 0xE5, 0x3, 0x4E, 0xFD, 0xD6, 0x2, 0x3F, 0x62, 0x87, 0x66, 0xB1, 0xFE, 0xFC, 0x1E, 0x52, 0x7C, 0x55, 0x5B, 0x6B, 0x5B, 0x58, 0x9F, 0x2, 0xD7, 0xC4, 0x99, 0xFD, 0x22, 0xC3, 0xA5, 0xCA, 0x6B, 0xFF, 0xFF, 0x0, 0x50, 0xFE, 0x87, 0x4, 0x8C, 0x5, 0xB0, 0x0, 0x26, 0x5, 0xD9, 0x0, 0x0, 0x0, 0x7, 0x7, 0xA4, 0x0, 0x80, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x52, 0xFE, 0x8C, 0x3, 0xC0, 0x4, 0x3A, 0x0, 0x26, 0x5, 0xDA, 0x0, 0x0, 0x0, 0x7, 0x7, 0xA4, 0x0, 0x15, 0xFF, 0x37, 0x0, 0x1, 0x0, 0x4A, 0xFF, 0xEC, 0x4, 0x8A, 0x5, 0xC4, 0x0, 0x24, 0x0, 0x0, 0x5, 0x22, 0x24, 0x35, 0x34, 0x36, 0x37, 0x36, 0x36, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x23, 0x34, 0x0, 0x33, 0x32, 0x4, 0x10, 0x4, 0x4, 0x6, 0x15, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x33, 0x14, 0x6, 0x4, 0x2, 0x50, 0xEC, 0xFE, 0xE6, 0xEC, 0xFB, 0x9A, 0x95, 0x7F, 0x86, 0x8D, 0x86, 0xFC, 0x1, 0x16, 0xF7, 0xE7, 0x1, 0x1D, 0xFE, 0xF7, 0xFE, 0x66, 0x73, 0x86, 0x83, 0x86, 0xB7, 0xFD, 0xA8, 0xFE, 0xFA, 0x14, 0xD6, 0xB8, 0xAD, 0xD9, 0x49, 0x2D, 0x6B, 0x51, 0x56, 0x73, 0x89, 0x6B, 0xB6, 0x1, 0x7, 0xE3, 0xFE, 0xA0, 0xCA, 0x7F, 0x69, 0x57, 0x58, 0x6C, 0x7A, 0x8A, 0x99, 0xCD, 0x66, 0x0, 0x1, 0x0, 0x57, 0xFF, 0xEC, 0x3, 0xD6, 0x4, 0x4E, 0x0, 0x25, 0x0, 0x0, 0x5, 0x22, 0x26, 0x35, 0x34, 0x36, 0x37, 0x36, 0x36, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x23, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x6, 0x7, 0x6, 0x6, 0x15, 0x14, 0x16, 0x33, 0x32, 0x36, 0x37, 0x33, 0x14, 0x6, 0x2, 0xD, 0xC7, 0xEF, 0xD4, 0xBC, 0x83, 0x5B, 0x58, 0x5C, 0x5F, 0x60, 0xF3, 0xE7, 0xCA, 0xC1, 0xE1, 0xD8, 0xB2, 0x8E, 0x54, 0x65, 0x5F, 0x51, 0x8A, 0x5, 0xEC, 0xEA, 0x14, 0xB8, 0x90, 0x91, 0x92, 0x28, 0x1C, 0x40, 0x35, 0x36, 0x52, 0x63, 0x3F, 0x92, 0xC6, 0xC3, 0x85, 0x88, 0x94, 0x25, 0x1E, 0x4C, 0x35, 0x3A, 0x4A, 0x50, 0x64, 0x86, 0xE4, 0x0, 0x1, 0x0, 0xA7, 0xFF, 0xEC, 0x2, 0x64, 0x5, 0xCC, 0x0, 0xD, 0x0, 0x0, 0x13, 0x33, 0x11, 0x14, 0x16, 0x33, 0x32, 0x37, 0x15, 0x6, 0x23, 0x22, 0x26, 0x35, 0xA7, 0xF8, 0x3F, 0x31, 0x2A, 0x2B, 0x43, 0x5D, 0x7C, 0xA1, 0x5, 0xCC, 0xFB, 0x5E, 0x49, 0x2B, 0xA, 0xBC, 0x18, 0x89, 0xA7, 0xFF, 0xFF, 0x0, 0xAA, 0xFF, 0xF4, 0x2, 0x62, 0x4, 0x3A, 0x0, 0x6, 0x2, 0x42, 0x0, 0x0, 0x0, 0x1, 0x0, 0x8, 0x0, 0x0, 0x4, 0xD6, 0x5, 0xB0, 0x0, 0xE, 0x0, 0x0, 0x1, 0x1, 0x21, 0x1, 0x23, 0x35, 0x33, 0x11, 0x33, 0x11, 0x33, 0x15, 0x23, 0x1, 0x21, 0x2, 0x6F, 0xFE, 0xB2, 0xFE, 0xE7, 0x1, 0xE2, 0xE6, 0xEC, 0xFE, 0xEC, 0xE6, 0x1, 0xE2, 0xFE, 0xE8, 0x2, 0xB1, 0xFD, 0x4F, 0x3, 0x8D, 0xAF, 0x1, 0x74, 0xFE, 0x8C, 0xAF, 0xFC, 0x73, 0x0, 0x1, 0x0, 0x14, 0x0, 0x0, 0x4, 0x3D, 0x4, 0x3A, 0x0, 0xE, 0x0, 0x0, 0x21, 0x1, 0x1, 0x21, 0x1, 0x23, 0x35, 0x33, 0x35, 0x33, 0x15, 0x33, 0x15, 0x23, 0x1, 0x3, 0x32, 0xFE, 0xF6, 0xFE, 0xF7, 0xFE, 0xF5, 0x1, 0x8D, 0xCE, 0xD9, 0xF3, 0xE0, 0xD0, 0x1, 0x8E, 0x2, 0x4, 0xFD, 0xFC, 0x2, 0xBA, 0xAB, 0xD5, 0xD5, 0xAB, 0xFD, 0x46, 0x0, 0x2, 0x0, 0x47, 0xFF, 0xEC, 0x4, 0x84, 0x5, 0xB0, 0x0, 0xB, 0x0, 0x27, 0x0, 0x0, 0x24, 0x36, 0x35, 0x34, 0x26, 0x27, 0x27, 0x6, 0x6, 0x15, 0x14, 0x16, 0x17, 0x22, 0x24, 0x35, 0x34, 0x36, 0x37, 0x37, 0x26, 0x27, 0x3, 0x21, 0x13, 0x16, 0x17, 0x36, 0x37, 0x13, 0x21, 0x3, 0x6, 0x7, 0x17, 0x16, 0x16, 0x15, 0x14, 0x4, 0x2, 0xD0, 0x68, 0x5C, 0x27, 0x4F, 0x83, 0x50, 0x69, 0x6A, 0xB7, 0xFE, 0xEC, 0x88, 0x49, 0x57, 0xB0, 0x5F, 0x6D, 0x1, 0xA, 0x5E, 0x42, 0x75, 0x79, 0x3D, 0x5E, 0x1, 0xA, 0x6F, 0x5C, 0xB0, 0x57, 0x50, 0x80, 0xFE, 0xEC, 0xB0, 0x63, 0x46, 0x3F, 0x59, 0x21, 0x43, 0x6E, 0x54, 0x3A, 0x46, 0x63, 0xC4, 0xB3, 0xB1, 0x6F, 0xA0, 0x3C, 0x48, 0xAC, 0xF9, 0x1, 0x28, 0xFE, 0xF4, 0xB8, 0x7B, 0x84, 0xAD, 0x1, 0xE, 0xFE, 0xD2, 0xEE, 0xB2, 0x48, 0x43, 0x9B, 0x6C, 0xB1, 0xB3, 0x0, 0x2, 0x0, 0x47, 0xFF, 0xEC, 0x4, 0x92, 0x6, 0x0, 0x0, 0xA, 0x0, 0x25, 0x0, 0x0, 0x24, 0x36, 0x35, 0x34, 0x27, 0x27, 0x7, 0x6, 0x15, 0x14, 0x16, 0x6, 0x24, 0x35, 0x34, 0x37, 0x37, 0x26, 0x2, 0x27, 0x27, 0x21, 0x17, 0x12, 0x17, 0x36, 0x13, 0x37, 0x21, 0x7, 0x6, 0x2, 0x7, 0x17, 0x16, 0x15, 0x14, 0x4, 0x2, 0xD6, 0x6A, 0x40, 0x94, 0x98, 0x3B, 0x69, 0x4C, 0xFE, 0xED, 0x83, 0xAB, 0x6B, 0xBE, 0x2B, 0x36, 0x1, 0x9, 0x2D, 0x36, 0xB9, 0xB9, 0x36, 0x2D, 0x1, 0xA, 0x37, 0x2B, 0xC0, 0x6A, 0xB3, 0x7C, 0xFE, 0xED, 0xB0, 0x63, 0x46, 0x40, 0x39, 0x80, 0x85, 0x33, 0x41, 0x46, 0x63, 0xC4, 0xB3, 0xB1, 0x8E, 0x6E, 0x8F, 0x67, 0x1, 0x1B, 0xC7, 0xDC, 0xCB, 0xFE, 0xEC, 0xBD, 0xBD, 0x1, 0x14, 0xCB, 0xDC, 0xC7, 0xFE, 0xE6, 0x67, 0x96, 0x69, 0x8D, 0xB1, 0xB3, 0x0, 0x1, 0x0, 0x68, 0xFF, 0xEB, 0x8, 0x29, 0x5, 0xC5, 0x0, 0x2C, 0x0, 0x0, 0x5, 0x22, 0x26, 0x27, 0x6, 0x6, 0x23, 0x20, 0x0, 0x11, 0x11, 0x10, 0x0, 0x21, 0x15, 0x22, 0x6, 0x15, 0x11, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x11, 0x33, 0x11, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x11, 0x34, 0x26, 0x23, 0x35, 0x20, 0x0, 0x11, 0x11, 0x10, 0x0, 0x5, 0xCC, 0x70, 0xCB, 0x48, 0x49, 0xCB, 0x70, 0xFE, 0xF4, 0xFE, 0xAF, 0x1, 0x52, 0x1, 0x11, 0xA9, 0xBE, 0xBD, 0xA4, 0x7F, 0x87, 0xFC, 0x86, 0x7F, 0xA4, 0xBD, 0xBE, 0xA9, 0x1, 0x11, 0x1, 0x52, 0xFE, 0xB0, 0x15, 0x45, 0x45, 0x45, 0x45, 0x1, 0x61, 0x1, 0x9, 0x1, 0x6, 0x1, 0xA, 0x1, 0x60, 0xCD, 0xF1, 0xAA, 0xFE, 0xF8, 0xAB, 0xF5, 0x88, 0x73, 0x1, 0x62, 0xFE, 0x9E, 0x73, 0x88, 0xF5, 0xAB, 0x1, 0x8, 0xAA, 0xF1, 0xCD, 0xFE, 0xA0, 0xFE, 0xF6, 0xFE, 0xFA, 0xFE, 0xF7, 0xFE, 0x9F, 0x0, 0x1, 0x0, 0x4F, 0xFF, 0xEB, 0x6, 0x7C, 0x4, 0x4E, 0x0, 0x2A, 0x0, 0x0, 0x5, 0x22, 0x27, 0x6, 0x23, 0x22, 0x0, 0x35, 0x35, 0x34, 0x0, 0x33, 0x15, 0x22, 0x6, 0x15, 0x15, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x11, 0x33, 0x11, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x35, 0x34, 0x26, 0x23, 0x35, 0x32, 0x0, 0x17, 0x15, 0x14, 0x0, 0x4, 0x77, 0xA9, 0x68, 0x69, 0xA9, 0xF9, 0xFE, 0xF4, 0x1, 0x3, 0xEE, 0x87, 0x77, 0x7F, 0x93, 0x56, 0x42, 0xF3, 0x41, 0x57, 0x93, 0x7F, 0x77, 0x87, 0xED, 0x1, 0x1, 0x3, 0xFE, 0xF4, 0x15, 0x4D, 0x4D, 0x1, 0x45, 0xD8, 0x2A, 0xD8, 0x1, 0x44, 0xC4, 0xDD, 0x7B, 0x2A, 0x7C, 0xDD, 0x4C, 0x40, 0x1, 0x8, 0xFE, 0xF8, 0x40, 0x4C, 0xDD, 0x7C, 0x2A, 0x7B, 0xDD, 0xC4, 0xFE, 0xC2, 0xD5, 0x33, 0xD8, 0xFE, 0xBB, 0x0, 0x2, 0x0, 0x18, 0x0, 0x0, 0x5, 0xD4, 0x5, 0xB0, 0x0, 0xC, 0x0, 0x14, 0x0, 0x0, 0x21, 0x11, 0x21, 0x35, 0x21, 0x11, 0x21, 0x16, 0x4, 0x15, 0x14, 0x4, 0x23, 0x25, 0x21, 0x32, 0x36, 0x34, 0x26, 0x23, 0x21, 0x1, 0xA3, 0xFE, 0x75, 0x2, 0x88, 0x1, 0x2D, 0xF6, 0x1, 0x11, 0xFE, 0xED, 0xF8, 0xFE, 0xD7, 0x1, 0x29, 0x8C, 0x83, 0x83, 0x8C, 0xFE, 0xD7, 0x4, 0xED, 0xC3, 0xFD, 0xD3, 0x1, 0xF3, 0xC9, 0xC8, 0xFE, 0xCA, 0x99, 0xCA, 0x8B, 0x0, 0x2, 0x0, 0x1F, 0x0, 0x0, 0x4, 0xEB, 0x4, 0x3A, 0x0, 0xC, 0x0, 0x14, 0x0, 0x0, 0x21, 0x11, 0x21, 0x35, 0x21, 0x11, 0x33, 0x16, 0x16, 0x15, 0x14, 0x6, 0x23, 0x27, 0x33, 0x32, 0x36, 0x34, 0x26, 0x23, 0x23, 0x1, 0x58, 0xFE, 0xC7, 0x2, 0x2C, 0xF1, 0xCF, 0xE0, 0xE2, 0xD1, 0xED, 0xED, 0x69, 0x57, 0x57, 0x69, 0xED, 0x3, 0x77, 0xC3, 0xFE, 0xA8, 0x1, 0xCE, 0xA1, 0x9D, 0xD5, 0xC2, 0x6A, 0x84, 0x70, 0xFF, 0xFF, 0xFF, 0xCF, 0x0, 0x0, 0x7, 0x17, 0x5, 0xB0, 0x0, 0x27, 0x0, 0x2E, 0x5, 0x77, 0x0, 0x0, 0x0, 0x6, 0x5, 0xE7, 0xB7, 0x0, 0xFF, 0xFF, 0x0, 0x1F, 0x0, 0x0, 0x6, 0x92, 0x4, 0x3A, 0x0, 0x27, 0x0, 0x8E, 0x5, 0xF, 0x0, 0x0, 0x0, 0x6, 0x5, 0xE8, 0x0, 0x0, 0x0, 0x2, 0x0, 0x96, 0x0, 0x0, 0x6, 0x3F, 0x5, 0xB0, 0x0, 0x16, 0x0, 0x1E, 0x0, 0x0, 0x21, 0x11, 0x23, 0x11, 0x23, 0x11, 0x33, 0x15, 0x33, 0x35, 0x33, 0x15, 0x21, 0x15, 0x21, 0x15, 0x21, 0x16, 0x4, 0x15, 0x14, 0x4, 0x23, 0x25, 0x21, 0x32, 0x36, 0x34, 0x26, 0x23, 0x21, 0x2, 0xE, 0x7C, 0xFC, 0xFC, 0x7C, 0xFD, 0x1, 0x4F, 0xFE, 0xB1, 0x1, 0x2C, 0xF6, 0x1, 0x12, 0xFE, 0xEC, 0xF8, 0xFE, 0xD8, 0x1, 0x28, 0x8D, 0x82, 0x82, 0x8D, 0xFE, 0xD8, 0x4, 0x2E, 0xFB, 0xD2, 0x5, 0xB0, 0xB9, 0xB9, 0xB9, 0xC9, 0xAB, 0x1, 0xF3, 0xC9, 0xC8, 0xFE, 0xCA, 0x99, 0xCA, 0x8B, 0x0, 0x2, 0x0, 0x7D, 0x0, 0x0, 0x5, 0x8B, 0x6, 0x18, 0x0, 0x16, 0x0, 0x1E, 0x0, 0x0, 0x21, 0x11, 0x23, 0x11, 0x23, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x21, 0x15, 0x21, 0x11, 0x33, 0x16, 0x16, 0x15, 0x14, 0x6, 0x23, 0x27, 0x33, 0x32, 0x36, 0x34, 0x26, 0x23, 0x23, 0x1, 0xF7, 0x87, 0xF3, 0xF3, 0x87, 0xF3, 0x1, 0x3E, 0xFE, 0xC2, 0xF2, 0xCF, 0xE0, 0xE2, 0xD1, 0xEE, 0xEE, 0x69, 0x57, 0x57, 0x69, 0xEE, 0x4, 0x2E, 0xFB, 0xD2, 0x6, 0x0, 0xFE, 0xF1, 0x1, 0x27, 0xFE, 0xD9, 0xC3, 0xFE, 0xB4, 0x1, 0xCE, 0xA1, 0x9D, 0xD5, 0xC2, 0x6A, 0x84, 0x70, 0x0, 0x2, 0x0, 0x66, 0xFF, 0xEC, 0x6, 0xD1, 0x5, 0xC4, 0x0, 0xD, 0x0, 0x21, 0x0, 0x0, 0x25, 0x32, 0x12, 0x35, 0x35, 0x34, 0x2, 0x23, 0x22, 0x2, 0x15, 0x15, 0x14, 0x12, 0x5, 0x11, 0x23, 0x2, 0x0, 0x23, 0x20, 0x0, 0x11, 0x35, 0x10, 0x0, 0x21, 0x20, 0x0, 0x13, 0x33, 0x11, 0x33, 0x11, 0x2, 0xC4, 0xA8, 0xB6, 0xB9, 0xA7, 0xA2, 0xBD, 0xBF, 0x3, 0xB3, 0xB9, 0x16, 0xFE, 0xBB, 0xFD, 0xFE, 0xF6, 0xFE, 0xAC, 0x1, 0x52, 0x1, 0xA, 0x1, 0x8, 0x1, 0x4B, 0x9, 0xB7, 0xFC, 0xBC, 0x1, 0x2, 0xF5, 0x4B, 0xF5, 0x1, 0x0, 0xFF, 0x0, 0xF5, 0x4B, 0xF5, 0xFE, 0xFE, 0xBC, 0x2, 0x5D, 0xFE, 0xDA, 0xFE, 0xB5, 0x1, 0x7B, 0x1, 0x4C, 0x49, 0x1, 0x4C, 0x1, 0x7C, 0xFE, 0x98, 0xFE, 0xC4, 0x2, 0x90, 0xFA, 0x50, 0x0, 0x2, 0x0, 0x50, 0xFF, 0xEC, 0x6, 0x47, 0x4, 0x4E, 0x0, 0xD, 0x0, 0x21, 0x0, 0x0, 0x1, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x1, 0x11, 0x21, 0x6, 0x0, 0x23, 0x22, 0x0, 0x27, 0x35, 0x34, 0x0, 0x33, 0x32, 0x0, 0x17, 0x21, 0x11, 0x33, 0x11, 0x1, 0x42, 0x7D, 0x89, 0x86, 0x7D, 0x7C, 0x89, 0x87, 0x7D, 0x4, 0x12, 0xFE, 0xE6, 0x15, 0xFE, 0xFC, 0xD9, 0xEB, 0xFE, 0xF7, 0x4, 0x1, 0xA, 0xEC, 0xD5, 0x1, 0x3, 0x1A, 0x1, 0x1C, 0xF3, 0x2, 0x12, 0x91, 0xD2, 0xD2, 0x91, 0x15, 0x8F, 0xD5, 0xD5, 0x8F, 0xFD, 0xD9, 0x1, 0xC4, 0xCE, 0xFE, 0xF6, 0x1, 0x33, 0xE6, 0x22, 0xEC, 0x1, 0x3B, 0xFF, 0x0, 0xC6, 0x1, 0xB2, 0xFB, 0xC6, 0x0, 0x2, 0x0, 0x96, 0x0, 0x0, 0x7, 0x20, 0x5, 0xB0, 0x0, 0x2, 0x0, 0x12, 0x0, 0x0, 0x1, 0x3, 0x3, 0x1, 0x13, 0x23, 0x11, 0x23, 0x11, 0x33, 0x11, 0x21, 0x1, 0x33, 0x1, 0x21, 0x3, 0x21, 0x3, 0x5, 0x5B, 0xD3, 0xD3, 0xFE, 0x3B, 0x80, 0xDE, 0xFC, 0xFC, 0x1, 0x2B, 0x1, 0x59, 0xE3, 0x2, 0x27, 0xFE, 0xF8, 0x77, 0xFD, 0xCD, 0x76, 0x2, 0x1F, 0x2, 0x5D, 0xFD, 0xA3, 0xFD, 0xE1, 0x1, 0x54, 0xFE, 0xAC, 0x5, 0xB0, 0xFC, 0x6F, 0x3, 0x91, 0xFA, 0x50, 0x1, 0x54, 0xFE, 0xAC, 0x0, 0x2, 0x0, 0x7D, 0xFF, 0xEC, 0x5, 0xAC, 0x4, 0x4E, 0x0, 0x9, 0x0, 0x2D, 0x0, 0x0, 0x25, 0x32, 0x36, 0x37, 0x35, 0x23, 0x4, 0x15, 0x14, 0x16, 0x5, 0x26, 0x27, 0x6, 0x23, 0x22, 0x26, 0x27, 0x23, 0x15, 0x23, 0x11, 0x33, 0x11, 0x33, 0x12, 0x25, 0x33, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x23, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x11, 0x14, 0x17, 0x15, 0x3, 0xA9, 0x54, 0x7A, 0x19, 0x91, 0xFE, 0xFF, 0x58, 0x1, 0x5E, 0x12, 0xA, 0x73, 0xAA, 0x83, 0xBD, 0x21, 0xAA, 0xF3, 0xF3, 0xA6, 0x3F, 0x1, 0x8A, 0xB1, 0x5F, 0x5F, 0x56, 0x67, 0xF3, 0xF2, 0xCC, 0xB6, 0xED, 0x29, 0xAF, 0x51, 0x31, 0xCC, 0x5, 0xB0, 0x41, 0x58, 0xAF, 0x25, 0x41, 0x7A, 0x7E, 0x64, 0xCE, 0x4, 0x3A, 0xFD, 0x51, 0x1, 0x2, 0x8, 0x47, 0x55, 0x65, 0x56, 0x3E, 0x80, 0xCC, 0xBA, 0xBA, 0xFE, 0x20, 0x92, 0x57, 0x11, 0x0, 0x3, 0x0, 0x12, 0x0, 0x0, 0x5, 0x43, 0x5, 0xB0, 0x0, 0x2, 0x0, 0x6, 0x0, 0xA, 0x0, 0x0, 0x1, 0x3, 0x3, 0x1, 0x27, 0x21, 0x7, 0x5, 0x1, 0x33, 0x1, 0x3, 0x6B, 0xC1, 0xC1, 0x2, 0xC, 0x43, 0xFD, 0xF1, 0x43, 0xFE, 0xB2, 0x2, 0x26, 0xE3, 0x2, 0x28, 0x2, 0x54, 0x2, 0x29, 0xFD, 0xD7, 0xFE, 0x76, 0xC0, 0xC0, 0xCA, 0x5, 0xB0, 0xFA, 0x50, 0x0, 0x3, 0x0, 0x1C, 0x0, 0x0, 0x4, 0xAC, 0x4, 0x3A, 0x0, 0x2, 0x0, 0x6, 0x0, 0xA, 0x0, 0x0, 0x1, 0x3, 0x3, 0x1, 0x27, 0x21, 0x7, 0x5, 0x1, 0x33, 0x1, 0x2, 0xF3, 0x8F, 0x8E, 0x1, 0x8F, 0x28, 0xFE, 0x4F, 0x28, 0xFE, 0xB8, 0x1, 0xCD, 0xF8, 0x1, 0xCB, 0x1, 0xD2, 0x1, 0x61, 0xFE, 0x9F, 0xFE, 0xE6, 0x63, 0x63, 0xB8, 0x4, 0x3A, 0xFB, 0xC6, 0x0, 0x3, 0x0, 0x80, 0x0, 0x0, 0x6, 0x6E, 0x5, 0xB0, 0x0, 0x2, 0x0, 0xA, 0x0, 0x20, 0x0, 0x0, 0x1, 0x13, 0x21, 0x3, 0x22, 0x6, 0x7, 0x21, 0x26, 0x26, 0x23, 0x1, 0x11, 0x21, 0x11, 0x23, 0x11, 0x36, 0x24, 0x37, 0x33, 0x1, 0x21, 0x1, 0x33, 0x32, 0x4, 0x15, 0x11, 0x23, 0x11, 0x21, 0x11, 0x3, 0x7F, 0xE9, 0xFE, 0x2E, 0x1D, 0x62, 0x77, 0x16, 0x3, 0xDA, 0x16, 0x77, 0x62, 0xFE, 0x8D, 0xFE, 0x7A, 0xFC, 0x2, 0x1, 0x4, 0xDF, 0x22, 0xFE, 0x85, 0x4, 0xE5, 0xFE, 0x85, 0x17, 0xD5, 0x1, 0xC, 0xFC, 0xFE, 0x8C, 0x3, 0x3A, 0x1, 0xA9, 0xFD, 0x79, 0x3A, 0x4D, 0x4D, 0x3A, 0xFD, 0xA4, 0x1, 0x11, 0xFE, 0xEF, 0x1, 0x68, 0xF4, 0xCA, 0x3, 0x2, 0x87, 0xFD, 0x79, 0xCD, 0xFB, 0xFE, 0x9F, 0x1, 0x11, 0xFE, 0xEF, 0x0, 0x3, 0x0, 0x5C, 0x0, 0x0, 0x5, 0x3E, 0x4, 0x3B, 0x0, 0x2, 0x0, 0xA, 0x0, 0x22, 0x0, 0x0, 0x1, 0x13, 0x21, 0x3, 0x22, 0x6, 0x7, 0x21, 0x26, 0x26, 0x23, 0x1, 0x35, 0x21, 0x15, 0x23, 0x35, 0x36, 0x36, 0x37, 0x1, 0x33, 0x35, 0x21, 0x15, 0x33, 0x1, 0x16, 0x16, 0x17, 0x15, 0x23, 0x35, 0x21, 0x15, 0x2, 0xD4, 0x95, 0xFE, 0xD6, 0x14, 0x49, 0x61, 0x18, 0x2, 0xC8, 0x18, 0x61, 0x49, 0xFE, 0xE9, 0xFE, 0xF7, 0xF3, 0x2, 0xD5, 0xBE, 0xFE, 0xE9, 0xA8, 0x2, 0xC6, 0x86, 0xFE, 0xE9, 0xB7, 0xCF, 0x1, 0xF3, 0xFF, 0x0, 0x2, 0x69, 0x1, 0x22, 0xFE, 0x19, 0x29, 0x35, 0x35, 0x29, 0xFE, 0x5C, 0x96, 0x96, 0xB3, 0xDA, 0xC8, 0xB, 0x1, 0xDA, 0x1, 0x1, 0xFE, 0x25, 0xE, 0xC9, 0xDA, 0xAE, 0x96, 0x96, 0x0, 0x3, 0x0, 0x96, 0x0, 0x0, 0x7, 0x20, 0x5, 0xB0, 0x0, 0x2, 0x0, 0x6, 0x0, 0x12, 0x0, 0x0, 0x1, 0x3, 0x3, 0x1, 0x27, 0x21, 0x7, 0x5, 0x13, 0x23, 0x11, 0x23, 0x11, 0x33, 0x11, 0x21, 0x1, 0x33, 0x1, 0x5, 0x48, 0xC0, 0xC1, 0x2, 0xC, 0x44, 0xFD, 0xF2, 0x44, 0xFE, 0xB3, 0x95, 0xF3, 0xFC, 0xFC, 0x1, 0x3F, 0x1, 0x45, 0xE3, 0x2, 0x27, 0x2, 0x54, 0x2, 0x28, 0xFD, 0xD8, 0xFE, 0x71, 0xC5, 0xC5, 0xC5, 0x1, 0x8A, 0xFE, 0x76, 0x5, 0xB0, 0xFC, 0xA4, 0x3, 0x5C, 0xFA, 0x50, 0x0, 0x3, 0x0, 0x7D, 0x0, 0x0, 0x6, 0x4B, 0x4, 0x3A, 0x0, 0x2, 0x0, 0x6, 0x0, 0x12, 0x0, 0x0, 0x1, 0x3, 0x3, 0x1, 0x27, 0x21, 0x7, 0x5, 0x13, 0x23, 0x11, 0x23, 0x11, 0x33, 0x11, 0x21, 0x1, 0x33, 0x1, 0x4, 0x92, 0x8F, 0x8E, 0x1, 0x8F, 0x28, 0xFE, 0x4F, 0x28, 0xFE, 0xB8, 0x79, 0xC4, 0xF3, 0xF3, 0x1, 0x12, 0x1, 0x6, 0xF8, 0x1, 0xCB, 0x1, 0xD2, 0x1, 0x61, 0xFE, 0x9F, 0xFE, 0xE6, 0x63, 0x63, 0xB8, 0x1, 0x1B, 0xFE, 0xE5, 0x4, 0x3A, 0xFD, 0x98, 0x2, 0x68, 0xFB, 0xC6, 0x0, 0x1, 0x0, 0x1E, 0xFE, 0x60, 0x5, 0x82, 0x5, 0xB0, 0x0, 0xE, 0x0, 0x0, 0x1, 0x23, 0x11, 0x6, 0x2, 0x7, 0x27, 0x36, 0x12, 0x12, 0x13, 0x33, 0x1, 0x23, 0x3, 0x3, 0x8D, 0xF2, 0x40, 0xD6, 0xAD, 0xBA, 0xBC, 0xE4, 0x8D, 0x39, 0xE7, 0x2, 0x17, 0xFB, 0xFA, 0xFE, 0x60, 0x4, 0x5E, 0xC6, 0xFE, 0xA2, 0xB8, 0x97, 0xC0, 0x1, 0x96, 0x1, 0xCF, 0x1, 0x12, 0xFA, 0x50, 0x2, 0xE7, 0x0, 0x1, 0x0, 0x22, 0xFE, 0x60, 0x4, 0xC0, 0x4, 0x3A, 0x0, 0xD, 0x0, 0x0, 0x1, 0x23, 0x11, 0x6, 0x6, 0x7, 0x27, 0x36, 0x12, 0x13, 0x33, 0x1, 0x23, 0x3, 0x3, 0x5, 0xF3, 0x35, 0xA0, 0x7B, 0xA0, 0xD9, 0xC7, 0x43, 0xEB, 0x1, 0xD0, 0xFC, 0xBF, 0xFE, 0x60, 0x3, 0x72, 0x84, 0xF0, 0x72, 0x9E, 0xDA, 0x1, 0xBF, 0x1, 0x17, 0xFB, 0xC6, 0x1, 0xF3, 0x0, 0x1, 0x0, 0x3B, 0xFE, 0xA1, 0x5, 0x65, 0x5, 0xB0, 0x0, 0xB, 0x0, 0x0, 0x13, 0x3, 0x33, 0x11, 0x33, 0x11, 0x21, 0x11, 0x33, 0x11, 0x21, 0x11, 0x4F, 0x14, 0xB0, 0xFD, 0x2, 0x81, 0xFC, 0xFB, 0xD1, 0xFE, 0xA1, 0x2, 0x2C, 0x4, 0xE3, 0xFB, 0x1A, 0x4, 0xE6, 0xFA, 0x50, 0xFE, 0xA1, 0x0, 0x1, 0x0, 0x2E, 0xFE, 0xBF, 0x4, 0x4D, 0x4, 0x3A, 0x0, 0xB, 0x0, 0x0, 0x13, 0x3, 0x33, 0x11, 0x33, 0x11, 0x21, 0x11, 0x33, 0x11, 0x21, 0x11, 0x42, 0x14, 0x93, 0xF3, 0x1, 0xA7, 0xF2, 0xFC, 0xD2, 0xFE, 0xBF, 0x2, 0x3, 0x3, 0x78, 0xFC, 0x89, 0x3, 0x77, 0xFB, 0xC6, 0xFE, 0xBF, 0x0, 0x2, 0x0, 0x24, 0xFE, 0x9A, 0x7, 0x4F, 0x5, 0xB0, 0x0, 0x5, 0x0, 0x16, 0x0, 0x0, 0x25, 0x21, 0x11, 0x21, 0x3, 0x2, 0x1, 0x11, 0x21, 0x11, 0x23, 0x3, 0x33, 0x36, 0x12, 0x13, 0x13, 0x21, 0x15, 0x21, 0x11, 0x33, 0x3, 0x1, 0xB7, 0x2, 0x70, 0xFE, 0x57, 0x18, 0x1D, 0x2, 0x96, 0xFC, 0x41, 0xF3, 0x9, 0x76, 0x36, 0x84, 0x14, 0x26, 0x5, 0xC1, 0xFD, 0xD5, 0xB8, 0xD, 0xCA, 0x4, 0x1B, 0xFE, 0x55, 0xFE, 0x6F, 0xFC, 0xF1, 0x1, 0x66, 0xFE, 0x9A, 0x2, 0x30, 0x34, 0x1, 0x19, 0x1, 0x27, 0x2, 0x72, 0xCB, 0xFB, 0xE5, 0xFD, 0xD0, 0x0, 0x2, 0x0, 0x27, 0xFE, 0xBE, 0x5, 0xFE, 0x4, 0x3A, 0x0, 0x5, 0x0, 0x16, 0x0, 0x0, 0x25, 0x21, 0x11, 0x21, 0x7, 0x2, 0x3, 0x11, 0x23, 0x13, 0x33, 0x36, 0x36, 0x37, 0x13, 0x21, 0x15, 0x21, 0x11, 0x33, 0x11, 0x23, 0x11, 0x1, 0x9F, 0x1, 0x9E, 0xFE, 0xEF, 0x5, 0xC, 0xFD, 0xF7, 0x1, 0x59, 0x54, 0x58, 0x7, 0xC, 0x4, 0xBE, 0xFE, 0x32, 0x96, 0xF3, 0xC3, 0x2, 0xA6, 0xB6, 0xFE, 0xC5, 0xFE, 0x88, 0xFE, 0xBE, 0x2, 0x5, 0x5E, 0xC9, 0xCD, 0x1, 0x83, 0xD1, 0xFD, 0x5A, 0xFD, 0xFB, 0x1, 0x42, 0x0, 0x1, 0x0, 0x2D, 0x0, 0x0, 0x7, 0x3A, 0x5, 0xB0, 0x0, 0x11, 0x0, 0x0, 0x33, 0x35, 0x37, 0x36, 0x36, 0x13, 0x13, 0x21, 0x15, 0x21, 0x11, 0x23, 0x11, 0x21, 0x3, 0x2, 0x2, 0x7, 0x2D, 0x31, 0x7B, 0x61, 0xD, 0x1B, 0x5, 0xD8, 0xFD, 0xD4, 0xFD, 0xFE, 0x43, 0x1B, 0x16, 0xC5, 0xE7, 0xCA, 0x5, 0xE, 0xF4, 0x1, 0x2E, 0x2, 0xB1, 0xCB, 0xFB, 0x1B, 0x4, 0xE5, 0xFD, 0xCB, 0xFE, 0x8C, 0xFE, 0xC7, 0x3, 0x0, 0x1, 0x0, 0x22, 0x0, 0x0, 0x5, 0xE2, 0x4, 0x3A, 0x0, 0x11, 0x0, 0x0, 0x33, 0x27, 0x37, 0x36, 0x36, 0x37, 0x13, 0x21, 0x15, 0x21, 0x11, 0x23, 0x11, 0x21, 0x3, 0x2, 0x6, 0x7, 0x23, 0x1, 0x27, 0x5F, 0x44, 0xA, 0x14, 0x4, 0xD8, 0xFE, 0x32, 0xF3, 0xFE, 0xCF, 0x15, 0x13, 0xAA, 0xAC, 0xCB, 0x3, 0x8, 0xC1, 0xD5, 0x1, 0xCE, 0xC4, 0xFC, 0x8A, 0x3, 0x76, 0xFE, 0x8B, 0xFE, 0xEB, 0xEA, 0x2, 0x0, 0x1, 0x0, 0x95, 0x0, 0x0, 0x8, 0x98, 0x5, 0xB0, 0x0, 0x10, 0x0, 0x0, 0x1, 0x11, 0x23, 0x11, 0x21, 0x1, 0x1, 0x21, 0x15, 0x21, 0x11, 0x23, 0x11, 0x13, 0x1, 0x23, 0x1, 0x1, 0x91, 0xFC, 0x1, 0x47, 0x1, 0xA4, 0x1, 0xA3, 0x3, 0x75, 0xFD, 0xD3, 0xFC, 0x18, 0xFE, 0x53, 0xB5, 0xFE, 0x53, 0x1, 0xE0, 0xFE, 0x20, 0x5, 0xB0, 0xFB, 0xA4, 0x4, 0x5C, 0xCB, 0xFB, 0x1B, 0x1, 0xE0, 0x2, 0x80, 0xFB, 0xA0, 0x4, 0x61, 0x0, 0x1, 0x0, 0x88, 0x0, 0x0, 0x7, 0x34, 0x4, 0x3A, 0x0, 0xE, 0x0, 0x0, 0x21, 0x1, 0x11, 0x23, 0x11, 0x21, 0x1, 0x1, 0x21, 0x15, 0x21, 0x11, 0x23, 0x11, 0x1, 0x2, 0xA6, 0xFE, 0xD5, 0xF3, 0x1, 0x33, 0x1, 0x3D, 0x1, 0x41, 0x2, 0xFB, 0xFE, 0x34, 0xF2, 0xFE, 0xD5, 0x2, 0xD2, 0xFD, 0x2E, 0x4, 0x3A, 0xFC, 0xF1, 0x3, 0xF, 0xC4, 0xFC, 0x8A, 0x2, 0xCF, 0xFD, 0x31, 0xFF, 0xFF, 0x0, 0x66, 0xFF, 0xEC, 0x5, 0x1F, 0x5, 0xC4, 0x0, 0x26, 0x0, 0x34, 0x0, 0x0, 0x0, 0x7, 0x1, 0xB8, 0x5, 0xA, 0xFD, 0x86, 0x0, 0x3, 0x0, 0x50, 0xFF, 0xEC, 0x4, 0x3E, 0x4, 0x4E, 0x0, 0xD, 0x0, 0x1B, 0x0, 0x25, 0x0, 0x0, 0x5, 0x22, 0x0, 0x27, 0x35, 0x34, 0x0, 0x33, 0x32, 0x0, 0x15, 0x15, 0x14, 0x0, 0x27, 0x32, 0x36, 0x35, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x15, 0x14, 0x16, 0x13, 0x34, 0x36, 0x32, 0x16, 0x15, 0x14, 0x6, 0x22, 0x26, 0x2, 0x48, 0xEB, 0xFE, 0xF7, 0x4, 0x1, 0xA, 0xEC, 0xEF, 0x1, 0x9, 0xFE, 0xF7, 0xED, 0x87, 0x7D, 0x7D, 0x89, 0x87, 0x7C, 0x7D, 0x6, 0x45, 0x7C, 0x45, 0x45, 0x7C, 0x45, 0x14, 0x1, 0x33, 0xE6, 0x22, 0xEC, 0x1, 0x3B, 0xFE, 0xC5, 0xEC, 0x15, 0xEB, 0xFE, 0xC5, 0xC3, 0xD2, 0x91, 0x15, 0x8F, 0xD5, 0xD5, 0x8F, 0x15, 0x91, 0xD2, 0x1, 0x6C, 0x35, 0x48, 0x48, 0x35, 0x34, 0x47, 0x47, 0x0, 0x4, 0x0, 0x66, 0xFF, 0xEF, 0x5, 0x75, 0x5, 0xC4, 0x0, 0xD, 0x0, 0x1B, 0x0, 0x25, 0x0, 0x2F, 0x0, 0x0, 0x1, 0x10, 0x0, 0x21, 0x20, 0x0, 0x3, 0x35, 0x10, 0x0, 0x21, 0x20, 0x0, 0x11, 0x27, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x15, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x25, 0x34, 0x36, 0x32, 0x16, 0x15, 0x14, 0x6, 0x22, 0x26, 0x25, 0x34, 0x36, 0x32, 0x16, 0x15, 0x14, 0x6, 0x22, 0x26, 0x5, 0x75, 0xFE, 0x9C, 0xFE, 0xDE, 0xFE, 0xE6, 0xFE, 0x94, 0x3, 0x1, 0x6B, 0x1, 0x1C, 0x1, 0x22, 0x1, 0x66, 0xFD, 0xD2, 0xB9, 0xB2, 0xD8, 0xDA, 0xB2, 0xB9, 0xD0, 0xFE, 0x9F, 0x49, 0x82, 0x49, 0x49, 0x82, 0x49, 0xFE, 0x9A, 0x48, 0x82, 0x49, 0x49, 0x82, 0x48, 0x2, 0xB5, 0xFE, 0xAA, 0xFE, 0x90, 0x1, 0x6B, 0x1, 0x50, 0x53, 0x1, 0x56, 0x1, 0x71, 0xFE, 0x8F, 0xFE, 0xAA, 0x2, 0xFD, 0xF7, 0xF7, 0xFD, 0x4A, 0xFD, 0xF9, 0xF9, 0xFD, 0x22, 0x38, 0x4A, 0x4A, 0x38, 0x37, 0x49, 0x49, 0x37, 0x38, 0x4A, 0x4A, 0x38, 0x37, 0x49, 0x49, 0x0, 0x4, 0x0, 0x50, 0xFF, 0xEC, 0x5, 0x26, 0x4, 0x4E, 0x0, 0xC, 0x0, 0x1A, 0x0, 0x24, 0x0, 0x2E, 0x0, 0x0, 0x13, 0x34, 0x0, 0x21, 0x20, 0x0, 0x15, 0x15, 0x14, 0x0, 0x20, 0x0, 0x35, 0x33, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x5, 0x34, 0x36, 0x32, 0x16, 0x15, 0x14, 0x6, 0x22, 0x26, 0x25, 0x34, 0x36, 0x32, 0x16, 0x15, 0x14, 0x6, 0x22, 0x26, 0x50, 0x1, 0x46, 0x1, 0x24, 0x1, 0x26, 0x1, 0x46, 0xFE, 0xBB, 0xFD, 0xB6, 0xFE, 0xB9, 0xF3, 0xB9, 0xC0, 0xBF, 0xB9, 0xBA, 0xC0, 0xBE, 0xB9, 0x1, 0x96, 0x48, 0x82, 0x49, 0x49, 0x82, 0x48, 0xFE, 0xB1, 0x49, 0x82, 0x49, 0x49, 0x82, 0x49, 0x2, 0x27, 0xF1, 0x1, 0x36, 0xFE, 0xCA, 0xF1, 0x15, 0xF1, 0xFE, 0xCB, 0x1, 0x35, 0xF1, 0x9C, 0xC7, 0xC7, 0x9C, 0x15, 0x9A, 0xCA, 0xCA, 0x9A, 0xE, 0x38, 0x4A, 0x4A, 0x38, 0x37, 0x49, 0x49, 0x37, 0x38, 0x4A, 0x4A, 0x38, 0x37, 0x49, 0x49, 0xFF, 0xFF, 0x0, 0x66, 0xFF, 0xEC, 0x8, 0xDB, 0x5, 0xC4, 0x0, 0x26, 0x0, 0x34, 0x0, 0x0, 0x0, 0x27, 0x1, 0xB8, 0x5, 0xA, 0xFD, 0x86, 0x0, 0x27, 0x1, 0xB8, 0x8, 0xC5, 0xFD, 0x86, 0x0, 0x7, 0x0, 0x34, 0x3, 0xBC, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x50, 0xFF, 0xEC, 0x7, 0x39, 0x4, 0x4E, 0x0, 0x27, 0x6, 0x2, 0x2, 0xFB, 0x0, 0x0, 0x0, 0x6, 0x6, 0x2, 0x0, 0x0, 0x0, 0xF, 0x0, 0x55, 0xFD, 0xE4, 0x9, 0x75, 0x6, 0x72, 0x0, 0x2B, 0x0, 0x39, 0x0, 0x47, 0x0, 0x53, 0x0, 0x5D, 0x0, 0x6B, 0x0, 0x79, 0x0, 0x87, 0x0, 0x91, 0x0, 0x9B, 0x0, 0xA7, 0x0, 0xB5, 0x0, 0xC3, 0x0, 0xCB, 0x0, 0xD5, 0x0, 0x0, 0x1, 0x22, 0x27, 0x6, 0x23, 0x22, 0x26, 0x35, 0x35, 0x34, 0x37, 0x26, 0x26, 0x35, 0x35, 0x34, 0x36, 0x37, 0x26, 0x35, 0x34, 0x36, 0x33, 0x32, 0x17, 0x36, 0x33, 0x32, 0x16, 0x15, 0x15, 0x14, 0x7, 0x16, 0x16, 0x15, 0x15, 0x14, 0x6, 0x7, 0x16, 0x15, 0x14, 0x6, 0x1, 0x32, 0x36, 0x35, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x15, 0x14, 0x16, 0x21, 0x32, 0x36, 0x35, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x15, 0x14, 0x16, 0x1, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x6, 0x23, 0x22, 0x26, 0x25, 0x34, 0x36, 0x32, 0x16, 0x15, 0x14, 0x6, 0x22, 0x26, 0x1, 0x32, 0x36, 0x35, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x15, 0x14, 0x16, 0x21, 0x32, 0x36, 0x35, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x15, 0x14, 0x16, 0x21, 0x32, 0x36, 0x35, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x15, 0x14, 0x16, 0x1, 0x34, 0x36, 0x32, 0x16, 0x15, 0x14, 0x6, 0x22, 0x26, 0x25, 0x34, 0x36, 0x32, 0x16, 0x15, 0x14, 0x6, 0x22, 0x26, 0x25, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x6, 0x23, 0x22, 0x26, 0x1, 0x32, 0x36, 0x35, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x15, 0x14, 0x16, 0x21, 0x32, 0x36, 0x35, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x15, 0x14, 0x16, 0x12, 0x36, 0x32, 0x16, 0x14, 0x6, 0x22, 0x26, 0x24, 0x36, 0x33, 0x32, 0x16, 0x14, 0x6, 0x23, 0x22, 0x26, 0x6, 0x45, 0xE2, 0x7E, 0x7C, 0xE3, 0xDC, 0xF6, 0x29, 0xBA, 0xCE, 0xCE, 0xB9, 0x28, 0xF6, 0xDB, 0xE2, 0x7E, 0x7E, 0xE0, 0xDD, 0xF6, 0x28, 0xBA, 0xCD, 0xCE, 0xBA, 0x29, 0xF6, 0xFC, 0x66, 0x7D, 0x77, 0x78, 0x7D, 0x7C, 0x77, 0x76, 0x3, 0x3D, 0x7D, 0x76, 0x77, 0x7E, 0x7C, 0x76, 0x76, 0xFD, 0x47, 0x3E, 0x39, 0x3A, 0x3F, 0x3F, 0x3A, 0x39, 0x3E, 0x2, 0xBE, 0x3F, 0x72, 0x3F, 0x3F, 0x72, 0x3F, 0xFC, 0x5B, 0x7D, 0x76, 0x77, 0x7E, 0x7C, 0x77, 0x77, 0x3, 0x3D, 0x7C, 0x77, 0x77, 0x7E, 0x7C, 0x77, 0x76, 0x3, 0x3D, 0x7D, 0x76, 0x77, 0x7E, 0x7C, 0x76, 0x76, 0xFA, 0x88, 0x3E, 0x74, 0x3E, 0x3E, 0x74, 0x3E, 0x2, 0xBF, 0x3F, 0x72, 0x3F, 0x3F, 0x72, 0x3F, 0x2, 0xBE, 0x3F, 0x39, 0x3A, 0x3F, 0x3F, 0x3A, 0x39, 0x3F, 0xFC, 0x5B, 0x7D, 0x77, 0x78, 0x7D, 0x7C, 0x77, 0x76, 0x3, 0x3D, 0x7D, 0x76, 0x77, 0x7E, 0x7C, 0x76, 0x76, 0x5, 0x3F, 0x72, 0x3F, 0x3F, 0x72, 0x3F, 0xFD, 0x42, 0x3E, 0x39, 0x3A, 0x3F, 0x3F, 0x3A, 0x39, 0x3E, 0xFD, 0xE4, 0x8F, 0x8F, 0xFC, 0xBC, 0x15, 0x6B, 0x58, 0x16, 0xED, 0xAA, 0x15, 0xAA, 0xEF, 0x16, 0x57, 0x7D, 0xBD, 0xFC, 0x8F, 0x8F, 0xFC, 0xBD, 0x15, 0x68, 0x57, 0x17, 0xEF, 0xA9, 0x15, 0xAA, 0xEE, 0x15, 0x58, 0x80, 0xBC, 0xFC, 0x5, 0xC3, 0x98, 0x64, 0x16, 0x63, 0x9A, 0x9A, 0x63, 0x16, 0x64, 0x98, 0x98, 0x64, 0x16, 0x63, 0x9A, 0x9A, 0x63, 0x16, 0x64, 0x98, 0x1, 0x6, 0x32, 0x45, 0x45, 0x32, 0x31, 0x45, 0x45, 0x31, 0x32, 0x45, 0x45, 0x32, 0x31, 0x45, 0x45, 0xFC, 0xA8, 0x99, 0x64, 0x15, 0x63, 0x9B, 0x9B, 0x63, 0x15, 0x64, 0x99, 0x99, 0x64, 0x15, 0x63, 0x9B, 0x9B, 0x63, 0x15, 0x64, 0x99, 0x99, 0x64, 0x15, 0x63, 0x9B, 0x9B, 0x63, 0x15, 0x64, 0x99, 0x1, 0x6, 0x33, 0x44, 0x44, 0x33, 0x31, 0x44, 0x44, 0x31, 0x33, 0x44, 0x44, 0x33, 0x31, 0x44, 0x44, 0x31, 0x33, 0x44, 0x44, 0x33, 0x31, 0x44, 0x44, 0xFC, 0xA7, 0x97, 0x65, 0x16, 0x63, 0x9A, 0x9A, 0x63, 0x16, 0x65, 0x97, 0x97, 0x65, 0x16, 0x63, 0x9A, 0x9A, 0x63, 0x16, 0x65, 0x97, 0x1, 0x38, 0x45, 0x45, 0x64, 0x44, 0x44, 0x64, 0x45, 0x45, 0x64, 0x44, 0x44, 0x0, 0x1, 0xFB, 0x5D, 0x3, 0xD8, 0x0, 0x13, 0x5, 0xAC, 0x0, 0x7, 0x0, 0x0, 0x1, 0x23, 0x11, 0x21, 0x11, 0x23, 0x11, 0x21, 0xFC, 0x25, 0xC8, 0x4, 0xB6, 0xC8, 0xFC, 0xDA, 0x3, 0xD8, 0x1, 0xD4, 0xFE, 0x2C, 0x1, 0x16, 0x0, 0x8, 0xF9, 0x94, 0xFE, 0x4, 0x1, 0xDC, 0x6, 0x35, 0x0, 0xB, 0x0, 0x17, 0x0, 0x23, 0x0, 0x2F, 0x0, 0x3B, 0x0, 0x47, 0x0, 0x53, 0x0, 0x5F, 0x0, 0x0, 0x1, 0x17, 0x37, 0x33, 0x7, 0x17, 0x23, 0x27, 0x7, 0x23, 0x37, 0x27, 0x5, 0x17, 0x37, 0x33, 0x7, 0x17, 0x23, 0x27, 0x7, 0x23, 0x37, 0x27, 0x21, 0x17, 0x37, 0x33, 0x7, 0x17, 0x23, 0x27, 0x7, 0x23, 0x37, 0x27, 0x1, 0x17, 0x37, 0x33, 0x7, 0x17, 0x23, 0x27, 0x7, 0x23, 0x37, 0x27, 0x21, 0x17, 0x37, 0x33, 0x7, 0x17, 0x23, 0x27, 0x7, 0x23, 0x37, 0x27, 0x1, 0x17, 0x37, 0x33, 0x7, 0x17, 0x23, 0x27, 0x7, 0x23, 0x37, 0x27, 0x21, 0x17, 0x37, 0x33, 0x7, 0x17, 0x23, 0x27, 0x7, 0x23, 0x37, 0x27, 0x5, 0x17, 0x37, 0x33, 0x7, 0x17, 0x23, 0x27, 0x7, 0x23, 0x37, 0x27, 0xFD, 0x88, 0x30, 0x31, 0x8C, 0x6D, 0x70, 0x8A, 0x34, 0x34, 0x8C, 0x71, 0x6E, 0x2, 0xF7, 0x30, 0x31, 0x8A, 0x6E, 0x71, 0x8B, 0x35, 0x33, 0x8B, 0x70, 0x6D, 0xFB, 0xB5, 0x30, 0x2D, 0x90, 0x6D, 0x70, 0x8E, 0x30, 0x34, 0x8C, 0x71, 0x6E, 0x6, 0x5D, 0x30, 0x31, 0x8A, 0x6E, 0x71, 0x8B, 0x35, 0x33, 0x8B, 0x70, 0x6D, 0xF9, 0xC1, 0x30, 0x31, 0x8C, 0x6D, 0x70, 0x8A, 0x34, 0x34, 0x8C, 0x71, 0x6E, 0x6, 0x67, 0x30, 0x31, 0x8A, 0x6E, 0x71, 0x8B, 0x35, 0x33, 0x8B, 0x70, 0x6D, 0xFB, 0xA1, 0x30, 0x31, 0x8C, 0x6D, 0x70, 0x8A, 0x34, 0x34, 0x8C, 0x71, 0x6E, 0x3, 0x1, 0x30, 0x31, 0x8C, 0x6D, 0x70, 0x8A, 0x34, 0x34, 0x8C, 0x71, 0x6E, 0x6, 0x35, 0x60, 0x60, 0xB1, 0xB4, 0x65, 0x65, 0xB4, 0xB1, 0xDC, 0x60, 0x60, 0xB1, 0xB4, 0x65, 0x65, 0xB4, 0xB1, 0x60, 0x60, 0xB1, 0xB4, 0x65, 0x65, 0xB4, 0xB1, 0xFD, 0x81, 0x60, 0x60, 0xB1, 0xB4, 0x65, 0x65, 0xB4, 0xB1, 0x60, 0x60, 0xB1, 0xB4, 0x65, 0x65, 0xB4, 0xB1, 0xFD, 0x81, 0x61, 0x61, 0xB1, 0xB4, 0x64, 0x64, 0xB4, 0xB1, 0x61, 0x61, 0xB1, 0xB4, 0x64, 0x64, 0xB4, 0xB1, 0xF2, 0x61, 0x61, 0xB1, 0xB4, 0x64, 0x64, 0xB4, 0xB1, 0x0, 0x2, 0xFB, 0x5D, 0xFE, 0xB8, 0x0, 0x13, 0x5, 0xAC, 0x0, 0x7, 0x0, 0xF, 0x0, 0x0, 0x1, 0x23, 0x11, 0x21, 0x11, 0x23, 0x11, 0x21, 0x3, 0x33, 0x11, 0x21, 0x11, 0x33, 0x11, 0x21, 0xFC, 0x25, 0xC8, 0x4, 0xB6, 0xC8, 0xFC, 0xDA, 0xC8, 0xC8, 0x3, 0x26, 0xC8, 0xFB, 0x4A, 0x3, 0xD8, 0x1, 0xD4, 0xFE, 0x2C, 0x1, 0x16, 0xFB, 0x9E, 0xFE, 0xEA, 0x1, 0x16, 0xFE, 0x2C, 0x0, 0xA, 0xF9, 0x7A, 0xFE, 0x23, 0x1, 0xF9, 0x6, 0x3A, 0x0, 0xB, 0x0, 0xF, 0x0, 0x13, 0x0, 0x17, 0x0, 0x1B, 0x0, 0x1F, 0x0, 0x23, 0x0, 0x27, 0x0, 0x2B, 0x0, 0x2F, 0x0, 0x0, 0x1, 0x23, 0x15, 0x23, 0x35, 0x23, 0x35, 0x33, 0x35, 0x33, 0x15, 0x33, 0x1, 0x15, 0x21, 0x35, 0x21, 0x15, 0x21, 0x35, 0x1, 0x15, 0x21, 0x35, 0x21, 0x15, 0x21, 0x35, 0x1, 0x15, 0x21, 0x35, 0x21, 0x15, 0x21, 0x35, 0x1, 0x23, 0x11, 0x33, 0x1, 0x23, 0x11, 0x33, 0x1, 0x23, 0x11, 0x33, 0xFE, 0x90, 0x77, 0xC3, 0x78, 0x78, 0xC3, 0x77, 0x3, 0x69, 0xFE, 0x14, 0xFB, 0x59, 0xFE, 0x14, 0x8, 0x7F, 0xFE, 0x14, 0xFB, 0x59, 0xFE, 0x14, 0x8, 0x7F, 0xFE, 0x14, 0xFB, 0x59, 0xFE, 0x14, 0x4, 0x9F, 0xC3, 0xC3, 0xFE, 0xA2, 0xC3, 0xC3, 0x2, 0xBC, 0xC3, 0xC3, 0x5, 0x7, 0x71, 0x71, 0xC3, 0x70, 0x70, 0xFE, 0x31, 0xC3, 0xC3, 0xC3, 0xC3, 0xFE, 0xA2, 0xC3, 0xC3, 0xC3, 0xC3, 0xFE, 0xA2, 0xC3, 0xC3, 0xC3, 0xC3, 0xFC, 0xE4, 0x1, 0x88, 0xFE, 0x78, 0x1, 0x88, 0xFE, 0x78, 0x1, 0x88, 0x0, 0x2, 0x0, 0x50, 0x1, 0x8D, 0x3, 0x66, 0x5, 0x20, 0x0, 0xB, 0x0, 0x17, 0x0, 0x0, 0x13, 0x21, 0x37, 0x17, 0x21, 0x7, 0x17, 0x21, 0x7, 0x27, 0x21, 0x37, 0x33, 0x7, 0x33, 0x17, 0x37, 0x33, 0x27, 0x37, 0x23, 0x27, 0x7, 0x23, 0x50, 0x1, 0x7, 0x85, 0x84, 0x1, 0x6, 0x84, 0x84, 0xFE, 0xFA, 0x84, 0x85, 0xFE, 0xF9, 0x84, 0x8A, 0x3C, 0x7B, 0x3F, 0x40, 0x7B, 0x3E, 0x3E, 0x7B, 0x40, 0x3F, 0x7B, 0x4, 0x3A, 0xE6, 0xE6, 0xE5, 0xE2, 0xE6, 0xE6, 0xE2, 0x6C, 0x6C, 0x6C, 0x6C, 0x6D, 0x6E, 0x6E, 0x0, 0x1, 0xFC, 0xB8, 0x4, 0xA4, 0xFE, 0xA0, 0x6, 0xE0, 0x0, 0x19, 0x0, 0x0, 0x1, 0x14, 0x6, 0x23, 0x22, 0x26, 0x35, 0x35, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x23, 0x26, 0x23, 0x22, 0x7, 0x33, 0x15, 0x23, 0x16, 0x33, 0x32, 0x37, 0xFE, 0xA0, 0x82, 0x61, 0x78, 0x8D, 0x8D, 0x78, 0x59, 0x8A, 0x81, 0x8, 0x5A, 0x65, 0xE, 0xA6, 0xA6, 0xD, 0x66, 0x5C, 0x6, 0x5, 0x74, 0x5E, 0x72, 0x9A, 0x7B, 0x12, 0x7B, 0x9A, 0x63, 0x5E, 0x4E, 0x78, 0x62, 0x7B, 0x5C, 0x0, 0x1, 0xFC, 0xBC, 0x4, 0xB1, 0xFE, 0xB3, 0x6, 0xD9, 0x0, 0x9, 0x0, 0x0, 0x1, 0x23, 0x11, 0x33, 0x11, 0x13, 0x33, 0x11, 0x23, 0x11, 0xFD, 0x4C, 0x90, 0x90, 0xD8, 0x8F, 0x8F, 0x4, 0xB1, 0x2, 0x28, 0xFE, 0xA8, 0x1, 0x58, 0xFD, 0xD8, 0x1, 0x54, 0x0, 0x3, 0xFC, 0xF9, 0x4, 0xB1, 0xFE, 0x80, 0x7, 0xAD, 0x0, 0x5, 0x0, 0xB, 0x0, 0xF, 0x0, 0x0, 0x0, 0x33, 0x32, 0x14, 0x23, 0x22, 0x26, 0x33, 0x32, 0x14, 0x23, 0x22, 0x5, 0x11, 0x23, 0x11, 0xFD, 0xDD, 0x51, 0x52, 0x52, 0x51, 0xE4, 0x51, 0x52, 0x52, 0x51, 0x1, 0xC, 0x8F, 0x7, 0xAD, 0x98, 0x98, 0x98, 0x3C, 0xFD, 0xD8, 0x2, 0x28, 0x0, 0x1, 0xFC, 0xA5, 0x3, 0xCC, 0xFE, 0xA8, 0x6, 0xDA, 0x0, 0x10, 0x0, 0x0, 0x1, 0x22, 0x27, 0x35, 0x17, 0x32, 0x36, 0x37, 0x3, 0x33, 0x13, 0x17, 0x13, 0x33, 0x3, 0x6, 0x6, 0xFD, 0x21, 0x1B, 0x27, 0x1F, 0x27, 0x2D, 0x18, 0xC5, 0x92, 0x66, 0x8, 0x75, 0x8E, 0xDE, 0x15, 0x48, 0x3, 0xCC, 0x9, 0x6D, 0x2, 0x22, 0x49, 0x2, 0x2F, 0xFE, 0xAA, 0x24, 0x1, 0x7A, 0xFD, 0x7F, 0x39, 0x54, 0x0, 0x2, 0xFC, 0x2E, 0x4, 0xB1, 0xFE, 0xD9, 0x6, 0xD9, 0x0, 0xB, 0x0, 0x12, 0x0, 0x0, 0x1, 0x11, 0x23, 0x35, 0x21, 0x15, 0x33, 0x20, 0x15, 0x14, 0x6, 0x23, 0x27, 0x33, 0x32, 0x35, 0x34, 0x23, 0x23, 0xFC, 0xE0, 0xB2, 0x1, 0x41, 0x67, 0x1, 0x3, 0x87, 0x6A, 0x79, 0x79, 0x62, 0x62, 0x79, 0x4, 0xB1, 0x1, 0xBA, 0x6E, 0xA2, 0xC3, 0x62, 0x61, 0x6F, 0x55, 0x52, 0x0, 0x3, 0xFC, 0x67, 0x4, 0xB1, 0xFF, 0x31, 0x6, 0xD9, 0x0, 0x9, 0x0, 0xD, 0x0, 0x14, 0x0, 0x0, 0x1, 0x11, 0x33, 0x15, 0x33, 0x20, 0x15, 0x14, 0x6, 0x23, 0x1, 0x11, 0x23, 0x11, 0x1, 0x33, 0x32, 0x35, 0x34, 0x23, 0x23, 0xFC, 0x67, 0x8F, 0x69, 0x1, 0x1, 0x86, 0x6B, 0x1, 0xC2, 0x8F, 0xFE, 0x54, 0x79, 0x62, 0x62, 0x79, 0x4, 0xB1, 0x2, 0x28, 0xA2, 0xC3, 0x62, 0x61, 0x2, 0x28, 0xFD, 0xD8, 0x2, 0x28, 0xFE, 0x47, 0x55, 0x52, 0x0, 0x2, 0xFC, 0xE0, 0x4, 0xB1, 0xFE, 0xD9, 0x6, 0xD9, 0x0, 0x9, 0x0, 0x10, 0x0, 0x0, 0x1, 0x11, 0x33, 0x15, 0x33, 0x20, 0x15, 0x14, 0x6, 0x23, 0x27, 0x33, 0x32, 0x35, 0x34, 0x23, 0x23, 0xFC, 0xE0, 0x8F, 0x67, 0x1, 0x3, 0x87, 0x6A, 0x79, 0x79, 0x62, 0x62, 0x79, 0x4, 0xB1, 0x2, 0x28, 0xA2, 0xC3, 0x62, 0x61, 0x6F, 0x55, 0x52, 0x0, 0x1, 0xFC, 0x32, 0x4, 0xA7, 0xFF, 0x3B, 0x6, 0xD9, 0x0, 0x17, 0x0, 0x0, 0x1, 0x22, 0x27, 0x6, 0x23, 0x22, 0x27, 0x11, 0x33, 0x11, 0x14, 0x32, 0x35, 0x11, 0x33, 0x11, 0x14, 0x32, 0x35, 0x11, 0x33, 0x11, 0x14, 0x6, 0xFE, 0x55, 0x60, 0x3D, 0x3B, 0x65, 0xE0, 0x6, 0x8F, 0xAE, 0x8F, 0xAE, 0x8F, 0x73, 0x4, 0xA7, 0x4B, 0x4B, 0xDA, 0x1, 0x58, 0xFE, 0xB5, 0x73, 0x73, 0x1, 0x4B, 0xFE, 0xB5, 0x73, 0x73, 0x1, 0x4B, 0xFE, 0xB6, 0x7C, 0x6C, 0xFF, 0xFF, 0xFC, 0x75, 0x4, 0xCC, 0xFE, 0xFA, 0x5, 0xE7, 0x0, 0x7, 0x1, 0x89, 0xFB, 0xFF, 0x0, 0x0, 0x0, 0x1, 0xFC, 0x99, 0x4, 0x69, 0xFE, 0xD9, 0x5, 0xE4, 0x0, 0xF, 0x0, 0x0, 0x1, 0x23, 0x37, 0x6, 0x23, 0x22, 0x26, 0x37, 0x33, 0x6, 0x16, 0x33, 0x32, 0x37, 0x37, 0x33, 0xFE, 0x82, 0x99, 0x1E, 0x23, 0x25, 0x7A, 0xAC, 0xB, 0x9B, 0x2, 0x3D, 0x4E, 0x39, 0x2C, 0x13, 0x99, 0x4, 0x69, 0x6F, 0xA, 0x91, 0x85, 0x3A, 0x5E, 0x16, 0x47, 0xFF, 0xFF, 0x0, 0x50, 0x4, 0xCC, 0x2, 0xD5, 0x5, 0xE7, 0x0, 0x6, 0x1, 0x89, 0xDA, 0x0, 0xFF, 0xFF, 0x0, 0x47, 0x4, 0x69, 0x2, 0x87, 0x5, 0xE4, 0x0, 0x7, 0x6, 0x16, 0x3, 0xAE, 0x0, 0x0, 0x0, 0x2, 0x0, 0x24, 0xFE, 0x9A, 0x5, 0xDC, 0x6, 0xCE, 0x0, 0x5, 0x0, 0x16, 0x0, 0x0, 0x25, 0x21, 0x11, 0x21, 0x3, 0x2, 0x1, 0x11, 0x21, 0x11, 0x23, 0x3, 0x33, 0x36, 0x12, 0x13, 0x13, 0x33, 0x3, 0x21, 0x11, 0x33, 0x3, 0x1, 0xB6, 0x2, 0x71, 0xFE, 0x57, 0x1B, 0x1E, 0x2, 0x9A, 0xFC, 0x41, 0xF3, 0x9, 0x76, 0x37, 0x83, 0x14, 0x37, 0xFC, 0x11, 0x2, 0x9A, 0xB8, 0xD, 0xCA, 0x4, 0x1B, 0xFE, 0x4A, 0xFE, 0x79, 0xFC, 0xF2, 0x1, 0x66, 0xFE, 0x9A, 0x2, 0x30, 0x35, 0x1, 0x1D, 0x1, 0x30, 0x3, 0x82, 0xFE, 0xE2, 0xFB, 0x1A, 0xFD, 0xD0, 0x0, 0x2, 0x0, 0x27, 0xFE, 0xBE, 0x4, 0xC6, 0x5, 0x7A, 0x0, 0x5, 0x0, 0x16, 0x0, 0x0, 0x25, 0x21, 0x11, 0x21, 0x7, 0x2, 0x3, 0x11, 0x23, 0x11, 0x33, 0x36, 0x36, 0x37, 0x13, 0x33, 0x3, 0x21, 0x11, 0x33, 0x11, 0x23, 0x11, 0x1, 0x9F, 0x1, 0x9E, 0xFE, 0xEE, 0x6, 0xE, 0xF9, 0xF7, 0x5A, 0x55, 0x56, 0x7, 0x15, 0xF2, 0x9, 0x1, 0xFF, 0x96, 0xF3, 0xC3, 0x2, 0xA6, 0xCF, 0xFE, 0xD8, 0xFE, 0x8E, 0xFE, 0xBE, 0x2, 0x5, 0x5F, 0xCA, 0xCA, 0x2, 0xC4, 0xFE, 0xC0, 0xFC, 0x89, 0xFD, 0xFB, 0x1, 0x42, 0x0, 0x1, 0x0, 0x4D, 0xFE, 0x4B, 0x4, 0x86, 0x5, 0xC4, 0x0, 0x25, 0x0, 0x0, 0x25, 0x34, 0x26, 0x24, 0x26, 0x26, 0x35, 0x34, 0x24, 0x33, 0x32, 0x0, 0x15, 0x23, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x14, 0x16, 0x17, 0x16, 0x16, 0x15, 0x14, 0x0, 0x23, 0x22, 0x26, 0x26, 0x35, 0x33, 0x14, 0x16, 0x33, 0x20, 0x3, 0x8A, 0x91, 0xFE, 0xA5, 0xC2, 0x62, 0x1, 0x1A, 0xE6, 0xF8, 0x1, 0x13, 0xFC, 0x84, 0x8D, 0x85, 0x7C, 0xB0, 0x8F, 0xEE, 0xE2, 0xFE, 0xDF, 0xF1, 0x8D, 0xFC, 0x9E, 0xFC, 0xB9, 0x7A, 0x1, 0xE, 0x38, 0x79, 0xAD, 0xC1, 0xA0, 0xB8, 0x7B, 0xDE, 0xF4, 0xFE, 0xF8, 0xB3, 0x6B, 0x87, 0x8C, 0x7D, 0x83, 0x9C, 0x51, 0x86, 0xFD, 0xC7, 0xEA, 0xFE, 0xFD, 0x66, 0xCB, 0x98, 0x87, 0x78, 0x0, 0x1, 0x0, 0x4D, 0xFE, 0x4B, 0x3, 0xCC, 0x4, 0x4E, 0x0, 0x24, 0x0, 0x0, 0x5, 0x34, 0x26, 0x24, 0x27, 0x26, 0x35, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x23, 0x34, 0x26, 0x23, 0x22, 0x15, 0x14, 0x16, 0x17, 0x16, 0x16, 0x15, 0x14, 0x6, 0x23, 0x22, 0x26, 0x35, 0x33, 0x16, 0x16, 0x33, 0x32, 0x36, 0x2, 0xDD, 0x7C, 0xFE, 0xE2, 0x67, 0x6B, 0xE1, 0xC1, 0xCB, 0xE6, 0xF3, 0x60, 0x5F, 0xB4, 0x66, 0x83, 0xC1, 0xC4, 0xEB, 0xCB, 0xDF, 0xEA, 0xEC, 0x5, 0x89, 0x52, 0x60, 0x64, 0x29, 0x6C, 0x83, 0x91, 0x63, 0x67, 0xB4, 0xAF, 0xCA, 0xC6, 0x92, 0x3F, 0x63, 0xC2, 0x50, 0x84, 0x42, 0x61, 0xEA, 0xA0, 0xB3, 0xD7, 0xE4, 0x86, 0x65, 0x4F, 0x72, 0x0, 0x1, 0x0, 0x49, 0xFF, 0xEC, 0x9, 0x90, 0x5, 0xC4, 0x0, 0x36, 0x0, 0x0, 0x1, 0x14, 0x4, 0x23, 0x22, 0x26, 0x26, 0x35, 0x33, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x34, 0x25, 0x23, 0x35, 0x33, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x23, 0x34, 0x24, 0x33, 0x32, 0x4, 0x15, 0x14, 0x7, 0x33, 0x11, 0x33, 0x11, 0x33, 0x1, 0x21, 0x1, 0x1, 0x21, 0x1, 0x23, 0x11, 0x23, 0x11, 0x23, 0x16, 0x4, 0x7F, 0xFE, 0xCB, 0xF0, 0x81, 0xF3, 0x9D, 0xFD, 0x98, 0x7C, 0x8E, 0x9A, 0xFE, 0xF6, 0xB9, 0xAB, 0x8A, 0x78, 0x83, 0x8F, 0x6C, 0x94, 0xFC, 0x1, 0x2D, 0xCF, 0xF0, 0x1, 0x1F, 0x59, 0xEA, 0xFD, 0x8A, 0x1, 0xAD, 0x1, 0x36, 0xFE, 0xD, 0x2, 0x1F, 0xFE, 0xD0, 0xFE, 0x43, 0xAC, 0xFD, 0xBF, 0x44, 0x1, 0x98, 0xCD, 0xDF, 0x58, 0xBB, 0x95, 0x5B, 0x83, 0x81, 0x61, 0xE5, 0x6, 0xC7, 0x79, 0x61, 0x56, 0x7F, 0x72, 0x5B, 0xBE, 0xDA, 0xD3, 0xCC, 0x7A, 0x5E, 0x2, 0x63, 0xFD, 0x9D, 0x2, 0x63, 0xFD, 0x47, 0xFD, 0x9, 0x2, 0x70, 0xFD, 0x90, 0x2, 0x70, 0x58, 0x0, 0x1, 0x0, 0x4E, 0xFF, 0xEC, 0x7, 0xFE, 0x4, 0x4D, 0x0, 0x35, 0x0, 0x0, 0x1, 0x14, 0x6, 0x23, 0x22, 0x26, 0x26, 0x35, 0x33, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x34, 0x27, 0x23, 0x35, 0x33, 0x36, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x23, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x7, 0x33, 0x11, 0x33, 0x11, 0x33, 0x1, 0x21, 0x1, 0x1, 0x21, 0x1, 0x23, 0x11, 0x23, 0x11, 0x23, 0x16, 0x3, 0xC4, 0xF7, 0xC5, 0x6D, 0xCB, 0x82, 0xF2, 0x6E, 0x61, 0x64, 0x5E, 0xB7, 0xB3, 0xBB, 0x9C, 0x4D, 0x62, 0x52, 0x6C, 0xF2, 0xFA, 0xAF, 0xC4, 0xE5, 0x2E, 0xA5, 0xF3, 0x6C, 0x1, 0x2A, 0x1, 0x2D, 0xFE, 0x78, 0x1, 0xA8, 0xFE, 0xC5, 0xFE, 0xD3, 0x7B, 0xF3, 0x7F, 0x1B, 0x1, 0x32, 0x9A, 0xAC, 0x48, 0x97, 0x76, 0x3D, 0x5E, 0x5D, 0x3A, 0x92, 0x2, 0xB0, 0x4, 0x82, 0x34, 0x57, 0x4D, 0x3E, 0x98, 0xAE, 0xA1, 0x9A, 0x4A, 0x3D, 0x1, 0xAF, 0xFE, 0x51, 0x1, 0xAF, 0xFD, 0xFA, 0xFD, 0xCC, 0x1, 0xAD, 0xFE, 0x53, 0x1, 0xAD, 0x36, 0x0, 0x1, 0x0, 0x84, 0x0, 0x0, 0x5, 0xD0, 0x5, 0xB0, 0x0, 0x20, 0x0, 0x0, 0x21, 0x23, 0x11, 0x6, 0x23, 0x22, 0x27, 0x6, 0x6, 0x23, 0x22, 0x26, 0x27, 0x11, 0x33, 0x11, 0x14, 0x16, 0x33, 0x32, 0x37, 0x26, 0x35, 0x11, 0x33, 0x11, 0x14, 0x16, 0x33, 0x32, 0x37, 0x11, 0x33, 0x5, 0xD0, 0xFD, 0x4A, 0x3F, 0x9D, 0x62, 0x3B, 0x96, 0x31, 0xDD, 0xE7, 0x1, 0xFC, 0x64, 0x6F, 0x33, 0x31, 0x2B, 0xFC, 0x5D, 0x6F, 0x40, 0x3F, 0xFD, 0x2, 0x24, 0x11, 0x32, 0x18, 0x1A, 0xD4, 0xFB, 0x1, 0xCE, 0xFE, 0x36, 0x90, 0x78, 0x9, 0x65, 0x9A, 0x1, 0xCA, 0xFE, 0x36, 0x90, 0x78, 0xF, 0x2, 0xC3, 0x0, 0x1, 0x0, 0x36, 0x0, 0x0, 0x4, 0xEB, 0x4, 0x3B, 0x0, 0x1F, 0x0, 0x0, 0x21, 0x23, 0x11, 0x6, 0x23, 0x22, 0x27, 0x6, 0x23, 0x22, 0x26, 0x35, 0x11, 0x33, 0x11, 0x14, 0x16, 0x33, 0x32, 0x37, 0x26, 0x35, 0x11, 0x33, 0x11, 0x14, 0x16, 0x33, 0x32, 0x37, 0x11, 0x33, 0x4, 0xEB, 0xF3, 0x36, 0x33, 0x83, 0x57, 0x79, 0x70, 0xC3, 0xD3, 0xF3, 0x48, 0x5A, 0x2A, 0x2A, 0x22, 0xF2, 0x46, 0x59, 0x35, 0x35, 0xF3, 0x1, 0x5D, 0x9, 0x29, 0x29, 0xC0, 0xDB, 0x1, 0x4C, 0xFE, 0xB4, 0x6E, 0x6A, 0x8, 0x55, 0x7B, 0x1, 0x4C, 0xFE, 0xB4, 0x6E, 0x6A, 0x9, 0x2, 0x1A, 0x0, 0x2, 0x0, 0x24, 0xFE, 0x4B, 0x6, 0xF2, 0x5, 0xB0, 0x0, 0x5, 0x0, 0x2F, 0x0, 0x0, 0x25, 0x21, 0x11, 0x21, 0x3, 0x2, 0x1, 0x22, 0x26, 0x35, 0x33, 0x16, 0x33, 0x32, 0x35, 0x34, 0x27, 0x23, 0x35, 0x33, 0x36, 0x35, 0x34, 0x23, 0x22, 0x6, 0x23, 0x31, 0x21, 0x11, 0x23, 0x3, 0x33, 0x36, 0x12, 0x13, 0x13, 0x21, 0x11, 0x33, 0x20, 0x15, 0x14, 0x7, 0x16, 0x15, 0x14, 0x6, 0x1, 0xB6, 0x2, 0x71, 0xFE, 0x57, 0x1A, 0x1E, 0x3, 0xB0, 0x64, 0xA8, 0x8E, 0x6, 0x72, 0x6C, 0x66, 0x61, 0x61, 0x5B, 0x54, 0x40, 0x4C, 0x4D, 0xFB, 0xFC, 0xF3, 0x9, 0x76, 0x36, 0x82, 0x14, 0x28, 0x3, 0x96, 0xBD, 0x1, 0x6, 0x6B, 0x76, 0x94, 0xCA, 0x4, 0x1B, 0xFE, 0x57, 0xFE, 0x6D, 0xFC, 0xA2, 0x5C, 0x64, 0x46, 0x49, 0x44, 0x1, 0x77, 0x1, 0x3E, 0x3C, 0x45, 0xFE, 0x9A, 0x2, 0x30, 0x34, 0x1, 0x19, 0x1, 0x27, 0x2, 0x72, 0xFB, 0x1A, 0xB5, 0x5A, 0x2A, 0x25, 0x6B, 0x55, 0x61, 0x0, 0x2, 0x0, 0x27, 0xFE, 0x4B, 0x5, 0xDD, 0x4, 0x3A, 0x0, 0x5, 0x0, 0x2F, 0x0, 0x0, 0x25, 0x5, 0x11, 0x21, 0x7, 0x2, 0x1, 0x22, 0x26, 0x35, 0x33, 0x16, 0x33, 0x32, 0x35, 0x34, 0x27, 0x23, 0x35, 0x33, 0x36, 0x35, 0x34, 0x23, 0x22, 0x6, 0x23, 0x21, 0x11, 0x23, 0x13, 0x33, 0x36, 0x36, 0x37, 0x13, 0x21, 0x11, 0x33, 0x32, 0x16, 0x15, 0x14, 0x7, 0x16, 0x15, 0x14, 0x6, 0x1, 0xA1, 0x1, 0x9C, 0xFE, 0xF0, 0x6, 0xD, 0x2, 0xC4, 0x5D, 0xAC, 0x8E, 0x6, 0x72, 0x6C, 0x66, 0x61, 0x61, 0x5B, 0x54, 0x3D, 0x46, 0x35, 0xFC, 0xEE, 0xF7, 0x1, 0x5A, 0x53, 0x5B, 0x6, 0xA, 0x2, 0xF0, 0xA7, 0x70, 0x8B, 0x6A, 0x75, 0x8E, 0xC4, 0x1, 0x2, 0xA6, 0xD3, 0xFE, 0xDC, 0xFC, 0xD9, 0x5C, 0x64, 0x46, 0x49, 0x44, 0x1, 0x77, 0x1, 0x3E, 0x3C, 0x45, 0xFE, 0xBE, 0x2, 0x6, 0x5D, 0xC9, 0xCD, 0x1, 0x83, 0xFC, 0x89, 0x5A, 0x56, 0x58, 0x2A, 0x25, 0x6B, 0x55, 0x61, 0x0, 0x1, 0x0, 0x2D, 0xFE, 0x4B, 0x5, 0x7A, 0x5, 0xB0, 0x0, 0x1E, 0x0, 0x0, 0x1, 0x22, 0x27, 0x37, 0x16, 0x33, 0x32, 0x37, 0x11, 0x34, 0x26, 0x23, 0x22, 0x7, 0x11, 0x23, 0x11, 0x21, 0x35, 0x21, 0x15, 0x21, 0x11, 0x36, 0x33, 0x32, 0x16, 0x17, 0x11, 0x14, 0x6, 0x4, 0x19, 0x44, 0x3B, 0xE, 0x26, 0x3D, 0x7B, 0x1, 0x66, 0x60, 0x92, 0x4B, 0xF3, 0xFE, 0x3C, 0x4, 0x7D, 0xFE, 0x3A, 0x71, 0xBF, 0xA1, 0xC4, 0x1, 0xBC, 0xFE, 0x4B, 0x11, 0xC5, 0xC, 0xA9, 0x2, 0xE2, 0x83, 0x65, 0x69, 0xFC, 0xE1, 0x4, 0xED, 0xC3, 0xC3, 0xFE, 0xC2, 0x9F, 0xC4, 0xE3, 0xFD, 0x1A, 0xB6, 0xC0, 0x0, 0x1, 0x0, 0x24, 0xFE, 0x4B, 0x4, 0xFD, 0x4, 0x3A, 0x0, 0x1F, 0x0, 0x0, 0x1, 0x22, 0x27, 0x37, 0x16, 0x33, 0x32, 0x36, 0x35, 0x11, 0x34, 0x26, 0x23, 0x22, 0x7, 0x11, 0x23, 0x11, 0x21, 0x35, 0x21, 0x15, 0x21, 0x11, 0x36, 0x33, 0x32, 0x16, 0x15, 0x11, 0x14, 0x6, 0x3, 0x9C, 0x49, 0x3C, 0xA, 0x25, 0x37, 0x3B, 0x52, 0x62, 0x5D, 0x92, 0x48, 0xF3, 0xFE, 0xA6, 0x3, 0xAD, 0xFE, 0xA0, 0x76, 0xB6, 0xA0, 0xC0, 0xCF, 0xFE, 0x4B, 0x11, 0xB1, 0xB, 0x53, 0x56, 0x1, 0x90, 0x83, 0x6F, 0x81, 0xFE, 0x54, 0x3, 0x79, 0xC1, 0xC1, 0xFE, 0xF0, 0x8A, 0xD0, 0xEA, 0xFE, 0x72, 0xC2, 0x9E, 0x0, 0x1, 0x0, 0x2D, 0xFF, 0xEC, 0x4, 0xB0, 0x5, 0xB0, 0x0, 0x11, 0x0, 0x0, 0x21, 0x6, 0x23, 0x22, 0x26, 0x35, 0x11, 0x21, 0x35, 0x21, 0x15, 0x21, 0x11, 0x14, 0x16, 0x33, 0x32, 0x37, 0x3, 0xD3, 0x46, 0x53, 0x84, 0xC7, 0xFE, 0x3E, 0x4, 0x83, 0xFE, 0x3B, 0x5C, 0x34, 0x1D, 0x3B, 0x14, 0x9F, 0xB1, 0x3, 0xA9, 0xCB, 0xCB, 0xFC, 0x57, 0x55, 0x32, 0xB, 0x0, 0x1, 0x0, 0x24, 0xFF, 0xEC, 0x3, 0xD1, 0x4, 0x3A, 0x0, 0x11, 0x0, 0x0, 0x21, 0x6, 0x23, 0x22, 0x26, 0x35, 0x11, 0x21, 0x35, 0x21, 0x15, 0x21, 0x11, 0x14, 0x16, 0x33, 0x32, 0x37, 0x3, 0x5B, 0x46, 0x4F, 0x84, 0xC4, 0xFE, 0xA6, 0x3, 0xAD, 0xFE, 0xA0, 0x5E, 0x34, 0x1D, 0x3B, 0x14, 0xAC, 0xB8, 0x2, 0x29, 0xC1, 0xC1, 0xFD, 0xD6, 0x5C, 0x3E, 0xB, 0x0, 0x1, 0x0, 0x93, 0xFE, 0x65, 0x5, 0xF5, 0x5, 0xB0, 0x0, 0x1A, 0x0, 0x0, 0x1, 0x20, 0x25, 0x37, 0x16, 0x4, 0x33, 0x32, 0x36, 0x35, 0x34, 0x27, 0x21, 0x11, 0x33, 0x11, 0x21, 0x11, 0x33, 0x11, 0x33, 0x16, 0x16, 0x15, 0x14, 0x6, 0x4, 0x3, 0x63, 0xFE, 0x90, 0xFE, 0xC2, 0x54, 0x75, 0x1, 0x38, 0xB8, 0x94, 0xFF, 0x18, 0xFB, 0xAA, 0xFC, 0x2, 0x81, 0xFD, 0x8F, 0x27, 0x32, 0xB6, 0xFE, 0xD4, 0xFE, 0x65, 0x8F, 0xC1, 0x34, 0x4B, 0x3D, 0x44, 0x25, 0x24, 0x5, 0xB0, 0xFB, 0x1A, 0x4, 0xE6, 0xFB, 0x1A, 0x3E, 0x78, 0x44, 0x8A, 0x9F, 0x42, 0x0, 0x1, 0x0, 0x87, 0xFE, 0x6D, 0x4, 0xE6, 0x4, 0x3A, 0x0, 0x1A, 0x0, 0x0, 0x1, 0x20, 0x25, 0x37, 0x16, 0x16, 0x33, 0x32, 0x36, 0x35, 0x34, 0x27, 0x21, 0x11, 0x33, 0x11, 0x21, 0x11, 0x33, 0x11, 0x33, 0x16, 0x16, 0x15, 0x14, 0x6, 0x6, 0x2, 0xC5, 0xFE, 0xDB, 0xFE, 0xF9, 0x4B, 0x68, 0xE1, 0x94, 0x8B, 0xAE, 0x18, 0xFC, 0xA5, 0xF3, 0x1, 0xA7, 0xF3, 0x7F, 0x24, 0x2F, 0x9B, 0xF9, 0xFE, 0x6D, 0x7C, 0xB4, 0x32, 0x39, 0x44, 0x41, 0x25, 0x24, 0x4, 0x3A, 0xFC, 0x89, 0x3, 0x77, 0xFC, 0x8C, 0x3E, 0x74, 0x44, 0x81, 0x9C, 0x46, 0x0, 0x1, 0x0, 0x2D, 0xFE, 0xCA, 0x4, 0xB0, 0x5, 0xB0, 0x0, 0x17, 0x0, 0x0, 0x1, 0x6, 0x23, 0x22, 0x26, 0x35, 0x34, 0x36, 0x33, 0x11, 0x21, 0x35, 0x21, 0x15, 0x21, 0x11, 0x23, 0x22, 0x15, 0x14, 0x16, 0x33, 0x32, 0x37, 0x2, 0x97, 0x3E, 0x5E, 0x6C, 0x9E, 0x73, 0x8B, 0xFE, 0x3E, 0x4, 0x83, 0xFE, 0x3B, 0xF8, 0x51, 0x41, 0x2C, 0x42, 0x2B, 0xFE, 0xF8, 0x2E, 0x6C, 0x75, 0x5E, 0x8E, 0x4, 0x4E, 0xCB, 0xCB, 0xFB, 0x1B, 0x56, 0x32, 0x28, 0x1C, 0x0, 0x1, 0x0, 0x24, 0xFE, 0xCA, 0x3, 0xD1, 0x4, 0x3A, 0x0, 0x18, 0x0, 0x0, 0x25, 0x11, 0x21, 0x35, 0x21, 0x15, 0x21, 0x11, 0x23, 0x22, 0x15, 0x14, 0x16, 0x33, 0x32, 0x37, 0x17, 0x6, 0x23, 0x22, 0x26, 0x35, 0x34, 0x36, 0x33, 0x1, 0x7E, 0xFE, 0xA6, 0x3, 0xAD, 0xFE, 0xA0, 0xF3, 0x51, 0x41, 0x2C, 0x44, 0x29, 0x1B, 0x3E, 0x5E, 0x6C, 0x9E, 0x73, 0x7F, 0x97, 0x2, 0xE2, 0xC1, 0xC1, 0xFC, 0x87, 0x56, 0x32, 0x28, 0x1C, 0x74, 0x2E, 0x6C, 0x75, 0x5D, 0x8F, 0x0, 0x1, 0x0, 0x1B, 0x0, 0x0, 0x6, 0x38, 0x5, 0xB0, 0x0, 0x15, 0x0, 0x0, 0x1, 0x11, 0x23, 0x11, 0x6, 0x23, 0x22, 0x24, 0x27, 0x11, 0x21, 0x35, 0x21, 0x15, 0x21, 0x15, 0x14, 0x16, 0x33, 0x32, 0x37, 0x11, 0x6, 0x38, 0xFD, 0x9E, 0xB4, 0xF3, 0xFE, 0xE3, 0x2, 0xFE, 0x44, 0x4, 0x58, 0xFE, 0x61, 0x8A, 0x8B, 0xA9, 0xA9, 0x5, 0xB0, 0xFA, 0x50, 0x2, 0x3E, 0x29, 0xD6, 0xF5, 0x1, 0x5, 0xCB, 0xCB, 0xFE, 0x9A, 0x6D, 0x29, 0x2, 0xA7, 0x0, 0x1, 0x0, 0x11, 0x0, 0x0, 0x4, 0xEC, 0x4, 0x3A, 0x0, 0x15, 0x0, 0x0, 0x1, 0x11, 0x23, 0x11, 0x6, 0x23, 0x22, 0x26, 0x35, 0x35, 0x21, 0x35, 0x21, 0x15, 0x21, 0x15, 0x14, 0x16, 0x33, 0x32, 0x37, 0x11, 0x4, 0xEC, 0xF3, 0x63, 0x63, 0xD2, 0xF6, 0xFE, 0xA6, 0x3, 0x84, 0xFE, 0xC9, 0x6A, 0x6B, 0x64, 0x62, 0x4, 0x3A, 0xFB, 0xC6, 0x1, 0x6A, 0x16, 0xC9, 0xD2, 0x89, 0xC2, 0xC2, 0x89, 0x76, 0x62, 0x17, 0x2, 0xC, 0x0, 0x1, 0x0, 0x85, 0x0, 0x0, 0x4, 0xE8, 0x5, 0xC4, 0x0, 0x1B, 0x0, 0x0, 0x1, 0x22, 0x7, 0x11, 0x23, 0x11, 0x34, 0x36, 0x33, 0x32, 0x17, 0x7, 0x26, 0x23, 0x22, 0x6, 0x15, 0x15, 0x36, 0x33, 0x32, 0x4, 0x17, 0x11, 0x23, 0x11, 0x34, 0x26, 0x2, 0xDE, 0xB2, 0xAB, 0xFC, 0xD6, 0xA9, 0x45, 0x3B, 0xA, 0x32, 0x2F, 0x3D, 0x5B, 0xAC, 0xB1, 0xF0, 0x1, 0x18, 0x2, 0xFC, 0x87, 0x3, 0x33, 0x2B, 0xFC, 0xF8, 0x4, 0x4E, 0xB6, 0xC0, 0x11, 0xC2, 0xC, 0x53, 0x5C, 0x7C, 0x2B, 0xCC, 0xFC, 0xFD, 0xCB, 0x2, 0x2E, 0x97, 0x6E, 0x0, 0x1, 0x0, 0x7E, 0x0, 0x0, 0x3, 0xFD, 0x6, 0x1F, 0x0, 0x1B, 0x0, 0x0, 0x1, 0x22, 0x7, 0x11, 0x23, 0x11, 0x34, 0x36, 0x33, 0x32, 0x17, 0x7, 0x26, 0x23, 0x22, 0x6, 0x15, 0x15, 0x36, 0x33, 0x32, 0x16, 0x15, 0x11, 0x23, 0x11, 0x34, 0x26, 0x2, 0x4B, 0x93, 0x48, 0xF2, 0xCF, 0x91, 0x4E, 0x37, 0x9, 0x2A, 0x32, 0x3A, 0x54, 0x76, 0xB7, 0xA0, 0xC0, 0xF3, 0x62, 0x3, 0x88, 0x83, 0xFC, 0xFB, 0x4, 0xC0, 0xC2, 0x9D, 0x10, 0xB1, 0xB, 0x53, 0x56, 0xFC, 0x8A, 0xD0, 0xEA, 0xFD, 0x6C, 0x2, 0x96, 0x83, 0x6F, 0x0, 0x1, 0x0, 0x93, 0xFE, 0x65, 0x7, 0xC6, 0x5, 0xB0, 0x0, 0x1E, 0x0, 0x0, 0x1, 0x20, 0x25, 0x37, 0x16, 0x4, 0x33, 0x32, 0x36, 0x35, 0x34, 0x27, 0x21, 0x11, 0x33, 0x11, 0x21, 0x11, 0x33, 0x11, 0x21, 0x11, 0x33, 0x11, 0x33, 0x16, 0x16, 0x15, 0x14, 0x6, 0x4, 0x5, 0x34, 0xFE, 0x92, 0xFE, 0xC0, 0x54, 0x75, 0x1, 0x39, 0xB8, 0x94, 0xFF, 0x19, 0xF9, 0xD9, 0xFD, 0x1, 0xBD, 0xFC, 0x1, 0xB9, 0xFC, 0x6F, 0x27, 0x32, 0xB6, 0xFE, 0xD4, 0xFE, 0x65, 0x8F, 0xC1, 0x34, 0x4B, 0x3D, 0x44, 0x25, 0x24, 0x5, 0xB0, 0xFB, 0x1A, 0x4, 0xE6, 0xFB, 0x1A, 0x4, 0xE6, 0xFB, 0x1A, 0x3E, 0x78, 0x44, 0x8A, 0x9F, 0x42, 0x0, 0x1, 0x0, 0x7D, 0xFE, 0x6D, 0x6, 0xD0, 0x4, 0x3A, 0x0, 0x1E, 0x0, 0x0, 0x1, 0x20, 0x25, 0x37, 0x16, 0x16, 0x33, 0x32, 0x36, 0x35, 0x34, 0x27, 0x21, 0x11, 0x33, 0x11, 0x21, 0x11, 0x33, 0x11, 0x21, 0x11, 0x33, 0x11, 0x33, 0x16, 0x16, 0x15, 0x14, 0x6, 0x6, 0x4, 0xB0, 0xFE, 0xDA, 0xFE, 0xF9, 0x4C, 0x68, 0xE0, 0x94, 0x8B, 0xAE, 0x18, 0xFA, 0xB1, 0xF2, 0x1, 0x53, 0xF3, 0x1, 0x53, 0xF2, 0x83, 0x25, 0x2E, 0x9B, 0xF9, 0xFE, 0x6D, 0x7C, 0xB4, 0x32, 0x39, 0x44, 0x41, 0x27, 0x22, 0x4, 0x3A, 0xFC, 0x89, 0x3, 0x77, 0xFC, 0x89, 0x3, 0x77, 0xFC, 0x89, 0x3F, 0x70, 0x44, 0x81, 0x9C, 0x46, 0xFF, 0xFF, 0x0, 0x66, 0xFF, 0xEC, 0x8, 0xE0, 0x5, 0xC4, 0x0, 0x26, 0x0, 0x34, 0x0, 0x0, 0x0, 0x7, 0x0, 0x34, 0x3, 0xC1, 0x0, 0x0, 0x0, 0x3, 0x0, 0x50, 0xFF, 0xEC, 0x7, 0x3D, 0x4, 0x4E, 0x0, 0x16, 0x0, 0x24, 0x0, 0x32, 0x0, 0x0, 0x5, 0x22, 0x27, 0x6, 0x23, 0x22, 0x0, 0x27, 0x35, 0x34, 0x0, 0x33, 0x32, 0x17, 0x36, 0x36, 0x33, 0x32, 0x0, 0x17, 0x15, 0x14, 0x0, 0x1, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x5, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x5, 0x46, 0xF4, 0x8B, 0x8B, 0xF4, 0xEB, 0xFE, 0xF7, 0x4, 0x1, 0xA, 0xEC, 0xF5, 0x8C, 0x40, 0xC1, 0x7C, 0xEC, 0x1, 0x9, 0x4, 0xFE, 0xF6, 0xFE, 0xE, 0x7D, 0x88, 0x87, 0x7D, 0x7D, 0x89, 0x87, 0x7C, 0xFD, 0x2, 0x7D, 0x88, 0x87, 0x7D, 0x7D, 0x89, 0x87, 0x7C, 0x14, 0xAD, 0xAD, 0x1, 0x33, 0xE6, 0x22, 0xEC, 0x1, 0x3B, 0xAE, 0x51, 0x5D, 0xFE, 0xCD, 0xE7, 0x22, 0xEB, 0xFE, 0xC5, 0x2, 0x26, 0x91, 0xD2, 0xD2, 0x91, 0x15, 0x8F, 0xD5, 0xD5, 0x8F, 0x15, 0x91, 0xD2, 0xD2, 0x91, 0x15, 0x8F, 0xD5, 0xD5, 0x8F, 0x0, 0x5, 0x0, 0x66, 0xFF, 0xEC, 0x5, 0x1F, 0x5, 0xC4, 0x0, 0xD, 0x0, 0x12, 0x0, 0x16, 0x0, 0x1B, 0x0, 0x1F, 0x0, 0x0, 0x1, 0x10, 0x0, 0x21, 0x20, 0x0, 0x11, 0x35, 0x10, 0x0, 0x21, 0x20, 0x0, 0x11, 0x25, 0x11, 0x6, 0x6, 0x7, 0x21, 0x2, 0x27, 0x11, 0x3, 0x11, 0x21, 0x16, 0x16, 0x5, 0x36, 0x13, 0x21, 0x5, 0x1F, 0xFE, 0xB5, 0xFE, 0xF0, 0xFE, 0xF6, 0xFE, 0xAC, 0x1, 0x52, 0x1, 0xA, 0x1, 0x10, 0x1, 0x4D, 0xFD, 0x51, 0x75, 0x8D, 0xA, 0x2, 0xBD, 0x12, 0xF8, 0xA7, 0xFE, 0xF4, 0x6, 0x8E, 0x1, 0x1F, 0xFE, 0xC, 0xFE, 0xF6, 0x2, 0xB3, 0xFE, 0xB4, 0xFE, 0x85, 0x1, 0x7B, 0x1, 0x4C, 0x49, 0x1, 0x4C, 0x1, 0x7C, 0xFE, 0x84, 0xFE, 0xB4, 0x39, 0x1, 0xB5, 0x1C, 0xDD, 0xBC, 0x1, 0x7A, 0x3A, 0xFE, 0x4C, 0xFD, 0x91, 0x1, 0xC8, 0xC3, 0xE8, 0x1E, 0x3B, 0x1, 0x8E, 0x0, 0x5, 0x0, 0x50, 0xFF, 0xEC, 0x4, 0x3E, 0x4, 0x4E, 0x0, 0xD, 0x0, 0x12, 0x0, 0x17, 0x0, 0x1C, 0x0, 0x21, 0x0, 0x0, 0x13, 0x34, 0x0, 0x33, 0x32, 0x0, 0x15, 0x15, 0x14, 0x0, 0x23, 0x22, 0x0, 0x27, 0x25, 0x11, 0x6, 0x6, 0x7, 0x21, 0x26, 0x26, 0x27, 0x11, 0x3, 0x11, 0x23, 0x16, 0x16, 0x17, 0x36, 0x36, 0x37, 0x23, 0x50, 0x1, 0xA, 0xEC, 0xEF, 0x1, 0x9, 0xFE, 0xF7, 0xED, 0xEB, 0xFE, 0xF7, 0x4, 0x1, 0xA3, 0x4D, 0x54, 0xB, 0x2, 0x1, 0xC, 0x55, 0x4D, 0xA7, 0xAC, 0xB, 0x54, 0xF4, 0x4E, 0x55, 0xB, 0xAE, 0x2, 0x27, 0xEC, 0x1, 0x3B, 0xFE, 0xC5, 0xEC, 0x15, 0xEB, 0xFE, 0xC5, 0x1, 0x33, 0xE6, 0x6C, 0x1, 0xC, 0x1B, 0x92, 0x5F, 0x5F, 0x92, 0x1B, 0xFE, 0xF4, 0xFE, 0x4C, 0x1, 0xC, 0x60, 0x91, 0x1C, 0x1A, 0x92, 0x61, 0x0, 0x2, 0x0, 0x28, 0x2, 0x8C, 0x3, 0xA0, 0x5, 0xAD, 0x0, 0xB, 0x0, 0x14, 0x0, 0x0, 0x13, 0x11, 0x23, 0x35, 0x21, 0x11, 0x33, 0x32, 0x16, 0x14, 0x6, 0x23, 0x27, 0x33, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x23, 0xF6, 0xCE, 0x1, 0x93, 0xAB, 0x94, 0xA6, 0xAC, 0x98, 0xA1, 0x91, 0x4B, 0x45, 0x40, 0x47, 0x9A, 0x2, 0x8C, 0x2, 0x7A, 0xA7, 0xFE, 0xFF, 0xA6, 0xDA, 0xA0, 0xA7, 0x3D, 0x2E, 0x2C, 0x3B, 0x0, 0x2, 0x0, 0x64, 0x2, 0x8C, 0x3, 0xF, 0x5, 0xAD, 0x0, 0x9, 0x0, 0x12, 0x0, 0x0, 0x13, 0x11, 0x33, 0x11, 0x33, 0x32, 0x16, 0x14, 0x6, 0x23, 0x27, 0x33, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x23, 0x64, 0xC5, 0xAB, 0x95, 0xA6, 0xAC, 0x98, 0xA2, 0x91, 0x4C, 0x44, 0x40, 0x46, 0x9B, 0x2, 0x8C, 0x3, 0x21, 0xFE, 0xFF, 0xA6, 0xDA, 0xA0, 0xA7, 0x3D, 0x2E, 0x2C, 0x3B, 0x0, 0x1, 0xFC, 0x78, 0x4, 0xA4, 0xFF, 0x51, 0x6, 0xE0, 0x0, 0x1F, 0x0, 0x0, 0x3, 0x14, 0x6, 0x23, 0x22, 0x26, 0x27, 0x23, 0x15, 0x23, 0x11, 0x33, 0x15, 0x33, 0x36, 0x36, 0x33, 0x32, 0x16, 0x15, 0x23, 0x26, 0x23, 0x22, 0x7, 0x33, 0x15, 0x23, 0x16, 0x33, 0x32, 0x37, 0xAF, 0x83, 0x61, 0x6E, 0x89, 0xC, 0x62, 0x90, 0x90, 0x64, 0xE, 0x89, 0x6B, 0x58, 0x8B, 0x82, 0x8, 0x59, 0x66, 0xE, 0xA7, 0xA7, 0xD, 0x66, 0x5C, 0x6, 0x5, 0x74, 0x5E, 0x72, 0x82, 0x6A, 0xDF, 0x2, 0x28, 0xD9, 0x65, 0x7B, 0x63, 0x5E, 0x4E, 0x78, 0x62, 0x7B, 0x5C, 0x0, 0x1, 0x0, 0x50, 0xFE, 0x60, 0x2, 0x8, 0x0, 0x9C, 0x0, 0x11, 0x0, 0x0, 0x1, 0x23, 0x22, 0x26, 0x35, 0x35, 0x34, 0x36, 0x33, 0x33, 0x15, 0x23, 0x22, 0x15, 0x14, 0x16, 0x33, 0x33, 0x2, 0x8, 0xAF, 0x85, 0x84, 0x85, 0x84, 0xAF, 0xAE, 0x7B, 0x3B, 0x3E, 0xB0, 0xFE, 0x60, 0xA3, 0x71, 0x13, 0x71, 0xA4, 0x74, 0xB4, 0x43, 0x5D, 0x0, 0x2, 0x0, 0x50, 0xFD, 0xD5, 0x2, 0x8, 0x0, 0x9C, 0x0, 0x10, 0x0, 0x14, 0x0, 0x0, 0x1, 0x23, 0x26, 0x26, 0x35, 0x34, 0x36, 0x33, 0x33, 0x15, 0x23, 0x22, 0x15, 0x14, 0x16, 0x33, 0x33, 0x15, 0x15, 0x21, 0x35, 0x2, 0x8, 0xB3, 0x82, 0x83, 0x85, 0x84, 0xAF, 0xAD, 0x7C, 0x3B, 0x3E, 0xB0, 0xFE, 0x6B, 0xFE, 0x84, 0x1, 0x99, 0x78, 0x6C, 0x9A, 0x73, 0xA0, 0x3D, 0x56, 0xAF, 0x72, 0x72, 0xFF, 0xFF, 0x0, 0x50, 0x3, 0x9A, 0x2, 0x8, 0x5, 0xD6, 0x0, 0x7, 0x6, 0x38, 0x0, 0x0, 0x5, 0x3A, 0x0, 0x2, 0x0, 0x50, 0x2, 0xEA, 0x2, 0x8, 0x5, 0xD5, 0x0, 0x11, 0x0, 0x15, 0x0, 0x0, 0x1, 0x23, 0x22, 0x26, 0x35, 0x35, 0x34, 0x36, 0x33, 0x33, 0x15, 0x23, 0x22, 0x15, 0x14, 0x16, 0x33, 0x33, 0x15, 0x15, 0x21, 0x35, 0x2, 0x8, 0xAF, 0x85, 0x84, 0x85, 0x84, 0xAF, 0xAE, 0x7B, 0x3B, 0x3E, 0xB0, 0xFE, 0x6B, 0x3, 0x99, 0xA4, 0x71, 0x13, 0x71, 0xA3, 0x73, 0xB4, 0x43, 0x5E, 0xAF, 0x74, 0x74, 0x0, 0x1, 0x0, 0x50, 0x3, 0x9A, 0x2, 0x8, 0x5, 0xD6, 0x0, 0x11, 0x0, 0x0, 0x13, 0x35, 0x33, 0x32, 0x35, 0x34, 0x26, 0x23, 0x23, 0x35, 0x33, 0x32, 0x16, 0x15, 0x15, 0x14, 0x6, 0x23, 0x50, 0xAF, 0x7A, 0x3B, 0x3D, 0xB1, 0xAF, 0x84, 0x85, 0x84, 0x85, 0x3, 0x9A, 0x74, 0xB3, 0x42, 0x5F, 0x74, 0xA4, 0x71, 0x12, 0x71, 0xA4, 0x0, 0x2, 0x0, 0x50, 0x2, 0xEA, 0x2, 0xE, 0x5, 0xD6, 0x0, 0x11, 0x0, 0x15, 0x0, 0x0, 0x13, 0x35, 0x33, 0x32, 0x35, 0x34, 0x26, 0x23, 0x23, 0x35, 0x33, 0x32, 0x16, 0x15, 0x15, 0x14, 0x6, 0x23, 0x17, 0x15, 0x21, 0x35, 0x56, 0xAF, 0x7A, 0x3B, 0x3D, 0xB1, 0xAF, 0x84, 0x85, 0x84, 0x85, 0xE0, 0xFE, 0x6B, 0x3, 0x9A, 0x74, 0xB3, 0x42, 0x5F, 0x74, 0xA4, 0x71, 0x12, 0x71, 0xA4, 0x3C, 0x74, 0x74, 0x0, 0x1, 0x0, 0x50, 0xFE, 0x60, 0x2, 0x8, 0x0, 0x9C, 0x0, 0x11, 0x0, 0x0, 0x13, 0x35, 0x33, 0x36, 0x35, 0x34, 0x26, 0x23, 0x23, 0x35, 0x33, 0x32, 0x16, 0x15, 0x15, 0x14, 0x6, 0x23, 0x50, 0xB1, 0x78, 0x3B, 0x3D, 0xB1, 0xAF, 0x84, 0x85, 0x84, 0x85, 0xFE, 0x60, 0x74, 0x1, 0xB2, 0x41, 0x60, 0x74, 0xA4, 0x71, 0x13, 0x71, 0xA3, 0x0, 0x2, 0x0, 0x50, 0xFD, 0xD5, 0x2, 0xE, 0x0, 0x9C, 0x0, 0x11, 0x0, 0x15, 0x0, 0x0, 0x13, 0x35, 0x33, 0x32, 0x35, 0x34, 0x26, 0x23, 0x23, 0x35, 0x33, 0x32, 0x16, 0x15, 0x15, 0x14, 0x6, 0x23, 0x17, 0x15, 0x21, 0x35, 0x56, 0xAD, 0x7C, 0x3B, 0x3D, 0xB1, 0xAF, 0x84, 0x85, 0x84, 0x85, 0xE0, 0xFE, 0x6B, 0xFE, 0x85, 0x74, 0x9F, 0x3B, 0x55, 0x74, 0x99, 0x6B, 0xF, 0x6A, 0x9A, 0x3C, 0x74, 0x74, 0x0, 0x2, 0x0, 0x32, 0xFE, 0xF2, 0x2, 0x6C, 0x5, 0xC4, 0x0, 0x9, 0x0, 0xD, 0x0, 0x0, 0x13, 0x34, 0x36, 0x32, 0x16, 0x15, 0x14, 0x6, 0x22, 0x26, 0x25, 0x11, 0x23, 0x11, 0x32, 0x48, 0x82, 0x49, 0x49, 0x82, 0x48, 0x2, 0x3A, 0xA8, 0x5, 0x48, 0x35, 0x47, 0x47, 0x35, 0x34, 0x47, 0x47, 0x9C, 0xF9, 0x42, 0x6, 0xBE, 0x0, 0x2, 0x0, 0x3C, 0xFE, 0xF2, 0x2, 0x76, 0x5, 0xB0, 0x0, 0x3, 0x0, 0xF, 0x0, 0x0, 0x1, 0x11, 0x23, 0x11, 0x1, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x6, 0x23, 0x22, 0x26, 0x2, 0x76, 0xA7, 0xFE, 0x6D, 0x49, 0x40, 0x41, 0x49, 0x49, 0x41, 0x40, 0x49, 0x5, 0xB0, 0xF9, 0x42, 0x6, 0xBE, 0xFE, 0x1C, 0x35, 0x48, 0x48, 0x35, 0x34, 0x47, 0x47, 0x0, 0x2, 0x0, 0x3C, 0xFE, 0xF2, 0x2, 0x76, 0x5, 0xB0, 0x0, 0x3, 0x0, 0xF, 0x0, 0x0, 0x1, 0x11, 0x23, 0x11, 0x1, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x6, 0x23, 0x22, 0x26, 0x2, 0x76, 0xA7, 0xFE, 0x6D, 0x49, 0x40, 0x41, 0x49, 0x49, 0x41, 0x40, 0x49, 0x5, 0xB0, 0xF9, 0x42, 0x6, 0xBE, 0xFC, 0xA1, 0x35, 0x47, 0x47, 0x35, 0x34, 0x47, 0x47, 0x0, 0x2, 0x0, 0x3C, 0xFE, 0xF2, 0x2, 0x76, 0x5, 0xB0, 0x0, 0x3, 0x0, 0xF, 0x0, 0x0, 0x1, 0x11, 0x23, 0x11, 0x1, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x6, 0x23, 0x22, 0x26, 0x2, 0x76, 0xA7, 0xFE, 0x6D, 0x49, 0x40, 0x41, 0x49, 0x49, 0x41, 0x40, 0x49, 0x5, 0xB0, 0xF9, 0x42, 0x6, 0xBE, 0xFB, 0x25, 0x35, 0x48, 0x48, 0x35, 0x34, 0x47, 0x47, 0x0, 0x2, 0x0, 0x3C, 0xFE, 0xE5, 0x2, 0x76, 0x5, 0xB0, 0x0, 0x3, 0x0, 0xD, 0x0, 0x0, 0x1, 0x11, 0x23, 0x11, 0x0, 0x36, 0x33, 0x32, 0x16, 0x14, 0x6, 0x23, 0x22, 0x26, 0x2, 0x76, 0xA7, 0xFE, 0x6D, 0x49, 0x40, 0x41, 0x49, 0x49, 0x41, 0x40, 0x49, 0x5, 0xB0, 0xF9, 0x42, 0x6, 0xBE, 0xF9, 0xE4, 0x48, 0x48, 0x68, 0x47, 0x47, 0x0, 0x2, 0x0, 0x99, 0xFE, 0xF2, 0x2, 0x9C, 0x5, 0xC4, 0x0, 0x9, 0x0, 0xD, 0x0, 0x0, 0x1, 0x34, 0x36, 0x32, 0x16, 0x15, 0x14, 0x6, 0x22, 0x26, 0x27, 0x11, 0x23, 0x11, 0x1, 0x89, 0x48, 0x82, 0x49, 0x49, 0x82, 0x48, 0x48, 0xA8, 0x5, 0x48, 0x35, 0x47, 0x47, 0x35, 0x34, 0x47, 0x47, 0x9C, 0xF9, 0x42, 0x6, 0xBE, 0x0, 0x2, 0x0, 0x99, 0xFE, 0xF2, 0x2, 0x9C, 0x5, 0xB0, 0x0, 0x3, 0x0, 0xD, 0x0, 0x0, 0x1, 0x11, 0x23, 0x11, 0x13, 0x34, 0x36, 0x32, 0x16, 0x15, 0x14, 0x6, 0x22, 0x26, 0x1, 0x41, 0xA8, 0xF0, 0x48, 0x82, 0x49, 0x49, 0x82, 0x48, 0x5, 0xB0, 0xF9, 0x42, 0x6, 0xBE, 0xFE, 0x1C, 0x35, 0x48, 0x48, 0x35, 0x34, 0x47, 0x47, 0x0, 0x2, 0x0, 0x99, 0xFE, 0xF2, 0x2, 0x9C, 0x5, 0xB0, 0x0, 0x3, 0x0, 0xD, 0x0, 0x0, 0x1, 0x11, 0x23, 0x11, 0x13, 0x34, 0x36, 0x32, 0x16, 0x15, 0x14, 0x6, 0x22, 0x26, 0x1, 0x41, 0xA8, 0xF0, 0x48, 0x82, 0x49, 0x49, 0x82, 0x48, 0x5, 0xB0, 0xF9, 0x42, 0x6, 0xBE, 0xFC, 0xA1, 0x35, 0x47, 0x47, 0x35, 0x34, 0x47, 0x47, 0x0, 0x2, 0x0, 0x99, 0xFE, 0xF2, 0x2, 0x9C, 0x5, 0xB0, 0x0, 0x3, 0x0, 0xD, 0x0, 0x0, 0x1, 0x11, 0x23, 0x11, 0x13, 0x34, 0x36, 0x32, 0x16, 0x15, 0x14, 0x6, 0x22, 0x26, 0x1, 0x41, 0xA8, 0xF0, 0x48, 0x82, 0x49, 0x49, 0x82, 0x48, 0x5, 0xB0, 0xF9, 0x42, 0x6, 0xBE, 0xFB, 0x25, 0x35, 0x48, 0x48, 0x35, 0x34, 0x47, 0x47, 0x0, 0x2, 0x0, 0x99, 0xFE, 0xE5, 0x2, 0x9C, 0x5, 0xB0, 0x0, 0x3, 0x0, 0xB, 0x0, 0x0, 0x1, 0x11, 0x23, 0x11, 0x12, 0x36, 0x32, 0x16, 0x14, 0x6, 0x22, 0x26, 0x1, 0x41, 0xA8, 0xF0, 0x48, 0x82, 0x49, 0x49, 0x82, 0x48, 0x5, 0xB0, 0xF9, 0x42, 0x6, 0xBE, 0xF9, 0xE4, 0x48, 0x48, 0x68, 0x47, 0x47, 0x0, 0x1, 0x0, 0x99, 0xFE, 0xF2, 0x3, 0x4A, 0x5, 0xB0, 0x0, 0x5, 0x0, 0x0, 0x1, 0x21, 0x11, 0x23, 0x11, 0x21, 0x3, 0x4A, 0xFD, 0xF7, 0xA8, 0x2, 0xB1, 0x5, 0x12, 0xF9, 0xE0, 0x6, 0xBE, 0x0, 0x1, 0x0, 0x99, 0xFE, 0xF2, 0x3, 0x4A, 0x5, 0xB0, 0x0, 0x7, 0x0, 0x0, 0x1, 0x21, 0x11, 0x23, 0x11, 0x33, 0x11, 0x21, 0x3, 0x4A, 0xFD, 0xF7, 0xA8, 0xA8, 0x2, 0x9, 0x3, 0x8A, 0xFB, 0x68, 0x6, 0xBE, 0xFE, 0x78, 0x0, 0x1, 0x0, 0x99, 0xFE, 0xF2, 0x3, 0x4A, 0x5, 0xB0, 0x0, 0x7, 0x0, 0x0, 0x1, 0x21, 0x11, 0x23, 0x11, 0x33, 0x11, 0x21, 0x3, 0x4A, 0xFD, 0xF7, 0xA8, 0xA8, 0x2, 0x9, 0x2, 0x2, 0xFC, 0xF0, 0x6, 0xBE, 0xFC, 0xF0, 0x0, 0x1, 0x0, 0x99, 0xFE, 0xF2, 0x3, 0x4A, 0x5, 0xB0, 0x0, 0x7, 0x0, 0x0, 0x25, 0x21, 0x11, 0x23, 0x11, 0x33, 0x11, 0x21, 0x3, 0x4A, 0xFD, 0xF7, 0xA8, 0xA8, 0x2, 0x9, 0x7A, 0xFE, 0x78, 0x6, 0xBE, 0xFB, 0x68, 0x0, 0x1, 0x0, 0x99, 0xFE, 0xF2, 0x3, 0x4A, 0x5, 0xB0, 0x0, 0x5, 0x0, 0x0, 0x13, 0x11, 0x33, 0x11, 0x21, 0x15, 0x99, 0xA8, 0x2, 0x9, 0xFE, 0xF2, 0x6, 0xBE, 0xF9, 0xE0, 0x9E, 0x0, 0x2, 0x0, 0x50, 0x2, 0x8C, 0x2, 0x67, 0x5, 0xB1, 0x0, 0x3, 0x0, 0xD, 0x0, 0x0, 0x1, 0x33, 0x11, 0x23, 0x0, 0x36, 0x33, 0x32, 0x16, 0x14, 0x6, 0x23, 0x22, 0x26, 0x1, 0xB2, 0xB5, 0xB5, 0xFE, 0x9E, 0x3B, 0x37, 0x36, 0x3D, 0x3D, 0x36, 0x37, 0x3B, 0x5, 0xB1, 0xFC, 0xDB, 0x1, 0xC0, 0x3E, 0x3E, 0x5C, 0x3D, 0x3D, 0x0, 0x2, 0x0, 0x55, 0x2, 0x80, 0x3, 0xF, 0x5, 0x3B, 0x0, 0x3, 0x0, 0xB, 0x0, 0x0, 0x1, 0x17, 0x1, 0x27, 0x12, 0x36, 0x32, 0x16, 0x14, 0x6, 0x22, 0x26, 0x2, 0x8D, 0x82, 0xFD, 0xC7, 0x81, 0xB, 0x3C, 0x6C, 0x3D, 0x3D, 0x6C, 0x3C, 0x5, 0x3B, 0x82, 0xFD, 0xC7, 0x82, 0x1, 0xBF, 0x3D, 0x3D, 0x5C, 0x3D, 0x3D, 0x0, 0x2, 0x0, 0x50, 0x3, 0x54, 0x3, 0x75, 0x5, 0x56, 0x0, 0x9, 0x0, 0xD, 0x0, 0x0, 0x0, 0x36, 0x33, 0x32, 0x16, 0x14, 0x6, 0x23, 0x22, 0x26, 0x5, 0x15, 0x21, 0x35, 0x1, 0x6F, 0x3B, 0x37, 0x36, 0x3D, 0x3D, 0x36, 0x37, 0x3B, 0x2, 0x6, 0xFC, 0xDB, 0x5, 0x19, 0x3D, 0x3D, 0x5C, 0x3D, 0x3D, 0xB3, 0xB6, 0xB6, 0x0, 0x1, 0x0, 0x50, 0x3, 0x5E, 0x2, 0xF9, 0x4, 0xD6, 0x0, 0x5, 0x0, 0x0, 0x13, 0x35, 0x21, 0x35, 0x33, 0x11, 0x50, 0x2, 0x1, 0xA8, 0x3, 0x5E, 0x92, 0xE6, 0xFE, 0x88, 0x0, 0x1, 0x0, 0x50, 0x2, 0xB8, 0x2, 0xAC, 0x5, 0xBD, 0x0, 0x8, 0x0, 0x0, 0x1, 0x27, 0x11, 0x23, 0x11, 0x7, 0x35, 0x1, 0x1, 0x2, 0xAC, 0xE3, 0x97, 0xE2, 0x1, 0x2E, 0x1, 0x2E, 0x3, 0xCD, 0xE2, 0xFE, 0x9, 0x1, 0xF6, 0xE1, 0xC3, 0x1, 0x2D, 0xFE, 0xD3, 0x0, 0x1, 0x0, 0x50, 0x2, 0xB8, 0x2, 0xAC, 0x5, 0xBD, 0x0, 0x8, 0x0, 0x0, 0x1, 0x1, 0x35, 0x17, 0x11, 0x33, 0x11, 0x37, 0x15, 0x1, 0x7E, 0xFE, 0xD2, 0xE2, 0x97, 0xE3, 0x2, 0xB8, 0x1, 0x2D, 0xC3, 0xE1, 0x1, 0xF6, 0xFE, 0x9, 0xE2, 0xC3, 0x0, 0x2, 0x0, 0x64, 0x2, 0x7D, 0x1, 0x42, 0x6, 0xBB, 0x0, 0x3, 0x0, 0xD, 0x0, 0x0, 0x1, 0x3, 0x23, 0x3, 0x3, 0x34, 0x36, 0x32, 0x16, 0x15, 0x14, 0x6, 0x22, 0x26, 0x1, 0x3B, 0x11, 0xAD, 0x12, 0x7, 0x3B, 0x68, 0x3B, 0x3B, 0x68, 0x3B, 0x6, 0xBB, 0xFD, 0x3, 0x2, 0xFD, 0xFC, 0x2A, 0x2D, 0x3E, 0x3E, 0x2D, 0x2B, 0x3D, 0x3D, 0x0, 0x2, 0x0, 0x64, 0x2, 0x8C, 0x1, 0x42, 0x6, 0xCA, 0x0, 0x9, 0x0, 0xD, 0x0, 0x0, 0x12, 0x26, 0x35, 0x34, 0x36, 0x32, 0x16, 0x15, 0x14, 0x6, 0x17, 0x13, 0x23, 0x13, 0x9F, 0x3B, 0x3B, 0x68, 0x3B, 0x3B, 0x23, 0x11, 0xD0, 0x12, 0x5, 0xF7, 0x3E, 0x2D, 0x2C, 0x3C, 0x3C, 0x2C, 0x2D, 0x3E, 0x6E, 0xFD, 0x3, 0x2, 0xFD, 0x0, 0x2, 0x0, 0x64, 0x1, 0x4C, 0x1, 0x42, 0x5, 0x8A, 0x0, 0x9, 0x0, 0xD, 0x0, 0x0, 0x12, 0x26, 0x35, 0x34, 0x36, 0x32, 0x16, 0x15, 0x14, 0x6, 0x17, 0x13, 0x23, 0x13, 0x9F, 0x3B, 0x3B, 0x68, 0x3B, 0x3B, 0x23, 0x11, 0xD0, 0x12, 0x4, 0xB7, 0x3E, 0x2D, 0x2C, 0x3C, 0x3C, 0x2C, 0x2D, 0x3E, 0x6E, 0xFD, 0x3, 0x2, 0xFD, 0x0, 0x1, 0x0, 0x50, 0x3, 0xF4, 0x4, 0xAE, 0x6, 0x99, 0x0, 0x9, 0x0, 0x0, 0x1, 0x35, 0x27, 0x11, 0x23, 0x11, 0x1, 0x7, 0x25, 0x15, 0x1, 0xE0, 0xD2, 0xBE, 0x4, 0x5E, 0x34, 0xFE, 0x24, 0x4, 0x83, 0xDD, 0x39, 0xFE, 0x5B, 0x2, 0xA5, 0xFE, 0xCF, 0xBD, 0x81, 0xA9, 0x0, 0x1, 0x0, 0x50, 0xFD, 0xEF, 0x4, 0xAE, 0x1, 0x56, 0x0, 0x9, 0x0, 0x0, 0x1, 0x1, 0x11, 0x33, 0x11, 0x17, 0x35, 0x33, 0x11, 0x5, 0x4, 0x7A, 0xFB, 0xD6, 0xBE, 0xD2, 0xBE, 0x2, 0x10, 0xFD, 0xEF, 0x1, 0x22, 0x2, 0x45, 0xFE, 0x53, 0x39, 0xEC, 0xFE, 0xE0, 0x90, 0x0, 0x2, 0x0, 0x65, 0x0, 0x60, 0x2, 0x65, 0x5, 0xB0, 0x0, 0xF, 0x0, 0x1F, 0x0, 0x0, 0x13, 0x27, 0x33, 0x16, 0x16, 0x17, 0x15, 0x14, 0x6, 0x7, 0x27, 0x36, 0x36, 0x35, 0x34, 0x27, 0x3, 0x27, 0x33, 0x16, 0x16, 0x17, 0x15, 0x14, 0x6, 0x7, 0x27, 0x36, 0x36, 0x35, 0x34, 0x27, 0x66, 0x1, 0x57, 0xD9, 0xCF, 0x1, 0xF4, 0xD3, 0x36, 0x86, 0x85, 0xAE, 0x5F, 0x1, 0x57, 0xD9, 0xCF, 0x1, 0xF4, 0xD3, 0x36, 0x86, 0x85, 0xAE, 0x4, 0xEE, 0xC2, 0x2, 0x97, 0x7E, 0x2, 0x91, 0x97, 0x49, 0xB5, 0x29, 0x4C, 0x34, 0x66, 0x4, 0xFD, 0x3A, 0xC2, 0x2, 0x97, 0x7E, 0x2, 0x91, 0x97, 0x49, 0xB5, 0x29, 0x4C, 0x34, 0x66, 0x4, 0x0, 0x2, 0x0, 0x50, 0xFF, 0xEC, 0x1, 0xEF, 0x4, 0x3A, 0x0, 0xE, 0x0, 0x1D, 0x0, 0x0, 0x13, 0x27, 0x33, 0x16, 0x16, 0x15, 0x14, 0x6, 0x7, 0x27, 0x36, 0x36, 0x35, 0x34, 0x27, 0x3, 0x27, 0x33, 0x16, 0x16, 0x15, 0x14, 0x6, 0x7, 0x27, 0x36, 0x36, 0x35, 0x34, 0x27, 0x55, 0x1, 0x4B, 0xAF, 0xA1, 0xBA, 0xB3, 0x32, 0x6E, 0x51, 0x58, 0x62, 0x1, 0x4B, 0xAF, 0xA1, 0xBA, 0xB3, 0x32, 0x6E, 0x51, 0x58, 0x3, 0x93, 0xA7, 0x2, 0x7E, 0x65, 0x68, 0x7D, 0x41, 0xA6, 0x26, 0x32, 0x28, 0x37, 0x6, 0xFD, 0xBE, 0xA7, 0x2, 0x7E, 0x65, 0x68, 0x7D, 0x41, 0xA6, 0x26, 0x32, 0x28, 0x37, 0x6, 0x0, 0x1, 0x0, 0x57, 0x2, 0x4D, 0x2, 0x5A, 0x5, 0xB0, 0x0, 0xE, 0x0, 0x0, 0x1, 0x15, 0x23, 0x6, 0x15, 0x14, 0x16, 0x17, 0x7, 0x26, 0x2, 0x35, 0x34, 0x36, 0x33, 0x2, 0x57, 0x5D, 0xB0, 0x91, 0x7F, 0x81, 0xAD, 0xD5, 0xD5, 0xDF, 0x5, 0xB0, 0xC2, 0x4, 0x71, 0x58, 0xA9, 0x76, 0xB5, 0xA1, 0x1, 0x2, 0x9A, 0x89, 0x9D, 0x0, 0x1, 0x0, 0x50, 0x1, 0x9F, 0x1, 0xF4, 0x4, 0x3A, 0x0, 0xE, 0x0, 0x0, 0x1, 0x7, 0x23, 0x6, 0x15, 0x14, 0x16, 0x17, 0x7, 0x26, 0x26, 0x35, 0x34, 0x36, 0x33, 0x1, 0xEB, 0x1, 0x42, 0x79, 0x61, 0x64, 0x86, 0x80, 0x9E, 0xA7, 0xB5, 0x4, 0x3A, 0xA7, 0x1, 0x41, 0x2D, 0x86, 0x6F, 0x90, 0x86, 0xC7, 0x69, 0x67, 0x7E, 0x0, 0x1, 0x0, 0x95, 0xFE, 0x4B, 0x5, 0x19, 0x5, 0xB0, 0x0, 0x15, 0x0, 0x0, 0x1, 0x22, 0x27, 0x35, 0x16, 0x33, 0x32, 0x36, 0x35, 0x11, 0x21, 0x11, 0x23, 0x11, 0x33, 0x11, 0x21, 0x11, 0x33, 0x11, 0x14, 0x6, 0x3, 0x83, 0x7B, 0x4A, 0x4B, 0x42, 0x68, 0x69, 0xFD, 0x75, 0xFC, 0xFC, 0x2, 0x8B, 0xFD, 0xCA, 0xFE, 0x4B, 0x1C, 0xBC, 0x10, 0x4A, 0x64, 0x2, 0xC7, 0xFD, 0x78, 0x5, 0xB0, 0xFD, 0xA2, 0x2, 0x5E, 0xFA, 0x11, 0xC5, 0xB1, 0x0, 0x1, 0x0, 0x7E, 0xFE, 0x4B, 0x3, 0xFD, 0x6, 0x0, 0x0, 0x1B, 0x0, 0x0, 0x1, 0x22, 0x27, 0x35, 0x16, 0x33, 0x32, 0x36, 0x35, 0x11, 0x34, 0x26, 0x23, 0x22, 0x7, 0x11, 0x23, 0x11, 0x33, 0x11, 0x36, 0x33, 0x32, 0x16, 0x17, 0x11, 0x14, 0x6, 0x2, 0x68, 0x7B, 0x4A, 0x4B, 0x42, 0x6C, 0x6E, 0x62, 0x5D, 0x93, 0x48, 0xF2, 0xF2, 0x76, 0xB7, 0x9F, 0xC0, 0x1, 0xC9, 0xFE, 0x4B, 0x1C, 0xBC, 0x10, 0x4A, 0x64, 0x2, 0xFA, 0x71, 0x5C, 0x83, 0xFC, 0xFB, 0x6, 0x0, 0xFD, 0xC4, 0x8A, 0xB6, 0xDA, 0xFD, 0x3, 0xC5, 0xB1, 0x0, 0x1, 0x0, 0x2D, 0xFE, 0x4D, 0x5, 0xF1, 0x5, 0xB0, 0x0, 0x24, 0x0, 0x0, 0x1, 0x22, 0x26, 0x26, 0x35, 0x33, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x23, 0x35, 0x1, 0x21, 0x11, 0x23, 0x11, 0x21, 0x35, 0x21, 0x15, 0x21, 0x15, 0x21, 0x17, 0x1, 0x17, 0x16, 0x16, 0x15, 0x14, 0x4, 0x3, 0xDD, 0x7F, 0xE1, 0x8D, 0xF7, 0x7E, 0x7B, 0x86, 0x94, 0x9A, 0x92, 0x8E, 0x1, 0x5B, 0xFE, 0x50, 0xFC, 0xFE, 0x3E, 0x4, 0x83, 0xFE, 0x3B, 0x2, 0xDC, 0x1, 0xFE, 0x87, 0xA, 0xB9, 0xDF, 0xFE, 0xD4, 0xFE, 0x4D, 0x48, 0x9A, 0x7A, 0x3E, 0x58, 0x91, 0x6E, 0x90, 0x7E, 0xAC, 0x1, 0xA7, 0xFC, 0x8D, 0x4, 0xE5, 0xCB, 0xCB, 0xAB, 0x9E, 0xFE, 0x2C, 0x1, 0xE, 0xE0, 0xC8, 0xD7, 0xED, 0x0, 0x1, 0x0, 0x8, 0xFE, 0x4D, 0x5, 0x88, 0x5, 0x41, 0x0, 0x2D, 0x0, 0x0, 0x1, 0x22, 0x24, 0x35, 0x33, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x23, 0x35, 0x1, 0x21, 0x11, 0x14, 0x16, 0x33, 0x32, 0x37, 0x15, 0x6, 0x23, 0x22, 0x26, 0x35, 0x11, 0x23, 0x35, 0x33, 0x11, 0x33, 0x11, 0x21, 0x17, 0x1, 0x17, 0x16, 0x16, 0x15, 0x14, 0x4, 0x3, 0x81, 0xBA, 0xFE, 0xD8, 0xF1, 0x7B, 0x76, 0x84, 0x93, 0x9D, 0x93, 0x8F, 0x1, 0x6F, 0xFD, 0x65, 0x40, 0x31, 0x2A, 0x2B, 0x46, 0x5A, 0x79, 0x9F, 0xB3, 0xB3, 0xF2, 0x3, 0xB0, 0x1, 0xFE, 0x81, 0x3, 0xCA, 0xDC, 0xFE, 0xDC, 0xFE, 0x4D, 0xA3, 0xB5, 0x3D, 0x58, 0x91, 0x6D, 0x93, 0x85, 0xA5, 0x1, 0xBC, 0xFD, 0xA3, 0x49, 0x2B, 0xA, 0xBC, 0x18, 0x89, 0xA7, 0x2, 0x6B, 0xB3, 0x1, 0x7, 0xFE, 0xF9, 0x9B, 0xFE, 0x29, 0x1, 0xC, 0xEC, 0xC1, 0xD6, 0xEB, 0x0, 0x1, 0x0, 0x59, 0xFF, 0xEC, 0x4, 0x20, 0x5, 0xC4, 0x0, 0x26, 0x0, 0x0, 0x1, 0x14, 0x4, 0x23, 0x22, 0x24, 0x35, 0x34, 0x36, 0x37, 0x26, 0x26, 0x35, 0x34, 0x24, 0x33, 0x32, 0x4, 0x15, 0x23, 0x34, 0x26, 0x23, 0x22, 0x15, 0x14, 0x16, 0x33, 0x33, 0x15, 0x23, 0x20, 0x15, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x4, 0x20, 0xFE, 0xE0, 0xBE, 0xD0, 0xFE, 0xE7, 0x6E, 0x87, 0x71, 0x6E, 0x1, 0x3, 0xD0, 0xCA, 0x1, 0x6, 0xF3, 0x7F, 0x61, 0xDD, 0x7A, 0x7D, 0x90, 0x89, 0xFE, 0xEC, 0x83, 0x70, 0x6C, 0x82, 0x1, 0x87, 0xCB, 0xD0, 0xDF, 0xCD, 0x6B, 0xBC, 0x2D, 0x33, 0xB2, 0x55, 0xCD, 0xD1, 0xE2, 0xAD, 0x5E, 0x6E, 0xDB, 0x62, 0x7D, 0xC0, 0xEF, 0x70, 0x79, 0x78, 0x60, 0x0, 0x1, 0x0, 0x54, 0xFE, 0xA3, 0x4, 0x3A, 0x4, 0x8D, 0x0, 0x17, 0x0, 0x0, 0x1, 0x15, 0x23, 0x4, 0x11, 0x14, 0x16, 0x33, 0x32, 0x37, 0x17, 0x6, 0x23, 0x20, 0x0, 0x11, 0x34, 0x36, 0x37, 0x1, 0x37, 0x21, 0x15, 0x21, 0x2, 0xE9, 0x5A, 0xFE, 0xBE, 0xC6, 0xAD, 0xA7, 0x96, 0x3D, 0xCA, 0xC0, 0xFE, 0xFA, 0xFE, 0xAA, 0xDF, 0x99, 0xFE, 0xAB, 0x1, 0x3, 0x77, 0xFD, 0xBA, 0x2, 0x55, 0x7B, 0x8, 0xFE, 0xE1, 0x90, 0xB6, 0x58, 0xBA, 0x68, 0x1, 0x17, 0x1, 0x3, 0xBE, 0xEA, 0x19, 0x1, 0x80, 0x8F, 0xC4, 0x0, 0x2, 0x0, 0x35, 0xFF, 0xEC, 0x3, 0xA3, 0x5, 0xB0, 0x0, 0x3, 0x0, 0x13, 0x0, 0x0, 0x1, 0x21, 0x11, 0x7, 0x3, 0x22, 0x27, 0x35, 0x16, 0x33, 0x32, 0x36, 0x35, 0x21, 0x27, 0x1, 0x33, 0x11, 0x14, 0x6, 0x1, 0x33, 0x1, 0x7D, 0x11, 0x53, 0x5F, 0x41, 0x2D, 0x2B, 0x50, 0x5C, 0xFD, 0x8B, 0x6, 0x2, 0x74, 0xFA, 0xC8, 0x2, 0x8, 0x2, 0x5D, 0x1E, 0xFB, 0xA5, 0x12, 0xBF, 0x9, 0x3E, 0x52, 0x94, 0x3, 0xD8, 0xFB, 0x96, 0xBB, 0x9F, 0x0, 0x2, 0x0, 0x35, 0xFE, 0x4B, 0x3, 0xA3, 0x4, 0x3B, 0x0, 0x3, 0x0, 0x14, 0x0, 0x0, 0x25, 0x21, 0x11, 0x7, 0x3, 0x22, 0x27, 0x35, 0x16, 0x33, 0x32, 0x36, 0x35, 0x35, 0x21, 0x27, 0x1, 0x33, 0x11, 0x14, 0x6, 0x1, 0x30, 0x1, 0x80, 0x17, 0x6B, 0x44, 0x3E, 0x26, 0x25, 0x4C, 0x6D, 0xFD, 0x8B, 0x6, 0x2, 0x74, 0xFA, 0xD7, 0xC4, 0x2, 0x3A, 0x28, 0xFB, 0x75, 0x11, 0xC0, 0x9, 0x4A, 0x64, 0x3F, 0x94, 0x3, 0xA7, 0xFB, 0x86, 0xB6, 0xC0, 0x0, 0x3, 0x0, 0x35, 0xFF, 0x2C, 0x4, 0xDA, 0x5, 0xB0, 0x0, 0x3, 0x0, 0xC, 0x0, 0x1F, 0x0, 0x0, 0x1, 0x21, 0x11, 0x7, 0x1, 0x15, 0x14, 0x6, 0x7, 0x27, 0x36, 0x37, 0x35, 0x5, 0x22, 0x27, 0x35, 0x16, 0x33, 0x32, 0x36, 0x35, 0x21, 0x27, 0x1, 0x33, 0x11, 0x33, 0x15, 0x23, 0x6, 0x6, 0x1, 0x33, 0x1, 0x7D, 0x11, 0x2, 0x3B, 0x4F, 0x46, 0x80, 0x4A, 0x2, 0xFE, 0x3B, 0x5F, 0x41, 0x2D, 0x2B, 0x50, 0x5C, 0xFD, 0x8B, 0x6, 0x2, 0x74, 0xFA, 0xD1, 0xD1, 0x1, 0xC7, 0x2, 0x8, 0x2, 0x5D, 0x1E, 0xFC, 0x85, 0x4B, 0x57, 0xBF, 0x3F, 0x4E, 0x70, 0x83, 0x5F, 0xE0, 0x12, 0xBF, 0x9, 0x3E, 0x52, 0x94, 0x3, 0xD8, 0xFC, 0x58, 0xC4, 0xBA, 0x9E, 0x0, 0x3, 0x0, 0x35, 0xFD, 0xE8, 0x4, 0xDA, 0x4, 0x3B, 0x0, 0x3, 0x0, 0xC, 0x0, 0x21, 0x0, 0x0, 0x25, 0x21, 0x11, 0x7, 0x1, 0x15, 0x14, 0x6, 0x7, 0x27, 0x36, 0x37, 0x35, 0x1, 0x22, 0x27, 0x35, 0x16, 0x33, 0x32, 0x36, 0x35, 0x35, 0x21, 0x27, 0x1, 0x33, 0x11, 0x33, 0x15, 0x23, 0x15, 0x6, 0x6, 0x1, 0x30, 0x1, 0x80, 0x17, 0x2, 0x41, 0x4F, 0x46, 0x80, 0x4A, 0x2, 0xFE, 0x1D, 0x44, 0x3E, 0x26, 0x25, 0x4C, 0x6D, 0xFD, 0x8B, 0x6, 0x2, 0x74, 0xFA, 0xD2, 0xD2, 0x2, 0xD7, 0xC4, 0x2, 0x3A, 0x28, 0xFC, 0xB2, 0x4C, 0x56, 0xC0, 0x3E, 0x4D, 0x72, 0x82, 0x5F, 0xFE, 0xC3, 0x11, 0xC0, 0x9, 0x4A, 0x64, 0x3F, 0x94, 0x3, 0xA7, 0xFC, 0x89, 0xC4, 0x46, 0xB2, 0xBD, 0x0, 0x1, 0x0, 0x85, 0x0, 0x0, 0x3, 0x4D, 0x4, 0x3A, 0x0, 0x9, 0x0, 0x0, 0x1, 0x21, 0x11, 0x23, 0x11, 0x21, 0x15, 0x21, 0x11, 0x21, 0x3, 0xE, 0xFE, 0x6A, 0xF3, 0x2, 0xC8, 0xFE, 0x2B, 0x1, 0x96, 0x1, 0x89, 0xFE, 0x77, 0x4, 0x3A, 0xC4, 0xFE, 0xC9, 0xFF, 0xFF, 0x0, 0x4C, 0xFF, 0xEC, 0x3, 0xCA, 0x4, 0x4E, 0x0, 0x6, 0x0, 0x58, 0x0, 0x0, 0x0, 0x3, 0x0, 0x12, 0x0, 0x0, 0x8, 0x6C, 0x5, 0xB0, 0x0, 0x2, 0x0, 0x5, 0x0, 0x14, 0x0, 0x0, 0x1, 0x3, 0x3, 0x21, 0xB, 0x3, 0x21, 0x3, 0x21, 0x1, 0x33, 0x1, 0x1, 0x33, 0x1, 0x21, 0x3, 0x21, 0x13, 0x3, 0x7E, 0xD4, 0xD3, 0x4, 0xCF, 0xD3, 0xD3, 0xC5, 0x77, 0xFD, 0xCC, 0x76, 0xFE, 0xF8, 0x2, 0x26, 0xE3, 0x1, 0x24, 0x1, 0x22, 0xE3, 0x2, 0x28, 0xFE, 0xF8, 0x77, 0xFD, 0xD5, 0x81, 0x2, 0x1F, 0x2, 0x5E, 0xFD, 0xA2, 0x2, 0x5D, 0xFD, 0xA3, 0xFD, 0xE1, 0x1, 0x54, 0xFE, 0xAC, 0x5, 0xB0, 0xFC, 0xFD, 0x3, 0x3, 0xFA, 0x50, 0x1, 0x54, 0xFE, 0xAC, 0x0, 0x4, 0x0, 0x5B, 0xFF, 0xEC, 0x6, 0x81, 0x4, 0x4E, 0x0, 0xA, 0x0, 0x14, 0x0, 0x1D, 0x0, 0x45, 0x0, 0x0, 0x1, 0x36, 0x37, 0x33, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x13, 0x32, 0x36, 0x37, 0x35, 0x23, 0x4, 0x15, 0x14, 0x16, 0x20, 0x36, 0x37, 0x35, 0x23, 0x6, 0x15, 0x14, 0x16, 0x5, 0x26, 0x27, 0x6, 0x23, 0x22, 0x26, 0x27, 0x6, 0x6, 0x23, 0x22, 0x26, 0x35, 0x34, 0x24, 0x33, 0x33, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x23, 0x34, 0x36, 0x33, 0x32, 0x17, 0x36, 0x33, 0x32, 0x16, 0x15, 0x11, 0x14, 0x17, 0x15, 0x3, 0xD3, 0x66, 0x8B, 0xA1, 0x64, 0x65, 0x5C, 0x6D, 0xAB, 0x54, 0x7A, 0x19, 0x91, 0xFE, 0xFF, 0x58, 0xFE, 0x22, 0x7A, 0x19, 0x94, 0xFF, 0x58, 0x3, 0xE4, 0x12, 0xA, 0x72, 0xAB, 0x6E, 0xA9, 0x2D, 0x2E, 0xA0, 0x73, 0xA2, 0xCE, 0x1, 0x2, 0xEA, 0x99, 0x5F, 0x5F, 0x57, 0x67, 0xF2, 0xF1, 0xCD, 0xC7, 0x71, 0x7F, 0xC7, 0xB9, 0xF1, 0x29, 0x2, 0x72, 0x22, 0x1, 0x47, 0x55, 0x65, 0x62, 0x60, 0xFD, 0xDB, 0x51, 0x31, 0xCC, 0x5, 0xB0, 0x41, 0x58, 0x51, 0x31, 0xCC, 0x6, 0xAF, 0x41, 0x58, 0xAF, 0x25, 0x40, 0x79, 0x5A, 0x4B, 0x40, 0x65, 0xBA, 0x8A, 0xAD, 0xB8, 0x47, 0x55, 0x65, 0x56, 0x3E, 0x80, 0xCC, 0x67, 0x67, 0xBA, 0xBA, 0xFE, 0x20, 0x92, 0x57, 0x11, 0x0, 0x3, 0x0, 0x12, 0xFF, 0xEC, 0x8, 0x44, 0x5, 0xC4, 0x0, 0x12, 0x0, 0x20, 0x0, 0x23, 0x0, 0x0, 0x5, 0x22, 0x24, 0x27, 0x21, 0x3, 0x21, 0x1, 0x33, 0x13, 0x36, 0x24, 0x33, 0x20, 0x0, 0x11, 0x15, 0x10, 0x0, 0x13, 0x34, 0x2, 0x23, 0x22, 0x2, 0x15, 0x15, 0x14, 0x12, 0x33, 0x32, 0x12, 0x35, 0x5, 0x3, 0x3, 0x5, 0xE9, 0xBA, 0xFE, 0xE6, 0x49, 0xFD, 0xC4, 0x76, 0xFE, 0xF8, 0x2, 0x26, 0xE3, 0x98, 0x3E, 0x1, 0x2A, 0xCC, 0x1, 0x10, 0x1, 0x4D, 0xFE, 0xB5, 0x4E, 0xB9, 0xA7, 0xA2, 0xBC, 0xBE, 0xA2, 0xA8, 0xB6, 0xFC, 0x36, 0xD3, 0xD3, 0x14, 0xBC, 0xAC, 0xFE, 0xAC, 0x5, 0xB0, 0xFE, 0x64, 0xCD, 0xE3, 0xFE, 0x84, 0xFE, 0xB4, 0x49, 0xFE, 0xB4, 0xFE, 0x85, 0x3, 0x12, 0xF5, 0x1, 0x0, 0xFF, 0x0, 0xF5, 0x4B, 0xF5, 0xFE, 0xFE, 0x1, 0x2, 0xF5, 0x94, 0x2, 0x5E, 0xFD, 0xA2, 0x0, 0x3, 0x0, 0x5B, 0xFF, 0xEC, 0x6, 0xCE, 0x4, 0x4E, 0x0, 0xD, 0x0, 0x30, 0x0, 0x3B, 0x0, 0x0, 0x1, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x1, 0x22, 0x26, 0x27, 0x6, 0x6, 0x23, 0x22, 0x26, 0x35, 0x34, 0x24, 0x33, 0x33, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x23, 0x34, 0x36, 0x33, 0x32, 0x17, 0x36, 0x33, 0x32, 0x0, 0x15, 0x15, 0x14, 0x0, 0x25, 0x32, 0x36, 0x37, 0x26, 0x27, 0x23, 0x20, 0x15, 0x14, 0x16, 0x3, 0xD3, 0x7D, 0x88, 0x87, 0x7C, 0x7C, 0x89, 0x87, 0x7C, 0x1, 0x5, 0x87, 0xCD, 0x40, 0x29, 0xC2, 0x8E, 0xA2, 0xCE, 0x1, 0x2, 0xEA, 0x99, 0x5F, 0x5F, 0x57, 0x67, 0xF2, 0xF1, 0xCD, 0xE1, 0x70, 0x86, 0xCF, 0xEF, 0x1, 0x9, 0xFE, 0xF7, 0xFC, 0x38, 0x66, 0x85, 0xC, 0x12, 0x2, 0x83, 0xFE, 0xF0, 0x59, 0x2, 0x12, 0x91, 0xD2, 0xD2, 0x91, 0x15, 0x8F, 0xD5, 0xD5, 0x8F, 0xFD, 0xC5, 0x6B, 0x5D, 0x4A, 0x7E, 0xBA, 0x8A, 0xAD, 0xB8, 0x47, 0x55, 0x65, 0x56, 0x3E, 0x80, 0xCC, 0x80, 0x80, 0xFE, 0xC5, 0xEC, 0x15, 0xEB, 0xFE, 0xC5, 0xC3, 0x75, 0x43, 0x47, 0x4F, 0xB5, 0x41, 0x58, 0x0, 0x2, 0xFF, 0xF6, 0xFF, 0xEC, 0x7, 0xE8, 0x5, 0xB0, 0x0, 0x14, 0x0, 0x17, 0x0, 0x0, 0x5, 0x22, 0x24, 0x27, 0x21, 0x3, 0x21, 0x1, 0x21, 0x11, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x11, 0x33, 0x11, 0x14, 0x4, 0x1, 0x11, 0x1, 0x5, 0xC7, 0xC5, 0xFE, 0xE1, 0x2B, 0xFE, 0x18, 0xB8, 0xFE, 0xDE, 0x3, 0x43, 0x1, 0x6A, 0x9F, 0x85, 0x87, 0x9D, 0xFD, 0xFE, 0xC2, 0xFC, 0xFE, 0xFE, 0x9C, 0x14, 0xB6, 0xB3, 0xFE, 0xAB, 0x5, 0xB0, 0xFC, 0x33, 0x9C, 0x91, 0x91, 0x9C, 0x3, 0xCD, 0xFC, 0x33, 0xFA, 0xFD, 0x2, 0x3F, 0x2, 0x92, 0xFD, 0x6E, 0x0, 0x2, 0x0, 0x5B, 0xFF, 0xEC, 0x6, 0x60, 0x4, 0x4E, 0x0, 0xA, 0x0, 0x31, 0x0, 0x0, 0x25, 0x32, 0x36, 0x37, 0x26, 0x35, 0x23, 0x20, 0x15, 0x14, 0x16, 0x5, 0x27, 0x6, 0x23, 0x22, 0x27, 0x6, 0x6, 0x23, 0x22, 0x26, 0x35, 0x34, 0x24, 0x33, 0x33, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x23, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x11, 0x14, 0x16, 0x33, 0x32, 0x37, 0x11, 0x33, 0x11, 0x1, 0xFD, 0x54, 0x78, 0x1A, 0x3, 0x83, 0xFE, 0xF0, 0x59, 0x3, 0xD5, 0x6, 0x6A, 0xC6, 0xD1, 0x58, 0x32, 0xAD, 0x72, 0xA2, 0xCE, 0x1, 0x2, 0xEA, 0x99, 0x5F, 0x5F, 0x57, 0x67, 0xF2, 0xF1, 0xCD, 0xB6, 0xEC, 0x68, 0x44, 0xAF, 0x40, 0xF3, 0xAF, 0x51, 0x36, 0x23, 0xA4, 0xB5, 0x41, 0x58, 0xAF, 0x6B, 0x7F, 0x90, 0x3B, 0x55, 0xBA, 0x8A, 0xAD, 0xB8, 0x47, 0x55, 0x65, 0x56, 0x3E, 0x80, 0xCC, 0xBA, 0xBA, 0xFE, 0xA3, 0x75, 0x55, 0x7F, 0x3, 0x8, 0xFB, 0xC6, 0x0, 0x2, 0x0, 0x12, 0x0, 0x0, 0x7, 0x53, 0x5, 0xB0, 0x0, 0x2, 0x0, 0xD, 0x0, 0x0, 0x1, 0x3, 0x3, 0x1, 0x3, 0x21, 0x3, 0x21, 0x1, 0x33, 0x1, 0x1, 0x21, 0x1, 0x3, 0x84, 0xD6, 0xD7, 0x2, 0x69, 0x76, 0xFD, 0xC6, 0x76, 0xFE, 0xF8, 0x2, 0x26, 0xFD, 0x1, 0x96, 0x1, 0x72, 0x1, 0x16, 0xFD, 0xF4, 0x2, 0x1F, 0x2, 0x6A, 0xFD, 0x96, 0xFD, 0xE1, 0x1, 0x54, 0xFE, 0xAC, 0x5, 0xB0, 0xFB, 0x8B, 0x4, 0x75, 0xFA, 0x50, 0x0, 0x2, 0x0, 0x5B, 0xFF, 0xEC, 0x6, 0x43, 0x4, 0x4E, 0x0, 0x8, 0x0, 0x27, 0x0, 0x0, 0x24, 0x36, 0x37, 0x35, 0x23, 0x6, 0x15, 0x14, 0x16, 0x5, 0x26, 0x27, 0x6, 0x23, 0x22, 0x26, 0x35, 0x34, 0x24, 0x33, 0x33, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x23, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x11, 0x37, 0x1, 0x33, 0x1, 0x2, 0x4D, 0x7A, 0x19, 0x94, 0xFF, 0x58, 0x1, 0x5F, 0x12, 0xA, 0x73, 0xAA, 0xA2, 0xCE, 0x1, 0x2, 0xEA, 0x99, 0x5F, 0x5F, 0x57, 0x67, 0xF2, 0xF1, 0xCD, 0xB5, 0xE7, 0x5A, 0x1, 0x1F, 0xFE, 0xFD, 0xE8, 0xAF, 0x51, 0x31, 0xCC, 0x6, 0xAF, 0x41, 0x58, 0xAF, 0x25, 0x41, 0x7A, 0xBA, 0x8A, 0xAD, 0xB8, 0x47, 0x55, 0x65, 0x56, 0x3E, 0x80, 0xCC, 0xBA, 0xBA, 0xFD, 0xF3, 0xF7, 0x2, 0x76, 0xFB, 0xC6, 0x0, 0x3, 0x0, 0x12, 0x0, 0x0, 0x7, 0x53, 0x5, 0xB0, 0x0, 0x2, 0x0, 0xE, 0x0, 0x11, 0x0, 0x0, 0x1, 0x3, 0x3, 0x1, 0x3, 0x21, 0x3, 0x21, 0x1, 0x33, 0x1, 0x21, 0x13, 0x21, 0x1, 0x3, 0x37, 0x23, 0x3, 0x42, 0x94, 0x95, 0x2, 0x27, 0xBB, 0xFE, 0x51, 0xBC, 0xFE, 0xF8, 0x2, 0x26, 0xFD, 0x1, 0x1, 0x1, 0x1D, 0xEA, 0x1, 0x16, 0xFD, 0xF4, 0x7C, 0x49, 0x99, 0x2, 0xDD, 0x1, 0xAC, 0xFE, 0x54, 0xFD, 0x23, 0x2, 0x1D, 0xFD, 0xE3, 0x5, 0xB0, 0xFD, 0x2D, 0x2, 0xD3, 0xFA, 0x50, 0x1, 0x3B, 0xE2, 0x0, 0x3, 0x0, 0x5B, 0xFF, 0xEC, 0x6, 0x43, 0x4, 0x4E, 0x0, 0x3, 0x0, 0xC, 0x0, 0x2B, 0x0, 0x0, 0x1, 0x37, 0x23, 0x11, 0x4, 0x36, 0x37, 0x35, 0x23, 0x6, 0x15, 0x14, 0x16, 0x5, 0x26, 0x27, 0x6, 0x23, 0x22, 0x26, 0x35, 0x34, 0x24, 0x33, 0x33, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x23, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x15, 0x33, 0x13, 0x33, 0x1, 0x4, 0x2B, 0x1A, 0x79, 0xFE, 0x81, 0x7A, 0x19, 0x94, 0xFF, 0x58, 0x1, 0x5F, 0x12, 0xA, 0x73, 0xAA, 0xA2, 0xCE, 0x1, 0x2, 0xEA, 0x99, 0x5F, 0x5F, 0x57, 0x67, 0xF2, 0xF1, 0xCD, 0xB5, 0xE7, 0xBD, 0xBC, 0xFE, 0xFD, 0xE8, 0x1, 0xC4, 0x39, 0xFE, 0xCA, 0x18, 0x51, 0x31, 0xCC, 0x6, 0xAF, 0x41, 0x58, 0xAF, 0x25, 0x41, 0x7A, 0xBA, 0x8A, 0xAD, 0xB8, 0x47, 0x55, 0x65, 0x56, 0x3E, 0x80, 0xCC, 0xBA, 0xBA, 0x45, 0x1, 0xA5, 0xFB, 0xC6, 0x0, 0x2, 0x0, 0x12, 0xFE, 0x4B, 0x7, 0x5D, 0x5, 0xB0, 0x0, 0x2, 0x0, 0x17, 0x0, 0x0, 0x1, 0x3, 0x3, 0x1, 0x22, 0x27, 0x35, 0x17, 0x32, 0x36, 0x37, 0x37, 0x3, 0x21, 0x3, 0x21, 0x1, 0x33, 0x1, 0x1, 0x21, 0x1, 0x6, 0x6, 0x3, 0x7E, 0xD4, 0xD3, 0x1, 0xD7, 0x2C, 0x55, 0x2E, 0x54, 0x55, 0x26, 0x16, 0x7B, 0xFD, 0xCB, 0x76, 0xFE, 0xF8, 0x2, 0x26, 0xE3, 0x1, 0xA6, 0x1, 0x95, 0x1, 0x7, 0xFD, 0xB2, 0x2E, 0xA7, 0x2, 0x1F, 0x2, 0x5E, 0xFD, 0xA2, 0xFC, 0x2C, 0x11, 0xBD, 0x4, 0x42, 0x63, 0x3B, 0x1, 0x5F, 0xFE, 0xAC, 0x5, 0xB0, 0xFB, 0xA8, 0x4, 0x58, 0xF9, 0xB7, 0x7F, 0x9D, 0x0, 0x2, 0x0, 0x5B, 0xFE, 0x4B, 0x6, 0x4D, 0x4, 0x4E, 0x0, 0x8, 0x0, 0x2D, 0x0, 0x0, 0x24, 0x36, 0x37, 0x35, 0x23, 0x4, 0x15, 0x14, 0x16, 0x13, 0x22, 0x27, 0x35, 0x17, 0x32, 0x37, 0x37, 0x27, 0x6, 0x23, 0x22, 0x26, 0x35, 0x34, 0x24, 0x33, 0x33, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x23, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x11, 0x1, 0x33, 0x1, 0x2, 0x2, 0x4D, 0x7A, 0x19, 0x91, 0xFF, 0x0, 0x56, 0x8A, 0x2C, 0x55, 0x2E, 0xAA, 0x5A, 0x9, 0x9, 0x70, 0xA5, 0xA2, 0xCE, 0x1, 0x2, 0xEA, 0x99, 0x5F, 0x5F, 0x57, 0x67, 0xF2, 0xF1, 0xCD, 0xB5, 0xE7, 0x1, 0x84, 0xFD, 0xFD, 0x8A, 0x92, 0xAF, 0x51, 0x31, 0xCC, 0x5, 0xB2, 0x41, 0x56, 0xFD, 0x9C, 0x11, 0xBC, 0x3, 0x72, 0xC, 0xCB, 0x72, 0xBA, 0x8A, 0xAD, 0xB8, 0x47, 0x55, 0x65, 0x56, 0x3E, 0x80, 0xCC, 0xBA, 0xBA, 0xFE, 0x16, 0x3, 0x4A, 0xFB, 0x2F, 0xFE, 0xE2, 0x0, 0x2, 0x0, 0x4D, 0xFF, 0xEC, 0x4, 0xD3, 0x5, 0xC4, 0x0, 0xB, 0x0, 0x27, 0x0, 0x0, 0x1, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x6, 0x23, 0x22, 0x26, 0x5, 0x33, 0x16, 0x16, 0x33, 0x32, 0x36, 0x37, 0x35, 0x34, 0x2, 0x23, 0x22, 0x6, 0x7, 0x23, 0x36, 0x0, 0x21, 0x20, 0x0, 0x11, 0x15, 0x10, 0x0, 0x21, 0x20, 0x0, 0x1, 0xE9, 0x49, 0x40, 0x41, 0x49, 0x49, 0x41, 0x40, 0x49, 0xFE, 0x64, 0xFC, 0x11, 0x86, 0x9D, 0xAB, 0xAC, 0x1, 0x9C, 0xB1, 0xA3, 0x89, 0x12, 0xFC, 0x14, 0x1, 0x1A, 0x1, 0xC, 0x1, 0xD, 0x1, 0x3E, 0xFE, 0xBD, 0xFE, 0xED, 0xFE, 0xFA, 0xFE, 0xEC, 0x2, 0xD6, 0x35, 0x48, 0x48, 0x35, 0x34, 0x47, 0x47, 0xC1, 0x8B, 0x9D, 0xFA, 0xE4, 0x7D, 0xDA, 0x1, 0xA, 0x96, 0x8C, 0xD5, 0x1, 0x19, 0xFE, 0x8B, 0xFE, 0xC5, 0x76, 0xFE, 0xC5, 0xFE, 0x89, 0x1, 0x1B, 0x0, 0x2, 0x0, 0x3B, 0xFF, 0xEC, 0x3, 0xE1, 0x4, 0x4E, 0x0, 0xB, 0x0, 0x27, 0x0, 0x0, 0x1, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x6, 0x23, 0x22, 0x26, 0x5, 0x33, 0x16, 0x16, 0x33, 0x32, 0x36, 0x35, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x7, 0x23, 0x36, 0x36, 0x33, 0x32, 0x12, 0x17, 0x15, 0x14, 0x2, 0x23, 0x22, 0x24, 0x1, 0x72, 0x42, 0x3B, 0x3C, 0x42, 0x42, 0x3C, 0x3B, 0x42, 0xFE, 0xC9, 0xE5, 0x5, 0x7A, 0x58, 0x95, 0x62, 0x62, 0x95, 0x63, 0x6F, 0x5, 0xE5, 0x5, 0xF1, 0xC4, 0xF7, 0xF3, 0x2, 0xF3, 0xFA, 0xB4, 0xFF, 0x0, 0x2, 0x19, 0x32, 0x45, 0x45, 0x32, 0x31, 0x45, 0x45, 0x82, 0x4F, 0x68, 0xD9, 0x83, 0x24, 0x81, 0xDB, 0x7D, 0x57, 0xB3, 0xE4, 0xFE, 0xC4, 0xDD, 0x2A, 0xDF, 0xFE, 0xC0, 0xDD, 0xFF, 0xFF, 0x0, 0x14, 0x0, 0x0, 0x5, 0x65, 0x5, 0xB0, 0x0, 0x26, 0x0, 0x30, 0x4D, 0x0, 0x0, 0x7, 0x7, 0xA4, 0xFF, 0x84, 0x1, 0xE1, 0xFF, 0xFF, 0x0, 0x14, 0x0, 0x0, 0x4, 0x99, 0x6, 0x0, 0x0, 0x26, 0x0, 0x50, 0x62, 0x0, 0x0, 0x7, 0x7, 0xA4, 0xFF, 0x84, 0x2, 0x6, 0x0, 0x1, 0x0, 0x95, 0x0, 0x0, 0x5, 0x18, 0x5, 0xB0, 0x0, 0x14, 0x0, 0x0, 0x1, 0x37, 0x27, 0x7, 0x11, 0x23, 0x11, 0x33, 0x11, 0x37, 0x1, 0x21, 0x1, 0x17, 0x37, 0x17, 0x7, 0x1, 0x21, 0x3, 0x7, 0x2, 0x2B, 0x9F, 0x93, 0xA6, 0xFC, 0xFC, 0x8D, 0x1, 0xAA, 0x1, 0x32, 0xFD, 0xE3, 0xA8, 0x9A, 0x6C, 0xA4, 0x1, 0x31, 0xFE, 0xD4, 0xC1, 0x94, 0x1, 0x1E, 0x84, 0xD4, 0xB0, 0xFE, 0x3A, 0x5, 0xB0, 0xFD, 0x54, 0xAE, 0x1, 0xFE, 0xFD, 0x7C, 0xEE, 0x80, 0x83, 0x89, 0xFE, 0x4E, 0x1, 0x16, 0x7C, 0x0, 0x1, 0x0, 0x7D, 0x0, 0x0, 0x4, 0x36, 0x6, 0x0, 0x0, 0x14, 0x0, 0x0, 0x25, 0x37, 0x27, 0x7, 0x11, 0x23, 0x11, 0x33, 0x11, 0x37, 0x1, 0x21, 0x1, 0x17, 0x37, 0x17, 0x7, 0x13, 0x21, 0x27, 0x7, 0x1, 0xB5, 0x8C, 0x64, 0x6E, 0xF2, 0xF2, 0x4D, 0x1, 0x2B, 0x1, 0x24, 0xFE, 0x6E, 0x75, 0xBB, 0x6C, 0xC5, 0xE6, 0xFE, 0xE7, 0x7C, 0x80, 0xCC, 0x74, 0x92, 0x71, 0xFE, 0x9F, 0x6, 0x0, 0xFC, 0x8A, 0x60, 0x1, 0x50, 0xFE, 0x3D, 0xA6, 0x9C, 0x84, 0xA4, 0xFE, 0xBB, 0xB4, 0x6B, 0x0, 0x1, 0x0, 0x14, 0x0, 0x0, 0x5, 0x66, 0x5, 0xB0, 0x0, 0x1C, 0x0, 0x0, 0x1, 0x37, 0x27, 0x7, 0x11, 0x23, 0x11, 0x23, 0x35, 0x33, 0x35, 0x33, 0x15, 0x33, 0x15, 0x23, 0x11, 0x37, 0x1, 0x21, 0x1, 0x17, 0x37, 0x17, 0x7, 0x1, 0x21, 0x3, 0x7, 0x2, 0x78, 0x9F, 0x93, 0xA5, 0xFD, 0xCE, 0xCE, 0xFD, 0xD3, 0xD3, 0x8C, 0x1, 0xAA, 0x1, 0x32, 0xFD, 0xE3, 0xA8, 0x9A, 0x6C, 0xA4, 0x1, 0x32, 0xFE, 0xD3, 0xC1, 0x94, 0x1, 0x1E, 0x84, 0xD4, 0xAF, 0xFE, 0x39, 0x4, 0x68, 0xAA, 0x9E, 0x9E, 0xAA, 0xFE, 0x9E, 0xAC, 0x1, 0xFE, 0xFD, 0x7D, 0xEF, 0x80, 0x83, 0x88, 0xFE, 0x4D, 0x1, 0x16, 0x7C, 0x0, 0x1, 0x0, 0x14, 0x0, 0x0, 0x4, 0x99, 0x6, 0x0, 0x0, 0x1C, 0x0, 0x0, 0x25, 0x37, 0x27, 0x7, 0x11, 0x23, 0x11, 0x23, 0x35, 0x33, 0x35, 0x33, 0x15, 0x33, 0x15, 0x23, 0x11, 0x37, 0x1, 0x21, 0x1, 0x17, 0x37, 0x17, 0x7, 0x13, 0x21, 0x27, 0x7, 0x2, 0x18, 0x8C, 0x65, 0x6D, 0xF2, 0xCC, 0xCC, 0xF2, 0xE0, 0xE0, 0x4D, 0x1, 0x2B, 0x1, 0x24, 0xFE, 0x6D, 0x76, 0xBB, 0x6C, 0xC5, 0xE6, 0xFE, 0xE7, 0x7C, 0x80, 0xCC, 0x74, 0x92, 0x70, 0xFE, 0x9E, 0x4, 0x8D, 0xAA, 0xC9, 0xC9, 0xAA, 0xFD, 0xFD, 0x60, 0x1, 0x50, 0xFE, 0x3E, 0xA7, 0x9C, 0x84, 0xA4, 0xFE, 0xBB, 0xB4, 0x6B, 0x0, 0x1, 0x0, 0x95, 0x0, 0x0, 0x4, 0xC0, 0x5, 0xB0, 0x0, 0x9, 0x0, 0x0, 0x1, 0x23, 0x11, 0x33, 0x11, 0x33, 0x11, 0x21, 0x15, 0x21, 0x1, 0x5B, 0xC6, 0xFC, 0xC6, 0x2, 0x69, 0xFC, 0x9B, 0x2, 0x8F, 0x3, 0x21, 0xFD, 0xAA, 0xFD, 0x70, 0xCA, 0x0, 0x1, 0x0, 0x64, 0x0, 0x0, 0x2, 0x17, 0x6, 0x1, 0x0, 0x7, 0x0, 0x0, 0x1, 0x23, 0x11, 0x33, 0x11, 0x33, 0x11, 0x23, 0x1, 0x24, 0xC0, 0xF3, 0xC0, 0xF3, 0x2, 0xB4, 0x3, 0x4D, 0xFD, 0x76, 0xFC, 0x89, 0xFF, 0xFF, 0x0, 0x14, 0x0, 0x0, 0x4, 0x76, 0x5, 0xB0, 0x0, 0x26, 0x0, 0x31, 0x4F, 0x0, 0x0, 0x7, 0x7, 0xA4, 0xFF, 0x84, 0x2, 0x8, 0xFF, 0xFF, 0x0, 0x14, 0x0, 0x0, 0x2, 0xB2, 0x6, 0x0, 0x0, 0x26, 0x0, 0x51, 0x5D, 0x0, 0x0, 0x7, 0x7, 0xA4, 0xFF, 0x84, 0x2, 0x19, 0x0, 0x3, 0x0, 0x14, 0xFF, 0xEC, 0x6, 0x56, 0x5, 0xC4, 0x0, 0x6, 0x0, 0xC, 0x0, 0x1E, 0x0, 0x0, 0x1, 0x22, 0x6, 0x7, 0x21, 0x26, 0x26, 0x3, 0x20, 0x13, 0x21, 0x16, 0x16, 0x1, 0x23, 0x2, 0x0, 0x21, 0x22, 0x0, 0x3, 0x23, 0x35, 0x33, 0x12, 0x0, 0x33, 0x20, 0x0, 0x13, 0x33, 0x3, 0x34, 0x98, 0xBA, 0xB, 0x2, 0xBB, 0xB, 0xB7, 0x9A, 0x1, 0x43, 0x19, 0xFD, 0x45, 0xD, 0xBB, 0x3, 0xB7, 0xC7, 0x11, 0xFE, 0xBA, 0xFE, 0xFE, 0xFD, 0xFE, 0xB3, 0x12, 0xC6, 0xC6, 0x10, 0x1, 0x4C, 0xFE, 0x1, 0x3, 0x1, 0x48, 0x10, 0xC7, 0x4, 0xF3, 0xE1, 0xD8, 0xD8, 0xE1, 0xFB, 0xC9, 0x1, 0xB4, 0xD5, 0xDF, 0x1, 0xB4, 0xFE, 0xD2, 0xFE, 0xAA, 0x1, 0x56, 0x1, 0x2E, 0xCA, 0x1, 0x31, 0x1, 0x59, 0xFE, 0xA7, 0xFE, 0xCF, 0x0, 0x3, 0x0, 0x1B, 0xFF, 0xEC, 0x5, 0x2F, 0x4, 0x4E, 0x0, 0x6, 0x0, 0xD, 0x0, 0x1F, 0x0, 0x0, 0x1, 0x22, 0x6, 0x7, 0x21, 0x26, 0x26, 0x3, 0x32, 0x36, 0x37, 0x21, 0x16, 0x16, 0x1, 0x23, 0x6, 0x0, 0x23, 0x22, 0x0, 0x27, 0x23, 0x35, 0x33, 0x36, 0x0, 0x33, 0x32, 0x0, 0x17, 0x33, 0x2, 0xA4, 0x71, 0x7B, 0x10, 0x1, 0xFA, 0x10, 0x7C, 0x70, 0x73, 0x7C, 0xF, 0xFE, 0x2, 0xF, 0x7C, 0x2, 0xFE, 0x97, 0x17, 0xFE, 0xFD, 0xD8, 0xD9, 0xFE, 0xFC, 0x17, 0x97, 0x99, 0x19, 0x1, 0x2, 0xD5, 0xD7, 0x1, 0x3, 0x18, 0x99, 0x3, 0x8B, 0x98, 0x70, 0x70, 0x98, 0xFD, 0x24, 0x9C, 0x75, 0x75, 0x9C, 0x1, 0x11, 0xCC, 0xFE, 0xF8, 0x1, 0x8, 0xCC, 0xC3, 0xC8, 0x1, 0x3, 0xFE, 0xFD, 0xC8, 0x0, 0x3, 0x0, 0x66, 0xFF, 0xEC, 0x5, 0xCC, 0x5, 0xC5, 0x0, 0x16, 0x0, 0x1F, 0x0, 0x2D, 0x0, 0x0, 0x5, 0x20, 0x0, 0x11, 0x35, 0x10, 0x0, 0x21, 0x32, 0x17, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x6, 0x7, 0x16, 0x15, 0x15, 0x10, 0x0, 0x13, 0x22, 0x7, 0x16, 0x17, 0x36, 0x35, 0x34, 0x26, 0x3, 0x34, 0x2, 0x23, 0x22, 0x2, 0x15, 0x15, 0x14, 0x12, 0x33, 0x32, 0x12, 0x35, 0x2, 0xC4, 0xFE, 0xF6, 0xFE, 0xAC, 0x1, 0x52, 0x1, 0xA, 0xB2, 0x88, 0x4E, 0x72, 0x74, 0x9C, 0x6E, 0x50, 0x11, 0xFE, 0xB5, 0xE8, 0x30, 0x24, 0x52, 0x2F, 0x4B, 0x45, 0xCD, 0xB9, 0xA7, 0xA2, 0xBD, 0xBF, 0xA2, 0xA8, 0xB6, 0x14, 0x1, 0x7B, 0x1, 0x4C, 0x49, 0x1, 0x4C, 0x1, 0x7C, 0x54, 0x55, 0x94, 0x73, 0x59, 0x8D, 0x1A, 0x5C, 0x66, 0x49, 0xFE, 0xB4, 0xFE, 0x85, 0x5, 0x4D, 0x21, 0x57, 0x7C, 0x1E, 0x56, 0x37, 0x49, 0xFD, 0xC5, 0xF5, 0x1, 0x0, 0xFF, 0x0, 0xF5, 0x4B, 0xF5, 0xFE, 0xFE, 0x1, 0x2, 0xF5, 0x0, 0x3, 0x0, 0x50, 0xFF, 0xEC, 0x4, 0xF5, 0x4, 0x9A, 0x0, 0x15, 0x0, 0x1E, 0x0, 0x2C, 0x0, 0x0, 0x5, 0x22, 0x0, 0x27, 0x35, 0x34, 0x0, 0x33, 0x32, 0x17, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x6, 0x7, 0x16, 0x15, 0x14, 0x0, 0x13, 0x22, 0x7, 0x16, 0x17, 0x36, 0x35, 0x34, 0x26, 0x1, 0x32, 0x36, 0x35, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x15, 0x14, 0x16, 0x2, 0x48, 0xEB, 0xFE, 0xF7, 0x4, 0x1, 0xA, 0xEC, 0x6F, 0x5D, 0x4F, 0x88, 0x6E, 0x9E, 0x6E, 0x50, 0x7, 0xFE, 0xF7, 0xB4, 0x3B, 0x25, 0x5B, 0x2F, 0x4E, 0x45, 0xFE, 0x2C, 0x86, 0x7D, 0x7C, 0x89, 0x87, 0x7D, 0x7D, 0x14, 0x1, 0x33, 0xE6, 0x22, 0xEC, 0x1, 0x3B, 0x26, 0x72, 0x87, 0x85, 0x5E, 0x88, 0x18, 0x33, 0x4B, 0xEB, 0xFE, 0xC5, 0x4, 0x22, 0x2E, 0x4D, 0x7A, 0x1D, 0x58, 0x37, 0x49, 0xFC, 0xA1, 0xD2, 0x91, 0x15, 0x8F, 0xD5, 0xD5, 0x8F, 0x15, 0x91, 0xD2, 0xFF, 0xFF, 0x0, 0x66, 0xFF, 0xEC, 0x8, 0xDB, 0x5, 0xC4, 0x0, 0x26, 0x0, 0x34, 0x0, 0x0, 0x0, 0x7, 0x0, 0x34, 0x3, 0xBC, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x50, 0xFF, 0xEC, 0x7, 0x39, 0x4, 0x4E, 0x0, 0x26, 0x0, 0x54, 0x0, 0x0, 0x0, 0x7, 0x0, 0x54, 0x2, 0xFB, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x14, 0x0, 0x0, 0x5, 0x20, 0x5, 0xB0, 0x0, 0x26, 0x0, 0x35, 0x4C, 0x0, 0x0, 0x7, 0x7, 0xA4, 0xFF, 0x84, 0xFE, 0x75, 0xFF, 0xFF, 0x0, 0xD, 0xFE, 0x60, 0x4, 0x94, 0x4, 0x4E, 0x0, 0x26, 0x0, 0x55, 0x63, 0x0, 0x0, 0x7, 0x7, 0xA4, 0xFF, 0x7D, 0xFC, 0x75, 0x0, 0x2, 0x0, 0x28, 0x0, 0x0, 0x5, 0xEA, 0x5, 0xB0, 0x0, 0x8, 0x0, 0x20, 0x0, 0x0, 0x1, 0x11, 0x21, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x1, 0x11, 0x23, 0x11, 0x23, 0x22, 0x6, 0x15, 0x14, 0x17, 0x23, 0x26, 0x35, 0x34, 0x36, 0x33, 0x11, 0x21, 0x32, 0x0, 0x15, 0x14, 0x4, 0x23, 0x2, 0xA8, 0x1, 0x30, 0x93, 0x82, 0x82, 0x93, 0xFE, 0xD0, 0xFD, 0xD, 0x67, 0x44, 0x11, 0xC0, 0x1C, 0xD9, 0xAA, 0x2, 0x2D, 0xFE, 0x1, 0x14, 0xFE, 0xEC, 0xFE, 0x4, 0xE5, 0xFE, 0x3, 0x8A, 0x6D, 0x66, 0xA0, 0xFD, 0x38, 0xFD, 0xE3, 0x2, 0x1D, 0x62, 0x5B, 0x53, 0x44, 0x4A, 0x79, 0xBF, 0x9D, 0x2, 0xC8, 0xFE, 0xFA, 0xC9, 0xD3, 0xF1, 0x0, 0x2, 0x0, 0x22, 0xFE, 0x60, 0x5, 0x6C, 0x4, 0x4E, 0x0, 0xB, 0x0, 0x2B, 0x0, 0x0, 0x25, 0x32, 0x36, 0x35, 0x35, 0x34, 0x26, 0x23, 0x22, 0x7, 0x11, 0x16, 0x17, 0x22, 0x27, 0x11, 0x23, 0x11, 0x26, 0x23, 0x22, 0x6, 0x15, 0x14, 0x17, 0x23, 0x26, 0x35, 0x34, 0x36, 0x33, 0x32, 0x17, 0x11, 0x33, 0x17, 0x36, 0x33, 0x32, 0x12, 0x15, 0x15, 0x14, 0x2, 0x3, 0x78, 0x8B, 0x76, 0x76, 0x83, 0x94, 0x42, 0x5F, 0x90, 0x7F, 0x70, 0xF3, 0x34, 0x23, 0x3D, 0x3A, 0x10, 0xBC, 0x1B, 0xAB, 0x6D, 0x3B, 0x42, 0xE0, 0xA, 0x6C, 0xB7, 0xCE, 0xDA, 0xE1, 0xAE, 0xD4, 0x90, 0x15, 0x92, 0xCF, 0x7B, 0xFD, 0xC7, 0x26, 0xC2, 0x20, 0xFE, 0x54, 0x2, 0x11, 0x16, 0x6C, 0x54, 0x4D, 0x4B, 0x47, 0x7D, 0xAA, 0xB8, 0x17, 0x2, 0xFC, 0x6D, 0x81, 0xFE, 0xD0, 0xF7, 0x15, 0xEC, 0xFE, 0xC6, 0x0, 0x2, 0x0, 0x28, 0x0, 0x0, 0x5, 0xF1, 0x6, 0xF, 0x0, 0x8, 0x0, 0x26, 0x0, 0x0, 0x1, 0x11, 0x21, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x1, 0x11, 0x23, 0x11, 0x26, 0x26, 0x35, 0x34, 0x36, 0x35, 0x34, 0x26, 0x27, 0x37, 0x16, 0x16, 0x15, 0x14, 0x6, 0x15, 0x14, 0x33, 0x11, 0x21, 0x32, 0x0, 0x15, 0x14, 0x4, 0x23, 0x2, 0xAE, 0x1, 0x30, 0x93, 0x82, 0x82, 0x93, 0xFE, 0xD0, 0xFD, 0x9F, 0xDC, 0x68, 0x47, 0x2F, 0x93, 0x51, 0x57, 0x65, 0xB3, 0x2, 0x2D, 0xFE, 0x1, 0x15, 0xFE, 0xEB, 0xFE, 0x4, 0xE5, 0xFE, 0x3, 0x8A, 0x6D, 0x66, 0xA0, 0xFD, 0x38, 0xFD, 0xE3, 0x2, 0x1D, 0x1, 0x7F, 0xA7, 0x76, 0xB7, 0x55, 0x44, 0x54, 0x2A, 0x87, 0x4D, 0x92, 0x59, 0x6D, 0xBC, 0x59, 0x6D, 0x2, 0xC8, 0xFE, 0xFA, 0xC9, 0xD3, 0xF1, 0x0, 0x2, 0x0, 0x2B, 0xFE, 0x60, 0x5, 0x57, 0x4, 0x4E, 0x0, 0xB, 0x0, 0x30, 0x0, 0x0, 0x25, 0x32, 0x36, 0x35, 0x35, 0x34, 0x26, 0x23, 0x22, 0x7, 0x11, 0x16, 0x17, 0x22, 0x27, 0x11, 0x23, 0x11, 0x2E, 0x2, 0x35, 0x34, 0x36, 0x35, 0x34, 0x26, 0x27, 0x37, 0x16, 0x16, 0x15, 0x14, 0x6, 0x15, 0x14, 0x16, 0x17, 0x11, 0x33, 0x17, 0x36, 0x33, 0x32, 0x12, 0x15, 0x15, 0x14, 0x2, 0x3, 0x64, 0x8B, 0x76, 0x76, 0x83, 0x94, 0x42, 0x6F, 0x8F, 0x82, 0x7C, 0xF3, 0x56, 0xAB, 0x71, 0x66, 0x3D, 0x2F, 0x90, 0x52, 0x55, 0x5E, 0x5C, 0x43, 0xDF, 0xB, 0x6C, 0xB7, 0xCE, 0xD9, 0xDA, 0xAF, 0xD3, 0x90, 0x15, 0x92, 0xCF, 0x7B, 0xFD, 0xC2, 0x20, 0xC3, 0x1C, 0xFE, 0x58, 0x1, 0xF3, 0x1C, 0x49, 0x76, 0x61, 0x6B, 0xB2, 0x5C, 0x36, 0x47, 0x2B, 0x88, 0x4C, 0x87, 0x53, 0x60, 0xB6, 0x50, 0x36, 0x47, 0x19, 0x3, 0x24, 0x6D, 0x81, 0xFE, 0xD0, 0xF8, 0x14, 0xEC, 0xFE, 0xC6, 0x0, 0x2, 0x0, 0x60, 0xFE, 0x75, 0x5, 0x9A, 0x5, 0xC4, 0x0, 0xD, 0x0, 0x28, 0x0, 0x0, 0x1, 0x34, 0x2, 0x23, 0x22, 0x2, 0x15, 0x15, 0x14, 0x12, 0x33, 0x32, 0x12, 0x35, 0x13, 0x27, 0x7, 0x27, 0x37, 0x27, 0x6, 0x23, 0x20, 0x0, 0x11, 0x35, 0x10, 0x0, 0x21, 0x20, 0x0, 0x11, 0x15, 0x14, 0x2, 0x7, 0x17, 0x37, 0x17, 0x7, 0x17, 0x4, 0x1C, 0xB9, 0xA7, 0xA2, 0xBC, 0xBE, 0xA2, 0xA8, 0xB6, 0xDF, 0x94, 0x94, 0x7C, 0x89, 0x9F, 0x3F, 0x44, 0xFE, 0xF6, 0xFE, 0xAC, 0x1, 0x52, 0x1, 0xA, 0x1, 0x10, 0x1, 0x4D, 0x84, 0x76, 0x57, 0xA9, 0x7B, 0x9C, 0x9A, 0x2, 0xFE, 0xF5, 0x1, 0x0, 0xFF, 0x0, 0xF5, 0x4B, 0xF5, 0xFE, 0xFE, 0x1, 0x2, 0xF5, 0xFB, 0xE5, 0x76, 0x99, 0x77, 0x8E, 0x7F, 0xD, 0x1, 0x7B, 0x1, 0x4C, 0x49, 0x1, 0x4C, 0x1, 0x7C, 0xFE, 0x84, 0xFE, 0xB4, 0x49, 0xCE, 0xFE, 0xCE, 0x58, 0x45, 0xAE, 0x78, 0xA1, 0x7A, 0xFF, 0xFF, 0x0, 0x50, 0xFE, 0x60, 0x4, 0xD7, 0x4, 0x4E, 0x0, 0x26, 0x0, 0x56, 0x0, 0x0, 0x0, 0x7, 0x7, 0xA4, 0x1, 0xA9, 0xFC, 0x75, 0x0, 0x2, 0x0, 0x60, 0xFE, 0x82, 0x6, 0xCD, 0x5, 0xC4, 0x0, 0xD, 0x0, 0x31, 0x0, 0x0, 0x1, 0x34, 0x2, 0x23, 0x22, 0x2, 0x15, 0x15, 0x14, 0x12, 0x33, 0x32, 0x12, 0x35, 0x13, 0x27, 0x7, 0x27, 0x37, 0x27, 0x6, 0x23, 0x20, 0x0, 0x11, 0x35, 0x10, 0x0, 0x21, 0x20, 0x0, 0x11, 0x15, 0x14, 0x2, 0x7, 0x17, 0x1, 0x36, 0x37, 0x36, 0x26, 0x27, 0x37, 0x16, 0x17, 0x14, 0x7, 0x1, 0x17, 0x4, 0x1B, 0xB9, 0xA7, 0xA1, 0xBD, 0xBF, 0xA1, 0xA8, 0xB6, 0xDF, 0x93, 0x8B, 0x7F, 0x7E, 0x9B, 0x3F, 0x44, 0xFE, 0xF6, 0xFE, 0xAD, 0x1, 0x51, 0x1, 0xA, 0x1, 0x10, 0x1, 0x4E, 0x84, 0x76, 0x55, 0x1, 0x19, 0x6F, 0xB, 0xA, 0x52, 0x2E, 0x9D, 0x9E, 0x1, 0xBF, 0xFE, 0xF3, 0x96, 0x2, 0xFE, 0xF5, 0x1, 0x0, 0xFF, 0x0, 0xF5, 0x4B, 0xF5, 0xFE, 0xFE, 0x1, 0x2, 0xF5, 0xFB, 0xE5, 0x75, 0x8B, 0x7E, 0x7E, 0x7B, 0xD, 0x1, 0x7B, 0x1, 0x4C, 0x49, 0x1, 0x4C, 0x1, 0x7C, 0xFE, 0x84, 0xFE, 0xB4, 0x49, 0xCE, 0xFE, 0xCE, 0x58, 0x44, 0x1, 0x19, 0x6F, 0x58, 0x58, 0x8F, 0x3C, 0x73, 0xC4, 0xAA, 0xA6, 0xC4, 0xFE, 0xF3, 0x77, 0x0, 0x2, 0x0, 0x50, 0xFE, 0x60, 0x5, 0x9B, 0x4, 0x4E, 0x0, 0x1F, 0x0, 0x2B, 0x0, 0x0, 0x1, 0x23, 0x35, 0x7, 0x27, 0x37, 0x35, 0x6, 0x23, 0x22, 0x2, 0x35, 0x35, 0x34, 0x12, 0x33, 0x32, 0x17, 0x37, 0x33, 0x11, 0x37, 0x36, 0x37, 0x36, 0x26, 0x27, 0x37, 0x16, 0x12, 0x7, 0x7, 0x25, 0x32, 0x37, 0x11, 0x26, 0x23, 0x22, 0x6, 0x15, 0x15, 0x14, 0x16, 0x4, 0x3, 0xF3, 0x80, 0x7E, 0xFE, 0x6A, 0xAA, 0xCA, 0xE2, 0xE1, 0xCD, 0xB4, 0x6B, 0xD, 0xD9, 0x58, 0x6C, 0xA, 0xA, 0x52, 0x2E, 0x9E, 0x9E, 0x4, 0xCF, 0xC9, 0xFE, 0x36, 0x92, 0x45, 0x46, 0x8F, 0x83, 0x76, 0x74, 0xFE, 0x60, 0xA3, 0x7A, 0x7E, 0xF4, 0x62, 0x71, 0x1, 0x3A, 0xED, 0x14, 0xF7, 0x1, 0x30, 0x7E, 0x6A, 0xFC, 0xAA, 0x54, 0x68, 0x57, 0x56, 0x91, 0x3C, 0x73, 0xC4, 0xFE, 0xA8, 0xC6, 0xC0, 0xC4, 0x7C, 0x1, 0xEA, 0x76, 0xD2, 0x92, 0x15, 0x91, 0xD2, 0x0, 0x1, 0x0, 0x14, 0x0, 0x0, 0x3, 0xF9, 0x5, 0xC4, 0x0, 0x15, 0x0, 0x0, 0x21, 0x21, 0x1, 0x36, 0x36, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x7, 0x27, 0x36, 0x21, 0x32, 0x16, 0x15, 0x14, 0x6, 0x7, 0x1, 0x3, 0xF9, 0xFE, 0xFC, 0xFE, 0x52, 0xAF, 0xE5, 0x76, 0x88, 0x65, 0x8B, 0x59, 0x80, 0xCB, 0x1, 0x10, 0xE6, 0xFD, 0xC6, 0x8C, 0x1, 0x79, 0x2, 0x6F, 0x56, 0xA8, 0x91, 0x66, 0x94, 0x44, 0x4A, 0x93, 0xC7, 0xEC, 0xCA, 0xA9, 0xE0, 0x55, 0xFD, 0xDD, 0x0, 0x1, 0x0, 0xD, 0x0, 0x0, 0x3, 0x1E, 0x4, 0x46, 0x0, 0x16, 0x0, 0x0, 0x21, 0x21, 0x1, 0x36, 0x36, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x7, 0x27, 0x36, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x6, 0x7, 0x1, 0x3, 0x1E, 0xFE, 0xFB, 0xFE, 0xC4, 0x86, 0x9D, 0x58, 0x43, 0x42, 0x62, 0x3D, 0x77, 0x4B, 0xAB, 0x73, 0xAB, 0xD3, 0x8C, 0x64, 0x1, 0x1A, 0x1, 0xD4, 0x36, 0x7F, 0x5E, 0x4D, 0x4D, 0x2A, 0x29, 0x92, 0x3C, 0x4A, 0xBA, 0xA1, 0x7B, 0x99, 0x35, 0xFE, 0x67, 0x0, 0x1, 0x0, 0x22, 0xFE, 0x60, 0x4, 0xE2, 0x5, 0xC5, 0x0, 0x1D, 0x0, 0x0, 0x21, 0x23, 0x11, 0x23, 0x11, 0x21, 0x35, 0x36, 0x12, 0x36, 0x35, 0x34, 0x26, 0x23, 0x22, 0x7, 0x27, 0x36, 0x33, 0x32, 0x4, 0x15, 0x14, 0x0, 0x7, 0x21, 0x11, 0x33, 0x11, 0x33, 0x4, 0xE2, 0xAE, 0xFC, 0xFC, 0xFA, 0xBD, 0xFC, 0x7D, 0x86, 0x7A, 0x7F, 0x6B, 0x5C, 0x93, 0xD2, 0xCC, 0x1, 0x13, 0xFE, 0xEC, 0xDC, 0x1, 0xC2, 0xFC, 0xAE, 0xFE, 0x60, 0x1, 0xA0, 0xAF, 0xB7, 0x1, 0x10, 0xF3, 0x8D, 0x74, 0x89, 0x3E, 0xAF, 0x61, 0xDB, 0xE3, 0xD9, 0xFE, 0x6D, 0xD1, 0x1, 0x8E, 0xFE, 0x72, 0x0, 0x1, 0x0, 0x22, 0xFE, 0x60, 0x4, 0xE2, 0x6, 0x1F, 0x0, 0x1B, 0x0, 0x0, 0x21, 0x23, 0x11, 0x23, 0x11, 0x21, 0x35, 0x0, 0x0, 0x35, 0x10, 0x21, 0x22, 0x7, 0x27, 0x36, 0x33, 0x32, 0x4, 0x15, 0x14, 0x0, 0x7, 0x21, 0x11, 0x33, 0x11, 0x33, 0x4, 0xE2, 0xB7, 0xF3, 0xFC, 0xFA, 0x1, 0x21, 0x1, 0x1B, 0xFE, 0xFF, 0x7A, 0x69, 0x68, 0x95, 0xC2, 0xD4, 0x1, 0x14, 0xFE, 0xE6, 0xDF, 0x1, 0xD0, 0xF3, 0xB7, 0xFE, 0x60, 0x1, 0xA0, 0xA8, 0x1, 0x14, 0x1, 0xC0, 0xD5, 0x1, 0xB, 0x40, 0xA3, 0x60, 0xD6, 0xE8, 0xDC, 0xFE, 0x22, 0xE4, 0x1, 0x95, 0xFE, 0x6B, 0x0, 0x1, 0x0, 0x12, 0xFF, 0x83, 0x5, 0x1D, 0x6, 0x1D, 0x0, 0xE, 0x0, 0x0, 0x21, 0x27, 0x7, 0x23, 0x13, 0x1, 0x21, 0x13, 0x1, 0x33, 0x1, 0x17, 0x1, 0x21, 0x1, 0x2, 0x1C, 0x21, 0x46, 0xC0, 0xA1, 0xFE, 0x7C, 0x1, 0x15, 0xE7, 0x1, 0xB, 0xBF, 0xFE, 0x95, 0x29, 0x1, 0x71, 0x1, 0x16, 0xFD, 0xF4, 0x5C, 0xD9, 0x1, 0xF2, 0x4, 0x3B, 0xFD, 0x35, 0x3, 0x38, 0xFB, 0x9F, 0x7E, 0x4, 0x72, 0xFA, 0x50, 0x0, 0x1, 0x0, 0x17, 0xFF, 0x83, 0x3, 0xDB, 0x5, 0x1, 0x0, 0xE, 0x0, 0x0, 0x21, 0x27, 0x7, 0x23, 0x13, 0x3, 0x33, 0x13, 0x13, 0x33, 0x3, 0x17, 0x13, 0x33, 0x1, 0x1, 0x91, 0x1F, 0x3F, 0xB7, 0x94, 0xF9, 0xFB, 0x6A, 0xA3, 0xB6, 0xFD, 0x24, 0xE4, 0xFB, 0xFE, 0x89, 0x58, 0xD5, 0x1, 0xEF, 0x2, 0xC8, 0xFE, 0xA3, 0x2, 0x24, 0xFC, 0xAB, 0x77, 0x3, 0x5, 0xFB, 0xC6, 0x0, 0x1, 0x0, 0x31, 0xFE, 0x4B, 0x6, 0xE5, 0x5, 0xB0, 0x0, 0x16, 0x0, 0x0, 0x1, 0x22, 0x27, 0x35, 0x17, 0x32, 0x36, 0x37, 0x37, 0x23, 0x1, 0x1, 0x23, 0x1, 0x33, 0x13, 0x1, 0x33, 0x1, 0x13, 0x33, 0x1, 0x2, 0x4, 0x27, 0x2C, 0x55, 0x2E, 0x59, 0x68, 0x17, 0xE, 0x17, 0xFE, 0xEB, 0xFE, 0xE5, 0xF2, 0xFE, 0xB0, 0xFB, 0xE2, 0x1, 0x16, 0xD4, 0x1, 0x10, 0xE2, 0xFB, 0xFE, 0x90, 0x49, 0xFE, 0x4B, 0x11, 0xBD, 0x4, 0x44, 0x67, 0x40, 0x4, 0x26, 0xFB, 0xDA, 0x5, 0xB0, 0xFB, 0xBD, 0x4, 0x43, 0xFB, 0xC5, 0x4, 0x3B, 0xF9, 0xD4, 0xFE, 0xC7, 0xFF, 0xFF, 0x0, 0x17, 0xFE, 0x4B, 0x6, 0xAB, 0x4, 0x3A, 0x0, 0x26, 0x0, 0x5B, 0x0, 0x0, 0x0, 0x7, 0x0, 0x5E, 0x2, 0xD4, 0x0, 0x0, 0x0, 0x1, 0x0, 0x4A, 0xFF, 0xEB, 0x4, 0x3D, 0x7, 0x8C, 0x0, 0x2E, 0x0, 0x0, 0x5, 0x22, 0x26, 0x26, 0x35, 0x33, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x23, 0x35, 0x25, 0x23, 0x26, 0x24, 0x35, 0x34, 0x24, 0x33, 0x32, 0x16, 0x16, 0x15, 0x23, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x14, 0x16, 0x33, 0x21, 0x17, 0x1, 0x16, 0x16, 0x15, 0x14, 0x4, 0x2, 0x3D, 0x77, 0xE1, 0x90, 0xFA, 0x83, 0x6B, 0x7A, 0x89, 0x96, 0x8D, 0x8D, 0x1, 0x2D, 0x71, 0xF6, 0xFE, 0xF4, 0x1, 0x1E, 0xE2, 0x7D, 0xE1, 0x8E, 0xFA, 0x88, 0x6A, 0x7C, 0x87, 0x89, 0x84, 0x1, 0xBF, 0x1, 0xFE, 0xAE, 0xB5, 0xC6, 0xFE, 0xDF, 0x15, 0x58, 0xBC, 0x95, 0x59, 0x7F, 0x81, 0x64, 0x86, 0x73, 0xAE, 0xED, 0x2, 0xD4, 0xD4, 0xD0, 0xDD, 0x5C, 0xBB, 0x8F, 0x5A, 0x7B, 0x7D, 0x5F, 0x7E, 0x6D, 0x9B, 0xFE, 0xEC, 0x1C, 0xD1, 0xBC, 0xD0, 0xE1, 0x0, 0x1, 0x0, 0x51, 0xFE, 0x4B, 0x4, 0x4A, 0x6, 0x9E, 0x0, 0x2D, 0x0, 0x0, 0x1, 0x22, 0x26, 0x26, 0x35, 0x33, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x23, 0x35, 0x1, 0x23, 0x26, 0x24, 0x35, 0x34, 0x24, 0x33, 0x32, 0x16, 0x16, 0x15, 0x23, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x14, 0x5, 0x21, 0x17, 0x1, 0x16, 0x16, 0x15, 0x14, 0x4, 0x2, 0x4A, 0x77, 0xE1, 0x90, 0xF3, 0x85, 0x70, 0x80, 0x8E, 0x9B, 0x93, 0x8E, 0x1, 0x61, 0xAE, 0xF4, 0xFE, 0xF6, 0x1, 0x1E, 0xE2, 0x7D, 0xE1, 0x8E, 0xF3, 0x8B, 0x6E, 0x83, 0x8A, 0x1, 0xC, 0x1, 0xC9, 0x1, 0xFE, 0x89, 0xCA, 0xDD, 0xFE, 0xDF, 0xFE, 0x4B, 0x58, 0xBB, 0x95, 0x5E, 0x87, 0x85, 0x64, 0x97, 0x82, 0xAB, 0x1, 0x84, 0x3, 0xE0, 0xD0, 0xCF, 0xDD, 0x5D, 0xBB, 0x8E, 0x60, 0x83, 0x85, 0x65, 0xF3, 0x5, 0x9B, 0xFE, 0x5C, 0x17, 0xE7, 0xC5, 0xCC, 0xE0, 0x0, 0x2, 0x0, 0x14, 0x0, 0x0, 0x4, 0xCE, 0x5, 0xB0, 0x0, 0x8, 0x0, 0x1D, 0x0, 0x0, 0x1, 0x11, 0x33, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x3, 0x11, 0x23, 0x11, 0x23, 0x35, 0x33, 0x35, 0x33, 0x15, 0x33, 0x15, 0x23, 0x15, 0x21, 0x16, 0x4, 0x15, 0x14, 0x4, 0x23, 0x1, 0xD7, 0xF6, 0x91, 0x7D, 0x7D, 0x91, 0xF6, 0xF3, 0xD0, 0xD0, 0xF3, 0xDB, 0xDB, 0x1, 0x2, 0xF3, 0x1, 0x2, 0xFE, 0xF8, 0xF9, 0x3, 0xA3, 0xFE, 0x4C, 0x8A, 0x52, 0x53, 0x85, 0xFD, 0x89, 0xFE, 0xD4, 0x4, 0xB6, 0xAB, 0x4F, 0x4F, 0xAB, 0x50, 0x3, 0xE7, 0xAF, 0xB3, 0xEE, 0x0, 0x2, 0x0, 0x14, 0xFE, 0x60, 0x4, 0x99, 0x6, 0x0, 0x0, 0xB, 0x0, 0x23, 0x0, 0x0, 0x25, 0x32, 0x36, 0x35, 0x35, 0x34, 0x26, 0x23, 0x22, 0x7, 0x11, 0x16, 0x3, 0x23, 0x11, 0x23, 0x35, 0x33, 0x35, 0x33, 0x15, 0x33, 0x15, 0x23, 0x15, 0x36, 0x33, 0x32, 0x12, 0x15, 0x15, 0x14, 0x2, 0x23, 0x22, 0x27, 0x2, 0xB0, 0x83, 0x74, 0x76, 0x83, 0x94, 0x42, 0x43, 0x43, 0xF3, 0xD1, 0xD1, 0xF3, 0xDA, 0xDA, 0x6B, 0xAF, 0xCE, 0xD9, 0xD9, 0xCB, 0xB1, 0x6C, 0xAF, 0xD3, 0x91, 0x14, 0x92, 0xCF, 0x7B, 0xFE, 0x20, 0x7E, 0xFD, 0xB1, 0x6, 0x60, 0xAB, 0x95, 0x95, 0xAB, 0xE8, 0x76, 0xFE, 0xD0, 0xF8, 0x14, 0xEC, 0xFE, 0xC6, 0x75, 0x0, 0x2, 0x0, 0x14, 0xFF, 0x38, 0x4, 0xCE, 0x5, 0xB0, 0x0, 0x8, 0x0, 0x1D, 0x0, 0x0, 0x1, 0x11, 0x33, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x3, 0x23, 0x15, 0x23, 0x35, 0x23, 0x35, 0x33, 0x11, 0x33, 0x11, 0x33, 0x16, 0x4, 0x15, 0x14, 0x4, 0x23, 0x23, 0x15, 0x33, 0x1, 0xD7, 0xF6, 0x91, 0x7D, 0x7D, 0x91, 0x1B, 0xDB, 0xF3, 0xD0, 0xD0, 0xF3, 0xFE, 0xF5, 0x1, 0x4, 0xFE, 0xF8, 0xF9, 0xF6, 0xDB, 0x3, 0xD6, 0xFE, 0x19, 0x95, 0x5C, 0x5F, 0x97, 0xFC, 0x2A, 0xC8, 0xC8, 0xAB, 0x5, 0x5, 0xFE, 0xE9, 0x2, 0xF8, 0xBD, 0xBE, 0xF8, 0x81, 0x0, 0x2, 0x0, 0x14, 0xFE, 0x60, 0x4, 0x99, 0x6, 0x0, 0x0, 0xB, 0x0, 0x23, 0x0, 0x0, 0x25, 0x32, 0x36, 0x35, 0x35, 0x34, 0x26, 0x23, 0x22, 0x7, 0x11, 0x16, 0x13, 0x23, 0x15, 0x23, 0x35, 0x23, 0x35, 0x33, 0x11, 0x33, 0x11, 0x36, 0x33, 0x32, 0x12, 0x15, 0x15, 0x14, 0x2, 0x23, 0x22, 0x27, 0x15, 0x33, 0x2, 0xB0, 0x83, 0x74, 0x76, 0x83, 0x95, 0x41, 0x43, 0x97, 0xDA, 0xF3, 0xD1, 0xD1, 0xF3, 0x6B, 0xAF, 0xCE, 0xD9, 0xD9, 0xCB, 0xB1, 0x6C, 0xDA, 0xAF, 0xD3, 0x91, 0x14, 0x92, 0xCF, 0x7E, 0xFE, 0x25, 0x80, 0xFE, 0x46, 0x95, 0x95, 0xAB, 0x6, 0x60, 0xFD, 0xD8, 0x76, 0xFE, 0xD0, 0xF8, 0x14, 0xEC, 0xFE, 0xC6, 0x75, 0xC1, 0x0, 0x1, 0x0, 0x95, 0xFE, 0x60, 0x4, 0x6E, 0x5, 0xB0, 0x0, 0x7, 0x0, 0x0, 0x1, 0x23, 0x11, 0x33, 0x11, 0x1, 0x21, 0x1, 0x1, 0x91, 0xFC, 0xFC, 0x1, 0xCF, 0x1, 0xE, 0xFD, 0x23, 0xFE, 0x60, 0x7, 0x50, 0xFC, 0x7, 0x3, 0xF9, 0xF9, 0xFB, 0x0, 0x1, 0x0, 0x7D, 0xFE, 0x60, 0x3, 0xCB, 0x4, 0x3A, 0x0, 0x7, 0x0, 0x0, 0x1, 0x23, 0x11, 0x33, 0x11, 0x1, 0x33, 0x1, 0x1, 0x70, 0xF3, 0xF3, 0x1, 0x60, 0xFB, 0xFD, 0xA5, 0xFE, 0x60, 0x5, 0xDA, 0xFC, 0xE9, 0x3, 0x17, 0xFB, 0x29, 0x0, 0x1, 0x0, 0x25, 0x0, 0x0, 0x3, 0xC9, 0x5, 0xC5, 0x0, 0x22, 0x0, 0x0, 0x33, 0x35, 0x21, 0x32, 0x36, 0x35, 0x34, 0x25, 0x23, 0x35, 0x33, 0x36, 0x36, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x23, 0x34, 0x24, 0x33, 0x32, 0x16, 0x15, 0x14, 0x6, 0x7, 0x16, 0x15, 0x14, 0x4, 0x23, 0x73, 0x1, 0x30, 0x8D, 0x9C, 0xFE, 0xF5, 0x8A, 0x81, 0x86, 0x78, 0x5A, 0x71, 0x5D, 0x6F, 0xFA, 0x1, 0x8, 0xBB, 0xDC, 0xEF, 0x7B, 0x6D, 0xFE, 0xFE, 0xCB, 0xF1, 0xCB, 0x72, 0x6B, 0xE1, 0x6, 0xC9, 0x1, 0x72, 0x60, 0x56, 0x72, 0x6C, 0x59, 0xBD, 0xDA, 0xDB, 0xB7, 0x67, 0xA5, 0x2F, 0x5C, 0xFC, 0xD3, 0xCD, 0x0, 0x1, 0x0, 0x21, 0xFE, 0x6D, 0x3, 0x6C, 0x4, 0x4D, 0x0, 0x23, 0x0, 0x0, 0x13, 0x35, 0x33, 0x36, 0x36, 0x35, 0x10, 0x25, 0x23, 0x35, 0x33, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x23, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x6, 0x7, 0x16, 0x16, 0x15, 0x14, 0x4, 0x23, 0x6E, 0xF6, 0x91, 0x85, 0xFE, 0xEF, 0x76, 0x90, 0x69, 0x67, 0x4D, 0x5A, 0x45, 0x54, 0xF2, 0xE4, 0xA5, 0xC4, 0xD7, 0x65, 0x55, 0x70, 0x71, 0xFE, 0xFE, 0xEC, 0xFE, 0x6D, 0xBC, 0x1, 0x8E, 0x6A, 0x1, 0x1, 0x6, 0xA9, 0x8A, 0x6B, 0x56, 0x75, 0x58, 0x3B, 0x98, 0xB6, 0xD4, 0xAA, 0x69, 0xA9, 0x30, 0x33, 0xC1, 0x80, 0xBB, 0xF1, 0x0, 0x2, 0x0, 0x46, 0xFF, 0xEC, 0x4, 0x1C, 0x5, 0xC5, 0x0, 0x7, 0x0, 0x20, 0x0, 0x0, 0x1, 0x33, 0x32, 0x35, 0x34, 0x23, 0x22, 0x7, 0x1, 0x22, 0x27, 0x37, 0x16, 0x33, 0x32, 0x37, 0x11, 0x21, 0x35, 0x21, 0x35, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x10, 0x5, 0x23, 0x11, 0x14, 0x6, 0x2, 0x60, 0x39, 0x9A, 0x67, 0x6A, 0x2, 0xFE, 0x7D, 0x50, 0x47, 0x7, 0x34, 0x3A, 0xA8, 0x1, 0xFE, 0xE9, 0x1, 0x17, 0x9B, 0xCA, 0xA7, 0xAC, 0xFE, 0x94, 0x50, 0xCC, 0x4, 0x17, 0x8A, 0x69, 0x86, 0xFB, 0x68, 0x15, 0xBD, 0x9, 0xB5, 0x1, 0xF2, 0xBB, 0x2F, 0x94, 0xEB, 0xAD, 0x7F, 0xFE, 0xCC, 0x9, 0xFE, 0x10, 0xC3, 0xBD, 0x0, 0x2, 0x0, 0x49, 0xFE, 0x4B, 0x4, 0x18, 0x5, 0xFB, 0x0, 0xA, 0x0, 0x24, 0x0, 0x0, 0x1, 0x33, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x1, 0x22, 0x27, 0x37, 0x16, 0x33, 0x32, 0x37, 0x11, 0x21, 0x35, 0x21, 0x35, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x6, 0x23, 0x23, 0x11, 0x14, 0x6, 0x2, 0x57, 0x3F, 0x53, 0x4C, 0x3D, 0x2F, 0x36, 0x3C, 0xFE, 0x88, 0x46, 0x43, 0x6, 0x2E, 0x33, 0xA6, 0x1, 0xFE, 0xE5, 0x1, 0x1B, 0x9A, 0xC7, 0xA7, 0xAC, 0xC4, 0xBF, 0x3E, 0xC8, 0x4, 0x3E, 0x57, 0x40, 0x38, 0x40, 0x53, 0x44, 0xF9, 0x95, 0x10, 0xC1, 0x8, 0xB5, 0x3, 0xC1, 0xB4, 0x3E, 0x95, 0xEA, 0xAF, 0x7F, 0x99, 0xAA, 0xFC, 0x41, 0xBA, 0xC6, 0x0, 0x2, 0x0, 0x4D, 0xFF, 0xEC, 0x4, 0x4D, 0x5, 0xC4, 0x0, 0x14, 0x0, 0x21, 0x0, 0x0, 0x5, 0x27, 0x3E, 0x2, 0x37, 0x6, 0x23, 0x22, 0x0, 0x35, 0x34, 0x0, 0x33, 0x32, 0x0, 0x11, 0x15, 0x10, 0x2, 0x4, 0x3, 0x32, 0x36, 0x37, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x14, 0x16, 0x1, 0xA0, 0x3E, 0x63, 0xC1, 0x95, 0x20, 0x7C, 0xA6, 0xCC, 0xFF, 0x0, 0x1, 0x18, 0xE5, 0xD7, 0x1, 0x2C, 0xBE, 0xFE, 0xC9, 0xF, 0x61, 0x84, 0x21, 0x94, 0x6E, 0x7B, 0x87, 0x83, 0x14, 0xC9, 0x17, 0x4C, 0x98, 0x88, 0x60, 0x1, 0x10, 0xE9, 0xCF, 0x1, 0x24, 0xFE, 0xCD, 0xFE, 0xF9, 0x69, 0xFE, 0xE4, 0xFE, 0xAD, 0xA9, 0x2, 0x95, 0x35, 0x27, 0x9E, 0xB0, 0xAB, 0xA6, 0x82, 0x7A, 0xB3, 0x0, 0x2, 0x0, 0x40, 0xFE, 0x4B, 0x4, 0x40, 0x4, 0x4E, 0x0, 0x13, 0x0, 0x20, 0x0, 0x0, 0x1, 0x27, 0x36, 0x24, 0x37, 0x6, 0x23, 0x22, 0x0, 0x35, 0x34, 0x0, 0x33, 0x32, 0x0, 0x11, 0x15, 0x10, 0x2, 0x4, 0x3, 0x32, 0x36, 0x37, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x14, 0x16, 0x1, 0x94, 0x3F, 0x99, 0x1, 0x1A, 0x32, 0x7C, 0x9F, 0xCE, 0xFE, 0xEF, 0x1, 0x19, 0xE5, 0xD7, 0x1, 0x2B, 0xBD, 0xFE, 0xC9, 0xF, 0x6A, 0x8A, 0x1D, 0x99, 0x74, 0x82, 0x8C, 0x93, 0xFE, 0x4B, 0xC9, 0x27, 0xC0, 0xCC, 0x66, 0x1, 0x10, 0xE9, 0xCF, 0x1, 0x25, 0xFE, 0xCD, 0xFE, 0xF9, 0x6A, 0xFE, 0xF9, 0xFE, 0x94, 0xCF, 0x2, 0xB6, 0x41, 0x2D, 0x95, 0xAA, 0xC0, 0xB7, 0x7A, 0x82, 0xBA, 0x0, 0x2, 0x0, 0x56, 0x1, 0x4C, 0x3, 0x4C, 0x5, 0xBE, 0x0, 0x12, 0x0, 0x1D, 0x0, 0x0, 0x1, 0x27, 0x36, 0x36, 0x37, 0x6, 0x23, 0x22, 0x26, 0x35, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x15, 0x10, 0x0, 0x3, 0x32, 0x37, 0x35, 0x34, 0x23, 0x22, 0x6, 0x15, 0x14, 0x16, 0x1, 0x57, 0x38, 0x7D, 0xB2, 0x24, 0x54, 0x65, 0xA1, 0xC2, 0xD0, 0xA9, 0x9F, 0xDE, 0xFE, 0xF6, 0x73, 0x73, 0x45, 0xB6, 0x5B, 0x5B, 0x5B, 0x1, 0x4C, 0x9D, 0x25, 0x8B, 0x78, 0x3A, 0xC9, 0xAC, 0x9A, 0xD8, 0xE3, 0xC2, 0x4E, 0xFE, 0xF1, 0xFE, 0xBA, 0x2, 0x3, 0x37, 0x73, 0xF4, 0x70, 0x5B, 0x60, 0x73, 0x0, 0x2, 0x0, 0x50, 0xFE, 0x60, 0x5, 0x86, 0x6, 0x0, 0x0, 0xD, 0x0, 0x2A, 0x0, 0x0, 0x25, 0x32, 0x37, 0x26, 0x35, 0x11, 0x26, 0x23, 0x22, 0x6, 0x15, 0x15, 0x14, 0x16, 0x5, 0x22, 0x27, 0x3, 0x23, 0x13, 0x26, 0x27, 0x6, 0x23, 0x22, 0x2, 0x35, 0x35, 0x34, 0x12, 0x33, 0x32, 0x17, 0x11, 0x33, 0x11, 0x14, 0x17, 0x13, 0x33, 0x3, 0x16, 0x37, 0x2, 0x37, 0x9E, 0x44, 0x8, 0x44, 0x94, 0x84, 0x73, 0x72, 0x3, 0x61, 0x54, 0x44, 0x85, 0xBF, 0x96, 0x58, 0x2F, 0x6E, 0xE1, 0xC3, 0xE6, 0xE5, 0xC6, 0xAC, 0x6A, 0xF3, 0x1D, 0xA6, 0xBF, 0xC8, 0x26, 0x31, 0xB3, 0x97, 0x36, 0x41, 0x1, 0x45, 0x82, 0xD0, 0x92, 0x15, 0x91, 0xCD, 0xC7, 0xA, 0xFE, 0x6A, 0x1, 0xCB, 0x30, 0x56, 0xC5, 0x1, 0x39, 0xEC, 0x15, 0xF7, 0x1, 0x31, 0x77, 0x2, 0x29, 0xFB, 0xC2, 0x60, 0x3C, 0x1, 0xFA, 0xFD, 0x9C, 0x6, 0x2, 0x0, 0x1, 0x0, 0x8C, 0xFE, 0x60, 0x3, 0x0, 0x6, 0x0, 0x0, 0x11, 0x0, 0x0, 0x5, 0x22, 0x27, 0x3, 0x23, 0x13, 0x26, 0x3, 0x11, 0x33, 0x11, 0x14, 0x17, 0x13, 0x33, 0x3, 0x16, 0x37, 0x2, 0x90, 0x54, 0x44, 0x85, 0xBF, 0x96, 0xBC, 0x2, 0xF3, 0x1D, 0xA5, 0xBF, 0xC8, 0x27, 0x31, 0x14, 0xA, 0xFE, 0x6A, 0x1, 0xCB, 0x66, 0x1, 0x2A, 0x4, 0x45, 0xFB, 0xC2, 0x60, 0x3B, 0x1, 0xF9, 0xFD, 0x9C, 0x6, 0x2, 0x0, 0x1, 0x0, 0x7D, 0xFE, 0x60, 0x7, 0xFB, 0x4, 0x4E, 0x0, 0x2C, 0x0, 0x0, 0x5, 0x22, 0x27, 0x3, 0x23, 0x13, 0x26, 0x3, 0x11, 0x26, 0x26, 0x23, 0x22, 0x6, 0x7, 0x11, 0x23, 0x11, 0x34, 0x26, 0x23, 0x22, 0x7, 0x11, 0x23, 0x11, 0x33, 0x17, 0x36, 0x33, 0x32, 0x17, 0x36, 0x33, 0x32, 0x16, 0x17, 0x11, 0x14, 0x17, 0x13, 0x33, 0x3, 0x16, 0x37, 0x7, 0x8B, 0x54, 0x44, 0x85, 0xC0, 0x97, 0xBA, 0x4, 0x1, 0x68, 0x5A, 0x53, 0x69, 0x14, 0xF3, 0x68, 0x5A, 0x93, 0x3D, 0xF2, 0xE4, 0x7, 0x73, 0xC6, 0xD7, 0x51, 0x77, 0xD6, 0xA5, 0xBD, 0x2, 0x1C, 0xA6, 0xBF, 0xC8, 0x27, 0x31, 0x14, 0xA, 0xFE, 0x6A, 0x1, 0xCC, 0x64, 0x1, 0x23, 0x1, 0xB, 0x77, 0x53, 0x5A, 0x48, 0xFD, 0x1A, 0x2, 0xBC, 0x72, 0x5A, 0x78, 0xFC, 0xF0, 0x4, 0x3A, 0x71, 0x85, 0xA5, 0xA5, 0xB6, 0xD2, 0xFE, 0xFA, 0x5F, 0x3B, 0x1, 0xFA, 0xFD, 0x9D, 0x6, 0x2, 0x0, 0x1, 0x0, 0x7A, 0xFE, 0x60, 0x5, 0x79, 0x4, 0x4E, 0x0, 0x1F, 0x0, 0x0, 0x5, 0x22, 0x27, 0x3, 0x23, 0x13, 0x26, 0x3, 0x11, 0x26, 0x26, 0x23, 0x22, 0x7, 0x11, 0x23, 0x11, 0x33, 0x17, 0x36, 0x33, 0x32, 0x16, 0x17, 0x11, 0x14, 0x17, 0x13, 0x33, 0x3, 0x16, 0x37, 0x5, 0xA, 0x55, 0x44, 0x85, 0xBF, 0x96, 0xB8, 0x5, 0x1, 0x60, 0x5E, 0x91, 0x49, 0xF3, 0xE5, 0x8, 0x77, 0xC2, 0x9C, 0xBC, 0x1, 0x1C, 0xA5, 0xBF, 0xC8, 0x28, 0x31, 0x14, 0xA, 0xFE, 0x6A, 0x1, 0xCC, 0x64, 0x1, 0x21, 0x1, 0xD, 0x70, 0x5A, 0x84, 0xFC, 0xFC, 0x4, 0x3A, 0x7C, 0x90, 0xB3, 0xDA, 0xFE, 0xFF, 0x5F, 0x3A, 0x1, 0xF9, 0xFD, 0x9D, 0x6, 0x2, 0x0, 0x1, 0x0, 0x7D, 0x0, 0x0, 0x3, 0x83, 0x5, 0xB, 0x0, 0x13, 0x0, 0x0, 0x1, 0x13, 0x6, 0x7, 0x11, 0x23, 0x11, 0x33, 0x17, 0x36, 0x37, 0x37, 0x33, 0x7, 0x16, 0x17, 0x7, 0x26, 0x27, 0x3, 0x1, 0xC7, 0x65, 0x8B, 0x32, 0xF2, 0xE8, 0x7, 0x5A, 0xB4, 0x3E, 0xBE, 0x44, 0x2D, 0x24, 0x1, 0x60, 0x38, 0x63, 0x2, 0x2B, 0x1, 0x34, 0x14, 0x6B, 0xFD, 0x20, 0x4, 0x3A, 0x86, 0x92, 0x8, 0xBD, 0xD2, 0xB, 0xE, 0xE5, 0x19, 0x7, 0xFE, 0xD0, 0x0, 0x2, 0x0, 0x76, 0xFE, 0x60, 0x5, 0x64, 0x4, 0x3A, 0x0, 0x7, 0x0, 0x1C, 0x0, 0x0, 0x1, 0x11, 0x33, 0x32, 0x36, 0x35, 0x34, 0x27, 0x1, 0x21, 0x3, 0x23, 0x13, 0x1, 0x23, 0x11, 0x23, 0x11, 0x21, 0x32, 0x16, 0x15, 0x14, 0x7, 0x17, 0x13, 0x33, 0x1, 0x33, 0x1, 0x69, 0xC1, 0x6B, 0x6C, 0xCF, 0x3, 0xD, 0xFE, 0xC8, 0xB6, 0xC3, 0xD7, 0xFE, 0xFD, 0xF9, 0xF3, 0x1, 0xB3, 0xD8, 0xF3, 0xD0, 0x98, 0xE9, 0xBF, 0xFE, 0xF7, 0xE4, 0x3, 0x76, 0xFE, 0xD3, 0x58, 0x48, 0x8A, 0x3, 0xFC, 0x8A, 0xFE, 0x60, 0x1, 0xE8, 0x1, 0x3E, 0xFE, 0x7A, 0x4, 0x3A, 0xA3, 0x9B, 0xD8, 0x5A, 0xBD, 0x2, 0x13, 0xFD, 0xA1, 0x0, 0x1, 0x0, 0x8, 0xFF, 0xEC, 0x3, 0xBB, 0x5, 0x41, 0x0, 0x1D, 0x0, 0x0, 0x25, 0x6, 0x23, 0x22, 0x26, 0x35, 0x11, 0x23, 0x35, 0x33, 0x11, 0x33, 0x11, 0x33, 0x37, 0x33, 0x7, 0x33, 0x15, 0x23, 0x3, 0x23, 0x13, 0x23, 0x11, 0x14, 0x16, 0x33, 0x32, 0x37, 0x2, 0x73, 0x46, 0x5A, 0x79, 0x9F, 0xB3, 0xB3, 0xF2, 0xE5, 0x44, 0xBE, 0x44, 0x6B, 0xA5, 0x71, 0xC0, 0x72, 0xAA, 0x40, 0x31, 0x2A, 0x2B, 0x4, 0x18, 0x89, 0xA7, 0x2, 0x6B, 0xB3, 0x1, 0x7, 0xFE, 0xF9, 0xD1, 0xD1, 0xB3, 0xFE, 0xA4, 0x1, 0x5C, 0xFD, 0xA3, 0x49, 0x2B, 0xA, 0x0, 0x2, 0x0, 0x1B, 0x0, 0x0, 0x4, 0x1F, 0x5, 0xC4, 0x0, 0x1F, 0x0, 0x2A, 0x0, 0x0, 0x33, 0x35, 0x21, 0x32, 0x36, 0x35, 0x34, 0x26, 0x27, 0x27, 0x1, 0x21, 0x1, 0x27, 0x26, 0x26, 0x35, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x6, 0x7, 0x16, 0x16, 0x15, 0x14, 0x6, 0x23, 0x13, 0x36, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x14, 0x17, 0x1B, 0x2, 0x22, 0x74, 0x7B, 0x24, 0x50, 0x15, 0xFE, 0xF8, 0xFE, 0xE6, 0x1, 0x75, 0x75, 0x56, 0x6E, 0xC3, 0xA3, 0xAD, 0xD0, 0x4B, 0x40, 0x76, 0x94, 0xFF, 0xDC, 0x20, 0x57, 0x4B, 0x4D, 0x49, 0x52, 0x51, 0xBC, 0x76, 0x60, 0x23, 0x6E, 0x3C, 0xF, 0xFE, 0x9D, 0x1, 0xE1, 0x54, 0x3E, 0x9A, 0x68, 0x83, 0xC1, 0xC2, 0xAD, 0x55, 0x9C, 0x5B, 0x52, 0xAE, 0x7F, 0xB5, 0xD5, 0x3, 0x7E, 0x7F, 0x5B, 0x45, 0x64, 0x56, 0x34, 0x5F, 0x3D, 0x0, 0x2, 0x0, 0x6A, 0xFF, 0xEC, 0x5, 0x1C, 0x6, 0xA3, 0x0, 0x13, 0x0, 0x21, 0x0, 0x0, 0x5, 0x20, 0x0, 0x11, 0x34, 0x12, 0x24, 0x33, 0x32, 0x17, 0x26, 0x27, 0x37, 0x16, 0x4, 0x12, 0x11, 0x15, 0x10, 0x0, 0x25, 0x32, 0x12, 0x35, 0x35, 0x34, 0x27, 0x26, 0x23, 0x22, 0x6, 0x15, 0x14, 0x16, 0x2, 0xC4, 0xFE, 0xF7, 0xFE, 0xAF, 0xA3, 0x1, 0xE, 0xA0, 0x31, 0x36, 0x91, 0xE8, 0x52, 0xDB, 0x1, 0x6C, 0xDA, 0xFE, 0xB7, 0xFE, 0xF1, 0xA5, 0xB5, 0x40, 0x76, 0x92, 0x9A, 0xD4, 0xBF, 0x14, 0x1, 0x66, 0x1, 0x33, 0xDE, 0x1, 0x34, 0xA1, 0x9, 0x75, 0x44, 0xBB, 0x3A, 0xE5, 0xFE, 0x8B, 0xFE, 0xEF, 0x4B, 0xFE, 0xB4, 0xFE, 0x85, 0xD1, 0x1, 0x2, 0xF4, 0x4D, 0xB4, 0x8C, 0x2B, 0xEA, 0xFB, 0xDC, 0xED, 0x0, 0x2, 0x0, 0x50, 0xFF, 0xEB, 0x4, 0x62, 0x5, 0x51, 0x0, 0x13, 0x0, 0x20, 0x0, 0x0, 0x5, 0x22, 0x0, 0x35, 0x34, 0x0, 0x33, 0x32, 0x17, 0x26, 0x24, 0x27, 0x37, 0x16, 0x4, 0x12, 0x15, 0x15, 0x10, 0x0, 0x27, 0x32, 0x36, 0x35, 0x35, 0x26, 0x26, 0x23, 0x22, 0x6, 0x15, 0x14, 0x16, 0x2, 0x55, 0xE6, 0xFE, 0xE1, 0x1, 0x13, 0xDC, 0x8D, 0x71, 0x49, 0xFE, 0xDB, 0x94, 0x4C, 0xD2, 0x1, 0x4A, 0xBF, 0xFE, 0xD3, 0xDC, 0x80, 0x96, 0x20, 0x8D, 0x6E, 0x80, 0x91, 0x91, 0x15, 0x1, 0x1D, 0xCC, 0xE4, 0x1, 0x15, 0x51, 0x90, 0x67, 0x1B, 0xC3, 0x2A, 0xA1, 0xFE, 0xE0, 0xEB, 0x57, 0xFE, 0xFD, 0xFE, 0xCA, 0xC3, 0xDF, 0xA5, 0x70, 0x2C, 0x43, 0xB7, 0x86, 0x70, 0xB6, 0x0, 0x1, 0x0, 0x99, 0xFE, 0x60, 0x4, 0x8B, 0x5, 0xC4, 0x0, 0x12, 0x0, 0x0, 0x21, 0x21, 0x11, 0x23, 0x11, 0x33, 0x15, 0x36, 0x33, 0x20, 0x17, 0x7, 0x26, 0x26, 0x23, 0x22, 0x7, 0x11, 0x21, 0x3, 0xB8, 0xFD, 0xDD, 0xFC, 0xFC, 0xBB, 0xAE, 0x1, 0xA, 0x83, 0x95, 0x30, 0x79, 0x5F, 0xA9, 0xB0, 0x2, 0x23, 0xFE, 0x60, 0x7, 0x50, 0x30, 0x44, 0x92, 0xA1, 0x2F, 0x33, 0x42, 0xFC, 0x19, 0x0, 0x1, 0x0, 0x7D, 0xFE, 0x60, 0x3, 0x37, 0x4, 0x4E, 0x0, 0x11, 0x0, 0x0, 0x21, 0x21, 0x11, 0x23, 0x11, 0x33, 0x17, 0x36, 0x33, 0x32, 0x17, 0x7, 0x26, 0x23, 0x22, 0x7, 0x11, 0x21, 0x3, 0x13, 0xFE, 0x5C, 0xF2, 0xDE, 0xB, 0x6D, 0xB7, 0x62, 0x4B, 0x2, 0x62, 0x59, 0xBF, 0x4C, 0x1, 0xA4, 0xFE, 0x60, 0x5, 0xDA, 0x83, 0x97, 0x1A, 0xE0, 0x20, 0x8E, 0xFD, 0xDD, 0x0, 0x1, 0x0, 0x4A, 0xFF, 0xEC, 0x4, 0xB6, 0x5, 0xB0, 0x0, 0x21, 0x0, 0x0, 0x5, 0x22, 0x24, 0x26, 0x35, 0x33, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x34, 0x26, 0x24, 0x24, 0x35, 0x34, 0x37, 0x23, 0x35, 0x21, 0x15, 0x21, 0x6, 0x15, 0x14, 0x16, 0x17, 0x16, 0x16, 0x15, 0x14, 0x4, 0x2, 0xB0, 0x8C, 0xFE, 0xFA, 0xA8, 0xFD, 0xB7, 0x86, 0x83, 0x86, 0x73, 0xFE, 0x61, 0xFE, 0xFC, 0x3E, 0x97, 0x4, 0x63, 0xFD, 0x4D, 0x5A, 0x95, 0x9A, 0xFB, 0xEC, 0xFE, 0xE6, 0x14, 0x66, 0xCD, 0x99, 0x8A, 0x7A, 0x6C, 0x58, 0x57, 0x69, 0x81, 0xCA, 0xAE, 0x60, 0x54, 0xCB, 0xCB, 0x3B, 0x78, 0x51, 0x6B, 0x2D, 0x49, 0xD9, 0xAD, 0xB8, 0xD6, 0x0, 0x1, 0x0, 0x30, 0xFF, 0xF3, 0x4, 0x9B, 0x5, 0xB7, 0x0, 0x21, 0x0, 0x0, 0x5, 0x21, 0x35, 0x21, 0x36, 0x35, 0x34, 0x26, 0x27, 0x26, 0x26, 0x35, 0x34, 0x24, 0x33, 0x32, 0x4, 0x16, 0x15, 0x23, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x14, 0x16, 0x4, 0x16, 0x15, 0x14, 0x7, 0x33, 0x4, 0x9B, 0xFB, 0x9D, 0x2, 0xB3, 0x5A, 0x98, 0x99, 0xF7, 0xED, 0x1, 0x19, 0xED, 0x8C, 0x1, 0x5, 0xA8, 0xFC, 0xB7, 0x86, 0x84, 0x85, 0x72, 0x1, 0xA7, 0xFC, 0x3D, 0x96, 0xD, 0xCB, 0x3B, 0x78, 0x52, 0x6B, 0x2D, 0x48, 0xD8, 0xAE, 0xB9, 0xD5, 0x66, 0xCC, 0x9A, 0x8A, 0x7A, 0x6C, 0x58, 0x56, 0x6A, 0x84, 0xC8, 0xAD, 0x60, 0x54, 0x0, 0x1, 0x0, 0x42, 0xFE, 0x60, 0x3, 0xE6, 0x4, 0x4E, 0x0, 0x20, 0x0, 0x0, 0x1, 0x21, 0x35, 0x21, 0x36, 0x35, 0x34, 0x26, 0x24, 0x27, 0x26, 0x35, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x23, 0x34, 0x26, 0x23, 0x22, 0x15, 0x14, 0x16, 0x17, 0x16, 0x16, 0x15, 0x14, 0x7, 0x33, 0x3, 0xE6, 0xFC, 0x67, 0x2, 0x19, 0x47, 0x7B, 0xFE, 0xE2, 0x67, 0x6B, 0xE0, 0xC1, 0xCB, 0xE6, 0xF2, 0x60, 0x5F, 0xB4, 0x64, 0x81, 0xC3, 0xC5, 0x33, 0x7D, 0xFE, 0x60, 0xC1, 0x43, 0x73, 0x6C, 0x83, 0x91, 0x63, 0x67, 0xB4, 0xAF, 0xCA, 0xC6, 0x92, 0x3F, 0x63, 0xC2, 0x50, 0x83, 0x41, 0x62, 0xE9, 0x99, 0x66, 0x57, 0xFF, 0xFF, 0x0, 0x2E, 0x0, 0x0, 0x3, 0xC0, 0x5, 0xB0, 0x0, 0xF, 0x0, 0x31, 0x4, 0x55, 0x5, 0xB0, 0xC0, 0x0, 0xFF, 0xFF, 0x0, 0x83, 0xFE, 0x3A, 0x1, 0x76, 0x4, 0x3A, 0x0, 0x7, 0x0, 0x51, 0xFF, 0xF7, 0xFE, 0x3A, 0x0, 0x1, 0x0, 0x95, 0xFE, 0x60, 0x4, 0xF3, 0x5, 0xC4, 0x0, 0x11, 0x0, 0x0, 0x1, 0x22, 0x7, 0x11, 0x23, 0x11, 0x33, 0x15, 0x36, 0x33, 0x32, 0x4, 0x15, 0x11, 0x23, 0x11, 0x34, 0x26, 0x2, 0xEA, 0xA9, 0xB0, 0xFC, 0xFC, 0xBD, 0xAC, 0xE4, 0x1, 0x15, 0xFC, 0x84, 0x4, 0xF3, 0x42, 0xF9, 0xAF, 0x7, 0x50, 0x30, 0x44, 0xD7, 0xF8, 0xFC, 0xB, 0x3, 0xF5, 0x93, 0x6B, 0x0, 0x1, 0x0, 0x7D, 0xFE, 0x60, 0x3, 0xFC, 0x4, 0x4E, 0x0, 0x11, 0x0, 0x0, 0x1, 0x22, 0x7, 0x11, 0x23, 0x11, 0x33, 0x17, 0x36, 0x33, 0x32, 0x16, 0x17, 0x11, 0x23, 0x11, 0x34, 0x26, 0x2, 0x4A, 0x92, 0x49, 0xF2, 0xE4, 0x8, 0x77, 0xC3, 0x9C, 0xBC, 0x1, 0xF3, 0x62, 0x3, 0x88, 0x86, 0xFB, 0x5E, 0x5, 0xDA, 0x7D, 0x91, 0xB3, 0xDA, 0xFD, 0x3F, 0x2, 0xBE, 0x70, 0x5A, 0x0, 0x1, 0x0, 0x95, 0xFE, 0x60, 0x3, 0x6C, 0x5, 0xC4, 0x0, 0xD, 0x0, 0x0, 0x1, 0x22, 0x7, 0x11, 0x23, 0x11, 0x33, 0x15, 0x36, 0x33, 0x32, 0x17, 0x15, 0x26, 0x2, 0xEA, 0xA9, 0xB0, 0xFC, 0xFC, 0xBB, 0xA7, 0x52, 0x27, 0x38, 0x4, 0xF3, 0x42, 0xF9, 0xAF, 0x7, 0x50, 0x30, 0x44, 0xC, 0xD2, 0xD, 0x0, 0x1, 0x0, 0x7D, 0xFE, 0x60, 0x2, 0xB5, 0x4, 0x4E, 0x0, 0xD, 0x0, 0x0, 0x1, 0x22, 0x7, 0x11, 0x23, 0x11, 0x33, 0x17, 0x36, 0x33, 0x32, 0x17, 0x7, 0x26, 0x2, 0x51, 0xA9, 0x39, 0xF2, 0xE8, 0x6, 0x56, 0x9E, 0x31, 0x25, 0x2, 0x32, 0x3, 0x64, 0x80, 0xFB, 0x7C, 0x5, 0xDA, 0x7A, 0x8E, 0xD, 0xE5, 0x8, 0x0, 0x1, 0x0, 0x86, 0xFF, 0xEC, 0x5, 0x10, 0x5, 0xB0, 0x0, 0x18, 0x0, 0x0, 0x1, 0x6, 0x0, 0x20, 0x0, 0x11, 0x35, 0x34, 0x12, 0x37, 0x23, 0x35, 0x21, 0x15, 0x21, 0x22, 0x2, 0x15, 0x15, 0x14, 0x12, 0x33, 0x32, 0x36, 0x37, 0x5, 0xB, 0x13, 0xFE, 0xE4, 0xFD, 0xE8, 0xFE, 0xC2, 0x7F, 0x69, 0xE8, 0x4, 0x8A, 0xFE, 0x13, 0xC1, 0xDE, 0x9C, 0xB0, 0xA3, 0x89, 0x13, 0x1, 0xDA, 0xD4, 0xFE, 0xE6, 0x1, 0x6B, 0x1, 0x31, 0x47, 0xA7, 0x1, 0x16, 0x5A, 0xCA, 0xCA, 0xFE, 0xE1, 0xFE, 0x41, 0xD0, 0xFF, 0x0, 0x97, 0x8B, 0x0, 0x1, 0x0, 0x50, 0xFF, 0xEC, 0x4, 0x6, 0x4, 0x3A, 0x0, 0x19, 0x0, 0x0, 0x1, 0x6, 0x4, 0x23, 0x22, 0x2, 0x35, 0x35, 0x34, 0x36, 0x37, 0x23, 0x35, 0x21, 0x15, 0x21, 0x22, 0x6, 0x15, 0x15, 0x14, 0x16, 0x33, 0x32, 0x36, 0x37, 0x4, 0x4, 0x5, 0xFF, 0x0, 0xB4, 0xFA, 0xF2, 0x54, 0x53, 0xB6, 0x3, 0xB6, 0xFE, 0x6E, 0x82, 0xA1, 0x62, 0x95, 0x59, 0x7A, 0x4, 0x1, 0x66, 0x9D, 0xDD, 0x1, 0x26, 0xC5, 0x23, 0x6E, 0xC7, 0x4A, 0xC1, 0xC1, 0xDD, 0xA4, 0x1C, 0x70, 0xBD, 0x68, 0x4F, 0xFF, 0xFF, 0x0, 0x49, 0xFE, 0x98, 0x2, 0xF8, 0xFF, 0xB8, 0x0, 0x7, 0x1, 0x77, 0xFF, 0xB4, 0xF9, 0xB7, 0x0, 0x2, 0x0, 0x6B, 0x1, 0x7, 0x1, 0x51, 0x4, 0x4E, 0x0, 0xB, 0x0, 0x17, 0x0, 0x0, 0x13, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x6, 0x23, 0x22, 0x26, 0x11, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x6, 0x23, 0x22, 0x26, 0x6B, 0x3C, 0x36, 0x38, 0x3C, 0x3C, 0x38, 0x36, 0x3C, 0x3C, 0x36, 0x38, 0x3C, 0x3C, 0x38, 0x36, 0x3C, 0x3, 0xE1, 0x2F, 0x3E, 0x3E, 0x2F, 0x2E, 0x3D, 0x3D, 0xFD, 0xBF, 0x2F, 0x3E, 0x3E, 0x2F, 0x2E, 0x3D, 0x3D, 0x0, 0x2, 0x0, 0x57, 0x1, 0xC9, 0x2, 0x7A, 0x3, 0x95, 0x0, 0x3, 0x0, 0x7, 0x0, 0x0, 0x1, 0x15, 0x21, 0x35, 0x1, 0x15, 0x21, 0x35, 0x2, 0x7A, 0xFD, 0xDD, 0x2, 0x23, 0xFD, 0xDD, 0x3, 0x95, 0xA3, 0xA3, 0xFE, 0xD8, 0xA4, 0xA4, 0x0, 0x1, 0x0, 0x50, 0x3, 0x4D, 0x1, 0xD, 0x6, 0x18, 0x0, 0x5, 0x0, 0x0, 0x1, 0x15, 0x3, 0x23, 0x3, 0x35, 0x1, 0xD, 0x1D, 0x83, 0x1D, 0x6, 0x18, 0x91, 0xFD, 0xC6, 0x2, 0x3A, 0x91, 0x0, 0x1, 0x0, 0x50, 0x2, 0x93, 0x1, 0xD, 0x4, 0xEC, 0x0, 0x5, 0x0, 0x0, 0x1, 0x15, 0x3, 0x23, 0x3, 0x35, 0x1, 0xD, 0x1D, 0x83, 0x1D, 0x4, 0xEC, 0x91, 0xFE, 0x38, 0x1, 0xC8, 0x91, 0x0, 0x1, 0x0, 0x8E, 0x0, 0x0, 0x4, 0xF1, 0x5, 0xB0, 0x0, 0x9, 0x0, 0x0, 0x21, 0x23, 0x11, 0x21, 0x11, 0x33, 0x11, 0x21, 0x11, 0x33, 0x4, 0xF1, 0xFC, 0xFC, 0x99, 0xFC, 0x2, 0x6B, 0xFC, 0x2, 0x3B, 0x3, 0x75, 0xFD, 0x56, 0x2, 0xAA, 0x0, 0x2, 0x0, 0x28, 0xFF, 0xEC, 0x3, 0xAB, 0x6, 0x0, 0x0, 0x9, 0x0, 0x25, 0x0, 0x0, 0x1, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x14, 0x33, 0x1, 0x6, 0x23, 0x22, 0x26, 0x35, 0x11, 0x23, 0x22, 0x26, 0x35, 0x34, 0x36, 0x33, 0x32, 0x17, 0x11, 0x33, 0x11, 0x33, 0x15, 0x23, 0x11, 0x14, 0x16, 0x33, 0x32, 0x37, 0x1, 0xD8, 0x34, 0x38, 0x29, 0x38, 0x6B, 0x2, 0x35, 0x4A, 0x63, 0x7F, 0xA7, 0x7D, 0x8A, 0xA9, 0xAD, 0x9A, 0x39, 0x30, 0xF3, 0xE0, 0xE0, 0x45, 0x39, 0x30, 0x32, 0x2, 0xE3, 0x4D, 0x30, 0x3F, 0x32, 0x2C, 0x5E, 0xFD, 0x21, 0x18, 0x89, 0xA7, 0x1, 0x13, 0x8E, 0x80, 0x78, 0x99, 0xA, 0x1, 0xBC, 0xFC, 0xE3, 0xB4, 0xFE, 0xFB, 0x49, 0x2B, 0xA, 0xFF, 0xFF, 0x0, 0x95, 0xFE, 0x99, 0x5, 0xDB, 0x5, 0xB0, 0x0, 0x26, 0x0, 0x33, 0x0, 0x0, 0x0, 0x7, 0x7, 0xDB, 0x4, 0x8B, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x7A, 0xFE, 0x99, 0x4, 0xBE, 0x4, 0x4E, 0x0, 0x26, 0x0, 0x53, 0x0, 0x0, 0x0, 0x7, 0x7, 0xDB, 0x3, 0x6E, 0x0, 0x0, 0x0, 0x1, 0x0, 0x14, 0xFF, 0xEC, 0x5, 0x60, 0x5, 0xC4, 0x0, 0x1F, 0x0, 0x0, 0x1, 0x6, 0x0, 0x21, 0x20, 0x0, 0x3, 0x23, 0x35, 0x33, 0x12, 0x0, 0x21, 0x20, 0x0, 0x17, 0x23, 0x26, 0x26, 0x23, 0x22, 0x6, 0x7, 0x33, 0x15, 0x23, 0x16, 0x16, 0x33, 0x32, 0x36, 0x37, 0x5, 0x5F, 0x13, 0xFE, 0xE5, 0xFE, 0xF4, 0xFE, 0xF8, 0xFE, 0xC3, 0x6, 0xC6, 0xC6, 0x9, 0x1, 0x42, 0x1, 0xC, 0x1, 0x5, 0x1, 0x14, 0x16, 0xFC, 0x10, 0x86, 0x9D, 0xA7, 0xAB, 0x6, 0xD9, 0xD9, 0x4, 0x9C, 0xAC, 0xA3, 0x89, 0x12, 0x1, 0xDA, 0xD4, 0xFE, 0xE6, 0x1, 0x69, 0x1, 0x32, 0xAB, 0x1, 0x2D, 0x1, 0x65, 0xFE, 0xE5, 0xDA, 0x8C, 0x9D, 0xEE, 0xD8, 0xAB, 0xD1, 0xFE, 0x97, 0x8B, 0x0, 0x1, 0x0, 0x14, 0xFF, 0xEC, 0x4, 0x72, 0x4, 0x4E, 0x0, 0x1F, 0x0, 0x0, 0x1, 0x6, 0x4, 0x23, 0x22, 0x2, 0x27, 0x23, 0x35, 0x33, 0x36, 0x12, 0x33, 0x32, 0x16, 0x17, 0x23, 0x26, 0x26, 0x23, 0x22, 0x6, 0x7, 0x33, 0x15, 0x23, 0x16, 0x16, 0x33, 0x32, 0x36, 0x37, 0x4, 0x72, 0x5, 0xFF, 0x0, 0xB4, 0xEA, 0xF2, 0xF, 0xBA, 0xBC, 0x13, 0xF2, 0xE3, 0xC5, 0xF0, 0x5, 0xE5, 0x5, 0x70, 0x63, 0x7E, 0x6A, 0xA, 0xEF, 0xF1, 0x8, 0x68, 0x85, 0x59, 0x79, 0x5, 0x1, 0x66, 0x9D, 0xDD, 0x1, 0x1A, 0xCA, 0xAB, 0xC4, 0x1, 0xF, 0xE4, 0xB3, 0x57, 0x7D, 0xA4, 0x6C, 0xAB, 0x73, 0xAE, 0x68, 0x4F, 0x0, 0x1, 0x0, 0x50, 0xFE, 0x52, 0x3, 0xF5, 0x4, 0x4E, 0x0, 0x27, 0x0, 0x0, 0x1, 0x22, 0x27, 0x35, 0x16, 0x33, 0x32, 0x36, 0x35, 0x35, 0x6, 0x23, 0x22, 0x2, 0x35, 0x35, 0x34, 0x12, 0x33, 0x32, 0x16, 0x17, 0x23, 0x26, 0x26, 0x23, 0x22, 0x6, 0x15, 0x15, 0x14, 0x16, 0x33, 0x32, 0x36, 0x37, 0x33, 0x11, 0x14, 0x6, 0x2, 0xB8, 0x3C, 0x33, 0x1D, 0x23, 0x44, 0x60, 0x6D, 0x84, 0xFA, 0xF2, 0xF3, 0xF9, 0xC5, 0xF0, 0x4, 0xE4, 0x5, 0x70, 0x63, 0x94, 0x63, 0x62, 0x96, 0x58, 0x7A, 0x5, 0xE4, 0xB6, 0xFE, 0x52, 0xF, 0xA3, 0x7, 0x3F, 0x56, 0x99, 0x3F, 0x1, 0x40, 0xDF, 0x24, 0xDE, 0x1, 0x41, 0xE4, 0xB3, 0x57, 0x7D, 0xDB, 0x81, 0x24, 0x83, 0xD9, 0x68, 0x4F, 0xFE, 0x2C, 0x9B, 0xA5, 0x0, 0x1, 0x0, 0x7A, 0xFE, 0x4B, 0x4, 0xB2, 0x6, 0x0, 0x0, 0x1E, 0x0, 0x0, 0x1, 0x22, 0x27, 0x35, 0x16, 0x33, 0x32, 0x37, 0x35, 0x23, 0x11, 0x34, 0x26, 0x23, 0x22, 0x7, 0x11, 0x23, 0x11, 0x33, 0x11, 0x36, 0x33, 0x32, 0x16, 0x17, 0x11, 0x33, 0x11, 0x14, 0x6, 0x3, 0x5F, 0x40, 0x36, 0x23, 0x21, 0x90, 0x2, 0xB9, 0x62, 0x5D, 0x93, 0x48, 0xF2, 0xF2, 0x76, 0xB7, 0x9F, 0xC0, 0x1, 0xB9, 0xC1, 0xFE, 0x4B, 0x10, 0xB0, 0x8, 0x99, 0x64, 0x2, 0xBB, 0x71, 0x5C, 0x83, 0xFC, 0xFB, 0x6, 0x0, 0xFD, 0xC3, 0x8B, 0xB6, 0xDA, 0xFE, 0xD, 0xFE, 0xD5, 0xA5, 0xB0, 0x0, 0x3, 0x0, 0x28, 0x0, 0x0, 0x5, 0xB9, 0x5, 0xB0, 0x0, 0x7, 0x0, 0xF, 0x0, 0x2B, 0x0, 0x0, 0x1, 0x11, 0x33, 0x32, 0x36, 0x35, 0x34, 0x27, 0x1, 0x11, 0x21, 0x32, 0x36, 0x35, 0x34, 0x27, 0x1, 0x11, 0x23, 0x22, 0x6, 0x15, 0x14, 0x17, 0x23, 0x26, 0x35, 0x34, 0x36, 0x33, 0x11, 0x21, 0x32, 0x4, 0x15, 0x14, 0x6, 0x7, 0x16, 0x16, 0x15, 0x14, 0x4, 0x23, 0x2, 0xA8, 0xF8, 0x76, 0x85, 0xF2, 0xFE, 0xFF, 0x1, 0x19, 0x7D, 0x7F, 0xE7, 0xFD, 0xD5, 0xD, 0x67, 0x44, 0x10, 0xBF, 0x1C, 0xD9, 0xAA, 0x1, 0xF2, 0xEE, 0x1, 0xC, 0x6C, 0x67, 0x7D, 0x78, 0xFE, 0xF4, 0xEC, 0x4, 0xE5, 0xFE, 0x67, 0x6B, 0x61, 0xC8, 0x5, 0xFD, 0xAC, 0xFE, 0x39, 0x7C, 0x64, 0xE2, 0x5, 0xFD, 0x6F, 0x2, 0x92, 0x70, 0x5D, 0x4D, 0x4B, 0x4A, 0x7A, 0xBF, 0x9C, 0x2, 0x64, 0xBE, 0xCC, 0x63, 0xA1, 0x2B, 0x21, 0xBB, 0x72, 0xD0, 0xD9, 0x0, 0x2, 0x0, 0x42, 0xFF, 0x7F, 0x5, 0x54, 0x6, 0x0, 0x0, 0xA, 0x0, 0x27, 0x0, 0x0, 0x25, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x22, 0x7, 0x11, 0x16, 0x5, 0x14, 0x17, 0x23, 0x26, 0x26, 0x35, 0x34, 0x12, 0x37, 0x11, 0x33, 0x11, 0x36, 0x33, 0x32, 0x12, 0x15, 0x15, 0x14, 0x2, 0x23, 0x22, 0x27, 0x7, 0x23, 0x11, 0x6, 0x6, 0x3, 0x71, 0x87, 0x69, 0x66, 0x8C, 0x7C, 0x62, 0x44, 0xFE, 0x3B, 0x1F, 0xC9, 0xC, 0x18, 0xD6, 0x86, 0xF3, 0x7B, 0xA1, 0xD1, 0xD6, 0xD7, 0xCE, 0xBD, 0x6C, 0xC, 0xDC, 0x55, 0x39, 0xB3, 0xCA, 0xAA, 0x8F, 0xD2, 0x50, 0xFE, 0x8, 0x8D, 0x44, 0x6B, 0x85, 0x1F, 0x90, 0x4A, 0xFA, 0x1, 0x69, 0x7A, 0x2, 0xAB, 0xFE, 0x0, 0x4E, 0xFE, 0xCD, 0xF4, 0x15, 0xEF, 0xFE, 0xC9, 0x89, 0x75, 0x2, 0x50, 0x76, 0xF6, 0x0, 0x1, 0x0, 0x1B, 0xFE, 0x4B, 0x4, 0xE5, 0x5, 0xB0, 0x0, 0x16, 0x0, 0x0, 0x13, 0x22, 0x27, 0x35, 0x16, 0x33, 0x32, 0x37, 0x11, 0x21, 0x35, 0x21, 0x11, 0x21, 0x15, 0x21, 0x11, 0x21, 0x15, 0x21, 0x11, 0x14, 0x6, 0xF2, 0x46, 0x3A, 0x23, 0x21, 0x91, 0x1, 0xFE, 0xD3, 0x1, 0x2D, 0x3, 0x9D, 0xFD, 0x60, 0x2, 0x49, 0xFD, 0xB7, 0xC1, 0xFE, 0x4B, 0x10, 0xB0, 0x8, 0x9B, 0x2, 0xCB, 0xCA, 0x2, 0x7D, 0xCB, 0xFE, 0x4E, 0xCA, 0xFD, 0x37, 0xAD, 0xA8, 0x0, 0x1, 0x0, 0x2D, 0x0, 0x0, 0x2, 0xD7, 0x6, 0x15, 0x0, 0x1C, 0x0, 0x0, 0x1, 0x23, 0x11, 0x23, 0x11, 0x23, 0x35, 0x33, 0x35, 0x23, 0x35, 0x33, 0x35, 0x34, 0x36, 0x33, 0x32, 0x17, 0x7, 0x26, 0x23, 0x22, 0x7, 0x15, 0x33, 0x15, 0x23, 0x15, 0x33, 0x2, 0xA1, 0xDB, 0xF4, 0xA5, 0xA5, 0xA5, 0xA5, 0xCC, 0xB0, 0x43, 0x46, 0x6, 0x2A, 0x34, 0xAB, 0x2, 0xDB, 0xDB, 0xDB, 0x2, 0x0, 0xFE, 0x0, 0x2, 0x0, 0xB4, 0xD3, 0xB3, 0x67, 0xB5, 0xBF, 0x12, 0xBE, 0x8, 0xA8, 0x6B, 0xB3, 0xD3, 0x0, 0x2, 0x0, 0x58, 0xFF, 0xEB, 0x4, 0xFC, 0x5, 0xC3, 0x0, 0x19, 0x0, 0x2E, 0x0, 0x0, 0x5, 0x22, 0x27, 0x6, 0x23, 0x22, 0x24, 0x35, 0x34, 0x37, 0x26, 0x26, 0x35, 0x34, 0x24, 0x33, 0x32, 0x17, 0x35, 0x33, 0x11, 0x16, 0x33, 0x37, 0x17, 0x6, 0x25, 0x32, 0x36, 0x35, 0x11, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x14, 0x16, 0x33, 0x33, 0x15, 0x23, 0x4, 0x15, 0x14, 0x16, 0x4, 0x79, 0x80, 0x3B, 0x78, 0xC8, 0xF0, 0xFE, 0xCA, 0xFC, 0x6B, 0x7A, 0x1, 0x1F, 0xF0, 0x96, 0x70, 0xFC, 0x3, 0x46, 0x1B, 0x18, 0x38, 0xFD, 0xBA, 0x7F, 0x87, 0x98, 0x6E, 0x8E, 0x85, 0x79, 0x8A, 0x44, 0x52, 0xFE, 0xF5, 0x9B, 0x15, 0x62, 0x62, 0xDF, 0xCD, 0xFE, 0x56, 0x31, 0xA6, 0x62, 0xCE, 0xD1, 0x42, 0x2F, 0xFB, 0x84, 0x7B, 0x4, 0xB3, 0x1F, 0xC7, 0x84, 0x5E, 0x2, 0x9A, 0x5C, 0x6E, 0x7C, 0x59, 0x5E, 0x7C, 0xC7, 0x6, 0xE5, 0x61, 0x84, 0x0, 0x2, 0x0, 0x53, 0xFF, 0xEB, 0x4, 0x39, 0x4, 0x4D, 0x0, 0x19, 0x0, 0x2D, 0x0, 0x0, 0x5, 0x22, 0x27, 0x6, 0x23, 0x22, 0x26, 0x35, 0x34, 0x37, 0x26, 0x35, 0x34, 0x36, 0x33, 0x32, 0x17, 0x35, 0x33, 0x11, 0x16, 0x33, 0x32, 0x37, 0x17, 0x6, 0x25, 0x32, 0x36, 0x37, 0x11, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x14, 0x17, 0x33, 0x15, 0x23, 0x6, 0x15, 0x14, 0x16, 0x3, 0xBA, 0x73, 0x3C, 0x5F, 0xA4, 0xBF, 0xF6, 0xB9, 0xA6, 0xDD, 0xAC, 0x7B, 0x60, 0xF3, 0x3, 0x46, 0x14, 0x6, 0x19, 0x33, 0xFE, 0x2, 0x59, 0x61, 0x8, 0x74, 0x5C, 0x58, 0x49, 0x9F, 0x35, 0x30, 0xB7, 0x5E, 0x15, 0x50, 0x4F, 0xAC, 0x9A, 0xBA, 0x41, 0x4C, 0x99, 0x9A, 0xA1, 0x2E, 0x1B, 0xFC, 0xFA, 0x7B, 0x5, 0xB4, 0x1F, 0xBB, 0x4F, 0x36, 0x1, 0xDC, 0x3E, 0x4D, 0x57, 0x34, 0x83, 0x3, 0xB0, 0x2, 0x92, 0x3A, 0x5D, 0x0, 0x2, 0x0, 0x58, 0xFF, 0xEC, 0x4, 0xDA, 0x5, 0xC4, 0x0, 0x11, 0x0, 0x26, 0x0, 0x0, 0x5, 0x22, 0x24, 0x35, 0x34, 0x37, 0x26, 0x26, 0x35, 0x34, 0x24, 0x33, 0x20, 0x0, 0x11, 0x15, 0x10, 0x0, 0x25, 0x32, 0x12, 0x35, 0x35, 0x34, 0x2, 0x23, 0x22, 0x6, 0x15, 0x14, 0x16, 0x33, 0x33, 0x15, 0x23, 0x4, 0x15, 0x14, 0x16, 0x2, 0x77, 0xEE, 0xFE, 0xCF, 0xF9, 0x6A, 0x79, 0x1, 0x1E, 0xF1, 0x1, 0xD, 0x1, 0x50, 0xFE, 0xB0, 0xFE, 0xEA, 0xAD, 0xBB, 0xBC, 0xA7, 0x8E, 0x80, 0x78, 0x8A, 0x3A, 0x47, 0xFE, 0xF5, 0x96, 0x14, 0xDF, 0xCD, 0xFC, 0x57, 0x30, 0xA5, 0x64, 0xCC, 0xD4, 0xFE, 0x84, 0xFE, 0xB4, 0x49, 0xFE, 0xB4, 0xFE, 0x85, 0xCB, 0x1, 0x7, 0xF5, 0x4B, 0xF5, 0x1, 0x5, 0x7F, 0x57, 0x61, 0x78, 0xC6, 0x6, 0xE5, 0x61, 0x80, 0x0, 0x2, 0x0, 0x4F, 0xFF, 0xEC, 0x3, 0xEF, 0x4, 0x4E, 0x0, 0x13, 0x0, 0x24, 0x0, 0x0, 0x25, 0x32, 0x36, 0x35, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x14, 0x17, 0x33, 0x15, 0x23, 0x6, 0x15, 0x14, 0x16, 0x17, 0x22, 0x26, 0x35, 0x34, 0x37, 0x26, 0x35, 0x34, 0x36, 0x33, 0x32, 0x0, 0x15, 0x15, 0x14, 0x0, 0x1, 0xF9, 0x87, 0x7D, 0x7D, 0x89, 0x52, 0x50, 0x9F, 0x35, 0x30, 0xB7, 0x59, 0x5E, 0xBE, 0xEC, 0xB9, 0xA6, 0xE1, 0xB4, 0xEF, 0x1, 0x9, 0xFE, 0xF7, 0xAF, 0xD2, 0x91, 0x15, 0x8F, 0xD5, 0x50, 0x34, 0x83, 0x3, 0xB0, 0x2, 0x8E, 0x3D, 0x55, 0xC3, 0xAC, 0x9A, 0xBA, 0x41, 0x4C, 0x99, 0x9A, 0xA2, 0xFE, 0xC5, 0xEC, 0x15, 0xEB, 0xFE, 0xC5, 0x0, 0x1, 0x0, 0x44, 0xFF, 0xEC, 0x4, 0x86, 0x5, 0xB0, 0x0, 0x1B, 0x0, 0x0, 0x5, 0x22, 0x24, 0x35, 0x34, 0x36, 0x37, 0x1, 0x35, 0x21, 0x1, 0x33, 0x17, 0x23, 0x6, 0x6, 0x15, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x11, 0x33, 0x11, 0x14, 0x2, 0x2, 0x8C, 0xFA, 0xFE, 0xEF, 0x8E, 0x7E, 0xFE, 0xB7, 0x1, 0xE, 0x1, 0x28, 0x6C, 0x2, 0x61, 0x84, 0x86, 0x81, 0x8E, 0x90, 0x6E, 0xFC, 0xFB, 0x14, 0xEE, 0xD6, 0x8F, 0xC7, 0x34, 0x2, 0x69, 0xD, 0xFD, 0xC2, 0xCC, 0x1, 0x87, 0x65, 0x6F, 0x8E, 0xB3, 0x8B, 0x3, 0xB6, 0xFC, 0x4A, 0xEB, 0xFE, 0xDD, 0x0, 0x1, 0x0, 0x27, 0xFF, 0xEC, 0x3, 0xE0, 0x4, 0x3A, 0x0, 0x19, 0x0, 0x0, 0x5, 0x22, 0x26, 0x35, 0x34, 0x37, 0x1, 0x33, 0x13, 0x33, 0x15, 0x23, 0x22, 0x6, 0x15, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x11, 0x33, 0x11, 0x14, 0x6, 0x2, 0xD, 0xCE, 0xE8, 0xD0, 0xFF, 0x0, 0xFD, 0xEB, 0x68, 0x77, 0x5E, 0x57, 0x5C, 0x61, 0x77, 0x6F, 0xF2, 0xED, 0x14, 0xC5, 0x95, 0xD4, 0x57, 0x1, 0xC9, 0xFE, 0x5E, 0xB4, 0x61, 0x38, 0x39, 0x65, 0x8C, 0x5B, 0x2, 0xA6, 0xFD, 0x5A, 0xB6, 0xF2, 0x0, 0x1, 0x0, 0x14, 0xFF, 0xEC, 0x6, 0x5, 0x5, 0xC4, 0x0, 0x25, 0x0, 0x0, 0x25, 0x6, 0x6, 0x23, 0x22, 0x0, 0x3, 0x7, 0x35, 0x37, 0x35, 0x12, 0x0, 0x21, 0x20, 0x0, 0x17, 0x23, 0x26, 0x26, 0x23, 0x22, 0x2, 0x7, 0x15, 0x25, 0x15, 0x5, 0x16, 0x16, 0x33, 0x32, 0x36, 0x37, 0x35, 0x21, 0x35, 0x21, 0x5, 0x40, 0x2E, 0xF5, 0xF5, 0xF3, 0xFE, 0xB5, 0x26, 0xB0, 0xA6, 0x4, 0x1, 0x3E, 0x1, 0x16, 0x1, 0xB, 0x1, 0x9, 0x1A, 0xF8, 0x13, 0x89, 0x95, 0xB1, 0xAC, 0x1, 0x4, 0x4C, 0xFB, 0xB8, 0x12, 0xC3, 0x9F, 0x83, 0x76, 0x1B, 0xFE, 0xD4, 0x2, 0x27, 0xBE, 0x3D, 0x95, 0x1, 0x20, 0x1, 0xA, 0x28, 0x90, 0x26, 0x73, 0x1, 0x46, 0x1, 0x67, 0xFE, 0xFA, 0xCB, 0x71, 0x95, 0xFE, 0xFF, 0xEA, 0x30, 0xFC, 0x90, 0xFB, 0xC6, 0xD3, 0x3C, 0x1C, 0x80, 0xBF, 0x0, 0x3, 0x0, 0x14, 0xFE, 0x56, 0x5, 0x2D, 0x4, 0x4E, 0x0, 0x7, 0x0, 0xE, 0x0, 0x31, 0x0, 0x0, 0x1, 0x25, 0x35, 0x26, 0x23, 0x22, 0x6, 0x15, 0x13, 0x32, 0x37, 0x35, 0x5, 0x16, 0x16, 0x13, 0x22, 0x26, 0x27, 0x37, 0x16, 0x33, 0x32, 0x36, 0x35, 0x35, 0x6, 0x23, 0x22, 0x26, 0x27, 0x7, 0x35, 0x37, 0x26, 0x35, 0x34, 0x12, 0x33, 0x32, 0x17, 0x37, 0x33, 0x11, 0x37, 0x15, 0x7, 0x11, 0x14, 0x4, 0x1, 0xA3, 0x1, 0xD5, 0x43, 0x95, 0x84, 0x79, 0xFB, 0x95, 0x45, 0xFE, 0x3F, 0x19, 0x71, 0x3F, 0x59, 0xF3, 0x48, 0x73, 0x6F, 0xA4, 0x79, 0x8D, 0x6A, 0xAE, 0x95, 0xD0, 0x2D, 0xBA, 0xA0, 0x4, 0xE9, 0xC9, 0xBA, 0x69, 0xA, 0xDC, 0xC2, 0xC2, 0xFE, 0xEF, 0x2, 0x0, 0x7C, 0x90, 0x7C, 0xD0, 0x92, 0xFE, 0x8D, 0x7F, 0xB9, 0x77, 0x56, 0x6B, 0xFD, 0xA3, 0x51, 0x62, 0x91, 0x85, 0x85, 0x7F, 0x49, 0x76, 0xB5, 0x95, 0x31, 0x91, 0x2A, 0x28, 0x3E, 0xF7, 0x1, 0x31, 0x7F, 0x6B, 0xFE, 0x83, 0x33, 0x91, 0x33, 0xFD, 0xF2, 0xDB, 0xED, 0x0, 0x2, 0x0, 0x14, 0x0, 0x0, 0x5, 0x4B, 0x5, 0xB0, 0x0, 0x3, 0x0, 0x18, 0x0, 0x0, 0x1, 0x25, 0x27, 0x7, 0x1, 0x3, 0x5, 0x15, 0x23, 0x35, 0x7, 0x35, 0x37, 0x11, 0x33, 0x11, 0x37, 0x1, 0x21, 0x1, 0x13, 0x25, 0x15, 0x5, 0x1, 0x1, 0xC4, 0x1, 0x15, 0x6F, 0xA6, 0x2, 0x5B, 0xF2, 0xFE, 0x97, 0xFC, 0xB4, 0xB4, 0xFC, 0x8D, 0x1, 0xA9, 0x1, 0x33, 0xFD, 0xE3, 0xC2, 0x1, 0x66, 0xFE, 0xEF, 0x1, 0x24, 0x1, 0x8B, 0x4A, 0xA1, 0xB0, 0xFE, 0x3A, 0x1, 0x5D, 0x61, 0xFC, 0xB9, 0x30, 0x8F, 0x30, 0x4, 0x68, 0xFD, 0x54, 0xAE, 0x1, 0xFE, 0xFD, 0x7C, 0xFE, 0xEC, 0x5F, 0x8F, 0x49, 0xFE, 0x61, 0x0, 0x2, 0x0, 0x14, 0x0, 0x0, 0x4, 0x84, 0x6, 0x0, 0x0, 0x3, 0x0, 0x18, 0x0, 0x0, 0x1, 0x37, 0x27, 0x7, 0x1, 0x27, 0x5, 0x15, 0x23, 0x35, 0x7, 0x35, 0x37, 0x11, 0x33, 0x11, 0x37, 0x1, 0x21, 0x1, 0x17, 0x25, 0x15, 0x7, 0x13, 0x1, 0xBD, 0xAC, 0x3F, 0x6D, 0x1, 0xAD, 0xAD, 0xFF, 0x0, 0xF3, 0xB6, 0xB6, 0xF3, 0x4D, 0x1, 0x2A, 0x1, 0x25, 0xFE, 0x6D, 0x8B, 0x1, 0x27, 0xD1, 0xDD, 0x1, 0x48, 0x2D, 0x5D, 0x70, 0xFE, 0x9E, 0xFB, 0x44, 0xB7, 0x76, 0x30, 0x91, 0x30, 0x4, 0xF9, 0xFC, 0x8A, 0x60, 0x1, 0x50, 0xFE, 0x3E, 0xC5, 0x4E, 0x90, 0x38, 0xFE, 0xC7, 0x0, 0x3, 0x0, 0x14, 0x0, 0x0, 0x6, 0xD, 0x5, 0xB0, 0x0, 0x2, 0x0, 0x5, 0x0, 0x19, 0x0, 0x0, 0x1, 0x11, 0x37, 0x1, 0x11, 0x7, 0x13, 0x1, 0x5, 0x11, 0x23, 0x11, 0x7, 0x35, 0x37, 0x11, 0x33, 0x1, 0x37, 0x11, 0x33, 0x11, 0x37, 0x15, 0x7, 0x11, 0x1, 0xC6, 0xC4, 0x1, 0xC7, 0x96, 0x94, 0xFE, 0x89, 0xFE, 0xEE, 0xFD, 0xB5, 0xB5, 0xFD, 0x1, 0xA8, 0xE3, 0xFB, 0xC1, 0xC1, 0x4, 0x9, 0xFE, 0x93, 0x35, 0xFE, 0xD3, 0x1, 0x16, 0x28, 0xFD, 0x6E, 0x2, 0x55, 0x49, 0xFD, 0xF4, 0x1, 0xC8, 0x30, 0x90, 0x30, 0x3, 0x58, 0xFD, 0x5D, 0x3D, 0x2, 0x66, 0xFD, 0xDD, 0x34, 0x90, 0x34, 0xFD, 0x3, 0x0, 0x2, 0x0, 0x14, 0x0, 0x0, 0x5, 0x2D, 0x4, 0x4E, 0x0, 0x7, 0x0, 0x1C, 0x0, 0x0, 0x1, 0x22, 0x7, 0x15, 0x25, 0x35, 0x34, 0x26, 0x13, 0x11, 0x5, 0x11, 0x23, 0x11, 0x7, 0x35, 0x37, 0x11, 0x33, 0x17, 0x36, 0x33, 0x32, 0x16, 0x17, 0x37, 0x15, 0x7, 0x11, 0x2, 0xA5, 0x91, 0x49, 0x1, 0x99, 0x61, 0x61, 0xFE, 0x67, 0xF3, 0xC4, 0xC4, 0xE5, 0x8, 0x77, 0xC3, 0x9A, 0xBC, 0x2, 0xD6, 0xD6, 0x3, 0x88, 0x84, 0xED, 0x6D, 0x3A, 0x70, 0x5A, 0xFC, 0x78, 0x1, 0xF6, 0x6C, 0xFE, 0x76, 0x1, 0x49, 0x34, 0x8E, 0x34, 0x2, 0x63, 0x7D, 0x91, 0xB2, 0xD8, 0x39, 0x8D, 0x39, 0xFD, 0xC9, 0x0, 0x3, 0x0, 0x14, 0x0, 0x0, 0x5, 0x73, 0x5, 0xB0, 0x0, 0x4, 0x0, 0xA, 0x0, 0x20, 0x0, 0x0, 0x1, 0x15, 0x25, 0x26, 0x27, 0x5, 0x5, 0x15, 0x21, 0x32, 0x36, 0x13, 0x1, 0x21, 0x11, 0x23, 0x11, 0x7, 0x35, 0x37, 0x11, 0x21, 0x20, 0x17, 0x37, 0x15, 0x7, 0x17, 0x14, 0x6, 0x7, 0x1, 0x15, 0x1, 0xC8, 0x1, 0xF8, 0x3D, 0xB2, 0x1, 0xB, 0xFD, 0xEC, 0x1, 0x3, 0x89, 0x88, 0x2A, 0xFE, 0xDC, 0xFE, 0xE6, 0xFD, 0xB7, 0xB7, 0x2, 0x0, 0x1, 0x84, 0x68, 0xBC, 0x9D, 0x2, 0x8E, 0x7D, 0x1, 0x47, 0x4, 0xE5, 0xFC, 0x86, 0x74, 0x2, 0xFA, 0x8E, 0x61, 0x88, 0xFC, 0x7C, 0x2, 0x31, 0xFD, 0xCF, 0x3, 0x19, 0x31, 0x8C, 0x31, 0x2, 0xB, 0xFE, 0x32, 0x8C, 0x2A, 0x35, 0x92, 0xC6, 0x34, 0xFD, 0xA0, 0xD, 0x0, 0x1, 0x0, 0x15, 0x0, 0x0, 0x3, 0x13, 0x4, 0x4E, 0x0, 0x15, 0x0, 0x0, 0x1, 0x5, 0x11, 0x23, 0x11, 0x7, 0x35, 0x37, 0x11, 0x33, 0x17, 0x36, 0x33, 0x32, 0x17, 0x7, 0x26, 0x23, 0x22, 0x7, 0x15, 0x25, 0x3, 0x7, 0xFE, 0xC7, 0xF3, 0xC6, 0xC6, 0xE8, 0x7, 0x57, 0x9C, 0x31, 0x25, 0x1, 0x33, 0x30, 0xA7, 0x3A, 0x1, 0x39, 0x1, 0xDE, 0x53, 0xFE, 0x75, 0x1, 0x4A, 0x35, 0x8C, 0x35, 0x2, 0x64, 0x79, 0x8D, 0xD, 0xE5, 0x8, 0x7F, 0xCE, 0x53, 0x0, 0x1, 0x0, 0x14, 0xFF, 0xEC, 0x5, 0x7F, 0x5, 0xC4, 0x0, 0x2D, 0x0, 0x0, 0x5, 0x22, 0x24, 0x26, 0x35, 0x33, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x34, 0x26, 0x27, 0x27, 0x5, 0x35, 0x25, 0x26, 0x26, 0x35, 0x34, 0x24, 0x33, 0x32, 0x0, 0x15, 0x23, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x14, 0x16, 0x17, 0x17, 0x25, 0x15, 0x5, 0x4, 0x15, 0x14, 0x4, 0x2, 0xE0, 0x8B, 0xFE, 0xFA, 0xA8, 0xFC, 0xB8, 0x85, 0x84, 0x85, 0x7A, 0xC0, 0x48, 0xFD, 0xAD, 0x1, 0x91, 0x61, 0x70, 0x1, 0x1D, 0xE7, 0xF7, 0x1, 0x16, 0xFC, 0x86, 0x8E, 0x85, 0x7F, 0x99, 0x9C, 0x5, 0x2, 0x74, 0xFE, 0x63, 0x1, 0x4, 0xFE, 0xE7, 0x14, 0x66, 0xCD, 0x99, 0x8A, 0x7A, 0x6C, 0x58, 0x5A, 0x6A, 0x3A, 0x18, 0xA0, 0x8C, 0x6C, 0x3A, 0xA0, 0x71, 0xB0, 0xE3, 0xFE, 0xF9, 0xB6, 0x6B, 0x89, 0x73, 0x56, 0x52, 0x6C, 0x2D, 0x1, 0xA8, 0x8C, 0x6F, 0x82, 0xF7, 0xB8, 0xD6, 0x0, 0x1, 0x0, 0x14, 0xFF, 0xEC, 0x4, 0xBF, 0x4, 0x4E, 0x0, 0x2A, 0x0, 0x0, 0x5, 0x22, 0x26, 0x35, 0x33, 0x16, 0x16, 0x33, 0x32, 0x36, 0x35, 0x34, 0x26, 0x27, 0x27, 0x5, 0x35, 0x25, 0x26, 0x35, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x23, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x14, 0x16, 0x17, 0x25, 0x15, 0x5, 0x16, 0x15, 0x14, 0x6, 0x2, 0x6D, 0xDE, 0xEA, 0xEB, 0x5, 0x8B, 0x50, 0x60, 0x64, 0x55, 0x96, 0x24, 0xFD, 0xEF, 0x1, 0x3D, 0x89, 0xE1, 0xC1, 0xCB, 0xE6, 0xF2, 0x60, 0x5F, 0x5C, 0x58, 0x55, 0x9B, 0x2, 0x19, 0xFE, 0xCA, 0x9A, 0xEE, 0x14, 0xE4, 0x86, 0x64, 0x50, 0x4A, 0x3A, 0x35, 0x4D, 0x1F, 0x8, 0x8C, 0x8A, 0x54, 0x54, 0x91, 0x85, 0xC3, 0xC6, 0x92, 0x3F, 0x63, 0x52, 0x36, 0x33, 0x40, 0x22, 0x8E, 0x8A, 0x52, 0x55, 0xA4, 0x90, 0xB8, 0x0, 0x1, 0x0, 0x1B, 0x0, 0x0, 0x5, 0xF4, 0x5, 0xB0, 0x0, 0x17, 0x0, 0x0, 0x21, 0x11, 0x21, 0x11, 0x23, 0x11, 0x23, 0x22, 0x6, 0x15, 0x14, 0x17, 0x23, 0x26, 0x35, 0x34, 0x36, 0x37, 0x21, 0x11, 0x21, 0x11, 0x33, 0x11, 0x4, 0xF8, 0xFD, 0x75, 0xFC, 0x17, 0x55, 0x40, 0x7, 0xA2, 0xF, 0x94, 0xA7, 0x1, 0x17, 0x2, 0x8B, 0xFC, 0x2, 0x88, 0xFD, 0x78, 0x4, 0xF4, 0x5C, 0x41, 0x1B, 0x25, 0x33, 0x4F, 0x79, 0x9D, 0x1, 0xFD, 0xA2, 0x2, 0x5E, 0xFA, 0x50, 0xFF, 0xFF, 0x0, 0x49, 0xFF, 0xEC, 0x4, 0x7F, 0x5, 0xC4, 0x0, 0x6, 0x2, 0x71, 0x0, 0x0, 0x0, 0x2, 0x0, 0x66, 0xFE, 0x4C, 0x4, 0xF6, 0x5, 0xC4, 0x0, 0xC, 0x0, 0x26, 0x0, 0x0, 0x25, 0x32, 0x36, 0x37, 0x11, 0x26, 0x23, 0x22, 0x6, 0x7, 0x15, 0x14, 0x12, 0x13, 0x22, 0x26, 0x27, 0x37, 0x16, 0x33, 0x20, 0x37, 0x35, 0x6, 0x23, 0x20, 0x0, 0x11, 0x35, 0x10, 0x0, 0x21, 0x32, 0x17, 0x37, 0x33, 0x11, 0x14, 0x4, 0x2, 0xB1, 0x68, 0xAB, 0x36, 0x6F, 0xCE, 0xAB, 0xAC, 0x1, 0x9B, 0xC9, 0x81, 0xF6, 0x5E, 0x79, 0xA4, 0xB6, 0x1, 0x2D, 0x6, 0x88, 0xC1, 0xFE, 0xF3, 0xFE, 0xC2, 0x1, 0x44, 0x1, 0x13, 0xC8, 0x8D, 0xC, 0xD8, 0xFE, 0xDC, 0xB8, 0x4C, 0x39, 0x3, 0x4A, 0x71, 0xFA, 0xE4, 0x7D, 0xDA, 0xFE, 0xF5, 0xFD, 0x94, 0x55, 0x62, 0x98, 0x86, 0xFA, 0x3A, 0x5D, 0x1, 0x76, 0x1, 0x3B, 0x76, 0x1, 0x3A, 0x1, 0x77, 0x68, 0x54, 0xFA, 0x6E, 0xDD, 0xF5, 0x0, 0x2, 0x0, 0x28, 0x0, 0x0, 0x5, 0x65, 0x5, 0xB0, 0x0, 0x8, 0x0, 0x1C, 0x0, 0x0, 0x1, 0x35, 0x34, 0x23, 0x22, 0x6, 0x15, 0x14, 0x33, 0x13, 0x11, 0x23, 0x22, 0x26, 0x35, 0x34, 0x36, 0x33, 0x32, 0x17, 0x11, 0x33, 0x11, 0x33, 0x15, 0x23, 0x11, 0x21, 0x15, 0x1, 0xD3, 0x67, 0x26, 0x3A, 0x68, 0x5F, 0x78, 0x8A, 0xA9, 0xAD, 0x9A, 0x36, 0x2E, 0xFD, 0xEE, 0xEE, 0x2, 0x95, 0x2, 0xE7, 0x49, 0x6C, 0x2F, 0x2C, 0x5A, 0xFD, 0x19, 0x2, 0x2B, 0x92, 0x80, 0x78, 0x99, 0x9, 0x1, 0x6B, 0xFD, 0x37, 0xBC, 0xFE, 0x9F, 0xCA, 0x0, 0x1, 0xFF, 0xF3, 0x0, 0x0, 0x4, 0x77, 0x5, 0xB0, 0x0, 0xC, 0x0, 0x0, 0x21, 0x21, 0x1, 0x1, 0x21, 0x1, 0x37, 0x11, 0x33, 0x11, 0x23, 0x11, 0x7, 0x1, 0x44, 0xFE, 0xCE, 0x2, 0x1C, 0xFD, 0xC5, 0x1, 0x2C, 0x1, 0xB5, 0xA6, 0xFD, 0xFD, 0x8C, 0x2, 0x84, 0x3, 0x2C, 0xFD, 0x8A, 0xAF, 0x1, 0xC7, 0xFA, 0x50, 0x2, 0xAA, 0xAC, 0x0, 0x1, 0x0, 0x2D, 0x0, 0x0, 0x4, 0xB0, 0x5, 0xB0, 0x0, 0x7, 0x0, 0x0, 0x21, 0x21, 0x35, 0x21, 0x11, 0x33, 0x11, 0x21, 0x4, 0xB0, 0xFB, 0x7D, 0x1, 0xC2, 0xFC, 0x1, 0xC5, 0xCB, 0x4, 0xE5, 0xFB, 0x1B, 0x0, 0x1, 0x0, 0x3C, 0x2, 0x5F, 0x5, 0xEC, 0x3, 0x51, 0x0, 0x3, 0x0, 0x0, 0x13, 0x21, 0x15, 0x21, 0x3C, 0x5, 0xB0, 0xFA, 0x50, 0x3, 0x51, 0xF2, 0x0, 0x2, 0x0, 0x35, 0x2, 0x8C, 0x4, 0xC4, 0x6, 0xC1, 0x0, 0x3, 0x0, 0x17, 0x0, 0x0, 0x1, 0x35, 0x21, 0x15, 0x1, 0x11, 0x21, 0x11, 0x23, 0x11, 0x23, 0x35, 0x33, 0x35, 0x33, 0x15, 0x21, 0x35, 0x33, 0x15, 0x33, 0x15, 0x23, 0x11, 0x3, 0x75, 0xFE, 0xF, 0x1, 0xF1, 0xFE, 0xF, 0xC4, 0x8B, 0x8B, 0xC4, 0x1, 0xF1, 0xC4, 0x8B, 0x8B, 0x4, 0xFB, 0x68, 0x68, 0xFD, 0x91, 0x1, 0xC9, 0xFE, 0x37, 0x2, 0xD7, 0xA7, 0xB7, 0xB7, 0xB7, 0xB7, 0xA7, 0xFD, 0x29, 0xFF, 0xFF, 0x0, 0x3C, 0x2, 0x7C, 0x5, 0x47, 0x5, 0xBC, 0x0, 0x26, 0x3, 0x81, 0x0, 0x0, 0x0, 0x7, 0x3, 0x78, 0x2, 0x31, 0x0, 0x0, 0x0, 0x1, 0x0, 0x7D, 0x0, 0x0, 0x6, 0x16, 0x4, 0x3A, 0x0, 0xF, 0x0, 0x0, 0x25, 0x23, 0x15, 0x21, 0x35, 0x23, 0x11, 0x33, 0x11, 0x21, 0x11, 0x33, 0x11, 0x21, 0x11, 0x33, 0x6, 0x16, 0xB4, 0xFB, 0xAB, 0x90, 0xF3, 0x1, 0x5F, 0xF4, 0x1, 0x5F, 0xF4, 0x1, 0x1, 0x1, 0x4, 0x39, 0xFC, 0x88, 0x3, 0x78, 0xFC, 0x88, 0x3, 0x78, 0x0, 0x1, 0x0, 0x34, 0x0, 0x0, 0x3, 0xD1, 0x5, 0xB0, 0x0, 0x9, 0x0, 0x0, 0x21, 0x11, 0x21, 0x35, 0x21, 0x11, 0x21, 0x35, 0x21, 0x11, 0x2, 0xD4, 0xFD, 0xB6, 0x2, 0x4A, 0xFD, 0x60, 0x3, 0x9D, 0x2, 0x69, 0xCA, 0x1, 0xB2, 0xCB, 0xFA, 0x50, 0x0, 0x2, 0x0, 0x4A, 0x0, 0x0, 0x4, 0x89, 0x5, 0xB0, 0x0, 0xA, 0x0, 0x13, 0x0, 0x0, 0x21, 0x23, 0x11, 0x21, 0x26, 0x24, 0x35, 0x34, 0x0, 0x33, 0x21, 0x3, 0x11, 0x21, 0x22, 0x6, 0x15, 0x14, 0x16, 0x33, 0x4, 0x89, 0xFC, 0xFE, 0xCA, 0xFA, 0xFE, 0xED, 0x1, 0x15, 0xFD, 0x2, 0x2D, 0xFC, 0xFE, 0xCF, 0x93, 0x81, 0x81, 0x93, 0x2, 0x1D, 0x1, 0xF1, 0xD2, 0xC9, 0x1, 0x6, 0xFD, 0x38, 0x1, 0xFD, 0xA0, 0x66, 0x6D, 0x8A, 0x0, 0x1, 0x0, 0x95, 0x0, 0x0, 0x6, 0x6B, 0x5, 0xB0, 0x0, 0xE, 0x0, 0x0, 0x33, 0x11, 0x33, 0x11, 0x3, 0x1, 0x33, 0x1, 0x3, 0x11, 0x33, 0x11, 0x21, 0x1, 0x1, 0x95, 0xFC, 0x19, 0x1, 0xAD, 0xB5, 0x1, 0xAD, 0x18, 0xFC, 0xFE, 0xB8, 0xFE, 0x5D, 0xFE, 0x5C, 0x5, 0xB0, 0xFE, 0x20, 0xFD, 0x7F, 0x4, 0x61, 0xFB, 0xA0, 0x2, 0x80, 0x1, 0xE0, 0xFA, 0x50, 0x4, 0x5C, 0xFB, 0xA4, 0x0, 0x1, 0x0, 0xA4, 0x0, 0x0, 0x1, 0xA0, 0x6, 0x0, 0x0, 0x3, 0x0, 0x0, 0x1, 0x11, 0x23, 0x11, 0x1, 0xA0, 0xFC, 0x6, 0x0, 0xFA, 0x0, 0x6, 0x0, 0x0, 0x1, 0x0, 0x75, 0x0, 0x0, 0x9, 0x11, 0x5, 0xB0, 0x0, 0x13, 0x0, 0x0, 0x21, 0x1, 0x3, 0x23, 0x13, 0x33, 0x1, 0x13, 0x33, 0x1, 0x13, 0x33, 0x3, 0x23, 0x35, 0x7, 0x1, 0x3, 0x23, 0x35, 0x4, 0x1, 0xFD, 0xD6, 0x66, 0xFC, 0x8C, 0xFC, 0x2, 0x2C, 0x66, 0xF8, 0x2, 0x2C, 0x66, 0xF8, 0x8C, 0xF8, 0x2, 0xFD, 0xD6, 0x66, 0xF8, 0x4, 0x27, 0xFB, 0xD9, 0x5, 0xB0, 0xFB, 0xD9, 0x4, 0x27, 0xFB, 0xD9, 0x4, 0x27, 0xFA, 0x50, 0x2, 0x2, 0x4, 0x25, 0xFB, 0xDB, 0x2, 0x0, 0x1, 0x0, 0x18, 0x1, 0xE3, 0x4, 0x49, 0x3, 0x4A, 0x0, 0xC, 0x0, 0x0, 0x1, 0x23, 0x26, 0x26, 0x23, 0x22, 0x6, 0x7, 0x23, 0x36, 0x24, 0x20, 0x4, 0x4, 0x49, 0xB3, 0x24, 0x9D, 0xA4, 0xAE, 0x91, 0x26, 0xB4, 0x38, 0x1, 0x4, 0x1, 0xBA, 0x1, 0x4, 0x1, 0xE3, 0x3C, 0x8D, 0x8D, 0x3C, 0x89, 0xDE, 0xDE, 0x0, 0x3, 0x0, 0x1B, 0xFF, 0xEB, 0x5, 0x2E, 0x4, 0x4E, 0x0, 0x6, 0x0, 0xD, 0x0, 0x29, 0x0, 0x0, 0x1, 0x22, 0x6, 0x7, 0x21, 0x35, 0x26, 0x3, 0x32, 0x37, 0x35, 0x21, 0x16, 0x16, 0x5, 0x6, 0x23, 0x22, 0x27, 0x6, 0x23, 0x22, 0x2, 0x27, 0x23, 0x35, 0x33, 0x36, 0x12, 0x20, 0x17, 0x37, 0x33, 0x11, 0x33, 0x15, 0x23, 0x15, 0x14, 0x33, 0x32, 0x37, 0x2, 0xA9, 0x6B, 0x6F, 0x11, 0x1, 0xBB, 0x45, 0x8D, 0x8D, 0x45, 0xFE, 0x3F, 0x6, 0x6F, 0x2, 0xBB, 0x33, 0x4C, 0xA3, 0x34, 0x68, 0xC0, 0xC3, 0xD9, 0x9, 0xAA, 0xAF, 0x17, 0xD5, 0x1, 0x6C, 0x66, 0x13, 0xD1, 0xC2, 0xC2, 0x49, 0xE, 0xC, 0x3, 0x8B, 0x99, 0x73, 0x80, 0x8C, 0xFD, 0x23, 0x89, 0x9D, 0x7E, 0xA8, 0xA4, 0x1F, 0xA3, 0xA3, 0x1, 0x11, 0xD8, 0xAB, 0xCF, 0x1, 0x0, 0x97, 0x83, 0xFE, 0x45, 0xAB, 0x90, 0x8B, 0x4, 0x0, 0x3, 0x0, 0x5B, 0xFF, 0xEC, 0x6, 0x8E, 0x4, 0x4E, 0x0, 0x28, 0x0, 0x31, 0x0, 0x39, 0x0, 0x0, 0x5, 0x22, 0x27, 0x6, 0x6, 0x23, 0x22, 0x26, 0x35, 0x34, 0x36, 0x37, 0x33, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x23, 0x34, 0x36, 0x33, 0x32, 0x17, 0x36, 0x33, 0x32, 0x16, 0x17, 0x7, 0x26, 0x23, 0x22, 0x6, 0x7, 0x21, 0x15, 0x14, 0x2, 0x24, 0x36, 0x37, 0x35, 0x23, 0x6, 0x15, 0x14, 0x16, 0x21, 0x32, 0x36, 0x35, 0x35, 0x21, 0x16, 0x16, 0x4, 0xBF, 0xE6, 0x89, 0x2D, 0xC6, 0x92, 0xA2, 0xCE, 0xFF, 0xE7, 0x9F, 0x5F, 0x5F, 0x57, 0x67, 0xF2, 0xF1, 0xCD, 0xE0, 0x6F, 0x89, 0xD3, 0xA2, 0xCB, 0x34, 0x83, 0x66, 0xA9, 0x76, 0x8F, 0xE, 0x2, 0xB7, 0xE3, 0xFC, 0xA2, 0x79, 0x1A, 0x96, 0xFD, 0x58, 0x3, 0x1A, 0x79, 0x65, 0xFE, 0x39, 0xC, 0x79, 0x14, 0xB8, 0x49, 0x6F, 0xBA, 0x8A, 0xA9, 0xA4, 0x1, 0x5E, 0x55, 0x65, 0x56, 0x3E, 0x80, 0xCC, 0x81, 0x81, 0x7F, 0x4D, 0x7D, 0x86, 0x99, 0x74, 0x7C, 0xEA, 0xFE, 0xD4, 0xC3, 0x50, 0x31, 0xA0, 0x5, 0x83, 0x41, 0x58, 0x98, 0x5E, 0x2B, 0x89, 0x98, 0x0, 0x2, 0x0, 0x7D, 0xFF, 0xEC, 0x3, 0x50, 0x4, 0x4E, 0x0, 0x7, 0x0, 0xA, 0x0, 0x0, 0x5, 0x25, 0x11, 0x25, 0x1, 0x1, 0x15, 0x5, 0x1, 0x11, 0x37, 0x2, 0xA7, 0xFD, 0xD6, 0x1, 0x97, 0x1, 0x3C, 0xFE, 0x1F, 0x1, 0x83, 0xFE, 0x7D, 0xA1, 0x14, 0x55, 0x3, 0x2C, 0xE1, 0xFE, 0x3A, 0xFE, 0xF1, 0x7E, 0x44, 0x2, 0xE2, 0xFE, 0xBD, 0x5E, 0x0, 0x2, 0x0, 0x1B, 0xFF, 0xEC, 0x4, 0xFD, 0x4, 0x4E, 0x0, 0x6, 0x0, 0x22, 0x0, 0x0, 0x1, 0x22, 0x7, 0x21, 0x35, 0x26, 0x26, 0x1, 0x6, 0x6, 0x23, 0x22, 0x24, 0x27, 0x23, 0x35, 0x33, 0x35, 0x36, 0x0, 0x33, 0x32, 0x12, 0x15, 0x15, 0x21, 0x15, 0x21, 0x15, 0x21, 0x16, 0x16, 0x33, 0x32, 0x37, 0x2, 0x9E, 0xB6, 0x36, 0x1, 0xC0, 0x5, 0x60, 0x1, 0x44, 0x34, 0xCC, 0xA2, 0xC6, 0xFE, 0xFD, 0x2A, 0xA1, 0x8F, 0x4, 0x1, 0x1F, 0xD0, 0xE8, 0xDD, 0xFD, 0x3B, 0x3, 0x60, 0xFC, 0xBB, 0x1F, 0x86, 0x61, 0xA9, 0x66, 0x3, 0x8B, 0xC2, 0xC, 0x44, 0x72, 0xFD, 0x2D, 0x4C, 0x80, 0xD0, 0xA5, 0x99, 0x33, 0xFB, 0x1, 0x26, 0xFE, 0xFB, 0xCB, 0x4F, 0x35, 0x99, 0x50, 0x62, 0x86, 0x0, 0x2, 0x0, 0x2F, 0xFF, 0xEC, 0x5, 0x3C, 0x4, 0x4E, 0x0, 0x7, 0x0, 0x26, 0x0, 0x0, 0x1, 0x22, 0x6, 0x7, 0x21, 0x35, 0x26, 0x26, 0x1, 0x6, 0x6, 0x23, 0x22, 0x0, 0x27, 0x6, 0x6, 0x15, 0x14, 0x17, 0x23, 0x26, 0x35, 0x34, 0x36, 0x37, 0x36, 0x24, 0x33, 0x32, 0x12, 0x15, 0x15, 0x21, 0x16, 0x16, 0x33, 0x32, 0x37, 0x3, 0x6D, 0x64, 0x7A, 0x12, 0x1, 0xCF, 0x5, 0x61, 0x1, 0x45, 0x34, 0xCC, 0xA2, 0xE6, 0xFE, 0xEE, 0xC, 0x57, 0x38, 0x10, 0xBC, 0x1B, 0xCA, 0x91, 0x1C, 0x1, 0xE, 0xBA, 0xEC, 0xE2, 0xFD, 0x3D, 0xA, 0x95, 0x80, 0xA9, 0x66, 0x3, 0x8B, 0x8C, 0x7C, 0x12, 0x5F, 0x97, 0xFD, 0x2D, 0x4C, 0x80, 0x1, 0x14, 0xD1, 0x5, 0x67, 0x58, 0x61, 0x37, 0x47, 0x7D, 0xB2, 0x95, 0x3, 0xD5, 0xF6, 0xFE, 0xD4, 0xEA, 0x67, 0x7D, 0xA5, 0x86, 0xFF, 0xFF, 0x0, 0x2D, 0x0, 0x0, 0x2, 0xD7, 0x6, 0x15, 0x0, 0x6, 0x0, 0x4B, 0x0, 0x0, 0x0, 0x3, 0x0, 0x50, 0xFE, 0x4B, 0x4, 0xDC, 0x4, 0x4E, 0x0, 0xB, 0x0, 0x23, 0x0, 0x2A, 0x0, 0x0, 0x25, 0x32, 0x37, 0x11, 0x26, 0x23, 0x22, 0x6, 0x15, 0x15, 0x14, 0x16, 0x13, 0x22, 0x26, 0x35, 0x34, 0x37, 0x26, 0x2, 0x35, 0x35, 0x34, 0x12, 0x33, 0x32, 0x17, 0x37, 0x33, 0x11, 0x33, 0x15, 0x23, 0x15, 0x14, 0x6, 0x27, 0x32, 0x35, 0x35, 0x23, 0x22, 0x14, 0x2, 0x39, 0x92, 0x45, 0x46, 0x8F, 0x83, 0x76, 0x74, 0xF1, 0x99, 0xAE, 0x2F, 0x98, 0xA7, 0xE1, 0xCD, 0xB4, 0x6B, 0xD, 0xD9, 0xD9, 0xD9, 0x96, 0xC8, 0x6B, 0x61, 0x6B, 0xAF, 0x7C, 0x1, 0xEA, 0x76, 0xD2, 0x92, 0x15, 0x91, 0xD2, 0xFD, 0x9C, 0x99, 0x78, 0x5D, 0x41, 0x29, 0x1, 0x25, 0xCA, 0x15, 0xF7, 0x1, 0x30, 0x7E, 0x6A, 0xFC, 0x30, 0xB4, 0x13, 0x87, 0xD1, 0xAF, 0x77, 0x45, 0xBC, 0x0, 0x1, 0x0, 0x35, 0x0, 0x0, 0x3, 0x88, 0x6, 0x0, 0x0, 0x25, 0x0, 0x0, 0x1, 0x22, 0x27, 0x11, 0x23, 0x11, 0x26, 0x23, 0x22, 0x15, 0x14, 0x16, 0x17, 0x15, 0x22, 0x26, 0x35, 0x34, 0x36, 0x33, 0x32, 0x17, 0x11, 0x33, 0x11, 0x16, 0x33, 0x32, 0x35, 0x34, 0x26, 0x27, 0x35, 0x32, 0x16, 0x15, 0x14, 0x6, 0x2, 0x99, 0x20, 0x1D, 0xF3, 0x1F, 0x2F, 0x4C, 0x27, 0x3C, 0x60, 0x9D, 0x80, 0x72, 0x23, 0x1F, 0xF3, 0x1E, 0x27, 0x4E, 0x32, 0x23, 0x68, 0x86, 0x81, 0x1, 0xC7, 0xA, 0xFE, 0x2F, 0x3, 0x5D, 0x3E, 0x79, 0x43, 0x5C, 0x9, 0xB7, 0xAC, 0xAD, 0x9C, 0xA7, 0xA, 0x1, 0xAB, 0xFC, 0xC5, 0x3B, 0x76, 0x46, 0x3F, 0x1, 0xC4, 0xB3, 0x9D, 0x87, 0xAC, 0x0, 0x1, 0x0, 0x24, 0x0, 0x0, 0x3, 0x3D, 0x6, 0x0, 0x0, 0x2B, 0x0, 0x0, 0x1, 0x27, 0x11, 0x23, 0x11, 0x27, 0x22, 0x6, 0x15, 0x27, 0x34, 0x36, 0x33, 0x17, 0x35, 0x27, 0x22, 0x6, 0x15, 0x27, 0x34, 0x36, 0x33, 0x17, 0x11, 0x33, 0x11, 0x33, 0x32, 0x36, 0x35, 0x17, 0x14, 0x6, 0x23, 0x27, 0x15, 0x33, 0x32, 0x36, 0x35, 0x17, 0x14, 0x6, 0x2, 0x4C, 0x1C, 0xF3, 0x15, 0x28, 0x38, 0xA4, 0x89, 0x67, 0x29, 0x15, 0x28, 0x38, 0xA4, 0x89, 0x67, 0x29, 0xF3, 0x8, 0x29, 0x39, 0xA3, 0x8A, 0x67, 0x1C, 0x8, 0x29, 0x39, 0xA3, 0x8A, 0x1, 0xCB, 0x1, 0xFE, 0x34, 0x2, 0x26, 0x1, 0x3B, 0x2F, 0x8, 0x72, 0x9C, 0x4, 0x99, 0x1, 0x3B, 0x2F, 0x8, 0x72, 0x9C, 0x4, 0x1, 0xEF, 0xFD, 0xB9, 0x3B, 0x2F, 0xC, 0x73, 0x97, 0x1, 0x97, 0x3B, 0x2F, 0xC, 0x73, 0x97, 0x0, 0x3, 0x0, 0x35, 0x0, 0x0, 0x2, 0x6B, 0x6, 0x0, 0x0, 0x11, 0x0, 0x16, 0x0, 0x1A, 0x0, 0x0, 0x21, 0x23, 0x11, 0x26, 0x26, 0x35, 0x34, 0x36, 0x37, 0x11, 0x33, 0x11, 0x16, 0x16, 0x15, 0x14, 0x6, 0x7, 0x25, 0x14, 0x17, 0x35, 0x6, 0x4, 0x27, 0x15, 0x36, 0x1, 0xCC, 0xF3, 0x48, 0x5C, 0x5C, 0x48, 0xF3, 0x47, 0x58, 0x58, 0x47, 0xFE, 0xEE, 0x1F, 0x1F, 0x1, 0x2C, 0x1A, 0x1A, 0x1, 0xE0, 0x1E, 0x80, 0x57, 0x56, 0x82, 0x20, 0x2, 0x33, 0xFD, 0xCC, 0x1F, 0x82, 0x56, 0x57, 0x7F, 0x1E, 0xF4, 0x32, 0x28, 0xB7, 0x29, 0x2, 0x27, 0xB1, 0x26, 0x0, 0x2, 0x0, 0x7D, 0xFF, 0xEC, 0x7, 0x76, 0x4, 0x4E, 0x0, 0x2C, 0x0, 0x34, 0x0, 0x0, 0x5, 0x22, 0x26, 0x35, 0x34, 0x36, 0x33, 0x33, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x7, 0x11, 0x23, 0x11, 0x34, 0x26, 0x23, 0x22, 0x7, 0x11, 0x23, 0x11, 0x33, 0x17, 0x36, 0x33, 0x32, 0x17, 0x36, 0x36, 0x33, 0x32, 0x16, 0x17, 0x15, 0x33, 0x15, 0x23, 0x15, 0x14, 0x6, 0x27, 0x32, 0x35, 0x35, 0x23, 0x22, 0x15, 0x14, 0x5, 0x5D, 0x88, 0x9B, 0x9C, 0x75, 0x5F, 0x75, 0x5F, 0x5B, 0x72, 0x15, 0xF3, 0x68, 0x5A, 0x93, 0x3D, 0xF2, 0xE4, 0x7, 0x73, 0xC6, 0xDA, 0x50, 0x37, 0xAF, 0x76, 0xAB, 0xCA, 0x1, 0xD9, 0xD9, 0x8C, 0xB7, 0x50, 0x4A, 0x4D, 0x14, 0x98, 0x78, 0x80, 0x8F, 0xB3, 0x78, 0x52, 0x5C, 0x49, 0xFD, 0x1D, 0x2, 0xBC, 0x72, 0x5A, 0x78, 0xFC, 0xF0, 0x4, 0x3A, 0x71, 0x85, 0xA8, 0x4D, 0x5B, 0xB8, 0xD5, 0xB6, 0xB5, 0x12, 0x87, 0xD1, 0xAF, 0x71, 0x4A, 0x5E, 0x5D, 0x0, 0x2, 0x0, 0x7D, 0xFF, 0xEC, 0x4, 0xF4, 0x4, 0x4E, 0x0, 0x1F, 0x0, 0x27, 0x0, 0x0, 0x5, 0x22, 0x26, 0x35, 0x34, 0x36, 0x33, 0x33, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x7, 0x11, 0x23, 0x11, 0x33, 0x17, 0x36, 0x33, 0x32, 0x16, 0x17, 0x15, 0x33, 0x15, 0x23, 0x15, 0x14, 0x6, 0x27, 0x32, 0x35, 0x35, 0x23, 0x22, 0x15, 0x14, 0x2, 0xDC, 0x88, 0x9B, 0x9C, 0x74, 0x60, 0x6B, 0x5F, 0x53, 0x7B, 0x22, 0xF2, 0xDE, 0xB, 0x7C, 0xCF, 0x9F, 0xCA, 0x2, 0xD8, 0xD8, 0x8D, 0xB7, 0x51, 0x4A, 0x4D, 0x14, 0x98, 0x78, 0x80, 0x8F, 0x9F, 0x78, 0x66, 0x52, 0x44, 0xFD, 0xE, 0x4, 0x3A, 0x83, 0x97, 0xBF, 0xDE, 0xA6, 0xB5, 0x12, 0x87, 0xD1, 0xAF, 0x72, 0x49, 0x5E, 0x5D, 0x0, 0x2, 0x0, 0x7D, 0xFE, 0x4B, 0x4, 0xEB, 0x4, 0x4E, 0x0, 0x1F, 0x0, 0x27, 0x0, 0x0, 0x1, 0x22, 0x26, 0x35, 0x34, 0x36, 0x33, 0x33, 0x11, 0x34, 0x26, 0x23, 0x22, 0x6, 0x7, 0x11, 0x23, 0x11, 0x33, 0x17, 0x36, 0x33, 0x32, 0x16, 0x15, 0x11, 0x33, 0x15, 0x23, 0x15, 0x14, 0x6, 0x27, 0x32, 0x35, 0x35, 0x23, 0x6, 0x15, 0x14, 0x2, 0xC5, 0x94, 0xA6, 0xA9, 0x7F, 0x6C, 0x6E, 0x5C, 0x4E, 0x76, 0x22, 0xF2, 0xE4, 0x8, 0x76, 0xC3, 0xA1, 0xCF, 0xD9, 0xD9, 0x92, 0xC4, 0x63, 0x59, 0x62, 0xFE, 0x4B, 0x99, 0x78, 0x80, 0x8E, 0x2, 0x4B, 0x76, 0x5D, 0x4E, 0x41, 0xFD, 0x7, 0x4, 0x3A, 0x7F, 0x93, 0xB9, 0xE1, 0xFD, 0xB6, 0xB4, 0x13, 0x87, 0xD1, 0xAF, 0x71, 0x4B, 0x1, 0x5E, 0x5D, 0x0, 0x2, 0x0, 0x7D, 0xFF, 0xEC, 0x3, 0x81, 0x4, 0x4E, 0x0, 0x5, 0x0, 0x9, 0x0, 0x0, 0x5, 0x25, 0x11, 0x37, 0x5, 0x11, 0x25, 0x5, 0x11, 0x25, 0x2, 0x8E, 0xFD, 0xEF, 0xF2, 0x2, 0x12, 0xFD, 0xEE, 0x1, 0x1F, 0xFE, 0xE1, 0x14, 0x55, 0x3, 0x2C, 0xE1, 0x55, 0xFC, 0xD4, 0x2E, 0x36, 0x2, 0x7A, 0x35, 0x0, 0x3, 0x0, 0x86, 0xFF, 0x76, 0x3, 0xAE, 0x4, 0xBC, 0x0, 0x2, 0x0, 0x5, 0x0, 0x13, 0x0, 0x0, 0x1, 0x27, 0x11, 0x17, 0x17, 0x11, 0x25, 0x37, 0x5, 0x37, 0x33, 0x7, 0x17, 0x11, 0x7, 0x25, 0x7, 0x23, 0x37, 0x27, 0x2, 0x68, 0xD7, 0x3E, 0xE1, 0xFD, 0xEF, 0xF2, 0x1, 0x3D, 0x4F, 0x91, 0x5B, 0x50, 0xF3, 0xFE, 0xBA, 0x53, 0x91, 0x5E, 0x45, 0x3, 0x4C, 0x28, 0xFE, 0x22, 0xA7, 0x2A, 0x1, 0xF2, 0xB6, 0xE1, 0x34, 0xA2, 0xB7, 0xC, 0xFC, 0xD4, 0xE1, 0x34, 0xAA, 0xC0, 0xB, 0x0, 0x2, 0x0, 0x25, 0xFF, 0x83, 0x3, 0xBB, 0x5, 0x1, 0x0, 0x9, 0x0, 0x1E, 0x0, 0x0, 0x25, 0x32, 0x36, 0x35, 0x35, 0x34, 0x26, 0x27, 0x3, 0x16, 0x17, 0x22, 0x27, 0x7, 0x23, 0x1, 0x6, 0x7, 0x27, 0x36, 0x36, 0x33, 0x37, 0x33, 0x7, 0x16, 0x12, 0x15, 0x15, 0x14, 0x2, 0x1, 0xCA, 0x95, 0x69, 0x39, 0x4C, 0xED, 0x39, 0x3B, 0x61, 0x56, 0x31, 0xBD, 0x1, 0x69, 0x38, 0x38, 0x83, 0x3F, 0x90, 0x6B, 0x3F, 0xBD, 0x4A, 0x9A, 0x9A, 0xF8, 0xAF, 0xD9, 0x84, 0x22, 0x62, 0xB3, 0x2B, 0xFD, 0x5F, 0x1E, 0xC3, 0x23, 0x8C, 0x4, 0x1, 0xD, 0x29, 0x9D, 0x31, 0x32, 0xB3, 0xD3, 0x38, 0xFE, 0xE8, 0xB0, 0x22, 0xDF, 0xFE, 0xBF, 0x0, 0x3, 0x0, 0x50, 0xFF, 0xEC, 0x7, 0xE, 0x4, 0x4E, 0x0, 0x1E, 0x0, 0x2C, 0x0, 0x34, 0x0, 0x0, 0x1, 0x14, 0x2, 0x23, 0x22, 0x27, 0x6, 0x6, 0x23, 0x22, 0x0, 0x27, 0x35, 0x34, 0x0, 0x33, 0x32, 0x17, 0x36, 0x36, 0x33, 0x32, 0x16, 0x17, 0x7, 0x26, 0x23, 0x22, 0x6, 0x7, 0x21, 0x5, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x1, 0x32, 0x36, 0x37, 0x35, 0x21, 0x16, 0x16, 0x7, 0xE, 0xE3, 0xEC, 0xE8, 0x8B, 0x41, 0xC4, 0x7F, 0xEB, 0xFE, 0xF7, 0x4, 0x1, 0xA, 0xEC, 0xF8, 0x8B, 0x43, 0xCC, 0x83, 0xA2, 0xCB, 0x34, 0x83, 0x68, 0xA7, 0x80, 0x95, 0xA, 0x2, 0xC3, 0xFA, 0x34, 0x7D, 0x89, 0x86, 0x7D, 0x7C, 0x89, 0x87, 0x7D, 0x3, 0xFD, 0x79, 0x61, 0x4, 0xFE, 0x32, 0x12, 0x7A, 0x2, 0x2, 0xEA, 0xFE, 0xD4, 0xB3, 0x53, 0x60, 0x1, 0x33, 0xE6, 0x22, 0xEC, 0x1, 0x3B, 0xB1, 0x52, 0x5F, 0x7F, 0x4D, 0x7D, 0x86, 0xA5, 0x7D, 0x57, 0x91, 0xD2, 0xD2, 0x91, 0x15, 0x8F, 0xD5, 0xD5, 0x8F, 0xFE, 0x88, 0x98, 0x5E, 0x12, 0x7C, 0x8C, 0x0, 0x4, 0x0, 0x5D, 0xFF, 0x83, 0x6, 0xF1, 0x5, 0x1, 0x0, 0x7, 0x0, 0xF, 0x0, 0x17, 0x0, 0x41, 0x0, 0x0, 0x1, 0x14, 0x17, 0x13, 0x27, 0x22, 0x6, 0x15, 0x13, 0x32, 0x36, 0x35, 0x35, 0x34, 0x27, 0x3, 0x5, 0x32, 0x36, 0x37, 0x21, 0x15, 0x14, 0x16, 0x5, 0x22, 0x27, 0x7, 0x23, 0x37, 0x26, 0x27, 0x6, 0x6, 0x27, 0x22, 0x2, 0x35, 0x35, 0x21, 0x26, 0x26, 0x23, 0x22, 0x6, 0x7, 0x27, 0x36, 0x36, 0x33, 0x32, 0x16, 0x17, 0x36, 0x36, 0x33, 0x32, 0x17, 0x37, 0x33, 0x7, 0x16, 0x16, 0x15, 0x14, 0x0, 0x4, 0x3, 0x41, 0xE0, 0x24, 0x87, 0x76, 0xFF, 0x87, 0x76, 0x40, 0xDF, 0xFD, 0x41, 0x5B, 0x74, 0x12, 0xFE, 0x4B, 0x64, 0x3, 0x51, 0x34, 0x31, 0x28, 0xBD, 0x3F, 0x42, 0x31, 0x3F, 0xB7, 0x6D, 0xE2, 0xE2, 0x2, 0xAA, 0xA, 0x87, 0x80, 0x6B, 0x8C, 0x38, 0x4F, 0x35, 0xC6, 0x91, 0x7E, 0xC3, 0x41, 0x3E, 0xBF, 0x7D, 0x35, 0x31, 0x42, 0xBC, 0x58, 0x6F, 0x76, 0xFE, 0xFD, 0x2, 0x14, 0xA5, 0x5E, 0x2, 0x7A, 0x2, 0xD2, 0x93, 0xFE, 0x88, 0xD5, 0x8F, 0x15, 0xA4, 0x5F, 0xFD, 0x86, 0x2, 0x93, 0x6F, 0x19, 0x60, 0x89, 0xC3, 0x9, 0x73, 0xB3, 0x2B, 0x41, 0x55, 0x61, 0x1, 0x1, 0xF, 0xD9, 0x8F, 0x7C, 0xAD, 0x36, 0x26, 0x9E, 0x2F, 0x52, 0x60, 0x53, 0x53, 0x60, 0x9, 0xBA, 0xF9, 0x46, 0xFB, 0xB3, 0xEB, 0xFE, 0xC4, 0x0, 0x4, 0x0, 0x5D, 0xFF, 0xEC, 0x6, 0xF1, 0x4, 0x50, 0x0, 0x6, 0x0, 0xD, 0x0, 0x15, 0x0, 0x37, 0x0, 0x0, 0x1, 0x22, 0x6, 0x7, 0x21, 0x26, 0x26, 0x3, 0x32, 0x36, 0x37, 0x21, 0x16, 0x16, 0x21, 0x32, 0x36, 0x37, 0x21, 0x15, 0x14, 0x16, 0x5, 0x22, 0x26, 0x27, 0x6, 0x6, 0x27, 0x22, 0x2, 0x35, 0x35, 0x21, 0x26, 0x26, 0x23, 0x22, 0x6, 0x7, 0x27, 0x36, 0x36, 0x33, 0x32, 0x16, 0x17, 0x36, 0x36, 0x33, 0x32, 0x0, 0x15, 0x15, 0x14, 0x0, 0x5, 0x0, 0x79, 0x77, 0xB, 0x1, 0xF8, 0xB, 0x78, 0x78, 0x71, 0x77, 0xF, 0xFE, 0x10, 0xF, 0x78, 0xFD, 0x91, 0x5B, 0x74, 0x12, 0xFE, 0x4B, 0x64, 0x3, 0x51, 0x7E, 0xC0, 0x3F, 0x41, 0xB7, 0x6C, 0xE2, 0xE2, 0x2, 0xAA, 0xA, 0x87, 0x80, 0x6B, 0x8C, 0x38, 0x4F, 0x35, 0xC6, 0x91, 0x7D, 0xC3, 0x42, 0x3F, 0xBF, 0x7C, 0xED, 0x1, 0x4, 0xFE, 0xFD, 0x3, 0x8D, 0xAB, 0x7D, 0x7D, 0xAB, 0xFD, 0x23, 0x99, 0x71, 0x71, 0x99, 0x93, 0x6F, 0x19, 0x60, 0x89, 0xC3, 0x5D, 0x51, 0x52, 0x5D, 0x1, 0x1, 0xF, 0xD9, 0x8F, 0x7C, 0xAD, 0x36, 0x26, 0x9E, 0x2F, 0x52, 0x5C, 0x50, 0x50, 0x5C, 0xFE, 0xC5, 0xEC, 0x15, 0xEB, 0xFE, 0xC4, 0x0, 0x2, 0x0, 0x50, 0xFF, 0xEC, 0x6, 0x74, 0x4, 0x4E, 0x0, 0x21, 0x0, 0x2F, 0x0, 0x0, 0x5, 0x22, 0x27, 0x6, 0x23, 0x22, 0x0, 0x27, 0x35, 0x34, 0x0, 0x33, 0x15, 0x22, 0x6, 0x15, 0x15, 0x14, 0x16, 0x33, 0x32, 0x37, 0x26, 0x35, 0x35, 0x34, 0x0, 0x33, 0x32, 0x0, 0x15, 0x15, 0x14, 0x0, 0x1, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x4, 0x7E, 0xA5, 0x79, 0x79, 0xA0, 0xEA, 0xFE, 0xF7, 0x4, 0x1, 0xA, 0xEC, 0x88, 0x7C, 0x7D, 0x88, 0x4B, 0x41, 0x4D, 0x1, 0xA, 0xEC, 0xEF, 0x1, 0x9, 0xFE, 0xF7, 0xFE, 0xE, 0x7D, 0x88, 0x87, 0x7D, 0x7D, 0x89, 0x87, 0x7C, 0x14, 0x52, 0x52, 0x1, 0x33, 0xE6, 0x22, 0xEC, 0x1, 0x3B, 0xC3, 0xD5, 0x8F, 0x15, 0x91, 0xD2, 0x2A, 0x86, 0xB3, 0x15, 0xEC, 0x1, 0x3B, 0xFE, 0xC5, 0xEC, 0x15, 0xEB, 0xFE, 0xC5, 0x2, 0x26, 0x91, 0xD2, 0xD2, 0x91, 0x15, 0x8F, 0xD5, 0xD5, 0x8F, 0x0, 0x3, 0x0, 0x50, 0xFF, 0x83, 0x6, 0x74, 0x5, 0x1, 0x0, 0x7, 0x0, 0xF, 0x0, 0x3A, 0x0, 0x0, 0x1, 0x14, 0x17, 0x13, 0x27, 0x22, 0x6, 0x15, 0x1, 0x32, 0x36, 0x35, 0x35, 0x34, 0x27, 0x3, 0x17, 0x22, 0x27, 0x7, 0x23, 0x37, 0x27, 0x6, 0x23, 0x22, 0x0, 0x27, 0x35, 0x34, 0x0, 0x33, 0x15, 0x22, 0x6, 0x15, 0x15, 0x14, 0x16, 0x33, 0x32, 0x37, 0x26, 0x35, 0x35, 0x34, 0x0, 0x33, 0x32, 0x17, 0x37, 0x33, 0x7, 0x16, 0x12, 0x15, 0x15, 0x14, 0x0, 0x3, 0x79, 0x3E, 0xDD, 0x18, 0x87, 0x7C, 0x1, 0x5, 0x87, 0x7D, 0x4F, 0xE2, 0x2D, 0x3A, 0x35, 0x29, 0xBD, 0x40, 0x9, 0x79, 0xA0, 0xEA, 0xFE, 0xF7, 0x4, 0x1, 0xA, 0xEC, 0x88, 0x7C, 0x7D, 0x88, 0x4B, 0x41, 0x4D, 0x1, 0xA, 0xEC, 0x2F, 0x2C, 0x41, 0xBD, 0x56, 0x76, 0x7F, 0xFE, 0xF7, 0x2, 0x12, 0x9C, 0x5E, 0x2, 0x72, 0x1, 0xD5, 0x8F, 0xFE, 0x88, 0xD2, 0x91, 0x15, 0xB1, 0x5E, 0xFD, 0x7D, 0xC7, 0xA, 0x73, 0xB5, 0x6, 0x52, 0x1, 0x33, 0xE6, 0x22, 0xEC, 0x1, 0x3B, 0xC3, 0xD5, 0x8F, 0x15, 0x91, 0xD2, 0x2A, 0x86, 0xB3, 0x15, 0xEC, 0x1, 0x3B, 0x7, 0xBA, 0xF4, 0x45, 0xFF, 0x0, 0xA2, 0x14, 0xEB, 0xFE, 0xC5, 0x0, 0x1, 0x0, 0x35, 0x0, 0x0, 0x4, 0x23, 0x4, 0x3A, 0x0, 0x14, 0x0, 0x0, 0x21, 0x23, 0x35, 0x34, 0x12, 0x37, 0x11, 0x33, 0x11, 0x16, 0x12, 0x15, 0x15, 0x23, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x1, 0x28, 0xF3, 0xC8, 0xB5, 0xF3, 0xB6, 0xC8, 0xF3, 0x7C, 0x89, 0x87, 0x7C, 0x15, 0xCC, 0x1, 0x27, 0x27, 0x2, 0xB, 0xFD, 0xF5, 0x27, 0xFE, 0xD9, 0xCC, 0x15, 0x15, 0x8F, 0xD5, 0xD5, 0x8F, 0x0, 0x2, 0x0, 0x99, 0xFE, 0x60, 0x4, 0x55, 0x4, 0x3A, 0x0, 0x15, 0x0, 0x1C, 0x0, 0x0, 0x1, 0x23, 0x26, 0x35, 0x11, 0x26, 0x27, 0x23, 0x11, 0x23, 0x11, 0x21, 0x32, 0x16, 0x15, 0x14, 0x7, 0x16, 0x17, 0x11, 0x14, 0x17, 0x1, 0x11, 0x33, 0x32, 0x35, 0x34, 0x27, 0x4, 0x55, 0xFB, 0x1E, 0x1, 0xBC, 0xF3, 0xF3, 0x1, 0xBE, 0xD8, 0xF3, 0x9B, 0xA4, 0x3, 0x27, 0xFD, 0x37, 0xCC, 0xD8, 0xCE, 0xFE, 0x60, 0x23, 0x96, 0x1, 0xC0, 0xAB, 0x2, 0xFE, 0x7A, 0x4, 0x3A, 0xA4, 0x9E, 0xBB, 0x59, 0x3F, 0xC6, 0xFE, 0x52, 0x97, 0x2A, 0x5, 0x9, 0xFE, 0xC9, 0xA3, 0x90, 0x4, 0x0, 0x1, 0x0, 0x7D, 0x0, 0x0, 0x1, 0xED, 0x4, 0x3A, 0x0, 0x9, 0x0, 0x0, 0x21, 0x23, 0x11, 0x33, 0x17, 0x36, 0x37, 0x15, 0x6, 0x7, 0x1, 0x6F, 0xF2, 0xE8, 0x6, 0x33, 0x4F, 0x58, 0x26, 0x4, 0x3A, 0x7A, 0x55, 0x22, 0xE3, 0x1D, 0x53, 0x0, 0x1, 0x0, 0x7D, 0x0, 0x0, 0x3, 0x7F, 0x4, 0x4E, 0x0, 0x17, 0x0, 0x0, 0x1, 0x22, 0x7, 0x11, 0x23, 0x11, 0x33, 0x17, 0x36, 0x33, 0x32, 0x17, 0x36, 0x33, 0x32, 0x17, 0x15, 0x26, 0x23, 0x22, 0x7, 0x23, 0x26, 0x26, 0x2, 0x4, 0x6A, 0x2B, 0xF2, 0xE1, 0x7, 0x46, 0x70, 0x4F, 0x39, 0x2F, 0x4E, 0x3E, 0x21, 0x2D, 0x22, 0x37, 0x15, 0x7A, 0x16, 0x2A, 0x3, 0x64, 0x6E, 0xFD, 0xA, 0x4, 0x3A, 0x58, 0x6C, 0x42, 0x42, 0x1B, 0xDE, 0xF, 0x2F, 0x17, 0x18, 0x0, 0x2, 0x0, 0x28, 0xFF, 0xEC, 0x3, 0xF4, 0x4, 0x4E, 0x0, 0x1A, 0x0, 0x21, 0x0, 0x0, 0x5, 0x22, 0x26, 0x35, 0x34, 0x36, 0x33, 0x33, 0x11, 0x33, 0x17, 0x36, 0x33, 0x32, 0x17, 0x7, 0x26, 0x23, 0x22, 0x7, 0x15, 0x33, 0x15, 0x23, 0x15, 0x14, 0x6, 0x27, 0x32, 0x35, 0x35, 0x23, 0x6, 0x14, 0x1, 0x62, 0x94, 0xA6, 0xA9, 0x7E, 0x6D, 0xE1, 0xA, 0x5D, 0x9A, 0x31, 0x25, 0x2, 0x32, 0x30, 0xA8, 0x3A, 0xD9, 0xD9, 0x91, 0xC4, 0x63, 0x59, 0x62, 0x14, 0x98, 0x78, 0x80, 0x8F, 0x2, 0x2F, 0x77, 0x8B, 0xD, 0xE5, 0x8, 0x7F, 0xDA, 0xB5, 0x12, 0x87, 0xD1, 0xAF, 0x70, 0x4B, 0x1, 0xBA, 0x0, 0x2, 0x0, 0x28, 0xFF, 0xEC, 0x4, 0xBE, 0x4, 0x4E, 0x0, 0x24, 0x0, 0x2B, 0x0, 0x0, 0x5, 0x22, 0x26, 0x35, 0x34, 0x36, 0x33, 0x33, 0x11, 0x33, 0x17, 0x36, 0x33, 0x32, 0x17, 0x36, 0x33, 0x32, 0x17, 0x15, 0x26, 0x23, 0x22, 0x7, 0x23, 0x26, 0x26, 0x23, 0x22, 0x7, 0x15, 0x33, 0x15, 0x23, 0x15, 0x14, 0x6, 0x27, 0x32, 0x35, 0x35, 0x23, 0x6, 0x14, 0x1, 0x62, 0x94, 0xA6, 0xA9, 0x7E, 0x6D, 0xE1, 0x7, 0x46, 0x70, 0x4F, 0x39, 0x2F, 0x4E, 0x3E, 0x21, 0x2D, 0x22, 0x37, 0x15, 0x7A, 0x16, 0x2A, 0x26, 0x6A, 0x2B, 0xD9, 0xD9, 0x91, 0xC4, 0x63, 0x59, 0x62, 0x14, 0x98, 0x78, 0x80, 0x8F, 0x2, 0x2F, 0x57, 0x6B, 0x42, 0x42, 0x1B, 0xDE, 0xF, 0x2F, 0x17, 0x18, 0x6D, 0xEC, 0xB5, 0x12, 0x87, 0xD1, 0xAF, 0x70, 0x4B, 0x1, 0xBA, 0x0, 0x1, 0x0, 0x1F, 0xFF, 0xEB, 0x4, 0x25, 0x4, 0x46, 0x0, 0x16, 0x0, 0x0, 0x5, 0x22, 0x26, 0x35, 0x11, 0x6, 0x23, 0x22, 0x26, 0x35, 0x33, 0x14, 0x16, 0x33, 0x32, 0x37, 0x33, 0x11, 0x16, 0x33, 0x37, 0x17, 0x6, 0x3, 0xA3, 0x70, 0x80, 0x75, 0xBA, 0xA0, 0xC5, 0xF7, 0x64, 0x43, 0xC5, 0x31, 0xF6, 0x3, 0x46, 0x1B, 0x18, 0x33, 0x15, 0xA4, 0xB5, 0x1, 0xE4, 0x72, 0xC6, 0xCA, 0x6F, 0x5A, 0xBD, 0xFC, 0xFA, 0x7B, 0x4, 0xB3, 0x1F, 0x0, 0x2, 0x0, 0x1F, 0xFF, 0xEB, 0x5, 0xC3, 0x4, 0x46, 0x0, 0x17, 0x0, 0x23, 0x0, 0x0, 0x4, 0x26, 0x35, 0x11, 0x6, 0x23, 0x22, 0x26, 0x35, 0x33, 0x14, 0x16, 0x33, 0x32, 0x37, 0x33, 0x11, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x6, 0x27, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x14, 0x16, 0x3, 0x9C, 0xE9, 0x75, 0xBA, 0xA0, 0xC5, 0xF7, 0x64, 0x43, 0xC5, 0x31, 0xF6, 0x46, 0x4E, 0xA1, 0xE5, 0xE5, 0xA0, 0x47, 0x64, 0x64, 0x47, 0x49, 0x69, 0x69, 0x15, 0xD6, 0xA5, 0x1, 0xC2, 0x72, 0xC6, 0xCA, 0x6F, 0x5A, 0xBD, 0xFE, 0x90, 0x1B, 0xDC, 0xA4, 0xA5, 0xD5, 0xC9, 0x63, 0x4F, 0x52, 0x64, 0x64, 0x52, 0x4E, 0x64, 0x0, 0x1, 0xFF, 0xD8, 0xFF, 0xEC, 0x2, 0xF4, 0x6, 0x15, 0x0, 0x15, 0x0, 0x0, 0x17, 0x22, 0x27, 0x37, 0x16, 0x33, 0x32, 0x37, 0x11, 0x34, 0x36, 0x33, 0x32, 0x17, 0x7, 0x26, 0x23, 0x22, 0x7, 0x11, 0x14, 0x6, 0x61, 0x43, 0x46, 0x6, 0x2A, 0x34, 0xAD, 0x1, 0xC5, 0xAD, 0x3F, 0x59, 0x19, 0x2A, 0x32, 0xA2, 0x1, 0xCB, 0x14, 0x12, 0xBE, 0x8, 0xAA, 0x3, 0x43, 0xB5, 0xBF, 0x15, 0xB9, 0xB, 0xAF, 0xFC, 0xBD, 0xB5, 0xBF, 0x0, 0x1, 0x0, 0x77, 0xFF, 0xEC, 0x3, 0xF7, 0x4, 0x3A, 0x0, 0x11, 0x0, 0x0, 0x21, 0x27, 0x6, 0x23, 0x22, 0x26, 0x27, 0x11, 0x33, 0x11, 0x14, 0x16, 0x33, 0x32, 0x37, 0x11, 0x33, 0x11, 0x3, 0x12, 0x6, 0x6A, 0xC6, 0x9E, 0xC6, 0x1, 0xF3, 0x67, 0x45, 0xAE, 0x40, 0xF3, 0x6A, 0x7E, 0xBA, 0xD5, 0x2, 0xBF, 0xFD, 0x43, 0x75, 0x55, 0x7D, 0x1, 0xDE, 0xFC, 0xF2, 0x0, 0x2, 0x0, 0x1B, 0xFF, 0xEC, 0x4, 0xEE, 0x4, 0x3A, 0x0, 0x7, 0x0, 0x1D, 0x0, 0x0, 0x25, 0x32, 0x37, 0x35, 0x21, 0x15, 0x14, 0x16, 0x5, 0x27, 0x6, 0x23, 0x22, 0x26, 0x27, 0x35, 0x23, 0x35, 0x33, 0x11, 0x33, 0x11, 0x21, 0x35, 0x33, 0x15, 0x33, 0x15, 0x23, 0x11, 0x2, 0x61, 0xAE, 0x40, 0xFE, 0x66, 0x67, 0x1, 0x41, 0x6, 0x6A, 0xC6, 0x9E, 0xC6, 0x1, 0xA7, 0xA7, 0xF3, 0x1, 0x9A, 0xF3, 0xAC, 0xAC, 0xB3, 0x7D, 0xC3, 0x76, 0x75, 0x55, 0xB3, 0x6A, 0x7E, 0xBA, 0xD5, 0x78, 0xAB, 0x1, 0x9C, 0xFE, 0x64, 0x70, 0x70, 0xAB, 0xFE, 0xD, 0x0, 0x2, 0x0, 0x77, 0xFF, 0xEC, 0x6, 0x74, 0x4, 0x4E, 0x0, 0x9, 0x0, 0x28, 0x0, 0x0, 0x1, 0x34, 0x36, 0x32, 0x16, 0x15, 0x14, 0x6, 0x22, 0x26, 0x1, 0x27, 0x6, 0x23, 0x22, 0x27, 0x6, 0x23, 0x22, 0x26, 0x27, 0x11, 0x33, 0x11, 0x14, 0x16, 0x33, 0x32, 0x36, 0x37, 0x11, 0x33, 0x11, 0x14, 0x16, 0x33, 0x32, 0x37, 0x11, 0x33, 0x11, 0x2, 0xEE, 0x48, 0x82, 0x49, 0x49, 0x82, 0x48, 0x2, 0xA2, 0x7, 0x73, 0xC5, 0xD8, 0x51, 0x77, 0xD6, 0xA5, 0xBE, 0x1, 0xF3, 0x6A, 0x59, 0x53, 0x69, 0x14, 0xF3, 0x69, 0x5A, 0x93, 0x3C, 0xF2, 0x3, 0xCD, 0x38, 0x49, 0x49, 0x38, 0x37, 0x49, 0x49, 0xFC, 0x6A, 0x71, 0x85, 0xA5, 0xA5, 0xB8, 0xD4, 0x2, 0xC2, 0xFD, 0x42, 0x78, 0x52, 0x5A, 0x48, 0x1, 0x84, 0xFE, 0xA6, 0x72, 0x5A, 0x78, 0x3, 0x10, 0xFB, 0xC6, 0xFF, 0xFF, 0x0, 0x7D, 0xFF, 0xEC, 0x6, 0x7A, 0x4, 0x4E, 0x0, 0xF, 0x7, 0x11, 0x6, 0xF1, 0x4, 0x3A, 0xC0, 0x0, 0x0, 0x1, 0x0, 0x14, 0xFF, 0xEC, 0x4, 0x67, 0x4, 0x4E, 0x0, 0x19, 0x0, 0x0, 0x21, 0x27, 0x6, 0x23, 0x22, 0x26, 0x35, 0x11, 0x26, 0x23, 0x22, 0x7, 0x35, 0x36, 0x33, 0x20, 0x13, 0x11, 0x14, 0x16, 0x33, 0x32, 0x37, 0x11, 0x33, 0x11, 0x3, 0x81, 0x5, 0x6B, 0xC5, 0xA0, 0xC5, 0x4, 0x84, 0x25, 0x26, 0x3C, 0x46, 0x1, 0x3A, 0x9, 0x68, 0x44, 0xAF, 0x40, 0xF3, 0x6A, 0x7E, 0xBC, 0xD7, 0x1, 0x66, 0xA1, 0x9, 0xC0, 0x11, 0xFE, 0x9E, 0xFE, 0x91, 0x75, 0x55, 0x7F, 0x3, 0x8, 0xFB, 0xC6, 0x0, 0x1, 0x0, 0x1F, 0xFE, 0x60, 0x3, 0xEA, 0x4, 0x3A, 0x0, 0xB, 0x0, 0x0, 0x1, 0x13, 0x13, 0x21, 0x1, 0x1, 0x21, 0x3, 0x3, 0x21, 0x1, 0x1, 0x1, 0x38, 0xCA, 0xCF, 0x1, 0xE, 0xFE, 0xB5, 0x1, 0x56, 0xFE, 0xF4, 0xD8, 0xD9, 0xFE, 0xF2, 0x1, 0x57, 0xFE, 0xB5, 0x4, 0x3A, 0xFE, 0x4, 0x1, 0xFC, 0xFD, 0x1F, 0xFD, 0x7, 0x2, 0xD, 0xFD, 0xF3, 0x2, 0xF9, 0x2, 0xE1, 0x0, 0x2, 0x0, 0x1F, 0xFE, 0x4B, 0x4, 0xFA, 0x4, 0x3A, 0x0, 0x15, 0x0, 0x1D, 0x0, 0x0, 0x1, 0x22, 0x26, 0x27, 0x27, 0x3, 0x21, 0x1, 0x1, 0x21, 0x13, 0x13, 0x21, 0x1, 0x13, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x6, 0x26, 0x36, 0x34, 0x26, 0x22, 0x6, 0x14, 0x16, 0x3, 0xE8, 0x91, 0xA6, 0x46, 0x65, 0xD9, 0xFE, 0xF2, 0x1, 0x57, 0xFE, 0xB5, 0x1, 0xD, 0xCA, 0xCF, 0x1, 0xE, 0xFE, 0xB5, 0x92, 0x50, 0x72, 0x71, 0xA1, 0xA1, 0x42, 0x3F, 0x3F, 0x5C, 0x41, 0x41, 0xFE, 0x4B, 0x8D, 0xA4, 0xF1, 0xFD, 0xF3, 0x2, 0xF9, 0x2, 0xE1, 0xFE, 0x4, 0x1, 0xFC, 0xFD, 0x1F, 0xFE, 0xC2, 0x52, 0xA1, 0x70, 0x71, 0xA0, 0x9F, 0x3A, 0x72, 0x3B, 0x3B, 0x72, 0x3A, 0x0, 0x1, 0x0, 0xA, 0xFE, 0x60, 0x3, 0xED, 0x4, 0x3A, 0x0, 0xF, 0x0, 0x0, 0x5, 0x15, 0x21, 0x35, 0x33, 0x1, 0x1, 0x21, 0x13, 0x13, 0x21, 0x1, 0x1, 0x21, 0x3, 0x3, 0x1, 0xC0, 0xFE, 0x4A, 0x65, 0x1, 0xA, 0xFE, 0xB5, 0x1, 0xC, 0xCB, 0xCF, 0x1, 0xE, 0xFE, 0xB4, 0x1, 0x57, 0xFE, 0xF4, 0xD9, 0x92, 0xF6, 0xAA, 0xAA, 0x2, 0x4F, 0x2, 0xE1, 0xFE, 0x4, 0x1, 0xFC, 0xFD, 0x1F, 0xFD, 0x7, 0x2, 0xD, 0xFE, 0x9D, 0x0, 0x2, 0x0, 0x1F, 0xFF, 0xEC, 0x4, 0xD7, 0x4, 0x3A, 0x0, 0x15, 0x0, 0x21, 0x0, 0x0, 0x5, 0x22, 0x26, 0x27, 0x27, 0x3, 0x21, 0x1, 0x1, 0x21, 0x13, 0x13, 0x21, 0x1, 0x17, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x6, 0x27, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x14, 0x16, 0x3, 0xC5, 0x8B, 0x9B, 0x40, 0x5B, 0xD7, 0xFE, 0xF2, 0x1, 0x56, 0xFE, 0xB6, 0x1, 0xD, 0xCA, 0xCE, 0x1, 0xD, 0xFE, 0xB6, 0x56, 0x51, 0x8B, 0x71, 0xA1, 0xA1, 0x6F, 0x2D, 0x40, 0x40, 0x2D, 0x2F, 0x41, 0x41, 0x14, 0x80, 0x6C, 0x9A, 0xFE, 0x8E, 0x2, 0x26, 0x2, 0x14, 0xFE, 0x9C, 0x1, 0x64, 0xFD, 0xEC, 0x8A, 0x72, 0xA1, 0x71, 0x70, 0xA0, 0x9E, 0x3A, 0x3A, 0x39, 0x3B, 0x3B, 0x39, 0x3A, 0x3A, 0x0, 0x1, 0xFF, 0xDE, 0xFE, 0x60, 0x4, 0x9E, 0x4, 0x3A, 0x0, 0xB, 0x0, 0x0, 0x1, 0x13, 0x13, 0x21, 0x1, 0x1, 0x21, 0x3, 0x1, 0x21, 0x1, 0x1, 0x1, 0xED, 0xCA, 0xCE, 0x1, 0xD, 0xFE, 0xB6, 0x1, 0x56, 0xFE, 0xF3, 0xD8, 0xFE, 0x36, 0xFE, 0xEF, 0x2, 0x4C, 0xFE, 0xB6, 0x4, 0x3A, 0xFE, 0x9C, 0x1, 0x64, 0xFD, 0xEC, 0xFD, 0xDA, 0x1, 0x72, 0xFC, 0xEE, 0x3, 0xC6, 0x2, 0x14, 0x0, 0x2, 0xFF, 0xDE, 0xFE, 0x60, 0x5, 0x8C, 0x4, 0x3A, 0x0, 0x15, 0x0, 0x21, 0x0, 0x0, 0x1, 0x1, 0x21, 0x1, 0x1, 0x21, 0x13, 0x13, 0x21, 0x1, 0x17, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x6, 0x23, 0x22, 0x26, 0x27, 0x5, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x14, 0x16, 0x2, 0xB9, 0xFE, 0x36, 0xFE, 0xEF, 0x2, 0x4C, 0xFE, 0xB6, 0x1, 0xD, 0xCA, 0xCE, 0x1, 0xD, 0xFE, 0xB6, 0x56, 0x52, 0x8A, 0x71, 0xA1, 0xA2, 0x74, 0x8B, 0x97, 0x40, 0x1, 0x68, 0x2D, 0x40, 0x40, 0x2D, 0x2F, 0x41, 0x41, 0x1, 0x72, 0xFC, 0xEE, 0x3, 0xC6, 0x2, 0x14, 0xFE, 0x9C, 0x1, 0x64, 0xFD, 0xEC, 0x89, 0x71, 0xA1, 0x71, 0x70, 0xA0, 0x80, 0x6C, 0x4E, 0x3A, 0x3A, 0x39, 0x3B, 0x3B, 0x39, 0x3A, 0x3A, 0x0, 0x1, 0xFF, 0xBE, 0xFE, 0x60, 0x4, 0x88, 0x4, 0x3A, 0x0, 0xF, 0x0, 0x0, 0x1, 0x21, 0x35, 0x33, 0x1, 0x1, 0x21, 0x13, 0x13, 0x21, 0x1, 0x1, 0x21, 0x3, 0x1, 0x33, 0x1, 0xB0, 0xFE, 0xE, 0x72, 0x1, 0xE5, 0xFE, 0xB6, 0x1, 0xC, 0xCA, 0xCE, 0x1, 0xE, 0xFE, 0xB5, 0x1, 0x56, 0xFE, 0xF4, 0xD8, 0xFE, 0x99, 0x73, 0xFE, 0x60, 0xAA, 0x3, 0x1C, 0x2, 0x14, 0xFE, 0x9C, 0x1, 0x64, 0xFD, 0xEC, 0xFD, 0xDA, 0x1, 0x72, 0xFD, 0x98, 0x0, 0x1, 0x0, 0xD, 0xFE, 0x4B, 0x3, 0x76, 0x4, 0x3A, 0x0, 0x11, 0x0, 0x0, 0x13, 0x22, 0x27, 0x35, 0x17, 0x32, 0x36, 0x37, 0x37, 0x1, 0x21, 0x13, 0x17, 0x13, 0x21, 0x1, 0x2, 0x7, 0xDA, 0x23, 0x52, 0x2D, 0x58, 0x55, 0x1C, 0x28, 0xFE, 0x8A, 0x1, 0xA, 0xCB, 0xC, 0x82, 0x1, 0x6, 0xFE, 0xB8, 0x5C, 0xCB, 0xFE, 0x4B, 0x11, 0xBC, 0x3, 0x41, 0x4F, 0x72, 0x4, 0x23, 0xFD, 0x63, 0x34, 0x1, 0xAB, 0xFC, 0x56, 0xFE, 0xF8, 0x15, 0x0, 0x2, 0x0, 0x50, 0x2, 0xEE, 0x2, 0xD6, 0x5, 0xB0, 0x0, 0xB, 0x0, 0x17, 0x0, 0x0, 0x1, 0x33, 0x14, 0x6, 0x20, 0x26, 0x35, 0x33, 0x14, 0x16, 0x32, 0x36, 0x11, 0x34, 0x26, 0x22, 0x6, 0x15, 0x23, 0x34, 0x36, 0x20, 0x16, 0x15, 0x2, 0x1F, 0xB7, 0xAE, 0xFE, 0xD6, 0xAE, 0xB6, 0x40, 0x9A, 0x3F, 0x3F, 0x9A, 0x40, 0xB6, 0xAE, 0x1, 0x2A, 0xAE, 0x5, 0xB0, 0x7C, 0x9E, 0x9E, 0x7C, 0x37, 0x54, 0x54, 0xFD, 0x75, 0x37, 0x54, 0x54, 0x37, 0x7D, 0x9E, 0x9E, 0x7D, 0x0, 0x1, 0x0, 0x64, 0x1, 0x4C, 0x2, 0xFA, 0x7, 0x2E, 0x0, 0x19, 0x0, 0x0, 0x1, 0x22, 0x27, 0x35, 0x16, 0x33, 0x32, 0x35, 0x11, 0x34, 0x26, 0x23, 0x22, 0x7, 0x11, 0x23, 0x11, 0x33, 0x11, 0x36, 0x33, 0x32, 0x16, 0x15, 0x11, 0x14, 0x2, 0x3F, 0x46, 0x4F, 0x27, 0x1D, 0x47, 0x45, 0x3D, 0x62, 0x28, 0xC5, 0xC5, 0x4C, 0x82, 0x78, 0x8B, 0x1, 0x4C, 0x11, 0xB4, 0x9, 0x50, 0x1, 0xFE, 0x69, 0x54, 0x59, 0xFD, 0xD2, 0x4, 0xA2, 0xFE, 0x1B, 0x71, 0x91, 0xA2, 0xFD, 0xBF, 0xFA, 0x0, 0x1, 0x0, 0x35, 0x2, 0x8C, 0x2, 0xA9, 0x7, 0x2E, 0x0, 0x23, 0x0, 0x0, 0x1, 0x22, 0x27, 0x11, 0x23, 0x11, 0x26, 0x23, 0x22, 0x15, 0x14, 0x16, 0x17, 0x15, 0x22, 0x26, 0x35, 0x34, 0x33, 0x32, 0x17, 0x11, 0x33, 0x11, 0x16, 0x33, 0x32, 0x35, 0x34, 0x27, 0x35, 0x32, 0x16, 0x15, 0x14, 0x6, 0x1, 0xF9, 0x11, 0x11, 0xC5, 0x15, 0x1E, 0x38, 0x18, 0x25, 0x46, 0x69, 0xB3, 0x16, 0x14, 0xC5, 0xF, 0x18, 0x3A, 0x34, 0x4B, 0x5A, 0x60, 0x3, 0xEE, 0x5, 0xFE, 0x99, 0x2, 0x95, 0x2C, 0x59, 0x31, 0x46, 0x5, 0x88, 0x80, 0x80, 0xEF, 0x7, 0x1, 0x56, 0xFD, 0x67, 0x16, 0x5D, 0x5B, 0x2, 0x91, 0x85, 0x74, 0x63, 0x80, 0x0, 0x1, 0x0, 0x35, 0x2, 0x8C, 0x2, 0x4A, 0x7, 0x2E, 0x0, 0x15, 0x0, 0x0, 0x1, 0x11, 0x23, 0x11, 0x23, 0x22, 0x6, 0x15, 0x27, 0x34, 0x36, 0x33, 0x17, 0x11, 0x33, 0x11, 0x32, 0x36, 0x35, 0x17, 0x14, 0x6, 0x1, 0xA4, 0xC6, 0x3, 0x1D, 0x28, 0x61, 0x56, 0x45, 0xE, 0xC6, 0x1D, 0x28, 0x61, 0x57, 0x4, 0xA6, 0xFD, 0xE6, 0x2, 0x5D, 0x30, 0x22, 0x19, 0x44, 0x69, 0x1, 0x1, 0xD2, 0xFD, 0xED, 0x30, 0x22, 0x1E, 0x44, 0x65, 0x0, 0x1, 0x0, 0x28, 0x2, 0x7F, 0x3, 0x4A, 0x5, 0xBA, 0x0, 0x18, 0x0, 0x0, 0x1, 0x27, 0x6, 0x23, 0x22, 0x26, 0x35, 0x35, 0x34, 0x23, 0x22, 0x7, 0x35, 0x36, 0x33, 0x32, 0x17, 0x15, 0x16, 0x33, 0x32, 0x37, 0x11, 0x33, 0x11, 0x2, 0xA8, 0x17, 0x4C, 0x8E, 0x78, 0x8C, 0x47, 0x1D, 0x27, 0x4F, 0x46, 0xB6, 0x5, 0x4, 0x7F, 0x61, 0x28, 0xC6, 0x2, 0x8C, 0x79, 0x86, 0x91, 0xA2, 0xFC, 0x50, 0x9, 0xB4, 0x11, 0xED, 0xF8, 0xAF, 0x58, 0x2, 0x2F, 0xFC, 0xDF, 0x0, 0x2, 0x0, 0x56, 0xFF, 0xEC, 0x4, 0x7A, 0x4, 0x4F, 0x0, 0xA, 0x0, 0x21, 0x0, 0x0, 0x25, 0x32, 0x37, 0x11, 0x26, 0x23, 0x22, 0x6, 0x15, 0x14, 0x16, 0x5, 0x27, 0x6, 0x23, 0x22, 0x2, 0x35, 0x35, 0x34, 0x12, 0x33, 0x32, 0x17, 0x36, 0x33, 0x32, 0x17, 0x7, 0x26, 0x23, 0x22, 0x7, 0x11, 0x2, 0x3C, 0x8B, 0x44, 0x44, 0x8D, 0x83, 0x6D, 0x6E, 0x1, 0x76, 0x14, 0x66, 0xB6, 0xCD, 0xDB, 0xDC, 0xCA, 0xBF, 0x68, 0x35, 0xA3, 0x4C, 0x33, 0x19, 0xA, 0x10, 0x46, 0x3, 0xAF, 0x8C, 0x1, 0xC9, 0x88, 0xBF, 0xA2, 0x9B, 0xE1, 0xAF, 0x83, 0x97, 0x1, 0x43, 0xFC, 0x15, 0xE7, 0x1, 0x28, 0xA1, 0xA1, 0x1F, 0xB3, 0x4, 0x7B, 0xFC, 0xFA, 0x0, 0x1, 0x0, 0x68, 0x0, 0x0, 0x4, 0x8E, 0x4, 0x4E, 0x0, 0x1E, 0x0, 0x0, 0x21, 0x21, 0x35, 0x33, 0x26, 0x35, 0x35, 0x34, 0x0, 0x33, 0x32, 0x0, 0x15, 0x15, 0x14, 0x7, 0x33, 0x15, 0x21, 0x35, 0x36, 0x13, 0x35, 0x34, 0x26, 0x23, 0x20, 0x11, 0x15, 0x10, 0x17, 0x2, 0x45, 0xFE, 0x31, 0xA6, 0xB4, 0x1, 0x16, 0xFC, 0xFD, 0x1, 0x17, 0xB3, 0xAC, 0xFE, 0x2F, 0xD1, 0x6, 0x83, 0x90, 0xFE, 0xEF, 0xDC, 0xC4, 0x91, 0xFE, 0x18, 0xC4, 0x1, 0x1F, 0xFE, 0xE1, 0xC3, 0x19, 0xFE, 0x91, 0xC4, 0xC8, 0x41, 0x1, 0x24, 0x30, 0x88, 0xA4, 0xFE, 0xC7, 0x13, 0xFE, 0xD3, 0x48, 0xFF, 0xFF, 0x0, 0xA2, 0x0, 0xAB, 0x1, 0xBD, 0x5, 0x8, 0x0, 0x27, 0x0, 0x13, 0x0, 0x1A, 0x0, 0xB7, 0x0, 0x7, 0x0, 0x13, 0x0, 0x1A, 0x4, 0x7, 0x0, 0x2, 0x0, 0x64, 0x2, 0x80, 0x2, 0x3E, 0x4, 0x3A, 0x0, 0x3, 0x0, 0x7, 0x0, 0x0, 0x1, 0x11, 0x23, 0x11, 0x23, 0x11, 0x23, 0x11, 0x2, 0x3E, 0x9C, 0xA1, 0x9D, 0x4, 0x3A, 0xFE, 0x46, 0x1, 0xBA, 0xFE, 0x46, 0x1, 0xBA, 0x0, 0x1, 0x0, 0x46, 0xFF, 0x66, 0x1, 0x5A, 0x1, 0x6, 0x0, 0x8, 0x0, 0x0, 0x1, 0x15, 0x14, 0x6, 0x7, 0x27, 0x36, 0x37, 0x35, 0x1, 0x5A, 0x4E, 0x47, 0x7F, 0x49, 0x2, 0x1, 0x6, 0x4B, 0x57, 0xBF, 0x3F, 0x4E, 0x6F, 0x84, 0x5F, 0xFF, 0xFF, 0x0, 0x2D, 0x0, 0x0, 0x5, 0x1B, 0x6, 0x15, 0x0, 0x26, 0x0, 0x4B, 0x0, 0x0, 0x0, 0x7, 0x0, 0x4B, 0x2, 0x44, 0x0, 0x0, 0x0, 0x2, 0x0, 0x19, 0x0, 0x0, 0x4, 0x18, 0x6, 0x15, 0x0, 0x3, 0x0, 0x18, 0x0, 0x0, 0x1, 0x11, 0x23, 0x11, 0x7, 0x23, 0x11, 0x23, 0x11, 0x23, 0x35, 0x33, 0x35, 0x36, 0x36, 0x33, 0x32, 0x17, 0x7, 0x26, 0x23, 0x22, 0x7, 0x15, 0x33, 0x4, 0x18, 0xF3, 0x9F, 0xD5, 0xF3, 0xA5, 0xA5, 0x1, 0xE8, 0xCC, 0x7C, 0xB6, 0x26, 0x8A, 0x71, 0xCF, 0x4, 0xD5, 0x4, 0x3A, 0xFB, 0xC6, 0x4, 0x3A, 0xB3, 0xFC, 0x79, 0x3, 0x87, 0xB3, 0x48, 0xC4, 0xCF, 0x3C, 0xC8, 0x30, 0xBB, 0x4C, 0x0, 0x1, 0x0, 0x2D, 0x0, 0x0, 0x4, 0x2D, 0x6, 0x15, 0x0, 0x16, 0x0, 0x0, 0x1, 0x23, 0x11, 0x23, 0x11, 0x23, 0x35, 0x33, 0x35, 0x36, 0x36, 0x33, 0x32, 0x5, 0x11, 0x23, 0x11, 0x26, 0x23, 0x22, 0x7, 0x15, 0x33, 0x2, 0xA1, 0xDB, 0xF4, 0xA5, 0xA5, 0x2, 0xD8, 0xC2, 0x92, 0x1, 0x2D, 0xF3, 0x67, 0x49, 0xC0, 0x4, 0xDB, 0x3, 0x87, 0xFC, 0x79, 0x3, 0x87, 0xB3, 0x67, 0xB4, 0xC0, 0x2F, 0xFA, 0x1A, 0x5, 0x40, 0xD, 0xAC, 0x67, 0x0, 0x2, 0x0, 0x2D, 0x0, 0x0, 0x6, 0x94, 0x6, 0x15, 0x0, 0x3, 0x0, 0x29, 0x0, 0x0, 0x1, 0x11, 0x23, 0x11, 0x1, 0x11, 0x21, 0x11, 0x23, 0x11, 0x23, 0x35, 0x33, 0x35, 0x34, 0x36, 0x33, 0x32, 0x17, 0x7, 0x26, 0x23, 0x22, 0x7, 0x15, 0x21, 0x35, 0x36, 0x36, 0x33, 0x32, 0x17, 0x7, 0x26, 0x23, 0x22, 0x7, 0x15, 0x33, 0x15, 0x23, 0x11, 0x6, 0x94, 0xF3, 0xFD, 0x99, 0xFE, 0x8C, 0xF4, 0xA5, 0xA5, 0xCC, 0xB0, 0x43, 0x46, 0x6, 0x2A, 0x34, 0xAB, 0x2, 0x1, 0x74, 0x1, 0xE8, 0xCC, 0x7C, 0xB6, 0x26, 0x8A, 0x71, 0xCF, 0x4, 0xD5, 0xD5, 0x4, 0x3A, 0xFB, 0xC6, 0x4, 0x3A, 0xFB, 0xC6, 0x3, 0x87, 0xFC, 0x79, 0x3, 0x87, 0xB3, 0x67, 0xB5, 0xBF, 0x12, 0xBE, 0x8, 0xA8, 0x6B, 0x48, 0xC4, 0xCF, 0x3C, 0xC8, 0x30, 0xBB, 0x4C, 0xB3, 0xFC, 0x79, 0x0, 0x1, 0x0, 0x2D, 0x0, 0x0, 0x6, 0x94, 0x6, 0x15, 0x0, 0x27, 0x0, 0x0, 0x21, 0x11, 0x21, 0x11, 0x23, 0x11, 0x23, 0x35, 0x33, 0x35, 0x34, 0x36, 0x33, 0x32, 0x17, 0x7, 0x26, 0x23, 0x22, 0x7, 0x15, 0x21, 0x35, 0x36, 0x36, 0x33, 0x32, 0x5, 0x11, 0x23, 0x11, 0x26, 0x23, 0x22, 0x7, 0x15, 0x33, 0x15, 0x23, 0x11, 0x3, 0x3A, 0xFE, 0x8C, 0xF4, 0xA5, 0xA5, 0xCC, 0xB0, 0x43, 0x46, 0x6, 0x2A, 0x34, 0xAB, 0x2, 0x1, 0x74, 0x1, 0xD7, 0xC3, 0x92, 0x1, 0x2D, 0xF3, 0x67, 0x49, 0xC0, 0x4, 0xDB, 0xDB, 0x3, 0x87, 0xFC, 0x79, 0x3, 0x87, 0xB3, 0x67, 0xB5, 0xBF, 0x12, 0xBE, 0x8, 0xA8, 0x6B, 0x63, 0xB7, 0xC1, 0x2F, 0xFA, 0x1A, 0x5, 0x40, 0xD, 0xAC, 0x67, 0xB3, 0xFC, 0x79, 0x0, 0x1, 0x0, 0x2D, 0xFF, 0xEC, 0x4, 0xD1, 0x6, 0x15, 0x0, 0x25, 0x0, 0x0, 0x25, 0x6, 0x23, 0x22, 0x26, 0x35, 0x11, 0x23, 0x35, 0x33, 0x35, 0x26, 0x23, 0x22, 0x15, 0x11, 0x23, 0x11, 0x23, 0x35, 0x33, 0x35, 0x36, 0x36, 0x33, 0x32, 0x16, 0x17, 0x11, 0x33, 0x15, 0x23, 0x11, 0x14, 0x16, 0x33, 0x32, 0x37, 0x4, 0xD1, 0x43, 0x5C, 0x79, 0x9F, 0xB3, 0xB3, 0x42, 0x70, 0xA3, 0xF3, 0xA5, 0xA5, 0x1, 0xC5, 0xAD, 0x73, 0xF3, 0x61, 0xBF, 0xBF, 0x3F, 0x32, 0x29, 0x2B, 0x4, 0x18, 0x89, 0xA7, 0x2, 0x6B, 0xB3, 0xF9, 0x1F, 0xB1, 0xFB, 0x5F, 0x3, 0x87, 0xB3, 0x6B, 0xB2, 0xBE, 0x3E, 0x2B, 0xFE, 0x8E, 0xB3, 0xFD, 0xA3, 0x49, 0x2B, 0xA, 0x0, 0x1, 0x0, 0x4C, 0xFF, 0xEC, 0x6, 0x80, 0x6, 0x18, 0x0, 0x4B, 0x0, 0x0, 0x5, 0x22, 0x26, 0x35, 0x11, 0x23, 0x35, 0x33, 0x35, 0x34, 0x23, 0x22, 0x6, 0x15, 0x14, 0x16, 0x16, 0x15, 0x23, 0x34, 0x26, 0x23, 0x22, 0x6, 0x14, 0x16, 0x17, 0x16, 0x16, 0x15, 0x14, 0x6, 0x23, 0x22, 0x26, 0x35, 0x33, 0x16, 0x16, 0x33, 0x32, 0x36, 0x35, 0x34, 0x26, 0x27, 0x26, 0x26, 0x35, 0x34, 0x36, 0x33, 0x32, 0x17, 0x26, 0x35, 0x34, 0x36, 0x33, 0x32, 0x16, 0x16, 0x15, 0x31, 0x15, 0x33, 0x15, 0x23, 0x11, 0x14, 0x16, 0x33, 0x32, 0x37, 0x15, 0x6, 0x5, 0xE0, 0x79, 0x9F, 0xAC, 0xAC, 0xB8, 0x56, 0x50, 0x2E, 0x2B, 0xF3, 0x60, 0x5F, 0x5C, 0x58, 0x5F, 0x7F, 0xBC, 0xD3, 0xEE, 0xC7, 0xDF, 0xEA, 0xEC, 0x5, 0x8A, 0x50, 0x60, 0x65, 0x55, 0x8E, 0xB0, 0xD9, 0xE0, 0xC1, 0x5C, 0x4D, 0x2D, 0xCF, 0xB8, 0xA8, 0xB7, 0x48, 0xBF, 0xBF, 0x3F, 0x31, 0x2A, 0x2B, 0x43, 0x14, 0x9D, 0xB5, 0x2, 0x49, 0xB3, 0x59, 0xCA, 0x5A, 0x3E, 0x4D, 0x89, 0x94, 0x65, 0x3F, 0x63, 0x52, 0x6C, 0x40, 0x1B, 0x28, 0x92, 0x91, 0x90, 0xB8, 0xE4, 0x86, 0x64, 0x50, 0x4A, 0x3A, 0x35, 0x4C, 0x1E, 0x25, 0x93, 0x89, 0x85, 0xC3, 0x17, 0x6C, 0x4F, 0x7A, 0xAC, 0x77, 0xB2, 0x5B, 0x5A, 0xB3, 0xFD, 0xB7, 0x50, 0x38, 0xA, 0xBC, 0x18, 0x0, 0x1, 0xFC, 0xF4, 0x4, 0x84, 0x0, 0x0, 0x6, 0x0, 0x0, 0x7, 0x0, 0x0, 0x11, 0x15, 0x20, 0x4, 0x7, 0x23, 0x36, 0x24, 0xFF, 0x0, 0xFE, 0xE9, 0x25, 0xD0, 0x28, 0x1, 0x8D, 0x6, 0x0, 0xA7, 0x76, 0x5F, 0xB2, 0xCA, 0x0, 0x1, 0x0, 0x0, 0x4, 0x84, 0x3, 0xC, 0x6, 0x0, 0x0, 0x7, 0x0, 0x0, 0x11, 0x35, 0x20, 0x4, 0x17, 0x23, 0x26, 0x24, 0x1, 0x57, 0x1, 0x8D, 0x28, 0xD1, 0x23, 0xFE, 0xE7, 0x5, 0x59, 0xA7, 0xCA, 0xB2, 0x5F, 0x76, 0xFF, 0xFF, 0xFB, 0xC3, 0x4, 0x8E, 0x0, 0x0, 0x5, 0xAB, 0x0, 0x7, 0x7, 0x36, 0x0, 0x0, 0x6, 0x40, 0xFF, 0xFF, 0x0, 0x0, 0x4, 0xA6, 0x4, 0x3D, 0x5, 0xC3, 0x0, 0x7, 0x7, 0x37, 0x0, 0x0, 0x6, 0x40, 0x0, 0x1, 0xFD, 0xB8, 0x5, 0x13, 0xFF, 0xD3, 0x5, 0xB1, 0x0, 0x3, 0x0, 0x0, 0x3, 0x15, 0x21, 0x35, 0x2D, 0xFD, 0xE5, 0x5, 0xB1, 0x9E, 0x9E, 0x0, 0x1, 0xFB, 0x9C, 0x5, 0x13, 0xFD, 0xB8, 0x5, 0xB1, 0x0, 0x3, 0x0, 0x0, 0x1, 0x15, 0x21, 0x35, 0xFD, 0xB8, 0xFD, 0xE4, 0x5, 0xB1, 0x9E, 0x9E, 0x0, 0x1, 0xFB, 0x9C, 0x5, 0x13, 0xFF, 0xD3, 0x5, 0xB1, 0x0, 0x3, 0x0, 0x0, 0x3, 0x15, 0x21, 0x35, 0x2D, 0xFB, 0xC9, 0x5, 0xB1, 0x9E, 0x9E, 0x0, 0x1, 0xFC, 0xEE, 0xFE, 0x5C, 0x0, 0x0, 0xFF, 0xA2, 0x0, 0x7, 0x0, 0x0, 0x11, 0x15, 0x20, 0x24, 0x27, 0x33, 0x16, 0x4, 0xFE, 0xBD, 0xFE, 0x7B, 0x4A, 0xB6, 0x39, 0x1, 0x32, 0xFE, 0xEC, 0x90, 0xC9, 0x7D, 0x37, 0x7F, 0x0, 0x1, 0x0, 0x0, 0xFE, 0x5C, 0x3, 0x11, 0xFF, 0xA2, 0x0, 0x7, 0x0, 0x0, 0x5, 0x33, 0x6, 0x4, 0x21, 0x35, 0x32, 0x24, 0x2, 0x5B, 0xB6, 0x4A, 0xFE, 0x7C, 0xFE, 0xBD, 0xEF, 0x1, 0x35, 0x5E, 0x7D, 0xC9, 0x90, 0x7F, 0x0, 0x1, 0xFB, 0xC3, 0xFE, 0x4E, 0x0, 0x0, 0xFF, 0x6B, 0x0, 0xD, 0x0, 0x0, 0x15, 0x15, 0x25, 0x26, 0x23, 0x22, 0x6, 0x7, 0x27, 0x36, 0x36, 0x33, 0x32, 0x17, 0xFE, 0x8A, 0x98, 0x70, 0x87, 0x96, 0x2A, 0x78, 0x2E, 0xD7, 0xAC, 0x66, 0x9C, 0xC9, 0x9E, 0x25, 0xF, 0x4B, 0x34, 0x31, 0x5B, 0x91, 0xE, 0x0, 0x1, 0x0, 0x0, 0xFE, 0x66, 0x4, 0x3D, 0xFF, 0x83, 0x0, 0xD, 0x0, 0x0, 0x11, 0x35, 0x16, 0x4, 0x33, 0x32, 0x36, 0x37, 0x17, 0x6, 0x6, 0x23, 0x22, 0x24, 0xB6, 0x1, 0x72, 0x54, 0x88, 0x96, 0x2B, 0x78, 0x2E, 0xD9, 0xAB, 0x74, 0xFE, 0xD1, 0xFE, 0x99, 0x9E, 0x1A, 0x1A, 0x4C, 0x34, 0x35, 0x5C, 0x8C, 0x1B, 0xFF, 0xFF, 0xFD, 0xB8, 0xFE, 0xCF, 0xFF, 0xD3, 0xFF, 0x6D, 0x0, 0x7, 0x7, 0x31, 0x0, 0x0, 0xF9, 0xBC, 0xFF, 0xFF, 0xFB, 0x9C, 0xFE, 0xCF, 0xFD, 0xB8, 0xFF, 0x6D, 0x0, 0x7, 0x7, 0x32, 0x0, 0x0, 0xF9, 0xBC, 0xFF, 0xFF, 0xFB, 0x9C, 0xFE, 0xD0, 0xFF, 0xD3, 0xFF, 0x6E, 0x0, 0x7, 0x7, 0x33, 0x0, 0x0, 0xF9, 0xBD, 0x0, 0x16, 0x0, 0x5A, 0xFE, 0x72, 0x7, 0xED, 0x5, 0xAE, 0x0, 0x3, 0x0, 0x7, 0x0, 0xB, 0x0, 0x11, 0x0, 0x17, 0x0, 0x1B, 0x0, 0x1F, 0x0, 0x2D, 0x0, 0x37, 0x0, 0x3E, 0x0, 0x42, 0x0, 0x46, 0x0, 0x4D, 0x0, 0x5C, 0x0, 0x60, 0x0, 0x64, 0x0, 0x70, 0x0, 0x76, 0x0, 0x7C, 0x0, 0x80, 0x0, 0x84, 0x0, 0x88, 0x0, 0x0, 0x1, 0x21, 0x35, 0x21, 0x5, 0x21, 0x35, 0x21, 0x5, 0x21, 0x35, 0x21, 0x5, 0x23, 0x35, 0x21, 0x11, 0x23, 0x21, 0x23, 0x11, 0x21, 0x15, 0x23, 0x11, 0x15, 0x23, 0x35, 0x21, 0x15, 0x23, 0x35, 0x1, 0x14, 0x6, 0x23, 0x22, 0x26, 0x35, 0x35, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x23, 0x34, 0x23, 0x22, 0x7, 0x15, 0x14, 0x33, 0x32, 0x37, 0x37, 0x15, 0x33, 0x32, 0x35, 0x34, 0x27, 0x5, 0x15, 0x23, 0x35, 0x21, 0x15, 0x23, 0x35, 0x5, 0x15, 0x33, 0x32, 0x35, 0x34, 0x23, 0x1, 0x33, 0x11, 0x14, 0x6, 0x23, 0x22, 0x26, 0x35, 0x33, 0x14, 0x33, 0x32, 0x36, 0x35, 0x5, 0x15, 0x23, 0x35, 0x21, 0x15, 0x23, 0x35, 0x5, 0x11, 0x33, 0x32, 0x16, 0x15, 0x14, 0x7, 0x16, 0x15, 0x14, 0x23, 0x1, 0x21, 0x35, 0x33, 0x35, 0x33, 0x1, 0x21, 0x11, 0x33, 0x15, 0x33, 0x5, 0x21, 0x35, 0x21, 0x5, 0x21, 0x35, 0x21, 0x5, 0x21, 0x35, 0x21, 0x6, 0x3E, 0xFE, 0xEA, 0x1, 0x16, 0xFE, 0x70, 0xFE, 0xEB, 0x1, 0x15, 0xFE, 0x70, 0xFE, 0xEC, 0x1, 0x14, 0x4, 0x60, 0xC7, 0x1, 0x36, 0x6F, 0xF9, 0x4D, 0x71, 0x1, 0x35, 0xC4, 0x71, 0x7, 0x93, 0x6F, 0xFB, 0xBA, 0x7F, 0x66, 0x67, 0x81, 0x80, 0x66, 0x67, 0x80, 0x5C, 0x8B, 0x88, 0x2, 0x8C, 0x87, 0x2, 0xFE, 0x5D, 0x76, 0x73, 0x3, 0xB3, 0x6F, 0xF9, 0x4D, 0x71, 0x3, 0x80, 0x7E, 0x67, 0x67, 0x2, 0x3E, 0x5C, 0x6B, 0x50, 0x58, 0x6D, 0x5D, 0x68, 0x29, 0x36, 0xFA, 0x35, 0x71, 0x7, 0x93, 0x6F, 0xFB, 0xFD, 0xBC, 0x62, 0x72, 0x54, 0x66, 0xD2, 0x3, 0xA2, 0xFE, 0xCA, 0xC7, 0x6F, 0xF9, 0xA2, 0xFE, 0xCB, 0x71, 0xC4, 0x3, 0x1F, 0xFE, 0xEB, 0x1, 0x15, 0xFE, 0x70, 0xFE, 0xEC, 0x1, 0x14, 0x3, 0x20, 0xFE, 0xEA, 0x1, 0x16, 0x5, 0x3A, 0x74, 0x74, 0x74, 0x74, 0x74, 0x74, 0x74, 0xFE, 0xE3, 0x1, 0x1D, 0x74, 0xFE, 0xDA, 0xFA, 0xFA, 0xFA, 0xFA, 0xFD, 0xC0, 0x61, 0x7A, 0x7A, 0x61, 0x70, 0x61, 0x7A, 0x7A, 0x61, 0x93, 0x8F, 0x74, 0x93, 0x8F, 0xFD, 0x97, 0x50, 0x46, 0x1, 0x31, 0xFC, 0xFC, 0xFC, 0xFC, 0xAC, 0xA9, 0x53, 0x56, 0x1, 0x33, 0xFE, 0x86, 0x4F, 0x5C, 0x51, 0x53, 0x5B, 0x37, 0x2B, 0x87, 0xF9, 0xF9, 0xF9, 0xF9, 0x26, 0x2, 0x25, 0x49, 0x4D, 0x53, 0x21, 0x1A, 0x66, 0x9B, 0xFD, 0x76, 0x71, 0xCA, 0xFE, 0xC5, 0x1, 0x3B, 0xCA, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x0, 0x5, 0x0, 0x5C, 0xFD, 0xD5, 0x7, 0xD7, 0x8, 0x73, 0x0, 0x3, 0x0, 0x7, 0x0, 0x1F, 0x0, 0x23, 0x0, 0x27, 0x0, 0x0, 0x1, 0x35, 0x33, 0x15, 0x9, 0x3, 0x3, 0x33, 0x34, 0x36, 0x37, 0x36, 0x36, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x7, 0x33, 0x36, 0x36, 0x33, 0x32, 0x15, 0x14, 0x7, 0x6, 0x6, 0x13, 0x35, 0x23, 0x15, 0x13, 0x35, 0x33, 0x15, 0x4, 0x1E, 0x4, 0xFC, 0x3A, 0x3, 0xBC, 0x3, 0xBF, 0xFC, 0x41, 0x77, 0xCA, 0x19, 0x29, 0x44, 0x62, 0xA7, 0x95, 0x7F, 0xB1, 0x2, 0xCB, 0x2, 0x3E, 0x27, 0x71, 0x5D, 0x46, 0x43, 0xC9, 0xCA, 0x7F, 0x4, 0x8, 0x6F, 0x4, 0x4, 0xFA, 0x14, 0x3, 0xCF, 0xFC, 0x31, 0xFC, 0x31, 0x2, 0xDE, 0x33, 0x3E, 0x1B, 0x25, 0x81, 0x52, 0x80, 0x97, 0x7D, 0x8D, 0x37, 0x30, 0x74, 0x5F, 0x3C, 0x31, 0x59, 0xFE, 0x9C, 0xAA, 0xAA, 0xFD, 0x48, 0x4, 0x4, 0x0, 0x2, 0x0, 0x74, 0x3, 0x89, 0x4, 0xC5, 0x5, 0xB9, 0x0, 0x1A, 0x0, 0x27, 0x0, 0x0, 0x1, 0x32, 0x37, 0x33, 0x6, 0x6, 0x23, 0x22, 0x26, 0x35, 0x35, 0x34, 0x36, 0x33, 0x32, 0x16, 0x17, 0x23, 0x26, 0x26, 0x23, 0x22, 0x6, 0x15, 0x15, 0x14, 0x16, 0x5, 0x3, 0x11, 0x23, 0x11, 0x33, 0x13, 0x13, 0x33, 0x11, 0x23, 0x11, 0x3, 0x3, 0xE9, 0x60, 0xC, 0x6F, 0x4, 0x7B, 0x5C, 0x77, 0x77, 0x77, 0x77, 0x62, 0x75, 0x5, 0x70, 0x4, 0x37, 0x31, 0x46, 0x39, 0x38, 0xFD, 0xCC, 0x8C, 0x6E, 0x88, 0x90, 0x92, 0x83, 0x6F, 0x87, 0x3, 0xE4, 0x61, 0x52, 0x6A, 0x95, 0x69, 0x35, 0x69, 0x94, 0x6B, 0x59, 0x2C, 0x3E, 0x67, 0x3C, 0x35, 0x3D, 0x66, 0x4F, 0x1, 0x5A, 0xFE, 0xA6, 0x2, 0x1B, 0xFE, 0x83, 0x1, 0x7D, 0xFD, 0xE5, 0x1, 0x4B, 0xFE, 0xB5, 0x0, 0x3, 0x0, 0x74, 0x3, 0x95, 0x4, 0xCC, 0x5, 0xB0, 0x0, 0x9, 0x0, 0x16, 0x0, 0x20, 0x0, 0x0, 0x1, 0x11, 0x33, 0x32, 0x36, 0x35, 0x35, 0x34, 0x26, 0x23, 0x1, 0x3, 0x11, 0x23, 0x11, 0x33, 0x13, 0x13, 0x33, 0x11, 0x23, 0x11, 0x3, 0x21, 0x11, 0x33, 0x32, 0x16, 0x15, 0x15, 0x14, 0x6, 0x23, 0x3, 0x87, 0x5D, 0x35, 0x44, 0x44, 0x35, 0xFD, 0x8A, 0x8C, 0x6E, 0x88, 0x90, 0x92, 0x83, 0x6F, 0x87, 0x1, 0x6E, 0xCB, 0x64, 0x84, 0x84, 0x64, 0x5, 0x57, 0xFE, 0x97, 0x4B, 0x39, 0x61, 0x39, 0x4B, 0xFE, 0x3E, 0x1, 0x5A, 0xFE, 0xA6, 0x2, 0x1B, 0xFE, 0x83, 0x1, 0x7D, 0xFD, 0xE5, 0x1, 0x4B, 0xFE, 0xB5, 0x2, 0x1B, 0x7B, 0x62, 0x61, 0x62, 0x7B, 0x0, 0x1, 0x0, 0x25, 0x0, 0x0, 0x4, 0x47, 0x5, 0xB0, 0x0, 0x9, 0x0, 0x0, 0x21, 0x23, 0x11, 0x1, 0x1, 0x37, 0x1, 0x17, 0x11, 0x33, 0x4, 0x47, 0xF3, 0xFE, 0x6C, 0xFE, 0x65, 0xA8, 0x1, 0x99, 0xEE, 0xF3, 0x1, 0x1F, 0x1, 0x74, 0x2, 0xB7, 0x66, 0xFD, 0x4E, 0xDC, 0x3, 0x8E, 0x0, 0x1, 0x0, 0x3C, 0x0, 0x0, 0x2, 0xB2, 0x3, 0x20, 0x0, 0x15, 0x0, 0x0, 0x25, 0x15, 0x21, 0x35, 0x1, 0x36, 0x35, 0x34, 0x23, 0x22, 0x6, 0x15, 0x23, 0x34, 0x36, 0x20, 0x16, 0x15, 0x14, 0x6, 0x7, 0x7, 0x2, 0xB2, 0xFD, 0x9C, 0x1, 0x2C, 0x63, 0x6A, 0x40, 0x3C, 0xBB, 0xA2, 0x1, 0x1C, 0x9E, 0x67, 0x61, 0x91, 0x95, 0x95, 0x7E, 0x1, 0x13, 0x5C, 0x3F, 0x5F, 0x45, 0x32, 0x6E, 0x9E, 0x81, 0x72, 0x52, 0x80, 0x51, 0x75, 0x0, 0x1, 0x0, 0x81, 0x0, 0x0, 0x2, 0x3, 0x3, 0x14, 0x0, 0x6, 0x0, 0x0, 0x1, 0x11, 0x23, 0x11, 0x7, 0x35, 0x25, 0x2, 0x3, 0xBA, 0xC8, 0x1, 0x6F, 0x3, 0x14, 0xFC, 0xEC, 0x2, 0x3B, 0x31, 0x93, 0x77, 0x0, 0x2, 0x0, 0x4C, 0xFF, 0xF5, 0x2, 0xAA, 0x3, 0x20, 0x0, 0xD, 0x0, 0x17, 0x0, 0x0, 0x1, 0x14, 0x6, 0x23, 0x22, 0x26, 0x35, 0x35, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x27, 0x34, 0x23, 0x22, 0x7, 0x15, 0x14, 0x33, 0x32, 0x37, 0x2, 0xAA, 0xA8, 0x86, 0x87, 0xA9, 0xA8, 0x86, 0x87, 0xA9, 0xBA, 0x76, 0x72, 0x2, 0x76, 0x70, 0x4, 0x1, 0x3E, 0xA9, 0xA0, 0xA0, 0xA9, 0x98, 0xA8, 0xA2, 0xA2, 0xA8, 0xB, 0xA9, 0xA3, 0xB4, 0xA9, 0x9B, 0x0, 0x2, 0x0, 0x50, 0xFF, 0xF5, 0x3, 0xB7, 0x4, 0x9D, 0x0, 0x13, 0x0, 0x20, 0x0, 0x0, 0x5, 0x35, 0x32, 0x36, 0x37, 0x6, 0x23, 0x22, 0x26, 0x35, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x15, 0x10, 0x0, 0x21, 0x13, 0x32, 0x36, 0x37, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x14, 0x16, 0x1, 0x18, 0xDB, 0xC0, 0xF, 0x63, 0x92, 0xBC, 0xC1, 0xE7, 0xCA, 0xD0, 0xE6, 0xFE, 0xCA, 0xFE, 0xAA, 0xD9, 0x44, 0x65, 0x18, 0x72, 0x52, 0x5B, 0x65, 0x61, 0xB, 0xC3, 0x8E, 0x90, 0x5C, 0xDA, 0xAC, 0xAA, 0xF3, 0xFF, 0xDD, 0x47, 0xFE, 0xD0, 0xFE, 0xAB, 0x2, 0x3D, 0x3C, 0x29, 0x58, 0x77, 0x74, 0x81, 0x59, 0x56, 0x78, 0x0, 0x3, 0x0, 0x59, 0xFF, 0xF0, 0x3, 0xC4, 0x4, 0x9D, 0x0, 0x14, 0x0, 0x1F, 0x0, 0x2A, 0x0, 0x0, 0x4, 0x26, 0x35, 0x34, 0x36, 0x37, 0x26, 0x35, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x7, 0x16, 0x16, 0x15, 0x14, 0x6, 0x3, 0x34, 0x26, 0x23, 0x22, 0x15, 0x14, 0x16, 0x33, 0x32, 0x36, 0x13, 0x34, 0x26, 0x22, 0x6, 0x15, 0x14, 0x16, 0x33, 0x32, 0x36, 0x1, 0x55, 0xFC, 0x6C, 0x5C, 0xAC, 0xE6, 0xB2, 0xB3, 0xE7, 0xAC, 0x5C, 0x6D, 0xFB, 0x15, 0x5A, 0x4D, 0xA4, 0x58, 0x4E, 0x4D, 0x58, 0x1D, 0x6C, 0xB0, 0x69, 0x69, 0x5A, 0x58, 0x6A, 0x10, 0xAA, 0xA6, 0x61, 0x90, 0x28, 0x54, 0xAA, 0x9E, 0xA8, 0xA8, 0x9E, 0xAA, 0x55, 0x27, 0x90, 0x61, 0xA6, 0xAA, 0x3, 0x5A, 0x41, 0x4F, 0x90, 0x43, 0x51, 0x51, 0xFE, 0x4C, 0x4A, 0x56, 0x56, 0x4A, 0x4B, 0x55, 0x55, 0x0, 0x1, 0x0, 0x3A, 0x0, 0x0, 0x3, 0xD0, 0x4, 0x8D, 0x0, 0x6, 0x0, 0x0, 0x1, 0x15, 0x1, 0x21, 0x1, 0x21, 0x35, 0x3, 0xD0, 0xFD, 0xFF, 0xFF, 0x0, 0x2, 0x2, 0xFD, 0x69, 0x4, 0x8D, 0x87, 0xFB, 0xFA, 0x3, 0xC9, 0xC4, 0x0, 0x2, 0x0, 0x61, 0xFF, 0xF0, 0x3, 0xD7, 0x4, 0x9A, 0x0, 0x13, 0x0, 0x1F, 0x0, 0x0, 0x5, 0x22, 0x26, 0x35, 0x35, 0x10, 0x0, 0x21, 0x33, 0x15, 0x7, 0x4, 0x3, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x6, 0x27, 0x32, 0x36, 0x34, 0x26, 0x23, 0x22, 0x6, 0x7, 0x15, 0x14, 0x16, 0x2, 0x25, 0xD3, 0xF1, 0x1, 0x46, 0x1, 0x4D, 0x20, 0x3C, 0xFE, 0x9F, 0x21, 0x6B, 0xA1, 0xBD, 0xB8, 0xE8, 0xCE, 0x5B, 0x6A, 0x65, 0x60, 0x47, 0x6E, 0x19, 0x76, 0x10, 0xFE, 0xD4, 0x4E, 0x1, 0x2C, 0x1, 0x5E, 0xC7, 0x1, 0x11, 0xFE, 0xD8, 0x6D, 0xE4, 0xA2, 0xAA, 0xE6, 0xC3, 0x74, 0xB0, 0x6E, 0x40, 0x2C, 0x2D, 0x7D, 0x7C, 0x0, 0x1, 0x0, 0x67, 0xFF, 0xF0, 0x3, 0xD2, 0x4, 0x8D, 0x0, 0x1C, 0x0, 0x0, 0x1, 0x27, 0x13, 0x21, 0x15, 0x21, 0x7, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x6, 0x23, 0x22, 0x24, 0x27, 0x33, 0x16, 0x33, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x1, 0x4A, 0xC2, 0x49, 0x2, 0xC4, 0xFE, 0x5, 0x21, 0x68, 0x62, 0xBC, 0xD3, 0xD5, 0xDF, 0xA8, 0xFE, 0xFB, 0xA, 0xEF, 0xF, 0xB9, 0x66, 0x5B, 0x70, 0x69, 0x4E, 0x4E, 0x2, 0xC, 0x2F, 0x2, 0x52, 0xC7, 0xF3, 0x2B, 0xCC, 0xB5, 0x9E, 0xEF, 0xAF, 0xA1, 0x8D, 0x77, 0x57, 0x59, 0x71, 0x28, 0x0, 0x2, 0x0, 0x31, 0x0, 0x0, 0x3, 0xED, 0x4, 0x8D, 0x0, 0x3, 0x0, 0xE, 0x0, 0x0, 0x1, 0x21, 0x11, 0x7, 0x1, 0x23, 0x15, 0x23, 0x35, 0x21, 0x27, 0x1, 0x33, 0x11, 0x33, 0x1, 0x24, 0x1, 0x3B, 0x14, 0x1, 0xA2, 0x9B, 0xF3, 0xFD, 0xDB, 0x9, 0x2, 0x2A, 0xF7, 0x9B, 0x1, 0xBD, 0x1, 0x9A, 0x21, 0xFD, 0xC3, 0xF9, 0xF9, 0x9A, 0x2, 0xFA, 0xFD, 0x30, 0x0, 0x1, 0x0, 0x3F, 0xFF, 0xF0, 0x3, 0xBD, 0x4, 0x9D, 0x0, 0x26, 0x0, 0x0, 0x5, 0x22, 0x24, 0x35, 0x33, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x34, 0x27, 0x23, 0x35, 0x33, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x23, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x6, 0x7, 0x16, 0x15, 0x14, 0x4, 0x1, 0xF6, 0xA8, 0xFE, 0xF1, 0xF3, 0x6E, 0x5E, 0x62, 0x69, 0xDE, 0x83, 0x7F, 0x69, 0x66, 0x5A, 0x61, 0x51, 0x6A, 0xF2, 0xF4, 0xB4, 0xC2, 0xF0, 0x62, 0x5F, 0xD6, 0xFE, 0xFB, 0x10, 0xA5, 0xB3, 0x40, 0x55, 0x57, 0x49, 0xA5, 0x2, 0xAF, 0x58, 0x46, 0x40, 0x53, 0x45, 0x3C, 0x95, 0xAF, 0xA9, 0xA3, 0x4F, 0x86, 0x26, 0x3E, 0xD2, 0xA3, 0xB3, 0x0, 0x1, 0x0, 0x43, 0x0, 0x0, 0x3, 0xD8, 0x4, 0x9D, 0x0, 0x17, 0x0, 0x0, 0x25, 0x15, 0x21, 0x35, 0x1, 0x36, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x23, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x6, 0x7, 0x5, 0x3, 0xD8, 0xFC, 0x85, 0x1, 0xA9, 0xB1, 0x5C, 0x54, 0x6C, 0x65, 0xF3, 0xEC, 0xD3, 0xC8, 0xE0, 0x97, 0x82, 0xFF, 0x0, 0xC3, 0xC3, 0xA6, 0x1, 0x8E, 0x9E, 0x6C, 0x44, 0x58, 0x6C, 0x53, 0x9F, 0xE3, 0xBD, 0x9F, 0x76, 0xBF, 0x77, 0xD2, 0x0, 0x1, 0x0, 0x96, 0x0, 0x0, 0x2, 0xC4, 0x4, 0x8D, 0x0, 0x6, 0x0, 0x0, 0x1, 0x11, 0x23, 0x11, 0x5, 0x35, 0x25, 0x2, 0xC4, 0xF3, 0xFE, 0xC5, 0x2, 0x12, 0x4, 0x8D, 0xFB, 0x73, 0x3, 0x70, 0x53, 0xC3, 0xAD, 0x0, 0x2, 0x0, 0x59, 0xFF, 0xF0, 0x3, 0xC3, 0x4, 0x9D, 0x0, 0xD, 0x0, 0x17, 0x0, 0x0, 0x1, 0x10, 0x6, 0x23, 0x22, 0x26, 0x27, 0x35, 0x34, 0x36, 0x33, 0x32, 0x16, 0x17, 0x27, 0x10, 0x23, 0x22, 0x3, 0x11, 0x10, 0x33, 0x32, 0x13, 0x3, 0xC3, 0xEF, 0xC5, 0xC2, 0xF3, 0x1, 0xF1, 0xC3, 0xC4, 0xF1, 0x1, 0xF3, 0xC3, 0xBC, 0x5, 0xC3, 0xBB, 0x6, 0x1, 0xE2, 0xFF, 0x0, 0xF2, 0xF0, 0xFE, 0xCE, 0xFE, 0xF3, 0xF1, 0xFC, 0x12, 0x1, 0x17, 0xFE, 0xF7, 0xFE, 0xFD, 0xFE, 0xE6, 0x1, 0x6, 0x0, 0x1, 0x0, 0x41, 0x0, 0x0, 0x3, 0xF3, 0x4, 0x8D, 0x0, 0x9, 0x0, 0x0, 0x33, 0x35, 0x1, 0x21, 0x35, 0x21, 0x15, 0x1, 0x21, 0x15, 0x41, 0x2, 0x6D, 0xFD, 0x95, 0x3, 0x9F, 0xFD, 0x97, 0x2, 0x7A, 0x8E, 0x3, 0x3B, 0xC4, 0x89, 0xFC, 0xBF, 0xC3, 0x0, 0x1, 0x0, 0x5, 0x0, 0x0, 0x4, 0x37, 0x4, 0x8D, 0x0, 0x8, 0x0, 0x0, 0x21, 0x23, 0x11, 0x1, 0x21, 0x1, 0x1, 0x21, 0x1, 0x2, 0x94, 0xF3, 0xFE, 0x64, 0x1, 0xB, 0x1, 0xE, 0x1, 0xE, 0x1, 0xB, 0xFE, 0x5D, 0x1, 0xA3, 0x2, 0xEA, 0xFD, 0xEE, 0x2, 0x12, 0xFD, 0x9, 0x0, 0x1, 0x0, 0x16, 0x0, 0x0, 0x4, 0x4A, 0x4, 0x8D, 0x0, 0xB, 0x0, 0x0, 0x1, 0x13, 0x13, 0x21, 0x1, 0x1, 0x21, 0x3, 0x3, 0x21, 0x1, 0x1, 0x1, 0x38, 0xF0, 0xF2, 0x1, 0x1B, 0xFE, 0x89, 0x1, 0x8C, 0xFE, 0xE0, 0xFF, 0xFA, 0xFE, 0xE5, 0x1, 0x81, 0xFE, 0x87, 0x4, 0x8D, 0xFE, 0x6E, 0x1, 0x92, 0xFD, 0xBE, 0xFD, 0xB5, 0x1, 0x99, 0xFE, 0x67, 0x2, 0x4B, 0x2, 0x42, 0x0, 0x1, 0x0, 0x29, 0x0, 0x0, 0x5, 0xE6, 0x4, 0x8D, 0x0, 0xC, 0x0, 0x0, 0x21, 0x1, 0x33, 0x13, 0x13, 0x33, 0x13, 0x13, 0x33, 0x1, 0x23, 0x3, 0x3, 0x1, 0x42, 0xFE, 0xE7, 0xEC, 0xB0, 0xD8, 0xD6, 0xD7, 0xAF, 0xED, 0xFE, 0xE6, 0xEB, 0xD9, 0xDB, 0x4, 0x8D, 0xFC, 0x9D, 0x3, 0x63, 0xFC, 0x9F, 0x3, 0x61, 0xFB, 0x73, 0x3, 0x42, 0xFC, 0xBE, 0x0, 0x1, 0x0, 0x9, 0x0, 0x0, 0x4, 0x72, 0x4, 0x8D, 0x0, 0x8, 0x0, 0x0, 0x21, 0x1, 0x21, 0x1, 0x17, 0x37, 0x1, 0x21, 0x1, 0x1, 0xC2, 0xFE, 0x47, 0x1, 0x2, 0x1, 0x1F, 0x14, 0x12, 0x1, 0x21, 0x1, 0x1, 0xFE, 0x47, 0x4, 0x8D, 0xFC, 0xAC, 0x4F, 0x4C, 0x3, 0x57, 0xFB, 0x73, 0x0, 0x1, 0x0, 0x67, 0xFF, 0xF0, 0x4, 0x1E, 0x4, 0x8D, 0x0, 0x10, 0x0, 0x0, 0x1, 0x33, 0x11, 0x14, 0x4, 0x23, 0x22, 0x24, 0x35, 0x11, 0x33, 0x11, 0x14, 0x16, 0x33, 0x32, 0x37, 0x3, 0x2B, 0xF3, 0xFE, 0xF0, 0xCB, 0xD0, 0xFE, 0xF4, 0xF2, 0x7E, 0x6C, 0xE4, 0x4, 0x4, 0x8D, 0xFD, 0x0, 0xCA, 0xD3, 0xD3, 0xCA, 0x3, 0x0, 0xFD, 0x0, 0x73, 0x67, 0xD2, 0x0, 0x1, 0x0, 0x25, 0x0, 0x0, 0x4, 0x16, 0x4, 0x8D, 0x0, 0x7, 0x0, 0x0, 0x1, 0x21, 0x11, 0x23, 0x11, 0x21, 0x35, 0x21, 0x4, 0x16, 0xFE, 0x7E, 0xF2, 0xFE, 0x83, 0x3, 0xF1, 0x3, 0xC9, 0xFC, 0x37, 0x3, 0xC9, 0xC4, 0x0, 0x1, 0x0, 0x3F, 0xFF, 0xF0, 0x3, 0xEF, 0x4, 0x9D, 0x0, 0x26, 0x0, 0x0, 0x1, 0x34, 0x26, 0x27, 0x26, 0x26, 0x35, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x23, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x14, 0x16, 0x17, 0x16, 0x16, 0x15, 0x14, 0x6, 0x23, 0x22, 0x26, 0x26, 0x35, 0x33, 0x14, 0x16, 0x33, 0x32, 0x36, 0x3, 0x2, 0x5F, 0x92, 0xCE, 0xDC, 0xF5, 0xC4, 0xD5, 0xFA, 0xF3, 0x6D, 0x70, 0x6A, 0x63, 0x7B, 0x8A, 0xCB, 0xCD, 0xF6, 0xCD, 0x79, 0xE3, 0x91, 0xF3, 0x8C, 0x75, 0x6D, 0x62, 0x1, 0x32, 0x3F, 0x51, 0x23, 0x32, 0xA2, 0x97, 0x93, 0xBA, 0xCA, 0x9D, 0x49, 0x65, 0x56, 0x38, 0x3C, 0x4C, 0x22, 0x32, 0xAC, 0x97, 0x99, 0xAE, 0x50, 0xA7, 0x82, 0x67, 0x5A, 0x53, 0x0, 0x2, 0x0, 0x76, 0x0, 0x0, 0x4, 0x3A, 0x4, 0x8D, 0x0, 0x8, 0x0, 0x17, 0x0, 0x0, 0x1, 0x11, 0x33, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x13, 0x3, 0x23, 0x11, 0x23, 0x11, 0x21, 0x32, 0x16, 0x15, 0x14, 0x6, 0x7, 0x1, 0x15, 0x1, 0x69, 0xD6, 0x6B, 0x6C, 0x69, 0x6F, 0xF7, 0xEC, 0xE0, 0xF3, 0x1, 0xC8, 0xD8, 0xF3, 0x78, 0x68, 0x1, 0x11, 0x3, 0xC9, 0xFE, 0xA3, 0x5E, 0x4F, 0x50, 0x60, 0xFC, 0x37, 0x1, 0xA9, 0xFE, 0x57, 0x4, 0x8D, 0xB5, 0xAC, 0x7F, 0x9B, 0x2C, 0xFE, 0x25, 0xB, 0x0, 0x2, 0x0, 0x4D, 0xFF, 0x2F, 0x4, 0x6D, 0x4, 0x9D, 0x0, 0x12, 0x0, 0x20, 0x0, 0x0, 0x5, 0x25, 0x6, 0x23, 0x22, 0x0, 0x11, 0x35, 0x10, 0x0, 0x33, 0x32, 0x0, 0x11, 0x15, 0x14, 0x6, 0x7, 0x17, 0x3, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x15, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x3, 0xCE, 0xFE, 0xF7, 0x31, 0x36, 0xE9, 0xFE, 0xD8, 0x1, 0x26, 0xE9, 0xEC, 0x1, 0x25, 0x6F, 0x62, 0xCE, 0xEF, 0x97, 0x88, 0x85, 0x98, 0x9A, 0x85, 0x87, 0x96, 0xD1, 0xC9, 0x8, 0x1, 0x32, 0x1, 0xA, 0x34, 0x1, 0xA, 0x1, 0x33, 0xFE, 0xCD, 0xFE, 0xF6, 0x34, 0xA1, 0xF2, 0x49, 0x99, 0x2, 0xAB, 0xB5, 0xC1, 0xC1, 0xB5, 0x36, 0xB5, 0xC3, 0xC3, 0xB5, 0x0, 0x2, 0x0, 0x76, 0x0, 0x0, 0x4, 0x2C, 0x4, 0x8D, 0x0, 0x8, 0x0, 0x13, 0x0, 0x0, 0x1, 0x11, 0x33, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x3, 0x11, 0x23, 0x11, 0x21, 0x32, 0x16, 0x15, 0x14, 0x6, 0x23, 0x1, 0x69, 0xF3, 0x74, 0x6A, 0x6A, 0x74, 0xF3, 0xF3, 0x1, 0xE6, 0xDC, 0xF4, 0xF4, 0xDC, 0x3, 0xC9, 0xFE, 0x95, 0x60, 0x4C, 0x4B, 0x74, 0xFD, 0xD1, 0xFE, 0x66, 0x4, 0x8D, 0xDA, 0xA7, 0xA9, 0xC9, 0x0, 0x2, 0x0, 0x50, 0xFF, 0xF0, 0x4, 0x6F, 0x4, 0x9D, 0x0, 0xD, 0x0, 0x1B, 0x0, 0x0, 0x1, 0x10, 0x0, 0x23, 0x22, 0x0, 0x11, 0x35, 0x10, 0x0, 0x33, 0x32, 0x0, 0x11, 0x27, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x15, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x4, 0x6F, 0xFE, 0xDE, 0xEC, 0xE9, 0xFE, 0xD8, 0x1, 0x26, 0xE9, 0xEC, 0x1, 0x24, 0xF2, 0x97, 0x87, 0x85, 0x98, 0x9A, 0x85, 0x87, 0x95, 0x2, 0x2C, 0xFE, 0xF6, 0xFE, 0xCE, 0x1, 0x32, 0x1, 0xA, 0x34, 0x1, 0xA, 0x1, 0x33, 0xFE, 0xCD, 0xFE, 0xF6, 0x2, 0xB5, 0xC1, 0xC1, 0xB5, 0x36, 0xB5, 0xC3, 0xC3, 0xB5, 0x0, 0x1, 0x0, 0x76, 0x0, 0x0, 0x4, 0x67, 0x4, 0x8D, 0x0, 0x9, 0x0, 0x0, 0x1, 0x11, 0x23, 0x1, 0x11, 0x23, 0x11, 0x33, 0x1, 0x11, 0x4, 0x67, 0xF2, 0xFD, 0xF4, 0xF3, 0xF3, 0x2, 0xC, 0x4, 0x8D, 0xFB, 0x73, 0x3, 0x1C, 0xFC, 0xE4, 0x4, 0x8D, 0xFC, 0xE4, 0x3, 0x1C, 0x0, 0x1, 0x0, 0x76, 0x0, 0x0, 0x5, 0x90, 0x4, 0x8D, 0x0, 0xE, 0x0, 0x0, 0x1, 0x11, 0x23, 0x11, 0x21, 0x1, 0x1, 0x21, 0x11, 0x23, 0x11, 0x13, 0x1, 0x23, 0x1, 0x1, 0x69, 0xF3, 0x1, 0x3D, 0x1, 0x50, 0x1, 0x4F, 0x1, 0x3E, 0xF3, 0x19, 0xFE, 0xA1, 0xA9, 0xFE, 0xA2, 0x1, 0x3C, 0xFE, 0xC4, 0x4, 0x8D, 0xFC, 0xB6, 0x3, 0x4A, 0xFB, 0x73, 0x1, 0x3C, 0x2, 0x36, 0xFC, 0x8E, 0x3, 0x71, 0x0, 0x1, 0x0, 0x76, 0x0, 0x0, 0x3, 0x94, 0x4, 0x8D, 0x0, 0x5, 0x0, 0x0, 0x33, 0x11, 0x33, 0x11, 0x21, 0x15, 0x76, 0xF3, 0x2, 0x2B, 0x4, 0x8D, 0xFC, 0x36, 0xC3, 0x0, 0x1, 0x0, 0x76, 0x0, 0x0, 0x4, 0x69, 0x4, 0x8D, 0x0, 0xC, 0x0, 0x0, 0x21, 0x1, 0x7, 0x11, 0x23, 0x11, 0x33, 0x11, 0x37, 0x1, 0x21, 0x1, 0x1, 0x3, 0x47, 0xFE, 0xAA, 0x88, 0xF3, 0xF3, 0x6F, 0x1, 0x4E, 0x1, 0x2D, 0xFE, 0x42, 0x1, 0xD4, 0x1, 0xDB, 0x84, 0xFE, 0xA9, 0x4, 0x8D, 0xFD, 0xFD, 0x87, 0x1, 0x7C, 0xFD, 0xF7, 0xFD, 0x7C, 0x0, 0x1, 0x0, 0x25, 0xFF, 0xF0, 0x3, 0x65, 0x4, 0x8D, 0x0, 0xD, 0x0, 0x0, 0x1, 0x33, 0x11, 0x14, 0x6, 0x23, 0x22, 0x26, 0x35, 0x33, 0x14, 0x33, 0x32, 0x37, 0x2, 0x71, 0xF4, 0xEA, 0xAB, 0xBB, 0xF0, 0xF3, 0xB8, 0xA0, 0x1, 0x4, 0x8D, 0xFC, 0xE1, 0xB5, 0xC9, 0xB3, 0xBD, 0xAD, 0xB9, 0x0, 0x1, 0x0, 0x85, 0x0, 0x0, 0x1, 0x78, 0x4, 0x8D, 0x0, 0x3, 0x0, 0x0, 0x1, 0x11, 0x23, 0x11, 0x1, 0x78, 0xF3, 0x4, 0x8D, 0xFB, 0x73, 0x4, 0x8D, 0x0, 0x1, 0x0, 0x76, 0x0, 0x0, 0x4, 0x68, 0x4, 0x8D, 0x0, 0xB, 0x0, 0x0, 0x21, 0x11, 0x21, 0x11, 0x23, 0x11, 0x33, 0x11, 0x21, 0x11, 0x33, 0x11, 0x3, 0x76, 0xFD, 0xF3, 0xF3, 0xF3, 0x2, 0xD, 0xF2, 0x1, 0xDB, 0xFE, 0x25, 0x4, 0x8D, 0xFE, 0x12, 0x1, 0xEE, 0xFB, 0x73, 0x0, 0x1, 0x0, 0x55, 0xFF, 0xF0, 0x4, 0x49, 0x4, 0x9D, 0x0, 0x1E, 0x0, 0x0, 0x1, 0x11, 0x6, 0x6, 0x23, 0x22, 0x0, 0x11, 0x35, 0x10, 0x0, 0x33, 0x32, 0x16, 0x17, 0x23, 0x26, 0x26, 0x23, 0x20, 0x3, 0x15, 0x14, 0x16, 0x33, 0x32, 0x36, 0x37, 0x35, 0x23, 0x35, 0x4, 0x49, 0x2B, 0xDD, 0xD0, 0xF0, 0xFE, 0xD4, 0x1, 0x1A, 0xF0, 0xEF, 0xE5, 0x15, 0xEC, 0x10, 0x6F, 0x79, 0xFE, 0xEC, 0x8, 0xA2, 0x92, 0x65, 0x60, 0x15, 0xF8, 0x2, 0x65, 0xFE, 0x2E, 0x31, 0x72, 0x1, 0x26, 0x1, 0xE, 0x45, 0x1, 0xD, 0x1, 0x27, 0xD9, 0xAA, 0x58, 0x68, 0xFE, 0xA5, 0x5B, 0xB5, 0xBC, 0x27, 0x12, 0xC7, 0xB2, 0x0, 0x1, 0x0, 0x76, 0x0, 0x0, 0x3, 0x9E, 0x4, 0x8D, 0x0, 0x9, 0x0, 0x0, 0x1, 0x21, 0x11, 0x23, 0x11, 0x21, 0x15, 0x21, 0x11, 0x21, 0x3, 0x5C, 0xFE, 0xD, 0xF3, 0x3, 0x28, 0xFD, 0xCB, 0x1, 0xF3, 0x1, 0xDB, 0xFE, 0x25, 0x4, 0x8D, 0xC4, 0xFE, 0xD6, 0x0, 0x1, 0x0, 0x3F, 0xFF, 0x13, 0x3, 0xEF, 0x5, 0x73, 0x0, 0x2B, 0x0, 0x0, 0x5, 0x23, 0x35, 0x26, 0x26, 0x35, 0x33, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x34, 0x26, 0x27, 0x26, 0x26, 0x35, 0x34, 0x36, 0x37, 0x35, 0x33, 0x15, 0x16, 0x16, 0x15, 0x23, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x14, 0x16, 0x17, 0x16, 0x16, 0x15, 0x14, 0x6, 0x7, 0x2, 0x7F, 0xA0, 0xA2, 0xFE, 0xF3, 0x8C, 0x75, 0x6D, 0x62, 0x5F, 0x92, 0xCE, 0xDC, 0xCF, 0xA9, 0xA0, 0xAB, 0xC5, 0xF3, 0x6D, 0x70, 0x6A, 0x63, 0x7B, 0x8A, 0xCB, 0xCD, 0xC7, 0xA9, 0xED, 0xE1, 0x11, 0xB6, 0xAE, 0x67, 0x5A, 0x53, 0x37, 0x3F, 0x51, 0x23, 0x32, 0xA2, 0x97, 0x86, 0xB4, 0x10, 0xD9, 0xDC, 0x16, 0xC1, 0x8A, 0x49, 0x65, 0x56, 0x38, 0x3C, 0x4C, 0x22, 0x32, 0xAC, 0x97, 0x89, 0xA9, 0x11, 0x0, 0x1, 0x0, 0x39, 0x0, 0x0, 0x4, 0x1A, 0x4, 0x9D, 0x0, 0x1F, 0x0, 0x0, 0x21, 0x21, 0x35, 0x33, 0x36, 0x36, 0x27, 0x35, 0x23, 0x35, 0x33, 0x27, 0x26, 0x36, 0x33, 0x32, 0x16, 0x15, 0x23, 0x34, 0x26, 0x23, 0x22, 0x6, 0x17, 0x17, 0x21, 0x15, 0x21, 0x16, 0x7, 0x21, 0x4, 0x1A, 0xFC, 0x64, 0xA, 0x35, 0x1F, 0x3, 0xA0, 0x9B, 0x3, 0x7, 0xDD, 0xBA, 0xCD, 0xCE, 0xF3, 0x62, 0x45, 0x4C, 0x57, 0x4, 0x4, 0x1, 0x81, 0xFE, 0x85, 0x7, 0x50, 0x2, 0x96, 0xC4, 0xE, 0xBA, 0x53, 0x7, 0x93, 0x69, 0xD2, 0xE9, 0xDD, 0xB3, 0x71, 0x5A, 0x7E, 0x78, 0x69, 0x93, 0xB0, 0x72, 0x0, 0x1, 0x0, 0xA, 0x0, 0x0, 0x3, 0x9A, 0x4, 0x8D, 0x0, 0x18, 0x0, 0x0, 0x25, 0x21, 0x15, 0x23, 0x35, 0x21, 0x35, 0x21, 0x35, 0x27, 0x21, 0x35, 0x33, 0x1, 0x21, 0x13, 0x13, 0x33, 0x1, 0x33, 0x15, 0x21, 0x7, 0x15, 0x21, 0x3, 0x53, 0xFE, 0xF4, 0xF2, 0xFE, 0xF5, 0x1, 0xB, 0x4, 0xFE, 0xF9, 0xC5, 0xFE, 0xFB, 0x1, 0x1, 0xC7, 0xC9, 0xFF, 0xFE, 0xFA, 0xBF, 0xFF, 0x0, 0xC, 0x1, 0xC, 0xD9, 0xD9, 0xD9, 0x92, 0x3D, 0xA, 0x93, 0x2, 0x48, 0xFE, 0x1, 0x1, 0xFF, 0xFD, 0xB8, 0x93, 0x1A, 0x2D, 0x0, 0x1, 0x0, 0x76, 0x0, 0x0, 0x3, 0x97, 0x4, 0x8D, 0x0, 0x5, 0x0, 0x0, 0x1, 0x21, 0x11, 0x23, 0x11, 0x21, 0x3, 0x97, 0xFD, 0xD2, 0xF3, 0x3, 0x21, 0x3, 0xC9, 0xFC, 0x37, 0x4, 0x8D, 0x0, 0x2, 0x0, 0x9, 0x0, 0x0, 0x4, 0x72, 0x4, 0x8D, 0x0, 0x3, 0x0, 0x8, 0x0, 0x0, 0x33, 0x1, 0x33, 0x1, 0x1, 0x3, 0x21, 0x3, 0x27, 0x9, 0x1, 0xB9, 0xF7, 0x1, 0xB9, 0xFD, 0xB8, 0xDD, 0x1, 0xE2, 0xDF, 0x12, 0x4, 0x8D, 0xFB, 0x73, 0x3, 0x54, 0xFD, 0x70, 0x2, 0x93, 0x4C, 0x0, 0x3, 0x0, 0x50, 0xFF, 0xF0, 0x4, 0x6F, 0x4, 0x9D, 0x0, 0xD, 0x0, 0x1B, 0x0, 0x1F, 0x0, 0x0, 0x1, 0x10, 0x0, 0x23, 0x22, 0x0, 0x11, 0x35, 0x10, 0x0, 0x33, 0x32, 0x0, 0x11, 0x27, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x15, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x27, 0x15, 0x21, 0x35, 0x4, 0x6F, 0xFE, 0xDE, 0xEC, 0xE9, 0xFE, 0xD8, 0x1, 0x26, 0xE9, 0xEC, 0x1, 0x24, 0xF2, 0x97, 0x87, 0x85, 0x98, 0x9A, 0x85, 0x87, 0x95, 0x45, 0xFE, 0x5A, 0x2, 0x2C, 0xFE, 0xF6, 0xFE, 0xCE, 0x1, 0x32, 0x1, 0xA, 0x34, 0x1, 0xA, 0x1, 0x33, 0xFE, 0xCD, 0xFE, 0xF6, 0x2, 0xB5, 0xC1, 0xC1, 0xB5, 0x36, 0xB5, 0xC3, 0xC3, 0xB5, 0x77, 0xC4, 0xC4, 0x0, 0x1, 0x0, 0x9, 0x0, 0x0, 0x4, 0x72, 0x4, 0x8D, 0x0, 0x8, 0x0, 0x0, 0x21, 0x21, 0x1, 0x33, 0x1, 0x21, 0x1, 0x27, 0x7, 0x1, 0xB, 0xFE, 0xFE, 0x1, 0xB9, 0xF7, 0x1, 0xB9, 0xFE, 0xFF, 0xFE, 0xDF, 0x12, 0x14, 0x4, 0x8D, 0xFB, 0x73, 0x3, 0x57, 0x4C, 0x4F, 0x0, 0x3, 0x0, 0x43, 0x0, 0x0, 0x3, 0x56, 0x4, 0x8D, 0x0, 0x3, 0x0, 0x7, 0x0, 0xB, 0x0, 0x0, 0x1, 0x15, 0x21, 0x35, 0x1, 0x15, 0x21, 0x35, 0x1, 0x15, 0x21, 0x35, 0x3, 0x56, 0xFC, 0xED, 0x2, 0xC9, 0xFD, 0x7E, 0x2, 0xCC, 0xFC, 0xED, 0x4, 0x8D, 0xC4, 0xC4, 0xFE, 0x32, 0xC3, 0xC3, 0xFE, 0x5, 0xC4, 0xC4, 0x0, 0x1, 0x0, 0x76, 0x0, 0x0, 0x4, 0x62, 0x4, 0x8D, 0x0, 0x7, 0x0, 0x0, 0x21, 0x11, 0x21, 0x11, 0x23, 0x11, 0x21, 0x11, 0x3, 0x6E, 0xFD, 0xFB, 0xF3, 0x3, 0xEC, 0x3, 0xC9, 0xFC, 0x37, 0x4, 0x8D, 0xFB, 0x73, 0x0, 0x1, 0x0, 0x45, 0x0, 0x1, 0x3, 0xE7, 0x4, 0x8D, 0x0, 0xC, 0x0, 0x0, 0x37, 0x35, 0x1, 0x1, 0x35, 0x21, 0x15, 0x21, 0x1, 0x15, 0x1, 0x21, 0x15, 0x45, 0x1, 0x3E, 0xFE, 0xC2, 0x3, 0x7B, 0xFD, 0xBB, 0x1, 0x16, 0xFE, 0xE5, 0x2, 0x71, 0x1, 0x98, 0x1, 0xB6, 0x1, 0xA7, 0x97, 0xC4, 0xFE, 0x90, 0x14, 0xFE, 0x7F, 0xC3, 0x0, 0x3, 0x0, 0x51, 0x0, 0x0, 0x5, 0x4D, 0x4, 0x8D, 0x0, 0x11, 0x0, 0x18, 0x0, 0x1F, 0x0, 0x0, 0x21, 0x23, 0x35, 0x26, 0x24, 0x35, 0x34, 0x24, 0x37, 0x35, 0x33, 0x15, 0x16, 0x4, 0x15, 0x14, 0x4, 0x7, 0x1, 0x6, 0x16, 0x17, 0x11, 0x6, 0x6, 0x5, 0x34, 0x26, 0x27, 0x11, 0x36, 0x36, 0x3, 0x49, 0xF2, 0xDF, 0xFE, 0xD9, 0x1, 0x27, 0xDF, 0xF2, 0xDE, 0x1, 0x26, 0xFE, 0xDA, 0xDE, 0xFD, 0xF9, 0x1, 0x93, 0x83, 0x83, 0x91, 0x3, 0x18, 0x90, 0x82, 0x82, 0x90, 0x6D, 0xD, 0xED, 0xDD, 0xDB, 0xEA, 0xD, 0x77, 0x77, 0xE, 0xE8, 0xDA, 0xDD, 0xEE, 0xE, 0x1, 0xD7, 0x8A, 0x84, 0x9, 0x2, 0x29, 0x9, 0x82, 0x85, 0x86, 0x81, 0x9, 0xFD, 0xD7, 0xA, 0x85, 0x0, 0x1, 0x0, 0x51, 0x0, 0x0, 0x5, 0x4, 0x4, 0x8D, 0x0, 0x16, 0x0, 0x0, 0x21, 0x23, 0x11, 0x26, 0x2, 0x11, 0x11, 0x33, 0x11, 0x12, 0x17, 0x11, 0x33, 0x11, 0x36, 0x36, 0x35, 0x11, 0x33, 0x11, 0x6, 0x2, 0x7, 0x3, 0x24, 0xF3, 0xE5, 0xFB, 0xF3, 0x6, 0xE7, 0xF3, 0x80, 0x6D, 0xF3, 0x3, 0xFB, 0xE2, 0x1, 0x18, 0x17, 0x1, 0x2B, 0x1, 0x5, 0x1, 0x2E, 0xFE, 0xC1, 0xFE, 0xBD, 0x2C, 0x2, 0xAE, 0xFD, 0x52, 0x18, 0xC2, 0xA6, 0x1, 0x2E, 0xFE, 0xC6, 0xFB, 0xFE, 0xDB, 0x1A, 0x0, 0x1, 0x0, 0x5F, 0x0, 0x0, 0x4, 0x84, 0x4, 0x9D, 0x0, 0x1F, 0x0, 0x0, 0x21, 0x21, 0x35, 0x33, 0x26, 0x26, 0x35, 0x35, 0x34, 0x0, 0x20, 0x0, 0x15, 0x15, 0x10, 0x7, 0x33, 0x15, 0x21, 0x35, 0x36, 0x13, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x15, 0x10, 0x17, 0x2, 0x3C, 0xFE, 0x30, 0xB1, 0x59, 0x65, 0x1, 0x15, 0x1, 0xFA, 0x1, 0x16, 0xBC, 0xB6, 0xFE, 0x2F, 0xDE, 0x6, 0x88, 0x98, 0x96, 0x89, 0xEA, 0xC4, 0x4A, 0xE0, 0x8C, 0x22, 0xD3, 0x1, 0x2E, 0xFE, 0xD2, 0xD2, 0x23, 0xFE, 0xE7, 0x9D, 0xC4, 0xC8, 0x41, 0x1, 0x4A, 0x3B, 0x92, 0xB8, 0xB8, 0x92, 0x2A, 0xFE, 0xAB, 0x47, 0x0, 0x1, 0x0, 0x25, 0xFF, 0xEC, 0x5, 0x53, 0x4, 0x8D, 0x0, 0x18, 0x0, 0x0, 0x1, 0x14, 0x4, 0x23, 0x35, 0x32, 0x36, 0x35, 0x34, 0x23, 0x22, 0x7, 0x11, 0x23, 0x11, 0x21, 0x35, 0x21, 0x15, 0x21, 0x15, 0x36, 0x33, 0x32, 0x16, 0x5, 0x53, 0xFE, 0xFE, 0xD9, 0x72, 0x76, 0xE9, 0x81, 0x85, 0xF3, 0xFE, 0xA7, 0x3, 0xAC, 0xFE, 0xA0, 0x86, 0x91, 0xCE, 0xFD, 0x1, 0x69, 0xCA, 0xB3, 0xBD, 0x54, 0x69, 0xD9, 0x26, 0xFD, 0xE7, 0x3, 0xC9, 0xC4, 0xC4, 0xEC, 0x26, 0xC9, 0x0, 0x1, 0x0, 0x50, 0xFF, 0xF0, 0x4, 0x44, 0x4, 0x9D, 0x0, 0x1C, 0x0, 0x0, 0x1, 0x6, 0x6, 0x23, 0x22, 0x0, 0x11, 0x35, 0x10, 0x0, 0x33, 0x32, 0x16, 0x17, 0x23, 0x26, 0x26, 0x23, 0x22, 0x3, 0x21, 0x15, 0x21, 0x16, 0x16, 0x33, 0x32, 0x36, 0x37, 0x4, 0x43, 0xF, 0xFD, 0xE7, 0xED, 0xFE, 0xED, 0x1, 0x19, 0xEC, 0xE8, 0xF4, 0x13, 0xF3, 0xA, 0x6F, 0x83, 0xFA, 0x17, 0x1, 0x80, 0xFE, 0x80, 0x9, 0x80, 0x83, 0x80, 0x75, 0xB, 0x1, 0x85, 0xB2, 0xE3, 0x1, 0x2D, 0x1, 0x3, 0x4C, 0x1, 0x3, 0x1, 0x2E, 0xE9, 0xB3, 0x61, 0x78, 0xFE, 0xCF, 0xC3, 0x93, 0xA0, 0x6A, 0x68, 0x0, 0x2, 0x0, 0x25, 0x0, 0x0, 0x7, 0x15, 0x4, 0x8D, 0x0, 0x17, 0x0, 0x20, 0x0, 0x0, 0x33, 0x35, 0x37, 0x36, 0x36, 0x37, 0x13, 0x21, 0x11, 0x33, 0x16, 0x17, 0x16, 0x15, 0x14, 0x6, 0x23, 0x21, 0x11, 0x21, 0x3, 0x2, 0x2, 0x7, 0x25, 0x33, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x23, 0x25, 0x27, 0x6B, 0x47, 0xA, 0x13, 0x3, 0x3B, 0xF9, 0xD0, 0x78, 0x7E, 0xF6, 0xD8, 0xFE, 0x1C, 0xFE, 0xA4, 0xE, 0xF, 0xA7, 0xDE, 0x3, 0xF1, 0xF1, 0x70, 0x6B, 0x6B, 0x70, 0xF1, 0xCD, 0x3, 0x8, 0xC3, 0xF6, 0x1, 0xFC, 0xFE, 0x6C, 0x2, 0x64, 0x69, 0xAA, 0xA8, 0xD8, 0x3, 0xC9, 0xFE, 0xA0, 0xFE, 0xC4, 0xFE, 0xD7, 0x4, 0xC4, 0x73, 0x4B, 0x49, 0x6A, 0x0, 0x2, 0x0, 0x76, 0x0, 0x0, 0x7, 0x19, 0x4, 0x8D, 0x0, 0x8, 0x0, 0x1C, 0x0, 0x0, 0x25, 0x33, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x23, 0x3, 0x11, 0x21, 0x11, 0x23, 0x11, 0x33, 0x11, 0x21, 0x11, 0x33, 0x11, 0x33, 0x16, 0x17, 0x16, 0x15, 0x14, 0x6, 0x23, 0x4, 0x5A, 0xF1, 0x70, 0x6B, 0x6B, 0x70, 0xF1, 0xF3, 0xFE, 0x2, 0xF3, 0xF3, 0x1, 0xFE, 0xF3, 0xF9, 0xD0, 0x78, 0x7E, 0xF6, 0xD8, 0xC4, 0x73, 0x4B, 0x49, 0x6A, 0xFD, 0xCB, 0x1, 0xDB, 0xFE, 0x25, 0x4, 0x8D, 0xFE, 0x12, 0x1, 0xEE, 0xFE, 0x6C, 0x2, 0x64, 0x69, 0xAA, 0xA8, 0xD8, 0x0, 0x1, 0x0, 0x25, 0x0, 0x0, 0x5, 0x53, 0x4, 0x8D, 0x0, 0x15, 0x0, 0x0, 0x1, 0x22, 0x7, 0x11, 0x23, 0x11, 0x21, 0x35, 0x21, 0x15, 0x21, 0x15, 0x36, 0x33, 0x32, 0x16, 0x15, 0x11, 0x23, 0x11, 0x34, 0x26, 0x3, 0x77, 0x81, 0x85, 0xF3, 0xFE, 0xA7, 0x3, 0xAC, 0xFE, 0xA0, 0x86, 0x8F, 0xD0, 0xFD, 0xF3, 0x74, 0x2, 0x3F, 0x26, 0xFD, 0xE7, 0x3, 0xC9, 0xC4, 0xC4, 0xEC, 0x26, 0xC6, 0xE2, 0xFE, 0xA5, 0x1, 0x5B, 0x7D, 0x67, 0x0, 0x1, 0x0, 0x76, 0xFE, 0x9F, 0x4, 0x62, 0x4, 0x8D, 0x0, 0xB, 0x0, 0x0, 0x21, 0x21, 0x11, 0x23, 0x11, 0x21, 0x11, 0x33, 0x11, 0x21, 0x11, 0x33, 0x4, 0x62, 0xFE, 0x8A, 0xF3, 0xFE, 0x7D, 0xF3, 0x2, 0x5, 0xF4, 0xFE, 0x9F, 0x1, 0x61, 0x4, 0x8D, 0xFC, 0x37, 0x3, 0xC9, 0x0, 0x2, 0x0, 0x76, 0x0, 0x0, 0x4, 0x29, 0x4, 0x8D, 0x0, 0xB, 0x0, 0x14, 0x0, 0x0, 0x33, 0x11, 0x21, 0x15, 0x21, 0x15, 0x33, 0x16, 0x16, 0x10, 0x6, 0x23, 0x35, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x23, 0x11, 0x76, 0x3, 0x3C, 0xFD, 0xB7, 0xF9, 0xD4, 0xF3, 0xF7, 0xD8, 0x71, 0x6B, 0x6B, 0x71, 0xF1, 0x4, 0x8D, 0xC2, 0xE0, 0x2, 0xC5, 0xFE, 0xAA, 0xCE, 0xC4, 0x69, 0x4E, 0x4A, 0x62, 0xFE, 0x9D, 0x0, 0x2, 0x0, 0x27, 0xFE, 0xAE, 0x5, 0x16, 0x4, 0x8D, 0x0, 0x5, 0x0, 0x14, 0x0, 0x0, 0x25, 0x21, 0x11, 0x21, 0x3, 0x2, 0x3, 0x11, 0x23, 0x13, 0x33, 0x36, 0x36, 0x37, 0x13, 0x21, 0x11, 0x33, 0x11, 0x23, 0x11, 0x1, 0x9D, 0x1, 0xF0, 0xFE, 0xA1, 0x8, 0x11, 0xFA, 0xF4, 0x1, 0x5C, 0x67, 0x47, 0x6, 0xA, 0x3, 0x3E, 0x96, 0xF3, 0xC4, 0x3, 0x5, 0xFE, 0xEC, 0xFE, 0xC3, 0xFE, 0x88, 0xFE, 0xAE, 0x2, 0x16, 0x72, 0xEE, 0xCD, 0x1, 0x9C, 0xFC, 0x37, 0xFD, 0xEA, 0x1, 0x52, 0x0, 0x1, 0x0, 0x1B, 0x0, 0x0, 0x6, 0x20, 0x4, 0x8D, 0x0, 0x15, 0x0, 0x0, 0x21, 0x11, 0x23, 0x3, 0x21, 0x1, 0x1, 0x21, 0x13, 0x33, 0x11, 0x33, 0x11, 0x33, 0x13, 0x21, 0x1, 0x1, 0x21, 0x3, 0x23, 0x11, 0x2, 0xA4, 0x60, 0xFC, 0xFE, 0xD3, 0x1, 0x5C, 0xFE, 0xC3, 0x1, 0x1F, 0xF6, 0x55, 0xF3, 0x54, 0xF6, 0x1, 0x1F, 0xFE, 0xC3, 0x1, 0x5D, 0xFE, 0xD3, 0xFD, 0x5F, 0x1, 0xD6, 0xFE, 0x2A, 0x2, 0x55, 0x2, 0x38, 0xFE, 0x20, 0x1, 0xE0, 0xFE, 0x20, 0x1, 0xE0, 0xFD, 0xD1, 0xFD, 0xA2, 0x1, 0xD6, 0xFE, 0x2A, 0x0, 0x1, 0x0, 0x43, 0xFF, 0xF0, 0x3, 0xE8, 0x4, 0x9D, 0x0, 0x27, 0x0, 0x0, 0x5, 0x22, 0x26, 0x26, 0x35, 0x33, 0x16, 0x16, 0x33, 0x32, 0x36, 0x35, 0x34, 0x27, 0x23, 0x35, 0x33, 0x36, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x23, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x6, 0x7, 0x16, 0x16, 0x15, 0x14, 0x4, 0x2, 0x9, 0x69, 0xD2, 0x8B, 0xF3, 0x5, 0x7A, 0x56, 0x77, 0x73, 0xE0, 0x94, 0x9D, 0xC5, 0x65, 0x76, 0x4F, 0x72, 0xF3, 0xFB, 0xBA, 0xCD, 0xFF, 0x6E, 0x5C, 0x6F, 0x6E, 0xFE, 0xEC, 0x10, 0x40, 0x97, 0x80, 0x50, 0x43, 0x57, 0x47, 0xA7, 0x3, 0xB0, 0x5, 0x93, 0x3E, 0x56, 0x3E, 0x43, 0x9B, 0xAB, 0x9F, 0x9E, 0x59, 0x8C, 0x26, 0x25, 0x90, 0x5C, 0xAA, 0xAA, 0x0, 0x1, 0x0, 0x76, 0x0, 0x0, 0x4, 0x6E, 0x4, 0x8D, 0x0, 0x9, 0x0, 0x0, 0x21, 0x23, 0x11, 0x33, 0x11, 0x1, 0x33, 0x11, 0x23, 0x11, 0x1, 0x69, 0xF3, 0xF3, 0x2, 0x12, 0xF3, 0xF3, 0x4, 0x8D, 0xFC, 0xDF, 0x3, 0x21, 0xFB, 0x73, 0x3, 0x22, 0x0, 0x1, 0x0, 0x76, 0x0, 0x0, 0x4, 0x40, 0x4, 0x8D, 0x0, 0xC, 0x0, 0x0, 0x21, 0x1, 0x23, 0x11, 0x23, 0x11, 0x33, 0x11, 0x33, 0x1, 0x21, 0x1, 0x1, 0x3, 0x12, 0xFE, 0xC1, 0x6A, 0xF3, 0xF3, 0x64, 0x1, 0x38, 0x1, 0x1C, 0xFE, 0x72, 0x1, 0xAD, 0x1, 0xD6, 0xFE, 0x2A, 0x4, 0x8D, 0xFE, 0x20, 0x1, 0xE0, 0xFD, 0xC5, 0xFD, 0xAE, 0x0, 0x1, 0x0, 0x25, 0x0, 0x0, 0x4, 0x56, 0x4, 0x8D, 0x0, 0xF, 0x0, 0x0, 0x33, 0x35, 0x37, 0x36, 0x36, 0x37, 0x13, 0x21, 0x11, 0x23, 0x11, 0x21, 0x3, 0x2, 0x2, 0x7, 0x25, 0x27, 0x6A, 0x47, 0xA, 0x14, 0x3, 0x3B, 0xF3, 0xFE, 0xA3, 0xE, 0x10, 0xA7, 0xDA, 0xCD, 0x4, 0xC, 0xBB, 0xFB, 0x1, 0xFA, 0xFB, 0x73, 0x3, 0xC9, 0xFE, 0xA0, 0xFE, 0xC6, 0xFE, 0xD6, 0x5, 0x0, 0x1, 0x0, 0x20, 0xFF, 0xEC, 0x4, 0x3A, 0x4, 0x8D, 0x0, 0xF, 0x0, 0x0, 0x5, 0x27, 0x37, 0x17, 0x32, 0x36, 0x37, 0x1, 0x21, 0x13, 0x17, 0x13, 0x21, 0x1, 0x6, 0x6, 0x1, 0x40, 0x67, 0x2, 0x57, 0x3B, 0x41, 0x16, 0xFE, 0x5C, 0x1, 0xE, 0xFB, 0x13, 0xF4, 0x1, 0xA, 0xFE, 0x6C, 0x34, 0x8E, 0x14, 0x5, 0xC1, 0x4, 0x38, 0x29, 0x3, 0x7E, 0xFD, 0xBE, 0x37, 0x2, 0x79, 0xFC, 0x76, 0x73, 0xA4, 0x0, 0x1, 0x0, 0x76, 0xFE, 0xAE, 0x5, 0x25, 0x4, 0x8D, 0x0, 0xB, 0x0, 0x0, 0x1, 0x23, 0x11, 0x21, 0x11, 0x33, 0x11, 0x21, 0x11, 0x33, 0x11, 0x33, 0x5, 0x11, 0xDE, 0xFC, 0x43, 0xF3, 0x2, 0x5, 0xF4, 0xC3, 0xFE, 0xAE, 0x1, 0x52, 0x4, 0x8D, 0xFC, 0x37, 0x3, 0xC9, 0xFC, 0x37, 0x0, 0x1, 0x0, 0x41, 0x0, 0x0, 0x4, 0x16, 0x4, 0x8D, 0x0, 0x11, 0x0, 0x0, 0x21, 0x23, 0x11, 0x6, 0x23, 0x22, 0x24, 0x35, 0x11, 0x33, 0x11, 0x14, 0x16, 0x33, 0x32, 0x37, 0x11, 0x33, 0x4, 0x16, 0xF3, 0x84, 0x82, 0xDB, 0xFE, 0xFF, 0xF3, 0x75, 0x74, 0x81, 0x85, 0xF3, 0x1, 0xAB, 0x26, 0xC5, 0xE2, 0x1, 0x61, 0xFE, 0xA0, 0x7C, 0x69, 0x26, 0x2, 0x1F, 0x0, 0x1, 0x0, 0x76, 0x0, 0x0, 0x6, 0xF, 0x4, 0x8D, 0x0, 0xB, 0x0, 0x0, 0x33, 0x11, 0x33, 0x11, 0x21, 0x11, 0x33, 0x11, 0x21, 0x11, 0x33, 0x11, 0x76, 0xF3, 0x1, 0x60, 0xF3, 0x1, 0x60, 0xF3, 0x4, 0x8D, 0xFC, 0x37, 0x3, 0xC9, 0xFC, 0x37, 0x3, 0xC9, 0xFB, 0x73, 0x0, 0x1, 0x0, 0x76, 0xFE, 0xAE, 0x6, 0xD2, 0x4, 0x8D, 0x0, 0xF, 0x0, 0x0, 0x1, 0x23, 0x11, 0x21, 0x11, 0x33, 0x11, 0x21, 0x11, 0x33, 0x11, 0x21, 0x11, 0x33, 0x11, 0x33, 0x6, 0xBE, 0xDE, 0xFA, 0x96, 0xF3, 0x1, 0x60, 0xF3, 0x1, 0x60, 0xF3, 0xC3, 0xFE, 0xAE, 0x1, 0x52, 0x4, 0x8D, 0xFC, 0x37, 0x3, 0xC9, 0xFC, 0x37, 0x3, 0xC9, 0xFC, 0x37, 0x0, 0x2, 0x0, 0xA, 0x0, 0x0, 0x5, 0x1B, 0x4, 0x8D, 0x0, 0xD, 0x0, 0x16, 0x0, 0x0, 0x21, 0x11, 0x21, 0x35, 0x21, 0x11, 0x33, 0x16, 0x17, 0x16, 0x15, 0x14, 0x6, 0x23, 0x35, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x23, 0x11, 0x1, 0x69, 0xFE, 0xA1, 0x2, 0x52, 0xF9, 0xD0, 0x78, 0x7E, 0xF6, 0xD8, 0x71, 0x6B, 0x6B, 0x71, 0xF1, 0x3, 0xC9, 0xC4, 0xFE, 0x6C, 0x2, 0x64, 0x69, 0xAA, 0xA8, 0xD8, 0xC4, 0x73, 0x4B, 0x49, 0x6A, 0xFE, 0x8F, 0xFF, 0xFF, 0x0, 0x76, 0x0, 0x0, 0x5, 0xAA, 0x4, 0x8D, 0x0, 0x26, 0x7, 0x84, 0x0, 0x0, 0x0, 0x7, 0x7, 0x5F, 0x4, 0x32, 0x0, 0x0, 0x0, 0x2, 0x0, 0x76, 0x0, 0x0, 0x4, 0x29, 0x4, 0x8D, 0x0, 0xB, 0x0, 0x14, 0x0, 0x0, 0x33, 0x11, 0x33, 0x11, 0x33, 0x16, 0x16, 0x17, 0x15, 0x14, 0x6, 0x23, 0x35, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x23, 0x11, 0x76, 0xF3, 0xF5, 0xD5, 0xF5, 0x1, 0xF7, 0xD8, 0x71, 0x6B, 0x6B, 0x71, 0xF1, 0x4, 0x8D, 0xFE, 0x6C, 0x1, 0xCF, 0xA7, 0x2, 0xA8, 0xD8, 0xC4, 0x73, 0x4B, 0x49, 0x6A, 0xFE, 0x8F, 0x0, 0x1, 0x0, 0x3D, 0xFF, 0xF0, 0x4, 0x31, 0x4, 0x9D, 0x0, 0x1C, 0x0, 0x0, 0x5, 0x22, 0x26, 0x27, 0x33, 0x16, 0x16, 0x33, 0x32, 0x36, 0x37, 0x21, 0x35, 0x21, 0x2, 0x23, 0x22, 0x6, 0x7, 0x23, 0x36, 0x36, 0x33, 0x32, 0x0, 0x11, 0x15, 0x10, 0x0, 0x2, 0x30, 0xE7, 0xFD, 0xF, 0xF3, 0xC, 0x74, 0x80, 0x83, 0x80, 0x9, 0xFE, 0x80, 0x1, 0x80, 0x17, 0xFA, 0x82, 0x6F, 0xB, 0xF2, 0x12, 0xF4, 0xE8, 0xED, 0x1, 0x19, 0xFE, 0xED, 0x10, 0xE3, 0xB2, 0x68, 0x6A, 0xA0, 0x93, 0xC3, 0x1, 0x31, 0x78, 0x61, 0xB3, 0xE9, 0xFE, 0xD2, 0xFE, 0xFD, 0x4C, 0xFE, 0xFD, 0xFE, 0xD3, 0x0, 0x2, 0x0, 0x76, 0xFF, 0xF0, 0x6, 0x42, 0x4, 0x9D, 0x0, 0x13, 0x0, 0x21, 0x0, 0x0, 0x5, 0x22, 0x0, 0x27, 0x23, 0x11, 0x23, 0x11, 0x33, 0x11, 0x33, 0x36, 0x0, 0x33, 0x32, 0x0, 0x11, 0x15, 0x10, 0x0, 0x13, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x15, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x4, 0x33, 0xD9, 0xFE, 0xE1, 0x16, 0xBC, 0xF3, 0xF3, 0xBC, 0x14, 0x1, 0x1F, 0xD9, 0xEC, 0x1, 0x25, 0xFE, 0xDD, 0x30, 0x97, 0x87, 0x85, 0x98, 0x9A, 0x85, 0x87, 0x95, 0x10, 0x1, 0x9, 0xE9, 0xFE, 0x1E, 0x4, 0x8D, 0xFE, 0x19, 0xEB, 0x1, 0xC, 0xFE, 0xCD, 0xFE, 0xF6, 0x34, 0xFE, 0xF6, 0xFE, 0xCE, 0x2, 0x72, 0xB5, 0xC1, 0xC1, 0xB5, 0x36, 0xB5, 0xC3, 0xC3, 0xB5, 0x0, 0x2, 0x0, 0x44, 0x0, 0x0, 0x4, 0x12, 0x4, 0x8D, 0x0, 0x7, 0x0, 0x14, 0x0, 0x0, 0x1, 0x11, 0x23, 0x22, 0x6, 0x14, 0x16, 0x33, 0x13, 0x11, 0x23, 0x3, 0x21, 0x1, 0x26, 0x35, 0x34, 0x36, 0x33, 0x21, 0x11, 0x3, 0x1F, 0xDC, 0x6A, 0x63, 0x63, 0x6A, 0xDC, 0xF1, 0xE6, 0xFE, 0xFC, 0x1, 0x16, 0xD7, 0xEE, 0xD3, 0x1, 0xCE, 0x2, 0x80, 0x1, 0x49, 0x5E, 0x92, 0x59, 0xFD, 0x80, 0x1, 0xBD, 0xFE, 0x43, 0x2, 0xC, 0x55, 0xD0, 0xA3, 0xB9, 0xFB, 0x73, 0x0, 0x1, 0x0, 0xA, 0x0, 0x0, 0x4, 0x0, 0x4, 0x8D, 0x0, 0xD, 0x0, 0x0, 0x1, 0x23, 0x11, 0x23, 0x11, 0x23, 0x35, 0x33, 0x11, 0x21, 0x15, 0x21, 0x11, 0x33, 0x2, 0xA8, 0xD6, 0xF3, 0xD5, 0xD5, 0x3, 0x21, 0xFD, 0xD2, 0xD6, 0x1, 0xE6, 0xFE, 0x1A, 0x1, 0xE6, 0xAB, 0x1, 0xFC, 0xC4, 0xFE, 0xC8, 0x0, 0x1, 0x0, 0x1B, 0xFE, 0xAE, 0x6, 0x6D, 0x4, 0x8D, 0x0, 0x19, 0x0, 0x0, 0x1, 0x23, 0x11, 0x23, 0x3, 0x23, 0x11, 0x23, 0x11, 0x23, 0x3, 0x21, 0x1, 0x1, 0x21, 0x13, 0x33, 0x11, 0x33, 0x11, 0x33, 0x13, 0x21, 0x1, 0x13, 0x33, 0x6, 0x6D, 0xD0, 0xAA, 0xFD, 0x5F, 0xF3, 0x60, 0xFC, 0xFE, 0xD3, 0x1, 0x5C, 0xFE, 0xC3, 0x1, 0x1F, 0xF6, 0x55, 0xF3, 0x54, 0xF6, 0x1, 0x1F, 0xFE, 0xC3, 0xED, 0xBD, 0xFE, 0xAE, 0x1, 0x52, 0x1, 0xD6, 0xFE, 0x2A, 0x1, 0xD6, 0xFE, 0x2A, 0x2, 0x55, 0x2, 0x38, 0xFE, 0x20, 0x1, 0xE0, 0xFE, 0x20, 0x1, 0xE0, 0xFD, 0xD1, 0xFE, 0x64, 0x0, 0x1, 0x0, 0x76, 0xFE, 0xAE, 0x4, 0x7D, 0x4, 0x8D, 0x0, 0x10, 0x0, 0x0, 0x1, 0x23, 0x11, 0x23, 0x1, 0x23, 0x11, 0x23, 0x11, 0x33, 0x11, 0x33, 0x1, 0x21, 0x1, 0x1, 0x33, 0x4, 0x7D, 0xD0, 0x9B, 0xFE, 0xC1, 0x6A, 0xF3, 0xF3, 0x64, 0x1, 0x38, 0x1, 0x1C, 0xFE, 0x72, 0x1, 0x21, 0xC9, 0xFE, 0xAE, 0x1, 0x52, 0x1, 0xD6, 0xFE, 0x2A, 0x4, 0x8D, 0xFE, 0x20, 0x1, 0xE0, 0xFD, 0xC5, 0xFE, 0x70, 0x0, 0x1, 0x0, 0x76, 0x0, 0x0, 0x4, 0xFE, 0x4, 0x8D, 0x0, 0x14, 0x0, 0x0, 0x1, 0x35, 0x23, 0x11, 0x23, 0x11, 0x33, 0x11, 0x33, 0x35, 0x33, 0x15, 0x33, 0x1, 0x21, 0x1, 0x1, 0x21, 0x1, 0x23, 0x15, 0x1, 0xB1, 0x48, 0xF3, 0xF3, 0x48, 0xA2, 0x37, 0x1, 0x38, 0x1, 0x1D, 0xFE, 0x72, 0x1, 0xAD, 0xFE, 0xD1, 0xFE, 0xC2, 0x3E, 0x1, 0xB, 0xCB, 0xFE, 0x2A, 0x4, 0x8D, 0xFE, 0x20, 0xDE, 0xDE, 0x1, 0xE0, 0xFD, 0xC5, 0xFD, 0xAE, 0x1, 0xD6, 0xCB, 0x0, 0x1, 0x0, 0x25, 0x0, 0x0, 0x5, 0x4F, 0x4, 0x8D, 0x0, 0xE, 0x0, 0x0, 0x21, 0x1, 0x23, 0x11, 0x23, 0x11, 0x21, 0x35, 0x21, 0x11, 0x33, 0x1, 0x21, 0x1, 0x1, 0x4, 0x20, 0xFE, 0xC2, 0x6A, 0xF3, 0xFE, 0xA0, 0x2, 0x53, 0x63, 0x1, 0x38, 0x1, 0x1D, 0xFE, 0x72, 0x1, 0xAD, 0x1, 0xD6, 0xFE, 0x2A, 0x3, 0xCA, 0xC3, 0xFE, 0x20, 0x1, 0xE0, 0xFD, 0xC6, 0xFD, 0xAD, 0x0, 0x2, 0x0, 0x50, 0xFF, 0xEB, 0x5, 0x99, 0x4, 0xA5, 0x0, 0xA, 0x0, 0x2D, 0x0, 0x0, 0x1, 0x10, 0x17, 0x36, 0x37, 0x35, 0x34, 0x26, 0x23, 0x22, 0x3, 0x1, 0x22, 0x27, 0x6, 0x23, 0x20, 0x0, 0x11, 0x35, 0x10, 0x0, 0x33, 0x15, 0x22, 0x6, 0x15, 0x15, 0x14, 0x16, 0x33, 0x37, 0x26, 0x3, 0x35, 0x34, 0x12, 0x33, 0x32, 0x12, 0x15, 0x15, 0x14, 0x7, 0x16, 0x33, 0x3, 0x2D, 0xBE, 0xA0, 0x3, 0x56, 0x58, 0xAE, 0x5, 0x2, 0x6C, 0xE3, 0xAF, 0x8F, 0xAB, 0xFE, 0xDC, 0xFE, 0xA7, 0x1, 0xA, 0xD9, 0x70, 0x80, 0xCC, 0xBE, 0x36, 0xC0, 0x2, 0xE0, 0xBC, 0xC2, 0xE2, 0xA3, 0x54, 0x67, 0x2, 0x85, 0xFE, 0xF2, 0x6E, 0x73, 0xF1, 0x3D, 0xA2, 0x8E, 0xFE, 0xE6, 0xFD, 0x2F, 0x3A, 0x3E, 0x1, 0x3E, 0x1, 0x22, 0x2E, 0x1, 0x2, 0x1, 0x2A, 0xCB, 0xB5, 0xB1, 0x26, 0xCA, 0xCE, 0x2, 0xAB, 0x1, 0x1E, 0x2C, 0xED, 0x1, 0xA, 0xFE, 0xFE, 0xF2, 0x44, 0xFF, 0xAF, 0xB, 0xFF, 0xFF, 0x0, 0x5, 0x0, 0x0, 0x4, 0x37, 0x4, 0x8D, 0x0, 0x26, 0x7, 0x4F, 0x0, 0x0, 0x0, 0x7, 0x7, 0xA4, 0x0, 0x3B, 0xFE, 0xD4, 0x0, 0x1, 0x0, 0x16, 0xFE, 0xAE, 0x4, 0x8C, 0x4, 0x8D, 0x0, 0xF, 0x0, 0x0, 0x1, 0x23, 0x11, 0x23, 0x3, 0x3, 0x21, 0x1, 0x1, 0x21, 0x13, 0x13, 0x21, 0x1, 0x1, 0x33, 0x4, 0x8C, 0xD0, 0x92, 0xFF, 0xFA, 0xFE, 0xE5, 0x1, 0x81, 0xFE, 0x87, 0x1, 0x1A, 0xF0, 0xF2, 0x1, 0x1B, 0xFE, 0x89, 0x1, 0x9, 0xC5, 0xFE, 0xAE, 0x1, 0x52, 0x1, 0x99, 0xFE, 0x67, 0x2, 0x4B, 0x2, 0x42, 0xFE, 0x6E, 0x1, 0x92, 0xFD, 0xBE, 0xFE, 0x77, 0x0, 0x1, 0x0, 0x25, 0xFE, 0xAE, 0x6, 0x2E, 0x4, 0x8D, 0x0, 0xF, 0x0, 0x0, 0x25, 0x3, 0x23, 0x11, 0x21, 0x11, 0x21, 0x35, 0x21, 0x15, 0x21, 0x11, 0x21, 0x11, 0x33, 0x11, 0x6, 0x2E, 0x14, 0xDD, 0xFC, 0x43, 0xFE, 0xA5, 0x3, 0xA2, 0xFE, 0xAC, 0x2, 0x5, 0xF3, 0xC4, 0xFD, 0xEA, 0x1, 0x52, 0x3, 0xC9, 0xC4, 0xC4, 0xFC, 0xFB, 0x3, 0xC9, 0xFC, 0x37, 0x0, 0x1, 0x0, 0x41, 0x0, 0x0, 0x4, 0x16, 0x4, 0x8D, 0x0, 0x16, 0x0, 0x0, 0x21, 0x23, 0x11, 0x6, 0x7, 0x15, 0x23, 0x35, 0x26, 0x26, 0x35, 0x11, 0x33, 0x11, 0x14, 0x17, 0x35, 0x33, 0x15, 0x36, 0x37, 0x11, 0x33, 0x4, 0x16, 0xF3, 0x50, 0x52, 0xA3, 0xBF, 0xDE, 0xF3, 0xAA, 0xA3, 0x4F, 0x53, 0xF3, 0x1, 0xAB, 0x17, 0x9, 0xCC, 0xC8, 0xD, 0xC7, 0xD1, 0x1, 0x61, 0xFE, 0xA0, 0xC8, 0x19, 0xF3, 0xF1, 0x8, 0x18, 0x2, 0x1F, 0x0, 0x1, 0x0, 0x76, 0x0, 0x0, 0x4, 0x4B, 0x4, 0x8D, 0x0, 0x11, 0x0, 0x0, 0x1, 0x22, 0x7, 0x11, 0x23, 0x11, 0x33, 0x11, 0x36, 0x33, 0x32, 0x4, 0x15, 0x11, 0x23, 0x11, 0x34, 0x26, 0x2, 0x6F, 0x81, 0x85, 0xF3, 0xF3, 0x84, 0x82, 0xDC, 0x1, 0x0, 0xF3, 0x74, 0x2, 0x46, 0x26, 0xFD, 0xE0, 0x4, 0x8D, 0xFE, 0x57, 0x26, 0xC6, 0xE2, 0xFE, 0x9E, 0x1, 0x62, 0x7D, 0x67, 0x0, 0x2, 0x0, 0xB, 0xFF, 0xF0, 0x5, 0xA8, 0x4, 0xA4, 0x0, 0x7, 0x0, 0x23, 0x0, 0x0, 0x1, 0x22, 0x6, 0x7, 0x21, 0x35, 0x34, 0x26, 0x1, 0x6, 0x6, 0x23, 0x20, 0x0, 0x27, 0x26, 0x26, 0x35, 0x33, 0x14, 0x16, 0x17, 0x36, 0x0, 0x33, 0x32, 0x0, 0x13, 0x15, 0x21, 0x16, 0x16, 0x33, 0x32, 0x36, 0x37, 0x3, 0x92, 0x82, 0x9D, 0x9, 0x2, 0x4B, 0x95, 0x1, 0x13, 0x20, 0xBD, 0x8D, 0xFE, 0xF8, 0xFE, 0xC3, 0xD, 0xB8, 0xB4, 0xC1, 0x54, 0x57, 0xF, 0x1, 0x33, 0xD8, 0xFF, 0x1, 0x16, 0x2, 0xFC, 0xC2, 0x7, 0xA3, 0xB5, 0x6A, 0x91, 0x2E, 0x3, 0xDE, 0xA5, 0x8C, 0x17, 0x85, 0x95, 0xFC, 0x5F, 0x12, 0x3B, 0x1, 0x12, 0xE9, 0xD, 0xE6, 0xB0, 0x5C, 0x76, 0xC, 0xE4, 0x1, 0x10, 0xFE, 0xE8, 0xFE, 0xFF, 0xA1, 0x88, 0xA7, 0x29, 0x13, 0x0, 0x2, 0x0, 0x50, 0xFF, 0xF0, 0x4, 0x82, 0x4, 0xA4, 0x0, 0x15, 0x0, 0x1D, 0x0, 0x0, 0x5, 0x22, 0x0, 0x3, 0x35, 0x21, 0x26, 0x26, 0x23, 0x22, 0x6, 0x7, 0x27, 0x36, 0x36, 0x33, 0x20, 0x0, 0x15, 0x15, 0x14, 0x0, 0x27, 0x32, 0x36, 0x37, 0x21, 0x15, 0x14, 0x16, 0x2, 0x66, 0xFE, 0xFE, 0xEA, 0x2, 0x3, 0x3E, 0x7, 0xA4, 0xB5, 0x69, 0x90, 0x2F, 0x41, 0x22, 0xC1, 0x92, 0x1, 0xD, 0x1, 0x3B, 0xFE, 0xC7, 0xE3, 0x82, 0x9D, 0x9, 0xFD, 0xB4, 0x96, 0x10, 0x1, 0x18, 0x1, 0x1, 0xA1, 0x89, 0xA7, 0x2A, 0x13, 0xBA, 0x12, 0x3B, 0xFE, 0xD9, 0xFB, 0x75, 0xF5, 0xFE, 0xD8, 0xC6, 0xA5, 0x8C, 0x17, 0x85, 0x95, 0x0, 0x1, 0x0, 0x43, 0xFF, 0xEC, 0x3, 0xE9, 0x4, 0x8D, 0x0, 0x19, 0x0, 0x0, 0x5, 0x22, 0x26, 0x26, 0x35, 0x33, 0x16, 0x16, 0x33, 0x32, 0x35, 0x34, 0x27, 0x23, 0x35, 0x1, 0x21, 0x35, 0x21, 0x17, 0x1, 0x16, 0x16, 0x15, 0x14, 0x4, 0x2, 0x9, 0x69, 0xD2, 0x8B, 0xF2, 0x5, 0x7A, 0x5B, 0xE6, 0xDE, 0x8F, 0x1, 0x6, 0xFD, 0xDD, 0x3, 0x53, 0x1, 0xFE, 0xC6, 0xB3, 0xB1, 0xFE, 0xEB, 0x14, 0x42, 0x98, 0x81, 0x50, 0x49, 0xAD, 0xAC, 0x4, 0xBB, 0x1, 0x3, 0xC4, 0x9B, 0xFE, 0xC0, 0x16, 0xCC, 0x7C, 0xB6, 0xB2, 0x0, 0x3, 0x0, 0x50, 0xFF, 0xF0, 0x4, 0x6F, 0x4, 0x9D, 0x0, 0xD, 0x0, 0x12, 0x0, 0x18, 0x0, 0x0, 0x1, 0x10, 0x0, 0x23, 0x22, 0x0, 0x11, 0x35, 0x10, 0x0, 0x33, 0x32, 0x0, 0x11, 0x1, 0x22, 0x3, 0x21, 0x2, 0x3, 0x32, 0x13, 0x21, 0x16, 0x16, 0x4, 0x6F, 0xFE, 0xDE, 0xEC, 0xE9, 0xFE, 0xD8, 0x1, 0x26, 0xE9, 0xEC, 0x1, 0x24, 0xFD, 0xF0, 0xFD, 0x1D, 0x2, 0x35, 0x1D, 0xFC, 0xFA, 0x1F, 0xFD, 0xCC, 0xF, 0x95, 0x2, 0x2C, 0xFE, 0xF6, 0xFE, 0xCE, 0x1, 0x32, 0x1, 0xA, 0x34, 0x1, 0xA, 0x1, 0x33, 0xFE, 0xCD, 0xFE, 0xF6, 0x1, 0x78, 0xFE, 0xCF, 0x1, 0x31, 0xFC, 0xDC, 0x1, 0x2F, 0x92, 0x9D, 0x0, 0x1, 0x0, 0x39, 0x0, 0x0, 0x4, 0x1A, 0x4, 0x9D, 0x0, 0x27, 0x0, 0x0, 0x21, 0x21, 0x35, 0x33, 0x36, 0x37, 0x23, 0x35, 0x33, 0x35, 0x27, 0x23, 0x35, 0x33, 0x27, 0x26, 0x36, 0x33, 0x32, 0x16, 0x15, 0x23, 0x34, 0x26, 0x23, 0x22, 0x6, 0x17, 0x17, 0x21, 0x15, 0x21, 0x17, 0x17, 0x21, 0x15, 0x21, 0x6, 0x7, 0x21, 0x4, 0x1A, 0xFC, 0x64, 0xA, 0x35, 0x12, 0x96, 0xA0, 0x2, 0x9E, 0x99, 0x1, 0x7, 0xDD, 0xBA, 0xCD, 0xCE, 0xF3, 0x62, 0x45, 0x4C, 0x57, 0x4, 0x2, 0x1, 0x83, 0xFE, 0x82, 0x3, 0x1, 0x1, 0x7A, 0xFE, 0x74, 0x13, 0x25, 0x2, 0x96, 0xC4, 0xF, 0x6A, 0x93, 0xF, 0x49, 0x93, 0x27, 0xD2, 0xE9, 0xD7, 0xAE, 0x6B, 0x55, 0x7E, 0x78, 0x27, 0x93, 0x42, 0x16, 0x93, 0x45, 0x34, 0x0, 0x1, 0x0, 0x47, 0xFF, 0xF0, 0x3, 0xB1, 0x4, 0x9E, 0x0, 0x21, 0x0, 0x0, 0x25, 0x6, 0x23, 0x22, 0x24, 0x27, 0x23, 0x35, 0x33, 0x35, 0x23, 0x35, 0x33, 0x36, 0x24, 0x33, 0x32, 0x17, 0x7, 0x26, 0x23, 0x22, 0x7, 0x21, 0x15, 0x21, 0x15, 0x21, 0x15, 0x21, 0x16, 0x33, 0x32, 0x37, 0x3, 0xB0, 0x72, 0x71, 0xD3, 0xFE, 0xFD, 0x19, 0x97, 0x91, 0x91, 0x97, 0x1A, 0x1, 0x1, 0xD2, 0x6C, 0x7A, 0x17, 0x5E, 0x71, 0xD6, 0x23, 0x1, 0x7D, 0xFE, 0x7C, 0x1, 0x84, 0xFE, 0x83, 0x22, 0xD9, 0x55, 0x73, 0xF, 0x1F, 0xD1, 0xC3, 0x93, 0x5B, 0x93, 0xC5, 0xD4, 0x20, 0xBE, 0x1B, 0xD6, 0x93, 0x5B, 0x93, 0xD1, 0x1B, 0x0, 0x4, 0x0, 0x76, 0x0, 0x0, 0x7, 0xC7, 0x4, 0x9E, 0x0, 0xC, 0x0, 0x1A, 0x0, 0x24, 0x0, 0x28, 0x0, 0x0, 0x1, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x15, 0x14, 0x6, 0x20, 0x26, 0x35, 0x33, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x1, 0x11, 0x23, 0x1, 0x11, 0x23, 0x11, 0x33, 0x1, 0x11, 0x1, 0x15, 0x21, 0x35, 0x5, 0x12, 0xBB, 0x9F, 0xA1, 0xBA, 0xB9, 0xFE, 0xC0, 0xBC, 0xAF, 0x55, 0x58, 0x56, 0x54, 0x55, 0x57, 0x56, 0x55, 0xFE, 0xA6, 0xF2, 0xFD, 0xF4, 0xF3, 0xF3, 0x2, 0xC, 0x4, 0x13, 0xFD, 0xC6, 0x3, 0x4F, 0x92, 0xBD, 0xBD, 0x92, 0x4C, 0x92, 0xBC, 0xBC, 0x92, 0x51, 0x6B, 0x6B, 0x51, 0x4C, 0x50, 0x6B, 0x6B, 0x50, 0x1, 0x3E, 0xFB, 0x73, 0x3, 0x1C, 0xFC, 0xE4, 0x4, 0x8D, 0xFC, 0xE4, 0x3, 0x1C, 0xFC, 0xD1, 0x95, 0x95, 0x0, 0x2, 0x0, 0x4D, 0xFF, 0xEE, 0x4, 0x50, 0x4, 0x9D, 0x0, 0x13, 0x0, 0x28, 0x0, 0x0, 0x13, 0x35, 0x21, 0x36, 0x35, 0x34, 0x26, 0x23, 0x22, 0x7, 0x23, 0x10, 0x21, 0x32, 0x16, 0x15, 0x14, 0x7, 0x33, 0x15, 0x1, 0x22, 0x26, 0x35, 0x34, 0x37, 0x23, 0x35, 0x21, 0x15, 0x21, 0x6, 0x15, 0x14, 0x33, 0x32, 0x36, 0x37, 0x33, 0x14, 0x6, 0x4E, 0x2, 0x87, 0x2B, 0x4E, 0x57, 0xAB, 0x3, 0xF2, 0x1, 0xA1, 0xD2, 0xC4, 0x2D, 0x8B, 0xFE, 0x13, 0xEB, 0xD6, 0x2E, 0x83, 0x4, 0x2, 0xFD, 0x76, 0x2A, 0xC4, 0x4C, 0x73, 0x2, 0xF2, 0xED, 0x2, 0x72, 0x93, 0x29, 0x41, 0x2D, 0x3F, 0x7A, 0x1, 0x3C, 0xA0, 0x74, 0x45, 0x3F, 0x93, 0xFD, 0x7C, 0xA0, 0x7B, 0x48, 0x3B, 0x93, 0x93, 0x28, 0x48, 0x6B, 0x32, 0x47, 0xA6, 0x96, 0x0, 0x2, 0x0, 0x28, 0x0, 0x0, 0x4, 0xAA, 0x4, 0x8D, 0x0, 0x8, 0x0, 0x1F, 0x0, 0x0, 0x1, 0x11, 0x33, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x13, 0x21, 0x15, 0x23, 0x35, 0x23, 0x35, 0x33, 0x35, 0x23, 0x35, 0x33, 0x11, 0x21, 0x32, 0x16, 0x15, 0x14, 0x6, 0x23, 0x23, 0x15, 0x21, 0x1, 0xEB, 0xF8, 0x6D, 0x67, 0x67, 0x6D, 0x14, 0xFE, 0xF4, 0xF3, 0xD0, 0xD0, 0xD0, 0xD0, 0x1, 0xEB, 0xD5, 0xF2, 0xF2, 0xD5, 0xF8, 0x1, 0xC, 0x3, 0xCA, 0xFE, 0x89, 0x73, 0x49, 0x4A, 0x71, 0xFC, 0xCF, 0x99, 0x99, 0xB7, 0x4D, 0xB6, 0x2, 0x3A, 0xD4, 0xA5, 0xA6, 0xD1, 0x4D, 0x0, 0x2, 0x0, 0x25, 0x0, 0x0, 0x3, 0xD1, 0x4, 0x8D, 0x0, 0x3, 0x0, 0xB, 0x0, 0x0, 0x1, 0x15, 0x21, 0x35, 0x1, 0x21, 0x11, 0x23, 0x11, 0x21, 0x35, 0x21, 0x3, 0xD1, 0xFC, 0x54, 0x3, 0xAC, 0xFE, 0xA1, 0xF3, 0xFE, 0xA6, 0x3, 0xAC, 0x4, 0x8D, 0xC3, 0xC3, 0xFE, 0x18, 0xFD, 0x5B, 0x2, 0xA5, 0xC3, 0x0, 0x1, 0x0, 0x37, 0xFF, 0xF5, 0x2, 0xA9, 0x3, 0x20, 0x0, 0x24, 0x0, 0x0, 0x5, 0x22, 0x26, 0x35, 0x33, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x34, 0x27, 0x23, 0x35, 0x33, 0x36, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x23, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x7, 0x16, 0x15, 0x14, 0x6, 0x1, 0x69, 0x70, 0xC2, 0xBB, 0x45, 0x3B, 0x3F, 0x3E, 0x86, 0x5C, 0x5C, 0x78, 0x36, 0x3E, 0x2F, 0x41, 0xBA, 0xAD, 0x79, 0x89, 0xAA, 0x87, 0x94, 0xB7, 0xB, 0x70, 0x80, 0x25, 0x36, 0x38, 0x2A, 0x64, 0x2, 0x80, 0x2, 0x5F, 0x23, 0x35, 0x27, 0x23, 0x6B, 0x74, 0x73, 0x6E, 0x77, 0x33, 0x29, 0x8F, 0x6F, 0x79, 0x0, 0x2, 0x0, 0x35, 0x0, 0x0, 0x2, 0xBF, 0x3, 0x15, 0x0, 0x3, 0x0, 0xE, 0x0, 0x0, 0x13, 0x33, 0x35, 0x7, 0x1, 0x23, 0x15, 0x23, 0x35, 0x21, 0x27, 0x1, 0x33, 0x11, 0x33, 0xEB, 0xBA, 0xE, 0x1, 0x28, 0x60, 0xBA, 0xFE, 0x9A, 0xA, 0x1, 0x6E, 0xBC, 0x60, 0x1, 0x3B, 0xF3, 0x17, 0xFE, 0x8D, 0xA4, 0xA4, 0x78, 0x1, 0xF9, 0xFE, 0x26, 0x0, 0x1, 0x0, 0x4F, 0xFF, 0xF5, 0x2, 0xAE, 0x3, 0x15, 0x0, 0x1B, 0x0, 0x0, 0x13, 0x27, 0x13, 0x21, 0x15, 0x21, 0x7, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x6, 0x23, 0x22, 0x26, 0x27, 0x33, 0x16, 0x33, 0x32, 0x36, 0x35, 0x34, 0x23, 0x22, 0x6, 0xF7, 0x94, 0x34, 0x1, 0xEC, 0xFE, 0xAC, 0x15, 0x44, 0x42, 0x82, 0x8C, 0x93, 0x9B, 0x74, 0xB9, 0x4, 0xB9, 0x7, 0x71, 0x41, 0x33, 0x84, 0x34, 0x34, 0x1, 0x5B, 0x25, 0x1, 0x95, 0x95, 0x95, 0x1C, 0x87, 0x7A, 0x6A, 0xA7, 0x7A, 0x6D, 0x52, 0x4A, 0x33, 0x7C, 0x1B, 0x0, 0x2, 0x0, 0x4E, 0xFF, 0xF5, 0x2, 0xB9, 0x3, 0x22, 0x0, 0x13, 0x0, 0x1E, 0x0, 0x0, 0x5, 0x22, 0x26, 0x35, 0x35, 0x34, 0x36, 0x33, 0x33, 0x15, 0x22, 0x6, 0x7, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x6, 0x27, 0x32, 0x36, 0x35, 0x34, 0x23, 0x22, 0x6, 0x7, 0x15, 0x14, 0x1, 0x8B, 0x8E, 0xAF, 0xFC, 0xCC, 0x1C, 0x84, 0x94, 0xF, 0x46, 0x6C, 0x7D, 0x7F, 0xA5, 0x8E, 0x37, 0x43, 0x7A, 0x2D, 0x43, 0xF, 0xB, 0xA2, 0x9D, 0x34, 0xDF, 0xDB, 0x98, 0x55, 0x6E, 0x46, 0x95, 0x73, 0x74, 0x9C, 0x95, 0x48, 0x34, 0x73, 0x24, 0x18, 0x23, 0x90, 0x0, 0x1, 0x0, 0x37, 0x0, 0x0, 0x2, 0xAE, 0x3, 0x15, 0x0, 0x6, 0x0, 0x0, 0x1, 0x15, 0x1, 0x23, 0x1, 0x21, 0x35, 0x2, 0xAE, 0xFE, 0xAD, 0xC4, 0x1, 0x53, 0xFE, 0x4D, 0x3, 0x15, 0x68, 0xFD, 0x53, 0x2, 0x7F, 0x96, 0x0, 0x3, 0x0, 0x4C, 0xFF, 0xF5, 0x2, 0xAA, 0x3, 0x20, 0x0, 0x13, 0x0, 0x1A, 0x0, 0x23, 0x0, 0x0, 0x5, 0x22, 0x26, 0x35, 0x34, 0x37, 0x26, 0x35, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x7, 0x16, 0x15, 0x14, 0x6, 0x3, 0x34, 0x23, 0x22, 0x15, 0x14, 0x32, 0x17, 0x34, 0x26, 0x23, 0x22, 0x15, 0x14, 0x33, 0x32, 0x1, 0x7B, 0x81, 0xAE, 0x85, 0x73, 0xA0, 0x7C, 0x7D, 0xA0, 0x72, 0x85, 0xAC, 0x21, 0x63, 0x61, 0xC4, 0x14, 0x42, 0x35, 0x74, 0x75, 0x76, 0xB, 0x72, 0x73, 0x82, 0x3B, 0x39, 0x72, 0x6D, 0x71, 0x71, 0x6D, 0x73, 0x38, 0x3B, 0x82, 0x73, 0x72, 0x2, 0x41, 0x55, 0x55, 0x58, 0xF4, 0x2E, 0x30, 0x5E, 0x60, 0x0, 0x2, 0x0, 0x47, 0xFF, 0xF7, 0x2, 0xA4, 0x3, 0x20, 0x0, 0x13, 0x0, 0x1D, 0x0, 0x0, 0x17, 0x35, 0x32, 0x36, 0x37, 0x6, 0x23, 0x22, 0x26, 0x35, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x15, 0x14, 0x6, 0x7, 0x13, 0x32, 0x37, 0x35, 0x34, 0x23, 0x22, 0x6, 0x15, 0x14, 0xD5, 0x85, 0x81, 0xC, 0x43, 0x59, 0x7C, 0x88, 0xA5, 0x88, 0x87, 0xA9, 0xEA, 0xD2, 0x92, 0x4D, 0x23, 0x76, 0x36, 0x3E, 0x9, 0x94, 0x49, 0x62, 0x39, 0x8C, 0x7C, 0x74, 0xA7, 0xA1, 0xA2, 0x34, 0xE4, 0xCD, 0x1, 0x1, 0x92, 0x34, 0x45, 0x88, 0x4F, 0x38, 0x7A, 0x0, 0x1, 0x0, 0x90, 0x2, 0x87, 0x3, 0x2E, 0x3, 0x32, 0x0, 0x3, 0x0, 0x0, 0x1, 0x15, 0x21, 0x35, 0x3, 0x2E, 0xFD, 0x62, 0x3, 0x32, 0xAB, 0xAB, 0x0, 0x3, 0x0, 0x96, 0x4, 0x48, 0x2, 0xA2, 0x6, 0x96, 0x0, 0x3, 0x0, 0xC, 0x0, 0x17, 0x0, 0x0, 0x1, 0x37, 0x33, 0x7, 0x5, 0x34, 0x36, 0x32, 0x16, 0x14, 0x6, 0x22, 0x26, 0x37, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x34, 0x23, 0x22, 0x6, 0x1, 0x18, 0xA5, 0xE5, 0xF5, 0xFE, 0xE9, 0x6F, 0x9A, 0x6B, 0x6B, 0x9A, 0x6F, 0x64, 0x33, 0x25, 0x24, 0x30, 0x54, 0x25, 0x33, 0x5, 0xD3, 0xC3, 0xC3, 0xDD, 0x4D, 0x64, 0x64, 0x9A, 0x61, 0x62, 0x4C, 0x25, 0x31, 0x31, 0x25, 0x59, 0x32, 0x0, 0x1, 0x0, 0x76, 0x0, 0x0, 0x3, 0xB6, 0x4, 0x8D, 0x0, 0xB, 0x0, 0x0, 0x33, 0x11, 0x21, 0x15, 0x21, 0x11, 0x21, 0x15, 0x21, 0x11, 0x21, 0x15, 0x76, 0x3, 0x3C, 0xFD, 0xB7, 0x1, 0xF6, 0xFE, 0xA, 0x2, 0x4D, 0x4, 0x8D, 0xC4, 0xFE, 0xF3, 0xC3, 0xFE, 0xCA, 0xC3, 0x0, 0x3, 0x0, 0xA, 0xFE, 0x4A, 0x4, 0x1C, 0x4, 0x4E, 0x0, 0xD, 0x0, 0x37, 0x0, 0x44, 0x0, 0x0, 0x1, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x1, 0x14, 0x6, 0x6, 0x23, 0x22, 0x26, 0x35, 0x34, 0x36, 0x37, 0x26, 0x35, 0x34, 0x36, 0x37, 0x26, 0x27, 0x35, 0x34, 0x36, 0x33, 0x32, 0x17, 0x21, 0x17, 0x23, 0x16, 0x15, 0x15, 0x14, 0x6, 0x23, 0x22, 0x27, 0x6, 0x15, 0x14, 0x33, 0x33, 0x16, 0x16, 0x1, 0x32, 0x36, 0x35, 0x34, 0x27, 0x25, 0x27, 0x6, 0x6, 0x15, 0x14, 0x16, 0x1, 0x38, 0x71, 0x61, 0x5F, 0x71, 0x73, 0x5F, 0x5E, 0x72, 0x2, 0xDA, 0x81, 0xF4, 0xAF, 0xEB, 0xF9, 0x6D, 0x4A, 0x33, 0x49, 0x2D, 0xBC, 0x2, 0xF8, 0xCA, 0x57, 0x4B, 0x1, 0x70, 0x2, 0x89, 0x39, 0xF7, 0xCB, 0x4F, 0x47, 0x24, 0x7E, 0xB6, 0xBD, 0xD1, 0xFD, 0xDC, 0x99, 0x99, 0x91, 0xFE, 0xEC, 0x31, 0x24, 0x31, 0x7A, 0x2, 0xCD, 0x44, 0x6D, 0x6D, 0x44, 0x16, 0x48, 0x67, 0x67, 0x48, 0xFC, 0xC6, 0x50, 0xA2, 0x6D, 0xA6, 0x6E, 0x5D, 0x7F, 0x23, 0x30, 0x4A, 0x49, 0x60, 0x1F, 0x67, 0xC3, 0x1A, 0xA0, 0xCB, 0x14, 0x9A, 0x53, 0x6A, 0x16, 0x97, 0xD6, 0x12, 0x22, 0x2F, 0x4D, 0x1, 0x95, 0xFE, 0xC7, 0x68, 0x35, 0x6C, 0x9, 0x2, 0x6, 0x12, 0x49, 0x30, 0x3A, 0x55, 0x0, 0x2, 0x0, 0x56, 0xFF, 0xEB, 0x4, 0x5F, 0x4, 0x4E, 0x0, 0xC, 0x0, 0x1D, 0x0, 0x0, 0x1, 0x14, 0x16, 0x33, 0x32, 0x36, 0x37, 0x35, 0x26, 0x26, 0x23, 0x22, 0x6, 0x1, 0x27, 0x6, 0x23, 0x22, 0x2, 0x35, 0x35, 0x34, 0x12, 0x33, 0x32, 0x17, 0x37, 0x33, 0x3, 0x13, 0x1, 0x4A, 0x6D, 0x83, 0x74, 0x6C, 0x12, 0xD, 0x70, 0x73, 0x84, 0x6E, 0x2, 0x38, 0x1F, 0x6F, 0xF1, 0xCE, 0xDF, 0xDF, 0xD0, 0xEC, 0x6E, 0x1C, 0xDD, 0x6C, 0x73, 0x1, 0xFA, 0x8B, 0xC1, 0xCF, 0x82, 0x2E, 0x88, 0xD6, 0xE0, 0xFD, 0x55, 0xC4, 0xD9, 0x1, 0x28, 0xE8, 0x14, 0xFC, 0x1, 0x43, 0xD6, 0xC2, 0xFD, 0xE2, 0xFD, 0xE4, 0x0, 0x2, 0x0, 0x9B, 0x0, 0x0, 0x4, 0xF2, 0x5, 0xB0, 0x0, 0x8, 0x0, 0x1F, 0x0, 0x0, 0x1, 0x11, 0x21, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x1, 0x11, 0x23, 0x11, 0x21, 0x32, 0x4, 0x15, 0x14, 0x7, 0x16, 0x16, 0x15, 0x15, 0x14, 0x17, 0x15, 0x21, 0x26, 0x26, 0x35, 0x34, 0x23, 0x1, 0x97, 0x1, 0x14, 0x90, 0x81, 0x78, 0x89, 0xFE, 0xDC, 0xFC, 0x2, 0x29, 0xF5, 0x1, 0x0, 0xF6, 0x83, 0x66, 0x46, 0xFE, 0xFD, 0x27, 0x18, 0xF1, 0x4, 0xE5, 0xFE, 0x3C, 0x71, 0x6D, 0x67, 0x7F, 0xFD, 0x71, 0xFD, 0xAA, 0x5, 0xB0, 0xDA, 0xCC, 0xE1, 0x66, 0x28, 0xB8, 0x7B, 0x68, 0xA9, 0x3C, 0x1B, 0x21, 0x85, 0xB3, 0xFD, 0x0, 0x1, 0x0, 0x9B, 0x0, 0x0, 0x5, 0x30, 0x5, 0xB0, 0x0, 0xC, 0x0, 0x0, 0x21, 0x1, 0x23, 0x11, 0x23, 0x11, 0x33, 0x11, 0x33, 0x1, 0x21, 0x1, 0x1, 0x4, 0x0, 0xFE, 0x44, 0xAD, 0xFC, 0xFC, 0x8B, 0x1, 0xAD, 0x1, 0x36, 0xFE, 0xC, 0x2, 0x1F, 0x2, 0x70, 0xFD, 0x90, 0x5, 0xB0, 0xFD, 0x9D, 0x2, 0x63, 0xFD, 0x46, 0xFD, 0xA, 0x0, 0x1, 0x0, 0x81, 0x0, 0x0, 0x4, 0x36, 0x6, 0x0, 0x0, 0xC, 0x0, 0x0, 0x21, 0x1, 0x23, 0x11, 0x23, 0x11, 0x33, 0x11, 0x33, 0x1, 0x21, 0x1, 0x1, 0x3, 0x1B, 0xFE, 0xC8, 0x6F, 0xF3, 0xF3, 0x68, 0x1, 0x10, 0x1, 0x1B, 0xFE, 0x9F, 0x1, 0x90, 0x1, 0xDA, 0xFE, 0x26, 0x6, 0x0, 0xFC, 0x9C, 0x1, 0x9E, 0xFE, 0x13, 0xFD, 0xB3, 0x0, 0x1, 0x0, 0x9B, 0x0, 0x0, 0x5, 0x12, 0x5, 0xB0, 0x0, 0xB, 0x0, 0x0, 0x21, 0x1, 0x11, 0x23, 0x11, 0x33, 0x11, 0x33, 0x1, 0x21, 0x1, 0x1, 0x3, 0xDA, 0xFD, 0xBD, 0xFC, 0xFC, 0x6, 0x2, 0x19, 0x1, 0x39, 0xFD, 0xA5, 0x2, 0x7E, 0x2, 0x9D, 0xFD, 0x63, 0x5, 0xB0, 0xFD, 0x7F, 0x2, 0x81, 0xFD, 0x35, 0xFD, 0x1B, 0x0, 0x1, 0x0, 0x81, 0x0, 0x0, 0x4, 0x22, 0x6, 0x18, 0x0, 0xA, 0x0, 0x0, 0x21, 0x1, 0x11, 0x23, 0x11, 0x33, 0x11, 0x1, 0x21, 0x1, 0x1, 0x2, 0xFE, 0xFE, 0x76, 0xF3, 0xF3, 0x1, 0x58, 0x1, 0x2B, 0xFE, 0x4F, 0x1, 0xDC, 0x1, 0xEA, 0xFE, 0x16, 0x6, 0x18, 0xFC, 0x85, 0x1, 0x9D, 0xFE, 0xE, 0xFD, 0xB8, 0x0, 0x2, 0x0, 0x76, 0x0, 0x0, 0x4, 0x2B, 0x4, 0x8D, 0x0, 0x8, 0x0, 0x12, 0x0, 0x0, 0x1, 0x11, 0x33, 0x32, 0x36, 0x35, 0x35, 0x10, 0x25, 0x1, 0x11, 0x21, 0x32, 0x0, 0x15, 0x15, 0x14, 0x0, 0x21, 0x1, 0x69, 0x83, 0xAE, 0x9E, 0xFE, 0xC7, 0xFE, 0x77, 0x1, 0x7B, 0xFD, 0x1, 0x3D, 0xFE, 0xC2, 0xFE, 0xFF, 0x3, 0xC9, 0xFC, 0xFA, 0xBB, 0xAE, 0x36, 0x1, 0x5F, 0x8, 0xFC, 0x37, 0x4, 0x8D, 0xFE, 0xCD, 0xFA, 0x34, 0xFA, 0xFE, 0xCE, 0x0, 0x1, 0x0, 0x50, 0xFF, 0xF0, 0x4, 0x44, 0x4, 0x9D, 0x0, 0x1A, 0x0, 0x0, 0x1, 0x33, 0x6, 0x6, 0x23, 0x22, 0x0, 0x11, 0x35, 0x10, 0x0, 0x33, 0x32, 0x16, 0x17, 0x23, 0x26, 0x26, 0x23, 0x20, 0x3, 0x15, 0x14, 0x16, 0x33, 0x32, 0x36, 0x3, 0x50, 0xF3, 0xF, 0xFD, 0xE7, 0xED, 0xFE, 0xED, 0x1, 0x19, 0xEC, 0xE8, 0xF4, 0x13, 0xF3, 0xA, 0x6F, 0x83, 0xFE, 0xF4, 0x7, 0x7F, 0x8F, 0x80, 0x75, 0x1, 0x85, 0xB2, 0xE3, 0x1, 0x2D, 0x1, 0x3, 0x4C, 0x1, 0x3, 0x1, 0x2E, 0xE9, 0xB3, 0x61, 0x78, 0xFE, 0xA5, 0x5F, 0xAE, 0xBF, 0x6A, 0x0, 0x3, 0x0, 0x76, 0x0, 0x0, 0x4, 0xA, 0x4, 0x8D, 0x0, 0x6, 0x0, 0xE, 0x0, 0x1D, 0x0, 0x0, 0x1, 0x11, 0x33, 0x32, 0x35, 0x34, 0x27, 0x3, 0x11, 0x33, 0x32, 0x36, 0x35, 0x34, 0x27, 0x1, 0x11, 0x21, 0x32, 0x16, 0x15, 0x14, 0x6, 0x7, 0x16, 0x16, 0x15, 0x14, 0x6, 0x23, 0x1, 0x69, 0xCC, 0xC6, 0xC3, 0xCF, 0xE5, 0x65, 0x65, 0xB8, 0xFE, 0x16, 0x1, 0xAF, 0xD4, 0xF5, 0x57, 0x5A, 0x6B, 0x62, 0xE9, 0xD3, 0x3, 0xC9, 0xFE, 0xDD, 0x8F, 0x91, 0x3, 0xFE, 0x32, 0xFE, 0xC8, 0x54, 0x42, 0x9E, 0x4, 0xFE, 0x5, 0x4, 0x8D, 0x9D, 0xA3, 0x4E, 0x84, 0x23, 0x1A, 0x9A, 0x55, 0xAA, 0xA5, 0x0, 0x2, 0x0, 0x9, 0x0, 0x0, 0x4, 0x94, 0x4, 0x8D, 0x0, 0x2, 0x0, 0xA, 0x0, 0x0, 0x1, 0x3, 0x3, 0x1, 0x27, 0x21, 0x7, 0x23, 0x1, 0x33, 0x1, 0x2, 0xF8, 0xAA, 0xA9, 0x1, 0xFA, 0x60, 0xFE, 0x20, 0x60, 0xF6, 0x1, 0xD7, 0xDF, 0x1, 0xD5, 0x1, 0xB2, 0x1, 0xBA, 0xFE, 0x46, 0xFE, 0x4E, 0xFA, 0xFA, 0x4, 0x8D, 0xFB, 0x73, 0x0, 0x1, 0x0, 0x94, 0x4, 0x6A, 0x1, 0xA9, 0x6, 0x2B, 0x0, 0x8, 0x0, 0x0, 0x13, 0x35, 0x34, 0x36, 0x37, 0x17, 0x6, 0x7, 0x15, 0x94, 0x5B, 0x38, 0x82, 0x3F, 0x2, 0x4, 0x6A, 0x85, 0x62, 0xB0, 0x2A, 0x53, 0x6D, 0x7C, 0x85, 0x0, 0x2, 0x0, 0x76, 0x4, 0xD5, 0x3, 0x0, 0x6, 0x7F, 0x0, 0x3, 0x0, 0x10, 0x0, 0x0, 0x1, 0x27, 0x33, 0x17, 0x17, 0x33, 0x14, 0x6, 0x20, 0x26, 0x35, 0x33, 0x14, 0x16, 0x33, 0x32, 0x36, 0x1, 0x8C, 0xA9, 0xB6, 0x73, 0x42, 0xB2, 0xAF, 0xFE, 0xD4, 0xAF, 0xB0, 0x43, 0x52, 0x50, 0x43, 0x5, 0xBF, 0xC0, 0xC0, 0xE, 0x61, 0x7B, 0x7B, 0x61, 0x2C, 0x43, 0x43, 0x0, 0x3, 0xFC, 0x5A, 0x4, 0xCB, 0xFF, 0x18, 0x6, 0xA2, 0x0, 0x3, 0x0, 0xD, 0x0, 0x17, 0x0, 0x0, 0x3, 0x15, 0x21, 0x35, 0x3, 0x34, 0x36, 0x32, 0x16, 0x15, 0x14, 0x6, 0x22, 0x26, 0x25, 0x34, 0x36, 0x32, 0x16, 0x15, 0x14, 0x6, 0x22, 0x26, 0xF0, 0xFD, 0x51, 0x7, 0x41, 0x76, 0x42, 0x42, 0x76, 0x41, 0x1, 0xC4, 0x42, 0x76, 0x42, 0x42, 0x76, 0x42, 0x6, 0xA2, 0x9E, 0x9E, 0xFE, 0x9C, 0x2F, 0x43, 0x43, 0x2F, 0x30, 0x41, 0x41, 0x2E, 0x30, 0x42, 0x42, 0x30, 0x2F, 0x42, 0x42, 0x0, 0x3, 0xFC, 0x5A, 0x4, 0xCB, 0xFF, 0x18, 0x6, 0x65, 0x0, 0x3, 0x0, 0xD, 0x0, 0x17, 0x0, 0x0, 0x1, 0x37, 0x33, 0x7, 0x5, 0x34, 0x36, 0x32, 0x16, 0x15, 0x14, 0x6, 0x22, 0x26, 0x25, 0x34, 0x36, 0x32, 0x16, 0x15, 0x14, 0x6, 0x22, 0x26, 0xFD, 0x67, 0x7F, 0xC4, 0xB6, 0xFE, 0x66, 0x41, 0x76, 0x42, 0x42, 0x76, 0x41, 0x1, 0xC4, 0x42, 0x76, 0x42, 0x42, 0x76, 0x42, 0x5, 0x92, 0xD3, 0xD3, 0x54, 0x2F, 0x43, 0x43, 0x2F, 0x30, 0x41, 0x41, 0x2E, 0x30, 0x42, 0x42, 0x30, 0x2F, 0x42, 0x42, 0x0, 0x3, 0xFC, 0x5A, 0x4, 0xCB, 0xFF, 0x18, 0x6, 0xA1, 0x0, 0x8, 0x0, 0x12, 0x0, 0x1C, 0x0, 0x0, 0x1, 0x17, 0x37, 0x33, 0x15, 0x5, 0x23, 0x25, 0x35, 0x3, 0x34, 0x36, 0x32, 0x16, 0x15, 0x14, 0x6, 0x22, 0x26, 0x25, 0x34, 0x36, 0x32, 0x16, 0x15, 0x14, 0x6, 0x22, 0x26, 0xFD, 0x2C, 0x8B, 0x8C, 0xCF, 0xFE, 0xF4, 0x9D, 0xFE, 0xF5, 0x4, 0x41, 0x76, 0x42, 0x42, 0x76, 0x41, 0x1, 0xC4, 0x42, 0x76, 0x42, 0x42, 0x76, 0x42, 0x6, 0xA1, 0x78, 0x78, 0x12, 0xDF, 0xDE, 0x13, 0xFE, 0x9D, 0x2F, 0x43, 0x43, 0x2F, 0x30, 0x41, 0x41, 0x2E, 0x30, 0x42, 0x42, 0x30, 0x2F, 0x42, 0x42, 0x0, 0x3, 0xFC, 0x5A, 0x4, 0xCB, 0xFF, 0x18, 0x6, 0x65, 0x0, 0x3, 0x0, 0xD, 0x0, 0x17, 0x0, 0x0, 0x1, 0x17, 0x23, 0x27, 0x3, 0x34, 0x36, 0x32, 0x16, 0x15, 0x14, 0x6, 0x22, 0x26, 0x25, 0x34, 0x36, 0x32, 0x16, 0x15, 0x14, 0x6, 0x22, 0x26, 0xFD, 0x8B, 0x7F, 0x8D, 0xB5, 0x6E, 0x41, 0x76, 0x42, 0x42, 0x76, 0x41, 0x1, 0xC4, 0x42, 0x76, 0x42, 0x42, 0x76, 0x42, 0x6, 0x65, 0xD3, 0xD3, 0xFE, 0xD9, 0x2F, 0x43, 0x43, 0x2F, 0x30, 0x41, 0x41, 0x2E, 0x30, 0x42, 0x42, 0x30, 0x2F, 0x42, 0x42, 0x0, 0x2, 0xFC, 0x61, 0x4, 0xCB, 0xFF, 0x10, 0x6, 0x9E, 0x0, 0x3, 0x0, 0xD, 0x0, 0x0, 0x3, 0x15, 0x21, 0x35, 0x13, 0x34, 0x36, 0x32, 0x16, 0x15, 0x14, 0x6, 0x22, 0x26, 0xF0, 0xFD, 0x51, 0xDB, 0x41, 0x76, 0x42, 0x42, 0x76, 0x41, 0x6, 0x9E, 0x9E, 0x9E, 0xFE, 0x9E, 0x30, 0x42, 0x42, 0x30, 0x2F, 0x42, 0x42, 0x0, 0x2, 0xFC, 0x9C, 0x4, 0xBD, 0xFE, 0xD6, 0x6, 0x8C, 0x0, 0x3, 0x0, 0x17, 0x0, 0x0, 0x1, 0x37, 0x33, 0x7, 0x17, 0x17, 0x14, 0x6, 0x23, 0x22, 0x26, 0x23, 0x22, 0x6, 0x15, 0x27, 0x34, 0x36, 0x33, 0x32, 0x16, 0x33, 0x32, 0x36, 0xFD, 0x67, 0x7F, 0xC4, 0xB6, 0x7B, 0x67, 0x5D, 0x49, 0x50, 0x52, 0x41, 0x1F, 0x2A, 0x68, 0x5B, 0x4A, 0x42, 0x63, 0x3F, 0x1E, 0x2C, 0x5, 0xB9, 0xD3, 0xD3, 0x18, 0x1E, 0x49, 0x6D, 0x47, 0x32, 0x25, 0x1C, 0x47, 0x71, 0x47, 0x32, 0x0, 0x2, 0xFC, 0x61, 0x4, 0xBF, 0xFF, 0x10, 0x6, 0x5F, 0x0, 0x3, 0x0, 0x7, 0x0, 0x0, 0x1, 0x17, 0x23, 0x27, 0x1, 0x15, 0x21, 0x35, 0xFD, 0x7A, 0x8A, 0x89, 0xCA, 0x2, 0x5F, 0xFD, 0x51, 0x6, 0x5F, 0xC0, 0xC0, 0xFE, 0xFE, 0x9E, 0x9E, 0x0, 0x2, 0xFC, 0x61, 0x4, 0xBF, 0xFF, 0x10, 0x6, 0x5F, 0x0, 0x3, 0x0, 0x7, 0x0, 0x0, 0x1, 0x37, 0x33, 0x7, 0x5, 0x15, 0x21, 0x35, 0xFD, 0x67, 0x7F, 0xC4, 0xB6, 0x1, 0x1C, 0xFD, 0x51, 0x5, 0x9F, 0xC0, 0xC0, 0x42, 0x9E, 0x9E, 0x0, 0x3, 0xFC, 0x5A, 0x4, 0xBF, 0xFF, 0x18, 0x6, 0xA0, 0x0, 0x9, 0x0, 0x13, 0x0, 0x17, 0x0, 0x0, 0x1, 0x34, 0x36, 0x32, 0x16, 0x15, 0x14, 0x6, 0x22, 0x26, 0x25, 0x34, 0x36, 0x32, 0x16, 0x15, 0x14, 0x6, 0x22, 0x26, 0x17, 0x15, 0x21, 0x35, 0xFC, 0x5A, 0x41, 0x76, 0x42, 0x42, 0x76, 0x41, 0x1, 0xC4, 0x42, 0x76, 0x42, 0x42, 0x76, 0x42, 0xF2, 0xFD, 0x51, 0x6, 0x2E, 0x30, 0x42, 0x42, 0x30, 0x2F, 0x42, 0x42, 0x2E, 0x30, 0x42, 0x42, 0x30, 0x2F, 0x42, 0x42, 0xA1, 0x9E, 0x9E, 0x0, 0x2, 0xFC, 0xAA, 0x4, 0xED, 0xFE, 0xEA, 0x6, 0x79, 0x0, 0x9, 0x0, 0xD, 0x0, 0x0, 0x0, 0x36, 0x33, 0x32, 0x16, 0x14, 0x6, 0x23, 0x22, 0x26, 0x17, 0x13, 0x33, 0x3, 0xFC, 0xAA, 0x41, 0x3C, 0x3A, 0x42, 0x42, 0x3A, 0x3C, 0x41, 0xDB, 0x8E, 0xD7, 0xC9, 0x6, 0x37, 0x42, 0x42, 0x60, 0x41, 0x41, 0xEA, 0x1, 0x4, 0xFE, 0xFC, 0x0, 0x2, 0xFC, 0x5E, 0x4, 0xC3, 0xFF, 0x12, 0x6, 0xC1, 0x0, 0x7, 0x0, 0x10, 0x0, 0x0, 0x0, 0x36, 0x32, 0x16, 0x14, 0x6, 0x22, 0x26, 0x7, 0x17, 0x37, 0x33, 0x15, 0x5, 0x23, 0x25, 0x35, 0xFD, 0x3C, 0x41, 0x76, 0x42, 0x42, 0x76, 0x41, 0x10, 0x8B, 0x8C, 0xCF, 0xFE, 0xF4, 0x9D, 0xFE, 0xF5, 0x6, 0x7F, 0x42, 0x42, 0x60, 0x41, 0x41, 0x6C, 0x78, 0x78, 0x11, 0xDF, 0xDE, 0x12, 0x0, 0x2, 0x0, 0x7B, 0x4, 0xE8, 0x4, 0x8C, 0x6, 0x91, 0x0, 0x3, 0x0, 0xA, 0x0, 0x0, 0x1, 0x13, 0x33, 0x3, 0x5, 0x25, 0x33, 0x5, 0x23, 0x27, 0x7, 0x3, 0x16, 0x97, 0xDF, 0xD8, 0xFC, 0xC7, 0x1, 0x22, 0xA2, 0x1, 0x22, 0xD4, 0x9F, 0x9F, 0x5, 0x86, 0x1, 0xB, 0xFE, 0xF5, 0x9E, 0xF9, 0xF9, 0x8E, 0x8E, 0x0, 0x2, 0xFF, 0x4B, 0x4, 0xDB, 0x3, 0x5C, 0x6, 0x84, 0x0, 0x3, 0x0, 0xA, 0x0, 0x0, 0x13, 0x13, 0x23, 0x3, 0x5, 0x5, 0x23, 0x27, 0x7, 0x23, 0x25, 0x2A, 0x97, 0x9E, 0xD8, 0x2, 0xEF, 0x1, 0x22, 0xD4, 0x9F, 0x9F, 0xD4, 0x1, 0x22, 0x6, 0x84, 0xFE, 0xF5, 0x1, 0xB, 0xB0, 0xF9, 0x8E, 0x8E, 0xF9, 0x0, 0x2, 0x0, 0x76, 0x4, 0xE8, 0x4, 0xA, 0x6, 0xCB, 0x0, 0xC, 0x0, 0x13, 0x0, 0x0, 0x1, 0x23, 0x27, 0x36, 0x35, 0x34, 0x23, 0x37, 0x20, 0x15, 0x14, 0x6, 0x7, 0x25, 0x5, 0x23, 0x27, 0x7, 0x23, 0x25, 0x3, 0x89, 0x89, 0x7, 0x77, 0x81, 0x6, 0x1, 0x15, 0x50, 0x31, 0xFE, 0xBE, 0x1, 0x15, 0xC1, 0xB2, 0xB3, 0xC0, 0x1, 0x15, 0x5, 0x6E, 0x7D, 0x7, 0x33, 0x3E, 0x68, 0xA4, 0x3E, 0x3A, 0x7, 0x39, 0xF9, 0xA1, 0xA1, 0xF9, 0x0, 0x2, 0x0, 0x76, 0x4, 0xE8, 0x3, 0x5C, 0x6, 0xD2, 0x0, 0x13, 0x0, 0x1A, 0x0, 0x0, 0x1, 0x17, 0x14, 0x6, 0x23, 0x22, 0x26, 0x23, 0x22, 0x6, 0x15, 0x27, 0x34, 0x36, 0x33, 0x32, 0x16, 0x33, 0x32, 0x36, 0x7, 0x5, 0x23, 0x27, 0x7, 0x23, 0x25, 0x2, 0x92, 0x5B, 0x56, 0x41, 0x46, 0x4F, 0x3A, 0x1B, 0x2A, 0x5A, 0x55, 0x40, 0x3B, 0x5E, 0x37, 0x1B, 0x2A, 0x5F, 0x1, 0x29, 0xC1, 0xB2, 0xB3, 0xC0, 0x1, 0x29, 0x6, 0xD2, 0x1F, 0x3B, 0x62, 0x43, 0x2C, 0x1B, 0x18, 0x3B, 0x64, 0x41, 0x2E, 0xE2, 0xEC, 0x8E, 0x8E, 0xEC, 0x0, 0x2, 0xFC, 0x61, 0x4, 0xBD, 0xFF, 0x10, 0x6, 0xA2, 0x0, 0x3, 0x0, 0x17, 0x0, 0x0, 0x3, 0x15, 0x21, 0x35, 0x1, 0x17, 0x14, 0x6, 0x23, 0x22, 0x26, 0x23, 0x22, 0x6, 0x15, 0x27, 0x34, 0x36, 0x33, 0x32, 0x16, 0x33, 0x32, 0x36, 0xF0, 0xFD, 0x51, 0x2, 0xE, 0x67, 0x5D, 0x49, 0x50, 0x52, 0x41, 0x1F, 0x2A, 0x68, 0x5B, 0x4A, 0x42, 0x63, 0x3F, 0x1E, 0x2C, 0x6, 0xA2, 0x9E, 0x9E, 0xFE, 0xFF, 0x1E, 0x49, 0x6D, 0x47, 0x32, 0x25, 0x1C, 0x47, 0x71, 0x47, 0x32, 0x0, 0x1, 0x0, 0x76, 0x0, 0x0, 0x3, 0x97, 0x5, 0xC4, 0x0, 0x7, 0x0, 0x0, 0x1, 0x21, 0x11, 0x23, 0x11, 0x21, 0x11, 0x33, 0x3, 0x97, 0xFD, 0xD2, 0xF3, 0x2, 0x2E, 0xF3, 0x3, 0xC9, 0xFC, 0x37, 0x4, 0x8D, 0x1, 0x37, 0x0, 0x2, 0x0, 0x76, 0x4, 0xD3, 0x3, 0x0, 0x6, 0x7F, 0x0, 0x3, 0x0, 0x10, 0x0, 0x0, 0x1, 0x37, 0x33, 0x7, 0x17, 0x33, 0x14, 0x6, 0x20, 0x26, 0x35, 0x33, 0x14, 0x16, 0x33, 0x32, 0x36, 0x1, 0x77, 0x72, 0xB7, 0xA9, 0x57, 0xB2, 0xAF, 0xFE, 0xD4, 0xAF, 0xB0, 0x43, 0x52, 0x50, 0x43, 0x5, 0xBF, 0xC0, 0xC0, 0xF, 0x61, 0x7C, 0x7C, 0x61, 0x2C, 0x43, 0x43, 0x0, 0x2, 0x0, 0x76, 0x4, 0xD5, 0x2, 0xF6, 0x7, 0x8, 0x0, 0xC, 0x0, 0x1A, 0x0, 0x0, 0x1, 0x23, 0x27, 0x36, 0x35, 0x34, 0x23, 0x37, 0x20, 0x15, 0x14, 0x6, 0x7, 0x17, 0x33, 0x14, 0x6, 0x23, 0x22, 0x26, 0x35, 0x33, 0x14, 0x16, 0x33, 0x32, 0x36, 0x2, 0x8, 0x9E, 0x8, 0x87, 0x93, 0x7, 0x1, 0x3D, 0x5B, 0x36, 0x3F, 0xAE, 0xAB, 0x95, 0x94, 0xAC, 0xAD, 0x43, 0x50, 0x4F, 0x43, 0x5, 0xC9, 0x76, 0x6, 0x2D, 0x37, 0x5F, 0x93, 0x37, 0x34, 0x6, 0x54, 0x61, 0x7A, 0x7A, 0x61, 0x2B, 0x42, 0x42, 0x0, 0x3, 0xFC, 0x5A, 0x4, 0xBD, 0xFF, 0x18, 0x6, 0xC1, 0x0, 0x7, 0x0, 0x11, 0x0, 0x25, 0x0, 0x0, 0x0, 0x36, 0x32, 0x16, 0x14, 0x6, 0x22, 0x26, 0x25, 0x34, 0x36, 0x32, 0x16, 0x15, 0x14, 0x6, 0x22, 0x26, 0x17, 0x17, 0x14, 0x6, 0x23, 0x22, 0x26, 0x23, 0x22, 0x6, 0x15, 0x27, 0x34, 0x36, 0x33, 0x32, 0x16, 0x33, 0x32, 0x36, 0xFC, 0x5A, 0x41, 0x76, 0x42, 0x42, 0x76, 0x41, 0x1, 0xC4, 0x42, 0x76, 0x42, 0x42, 0x76, 0x42, 0x51, 0x67, 0x5D, 0x49, 0x50, 0x52, 0x41, 0x1F, 0x2A, 0x68, 0x5B, 0x4A, 0x42, 0x63, 0x3F, 0x1E, 0x2C, 0x6, 0x7F, 0x42, 0x42, 0x60, 0x41, 0x41, 0x2E, 0x30, 0x43, 0x43, 0x30, 0x2F, 0x41, 0x41, 0x7D, 0x1E, 0x49, 0x6D, 0x47, 0x32, 0x25, 0x1C, 0x47, 0x71, 0x47, 0x32, 0xFF, 0xFF, 0x0, 0x4C, 0x2, 0x8D, 0x2, 0xAA, 0x5, 0xB8, 0x0, 0x7, 0x7, 0x43, 0x0, 0x0, 0x2, 0x98, 0xFF, 0xFF, 0x0, 0x35, 0x2, 0x98, 0x2, 0xBF, 0x5, 0xAD, 0x0, 0x7, 0x7, 0x9E, 0x0, 0x0, 0x2, 0x98, 0xFF, 0xFF, 0x0, 0x4F, 0x2, 0x8D, 0x2, 0xAE, 0x5, 0xAD, 0x0, 0x7, 0x7, 0x9F, 0x0, 0x0, 0x2, 0x98, 0xFF, 0xFF, 0x0, 0x4E, 0x2, 0x8D, 0x2, 0xB9, 0x5, 0xBA, 0x0, 0x7, 0x7, 0xA0, 0x0, 0x0, 0x2, 0x98, 0xFF, 0xFF, 0x0, 0x37, 0x2, 0x98, 0x2, 0xAE, 0x5, 0xAD, 0x0, 0x7, 0x7, 0xA1, 0x0, 0x0, 0x2, 0x98, 0xFF, 0xFF, 0x0, 0x4C, 0x2, 0x8D, 0x2, 0xAA, 0x5, 0xB8, 0x0, 0x7, 0x7, 0xA2, 0x0, 0x0, 0x2, 0x98, 0xFF, 0xFF, 0x0, 0x47, 0x2, 0x8F, 0x2, 0xA4, 0x5, 0xB8, 0x0, 0x7, 0x7, 0xA3, 0x0, 0x0, 0x2, 0x98, 0x0, 0x1, 0x0, 0x6C, 0xFF, 0xEB, 0x5, 0x26, 0x5, 0xC5, 0x0, 0x1B, 0x0, 0x0, 0x1, 0x33, 0x6, 0x0, 0x21, 0x20, 0x0, 0x11, 0x35, 0x10, 0x0, 0x21, 0x20, 0x0, 0x17, 0x23, 0x26, 0x26, 0x23, 0x22, 0x2, 0x15, 0x15, 0x14, 0x12, 0x33, 0x32, 0x36, 0x4, 0x29, 0xFC, 0x16, 0xFE, 0xDE, 0xFE, 0xF9, 0xFE, 0xEE, 0xFE, 0x98, 0x1, 0x62, 0x1, 0x12, 0x1, 0x6, 0x1, 0x2A, 0x16, 0xFD, 0x13, 0x99, 0x9D, 0xAC, 0xCC, 0xD2, 0xAC, 0x9D, 0x92, 0x1, 0xDA, 0xDD, 0xFE, 0xEE, 0x1, 0x87, 0x1, 0x4A, 0x37, 0x1, 0x4A, 0x1, 0x88, 0xFE, 0xEA, 0xE0, 0x8C, 0x9F, 0xFE, 0xE7, 0xEC, 0x39, 0xEC, 0xFE, 0xE5, 0x9D, 0x0, 0x1, 0x0, 0x6C, 0xFF, 0xEB, 0x5, 0x26, 0x5, 0xC5, 0x0, 0x20, 0x0, 0x0, 0x1, 0x11, 0x6, 0x4, 0x23, 0x22, 0x24, 0x2, 0x35, 0x35, 0x10, 0x0, 0x21, 0x20, 0x0, 0x17, 0x23, 0x26, 0x26, 0x23, 0x22, 0x2, 0x15, 0x15, 0x14, 0x12, 0x33, 0x32, 0x36, 0x37, 0x11, 0x21, 0x35, 0x5, 0x26, 0x2C, 0xFE, 0xFB, 0xE8, 0xBF, 0xFE, 0xCF, 0xB1, 0x1, 0x66, 0x1, 0x13, 0x1, 0x11, 0x1, 0x14, 0x1C, 0xF9, 0x13, 0x95, 0x9D, 0xA9, 0xD7, 0xED, 0xB8, 0x7A, 0x8A, 0x19, 0xFE, 0xDD, 0x2, 0xE4, 0xFD, 0xD9, 0x3D, 0x95, 0xB1, 0x1, 0x47, 0xE0, 0x25, 0x1, 0x54, 0x1, 0x89, 0xFE, 0xF9, 0xCB, 0x71, 0x96, 0xFE, 0xE2, 0xF2, 0x27, 0xF3, 0xFE, 0xE5, 0x39, 0x1C, 0x1, 0x1B, 0xBF, 0x0, 0x2, 0x0, 0x9B, 0x0, 0x0, 0x5, 0x18, 0x5, 0xB0, 0x0, 0x9, 0x0, 0x13, 0x0, 0x0, 0x1, 0x11, 0x33, 0x32, 0x12, 0x35, 0x35, 0x34, 0x2, 0x23, 0x1, 0x11, 0x21, 0x20, 0x0, 0x13, 0x15, 0x10, 0x0, 0x21, 0x1, 0x97, 0xAE, 0xE9, 0xEC, 0xEC, 0xDD, 0xFE, 0x4A, 0x1, 0xBE, 0x1, 0x35, 0x1, 0x89, 0x1, 0xFE, 0x73, 0xFE, 0xC2, 0x4, 0xE5, 0xFB, 0xE5, 0x1, 0x1C, 0xDD, 0x2B, 0xE6, 0x1, 0x11, 0xFB, 0x1B, 0x5, 0xB0, 0xFE, 0x77, 0xFE, 0xC6, 0x2A, 0xFE, 0xC4, 0xFE, 0x79, 0x0, 0x2, 0x0, 0x6C, 0xFF, 0xEB, 0x5, 0x72, 0x5, 0xC5, 0x0, 0x10, 0x0, 0x1E, 0x0, 0x0, 0x1, 0x14, 0x2, 0x4, 0x23, 0x22, 0x24, 0x2, 0x35, 0x35, 0x34, 0x12, 0x24, 0x33, 0x20, 0x0, 0x13, 0x7, 0x34, 0x2, 0x23, 0x22, 0x2, 0x15, 0x15, 0x14, 0x12, 0x33, 0x32, 0x12, 0x35, 0x5, 0x72, 0xA6, 0xFE, 0xDF, 0xBB, 0xB6, 0xFE, 0xDC, 0xAA, 0xA9, 0x1, 0x23, 0xB6, 0x1, 0x15, 0x1, 0x6B, 0x4, 0xFA, 0xDA, 0xB0, 0xA9, 0xDE, 0xE0, 0xA9, 0xB1, 0xD7, 0x2, 0xC3, 0xD2, 0xFE, 0xB7, 0xBD, 0xBD, 0x1, 0x49, 0xD2, 0x2A, 0xD2, 0x1, 0x49, 0xBD, 0xFE, 0x69, 0xFE, 0xCB, 0xA, 0xE2, 0x1, 0x24, 0xFE, 0xDC, 0xE2, 0x2C, 0xE4, 0xFE, 0xDB, 0x1, 0x25, 0xE4, 0x0, 0x2, 0x0, 0x6C, 0xFF, 0x3, 0x5, 0x72, 0x5, 0xC5, 0x0, 0x14, 0x0, 0x22, 0x0, 0x0, 0x5, 0x25, 0x6, 0x23, 0x22, 0x24, 0x2, 0x35, 0x35, 0x34, 0x12, 0x24, 0x33, 0x20, 0x0, 0x13, 0x15, 0x14, 0x2, 0x7, 0x17, 0x3, 0x34, 0x2, 0x23, 0x22, 0x2, 0x15, 0x15, 0x14, 0x12, 0x33, 0x32, 0x12, 0x35, 0x4, 0x9C, 0xFE, 0xD6, 0x3F, 0x43, 0xB6, 0xFE, 0xDC, 0xAA, 0xA9, 0x1, 0x23, 0xB6, 0x1, 0x17, 0x1, 0x6A, 0x3, 0x9A, 0x85, 0xEE, 0xC9, 0xDA, 0xB0, 0xA9, 0xDE, 0xE0, 0xA9, 0xB1, 0xD7, 0xFD, 0xF5, 0xD, 0xBA, 0x1, 0x4B, 0xD7, 0x21, 0xD8, 0x1, 0x4A, 0xBB, 0xFE, 0x69, 0xFE, 0xC3, 0x2A, 0xCF, 0xFE, 0xBD, 0x5D, 0xC1, 0x3, 0x53, 0xEB, 0x1, 0x20, 0xFE, 0xE0, 0xEB, 0x23, 0xEB, 0xFE, 0xDE, 0x1, 0x22, 0xEB, 0x0, 0x1, 0x0, 0x98, 0x0, 0x0, 0x2, 0xEF, 0x4, 0x8D, 0x0, 0x6, 0x0, 0x0, 0x1, 0x11, 0x23, 0x11, 0x5, 0x35, 0x25, 0x2, 0xEF, 0xF2, 0xFE, 0x9B, 0x2, 0x38, 0x4, 0x8D, 0xFB, 0x73, 0x3, 0x69, 0x7A, 0xCD, 0xD1, 0x0, 0x1, 0x0, 0x6F, 0x0, 0x0, 0x4, 0x2D, 0x4, 0x9F, 0x0, 0x18, 0x0, 0x0, 0x25, 0x15, 0x21, 0x35, 0x1, 0x36, 0x36, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x23, 0x34, 0x24, 0x33, 0x32, 0x16, 0x15, 0x14, 0x6, 0x7, 0x1, 0x4, 0x2D, 0xFC, 0x5F, 0x1, 0xF3, 0x53, 0x35, 0x5B, 0x69, 0x64, 0x7D, 0xF3, 0x1, 0x5, 0xCF, 0xD6, 0xDF, 0x7B, 0x7A, 0xFE, 0xE1, 0xC2, 0xC2, 0xA0, 0x1, 0xB2, 0x49, 0x68, 0x39, 0x3B, 0x66, 0x74, 0x64, 0xAD, 0xED, 0xBF, 0x94, 0x6E, 0xB2, 0x6A, 0xFF, 0x0, 0x0, 0x1, 0x0, 0xF, 0xFE, 0xA3, 0x3, 0xF3, 0x4, 0x8D, 0x0, 0x17, 0x0, 0x0, 0x1, 0x1, 0x21, 0x35, 0x21, 0x15, 0x1, 0x16, 0x16, 0x15, 0x10, 0x0, 0x21, 0x22, 0x27, 0x37, 0x16, 0x33, 0x32, 0x36, 0x35, 0x10, 0x25, 0x23, 0x1, 0x51, 0x1, 0x4D, 0xFD, 0xBA, 0x3, 0x77, 0xFE, 0x9D, 0x9E, 0xE9, 0xFE, 0xB2, 0xFE, 0xFF, 0xC6, 0xCF, 0x39, 0x9F, 0xAB, 0xA8, 0xC0, 0xFE, 0xAF, 0x58, 0x2, 0x55, 0x1, 0x74, 0xC4, 0x8F, 0xFE, 0x80, 0x19, 0xEA, 0xBE, 0xFE, 0xFD, 0xFE, 0xE9, 0x67, 0xB6, 0x58, 0xBB, 0x90, 0x1, 0x20, 0x7, 0x0, 0x2, 0x0, 0x36, 0xFE, 0xC3, 0x4, 0x8B, 0x4, 0x8D, 0x0, 0x3, 0x0, 0xE, 0x0, 0x0, 0x25, 0x21, 0x11, 0x7, 0x1, 0x23, 0x11, 0x23, 0x11, 0x21, 0x27, 0x1, 0x33, 0x11, 0x33, 0x1, 0x3A, 0x1, 0xA9, 0x17, 0x1, 0xBF, 0xB5, 0xF3, 0xFD, 0x59, 0x6, 0x2, 0xA5, 0xFB, 0xB5, 0xC3, 0x2, 0x7F, 0x2A, 0xFC, 0xE7, 0xFE, 0xC4, 0x1, 0x3C, 0x94, 0x3, 0xFA, 0xFC, 0x36, 0x0, 0x1, 0x0, 0x67, 0xFE, 0xA0, 0x4, 0x1E, 0x4, 0x8C, 0x0, 0x1B, 0x0, 0x0, 0x1, 0x27, 0x13, 0x21, 0x15, 0x21, 0x3, 0x36, 0x37, 0x36, 0x12, 0x15, 0x14, 0x0, 0x21, 0x22, 0x27, 0x37, 0x16, 0x33, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x1, 0x52, 0xCA, 0x5A, 0x3, 0x29, 0xFD, 0x9A, 0x2D, 0x60, 0x8B, 0xD1, 0xEA, 0xFE, 0xF2, 0xFE, 0xF0, 0xE6, 0xB3, 0x4A, 0x82, 0xBF, 0x9B, 0x9F, 0x87, 0x80, 0x5E, 0x5D, 0x1, 0x64, 0x11, 0x3, 0x17, 0xD1, 0xFE, 0xA9, 0x32, 0x2, 0x2, 0xFE, 0xF7, 0xE3, 0xD6, 0xFE, 0xC8, 0x75, 0xB1, 0x63, 0xC1, 0x88, 0x7F, 0xA9, 0x3C, 0x0, 0x1, 0x0, 0x43, 0xFE, 0xC3, 0x4, 0x11, 0x4, 0x8D, 0x0, 0x6, 0x0, 0x0, 0x1, 0x15, 0x1, 0x23, 0x1, 0x21, 0x35, 0x4, 0x11, 0xFD, 0xB5, 0xF3, 0x2, 0x3E, 0xFD, 0x32, 0x4, 0x8D, 0x87, 0xFA, 0xBD, 0x5, 0x7, 0xC3, 0x0, 0x2, 0x0, 0x76, 0x4, 0xD0, 0x2, 0xF8, 0x6, 0xDD, 0x0, 0x13, 0x0, 0x21, 0x0, 0x0, 0x1, 0x17, 0x14, 0x6, 0x23, 0x22, 0x26, 0x23, 0x22, 0x6, 0x15, 0x27, 0x34, 0x36, 0x33, 0x32, 0x16, 0x33, 0x32, 0x36, 0x3, 0x33, 0x14, 0x6, 0x23, 0x22, 0x26, 0x35, 0x33, 0x14, 0x16, 0x33, 0x32, 0x36, 0x2, 0x72, 0x67, 0x5D, 0x49, 0x50, 0x53, 0x41, 0x1E, 0x2B, 0x67, 0x5C, 0x49, 0x42, 0x63, 0x3F, 0x1E, 0x2C, 0x29, 0xAF, 0xAC, 0x95, 0x94, 0xAD, 0xAE, 0x42, 0x51, 0x50, 0x42, 0x6, 0xDD, 0x1E, 0x49, 0x6D, 0x47, 0x32, 0x25, 0x1C, 0x48, 0x70, 0x46, 0x31, 0xFE, 0xF8, 0x63, 0x7D, 0x7D, 0x63, 0x2C, 0x43, 0x43, 0x0, 0x1, 0x0, 0x5D, 0xFE, 0x99, 0x1, 0x50, 0x0, 0xB5, 0x0, 0x3, 0x0, 0x0, 0x25, 0x11, 0x23, 0x11, 0x1, 0x50, 0xF3, 0xB5, 0xFD, 0xE4, 0x2, 0x1C, 0x0, 0x2, 0x0, 0x50, 0xFF, 0xF0, 0x6, 0x6D, 0x4, 0x9D, 0x0, 0x9, 0x0, 0x21, 0x0, 0x0, 0x25, 0x37, 0x11, 0x27, 0x22, 0x6, 0x15, 0x15, 0x14, 0x16, 0x17, 0x22, 0x0, 0x11, 0x35, 0x10, 0x0, 0x33, 0x32, 0x16, 0x33, 0x21, 0x15, 0x21, 0x11, 0x21, 0x15, 0x21, 0x11, 0x21, 0x15, 0x21, 0x22, 0x6, 0x2, 0x61, 0xCD, 0xCF, 0x85, 0x98, 0x9A, 0x85, 0xE9, 0xFE, 0xD8, 0x1, 0x26, 0xE9, 0x40, 0xD9, 0x74, 0x2, 0x7E, 0xFD, 0xB7, 0x1, 0xF6, 0xFE, 0xA, 0x2, 0x4C, 0xFD, 0x81, 0x77, 0xD5, 0xB4, 0x8, 0x3, 0x13, 0x9, 0xC1, 0xB5, 0x36, 0xB5, 0xC3, 0xC4, 0x1, 0x32, 0x1, 0xA, 0x34, 0x1, 0xA, 0x1, 0x33, 0x10, 0xC4, 0xFE, 0xF3, 0xC3, 0xFE, 0xCA, 0xC3, 0x10, 0x0, 0x2, 0x0, 0x74, 0xFE, 0xB3, 0x4, 0x54, 0x4, 0xA1, 0x0, 0xC, 0x0, 0x23, 0x0, 0x0, 0x1, 0x32, 0x36, 0x37, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x14, 0x16, 0x13, 0x22, 0x27, 0x37, 0x16, 0x33, 0x32, 0x36, 0x37, 0x6, 0x23, 0x22, 0x2, 0x35, 0x34, 0x0, 0x33, 0x32, 0x0, 0x13, 0x15, 0x10, 0x0, 0x2, 0x5F, 0x61, 0x80, 0x21, 0x8D, 0x7A, 0x6A, 0x89, 0x82, 0x1B, 0x9B, 0x87, 0x2F, 0x7D, 0x5B, 0x93, 0xC1, 0x1B, 0x74, 0xA9, 0xD4, 0xF3, 0x1, 0x11, 0xCA, 0xE0, 0x1, 0x22, 0x3, 0xFE, 0xAC, 0x1, 0x61, 0x46, 0x31, 0xAD, 0xAD, 0xAC, 0xAB, 0x98, 0x81, 0xB9, 0xFD, 0x52, 0x3D, 0xB5, 0x2F, 0xC0, 0xC8, 0x5A, 0x1, 0x15, 0xE2, 0xEF, 0x1, 0x17, 0xFE, 0xE8, 0xFE, 0xEB, 0xDA, 0xFE, 0x8E, 0xFE, 0x8B, 0x0, 0x1, 0x0, 0x95, 0x0, 0x0, 0x5, 0x19, 0x5, 0xC4, 0x0, 0x13, 0x0, 0x0, 0x1, 0x22, 0x6, 0x7, 0x11, 0x23, 0x11, 0x33, 0x17, 0x36, 0x36, 0x33, 0x32, 0x16, 0x13, 0x11, 0x23, 0x11, 0x34, 0x26, 0x2, 0xFE, 0x81, 0xC4, 0x28, 0xFC, 0xEE, 0xB, 0x4D, 0xE6, 0x8C, 0xD3, 0xF8, 0x1, 0xFD, 0x94, 0x4, 0xF1, 0x97, 0x77, 0xFC, 0x1D, 0x5, 0xB0, 0xB6, 0x5C, 0x6E, 0xE8, 0xFE, 0xED, 0xFC, 0x37, 0x3, 0xB5, 0xAC, 0x90, 0x0, 0x1, 0x0, 0x95, 0xFF, 0xEC, 0x5, 0x19, 0x5, 0xB0, 0x0, 0x13, 0x0, 0x0, 0x21, 0x27, 0x6, 0x6, 0x23, 0x22, 0x26, 0x3, 0x11, 0x33, 0x11, 0x14, 0x16, 0x33, 0x32, 0x36, 0x37, 0x11, 0x33, 0x11, 0x4, 0x2A, 0xA, 0x4E, 0xE5, 0x87, 0xD3, 0xFD, 0x1, 0xFC, 0x9C, 0x85, 0x73, 0xCD, 0x2A, 0xFD, 0xA1, 0x55, 0x60, 0xEC, 0x1, 0x17, 0x3, 0xC1, 0xFC, 0x52, 0xAF, 0x91, 0x87, 0x6D, 0x3, 0xFA, 0xFA, 0x50, 0x0, 0x2, 0x0, 0x66, 0xFF, 0xEC, 0x5, 0xD, 0x5, 0xC4, 0x0, 0xA, 0x0, 0x29, 0x0, 0x0, 0x25, 0x32, 0x36, 0x37, 0x11, 0x23, 0x6, 0x6, 0x15, 0x14, 0x16, 0x5, 0x26, 0x27, 0x6, 0x6, 0x23, 0x22, 0x24, 0x35, 0x34, 0x24, 0x25, 0x21, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x23, 0x34, 0x24, 0x21, 0x32, 0x4, 0x15, 0x11, 0x14, 0x17, 0x15, 0x2, 0x70, 0x8A, 0xCC, 0x23, 0xF6, 0xD4, 0xBE, 0x8C, 0x2, 0x20, 0x14, 0xA, 0x41, 0xD5, 0x95, 0xD0, 0xFE, 0xF2, 0x1, 0x3D, 0x1, 0x3F, 0x1, 0x7, 0x96, 0x9E, 0x91, 0xA5, 0xF9, 0x1, 0x2D, 0x1, 0xE, 0xEF, 0x1, 0x34, 0x29, 0xBC, 0x6D, 0x3C, 0x1, 0x27, 0x2, 0x6E, 0x78, 0x68, 0x80, 0xBC, 0x2E, 0x52, 0x3B, 0x59, 0xEA, 0xC4, 0xDA, 0xDD, 0x2, 0x7E, 0x85, 0x9F, 0x78, 0x80, 0xC8, 0xFF, 0xFA, 0xFB, 0xFD, 0x3D, 0x9E, 0x5D, 0x11, 0x0, 0x2, 0x0, 0x65, 0xFF, 0xEA, 0x5, 0x30, 0x5, 0xC4, 0x0, 0x7, 0x0, 0x1E, 0x0, 0x0, 0x1, 0x22, 0x6, 0x7, 0x21, 0x35, 0x34, 0x26, 0x1, 0x6, 0x6, 0x23, 0x20, 0x0, 0x11, 0x35, 0x34, 0x12, 0x24, 0x17, 0x4, 0x0, 0x13, 0x15, 0x21, 0x16, 0x12, 0x33, 0x32, 0x36, 0x37, 0x2, 0xD3, 0xA9, 0xB9, 0xE, 0x2, 0xD1, 0xA0, 0x1, 0x5F, 0x6D, 0xEE, 0xA9, 0xFE, 0xC4, 0xFE, 0xB2, 0xA4, 0x1, 0x1A, 0xB0, 0x1, 0x29, 0x1, 0x31, 0x3, 0xFC, 0x31, 0x5, 0xC2, 0xCF, 0x80, 0xB5, 0x3C, 0x4, 0xEB, 0xEC, 0xAF, 0x26, 0x9E, 0xD7, 0xFB, 0xD4, 0x61, 0x74, 0x1, 0x85, 0x1, 0x30, 0x74, 0xCB, 0x1, 0x37, 0xAF, 0x1, 0x1, 0xFE, 0xA3, 0xFE, 0xC6, 0xA2, 0xBE, 0xFE, 0xF7, 0x62, 0x35, 0x0, 0x1, 0x0, 0x95, 0x0, 0x0, 0x8, 0x15, 0x5, 0xC4, 0x0, 0x21, 0x0, 0x0, 0x1, 0x22, 0x6, 0x7, 0x11, 0x23, 0x11, 0x33, 0x17, 0x36, 0x36, 0x33, 0x20, 0x17, 0x36, 0x36, 0x33, 0x32, 0x16, 0x13, 0x11, 0x23, 0x11, 0x34, 0x26, 0x23, 0x22, 0x6, 0x7, 0x13, 0x23, 0x11, 0x34, 0x26, 0x2, 0xD9, 0x73, 0xB0, 0x25, 0xFC, 0xEE, 0xA, 0x49, 0xD2, 0x80, 0x1, 0x16, 0x63, 0x4C, 0xEB, 0x8F, 0xC6, 0xE7, 0x1, 0xFC, 0x84, 0x7A, 0x73, 0xB1, 0x25, 0x1, 0xFC, 0x84, 0x4, 0xF1, 0x8B, 0x6F, 0xFC, 0x9, 0x5, 0xB0, 0xA7, 0x56, 0x65, 0xDB, 0x63, 0x78, 0xE2, 0xFE, 0xF4, 0xFC, 0x2A, 0x3, 0xC2, 0xA5, 0x8A, 0x8C, 0x70, 0xFC, 0xB, 0x3, 0xC2, 0xA5, 0x8A, 0x0, 0x1, 0xFF, 0xAF, 0xFE, 0x4B, 0x1, 0x8E, 0x0, 0xCD, 0x0, 0xC, 0x0, 0x0, 0x37, 0x33, 0x11, 0x14, 0x6, 0x23, 0x22, 0x27, 0x37, 0x16, 0x33, 0x32, 0x37, 0x9B, 0xF3, 0xBB, 0xA5, 0x45, 0x3A, 0xE, 0x26, 0x3D, 0x78, 0x3, 0xCD, 0xFE, 0xF4, 0xB6, 0xC0, 0x11, 0xC5, 0xC, 0xA4, 0xFF, 0xFF, 0x0, 0x39, 0xFE, 0xA3, 0x4, 0x1D, 0x4, 0x8D, 0x0, 0x6, 0x7, 0xD6, 0x2A, 0x0, 0xFF, 0xFF, 0x0, 0x6B, 0xFE, 0xA0, 0x4, 0x22, 0x4, 0x8C, 0x0, 0x6, 0x7, 0xD8, 0x4, 0x0, 0xFF, 0xFF, 0x0, 0x2C, 0xFE, 0xC3, 0x4, 0x81, 0x4, 0x8D, 0x0, 0x6, 0x7, 0xD7, 0xF6, 0x0, 0xFF, 0xFF, 0x0, 0x66, 0x0, 0x0, 0x4, 0x24, 0x4, 0x9F, 0x0, 0x6, 0x7, 0xD5, 0xF7, 0x0, 0xFF, 0xFF, 0x0, 0x63, 0xFE, 0xC3, 0x4, 0x31, 0x4, 0x8D, 0x0, 0x6, 0x7, 0xD9, 0x20, 0x0, 0xFF, 0xFF, 0x0, 0x35, 0xFF, 0xEB, 0x4, 0x58, 0x4, 0xA0, 0x0, 0x6, 0x8, 0x99, 0xD2, 0x0, 0xFF, 0xFF, 0x0, 0x6F, 0xFF, 0xEC, 0x4, 0x30, 0x5, 0xB7, 0x0, 0x6, 0x0, 0x1B, 0xF9, 0x0, 0xFF, 0xFF, 0x0, 0x59, 0xFE, 0xB3, 0x4, 0x39, 0x4, 0xA1, 0x0, 0x6, 0x7, 0xDD, 0xE5, 0x0, 0xFF, 0xFF, 0x0, 0x69, 0xFF, 0xEC, 0x4, 0x23, 0x5, 0xC4, 0x0, 0x6, 0x0, 0x1D, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0xE4, 0x0, 0x0, 0x3, 0x3B, 0x4, 0x8D, 0x0, 0x6, 0x7, 0xD4, 0x4C, 0x0, 0xFF, 0xFF, 0xFF, 0xB5, 0xFE, 0x4B, 0x1, 0x94, 0x4, 0x3A, 0x0, 0x6, 0x0, 0xEC, 0x0, 0x0, 0x0, 0x1, 0x0, 0x90, 0xFE, 0x52, 0x2, 0x91, 0x4, 0x3A, 0x0, 0x10, 0x0, 0x0, 0x1, 0x20, 0x3, 0x35, 0x23, 0x11, 0x33, 0x11, 0x33, 0x11, 0x14, 0x16, 0x33, 0x32, 0x37, 0x15, 0x6, 0x2, 0x17, 0xFE, 0xD9, 0x8, 0x58, 0xF3, 0x35, 0x55, 0x3E, 0x26, 0x20, 0x39, 0xFE, 0x52, 0x1, 0x4E, 0x60, 0x4, 0x3A, 0xFC, 0x84, 0xFE, 0xF4, 0x5F, 0x46, 0x7, 0xB1, 0x11, 0xFF, 0xFF, 0x0, 0x1E, 0xFE, 0x4B, 0x2, 0xCE, 0x4, 0x3A, 0x0, 0x26, 0x0, 0xEC, 0x69, 0x0, 0x0, 0x6, 0x7, 0xA4, 0xA0, 0x89, 0xFF, 0xFF, 0x0, 0x1A, 0x0, 0x0, 0x2, 0xB8, 0x4, 0x3A, 0x0, 0x26, 0x0, 0x8E, 0x64, 0x0, 0x0, 0x6, 0x7, 0xA4, 0x8A, 0x89, 0xFF, 0xFF, 0xFF, 0xB5, 0xFE, 0x4B, 0x1, 0x94, 0x4, 0x3A, 0x0, 0x6, 0x0, 0xEC, 0x0, 0x0, 0x0, 0x2, 0x0, 0x1E, 0xFE, 0x4B, 0x3, 0x99, 0x4, 0x3A, 0x0, 0x10, 0x0, 0x19, 0x0, 0x0, 0x1, 0x22, 0x26, 0x35, 0x34, 0x36, 0x33, 0x33, 0x11, 0x33, 0x11, 0x33, 0x15, 0x23, 0x15, 0x14, 0x6, 0x27, 0x32, 0x35, 0x35, 0x23, 0x22, 0x15, 0x14, 0x16, 0x1, 0x65, 0x9A, 0xAD, 0xA9, 0x8A, 0x7D, 0xF3, 0xD8, 0xD8, 0x96, 0xC9, 0x6C, 0x62, 0x6B, 0x38, 0xFE, 0x4B, 0x99, 0x78, 0x80, 0x8E, 0x3, 0xD0, 0xFC, 0x30, 0xB4, 0x13, 0x87, 0xD1, 0xAF, 0x77, 0x45, 0x5E, 0x2C, 0x32, 0x0, 0x1, 0x0, 0x8D, 0x2, 0x30, 0x1, 0x52, 0x5, 0x54, 0x0, 0x3, 0x0, 0x0, 0x1, 0x11, 0x23, 0x11, 0x1, 0x52, 0xC5, 0x5, 0x54, 0xFC, 0xDC, 0x3, 0x24, 0xFF, 0xFF, 0x0, 0x90, 0x0, 0x0, 0x1, 0x83, 0x4, 0x3A, 0x0, 0x6, 0x0, 0x8E, 0x0, 0x0, 0x0, 0x1, 0x0, 0x28, 0x2, 0x8C, 0x2, 0x42, 0x5, 0xAD, 0x0, 0xB, 0x0, 0x0, 0x1, 0x23, 0x11, 0x23, 0x11, 0x23, 0x35, 0x33, 0x11, 0x33, 0x11, 0x33, 0x2, 0x42, 0xAC, 0xC5, 0xA9, 0xA9, 0xC5, 0xAC, 0x4, 0xB, 0xFE, 0x81, 0x1, 0x7F, 0xA0, 0x1, 0x2, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFA, 0xFE, 0x5C, 0x1, 0x83, 0x4, 0x3A, 0x0, 0x26, 0x0, 0x8E, 0x0, 0x0, 0x0, 0x6, 0x1, 0x8C, 0xD1, 0xA, 0xFF, 0xFF, 0x0, 0x90, 0x0, 0x0, 0x1, 0x83, 0x4, 0x3A, 0x0, 0x6, 0x0, 0x8E, 0x0, 0x0, 0x0, 0x1, 0x0, 0x88, 0xFF, 0x38, 0x1, 0x4D, 0x2, 0x59, 0x0, 0x3, 0x0, 0x0, 0x1, 0x11, 0x23, 0x11, 0x1, 0x4D, 0xC5, 0x2, 0x59, 0xFC, 0xDF, 0x3, 0x21, 0xFF, 0xFF, 0xFF, 0xB5, 0xFE, 0x4B, 0x1, 0x94, 0x4, 0x3A, 0x0, 0x6, 0x0, 0xEC, 0x0, 0x0, 0x0, 0x2, 0x0, 0x0, 0x1, 0x3D, 0x2, 0x7D, 0x5, 0xAD, 0x0, 0xF, 0x0, 0x18, 0x0, 0x0, 0x13, 0x22, 0x26, 0x35, 0x34, 0x36, 0x33, 0x33, 0x11, 0x33, 0x11, 0x33, 0x15, 0x23, 0x14, 0x6, 0x27, 0x32, 0x36, 0x35, 0x35, 0x23, 0x22, 0x15, 0x14, 0xFB, 0x67, 0x94, 0x9D, 0x6A, 0x27, 0xC5, 0x8A, 0x8A, 0x70, 0x90, 0x24, 0x17, 0x21, 0x50, 0x1, 0x3D, 0x6A, 0x67, 0x77, 0x7C, 0x2, 0xAC, 0xFD, 0x54, 0xA7, 0x83, 0x9A, 0xA3, 0x2C, 0x22, 0x2C, 0x40, 0x3A, 0x0, 0x1, 0x0, 0x22, 0x1, 0x4C, 0x1, 0x7E, 0x5, 0xB0, 0x0, 0xC, 0x0, 0x0, 0x13, 0x33, 0x11, 0x14, 0x6, 0x23, 0x22, 0x27, 0x35, 0x16, 0x33, 0x32, 0x35, 0xB9, 0xC5, 0x79, 0x83, 0x31, 0x2F, 0x16, 0x21, 0x60, 0x5, 0xB0, 0xFC, 0xC9, 0x86, 0xA7, 0xD, 0xA6, 0x6, 0x80, 0x0, 0x1, 0x0, 0x22, 0xFD, 0xF5, 0x1, 0x7E, 0x2, 0x59, 0x0, 0xC, 0x0, 0x0, 0x13, 0x33, 0x11, 0x14, 0x6, 0x23, 0x22, 0x27, 0x35, 0x16, 0x33, 0x32, 0x35, 0xB9, 0xC5, 0x79, 0x83, 0x36, 0x2A, 0x1B, 0x1C, 0x60, 0x2, 0x59, 0xFC, 0xC9, 0x86, 0xA7, 0xD, 0xA5, 0x6, 0x81, 0x0, 0x1, 0x0, 0x76, 0xFF, 0xEB, 0x4, 0x16, 0x4, 0x9D, 0x0, 0x22, 0x0, 0x0, 0x5, 0x22, 0x27, 0x37, 0x16, 0x33, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x23, 0x35, 0x13, 0x26, 0x23, 0x22, 0x15, 0x11, 0x23, 0x11, 0x31, 0x36, 0x36, 0x33, 0x32, 0x16, 0x17, 0x3, 0x16, 0x16, 0x15, 0x14, 0x6, 0x2, 0x8E, 0x7B, 0x6C, 0x45, 0x4B, 0x48, 0x50, 0x58, 0x7C, 0x74, 0x54, 0xCA, 0x43, 0x54, 0xB1, 0xEF, 0x1, 0xD1, 0xD0, 0x89, 0xCE, 0x55, 0xF8, 0x9A, 0xB0, 0xE1, 0x15, 0x36, 0xBB, 0x31, 0x66, 0x51, 0x57, 0x48, 0xA2, 0x1, 0x1, 0x39, 0xFC, 0xFD, 0x1F, 0x2, 0xED, 0xD8, 0xD8, 0x74, 0x5D, 0xFE, 0xD5, 0x15, 0xA1, 0x87, 0xB7, 0xC2, 0x0, 0x1, 0x0, 0x25, 0x0, 0x0, 0x4, 0x47, 0x5, 0xB0, 0x0, 0x9, 0x0, 0x0, 0x1, 0x11, 0x23, 0x11, 0x7, 0x1, 0x27, 0x1, 0x1, 0x11, 0x4, 0x47, 0xF3, 0xEE, 0xFE, 0x67, 0xA8, 0x1, 0x9B, 0x1, 0x94, 0x5, 0xB0, 0xFA, 0x50, 0x3, 0x8F, 0xDD, 0xFD, 0x4E, 0x66, 0x2, 0xB7, 0x1, 0x74, 0x1, 0x1F, 0x0, 0x1, 0x0, 0x2D, 0x0, 0x0, 0x4, 0x47, 0x5, 0xB0, 0x0, 0x6, 0x0, 0x0, 0x21, 0x23, 0x1, 0x37, 0x1, 0x11, 0x33, 0x4, 0x47, 0xF3, 0xFC, 0xD9, 0xA8, 0x2, 0x7F, 0xF3, 0x5, 0x4A, 0x66, 0xFB, 0xD0, 0x4, 0x30, 0x0, 0x1, 0x0, 0xA, 0x0, 0x0, 0x4, 0x47, 0x5, 0xB0, 0x0, 0x7, 0x0, 0x0, 0x1, 0x21, 0x1, 0x27, 0x1, 0x21, 0x11, 0x23, 0x3, 0x54, 0xFE, 0xFA, 0xFE, 0x76, 0xBA, 0x1, 0xB7, 0x2, 0x86, 0xF3, 0x4, 0xE9, 0xFB, 0x17, 0x3A, 0x5, 0x76, 0xFA, 0x50, 0x0, 0x1, 0x0, 0x8D, 0x0, 0x0, 0x4, 0x47, 0x5, 0xB0, 0x0, 0x9, 0x0, 0x0, 0x21, 0x23, 0x11, 0x1, 0x1, 0x37, 0x1, 0x37, 0x11, 0x33, 0x4, 0x47, 0xF3, 0xFE, 0xEA, 0xFE, 0x4F, 0xA8, 0x1, 0x35, 0xEA, 0xF3, 0x3, 0x76, 0xFE, 0xFE, 0x2, 0xD6, 0x66, 0xFD, 0xEB, 0xDA, 0x1, 0x3B, 0x0, 0x1, 0x0, 0x18, 0x0, 0x0, 0x4, 0x47, 0x5, 0xB0, 0x0, 0x9, 0x0, 0x0, 0x1, 0x11, 0x33, 0x11, 0x23, 0x11, 0x21, 0x1, 0x37, 0x1, 0x3, 0x54, 0xF3, 0xF3, 0xFE, 0x74, 0xFE, 0x50, 0xA8, 0x1, 0x78, 0x3, 0x3B, 0x2, 0x75, 0xFA, 0x50, 0x2, 0x75, 0x2, 0xD5, 0x66, 0xFD, 0x8B, 0x0, 0x1, 0x0, 0x9D, 0x0, 0x0, 0x4, 0x47, 0x5, 0xB0, 0x0, 0x8, 0x0, 0x0, 0x21, 0x23, 0x11, 0x1, 0x1, 0x37, 0x1, 0x1, 0x33, 0x4, 0x47, 0xF3, 0xFE, 0xF6, 0xFE, 0x53, 0xA8, 0x1, 0x5, 0x1, 0x9, 0xF4, 0x4, 0x37, 0xFE, 0x41, 0x2, 0xD2, 0x66, 0xFE, 0x3C, 0x1, 0xC4, 0x0, 0x1, 0x0, 0x87, 0x0, 0x0, 0x4, 0x47, 0x5, 0xB0, 0x0, 0x9, 0x0, 0x0, 0x21, 0x1, 0x37, 0x1, 0x37, 0x11, 0x33, 0x11, 0x23, 0x11, 0x2, 0x3E, 0xFE, 0x49, 0xB9, 0x1, 0x5D, 0xB7, 0xF3, 0xF3, 0x5, 0x76, 0x3A, 0xFB, 0xA5, 0xAC, 0x3, 0xAF, 0xFA, 0x50, 0x1, 0x1, 0x0, 0x1, 0x0, 0x2D, 0x0, 0x0, 0x4, 0x47, 0x5, 0xB0, 0x0, 0x6, 0x0, 0x0, 0x1, 0x11, 0x23, 0x11, 0x1, 0x27, 0x1, 0x4, 0x47, 0xF3, 0xFD, 0x81, 0xA8, 0x3, 0x27, 0x5, 0xB0, 0xFA, 0x50, 0x4, 0x30, 0xFB, 0xD0, 0x66, 0x5, 0x4A, 0x0, 0x1, 0x0, 0xA7, 0x0, 0x0, 0x4, 0x47, 0x5, 0xB0, 0x0, 0x9, 0x0, 0x0, 0x21, 0x23, 0x11, 0x1, 0x1, 0x37, 0x1, 0x13, 0x11, 0x33, 0x4, 0x47, 0xF3, 0xFE, 0xF8, 0xFE, 0x5B, 0xB7, 0x1, 0x11, 0xE5, 0xF3, 0x1, 0xC3, 0xFE, 0x3D, 0x4, 0x2A, 0x4B, 0xFD, 0x3F, 0x1, 0x87, 0x2, 0x75, 0x0, 0x1, 0x0, 0x98, 0x0, 0x0, 0x4, 0x47, 0x5, 0xB0, 0x0, 0x9, 0x0, 0x0, 0x21, 0x23, 0x11, 0x1, 0x1, 0x37, 0x13, 0x1, 0x11, 0x33, 0x4, 0x47, 0xF3, 0xFE, 0xE9, 0xFE, 0x5B, 0xB7, 0xFC, 0x1, 0x9, 0xF3, 0x2, 0xAC, 0xFD, 0x54, 0x4, 0x2A, 0x4B, 0xFD, 0x75, 0x2, 0x8B, 0x1, 0x3B, 0x0, 0x1, 0x0, 0x90, 0x0, 0x0, 0x4, 0x47, 0x5, 0xB0, 0x0, 0x8, 0x0, 0x0, 0x21, 0x23, 0x11, 0x1, 0x1, 0x37, 0x13, 0x1, 0x33, 0x4, 0x47, 0xF3, 0xFE, 0xDC, 0xFE, 0x60, 0xB7, 0xE3, 0x1, 0x2A, 0xF3, 0x3, 0x66, 0xFC, 0x9A, 0x4, 0x2A, 0x4B, 0xFD, 0xB2, 0x3, 0x89, 0x0, 0x1, 0x0, 0x24, 0x0, 0x0, 0x4, 0x47, 0x5, 0xB0, 0x0, 0x7, 0x0, 0x0, 0x25, 0x11, 0x33, 0x11, 0x21, 0x1, 0x37, 0x1, 0x3, 0x54, 0xF3, 0xFD, 0x81, 0xFE, 0x5C, 0xB6, 0x1, 0x7A, 0xC7, 0x4, 0xE9, 0xFA, 0x50, 0x4, 0x2A, 0x4B, 0xFC, 0x52, 0x0, 0x1, 0x0, 0x99, 0x0, 0x0, 0x4, 0x47, 0x5, 0xB0, 0x0, 0x9, 0x0, 0x0, 0x21, 0x11, 0x1, 0x1, 0x37, 0x1, 0x37, 0x11, 0x33, 0x11, 0x3, 0x54, 0xFE, 0xEA, 0xFE, 0x5B, 0xB7, 0x1, 0x3B, 0xC9, 0xF3, 0x1, 0x1, 0xFE, 0xFF, 0x4, 0x2A, 0x4B, 0xFC, 0xD1, 0xBB, 0x3, 0xAF, 0xFA, 0x50, 0x0, 0x1, 0x0, 0x8E, 0x0, 0x0, 0x4, 0x47, 0x5, 0xB0, 0x0, 0x9, 0x0, 0x0, 0x21, 0x23, 0x11, 0x27, 0x1, 0x27, 0x1, 0x1, 0x11, 0x33, 0x4, 0x47, 0xF3, 0xE7, 0xFE, 0xC9, 0xA8, 0x1, 0xAF, 0x1, 0x17, 0xF3, 0x3, 0xAF, 0xD6, 0xFD, 0xF0, 0x65, 0x2, 0xD6, 0xFE, 0xFF, 0x1, 0x1, 0x0, 0x1, 0x0, 0x7A, 0x0, 0x0, 0x4, 0x47, 0x5, 0xB0, 0x0, 0x9, 0x0, 0x0, 0x21, 0x23, 0x11, 0x1, 0x1, 0x27, 0x1, 0x1, 0x11, 0x33, 0x4, 0x47, 0xF3, 0xFE, 0xDB, 0xFE, 0xF3, 0xA8, 0x1, 0xAE, 0x1, 0x2C, 0xF3, 0x2, 0x73, 0x1, 0xD5, 0xFE, 0x2D, 0x65, 0x2, 0xD6, 0xFE, 0x1B, 0x1, 0xE5, 0x0, 0x1, 0x0, 0x18, 0x0, 0x0, 0x4, 0x47, 0x5, 0xB0, 0x0, 0x7, 0x0, 0x0, 0x1, 0x11, 0x23, 0x11, 0x21, 0x1, 0x27, 0x1, 0x4, 0x47, 0xF3, 0xFE, 0xE4, 0xFE, 0x88, 0xA8, 0x1, 0xB0, 0x5, 0xB0, 0xFA, 0x50, 0x4, 0xE9, 0xFD, 0x8C, 0x65, 0x2, 0xD6, 0x0, 0x1, 0x0, 0x8D, 0x0, 0x0, 0x4, 0x47, 0x5, 0xB0, 0x0, 0x9, 0x0, 0x0, 0x21, 0x23, 0x11, 0x1, 0x3, 0x27, 0x1, 0x1, 0x11, 0x33, 0x4, 0x47, 0xF3, 0xFE, 0xD2, 0xF1, 0xA8, 0x1, 0xA9, 0x1, 0x1E, 0xF3, 0x1, 0x3B, 0x2, 0xDB, 0xFE, 0x5F, 0x65, 0x2, 0xD6, 0xFD, 0x56, 0x2, 0xAA, 0x0, 0x1, 0x0, 0x84, 0x0, 0x0, 0x4, 0x47, 0x5, 0xB0, 0x0, 0x8, 0x0, 0x0, 0x21, 0x23, 0x1, 0x3, 0x27, 0x1, 0x1, 0x11, 0x33, 0x4, 0x47, 0xF3, 0xFE, 0xB6, 0xDE, 0xA8, 0x1, 0xAC, 0x1, 0x24, 0xF3, 0x3, 0xEF, 0xFE, 0x86, 0x65, 0x2, 0xD6, 0xFC, 0x8E, 0x3, 0x72, 0x0, 0x1, 0x0, 0x86, 0x0, 0x0, 0x4, 0x47, 0x5, 0xB0, 0x0, 0x9, 0x0, 0x0, 0x21, 0x23, 0x11, 0x1, 0x1, 0x37, 0x1, 0x13, 0x11, 0x33, 0x4, 0x47, 0xF3, 0xFE, 0xEA, 0xFE, 0x48, 0xB9, 0x1, 0x1F, 0xF6, 0xF3, 0x2, 0xAC, 0xFD, 0x54, 0x5, 0x76, 0x3A, 0xFC, 0x6A, 0x2, 0x5B, 0x1, 0x3B, 0x0, 0x1, 0x0, 0x96, 0x0, 0x0, 0x4, 0x47, 0x5, 0xB0, 0x0, 0x9, 0x0, 0x0, 0x21, 0x23, 0x11, 0x1, 0x1, 0x37, 0x1, 0x13, 0x11, 0x33, 0x4, 0x47, 0xF3, 0xFE, 0xFA, 0xFE, 0x48, 0xB9, 0x1, 0x34, 0xD1, 0xF3, 0x1, 0xC3, 0xFE, 0x3E, 0x5, 0x75, 0x3A, 0xFC, 0x24, 0x1, 0x67, 0x2, 0x75, 0x0, 0x1, 0x0, 0x8D, 0x0, 0x0, 0x4, 0x47, 0x5, 0xB0, 0x0, 0x9, 0x0, 0x0, 0x1, 0x11, 0x23, 0x11, 0x27, 0x1, 0x27, 0x1, 0x1, 0x11, 0x4, 0x47, 0xF3, 0xEA, 0xFE, 0xCB, 0xA8, 0x1, 0xB1, 0x1, 0x16, 0x5, 0xB0, 0xFA, 0x50, 0x1, 0x3B, 0xDA, 0xFD, 0xEB, 0x66, 0x2, 0xD6, 0xFE, 0xFF, 0x3, 0x75, 0x0, 0x1, 0x0, 0x9D, 0x0, 0x0, 0x4, 0x47, 0x5, 0xB0, 0x0, 0x8, 0x0, 0x0, 0x1, 0x11, 0x23, 0x1, 0x1, 0x27, 0x1, 0x1, 0x11, 0x4, 0x47, 0xF4, 0xFE, 0xF7, 0xFE, 0xFB, 0xA8, 0x1, 0xAD, 0x1, 0xA, 0x5, 0xB0, 0xFA, 0x50, 0x1, 0xC4, 0xFE, 0x3C, 0x66, 0x2, 0xD2, 0xFE, 0x41, 0x4, 0x37, 0x0, 0x1, 0x0, 0x31, 0x0, 0x0, 0x4, 0x47, 0x5, 0xB0, 0x0, 0x8, 0x0, 0x0, 0x1, 0x11, 0x23, 0x11, 0x7, 0x1, 0x27, 0x1, 0x1, 0x4, 0x47, 0xF3, 0xDF, 0xFE, 0x73, 0xB7, 0x1, 0x8E, 0x1, 0x95, 0x5, 0xB0, 0xFA, 0x50, 0x4, 0xAE, 0xCD, 0xFC, 0x1F, 0x4B, 0x3, 0xF1, 0x1, 0x74, 0x0, 0x1, 0x0, 0x7E, 0x0, 0x0, 0x4, 0x47, 0x5, 0xB0, 0x0, 0x8, 0x0, 0x0, 0x21, 0x23, 0x11, 0x1, 0x1, 0x37, 0x1, 0x1, 0x33, 0x4, 0x47, 0xF3, 0xFE, 0xE1, 0xFE, 0x49, 0xB9, 0x1, 0x8, 0x1, 0x15, 0xF3, 0x3, 0x66, 0xFC, 0x9A, 0x5, 0x76, 0x3A, 0xFC, 0xB5, 0x3, 0x4B, 0x0, 0x1, 0x0, 0x9E, 0x0, 0x0, 0x4, 0x47, 0x5, 0xB0, 0x0, 0x8, 0x0, 0x0, 0x21, 0x23, 0x1, 0x7, 0x27, 0x1, 0x1, 0x11, 0x33, 0x4, 0x47, 0xF3, 0xFE, 0x8E, 0xC5, 0x7F, 0x1, 0x96, 0x1, 0x20, 0xF3, 0x4, 0x66, 0xB7, 0x8D, 0x1, 0x74, 0xFC, 0x8E, 0x3, 0x72, 0x0, 0x1, 0x0, 0xA7, 0x0, 0x0, 0x4, 0x47, 0x5, 0xB0, 0x0, 0x9, 0x0, 0x0, 0x21, 0x23, 0x11, 0x1, 0x7, 0x27, 0x1, 0x1, 0x11, 0x33, 0x4, 0x47, 0xF3, 0xFE, 0xAD, 0xDC, 0x7E, 0x1, 0x95, 0x1, 0x18, 0xF3, 0x1, 0x3B, 0x3, 0x3E, 0xCA, 0x8D, 0x1, 0x74, 0xFD, 0x56, 0x2, 0xAA, 0x0, 0x1, 0x0, 0xB7, 0x0, 0x0, 0x4, 0x47, 0x5, 0xB0, 0x0, 0x8, 0x0, 0x0, 0x21, 0x23, 0x11, 0x1, 0x1, 0x37, 0x17, 0x1, 0x33, 0x4, 0x47, 0xF3, 0xFE, 0xF8, 0xFE, 0x6B, 0x7E, 0xE8, 0x1, 0x36, 0xF4, 0x4, 0x37, 0xFE, 0x3E, 0x1, 0x74, 0x8D, 0xD6, 0x2, 0x10, 0x0, 0x1, 0x0, 0x8E, 0x0, 0x0, 0x4, 0x47, 0x5, 0xB0, 0x0, 0x9, 0x0, 0x0, 0x1, 0x11, 0x23, 0x11, 0x1, 0x1, 0x37, 0x1, 0x37, 0x11, 0x4, 0x47, 0xF3, 0xFE, 0xE9, 0xFE, 0x51, 0xA8, 0x1, 0x37, 0xE7, 0x5, 0xB0, 0xFA, 0x50, 0x1, 0x1, 0xFE, 0xFF, 0x2, 0xD6, 0x65, 0xFD, 0xF0, 0xD7, 0x3, 0xAE, 0x0, 0x1, 0x0, 0x33, 0x0, 0x0, 0x4, 0x47, 0x5, 0xB0, 0x0, 0x9, 0x0, 0x0, 0x1, 0x11, 0x33, 0x11, 0x23, 0x11, 0x21, 0x1, 0x37, 0x1, 0x3, 0x54, 0xF3, 0xF3, 0xFE, 0x74, 0xFE, 0x6B, 0x7F, 0x1, 0x58, 0x3, 0x3B, 0x2, 0x75, 0xFA, 0x50, 0x2, 0x75, 0x1, 0x74, 0x8D, 0xFE, 0xC5, 0x0, 0x1, 0x0, 0xA8, 0x0, 0x0, 0x4, 0x47, 0x5, 0xB0, 0x0, 0x9, 0x0, 0x0, 0x21, 0x23, 0x11, 0x1, 0x1, 0x37, 0x1, 0x1, 0x11, 0x33, 0x4, 0x47, 0xF3, 0xFE, 0xEA, 0xFE, 0x6A, 0x7F, 0x1, 0x17, 0x1, 0x16, 0xF3, 0x3, 0x76, 0xFE, 0xFE, 0x1, 0x74, 0x8D, 0xFE, 0xFF, 0x1, 0x1, 0x1, 0x3B, 0x0, 0x1, 0x0, 0x38, 0x0, 0x0, 0x4, 0x47, 0x5, 0xB0, 0x0, 0x8, 0x0, 0x0, 0x21, 0x23, 0x1, 0x1, 0x37, 0x1, 0x1, 0x11, 0x33, 0x4, 0x47, 0xF3, 0xFE, 0x55, 0xFE, 0x8F, 0x7F, 0x1, 0x96, 0x1, 0x7, 0xF3, 0x2, 0xCE, 0x1, 0x53, 0x8D, 0xFE, 0x8D, 0xFE, 0x45, 0x4, 0x30, 0x0, 0x1, 0x0, 0x39, 0x0, 0x0, 0x4, 0x47, 0x5, 0xB0, 0x0, 0x7, 0x0, 0x0, 0x1, 0x1, 0x37, 0x1, 0x11, 0x33, 0x11, 0x23, 0x3, 0x54, 0xFC, 0xE5, 0x7E, 0x2, 0x9D, 0xF3, 0xF3, 0x1, 0x1F, 0x2, 0xDC, 0x8D, 0xFD, 0x9A, 0x3, 0x8E, 0xFA, 0x50, 0x0, 0x1, 0x0, 0x94, 0x0, 0x0, 0x4, 0x47, 0x5, 0xB0, 0x0, 0x9, 0x0, 0x0, 0x21, 0x23, 0x11, 0x1, 0x7, 0x27, 0x1, 0x1, 0x11, 0x33, 0x4, 0x47, 0xF3, 0xFE, 0xB3, 0xF4, 0x7F, 0x1, 0x95, 0x1, 0x2B, 0xF3, 0x2, 0x75, 0x2, 0x1C, 0xE2, 0x8D, 0x1, 0x74, 0xFE, 0x1B, 0x1, 0xE5, 0x0, 0x1, 0x0, 0xA8, 0x0, 0x0, 0x4, 0x47, 0x5, 0xB0, 0x0, 0x9, 0x0, 0x0, 0x21, 0x23, 0x11, 0x1, 0x1, 0x27, 0x1, 0x5, 0x35, 0x33, 0x4, 0x47, 0xF3, 0xFE, 0xEB, 0xFE, 0xE8, 0x7F, 0x1, 0x95, 0x1, 0x17, 0xF3, 0x3, 0xAF, 0x1, 0x0, 0xFF, 0x0, 0x8D, 0x1, 0x74, 0xFF, 0xFF, 0x0, 0x1, 0x0, 0x37, 0x0, 0x0, 0x4, 0x47, 0x5, 0xB0, 0x0, 0x7, 0x0, 0x0, 0x1, 0x11, 0x23, 0x11, 0x21, 0x1, 0x27, 0x1, 0x4, 0x47, 0xF3, 0xFE, 0xBA, 0xFE, 0xA7, 0x7E, 0x1, 0x95, 0x5, 0xB0, 0xFA, 0x50, 0x4, 0xE9, 0xFE, 0xC6, 0x8D, 0x1, 0x74, 0x0, 0x1, 0x0, 0x78, 0x0, 0x0, 0x3, 0x1B, 0x5, 0xB0, 0x0, 0x7, 0x0, 0x0, 0x21, 0x23, 0x11, 0x1, 0x37, 0x1, 0x11, 0x33, 0x3, 0x1B, 0xF3, 0xFE, 0x50, 0xA8, 0x1, 0x8, 0xF3, 0x2, 0x75, 0x2, 0xD5, 0x66, 0xFE, 0x44, 0x1, 0xBC, 0x0, 0x1, 0x0, 0x93, 0x0, 0x0, 0x3, 0x1B, 0x5, 0xB0, 0x0, 0x7, 0x0, 0x0, 0x21, 0x23, 0x11, 0x1, 0x37, 0x5, 0x35, 0x33, 0x3, 0x1B, 0xF3, 0xFE, 0x6B, 0x7F, 0x1, 0x16, 0xF3, 0x3, 0xAF, 0x1, 0x74, 0x8D, 0xFF, 0xFF, 0x0, 0x1, 0x0, 0xBA, 0x0, 0x0, 0x4, 0x47, 0x5, 0xB0, 0x0, 0x8, 0x0, 0x0, 0x1, 0x11, 0x23, 0x1, 0x21, 0x35, 0x21, 0x1, 0x11, 0x4, 0x47, 0xF3, 0xFE, 0x8B, 0xFE, 0xDB, 0x1, 0x93, 0x1, 0x7, 0x5, 0xB0, 0xFA, 0x50, 0x2, 0x75, 0xC6, 0xFE, 0x45, 0x4, 0x30, 0x0, 0x1, 0x0, 0x71, 0x0, 0x0, 0x3, 0x1B, 0x5, 0xB0, 0x0, 0x6, 0x0, 0x0, 0x21, 0x23, 0x1, 0x37, 0x13, 0x11, 0x33, 0x3, 0x1B, 0xF3, 0xFE, 0x49, 0xBA, 0xFD, 0xF3, 0x5, 0x76, 0x3A, 0xFC, 0xD8, 0x3, 0x28, 0x0, 0x1, 0x0, 0x84, 0x0, 0x0, 0x3, 0x1B, 0x5, 0xB0, 0x0, 0x7, 0x0, 0x0, 0x21, 0x23, 0x11, 0x1, 0x37, 0x13, 0x11, 0x33, 0x3, 0x1B, 0xF3, 0xFE, 0x5C, 0xB6, 0xEE, 0xF3, 0x1, 0x3B, 0x4, 0x2A, 0x4B, 0xFD, 0xAB, 0x2, 0x55, 0x0, 0x1, 0x0, 0x33, 0x0, 0x0, 0x4, 0x47, 0x5, 0xB0, 0x0, 0x9, 0x0, 0x0, 0x1, 0x21, 0x1, 0x27, 0x1, 0x21, 0x11, 0x33, 0x11, 0x23, 0x3, 0x54, 0xFE, 0xB6, 0xFE, 0xA8, 0x7F, 0x1, 0x95, 0x1, 0x8C, 0xF3, 0xF3, 0x2, 0x75, 0xFE, 0xC5, 0x8D, 0x1, 0x74, 0x2, 0x75, 0xFA, 0x50, 0x0, 0x1, 0x0, 0x39, 0x0, 0x0, 0x4, 0x47, 0x5, 0xB0, 0x0, 0x7, 0x0, 0x0, 0x1, 0x11, 0x33, 0x11, 0x23, 0x11, 0x1, 0x27, 0x3, 0x54, 0xF3, 0xF3, 0xFD, 0x63, 0x7E, 0x4, 0x91, 0x1, 0x1F, 0xFA, 0x50, 0x3, 0x8F, 0xFD, 0x99, 0x8D, 0x0, 0x1, 0x0, 0x38, 0x0, 0x0, 0x4, 0x47, 0x5, 0xB0, 0x0, 0x8, 0x0, 0x0, 0x1, 0x11, 0x23, 0x11, 0x1, 0x1, 0x27, 0x1, 0x1, 0x4, 0x47, 0xF3, 0xFE, 0xF9, 0xFE, 0x6A, 0x7F, 0x1, 0x71, 0x1, 0xAB, 0x5, 0xB0, 0xFA, 0x50, 0x4, 0x30, 0xFE, 0x45, 0xFE, 0x8D, 0x8D, 0x1, 0x53, 0x2, 0xCE, 0x0, 0x1, 0x0, 0x90, 0x0, 0x0, 0x4, 0x47, 0x5, 0xB0, 0x0, 0x8, 0x0, 0x0, 0x1, 0x11, 0x23, 0x1, 0x3, 0x27, 0x1, 0x1, 0x11, 0x4, 0x47, 0xF3, 0xFE, 0xD6, 0xE3, 0xB7, 0x1, 0xA0, 0x1, 0x24, 0x5, 0xB0, 0xFA, 0x50, 0x3, 0x89, 0xFD, 0xB2, 0x4B, 0x4, 0x2A, 0xFC, 0x9A, 0x3, 0x66, 0x0, 0x1, 0x0, 0xAB, 0x0, 0x0, 0x4, 0x47, 0x5, 0xB0, 0x0, 0x8, 0x0, 0x0, 0x21, 0x23, 0x11, 0x5, 0x21, 0x35, 0x21, 0x1, 0x33, 0x4, 0x47, 0xF3, 0xFE, 0xEA, 0xFE, 0x6D, 0x1, 0x54, 0x1, 0x55, 0xF3, 0x4, 0xAE, 0xFF, 0xC6, 0x1, 0x3B, 0x0, 0x1, 0x0, 0xAB, 0x0, 0x0, 0x4, 0x47, 0x5, 0xB0, 0x0, 0x9, 0x0, 0x0, 0x21, 0x23, 0x11, 0x1, 0x21, 0x35, 0x21, 0x5, 0x11, 0x33, 0x4, 0x47, 0xF3, 0xFE, 0xAB, 0xFE, 0xAC, 0x1, 0x93, 0x1, 0x16, 0xF3, 0x2, 0x75, 0x1, 0x3A, 0xC7, 0xFF, 0x2, 0x39, 0x0, 0x1, 0x0, 0xB2, 0x0, 0x0, 0x4, 0x47, 0x5, 0xB0, 0x0, 0x9, 0x0, 0x0, 0x21, 0x23, 0x11, 0x1, 0x21, 0x35, 0x21, 0x1, 0x11, 0x33, 0x4, 0x47, 0xF3, 0xFE, 0x8B, 0xFE, 0xD3, 0x1, 0x9B, 0x1, 0x7, 0xF3, 0x1, 0x3B, 0x2, 0x74, 0xC7, 0xFE, 0x44, 0x2, 0xF6, 0x0, 0x1, 0x0, 0xBC, 0x0, 0x0, 0x4, 0x47, 0x5, 0xB0, 0x0, 0x8, 0x0, 0x0, 0x21, 0x23, 0x1, 0x21, 0x35, 0x21, 0x13, 0x11, 0x33, 0x4, 0x47, 0xF3, 0xFE, 0x8D, 0xFE, 0xDB, 0x1, 0xAA, 0xEE, 0xF3, 0x3, 0xAF, 0xC6, 0xFD, 0xAB, 0x3, 0x90, 0x0, 0x1, 0x0, 0xA7, 0x0, 0x0, 0x4, 0x47, 0x5, 0xB0, 0x0, 0x9, 0x0, 0x0, 0x1, 0x11, 0x23, 0x11, 0x3, 0x1, 0x27, 0x1, 0x1, 0x11, 0x4, 0x47, 0xF3, 0xE5, 0xFE, 0xEF, 0xB7, 0x1, 0xA5, 0x1, 0x8, 0x5, 0xB0, 0xFA, 0x50, 0x2, 0x75, 0x1, 0x87, 0xFD, 0x3F, 0x4B, 0x4, 0x2A, 0xFE, 0x3E, 0x1, 0xC2, 0x0, 0x1, 0x0, 0x99, 0x0, 0x0, 0x4, 0x47, 0x5, 0xB0, 0x0, 0x9, 0x0, 0x0, 0x1, 0x33, 0x11, 0x23, 0x11, 0x27, 0x1, 0x27, 0x1, 0x1, 0x3, 0x54, 0xF3, 0xF3, 0xC9, 0xFE, 0xC5, 0xB7, 0x1, 0xA5, 0x1, 0x16, 0x5, 0xB0, 0xFA, 0x50, 0x3, 0xAF, 0xBB, 0xFC, 0xD1, 0x4B, 0x4, 0x2A, 0xFE, 0xFF, 0x0, 0x1, 0x0, 0xB7, 0x0, 0x0, 0x4, 0x47, 0x5, 0xB0, 0x0, 0x8, 0x0, 0x0, 0x1, 0x11, 0x23, 0x1, 0x7, 0x27, 0x1, 0x1, 0x11, 0x4, 0x47, 0xF4, 0xFE, 0xCA, 0xE8, 0x7E, 0x1, 0x95, 0x1, 0x8, 0x5, 0xB0, 0xFA, 0x50, 0x2, 0x10, 0xD6, 0x8D, 0x1, 0x74, 0xFE, 0x3E, 0x4, 0x37, 0x0, 0x1, 0x0, 0xA, 0x0, 0x0, 0x4, 0x47, 0x5, 0xB0, 0x0, 0x7, 0x0, 0x0, 0x25, 0x11, 0x33, 0x11, 0x21, 0x1, 0x37, 0x1, 0x3, 0x54, 0xF3, 0xFD, 0x7A, 0xFE, 0x49, 0xBA, 0x1, 0x8A, 0xC7, 0x4, 0xE9, 0xFA, 0x50, 0x5, 0x76, 0x3A, 0xFB, 0x17, 0x0, 0x1, 0x0, 0xBC, 0x0, 0x0, 0x4, 0x47, 0x5, 0xB0, 0x0, 0x9, 0x0, 0x0, 0x21, 0x23, 0x11, 0x1, 0x21, 0x35, 0x21, 0x13, 0x11, 0x33, 0x4, 0x47, 0xF3, 0xFE, 0x8D, 0xFE, 0xDB, 0x1, 0xAA, 0xEE, 0xF3, 0x1, 0x3B, 0x3, 0xAE, 0xC7, 0xFD, 0xAB, 0x2, 0x55, 0x0, 0x1, 0x0, 0xAB, 0x0, 0x0, 0x4, 0x47, 0x5, 0xB0, 0x0, 0x8, 0x0, 0x0, 0x21, 0x23, 0x1, 0x21, 0x35, 0x21, 0x13, 0x11, 0x33, 0x4, 0x47, 0xF3, 0xFE, 0x76, 0xFE, 0xE1, 0x1, 0xAC, 0xFD, 0xF3, 0x4, 0xE9, 0xC7, 0xFC, 0xD8, 0x3, 0x28, 0x0, 0x1, 0x0, 0xAB, 0x0, 0x0, 0x4, 0x47, 0x5, 0xB0, 0x0, 0x9, 0x0, 0x0, 0x21, 0x23, 0x11, 0x1, 0x21, 0x35, 0x21, 0x5, 0x35, 0x33, 0x4, 0x47, 0xF3, 0xFE, 0xAB, 0xFE, 0xAC, 0x1, 0x93, 0x1, 0x16, 0xF3, 0x3, 0xAF, 0x1, 0x3A, 0xC7, 0xFF, 0xFF, 0x0, 0x1, 0x0, 0xB2, 0x0, 0x0, 0x4, 0x47, 0x5, 0xB0, 0x0, 0x9, 0x0, 0x0, 0x21, 0x23, 0x11, 0x1, 0x21, 0x35, 0x21, 0x1, 0x11, 0x33, 0x4, 0x47, 0xF3, 0xFE, 0x8B, 0xFE, 0xD3, 0x1, 0x9B, 0x1, 0x7, 0xF3, 0x2, 0x75, 0x2, 0x74, 0xC7, 0xFE, 0x44, 0x1, 0xBC, 0x0, 0x1, 0x0, 0x47, 0x0, 0x0, 0x4, 0x47, 0x5, 0xB0, 0x0, 0x7, 0x0, 0x0, 0x21, 0x23, 0x11, 0x1, 0x37, 0x1, 0x11, 0x33, 0x4, 0x47, 0xF3, 0xFC, 0xF3, 0x7F, 0x2, 0x8E, 0xF3, 0x2, 0x59, 0x2, 0xCA, 0x8D, 0xFD, 0xAB, 0x2, 0x55, 0x0, 0x1, 0x0, 0x37, 0x0, 0x0, 0x4, 0x47, 0x5, 0xB0, 0x0, 0x9, 0x0, 0x0, 0x1, 0x11, 0x33, 0x11, 0x23, 0x11, 0x21, 0x1, 0x37, 0x1, 0x3, 0x54, 0xF3, 0xF3, 0xFE, 0x78, 0xFE, 0x6B, 0x7E, 0x1, 0x59, 0x4, 0x75, 0x1, 0x3B, 0xFA, 0x50, 0x3, 0xAF, 0x1, 0x74, 0x8D, 0xFE, 0xC5, 0x0, 0x1, 0x0, 0xA8, 0x0, 0x0, 0x4, 0x47, 0x5, 0xB0, 0x0, 0x8, 0x0, 0x0, 0x21, 0x23, 0x11, 0x1, 0x1, 0x37, 0x1, 0x1, 0x33, 0x4, 0x47, 0xF3, 0xFE, 0xEA, 0xFE, 0x6A, 0x7F, 0x1, 0x17, 0x1, 0x16, 0xF3, 0x4, 0xB0, 0xFE, 0xFF, 0x1, 0x74, 0x8D, 0xFE, 0xFE, 0x1, 0x2, 0x0, 0x1, 0x0, 0xA7, 0x0, 0x0, 0x4, 0x47, 0x5, 0xB0, 0x0, 0x9, 0x0, 0x0, 0x1, 0x11, 0x23, 0x11, 0x3, 0x1, 0x27, 0x1, 0x1, 0x11, 0x4, 0x47, 0xF3, 0xE5, 0xFE, 0xEF, 0xB7, 0x1, 0xA5, 0x1, 0x8, 0x5, 0xB0, 0xFA, 0x50, 0x1, 0x3B, 0x1, 0x86, 0xFD, 0x3F, 0x4B, 0x4, 0x2B, 0xFE, 0x3E, 0x2, 0xFC, 0x0, 0x1, 0x0, 0x99, 0x0, 0x0, 0x4, 0x47, 0x5, 0xB0, 0x0, 0x9, 0x0, 0x0, 0x1, 0x11, 0x23, 0x11, 0x27, 0x1, 0x27, 0x1, 0x1, 0x11, 0x4, 0x47, 0xF3, 0xC9, 0xFE, 0xC5, 0xB7, 0x1, 0xA5, 0x1, 0x16, 0x5, 0xB0, 0xFA, 0x50, 0x2, 0x75, 0xBB, 0xFC, 0xD0, 0x4B, 0x4, 0x2A, 0xFE, 0xFF, 0x2, 0x3C, 0x0, 0x1, 0x0, 0x1D, 0x0, 0x0, 0x4, 0x47, 0x5, 0xB0, 0x0, 0x9, 0x0, 0x0, 0x1, 0x21, 0x1, 0x27, 0x1, 0x21, 0x11, 0x33, 0x11, 0x23, 0x3, 0x54, 0xFE, 0xF9, 0xFE, 0x86, 0xB6, 0x1, 0xA4, 0x1, 0x93, 0xF3, 0xF3, 0x3, 0xAF, 0xFC, 0x51, 0x4B, 0x4, 0x2B, 0x1, 0x3A, 0xFA, 0x50, 0x0, 0x1, 0x0, 0x67, 0x0, 0x0, 0x4, 0x47, 0x5, 0xB0, 0x0, 0x8, 0x0, 0x0, 0x21, 0x23, 0x1, 0x1, 0x37, 0x1, 0x13, 0x11, 0x33, 0x4, 0x47, 0xF3, 0xFE, 0x7B, 0xFE, 0x98, 0x7F, 0x1, 0x96, 0xD8, 0xF3, 0x3, 0xD8, 0x1, 0x4B, 0x8D, 0xFE, 0x8E, 0xFD, 0xE2, 0x3, 0x90, 0x0, 0x1, 0x0, 0x49, 0x0, 0x0, 0x4, 0x47, 0x5, 0xB0, 0x0, 0x9, 0x0, 0x0, 0x21, 0x23, 0x11, 0x1, 0x1, 0x37, 0x1, 0x13, 0x11, 0x33, 0x4, 0x47, 0xF3, 0xFE, 0x64, 0xFE, 0x91, 0x7D, 0x1, 0x95, 0xF9, 0xF3, 0x1, 0x1F, 0x2, 0xB2, 0x1, 0x52, 0x8D, 0xFE, 0x8E, 0xFE, 0x61, 0x3, 0x11, 0x0, 0x1, 0x0, 0x78, 0x0, 0x0, 0x3, 0x1B, 0x5, 0xB0, 0x0, 0x7, 0x0, 0x0, 0x1, 0x11, 0x23, 0x11, 0x1, 0x27, 0x1, 0x11, 0x3, 0x1B, 0xF3, 0xFE, 0xF8, 0xA8, 0x1, 0xB0, 0x5, 0xB0, 0xFA, 0x50, 0x2, 0xF6, 0xFE, 0x44, 0x66, 0x2, 0xD5, 0x1, 0x3B, 0x0, 0x1, 0x0, 0x93, 0x0, 0x0, 0x3, 0x1B, 0x5, 0xB0, 0x0, 0x7, 0x0, 0x0, 0x1, 0x11, 0x23, 0x11, 0x5, 0x27, 0x1, 0x11, 0x3, 0x1B, 0xF3, 0xFE, 0xEA, 0x7F, 0x1, 0x95, 0x5, 0xB0, 0xFA, 0x50, 0x2, 0x39, 0xFF, 0x8D, 0x1, 0x74, 0x2, 0x75, 0x0, 0x1, 0x0, 0x84, 0x0, 0x0, 0x3, 0x1B, 0x5, 0xB0, 0x0, 0x6, 0x0, 0x0, 0x1, 0x11, 0x23, 0x11, 0x3, 0x27, 0x1, 0x3, 0x1B, 0xF3, 0xEE, 0xB6, 0x1, 0xA4, 0x5, 0xB0, 0xFA, 0x50, 0x3, 0x90, 0xFD, 0xAB, 0x4B, 0x4, 0x2A, 0x0, 0x1, 0x0, 0x93, 0x0, 0x0, 0x3, 0x1B, 0x5, 0xB0, 0x0, 0x6, 0x0, 0x0, 0x1, 0x11, 0x23, 0x1, 0x37, 0x1, 0x11, 0x3, 0x1B, 0xF3, 0xFE, 0x6B, 0x7F, 0x1, 0x16, 0x5, 0xB0, 0xFA, 0x50, 0x1, 0x74, 0x8E, 0xFF, 0x0, 0x4, 0xAE, 0x0, 0x1, 0x0, 0xBC, 0x0, 0x0, 0x4, 0x47, 0x5, 0xB0, 0x0, 0x8, 0x0, 0x0, 0x1, 0x11, 0x23, 0x11, 0x3, 0x21, 0x35, 0x21, 0x1, 0x4, 0x47, 0xF3, 0xEE, 0xFE, 0x56, 0x1, 0x25, 0x1, 0x73, 0x5, 0xB0, 0xFA, 0x50, 0x3, 0x90, 0xFD, 0xAB, 0xC7, 0x3, 0xAE, 0x0, 0x1, 0x0, 0x9D, 0x0, 0x0, 0x4, 0x47, 0x5, 0xB0, 0x0, 0x9, 0x0, 0x0, 0x1, 0x11, 0x23, 0x11, 0x1, 0x1, 0x27, 0x1, 0x1, 0x11, 0x4, 0x47, 0xF3, 0xFE, 0xF6, 0xFE, 0xFB, 0xA8, 0x1, 0xAE, 0x1, 0x9, 0x5, 0xB0, 0xFA, 0x50, 0x1, 0x3B, 0x1, 0xC4, 0xFE, 0x3C, 0x65, 0x2, 0xD2, 0xFE, 0x42, 0x2, 0xFC, 0x0, 0x1, 0x0, 0x8D, 0x0, 0x0, 0x4, 0x47, 0x5, 0xB0, 0x0, 0x8, 0x0, 0x0, 0x1, 0x11, 0x23, 0x1, 0x3, 0x27, 0x1, 0x1, 0x11, 0x4, 0x47, 0xF3, 0xFE, 0xD4, 0xF3, 0xA8, 0x1, 0xAC, 0x1, 0x1B, 0x5, 0xB0, 0xFA, 0x50, 0x2, 0xDE, 0xFE, 0x5C, 0x66, 0x2, 0xD5, 0xFD, 0x55, 0x3, 0xE6, 0x0, 0x1, 0x0, 0x18, 0x0, 0x0, 0x4, 0x47, 0x5, 0xB0, 0x0, 0x9, 0x0, 0x0, 0x1, 0x21, 0x1, 0x27, 0x1, 0x21, 0x11, 0x33, 0x11, 0x23, 0x3, 0x54, 0xFE, 0xE4, 0xFE, 0x88, 0xA8, 0x1, 0xB0, 0x1, 0x8C, 0xF3, 0xF3, 0x3, 0xAF, 0xFD, 0x8B, 0x66, 0x2, 0xD6, 0x1, 0x3A, 0xFA, 0x50, 0x0, 0x1, 0x0, 0x8E, 0x0, 0x0, 0x4, 0x47, 0x5, 0xB0, 0x0, 0x9, 0x0, 0x0, 0x1, 0x11, 0x23, 0x11, 0x27, 0x1, 0x27, 0x1, 0x1, 0x11, 0x4, 0x47, 0xF3, 0xEA, 0xFE, 0xCC, 0xA8, 0x1, 0xB0, 0x1, 0x16, 0x5, 0xB0, 0xFA, 0x50, 0x2, 0x75, 0xDA, 0xFD, 0xEC, 0x65, 0x2, 0xD6, 0xFE, 0xFE, 0x2, 0x3C, 0x0, 0x1, 0x0, 0x23, 0x0, 0x0, 0x4, 0x47, 0x5, 0xB0, 0x0, 0x8, 0x0, 0x0, 0x1, 0x11, 0x23, 0x11, 0x7, 0x1, 0x27, 0x1, 0x1, 0x4, 0x47, 0xF3, 0xEE, 0xFE, 0x65, 0xA8, 0x1, 0x9D, 0x1, 0x94, 0x5, 0xB0, 0xFA, 0x50, 0x4, 0xAE, 0xDC, 0xFD, 0x4F, 0x66, 0x2, 0xB5, 0x1, 0x74, 0x0, 0x1, 0x0, 0xA8, 0x0, 0x0, 0x4, 0x47, 0x5, 0xB0, 0x0, 0x9, 0x0, 0x0, 0x1, 0x11, 0x23, 0x11, 0x5, 0x1, 0x37, 0x1, 0x1, 0x11, 0x4, 0x47, 0xF3, 0xFE, 0xE9, 0xFE, 0x6B, 0x7F, 0x1, 0x18, 0x1, 0x15, 0x5, 0xB0, 0xFA, 0x50, 0x2, 0x39, 0xFF, 0x1, 0x74, 0x8D, 0xFF, 0x0, 0x1, 0x0, 0x2, 0x75, 0x0, 0x1, 0x0, 0x18, 0x0, 0x0, 0x4, 0x47, 0x5, 0xB0, 0x0, 0x9, 0x0, 0x0, 0x1, 0x21, 0x1, 0x27, 0x1, 0x21, 0x11, 0x33, 0x11, 0x23, 0x3, 0x54, 0xFE, 0xE4, 0xFE, 0x88, 0xA8, 0x1, 0xB0, 0x1, 0x8C, 0xF3, 0xF3, 0x2, 0x75, 0xFD, 0x8B, 0x66, 0x2, 0xD5, 0x2, 0x75, 0xFA, 0x50, 0x0, 0x1, 0x0, 0xA7, 0x0, 0x0, 0x4, 0x47, 0x5, 0xB0, 0x0, 0x8, 0x0, 0x0, 0x1, 0x11, 0x23, 0x11, 0x1, 0x1, 0x37, 0x17, 0x1, 0x4, 0x47, 0xF3, 0xFE, 0xE8, 0xFE, 0x6B, 0x7E, 0xDC, 0x1, 0x53, 0x5, 0xB0, 0xFA, 0x50, 0x3, 0xE5, 0xFD, 0x56, 0x1, 0x74, 0x8D, 0xCA, 0x3, 0x3E, 0x0, 0x1, 0x0, 0x96, 0x0, 0x0, 0x4, 0x47, 0x5, 0xB0, 0x0, 0x9, 0x0, 0x0, 0x1, 0x11, 0x23, 0x11, 0x3, 0x1, 0x27, 0x1, 0x1, 0x11, 0x4, 0x47, 0xF3, 0xD1, 0xFE, 0xCC, 0xB9, 0x1, 0xB8, 0x1, 0x6, 0x5, 0xB0, 0xFA, 0x50, 0x2, 0x75, 0x1, 0x67, 0xFC, 0x24, 0x3A, 0x5, 0x75, 0xFE, 0x3F, 0x1, 0xC2, 0x0, 0x1, 0x0, 0x86, 0x0, 0x0, 0x4, 0x47, 0x5, 0xB0, 0x0, 0x9, 0x0, 0x0, 0x1, 0x11, 0x23, 0x11, 0x3, 0x1, 0x27, 0x1, 0x1, 0x11, 0x4, 0x47, 0xF3, 0xF6, 0xFE, 0xE1, 0xB9, 0x1, 0xB8, 0x1, 0x16, 0x5, 0xB0, 0xFA, 0x50, 0x1, 0x3B, 0x2, 0x5C, 0xFC, 0x69, 0x3A, 0x5, 0x76, 0xFD, 0x54, 0x2, 0xAC, 0x0, 0x1, 0x0, 0x7E, 0x0, 0x0, 0x4, 0x47, 0x5, 0xB0, 0x0, 0x8, 0x0, 0x0, 0x1, 0x11, 0x23, 0x1, 0x1, 0x27, 0x1, 0x1, 0x11, 0x4, 0x47, 0xF3, 0xFE, 0xEB, 0xFE, 0xF8, 0xB9, 0x1, 0xB7, 0x1, 0x1F, 0x5, 0xB0, 0xFA, 0x50, 0x3, 0x4B, 0xFC, 0xB5, 0x3A, 0x5, 0x76, 0xFC, 0x9A, 0x3, 0x66, 0x0, 0x1, 0x0, 0x3C, 0x0, 0x0, 0x4, 0x47, 0x5, 0xB0, 0x0, 0x6, 0x0, 0x0, 0x1, 0x11, 0x33, 0x11, 0x23, 0x1, 0x37, 0x3, 0x54, 0xF3, 0xF3, 0xFC, 0xE8, 0x7F, 0x1, 0x2, 0x4, 0xAE, 0xFA, 0x50, 0x2, 0xD9, 0x8D, 0x0, 0x1, 0x0, 0x2C, 0x0, 0x0, 0x4, 0x47, 0x5, 0xB0, 0x0, 0x9, 0x0, 0x0, 0x1, 0x21, 0x1, 0x37, 0x1, 0x21, 0x11, 0x33, 0x11, 0x23, 0x3, 0x54, 0xFE, 0x6D, 0xFE, 0x6B, 0x7F, 0x1, 0x58, 0x1, 0x51, 0xF3, 0xF3, 0x1, 0x3B, 0x1, 0x74, 0x8D, 0xFE, 0xC6, 0x3, 0xAE, 0xFA, 0x50, 0x0, 0x1, 0x0, 0x98, 0x0, 0x0, 0x4, 0x47, 0x5, 0xB0, 0x0, 0x9, 0x0, 0x0, 0x1, 0x11, 0x23, 0x11, 0x1, 0x3, 0x27, 0x1, 0x1, 0x11, 0x4, 0x47, 0xF3, 0xFE, 0xF7, 0xFC, 0xB7, 0x1, 0xA5, 0x1, 0x17, 0x5, 0xB0, 0xFA, 0x50, 0x1, 0x3B, 0x2, 0x8B, 0xFD, 0x75, 0x4B, 0x4, 0x2A, 0xFD, 0x54, 0x2, 0xAC, 0x0, 0x1, 0x0, 0x24, 0x0, 0x0, 0x4, 0x47, 0x5, 0xB0, 0x0, 0x7, 0x0, 0x0, 0x1, 0x21, 0x1, 0x27, 0x1, 0x21, 0x11, 0x23, 0x3, 0x54, 0xFF, 0x0, 0xFE, 0x86, 0xB6, 0x1, 0xA4, 0x2, 0x7F, 0xF3, 0x4, 0xE9, 0xFC, 0x52, 0x4B, 0x4, 0x2A, 0xFA, 0x50, 0x0, 0x1, 0x0, 0x78, 0x0, 0x0, 0x3, 0x1B, 0x5, 0xB0, 0x0, 0x6, 0x0, 0x0, 0x1, 0x11, 0x23, 0x1, 0x37, 0x1, 0x11, 0x3, 0x1B, 0xF3, 0xFE, 0x50, 0xA8, 0x1, 0x8, 0x5, 0xB0, 0xFA, 0x50, 0x2, 0xD6, 0x65, 0xFE, 0x45, 0x4, 0x30, 0x0, 0x1, 0x0, 0x93, 0x0, 0x0, 0x3, 0x1B, 0x5, 0xB0, 0x0, 0x7, 0x0, 0x0, 0x1, 0x11, 0x23, 0x11, 0x1, 0x37, 0x5, 0x11, 0x3, 0x1B, 0xF3, 0xFE, 0x6B, 0x7F, 0x1, 0x16, 0x5, 0xB0, 0xFA, 0x50, 0x1, 0x3B, 0x1, 0x74, 0x8D, 0xFF, 0x3, 0x73, 0x0, 0x1, 0x0, 0x94, 0x0, 0x0, 0x4, 0x47, 0x5, 0xB0, 0x0, 0x9, 0x0, 0x0, 0x1, 0x11, 0x23, 0x11, 0x1, 0x1, 0x37, 0x17, 0x1, 0x11, 0x4, 0x47, 0xF3, 0xFE, 0xD5, 0xFE, 0x6B, 0x7F, 0xF4, 0x1, 0x4D, 0x5, 0xB0, 0xFA, 0x50, 0x1, 0xE5, 0xFE, 0x1B, 0x1, 0x74, 0x8E, 0xE3, 0x2, 0x1C, 0x2, 0x75, 0x0, 0x1, 0x0, 0xA7, 0x0, 0x0, 0x4, 0x47, 0x5, 0xB0, 0x0, 0x9, 0x0, 0x0, 0x1, 0x11, 0x23, 0x11, 0x1, 0x1, 0x37, 0x17, 0x1, 0x11, 0x4, 0x47, 0xF3, 0xFE, 0xE8, 0xFE, 0x6B, 0x7E, 0xDC, 0x1, 0x53, 0x5, 0xB0, 0xFA, 0x50, 0x2, 0xAA, 0xFD, 0x56, 0x1, 0x74, 0x8E, 0xCB, 0x3, 0x3E, 0x1, 0x3B, 0x0, 0x1, 0x0, 0x78, 0x0, 0x0, 0x3, 0x1B, 0x5, 0xB0, 0x0, 0x6, 0x0, 0x0, 0x21, 0x23, 0x11, 0x1, 0x27, 0x1, 0x33, 0x3, 0x1B, 0xF3, 0xFE, 0xF8, 0xA8, 0x1, 0xB0, 0xF3, 0x4, 0x30, 0xFE, 0x45, 0x65, 0x2, 0xD6, 0x0, 0x1, 0x0, 0xA8, 0x0, 0x0, 0x4, 0x47, 0x5, 0xB0, 0x0, 0x9, 0x0, 0x0, 0x1, 0x11, 0x23, 0x35, 0x5, 0x1, 0x37, 0x1, 0x1, 0x11, 0x4, 0x47, 0xF3, 0xFE, 0xE9, 0xFE, 0x6B, 0x7F, 0x1, 0x18, 0x1, 0x15, 0x5, 0xB0, 0xFA, 0x50, 0xFF, 0xFF, 0x1, 0x74, 0x8E, 0xFE, 0xFF, 0x1, 0x1, 0x3, 0xAE, 0x0, 0x1, 0x0, 0x87, 0x0, 0x0, 0x4, 0x47, 0x5, 0xB0, 0x0, 0x9, 0x0, 0x0, 0x1, 0x1, 0x11, 0x33, 0x11, 0x23, 0x11, 0x27, 0x1, 0x27, 0x2, 0x3E, 0x1, 0x16, 0xF3, 0xF3, 0xB7, 0xFE, 0xA3, 0xB9, 0x5, 0xB0, 0xFE, 0xFF, 0x1, 0x1, 0xFA, 0x50, 0x3, 0xAF, 0xAC, 0xFB, 0xA5, 0x3A, 0x0, 0x1, 0x0, 0x93, 0x0, 0x0, 0x3, 0x1B, 0x5, 0xB0, 0x0, 0x7, 0x0, 0x0, 0x21, 0x23, 0x11, 0x5, 0x27, 0x1, 0x11, 0x33, 0x3, 0x1B, 0xF3, 0xFE, 0xEA, 0x7F, 0x1, 0x95, 0xF3, 0x3, 0x73, 0xFF, 0x8D, 0x1, 0x74, 0x1, 0x3B, 0x0, 0x1, 0x0, 0xAB, 0x0, 0x0, 0x4, 0x47, 0x5, 0xB0, 0x0, 0x9, 0x0, 0x0, 0x1, 0x11, 0x23, 0x11, 0x5, 0x21, 0x35, 0x21, 0x1, 0x11, 0x4, 0x47, 0xF3, 0xFE, 0xEA, 0xFE, 0x6D, 0x1, 0x54, 0x1, 0x55, 0x5, 0xB0, 0xFA, 0x50, 0x2, 0x39, 0xFF, 0xC7, 0x1, 0x3A, 0x2, 0x75, 0x0, 0x1, 0x0, 0xA8, 0x0, 0x0, 0x4, 0x47, 0x5, 0xB0, 0x0, 0x9, 0x0, 0x0, 0x1, 0x11, 0x23, 0x11, 0x1, 0x1, 0x27, 0x1, 0x1, 0x11, 0x4, 0x47, 0xF3, 0xFE, 0xEA, 0xFE, 0xE9, 0x7F, 0x1, 0x96, 0x1, 0x16, 0x5, 0xB0, 0xFA, 0x50, 0x1, 0x3B, 0x1, 0x2, 0xFE, 0xFE, 0x8D, 0x1, 0x74, 0xFE, 0xFF, 0x3, 0x75, 0x0, 0x1, 0x0, 0xAB, 0x0, 0x0, 0x4, 0x47, 0x5, 0xB0, 0x0, 0x9, 0x0, 0x0, 0x1, 0x11, 0x23, 0x11, 0x1, 0x21, 0x35, 0x21, 0x5, 0x11, 0x4, 0x47, 0xF3, 0xFE, 0xAB, 0xFE, 0xAC, 0x1, 0x93, 0x1, 0x16, 0x5, 0xB0, 0xFA, 0x50, 0x1, 0x3B, 0x1, 0x3A, 0xC7, 0xFF, 0x3, 0x73, 0x0, 0x1, 0x0, 0xBA, 0x0, 0x0, 0x4, 0x47, 0x5, 0xB0, 0x0, 0x8, 0x0, 0x0, 0x21, 0x23, 0x11, 0x1, 0x21, 0x35, 0x21, 0x1, 0x33, 0x4, 0x47, 0xF3, 0xFE, 0xF9, 0xFE, 0x6D, 0x1, 0x25, 0x1, 0x75, 0xF3, 0x4, 0x30, 0xFE, 0x45, 0xC6, 0x2, 0x75, 0x0, 0x1, 0x0, 0xAB, 0x0, 0x0, 0x4, 0x47, 0x5, 0xB0, 0x0, 0x9, 0x0, 0x0, 0x21, 0x23, 0x11, 0x5, 0x21, 0x35, 0x21, 0x1, 0x11, 0x33, 0x4, 0x47, 0xF3, 0xFE, 0xEA, 0xFE, 0x6D, 0x1, 0x54, 0x1, 0x55, 0xF3, 0x3, 0x73, 0xFF, 0xC7, 0x1, 0x3A, 0x1, 0x3B, 0x0, 0x1, 0x0, 0x18, 0x0, 0x0, 0x4, 0x47, 0x5, 0xB0, 0x0, 0x7, 0x0, 0x0, 0x21, 0x21, 0x1, 0x37, 0x1, 0x21, 0x11, 0x33, 0x4, 0x47, 0xFD, 0x81, 0xFE, 0x50, 0xA8, 0x1, 0x78, 0x1, 0x1C, 0xF3, 0x2, 0xD6, 0x65, 0xFD, 0x8C, 0x4, 0xE9, 0x0, 0x1, 0x0, 0x8D, 0x0, 0x0, 0x4, 0x47, 0x5, 0xB0, 0x0, 0x9, 0x0, 0x0, 0x1, 0x11, 0x23, 0x11, 0x1, 0x1, 0x37, 0x13, 0x1, 0x11, 0x4, 0x47, 0xF3, 0xFE, 0xE2, 0xFE, 0x57, 0xA8, 0xF1, 0x1, 0x2E, 0x5, 0xB0, 0xFA, 0x50, 0x2, 0xAA, 0xFD, 0x56, 0x2, 0xD6, 0x65, 0xFE, 0x5F, 0x2, 0xDB, 0x1, 0x3B, 0x0, 0x1, 0x0, 0x7A, 0x0, 0x0, 0x4, 0x47, 0x5, 0xB0, 0x0, 0x9, 0x0, 0x0, 0x1, 0x11, 0x23, 0x11, 0x1, 0x1, 0x37, 0x1, 0x1, 0x11, 0x4, 0x47, 0xF3, 0xFE, 0xD4, 0xFE, 0x52, 0xA8, 0x1, 0xD, 0x1, 0x25, 0x5, 0xB0, 0xFA, 0x50, 0x1, 0xE5, 0xFE, 0x1B, 0x2, 0xD6, 0x65, 0xFE, 0x2D, 0x1, 0xD5, 0x2, 0x73, 0x0, 0x1, 0x0, 0x84, 0x0, 0x0, 0x4, 0x47, 0x5, 0xB0, 0x0, 0x8, 0x0, 0x0, 0x1, 0x11, 0x23, 0x11, 0x1, 0x1, 0x37, 0x13, 0x1, 0x4, 0x47, 0xF3, 0xFE, 0xDC, 0xFE, 0x54, 0xA8, 0xDE, 0x1, 0x4A, 0x5, 0xB0, 0xFA, 0x50, 0x3, 0x72, 0xFC, 0x8E, 0x2, 0xD6, 0x65, 0xFE, 0x86, 0x3, 0xEF, 0x0, 0x1, 0x0, 0x94, 0x0, 0x0, 0x4, 0x47, 0x5, 0xB0, 0x0, 0x9, 0x0, 0x0, 0x1, 0x11, 0x23, 0x11, 0x1, 0x1, 0x37, 0x17, 0x1, 0x11, 0x4, 0x47, 0xF3, 0xFE, 0xD5, 0xFE, 0x6B, 0x7F, 0xF4, 0x1, 0x4D, 0x5, 0xB0, 0xFA, 0x50, 0x3, 0x1F, 0xFE, 0x1B, 0x1, 0x74, 0x8D, 0xE2, 0x2, 0x1C, 0x1, 0x3B, 0x0, 0x1, 0x0, 0xAB, 0x0, 0x0, 0x4, 0x47, 0x5, 0xB0, 0x0, 0x8, 0x0, 0x0, 0x1, 0x11, 0x23, 0x1, 0x21, 0x35, 0x21, 0x1, 0x11, 0x4, 0x47, 0xF3, 0xFE, 0xAB, 0xFE, 0xAC, 0x1, 0x93, 0x1, 0x16, 0x5, 0xB0, 0xFA, 0x50, 0x1, 0x3B, 0xC7, 0xFF, 0x0, 0x4, 0xAE, 0x0, 0x1, 0x0, 0x98, 0x0, 0x0, 0x4, 0x47, 0x5, 0xB0, 0x0, 0x8, 0x0, 0x0, 0x21, 0x23, 0x11, 0x1, 0x1, 0x37, 0x13, 0x1, 0x33, 0x4, 0x47, 0xF3, 0xFE, 0xE9, 0xFE, 0x5B, 0xB7, 0xFC, 0x1, 0x9, 0xF3, 0x3, 0xE6, 0xFD, 0x55, 0x4, 0x2A, 0x4B, 0xFD, 0x75, 0x2, 0x8B, 0x0, 0x1, 0x0, 0x99, 0x0, 0x0, 0x4, 0x47, 0x5, 0xB0, 0x0, 0x9, 0x0, 0x0, 0x21, 0x23, 0x11, 0x1, 0x1, 0x37, 0x1, 0x37, 0x11, 0x33, 0x4, 0x47, 0xF3, 0xFE, 0xEA, 0xFE, 0x5B, 0xB7, 0x1, 0x3B, 0xC9, 0xF3, 0x2, 0x3C, 0xFE, 0xFF, 0x4, 0x2A, 0x4B, 0xFC, 0xD0, 0xBB, 0x2, 0x75, 0x0, 0x1, 0x0, 0xA7, 0x0, 0x0, 0x4, 0x47, 0x5, 0xB0, 0x0, 0x9, 0x0, 0x0, 0x21, 0x23, 0x11, 0x1, 0x1, 0x37, 0x1, 0x13, 0x11, 0x33, 0x4, 0x47, 0xF3, 0xFE, 0xF8, 0xFE, 0x5B, 0xB7, 0x1, 0x11, 0xE5, 0xF3, 0x2, 0xFC, 0xFE, 0x3E, 0x4, 0x2B, 0x4B, 0xFD, 0x3F, 0x1, 0x86, 0x1, 0x3B, 0x0, 0x1, 0x0, 0x18, 0x0, 0x0, 0x4, 0x47, 0x5, 0xB0, 0x0, 0x9, 0x0, 0x0, 0x1, 0x11, 0x33, 0x11, 0x23, 0x11, 0x21, 0x1, 0x37, 0x1, 0x3, 0x54, 0xF3, 0xF3, 0xFE, 0x74, 0xFE, 0x50, 0xA8, 0x1, 0x78, 0x2, 0x1, 0x3, 0xAF, 0xFA, 0x50, 0x1, 0x3A, 0x2, 0xD6, 0x66, 0xFD, 0x8B, 0x0, 0x1, 0x0, 0x23, 0x0, 0x0, 0x4, 0x47, 0x5, 0xB0, 0x0, 0x8, 0x0, 0x0, 0x21, 0x23, 0x1, 0x1, 0x37, 0x1, 0x17, 0x11, 0x33, 0x4, 0x47, 0xF3, 0xFE, 0x6C, 0xFE, 0x63, 0xA8, 0x1, 0x9B, 0xEE, 0xF3, 0x1, 0x74, 0x2, 0xB5, 0x66, 0xFD, 0x4F, 0xDC, 0x4, 0xAE, 0x0, 0x1, 0x0, 0x9D, 0x0, 0x0, 0x4, 0x47, 0x5, 0xB0, 0x0, 0x9, 0x0, 0x0, 0x21, 0x23, 0x11, 0x1, 0x1, 0x37, 0x1, 0x1, 0x11, 0x33, 0x4, 0x47, 0xF3, 0xFE, 0xF7, 0xFE, 0x52, 0xA8, 0x1, 0x5, 0x1, 0xA, 0xF3, 0x2, 0xFC, 0xFE, 0x42, 0x2, 0xD2, 0x65, 0xFE, 0x3C, 0x1, 0xC4, 0x1, 0x3B, 0x0, 0x1, 0x0, 0x8E, 0x0, 0x0, 0x4, 0x47, 0x5, 0xB0, 0x0, 0x9, 0x0, 0x0, 0x21, 0x23, 0x11, 0x1, 0x1, 0x37, 0x1, 0x37, 0x11, 0x33, 0x4, 0x47, 0xF3, 0xFE, 0xEA, 0xFE, 0x50, 0xA8, 0x1, 0x34, 0xEA, 0xF3, 0x2, 0x3C, 0xFE, 0xFE, 0x2, 0xD6, 0x65, 0xFD, 0xEC, 0xDA, 0x2, 0x75, 0x0, 0x1, 0x0, 0x8D, 0x0, 0x0, 0x4, 0x47, 0x5, 0xB0, 0x0, 0x8, 0x0, 0x0, 0x21, 0x23, 0x11, 0x1, 0x1, 0x37, 0x13, 0x1, 0x33, 0x4, 0x47, 0xF3, 0xFE, 0xE5, 0xFE, 0x54, 0xA8, 0xF3, 0x1, 0x2C, 0xF3, 0x3, 0xE6, 0xFD, 0x55, 0x2, 0xD5, 0x66, 0xFE, 0x5C, 0x2, 0xDE, 0x0, 0x1, 0x0, 0x31, 0x0, 0x0, 0x4, 0x47, 0x5, 0xB0, 0x0, 0x8, 0x0, 0x0, 0x21, 0x23, 0x1, 0x1, 0x37, 0x1, 0x17, 0x11, 0x33, 0x4, 0x47, 0xF3, 0xFE, 0x6B, 0xFE, 0x72, 0xB7, 0x1, 0x8D, 0xDF, 0xF3, 0x1, 0x74, 0x3, 0xF1, 0x4B, 0xFC, 0x1F, 0xCD, 0x4, 0xAE, 0x0, 0x1, 0x0, 0x1D, 0x0, 0x0, 0x4, 0x47, 0x5, 0xB0, 0x0, 0x9, 0x0, 0x0, 0x1, 0x11, 0x33, 0x11, 0x23, 0x11, 0x21, 0x1, 0x37, 0x1, 0x3, 0x54, 0xF3, 0xF3, 0xFE, 0x6D, 0xFE, 0x5C, 0xB6, 0x1, 0x7A, 0x2, 0x1, 0x3, 0xAF, 0xFA, 0x50, 0x1, 0x3A, 0x4, 0x2B, 0x4B, 0xFC, 0x51, 0x0, 0x1, 0x0, 0x93, 0x0, 0x0, 0x3, 0x1B, 0x5, 0xB0, 0x0, 0x7, 0x0, 0x0, 0x1, 0x11, 0x23, 0x35, 0x5, 0x27, 0x1, 0x11, 0x3, 0x1B, 0xF3, 0xFE, 0xEA, 0x7F, 0x1, 0x95, 0x5, 0xB0, 0xFA, 0x50, 0xFF, 0xFF, 0x8D, 0x1, 0x75, 0x3, 0xAE, 0x0, 0x1, 0x0, 0x9E, 0x0, 0x0, 0x4, 0x47, 0x5, 0xB0, 0x0, 0x8, 0x0, 0x0, 0x1, 0x11, 0x23, 0x11, 0x1, 0x1, 0x37, 0x17, 0x1, 0x4, 0x47, 0xF3, 0xFE, 0xE0, 0xFE, 0x6A, 0x7F, 0xC5, 0x1, 0x72, 0x5, 0xB0, 0xFA, 0x50, 0x3, 0x72, 0xFC, 0x8E, 0x1, 0x74, 0x8E, 0xB8, 0x4, 0x66, 0x0, 0x1, 0x0, 0x78, 0x0, 0x0, 0x3, 0x1B, 0x5, 0xB0, 0x0, 0x7, 0x0, 0x0, 0x1, 0x11, 0x23, 0x11, 0x1, 0x27, 0x1, 0x11, 0x3, 0x1B, 0xF3, 0xFE, 0xF8, 0xA8, 0x1, 0xB0, 0x5, 0xB0, 0xFA, 0x50, 0x1, 0xBC, 0xFE, 0x44, 0x66, 0x2, 0xD5, 0x2, 0x75, 0x0, 0x1, 0x0, 0x84, 0x0, 0x0, 0x3, 0x1B, 0x5, 0xB0, 0x0, 0x7, 0x0, 0x0, 0x1, 0x11, 0x23, 0x11, 0x3, 0x27, 0x1, 0x11, 0x3, 0x1B, 0xF3, 0xEE, 0xB6, 0x1, 0xA4, 0x5, 0xB0, 0xFA, 0x50, 0x2, 0x55, 0xFD, 0xAB, 0x4B, 0x4, 0x2A, 0x1, 0x3B, 0x0, 0x1, 0x0, 0x71, 0x0, 0x0, 0x3, 0x1B, 0x5, 0xB0, 0x0, 0x6, 0x0, 0x0, 0x1, 0x11, 0x23, 0x11, 0x3, 0x27, 0x1, 0x3, 0x1B, 0xF3, 0xFD, 0xBA, 0x1, 0xB7, 0x5, 0xB0, 0xFA, 0x50, 0x3, 0x28, 0xFC, 0xD8, 0x3A, 0x5, 0x76, 0x0, 0x1, 0x0, 0xA8, 0x0, 0x0, 0x4, 0x47, 0x5, 0xB0, 0x0, 0x8, 0x0, 0x0, 0x1, 0x11, 0x23, 0x1, 0x1, 0x27, 0x1, 0x1, 0x11, 0x4, 0x47, 0xF3, 0xFE, 0xEA, 0xFE, 0xE9, 0x7F, 0x1, 0x96, 0x1, 0x16, 0x5, 0xB0, 0xFA, 0x50, 0x1, 0x2, 0xFE, 0xFE, 0x8D, 0x1, 0x75, 0xFE, 0xFE, 0x4, 0xB0, 0x0, 0x1, 0x0, 0x37, 0x0, 0x0, 0x4, 0x47, 0x5, 0xB0, 0x0, 0x9, 0x0, 0x0, 0x1, 0x21, 0x1, 0x27, 0x1, 0x21, 0x11, 0x33, 0x11, 0x23, 0x3, 0x54, 0xFE, 0xBA, 0xFE, 0xA7, 0x7E, 0x1, 0x95, 0x1, 0x88, 0xF3, 0xF3, 0x1, 0x3B, 0xFE, 0xC5, 0x8D, 0x1, 0x75, 0x3, 0xAE, 0xFA, 0x50, 0x0, 0x1, 0x0, 0x67, 0x0, 0x0, 0x4, 0x47, 0x5, 0xB0, 0x0, 0x8, 0x0, 0x0, 0x1, 0x11, 0x23, 0x11, 0x3, 0x1, 0x27, 0x1, 0x1, 0x4, 0x47, 0xF3, 0xD8, 0xFE, 0x6A, 0x7F, 0x1, 0x68, 0x1, 0x85, 0x5, 0xB0, 0xFA, 0x50, 0x3, 0x90, 0xFD, 0xE2, 0xFE, 0x8E, 0x8D, 0x1, 0x4B, 0x3, 0xD8, 0x0, 0x1, 0x0, 0x47, 0x0, 0x0, 0x4, 0x47, 0x5, 0xB0, 0x0, 0x7, 0x0, 0x0, 0x1, 0x11, 0x23, 0x11, 0x1, 0x27, 0x1, 0x11, 0x4, 0x47, 0xF3, 0xFD, 0x72, 0x7F, 0x3, 0xD, 0x5, 0xB0, 0xFA, 0x50, 0x2, 0x55, 0xFD, 0xAB, 0x8D, 0x2, 0xCA, 0x2, 0x59, 0x0, 0x1, 0x0, 0x49, 0x0, 0x0, 0x4, 0x47, 0x5, 0xB0, 0x0, 0x9, 0x0, 0x0, 0x1, 0x11, 0x23, 0x11, 0x3, 0x1, 0x27, 0x1, 0x1, 0x11, 0x4, 0x47, 0xF3, 0xF9, 0xFE, 0x6B, 0x7D, 0x1, 0x6F, 0x1, 0x9C, 0x5, 0xB0, 0xFA, 0x50, 0x3, 0x11, 0xFE, 0x61, 0xFE, 0x8E, 0x8D, 0x1, 0x52, 0x2, 0xB2, 0x1, 0x1F, 0x0, 0x1, 0x0, 0x37, 0x0, 0x0, 0x4, 0x47, 0x5, 0xB0, 0x0, 0x7, 0x0, 0x0, 0x21, 0x21, 0x1, 0x37, 0x1, 0x21, 0x11, 0x33, 0x4, 0x47, 0xFD, 0x85, 0xFE, 0x6B, 0x7E, 0x1, 0x59, 0x1, 0x46, 0xF3, 0x1, 0x74, 0x8E, 0xFE, 0xC5, 0x4, 0xE9, 0x0, 0x1, 0x0, 0x98, 0x0, 0x0, 0x4, 0x47, 0x5, 0xB0, 0x0, 0x8, 0x0, 0x0, 0x1, 0x11, 0x23, 0x1, 0x3, 0x27, 0x1, 0x1, 0x11, 0x4, 0x47, 0xF3, 0xFE, 0xF7, 0xFC, 0xB7, 0x1, 0xA5, 0x1, 0x17, 0x5, 0xB0, 0xFA, 0x50, 0x2, 0x8B, 0xFD, 0x75, 0x4B, 0x4, 0x2A, 0xFD, 0x55, 0x3, 0xE6, 0x0, 0x1, 0x0, 0xAB, 0x0, 0x0, 0x4, 0x47, 0x5, 0xB0, 0x0, 0x9, 0x0, 0x0, 0x1, 0x11, 0x23, 0x35, 0x5, 0x21, 0x35, 0x21, 0x1, 0x11, 0x4, 0x47, 0xF3, 0xFE, 0xEA, 0xFE, 0x6D, 0x1, 0x54, 0x1, 0x55, 0x5, 0xB0, 0xFA, 0x50, 0xFF, 0xFF, 0xC7, 0x1, 0x3B, 0x3, 0xAE, 0x0, 0x1, 0x0, 0x3C, 0x0, 0x0, 0x4, 0x47, 0x5, 0xB0, 0x0, 0x6, 0x0, 0x0, 0x1, 0x1, 0x27, 0x1, 0x33, 0x11, 0x23, 0x3, 0x54, 0xFD, 0x67, 0x7F, 0x3, 0x18, 0xF3, 0xF3, 0x4, 0xAE, 0xFD, 0x9C, 0x8D, 0x2, 0xD9, 0xFA, 0x50, 0x0, 0x1, 0x0, 0xA8, 0x0, 0x0, 0x4, 0x47, 0x5, 0xB0, 0x0, 0x9, 0x0, 0x0, 0x21, 0x23, 0x11, 0x1, 0x1, 0x27, 0x1, 0x5, 0x11, 0x33, 0x4, 0x47, 0xF3, 0xFE, 0xEB, 0xFE, 0xE8, 0x7F, 0x1, 0x95, 0x1, 0x17, 0xF3, 0x2, 0x75, 0x1, 0x0, 0xFF, 0x0, 0x8D, 0x1, 0x74, 0xFF, 0x2, 0x39, 0x0, 0x1, 0x0, 0x2C, 0x0, 0x0, 0x4, 0x47, 0x5, 0xB0, 0x0, 0x9, 0x0, 0x0, 0x1, 0x11, 0x33, 0x11, 0x23, 0x11, 0x21, 0x1, 0x27, 0x1, 0x3, 0x54, 0xF3, 0xF3, 0xFE, 0xAF, 0xFE, 0xA8, 0x7F, 0x1, 0x95, 0x4, 0x75, 0x1, 0x3B, 0xFA, 0x50, 0x3, 0xAF, 0xFE, 0xC5, 0x8D, 0x1, 0x74, 0x0, 0x1, 0x0, 0xA7, 0x0, 0x0, 0x4, 0x47, 0x5, 0xB0, 0x0, 0x8, 0x0, 0x0, 0x21, 0x23, 0x1, 0x7, 0x27, 0x1, 0x1, 0x11, 0x33, 0x4, 0x47, 0xF3, 0xFE, 0xAD, 0xDC, 0x7E, 0x1, 0x95, 0x1, 0x18, 0xF3, 0x3, 0x3F, 0xCB, 0x8D, 0x1, 0x74, 0xFD, 0x56, 0x3, 0xE5, 0x0, 0x1, 0x0, 0x94, 0x0, 0x0, 0x4, 0x47, 0x5, 0xB0, 0x0, 0x9, 0x0, 0x0, 0x21, 0x23, 0x11, 0x1, 0x7, 0x27, 0x1, 0x1, 0x11, 0x33, 0x4, 0x47, 0xF3, 0xFE, 0xB3, 0xF4, 0x7F, 0x1, 0x95, 0x1, 0x2B, 0xF3, 0x1, 0x3B, 0x2, 0x1C, 0xE2, 0x8D, 0x1, 0x74, 0xFE, 0x1C, 0x3, 0x1E, 0x0, 0x1, 0x0, 0xAB, 0x0, 0x0, 0x4, 0x47, 0x5, 0xB0, 0x0, 0x8, 0x0, 0x0, 0x1, 0x11, 0x23, 0x11, 0x3, 0x21, 0x35, 0x21, 0x1, 0x4, 0x47, 0xF3, 0xFD, 0xFE, 0x54, 0x1, 0x1F, 0x1, 0x8A, 0x5, 0xB0, 0xFA, 0x50, 0x3, 0x28, 0xFC, 0xD8, 0xC7, 0x4, 0xE9, 0x0, 0x1, 0x0, 0xBC, 0x0, 0x0, 0x4, 0x47, 0x5, 0xB0, 0x0, 0x9, 0x0, 0x0, 0x1, 0x11, 0x23, 0x11, 0x3, 0x21, 0x35, 0x21, 0x1, 0x11, 0x4, 0x47, 0xF3, 0xEE, 0xFE, 0x56, 0x1, 0x25, 0x1, 0x73, 0x5, 0xB0, 0xFA, 0x50, 0x2, 0x55, 0xFD, 0xAB, 0xC7, 0x3, 0xAE, 0x1, 0x3B, 0x0, 0x1, 0x0, 0xB2, 0x0, 0x0, 0x4, 0x47, 0x5, 0xB0, 0x0, 0x9, 0x0, 0x0, 0x1, 0x11, 0x23, 0x11, 0x1, 0x21, 0x35, 0x21, 0x1, 0x11, 0x4, 0x47, 0xF3, 0xFE, 0xF9, 0xFE, 0x65, 0x1, 0x2D, 0x1, 0x75, 0x5, 0xB0, 0xFA, 0x50, 0x1, 0xBC, 0xFE, 0x44, 0xC7, 0x2, 0x74, 0x2, 0x75, 0x0, 0x1, 0x0, 0x78, 0x0, 0x0, 0x3, 0x1B, 0x5, 0xB0, 0x0, 0x7, 0x0, 0x0, 0x21, 0x23, 0x11, 0x1, 0x37, 0x1, 0x11, 0x33, 0x3, 0x1B, 0xF3, 0xFE, 0x50, 0xA8, 0x1, 0x8, 0xF3, 0x1, 0x3B, 0x2, 0xD5, 0x66, 0xFE, 0x44, 0x2, 0xF6, 0x0, 0x1, 0x0, 0x84, 0x0, 0x0, 0x3, 0x1B, 0x5, 0xB0, 0x0, 0x6, 0x0, 0x0, 0x21, 0x23, 0x1, 0x37, 0x13, 0x11, 0x33, 0x3, 0x1B, 0xF3, 0xFE, 0x5C, 0xB6, 0xEE, 0xF3, 0x4, 0x2A, 0x4B, 0xFD, 0xAB, 0x3, 0x90, 0x0, 0x1, 0x0, 0xB2, 0x0, 0x0, 0x4, 0x47, 0x5, 0xB0, 0x0, 0x9, 0x0, 0x0, 0x1, 0x11, 0x23, 0x11, 0x1, 0x21, 0x35, 0x21, 0x1, 0x11, 0x4, 0x47, 0xF3, 0xFE, 0xF9, 0xFE, 0x65, 0x1, 0x2D, 0x1, 0x75, 0x5, 0xB0, 0xFA, 0x50, 0x2, 0xF6, 0xFE, 0x44, 0xC7, 0x2, 0x74, 0x1, 0x3B, 0x0, 0x1, 0x0, 0x93, 0x0, 0x0, 0x3, 0x1B, 0x5, 0xB0, 0x0, 0x6, 0x0, 0x0, 0x21, 0x23, 0x11, 0x5, 0x27, 0x1, 0x33, 0x3, 0x1B, 0xF3, 0xFE, 0xEA, 0x7F, 0x1, 0x95, 0xF3, 0x4, 0xAE, 0xFF, 0x8D, 0x1, 0x74, 0x0, 0x1, 0x0, 0x93, 0x0, 0x0, 0x3, 0x1B, 0x5, 0xB0, 0x0, 0x7, 0x0, 0x0, 0x21, 0x23, 0x11, 0x1, 0x37, 0x5, 0x11, 0x33, 0x3, 0x1B, 0xF3, 0xFE, 0x6B, 0x7F, 0x1, 0x16, 0xF3, 0x2, 0x75, 0x1, 0x74, 0x8D, 0xFF, 0x2, 0x39, 0x0, 0x3, 0xFB, 0x8F, 0x4, 0x94, 0x0, 0x31, 0x6, 0x41, 0x0, 0xD, 0x0, 0x1B, 0x0, 0x30, 0x0, 0x0, 0x3, 0x27, 0x36, 0x36, 0x35, 0x34, 0x26, 0x27, 0x37, 0x16, 0x16, 0x15, 0x14, 0x6, 0x5, 0x26, 0x26, 0x35, 0x34, 0x36, 0x37, 0x17, 0x6, 0x6, 0x15, 0x14, 0x16, 0x17, 0x1, 0x17, 0x14, 0x6, 0x23, 0x22, 0x26, 0x26, 0x23, 0x22, 0x6, 0x15, 0x27, 0x34, 0x36, 0x33, 0x32, 0x16, 0x33, 0x32, 0x36, 0x8A, 0xE, 0x22, 0x40, 0x3F, 0x23, 0xE, 0x3A, 0x81, 0x81, 0xFC, 0x9A, 0x3A, 0x81, 0x81, 0x3A, 0xE, 0x23, 0x3F, 0x3F, 0x23, 0x2, 0x63, 0x95, 0x81, 0x5F, 0x40, 0x50, 0x48, 0x36, 0x26, 0x34, 0x95, 0x7F, 0x5F, 0x52, 0x6F, 0x4D, 0x26, 0x36, 0x4, 0x94, 0x4A, 0x11, 0x3E, 0x3F, 0x3C, 0x3E, 0x10, 0x4B, 0xF, 0x6B, 0x5B, 0x5C, 0x6C, 0x10, 0x10, 0x6C, 0x5C, 0x5A, 0x6C, 0xF, 0x4B, 0x10, 0x40, 0x3A, 0x3E, 0x3F, 0x11, 0x1, 0x17, 0xC, 0x6F, 0x91, 0x2C, 0x2D, 0x39, 0x2E, 0x8, 0x6E, 0x96, 0x59, 0x39, 0x0, 0x5, 0xFA, 0xC2, 0x4, 0x94, 0x0, 0xFE, 0x6, 0x41, 0x0, 0xD, 0x0, 0x1B, 0x0, 0x29, 0x0, 0x37, 0x0, 0x4C, 0x0, 0x0, 0x13, 0x27, 0x36, 0x36, 0x35, 0x34, 0x26, 0x27, 0x37, 0x16, 0x16, 0x15, 0x14, 0x6, 0x5, 0x27, 0x36, 0x36, 0x35, 0x34, 0x26, 0x27, 0x37, 0x16, 0x16, 0x15, 0x14, 0x6, 0x5, 0x26, 0x26, 0x35, 0x34, 0x36, 0x37, 0x17, 0x6, 0x6, 0x15, 0x14, 0x16, 0x17, 0x7, 0x26, 0x26, 0x35, 0x34, 0x36, 0x37, 0x17, 0x6, 0x6, 0x15, 0x14, 0x16, 0x17, 0x1, 0x17, 0x14, 0x6, 0x23, 0x22, 0x26, 0x26, 0x23, 0x22, 0x6, 0x15, 0x27, 0x34, 0x36, 0x33, 0x32, 0x16, 0x33, 0x32, 0x36, 0x44, 0xE, 0x22, 0x3F, 0x3E, 0x23, 0xE, 0x39, 0x81, 0x81, 0xFE, 0xFF, 0xE, 0x22, 0x3F, 0x3E, 0x23, 0xE, 0x39, 0x81, 0x81, 0xFC, 0x8F, 0x39, 0x81, 0x81, 0x39, 0xE, 0x23, 0x3E, 0x3F, 0x22, 0xD6, 0x39, 0x81, 0x81, 0x39, 0xE, 0x23, 0x3E, 0x3F, 0x22, 0x3, 0x31, 0x95, 0x81, 0x5F, 0x40, 0x50, 0x48, 0x36, 0x26, 0x34, 0x95, 0x7F, 0x5F, 0x52, 0x6F, 0x4D, 0x26, 0x36, 0x4, 0x94, 0x4A, 0x11, 0x3E, 0x3F, 0x3C, 0x3E, 0x10, 0x4B, 0xF, 0x6B, 0x5B, 0x5C, 0x6C, 0x10, 0x4A, 0x11, 0x3E, 0x3F, 0x3C, 0x3E, 0x10, 0x4B, 0xF, 0x6B, 0x5B, 0x5C, 0x6C, 0x10, 0x10, 0x6C, 0x5C, 0x5A, 0x6C, 0xF, 0x4B, 0x10, 0x40, 0x3A, 0x3E, 0x3F, 0x11, 0x4A, 0x10, 0x6C, 0x5C, 0x5A, 0x6C, 0xF, 0x4B, 0x10, 0x40, 0x3A, 0x3E, 0x3F, 0x11, 0x1, 0x17, 0xC, 0x6F, 0x91, 0x2C, 0x2D, 0x39, 0x2E, 0x8, 0x6E, 0x96, 0x59, 0x39, 0x0, 0x3, 0xFB, 0x5E, 0x4, 0x94, 0x0, 0xC, 0x6, 0x41, 0x0, 0xD, 0x0, 0x1B, 0x0, 0x1F, 0x0, 0x0, 0x3, 0x27, 0x36, 0x36, 0x35, 0x34, 0x26, 0x27, 0x37, 0x16, 0x16, 0x15, 0x14, 0x6, 0x5, 0x26, 0x26, 0x35, 0x34, 0x36, 0x37, 0x17, 0x6, 0x6, 0x15, 0x14, 0x16, 0x17, 0x25, 0x15, 0x21, 0x35, 0xAF, 0xE, 0x22, 0x40, 0x3F, 0x23, 0xE, 0x3A, 0x81, 0x81, 0xFC, 0x8E, 0x3A, 0x81, 0x81, 0x3A, 0xE, 0x23, 0x3F, 0x3F, 0x23, 0x2, 0xE8, 0xFD, 0x51, 0x4, 0x94, 0x4A, 0x11, 0x3E, 0x3F, 0x3C, 0x3E, 0x10, 0x4B, 0xF, 0x6B, 0x5B, 0x5C, 0x6C, 0x10, 0x10, 0x6C, 0x5C, 0x5A, 0x6C, 0xF, 0x4B, 0x10, 0x40, 0x3A, 0x3E, 0x3F, 0x11, 0xD3, 0x9E, 0x9E, 0x0, 0x4, 0xFB, 0x1B, 0x4, 0x94, 0xFF, 0xB4, 0x6, 0x41, 0x0, 0xD, 0x0, 0x1B, 0x0, 0x27, 0x0, 0x33, 0x0, 0x0, 0x1, 0x27, 0x36, 0x36, 0x35, 0x34, 0x26, 0x27, 0x37, 0x16, 0x16, 0x15, 0x14, 0x6, 0x5, 0x26, 0x26, 0x35, 0x34, 0x36, 0x37, 0x17, 0x6, 0x6, 0x15, 0x14, 0x16, 0x17, 0x37, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x6, 0x23, 0x22, 0x26, 0x25, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x6, 0x23, 0x22, 0x26, 0xFE, 0xF9, 0xE, 0x22, 0x40, 0x3F, 0x23, 0xE, 0x3A, 0x81, 0x81, 0xFC, 0xA3, 0x3A, 0x81, 0x81, 0x3A, 0xE, 0x23, 0x3F, 0x3F, 0x23, 0x20, 0x43, 0x3B, 0x3A, 0x45, 0x45, 0x3A, 0x3B, 0x43, 0x1, 0xC9, 0x43, 0x3B, 0x3A, 0x45, 0x45, 0x3A, 0x3B, 0x43, 0x4, 0x94, 0x4A, 0x11, 0x3E, 0x3F, 0x3C, 0x3E, 0x10, 0x4B, 0xF, 0x6B, 0x5B, 0x5C, 0x6C, 0x10, 0x10, 0x6C, 0x5C, 0x5A, 0x6C, 0xF, 0x4B, 0x10, 0x40, 0x3A, 0x3E, 0x3F, 0x11, 0x78, 0x32, 0x45, 0x45, 0x32, 0x31, 0x44, 0x44, 0x30, 0x32, 0x45, 0x45, 0x32, 0x31, 0x44, 0x44, 0x0, 0x3, 0xFB, 0x6A, 0x4, 0x94, 0x0, 0xD, 0x6, 0x41, 0x0, 0xD, 0x0, 0x1B, 0x0, 0x24, 0x0, 0x0, 0x3, 0x27, 0x36, 0x36, 0x35, 0x34, 0x26, 0x27, 0x37, 0x16, 0x16, 0x15, 0x14, 0x6, 0x5, 0x26, 0x26, 0x35, 0x34, 0x36, 0x37, 0x17, 0x6, 0x6, 0x15, 0x14, 0x16, 0x17, 0x13, 0x17, 0x37, 0x33, 0x15, 0x5, 0x23, 0x25, 0x35, 0xAE, 0xE, 0x22, 0x40, 0x3F, 0x23, 0xE, 0x3A, 0x81, 0x81, 0xFC, 0x98, 0x39, 0x81, 0x81, 0x39, 0xE, 0x23, 0x3E, 0x3F, 0x22, 0xFB, 0x8C, 0x8B, 0xD0, 0xFE, 0xF3, 0x9D, 0xFE, 0xF6, 0x4, 0x94, 0x4A, 0x11, 0x3E, 0x3F, 0x3C, 0x3E, 0x10, 0x4B, 0xF, 0x6B, 0x5B, 0x5C, 0x6C, 0x10, 0x10, 0x6C, 0x5C, 0x5A, 0x6C, 0xF, 0x4B, 0x10, 0x40, 0x3A, 0x3E, 0x3F, 0x11, 0x1, 0x14, 0x8F, 0x8F, 0x12, 0xFC, 0xFB, 0x13, 0x0, 0x3, 0xFB, 0xD6, 0xFD, 0xF2, 0xFF, 0xD5, 0xFF, 0xBA, 0x0, 0xB, 0x0, 0x19, 0x0, 0x27, 0x0, 0x0, 0x5, 0x33, 0x11, 0x14, 0x33, 0x37, 0x15, 0x6, 0x23, 0x22, 0x26, 0x35, 0x5, 0x27, 0x36, 0x36, 0x35, 0x34, 0x26, 0x27, 0x37, 0x16, 0x16, 0x15, 0x14, 0x6, 0x5, 0x26, 0x26, 0x35, 0x34, 0x36, 0x37, 0x17, 0x6, 0x6, 0x15, 0x14, 0x16, 0x17, 0xFD, 0x60, 0xA4, 0x33, 0x2B, 0x22, 0x30, 0x4D, 0x63, 0x1, 0xBA, 0xE, 0x22, 0x40, 0x3F, 0x23, 0xE, 0x3A, 0x81, 0x81, 0xFD, 0x3D, 0x3A, 0x81, 0x81, 0x3A, 0xE, 0x23, 0x3F, 0x3F, 0x23, 0x46, 0xFE, 0xF6, 0x48, 0x4, 0x6E, 0xC, 0x57, 0x63, 0xB5, 0x49, 0x11, 0x3F, 0x3F, 0x3B, 0x3D, 0x11, 0x4C, 0xF, 0x6B, 0x5B, 0x5C, 0x6D, 0xF, 0xF, 0x6D, 0x5C, 0x59, 0x6D, 0xF, 0x4C, 0x11, 0x3F, 0x39, 0x3F, 0x3F, 0x11, 0x0, 0x4, 0xFB, 0xE, 0xFE, 0x30, 0xFF, 0xC3, 0xFF, 0xDD, 0x0, 0xD, 0x0, 0x1B, 0x0, 0x23, 0x0, 0x2B, 0x0, 0x0, 0x3, 0x27, 0x36, 0x36, 0x35, 0x34, 0x26, 0x27, 0x37, 0x16, 0x16, 0x15, 0x14, 0x6, 0x5, 0x26, 0x26, 0x35, 0x34, 0x36, 0x37, 0x17, 0x6, 0x6, 0x15, 0x14, 0x16, 0x17, 0x36, 0x36, 0x32, 0x16, 0x14, 0x6, 0x22, 0x26, 0x24, 0x36, 0x32, 0x16, 0x14, 0x6, 0x22, 0x26, 0xF8, 0xE, 0x22, 0x40, 0x3F, 0x23, 0xE, 0x3A, 0x81, 0x81, 0xFC, 0x87, 0x3A, 0x81, 0x81, 0x3A, 0xE, 0x23, 0x3F, 0x3F, 0x23, 0x2C, 0x43, 0x76, 0x44, 0x44, 0x76, 0x43, 0x1, 0xC9, 0x43, 0x76, 0x44, 0x44, 0x76, 0x43, 0xFE, 0x30, 0x49, 0x11, 0x3F, 0x3F, 0x3B, 0x3D, 0x11, 0x4C, 0xF, 0x6B, 0x5B, 0x5C, 0x6D, 0xF, 0xF, 0x6D, 0x5C, 0x59, 0x6D, 0xF, 0x4C, 0x11, 0x3F, 0x39, 0x3F, 0x3F, 0x11, 0xC7, 0x45, 0x45, 0x64, 0x43, 0x43, 0x63, 0x45, 0x45, 0x64, 0x43, 0x43, 0x0, 0x3, 0xFB, 0x9A, 0xFE, 0x29, 0xFF, 0xC9, 0xFF, 0xD6, 0x0, 0xD, 0x0, 0x1B, 0x0, 0x23, 0x0, 0x0, 0x3, 0x27, 0x36, 0x36, 0x35, 0x34, 0x26, 0x27, 0x37, 0x16, 0x16, 0x15, 0x14, 0x6, 0x5, 0x26, 0x26, 0x35, 0x34, 0x36, 0x37, 0x17, 0x6, 0x6, 0x15, 0x14, 0x16, 0x17, 0x36, 0x36, 0x32, 0x16, 0x14, 0x6, 0x22, 0x26, 0xF2, 0xE, 0x22, 0x40, 0x3F, 0x23, 0xE, 0x3A, 0x81, 0x81, 0xFD, 0xC, 0x39, 0x81, 0x81, 0x39, 0xE, 0x23, 0x3E, 0x3F, 0x22, 0xB9, 0x49, 0x82, 0x49, 0x49, 0x82, 0x49, 0xFE, 0x29, 0x49, 0x11, 0x3F, 0x3F, 0x3B, 0x3D, 0x11, 0x4C, 0xF, 0x6B, 0x5B, 0x5C, 0x6D, 0xF, 0xF, 0x6D, 0x5C, 0x59, 0x6D, 0xF, 0x4C, 0x11, 0x3F, 0x39, 0x3F, 0x3F, 0x11, 0xD0, 0x49, 0x49, 0x68, 0x47, 0x47, 0x0, 0x4, 0xFB, 0xA0, 0xFE, 0x22, 0xFF, 0xD3, 0xFF, 0xCF, 0x0, 0xD, 0x0, 0x1B, 0x0, 0x25, 0x0, 0x2F, 0x0, 0x0, 0x3, 0x27, 0x36, 0x36, 0x35, 0x34, 0x26, 0x27, 0x37, 0x16, 0x16, 0x15, 0x14, 0x6, 0x5, 0x26, 0x26, 0x35, 0x34, 0x36, 0x37, 0x17, 0x6, 0x6, 0x15, 0x14, 0x16, 0x17, 0x36, 0x36, 0x33, 0x32, 0x16, 0x14, 0x6, 0x23, 0x22, 0x26, 0x37, 0x14, 0x16, 0x32, 0x36, 0x35, 0x34, 0x26, 0x22, 0x6, 0xE8, 0xE, 0x22, 0x40, 0x3F, 0x23, 0xE, 0x3A, 0x81, 0x81, 0xFD, 0x9, 0x3A, 0x81, 0x81, 0x3A, 0xE, 0x23, 0x3F, 0x3F, 0x23, 0x74, 0x7E, 0x5F, 0x5E, 0x80, 0x80, 0x5E, 0x5F, 0x7E, 0x6D, 0x3E, 0x64, 0x3E, 0x3E, 0x64, 0x3E, 0xFE, 0x22, 0x49, 0x11, 0x3F, 0x3F, 0x3B, 0x3D, 0x11, 0x4C, 0xF, 0x6B, 0x5B, 0x5C, 0x6D, 0xF, 0xF, 0x6D, 0x5C, 0x59, 0x6D, 0xF, 0x4C, 0x11, 0x3F, 0x39, 0x3F, 0x3F, 0x11, 0xDD, 0x7A, 0x7A, 0xAC, 0x76, 0x76, 0x56, 0x2C, 0x43, 0x43, 0x2C, 0x2E, 0x44, 0x44, 0x0, 0x3, 0xFB, 0xA6, 0xFE, 0xE, 0xFF, 0xD9, 0xFF, 0xC2, 0x0, 0xD, 0x0, 0x1B, 0x0, 0x1F, 0x0, 0x0, 0x3, 0x27, 0x36, 0x36, 0x35, 0x34, 0x26, 0x27, 0x37, 0x16, 0x16, 0x15, 0x14, 0x6, 0x5, 0x26, 0x26, 0x35, 0x34, 0x36, 0x37, 0x17, 0x6, 0x6, 0x15, 0x14, 0x16, 0x17, 0x1, 0x11, 0x23, 0x11, 0xE1, 0xE, 0x22, 0x3F, 0x3E, 0x23, 0xE, 0x39, 0x81, 0x81, 0xFD, 0x9, 0x3A, 0x81, 0x81, 0x3A, 0xE, 0x23, 0x3F, 0x40, 0x22, 0x1, 0x9C, 0xA7, 0xFE, 0x15, 0x49, 0x11, 0x3F, 0x3F, 0x3B, 0x3D, 0x11, 0x4C, 0xF, 0x6B, 0x5B, 0x5C, 0x6D, 0xF, 0xF, 0x6D, 0x5C, 0x59, 0x6D, 0xF, 0x4C, 0x11, 0x3F, 0x39, 0x3F, 0x3F, 0x11, 0x1, 0x55, 0xFE, 0x5B, 0x1, 0xA5, 0x0, 0x3, 0xFB, 0x78, 0xFE, 0x1B, 0x0, 0x0, 0xFF, 0xC8, 0x0, 0xD, 0x0, 0x1B, 0x0, 0x28, 0x0, 0x0, 0x3, 0x27, 0x36, 0x36, 0x35, 0x34, 0x26, 0x27, 0x37, 0x16, 0x16, 0x15, 0x14, 0x6, 0x5, 0x26, 0x26, 0x35, 0x34, 0x36, 0x37, 0x17, 0x6, 0x6, 0x15, 0x14, 0x16, 0x17, 0x25, 0x23, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x23, 0x34, 0x36, 0x20, 0x16, 0xBB, 0xE, 0x22, 0x40, 0x3F, 0x23, 0xE, 0x3A, 0x81, 0x81, 0xFC, 0xB3, 0x39, 0x81, 0x81, 0x39, 0xE, 0x23, 0x3E, 0x3F, 0x22, 0x2, 0xBB, 0xB7, 0x40, 0x4C, 0x4D, 0x40, 0xB6, 0xAE, 0x1, 0x2A, 0xAE, 0xFE, 0x1B, 0x4A, 0x11, 0x3E, 0x3F, 0x3C, 0x3D, 0x11, 0x4B, 0xF, 0x6B, 0x5B, 0x5C, 0x6D, 0xF, 0xF, 0x6D, 0x5C, 0x5A, 0x6C, 0xF, 0x4B, 0x11, 0x3F, 0x3A, 0x3E, 0x3F, 0x11, 0x1E, 0x37, 0x53, 0x53, 0x37, 0x7C, 0x9E, 0x9E, 0x0, 0x3, 0xFB, 0x50, 0xFE, 0x15, 0x0, 0x20, 0xFF, 0xC2, 0x0, 0xD, 0x0, 0x1B, 0x0, 0x30, 0x0, 0x0, 0x3, 0x27, 0x36, 0x36, 0x35, 0x34, 0x26, 0x27, 0x37, 0x16, 0x16, 0x15, 0x14, 0x6, 0x5, 0x26, 0x26, 0x35, 0x34, 0x36, 0x37, 0x17, 0x6, 0x6, 0x15, 0x14, 0x16, 0x17, 0x1, 0x17, 0x14, 0x6, 0x23, 0x22, 0x26, 0x26, 0x23, 0x22, 0x6, 0x15, 0x27, 0x34, 0x36, 0x33, 0x32, 0x16, 0x33, 0x32, 0x36, 0x9A, 0xE, 0x22, 0x3F, 0x3E, 0x23, 0xE, 0x39, 0x81, 0x81, 0xFC, 0x6C, 0x3A, 0x81, 0x81, 0x3A, 0xE, 0x23, 0x3F, 0x40, 0x22, 0x2, 0x73, 0x94, 0x80, 0x5F, 0x41, 0x50, 0x47, 0x36, 0x26, 0x35, 0x95, 0x7F, 0x60, 0x52, 0x6F, 0x4D, 0x26, 0x36, 0xFE, 0x15, 0x49, 0x11, 0x3F, 0x3F, 0x3B, 0x3D, 0x11, 0x4C, 0xF, 0x6B, 0x5B, 0x5C, 0x6D, 0xF, 0xF, 0x6D, 0x5C, 0x59, 0x6D, 0xF, 0x4C, 0x11, 0x3F, 0x39, 0x3F, 0x3F, 0x11, 0x1, 0x35, 0xC, 0x6F, 0x91, 0x2C, 0x2D, 0x39, 0x2E, 0x8, 0x6E, 0x96, 0x59, 0x39, 0x0, 0x3, 0xFC, 0x2C, 0xFE, 0x18, 0x0, 0x4D, 0x0, 0x96, 0x0, 0x3, 0x0, 0x11, 0x0, 0x1F, 0x0, 0x0, 0x27, 0x1, 0x27, 0x1, 0x13, 0x27, 0x36, 0x36, 0x35, 0x34, 0x26, 0x27, 0x37, 0x16, 0x16, 0x15, 0x14, 0x6, 0x5, 0x26, 0x26, 0x35, 0x34, 0x36, 0x37, 0x17, 0x6, 0x6, 0x15, 0x14, 0x16, 0x17, 0xC8, 0xFE, 0xA1, 0x7E, 0x1, 0x64, 0xD3, 0xD, 0x22, 0x3F, 0x3F, 0x22, 0xD, 0x3A, 0x81, 0x81, 0xFD, 0x1B, 0x3A, 0x81, 0x81, 0x3A, 0xD, 0x23, 0x3E, 0x3F, 0x22, 0x4B, 0xFD, 0xCD, 0x49, 0x2, 0x35, 0xFD, 0x9D, 0x4A, 0x11, 0x3E, 0x3F, 0x3C, 0x3D, 0x11, 0x4B, 0xF, 0x6B, 0x5B, 0x5C, 0x6D, 0xF, 0xF, 0x6D, 0x5C, 0x5A, 0x6C, 0xF, 0x4B, 0x11, 0x3F, 0x3A, 0x3E, 0x3F, 0x11, 0x0, 0x3, 0xFC, 0x19, 0xFE, 0x10, 0x0, 0x3E, 0x0, 0x96, 0x0, 0xD, 0x0, 0x1B, 0x0, 0x29, 0x0, 0x0, 0x1, 0x22, 0x26, 0x35, 0x34, 0x36, 0x37, 0x13, 0x17, 0x3, 0x16, 0x15, 0x14, 0x6, 0x25, 0x27, 0x36, 0x36, 0x35, 0x34, 0x26, 0x27, 0x37, 0x16, 0x16, 0x15, 0x14, 0x6, 0x5, 0x26, 0x26, 0x35, 0x34, 0x36, 0x37, 0x17, 0x6, 0x6, 0x15, 0x14, 0x16, 0x17, 0xFD, 0xD2, 0x33, 0x48, 0x43, 0x31, 0xFC, 0x78, 0xFA, 0x9, 0x48, 0x1, 0x7D, 0xE, 0x22, 0x40, 0x3F, 0x23, 0xE, 0x3A, 0x81, 0x81, 0xFD, 0x16, 0x39, 0x81, 0x81, 0x39, 0xE, 0x23, 0x3E, 0x3F, 0x22, 0xFE, 0x10, 0x48, 0x33, 0x32, 0x47, 0x3, 0x1, 0x8F, 0x4B, 0xFE, 0x70, 0x17, 0x19, 0x33, 0x48, 0x2C, 0x4A, 0x11, 0x3E, 0x3F, 0x3C, 0x3D, 0x11, 0x4B, 0xF, 0x6B, 0x5B, 0x5C, 0x6D, 0xF, 0xF, 0x6D, 0x5C, 0x5A, 0x6C, 0xF, 0x4B, 0x11, 0x3F, 0x3A, 0x3E, 0x3F, 0x11, 0x0, 0x4, 0xFB, 0x6D, 0xFD, 0xF2, 0xFF, 0xF0, 0xFF, 0xBA, 0x0, 0xB, 0x0, 0x17, 0x0, 0x25, 0x0, 0x33, 0x0, 0x0, 0x5, 0x33, 0x11, 0x14, 0x33, 0x37, 0x15, 0x6, 0x23, 0x22, 0x26, 0x35, 0x1, 0x33, 0x11, 0x14, 0x33, 0x37, 0x15, 0x6, 0x23, 0x22, 0x26, 0x35, 0x5, 0x27, 0x36, 0x36, 0x35, 0x34, 0x26, 0x27, 0x37, 0x16, 0x16, 0x15, 0x14, 0x6, 0x5, 0x26, 0x26, 0x35, 0x34, 0x36, 0x37, 0x17, 0x6, 0x6, 0x15, 0x14, 0x16, 0x17, 0xFD, 0xDD, 0xA4, 0x33, 0x2B, 0x22, 0x30, 0x4D, 0x63, 0xFE, 0xAC, 0xA3, 0x34, 0x2B, 0x24, 0x2E, 0x4D, 0x63, 0x2, 0xAC, 0xE, 0x22, 0x40, 0x3F, 0x23, 0xE, 0x3A, 0x81, 0x81, 0xFC, 0xB8, 0x39, 0x81, 0x81, 0x39, 0xE, 0x23, 0x3E, 0x3F, 0x22, 0x46, 0xFE, 0xF6, 0x48, 0x4, 0x6E, 0xC, 0x57, 0x63, 0x1, 0xE, 0xFE, 0xF6, 0x48, 0x4, 0x6E, 0xC, 0x57, 0x63, 0xB4, 0x49, 0x11, 0x3F, 0x3F, 0x3B, 0x3D, 0x11, 0x4C, 0xF, 0x6B, 0x5B, 0x5C, 0x6D, 0xF, 0xF, 0x6D, 0x5C, 0x59, 0x6D, 0xF, 0x4C, 0x11, 0x3E, 0x3A, 0x3F, 0x3F, 0x11, 0x0, 0x2, 0x0, 0x63, 0xFF, 0xEB, 0x4, 0x86, 0x4, 0xA0, 0x0, 0xD, 0x0, 0x1B, 0x0, 0x0, 0x1, 0x10, 0x0, 0x23, 0x22, 0x0, 0x3, 0x35, 0x10, 0x0, 0x33, 0x32, 0x0, 0x13, 0x27, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x15, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x4, 0x86, 0xFE, 0xD3, 0xE3, 0xE1, 0xFE, 0xD0, 0x2, 0x1, 0x2F, 0xE2, 0xE1, 0x1, 0x2E, 0x3, 0xF3, 0xA2, 0x7D, 0x7C, 0xA3, 0xA5, 0x7C, 0x7D, 0xA0, 0x2, 0x3E, 0xFE, 0xD8, 0xFE, 0xD5, 0x1, 0x28, 0x1, 0x23, 0x17, 0x1, 0x29, 0x1, 0x2A, 0xFE, 0xDB, 0xFE, 0xDE, 0x5, 0xC4, 0xBB, 0xBB, 0xC4, 0x2F, 0xC4, 0xBD, 0xBD, 0xC4, 0x0, 0x2, 0xFC, 0x11, 0x0, 0x0, 0x0, 0x0, 0x1, 0xAD, 0x0, 0xD, 0x0, 0x1B, 0x0, 0x0, 0x23, 0x27, 0x36, 0x36, 0x35, 0x34, 0x26, 0x27, 0x37, 0x16, 0x16, 0x15, 0x14, 0x6, 0x5, 0x26, 0x26, 0x35, 0x34, 0x36, 0x37, 0x17, 0x6, 0x6, 0x15, 0x14, 0x16, 0x17, 0xBB, 0xE, 0x22, 0x40, 0x3F, 0x23, 0xE, 0x3A, 0x81, 0x81, 0xFD, 0x4D, 0x39, 0x82, 0x82, 0x39, 0xE, 0x23, 0x3E, 0x3F, 0x22, 0x4A, 0x11, 0x3E, 0x3F, 0x3C, 0x3E, 0x10, 0x4B, 0xF, 0x6B, 0x5B, 0x5C, 0x6D, 0xF, 0xF, 0x6D, 0x5C, 0x5A, 0x6C, 0xF, 0x4B, 0x10, 0x40, 0x3A, 0x3E, 0x3F, 0x11, 0x0, 0x2, 0xFB, 0x5E, 0x0, 0x0, 0x0, 0x0, 0x1, 0xAD, 0x0, 0xD, 0x0, 0x1B, 0x0, 0x0, 0x23, 0x27, 0x36, 0x36, 0x35, 0x34, 0x26, 0x27, 0x37, 0x16, 0x16, 0x15, 0x14, 0x6, 0x5, 0x26, 0x26, 0x35, 0x34, 0x36, 0x37, 0x17, 0x6, 0x6, 0x15, 0x14, 0x16, 0x17, 0xBB, 0xE, 0x22, 0x40, 0x3F, 0x23, 0xE, 0x3A, 0x81, 0x81, 0xFC, 0x9A, 0x39, 0x82, 0x82, 0x39, 0xE, 0x23, 0x3E, 0x3F, 0x22, 0x4A, 0x11, 0x3E, 0x3F, 0x3C, 0x3E, 0x10, 0x4B, 0xF, 0x6B, 0x5B, 0x5C, 0x6D, 0xF, 0xF, 0x6D, 0x5C, 0x5A, 0x6C, 0xF, 0x4B, 0x10, 0x40, 0x3A, 0x3E, 0x3F, 0x11, 0x0, 0x2, 0xFA, 0x4E, 0x0, 0x0, 0x0, 0x0, 0x1, 0xAD, 0x0, 0xD, 0x0, 0x1B, 0x0, 0x0, 0x23, 0x27, 0x36, 0x36, 0x35, 0x34, 0x26, 0x27, 0x37, 0x16, 0x16, 0x15, 0x14, 0x6, 0x5, 0x26, 0x26, 0x35, 0x34, 0x36, 0x37, 0x17, 0x6, 0x6, 0x15, 0x14, 0x16, 0x17, 0xBB, 0xE, 0x22, 0x40, 0x3F, 0x23, 0xE, 0x3A, 0x81, 0x81, 0xFB, 0x8A, 0x39, 0x82, 0x82, 0x39, 0xE, 0x23, 0x3E, 0x3F, 0x22, 0x4A, 0x11, 0x3E, 0x3F, 0x3C, 0x3E, 0x10, 0x4B, 0xF, 0x6B, 0x5B, 0x5C, 0x6D, 0xF, 0xF, 0x6D, 0x5C, 0x5A, 0x6C, 0xF, 0x4B, 0x10, 0x40, 0x3A, 0x3E, 0x3F, 0x11, 0x0, 0x4, 0xFA, 0x81, 0x0, 0x0, 0x0, 0x0, 0x1, 0xAD, 0x0, 0xD, 0x0, 0x1B, 0x0, 0x29, 0x0, 0x37, 0x0, 0x0, 0x23, 0x27, 0x36, 0x36, 0x35, 0x34, 0x26, 0x27, 0x37, 0x16, 0x16, 0x15, 0x14, 0x6, 0x5, 0x26, 0x26, 0x35, 0x34, 0x36, 0x37, 0x17, 0x6, 0x6, 0x15, 0x14, 0x16, 0x17, 0x5, 0x27, 0x36, 0x36, 0x35, 0x34, 0x26, 0x27, 0x37, 0x16, 0x16, 0x15, 0x14, 0x6, 0x5, 0x26, 0x26, 0x35, 0x34, 0x36, 0x37, 0x17, 0x6, 0x6, 0x15, 0x14, 0x16, 0x17, 0xBB, 0xE, 0x22, 0x40, 0x3F, 0x23, 0xE, 0x3A, 0x81, 0x81, 0xFB, 0xBD, 0x39, 0x82, 0x82, 0x39, 0xE, 0x23, 0x3E, 0x3F, 0x22, 0x3, 0x33, 0xE, 0x22, 0x40, 0x3F, 0x23, 0xE, 0x3A, 0x81, 0x81, 0xFD, 0x4D, 0x39, 0x82, 0x82, 0x39, 0xE, 0x23, 0x3E, 0x3F, 0x22, 0x4A, 0x11, 0x3E, 0x3F, 0x3C, 0x3E, 0x10, 0x4B, 0xF, 0x6B, 0x5B, 0x5C, 0x6D, 0xF, 0xF, 0x6D, 0x5C, 0x5A, 0x6C, 0xF, 0x4B, 0x10, 0x40, 0x3A, 0x3E, 0x3F, 0x11, 0x4A, 0x4A, 0x11, 0x3E, 0x3F, 0x3C, 0x3E, 0x10, 0x4B, 0xF, 0x6B, 0x5B, 0x5C, 0x6D, 0xF, 0xF, 0x6D, 0x5C, 0x5A, 0x6C, 0xF, 0x4B, 0x10, 0x40, 0x3A, 0x3E, 0x3F, 0x11, 0x0, 0x4, 0xF9, 0xCE, 0x0, 0x0, 0x0, 0x0, 0x1, 0xAD, 0x0, 0xD, 0x0, 0x1B, 0x0, 0x29, 0x0, 0x37, 0x0, 0x0, 0x23, 0x27, 0x36, 0x36, 0x35, 0x34, 0x26, 0x27, 0x37, 0x16, 0x16, 0x15, 0x14, 0x6, 0x5, 0x26, 0x26, 0x35, 0x34, 0x36, 0x37, 0x17, 0x6, 0x6, 0x15, 0x14, 0x16, 0x17, 0x5, 0x27, 0x36, 0x36, 0x35, 0x34, 0x26, 0x27, 0x37, 0x16, 0x16, 0x15, 0x14, 0x6, 0x5, 0x26, 0x26, 0x35, 0x34, 0x36, 0x37, 0x17, 0x6, 0x6, 0x15, 0x14, 0x16, 0x17, 0xBB, 0xE, 0x22, 0x40, 0x3F, 0x23, 0xE, 0x3A, 0x81, 0x81, 0xFB, 0xA, 0x39, 0x82, 0x82, 0x39, 0xE, 0x23, 0x3E, 0x3F, 0x22, 0x3, 0xE6, 0xE, 0x22, 0x40, 0x3F, 0x23, 0xE, 0x3A, 0x81, 0x81, 0xFC, 0x9A, 0x39, 0x82, 0x82, 0x39, 0xE, 0x23, 0x3E, 0x3F, 0x22, 0x4A, 0x11, 0x3E, 0x3F, 0x3C, 0x3E, 0x10, 0x4B, 0xF, 0x6B, 0x5B, 0x5C, 0x6D, 0xF, 0xF, 0x6D, 0x5C, 0x5A, 0x6C, 0xF, 0x4B, 0x10, 0x40, 0x3A, 0x3E, 0x3F, 0x11, 0x4A, 0x4A, 0x11, 0x3E, 0x3F, 0x3C, 0x3E, 0x10, 0x4B, 0xF, 0x6B, 0x5B, 0x5C, 0x6D, 0xF, 0xF, 0x6D, 0x5C, 0x5A, 0x6C, 0xF, 0x4B, 0x10, 0x40, 0x3A, 0x3E, 0x3F, 0x11, 0x0, 0x4, 0xF8, 0xBE, 0x0, 0x0, 0x0, 0x0, 0x1, 0xAD, 0x0, 0xD, 0x0, 0x1B, 0x0, 0x29, 0x0, 0x37, 0x0, 0x0, 0x23, 0x27, 0x36, 0x36, 0x35, 0x34, 0x26, 0x27, 0x37, 0x16, 0x16, 0x15, 0x14, 0x6, 0x5, 0x26, 0x26, 0x35, 0x34, 0x36, 0x37, 0x17, 0x6, 0x6, 0x15, 0x14, 0x16, 0x17, 0x5, 0x27, 0x36, 0x36, 0x35, 0x34, 0x26, 0x27, 0x37, 0x16, 0x16, 0x15, 0x14, 0x6, 0x5, 0x26, 0x26, 0x35, 0x34, 0x36, 0x37, 0x17, 0x6, 0x6, 0x15, 0x14, 0x16, 0x17, 0xBB, 0xE, 0x22, 0x40, 0x3F, 0x23, 0xE, 0x3A, 0x81, 0x81, 0xF9, 0xFA, 0x39, 0x82, 0x82, 0x39, 0xE, 0x23, 0x3E, 0x3F, 0x22, 0x4, 0xF6, 0xE, 0x22, 0x40, 0x3F, 0x23, 0xE, 0x3A, 0x81, 0x81, 0xFB, 0x8A, 0x39, 0x82, 0x82, 0x39, 0xE, 0x23, 0x3E, 0x3F, 0x22, 0x4A, 0x11, 0x3E, 0x3F, 0x3C, 0x3E, 0x10, 0x4B, 0xF, 0x6B, 0x5B, 0x5C, 0x6D, 0xF, 0xF, 0x6D, 0x5C, 0x5A, 0x6C, 0xF, 0x4B, 0x10, 0x40, 0x3A, 0x3E, 0x3F, 0x11, 0x4A, 0x4A, 0x11, 0x3E, 0x3F, 0x3C, 0x3E, 0x10, 0x4B, 0xF, 0x6B, 0x5B, 0x5C, 0x6D, 0xF, 0xF, 0x6D, 0x5C, 0x5A, 0x6C, 0xF, 0x4B, 0x10, 0x40, 0x3A, 0x3E, 0x3F, 0x11, 0x0, 0x1, 0x0, 0x3A, 0x0, 0x0, 0x3, 0xEB, 0x5, 0xB0, 0x0, 0x6, 0x0, 0x0, 0x1, 0x15, 0x1, 0x23, 0x1, 0x21, 0x35, 0x3, 0xEB, 0xFD, 0xD3, 0xF3, 0x2, 0x2C, 0xFD, 0x43, 0x5, 0xB0, 0x86, 0xFA, 0xD6, 0x4, 0xED, 0xC3, 0x0, 0x2, 0x0, 0x7D, 0xFF, 0xEC, 0x4, 0x46, 0x6, 0x0, 0x0, 0xF, 0x0, 0x1B, 0x0, 0x0, 0x5, 0x22, 0x27, 0x7, 0x23, 0x11, 0x33, 0x11, 0x36, 0x33, 0x32, 0x12, 0x17, 0x15, 0x14, 0x2, 0x25, 0x32, 0x36, 0x35, 0x35, 0x34, 0x26, 0x23, 0x22, 0x7, 0x11, 0x16, 0x2, 0x8D, 0xC0, 0x6D, 0x11, 0xD2, 0xF2, 0x6A, 0xB2, 0xCF, 0xEA, 0x2, 0xEB, 0xFE, 0xF4, 0x87, 0x7E, 0x7F, 0x88, 0x9A, 0x44, 0x47, 0x14, 0x8F, 0x7B, 0x6, 0x0, 0xFD, 0xD2, 0x7C, 0xFE, 0xD5, 0xF4, 0x1D, 0xEC, 0xFE, 0xC6, 0xC7, 0xCE, 0x91, 0x15, 0x96, 0xCB, 0x87, 0xFE, 0x3B, 0x89, 0x0, 0x1, 0x0, 0x51, 0xFF, 0xEC, 0x4, 0x1, 0x4, 0x4E, 0x0, 0x1B, 0x0, 0x0, 0x25, 0x32, 0x36, 0x37, 0x33, 0x6, 0x4, 0x23, 0x22, 0x2, 0x35, 0x35, 0x34, 0x12, 0x33, 0x32, 0x16, 0x17, 0x23, 0x26, 0x26, 0x23, 0x22, 0x6, 0x15, 0x15, 0x14, 0x16, 0x2, 0x42, 0x59, 0x7C, 0x5, 0xE5, 0x7, 0xFE, 0xFF, 0xB5, 0xFA, 0xF9, 0xFA, 0xF9, 0xC5, 0xF1, 0x7, 0xE5, 0x5, 0x73, 0x63, 0x94, 0x69, 0x68, 0xAF, 0x68, 0x4F, 0x9D, 0xDD, 0x1, 0x40, 0xDF, 0x24, 0xDE, 0x1, 0x41, 0xE4, 0xB3, 0x57, 0x7D, 0xDB, 0x81, 0x24, 0x83, 0xD9, 0x0, 0x2, 0x0, 0x50, 0xFF, 0xEC, 0x4, 0x17, 0x6, 0x0, 0x0, 0xB, 0x0, 0x1B, 0x0, 0x0, 0x25, 0x32, 0x37, 0x11, 0x26, 0x23, 0x22, 0x6, 0x15, 0x15, 0x14, 0x16, 0x5, 0x27, 0x6, 0x23, 0x22, 0x2, 0x35, 0x35, 0x34, 0x12, 0x33, 0x32, 0x17, 0x11, 0x33, 0x11, 0x2, 0x4B, 0x92, 0x47, 0x46, 0x91, 0x84, 0x87, 0x86, 0x1, 0x7D, 0x11, 0x6E, 0xB9, 0xC4, 0xF9, 0xF9, 0xC6, 0xAB, 0x6A, 0xF3, 0xB3, 0x80, 0x1, 0xD9, 0x7C, 0xCC, 0x96, 0x15, 0x90, 0xCE, 0xB3, 0x75, 0x89, 0x1, 0x39, 0xEC, 0x15, 0xF7, 0x1, 0x31, 0x76, 0x2, 0x28, 0xFA, 0x0, 0x0, 0x2, 0x0, 0x50, 0xFE, 0x56, 0x4, 0x17, 0x4, 0x4E, 0x0, 0xB, 0x0, 0x26, 0x0, 0x0, 0x25, 0x32, 0x37, 0x11, 0x26, 0x23, 0x22, 0x6, 0x15, 0x15, 0x14, 0x16, 0x13, 0x22, 0x26, 0x27, 0x37, 0x16, 0x33, 0x20, 0x13, 0x35, 0x6, 0x23, 0x22, 0x2, 0x35, 0x35, 0x34, 0x12, 0x33, 0x32, 0x17, 0x37, 0x33, 0x11, 0x6, 0x0, 0x7, 0x2, 0x4A, 0x95, 0x45, 0x44, 0x94, 0x84, 0x86, 0x85, 0x5D, 0x4C, 0xBE, 0x4D, 0x35, 0x80, 0x92, 0x1, 0xA, 0x6, 0x6A, 0xAE, 0xC6, 0xF6, 0xF6, 0xC8, 0xBF, 0x6A, 0x10, 0xD0, 0x1, 0xFE, 0xFE, 0xE9, 0xB3, 0x7F, 0x1, 0xDB, 0x7B, 0xCB, 0x96, 0x15, 0x91, 0xCE, 0xFD, 0xA3, 0x2B, 0x31, 0xAF, 0x4C, 0x1, 0x2C, 0x21, 0x76, 0x1, 0x3A, 0xEC, 0x15, 0xF7, 0x1, 0x30, 0x86, 0x72, 0xFC, 0x15, 0xF1, 0xFE, 0xFA, 0x2, 0x0, 0x2, 0x0, 0x4C, 0xFF, 0xEC, 0x4, 0x55, 0x4, 0x4E, 0x0, 0xC, 0x0, 0x1A, 0x0, 0x0, 0x13, 0x34, 0x0, 0x33, 0x32, 0x0, 0x17, 0x15, 0x14, 0x0, 0x20, 0x0, 0x35, 0x17, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x4C, 0x1, 0x18, 0xEB, 0xEE, 0x1, 0x17, 0x1, 0xFE, 0xE9, 0xFE, 0x26, 0xFE, 0xE8, 0xF3, 0x8A, 0x88, 0x87, 0x8A, 0x8A, 0x89, 0x87, 0x89, 0x2, 0x27, 0xEC, 0x1, 0x3B, 0xFE, 0xC7, 0xEB, 0x18, 0xEB, 0xFE, 0xC5, 0x1, 0x3B, 0xEC, 0x1, 0x91, 0xD2, 0xD2, 0x91, 0x15, 0x8F, 0xD5, 0xD5, 0x8F, 0x0, 0x2, 0x0, 0x7D, 0xFE, 0x60, 0x4, 0x45, 0x4, 0x4E, 0x0, 0xB, 0x0, 0x1B, 0x0, 0x0, 0x25, 0x32, 0x36, 0x35, 0x35, 0x34, 0x26, 0x23, 0x22, 0x7, 0x11, 0x16, 0x17, 0x22, 0x27, 0x11, 0x23, 0x11, 0x33, 0x17, 0x36, 0x33, 0x32, 0x12, 0x15, 0x15, 0x14, 0x2, 0x2, 0x48, 0x83, 0x87, 0x89, 0x83, 0x94, 0x43, 0x45, 0xD8, 0xB1, 0x6C, 0xF2, 0xD9, 0xD, 0x6E, 0xB9, 0xCE, 0xED, 0xEE, 0xAF, 0xD2, 0x91, 0x15, 0x96, 0xCB, 0x79, 0xFE, 0x1A, 0x7A, 0xC3, 0x75, 0xFD, 0xFF, 0x5, 0xDA, 0x70, 0x84, 0xFE, 0xD0, 0xF8, 0x14, 0xEC, 0xFE, 0xC6, 0x0, 0x2, 0x0, 0x50, 0xFE, 0x60, 0x4, 0x17, 0x4, 0x4E, 0x0, 0xF, 0x0, 0x1B, 0x0, 0x0, 0x1, 0x23, 0x11, 0x6, 0x23, 0x22, 0x2, 0x35, 0x35, 0x34, 0x12, 0x33, 0x32, 0x17, 0x37, 0x33, 0x1, 0x32, 0x37, 0x11, 0x26, 0x23, 0x22, 0x6, 0x15, 0x15, 0x14, 0x16, 0x4, 0x17, 0xF3, 0x6A, 0xAB, 0xCA, 0xF5, 0xF4, 0xCD, 0xB7, 0x6C, 0x10, 0xD3, 0xFE, 0x36, 0x90, 0x47, 0x48, 0x8D, 0x83, 0x8A, 0x88, 0xFE, 0x60, 0x1, 0xFD, 0x71, 0x1, 0x39, 0xED, 0x14, 0xF7, 0x1, 0x31, 0x82, 0x6E, 0xFC, 0x75, 0x77, 0x1, 0xF3, 0x72, 0xCF, 0x96, 0x15, 0x90, 0xD2, 0x0, 0x2, 0x0, 0x54, 0xFF, 0xEC, 0x4, 0xC, 0x4, 0x4E, 0x0, 0x7, 0x0, 0x1D, 0x0, 0x0, 0x1, 0x22, 0x6, 0x7, 0x21, 0x35, 0x34, 0x26, 0x1, 0x6, 0x6, 0x23, 0x22, 0x0, 0x35, 0x35, 0x34, 0x0, 0x33, 0x32, 0x12, 0x15, 0x15, 0x21, 0x16, 0x16, 0x33, 0x32, 0x36, 0x37, 0x2, 0x3D, 0x65, 0x7C, 0x10, 0x1, 0xCF, 0x64, 0x1, 0x2A, 0x31, 0xB4, 0x85, 0xFC, 0xFE, 0xD9, 0x1, 0x1B, 0xCE, 0xEC, 0xE3, 0xFD, 0x3E, 0xD, 0xA3, 0x95, 0x54, 0x93, 0x31, 0x3, 0x8B, 0x8C, 0x7C, 0x19, 0x60, 0x8F, 0xFC, 0xCD, 0x25, 0x47, 0x1, 0x31, 0xE7, 0x29, 0xFA, 0x1, 0x27, 0xFE, 0xE4, 0xE0, 0x81, 0x7E, 0xA4, 0x30, 0x1F, 0x0, 0x2, 0x0, 0x51, 0xFE, 0x56, 0x4, 0x5, 0x4, 0x4E, 0x0, 0xB, 0x0, 0x25, 0x0, 0x0, 0x25, 0x32, 0x37, 0x11, 0x26, 0x23, 0x22, 0x6, 0x15, 0x15, 0x14, 0x16, 0x13, 0x22, 0x26, 0x27, 0x37, 0x16, 0x33, 0x20, 0x13, 0x35, 0x6, 0x23, 0x22, 0x2, 0x35, 0x35, 0x34, 0x12, 0x33, 0x32, 0x17, 0x37, 0x33, 0x11, 0x14, 0x0, 0x2, 0x37, 0x98, 0x43, 0x42, 0x97, 0x83, 0x72, 0x70, 0x5E, 0x46, 0xB1, 0x47, 0x35, 0x77, 0x82, 0x1, 0xA, 0x6, 0x6A, 0xAE, 0xC7, 0xE2, 0xE2, 0xC9, 0xBF, 0x69, 0x10, 0xD1, 0xFE, 0xFA, 0xB3, 0x85, 0x1, 0xD0, 0x80, 0xCB, 0x96, 0x15, 0x91, 0xCE, 0xFD, 0xA3, 0x25, 0x2A, 0xAF, 0x3F, 0x1, 0x1F, 0x2F, 0x77, 0x1, 0x3A, 0xEC, 0x15, 0xF7, 0x1, 0x30, 0x85, 0x71, 0xFC, 0xC, 0xEF, 0xFE, 0xFF, 0x0, 0x1, 0x0, 0x3E, 0xFE, 0x4A, 0x4, 0x66, 0x4, 0x4A, 0x0, 0x1E, 0x0, 0x0, 0x1, 0x6, 0x27, 0x26, 0x26, 0x27, 0x27, 0x3, 0x23, 0x1, 0x3, 0x26, 0x26, 0x23, 0x7, 0x27, 0x36, 0x33, 0x32, 0x16, 0x16, 0x17, 0x17, 0x13, 0x33, 0x1, 0x13, 0x16, 0x17, 0x16, 0x37, 0x4, 0x3E, 0x2B, 0x36, 0x7B, 0x7C, 0x32, 0x64, 0xF9, 0xF7, 0x1, 0x7C, 0xA8, 0x19, 0x59, 0x3E, 0x43, 0x3, 0x48, 0x3C, 0x6A, 0x77, 0x44, 0x15, 0x5D, 0xE0, 0xF5, 0xFE, 0x9F, 0xC6, 0x34, 0x4E, 0x2B, 0x26, 0xFE, 0x59, 0xF, 0x3, 0x6, 0xB5, 0x73, 0xE6, 0xFD, 0xFF, 0x3, 0xC, 0x1, 0x81, 0x3F, 0x56, 0x5, 0xBB, 0x12, 0x5B, 0x7F, 0x30, 0xD3, 0x1, 0xCD, 0xFD, 0x2A, 0xFE, 0x3F, 0x7F, 0x7, 0x4, 0x5, 0xFF, 0xFF, 0x0, 0x5A, 0x0, 0x0, 0x2, 0xB2, 0x5, 0xB5, 0x0, 0x6, 0x0, 0x16, 0xB2, 0x0, 0x0, 0x3, 0x0, 0x5, 0x0, 0x0, 0x4, 0xC1, 0x6, 0x0, 0x0, 0xD, 0x0, 0x1B, 0x0, 0x32, 0x0, 0x0, 0x1, 0x27, 0x36, 0x36, 0x35, 0x34, 0x26, 0x27, 0x37, 0x16, 0x16, 0x15, 0x14, 0x6, 0x5, 0x26, 0x26, 0x35, 0x34, 0x36, 0x37, 0x17, 0x6, 0x6, 0x15, 0x14, 0x16, 0x17, 0x25, 0x27, 0x11, 0x23, 0x11, 0x22, 0x6, 0x15, 0x27, 0x34, 0x36, 0x33, 0x17, 0x11, 0x33, 0x11, 0x33, 0x32, 0x36, 0x35, 0x17, 0x14, 0x6, 0x4, 0x6, 0xE, 0x23, 0x3F, 0x3F, 0x23, 0xE, 0x3A, 0x81, 0x81, 0xFC, 0x80, 0x3A, 0x81, 0x81, 0x3A, 0xE, 0x23, 0x3F, 0x40, 0x22, 0x2, 0x20, 0x1A, 0xF3, 0x27, 0x34, 0x95, 0x7F, 0x5F, 0x12, 0xF3, 0x9, 0x26, 0x36, 0x95, 0x80, 0x2, 0x42, 0x4A, 0x11, 0x3E, 0x3F, 0x3C, 0x3E, 0x10, 0x4B, 0xF, 0x6B, 0x5B, 0x5C, 0x6D, 0xF, 0xF, 0x6D, 0x5C, 0x5A, 0x6C, 0xF, 0x4B, 0x10, 0x40, 0x3A, 0x3E, 0x3F, 0x11, 0x17, 0x1, 0xFD, 0x5C, 0x2, 0xFC, 0x39, 0x2E, 0x8, 0x6E, 0x96, 0x1, 0x2, 0x60, 0xFD, 0x47, 0x3A, 0x2E, 0xC, 0x70, 0x90, 0x0, 0x4, 0x0, 0x50, 0xFF, 0xEC, 0x5, 0x8B, 0x6, 0x0, 0x0, 0xC, 0x0, 0x19, 0x0, 0x25, 0x0, 0x3D, 0x0, 0x0, 0x1, 0x36, 0x36, 0x35, 0x34, 0x27, 0x37, 0x16, 0x16, 0x15, 0x14, 0x6, 0x7, 0x21, 0x26, 0x26, 0x35, 0x34, 0x36, 0x37, 0x17, 0x6, 0x15, 0x14, 0x16, 0x17, 0x13, 0x32, 0x37, 0x11, 0x26, 0x23, 0x22, 0x6, 0x15, 0x15, 0x14, 0x16, 0x5, 0x27, 0x6, 0x23, 0x22, 0x2, 0x35, 0x35, 0x34, 0x12, 0x33, 0x32, 0x17, 0x35, 0x23, 0x35, 0x33, 0x35, 0x33, 0x15, 0x33, 0x15, 0x23, 0x11, 0x4, 0xD7, 0x1B, 0x32, 0x4D, 0xD, 0x34, 0x73, 0x73, 0x34, 0xFC, 0xF7, 0x34, 0x73, 0x73, 0x34, 0xE, 0x4E, 0x33, 0x1B, 0x4E, 0x95, 0x45, 0x44, 0x94, 0x84, 0x73, 0x72, 0x1, 0x73, 0xB, 0x6C, 0xB7, 0xC3, 0xE6, 0xE5, 0xC6, 0xAC, 0x6A, 0xFC, 0xFC, 0xF3, 0xAF, 0xAF, 0x4, 0xA8, 0xE, 0x33, 0x33, 0x50, 0x26, 0x4B, 0xD, 0x62, 0x52, 0x51, 0x5F, 0xE, 0xE, 0x5F, 0x51, 0x52, 0x62, 0xD, 0x4B, 0x27, 0x4F, 0x33, 0x33, 0xE, 0xFC, 0xB, 0x86, 0x1, 0xCD, 0x82, 0xD0, 0x92, 0x15, 0x91, 0xCD, 0xB3, 0x70, 0x84, 0x1, 0x39, 0xEC, 0x15, 0xF7, 0x1, 0x31, 0x77, 0xF1, 0xAB, 0x8D, 0x8D, 0xAB, 0xFB, 0x38, 0x0, 0x3, 0x0, 0x7A, 0xFD, 0xF6, 0x5, 0x5, 0x4, 0x4E, 0x0, 0xD, 0x0, 0x1B, 0x0, 0x36, 0x0, 0x0, 0x1, 0x27, 0x36, 0x36, 0x35, 0x34, 0x26, 0x27, 0x37, 0x16, 0x16, 0x15, 0x14, 0x6, 0x5, 0x26, 0x26, 0x35, 0x34, 0x36, 0x37, 0x17, 0x6, 0x6, 0x15, 0x14, 0x16, 0x17, 0x37, 0x22, 0x27, 0x37, 0x16, 0x33, 0x32, 0x37, 0x11, 0x34, 0x26, 0x23, 0x22, 0x7, 0x11, 0x23, 0x11, 0x33, 0x17, 0x36, 0x33, 0x32, 0x16, 0x17, 0x11, 0x14, 0x6, 0x4, 0x4A, 0xE, 0x23, 0x3F, 0x3F, 0x23, 0xE, 0x3A, 0x81, 0x81, 0xFD, 0x54, 0x39, 0x81, 0x81, 0x39, 0xE, 0x23, 0x3E, 0x3F, 0x22, 0xBB, 0x44, 0x3B, 0xE, 0x26, 0x3D, 0x7B, 0x1, 0x66, 0x60, 0x91, 0x4B, 0xF3, 0xDE, 0xE, 0x71, 0xC5, 0xA1, 0xC4, 0x1, 0xBC, 0xFD, 0xF6, 0x4A, 0x11, 0x3E, 0x3F, 0x3B, 0x3E, 0x11, 0x4B, 0xF, 0x6B, 0x5B, 0x5C, 0x6D, 0xF, 0xF, 0x6D, 0x5C, 0x5A, 0x6C, 0xF, 0x4B, 0x11, 0x3F, 0x3A, 0x3E, 0x3F, 0x11, 0xB, 0x11, 0xC5, 0xC, 0xA9, 0x2, 0xE2, 0x83, 0x65, 0x67, 0xFC, 0xDF, 0x4, 0x3A, 0x95, 0xA9, 0xC4, 0xE3, 0xFD, 0x1A, 0xB6, 0xC0, 0xFF, 0xFF, 0x0, 0x5, 0xFD, 0xFF, 0x5, 0xB6, 0x4, 0x4E, 0x0, 0x27, 0x0, 0xDC, 0x0, 0x91, 0x0, 0x0, 0x0, 0x7, 0x3, 0x2E, 0x5, 0x16, 0xFD, 0x3A, 0x0, 0x4, 0x0, 0x5, 0xFF, 0xEC, 0x5, 0x4E, 0x6, 0x0, 0x0, 0xC, 0x0, 0x19, 0x0, 0x31, 0x0, 0x3C, 0x0, 0x0, 0x1, 0x36, 0x36, 0x35, 0x34, 0x27, 0x37, 0x16, 0x16, 0x15, 0x14, 0x6, 0x7, 0x21, 0x26, 0x26, 0x35, 0x34, 0x36, 0x37, 0x17, 0x6, 0x15, 0x14, 0x16, 0x17, 0x1, 0x14, 0x2, 0x23, 0x22, 0x27, 0x7, 0x23, 0x11, 0x23, 0x35, 0x33, 0x35, 0x33, 0x15, 0x33, 0x15, 0x23, 0x15, 0x36, 0x33, 0x32, 0x12, 0x17, 0x1, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x22, 0x7, 0x11, 0x16, 0x3, 0xA7, 0x1C, 0x32, 0x4E, 0xE, 0x34, 0x73, 0x73, 0x34, 0xFC, 0xF7, 0x34, 0x73, 0x73, 0x34, 0xE, 0x4E, 0x33, 0x1B, 0x4, 0x94, 0xD8, 0xCE, 0xBC, 0x6C, 0xC, 0xDC, 0xBB, 0xBB, 0xF3, 0xF0, 0xF0, 0x6A, 0xB1, 0xD0, 0xD7, 0x1, 0xFE, 0x1D, 0x87, 0x69, 0x66, 0x8C, 0x9C, 0x42, 0x43, 0x4, 0xA8, 0xE, 0x33, 0x33, 0x50, 0x26, 0x4B, 0xD, 0x62, 0x52, 0x51, 0x5F, 0xE, 0xE, 0x5F, 0x51, 0x52, 0x62, 0xD, 0x4B, 0x27, 0x4F, 0x33, 0x33, 0xE, 0xFD, 0x6A, 0xEF, 0xFE, 0xC9, 0x89, 0x75, 0x4, 0xC0, 0xAB, 0x95, 0x95, 0xAB, 0xED, 0x7B, 0xFE, 0xD0, 0xF3, 0xFE, 0x88, 0xCA, 0xAA, 0x8F, 0xD2, 0x8B, 0xFE, 0x43, 0x8D, 0x0, 0x3, 0x0, 0x5, 0xFD, 0xF6, 0x3, 0xF4, 0x4, 0x4E, 0x0, 0x17, 0x0, 0x25, 0x0, 0x33, 0x0, 0x0, 0x1, 0x6, 0x23, 0x22, 0x26, 0x35, 0x11, 0x33, 0x17, 0x36, 0x33, 0x32, 0x17, 0x7, 0x26, 0x23, 0x22, 0x7, 0x11, 0x14, 0x16, 0x33, 0x32, 0x37, 0x13, 0x27, 0x36, 0x36, 0x35, 0x34, 0x26, 0x27, 0x37, 0x16, 0x16, 0x15, 0x14, 0x6, 0x5, 0x26, 0x26, 0x35, 0x34, 0x36, 0x37, 0x17, 0x6, 0x6, 0x15, 0x14, 0x16, 0x17, 0x2, 0xDF, 0x36, 0x46, 0x7D, 0xD6, 0xE8, 0x7, 0x57, 0x9C, 0x31, 0x25, 0x2, 0x32, 0x30, 0xA7, 0x3A, 0x5C, 0x41, 0x23, 0x1C, 0x5A, 0xE, 0x22, 0x3F, 0x3E, 0x23, 0xE, 0x39, 0x82, 0x82, 0xFD, 0x4E, 0x3A, 0x81, 0x81, 0x3A, 0xE, 0x23, 0x3F, 0x40, 0x22, 0xFE, 0x58, 0xD, 0x8D, 0xB3, 0x4, 0xAF, 0x79, 0x8D, 0xD, 0xE5, 0x8, 0x7E, 0xFC, 0xA5, 0x56, 0x40, 0x6, 0xFE, 0xFB, 0x4A, 0x11, 0x3E, 0x3F, 0x3B, 0x3E, 0x11, 0x4B, 0xF, 0x6B, 0x5B, 0x5C, 0x6D, 0xF, 0xF, 0x6D, 0x5C, 0x5A, 0x6C, 0xF, 0x4B, 0x11, 0x3F, 0x3A, 0x3E, 0x3F, 0x11, 0x0, 0x3, 0x0, 0x5D, 0xFF, 0xEE, 0x4, 0xB7, 0x4, 0x9D, 0x0, 0xA, 0x0, 0x12, 0x0, 0x30, 0x0, 0x0, 0x1, 0x14, 0x16, 0x17, 0x37, 0x36, 0x35, 0x34, 0x26, 0x22, 0x6, 0x13, 0x32, 0x37, 0x3, 0x7, 0x6, 0x15, 0x14, 0x5, 0x27, 0x6, 0x23, 0x22, 0x26, 0x35, 0x34, 0x36, 0x37, 0x37, 0x26, 0x26, 0x35, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x7, 0x7, 0x17, 0x36, 0x35, 0x33, 0x14, 0x7, 0x17, 0x1, 0x94, 0x39, 0x2A, 0x41, 0x48, 0x40, 0x72, 0x3A, 0x74, 0x74, 0x57, 0xFC, 0x48, 0x40, 0x2, 0x5C, 0x4A, 0x9A, 0xCC, 0xBF, 0xDF, 0x67, 0x5A, 0x36, 0x45, 0x58, 0xB6, 0x9D, 0x9B, 0xB9, 0xA4, 0x40, 0xE7, 0x39, 0xD5, 0x80, 0xC8, 0x3, 0x75, 0x29, 0x49, 0x2A, 0x2C, 0x34, 0x40, 0x2A, 0x3C, 0x42, 0xFD, 0x15, 0x2D, 0x1, 0x4, 0x31, 0x31, 0x45, 0x8A, 0xB2, 0x4C, 0x5E, 0xAF, 0x82, 0x64, 0x84, 0x3E, 0x25, 0x48, 0x7F, 0x5A, 0x73, 0x9F, 0xA2, 0x78, 0x93, 0x71, 0x2C, 0xF0, 0x62, 0x86, 0xDD, 0x9E, 0xD0, 0x0, 0x1, 0x0, 0x4, 0x0, 0x0, 0x3, 0x9F, 0x4, 0x8D, 0x0, 0xD, 0x0, 0x0, 0x33, 0x11, 0x7, 0x35, 0x37, 0x11, 0x33, 0x11, 0x37, 0x15, 0x7, 0x11, 0x21, 0x15, 0x81, 0x7D, 0x7D, 0xF3, 0xF9, 0xF9, 0x2, 0x2B, 0x2, 0x9, 0x26, 0x93, 0x26, 0x1, 0xF1, 0xFE, 0x59, 0x4B, 0x93, 0x4B, 0xFE, 0x70, 0xC3, 0x0, 0x2, 0xFF, 0xF0, 0x0, 0x0, 0x6, 0x4, 0x4, 0x8D, 0x0, 0x2, 0x0, 0x12, 0x0, 0x0, 0x1, 0x3, 0x1, 0x1, 0x3, 0x21, 0x3, 0x21, 0x1, 0x21, 0x15, 0x21, 0x13, 0x21, 0x15, 0x21, 0x13, 0x21, 0x15, 0x2, 0xEE, 0x13, 0xFE, 0xFE, 0x1, 0x27, 0xA, 0xFE, 0x83, 0x84, 0xFE, 0xFB, 0x2, 0x6F, 0x3, 0x77, 0xFD, 0xF6, 0xA, 0x1, 0xC3, 0xFE, 0x45, 0xC, 0x2, 0x1A, 0x1, 0xC8, 0x2, 0x2, 0xFD, 0xFE, 0xFE, 0x38, 0x1, 0x7, 0xFE, 0xF9, 0x4, 0x8D, 0xC1, 0xFE, 0xF4, 0xC1, 0xFE, 0xC2, 0xC1, 0x0, 0x2, 0x0, 0x76, 0x0, 0x0, 0x3, 0xD3, 0x4, 0x8D, 0x0, 0x8, 0x0, 0x15, 0x0, 0x0, 0x1, 0x11, 0x33, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x3, 0x15, 0x23, 0x11, 0x33, 0x15, 0x33, 0x16, 0x16, 0x15, 0x14, 0x6, 0x23, 0x1, 0x69, 0x99, 0x74, 0x6B, 0x6B, 0x74, 0x99, 0xF3, 0xF3, 0x9D, 0xDB, 0xF2, 0xF4, 0xDD, 0x3, 0x13, 0xFE, 0x94, 0x65, 0x4E, 0x49, 0x70, 0xFD, 0xD0, 0xE3, 0x4, 0x8D, 0xB6, 0x1, 0xD7, 0xA3, 0xAC, 0xCD, 0x0, 0x3, 0x0, 0x50, 0xFF, 0xC8, 0x4, 0x6F, 0x4, 0xBB, 0x0, 0x8, 0x0, 0x11, 0x0, 0x27, 0x0, 0x0, 0x1, 0x14, 0x17, 0x1, 0x26, 0x23, 0x22, 0x6, 0x15, 0x1, 0x32, 0x36, 0x35, 0x35, 0x34, 0x27, 0x1, 0x16, 0x17, 0x22, 0x27, 0x7, 0x23, 0x37, 0x26, 0x27, 0x35, 0x10, 0x0, 0x33, 0x32, 0x17, 0x37, 0x33, 0x7, 0x16, 0x17, 0x15, 0x10, 0x0, 0x1, 0x42, 0x28, 0x1, 0x9B, 0x43, 0x63, 0x85, 0x98, 0x1, 0x1F, 0x87, 0x95, 0x23, 0xFE, 0x68, 0x42, 0x5D, 0x9D, 0x79, 0x4D, 0xA5, 0x88, 0x8F, 0x2, 0x1, 0x26, 0xE9, 0xA3, 0x7B, 0x49, 0xA4, 0x85, 0x89, 0x1, 0xFE, 0xDE, 0x2, 0x2C, 0x80, 0x59, 0x2, 0x51, 0x34, 0xC1, 0xB5, 0xFE, 0x52, 0xC3, 0xB5, 0x36, 0x7A, 0x55, 0xFD, 0xB3, 0x30, 0xC4, 0x47, 0x6F, 0xC4, 0x9A, 0xFF, 0x3B, 0x1, 0xA, 0x1, 0x33, 0x4B, 0x69, 0xC0, 0x9A, 0xFD, 0x38, 0xFE, 0xF6, 0xFE, 0xCE, 0x0, 0x2, 0x0, 0x32, 0x0, 0x0, 0x4, 0xD8, 0x4, 0x8D, 0x0, 0x3, 0x0, 0x17, 0x0, 0x0, 0x1, 0x35, 0x21, 0x15, 0x1, 0x11, 0x21, 0x11, 0x23, 0x11, 0x23, 0x35, 0x33, 0x35, 0x33, 0x15, 0x21, 0x35, 0x33, 0x15, 0x33, 0x15, 0x23, 0x11, 0x3, 0x8B, 0xFD, 0xF4, 0x2, 0xC, 0xFD, 0xF4, 0xF3, 0x5A, 0x5A, 0xF3, 0x2, 0xC, 0xF3, 0x5A, 0x5A, 0x2, 0x9F, 0xB0, 0xB0, 0xFD, 0x61, 0x1, 0xDB, 0xFE, 0x25, 0x3, 0x4F, 0xAB, 0x93, 0x93, 0x93, 0x93, 0xAB, 0xFC, 0xB1, 0x0, 0x1, 0x0, 0x76, 0xFE, 0x4B, 0x4, 0x67, 0x4, 0x8D, 0x0, 0x13, 0x0, 0x0, 0x1, 0x22, 0x27, 0x37, 0x16, 0x33, 0x32, 0x37, 0x35, 0x1, 0x11, 0x23, 0x11, 0x33, 0x1, 0x11, 0x33, 0x11, 0x14, 0x6, 0x3, 0x7, 0x45, 0x3A, 0xE, 0x26, 0x3D, 0x78, 0x3, 0xFD, 0xF5, 0xF3, 0xF3, 0x2, 0xC, 0xF2, 0xBB, 0xFE, 0x4B, 0x11, 0xC5, 0xC, 0xA4, 0x49, 0x3, 0x1A, 0xFC, 0xE4, 0x4, 0x8D, 0xFC, 0xE4, 0x3, 0x1C, 0xFB, 0x34, 0xB6, 0xC0, 0x0, 0x2, 0xFD, 0x40, 0x4, 0xD2, 0xFF, 0x20, 0x7, 0x4C, 0x0, 0x9, 0x0, 0xD, 0x0, 0x0, 0x1, 0x34, 0x36, 0x32, 0x16, 0x15, 0x14, 0x6, 0x22, 0x26, 0x13, 0x13, 0x21, 0x1, 0xFD, 0x40, 0x45, 0x7C, 0x45, 0x45, 0x7C, 0x45, 0x8, 0xC3, 0x1, 0x15, 0xFE, 0xEB, 0x6, 0xD1, 0x35, 0x46, 0x46, 0x35, 0x34, 0x46, 0x46, 0xFE, 0x35, 0x1, 0x2E, 0xFE, 0xD2, 0x0, 0x3, 0xFC, 0x4A, 0x4, 0xDB, 0xFF, 0x27, 0x7, 0x22, 0x0, 0xB, 0x0, 0x17, 0x0, 0x2C, 0x0, 0x0, 0x1, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x6, 0x23, 0x22, 0x26, 0x25, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x6, 0x23, 0x22, 0x26, 0x17, 0x17, 0x14, 0x6, 0x23, 0x22, 0x26, 0x26, 0x23, 0x22, 0x6, 0x15, 0x27, 0x34, 0x36, 0x33, 0x32, 0x16, 0x33, 0x32, 0x36, 0xFC, 0x57, 0x43, 0x3B, 0x3A, 0x45, 0x45, 0x3A, 0x3B, 0x43, 0x1, 0xC9, 0x43, 0x3B, 0x3A, 0x45, 0x45, 0x3A, 0x3B, 0x43, 0x72, 0x95, 0x80, 0x60, 0x41, 0x50, 0x47, 0x35, 0x27, 0x34, 0x95, 0x7F, 0x5F, 0x52, 0x6F, 0x4D, 0x26, 0x36, 0x6, 0xAB, 0x32, 0x45, 0x45, 0x32, 0x31, 0x45, 0x45, 0x30, 0x32, 0x44, 0x44, 0x32, 0x31, 0x45, 0x45, 0x84, 0xC, 0x6F, 0x91, 0x2D, 0x2C, 0x39, 0x2E, 0x8, 0x6E, 0x96, 0x59, 0x39, 0x0, 0x3, 0xFC, 0x57, 0x4, 0xE0, 0xFF, 0x1D, 0x7, 0x2D, 0x0, 0x3, 0x0, 0xF, 0x0, 0x1B, 0x0, 0x0, 0x1, 0x13, 0x21, 0x1, 0x5, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x6, 0x23, 0x22, 0x26, 0x25, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x6, 0x23, 0x22, 0x26, 0xFD, 0x3D, 0xC3, 0x1, 0x15, 0xFE, 0xEB, 0xFE, 0x57, 0x43, 0x3B, 0x3A, 0x45, 0x45, 0x3A, 0x3B, 0x43, 0x1, 0xC9, 0x43, 0x3B, 0x3A, 0x45, 0x45, 0x3A, 0x3B, 0x43, 0x5, 0xFE, 0x1, 0x2F, 0xFE, 0xD1, 0xA8, 0x32, 0x45, 0x45, 0x32, 0x31, 0x44, 0x44, 0x30, 0x32, 0x45, 0x45, 0x32, 0x31, 0x44, 0x44, 0x0, 0x2, 0xFC, 0x57, 0x4, 0xE1, 0xFF, 0x1A, 0x7, 0x3B, 0x0, 0x9, 0x0, 0x12, 0x0, 0x0, 0x1, 0x34, 0x36, 0x32, 0x16, 0x15, 0x14, 0x6, 0x22, 0x26, 0x7, 0x17, 0x37, 0x33, 0x15, 0x1, 0x23, 0x1, 0x35, 0xFD, 0x35, 0x45, 0x7C, 0x45, 0x45, 0x7C, 0x45, 0x10, 0x93, 0x92, 0xD0, 0xFE, 0xE9, 0x97, 0xFE, 0xEB, 0x6, 0xC0, 0x35, 0x46, 0x46, 0x35, 0x34, 0x46, 0x46, 0x8A, 0x9B, 0x9B, 0xB, 0xFE, 0xEA, 0x1, 0x17, 0xA, 0x0, 0x2, 0xFC, 0x65, 0x4, 0xE0, 0xFF, 0x13, 0x6, 0xE4, 0x0, 0x3, 0x0, 0xD, 0x0, 0x0, 0x3, 0x15, 0x21, 0x35, 0x13, 0x34, 0x36, 0x32, 0x16, 0x15, 0x14, 0x6, 0x22, 0x26, 0xED, 0xFD, 0x52, 0xD0, 0x45, 0x7C, 0x45, 0x45, 0x7C, 0x45, 0x6, 0xE4, 0x9E, 0x9E, 0xFE, 0x76, 0x35, 0x46, 0x46, 0x35, 0x34, 0x46, 0x46, 0x0, 0x2, 0xFC, 0x5F, 0x5, 0xC, 0xFF, 0x13, 0x7, 0x2D, 0x0, 0x3, 0x0, 0x7, 0x0, 0x0, 0x1, 0x13, 0x23, 0x1, 0x1, 0x15, 0x21, 0x35, 0xFD, 0x73, 0xC4, 0xCA, 0xFE, 0xF2, 0x2, 0xB4, 0xFD, 0x52, 0x7, 0x2D, 0xFE, 0xD1, 0x1, 0x2F, 0xFE, 0x7D, 0x9E, 0x9E, 0x0, 0x3, 0xFC, 0x57, 0x4, 0xE0, 0xFF, 0x1D, 0x6, 0xDA, 0x0, 0x3, 0x0, 0xF, 0x0, 0x1B, 0x0, 0x0, 0x3, 0x15, 0x21, 0x35, 0x3, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x6, 0x23, 0x22, 0x26, 0x25, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x6, 0x23, 0x22, 0x26, 0xED, 0xFD, 0x52, 0xE, 0x43, 0x3B, 0x3A, 0x45, 0x45, 0x3A, 0x3B, 0x43, 0x1, 0xC9, 0x43, 0x3B, 0x3A, 0x45, 0x45, 0x3A, 0x3B, 0x43, 0x6, 0xDA, 0x9E, 0x9E, 0xFE, 0x7C, 0x32, 0x45, 0x45, 0x32, 0x31, 0x44, 0x44, 0x30, 0x32, 0x45, 0x45, 0x32, 0x31, 0x44, 0x44, 0x0, 0x3, 0xFC, 0x57, 0x4, 0xE0, 0xFF, 0x1D, 0x7, 0x2D, 0x0, 0x3, 0x0, 0xF, 0x0, 0x1B, 0x0, 0x0, 0x1, 0x13, 0x23, 0x1, 0x3, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x6, 0x23, 0x22, 0x26, 0x25, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x6, 0x23, 0x22, 0x26, 0xFD, 0x73, 0xC4, 0xCA, 0xFE, 0xF2, 0x8, 0x43, 0x3B, 0x3A, 0x45, 0x45, 0x3A, 0x3B, 0x43, 0x1, 0xC9, 0x43, 0x3B, 0x3A, 0x45, 0x45, 0x3A, 0x3B, 0x43, 0x7, 0x2D, 0xFE, 0xD1, 0x1, 0x2F, 0xFE, 0x29, 0x32, 0x45, 0x45, 0x32, 0x31, 0x44, 0x44, 0x30, 0x32, 0x45, 0x45, 0x32, 0x31, 0x44, 0x44, 0x0, 0x2, 0xFC, 0x65, 0x5, 0xC, 0xFF, 0x15, 0x7, 0x2D, 0x0, 0x3, 0x0, 0x7, 0x0, 0x0, 0x1, 0x13, 0x21, 0x1, 0x5, 0x15, 0x21, 0x35, 0xFD, 0x3D, 0xC3, 0x1, 0x15, 0xFE, 0xEB, 0x1, 0x13, 0xFD, 0x52, 0x5, 0xFE, 0x1, 0x2F, 0xFE, 0xD1, 0x54, 0x9E, 0x9E, 0x0, 0x2, 0xFC, 0x4A, 0x4, 0xDB, 0xFF, 0x27, 0x7, 0x2, 0x0, 0x3, 0x0, 0x18, 0x0, 0x0, 0x3, 0x15, 0x21, 0x35, 0x1, 0x17, 0x14, 0x6, 0x23, 0x22, 0x26, 0x26, 0x23, 0x22, 0x6, 0x15, 0x27, 0x34, 0x36, 0x33, 0x32, 0x16, 0x33, 0x32, 0x36, 0xED, 0xFD, 0x52, 0x2, 0x2D, 0x95, 0x80, 0x60, 0x41, 0x50, 0x47, 0x35, 0x27, 0x34, 0x95, 0x7F, 0x5F, 0x52, 0x6F, 0x4D, 0x26, 0x36, 0x7, 0x2, 0x9E, 0x9E, 0xFE, 0xF3, 0xC, 0x6F, 0x91, 0x2D, 0x2C, 0x39, 0x2E, 0x8, 0x6E, 0x96, 0x59, 0x39, 0x0, 0x3, 0xFC, 0x57, 0x5, 0xC, 0xFF, 0x1D, 0x6, 0xFA, 0x0, 0xB, 0x0, 0x17, 0x0, 0x1B, 0x0, 0x0, 0x1, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x6, 0x23, 0x22, 0x26, 0x25, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x6, 0x23, 0x22, 0x26, 0x17, 0x15, 0x21, 0x35, 0xFC, 0x57, 0x43, 0x3B, 0x3A, 0x45, 0x45, 0x3A, 0x3B, 0x43, 0x1, 0xC9, 0x43, 0x3B, 0x3A, 0x45, 0x45, 0x3A, 0x3B, 0x43, 0xF3, 0xFD, 0x52, 0x6, 0x83, 0x32, 0x45, 0x45, 0x32, 0x31, 0x45, 0x45, 0x30, 0x32, 0x44, 0x44, 0x32, 0x31, 0x45, 0x45, 0xA7, 0x9E, 0x9E, 0x0, 0x2, 0xFC, 0x50, 0x4, 0xDB, 0xFF, 0x2D, 0x7, 0x55, 0x0, 0x3, 0x0, 0x18, 0x0, 0x0, 0x1, 0x13, 0x21, 0x1, 0x17, 0x17, 0x14, 0x6, 0x23, 0x22, 0x26, 0x26, 0x23, 0x22, 0x6, 0x15, 0x27, 0x34, 0x36, 0x33, 0x32, 0x16, 0x33, 0x32, 0x36, 0xFD, 0x43, 0xC4, 0x1, 0x14, 0xFE, 0xEC, 0x91, 0x95, 0x80, 0x5F, 0x41, 0x50, 0x48, 0x35, 0x26, 0x35, 0x95, 0x7F, 0x60, 0x51, 0x6F, 0x4D, 0x27, 0x35, 0x6, 0x26, 0x1, 0x2F, 0xFE, 0xD1, 0x31, 0xC, 0x6F, 0x91, 0x2D, 0x2C, 0x39, 0x2E, 0x8, 0x6E, 0x96, 0x59, 0x39, 0x0, 0x3, 0xFC, 0x57, 0x4, 0xE0, 0xFF, 0x1D, 0x7, 0x2E, 0x0, 0x8, 0x0, 0x14, 0x0, 0x20, 0x0, 0x0, 0x1, 0x17, 0x37, 0x33, 0x15, 0x1, 0x23, 0x1, 0x35, 0x11, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x6, 0x23, 0x22, 0x26, 0x25, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x6, 0x23, 0x22, 0x26, 0xFD, 0x25, 0x93, 0x92, 0xD0, 0xFE, 0xE9, 0x97, 0xFE, 0xEB, 0x43, 0x3B, 0x3A, 0x45, 0x45, 0x3A, 0x3B, 0x43, 0x1, 0xC9, 0x43, 0x3B, 0x3A, 0x45, 0x45, 0x3A, 0x3B, 0x43, 0x7, 0x2E, 0x9B, 0x9B, 0xA, 0xFE, 0xE9, 0x1, 0x18, 0x9, 0xFE, 0x28, 0x32, 0x45, 0x45, 0x32, 0x31, 0x44, 0x44, 0x30, 0x32, 0x45, 0x45, 0x32, 0x31, 0x44, 0x44, 0xFF, 0xFF, 0x0, 0x47, 0x2, 0xA, 0x2, 0x54, 0x2, 0xCD, 0x0, 0x6, 0x0, 0x12, 0x0, 0x0, 0x0, 0x2, 0x0, 0x15, 0x0, 0x0, 0x4, 0xF0, 0x5, 0xB0, 0x0, 0xD, 0x0, 0x1B, 0x0, 0x0, 0x1, 0x21, 0x11, 0x33, 0x32, 0x12, 0x37, 0x35, 0x34, 0x26, 0x23, 0x23, 0x11, 0x21, 0x1, 0x11, 0x23, 0x35, 0x33, 0x11, 0x21, 0x20, 0x0, 0x11, 0x15, 0x10, 0x0, 0x21, 0x2, 0xB3, 0xFE, 0xFC, 0xA6, 0xCC, 0xD0, 0x2, 0xCF, 0xC4, 0xB1, 0x1, 0x4, 0xFE, 0x0, 0x9E, 0x9E, 0x1, 0xAD, 0x1, 0x25, 0x1, 0x6B, 0xFE, 0x93, 0xFE, 0xD2, 0x2, 0x8C, 0xFE, 0x3E, 0x1, 0x0, 0xE1, 0x53, 0xEC, 0xFB, 0xFE, 0x52, 0xFC, 0xC9, 0x2, 0x8C, 0xAB, 0x2, 0x79, 0xFE, 0x87, 0xFE, 0xC5, 0x49, 0xFE, 0xC5, 0xFE, 0x88, 0x0, 0x2, 0x0, 0x15, 0x0, 0x0, 0x4, 0xF0, 0x5, 0xB0, 0x0, 0xD, 0x0, 0x1B, 0x0, 0x0, 0x1, 0x21, 0x11, 0x33, 0x32, 0x12, 0x37, 0x35, 0x34, 0x26, 0x23, 0x23, 0x11, 0x21, 0x1, 0x11, 0x23, 0x35, 0x33, 0x11, 0x21, 0x20, 0x0, 0x11, 0x15, 0x10, 0x0, 0x21, 0x2, 0xB3, 0xFE, 0xFC, 0xA6, 0xCC, 0xD0, 0x2, 0xCF, 0xC4, 0xB1, 0x1, 0x4, 0xFE, 0x0, 0x9E, 0x9E, 0x1, 0xAD, 0x1, 0x25, 0x1, 0x6B, 0xFE, 0x93, 0xFE, 0xD2, 0x2, 0x8C, 0xFE, 0x3E, 0x1, 0x0, 0xE1, 0x53, 0xEC, 0xFB, 0xFE, 0x52, 0xFC, 0xC9, 0x2, 0x8C, 0xAB, 0x2, 0x79, 0xFE, 0x87, 0xFE, 0xC5, 0x49, 0xFE, 0xC5, 0xFE, 0x88, 0x0, 0x1, 0xFF, 0xF2, 0x0, 0x0, 0x4, 0x17, 0x6, 0x0, 0x0, 0x19, 0x0, 0x0, 0x1, 0x22, 0x7, 0x11, 0x23, 0x11, 0x23, 0x35, 0x33, 0x35, 0x33, 0x15, 0x21, 0x15, 0x21, 0x11, 0x36, 0x33, 0x32, 0x16, 0x17, 0x11, 0x23, 0x11, 0x34, 0x26, 0x2, 0x65, 0x93, 0x48, 0xF2, 0xA6, 0xA6, 0xF2, 0x1, 0x6, 0xFE, 0xFA, 0x76, 0xB7, 0x9F, 0xC0, 0x1, 0xF3, 0x62, 0x3, 0x88, 0x83, 0xFC, 0xFB, 0x4, 0xC7, 0xAB, 0x8E, 0x8E, 0xAB, 0xFE, 0xFC, 0x8B, 0xB6, 0xDA, 0xFD, 0x42, 0x2, 0xBB, 0x71, 0x5C, 0x0, 0x1, 0x0, 0x2D, 0x0, 0x0, 0x4, 0xB0, 0x5, 0xB0, 0x0, 0xF, 0x0, 0x0, 0x1, 0x23, 0x11, 0x23, 0x11, 0x23, 0x35, 0x33, 0x11, 0x21, 0x35, 0x21, 0x15, 0x21, 0x11, 0x33, 0x3, 0xBA, 0xCF, 0xFC, 0xD3, 0xD3, 0xFE, 0x3E, 0x4, 0x83, 0xFE, 0x3B, 0xCF, 0x3, 0x12, 0xFC, 0xEE, 0x3, 0x12, 0xAB, 0x1, 0x28, 0xCB, 0xCB, 0xFE, 0xD8, 0x0, 0x1, 0xFF, 0xE8, 0xFF, 0xEC, 0x2, 0x86, 0x5, 0x41, 0x0, 0x1D, 0x0, 0x0, 0x25, 0x6, 0x23, 0x22, 0x26, 0x35, 0x11, 0x23, 0x35, 0x33, 0x35, 0x23, 0x35, 0x33, 0x11, 0x33, 0x11, 0x33, 0x15, 0x23, 0x15, 0x33, 0x15, 0x23, 0x11, 0x14, 0x16, 0x33, 0x32, 0x37, 0x2, 0x73, 0x46, 0x5A, 0x79, 0x9F, 0xD3, 0xD3, 0xB3, 0xB3, 0xF2, 0xBF, 0xBF, 0xD9, 0xD9, 0x40, 0x31, 0x2A, 0x2B, 0x4, 0x18, 0x89, 0xA7, 0x1, 0x1B, 0xAB, 0xA5, 0xB3, 0x1, 0x7, 0xFE, 0xF9, 0xB3, 0xA5, 0xAB, 0xFE, 0xF3, 0x49, 0x2B, 0xA, 0xFF, 0xFF, 0x0, 0x12, 0x0, 0x0, 0x5, 0x43, 0x7, 0x36, 0x0, 0x26, 0x0, 0x26, 0x0, 0x0, 0x0, 0x7, 0x0, 0x45, 0x1, 0x22, 0x1, 0x36, 0xFF, 0xFF, 0x0, 0x12, 0x0, 0x0, 0x5, 0x43, 0x7, 0x36, 0x0, 0x26, 0x0, 0x26, 0x0, 0x0, 0x0, 0x7, 0x0, 0x76, 0x1, 0xC1, 0x1, 0x36, 0xFF, 0xFF, 0x0, 0x12, 0x0, 0x0, 0x5, 0x43, 0x7, 0x37, 0x0, 0x26, 0x0, 0x26, 0x0, 0x0, 0x0, 0x7, 0x1, 0x77, 0x0, 0xC2, 0x1, 0x36, 0xFF, 0xFF, 0x0, 0x12, 0x0, 0x0, 0x5, 0x43, 0x7, 0x2B, 0x0, 0x26, 0x0, 0x26, 0x0, 0x0, 0x0, 0x7, 0x1, 0x8D, 0x0, 0xC4, 0x1, 0x36, 0xFF, 0xFF, 0x0, 0x12, 0x0, 0x0, 0x5, 0x43, 0x7, 0x3, 0x0, 0x26, 0x0, 0x26, 0x0, 0x0, 0x0, 0x7, 0x0, 0x6B, 0x0, 0xEE, 0x1, 0x36, 0xFF, 0xFF, 0x0, 0x12, 0x0, 0x0, 0x5, 0x43, 0x7, 0x94, 0x0, 0x26, 0x0, 0x26, 0x0, 0x0, 0x0, 0x7, 0x1, 0x8B, 0x1, 0x57, 0x1, 0x6A, 0xFF, 0xFF, 0x0, 0x12, 0x0, 0x0, 0x5, 0x43, 0x7, 0xB1, 0x0, 0x26, 0x0, 0x26, 0x0, 0x0, 0x0, 0x7, 0x7, 0xA5, 0x1, 0x5D, 0x1, 0x1B, 0xFF, 0xFF, 0x0, 0x66, 0xFE, 0x39, 0x4, 0xEC, 0x5, 0xC4, 0x0, 0x26, 0x0, 0x28, 0x0, 0x0, 0x0, 0x7, 0x0, 0x7A, 0x1, 0xC9, 0xFF, 0xF9, 0xFF, 0xFF, 0x0, 0x95, 0x0, 0x0, 0x4, 0x4D, 0x7, 0x3E, 0x0, 0x26, 0x0, 0x2A, 0x0, 0x0, 0x0, 0x7, 0x0, 0x45, 0x0, 0xE8, 0x1, 0x3E, 0xFF, 0xFF, 0x0, 0x95, 0x0, 0x0, 0x4, 0x4D, 0x7, 0x3E, 0x0, 0x26, 0x0, 0x2A, 0x0, 0x0, 0x0, 0x7, 0x0, 0x76, 0x1, 0x87, 0x1, 0x3E, 0xFF, 0xFF, 0x0, 0x95, 0x0, 0x0, 0x4, 0x4D, 0x7, 0x3F, 0x0, 0x26, 0x0, 0x2A, 0x0, 0x0, 0x0, 0x7, 0x1, 0x77, 0x0, 0x88, 0x1, 0x3E, 0xFF, 0xFF, 0x0, 0x95, 0x0, 0x0, 0x4, 0x4D, 0x7, 0xB, 0x0, 0x26, 0x0, 0x2A, 0x0, 0x0, 0x0, 0x7, 0x0, 0x6B, 0x0, 0xB4, 0x1, 0x3E, 0xFF, 0xFF, 0xFF, 0xC7, 0x0, 0x0, 0x1, 0xA0, 0x7, 0x3E, 0x0, 0x26, 0x0, 0x2E, 0x0, 0x0, 0x0, 0x7, 0x0, 0x45, 0xFF, 0x96, 0x1, 0x3E, 0xFF, 0xFF, 0x0, 0xA4, 0x0, 0x0, 0x2, 0x7E, 0x7, 0x3E, 0x0, 0x26, 0x0, 0x2E, 0x0, 0x0, 0x0, 0x7, 0x0, 0x76, 0x0, 0x35, 0x1, 0x3E, 0xFF, 0xFF, 0xFF, 0xCB, 0x0, 0x0, 0x2, 0x7A, 0x7, 0x3F, 0x0, 0x26, 0x0, 0x2E, 0x0, 0x0, 0x0, 0x7, 0x1, 0x77, 0xFF, 0x36, 0x1, 0x3E, 0xFF, 0xFF, 0xFF, 0xC0, 0x0, 0x0, 0x2, 0x86, 0x7, 0xB, 0x0, 0x26, 0x0, 0x2E, 0x0, 0x0, 0x0, 0x7, 0x0, 0x6B, 0xFF, 0x62, 0x1, 0x3E, 0xFF, 0xFF, 0x0, 0x95, 0x0, 0x0, 0x5, 0x18, 0x7, 0x2B, 0x0, 0x26, 0x0, 0x33, 0x0, 0x0, 0x0, 0x7, 0x1, 0x8D, 0x0, 0xED, 0x1, 0x36, 0xFF, 0xFF, 0x0, 0x66, 0xFF, 0xEC, 0x5, 0x1F, 0x7, 0x36, 0x0, 0x26, 0x0, 0x34, 0x0, 0x0, 0x0, 0x7, 0x0, 0x45, 0x1, 0x39, 0x1, 0x36, 0xFF, 0xFF, 0x0, 0x66, 0xFF, 0xEC, 0x5, 0x1F, 0x7, 0x36, 0x0, 0x26, 0x0, 0x34, 0x0, 0x0, 0x0, 0x7, 0x0, 0x76, 0x1, 0xD8, 0x1, 0x36, 0xFF, 0xFF, 0x0, 0x66, 0xFF, 0xEC, 0x5, 0x1F, 0x7, 0x37, 0x0, 0x26, 0x0, 0x34, 0x0, 0x0, 0x0, 0x7, 0x1, 0x77, 0x0, 0xD9, 0x1, 0x36, 0xFF, 0xFF, 0x0, 0x66, 0xFF, 0xEC, 0x5, 0x1F, 0x7, 0x2B, 0x0, 0x26, 0x0, 0x34, 0x0, 0x0, 0x0, 0x7, 0x1, 0x8D, 0x0, 0xDB, 0x1, 0x36, 0xFF, 0xFF, 0x0, 0x66, 0xFF, 0xEC, 0x5, 0x1F, 0x7, 0x3, 0x0, 0x26, 0x0, 0x34, 0x0, 0x0, 0x0, 0x7, 0x0, 0x6B, 0x1, 0x5, 0x1, 0x36, 0xFF, 0xFF, 0x0, 0x7E, 0xFF, 0xEC, 0x4, 0xBE, 0x7, 0x36, 0x0, 0x26, 0x0, 0x3A, 0x0, 0x0, 0x0, 0x7, 0x0, 0x45, 0x1, 0x10, 0x1, 0x36, 0xFF, 0xFF, 0x0, 0x7E, 0xFF, 0xEC, 0x4, 0xBE, 0x7, 0x36, 0x0, 0x26, 0x0, 0x3A, 0x0, 0x0, 0x0, 0x7, 0x0, 0x76, 0x1, 0xAF, 0x1, 0x36, 0xFF, 0xFF, 0x0, 0x7E, 0xFF, 0xEC, 0x4, 0xBE, 0x7, 0x37, 0x0, 0x26, 0x0, 0x3A, 0x0, 0x0, 0x0, 0x7, 0x1, 0x77, 0x0, 0xB0, 0x1, 0x36, 0xFF, 0xFF, 0x0, 0x7E, 0xFF, 0xEC, 0x4, 0xBE, 0x7, 0x3, 0x0, 0x26, 0x0, 0x3A, 0x0, 0x0, 0x0, 0x7, 0x0, 0x6B, 0x0, 0xDC, 0x1, 0x36, 0xFF, 0xFF, 0x0, 0x8, 0x0, 0x0, 0x4, 0xD6, 0x7, 0x36, 0x0, 0x26, 0x0, 0x3E, 0x0, 0x0, 0x0, 0x7, 0x0, 0x76, 0x1, 0x87, 0x1, 0x36, 0xFF, 0xFF, 0x0, 0x5B, 0xFF, 0xEC, 0x3, 0xFC, 0x6, 0x0, 0x0, 0x26, 0x0, 0x46, 0x0, 0x0, 0x0, 0x7, 0x0, 0x45, 0x0, 0xAC, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x5B, 0xFF, 0xEC, 0x3, 0xFC, 0x6, 0x0, 0x0, 0x26, 0x0, 0x46, 0x0, 0x0, 0x0, 0x7, 0x0, 0x76, 0x1, 0x4B, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x5B, 0xFF, 0xEC, 0x3, 0xFC, 0x6, 0x1, 0x0, 0x26, 0x0, 0x46, 0x0, 0x0, 0x0, 0x6, 0x1, 0x77, 0x4C, 0x0, 0xFF, 0xFF, 0x0, 0x5B, 0xFF, 0xEC, 0x3, 0xFC, 0x5, 0xF5, 0x0, 0x26, 0x0, 0x46, 0x0, 0x0, 0x0, 0x6, 0x1, 0x8D, 0x4E, 0x0, 0xFF, 0xFF, 0x0, 0x5B, 0xFF, 0xEC, 0x3, 0xFC, 0x5, 0xCD, 0x0, 0x26, 0x0, 0x46, 0x0, 0x0, 0x0, 0x6, 0x0, 0x6B, 0x78, 0x0, 0xFF, 0xFF, 0x0, 0x5B, 0xFF, 0xEC, 0x3, 0xFC, 0x6, 0x5E, 0x0, 0x26, 0x0, 0x46, 0x0, 0x0, 0x0, 0x7, 0x1, 0x8B, 0x0, 0xE1, 0x0, 0x34, 0xFF, 0xFF, 0x0, 0x5B, 0xFF, 0xEC, 0x3, 0xFC, 0x6, 0x7B, 0x0, 0x26, 0x0, 0x46, 0x0, 0x0, 0x0, 0x7, 0x7, 0xA5, 0x0, 0xE7, 0xFF, 0xE5, 0xFF, 0xFF, 0x0, 0x50, 0xFE, 0x39, 0x3, 0xF5, 0x4, 0x4E, 0x0, 0x26, 0x0, 0x48, 0x0, 0x0, 0x0, 0x7, 0x0, 0x7A, 0x1, 0x3D, 0xFF, 0xF9, 0xFF, 0xFF, 0x0, 0x54, 0xFF, 0xEC, 0x4, 0xC, 0x6, 0x0, 0x0, 0x26, 0x0, 0x4A, 0x0, 0x0, 0x0, 0x7, 0x0, 0x45, 0x0, 0xA0, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x54, 0xFF, 0xEC, 0x4, 0xC, 0x6, 0x0, 0x0, 0x26, 0x0, 0x4A, 0x0, 0x0, 0x0, 0x7, 0x0, 0x76, 0x1, 0x3F, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x54, 0xFF, 0xEC, 0x4, 0xC, 0x6, 0x1, 0x0, 0x26, 0x0, 0x4A, 0x0, 0x0, 0x0, 0x6, 0x1, 0x77, 0x40, 0x0, 0xFF, 0xFF, 0x0, 0x54, 0xFF, 0xEC, 0x4, 0xC, 0x5, 0xCD, 0x0, 0x26, 0x0, 0x4A, 0x0, 0x0, 0x0, 0x6, 0x0, 0x6B, 0x6C, 0x0, 0xFF, 0xFF, 0xFF, 0xB2, 0x0, 0x0, 0x1, 0x8B, 0x5, 0xF9, 0x0, 0x26, 0x0, 0x8E, 0x0, 0x0, 0x0, 0x6, 0x0, 0x45, 0x81, 0xF9, 0xFF, 0xFF, 0x0, 0x90, 0x0, 0x0, 0x2, 0x69, 0x5, 0xF9, 0x0, 0x26, 0x0, 0x8E, 0x0, 0x0, 0x0, 0x6, 0x0, 0x76, 0x20, 0xF9, 0xFF, 0xFF, 0xFF, 0xB6, 0x0, 0x0, 0x2, 0x65, 0x5, 0xFA, 0x0, 0x26, 0x0, 0x8E, 0x0, 0x0, 0x0, 0x7, 0x1, 0x77, 0xFF, 0x21, 0xFF, 0xF9, 0xFF, 0xFF, 0xFF, 0xAB, 0x0, 0x0, 0x2, 0x71, 0x5, 0xC6, 0x0, 0x26, 0x0, 0x8E, 0x0, 0x0, 0x0, 0x7, 0x0, 0x6B, 0xFF, 0x4D, 0xFF, 0xF9, 0xFF, 0xFF, 0x0, 0x7A, 0x0, 0x0, 0x3, 0xF9, 0x5, 0xF5, 0x0, 0x26, 0x0, 0x53, 0x0, 0x0, 0x0, 0x6, 0x1, 0x8D, 0x55, 0x0, 0xFF, 0xFF, 0x0, 0x50, 0xFF, 0xEC, 0x4, 0x3E, 0x6, 0x0, 0x0, 0x26, 0x0, 0x54, 0x0, 0x0, 0x0, 0x7, 0x0, 0x45, 0x0, 0xB5, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x50, 0xFF, 0xEC, 0x4, 0x3E, 0x6, 0x0, 0x0, 0x26, 0x0, 0x54, 0x0, 0x0, 0x0, 0x7, 0x0, 0x76, 0x1, 0x54, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x50, 0xFF, 0xEC, 0x4, 0x3E, 0x6, 0x1, 0x0, 0x26, 0x0, 0x54, 0x0, 0x0, 0x0, 0x6, 0x1, 0x77, 0x55, 0x0, 0xFF, 0xFF, 0x0, 0x50, 0xFF, 0xEC, 0x4, 0x3E, 0x5, 0xF5, 0x0, 0x26, 0x0, 0x54, 0x0, 0x0, 0x0, 0x6, 0x1, 0x8D, 0x57, 0x0, 0xFF, 0xFF, 0x0, 0x50, 0xFF, 0xEC, 0x4, 0x3E, 0x5, 0xCD, 0x0, 0x26, 0x0, 0x54, 0x0, 0x0, 0x0, 0x7, 0x0, 0x6B, 0x0, 0x81, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x77, 0xFF, 0xEC, 0x3, 0xF7, 0x6, 0x0, 0x0, 0x26, 0x0, 0x5A, 0x0, 0x0, 0x0, 0x7, 0x0, 0x45, 0x0, 0xAE, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x77, 0xFF, 0xEC, 0x3, 0xF7, 0x6, 0x0, 0x0, 0x26, 0x0, 0x5A, 0x0, 0x0, 0x0, 0x7, 0x0, 0x76, 0x1, 0x4D, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x77, 0xFF, 0xEC, 0x3, 0xF7, 0x6, 0x1, 0x0, 0x26, 0x0, 0x5A, 0x0, 0x0, 0x0, 0x6, 0x1, 0x77, 0x4E, 0x0, 0xFF, 0xFF, 0x0, 0x77, 0xFF, 0xEC, 0x3, 0xF7, 0x5, 0xCD, 0x0, 0x26, 0x0, 0x5A, 0x0, 0x0, 0x0, 0x6, 0x0, 0x6B, 0x7A, 0x0, 0xFF, 0xFF, 0x0, 0xC, 0xFE, 0x4B, 0x3, 0xD7, 0x6, 0x0, 0x0, 0x26, 0x0, 0x5E, 0x0, 0x0, 0x0, 0x7, 0x0, 0x76, 0x1, 0x16, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0xC, 0xFE, 0x4B, 0x3, 0xD7, 0x5, 0xCD, 0x0, 0x26, 0x0, 0x5E, 0x0, 0x0, 0x0, 0x6, 0x0, 0x6B, 0x43, 0x0, 0xFF, 0xFF, 0x0, 0x12, 0x0, 0x0, 0x5, 0x43, 0x6, 0xE3, 0x0, 0x26, 0x0, 0x26, 0x0, 0x0, 0x0, 0x7, 0x0, 0x71, 0x0, 0xBE, 0x1, 0x39, 0xFF, 0xFF, 0x0, 0x5B, 0xFF, 0xEC, 0x3, 0xFC, 0x5, 0xAD, 0x0, 0x26, 0x0, 0x46, 0x0, 0x0, 0x0, 0x6, 0x0, 0x71, 0x48, 0x3, 0xFF, 0xFF, 0x0, 0x12, 0x0, 0x0, 0x5, 0x43, 0x7, 0x1D, 0x0, 0x26, 0x0, 0x26, 0x0, 0x0, 0x0, 0x7, 0x1, 0x89, 0x0, 0xF5, 0x1, 0x36, 0xFF, 0xFF, 0x0, 0x5B, 0xFF, 0xEC, 0x3, 0xFC, 0x5, 0xE7, 0x0, 0x26, 0x0, 0x46, 0x0, 0x0, 0x0, 0x6, 0x1, 0x89, 0x7F, 0x0, 0x0, 0x2, 0x0, 0x12, 0xFE, 0x52, 0x5, 0x43, 0x5, 0xB0, 0x0, 0x2, 0x0, 0x19, 0x0, 0x0, 0x1, 0x3, 0x3, 0x1, 0x6, 0x23, 0x22, 0x26, 0x35, 0x34, 0x37, 0x3, 0x21, 0x3, 0x21, 0x1, 0x33, 0x1, 0x23, 0x6, 0x6, 0x15, 0x14, 0x33, 0x32, 0x37, 0x3, 0x7E, 0xD4, 0xD3, 0x3, 0x42, 0x49, 0x5C, 0x58, 0x7B, 0x97, 0x74, 0xFD, 0xCC, 0x76, 0xFE, 0xF8, 0x2, 0x26, 0xE3, 0x2, 0x28, 0x3E, 0x45, 0x5D, 0x47, 0x2C, 0x2E, 0x2, 0x1F, 0x2, 0x5E, 0xFD, 0xA2, 0xFC, 0x5F, 0x2C, 0x66, 0x63, 0x8D, 0x62, 0x1, 0x4A, 0xFE, 0xAC, 0x5, 0xB0, 0xFA, 0x50, 0x2D, 0x5F, 0x3B, 0x44, 0x17, 0x0, 0x2, 0x0, 0x5B, 0xFE, 0x52, 0x3, 0xFC, 0x4, 0x4E, 0x0, 0x8, 0x0, 0x35, 0x0, 0x0, 0x24, 0x36, 0x37, 0x35, 0x23, 0x6, 0x15, 0x14, 0x16, 0x1, 0x6, 0x23, 0x22, 0x26, 0x35, 0x34, 0x37, 0x26, 0x27, 0x6, 0x23, 0x22, 0x26, 0x35, 0x34, 0x24, 0x33, 0x33, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x23, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x11, 0x14, 0x17, 0x15, 0x23, 0x6, 0x6, 0x15, 0x14, 0x33, 0x32, 0x37, 0x2, 0x4D, 0x7A, 0x19, 0x94, 0xFF, 0x58, 0x2, 0x41, 0x49, 0x5C, 0x58, 0x7B, 0x93, 0x10, 0x9, 0x73, 0xAA, 0xA2, 0xCE, 0x1, 0x2, 0xEA, 0x99, 0x5F, 0x5F, 0x57, 0x67, 0xF2, 0xF1, 0xCD, 0xB6, 0xED, 0x29, 0x2A, 0x45, 0x5D, 0x47, 0x2C, 0x2E, 0xAF, 0x51, 0x31, 0xCC, 0x6, 0xAF, 0x41, 0x58, 0xFD, 0xCF, 0x2C, 0x66, 0x63, 0x8C, 0x60, 0x25, 0x3A, 0x7A, 0xBA, 0x8A, 0xAD, 0xB8, 0x47, 0x55, 0x65, 0x56, 0x3E, 0x80, 0xCC, 0xBA, 0xBA, 0xFE, 0x20, 0x92, 0x57, 0x11, 0x2D, 0x5F, 0x3B, 0x44, 0x17, 0xFF, 0xFF, 0x0, 0x66, 0xFF, 0xEC, 0x4, 0xEC, 0x7, 0x4B, 0x0, 0x26, 0x0, 0x28, 0x0, 0x0, 0x0, 0x7, 0x0, 0x76, 0x1, 0xC0, 0x1, 0x4B, 0xFF, 0xFF, 0x0, 0x50, 0xFF, 0xEC, 0x3, 0xF5, 0x6, 0x0, 0x0, 0x26, 0x0, 0x48, 0x0, 0x0, 0x0, 0x7, 0x0, 0x76, 0x1, 0x29, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x66, 0xFF, 0xEC, 0x4, 0xEC, 0x7, 0x4C, 0x0, 0x26, 0x0, 0x28, 0x0, 0x0, 0x0, 0x7, 0x1, 0x77, 0x0, 0xC1, 0x1, 0x4B, 0xFF, 0xFF, 0x0, 0x50, 0xFF, 0xEC, 0x3, 0xF5, 0x6, 0x1, 0x0, 0x26, 0x0, 0x48, 0x0, 0x0, 0x0, 0x6, 0x1, 0x77, 0x2A, 0x0, 0xFF, 0xFF, 0x0, 0x66, 0xFF, 0xEC, 0x4, 0xEC, 0x7, 0x28, 0x0, 0x26, 0x0, 0x28, 0x0, 0x0, 0x0, 0x7, 0x1, 0x8A, 0x1, 0xA7, 0x1, 0x53, 0xFF, 0xFF, 0x0, 0x50, 0xFF, 0xEC, 0x3, 0xF5, 0x5, 0xDD, 0x0, 0x26, 0x0, 0x48, 0x0, 0x0, 0x0, 0x7, 0x1, 0x8A, 0x1, 0x10, 0x0, 0x8, 0xFF, 0xFF, 0x0, 0x66, 0xFF, 0xEC, 0x4, 0xEC, 0x7, 0x4D, 0x0, 0x26, 0x0, 0x28, 0x0, 0x0, 0x0, 0x7, 0x1, 0x78, 0x0, 0xD9, 0x1, 0x4B, 0xFF, 0xFF, 0x0, 0x50, 0xFF, 0xEC, 0x3, 0xF5, 0x6, 0x2, 0x0, 0x26, 0x0, 0x48, 0x0, 0x0, 0x0, 0x6, 0x1, 0x78, 0x42, 0x0, 0xFF, 0xFF, 0x0, 0x95, 0x0, 0x0, 0x4, 0xD2, 0x7, 0x40, 0x0, 0x26, 0x0, 0x29, 0x0, 0x0, 0x0, 0x7, 0x1, 0x78, 0x0, 0x68, 0x1, 0x3E, 0xFF, 0xFF, 0x0, 0x50, 0xFF, 0xEC, 0x5, 0x5B, 0x6, 0x1, 0x0, 0x26, 0x0, 0x49, 0x0, 0x0, 0x0, 0x7, 0x7, 0x25, 0x4, 0x1, 0x4, 0xFB, 0xFF, 0xFF, 0x0, 0x95, 0x0, 0x0, 0x4, 0x4D, 0x6, 0xEB, 0x0, 0x26, 0x0, 0x2A, 0x0, 0x0, 0x0, 0x7, 0x0, 0x71, 0x0, 0x84, 0x1, 0x41, 0xFF, 0xFF, 0x0, 0x54, 0xFF, 0xEC, 0x4, 0xC, 0x5, 0xAD, 0x0, 0x26, 0x0, 0x4A, 0x0, 0x0, 0x0, 0x6, 0x0, 0x71, 0x3C, 0x3, 0xFF, 0xFF, 0x0, 0x95, 0x0, 0x0, 0x4, 0x4D, 0x7, 0x25, 0x0, 0x26, 0x0, 0x2A, 0x0, 0x0, 0x0, 0x7, 0x1, 0x89, 0x0, 0xBB, 0x1, 0x3E, 0xFF, 0xFF, 0x0, 0x54, 0xFF, 0xEC, 0x4, 0xC, 0x5, 0xE7, 0x0, 0x26, 0x0, 0x4A, 0x0, 0x0, 0x0, 0x6, 0x1, 0x89, 0x73, 0x0, 0xFF, 0xFF, 0x0, 0x95, 0x0, 0x0, 0x4, 0x4D, 0x7, 0x1B, 0x0, 0x26, 0x0, 0x2A, 0x0, 0x0, 0x0, 0x7, 0x1, 0x8A, 0x1, 0x6E, 0x1, 0x46, 0xFF, 0xFF, 0x0, 0x54, 0xFF, 0xEC, 0x4, 0xC, 0x5, 0xDD, 0x0, 0x26, 0x0, 0x4A, 0x0, 0x0, 0x0, 0x7, 0x1, 0x8A, 0x1, 0x26, 0x0, 0x8, 0x0, 0x1, 0x0, 0x95, 0xFE, 0x52, 0x4, 0x4D, 0x5, 0xB0, 0x0, 0x1B, 0x0, 0x0, 0x1, 0x6, 0x23, 0x22, 0x26, 0x35, 0x34, 0x37, 0x21, 0x11, 0x21, 0x15, 0x21, 0x11, 0x21, 0x15, 0x21, 0x11, 0x21, 0x15, 0x23, 0x6, 0x6, 0x15, 0x14, 0x33, 0x32, 0x37, 0x3, 0xF1, 0x49, 0x5C, 0x58, 0x7B, 0x88, 0xFD, 0x94, 0x3, 0xB1, 0xFD, 0x4B, 0x2, 0x56, 0xFD, 0xAA, 0x2, 0xBC, 0x70, 0x45, 0x5D, 0x47, 0x2C, 0x2E, 0xFE, 0x7E, 0x2C, 0x66, 0x63, 0x85, 0x60, 0x5, 0xB0, 0xCB, 0xFE, 0x6D, 0xC7, 0xFE, 0x3F, 0xCA, 0x2D, 0x5F, 0x3B, 0x44, 0x17, 0x0, 0x2, 0x0, 0x54, 0xFE, 0x6D, 0x4, 0xC, 0x4, 0x4E, 0x0, 0x7, 0x0, 0x2B, 0x0, 0x0, 0x1, 0x22, 0x6, 0x7, 0x21, 0x35, 0x26, 0x26, 0x13, 0x6, 0x23, 0x22, 0x26, 0x35, 0x34, 0x37, 0x26, 0x2, 0x35, 0x35, 0x10, 0x0, 0x33, 0x32, 0x12, 0x15, 0x15, 0x21, 0x16, 0x16, 0x33, 0x32, 0x37, 0x17, 0x6, 0x7, 0x31, 0x6, 0x6, 0x15, 0x14, 0x33, 0x32, 0x37, 0x2, 0x3D, 0x64, 0x7A, 0x12, 0x1, 0xCE, 0x4, 0x61, 0x9E, 0x49, 0x5C, 0x58, 0x7B, 0x51, 0xDD, 0xFC, 0x1, 0x1B, 0xCE, 0xEC, 0xE3, 0xFD, 0x3D, 0xA, 0x95, 0x80, 0xA7, 0x68, 0x83, 0x46, 0x74, 0x45, 0x5D, 0x47, 0x2C, 0x2E, 0x3, 0x8B, 0x8C, 0x7C, 0x12, 0x5F, 0x97, 0xFB, 0xE, 0x2C, 0x66, 0x63, 0x67, 0x50, 0xF, 0x1, 0x27, 0xD4, 0x29, 0x1, 0x1, 0x1, 0x2D, 0xFE, 0xD4, 0xEA, 0x67, 0x7D, 0xA5, 0x86, 0x7D, 0x67, 0x36, 0x2D, 0x5F, 0x3B, 0x44, 0x17, 0xFF, 0xFF, 0x0, 0x95, 0x0, 0x0, 0x4, 0x4D, 0x7, 0x40, 0x0, 0x26, 0x0, 0x2A, 0x0, 0x0, 0x0, 0x7, 0x1, 0x78, 0x0, 0xA0, 0x1, 0x3E, 0xFF, 0xFF, 0x0, 0x54, 0xFF, 0xEC, 0x4, 0xC, 0x6, 0x2, 0x0, 0x26, 0x0, 0x4A, 0x0, 0x0, 0x0, 0x6, 0x1, 0x78, 0x58, 0x0, 0xFF, 0xFF, 0x0, 0x6A, 0xFF, 0xEC, 0x4, 0xF0, 0x7, 0x4C, 0x0, 0x26, 0x0, 0x2C, 0x0, 0x0, 0x0, 0x7, 0x1, 0x77, 0x0, 0xBE, 0x1, 0x4B, 0xFF, 0xFF, 0x0, 0x52, 0xFE, 0x56, 0x4, 0xD, 0x6, 0x1, 0x0, 0x26, 0x0, 0x4C, 0x0, 0x0, 0x0, 0x6, 0x1, 0x77, 0x40, 0x0, 0xFF, 0xFF, 0x0, 0x6A, 0xFF, 0xEC, 0x4, 0xF0, 0x7, 0x32, 0x0, 0x26, 0x0, 0x2C, 0x0, 0x0, 0x0, 0x7, 0x1, 0x89, 0x0, 0xF1, 0x1, 0x4B, 0xFF, 0xFF, 0x0, 0x52, 0xFE, 0x56, 0x4, 0xD, 0x5, 0xE7, 0x0, 0x26, 0x0, 0x4C, 0x0, 0x0, 0x0, 0x6, 0x1, 0x89, 0x73, 0x0, 0xFF, 0xFF, 0x0, 0x6A, 0xFF, 0xEC, 0x4, 0xF0, 0x7, 0x28, 0x0, 0x26, 0x0, 0x2C, 0x0, 0x0, 0x0, 0x7, 0x1, 0x8A, 0x1, 0xA4, 0x1, 0x53, 0xFF, 0xFF, 0x0, 0x52, 0xFE, 0x56, 0x4, 0xD, 0x5, 0xDD, 0x0, 0x26, 0x0, 0x4C, 0x0, 0x0, 0x0, 0x7, 0x1, 0x8A, 0x1, 0x26, 0x0, 0x8, 0xFF, 0xFF, 0x0, 0x6A, 0xFD, 0xF0, 0x4, 0xF0, 0x5, 0xC4, 0x0, 0x26, 0x0, 0x2C, 0x0, 0x0, 0x0, 0x7, 0x7, 0x25, 0x1, 0xE4, 0xFE, 0x8A, 0xFF, 0xFF, 0x0, 0x52, 0xFE, 0x56, 0x4, 0xD, 0x6, 0xA8, 0x0, 0x26, 0x0, 0x4C, 0x0, 0x0, 0x0, 0x7, 0x7, 0xB2, 0x1, 0x28, 0x0, 0x7D, 0xFF, 0xFF, 0x0, 0x95, 0x0, 0x0, 0x5, 0x19, 0x7, 0x3F, 0x0, 0x26, 0x0, 0x2D, 0x0, 0x0, 0x0, 0x7, 0x1, 0x77, 0x0, 0xE2, 0x1, 0x3E, 0xFF, 0xFF, 0x0, 0x7A, 0x0, 0x0, 0x3, 0xF9, 0x7, 0x5F, 0x0, 0x26, 0x0, 0x4D, 0x0, 0x0, 0x0, 0x7, 0x1, 0x77, 0x0, 0x17, 0x1, 0x5E, 0xFF, 0xFF, 0xFF, 0xB2, 0x0, 0x0, 0x2, 0x90, 0x7, 0x33, 0x0, 0x26, 0x0, 0x2E, 0x0, 0x0, 0x0, 0x7, 0x1, 0x8D, 0xFF, 0x38, 0x1, 0x3E, 0xFF, 0xFF, 0xFF, 0x9D, 0x0, 0x0, 0x2, 0x7B, 0x5, 0xEE, 0x0, 0x26, 0x0, 0x8E, 0x0, 0x0, 0x0, 0x7, 0x1, 0x8D, 0xFF, 0x23, 0xFF, 0xF9, 0xFF, 0xFF, 0xFF, 0xCE, 0x0, 0x0, 0x2, 0x7C, 0x6, 0xEB, 0x0, 0x26, 0x0, 0x2E, 0x0, 0x0, 0x0, 0x7, 0x0, 0x71, 0xFF, 0x32, 0x1, 0x41, 0xFF, 0xFF, 0xFF, 0xB9, 0x0, 0x0, 0x2, 0x67, 0x5, 0xA6, 0x0, 0x26, 0x0, 0x8E, 0x0, 0x0, 0x0, 0x7, 0x0, 0x71, 0xFF, 0x1D, 0xFF, 0xFC, 0xFF, 0xFF, 0xFF, 0xDF, 0x0, 0x0, 0x2, 0x64, 0x7, 0x25, 0x0, 0x26, 0x0, 0x2E, 0x0, 0x0, 0x0, 0x7, 0x1, 0x89, 0xFF, 0x69, 0x1, 0x3E, 0xFF, 0xFF, 0xFF, 0xCA, 0x0, 0x0, 0x2, 0x4F, 0x5, 0xE0, 0x0, 0x26, 0x0, 0x8E, 0x0, 0x0, 0x0, 0x7, 0x1, 0x89, 0xFF, 0x54, 0xFF, 0xF9, 0xFF, 0xFF, 0x0, 0x15, 0xFE, 0x59, 0x1, 0xA0, 0x5, 0xB0, 0x0, 0x26, 0x0, 0x2E, 0x0, 0x0, 0x0, 0x6, 0x1, 0x8C, 0xEC, 0x7, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0x52, 0x1, 0x91, 0x5, 0xD5, 0x0, 0x26, 0x0, 0x4E, 0x0, 0x0, 0x0, 0x6, 0x1, 0x8C, 0xD5, 0x0, 0xFF, 0xFF, 0x0, 0x9E, 0x0, 0x0, 0x1, 0xA4, 0x7, 0x1B, 0x0, 0x26, 0x0, 0x2E, 0x0, 0x0, 0x0, 0x7, 0x1, 0x8A, 0x0, 0x1C, 0x1, 0x46, 0xFF, 0xFF, 0x0, 0xA4, 0xFF, 0xEC, 0x6, 0x27, 0x5, 0xB0, 0x0, 0x26, 0x0, 0x2E, 0x0, 0x0, 0x0, 0x7, 0x0, 0x2F, 0x2, 0x42, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x7D, 0xFE, 0x4B, 0x3, 0x92, 0x5, 0xD5, 0x0, 0x26, 0x0, 0x4E, 0x0, 0x0, 0x0, 0x7, 0x0, 0x4F, 0x2, 0xC, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x2D, 0xFF, 0xEC, 0x4, 0xAB, 0x7, 0x38, 0x0, 0x26, 0x0, 0x2F, 0x0, 0x0, 0x0, 0x7, 0x1, 0x77, 0x1, 0x67, 0x1, 0x37, 0xFF, 0xFF, 0xFF, 0xB5, 0xFE, 0x4B, 0x2, 0x6A, 0x5, 0xDF, 0x0, 0x26, 0x0, 0xEC, 0x0, 0x0, 0x0, 0x7, 0x1, 0x77, 0xFF, 0x26, 0xFF, 0xDE, 0xFF, 0xFF, 0x0, 0x95, 0xFE, 0x43, 0x5, 0x18, 0x5, 0xB0, 0x0, 0x26, 0x0, 0x30, 0x0, 0x0, 0x0, 0x7, 0x7, 0x25, 0x1, 0x9D, 0xFE, 0xDD, 0xFF, 0xFF, 0x0, 0x7D, 0xFE, 0x2D, 0x4, 0x37, 0x6, 0x0, 0x0, 0x26, 0x0, 0x50, 0x0, 0x0, 0x0, 0x7, 0x7, 0x25, 0x1, 0x2D, 0xFE, 0xC7, 0xFF, 0xFF, 0x0, 0x95, 0x0, 0x0, 0x4, 0x27, 0x7, 0x36, 0x0, 0x26, 0x0, 0x31, 0x0, 0x0, 0x0, 0x7, 0x0, 0x76, 0x0, 0x28, 0x1, 0x36, 0xFF, 0xFF, 0x0, 0x8B, 0x0, 0x0, 0x2, 0x63, 0x7, 0x91, 0x0, 0x26, 0x0, 0x51, 0x0, 0x0, 0x0, 0x7, 0x0, 0x76, 0x0, 0x1A, 0x1, 0x91, 0xFF, 0xFF, 0x0, 0x95, 0xFE, 0x1, 0x4, 0x27, 0x5, 0xB0, 0x0, 0x26, 0x0, 0x31, 0x0, 0x0, 0x0, 0x7, 0x7, 0x25, 0x1, 0x6E, 0xFE, 0x9B, 0xFF, 0xFF, 0x0, 0x57, 0xFE, 0x1, 0x1, 0x7F, 0x6, 0x0, 0x0, 0x26, 0x0, 0x51, 0x0, 0x0, 0x0, 0x7, 0x7, 0x25, 0x0, 0x11, 0xFE, 0x9B, 0xFF, 0xFF, 0x0, 0x95, 0x0, 0x0, 0x4, 0x27, 0x5, 0xB0, 0x0, 0x26, 0x0, 0x31, 0x0, 0x0, 0x0, 0x7, 0x7, 0x25, 0x2, 0x9, 0x4, 0xAA, 0xFF, 0xFF, 0x0, 0x8C, 0x0, 0x0, 0x2, 0xE6, 0x6, 0x1, 0x0, 0x26, 0x0, 0x51, 0x0, 0x0, 0x0, 0x7, 0x7, 0x25, 0x1, 0x8C, 0x4, 0xFB, 0xFF, 0xFF, 0x0, 0x95, 0x0, 0x0, 0x4, 0x27, 0x5, 0xB0, 0x0, 0x26, 0x0, 0x31, 0x0, 0x0, 0x0, 0x7, 0x1, 0x8A, 0x1, 0xCA, 0xFD, 0xD4, 0xFF, 0xFF, 0x0, 0x8C, 0x0, 0x0, 0x2, 0xEC, 0x6, 0x0, 0x0, 0x26, 0x0, 0x51, 0x0, 0x0, 0x0, 0x7, 0x1, 0x8A, 0x1, 0x64, 0xFD, 0xAF, 0xFF, 0xFF, 0x0, 0x95, 0x0, 0x0, 0x5, 0x18, 0x7, 0x36, 0x0, 0x26, 0x0, 0x33, 0x0, 0x0, 0x0, 0x7, 0x0, 0x76, 0x1, 0xEA, 0x1, 0x36, 0xFF, 0xFF, 0x0, 0x7A, 0x0, 0x0, 0x3, 0xF9, 0x6, 0x0, 0x0, 0x26, 0x0, 0x53, 0x0, 0x0, 0x0, 0x7, 0x0, 0x76, 0x1, 0x52, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x95, 0xFD, 0xFE, 0x5, 0x18, 0x5, 0xB0, 0x0, 0x26, 0x0, 0x33, 0x0, 0x0, 0x0, 0x7, 0x7, 0x25, 0x1, 0xDC, 0xFE, 0x98, 0xFF, 0xFF, 0x0, 0x7A, 0xFE, 0x1, 0x3, 0xF9, 0x4, 0x4E, 0x0, 0x26, 0x0, 0x53, 0x0, 0x0, 0x0, 0x7, 0x7, 0x25, 0x1, 0x42, 0xFE, 0x9B, 0xFF, 0xFF, 0x0, 0x95, 0x0, 0x0, 0x5, 0x18, 0x7, 0x38, 0x0, 0x26, 0x0, 0x33, 0x0, 0x0, 0x0, 0x7, 0x1, 0x78, 0x1, 0x3, 0x1, 0x36, 0xFF, 0xFF, 0x0, 0x7A, 0x0, 0x0, 0x3, 0xF9, 0x6, 0x2, 0x0, 0x26, 0x0, 0x53, 0x0, 0x0, 0x0, 0x6, 0x1, 0x78, 0x6B, 0x0, 0xFF, 0xFF, 0xFF, 0xA4, 0x0, 0x0, 0x3, 0xF9, 0x6, 0x2, 0x0, 0x26, 0x0, 0x53, 0x0, 0x0, 0x0, 0x7, 0x7, 0x25, 0xFF, 0x5E, 0x4, 0xFC, 0xFF, 0xFF, 0x0, 0x66, 0xFF, 0xEC, 0x5, 0x1F, 0x6, 0xE3, 0x0, 0x26, 0x0, 0x34, 0x0, 0x0, 0x0, 0x7, 0x0, 0x71, 0x0, 0xD5, 0x1, 0x39, 0xFF, 0xFF, 0x0, 0x50, 0xFF, 0xEC, 0x4, 0x3E, 0x5, 0xAD, 0x0, 0x26, 0x0, 0x54, 0x0, 0x0, 0x0, 0x6, 0x0, 0x71, 0x51, 0x3, 0xFF, 0xFF, 0x0, 0x66, 0xFF, 0xEC, 0x5, 0x1F, 0x7, 0x1D, 0x0, 0x26, 0x0, 0x34, 0x0, 0x0, 0x0, 0x7, 0x1, 0x89, 0x1, 0xC, 0x1, 0x36, 0xFF, 0xFF, 0x0, 0x50, 0xFF, 0xEC, 0x4, 0x3E, 0x5, 0xE7, 0x0, 0x26, 0x0, 0x54, 0x0, 0x0, 0x0, 0x7, 0x1, 0x89, 0x0, 0x88, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x66, 0xFF, 0xEC, 0x5, 0x1F, 0x7, 0x35, 0x0, 0x26, 0x0, 0x34, 0x0, 0x0, 0x0, 0x7, 0x1, 0x8E, 0x1, 0x63, 0x1, 0x36, 0xFF, 0xFF, 0x0, 0x50, 0xFF, 0xEC, 0x4, 0x3E, 0x5, 0xFF, 0x0, 0x26, 0x0, 0x54, 0x0, 0x0, 0x0, 0x7, 0x1, 0x8E, 0x0, 0xDF, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x95, 0x0, 0x0, 0x4, 0xDE, 0x7, 0x36, 0x0, 0x26, 0x0, 0x37, 0x0, 0x0, 0x0, 0x7, 0x0, 0x76, 0x1, 0x70, 0x1, 0x36, 0xFF, 0xFF, 0x0, 0x7D, 0x0, 0x0, 0x2, 0xF6, 0x6, 0x0, 0x0, 0x26, 0x0, 0x57, 0x0, 0x0, 0x0, 0x7, 0x0, 0x76, 0x0, 0xAD, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x95, 0xFE, 0x1, 0x4, 0xDE, 0x5, 0xB0, 0x0, 0x26, 0x0, 0x37, 0x0, 0x0, 0x0, 0x7, 0x7, 0x25, 0x1, 0x6F, 0xFE, 0x9B, 0xFF, 0xFF, 0x0, 0x51, 0xFE, 0x1, 0x2, 0xB5, 0x4, 0x4E, 0x0, 0x26, 0x0, 0x57, 0x0, 0x0, 0x0, 0x7, 0x7, 0x25, 0x0, 0xB, 0xFE, 0x9B, 0xFF, 0xFF, 0x0, 0x95, 0x0, 0x0, 0x4, 0xDE, 0x7, 0x38, 0x0, 0x26, 0x0, 0x37, 0x0, 0x0, 0x0, 0x7, 0x1, 0x78, 0x0, 0x89, 0x1, 0x36, 0xFF, 0xFF, 0x0, 0x38, 0x0, 0x0, 0x2, 0xFB, 0x6, 0x2, 0x0, 0x26, 0x0, 0x57, 0x0, 0x0, 0x0, 0x6, 0x1, 0x78, 0xC6, 0x0, 0xFF, 0xFF, 0x0, 0x4A, 0xFF, 0xEC, 0x4, 0x8A, 0x7, 0x36, 0x0, 0x26, 0x0, 0x38, 0x0, 0x0, 0x0, 0x7, 0x0, 0x76, 0x1, 0x8E, 0x1, 0x36, 0xFF, 0xFF, 0x0, 0x4C, 0xFF, 0xEC, 0x3, 0xCA, 0x6, 0x0, 0x0, 0x26, 0x0, 0x58, 0x0, 0x0, 0x0, 0x7, 0x0, 0x76, 0x1, 0x39, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x4A, 0xFF, 0xEC, 0x4, 0x8A, 0x7, 0x37, 0x0, 0x26, 0x0, 0x38, 0x0, 0x0, 0x0, 0x7, 0x1, 0x77, 0x0, 0x8F, 0x1, 0x36, 0xFF, 0xFF, 0x0, 0x4C, 0xFF, 0xEC, 0x3, 0xCA, 0x6, 0x1, 0x0, 0x26, 0x0, 0x58, 0x0, 0x0, 0x0, 0x6, 0x1, 0x77, 0x3A, 0x0, 0xFF, 0xFF, 0x0, 0x4A, 0xFE, 0x40, 0x4, 0x8A, 0x5, 0xC4, 0x0, 0x26, 0x0, 0x38, 0x0, 0x0, 0x0, 0x7, 0x0, 0x7A, 0x1, 0x9E, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x4C, 0xFE, 0x36, 0x3, 0xCA, 0x4, 0x4E, 0x0, 0x26, 0x0, 0x58, 0x0, 0x0, 0x0, 0x7, 0x0, 0x7A, 0x1, 0x44, 0xFF, 0xF6, 0xFF, 0xFF, 0x0, 0x4A, 0xFD, 0xF7, 0x4, 0x8A, 0x5, 0xC4, 0x0, 0x26, 0x0, 0x38, 0x0, 0x0, 0x0, 0x7, 0x7, 0x25, 0x1, 0x8A, 0xFE, 0x91, 0xFF, 0xFF, 0x0, 0x4C, 0xFD, 0xED, 0x3, 0xCA, 0x4, 0x4E, 0x0, 0x26, 0x0, 0x58, 0x0, 0x0, 0x0, 0x7, 0x7, 0x25, 0x1, 0x30, 0xFE, 0x87, 0xFF, 0xFF, 0x0, 0x4A, 0xFF, 0xEC, 0x4, 0x8A, 0x7, 0x38, 0x0, 0x26, 0x0, 0x38, 0x0, 0x0, 0x0, 0x7, 0x1, 0x78, 0x0, 0xA7, 0x1, 0x36, 0xFF, 0xFF, 0x0, 0x4C, 0xFF, 0xEC, 0x3, 0xCA, 0x6, 0x2, 0x0, 0x26, 0x0, 0x58, 0x0, 0x0, 0x0, 0x6, 0x1, 0x78, 0x52, 0x0, 0xFF, 0xFF, 0x0, 0x2D, 0xFD, 0xFB, 0x4, 0xB0, 0x5, 0xB0, 0x0, 0x26, 0x0, 0x39, 0x0, 0x0, 0x0, 0x7, 0x7, 0x25, 0x1, 0x78, 0xFE, 0x95, 0xFF, 0xFF, 0x0, 0x8, 0xFD, 0xF7, 0x2, 0x73, 0x5, 0x41, 0x0, 0x26, 0x0, 0x59, 0x0, 0x0, 0x0, 0x7, 0x7, 0x25, 0x0, 0xC9, 0xFE, 0x91, 0xFF, 0xFF, 0x0, 0x2D, 0xFE, 0x44, 0x4, 0xB0, 0x5, 0xB0, 0x0, 0x26, 0x0, 0x39, 0x0, 0x0, 0x0, 0x7, 0x0, 0x7A, 0x1, 0x8C, 0x0, 0x4, 0xFF, 0xFF, 0x0, 0x8, 0xFE, 0x40, 0x2, 0xA6, 0x5, 0x41, 0x0, 0x26, 0x0, 0x59, 0x0, 0x0, 0x0, 0x7, 0x0, 0x7A, 0x0, 0xDD, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x2D, 0x0, 0x0, 0x4, 0xB0, 0x7, 0x38, 0x0, 0x26, 0x0, 0x39, 0x0, 0x0, 0x0, 0x7, 0x1, 0x78, 0x0, 0x99, 0x1, 0x36, 0xFF, 0xFF, 0x0, 0x8, 0xFF, 0xEC, 0x3, 0x27, 0x6, 0x82, 0x0, 0x26, 0x0, 0x59, 0x0, 0x0, 0x0, 0x7, 0x7, 0x25, 0x1, 0xCD, 0x5, 0x7C, 0xFF, 0xFF, 0x0, 0x7E, 0xFF, 0xEC, 0x4, 0xBE, 0x7, 0x2B, 0x0, 0x26, 0x0, 0x3A, 0x0, 0x0, 0x0, 0x7, 0x1, 0x8D, 0x0, 0xB2, 0x1, 0x36, 0xFF, 0xFF, 0x0, 0x77, 0xFF, 0xEC, 0x3, 0xF7, 0x5, 0xF5, 0x0, 0x26, 0x0, 0x5A, 0x0, 0x0, 0x0, 0x6, 0x1, 0x8D, 0x50, 0x0, 0xFF, 0xFF, 0x0, 0x7E, 0xFF, 0xEC, 0x4, 0xBE, 0x6, 0xE3, 0x0, 0x26, 0x0, 0x3A, 0x0, 0x0, 0x0, 0x7, 0x0, 0x71, 0x0, 0xAC, 0x1, 0x39, 0xFF, 0xFF, 0x0, 0x77, 0xFF, 0xEC, 0x3, 0xF7, 0x5, 0xAD, 0x0, 0x26, 0x0, 0x5A, 0x0, 0x0, 0x0, 0x6, 0x0, 0x71, 0x4A, 0x3, 0xFF, 0xFF, 0x0, 0x7E, 0xFF, 0xEC, 0x4, 0xBE, 0x7, 0x1D, 0x0, 0x26, 0x0, 0x3A, 0x0, 0x0, 0x0, 0x7, 0x1, 0x89, 0x0, 0xE3, 0x1, 0x36, 0xFF, 0xFF, 0x0, 0x77, 0xFF, 0xEC, 0x3, 0xF7, 0x5, 0xE7, 0x0, 0x26, 0x0, 0x5A, 0x0, 0x0, 0x0, 0x7, 0x1, 0x89, 0x0, 0x81, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x7E, 0xFF, 0xEC, 0x4, 0xBE, 0x7, 0x94, 0x0, 0x26, 0x0, 0x3A, 0x0, 0x0, 0x0, 0x7, 0x1, 0x8B, 0x1, 0x45, 0x1, 0x6A, 0xFF, 0xFF, 0x0, 0x77, 0xFF, 0xEC, 0x3, 0xF7, 0x6, 0x5E, 0x0, 0x26, 0x0, 0x5A, 0x0, 0x0, 0x0, 0x7, 0x1, 0x8B, 0x0, 0xE3, 0x0, 0x34, 0xFF, 0xFF, 0x0, 0x7E, 0xFF, 0xEC, 0x4, 0xBE, 0x7, 0x35, 0x0, 0x26, 0x0, 0x3A, 0x0, 0x0, 0x0, 0x7, 0x1, 0x8E, 0x1, 0x3A, 0x1, 0x36, 0xFF, 0xFF, 0x0, 0x77, 0xFF, 0xEC, 0x4, 0x2F, 0x5, 0xFF, 0x0, 0x26, 0x0, 0x5A, 0x0, 0x0, 0x0, 0x7, 0x1, 0x8E, 0x0, 0xD8, 0x0, 0x0, 0x0, 0x1, 0x0, 0x7E, 0xFE, 0x8A, 0x4, 0xBE, 0x5, 0xB0, 0x0, 0x20, 0x0, 0x0, 0x1, 0x22, 0x26, 0x35, 0x34, 0x37, 0x22, 0x24, 0x27, 0x11, 0x33, 0x11, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x11, 0x33, 0x11, 0x14, 0x6, 0x7, 0x6, 0x6, 0x15, 0x14, 0x33, 0x32, 0x37, 0x17, 0x6, 0x3, 0x3E, 0x58, 0x7B, 0x36, 0xED, 0xFE, 0xCB, 0x1, 0xFB, 0x9F, 0x85, 0x87, 0x9D, 0xFD, 0x92, 0x77, 0x3B, 0x4D, 0x47, 0x2C, 0x2E, 0x15, 0x49, 0xFE, 0x8A, 0x66, 0x63, 0x54, 0x45, 0xFC, 0xF8, 0x3, 0xD0, 0xFC, 0x33, 0x9C, 0x91, 0x91, 0x9C, 0x3, 0xCD, 0xFC, 0x33, 0xA5, 0xDF, 0x39, 0x28, 0x58, 0x35, 0x44, 0x17, 0x8E, 0x2C, 0x0, 0x1, 0x0, 0x77, 0xFE, 0x52, 0x3, 0xF7, 0x4, 0x3A, 0x0, 0x20, 0x0, 0x0, 0x1, 0x6, 0x23, 0x22, 0x26, 0x35, 0x34, 0x37, 0x27, 0x6, 0x23, 0x22, 0x26, 0x27, 0x11, 0x33, 0x11, 0x14, 0x16, 0x33, 0x32, 0x37, 0x11, 0x33, 0x11, 0x23, 0x6, 0x6, 0x15, 0x14, 0x33, 0x32, 0x37, 0x3, 0xF7, 0x49, 0x5C, 0x58, 0x7B, 0x93, 0x6, 0x6A, 0xC6, 0x9E, 0xC6, 0x1, 0xF3, 0x67, 0x45, 0xAE, 0x40, 0xF3, 0x14, 0x45, 0x5D, 0x47, 0x2C, 0x2E, 0xFE, 0x7E, 0x2C, 0x66, 0x63, 0x8C, 0x60, 0x63, 0x7E, 0xBA, 0xD5, 0x2, 0xBF, 0xFD, 0x43, 0x75, 0x55, 0x7D, 0x3, 0xA, 0xFB, 0xC6, 0x2D, 0x5F, 0x3B, 0x44, 0x17, 0xFF, 0xFF, 0x0, 0x31, 0x0, 0x0, 0x6, 0xE5, 0x7, 0x37, 0x0, 0x26, 0x0, 0x3C, 0x0, 0x0, 0x0, 0x7, 0x1, 0x77, 0x1, 0xA7, 0x1, 0x36, 0xFF, 0xFF, 0x0, 0x22, 0x0, 0x0, 0x5, 0xCD, 0x6, 0x1, 0x0, 0x26, 0x0, 0x5C, 0x0, 0x0, 0x0, 0x7, 0x1, 0x77, 0x1, 0xA, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x8, 0x0, 0x0, 0x4, 0xD6, 0x7, 0x37, 0x0, 0x26, 0x0, 0x3E, 0x0, 0x0, 0x0, 0x7, 0x1, 0x77, 0x0, 0x88, 0x1, 0x36, 0xFF, 0xFF, 0x0, 0xC, 0xFE, 0x4B, 0x3, 0xD7, 0x6, 0x1, 0x0, 0x26, 0x0, 0x5E, 0x0, 0x0, 0x0, 0x6, 0x1, 0x77, 0x17, 0x0, 0xFF, 0xFF, 0x0, 0x8, 0x0, 0x0, 0x4, 0xD6, 0x7, 0x3, 0x0, 0x26, 0x0, 0x3E, 0x0, 0x0, 0x0, 0x7, 0x0, 0x6B, 0x0, 0xB4, 0x1, 0x36, 0xFF, 0xFF, 0x0, 0x50, 0x0, 0x0, 0x4, 0x8C, 0x7, 0x36, 0x0, 0x26, 0x0, 0x3F, 0x0, 0x0, 0x0, 0x7, 0x0, 0x76, 0x1, 0x83, 0x1, 0x36, 0xFF, 0xFF, 0x0, 0x52, 0x0, 0x0, 0x3, 0xC0, 0x6, 0x0, 0x0, 0x26, 0x0, 0x5F, 0x0, 0x0, 0x0, 0x7, 0x0, 0x76, 0x1, 0x1B, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x50, 0x0, 0x0, 0x4, 0x8C, 0x7, 0x13, 0x0, 0x26, 0x0, 0x3F, 0x0, 0x0, 0x0, 0x7, 0x1, 0x8A, 0x1, 0x6A, 0x1, 0x3E, 0xFF, 0xFF, 0x0, 0x52, 0x0, 0x0, 0x3, 0xC0, 0x5, 0xDD, 0x0, 0x26, 0x0, 0x5F, 0x0, 0x0, 0x0, 0x7, 0x1, 0x8A, 0x1, 0x2, 0x0, 0x8, 0xFF, 0xFF, 0x0, 0x50, 0x0, 0x0, 0x4, 0x8C, 0x7, 0x38, 0x0, 0x26, 0x0, 0x3F, 0x0, 0x0, 0x0, 0x7, 0x1, 0x78, 0x0, 0x9C, 0x1, 0x36, 0xFF, 0xFF, 0x0, 0x52, 0x0, 0x0, 0x3, 0xC0, 0x6, 0x2, 0x0, 0x26, 0x0, 0x5F, 0x0, 0x0, 0x0, 0x6, 0x1, 0x78, 0x34, 0x0, 0xFF, 0xFF, 0xFF, 0xF6, 0x0, 0x0, 0x7, 0x57, 0x7, 0x42, 0x0, 0x26, 0x0, 0x82, 0x0, 0x0, 0x0, 0x7, 0x0, 0x76, 0x2, 0xBB, 0x1, 0x42, 0xFF, 0xFF, 0x0, 0x48, 0xFF, 0xEB, 0x6, 0x85, 0x6, 0x1, 0x0, 0x26, 0x0, 0x87, 0x0, 0x0, 0x0, 0x7, 0x0, 0x76, 0x2, 0x70, 0x0, 0x1, 0xFF, 0xFF, 0x0, 0x6A, 0xFF, 0xA1, 0x5, 0x22, 0x7, 0x80, 0x0, 0x26, 0x0, 0x84, 0x0, 0x0, 0x0, 0x7, 0x0, 0x76, 0x1, 0xDF, 0x1, 0x80, 0xFF, 0xFF, 0x0, 0x50, 0xFF, 0x76, 0x4, 0x3E, 0x5, 0xFD, 0x0, 0x26, 0x0, 0x8A, 0x0, 0x0, 0x0, 0x7, 0x0, 0x76, 0x1, 0x30, 0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0xA6, 0x0, 0x0, 0x4, 0x2B, 0x4, 0x8D, 0x0, 0x26, 0x7, 0xAE, 0x0, 0x0, 0x0, 0x7, 0x7, 0xA4, 0xFF, 0x16, 0xFF, 0x6D, 0xFF, 0xFF, 0xFF, 0xA6, 0x0, 0x0, 0x4, 0x2B, 0x4, 0x8D, 0x0, 0x26, 0x7, 0xAE, 0x0, 0x0, 0x0, 0x7, 0x7, 0xA4, 0xFF, 0x16, 0xFF, 0x6D, 0xFF, 0xFF, 0x0, 0x25, 0x0, 0x0, 0x4, 0x16, 0x4, 0x8D, 0x0, 0x26, 0x7, 0x54, 0x0, 0x0, 0x0, 0x6, 0x7, 0xA4, 0x32, 0xBC, 0xFF, 0xFF, 0x0, 0x9, 0x0, 0x0, 0x4, 0x94, 0x6, 0x1E, 0x0, 0x26, 0x7, 0xB1, 0x0, 0x0, 0x0, 0x7, 0x0, 0x45, 0x0, 0xC6, 0x0, 0x1E, 0xFF, 0xFF, 0x0, 0x9, 0x0, 0x0, 0x4, 0x94, 0x6, 0x1E, 0x0, 0x26, 0x7, 0xB1, 0x0, 0x0, 0x0, 0x7, 0x0, 0x76, 0x1, 0x65, 0x0, 0x1E, 0xFF, 0xFF, 0x0, 0x9, 0x0, 0x0, 0x4, 0x94, 0x6, 0x1F, 0x0, 0x26, 0x7, 0xB1, 0x0, 0x0, 0x0, 0x6, 0x1, 0x77, 0x66, 0x1E, 0xFF, 0xFF, 0x0, 0x9, 0x0, 0x0, 0x4, 0x94, 0x6, 0x13, 0x0, 0x26, 0x7, 0xB1, 0x0, 0x0, 0x0, 0x6, 0x1, 0x8D, 0x68, 0x1E, 0xFF, 0xFF, 0x0, 0x9, 0x0, 0x0, 0x4, 0x94, 0x5, 0xEB, 0x0, 0x26, 0x7, 0xB1, 0x0, 0x0, 0x0, 0x7, 0x0, 0x6B, 0x0, 0x92, 0x0, 0x1E, 0xFF, 0xFF, 0x0, 0x9, 0x0, 0x0, 0x4, 0x94, 0x6, 0x7C, 0x0, 0x26, 0x7, 0xB1, 0x0, 0x0, 0x0, 0x7, 0x1, 0x8B, 0x0, 0xFB, 0x0, 0x52, 0xFF, 0xFF, 0x0, 0x9, 0x0, 0x0, 0x4, 0x94, 0x6, 0x99, 0x0, 0x26, 0x7, 0xB1, 0x0, 0x0, 0x0, 0x7, 0x7, 0xA5, 0x1, 0x1, 0x0, 0x3, 0xFF, 0xFF, 0x0, 0x50, 0xFE, 0x3F, 0x4, 0x44, 0x4, 0x9D, 0x0, 0x26, 0x7, 0xAF, 0x0, 0x0, 0x0, 0x7, 0x0, 0x7A, 0x1, 0x6B, 0xFF, 0xFF, 0xFF, 0xFF, 0x0, 0x76, 0x0, 0x0, 0x3, 0xB6, 0x6, 0x1E, 0x0, 0x26, 0x7, 0xA6, 0x0, 0x0, 0x0, 0x7, 0x0, 0x45, 0x0, 0x96, 0x0, 0x1E, 0xFF, 0xFF, 0x0, 0x76, 0x0, 0x0, 0x3, 0xB6, 0x6, 0x1E, 0x0, 0x26, 0x7, 0xA6, 0x0, 0x0, 0x0, 0x7, 0x0, 0x76, 0x1, 0x35, 0x0, 0x1E, 0xFF, 0xFF, 0x0, 0x76, 0x0, 0x0, 0x3, 0xB6, 0x6, 0x1F, 0x0, 0x26, 0x7, 0xA6, 0x0, 0x0, 0x0, 0x6, 0x1, 0x77, 0x36, 0x1E, 0xFF, 0xFF, 0x0, 0x76, 0x0, 0x0, 0x3, 0xB6, 0x5, 0xEB, 0x0, 0x26, 0x7, 0xA6, 0x0, 0x0, 0x0, 0x6, 0x0, 0x6B, 0x62, 0x1E, 0xFF, 0xFF, 0xFF, 0xA5, 0x0, 0x0, 0x1, 0x7E, 0x6, 0x1E, 0x0, 0x26, 0x7, 0x5F, 0x0, 0x0, 0x0, 0x7, 0x0, 0x45, 0xFF, 0x74, 0x0, 0x1E, 0xFF, 0xFF, 0x0, 0x84, 0x0, 0x0, 0x2, 0x5C, 0x6, 0x1E, 0x0, 0x26, 0x7, 0x5F, 0x0, 0x0, 0x0, 0x6, 0x0, 0x76, 0x13, 0x1E, 0xFF, 0xFF, 0xFF, 0xA9, 0x0, 0x0, 0x2, 0x58, 0x6, 0x1F, 0x0, 0x26, 0x7, 0x5F, 0x0, 0x0, 0x0, 0x7, 0x1, 0x77, 0xFF, 0x14, 0x0, 0x1E, 0xFF, 0xFF, 0xFF, 0x9E, 0x0, 0x0, 0x2, 0x64, 0x5, 0xEB, 0x0, 0x26, 0x7, 0x5F, 0x0, 0x0, 0x0, 0x7, 0x0, 0x6B, 0xFF, 0x40, 0x0, 0x1E, 0xFF, 0xFF, 0x0, 0x76, 0x0, 0x0, 0x4, 0x67, 0x6, 0x13, 0x0, 0x26, 0x7, 0x5A, 0x0, 0x0, 0x0, 0x7, 0x1, 0x8D, 0x0, 0x87, 0x0, 0x1E, 0xFF, 0xFF, 0x0, 0x50, 0xFF, 0xF0, 0x4, 0x6F, 0x6, 0x1E, 0x0, 0x26, 0x7, 0x59, 0x0, 0x0, 0x0, 0x7, 0x0, 0x45, 0x0, 0xD4, 0x0, 0x1E, 0xFF, 0xFF, 0x0, 0x50, 0xFF, 0xF0, 0x4, 0x6F, 0x6, 0x1E, 0x0, 0x26, 0x7, 0x59, 0x0, 0x0, 0x0, 0x7, 0x0, 0x76, 0x1, 0x73, 0x0, 0x1E, 0xFF, 0xFF, 0x0, 0x50, 0xFF, 0xF0, 0x4, 0x6F, 0x6, 0x1F, 0x0, 0x26, 0x7, 0x59, 0x0, 0x0, 0x0, 0x6, 0x1, 0x77, 0x74, 0x1E, 0xFF, 0xFF, 0x0, 0x50, 0xFF, 0xF0, 0x4, 0x6F, 0x6, 0x13, 0x0, 0x26, 0x7, 0x59, 0x0, 0x0, 0x0, 0x6, 0x1, 0x8D, 0x76, 0x1E, 0xFF, 0xFF, 0x0, 0x50, 0xFF, 0xF0, 0x4, 0x6F, 0x5, 0xEB, 0x0, 0x26, 0x7, 0x59, 0x0, 0x0, 0x0, 0x7, 0x0, 0x6B, 0x0, 0xA0, 0x0, 0x1E, 0xFF, 0xFF, 0x0, 0x67, 0xFF, 0xF0, 0x4, 0x1E, 0x6, 0x1E, 0x0, 0x26, 0x7, 0x53, 0x0, 0x0, 0x0, 0x7, 0x0, 0x45, 0x0, 0xB5, 0x0, 0x1E, 0xFF, 0xFF, 0x0, 0x67, 0xFF, 0xF0, 0x4, 0x1E, 0x6, 0x1E, 0x0, 0x26, 0x7, 0x53, 0x0, 0x0, 0x0, 0x7, 0x0, 0x76, 0x1, 0x54, 0x0, 0x1E, 0xFF, 0xFF, 0x0, 0x67, 0xFF, 0xF0, 0x4, 0x1E, 0x6, 0x1F, 0x0, 0x26, 0x7, 0x53, 0x0, 0x0, 0x0, 0x6, 0x1, 0x77, 0x55, 0x1E, 0xFF, 0xFF, 0x0, 0x67, 0xFF, 0xF0, 0x4, 0x1E, 0x5, 0xEB, 0x0, 0x26, 0x7, 0x53, 0x0, 0x0, 0x0, 0x7, 0x0, 0x6B, 0x0, 0x81, 0x0, 0x1E, 0xFF, 0xFF, 0x0, 0x5, 0x0, 0x0, 0x4, 0x37, 0x6, 0x1E, 0x0, 0x26, 0x7, 0x4F, 0x0, 0x0, 0x0, 0x7, 0x0, 0x76, 0x1, 0x2D, 0x0, 0x1E, 0xFF, 0xFF, 0x0, 0x9, 0x0, 0x0, 0x4, 0x94, 0x5, 0xCB, 0x0, 0x26, 0x7, 0xB1, 0x0, 0x0, 0x0, 0x6, 0x0, 0x71, 0x62, 0x21, 0xFF, 0xFF, 0x0, 0x9, 0x0, 0x0, 0x4, 0x94, 0x6, 0x5, 0x0, 0x26, 0x7, 0xB1, 0x0, 0x0, 0x0, 0x7, 0x1, 0x89, 0x0, 0x99, 0x0, 0x1E, 0x0, 0x2, 0x0, 0x9, 0xFE, 0x52, 0x4, 0x94, 0x4, 0x8D, 0x0, 0x2, 0x0, 0x19, 0x0, 0x0, 0x1, 0x3, 0x3, 0x1, 0x6, 0x23, 0x22, 0x26, 0x35, 0x34, 0x37, 0x27, 0x21, 0x7, 0x23, 0x1, 0x33, 0x1, 0x23, 0x6, 0x6, 0x15, 0x14, 0x33, 0x32, 0x37, 0x2, 0xF8, 0xAA, 0xA9, 0x2, 0xCE, 0x49, 0x5C, 0x58, 0x7B, 0x9E, 0x5A, 0xFE, 0x20, 0x60, 0xF6, 0x1, 0xD7, 0xDF, 0x1, 0xD5, 0x35, 0x45, 0x5D, 0x47, 0x2C, 0x2E, 0x1, 0xB2, 0x1, 0xBA, 0xFE, 0x46, 0xFC, 0xCC, 0x2C, 0x66, 0x63, 0x8F, 0x65, 0xEB, 0xFA, 0x4, 0x8D, 0xFB, 0x73, 0x2D, 0x5F, 0x3B, 0x44, 0x17, 0xFF, 0xFF, 0x0, 0x50, 0xFF, 0xF0, 0x4, 0x44, 0x6, 0x1E, 0x0, 0x26, 0x7, 0xAF, 0x0, 0x0, 0x0, 0x7, 0x0, 0x76, 0x1, 0x63, 0x0, 0x1E, 0xFF, 0xFF, 0x0, 0x50, 0xFF, 0xF0, 0x4, 0x44, 0x6, 0x1F, 0x0, 0x26, 0x7, 0xAF, 0x0, 0x0, 0x0, 0x6, 0x1, 0x77, 0x64, 0x1E, 0xFF, 0xFF, 0x0, 0x50, 0xFF, 0xF0, 0x4, 0x44, 0x5, 0xFB, 0x0, 0x26, 0x7, 0xAF, 0x0, 0x0, 0x0, 0x7, 0x1, 0x8A, 0x1, 0x4A, 0x0, 0x26, 0xFF, 0xFF, 0x0, 0x50, 0xFF, 0xF0, 0x4, 0x44, 0x6, 0x20, 0x0, 0x26, 0x7, 0xAF, 0x0, 0x0, 0x0, 0x6, 0x1, 0x78, 0x7C, 0x1E, 0xFF, 0xFF, 0x0, 0x6A, 0x0, 0x0, 0x4, 0x2B, 0x6, 0x20, 0x0, 0x26, 0x7, 0xAE, 0x0, 0x0, 0x0, 0x6, 0x1, 0x78, 0xF8, 0x1E, 0xFF, 0xFF, 0x0, 0x76, 0x0, 0x0, 0x3, 0xB6, 0x5, 0xCB, 0x0, 0x26, 0x7, 0xA6, 0x0, 0x0, 0x0, 0x6, 0x0, 0x71, 0x32, 0x21, 0xFF, 0xFF, 0x0, 0x76, 0x0, 0x0, 0x3, 0xB6, 0x6, 0x5, 0x0, 0x26, 0x7, 0xA6, 0x0, 0x0, 0x0, 0x6, 0x1, 0x89, 0x69, 0x1E, 0xFF, 0xFF, 0x0, 0x76, 0x0, 0x0, 0x3, 0xB6, 0x5, 0xFB, 0x0, 0x26, 0x7, 0xA6, 0x0, 0x0, 0x0, 0x7, 0x1, 0x8A, 0x1, 0x1C, 0x0, 0x26, 0x0, 0x1, 0x0, 0x76, 0xFE, 0x52, 0x3, 0xB6, 0x4, 0x8D, 0x0, 0x1B, 0x0, 0x0, 0x1, 0x6, 0x23, 0x22, 0x26, 0x35, 0x34, 0x37, 0x21, 0x11, 0x21, 0x15, 0x21, 0x11, 0x21, 0x15, 0x21, 0x11, 0x21, 0x15, 0x23, 0x6, 0x6, 0x15, 0x14, 0x33, 0x32, 0x37, 0x3, 0x6B, 0x49, 0x5C, 0x58, 0x7B, 0x88, 0xFD, 0xFB, 0x3, 0x3C, 0xFD, 0xB7, 0x1, 0xF6, 0xFE, 0xA, 0x2, 0x4D, 0x5F, 0x45, 0x5D, 0x47, 0x2C, 0x2E, 0xFE, 0x7E, 0x2C, 0x66, 0x63, 0x85, 0x60, 0x4, 0x8D, 0xC4, 0xFE, 0xF3, 0xC3, 0xFE, 0xCA, 0xC3, 0x2D, 0x5F, 0x3B, 0x44, 0x17, 0xFF, 0xFF, 0x0, 0x76, 0x0, 0x0, 0x3, 0xB6, 0x6, 0x20, 0x0, 0x26, 0x7, 0xA6, 0x0, 0x0, 0x0, 0x6, 0x1, 0x78, 0x4E, 0x1E, 0xFF, 0xFF, 0x0, 0x55, 0xFF, 0xF0, 0x4, 0x49, 0x6, 0x1F, 0x0, 0x26, 0x7, 0x61, 0x0, 0x0, 0x0, 0x6, 0x1, 0x77, 0x68, 0x1E, 0xFF, 0xFF, 0x0, 0x55, 0xFF, 0xF0, 0x4, 0x49, 0x6, 0x5, 0x0, 0x26, 0x7, 0x61, 0x0, 0x0, 0x0, 0x7, 0x1, 0x89, 0x0, 0x9B, 0x0, 0x1E, 0xFF, 0xFF, 0x0, 0x55, 0xFF, 0xF0, 0x4, 0x49, 0x5, 0xFB, 0x0, 0x26, 0x7, 0x61, 0x0, 0x0, 0x0, 0x7, 0x1, 0x8A, 0x1, 0x4E, 0x0, 0x26, 0xFF, 0xFF, 0x0, 0x55, 0xFD, 0xF6, 0x4, 0x49, 0x4, 0x9D, 0x0, 0x26, 0x7, 0x61, 0x0, 0x0, 0x0, 0x7, 0x7, 0x25, 0x1, 0x6A, 0xFE, 0x90, 0xFF, 0xFF, 0x0, 0x76, 0x0, 0x0, 0x4, 0x68, 0x6, 0x1F, 0x0, 0x26, 0x7, 0x60, 0x0, 0x0, 0x0, 0x6, 0x1, 0x77, 0x7A, 0x1E, 0xFF, 0xFF, 0xFF, 0x90, 0x0, 0x0, 0x2, 0x6E, 0x6, 0x13, 0x0, 0x26, 0x7, 0x5F, 0x0, 0x0, 0x0, 0x7, 0x1, 0x8D, 0xFF, 0x16, 0x0, 0x1E, 0xFF, 0xFF, 0xFF, 0xAC, 0x0, 0x0, 0x2, 0x5A, 0x5, 0xCB, 0x0, 0x26, 0x7, 0x5F, 0x0, 0x0, 0x0, 0x7, 0x0, 0x71, 0xFF, 0x10, 0x0, 0x21, 0xFF, 0xFF, 0xFF, 0xBD, 0x0, 0x0, 0x2, 0x42, 0x6, 0x5, 0x0, 0x26, 0x7, 0x5F, 0x0, 0x0, 0x0, 0x7, 0x1, 0x89, 0xFF, 0x47, 0x0, 0x1E, 0xFF, 0xFF, 0x0, 0x14, 0xFE, 0x52, 0x1, 0x8C, 0x4, 0x8D, 0x0, 0x26, 0x7, 0x5F, 0x0, 0x0, 0x0, 0x6, 0x1, 0x8C, 0xEB, 0x0, 0xFF, 0xFF, 0x0, 0x7C, 0x0, 0x0, 0x1, 0x82, 0x5, 0xFB, 0x0, 0x26, 0x7, 0x5F, 0x0, 0x0, 0x0, 0x6, 0x1, 0x8A, 0xFA, 0x26, 0xFF, 0xFF, 0x0, 0x25, 0xFF, 0xF0, 0x4, 0x37, 0x6, 0x1F, 0x0, 0x26, 0x7, 0x5E, 0x0, 0x0, 0x0, 0x7, 0x1, 0x77, 0x0, 0xF3, 0x0, 0x1E, 0xFF, 0xFF, 0x0, 0x76, 0xFD, 0xFE, 0x4, 0x69, 0x4, 0x8D, 0x0, 0x26, 0x7, 0x5D, 0x0, 0x0, 0x0, 0x7, 0x7, 0x25, 0x1, 0x13, 0xFE, 0x98, 0xFF, 0xFF, 0x0, 0x76, 0x0, 0x0, 0x3, 0x94, 0x6, 0x1E, 0x0, 0x26, 0x7, 0x5C, 0x0, 0x0, 0x0, 0x6, 0x0, 0x76, 0x9, 0x1E, 0xFF, 0xFF, 0x0, 0x76, 0xFD, 0xFF, 0x3, 0x94, 0x4, 0x8D, 0x0, 0x26, 0x7, 0x5C, 0x0, 0x0, 0x0, 0x7, 0x7, 0x25, 0x1, 0x11, 0xFE, 0x99, 0xFF, 0xFF, 0x0, 0x76, 0x0, 0x0, 0x3, 0x94, 0x4, 0x8F, 0x0, 0x26, 0x7, 0x5C, 0x0, 0x0, 0x0, 0x7, 0x7, 0x25, 0x1, 0x94, 0x3, 0x89, 0xFF, 0xFF, 0x0, 0x76, 0x0, 0x0, 0x3, 0x94, 0x4, 0x8D, 0x0, 0x26, 0x7, 0x5C, 0x0, 0x0, 0x0, 0x7, 0x1, 0x8A, 0x1, 0x72, 0xFD, 0x46, 0xFF, 0xFF, 0x0, 0x76, 0x0, 0x0, 0x4, 0x67, 0x6, 0x1E, 0x0, 0x26, 0x7, 0x5A, 0x0, 0x0, 0x0, 0x7, 0x0, 0x76, 0x1, 0x84, 0x0, 0x1E, 0xFF, 0xFF, 0x0, 0x76, 0xFD, 0xF8, 0x4, 0x67, 0x4, 0x8D, 0x0, 0x26, 0x7, 0x5A, 0x0, 0x0, 0x0, 0x7, 0x7, 0x25, 0x1, 0x79, 0xFE, 0x92, 0xFF, 0xFF, 0x0, 0x76, 0x0, 0x0, 0x4, 0x67, 0x6, 0x20, 0x0, 0x26, 0x7, 0x5A, 0x0, 0x0, 0x0, 0x7, 0x1, 0x78, 0x0, 0x9D, 0x0, 0x1E, 0xFF, 0xFF, 0x0, 0x50, 0xFF, 0xF0, 0x4, 0x6F, 0x5, 0xCB, 0x0, 0x26, 0x7, 0x59, 0x0, 0x0, 0x0, 0x6, 0x0, 0x71, 0x70, 0x21, 0xFF, 0xFF, 0x0, 0x50, 0xFF, 0xF0, 0x4, 0x6F, 0x6, 0x5, 0x0, 0x26, 0x7, 0x59, 0x0, 0x0, 0x0, 0x7, 0x1, 0x89, 0x0, 0xA7, 0x0, 0x1E, 0xFF, 0xFF, 0x0, 0x50, 0xFF, 0xF0, 0x4, 0x6F, 0x6, 0x1D, 0x0, 0x26, 0x7, 0x59, 0x0, 0x0, 0x0, 0x7, 0x1, 0x8E, 0x0, 0xFE, 0x0, 0x1E, 0xFF, 0xFF, 0x0, 0x50, 0xFE, 0x52, 0x4, 0x6F, 0x4, 0x9D, 0x0, 0x26, 0x7, 0x59, 0x0, 0x0, 0x0, 0x7, 0x1, 0x8C, 0x1, 0x39, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x76, 0x0, 0x0, 0x4, 0x3A, 0x6, 0x1E, 0x0, 0x26, 0x7, 0x56, 0x0, 0x0, 0x0, 0x7, 0x0, 0x76, 0x1, 0x17, 0x0, 0x1E, 0xFF, 0xFF, 0x0, 0x76, 0xFD, 0xFF, 0x4, 0x3A, 0x4, 0x8D, 0x0, 0x26, 0x7, 0x56, 0x0, 0x0, 0x0, 0x7, 0x7, 0x25, 0x1, 0x19, 0xFE, 0x99, 0xFF, 0xFF, 0x0, 0x76, 0x0, 0x0, 0x4, 0x3A, 0x6, 0x20, 0x0, 0x26, 0x7, 0x56, 0x0, 0x0, 0x0, 0x6, 0x1, 0x78, 0x30, 0x1E, 0xFF, 0xFF, 0x0, 0x3F, 0xFF, 0xF0, 0x3, 0xEF, 0x6, 0x1E, 0x0, 0x26, 0x7, 0x55, 0x0, 0x0, 0x0, 0x7, 0x0, 0x76, 0x1, 0x40, 0x0, 0x1E, 0xFF, 0xFF, 0x0, 0x3F, 0xFF, 0xF0, 0x3, 0xEF, 0x6, 0x1F, 0x0, 0x26, 0x7, 0x55, 0x0, 0x0, 0x0, 0x6, 0x1, 0x77, 0x41, 0x1E, 0xFF, 0xFF, 0x0, 0x3F, 0xFE, 0x40, 0x3, 0xEF, 0x4, 0x9D, 0x0, 0x26, 0x7, 0x55, 0x0, 0x0, 0x0, 0x7, 0x0, 0x7A, 0x1, 0x50, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x3F, 0xFF, 0xF0, 0x3, 0xEF, 0x6, 0x20, 0x0, 0x26, 0x7, 0x55, 0x0, 0x0, 0x0, 0x6, 0x1, 0x78, 0x59, 0x1E, 0xFF, 0xFF, 0x0, 0x25, 0xFD, 0xFE, 0x4, 0x16, 0x4, 0x8D, 0x0, 0x26, 0x7, 0x54, 0x0, 0x0, 0x0, 0x7, 0x7, 0x25, 0x1, 0x26, 0xFE, 0x98, 0xFF, 0xFF, 0x0, 0x25, 0x0, 0x0, 0x4, 0x16, 0x6, 0x20, 0x0, 0x26, 0x7, 0x54, 0x0, 0x0, 0x0, 0x6, 0x1, 0x78, 0x48, 0x1E, 0xFF, 0xFF, 0x0, 0x25, 0xFE, 0x47, 0x4, 0x16, 0x4, 0x8D, 0x0, 0x26, 0x7, 0x54, 0x0, 0x0, 0x0, 0x7, 0x0, 0x7A, 0x1, 0x3A, 0x0, 0x7, 0xFF, 0xFF, 0x0, 0x67, 0xFF, 0xF0, 0x4, 0x1E, 0x6, 0x13, 0x0, 0x26, 0x7, 0x53, 0x0, 0x0, 0x0, 0x6, 0x1, 0x8D, 0x57, 0x1E, 0xFF, 0xFF, 0x0, 0x67, 0xFF, 0xF0, 0x4, 0x1E, 0x5, 0xCB, 0x0, 0x26, 0x7, 0x53, 0x0, 0x0, 0x0, 0x6, 0x0, 0x71, 0x51, 0x21, 0xFF, 0xFF, 0x0, 0x67, 0xFF, 0xF0, 0x4, 0x1E, 0x6, 0x5, 0x0, 0x26, 0x7, 0x53, 0x0, 0x0, 0x0, 0x7, 0x1, 0x89, 0x0, 0x88, 0x0, 0x1E, 0xFF, 0xFF, 0x0, 0x67, 0xFF, 0xF0, 0x4, 0x1E, 0x6, 0x7C, 0x0, 0x26, 0x7, 0x53, 0x0, 0x0, 0x0, 0x7, 0x1, 0x8B, 0x0, 0xEA, 0x0, 0x52, 0xFF, 0xFF, 0x0, 0x67, 0xFF, 0xF0, 0x4, 0x36, 0x6, 0x1D, 0x0, 0x26, 0x7, 0x53, 0x0, 0x0, 0x0, 0x7, 0x1, 0x8E, 0x0, 0xDF, 0x0, 0x1E, 0x0, 0x1, 0x0, 0x67, 0xFE, 0x83, 0x4, 0x1E, 0x4, 0x8D, 0x0, 0x1F, 0x0, 0x0, 0x1, 0x22, 0x26, 0x35, 0x34, 0x37, 0x26, 0x26, 0x35, 0x11, 0x33, 0x11, 0x14, 0x16, 0x33, 0x32, 0x37, 0x11, 0x33, 0x11, 0x14, 0x6, 0x7, 0x6, 0x6, 0x15, 0x14, 0x33, 0x32, 0x37, 0x17, 0x6, 0x2, 0xBA, 0x58, 0x7B, 0x3F, 0xC4, 0xFB, 0xF2, 0x7E, 0x6C, 0xE4, 0x4, 0xF3, 0x87, 0x70, 0x37, 0x47, 0x47, 0x2C, 0x2E, 0x15, 0x49, 0xFE, 0x83, 0x66, 0x63, 0x5B, 0x4A, 0x7, 0xD2, 0xC3, 0x3, 0x0, 0xFD, 0x0, 0x73, 0x67, 0xD2, 0x3, 0x8, 0xFD, 0x0, 0x8C, 0xBC, 0x2D, 0x27, 0x54, 0x33, 0x44, 0x17, 0x8E, 0x2C, 0xFF, 0xFF, 0x0, 0x29, 0x0, 0x0, 0x5, 0xE6, 0x6, 0x1F, 0x0, 0x26, 0x7, 0x51, 0x0, 0x0, 0x0, 0x7, 0x1, 0x77, 0x1, 0x18, 0x0, 0x1E, 0xFF, 0xFF, 0x0, 0x5, 0x0, 0x0, 0x4, 0x37, 0x6, 0x1F, 0x0, 0x26, 0x7, 0x4F, 0x0, 0x0, 0x0, 0x6, 0x1, 0x77, 0x2E, 0x1E, 0xFF, 0xFF, 0x0, 0x5, 0x0, 0x0, 0x4, 0x37, 0x5, 0xEB, 0x0, 0x26, 0x7, 0x4F, 0x0, 0x0, 0x0, 0x6, 0x0, 0x6B, 0x5A, 0x1E, 0xFF, 0xFF, 0x0, 0x41, 0x0, 0x0, 0x3, 0xF3, 0x6, 0x1E, 0x0, 0x26, 0x7, 0x4E, 0x0, 0x0, 0x0, 0x7, 0x0, 0x76, 0x1, 0x30, 0x0, 0x1E, 0xFF, 0xFF, 0x0, 0x41, 0x0, 0x0, 0x3, 0xF3, 0x5, 0xFB, 0x0, 0x26, 0x7, 0x4E, 0x0, 0x0, 0x0, 0x7, 0x1, 0x8A, 0x1, 0x17, 0x0, 0x26, 0xFF, 0xFF, 0x0, 0x41, 0x0, 0x0, 0x3, 0xF3, 0x6, 0x20, 0x0, 0x26, 0x7, 0x4E, 0x0, 0x0, 0x0, 0x6, 0x1, 0x78, 0x49, 0x1E, 0xFF, 0xFF, 0x0, 0x12, 0x0, 0x0, 0x5, 0x43, 0x6, 0x40, 0x0, 0x26, 0x0, 0x26, 0x0, 0x0, 0x0, 0x6, 0x2, 0x2D, 0xBE, 0xFF, 0xFF, 0xFF, 0xFE, 0xE7, 0x0, 0x0, 0x4, 0x4D, 0x6, 0x42, 0x0, 0x26, 0x0, 0x2A, 0x0, 0x0, 0x0, 0x7, 0x2, 0x2D, 0xFE, 0x20, 0x0, 0x1, 0xFF, 0xFF, 0xFE, 0xF0, 0x0, 0x0, 0x5, 0x19, 0x6, 0x41, 0x0, 0x26, 0x0, 0x2D, 0x0, 0x0, 0x0, 0x7, 0x2, 0x2D, 0xFE, 0x29, 0x0, 0x0, 0xFF, 0xFF, 0xFE, 0xF2, 0x0, 0x0, 0x1, 0xA0, 0x6, 0x43, 0x0, 0x26, 0x0, 0x2E, 0x0, 0x0, 0x0, 0x7, 0x2, 0x2D, 0xFE, 0x2B, 0x0, 0x2, 0xFF, 0xFF, 0xFF, 0xBC, 0xFF, 0xEC, 0x5, 0x33, 0x6, 0x40, 0x0, 0x26, 0x0, 0x34, 0x14, 0x0, 0x0, 0x7, 0x2, 0x2D, 0xFE, 0xF5, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x45, 0x0, 0x0, 0x5, 0x3A, 0x6, 0x40, 0x0, 0x26, 0x0, 0x3E, 0x64, 0x0, 0x0, 0x7, 0x2, 0x2D, 0xFE, 0x7E, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC6, 0x0, 0x0, 0x4, 0xF1, 0x6, 0x40, 0x0, 0x26, 0x2, 0x39, 0x14, 0x0, 0x0, 0x7, 0x2, 0x2D, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x87, 0xFF, 0xF4, 0x2, 0xDA, 0x6, 0x9A, 0x0, 0x26, 0x2, 0x42, 0x0, 0x0, 0x0, 0x7, 0x2, 0x2E, 0xFF, 0x1F, 0xFF, 0xEB, 0xFF, 0xFF, 0x0, 0x12, 0x0, 0x0, 0x5, 0x43, 0x5, 0xB0, 0x0, 0x6, 0x0, 0x26, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x95, 0x0, 0x0, 0x4, 0xA3, 0x5, 0xB0, 0x0, 0x6, 0x0, 0x27, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x95, 0x0, 0x0, 0x4, 0x4D, 0x5, 0xB0, 0x0, 0x6, 0x0, 0x2A, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x50, 0x0, 0x0, 0x4, 0x8C, 0x5, 0xB0, 0x0, 0x6, 0x0, 0x3F, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x95, 0x0, 0x0, 0x5, 0x19, 0x5, 0xB0, 0x0, 0x6, 0x0, 0x2D, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0xA4, 0x0, 0x0, 0x1, 0xA0, 0x5, 0xB0, 0x0, 0x6, 0x0, 0x2E, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x95, 0x0, 0x0, 0x5, 0x18, 0x5, 0xB0, 0x0, 0x6, 0x0, 0x30, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x95, 0x0, 0x0, 0x6, 0x6B, 0x5, 0xB0, 0x0, 0x6, 0x0, 0x32, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x95, 0x0, 0x0, 0x5, 0x18, 0x5, 0xB0, 0x0, 0x6, 0x0, 0x33, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x66, 0xFF, 0xEC, 0x5, 0x1F, 0x5, 0xC4, 0x0, 0x6, 0x0, 0x34, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x95, 0x0, 0x0, 0x4, 0xD4, 0x5, 0xB0, 0x0, 0x6, 0x0, 0x35, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x2D, 0x0, 0x0, 0x4, 0xB0, 0x5, 0xB0, 0x0, 0x6, 0x0, 0x39, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x8, 0x0, 0x0, 0x4, 0xD6, 0x5, 0xB0, 0x0, 0x6, 0x0, 0x3E, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x29, 0x0, 0x0, 0x4, 0xEA, 0x5, 0xB0, 0x0, 0x6, 0x0, 0x3D, 0x0, 0x0, 0xFF, 0xFF, 0xFF, 0xC0, 0x0, 0x0, 0x2, 0x86, 0x7, 0xB, 0x0, 0x26, 0x0, 0x2E, 0x0, 0x0, 0x0, 0x7, 0x0, 0x6B, 0xFF, 0x62, 0x1, 0x3E, 0xFF, 0xFF, 0x0, 0x8, 0x0, 0x0, 0x4, 0xD6, 0x7, 0x3, 0x0, 0x26, 0x0, 0x3E, 0x0, 0x0, 0x0, 0x7, 0x0, 0x6B, 0x0, 0xB4, 0x1, 0x36, 0xFF, 0xFF, 0x0, 0x56, 0xFF, 0xEB, 0x4, 0x7A, 0x6, 0x41, 0x0, 0x26, 0x2, 0x3A, 0x0, 0x0, 0x0, 0x7, 0x2, 0x2D, 0x1, 0x50, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x61, 0xFF, 0xEC, 0x4, 0xD, 0x6, 0x40, 0x0, 0x26, 0x2, 0x3E, 0x0, 0x0, 0x0, 0x7, 0x2, 0x2D, 0x1, 0x18, 0xFF, 0xFF, 0xFF, 0xFF, 0x0, 0x7F, 0xFE, 0x61, 0x4, 0x6, 0x6, 0x41, 0x0, 0x26, 0x2, 0x40, 0x0, 0x0, 0x0, 0x7, 0x2, 0x2D, 0x1, 0x23, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0xAA, 0xFF, 0xF4, 0x2, 0x62, 0x6, 0x2C, 0x0, 0x26, 0x2, 0x42, 0x0, 0x0, 0x0, 0x6, 0x2, 0x2D, 0xF, 0xEB, 0xFF, 0xFF, 0x0, 0x80, 0xFF, 0xEB, 0x4, 0x8, 0x6, 0xA1, 0x0, 0x26, 0x2, 0x4A, 0x0, 0x0, 0x0, 0x6, 0x2, 0x2E, 0x1C, 0xF2, 0xFF, 0xFF, 0x0, 0x8E, 0x0, 0x0, 0x4, 0x6B, 0x4, 0x3A, 0x0, 0x6, 0x0, 0x8F, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x50, 0xFF, 0xEC, 0x4, 0x3E, 0x4, 0x4E, 0x0, 0x6, 0x0, 0x54, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x93, 0xFE, 0x60, 0x4, 0x1F, 0x4, 0x3A, 0x0, 0x6, 0x0, 0x77, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x17, 0x0, 0x0, 0x3, 0xDB, 0x4, 0x3A, 0x0, 0x6, 0x0, 0x5B, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x3E, 0xFE, 0x4A, 0x4, 0x66, 0x4, 0x4A, 0x0, 0x6, 0x8, 0xAA, 0x0, 0x0, 0xFF, 0xFF, 0xFF, 0xCD, 0xFF, 0xF4, 0x2, 0x93, 0x5, 0xB8, 0x0, 0x26, 0x2, 0x42, 0x0, 0x0, 0x0, 0x7, 0x0, 0x6B, 0xFF, 0x6F, 0xFF, 0xEB, 0xFF, 0xFF, 0x0, 0x80, 0xFF, 0xEB, 0x4, 0x8, 0x5, 0xBF, 0x0, 0x26, 0x2, 0x4A, 0x0, 0x0, 0x0, 0x6, 0x0, 0x6B, 0x6C, 0xF2, 0xFF, 0xFF, 0x0, 0x50, 0xFF, 0xEC, 0x4, 0x3E, 0x6, 0x41, 0x0, 0x26, 0x0, 0x54, 0x0, 0x0, 0x0, 0x7, 0x2, 0x2D, 0x1, 0x21, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x80, 0xFF, 0xEB, 0x4, 0x8, 0x6, 0x33, 0x0, 0x26, 0x2, 0x4A, 0x0, 0x0, 0x0, 0x7, 0x2, 0x2D, 0x1, 0xC, 0xFF, 0xF2, 0xFF, 0xFF, 0x0, 0x66, 0xFF, 0xEB, 0x6, 0x2E, 0x6, 0x31, 0x0, 0x26, 0x2, 0x4D, 0x0, 0x0, 0x0, 0x7, 0x2, 0x2D, 0x2, 0x2B, 0xFF, 0xF0, 0xFF, 0xFF, 0x0, 0x95, 0x0, 0x0, 0x4, 0x4D, 0x7, 0xB, 0x0, 0x26, 0x0, 0x2A, 0x0, 0x0, 0x0, 0x7, 0x0, 0x6B, 0x0, 0xB4, 0x1, 0x3E, 0xFF, 0xFF, 0x0, 0x9B, 0x0, 0x0, 0x4, 0x38, 0x7, 0x3E, 0x0, 0x26, 0x2, 0x30, 0x0, 0x0, 0x0, 0x7, 0x0, 0x76, 0x1, 0x82, 0x1, 0x3E, 0x0, 0x1, 0x0, 0x4A, 0xFF, 0xEC, 0x4, 0x8A, 0x5, 0xC4, 0x0, 0x25, 0x0, 0x0, 0x1, 0x34, 0x26, 0x24, 0x24, 0x35, 0x34, 0x24, 0x33, 0x32, 0x0, 0x15, 0x23, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x14, 0x16, 0x17, 0x16, 0x16, 0x15, 0x14, 0x4, 0x23, 0x22, 0x24, 0x26, 0x35, 0x33, 0x14, 0x16, 0x33, 0x32, 0x36, 0x3, 0x8D, 0x72, 0xFE, 0x60, 0xFE, 0xFD, 0x1, 0x1D, 0xE7, 0xF7, 0x1, 0x16, 0xFC, 0x86, 0x8E, 0x85, 0x7F, 0x98, 0x99, 0xF7, 0xED, 0xFE, 0xE7, 0xED, 0x8B, 0xFE, 0xFA, 0xA9, 0xFD, 0xB8, 0x85, 0x84, 0x85, 0x1, 0x78, 0x57, 0x69, 0x81, 0xCA, 0xAE, 0xB0, 0xE3, 0xFE, 0xF9, 0xB6, 0x6B, 0x89, 0x73, 0x56, 0x52, 0x6B, 0x2D, 0x48, 0xD8, 0xAE, 0xB8, 0xD6, 0x66, 0xCD, 0x99, 0x8A, 0x7A, 0x6C, 0xFF, 0xFF, 0x0, 0xA4, 0x0, 0x0, 0x1, 0xA0, 0x5, 0xB0, 0x0, 0x6, 0x0, 0x2E, 0x0, 0x0, 0xFF, 0xFF, 0xFF, 0xC0, 0x0, 0x0, 0x2, 0x86, 0x7, 0xB, 0x0, 0x26, 0x0, 0x2E, 0x0, 0x0, 0x0, 0x7, 0x0, 0x6B, 0xFF, 0x62, 0x1, 0x3E, 0xFF, 0xFF, 0x0, 0x2D, 0xFF, 0xEC, 0x3, 0xE5, 0x5, 0xB0, 0x0, 0x6, 0x0, 0x2F, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x9B, 0x0, 0x0, 0x5, 0x30, 0x5, 0xB0, 0x0, 0x6, 0x7, 0xAA, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x95, 0x0, 0x0, 0x5, 0x18, 0x7, 0x37, 0x0, 0x26, 0x0, 0x30, 0x0, 0x0, 0x0, 0x7, 0x0, 0x76, 0x1, 0x6D, 0x1, 0x37, 0xFF, 0xFF, 0x0, 0x3A, 0xFF, 0xEB, 0x4, 0xDE, 0x7, 0x25, 0x0, 0x26, 0x2, 0x74, 0x0, 0x0, 0x0, 0x7, 0x1, 0x89, 0x0, 0xD9, 0x1, 0x3E, 0xFF, 0xFF, 0x0, 0x12, 0x0, 0x0, 0x5, 0x43, 0x5, 0xB0, 0x0, 0x6, 0x0, 0x26, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x95, 0x0, 0x0, 0x4, 0xA3, 0x5, 0xB0, 0x0, 0x6, 0x0, 0x27, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x9B, 0x0, 0x0, 0x4, 0x38, 0x5, 0xB0, 0x0, 0x6, 0x2, 0x30, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x95, 0x0, 0x0, 0x4, 0x4D, 0x5, 0xB0, 0x0, 0x6, 0x0, 0x2A, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x95, 0x0, 0x0, 0x5, 0xD, 0x7, 0x25, 0x0, 0x26, 0x2, 0x72, 0x0, 0x0, 0x0, 0x7, 0x1, 0x89, 0x1, 0x1C, 0x1, 0x3E, 0xFF, 0xFF, 0x0, 0x95, 0x0, 0x0, 0x6, 0x6B, 0x5, 0xB0, 0x0, 0x6, 0x0, 0x32, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x95, 0x0, 0x0, 0x5, 0x19, 0x5, 0xB0, 0x0, 0x6, 0x0, 0x2D, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x66, 0xFF, 0xEC, 0x5, 0x1F, 0x5, 0xC4, 0x0, 0x6, 0x0, 0x34, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x9B, 0x0, 0x0, 0x5, 0x15, 0x5, 0xB0, 0x0, 0x6, 0x2, 0x35, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x95, 0x0, 0x0, 0x4, 0xD4, 0x5, 0xB0, 0x0, 0x6, 0x0, 0x35, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x66, 0xFF, 0xEC, 0x4, 0xEC, 0x5, 0xC4, 0x0, 0x6, 0x0, 0x28, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x2D, 0x0, 0x0, 0x4, 0xB0, 0x5, 0xB0, 0x0, 0x6, 0x0, 0x39, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x29, 0x0, 0x0, 0x4, 0xEA, 0x5, 0xB0, 0x0, 0x6, 0x0, 0x3D, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x5B, 0xFF, 0xEC, 0x3, 0xFC, 0x4, 0x4E, 0x0, 0x6, 0x0, 0x46, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x54, 0xFF, 0xEC, 0x4, 0xC, 0x4, 0x4E, 0x0, 0x6, 0x0, 0x4A, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x86, 0x0, 0x0, 0x4, 0x13, 0x5, 0xD9, 0x0, 0x26, 0x2, 0x86, 0x0, 0x0, 0x0, 0x7, 0x1, 0x89, 0x0, 0x97, 0xFF, 0xF2, 0xFF, 0xFF, 0x0, 0x50, 0xFF, 0xEC, 0x4, 0x3E, 0x4, 0x4E, 0x0, 0x6, 0x0, 0x54, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x7D, 0xFE, 0x60, 0x4, 0x31, 0x4, 0x4E, 0x0, 0x6, 0x0, 0x55, 0x0, 0x0, 0x0, 0x1, 0x0, 0x50, 0xFF, 0xEC, 0x3, 0xF5, 0x4, 0x4E, 0x0, 0x1B, 0x0, 0x0, 0x25, 0x32, 0x36, 0x37, 0x33, 0x6, 0x4, 0x23, 0x22, 0x2, 0x35, 0x35, 0x34, 0x12, 0x33, 0x32, 0x16, 0x17, 0x23, 0x26, 0x26, 0x23, 0x22, 0x6, 0x15, 0x15, 0x14, 0x16, 0x2, 0x3A, 0x58, 0x7A, 0x5, 0xE4, 0x4, 0xFF, 0x0, 0xB5, 0xFA, 0xF2, 0xF3, 0xF9, 0xC5, 0xF0, 0x4, 0xE4, 0x5, 0x70, 0x63, 0x94, 0x63, 0x62, 0xAF, 0x68, 0x4F, 0x9D, 0xDD, 0x1, 0x40, 0xDF, 0x24, 0xDE, 0x1, 0x41, 0xE4, 0xB3, 0x57, 0x7D, 0xDB, 0x81, 0x24, 0x83, 0xD9, 0xFF, 0xFF, 0x0, 0xC, 0xFE, 0x4B, 0x3, 0xD7, 0x4, 0x3A, 0x0, 0x6, 0x0, 0x5E, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x1F, 0x0, 0x0, 0x3, 0xE9, 0x4, 0x3A, 0x0, 0x6, 0x0, 0x5D, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x54, 0xFF, 0xEC, 0x4, 0xC, 0x5, 0xCD, 0x0, 0x26, 0x0, 0x4A, 0x0, 0x0, 0x0, 0x6, 0x0, 0x6B, 0x6C, 0x0, 0xFF, 0xFF, 0x0, 0x85, 0x0, 0x0, 0x3, 0x4D, 0x5, 0xF2, 0x0, 0x26, 0x2, 0x82, 0x0, 0x0, 0x0, 0x7, 0x0, 0x76, 0x0, 0xC1, 0xFF, 0xF2, 0xFF, 0xFF, 0x0, 0x4C, 0xFF, 0xEC, 0x3, 0xCA, 0x4, 0x4E, 0x0, 0x6, 0x0, 0x58, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x7D, 0x0, 0x0, 0x1, 0x91, 0x5, 0xD5, 0x0, 0x6, 0x0, 0x4E, 0x0, 0x0, 0xFF, 0xFF, 0xFF, 0xAB, 0x0, 0x0, 0x2, 0x71, 0x5, 0xC6, 0x0, 0x26, 0x0, 0x8E, 0x0, 0x0, 0x0, 0x7, 0x0, 0x6B, 0xFF, 0x4D, 0xFF, 0xF9, 0xFF, 0xFF, 0xFF, 0xB4, 0xFE, 0x4B, 0x1, 0x86, 0x5, 0xD5, 0x0, 0x6, 0x0, 0x4F, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x8F, 0x0, 0x0, 0x4, 0x65, 0x5, 0xF2, 0x0, 0x26, 0x2, 0x87, 0x0, 0x0, 0x0, 0x7, 0x0, 0x76, 0x1, 0x44, 0xFF, 0xF2, 0xFF, 0xFF, 0x0, 0xC, 0xFE, 0x4B, 0x3, 0xD7, 0x5, 0xE7, 0x0, 0x26, 0x0, 0x5E, 0x0, 0x0, 0x0, 0x6, 0x1, 0x89, 0x4A, 0x0, 0xFF, 0xFF, 0x0, 0x31, 0x0, 0x0, 0x6, 0xE5, 0x7, 0x36, 0x0, 0x26, 0x0, 0x3C, 0x0, 0x0, 0x0, 0x7, 0x0, 0x45, 0x2, 0x7, 0x1, 0x36, 0xFF, 0xFF, 0x0, 0x22, 0x0, 0x0, 0x5, 0xCD, 0x6, 0x0, 0x0, 0x26, 0x0, 0x5C, 0x0, 0x0, 0x0, 0x7, 0x0, 0x45, 0x1, 0x6A, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x31, 0x0, 0x0, 0x6, 0xE5, 0x7, 0x36, 0x0, 0x26, 0x0, 0x3C, 0x0, 0x0, 0x0, 0x7, 0x0, 0x76, 0x2, 0xA6, 0x1, 0x36, 0xFF, 0xFF, 0x0, 0x22, 0x0, 0x0, 0x5, 0xCD, 0x6, 0x0, 0x0, 0x26, 0x0, 0x5C, 0x0, 0x0, 0x0, 0x7, 0x0, 0x76, 0x2, 0x9, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x31, 0x0, 0x0, 0x6, 0xE5, 0x7, 0x3, 0x0, 0x26, 0x0, 0x3C, 0x0, 0x0, 0x0, 0x7, 0x0, 0x6B, 0x1, 0xD3, 0x1, 0x36, 0xFF, 0xFF, 0x0, 0x22, 0x0, 0x0, 0x5, 0xCD, 0x5, 0xCD, 0x0, 0x26, 0x0, 0x5C, 0x0, 0x0, 0x0, 0x7, 0x0, 0x6B, 0x1, 0x36, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x8, 0x0, 0x0, 0x4, 0xD6, 0x7, 0x36, 0x0, 0x26, 0x0, 0x3E, 0x0, 0x0, 0x0, 0x7, 0x0, 0x45, 0x0, 0xE8, 0x1, 0x36, 0xFF, 0xFF, 0x0, 0xC, 0xFE, 0x4B, 0x3, 0xD7, 0x6, 0x0, 0x0, 0x26, 0x0, 0x5E, 0x0, 0x0, 0x0, 0x6, 0x0, 0x45, 0x77, 0x0, 0xFF, 0xFF, 0x0, 0x53, 0x3, 0xFC, 0x1, 0xB, 0x6, 0x0, 0x0, 0x6, 0x0, 0xC, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x65, 0x3, 0xF5, 0x2, 0x41, 0x6, 0x0, 0x0, 0x6, 0x0, 0x7, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x90, 0xFF, 0xF2, 0x3, 0xC8, 0x5, 0xB0, 0x0, 0x26, 0x0, 0x6, 0x0, 0x0, 0x0, 0x7, 0x0, 0x6, 0x2, 0x25, 0x0, 0x0, 0xFF, 0xFF, 0xFF, 0xB0, 0xFE, 0x4B, 0x2, 0x73, 0x5, 0xE0, 0x0, 0x26, 0x0, 0xEC, 0x0, 0x0, 0x0, 0x7, 0x1, 0x78, 0xFF, 0x3E, 0xFF, 0xDE, 0xFF, 0xFF, 0x0, 0x34, 0x4, 0x0, 0x1, 0x66, 0x6, 0x0, 0x0, 0x6, 0x4, 0x63, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x95, 0x0, 0x0, 0x6, 0x6B, 0x7, 0x36, 0x0, 0x26, 0x0, 0x32, 0x0, 0x0, 0x0, 0x7, 0x0, 0x76, 0x2, 0x8F, 0x1, 0x36, 0xFF, 0xFF, 0x0, 0x7D, 0x0, 0x0, 0x6, 0x7A, 0x6, 0x0, 0x0, 0x26, 0x0, 0x52, 0x0, 0x0, 0x0, 0x7, 0x0, 0x76, 0x2, 0xA0, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x12, 0xFE, 0x6D, 0x5, 0x43, 0x5, 0xB0, 0x0, 0x26, 0x0, 0x26, 0x0, 0x0, 0x0, 0x7, 0x1, 0xA4, 0x1, 0x7B, 0x0, 0x3, 0xFF, 0xFF, 0x0, 0x5B, 0xFE, 0x72, 0x3, 0xFC, 0x4, 0x4E, 0x0, 0x26, 0x0, 0x46, 0x0, 0x0, 0x0, 0x7, 0x1, 0xA4, 0x0, 0xAD, 0x0, 0x8, 0xFF, 0xFF, 0x0, 0x95, 0x0, 0x0, 0x4, 0x4D, 0x7, 0x3E, 0x0, 0x26, 0x0, 0x2A, 0x0, 0x0, 0x0, 0x7, 0x0, 0x45, 0x0, 0xE8, 0x1, 0x3E, 0xFF, 0xFF, 0x0, 0x95, 0x0, 0x0, 0x5, 0xD, 0x7, 0x3E, 0x0, 0x26, 0x2, 0x72, 0x0, 0x0, 0x0, 0x7, 0x0, 0x45, 0x1, 0x49, 0x1, 0x3E, 0xFF, 0xFF, 0x0, 0x54, 0xFF, 0xEC, 0x4, 0xC, 0x6, 0x0, 0x0, 0x26, 0x0, 0x4A, 0x0, 0x0, 0x0, 0x7, 0x0, 0x45, 0x0, 0xA0, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x86, 0x0, 0x0, 0x4, 0x13, 0x5, 0xF2, 0x0, 0x26, 0x2, 0x86, 0x0, 0x0, 0x0, 0x7, 0x0, 0x45, 0x0, 0xC4, 0xFF, 0xF2, 0xFF, 0xFF, 0x0, 0x44, 0x0, 0x0, 0x5, 0x5D, 0x5, 0xB0, 0x0, 0x6, 0x2, 0x38, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x50, 0xFE, 0x22, 0x5, 0x7F, 0x4, 0x3A, 0x0, 0x6, 0x2, 0x4C, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x10, 0x0, 0x0, 0x4, 0xF4, 0x6, 0xFD, 0x0, 0x26, 0x2, 0xAF, 0x0, 0x0, 0x0, 0x7, 0x1, 0xC0, 0x4, 0x4B, 0x1, 0xF, 0xFF, 0xFF, 0xFF, 0xF2, 0x0, 0x0, 0x4, 0x19, 0x5, 0xD0, 0x0, 0x26, 0x2, 0xB0, 0x0, 0x0, 0x0, 0x7, 0x1, 0xC0, 0x3, 0xE7, 0xFF, 0xE2, 0xFF, 0xFF, 0x0, 0x50, 0xFE, 0x4B, 0x8, 0x65, 0x4, 0x4E, 0x0, 0x26, 0x0, 0x54, 0x0, 0x0, 0x0, 0x7, 0x0, 0x5E, 0x4, 0x8E, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x66, 0xFE, 0x4B, 0x9, 0x5D, 0x5, 0xC4, 0x0, 0x26, 0x0, 0x34, 0x0, 0x0, 0x0, 0x7, 0x0, 0x5E, 0x5, 0x86, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x49, 0xFE, 0x37, 0x4, 0x7F, 0x5, 0xC4, 0x0, 0x26, 0x2, 0x71, 0x0, 0x0, 0x0, 0x7, 0x7, 0xDB, 0x1, 0x92, 0xFF, 0x9E, 0xFF, 0xFF, 0x0, 0x4E, 0xFE, 0x38, 0x3, 0xC4, 0x4, 0x4D, 0x0, 0x26, 0x2, 0x85, 0x0, 0x0, 0x0, 0x7, 0x7, 0xDB, 0x1, 0x39, 0xFF, 0x9F, 0xFF, 0xFF, 0x0, 0x66, 0xFE, 0x3A, 0x4, 0xEC, 0x5, 0xC4, 0x0, 0x26, 0x0, 0x28, 0x0, 0x0, 0x0, 0x7, 0x7, 0xDB, 0x1, 0xD5, 0xFF, 0xA1, 0xFF, 0xFF, 0x0, 0x50, 0xFE, 0x3A, 0x3, 0xF5, 0x4, 0x4E, 0x0, 0x26, 0x0, 0x48, 0x0, 0x0, 0x0, 0x7, 0x7, 0xDB, 0x1, 0x49, 0xFF, 0xA1, 0xFF, 0xFF, 0x0, 0x8, 0x0, 0x0, 0x4, 0xD6, 0x5, 0xB0, 0x0, 0x6, 0x0, 0x3E, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x21, 0xFE, 0x5F, 0x3, 0xF5, 0x4, 0x3A, 0x0, 0x6, 0x2, 0x3C, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0xA4, 0x0, 0x0, 0x1, 0xA0, 0x5, 0xB0, 0x0, 0x6, 0x0, 0x2E, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x17, 0x0, 0x0, 0x7, 0x9C, 0x7, 0x25, 0x0, 0x26, 0x2, 0x70, 0x0, 0x0, 0x0, 0x7, 0x1, 0x89, 0x2, 0x1D, 0x1, 0x3E, 0xFF, 0xFF, 0x0, 0x1E, 0x0, 0x0, 0x6, 0x5C, 0x5, 0xD9, 0x0, 0x26, 0x2, 0x84, 0x0, 0x0, 0x0, 0x7, 0x1, 0x89, 0x1, 0x86, 0xFF, 0xF2, 0xFF, 0xFF, 0x0, 0xA4, 0x0, 0x0, 0x1, 0xA0, 0x5, 0xB0, 0x0, 0x6, 0x0, 0x2E, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x12, 0x0, 0x0, 0x5, 0x43, 0x7, 0x1D, 0x0, 0x26, 0x0, 0x26, 0x0, 0x0, 0x0, 0x7, 0x1, 0x89, 0x0, 0xF5, 0x1, 0x36, 0xFF, 0xFF, 0x0, 0x5B, 0xFF, 0xEC, 0x3, 0xFC, 0x5, 0xE7, 0x0, 0x26, 0x0, 0x46, 0x0, 0x0, 0x0, 0x6, 0x1, 0x89, 0x7F, 0x0, 0xFF, 0xFF, 0x0, 0x12, 0x0, 0x0, 0x5, 0x43, 0x7, 0x3, 0x0, 0x26, 0x0, 0x26, 0x0, 0x0, 0x0, 0x7, 0x0, 0x6B, 0x0, 0xEE, 0x1, 0x36, 0xFF, 0xFF, 0x0, 0x5B, 0xFF, 0xEC, 0x3, 0xFC, 0x5, 0xCD, 0x0, 0x26, 0x0, 0x46, 0x0, 0x0, 0x0, 0x6, 0x0, 0x6B, 0x78, 0x0, 0xFF, 0xFF, 0xFF, 0xF6, 0x0, 0x0, 0x7, 0x57, 0x5, 0xB0, 0x0, 0x6, 0x0, 0x82, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x48, 0xFF, 0xEB, 0x6, 0x85, 0x4, 0x4F, 0x0, 0x6, 0x0, 0x87, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x95, 0x0, 0x0, 0x4, 0x4D, 0x7, 0x25, 0x0, 0x26, 0x0, 0x2A, 0x0, 0x0, 0x0, 0x7, 0x1, 0x89, 0x0, 0xBB, 0x1, 0x3E, 0xFF, 0xFF, 0x0, 0x54, 0xFF, 0xEC, 0x4, 0xC, 0x5, 0xE7, 0x0, 0x26, 0x0, 0x4A, 0x0, 0x0, 0x0, 0x6, 0x1, 0x89, 0x73, 0x0, 0xFF, 0xFF, 0x0, 0x51, 0xFF, 0xEB, 0x5, 0x1E, 0x6, 0xDC, 0x0, 0x26, 0x2, 0xEF, 0x0, 0x0, 0x0, 0x7, 0x0, 0x6B, 0x0, 0xC2, 0x1, 0xF, 0xFF, 0xFF, 0x0, 0x5A, 0xFF, 0xEB, 0x3, 0xF8, 0x4, 0x50, 0x0, 0x6, 0x1, 0xE, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x5A, 0xFF, 0xEB, 0x3, 0xF8, 0x5, 0xCE, 0x0, 0x26, 0x1, 0xE, 0x0, 0x0, 0x0, 0x6, 0x0, 0x6B, 0x69, 0x1, 0xFF, 0xFF, 0x0, 0x17, 0x0, 0x0, 0x7, 0x9C, 0x7, 0xB, 0x0, 0x26, 0x2, 0x70, 0x0, 0x0, 0x0, 0x7, 0x0, 0x6B, 0x2, 0x16, 0x1, 0x3E, 0xFF, 0xFF, 0x0, 0x1E, 0x0, 0x0, 0x6, 0x5C, 0x5, 0xBF, 0x0, 0x26, 0x2, 0x84, 0x0, 0x0, 0x0, 0x7, 0x0, 0x6B, 0x1, 0x7F, 0xFF, 0xF2, 0xFF, 0xFF, 0x0, 0x49, 0xFF, 0xEC, 0x4, 0x7F, 0x7, 0x18, 0x0, 0x26, 0x2, 0x71, 0x0, 0x0, 0x0, 0x7, 0x0, 0x6B, 0x0, 0xA4, 0x1, 0x4B, 0xFF, 0xFF, 0x0, 0x4E, 0xFF, 0xEC, 0x3, 0xC4, 0x5, 0xCC, 0x0, 0x26, 0x2, 0x85, 0x0, 0x0, 0x0, 0x6, 0x0, 0x6B, 0x4F, 0xFF, 0xFF, 0xFF, 0x0, 0x95, 0x0, 0x0, 0x5, 0xD, 0x6, 0xEB, 0x0, 0x26, 0x2, 0x72, 0x0, 0x0, 0x0, 0x7, 0x0, 0x71, 0x0, 0xE5, 0x1, 0x41, 0xFF, 0xFF, 0x0, 0x86, 0x0, 0x0, 0x4, 0x13, 0x5, 0x9F, 0x0, 0x26, 0x2, 0x86, 0x0, 0x0, 0x0, 0x6, 0x0, 0x71, 0x60, 0xF5, 0xFF, 0xFF, 0x0, 0x95, 0x0, 0x0, 0x5, 0xD, 0x7, 0xB, 0x0, 0x26, 0x2, 0x72, 0x0, 0x0, 0x0, 0x7, 0x0, 0x6B, 0x1, 0x15, 0x1, 0x3E, 0xFF, 0xFF, 0x0, 0x86, 0x0, 0x0, 0x4, 0x13, 0x5, 0xBF, 0x0, 0x26, 0x2, 0x86, 0x0, 0x0, 0x0, 0x7, 0x0, 0x6B, 0x0, 0x90, 0xFF, 0xF2, 0xFF, 0xFF, 0x0, 0x66, 0xFF, 0xEC, 0x5, 0x1F, 0x7, 0x3, 0x0, 0x26, 0x0, 0x34, 0x0, 0x0, 0x0, 0x7, 0x0, 0x6B, 0x1, 0x5, 0x1, 0x36, 0xFF, 0xFF, 0x0, 0x50, 0xFF, 0xEC, 0x4, 0x3E, 0x5, 0xCD, 0x0, 0x26, 0x0, 0x54, 0x0, 0x0, 0x0, 0x7, 0x0, 0x6B, 0x0, 0x81, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x5F, 0xFF, 0xEC, 0x5, 0x18, 0x5, 0xC4, 0x0, 0x6, 0x2, 0xAD, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x4F, 0xFF, 0xEC, 0x4, 0x3D, 0x4, 0x4E, 0x0, 0x6, 0x2, 0xAE, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x5F, 0xFF, 0xEC, 0x5, 0x18, 0x5, 0xC4, 0x0, 0x6, 0x2, 0xAD, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x5F, 0xFF, 0xEC, 0x5, 0x18, 0x7, 0x8, 0x0, 0x26, 0x2, 0xAD, 0x0, 0x0, 0x0, 0x7, 0x0, 0x6B, 0x1, 0x13, 0x1, 0x3B, 0xFF, 0xFF, 0x0, 0x4F, 0xFF, 0xEC, 0x4, 0x3D, 0x5, 0xCD, 0x0, 0x26, 0x2, 0xAE, 0x0, 0x0, 0x0, 0x6, 0x0, 0x6B, 0x74, 0x0, 0xFF, 0xFF, 0x0, 0x6B, 0xFF, 0xEC, 0x4, 0xF1, 0x7, 0x19, 0x0, 0x26, 0x2, 0x7D, 0x0, 0x0, 0x0, 0x7, 0x0, 0x6B, 0x0, 0xE4, 0x1, 0x4C, 0xFF, 0xFF, 0x0, 0x52, 0xFF, 0xEB, 0x3, 0xE9, 0x5, 0xCD, 0x0, 0x26, 0x2, 0x95, 0x0, 0x0, 0x0, 0x6, 0x0, 0x6B, 0x59, 0x0, 0xFF, 0xFF, 0x0, 0x3A, 0xFF, 0xEB, 0x4, 0xDE, 0x6, 0xEB, 0x0, 0x26, 0x2, 0x74, 0x0, 0x0, 0x0, 0x7, 0x0, 0x71, 0x0, 0xA2, 0x1, 0x41, 0xFF, 0xFF, 0x0, 0xC, 0xFE, 0x4B, 0x3, 0xD7, 0x5, 0xAD, 0x0, 0x26, 0x0, 0x5E, 0x0, 0x0, 0x0, 0x6, 0x0, 0x71, 0x13, 0x3, 0xFF, 0xFF, 0x0, 0x3A, 0xFF, 0xEB, 0x4, 0xDE, 0x7, 0xB, 0x0, 0x26, 0x2, 0x74, 0x0, 0x0, 0x0, 0x7, 0x0, 0x6B, 0x0, 0xD2, 0x1, 0x3E, 0xFF, 0xFF, 0x0, 0xC, 0xFE, 0x4B, 0x3, 0xD7, 0x5, 0xCD, 0x0, 0x26, 0x0, 0x5E, 0x0, 0x0, 0x0, 0x6, 0x0, 0x6B, 0x43, 0x0, 0xFF, 0xFF, 0x0, 0x3A, 0xFF, 0xEB, 0x4, 0xDE, 0x7, 0x3D, 0x0, 0x26, 0x2, 0x74, 0x0, 0x0, 0x0, 0x7, 0x1, 0x8E, 0x1, 0x30, 0x1, 0x3E, 0xFF, 0xFF, 0x0, 0xC, 0xFE, 0x4B, 0x3, 0xF8, 0x5, 0xFF, 0x0, 0x26, 0x0, 0x5E, 0x0, 0x0, 0x0, 0x7, 0x1, 0x8E, 0x0, 0xA1, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x8E, 0x0, 0x0, 0x4, 0xEF, 0x7, 0xB, 0x0, 0x26, 0x2, 0x77, 0x0, 0x0, 0x0, 0x7, 0x0, 0x6B, 0x1, 0x10, 0x1, 0x3E, 0xFF, 0xFF, 0x0, 0x5F, 0x0, 0x0, 0x3, 0xE1, 0x5, 0xBF, 0x0, 0x26, 0x2, 0x8F, 0x0, 0x0, 0x0, 0x6, 0x0, 0x6B, 0x67, 0xF2, 0xFF, 0xFF, 0x0, 0x9C, 0x0, 0x0, 0x6, 0x59, 0x7, 0xB, 0x0, 0x26, 0x2, 0x7B, 0x0, 0x0, 0x0, 0x7, 0x0, 0x6B, 0x1, 0xC2, 0x1, 0x3E, 0xFF, 0xFF, 0x0, 0x8F, 0x0, 0x0, 0x5, 0xCA, 0x5, 0xBF, 0x0, 0x26, 0x2, 0x93, 0x0, 0x0, 0x0, 0x7, 0x0, 0x6B, 0x1, 0x74, 0xFF, 0xF2, 0xFF, 0xFF, 0x0, 0x50, 0xFF, 0xEC, 0x4, 0x4, 0x6, 0x0, 0x0, 0x6, 0x0, 0x49, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x12, 0xFE, 0x96, 0x5, 0x43, 0x5, 0xB0, 0x0, 0x26, 0x0, 0x26, 0x0, 0x0, 0x0, 0x7, 0x1, 0xD4, 0x5, 0xF, 0x0, 0x3, 0xFF, 0xFF, 0x0, 0x5B, 0xFE, 0x9B, 0x3, 0xFC, 0x4, 0x4E, 0x0, 0x26, 0x0, 0x46, 0x0, 0x0, 0x0, 0x7, 0x1, 0xD4, 0x4, 0x41, 0x0, 0x8, 0xFF, 0xFF, 0x0, 0x12, 0x0, 0x0, 0x5, 0x43, 0x7, 0xBC, 0x0, 0x26, 0x0, 0x26, 0x0, 0x0, 0x0, 0x7, 0x1, 0xBA, 0x5, 0x5, 0x1, 0x3C, 0xFF, 0xFF, 0x0, 0x5B, 0xFF, 0xEC, 0x3, 0xFC, 0x6, 0x86, 0x0, 0x26, 0x0, 0x46, 0x0, 0x0, 0x0, 0x7, 0x1, 0xBA, 0x4, 0x8F, 0x0, 0x6, 0xFF, 0xFF, 0x0, 0x12, 0x0, 0x0, 0x5, 0x4A, 0x7, 0xB1, 0x0, 0x26, 0x0, 0x26, 0x0, 0x0, 0x0, 0x7, 0x7, 0xBF, 0x0, 0xBE, 0x1, 0x20, 0xFF, 0xFF, 0x0, 0x5B, 0xFF, 0xEC, 0x4, 0xD4, 0x6, 0x7B, 0x0, 0x26, 0x0, 0x46, 0x0, 0x0, 0x0, 0x6, 0x7, 0xBF, 0x48, 0xEA, 0xFF, 0xFF, 0x0, 0xE, 0x0, 0x0, 0x5, 0x43, 0x7, 0xAF, 0x0, 0x26, 0x0, 0x26, 0x0, 0x0, 0x0, 0x7, 0x7, 0xC0, 0x0, 0xC3, 0x1, 0x2B, 0xFF, 0xFF, 0xFF, 0x98, 0xFF, 0xEC, 0x3, 0xFC, 0x6, 0x79, 0x0, 0x26, 0x0, 0x46, 0x0, 0x0, 0x0, 0x6, 0x7, 0xC0, 0x4D, 0xF5, 0xFF, 0xFF, 0x0, 0x12, 0x0, 0x0, 0x5, 0x43, 0x7, 0xDD, 0x0, 0x26, 0x0, 0x26, 0x0, 0x0, 0x0, 0x7, 0x7, 0xC1, 0x0, 0xC2, 0x1, 0x12, 0xFF, 0xFF, 0x0, 0x5B, 0xFF, 0xEC, 0x4, 0x56, 0x6, 0xA7, 0x0, 0x26, 0x0, 0x46, 0x0, 0x0, 0x0, 0x6, 0x7, 0xC1, 0x4C, 0xDC, 0xFF, 0xFF, 0x0, 0x12, 0x0, 0x0, 0x5, 0x43, 0x7, 0xD6, 0x0, 0x26, 0x0, 0x26, 0x0, 0x0, 0x0, 0x7, 0x7, 0xC2, 0x0, 0xC3, 0x1, 0x4, 0xFF, 0xFF, 0x0, 0x5B, 0xFF, 0xEC, 0x3, 0xFC, 0x6, 0xA0, 0x0, 0x26, 0x0, 0x46, 0x0, 0x0, 0x0, 0x6, 0x7, 0xC2, 0x4D, 0xCE, 0xFF, 0xFF, 0x0, 0x12, 0xFE, 0x96, 0x5, 0x43, 0x7, 0x37, 0x0, 0x26, 0x0, 0x26, 0x0, 0x0, 0x0, 0x27, 0x1, 0x77, 0x0, 0xC2, 0x1, 0x36, 0x0, 0x7, 0x1, 0xD4, 0x5, 0xF, 0x0, 0x3, 0xFF, 0xFF, 0x0, 0x5B, 0xFE, 0x9B, 0x3, 0xFC, 0x6, 0x1, 0x0, 0x26, 0x0, 0x46, 0x0, 0x0, 0x0, 0x26, 0x1, 0x77, 0x4C, 0x0, 0x0, 0x7, 0x1, 0xD4, 0x4, 0x41, 0x0, 0x8, 0xFF, 0xFF, 0x0, 0x12, 0x0, 0x0, 0x5, 0x43, 0x7, 0xAF, 0x0, 0x26, 0x0, 0x26, 0x0, 0x0, 0x0, 0x7, 0x7, 0xC5, 0x0, 0xEF, 0x1, 0x30, 0xFF, 0xFF, 0x0, 0x5B, 0xFF, 0xEC, 0x3, 0xFC, 0x6, 0x79, 0x0, 0x26, 0x0, 0x46, 0x0, 0x0, 0x0, 0x6, 0x7, 0xC5, 0x79, 0xFA, 0xFF, 0xFF, 0x0, 0x12, 0x0, 0x0, 0x5, 0x43, 0x7, 0xAF, 0x0, 0x26, 0x0, 0x26, 0x0, 0x0, 0x0, 0x7, 0x7, 0xB3, 0x0, 0xEF, 0x1, 0x30, 0xFF, 0xFF, 0x0, 0x5B, 0xFF, 0xEC, 0x3, 0xFC, 0x6, 0x79, 0x0, 0x26, 0x0, 0x46, 0x0, 0x0, 0x0, 0x6, 0x7, 0xB3, 0x79, 0xFA, 0xFF, 0xFF, 0x0, 0x12, 0x0, 0x0, 0x5, 0x43, 0x8, 0x3E, 0x0, 0x26, 0x0, 0x26, 0x0, 0x0, 0x0, 0x7, 0x7, 0xC6, 0x0, 0xEE, 0x1, 0x36, 0xFF, 0xFF, 0x0, 0x5B, 0xFF, 0xEC, 0x3, 0xFC, 0x7, 0x8, 0x0, 0x26, 0x0, 0x46, 0x0, 0x0, 0x0, 0x6, 0x7, 0xC6, 0x78, 0x0, 0xFF, 0xFF, 0x0, 0x12, 0x0, 0x0, 0x5, 0x43, 0x8, 0x19, 0x0, 0x26, 0x0, 0x26, 0x0, 0x0, 0x0, 0x7, 0x7, 0xDA, 0x0, 0xF0, 0x1, 0x3C, 0xFF, 0xFF, 0x0, 0x5B, 0xFF, 0xEC, 0x3, 0xFC, 0x6, 0xE3, 0x0, 0x26, 0x0, 0x46, 0x0, 0x0, 0x0, 0x6, 0x7, 0xDA, 0x7A, 0x6, 0xFF, 0xFF, 0x0, 0x12, 0xFE, 0x96, 0x5, 0x43, 0x7, 0x1D, 0x0, 0x26, 0x0, 0x26, 0x0, 0x0, 0x0, 0x27, 0x1, 0x89, 0x0, 0xF5, 0x1, 0x36, 0x0, 0x7, 0x1, 0xD4, 0x5, 0xF, 0x0, 0x3, 0xFF, 0xFF, 0x0, 0x5B, 0xFE, 0x9B, 0x3, 0xFC, 0x5, 0xE7, 0x0, 0x26, 0x0, 0x46, 0x0, 0x0, 0x0, 0x26, 0x1, 0x89, 0x7F, 0x0, 0x0, 0x7, 0x1, 0xD4, 0x4, 0x41, 0x0, 0x8, 0xFF, 0xFF, 0x0, 0x95, 0xFE, 0x9D, 0x4, 0x4D, 0x5, 0xB0, 0x0, 0x26, 0x0, 0x2A, 0x0, 0x0, 0x0, 0x7, 0x1, 0xD4, 0x4, 0xCC, 0x0, 0xA, 0xFF, 0xFF, 0x0, 0x54, 0xFE, 0x93, 0x4, 0xC, 0x4, 0x4E, 0x0, 0x26, 0x0, 0x4A, 0x0, 0x0, 0x0, 0x7, 0x1, 0xD4, 0x4, 0x91, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x95, 0x0, 0x0, 0x4, 0x4D, 0x7, 0xC4, 0x0, 0x26, 0x0, 0x2A, 0x0, 0x0, 0x0, 0x7, 0x1, 0xBA, 0x4, 0xCB, 0x1, 0x44, 0xFF, 0xFF, 0x0, 0x54, 0xFF, 0xEC, 0x4, 0xC, 0x6, 0x86, 0x0, 0x26, 0x0, 0x4A, 0x0, 0x0, 0x0, 0x7, 0x1, 0xBA, 0x4, 0x83, 0x0, 0x6, 0xFF, 0xFF, 0x0, 0x95, 0x0, 0x0, 0x4, 0x4D, 0x7, 0x33, 0x0, 0x26, 0x0, 0x2A, 0x0, 0x0, 0x0, 0x7, 0x1, 0x8D, 0x0, 0x8A, 0x1, 0x3E, 0xFF, 0xFF, 0x0, 0x54, 0xFF, 0xEC, 0x4, 0xC, 0x5, 0xF5, 0x0, 0x26, 0x0, 0x4A, 0x0, 0x0, 0x0, 0x6, 0x1, 0x8D, 0x42, 0x0, 0xFF, 0xFF, 0x0, 0x95, 0x0, 0x0, 0x5, 0x10, 0x7, 0xB9, 0x0, 0x26, 0x0, 0x2A, 0x0, 0x0, 0x0, 0x7, 0x7, 0xBF, 0x0, 0x84, 0x1, 0x28, 0xFF, 0xFF, 0x0, 0x54, 0xFF, 0xEC, 0x4, 0xC8, 0x6, 0x7B, 0x0, 0x26, 0x0, 0x4A, 0x0, 0x0, 0x0, 0x6, 0x7, 0xBF, 0x3C, 0xEA, 0xFF, 0xFF, 0xFF, 0xD4, 0x0, 0x0, 0x4, 0x4D, 0x7, 0xB7, 0x0, 0x26, 0x0, 0x2A, 0x0, 0x0, 0x0, 0x7, 0x7, 0xC0, 0x0, 0x89, 0x1, 0x33, 0xFF, 0xFF, 0xFF, 0x8C, 0xFF, 0xEC, 0x4, 0xC, 0x6, 0x79, 0x0, 0x26, 0x0, 0x4A, 0x0, 0x0, 0x0, 0x6, 0x7, 0xC0, 0x41, 0xF5, 0xFF, 0xFF, 0x0, 0x95, 0x0, 0x0, 0x4, 0x92, 0x7, 0xE5, 0x0, 0x26, 0x0, 0x2A, 0x0, 0x0, 0x0, 0x7, 0x7, 0xC1, 0x0, 0x88, 0x1, 0x1A, 0xFF, 0xFF, 0x0, 0x54, 0xFF, 0xEC, 0x4, 0x4A, 0x6, 0xA7, 0x0, 0x26, 0x0, 0x4A, 0x0, 0x0, 0x0, 0x6, 0x7, 0xC1, 0x40, 0xDC, 0xFF, 0xFF, 0x0, 0x95, 0x0, 0x0, 0x4, 0x4D, 0x7, 0xDE, 0x0, 0x26, 0x0, 0x2A, 0x0, 0x0, 0x0, 0x7, 0x7, 0xC2, 0x0, 0x89, 0x1, 0xC, 0xFF, 0xFF, 0x0, 0x54, 0xFF, 0xEC, 0x4, 0xC, 0x6, 0xA0, 0x0, 0x26, 0x0, 0x4A, 0x0, 0x0, 0x0, 0x6, 0x7, 0xC2, 0x41, 0xCE, 0xFF, 0xFF, 0x0, 0x95, 0xFE, 0x9D, 0x4, 0x4D, 0x7, 0x3F, 0x0, 0x26, 0x0, 0x2A, 0x0, 0x0, 0x0, 0x27, 0x1, 0x77, 0x0, 0x88, 0x1, 0x3E, 0x0, 0x7, 0x1, 0xD4, 0x4, 0xCC, 0x0, 0xA, 0xFF, 0xFF, 0x0, 0x54, 0xFE, 0x93, 0x4, 0xC, 0x6, 0x1, 0x0, 0x26, 0x0, 0x4A, 0x0, 0x0, 0x0, 0x26, 0x1, 0x77, 0x40, 0x0, 0x0, 0x7, 0x1, 0xD4, 0x4, 0x91, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0xA4, 0x0, 0x0, 0x2, 0x12, 0x7, 0xC4, 0x0, 0x26, 0x0, 0x2E, 0x0, 0x0, 0x0, 0x7, 0x1, 0xBA, 0x3, 0x79, 0x1, 0x44, 0xFF, 0xFF, 0x0, 0x90, 0x0, 0x0, 0x1, 0xFD, 0x6, 0x7F, 0x0, 0x26, 0x0, 0x8E, 0x0, 0x0, 0x0, 0x7, 0x1, 0xBA, 0x3, 0x64, 0xFF, 0xFF, 0xFF, 0xFF, 0x0, 0x94, 0xFE, 0x9A, 0x1, 0xA8, 0x5, 0xB0, 0x0, 0x26, 0x0, 0x2E, 0x0, 0x0, 0x0, 0x7, 0x1, 0xD4, 0x3, 0x79, 0x0, 0x7, 0xFF, 0xFF, 0x0, 0x79, 0xFE, 0x9D, 0x1, 0x91, 0x5, 0xD5, 0x0, 0x26, 0x0, 0x4E, 0x0, 0x0, 0x0, 0x7, 0x1, 0xD4, 0x3, 0x5E, 0x0, 0xA, 0xFF, 0xFF, 0x0, 0x66, 0xFE, 0x93, 0x5, 0x1F, 0x5, 0xC4, 0x0, 0x26, 0x0, 0x34, 0x0, 0x0, 0x0, 0x7, 0x1, 0xD4, 0x5, 0x1F, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x50, 0xFE, 0x8F, 0x4, 0x3E, 0x4, 0x4E, 0x0, 0x26, 0x0, 0x54, 0x0, 0x0, 0x0, 0x7, 0x1, 0xD4, 0x4, 0x9F, 0xFF, 0xFC, 0xFF, 0xFF, 0x0, 0x66, 0xFF, 0xEC, 0x5, 0x1F, 0x7, 0xBC, 0x0, 0x26, 0x0, 0x34, 0x0, 0x0, 0x0, 0x7, 0x1, 0xBA, 0x5, 0x1C, 0x1, 0x3C, 0xFF, 0xFF, 0x0, 0x50, 0xFF, 0xEC, 0x4, 0x3E, 0x6, 0x86, 0x0, 0x26, 0x0, 0x54, 0x0, 0x0, 0x0, 0x7, 0x1, 0xBA, 0x4, 0x98, 0x0, 0x6, 0xFF, 0xFF, 0x0, 0x66, 0xFF, 0xEC, 0x5, 0x61, 0x7, 0xB1, 0x0, 0x26, 0x0, 0x34, 0x0, 0x0, 0x0, 0x7, 0x7, 0xBF, 0x0, 0xD5, 0x1, 0x20, 0xFF, 0xFF, 0x0, 0x50, 0xFF, 0xEC, 0x4, 0xDD, 0x6, 0x7B, 0x0, 0x26, 0x0, 0x54, 0x0, 0x0, 0x0, 0x6, 0x7, 0xBF, 0x51, 0xEA, 0xFF, 0xFF, 0x0, 0x25, 0xFF, 0xEC, 0x5, 0x1F, 0x7, 0xAF, 0x0, 0x26, 0x0, 0x34, 0x0, 0x0, 0x0, 0x7, 0x7, 0xC0, 0x0, 0xDA, 0x1, 0x2B, 0xFF, 0xFF, 0xFF, 0xA1, 0xFF, 0xEC, 0x4, 0x3E, 0x6, 0x79, 0x0, 0x26, 0x0, 0x54, 0x0, 0x0, 0x0, 0x6, 0x7, 0xC0, 0x56, 0xF5, 0xFF, 0xFF, 0x0, 0x66, 0xFF, 0xEC, 0x5, 0x1F, 0x7, 0xDD, 0x0, 0x26, 0x0, 0x34, 0x0, 0x0, 0x0, 0x7, 0x7, 0xC1, 0x0, 0xD9, 0x1, 0x12, 0xFF, 0xFF, 0x0, 0x50, 0xFF, 0xEC, 0x4, 0x5F, 0x6, 0xA7, 0x0, 0x26, 0x0, 0x54, 0x0, 0x0, 0x0, 0x6, 0x7, 0xC1, 0x55, 0xDC, 0xFF, 0xFF, 0x0, 0x66, 0xFF, 0xEC, 0x5, 0x1F, 0x7, 0xD6, 0x0, 0x26, 0x0, 0x34, 0x0, 0x0, 0x0, 0x7, 0x7, 0xC2, 0x0, 0xDA, 0x1, 0x4, 0xFF, 0xFF, 0x0, 0x50, 0xFF, 0xEC, 0x4, 0x3E, 0x6, 0xA0, 0x0, 0x26, 0x0, 0x54, 0x0, 0x0, 0x0, 0x6, 0x7, 0xC2, 0x56, 0xCE, 0xFF, 0xFF, 0x0, 0x66, 0xFE, 0x93, 0x5, 0x1F, 0x7, 0x37, 0x0, 0x26, 0x0, 0x34, 0x0, 0x0, 0x0, 0x27, 0x1, 0x77, 0x0, 0xD9, 0x1, 0x36, 0x0, 0x7, 0x1, 0xD4, 0x5, 0x1F, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x50, 0xFE, 0x8F, 0x4, 0x3E, 0x6, 0x1, 0x0, 0x26, 0x0, 0x54, 0x0, 0x0, 0x0, 0x26, 0x1, 0x77, 0x55, 0x0, 0x0, 0x7, 0x1, 0xD4, 0x4, 0x9F, 0xFF, 0xFC, 0xFF, 0xFF, 0x0, 0x58, 0xFF, 0xEC, 0x5, 0xAA, 0x7, 0x34, 0x0, 0x26, 0x0, 0xB4, 0x0, 0x0, 0x0, 0x7, 0x0, 0x76, 0x1, 0xD3, 0x1, 0x34, 0xFF, 0xFF, 0x0, 0x4F, 0xFF, 0xEC, 0x4, 0xBC, 0x6, 0x0, 0x0, 0x26, 0x0, 0xB5, 0x0, 0x0, 0x0, 0x7, 0x0, 0x76, 0x1, 0x58, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x58, 0xFF, 0xEC, 0x5, 0xAA, 0x7, 0x34, 0x0, 0x26, 0x0, 0xB4, 0x0, 0x0, 0x0, 0x7, 0x0, 0x45, 0x1, 0x34, 0x1, 0x34, 0xFF, 0xFF, 0x0, 0x4F, 0xFF, 0xEC, 0x4, 0xBC, 0x6, 0x0, 0x0, 0x26, 0x0, 0xB5, 0x0, 0x0, 0x0, 0x7, 0x0, 0x45, 0x0, 0xB9, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x58, 0xFF, 0xEC, 0x5, 0xAA, 0x7, 0xBA, 0x0, 0x26, 0x0, 0xB4, 0x0, 0x0, 0x0, 0x7, 0x1, 0xBA, 0x5, 0x17, 0x1, 0x3A, 0xFF, 0xFF, 0x0, 0x4F, 0xFF, 0xEC, 0x4, 0xBC, 0x6, 0x86, 0x0, 0x26, 0x0, 0xB5, 0x0, 0x0, 0x0, 0x7, 0x1, 0xBA, 0x4, 0x9C, 0x0, 0x6, 0xFF, 0xFF, 0x0, 0x58, 0xFF, 0xEC, 0x5, 0xAA, 0x7, 0x29, 0x0, 0x26, 0x0, 0xB4, 0x0, 0x0, 0x0, 0x7, 0x1, 0x8D, 0x0, 0xD6, 0x1, 0x34, 0xFF, 0xFF, 0x0, 0x4F, 0xFF, 0xEC, 0x4, 0xBC, 0x5, 0xF5, 0x0, 0x26, 0x0, 0xB5, 0x0, 0x0, 0x0, 0x6, 0x1, 0x8D, 0x5B, 0x0, 0xFF, 0xFF, 0x0, 0x58, 0xFE, 0x93, 0x5, 0xAA, 0x6, 0x2E, 0x0, 0x26, 0x0, 0xB4, 0x0, 0x0, 0x0, 0x7, 0x1, 0xD4, 0x5, 0x8, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x4F, 0xFE, 0x89, 0x4, 0xBC, 0x4, 0xA9, 0x0, 0x26, 0x0, 0xB5, 0x0, 0x0, 0x0, 0x7, 0x1, 0xD4, 0x4, 0x9C, 0xFF, 0xF6, 0xFF, 0xFF, 0x0, 0x7E, 0xFE, 0x93, 0x4, 0xBE, 0x5, 0xB0, 0x0, 0x26, 0x0, 0x3A, 0x0, 0x0, 0x0, 0x7, 0x1, 0xD4, 0x4, 0xF3, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x77, 0xFE, 0x93, 0x3, 0xF7, 0x4, 0x3A, 0x0, 0x26, 0x0, 0x5A, 0x0, 0x0, 0x0, 0x7, 0x1, 0xD4, 0x4, 0x43, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x7E, 0xFF, 0xEC, 0x4, 0xBE, 0x7, 0xBC, 0x0, 0x26, 0x0, 0x3A, 0x0, 0x0, 0x0, 0x7, 0x1, 0xBA, 0x4, 0xF3, 0x1, 0x3C, 0xFF, 0xFF, 0x0, 0x77, 0xFF, 0xEC, 0x3, 0xF7, 0x6, 0x86, 0x0, 0x26, 0x0, 0x5A, 0x0, 0x0, 0x0, 0x7, 0x1, 0xBA, 0x4, 0x91, 0x0, 0x6, 0xFF, 0xFF, 0x0, 0x7E, 0xFF, 0xEC, 0x6, 0x3D, 0x7, 0x42, 0x0, 0x26, 0x0, 0xC3, 0x0, 0x0, 0x0, 0x7, 0x0, 0x76, 0x1, 0xD6, 0x1, 0x42, 0xFF, 0xFF, 0x0, 0x77, 0xFF, 0xEC, 0x5, 0x29, 0x5, 0xEB, 0x0, 0x26, 0x0, 0xC4, 0x0, 0x0, 0x0, 0x7, 0x0, 0x76, 0x1, 0x56, 0xFF, 0xEB, 0xFF, 0xFF, 0x0, 0x7E, 0xFF, 0xEC, 0x6, 0x3D, 0x7, 0x42, 0x0, 0x26, 0x0, 0xC3, 0x0, 0x0, 0x0, 0x7, 0x0, 0x45, 0x1, 0x37, 0x1, 0x42, 0xFF, 0xFF, 0x0, 0x77, 0xFF, 0xEC, 0x5, 0x29, 0x5, 0xEB, 0x0, 0x26, 0x0, 0xC4, 0x0, 0x0, 0x0, 0x7, 0x0, 0x45, 0x0, 0xB7, 0xFF, 0xEB, 0xFF, 0xFF, 0x0, 0x7E, 0xFF, 0xEC, 0x6, 0x3D, 0x7, 0xC8, 0x0, 0x26, 0x0, 0xC3, 0x0, 0x0, 0x0, 0x7, 0x1, 0xBA, 0x5, 0x1A, 0x1, 0x48, 0xFF, 0xFF, 0x0, 0x77, 0xFF, 0xEC, 0x5, 0x29, 0x6, 0x71, 0x0, 0x26, 0x0, 0xC4, 0x0, 0x0, 0x0, 0x7, 0x1, 0xBA, 0x4, 0x9A, 0xFF, 0xF1, 0xFF, 0xFF, 0x0, 0x7E, 0xFF, 0xEC, 0x6, 0x3D, 0x7, 0x37, 0x0, 0x26, 0x0, 0xC3, 0x0, 0x0, 0x0, 0x7, 0x1, 0x8D, 0x0, 0xD9, 0x1, 0x42, 0xFF, 0xFF, 0x0, 0x77, 0xFF, 0xEC, 0x5, 0x29, 0x5, 0xE0, 0x0, 0x26, 0x0, 0xC4, 0x0, 0x0, 0x0, 0x6, 0x1, 0x8D, 0x59, 0xEB, 0xFF, 0xFF, 0x0, 0x7E, 0xFE, 0x89, 0x6, 0x3D, 0x6, 0x1, 0x0, 0x26, 0x0, 0xC3, 0x0, 0x0, 0x0, 0x7, 0x1, 0xD4, 0x5, 0x1A, 0xFF, 0xF6, 0xFF, 0xFF, 0x0, 0x77, 0xFE, 0x93, 0x5, 0x29, 0x4, 0x94, 0x0, 0x26, 0x0, 0xC4, 0x0, 0x0, 0x0, 0x7, 0x1, 0xD4, 0x4, 0x8F, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x8, 0xFE, 0xA3, 0x4, 0xD6, 0x5, 0xB0, 0x0, 0x26, 0x0, 0x3E, 0x0, 0x0, 0x0, 0x7, 0x1, 0xD4, 0x4, 0xC7, 0x0, 0x10, 0xFF, 0xFF, 0x0, 0xC, 0xFE, 0xC, 0x3, 0xD7, 0x4, 0x3A, 0x0, 0x26, 0x0, 0x5E, 0x0, 0x0, 0x0, 0x7, 0x1, 0xD4, 0x5, 0x48, 0xFF, 0x79, 0xFF, 0xFF, 0x0, 0x8, 0x0, 0x0, 0x4, 0xD6, 0x7, 0xBC, 0x0, 0x26, 0x0, 0x3E, 0x0, 0x0, 0x0, 0x7, 0x1, 0xBA, 0x4, 0xCB, 0x1, 0x3C, 0xFF, 0xFF, 0x0, 0xC, 0xFE, 0x4B, 0x3, 0xD7, 0x6, 0x86, 0x0, 0x26, 0x0, 0x5E, 0x0, 0x0, 0x0, 0x7, 0x1, 0xBA, 0x4, 0x5A, 0x0, 0x6, 0xFF, 0xFF, 0x0, 0x8, 0x0, 0x0, 0x4, 0xD6, 0x7, 0x2B, 0x0, 0x26, 0x0, 0x3E, 0x0, 0x0, 0x0, 0x7, 0x1, 0x8D, 0x0, 0x8A, 0x1, 0x36, 0xFF, 0xFF, 0x0, 0xC, 0xFE, 0x4B, 0x3, 0xD7, 0x5, 0xF5, 0x0, 0x26, 0x0, 0x5E, 0x0, 0x0, 0x0, 0x6, 0x1, 0x8D, 0x19, 0x0, 0xFF, 0xFF, 0x0, 0x50, 0xFE, 0xAC, 0x4, 0xB3, 0x6, 0x0, 0x0, 0x26, 0x0, 0x49, 0x0, 0x0, 0x0, 0x27, 0x7, 0xA4, 0x1, 0x85, 0x2, 0x41, 0x0, 0x7, 0x0, 0x44, 0x0, 0x98, 0xFF, 0x6C, 0xFF, 0xFF, 0x0, 0x2D, 0xFE, 0x99, 0x4, 0xB0, 0x5, 0xB0, 0x0, 0x26, 0x0, 0x39, 0x0, 0x0, 0x0, 0x7, 0x7, 0xDB, 0x2, 0x4E, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x24, 0xFE, 0x99, 0x3, 0xD1, 0x4, 0x3A, 0x0, 0x26, 0x2, 0x8C, 0x0, 0x0, 0x0, 0x7, 0x7, 0xDB, 0x1, 0xE6, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x8E, 0xFE, 0x99, 0x4, 0xEF, 0x5, 0xB0, 0x0, 0x26, 0x2, 0x77, 0x0, 0x0, 0x0, 0x7, 0x7, 0xDB, 0x2, 0xD0, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x5F, 0xFE, 0x99, 0x3, 0xE1, 0x4, 0x3B, 0x0, 0x26, 0x2, 0x8F, 0x0, 0x0, 0x0, 0x7, 0x7, 0xDB, 0x1, 0xC6, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x9B, 0xFE, 0x99, 0x4, 0x38, 0x5, 0xB0, 0x0, 0x26, 0x2, 0x30, 0x0, 0x0, 0x0, 0x7, 0x7, 0xDB, 0x1, 0x8, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x85, 0xFE, 0x99, 0x3, 0x4D, 0x4, 0x3A, 0x0, 0x26, 0x2, 0x82, 0x0, 0x0, 0x0, 0x7, 0x7, 0xDB, 0x0, 0xED, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x17, 0xFE, 0x3F, 0x5, 0xBD, 0x5, 0xC4, 0x0, 0x26, 0x2, 0xE3, 0x0, 0x0, 0x0, 0x7, 0x7, 0xDB, 0x2, 0xEC, 0xFF, 0xA6, 0xFF, 0xFF, 0xFF, 0xCA, 0xFE, 0x44, 0x4, 0x8B, 0x4, 0x4E, 0x0, 0x26, 0x2, 0xE4, 0x0, 0x0, 0x0, 0x7, 0x7, 0xDB, 0x1, 0xF4, 0xFF, 0xAB, 0xFF, 0xFF, 0x0, 0x7A, 0x0, 0x0, 0x3, 0xF9, 0x6, 0x0, 0x0, 0x6, 0x0, 0x4D, 0x0, 0x0, 0x0, 0x2, 0xFF, 0xD0, 0x0, 0x0, 0x4, 0xC2, 0x5, 0xB0, 0x0, 0x12, 0x0, 0x1A, 0x0, 0x0, 0x1, 0x14, 0x4, 0x23, 0x21, 0x11, 0x23, 0x35, 0x33, 0x35, 0x33, 0x15, 0x33, 0x15, 0x23, 0x15, 0x21, 0x16, 0x4, 0x1, 0x21, 0x32, 0x36, 0x34, 0x26, 0x23, 0x21, 0x4, 0xC2, 0xFE, 0xEC, 0xF8, 0xFD, 0xDB, 0xC1, 0xC1, 0xFD, 0xE0, 0xE0, 0x1, 0x2C, 0xF6, 0x1, 0x12, 0xFC, 0xCC, 0x1, 0x28, 0x8D, 0x82, 0x82, 0x8D, 0xFE, 0xD8, 0x1, 0xC6, 0xC8, 0xFE, 0x4, 0x46, 0xAB, 0xBF, 0xBF, 0xAB, 0xC3, 0x1, 0xF3, 0xFE, 0x3B, 0x99, 0xCA, 0x8B, 0x0, 0x2, 0xFF, 0xD0, 0x0, 0x0, 0x4, 0xC2, 0x5, 0xB0, 0x0, 0x12, 0x0, 0x1A, 0x0, 0x0, 0x1, 0x14, 0x4, 0x23, 0x21, 0x11, 0x23, 0x35, 0x33, 0x35, 0x33, 0x15, 0x33, 0x15, 0x23, 0x15, 0x21, 0x16, 0x4, 0x1, 0x21, 0x32, 0x36, 0x34, 0x26, 0x23, 0x21, 0x4, 0xC2, 0xFE, 0xEC, 0xF8, 0xFD, 0xDB, 0xC1, 0xC1, 0xFD, 0xE0, 0xE0, 0x1, 0x2C, 0xF6, 0x1, 0x12, 0xFC, 0xCC, 0x1, 0x28, 0x8D, 0x82, 0x82, 0x8D, 0xFE, 0xD8, 0x1, 0xC6, 0xC8, 0xFE, 0x4, 0x46, 0xAB, 0xBF, 0xBF, 0xAB, 0xC3, 0x1, 0xF3, 0xFE, 0x3B, 0x99, 0xCA, 0x8B, 0x0, 0x1, 0xFF, 0xF0, 0x0, 0x0, 0x4, 0x38, 0x5, 0xB0, 0x0, 0xD, 0x0, 0x0, 0x1, 0x23, 0x11, 0x23, 0x11, 0x23, 0x35, 0x33, 0x11, 0x21, 0x15, 0x21, 0x11, 0x33, 0x2, 0x8E, 0xF7, 0xFC, 0xAB, 0xAB, 0x3, 0x9D, 0xFD, 0x5F, 0xF7, 0x2, 0x9F, 0xFD, 0x61, 0x2, 0x9F, 0xAB, 0x2, 0x66, 0xCB, 0xFE, 0x65, 0x0, 0x1, 0xFF, 0xE2, 0x0, 0x0, 0x3, 0x4D, 0x4, 0x3A, 0x0, 0xD, 0x0, 0x0, 0x1, 0x21, 0x11, 0x23, 0x11, 0x23, 0x35, 0x33, 0x11, 0x21, 0x15, 0x21, 0x15, 0x21, 0x2, 0x80, 0xFE, 0xF8, 0xF3, 0xA3, 0xA3, 0x2, 0xC8, 0xFE, 0x2B, 0x1, 0x8, 0x1, 0xD0, 0xFE, 0x30, 0x1, 0xD0, 0xAB, 0x1, 0xBF, 0xC4, 0xFB, 0x0, 0x1, 0xFF, 0xF7, 0x0, 0x0, 0x5, 0x44, 0x5, 0xB0, 0x0, 0x14, 0x0, 0x0, 0x21, 0x1, 0x23, 0x11, 0x23, 0x11, 0x23, 0x35, 0x33, 0x35, 0x33, 0x15, 0x33, 0x15, 0x23, 0x15, 0x33, 0x1, 0x21, 0x1, 0x1, 0x4, 0x14, 0xFE, 0x44, 0xAD, 0xFC, 0xB8, 0xB8, 0xFC, 0xEA, 0xEA, 0x8B, 0x1, 0xAD, 0x1, 0x36, 0xFE, 0xC, 0x2, 0x1F, 0x2, 0x70, 0xFD, 0x90, 0x4, 0x3E, 0xAB, 0xC7, 0xC7, 0xAB, 0xF1, 0x2, 0x63, 0xFD, 0x46, 0xFD, 0xA, 0x0, 0x1, 0xFF, 0xC2, 0x0, 0x0, 0x4, 0x4A, 0x6, 0x0, 0x0, 0x14, 0x0, 0x0, 0x21, 0x1, 0x23, 0x11, 0x23, 0x11, 0x23, 0x35, 0x33, 0x35, 0x33, 0x15, 0x33, 0x15, 0x23, 0x11, 0x33, 0x1, 0x21, 0x1, 0x1, 0x3, 0x2F, 0xFE, 0xC8, 0x6F, 0xF3, 0xD3, 0xD3, 0xF3, 0xD8, 0xD8, 0x68, 0x1, 0x10, 0x1, 0x1B, 0xFE, 0x9F, 0x1, 0x90, 0x1, 0xDA, 0xFE, 0x26, 0x4, 0xBA, 0xAB, 0x9B, 0x9B, 0xAB, 0xFD, 0xE2, 0x1, 0x9E, 0xFE, 0x13, 0xFD, 0xB3, 0x0, 0x1, 0x0, 0x8, 0x0, 0x0, 0x4, 0xD6, 0x5, 0xB0, 0x0, 0xE, 0x0, 0x0, 0x1, 0x23, 0x11, 0x23, 0x11, 0x23, 0x35, 0x33, 0x1, 0x21, 0x1, 0x1, 0x21, 0x1, 0x33, 0x3, 0xC5, 0xD7, 0xFE, 0xC9, 0x79, 0xFE, 0x68, 0x1, 0x19, 0x1, 0x4E, 0x1, 0x4F, 0x1, 0x18, 0xFE, 0x68, 0x87, 0x2, 0x4, 0xFD, 0xFC, 0x2, 0x4, 0xAB, 0x3, 0x1, 0xFD, 0x4F, 0x2, 0xB1, 0xFC, 0xFF, 0x0, 0x1, 0x0, 0x21, 0xFE, 0x5F, 0x3, 0xF5, 0x4, 0x3A, 0x0, 0xE, 0x0, 0x0, 0x5, 0x23, 0x11, 0x23, 0x11, 0x23, 0x35, 0x33, 0x1, 0x33, 0x13, 0x13, 0x33, 0x1, 0x33, 0x3, 0x61, 0xDD, 0xF2, 0xCF, 0xA4, 0xFE, 0xBA, 0xFB, 0xF3, 0xEC, 0xFA, 0xFE, 0xBD, 0xAF, 0x2, 0xFE, 0x61, 0x1, 0x9F, 0xAB, 0x3, 0x91, 0xFD, 0x4, 0x2, 0xFC, 0xFC, 0x6F, 0x0, 0x1, 0x0, 0x29, 0x0, 0x0, 0x4, 0xEA, 0x5, 0xB0, 0x0, 0x11, 0x0, 0x0, 0x1, 0x1, 0x21, 0x1, 0x23, 0x35, 0x33, 0x1, 0x21, 0x1, 0x1, 0x21, 0x1, 0x33, 0x15, 0x23, 0x1, 0x21, 0x2, 0x8A, 0xFE, 0xC6, 0xFE, 0xD9, 0x1, 0x96, 0x81, 0x73, 0xFE, 0x83, 0x1, 0x24, 0x1, 0x32, 0x1, 0x31, 0x1, 0x24, 0xFE, 0x83, 0x7A, 0x88, 0x1, 0x96, 0xFE, 0xD9, 0x2, 0x17, 0xFD, 0xE9, 0x2, 0x94, 0xAB, 0x2, 0x71, 0xFD, 0xF2, 0x2, 0xE, 0xFD, 0x8F, 0xAB, 0xFD, 0x6C, 0x0, 0x1, 0x0, 0x1F, 0x0, 0x0, 0x3, 0xE9, 0x4, 0x3A, 0x0, 0x11, 0x0, 0x0, 0x1, 0x3, 0x21, 0x1, 0x23, 0x35, 0x33, 0x1, 0x21, 0x13, 0x13, 0x21, 0x1, 0x33, 0x15, 0x23, 0x1, 0x21, 0x2, 0x4, 0xD7, 0xFE, 0xF2, 0x1, 0x24, 0x89, 0x83, 0xFE, 0xEE, 0x1, 0xD, 0xCA, 0xCE, 0x1, 0xD, 0xFE, 0xEE, 0x8D, 0x93, 0x1, 0x24, 0xFE, 0xF3, 0x1, 0x72, 0xFE, 0x8E, 0x1, 0xD6, 0xAB, 0x1, 0xB9, 0xFE, 0x9C, 0x1, 0x64, 0xFE, 0x47, 0xAB, 0xFE, 0x2A, 0xFF, 0xFF, 0x0, 0x61, 0xFF, 0xEC, 0x4, 0xD, 0x4, 0x4D, 0x0, 0x6, 0x2, 0x3E, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x2, 0x0, 0x0, 0x4, 0x31, 0x5, 0xB0, 0x0, 0x26, 0x0, 0x2B, 0x0, 0x0, 0x0, 0x7, 0x7, 0xA4, 0xFF, 0x72, 0xFE, 0x68, 0xFF, 0xFF, 0x0, 0x82, 0x2, 0x6E, 0x5, 0xCF, 0x3, 0x32, 0x0, 0x6, 0x4, 0x5F, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x51, 0x0, 0x0, 0x4, 0x41, 0x5, 0xC4, 0x0, 0x6, 0x0, 0x17, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x50, 0xFF, 0xEC, 0x4, 0x16, 0x5, 0xC4, 0x0, 0x6, 0x0, 0x18, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x35, 0x0, 0x0, 0x4, 0x59, 0x5, 0xB0, 0x0, 0x6, 0x0, 0x19, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x81, 0xFF, 0xEC, 0x4, 0x3A, 0x5, 0xB0, 0x0, 0x6, 0x0, 0x1A, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x8A, 0xFF, 0xEC, 0x4, 0x4B, 0x5, 0xB7, 0x0, 0x6, 0x0, 0x1B, 0x14, 0x0, 0xFF, 0xFF, 0x0, 0x7D, 0xFF, 0xEC, 0x4, 0x37, 0x5, 0xC4, 0x0, 0x6, 0x0, 0x1D, 0x14, 0x0, 0xFF, 0xFF, 0x0, 0x5E, 0xFF, 0xF9, 0x4, 0x13, 0x5, 0xC4, 0x0, 0x6, 0x0, 0x1E, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x7D, 0xFF, 0xEC, 0x4, 0x36, 0x5, 0xC4, 0x0, 0x6, 0x0, 0x15, 0x14, 0x0, 0xFF, 0xFF, 0x0, 0x73, 0xFD, 0xF2, 0x1, 0x75, 0xFF, 0x9C, 0x0, 0x6, 0x4, 0x3B, 0x0, 0x0, 0x0, 0x1, 0x0, 0x90, 0xFF, 0xEC, 0x2, 0x9B, 0x6, 0x0, 0x0, 0xC, 0x0, 0x0, 0x1, 0x11, 0x16, 0x33, 0x32, 0x37, 0x17, 0x6, 0x23, 0x22, 0x26, 0x35, 0x11, 0x1, 0x83, 0x1, 0xA2, 0x28, 0x34, 0x19, 0x5B, 0x3D, 0xAD, 0xC6, 0x6, 0x0, 0xFB, 0x5E, 0xAF, 0xB, 0xB9, 0x15, 0xBF, 0xB5, 0x4, 0xA0, 0xFF, 0xFF, 0x0, 0x7F, 0xFE, 0x61, 0x4, 0x6, 0x4, 0x4E, 0x0, 0x6, 0x2, 0x40, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x95, 0xFF, 0xEC, 0x8, 0x3A, 0x5, 0xB0, 0x0, 0x26, 0x0, 0x31, 0x0, 0x0, 0x0, 0x7, 0x0, 0x2F, 0x4, 0x55, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x95, 0xFE, 0x4B, 0x5, 0xDB, 0x5, 0xD5, 0x0, 0x26, 0x0, 0x31, 0x0, 0x0, 0x0, 0x7, 0x0, 0x4F, 0x4, 0x55, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x8C, 0xFE, 0x4B, 0x3, 0x92, 0x6, 0x0, 0x0, 0x26, 0x0, 0x51, 0x0, 0x0, 0x0, 0x7, 0x0, 0x4F, 0x2, 0xC, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x95, 0xFF, 0xEC, 0x9, 0x94, 0x5, 0xB0, 0x0, 0x26, 0x0, 0x33, 0x0, 0x0, 0x0, 0x7, 0x0, 0x2F, 0x5, 0xAF, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x95, 0xFE, 0x4B, 0x7, 0x35, 0x5, 0xD5, 0x0, 0x26, 0x0, 0x33, 0x0, 0x0, 0x0, 0x7, 0x0, 0x4F, 0x5, 0xAF, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x7A, 0xFE, 0x4B, 0x5, 0xF9, 0x5, 0xD5, 0x0, 0x26, 0x0, 0x53, 0x0, 0x0, 0x0, 0x7, 0x0, 0x4F, 0x4, 0x73, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x12, 0x0, 0x0, 0x5, 0x43, 0x7, 0x38, 0x0, 0x26, 0x0, 0x26, 0x0, 0x0, 0x0, 0x7, 0x1, 0x78, 0x0, 0xDA, 0x1, 0x36, 0xFF, 0xFF, 0x0, 0x5B, 0xFF, 0xEC, 0x3, 0xFC, 0x6, 0x2, 0x0, 0x26, 0x0, 0x46, 0x0, 0x0, 0x0, 0x6, 0x1, 0x78, 0x64, 0x0, 0xFF, 0xFF, 0xFF, 0xC0, 0x0, 0x0, 0x2, 0x83, 0x7, 0x40, 0x0, 0x26, 0x0, 0x2E, 0x0, 0x0, 0x0, 0x7, 0x1, 0x78, 0xFF, 0x4E, 0x1, 0x3E, 0xFF, 0xFF, 0xFF, 0xAB, 0x0, 0x0, 0x2, 0x6E, 0x5, 0xFB, 0x0, 0x26, 0x0, 0x8E, 0x0, 0x0, 0x0, 0x7, 0x1, 0x78, 0xFF, 0x39, 0xFF, 0xF9, 0xFF, 0xFF, 0x0, 0x66, 0xFF, 0xEC, 0x5, 0x1F, 0x7, 0x38, 0x0, 0x26, 0x0, 0x34, 0x0, 0x0, 0x0, 0x7, 0x1, 0x78, 0x0, 0xF1, 0x1, 0x36, 0xFF, 0xFF, 0x0, 0x50, 0xFF, 0xEC, 0x4, 0x3E, 0x6, 0x2, 0x0, 0x26, 0x0, 0x54, 0x0, 0x0, 0x0, 0x6, 0x1, 0x78, 0x6D, 0x0, 0xFF, 0xFF, 0x0, 0x7E, 0xFF, 0xEC, 0x4, 0xBE, 0x7, 0x38, 0x0, 0x26, 0x0, 0x3A, 0x0, 0x0, 0x0, 0x7, 0x1, 0x78, 0x0, 0xC8, 0x1, 0x36, 0xFF, 0xFF, 0x0, 0x77, 0xFF, 0xEC, 0x3, 0xF7, 0x6, 0x2, 0x0, 0x26, 0x0, 0x5A, 0x0, 0x0, 0x0, 0x6, 0x1, 0x78, 0x66, 0x0, 0xFF, 0xFF, 0x0, 0x7E, 0xFF, 0xEC, 0x4, 0xBE, 0x7, 0xF3, 0x0, 0x26, 0x0, 0x3A, 0x0, 0x0, 0x0, 0x7, 0x7, 0xB4, 0x4, 0xE3, 0x1, 0x51, 0xFF, 0xFF, 0x0, 0x77, 0xFF, 0xEC, 0x3, 0xF7, 0x6, 0xDA, 0x0, 0x26, 0x0, 0x5A, 0x0, 0x0, 0x0, 0x7, 0x8, 0xBF, 0x4, 0x81, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x7E, 0xFF, 0xEC, 0x4, 0xBE, 0x7, 0xB6, 0x0, 0x26, 0x0, 0x3A, 0x0, 0x0, 0x0, 0x7, 0x7, 0xB5, 0x4, 0xE3, 0x1, 0x51, 0xFF, 0xFF, 0x0, 0x77, 0xFF, 0xEC, 0x3, 0xF7, 0x7, 0x2D, 0x0, 0x26, 0x0, 0x5A, 0x0, 0x0, 0x0, 0x7, 0x8, 0xBB, 0x4, 0x81, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x7E, 0xFF, 0xEC, 0x4, 0xBE, 0x7, 0xF2, 0x0, 0x26, 0x0, 0x3A, 0x0, 0x0, 0x0, 0x7, 0x7, 0xB6, 0x4, 0xE3, 0x1, 0x51, 0xFF, 0xFF, 0x0, 0x77, 0xFF, 0xEC, 0x3, 0xF7, 0x7, 0x2E, 0x0, 0x26, 0x0, 0x5A, 0x0, 0x0, 0x0, 0x7, 0x8, 0xC5, 0x4, 0x81, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x7E, 0xFF, 0xEC, 0x4, 0xBE, 0x7, 0xB6, 0x0, 0x26, 0x0, 0x3A, 0x0, 0x0, 0x0, 0x7, 0x7, 0xB7, 0x4, 0xE3, 0x1, 0x51, 0xFF, 0xFF, 0x0, 0x77, 0xFF, 0xEC, 0x3, 0xF7, 0x7, 0x2D, 0x0, 0x26, 0x0, 0x5A, 0x0, 0x0, 0x0, 0x7, 0x8, 0xC0, 0x4, 0x81, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x5A, 0xFF, 0xEB, 0x3, 0xF8, 0x4, 0x50, 0x0, 0x6, 0x1, 0xE, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x12, 0x0, 0x0, 0x5, 0x43, 0x7, 0xF3, 0x0, 0x26, 0x0, 0x26, 0x0, 0x0, 0x0, 0x7, 0x7, 0xB4, 0x4, 0xF5, 0x1, 0x51, 0xFF, 0xFF, 0x0, 0x5B, 0xFF, 0xEC, 0x3, 0xFC, 0x6, 0xDA, 0x0, 0x26, 0x0, 0x46, 0x0, 0x0, 0x0, 0x7, 0x8, 0xBF, 0x4, 0x7F, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x12, 0x0, 0x0, 0x5, 0x43, 0x7, 0xF2, 0x0, 0x26, 0x0, 0x26, 0x0, 0x0, 0x0, 0x7, 0x7, 0xB8, 0x4, 0xF5, 0x1, 0x54, 0xFF, 0xFF, 0x0, 0x5B, 0xFF, 0xEC, 0x3, 0xFC, 0x6, 0xEC, 0x0, 0x26, 0x0, 0x46, 0x0, 0x0, 0x0, 0x7, 0x8, 0xBD, 0x4, 0x7F, 0x0, 0x8, 0xFF, 0xFF, 0xFF, 0xF6, 0x0, 0x0, 0x7, 0x57, 0x6, 0xEF, 0x0, 0x26, 0x0, 0x82, 0x0, 0x0, 0x0, 0x7, 0x0, 0x71, 0x1, 0xB8, 0x1, 0x45, 0xFF, 0xFF, 0x0, 0x48, 0xFF, 0xEB, 0x6, 0x85, 0x5, 0xAE, 0x0, 0x26, 0x0, 0x87, 0x0, 0x0, 0x0, 0x7, 0x0, 0x71, 0x1, 0x6D, 0x0, 0x4, 0xFF, 0xFF, 0x0, 0x6A, 0xFF, 0xEC, 0x4, 0xF0, 0x7, 0x4D, 0x0, 0x26, 0x0, 0x2C, 0x0, 0x0, 0x0, 0x7, 0x1, 0x78, 0x0, 0xD6, 0x1, 0x4B, 0xFF, 0xFF, 0x0, 0x52, 0xFE, 0x56, 0x4, 0xD, 0x6, 0x2, 0x0, 0x26, 0x0, 0x4C, 0x0, 0x0, 0x0, 0x6, 0x1, 0x78, 0x58, 0x0, 0xFF, 0xFF, 0x0, 0x95, 0x0, 0x0, 0x5, 0x18, 0x7, 0x39, 0x0, 0x26, 0x0, 0x30, 0x0, 0x0, 0x0, 0x7, 0x1, 0x78, 0x0, 0x86, 0x1, 0x37, 0xFF, 0xFF, 0x0, 0x7D, 0x0, 0x0, 0x4, 0x37, 0x7, 0x3F, 0x0, 0x26, 0x0, 0x50, 0x0, 0x0, 0x0, 0x7, 0x1, 0x78, 0x0, 0x84, 0x1, 0x3D, 0xFF, 0xFF, 0x0, 0x66, 0xFE, 0x52, 0x5, 0x1F, 0x5, 0xC4, 0x0, 0x26, 0x0, 0x34, 0x0, 0x0, 0x0, 0x7, 0x1, 0x8C, 0x1, 0x92, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x50, 0xFE, 0x4E, 0x4, 0x3E, 0x4, 0x4E, 0x0, 0x26, 0x0, 0x54, 0x0, 0x0, 0x0, 0x7, 0x1, 0x8C, 0x1, 0x12, 0xFF, 0xFC, 0xFF, 0xFF, 0x0, 0x66, 0xFE, 0x52, 0x5, 0x1F, 0x6, 0xE3, 0x0, 0x26, 0x0, 0x34, 0x0, 0x0, 0x0, 0x27, 0x1, 0x8C, 0x1, 0x92, 0x0, 0x0, 0x0, 0x7, 0x0, 0x71, 0x0, 0xD5, 0x1, 0x39, 0xFF, 0xFF, 0x0, 0x50, 0xFE, 0x4E, 0x4, 0x3E, 0x5, 0xAD, 0x0, 0x26, 0x0, 0x54, 0x0, 0x0, 0x0, 0x27, 0x1, 0x8C, 0x1, 0x12, 0xFF, 0xFC, 0x0, 0x6, 0x0, 0x71, 0x51, 0x3, 0xFF, 0xFF, 0x0, 0x95, 0x0, 0x0, 0x9, 0xC6, 0x5, 0xB0, 0x0, 0x26, 0x0, 0x29, 0x0, 0x0, 0x0, 0x7, 0x0, 0x3F, 0x5, 0x3A, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x95, 0x0, 0x0, 0x8, 0xFA, 0x5, 0xB0, 0x0, 0x26, 0x0, 0x29, 0x0, 0x0, 0x0, 0x7, 0x0, 0x5F, 0x5, 0x3A, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x50, 0xFF, 0xEC, 0x8, 0x45, 0x6, 0x0, 0x0, 0x26, 0x0, 0x49, 0x0, 0x0, 0x0, 0x7, 0x0, 0x5F, 0x4, 0x85, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x6A, 0xFF, 0xEC, 0x4, 0xF0, 0x7, 0x4B, 0x0, 0x26, 0x0, 0x2C, 0x0, 0x0, 0x0, 0x7, 0x0, 0x76, 0x1, 0xBD, 0x1, 0x4B, 0xFF, 0xFF, 0x0, 0x52, 0xFE, 0x56, 0x4, 0xD, 0x6, 0x0, 0x0, 0x26, 0x0, 0x4C, 0x0, 0x0, 0x0, 0x7, 0x0, 0x76, 0x1, 0x3F, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x95, 0x0, 0x0, 0x5, 0x18, 0x7, 0x36, 0x0, 0x26, 0x0, 0x33, 0x0, 0x0, 0x0, 0x7, 0x0, 0x45, 0x1, 0x4B, 0x1, 0x36, 0xFF, 0xFF, 0x0, 0x7A, 0x0, 0x0, 0x3, 0xF9, 0x6, 0x0, 0x0, 0x26, 0x0, 0x53, 0x0, 0x0, 0x0, 0x7, 0x0, 0x45, 0x0, 0xB3, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x12, 0x0, 0x0, 0x5, 0x43, 0x7, 0x21, 0x0, 0x26, 0x0, 0x26, 0x0, 0x0, 0x0, 0x7, 0x1, 0xC0, 0x4, 0x78, 0x1, 0x33, 0xFF, 0xFF, 0x0, 0xD, 0xFF, 0xEC, 0x3, 0xFC, 0x5, 0xEB, 0x0, 0x26, 0x0, 0x46, 0x0, 0x0, 0x0, 0x7, 0x1, 0xC0, 0x4, 0x2, 0xFF, 0xFD, 0xFF, 0xFF, 0x0, 0x12, 0x0, 0x0, 0x5, 0x43, 0x7, 0x50, 0x0, 0x26, 0x0, 0x26, 0x0, 0x0, 0x0, 0x7, 0x1, 0xC2, 0x4, 0xF5, 0x1, 0xA0, 0xFF, 0xFF, 0x0, 0x5B, 0xFF, 0xEC, 0x3, 0xFC, 0x6, 0x1A, 0x0, 0x26, 0x0, 0x46, 0x0, 0x0, 0x0, 0x7, 0x1, 0xC2, 0x4, 0x7F, 0x0, 0x6A, 0xFF, 0xFF, 0x0, 0x49, 0x0, 0x0, 0x4, 0x4D, 0x7, 0x29, 0x0, 0x26, 0x0, 0x2A, 0x0, 0x0, 0x0, 0x7, 0x1, 0xC0, 0x4, 0x3E, 0x1, 0x3B, 0xFF, 0xFF, 0x0, 0x1, 0xFF, 0xEC, 0x4, 0xC, 0x5, 0xEB, 0x0, 0x26, 0x0, 0x4A, 0x0, 0x0, 0x0, 0x7, 0x1, 0xC0, 0x3, 0xF6, 0xFF, 0xFD, 0xFF, 0xFF, 0x0, 0x95, 0x0, 0x0, 0x4, 0x4D, 0x7, 0x58, 0x0, 0x26, 0x0, 0x2A, 0x0, 0x0, 0x0, 0x7, 0x1, 0xC2, 0x4, 0xBB, 0x1, 0xA8, 0xFF, 0xFF, 0x0, 0x54, 0xFF, 0xEC, 0x4, 0xC, 0x6, 0x1A, 0x0, 0x26, 0x0, 0x4A, 0x0, 0x0, 0x0, 0x7, 0x1, 0xC2, 0x4, 0x73, 0x0, 0x6A, 0xFF, 0xFF, 0xFE, 0xF7, 0x0, 0x0, 0x2, 0x1F, 0x7, 0x29, 0x0, 0x26, 0x0, 0x2E, 0x0, 0x0, 0x0, 0x7, 0x1, 0xC0, 0x2, 0xEC, 0x1, 0x3B, 0xFF, 0xFF, 0xFE, 0xE2, 0x0, 0x0, 0x2, 0xA, 0x5, 0xE4, 0x0, 0x26, 0x0, 0x8E, 0x0, 0x0, 0x0, 0x7, 0x1, 0xC0, 0x2, 0xD7, 0xFF, 0xF6, 0xFF, 0xFF, 0xFF, 0xDE, 0x0, 0x0, 0x2, 0x64, 0x7, 0x58, 0x0, 0x26, 0x0, 0x2E, 0x0, 0x0, 0x0, 0x7, 0x1, 0xC2, 0x3, 0x69, 0x1, 0xA8, 0xFF, 0xFF, 0xFF, 0xC9, 0x0, 0x0, 0x2, 0x4F, 0x6, 0x13, 0x0, 0x26, 0x0, 0x8E, 0x0, 0x0, 0x0, 0x7, 0x1, 0xC2, 0x3, 0x54, 0x0, 0x63, 0xFF, 0xFF, 0x0, 0x66, 0xFF, 0xEC, 0x5, 0x1F, 0x7, 0x21, 0x0, 0x26, 0x0, 0x34, 0x0, 0x0, 0x0, 0x7, 0x1, 0xC0, 0x4, 0x8F, 0x1, 0x33, 0xFF, 0xFF, 0x0, 0x16, 0xFF, 0xEC, 0x4, 0x3E, 0x5, 0xEB, 0x0, 0x26, 0x0, 0x54, 0x0, 0x0, 0x0, 0x7, 0x1, 0xC0, 0x4, 0xB, 0xFF, 0xFD, 0xFF, 0xFF, 0x0, 0x66, 0xFF, 0xEC, 0x5, 0x1F, 0x7, 0x50, 0x0, 0x26, 0x0, 0x34, 0x0, 0x0, 0x0, 0x7, 0x1, 0xC2, 0x5, 0xC, 0x1, 0xA0, 0xFF, 0xFF, 0x0, 0x50, 0xFF, 0xEC, 0x4, 0x3E, 0x6, 0x1A, 0x0, 0x26, 0x0, 0x54, 0x0, 0x0, 0x0, 0x7, 0x1, 0xC2, 0x4, 0x88, 0x0, 0x6A, 0xFF, 0xFF, 0x0, 0x32, 0x0, 0x0, 0x4, 0xDE, 0x7, 0x21, 0x0, 0x26, 0x0, 0x37, 0x0, 0x0, 0x0, 0x7, 0x1, 0xC0, 0x4, 0x27, 0x1, 0x33, 0xFF, 0xFF, 0xFF, 0x6F, 0x0, 0x0, 0x2, 0xB5, 0x5, 0xEB, 0x0, 0x26, 0x0, 0x57, 0x0, 0x0, 0x0, 0x7, 0x1, 0xC0, 0x3, 0x64, 0xFF, 0xFD, 0xFF, 0xFF, 0x0, 0x95, 0x0, 0x0, 0x4, 0xDE, 0x7, 0x50, 0x0, 0x26, 0x0, 0x37, 0x0, 0x0, 0x0, 0x7, 0x1, 0xC2, 0x4, 0xA4, 0x1, 0xA0, 0xFF, 0xFF, 0x0, 0x56, 0x0, 0x0, 0x2, 0xDC, 0x6, 0x1A, 0x0, 0x26, 0x0, 0x57, 0x0, 0x0, 0x0, 0x7, 0x1, 0xC2, 0x3, 0xE1, 0x0, 0x6A, 0xFF, 0xFF, 0x0, 0x71, 0xFF, 0xEC, 0x4, 0xBE, 0x7, 0x21, 0x0, 0x26, 0x0, 0x3A, 0x0, 0x0, 0x0, 0x7, 0x1, 0xC0, 0x4, 0x66, 0x1, 0x33, 0xFF, 0xFF, 0x0, 0xF, 0xFF, 0xEC, 0x3, 0xF7, 0x5, 0xEB, 0x0, 0x26, 0x0, 0x5A, 0x0, 0x0, 0x0, 0x7, 0x1, 0xC0, 0x4, 0x4, 0xFF, 0xFD, 0xFF, 0xFF, 0x0, 0x7E, 0xFF, 0xEC, 0x4, 0xBE, 0x7, 0x50, 0x0, 0x26, 0x0, 0x3A, 0x0, 0x0, 0x0, 0x7, 0x1, 0xC2, 0x4, 0xE3, 0x1, 0xA0, 0xFF, 0xFF, 0x0, 0x77, 0xFF, 0xEC, 0x3, 0xF7, 0x6, 0x1A, 0x0, 0x26, 0x0, 0x5A, 0x0, 0x0, 0x0, 0x7, 0x1, 0xC2, 0x4, 0x81, 0x0, 0x6A, 0xFF, 0xFF, 0x0, 0x95, 0x0, 0x0, 0x5, 0x19, 0x7, 0x40, 0x0, 0x26, 0x0, 0x2D, 0x0, 0x0, 0x0, 0x7, 0x1, 0x78, 0x0, 0xFA, 0x1, 0x3E, 0xFF, 0xFF, 0x0, 0x7A, 0x0, 0x0, 0x3, 0xF9, 0x7, 0x60, 0x0, 0x26, 0x0, 0x4D, 0x0, 0x0, 0x0, 0x7, 0x1, 0x78, 0x0, 0x2F, 0x1, 0x5E, 0xFF, 0xFF, 0x0, 0x12, 0x0, 0x0, 0x5, 0x43, 0x7, 0x13, 0x0, 0x26, 0x0, 0x26, 0x0, 0x0, 0x0, 0x7, 0x1, 0x8A, 0x1, 0xA8, 0x1, 0x3E, 0xFF, 0xFF, 0x0, 0x5B, 0xFF, 0xEC, 0x3, 0xFC, 0x5, 0xDD, 0x0, 0x26, 0x0, 0x46, 0x0, 0x0, 0x0, 0x7, 0x1, 0x8A, 0x1, 0x32, 0x0, 0x8, 0xFF, 0xFF, 0x0, 0x95, 0xFE, 0x4A, 0x4, 0x4D, 0x5, 0xB0, 0x0, 0x26, 0x0, 0x2A, 0x0, 0x0, 0x0, 0x7, 0x0, 0x7A, 0x1, 0x93, 0x0, 0xA, 0xFF, 0xFF, 0x0, 0x54, 0xFE, 0x40, 0x4, 0xC, 0x4, 0x4E, 0x0, 0x26, 0x0, 0x4A, 0x0, 0x0, 0x0, 0x7, 0x0, 0x7A, 0x1, 0x58, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x66, 0xFF, 0xEC, 0x5, 0x1F, 0x7, 0xF3, 0x0, 0x26, 0x0, 0x34, 0x0, 0x0, 0x0, 0x7, 0x7, 0xB4, 0x5, 0xC, 0x1, 0x51, 0xFF, 0xFF, 0x0, 0x50, 0xFF, 0xEC, 0x4, 0x3E, 0x6, 0xDA, 0x0, 0x26, 0x0, 0x54, 0x0, 0x0, 0x0, 0x7, 0x8, 0xBF, 0x4, 0x88, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x66, 0xFF, 0xEC, 0x5, 0x1F, 0x7, 0xF6, 0x0, 0x26, 0x0, 0x34, 0x0, 0x0, 0x0, 0x7, 0x7, 0xC3, 0x5, 0xC, 0x1, 0x54, 0xFF, 0xFF, 0x0, 0x50, 0xFF, 0xEC, 0x4, 0x3E, 0x7, 0x2, 0x0, 0x26, 0x0, 0x54, 0x0, 0x0, 0x0, 0x7, 0x8, 0xC2, 0x4, 0x88, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x66, 0xFF, 0xEC, 0x5, 0x1F, 0x7, 0x13, 0x0, 0x26, 0x0, 0x34, 0x0, 0x0, 0x0, 0x7, 0x1, 0x8A, 0x1, 0xBF, 0x1, 0x3E, 0xFF, 0xFF, 0x0, 0x50, 0xFF, 0xEC, 0x4, 0x3E, 0x5, 0xDD, 0x0, 0x26, 0x0, 0x54, 0x0, 0x0, 0x0, 0x7, 0x1, 0x8A, 0x1, 0x3B, 0x0, 0x8, 0xFF, 0xFF, 0x0, 0x66, 0xFF, 0xEC, 0x5, 0x1F, 0x7, 0xF2, 0x0, 0x26, 0x0, 0x34, 0x0, 0x0, 0x0, 0x7, 0x7, 0xB8, 0x5, 0xC, 0x1, 0x54, 0xFF, 0xFF, 0x0, 0x50, 0xFF, 0xEC, 0x4, 0x3E, 0x6, 0xEC, 0x0, 0x26, 0x0, 0x54, 0x0, 0x0, 0x0, 0x7, 0x8, 0xBD, 0x4, 0x88, 0x0, 0x8, 0xFF, 0xFF, 0x0, 0x8, 0x0, 0x0, 0x4, 0xD6, 0x6, 0xE3, 0x0, 0x26, 0x0, 0x3E, 0x0, 0x0, 0x0, 0x7, 0x0, 0x71, 0x0, 0x84, 0x1, 0x39, 0xFF, 0xFF, 0x0, 0xC, 0xFE, 0x4B, 0x3, 0xD7, 0x5, 0xAD, 0x0, 0x26, 0x0, 0x5E, 0x0, 0x0, 0x0, 0x6, 0x0, 0x71, 0x13, 0x3, 0xFF, 0xFF, 0x0, 0x4F, 0xFF, 0xEC, 0x4, 0x3D, 0x4, 0x4E, 0x0, 0x6, 0x2, 0xAE, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x8F, 0x0, 0x0, 0x4, 0x3B, 0x4, 0x3A, 0x0, 0x6, 0x2, 0x81, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x86, 0x0, 0x0, 0x4, 0x11, 0x4, 0x3A, 0x0, 0x6, 0x2, 0x8A, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x2D, 0xFF, 0xEC, 0x3, 0xE5, 0x5, 0xB0, 0x0, 0x6, 0x0, 0x2F, 0x0, 0x0, 0xFF, 0xFF, 0xFF, 0xF, 0x0, 0x0, 0x5, 0x2, 0x6, 0x40, 0x0, 0x26, 0x2, 0x51, 0x64, 0x0, 0x0, 0x7, 0x2, 0x2D, 0xFE, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE1, 0x0, 0x0, 0x4, 0x9E, 0x7, 0xF, 0x0, 0x26, 0x2, 0x51, 0x0, 0x0, 0x0, 0x7, 0x0, 0x6B, 0x0, 0x78, 0x1, 0x42, 0xFF, 0xFF, 0x0, 0x50, 0xFF, 0xEC, 0x3, 0xF5, 0x4, 0x4E, 0x0, 0x6, 0x0, 0x48, 0x0, 0x0, 0xFF, 0xFF, 0xFF, 0xB4, 0xFE, 0x4B, 0x1, 0x86, 0x5, 0xD5, 0x0, 0x6, 0x0, 0x4F, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x5F, 0xFF, 0xEC, 0x5, 0x18, 0x5, 0xC4, 0x0, 0x6, 0x2, 0xAD, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x95, 0x0, 0x0, 0x4, 0x7F, 0x5, 0xB0, 0x0, 0x6, 0x0, 0x85, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x83, 0xFE, 0x60, 0x4, 0x37, 0x6, 0x0, 0x0, 0x6, 0x0, 0x8B, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x66, 0xFF, 0xEC, 0x4, 0xEC, 0x5, 0xC4, 0x0, 0x6, 0x0, 0x28, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x95, 0x0, 0x0, 0x6, 0x6B, 0x5, 0xB0, 0x0, 0x6, 0x0, 0x32, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x60, 0xFF, 0x4, 0x5, 0x1B, 0x5, 0xC4, 0x0, 0x6, 0x0, 0x36, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x50, 0xFE, 0x60, 0x4, 0x3, 0x4, 0x4E, 0x0, 0x6, 0x0, 0x56, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x31, 0x0, 0x0, 0x6, 0xE5, 0x5, 0xB0, 0x0, 0x6, 0x0, 0x3C, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x22, 0x0, 0x0, 0x5, 0xCD, 0x4, 0x3A, 0x0, 0x6, 0x0, 0x5C, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x95, 0x0, 0x0, 0x4, 0xA3, 0x7, 0x1F, 0x0, 0x26, 0x0, 0x27, 0x0, 0x0, 0x0, 0x7, 0x1, 0x8A, 0x1, 0x59, 0x1, 0x4A, 0xFF, 0xFF, 0x0, 0x7D, 0xFF, 0xEC, 0x4, 0x32, 0x7, 0x1A, 0x0, 0x26, 0x0, 0x47, 0x0, 0x0, 0x0, 0x7, 0x1, 0x8A, 0x1, 0x88, 0x1, 0x45, 0xFF, 0xFF, 0x0, 0x95, 0xFE, 0x9D, 0x4, 0xA3, 0x5, 0xB0, 0x0, 0x26, 0x0, 0x27, 0x0, 0x0, 0x0, 0x7, 0x1, 0xD4, 0x4, 0xBB, 0x0, 0xA, 0xFF, 0xFF, 0x0, 0x7D, 0xFE, 0x89, 0x4, 0x32, 0x6, 0x0, 0x0, 0x26, 0x0, 0x47, 0x0, 0x0, 0x0, 0x7, 0x1, 0xD4, 0x4, 0xCC, 0xFF, 0xF6, 0xFF, 0xFF, 0x0, 0x95, 0xFE, 0xCB, 0x4, 0xA3, 0x5, 0xB0, 0x0, 0x26, 0x0, 0x27, 0x0, 0x0, 0x0, 0x7, 0x1, 0xE2, 0x4, 0xAB, 0x0, 0xA, 0xFF, 0xFF, 0x0, 0x7D, 0xFE, 0xB7, 0x4, 0x32, 0x6, 0x0, 0x0, 0x26, 0x0, 0x47, 0x0, 0x0, 0x0, 0x7, 0x1, 0xE2, 0x4, 0xBC, 0xFF, 0xF6, 0xFF, 0xFF, 0x0, 0x66, 0xFE, 0x39, 0x4, 0xEC, 0x7, 0x4B, 0x0, 0x26, 0x0, 0x28, 0x0, 0x0, 0x0, 0x27, 0x0, 0x7A, 0x1, 0xC9, 0xFF, 0xF9, 0x0, 0x7, 0x0, 0x76, 0x1, 0xC0, 0x1, 0x4B, 0xFF, 0xFF, 0x0, 0x50, 0xFE, 0x39, 0x3, 0xF5, 0x6, 0x0, 0x0, 0x26, 0x0, 0x48, 0x0, 0x0, 0x0, 0x27, 0x0, 0x7A, 0x1, 0x3D, 0xFF, 0xF9, 0x0, 0x7, 0x0, 0x76, 0x1, 0x29, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x95, 0x0, 0x0, 0x4, 0xD2, 0x7, 0x1B, 0x0, 0x26, 0x0, 0x29, 0x0, 0x0, 0x0, 0x7, 0x1, 0x8A, 0x1, 0x36, 0x1, 0x46, 0xFF, 0xFF, 0x0, 0x50, 0xFF, 0xEC, 0x4, 0x4, 0x7, 0x1A, 0x0, 0x26, 0x0, 0x49, 0x0, 0x0, 0x0, 0x7, 0x1, 0x8A, 0x1, 0x8, 0x1, 0x45, 0xFF, 0xFF, 0x0, 0x95, 0xFE, 0x9D, 0x4, 0xD2, 0x5, 0xB0, 0x0, 0x26, 0x0, 0x29, 0x0, 0x0, 0x0, 0x7, 0x1, 0xD4, 0x4, 0x95, 0x0, 0xA, 0xFF, 0xFF, 0x0, 0x50, 0xFE, 0x93, 0x4, 0x4, 0x6, 0x0, 0x0, 0x26, 0x0, 0x49, 0x0, 0x0, 0x0, 0x7, 0x1, 0xD4, 0x4, 0xB5, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x95, 0xFE, 0xCB, 0x4, 0xD2, 0x5, 0xB0, 0x0, 0x26, 0x0, 0x29, 0x0, 0x0, 0x0, 0x7, 0x1, 0xE2, 0x4, 0x85, 0x0, 0xA, 0xFF, 0xFF, 0x0, 0x50, 0xFE, 0xC1, 0x4, 0x4, 0x6, 0x0, 0x0, 0x26, 0x0, 0x49, 0x0, 0x0, 0x0, 0x7, 0x1, 0xE2, 0x4, 0xA5, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x95, 0xFE, 0x1, 0x4, 0xD2, 0x5, 0xB0, 0x0, 0x26, 0x0, 0x29, 0x0, 0x0, 0x0, 0x7, 0x7, 0x25, 0x1, 0x48, 0xFE, 0x9B, 0xFF, 0xFF, 0x0, 0x50, 0xFD, 0xF7, 0x4, 0x4, 0x6, 0x0, 0x0, 0x26, 0x0, 0x49, 0x0, 0x0, 0x0, 0x7, 0x7, 0x25, 0x1, 0x68, 0xFE, 0x91, 0xFF, 0xFF, 0x0, 0x95, 0xFE, 0x80, 0x4, 0xD2, 0x5, 0xB0, 0x0, 0x26, 0x0, 0x29, 0x0, 0x0, 0x0, 0x7, 0x1, 0xDE, 0x4, 0x85, 0x0, 0xA, 0xFF, 0xFF, 0x0, 0x50, 0xFE, 0x76, 0x4, 0x4, 0x6, 0x0, 0x0, 0x26, 0x0, 0x49, 0x0, 0x0, 0x0, 0x7, 0x1, 0xDE, 0x4, 0xA5, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x95, 0x0, 0x0, 0x4, 0x4D, 0x7, 0xBE, 0x0, 0x26, 0x0, 0x2A, 0x0, 0x0, 0x0, 0x7, 0x7, 0xBA, 0x4, 0xBB, 0x1, 0x5F, 0xFF, 0xFF, 0x0, 0x54, 0xFF, 0xEC, 0x4, 0xC, 0x7, 0x30, 0x0, 0x26, 0x0, 0x4A, 0x0, 0x0, 0x0, 0x7, 0x8, 0xBE, 0x4, 0x73, 0x0, 0x3, 0xFF, 0xFF, 0x0, 0x95, 0x0, 0x0, 0x4, 0x4D, 0x7, 0xBE, 0x0, 0x26, 0x0, 0x2A, 0x0, 0x0, 0x0, 0x7, 0x7, 0xBB, 0x4, 0xBB, 0x1, 0x5F, 0xFF, 0xFF, 0x0, 0x54, 0xFF, 0xEC, 0x4, 0xC, 0x7, 0x30, 0x0, 0x26, 0x0, 0x4A, 0x0, 0x0, 0x0, 0x7, 0x8, 0xC1, 0x4, 0x73, 0x0, 0x3, 0xFF, 0xFF, 0x0, 0x95, 0xFE, 0x80, 0x4, 0x4D, 0x5, 0xB0, 0x0, 0x26, 0x0, 0x2A, 0x0, 0x0, 0x0, 0x7, 0x1, 0xDE, 0x4, 0xBC, 0x0, 0xA, 0xFF, 0xFF, 0x0, 0x54, 0xFE, 0x76, 0x4, 0xC, 0x4, 0x4E, 0x0, 0x26, 0x0, 0x4A, 0x0, 0x0, 0x0, 0x7, 0x1, 0xDE, 0x4, 0x81, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x95, 0xFE, 0x83, 0x4, 0x4D, 0x5, 0xB0, 0x0, 0x26, 0x0, 0x2A, 0x0, 0x0, 0x0, 0x7, 0x1, 0xE1, 0x4, 0xBC, 0x0, 0xA, 0xFF, 0xFF, 0x0, 0x54, 0xFE, 0x79, 0x4, 0xC, 0x4, 0x4E, 0x0, 0x26, 0x0, 0x4A, 0x0, 0x0, 0x0, 0x7, 0x1, 0xE1, 0x4, 0x81, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x95, 0xFE, 0x4A, 0x4, 0x4D, 0x7, 0x25, 0x0, 0x26, 0x0, 0x2A, 0x0, 0x0, 0x0, 0x27, 0x0, 0x7A, 0x1, 0x93, 0x0, 0xA, 0x0, 0x7, 0x1, 0x89, 0x0, 0xBB, 0x1, 0x3E, 0xFF, 0xFF, 0x0, 0x54, 0xFE, 0x40, 0x4, 0xC, 0x5, 0xE7, 0x0, 0x26, 0x0, 0x4A, 0x0, 0x0, 0x0, 0x27, 0x0, 0x7A, 0x1, 0x58, 0x0, 0x0, 0x0, 0x6, 0x1, 0x89, 0x73, 0x0, 0xFF, 0xFF, 0x0, 0x95, 0x0, 0x0, 0x4, 0x31, 0x7, 0x1F, 0x0, 0x26, 0x0, 0x2B, 0x0, 0x0, 0x0, 0x7, 0x1, 0x8A, 0x1, 0x6E, 0x1, 0x4A, 0xFF, 0xFF, 0x0, 0x2D, 0x0, 0x0, 0x2, 0xD7, 0x7, 0x91, 0x0, 0x26, 0x0, 0x4B, 0x0, 0x0, 0x0, 0x7, 0x1, 0x8A, 0x0, 0xDB, 0x1, 0xBC, 0xFF, 0xFF, 0x0, 0x6A, 0xFF, 0xEC, 0x4, 0xF0, 0x6, 0xF8, 0x0, 0x26, 0x0, 0x2C, 0x0, 0x0, 0x0, 0x7, 0x0, 0x71, 0x0, 0xBA, 0x1, 0x4E, 0xFF, 0xFF, 0x0, 0x52, 0xFE, 0x56, 0x4, 0xD, 0x5, 0xAD, 0x0, 0x26, 0x0, 0x4C, 0x0, 0x0, 0x0, 0x6, 0x0, 0x71, 0x3C, 0x3, 0xFF, 0xFF, 0x0, 0x95, 0x0, 0x0, 0x5, 0x19, 0x7, 0x1B, 0x0, 0x26, 0x0, 0x2D, 0x0, 0x0, 0x0, 0x7, 0x1, 0x8A, 0x1, 0xC8, 0x1, 0x46, 0xFF, 0xFF, 0x0, 0x7A, 0x0, 0x0, 0x3, 0xF9, 0x7, 0x3B, 0x0, 0x26, 0x0, 0x4D, 0x0, 0x0, 0x0, 0x7, 0x1, 0x8A, 0x0, 0xFD, 0x1, 0x66, 0xFF, 0xFF, 0x0, 0x95, 0xFE, 0x9D, 0x5, 0x19, 0x5, 0xB0, 0x0, 0x26, 0x0, 0x2D, 0x0, 0x0, 0x0, 0x7, 0x1, 0xD4, 0x5, 0x27, 0x0, 0xA, 0xFF, 0xFF, 0x0, 0x7A, 0xFE, 0x9D, 0x3, 0xF9, 0x6, 0x0, 0x0, 0x26, 0x0, 0x4D, 0x0, 0x0, 0x0, 0x7, 0x1, 0xD4, 0x4, 0xA3, 0x0, 0xA, 0xFF, 0xFF, 0x0, 0x95, 0x0, 0x0, 0x5, 0x19, 0x7, 0xB, 0x0, 0x26, 0x0, 0x2D, 0x0, 0x0, 0x0, 0x7, 0x0, 0x6B, 0x1, 0xE, 0x1, 0x3E, 0xFF, 0xFF, 0x0, 0x7A, 0x0, 0x0, 0x3, 0xF9, 0x7, 0x2B, 0x0, 0x26, 0x0, 0x4D, 0x0, 0x0, 0x0, 0x7, 0x0, 0x6B, 0x0, 0x43, 0x1, 0x5E, 0xFF, 0xFF, 0x0, 0x95, 0xFE, 0x95, 0x5, 0x19, 0x5, 0xB0, 0x0, 0x26, 0x0, 0x2D, 0x0, 0x0, 0x0, 0x7, 0x1, 0xDF, 0x5, 0x17, 0x0, 0xA, 0xFF, 0xFF, 0x0, 0x7A, 0xFE, 0x95, 0x3, 0xF9, 0x6, 0x0, 0x0, 0x26, 0x0, 0x4D, 0x0, 0x0, 0x0, 0x7, 0x1, 0xDF, 0x4, 0x93, 0x0, 0xA, 0xFF, 0xFF, 0x0, 0x95, 0x0, 0x0, 0x5, 0x18, 0x7, 0x37, 0x0, 0x26, 0x0, 0x30, 0x0, 0x0, 0x0, 0x7, 0x0, 0x76, 0x1, 0x6D, 0x1, 0x37, 0xFF, 0xFF, 0x0, 0x7D, 0x0, 0x0, 0x4, 0x37, 0x7, 0x3D, 0x0, 0x26, 0x0, 0x50, 0x0, 0x0, 0x0, 0x7, 0x0, 0x76, 0x1, 0x6B, 0x1, 0x3D, 0xFF, 0xFF, 0x0, 0x95, 0xFE, 0xDF, 0x5, 0x18, 0x5, 0xB0, 0x0, 0x26, 0x0, 0x30, 0x0, 0x0, 0x0, 0x7, 0x1, 0xD4, 0x4, 0xEA, 0x0, 0x4C, 0xFF, 0xFF, 0x0, 0x7D, 0xFE, 0xC9, 0x4, 0x37, 0x6, 0x0, 0x0, 0x26, 0x0, 0x50, 0x0, 0x0, 0x0, 0x7, 0x1, 0xD4, 0x4, 0x7A, 0x0, 0x36, 0xFF, 0xFF, 0x0, 0x95, 0xFF, 0xD, 0x5, 0x18, 0x5, 0xB0, 0x0, 0x26, 0x0, 0x30, 0x0, 0x0, 0x0, 0x7, 0x1, 0xE2, 0x4, 0xDA, 0x0, 0x4C, 0xFF, 0xFF, 0x0, 0x7D, 0xFE, 0xF7, 0x4, 0x37, 0x6, 0x0, 0x0, 0x26, 0x0, 0x50, 0x0, 0x0, 0x0, 0x7, 0x1, 0xE2, 0x4, 0x6A, 0x0, 0x36, 0xFF, 0xFF, 0x0, 0x95, 0xFE, 0x9D, 0x4, 0x27, 0x5, 0xB0, 0x0, 0x26, 0x0, 0x31, 0x0, 0x0, 0x0, 0x7, 0x1, 0xD4, 0x4, 0xBB, 0x0, 0xA, 0xFF, 0xFF, 0x0, 0x79, 0xFE, 0x9D, 0x1, 0x8D, 0x6, 0x0, 0x0, 0x26, 0x0, 0x51, 0x0, 0x0, 0x0, 0x7, 0x1, 0xD4, 0x3, 0x5E, 0x0, 0xA, 0xFF, 0xFF, 0xFF, 0xC1, 0xFE, 0x9D, 0x4, 0x27, 0x6, 0xE3, 0x0, 0x26, 0x0, 0x31, 0x0, 0x0, 0x0, 0x27, 0x1, 0xD4, 0x4, 0xBB, 0x0, 0xA, 0x0, 0x7, 0x0, 0x71, 0xFF, 0x25, 0x1, 0x39, 0xFF, 0xFF, 0xFF, 0xB3, 0xFE, 0x9D, 0x2, 0x61, 0x7, 0x3E, 0x0, 0x26, 0x0, 0x51, 0x0, 0x0, 0x0, 0x27, 0x1, 0xD4, 0x3, 0x5E, 0x0, 0xA, 0x0, 0x7, 0x0, 0x71, 0xFF, 0x17, 0x1, 0x94, 0xFF, 0xFF, 0x0, 0x95, 0xFE, 0xCB, 0x4, 0x27, 0x5, 0xB0, 0x0, 0x26, 0x0, 0x31, 0x0, 0x0, 0x0, 0x7, 0x1, 0xE2, 0x4, 0xAB, 0x0, 0xA, 0xFF, 0xFF, 0xFF, 0xB0, 0xFE, 0xCB, 0x2, 0x5E, 0x6, 0x0, 0x0, 0x26, 0x0, 0x51, 0x0, 0x0, 0x0, 0x7, 0x1, 0xE2, 0x3, 0x4E, 0x0, 0xA, 0xFF, 0xFF, 0x0, 0x95, 0xFE, 0x80, 0x4, 0x27, 0x5, 0xB0, 0x0, 0x26, 0x0, 0x31, 0x0, 0x0, 0x0, 0x7, 0x1, 0xDE, 0x4, 0xAB, 0x0, 0xA, 0xFF, 0xFF, 0xFF, 0xAF, 0xFE, 0x80, 0x2, 0x5E, 0x6, 0x0, 0x0, 0x26, 0x0, 0x51, 0x0, 0x0, 0x0, 0x7, 0x1, 0xDE, 0x3, 0x4E, 0x0, 0xA, 0xFF, 0xFF, 0x0, 0x95, 0x0, 0x0, 0x6, 0x6B, 0x7, 0x13, 0x0, 0x26, 0x0, 0x32, 0x0, 0x0, 0x0, 0x7, 0x1, 0x8A, 0x2, 0x76, 0x1, 0x3E, 0xFF, 0xFF, 0x0, 0x7D, 0x0, 0x0, 0x6, 0x7A, 0x5, 0xDD, 0x0, 0x26, 0x0, 0x52, 0x0, 0x0, 0x0, 0x7, 0x1, 0x8A, 0x2, 0x87, 0x0, 0x8, 0xFF, 0xFF, 0x0, 0x95, 0xFE, 0x9D, 0x6, 0x6B, 0x5, 0xB0, 0x0, 0x26, 0x0, 0x32, 0x0, 0x0, 0x0, 0x7, 0x1, 0xD4, 0x5, 0xD7, 0x0, 0xA, 0xFF, 0xFF, 0x0, 0x7D, 0xFE, 0x9D, 0x6, 0x7A, 0x4, 0x4E, 0x0, 0x26, 0x0, 0x52, 0x0, 0x0, 0x0, 0x7, 0x1, 0xD4, 0x5, 0xDB, 0x0, 0xA, 0xFF, 0xFF, 0x0, 0x95, 0x0, 0x0, 0x5, 0x18, 0x7, 0x13, 0x0, 0x26, 0x0, 0x33, 0x0, 0x0, 0x0, 0x7, 0x1, 0x8A, 0x1, 0xD1, 0x1, 0x3E, 0xFF, 0xFF, 0x0, 0x7A, 0x0, 0x0, 0x3, 0xF9, 0x5, 0xDD, 0x0, 0x26, 0x0, 0x53, 0x0, 0x0, 0x0, 0x7, 0x1, 0x8A, 0x1, 0x39, 0x0, 0x8, 0xFF, 0xFF, 0x0, 0x95, 0xFE, 0x9A, 0x5, 0x18, 0x5, 0xB0, 0x0, 0x26, 0x0, 0x33, 0x0, 0x0, 0x0, 0x7, 0x1, 0xD4, 0x5, 0x29, 0x0, 0x7, 0xFF, 0xFF, 0x0, 0x7A, 0xFE, 0x9D, 0x3, 0xF9, 0x4, 0x4E, 0x0, 0x26, 0x0, 0x53, 0x0, 0x0, 0x0, 0x7, 0x1, 0xD4, 0x4, 0x8F, 0x0, 0xA, 0xFF, 0xFF, 0x0, 0x95, 0xFE, 0xC8, 0x5, 0x18, 0x5, 0xB0, 0x0, 0x26, 0x0, 0x33, 0x0, 0x0, 0x0, 0x7, 0x1, 0xE2, 0x5, 0x19, 0x0, 0x7, 0xFF, 0xFF, 0x0, 0x7A, 0xFE, 0xCB, 0x3, 0xF9, 0x4, 0x4E, 0x0, 0x26, 0x0, 0x53, 0x0, 0x0, 0x0, 0x7, 0x1, 0xE2, 0x4, 0x7F, 0x0, 0xA, 0xFF, 0xFF, 0x0, 0x95, 0xFE, 0x7D, 0x5, 0x18, 0x5, 0xB0, 0x0, 0x26, 0x0, 0x33, 0x0, 0x0, 0x0, 0x7, 0x1, 0xDE, 0x5, 0x19, 0x0, 0x7, 0xFF, 0xFF, 0x0, 0x7A, 0xFE, 0x80, 0x3, 0xF9, 0x4, 0x4E, 0x0, 0x26, 0x0, 0x53, 0x0, 0x0, 0x0, 0x7, 0x1, 0xDE, 0x4, 0x7F, 0x0, 0xA, 0xFF, 0xFF, 0x0, 0x66, 0xFF, 0xEC, 0x5, 0x1F, 0x7, 0xDF, 0x0, 0x26, 0x0, 0x34, 0x0, 0x0, 0x0, 0x7, 0x7, 0xB9, 0x5, 0x6, 0x1, 0x53, 0xFF, 0xFF, 0x0, 0x50, 0xFF, 0xEC, 0x4, 0x3E, 0x7, 0x55, 0x0, 0x26, 0x0, 0x54, 0x0, 0x0, 0x0, 0x7, 0x8, 0xC4, 0x4, 0x82, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x66, 0xFF, 0xEC, 0x5, 0x1F, 0x8, 0xE, 0x0, 0x26, 0x0, 0x34, 0x0, 0x0, 0x0, 0x7, 0x7, 0xC7, 0x5, 0xC, 0x1, 0x4D, 0xFF, 0xFF, 0x0, 0x50, 0xFF, 0xEC, 0x4, 0x3E, 0x7, 0x22, 0x0, 0x26, 0x0, 0x54, 0x0, 0x0, 0x0, 0x7, 0x8, 0xBA, 0x4, 0x88, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x66, 0xFF, 0xEC, 0x5, 0x1F, 0x7, 0xB6, 0x0, 0x26, 0x0, 0x34, 0x0, 0x0, 0x0, 0x7, 0x7, 0xBA, 0x5, 0xC, 0x1, 0x57, 0xFF, 0xFF, 0x0, 0x50, 0xFF, 0xEC, 0x4, 0x3E, 0x7, 0x30, 0x0, 0x26, 0x0, 0x54, 0x0, 0x0, 0x0, 0x7, 0x8, 0xBE, 0x4, 0x88, 0x0, 0x3, 0xFF, 0xFF, 0x0, 0x66, 0xFF, 0xEC, 0x5, 0x1F, 0x7, 0xB6, 0x0, 0x26, 0x0, 0x34, 0x0, 0x0, 0x0, 0x7, 0x7, 0xBB, 0x5, 0xC, 0x1, 0x57, 0xFF, 0xFF, 0x0, 0x50, 0xFF, 0xEC, 0x4, 0x3E, 0x7, 0x30, 0x0, 0x26, 0x0, 0x54, 0x0, 0x0, 0x0, 0x7, 0x8, 0xC1, 0x4, 0x88, 0x0, 0x3, 0xFF, 0xFF, 0x0, 0x95, 0x0, 0x0, 0x4, 0xD4, 0x7, 0x42, 0x0, 0x26, 0x0, 0x35, 0x0, 0x0, 0x0, 0x7, 0x0, 0x76, 0x1, 0x72, 0x1, 0x42, 0xFF, 0xFF, 0x0, 0x7D, 0xFE, 0x60, 0x4, 0x31, 0x5, 0xF6, 0x0, 0x26, 0x0, 0x55, 0x0, 0x0, 0x0, 0x7, 0x0, 0x76, 0x1, 0x9C, 0xFF, 0xF6, 0xFF, 0xFF, 0x0, 0x95, 0x0, 0x0, 0x4, 0xD4, 0x7, 0x1F, 0x0, 0x26, 0x0, 0x35, 0x0, 0x0, 0x0, 0x7, 0x1, 0x8A, 0x1, 0x59, 0x1, 0x4A, 0xFF, 0xFF, 0x0, 0x7D, 0xFE, 0x60, 0x4, 0x31, 0x5, 0xD3, 0x0, 0x26, 0x0, 0x55, 0x0, 0x0, 0x0, 0x7, 0x1, 0x8A, 0x1, 0x83, 0xFF, 0xFE, 0xFF, 0xFF, 0x0, 0x95, 0x0, 0x0, 0x4, 0xDE, 0x7, 0x13, 0x0, 0x26, 0x0, 0x37, 0x0, 0x0, 0x0, 0x7, 0x1, 0x8A, 0x1, 0x57, 0x1, 0x3E, 0xFF, 0xFF, 0x0, 0x7D, 0x0, 0x0, 0x2, 0xB5, 0x5, 0xDD, 0x0, 0x26, 0x0, 0x57, 0x0, 0x0, 0x0, 0x7, 0x1, 0x8A, 0x0, 0x94, 0x0, 0x8, 0xFF, 0xFF, 0x0, 0x95, 0xFE, 0x9D, 0x4, 0xDE, 0x5, 0xB0, 0x0, 0x26, 0x0, 0x37, 0x0, 0x0, 0x0, 0x7, 0x1, 0xD4, 0x4, 0xBC, 0x0, 0xA, 0xFF, 0xFF, 0x0, 0x73, 0xFE, 0x9D, 0x2, 0xB5, 0x4, 0x4E, 0x0, 0x26, 0x0, 0x57, 0x0, 0x0, 0x0, 0x7, 0x1, 0xD4, 0x3, 0x58, 0x0, 0xA, 0xFF, 0xFF, 0x0, 0x95, 0xFE, 0x9D, 0x4, 0xDE, 0x6, 0xE3, 0x0, 0x26, 0x0, 0x37, 0x0, 0x0, 0x0, 0x27, 0x1, 0xD4, 0x4, 0xBC, 0x0, 0xA, 0x0, 0x7, 0x0, 0x71, 0x0, 0x6D, 0x1, 0x39, 0xFF, 0xFF, 0x0, 0x46, 0xFE, 0x9D, 0x2, 0xF4, 0x5, 0xAD, 0x0, 0x26, 0x0, 0x57, 0x0, 0x0, 0x0, 0x27, 0x1, 0xD4, 0x3, 0x58, 0x0, 0xA, 0x0, 0x6, 0x0, 0x71, 0xAA, 0x3, 0xFF, 0xFF, 0x0, 0x95, 0xFE, 0xCB, 0x4, 0xDE, 0x5, 0xB0, 0x0, 0x26, 0x0, 0x37, 0x0, 0x0, 0x0, 0x7, 0x1, 0xE2, 0x4, 0xAC, 0x0, 0xA, 0xFF, 0xFF, 0xFF, 0xAA, 0xFE, 0xCB, 0x2, 0xB5, 0x4, 0x4E, 0x0, 0x26, 0x0, 0x57, 0x0, 0x0, 0x0, 0x7, 0x1, 0xE2, 0x3, 0x48, 0x0, 0xA, 0xFF, 0xFF, 0x0, 0x4A, 0xFF, 0xEC, 0x4, 0x8A, 0x7, 0x13, 0x0, 0x26, 0x0, 0x38, 0x0, 0x0, 0x0, 0x7, 0x1, 0x8A, 0x1, 0x75, 0x1, 0x3E, 0xFF, 0xFF, 0x0, 0x4C, 0xFF, 0xEC, 0x3, 0xCA, 0x5, 0xDD, 0x0, 0x26, 0x0, 0x58, 0x0, 0x0, 0x0, 0x7, 0x1, 0x8A, 0x1, 0x20, 0x0, 0x8, 0xFF, 0xFF, 0x0, 0x4A, 0xFE, 0x93, 0x4, 0x8A, 0x5, 0xC4, 0x0, 0x26, 0x0, 0x38, 0x0, 0x0, 0x0, 0x7, 0x1, 0xD4, 0x4, 0xD7, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x4C, 0xFE, 0x89, 0x3, 0xCA, 0x4, 0x4E, 0x0, 0x26, 0x0, 0x58, 0x0, 0x0, 0x0, 0x7, 0x1, 0xD4, 0x4, 0x7D, 0xFF, 0xF6, 0xFF, 0xFF, 0x0, 0x4A, 0xFF, 0xEC, 0x4, 0x8A, 0x7, 0xAE, 0x0, 0x26, 0x0, 0x38, 0x0, 0x0, 0x0, 0x7, 0x7, 0xBD, 0x4, 0xB7, 0x1, 0x35, 0xFF, 0xFF, 0x0, 0x4C, 0xFF, 0xEC, 0x3, 0xCA, 0x7, 0x4C, 0x0, 0x26, 0x0, 0x58, 0x0, 0x0, 0x0, 0x7, 0x8, 0xB9, 0x4, 0x62, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x4A, 0xFF, 0xEC, 0x4, 0x8A, 0x8, 0x20, 0x0, 0x26, 0x0, 0x38, 0x0, 0x0, 0x0, 0x7, 0x7, 0xBE, 0x4, 0xC2, 0x1, 0x5F, 0xFF, 0xFF, 0x0, 0x4C, 0xFF, 0xEC, 0x3, 0xCA, 0x7, 0x3B, 0x0, 0x26, 0x0, 0x58, 0x0, 0x0, 0x0, 0x7, 0x8, 0xBC, 0x4, 0x6D, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x4A, 0xFE, 0x93, 0x4, 0x8A, 0x7, 0x13, 0x0, 0x26, 0x0, 0x38, 0x0, 0x0, 0x0, 0x27, 0x1, 0xD4, 0x4, 0xD7, 0x0, 0x0, 0x0, 0x7, 0x1, 0x8A, 0x1, 0x75, 0x1, 0x3E, 0xFF, 0xFF, 0x0, 0x4C, 0xFE, 0x89, 0x3, 0xCA, 0x5, 0xDD, 0x0, 0x26, 0x0, 0x58, 0x0, 0x0, 0x0, 0x27, 0x1, 0xD4, 0x4, 0x7D, 0xFF, 0xF6, 0x0, 0x7, 0x1, 0x8A, 0x1, 0x20, 0x0, 0x8, 0xFF, 0xFF, 0x0, 0x2D, 0x0, 0x0, 0x4, 0xB0, 0x7, 0x13, 0x0, 0x26, 0x0, 0x39, 0x0, 0x0, 0x0, 0x7, 0x1, 0x8A, 0x1, 0x67, 0x1, 0x3E, 0xFF, 0xFF, 0x0, 0x8, 0xFF, 0xEC, 0x2, 0x73, 0x6, 0x97, 0x0, 0x26, 0x0, 0x59, 0x0, 0x0, 0x0, 0x7, 0x1, 0x8A, 0x0, 0x41, 0x0, 0xC2, 0xFF, 0xFF, 0x0, 0x2D, 0xFE, 0x97, 0x4, 0xB0, 0x5, 0xB0, 0x0, 0x26, 0x0, 0x39, 0x0, 0x0, 0x0, 0x7, 0x1, 0xD4, 0x4, 0xC5, 0x0, 0x4, 0xFF, 0xFF, 0x0, 0x8, 0xFE, 0x93, 0x2, 0x73, 0x5, 0x41, 0x0, 0x26, 0x0, 0x59, 0x0, 0x0, 0x0, 0x7, 0x1, 0xD4, 0x4, 0x16, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x2D, 0xFE, 0xC5, 0x4, 0xB0, 0x5, 0xB0, 0x0, 0x26, 0x0, 0x39, 0x0, 0x0, 0x0, 0x7, 0x1, 0xE2, 0x4, 0xB5, 0x0, 0x4, 0xFF, 0xFF, 0x0, 0x8, 0xFE, 0xC1, 0x3, 0x16, 0x5, 0x41, 0x0, 0x26, 0x0, 0x59, 0x0, 0x0, 0x0, 0x7, 0x1, 0xE2, 0x4, 0x6, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x2D, 0xFE, 0x7A, 0x4, 0xB0, 0x5, 0xB0, 0x0, 0x26, 0x0, 0x39, 0x0, 0x0, 0x0, 0x7, 0x1, 0xDE, 0x4, 0xB5, 0x0, 0x4, 0xFF, 0xFF, 0x0, 0x8, 0xFE, 0x76, 0x3, 0x16, 0x5, 0x41, 0x0, 0x26, 0x0, 0x59, 0x0, 0x0, 0x0, 0x7, 0x1, 0xDE, 0x4, 0x6, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x7E, 0xFE, 0x98, 0x4, 0xBE, 0x5, 0xB0, 0x0, 0x26, 0x0, 0x3A, 0x0, 0x0, 0x0, 0x7, 0x1, 0xD5, 0x5, 0x33, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x77, 0xFE, 0x98, 0x3, 0xF7, 0x4, 0x3A, 0x0, 0x26, 0x0, 0x5A, 0x0, 0x0, 0x0, 0x7, 0x1, 0xD5, 0x4, 0xCF, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x7E, 0xFE, 0x79, 0x4, 0xBE, 0x5, 0xB0, 0x0, 0x26, 0x0, 0x3A, 0x0, 0x0, 0x0, 0x7, 0x1, 0xE1, 0x4, 0xE3, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x77, 0xFE, 0x79, 0x3, 0xF7, 0x4, 0x3A, 0x0, 0x26, 0x0, 0x5A, 0x0, 0x0, 0x0, 0x7, 0x1, 0xE1, 0x4, 0x7F, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x7E, 0xFE, 0x76, 0x4, 0xBE, 0x5, 0xB0, 0x0, 0x26, 0x0, 0x3A, 0x0, 0x0, 0x0, 0x7, 0x1, 0xDE, 0x4, 0xE3, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x77, 0xFE, 0x76, 0x3, 0xF7, 0x4, 0x3A, 0x0, 0x26, 0x0, 0x5A, 0x0, 0x0, 0x0, 0x7, 0x1, 0xDE, 0x4, 0x33, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x7E, 0xFF, 0xEC, 0x4, 0xBE, 0x7, 0xDF, 0x0, 0x26, 0x0, 0x3A, 0x0, 0x0, 0x0, 0x7, 0x7, 0xB9, 0x4, 0xDD, 0x1, 0x53, 0xFF, 0xFF, 0x0, 0x77, 0xFF, 0xEC, 0x3, 0xF7, 0x7, 0x55, 0x0, 0x26, 0x0, 0x5A, 0x0, 0x0, 0x0, 0x7, 0x8, 0xC4, 0x4, 0x7B, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x7E, 0xFF, 0xEC, 0x4, 0xBE, 0x8, 0xE, 0x0, 0x26, 0x0, 0x3A, 0x0, 0x0, 0x0, 0x7, 0x7, 0xBC, 0x4, 0xE3, 0x1, 0x6E, 0xFF, 0xFF, 0x0, 0x77, 0xFF, 0xEC, 0x3, 0xF7, 0x6, 0xFD, 0x0, 0x26, 0x0, 0x5A, 0x0, 0x0, 0x0, 0x7, 0x8, 0xC3, 0x4, 0x81, 0x0, 0x3, 0xFF, 0xFF, 0x0, 0x12, 0x0, 0x0, 0x5, 0x1D, 0x7, 0x37, 0x0, 0x26, 0x0, 0x3B, 0x0, 0x0, 0x0, 0x7, 0x1, 0x8D, 0x0, 0xB0, 0x1, 0x42, 0xFF, 0xFF, 0x0, 0x17, 0x0, 0x0, 0x3, 0xDB, 0x5, 0xEB, 0x0, 0x26, 0x0, 0x5B, 0x0, 0x0, 0x0, 0x6, 0x1, 0x8D, 0x18, 0xF6, 0xFF, 0xFF, 0x0, 0x12, 0xFE, 0x9D, 0x5, 0x1D, 0x5, 0xB0, 0x0, 0x26, 0x0, 0x3B, 0x0, 0x0, 0x0, 0x7, 0x1, 0xD4, 0x4, 0xF1, 0x0, 0xA, 0xFF, 0xFF, 0x0, 0x17, 0xFE, 0x9D, 0x3, 0xDB, 0x4, 0x3A, 0x0, 0x26, 0x0, 0x5B, 0x0, 0x0, 0x0, 0x7, 0x1, 0xD4, 0x4, 0x59, 0x0, 0xA, 0xFF, 0xFF, 0x0, 0x31, 0x0, 0x0, 0x6, 0xE5, 0x7, 0x13, 0x0, 0x26, 0x0, 0x3C, 0x0, 0x0, 0x0, 0x7, 0x1, 0x8A, 0x2, 0x8D, 0x1, 0x3E, 0xFF, 0xFF, 0x0, 0x22, 0x0, 0x0, 0x5, 0xCD, 0x5, 0xDD, 0x0, 0x26, 0x0, 0x5C, 0x0, 0x0, 0x0, 0x7, 0x1, 0x8A, 0x1, 0xF0, 0x0, 0x8, 0xFF, 0xFF, 0x0, 0x31, 0xFE, 0x9D, 0x6, 0xE5, 0x5, 0xB0, 0x0, 0x26, 0x0, 0x3C, 0x0, 0x0, 0x0, 0x7, 0x1, 0xD4, 0x5, 0xE7, 0x0, 0xA, 0xFF, 0xFF, 0x0, 0x22, 0xFE, 0x9D, 0x5, 0xCD, 0x4, 0x3A, 0x0, 0x26, 0x0, 0x5C, 0x0, 0x0, 0x0, 0x7, 0x1, 0xD4, 0x5, 0x50, 0x0, 0xA, 0xFF, 0xFF, 0x0, 0x29, 0x0, 0x0, 0x4, 0xEA, 0x7, 0x1F, 0x0, 0x26, 0x0, 0x3D, 0x0, 0x0, 0x0, 0x7, 0x1, 0x8A, 0x1, 0x82, 0x1, 0x4A, 0xFF, 0xFF, 0x0, 0x1F, 0x0, 0x0, 0x3, 0xE9, 0x5, 0xD3, 0x0, 0x26, 0x0, 0x5D, 0x0, 0x0, 0x0, 0x7, 0x1, 0x8A, 0x0, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0x0, 0x29, 0x0, 0x0, 0x4, 0xEA, 0x7, 0xF, 0x0, 0x26, 0x0, 0x3D, 0x0, 0x0, 0x0, 0x7, 0x0, 0x6B, 0x0, 0xC8, 0x1, 0x42, 0xFF, 0xFF, 0x0, 0x1F, 0x0, 0x0, 0x3, 0xE9, 0x5, 0xC3, 0x0, 0x26, 0x0, 0x5D, 0x0, 0x0, 0x0, 0x6, 0x0, 0x6B, 0x45, 0xF6, 0xFF, 0xFF, 0x0, 0x8, 0x0, 0x0, 0x4, 0xD6, 0x7, 0x13, 0x0, 0x26, 0x0, 0x3E, 0x0, 0x0, 0x0, 0x7, 0x1, 0x8A, 0x1, 0x6E, 0x1, 0x3E, 0xFF, 0xFF, 0x0, 0xC, 0xFE, 0x4B, 0x3, 0xD7, 0x5, 0xDD, 0x0, 0x26, 0x0, 0x5E, 0x0, 0x0, 0x0, 0x7, 0x1, 0x8A, 0x0, 0xFD, 0x0, 0x8, 0xFF, 0xFF, 0x0, 0x50, 0x0, 0x0, 0x4, 0x8C, 0x7, 0x37, 0x0, 0x26, 0x0, 0x3F, 0x0, 0x0, 0x0, 0x7, 0x1, 0x77, 0x0, 0x84, 0x1, 0x36, 0xFF, 0xFF, 0x0, 0x52, 0x0, 0x0, 0x3, 0xC0, 0x6, 0x1, 0x0, 0x26, 0x0, 0x5F, 0x0, 0x0, 0x0, 0x6, 0x1, 0x77, 0x1C, 0x0, 0xFF, 0xFF, 0x0, 0x50, 0xFE, 0x9D, 0x4, 0x8C, 0x5, 0xB0, 0x0, 0x26, 0x0, 0x3F, 0x0, 0x0, 0x0, 0x7, 0x1, 0xD4, 0x4, 0xC2, 0x0, 0xA, 0xFF, 0xFF, 0x0, 0x52, 0xFE, 0x9D, 0x3, 0xC0, 0x4, 0x3A, 0x0, 0x26, 0x0, 0x5F, 0x0, 0x0, 0x0, 0x7, 0x1, 0xD4, 0x4, 0x65, 0x0, 0xA, 0xFF, 0xFF, 0x0, 0x50, 0xFE, 0xCB, 0x4, 0x8C, 0x5, 0xB0, 0x0, 0x26, 0x0, 0x3F, 0x0, 0x0, 0x0, 0x7, 0x1, 0xE2, 0x4, 0xB2, 0x0, 0xA, 0xFF, 0xFF, 0x0, 0x52, 0xFE, 0xCB, 0x3, 0xC0, 0x4, 0x3A, 0x0, 0x26, 0x0, 0x5F, 0x0, 0x0, 0x0, 0x7, 0x1, 0xE2, 0x4, 0x55, 0x0, 0xA, 0xFF, 0xFF, 0x0, 0x7A, 0xFE, 0xCB, 0x3, 0xF9, 0x6, 0x0, 0x0, 0x26, 0x0, 0x4D, 0x0, 0x0, 0x0, 0x7, 0x1, 0xE2, 0x4, 0x93, 0x0, 0xA, 0xFF, 0xFF, 0xFF, 0xE5, 0xFF, 0xEC, 0x2, 0xAB, 0x6, 0x87, 0x0, 0x26, 0x0, 0x59, 0x0, 0x0, 0x0, 0x7, 0x0, 0x6B, 0xFF, 0x87, 0x0, 0xBA, 0xFF, 0xFF, 0x0, 0x22, 0x0, 0x0, 0x5, 0xCD, 0x6, 0x5E, 0x0, 0x26, 0x0, 0x5C, 0x0, 0x0, 0x0, 0x7, 0x1, 0x8B, 0x1, 0x9F, 0x0, 0x34, 0xFF, 0xFF, 0x0, 0xC, 0xFE, 0x4B, 0x3, 0xD7, 0x6, 0x5E, 0x0, 0x26, 0x0, 0x5E, 0x0, 0x0, 0x0, 0x7, 0x1, 0x8B, 0x0, 0xAC, 0x0, 0x34, 0xFF, 0xFF, 0x0, 0x5B, 0xFF, 0xEC, 0x4, 0x11, 0x6, 0x6B, 0x0, 0x26, 0x0, 0x46, 0x0, 0x0, 0x0, 0x7, 0x1, 0x6F, 0x3, 0xB, 0x0, 0x80, 0xFF, 0xFF, 0x0, 0x56, 0xFF, 0xEB, 0x4, 0x7A, 0x6, 0x44, 0x0, 0x26, 0x2, 0x3A, 0x0, 0x0, 0x0, 0x7, 0x4, 0x3A, 0x1, 0xB4, 0x0, 0x6C, 0xFF, 0xFF, 0x0, 0x56, 0xFF, 0xEB, 0x4, 0x7A, 0x6, 0x44, 0x0, 0x26, 0x2, 0x3A, 0x0, 0x0, 0x0, 0x7, 0x4, 0x49, 0x1, 0x7A, 0x0, 0x6C, 0xFF, 0xFF, 0x0, 0x56, 0xFF, 0xEB, 0x4, 0x7A, 0x6, 0x44, 0x0, 0x26, 0x2, 0x3A, 0x0, 0x0, 0x0, 0x7, 0x4, 0x3F, 0x0, 0xDB, 0x0, 0x6C, 0xFF, 0xFF, 0x0, 0x56, 0xFF, 0xEB, 0x4, 0x7A, 0x6, 0x44, 0x0, 0x26, 0x2, 0x3A, 0x0, 0x0, 0x0, 0x7, 0x4, 0x42, 0x0, 0xC2, 0x0, 0x6C, 0xFF, 0xFF, 0x0, 0x56, 0xFF, 0xEB, 0x4, 0x7A, 0x6, 0x44, 0x0, 0x26, 0x2, 0x3A, 0x0, 0x0, 0x0, 0x7, 0x4, 0x40, 0x1, 0x2F, 0x0, 0x6C, 0xFF, 0xFF, 0x0, 0x56, 0xFF, 0xEB, 0x4, 0x7A, 0x6, 0x44, 0x0, 0x26, 0x2, 0x3A, 0x0, 0x0, 0x0, 0x7, 0x4, 0x43, 0x0, 0xF9, 0x0, 0x6C, 0xFF, 0xFF, 0x0, 0x56, 0xFF, 0xEB, 0x4, 0x7A, 0x7, 0xB, 0x0, 0x26, 0x2, 0x3A, 0x0, 0x0, 0x0, 0x7, 0x4, 0x41, 0x0, 0xFF, 0x0, 0x6C, 0xFF, 0xFF, 0x0, 0x56, 0xFF, 0xEB, 0x4, 0x7A, 0x7, 0xB, 0x0, 0x26, 0x2, 0x3A, 0x0, 0x0, 0x0, 0x7, 0x4, 0x44, 0x0, 0xD8, 0x0, 0x6C, 0xFF, 0xFF, 0x0, 0x12, 0x0, 0x0, 0x5, 0x43, 0x5, 0xD7, 0x0, 0x26, 0x0, 0x26, 0x0, 0x0, 0x0, 0x6, 0x4, 0x3A, 0xD9, 0xFF, 0xFF, 0xFF, 0x0, 0x12, 0x0, 0x0, 0x5, 0x43, 0x5, 0xD7, 0x0, 0x26, 0x0, 0x26, 0x0, 0x0, 0x0, 0x6, 0x4, 0x49, 0xD2, 0xFF, 0xFF, 0xFF, 0xFE, 0xAF, 0x0, 0x0, 0x5, 0x43, 0x5, 0xD7, 0x0, 0x26, 0x0, 0x26, 0x0, 0x0, 0x0, 0x7, 0x4, 0x3F, 0xFE, 0x54, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xE5, 0x0, 0x0, 0x5, 0x43, 0x5, 0xD7, 0x0, 0x26, 0x0, 0x26, 0x0, 0x0, 0x0, 0x7, 0x4, 0x42, 0xFE, 0x7D, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xA, 0x0, 0x0, 0x5, 0x43, 0x5, 0xD7, 0x0, 0x26, 0x0, 0x26, 0x0, 0x0, 0x0, 0x7, 0x4, 0x40, 0xFE, 0xAF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xF9, 0x0, 0x0, 0x5, 0x43, 0x5, 0xD7, 0x0, 0x26, 0x0, 0x26, 0x0, 0x0, 0x0, 0x7, 0x4, 0x43, 0xFE, 0x91, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x67, 0x0, 0x0, 0x5, 0x43, 0x6, 0x9E, 0x0, 0x26, 0x0, 0x26, 0x0, 0x0, 0x0, 0x7, 0x4, 0x41, 0xFE, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x54, 0x0, 0x0, 0x5, 0x43, 0x6, 0x9E, 0x0, 0x26, 0x0, 0x26, 0x0, 0x0, 0x0, 0x7, 0x4, 0x44, 0xFE, 0xE5, 0xFF, 0xFF, 0xFF, 0xFF, 0x0, 0x61, 0xFF, 0xEC, 0x4, 0xD, 0x6, 0x43, 0x0, 0x26, 0x2, 0x3E, 0x0, 0x0, 0x0, 0x7, 0x4, 0x3A, 0x1, 0x7C, 0x0, 0x6B, 0xFF, 0xFF, 0x0, 0x61, 0xFF, 0xEC, 0x4, 0xD, 0x6, 0x43, 0x0, 0x26, 0x2, 0x3E, 0x0, 0x0, 0x0, 0x7, 0x4, 0x49, 0x1, 0x42, 0x0, 0x6B, 0xFF, 0xFF, 0x0, 0x61, 0xFF, 0xEC, 0x4, 0xD, 0x6, 0x43, 0x0, 0x26, 0x2, 0x3E, 0x0, 0x0, 0x0, 0x7, 0x4, 0x3F, 0x0, 0xA3, 0x0, 0x6B, 0xFF, 0xFF, 0x0, 0x61, 0xFF, 0xEC, 0x4, 0xD, 0x6, 0x43, 0x0, 0x26, 0x2, 0x3E, 0x0, 0x0, 0x0, 0x7, 0x4, 0x42, 0x0, 0x8A, 0x0, 0x6B, 0xFF, 0xFF, 0x0, 0x61, 0xFF, 0xEC, 0x4, 0xD, 0x6, 0x43, 0x0, 0x26, 0x2, 0x3E, 0x0, 0x0, 0x0, 0x7, 0x4, 0x40, 0x0, 0xF7, 0x0, 0x6B, 0xFF, 0xFF, 0x0, 0x61, 0xFF, 0xEC, 0x4, 0xD, 0x6, 0x43, 0x0, 0x26, 0x2, 0x3E, 0x0, 0x0, 0x0, 0x7, 0x4, 0x43, 0x0, 0xC1, 0x0, 0x6B, 0xFF, 0xFF, 0xFE, 0x96, 0x0, 0x0, 0x4, 0x4D, 0x5, 0xD9, 0x0, 0x26, 0x0, 0x2A, 0x0, 0x0, 0x0, 0x7, 0x4, 0x3A, 0xFE, 0x3B, 0x0, 0x1, 0xFF, 0xFF, 0xFE, 0x9D, 0x0, 0x0, 0x4, 0x4D, 0x5, 0xD9, 0x0, 0x26, 0x0, 0x2A, 0x0, 0x0, 0x0, 0x7, 0x4, 0x49, 0xFE, 0x34, 0x0, 0x1, 0xFF, 0xFF, 0xFD, 0x11, 0x0, 0x0, 0x4, 0x4D, 0x5, 0xD9, 0x0, 0x26, 0x0, 0x2A, 0x0, 0x0, 0x0, 0x7, 0x4, 0x3F, 0xFC, 0xB6, 0x0, 0x1, 0xFF, 0xFF, 0xFD, 0x47, 0x0, 0x0, 0x4, 0x4D, 0x5, 0xD9, 0x0, 0x26, 0x0, 0x2A, 0x0, 0x0, 0x0, 0x7, 0x4, 0x42, 0xFC, 0xDF, 0x0, 0x1, 0xFF, 0xFF, 0xFD, 0x6C, 0x0, 0x0, 0x4, 0x4D, 0x5, 0xD9, 0x0, 0x26, 0x0, 0x2A, 0x0, 0x0, 0x0, 0x7, 0x4, 0x40, 0xFD, 0x11, 0x0, 0x1, 0xFF, 0xFF, 0xFD, 0x5B, 0x0, 0x0, 0x4, 0x4D, 0x5, 0xD9, 0x0, 0x26, 0x0, 0x2A, 0x0, 0x0, 0x0, 0x7, 0x4, 0x43, 0xFC, 0xF3, 0x0, 0x1, 0xFF, 0xFF, 0x0, 0x7F, 0xFE, 0x61, 0x4, 0x6, 0x6, 0x44, 0x0, 0x26, 0x2, 0x40, 0x0, 0x0, 0x0, 0x7, 0x4, 0x3A, 0x1, 0x87, 0x0, 0x6C, 0xFF, 0xFF, 0x0, 0x7F, 0xFE, 0x61, 0x4, 0x6, 0x6, 0x44, 0x0, 0x26, 0x2, 0x40, 0x0, 0x0, 0x0, 0x7, 0x4, 0x49, 0x1, 0x4D, 0x0, 0x6C, 0xFF, 0xFF, 0x0, 0x7F, 0xFE, 0x61, 0x4, 0x6, 0x6, 0x44, 0x0, 0x26, 0x2, 0x40, 0x0, 0x0, 0x0, 0x7, 0x4, 0x3F, 0x0, 0xAE, 0x0, 0x6C, 0xFF, 0xFF, 0x0, 0x7F, 0xFE, 0x61, 0x4, 0x6, 0x6, 0x44, 0x0, 0x26, 0x2, 0x40, 0x0, 0x0, 0x0, 0x7, 0x4, 0x42, 0x0, 0x95, 0x0, 0x6C, 0xFF, 0xFF, 0x0, 0x7F, 0xFE, 0x61, 0x4, 0x6, 0x6, 0x44, 0x0, 0x26, 0x2, 0x40, 0x0, 0x0, 0x0, 0x7, 0x4, 0x40, 0x1, 0x2, 0x0, 0x6C, 0xFF, 0xFF, 0x0, 0x7F, 0xFE, 0x61, 0x4, 0x6, 0x6, 0x44, 0x0, 0x26, 0x2, 0x40, 0x0, 0x0, 0x0, 0x7, 0x4, 0x43, 0x0, 0xCC, 0x0, 0x6C, 0xFF, 0xFF, 0x0, 0x7F, 0xFE, 0x61, 0x4, 0x6, 0x7, 0xB, 0x0, 0x26, 0x2, 0x40, 0x0, 0x0, 0x0, 0x7, 0x4, 0x41, 0x0, 0xD2, 0x0, 0x6C, 0xFF, 0xFF, 0x0, 0x7F, 0xFE, 0x61, 0x4, 0x6, 0x7, 0xB, 0x0, 0x26, 0x2, 0x40, 0x0, 0x0, 0x0, 0x7, 0x4, 0x44, 0x0, 0xAB, 0x0, 0x6C, 0xFF, 0xFF, 0xFE, 0x9F, 0x0, 0x0, 0x5, 0x19, 0x5, 0xD8, 0x0, 0x26, 0x0, 0x2D, 0x0, 0x0, 0x0, 0x7, 0x4, 0x3A, 0xFE, 0x44, 0x0, 0x0, 0xFF, 0xFF, 0xFE, 0xA6, 0x0, 0x0, 0x5, 0x19, 0x5, 0xD8, 0x0, 0x26, 0x0, 0x2D, 0x0, 0x0, 0x0, 0x7, 0x4, 0x49, 0xFE, 0x3D, 0x0, 0x0, 0xFF, 0xFF, 0xFD, 0x1A, 0x0, 0x0, 0x5, 0x19, 0x5, 0xD8, 0x0, 0x26, 0x0, 0x2D, 0x0, 0x0, 0x0, 0x7, 0x4, 0x3F, 0xFC, 0xBF, 0x0, 0x0, 0xFF, 0xFF, 0xFD, 0x50, 0x0, 0x0, 0x5, 0x19, 0x5, 0xD8, 0x0, 0x26, 0x0, 0x2D, 0x0, 0x0, 0x0, 0x7, 0x4, 0x42, 0xFC, 0xE8, 0x0, 0x0, 0xFF, 0xFF, 0xFD, 0x75, 0x0, 0x0, 0x5, 0x19, 0x5, 0xD8, 0x0, 0x26, 0x0, 0x2D, 0x0, 0x0, 0x0, 0x7, 0x4, 0x40, 0xFD, 0x1A, 0x0, 0x0, 0xFF, 0xFF, 0xFD, 0x64, 0x0, 0x0, 0x5, 0x19, 0x5, 0xD8, 0x0, 0x26, 0x0, 0x2D, 0x0, 0x0, 0x0, 0x7, 0x4, 0x43, 0xFC, 0xFC, 0x0, 0x0, 0xFF, 0xFF, 0xFD, 0xD2, 0x0, 0x0, 0x5, 0x19, 0x6, 0x9F, 0x0, 0x26, 0x0, 0x2D, 0x0, 0x0, 0x0, 0x7, 0x4, 0x41, 0xFD, 0x63, 0x0, 0x0, 0xFF, 0xFF, 0xFD, 0xBF, 0x0, 0x0, 0x5, 0x19, 0x6, 0x9F, 0x0, 0x26, 0x0, 0x2D, 0x0, 0x0, 0x0, 0x7, 0x4, 0x44, 0xFD, 0x50, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0xAA, 0xFF, 0xF4, 0x2, 0x62, 0x6, 0x2F, 0x0, 0x26, 0x2, 0x42, 0x0, 0x0, 0x0, 0x6, 0x4, 0x3A, 0x73, 0x57, 0xFF, 0xFF, 0x0, 0xA2, 0xFF, 0xF4, 0x2, 0x62, 0x6, 0x2F, 0x0, 0x26, 0x2, 0x42, 0x0, 0x0, 0x0, 0x6, 0x4, 0x49, 0x39, 0x57, 0xFF, 0xFF, 0xFF, 0xF5, 0xFF, 0xF4, 0x2, 0x63, 0x6, 0x2F, 0x0, 0x26, 0x2, 0x42, 0x0, 0x0, 0x0, 0x6, 0x4, 0x3F, 0x9A, 0x57, 0xFF, 0xFF, 0xFF, 0xE9, 0xFF, 0xF4, 0x2, 0x62, 0x6, 0x2F, 0x0, 0x26, 0x2, 0x42, 0x0, 0x0, 0x0, 0x6, 0x4, 0x42, 0x81, 0x57, 0xFF, 0xFF, 0x0, 0x49, 0xFF, 0xF4, 0x2, 0xA3, 0x6, 0x2F, 0x0, 0x26, 0x2, 0x42, 0x0, 0x0, 0x0, 0x6, 0x4, 0x40, 0xEE, 0x57, 0xFF, 0xFF, 0x0, 0x20, 0xFF, 0xF4, 0x2, 0x8E, 0x6, 0x2F, 0x0, 0x26, 0x2, 0x42, 0x0, 0x0, 0x0, 0x6, 0x4, 0x43, 0xB8, 0x57, 0xFF, 0xFF, 0x0, 0x2D, 0xFF, 0xF4, 0x2, 0x66, 0x6, 0xF6, 0x0, 0x26, 0x2, 0x42, 0x0, 0x0, 0x0, 0x6, 0x4, 0x41, 0xBE, 0x57, 0xFF, 0xFF, 0x0, 0x6, 0xFF, 0xF4, 0x2, 0x62, 0x6, 0xF6, 0x0, 0x26, 0x2, 0x42, 0x0, 0x0, 0x0, 0x6, 0x4, 0x44, 0x97, 0x57, 0xFF, 0xFF, 0xFE, 0xA1, 0x0, 0x0, 0x1, 0xA0, 0x5, 0xDA, 0x0, 0x26, 0x0, 0x2E, 0x0, 0x0, 0x0, 0x7, 0x4, 0x3A, 0xFE, 0x46, 0x0, 0x2, 0xFF, 0xFF, 0xFE, 0xA8, 0x0, 0x0, 0x1, 0xA0, 0x5, 0xDA, 0x0, 0x26, 0x0, 0x2E, 0x0, 0x0, 0x0, 0x7, 0x4, 0x49, 0xFE, 0x3F, 0x0, 0x2, 0xFF, 0xFF, 0xFD, 0x1C, 0x0, 0x0, 0x1, 0xA0, 0x5, 0xDA, 0x0, 0x26, 0x0, 0x2E, 0x0, 0x0, 0x0, 0x7, 0x4, 0x3F, 0xFC, 0xC1, 0x0, 0x2, 0xFF, 0xFF, 0xFD, 0x52, 0x0, 0x0, 0x1, 0xA0, 0x5, 0xDA, 0x0, 0x26, 0x0, 0x2E, 0x0, 0x0, 0x0, 0x7, 0x4, 0x42, 0xFC, 0xEA, 0x0, 0x2, 0xFF, 0xFF, 0xFD, 0x77, 0x0, 0x0, 0x1, 0xA0, 0x5, 0xDA, 0x0, 0x26, 0x0, 0x2E, 0x0, 0x0, 0x0, 0x7, 0x4, 0x40, 0xFD, 0x1C, 0x0, 0x2, 0xFF, 0xFF, 0xFD, 0x66, 0x0, 0x0, 0x1, 0xA0, 0x5, 0xDA, 0x0, 0x26, 0x0, 0x2E, 0x0, 0x0, 0x0, 0x7, 0x4, 0x43, 0xFC, 0xFE, 0x0, 0x2, 0xFF, 0xFF, 0xFD, 0xD4, 0x0, 0x0, 0x1, 0xA0, 0x6, 0xA1, 0x0, 0x26, 0x0, 0x2E, 0x0, 0x0, 0x0, 0x7, 0x4, 0x41, 0xFD, 0x65, 0x0, 0x2, 0xFF, 0xFF, 0xFD, 0xC1, 0x0, 0x0, 0x1, 0xA0, 0x6, 0xA1, 0x0, 0x26, 0x0, 0x2E, 0x0, 0x0, 0x0, 0x7, 0x4, 0x44, 0xFD, 0x52, 0x0, 0x2, 0xFF, 0xFF, 0x0, 0x50, 0xFF, 0xEC, 0x4, 0x3E, 0x6, 0x44, 0x0, 0x26, 0x0, 0x54, 0x0, 0x0, 0x0, 0x7, 0x4, 0x3A, 0x1, 0x85, 0x0, 0x6C, 0xFF, 0xFF, 0x0, 0x50, 0xFF, 0xEC, 0x4, 0x3E, 0x6, 0x44, 0x0, 0x26, 0x0, 0x54, 0x0, 0x0, 0x0, 0x7, 0x4, 0x49, 0x1, 0x4B, 0x0, 0x6C, 0xFF, 0xFF, 0x0, 0x50, 0xFF, 0xEC, 0x4, 0x3E, 0x6, 0x44, 0x0, 0x26, 0x0, 0x54, 0x0, 0x0, 0x0, 0x7, 0x4, 0x3F, 0x0, 0xAC, 0x0, 0x6C, 0xFF, 0xFF, 0x0, 0x50, 0xFF, 0xEC, 0x4, 0x3E, 0x6, 0x44, 0x0, 0x26, 0x0, 0x54, 0x0, 0x0, 0x0, 0x7, 0x4, 0x42, 0x0, 0x93, 0x0, 0x6C, 0xFF, 0xFF, 0x0, 0x50, 0xFF, 0xEC, 0x4, 0x3E, 0x6, 0x44, 0x0, 0x26, 0x0, 0x54, 0x0, 0x0, 0x0, 0x7, 0x4, 0x40, 0x1, 0x0, 0x0, 0x6C, 0xFF, 0xFF, 0x0, 0x50, 0xFF, 0xEC, 0x4, 0x3E, 0x6, 0x44, 0x0, 0x26, 0x0, 0x54, 0x0, 0x0, 0x0, 0x7, 0x4, 0x43, 0x0, 0xCA, 0x0, 0x6C, 0xFF, 0xFF, 0xFF, 0x6B, 0xFF, 0xEC, 0x5, 0x33, 0x5, 0xD7, 0x0, 0x26, 0x0, 0x34, 0x14, 0x0, 0x0, 0x7, 0x4, 0x3A, 0xFF, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x72, 0xFF, 0xEC, 0x5, 0x33, 0x5, 0xD7, 0x0, 0x26, 0x0, 0x34, 0x14, 0x0, 0x0, 0x7, 0x4, 0x49, 0xFF, 0x9, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x18, 0xFF, 0xEC, 0x5, 0x65, 0x5, 0xD7, 0x0, 0x26, 0x0, 0x34, 0x46, 0x0, 0x0, 0x7, 0x4, 0x3F, 0xFD, 0xBD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x4E, 0xFF, 0xEC, 0x5, 0x65, 0x5, 0xD7, 0x0, 0x26, 0x0, 0x34, 0x46, 0x0, 0x0, 0x7, 0x4, 0x42, 0xFD, 0xE6, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x73, 0xFF, 0xEC, 0x5, 0x65, 0x5, 0xD7, 0x0, 0x26, 0x0, 0x34, 0x46, 0x0, 0x0, 0x7, 0x4, 0x40, 0xFE, 0x18, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x62, 0xFF, 0xEC, 0x5, 0x65, 0x5, 0xD7, 0x0, 0x26, 0x0, 0x34, 0x46, 0x0, 0x0, 0x7, 0x4, 0x43, 0xFD, 0xFA, 0xFF, 0xFF, 0xFF, 0xFF, 0x0, 0x80, 0xFF, 0xEB, 0x4, 0x8, 0x6, 0x36, 0x0, 0x26, 0x2, 0x4A, 0x0, 0x0, 0x0, 0x7, 0x4, 0x3A, 0x1, 0x70, 0x0, 0x5E, 0xFF, 0xFF, 0x0, 0x80, 0xFF, 0xEB, 0x4, 0x8, 0x6, 0x36, 0x0, 0x26, 0x2, 0x4A, 0x0, 0x0, 0x0, 0x7, 0x4, 0x49, 0x1, 0x36, 0x0, 0x5E, 0xFF, 0xFF, 0x0, 0x80, 0xFF, 0xEB, 0x4, 0x8, 0x6, 0x36, 0x0, 0x26, 0x2, 0x4A, 0x0, 0x0, 0x0, 0x7, 0x4, 0x3F, 0x0, 0x97, 0x0, 0x5E, 0xFF, 0xFF, 0x0, 0x80, 0xFF, 0xEB, 0x4, 0x8, 0x6, 0x36, 0x0, 0x26, 0x2, 0x4A, 0x0, 0x0, 0x0, 0x6, 0x4, 0x42, 0x7E, 0x5E, 0xFF, 0xFF, 0x0, 0x80, 0xFF, 0xEB, 0x4, 0x8, 0x6, 0x36, 0x0, 0x26, 0x2, 0x4A, 0x0, 0x0, 0x0, 0x7, 0x4, 0x40, 0x0, 0xEB, 0x0, 0x5E, 0xFF, 0xFF, 0x0, 0x80, 0xFF, 0xEB, 0x4, 0x8, 0x6, 0x36, 0x0, 0x26, 0x2, 0x4A, 0x0, 0x0, 0x0, 0x7, 0x4, 0x43, 0x0, 0xB5, 0x0, 0x5E, 0xFF, 0xFF, 0x0, 0x80, 0xFF, 0xEB, 0x4, 0x8, 0x6, 0xFD, 0x0, 0x26, 0x2, 0x4A, 0x0, 0x0, 0x0, 0x7, 0x4, 0x41, 0x0, 0xBB, 0x0, 0x5E, 0xFF, 0xFF, 0x0, 0x80, 0xFF, 0xEB, 0x4, 0x8, 0x6, 0xFD, 0x0, 0x26, 0x2, 0x4A, 0x0, 0x0, 0x0, 0x7, 0x4, 0x44, 0x0, 0x94, 0x0, 0x5E, 0xFF, 0xFF, 0xFE, 0x97, 0x0, 0x0, 0x4, 0xD6, 0x5, 0xD7, 0x0, 0x26, 0x0, 0x3E, 0x0, 0x0, 0x0, 0x7, 0x4, 0x49, 0xFE, 0x2E, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0x41, 0x0, 0x0, 0x4, 0xD6, 0x5, 0xD7, 0x0, 0x26, 0x0, 0x3E, 0x0, 0x0, 0x0, 0x7, 0x4, 0x42, 0xFC, 0xD9, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0x55, 0x0, 0x0, 0x4, 0xD6, 0x5, 0xD7, 0x0, 0x26, 0x0, 0x3E, 0x0, 0x0, 0x0, 0x7, 0x4, 0x43, 0xFC, 0xED, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xB0, 0x0, 0x0, 0x4, 0xD6, 0x6, 0x9E, 0x0, 0x26, 0x0, 0x3E, 0x0, 0x0, 0x0, 0x7, 0x4, 0x44, 0xFD, 0x41, 0xFF, 0xFF, 0xFF, 0xFF, 0x0, 0x66, 0xFF, 0xEB, 0x6, 0x2E, 0x6, 0x34, 0x0, 0x26, 0x2, 0x4D, 0x0, 0x0, 0x0, 0x7, 0x4, 0x3A, 0x2, 0x8F, 0x0, 0x5C, 0xFF, 0xFF, 0x0, 0x66, 0xFF, 0xEB, 0x6, 0x2E, 0x6, 0x34, 0x0, 0x26, 0x2, 0x4D, 0x0, 0x0, 0x0, 0x7, 0x4, 0x49, 0x2, 0x55, 0x0, 0x5C, 0xFF, 0xFF, 0x0, 0x66, 0xFF, 0xEB, 0x6, 0x2E, 0x6, 0x34, 0x0, 0x26, 0x2, 0x4D, 0x0, 0x0, 0x0, 0x7, 0x4, 0x3F, 0x1, 0xB6, 0x0, 0x5C, 0xFF, 0xFF, 0x0, 0x66, 0xFF, 0xEB, 0x6, 0x2E, 0x6, 0x34, 0x0, 0x26, 0x2, 0x4D, 0x0, 0x0, 0x0, 0x7, 0x4, 0x42, 0x1, 0x9D, 0x0, 0x5C, 0xFF, 0xFF, 0x0, 0x66, 0xFF, 0xEB, 0x6, 0x2E, 0x6, 0x34, 0x0, 0x26, 0x2, 0x4D, 0x0, 0x0, 0x0, 0x7, 0x4, 0x40, 0x2, 0xA, 0x0, 0x5C, 0xFF, 0xFF, 0x0, 0x66, 0xFF, 0xEB, 0x6, 0x2E, 0x6, 0x34, 0x0, 0x26, 0x2, 0x4D, 0x0, 0x0, 0x0, 0x7, 0x4, 0x43, 0x1, 0xD4, 0x0, 0x5C, 0xFF, 0xFF, 0x0, 0x66, 0xFF, 0xEB, 0x6, 0x2E, 0x6, 0xFB, 0x0, 0x26, 0x2, 0x4D, 0x0, 0x0, 0x0, 0x7, 0x4, 0x41, 0x1, 0xDA, 0x0, 0x5C, 0xFF, 0xFF, 0x0, 0x66, 0xFF, 0xEB, 0x6, 0x2E, 0x6, 0xFB, 0x0, 0x26, 0x2, 0x4D, 0x0, 0x0, 0x0, 0x7, 0x4, 0x44, 0x1, 0xB3, 0x0, 0x5C, 0xFF, 0xFF, 0xFF, 0x75, 0x0, 0x0, 0x4, 0xF1, 0x5, 0xD7, 0x0, 0x26, 0x2, 0x39, 0x14, 0x0, 0x0, 0x7, 0x4, 0x3A, 0xFF, 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7C, 0x0, 0x0, 0x4, 0xF1, 0x5, 0xD7, 0x0, 0x26, 0x2, 0x39, 0x14, 0x0, 0x0, 0x7, 0x4, 0x49, 0xFF, 0x13, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x22, 0x0, 0x0, 0x5, 0x23, 0x5, 0xD7, 0x0, 0x26, 0x2, 0x39, 0x46, 0x0, 0x0, 0x7, 0x4, 0x3F, 0xFD, 0xC7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x58, 0x0, 0x0, 0x5, 0x23, 0x5, 0xD7, 0x0, 0x26, 0x2, 0x39, 0x46, 0x0, 0x0, 0x7, 0x4, 0x42, 0xFD, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x7D, 0x0, 0x0, 0x5, 0x23, 0x5, 0xD7, 0x0, 0x26, 0x2, 0x39, 0x46, 0x0, 0x0, 0x7, 0x4, 0x40, 0xFE, 0x22, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x6C, 0x0, 0x0, 0x5, 0x23, 0x5, 0xD7, 0x0, 0x26, 0x2, 0x39, 0x46, 0x0, 0x0, 0x7, 0x4, 0x43, 0xFE, 0x4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xDA, 0x0, 0x0, 0x5, 0x23, 0x6, 0x9E, 0x0, 0x26, 0x2, 0x39, 0x46, 0x0, 0x0, 0x7, 0x4, 0x41, 0xFE, 0x6B, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xC7, 0x0, 0x0, 0x5, 0x23, 0x6, 0x9E, 0x0, 0x26, 0x2, 0x39, 0x46, 0x0, 0x0, 0x7, 0x4, 0x44, 0xFE, 0x58, 0xFF, 0xFF, 0xFF, 0xFF, 0x0, 0x56, 0xFF, 0xEB, 0x4, 0x7A, 0x6, 0x2F, 0x0, 0x26, 0x2, 0x3A, 0x0, 0x0, 0x0, 0x7, 0x4, 0x47, 0x1, 0x15, 0x0, 0x6C, 0xFF, 0xFF, 0x0, 0x56, 0xFF, 0xEB, 0x4, 0x7A, 0x6, 0x2F, 0x0, 0x26, 0x2, 0x3A, 0x0, 0x0, 0x0, 0x7, 0x4, 0x48, 0x1, 0xD7, 0x0, 0x6C, 0xFF, 0xFF, 0x0, 0x61, 0xFF, 0xEC, 0x4, 0xD, 0x6, 0x2E, 0x0, 0x26, 0x2, 0x3E, 0x0, 0x0, 0x0, 0x7, 0x4, 0x47, 0x0, 0xDD, 0x0, 0x6B, 0xFF, 0xFF, 0x0, 0x61, 0xFF, 0xEC, 0x4, 0xD, 0x6, 0x2E, 0x0, 0x26, 0x2, 0x3E, 0x0, 0x0, 0x0, 0x7, 0x4, 0x48, 0x1, 0x9F, 0x0, 0x6B, 0xFF, 0xFF, 0x0, 0x7F, 0xFE, 0x61, 0x4, 0x6, 0x6, 0x2F, 0x0, 0x26, 0x2, 0x40, 0x0, 0x0, 0x0, 0x7, 0x4, 0x47, 0x0, 0xE8, 0x0, 0x6C, 0xFF, 0xFF, 0x0, 0x7F, 0xFE, 0x61, 0x4, 0x6, 0x6, 0x2F, 0x0, 0x26, 0x2, 0x40, 0x0, 0x0, 0x0, 0x7, 0x4, 0x48, 0x1, 0xAA, 0x0, 0x6C, 0xFF, 0xFF, 0x0, 0x3A, 0xFF, 0xF4, 0x2, 0x62, 0x6, 0x1A, 0x0, 0x26, 0x2, 0x42, 0x0, 0x0, 0x0, 0x6, 0x4, 0x47, 0xD4, 0x57, 0xFF, 0xFF, 0x0, 0xAA, 0xFF, 0xF4, 0x2, 0x62, 0x6, 0x1A, 0x0, 0x26, 0x2, 0x42, 0x0, 0x0, 0x0, 0x7, 0x4, 0x48, 0x0, 0x96, 0x0, 0x57, 0xFF, 0xFF, 0x0, 0x50, 0xFF, 0xEC, 0x4, 0x3E, 0x6, 0x2F, 0x0, 0x26, 0x0, 0x54, 0x0, 0x0, 0x0, 0x7, 0x4, 0x47, 0x0, 0xE6, 0x0, 0x6C, 0xFF, 0xFF, 0x0, 0x50, 0xFF, 0xEC, 0x4, 0x3E, 0x6, 0x2F, 0x0, 0x26, 0x0, 0x54, 0x0, 0x0, 0x0, 0x7, 0x4, 0x48, 0x1, 0xA8, 0x0, 0x6C, 0xFF, 0xFF, 0x0, 0x80, 0xFF, 0xEB, 0x4, 0x8, 0x6, 0x21, 0x0, 0x26, 0x2, 0x4A, 0x0, 0x0, 0x0, 0x7, 0x4, 0x47, 0x0, 0xD1, 0x0, 0x5E, 0xFF, 0xFF, 0x0, 0x80, 0xFF, 0xEB, 0x4, 0x8, 0x6, 0x21, 0x0, 0x26, 0x2, 0x4A, 0x0, 0x0, 0x0, 0x7, 0x4, 0x48, 0x1, 0x93, 0x0, 0x5E, 0xFF, 0xFF, 0x0, 0x66, 0xFF, 0xEB, 0x6, 0x2E, 0x6, 0x1F, 0x0, 0x26, 0x2, 0x4D, 0x0, 0x0, 0x0, 0x7, 0x4, 0x47, 0x1, 0xF0, 0x0, 0x5C, 0xFF, 0xFF, 0x0, 0x66, 0xFF, 0xEB, 0x6, 0x2E, 0x6, 0x1F, 0x0, 0x26, 0x2, 0x4D, 0x0, 0x0, 0x0, 0x7, 0x4, 0x48, 0x2, 0xB2, 0x0, 0x5C, 0xFF, 0xFF, 0x0, 0x56, 0xFD, 0xE8, 0x4, 0x7A, 0x6, 0x44, 0x0, 0x26, 0x2, 0x3A, 0x0, 0x0, 0x0, 0x27, 0x4, 0x3B, 0x1, 0x4E, 0xFF, 0xF6, 0x0, 0x7, 0x4, 0x3A, 0x1, 0xB4, 0x0, 0x6C, 0xFF, 0xFF, 0x0, 0x56, 0xFD, 0xE8, 0x4, 0x7A, 0x6, 0x44, 0x0, 0x26, 0x2, 0x3A, 0x0, 0x0, 0x0, 0x27, 0x4, 0x3B, 0x1, 0x4E, 0xFF, 0xF6, 0x0, 0x7, 0x4, 0x49, 0x1, 0x7A, 0x0, 0x6C, 0xFF, 0xFF, 0x0, 0x56, 0xFD, 0xE8, 0x4, 0x7A, 0x6, 0x44, 0x0, 0x26, 0x2, 0x3A, 0x0, 0x0, 0x0, 0x27, 0x4, 0x3B, 0x1, 0x4E, 0xFF, 0xF6, 0x0, 0x7, 0x4, 0x3F, 0x0, 0xDB, 0x0, 0x6C, 0xFF, 0xFF, 0x0, 0x56, 0xFD, 0xE8, 0x4, 0x7A, 0x6, 0x44, 0x0, 0x26, 0x2, 0x3A, 0x0, 0x0, 0x0, 0x27, 0x4, 0x3B, 0x1, 0x4E, 0xFF, 0xF6, 0x0, 0x7, 0x4, 0x42, 0x0, 0xC2, 0x0, 0x6C, 0xFF, 0xFF, 0x0, 0x56, 0xFD, 0xE8, 0x4, 0x7A, 0x6, 0x44, 0x0, 0x26, 0x2, 0x3A, 0x0, 0x0, 0x0, 0x27, 0x4, 0x3B, 0x1, 0x4E, 0xFF, 0xF6, 0x0, 0x7, 0x4, 0x40, 0x1, 0x2F, 0x0, 0x6C, 0xFF, 0xFF, 0x0, 0x56, 0xFD, 0xE8, 0x4, 0x7A, 0x6, 0x44, 0x0, 0x26, 0x2, 0x3A, 0x0, 0x0, 0x0, 0x27, 0x4, 0x3B, 0x1, 0x4E, 0xFF, 0xF6, 0x0, 0x7, 0x4, 0x43, 0x0, 0xF9, 0x0, 0x6C, 0xFF, 0xFF, 0x0, 0x56, 0xFD, 0xE8, 0x4, 0x7A, 0x7, 0xB, 0x0, 0x26, 0x2, 0x3A, 0x0, 0x0, 0x0, 0x27, 0x4, 0x3B, 0x1, 0x4E, 0xFF, 0xF6, 0x0, 0x7, 0x4, 0x41, 0x0, 0xFF, 0x0, 0x6C, 0xFF, 0xFF, 0x0, 0x56, 0xFD, 0xE8, 0x4, 0x7A, 0x7, 0xB, 0x0, 0x26, 0x2, 0x3A, 0x0, 0x0, 0x0, 0x27, 0x4, 0x3B, 0x1, 0x4E, 0xFF, 0xF6, 0x0, 0x7, 0x4, 0x44, 0x0, 0xD8, 0x0, 0x6C, 0xFF, 0xFF, 0x0, 0x12, 0xFD, 0xF5, 0x5, 0x43, 0x5, 0xD7, 0x0, 0x26, 0x0, 0x26, 0x0, 0x0, 0x0, 0x27, 0x4, 0x3B, 0x1, 0xF3, 0x0, 0x3, 0x0, 0x6, 0x4, 0x3A, 0xD9, 0xFF, 0xFF, 0xFF, 0x0, 0x12, 0xFD, 0xF5, 0x5, 0x43, 0x5, 0xD7, 0x0, 0x26, 0x0, 0x26, 0x0, 0x0, 0x0, 0x27, 0x4, 0x3B, 0x1, 0xF3, 0x0, 0x3, 0x0, 0x6, 0x4, 0x49, 0xD2, 0xFF, 0xFF, 0xFF, 0xFE, 0xAF, 0xFD, 0xF5, 0x5, 0x43, 0x5, 0xD7, 0x0, 0x26, 0x0, 0x26, 0x0, 0x0, 0x0, 0x27, 0x4, 0x3B, 0x1, 0xF3, 0x0, 0x3, 0x0, 0x7, 0x4, 0x3F, 0xFE, 0x54, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xE5, 0xFD, 0xF5, 0x5, 0x43, 0x5, 0xD7, 0x0, 0x26, 0x0, 0x26, 0x0, 0x0, 0x0, 0x27, 0x4, 0x3B, 0x1, 0xF3, 0x0, 0x3, 0x0, 0x7, 0x4, 0x42, 0xFE, 0x7D, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xA, 0xFD, 0xF5, 0x5, 0x43, 0x5, 0xD7, 0x0, 0x26, 0x0, 0x26, 0x0, 0x0, 0x0, 0x27, 0x4, 0x3B, 0x1, 0xF3, 0x0, 0x3, 0x0, 0x7, 0x4, 0x40, 0xFE, 0xAF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xF9, 0xFD, 0xF5, 0x5, 0x43, 0x5, 0xD7, 0x0, 0x26, 0x0, 0x26, 0x0, 0x0, 0x0, 0x27, 0x4, 0x3B, 0x1, 0xF3, 0x0, 0x3, 0x0, 0x7, 0x4, 0x43, 0xFE, 0x91, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x67, 0xFD, 0xF5, 0x5, 0x43, 0x6, 0x9E, 0x0, 0x26, 0x0, 0x26, 0x0, 0x0, 0x0, 0x27, 0x4, 0x3B, 0x1, 0xF3, 0x0, 0x3, 0x0, 0x7, 0x4, 0x41, 0xFE, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x54, 0xFD, 0xF5, 0x5, 0x43, 0x6, 0x9E, 0x0, 0x26, 0x0, 0x26, 0x0, 0x0, 0x0, 0x27, 0x4, 0x3B, 0x1, 0xF3, 0x0, 0x3, 0x0, 0x7, 0x4, 0x44, 0xFE, 0xE5, 0xFF, 0xFF, 0xFF, 0xFF, 0x0, 0x7F, 0xFD, 0xFC, 0x4, 0x6, 0x6, 0x44, 0x0, 0x26, 0x2, 0x40, 0x0, 0x0, 0x0, 0x26, 0x4, 0x3B, 0x34, 0xA, 0x0, 0x7, 0x4, 0x3A, 0x1, 0x87, 0x0, 0x6C, 0xFF, 0xFF, 0x0, 0x7F, 0xFD, 0xFC, 0x4, 0x6, 0x6, 0x44, 0x0, 0x26, 0x2, 0x40, 0x0, 0x0, 0x0, 0x26, 0x4, 0x3B, 0x34, 0xA, 0x0, 0x7, 0x4, 0x49, 0x1, 0x4D, 0x0, 0x6C, 0xFF, 0xFF, 0x0, 0x7F, 0xFD, 0xFC, 0x4, 0x6, 0x6, 0x44, 0x0, 0x26, 0x2, 0x40, 0x0, 0x0, 0x0, 0x26, 0x4, 0x3B, 0x34, 0xA, 0x0, 0x7, 0x4, 0x3F, 0x0, 0xAE, 0x0, 0x6C, 0xFF, 0xFF, 0x0, 0x7F, 0xFD, 0xFC, 0x4, 0x6, 0x6, 0x44, 0x0, 0x26, 0x2, 0x40, 0x0, 0x0, 0x0, 0x26, 0x4, 0x3B, 0x34, 0xA, 0x0, 0x7, 0x4, 0x42, 0x0, 0x95, 0x0, 0x6C, 0xFF, 0xFF, 0x0, 0x7F, 0xFD, 0xFC, 0x4, 0x6, 0x6, 0x44, 0x0, 0x26, 0x2, 0x40, 0x0, 0x0, 0x0, 0x26, 0x4, 0x3B, 0x34, 0xA, 0x0, 0x7, 0x4, 0x40, 0x1, 0x2, 0x0, 0x6C, 0xFF, 0xFF, 0x0, 0x7F, 0xFD, 0xFC, 0x4, 0x6, 0x6, 0x44, 0x0, 0x26, 0x2, 0x40, 0x0, 0x0, 0x0, 0x26, 0x4, 0x3B, 0x34, 0xA, 0x0, 0x7, 0x4, 0x43, 0x0, 0xCC, 0x0, 0x6C, 0xFF, 0xFF, 0x0, 0x7F, 0xFD, 0xFC, 0x4, 0x6, 0x7, 0xB, 0x0, 0x26, 0x2, 0x40, 0x0, 0x0, 0x0, 0x26, 0x4, 0x3B, 0x34, 0xA, 0x0, 0x7, 0x4, 0x41, 0x0, 0xD2, 0x0, 0x6C, 0xFF, 0xFF, 0x0, 0x7F, 0xFD, 0xFC, 0x4, 0x6, 0x7, 0xB, 0x0, 0x26, 0x2, 0x40, 0x0, 0x0, 0x0, 0x26, 0x4, 0x3B, 0x34, 0xA, 0x0, 0x7, 0x4, 0x44, 0x0, 0xAB, 0x0, 0x6C, 0xFF, 0xFF, 0xFE, 0x9F, 0xFD, 0xFC, 0x5, 0x19, 0x5, 0xD8, 0x0, 0x26, 0x0, 0x2D, 0x0, 0x0, 0x0, 0x27, 0x4, 0x3B, 0x2, 0xB, 0x0, 0xA, 0x0, 0x7, 0x4, 0x3A, 0xFE, 0x44, 0x0, 0x0, 0xFF, 0xFF, 0xFE, 0xA6, 0xFD, 0xFC, 0x5, 0x19, 0x5, 0xD8, 0x0, 0x26, 0x0, 0x2D, 0x0, 0x0, 0x0, 0x27, 0x4, 0x3B, 0x2, 0xB, 0x0, 0xA, 0x0, 0x7, 0x4, 0x49, 0xFE, 0x3D, 0x0, 0x0, 0xFF, 0xFF, 0xFD, 0x1A, 0xFD, 0xFC, 0x5, 0x19, 0x5, 0xD8, 0x0, 0x26, 0x0, 0x2D, 0x0, 0x0, 0x0, 0x27, 0x4, 0x3B, 0x2, 0xB, 0x0, 0xA, 0x0, 0x7, 0x4, 0x3F, 0xFC, 0xBF, 0x0, 0x0, 0xFF, 0xFF, 0xFD, 0x50, 0xFD, 0xFC, 0x5, 0x19, 0x5, 0xD8, 0x0, 0x26, 0x0, 0x2D, 0x0, 0x0, 0x0, 0x27, 0x4, 0x3B, 0x2, 0xB, 0x0, 0xA, 0x0, 0x7, 0x4, 0x42, 0xFC, 0xE8, 0x0, 0x0, 0xFF, 0xFF, 0xFD, 0x75, 0xFD, 0xFC, 0x5, 0x19, 0x5, 0xD8, 0x0, 0x26, 0x0, 0x2D, 0x0, 0x0, 0x0, 0x27, 0x4, 0x3B, 0x2, 0xB, 0x0, 0xA, 0x0, 0x7, 0x4, 0x40, 0xFD, 0x1A, 0x0, 0x0, 0xFF, 0xFF, 0xFD, 0x64, 0xFD, 0xFC, 0x5, 0x19, 0x5, 0xD8, 0x0, 0x26, 0x0, 0x2D, 0x0, 0x0, 0x0, 0x27, 0x4, 0x3B, 0x2, 0xB, 0x0, 0xA, 0x0, 0x7, 0x4, 0x43, 0xFC, 0xFC, 0x0, 0x0, 0xFF, 0xFF, 0xFD, 0xD2, 0xFD, 0xFC, 0x5, 0x19, 0x6, 0x9F, 0x0, 0x26, 0x0, 0x2D, 0x0, 0x0, 0x0, 0x27, 0x4, 0x3B, 0x2, 0xB, 0x0, 0xA, 0x0, 0x7, 0x4, 0x41, 0xFD, 0x63, 0x0, 0x0, 0xFF, 0xFF, 0xFD, 0xBF, 0xFD, 0xFC, 0x5, 0x19, 0x6, 0x9F, 0x0, 0x26, 0x0, 0x2D, 0x0, 0x0, 0x0, 0x27, 0x4, 0x3B, 0x2, 0xB, 0x0, 0xA, 0x0, 0x7, 0x4, 0x44, 0xFD, 0x50, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x66, 0xFD, 0xE8, 0x6, 0x2E, 0x6, 0x34, 0x0, 0x26, 0x2, 0x4D, 0x0, 0x0, 0x0, 0x27, 0x4, 0x3B, 0x2, 0x86, 0xFF, 0xF6, 0x0, 0x7, 0x4, 0x3A, 0x2, 0x8F, 0x0, 0x5C, 0xFF, 0xFF, 0x0, 0x66, 0xFD, 0xE8, 0x6, 0x2E, 0x6, 0x34, 0x0, 0x26, 0x2, 0x4D, 0x0, 0x0, 0x0, 0x27, 0x4, 0x3B, 0x2, 0x86, 0xFF, 0xF6, 0x0, 0x7, 0x4, 0x49, 0x2, 0x55, 0x0, 0x5C, 0xFF, 0xFF, 0x0, 0x66, 0xFD, 0xE8, 0x6, 0x2E, 0x6, 0x34, 0x0, 0x26, 0x2, 0x4D, 0x0, 0x0, 0x0, 0x27, 0x4, 0x3B, 0x2, 0x86, 0xFF, 0xF6, 0x0, 0x7, 0x4, 0x3F, 0x1, 0xB6, 0x0, 0x5C, 0xFF, 0xFF, 0x0, 0x66, 0xFD, 0xE8, 0x6, 0x2E, 0x6, 0x34, 0x0, 0x26, 0x2, 0x4D, 0x0, 0x0, 0x0, 0x27, 0x4, 0x3B, 0x2, 0x86, 0xFF, 0xF6, 0x0, 0x7, 0x4, 0x42, 0x1, 0x9D, 0x0, 0x5C, 0xFF, 0xFF, 0x0, 0x66, 0xFD, 0xE8, 0x6, 0x2E, 0x6, 0x34, 0x0, 0x26, 0x2, 0x4D, 0x0, 0x0, 0x0, 0x27, 0x4, 0x3B, 0x2, 0x86, 0xFF, 0xF6, 0x0, 0x7, 0x4, 0x40, 0x2, 0xA, 0x0, 0x5C, 0xFF, 0xFF, 0x0, 0x66, 0xFD, 0xE8, 0x6, 0x2E, 0x6, 0x34, 0x0, 0x26, 0x2, 0x4D, 0x0, 0x0, 0x0, 0x27, 0x4, 0x3B, 0x2, 0x86, 0xFF, 0xF6, 0x0, 0x7, 0x4, 0x43, 0x1, 0xD4, 0x0, 0x5C, 0xFF, 0xFF, 0x0, 0x66, 0xFD, 0xE8, 0x6, 0x2E, 0x6, 0xFB, 0x0, 0x26, 0x2, 0x4D, 0x0, 0x0, 0x0, 0x27, 0x4, 0x3B, 0x2, 0x86, 0xFF, 0xF6, 0x0, 0x7, 0x4, 0x41, 0x1, 0xDA, 0x0, 0x5C, 0xFF, 0xFF, 0x0, 0x66, 0xFD, 0xE8, 0x6, 0x2E, 0x6, 0xFB, 0x0, 0x26, 0x2, 0x4D, 0x0, 0x0, 0x0, 0x27, 0x4, 0x3B, 0x2, 0x86, 0xFF, 0xF6, 0x0, 0x7, 0x4, 0x44, 0x1, 0xB3, 0x0, 0x5C, 0xFF, 0xFF, 0xFF, 0x75, 0xFD, 0xFC, 0x4, 0xF1, 0x5, 0xD7, 0x0, 0x26, 0x2, 0x39, 0x14, 0x0, 0x0, 0x27, 0x4, 0x3B, 0x1, 0xF9, 0x0, 0xA, 0x0, 0x7, 0x4, 0x3A, 0xFF, 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7C, 0xFD, 0xFC, 0x4, 0xF1, 0x5, 0xD7, 0x0, 0x26, 0x2, 0x39, 0x14, 0x0, 0x0, 0x27, 0x4, 0x3B, 0x1, 0xF9, 0x0, 0xA, 0x0, 0x7, 0x4, 0x49, 0xFF, 0x13, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x22, 0xFD, 0xFC, 0x5, 0x23, 0x5, 0xD7, 0x0, 0x26, 0x2, 0x39, 0x46, 0x0, 0x0, 0x27, 0x4, 0x3B, 0x2, 0x2B, 0x0, 0xA, 0x0, 0x7, 0x4, 0x3F, 0xFD, 0xC7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x58, 0xFD, 0xFC, 0x5, 0x23, 0x5, 0xD7, 0x0, 0x26, 0x2, 0x39, 0x46, 0x0, 0x0, 0x27, 0x4, 0x3B, 0x2, 0x2B, 0x0, 0xA, 0x0, 0x7, 0x4, 0x42, 0xFD, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x7D, 0xFD, 0xFC, 0x5, 0x23, 0x5, 0xD7, 0x0, 0x26, 0x2, 0x39, 0x46, 0x0, 0x0, 0x27, 0x4, 0x3B, 0x2, 0x2B, 0x0, 0xA, 0x0, 0x7, 0x4, 0x40, 0xFE, 0x22, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x6C, 0xFD, 0xFC, 0x5, 0x23, 0x5, 0xD7, 0x0, 0x26, 0x2, 0x39, 0x46, 0x0, 0x0, 0x27, 0x4, 0x3B, 0x2, 0x2B, 0x0, 0xA, 0x0, 0x7, 0x4, 0x43, 0xFE, 0x4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xDA, 0xFD, 0xFC, 0x5, 0x23, 0x6, 0x9E, 0x0, 0x26, 0x2, 0x39, 0x46, 0x0, 0x0, 0x27, 0x4, 0x3B, 0x2, 0x2B, 0x0, 0xA, 0x0, 0x7, 0x4, 0x41, 0xFE, 0x6B, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xC7, 0xFD, 0xFC, 0x5, 0x23, 0x6, 0x9E, 0x0, 0x26, 0x2, 0x39, 0x46, 0x0, 0x0, 0x27, 0x4, 0x3B, 0x2, 0x2B, 0x0, 0xA, 0x0, 0x7, 0x4, 0x44, 0xFE, 0x58, 0xFF, 0xFF, 0xFF, 0xFF, 0x0, 0x56, 0xFF, 0xEB, 0x4, 0x7A, 0x5, 0xE7, 0x0, 0x26, 0x2, 0x3A, 0x0, 0x0, 0x0, 0x7, 0x1, 0x89, 0x0, 0xB7, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x56, 0xFF, 0xEB, 0x4, 0x7A, 0x5, 0xAD, 0x0, 0x26, 0x2, 0x3A, 0x0, 0x0, 0x0, 0x7, 0x0, 0x71, 0x0, 0x80, 0x0, 0x3, 0xFF, 0xFF, 0x0, 0x56, 0xFD, 0xE8, 0x4, 0x7A, 0x6, 0x2F, 0x0, 0x26, 0x2, 0x3A, 0x0, 0x0, 0x0, 0x27, 0x4, 0x3B, 0x1, 0x4E, 0xFF, 0xF6, 0x0, 0x7, 0x4, 0x47, 0x1, 0x15, 0x0, 0x6C, 0xFF, 0xFF, 0x0, 0x56, 0xFD, 0xE8, 0x4, 0x7A, 0x4, 0x4E, 0x0, 0x26, 0x2, 0x3A, 0x0, 0x0, 0x0, 0x7, 0x4, 0x3B, 0x1, 0x4E, 0xFF, 0xF6, 0xFF, 0xFF, 0x0, 0x56, 0xFD, 0xE8, 0x4, 0x7A, 0x6, 0x2F, 0x0, 0x26, 0x2, 0x3A, 0x0, 0x0, 0x0, 0x27, 0x4, 0x3B, 0x1, 0x4E, 0xFF, 0xF6, 0x0, 0x7, 0x4, 0x48, 0x1, 0xD7, 0x0, 0x6C, 0xFF, 0xFF, 0x0, 0x56, 0xFF, 0xEB, 0x4, 0x7A, 0x6, 0x61, 0x0, 0x26, 0x2, 0x3A, 0x0, 0x0, 0x0, 0x7, 0x4, 0x3D, 0x0, 0xE3, 0x0, 0x6C, 0xFF, 0xFF, 0x0, 0x56, 0xFD, 0xE8, 0x4, 0x7A, 0x6, 0x61, 0x0, 0x26, 0x2, 0x3A, 0x0, 0x0, 0x0, 0x27, 0x4, 0x3B, 0x1, 0x4E, 0xFF, 0xF6, 0x0, 0x7, 0x4, 0x3D, 0x0, 0xE3, 0x0, 0x6C, 0xFF, 0xFF, 0x0, 0x12, 0x0, 0x0, 0x5, 0x43, 0x7, 0x1D, 0x0, 0x26, 0x0, 0x26, 0x0, 0x0, 0x0, 0x7, 0x1, 0x89, 0x0, 0xF5, 0x1, 0x36, 0xFF, 0xFF, 0x0, 0x12, 0x0, 0x0, 0x5, 0x43, 0x6, 0xE3, 0x0, 0x26, 0x0, 0x26, 0x0, 0x0, 0x0, 0x7, 0x0, 0x71, 0x0, 0xBE, 0x1, 0x39, 0xFF, 0xFF, 0xFF, 0xD7, 0x0, 0x0, 0x5, 0x43, 0x5, 0xC2, 0x0, 0x26, 0x0, 0x26, 0x0, 0x0, 0x0, 0x7, 0x4, 0x47, 0xFF, 0x71, 0xFF, 0xFF, 0xFF, 0xFF, 0x0, 0x12, 0x0, 0x0, 0x5, 0x43, 0x5, 0xC2, 0x0, 0x26, 0x0, 0x26, 0x0, 0x0, 0x0, 0x6, 0x4, 0x48, 0xBC, 0xFF, 0xFF, 0xFF, 0x0, 0x12, 0xFD, 0xF5, 0x5, 0x43, 0x5, 0xB0, 0x0, 0x26, 0x0, 0x26, 0x0, 0x0, 0x0, 0x7, 0x4, 0x3B, 0x1, 0xF3, 0x0, 0x3, 0xFF, 0xFF, 0x0, 0x7F, 0xFD, 0xFC, 0x4, 0x6, 0x6, 0x2F, 0x0, 0x26, 0x2, 0x40, 0x0, 0x0, 0x0, 0x26, 0x4, 0x3B, 0x34, 0xA, 0x0, 0x7, 0x4, 0x47, 0x0, 0xE8, 0x0, 0x6C, 0xFF, 0xFF, 0x0, 0x7F, 0xFD, 0xFC, 0x4, 0x6, 0x4, 0x4E, 0x0, 0x26, 0x2, 0x40, 0x0, 0x0, 0x0, 0x6, 0x4, 0x3B, 0x34, 0xA, 0xFF, 0xFF, 0x0, 0x7F, 0xFD, 0xFC, 0x4, 0x6, 0x6, 0x2F, 0x0, 0x26, 0x2, 0x40, 0x0, 0x0, 0x0, 0x26, 0x4, 0x3B, 0x34, 0xA, 0x0, 0x7, 0x4, 0x48, 0x1, 0xAA, 0x0, 0x6C, 0xFF, 0xFF, 0x0, 0x7F, 0xFE, 0x61, 0x4, 0x6, 0x6, 0x61, 0x0, 0x26, 0x2, 0x40, 0x0, 0x0, 0x0, 0x7, 0x4, 0x3D, 0x0, 0xB6, 0x0, 0x6C, 0xFF, 0xFF, 0x0, 0x7F, 0xFD, 0xFC, 0x4, 0x6, 0x6, 0x61, 0x0, 0x26, 0x2, 0x40, 0x0, 0x0, 0x0, 0x26, 0x4, 0x3B, 0x34, 0xA, 0x0, 0x7, 0x4, 0x3D, 0x0, 0xB6, 0x0, 0x6C, 0xFF, 0xFF, 0xFE, 0x39, 0x0, 0x0, 0x4, 0x4D, 0x5, 0xC4, 0x0, 0x26, 0x0, 0x2A, 0x0, 0x0, 0x0, 0x7, 0x4, 0x47, 0xFD, 0xD3, 0x0, 0x1, 0xFF, 0xFF, 0xFE, 0x82, 0x0, 0x0, 0x4, 0x4D, 0x5, 0xC4, 0x0, 0x26, 0x0, 0x2A, 0x0, 0x0, 0x0, 0x7, 0x4, 0x48, 0xFE, 0x1E, 0x0, 0x1, 0xFF, 0xFF, 0xFE, 0x42, 0x0, 0x0, 0x5, 0x19, 0x5, 0xC3, 0x0, 0x26, 0x0, 0x2D, 0x0, 0x0, 0x0, 0x7, 0x4, 0x47, 0xFD, 0xDC, 0x0, 0x0, 0xFF, 0xFF, 0xFE, 0x8B, 0x0, 0x0, 0x5, 0x19, 0x5, 0xC3, 0x0, 0x26, 0x0, 0x2D, 0x0, 0x0, 0x0, 0x7, 0x4, 0x48, 0xFE, 0x27, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x95, 0xFD, 0xFC, 0x5, 0x19, 0x5, 0xB0, 0x0, 0x26, 0x0, 0x2D, 0x0, 0x0, 0x0, 0x7, 0x4, 0x3B, 0x2, 0xB, 0x0, 0xA, 0xFF, 0xFF, 0xFF, 0xEC, 0xFF, 0xF4, 0x2, 0x71, 0x5, 0xD2, 0x0, 0x26, 0x2, 0x42, 0x0, 0x0, 0x0, 0x7, 0x1, 0x89, 0xFF, 0x76, 0xFF, 0xEB, 0xFF, 0xFF, 0xFF, 0xDB, 0xFF, 0xF4, 0x2, 0x89, 0x5, 0x98, 0x0, 0x26, 0x2, 0x42, 0x0, 0x0, 0x0, 0x7, 0x0, 0x71, 0xFF, 0x3F, 0xFF, 0xEE, 0xFF, 0xFF, 0xFF, 0xC2, 0xFF, 0xF4, 0x2, 0x9B, 0x6, 0xBC, 0x0, 0x26, 0x2, 0x42, 0x0, 0x0, 0x0, 0x7, 0x4, 0x45, 0xFF, 0x53, 0x0, 0x57, 0xFF, 0xFF, 0xFF, 0xD0, 0xFF, 0xF4, 0x2, 0xA9, 0x6, 0xBC, 0x0, 0x26, 0x2, 0x42, 0x0, 0x0, 0x0, 0x7, 0x4, 0x46, 0xFF, 0x61, 0x0, 0x57, 0xFF, 0xFF, 0xFF, 0xED, 0xFF, 0xF4, 0x2, 0xCB, 0x6, 0x4C, 0x0, 0x26, 0x2, 0x42, 0x0, 0x0, 0x0, 0x6, 0x4, 0x3D, 0xA2, 0x57, 0xFF, 0xFF, 0xFF, 0xC6, 0xFF, 0xF4, 0x2, 0x9F, 0x7, 0x1E, 0x0, 0x26, 0x2, 0x42, 0x0, 0x0, 0x0, 0x7, 0x4, 0x3E, 0xFF, 0x57, 0x0, 0x57, 0xFF, 0xFF, 0xFF, 0xDF, 0x0, 0x0, 0x2, 0x64, 0x7, 0x25, 0x0, 0x26, 0x0, 0x2E, 0x0, 0x0, 0x0, 0x7, 0x1, 0x89, 0xFF, 0x69, 0x1, 0x3E, 0xFF, 0xFF, 0xFF, 0xCE, 0x0, 0x0, 0x2, 0x7C, 0x6, 0xEB, 0x0, 0x26, 0x0, 0x2E, 0x0, 0x0, 0x0, 0x7, 0x0, 0x71, 0xFF, 0x32, 0x1, 0x41, 0xFF, 0xFF, 0x0, 0x2D, 0x0, 0x0, 0x1, 0xA0, 0x7, 0x6D, 0x0, 0x26, 0x0, 0x2E, 0x0, 0x0, 0x0, 0x7, 0x4, 0x47, 0xFF, 0xC7, 0x1, 0xAA, 0xFF, 0xFF, 0x0, 0xA4, 0x0, 0x0, 0x2, 0x30, 0x7, 0x6D, 0x0, 0x26, 0x0, 0x2E, 0x0, 0x0, 0x0, 0x7, 0x4, 0x48, 0x0, 0x89, 0x1, 0xAA, 0xFF, 0xFF, 0x0, 0x80, 0xFF, 0xEB, 0x4, 0x8, 0x5, 0xD9, 0x0, 0x26, 0x2, 0x4A, 0x0, 0x0, 0x0, 0x6, 0x1, 0x89, 0x73, 0xF2, 0xFF, 0xFF, 0x0, 0x80, 0xFF, 0xEB, 0x4, 0x8, 0x5, 0x9F, 0x0, 0x26, 0x2, 0x4A, 0x0, 0x0, 0x0, 0x6, 0x0, 0x71, 0x3C, 0xF5, 0xFF, 0xFF, 0x0, 0x80, 0xFF, 0xEB, 0x4, 0x8, 0x6, 0xC3, 0x0, 0x26, 0x2, 0x4A, 0x0, 0x0, 0x0, 0x6, 0x4, 0x45, 0x50, 0x5E, 0xFF, 0xFF, 0x0, 0x80, 0xFF, 0xEB, 0x4, 0x8, 0x6, 0xC3, 0x0, 0x26, 0x2, 0x4A, 0x0, 0x0, 0x0, 0x6, 0x4, 0x46, 0x5E, 0x5E, 0xFF, 0xFF, 0x0, 0x81, 0xFE, 0x60, 0x4, 0x32, 0x6, 0x3A, 0x0, 0x26, 0x2, 0x46, 0x0, 0x0, 0x0, 0x7, 0x4, 0x3A, 0x1, 0x9C, 0x0, 0x62, 0xFF, 0xFF, 0x0, 0x81, 0xFE, 0x60, 0x4, 0x32, 0x6, 0x3A, 0x0, 0x26, 0x2, 0x46, 0x0, 0x0, 0x0, 0x7, 0x4, 0x49, 0x1, 0x62, 0x0, 0x62, 0xFF, 0xFF, 0x0, 0x80, 0xFF, 0xEB, 0x4, 0x8, 0x6, 0x53, 0x0, 0x26, 0x2, 0x4A, 0x0, 0x0, 0x0, 0x7, 0x4, 0x3D, 0x0, 0x9F, 0x0, 0x5E, 0xFF, 0xFF, 0x0, 0x80, 0xFF, 0xEB, 0x4, 0x8, 0x7, 0x25, 0x0, 0x26, 0x2, 0x4A, 0x0, 0x0, 0x0, 0x6, 0x4, 0x3E, 0x54, 0x5E, 0xFF, 0xFF, 0x0, 0x8, 0x0, 0x0, 0x4, 0xD6, 0x7, 0x1D, 0x0, 0x26, 0x0, 0x3E, 0x0, 0x0, 0x0, 0x7, 0x1, 0x89, 0x0, 0xBB, 0x1, 0x36, 0xFF, 0xFF, 0x0, 0x8, 0x0, 0x0, 0x4, 0xD6, 0x6, 0xE3, 0x0, 0x26, 0x0, 0x3E, 0x0, 0x0, 0x0, 0x7, 0x0, 0x71, 0x0, 0x84, 0x1, 0x39, 0xFF, 0xFF, 0xFE, 0x33, 0x0, 0x0, 0x4, 0xD6, 0x5, 0xC2, 0x0, 0x26, 0x0, 0x3E, 0x0, 0x0, 0x0, 0x7, 0x4, 0x47, 0xFD, 0xCD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x7C, 0x0, 0x0, 0x4, 0xD6, 0x5, 0xC2, 0x0, 0x26, 0x0, 0x3E, 0x0, 0x0, 0x0, 0x7, 0x4, 0x48, 0xFE, 0x18, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xD8, 0x0, 0x0, 0x4, 0xD4, 0x5, 0xD7, 0x0, 0x26, 0x0, 0x35, 0x0, 0x0, 0x0, 0x7, 0x4, 0x49, 0xFE, 0x6F, 0xFF, 0xFF, 0xFF, 0xFF, 0x0, 0x66, 0xFD, 0xE8, 0x6, 0x2E, 0x6, 0x1F, 0x0, 0x26, 0x2, 0x4D, 0x0, 0x0, 0x0, 0x27, 0x4, 0x3B, 0x2, 0x86, 0xFF, 0xF6, 0x0, 0x7, 0x4, 0x47, 0x1, 0xF0, 0x0, 0x5C, 0xFF, 0xFF, 0x0, 0x66, 0xFD, 0xE8, 0x6, 0x2E, 0x4, 0x3A, 0x0, 0x26, 0x2, 0x4D, 0x0, 0x0, 0x0, 0x7, 0x4, 0x3B, 0x2, 0x86, 0xFF, 0xF6, 0xFF, 0xFF, 0x0, 0x66, 0xFD, 0xE8, 0x6, 0x2E, 0x6, 0x1F, 0x0, 0x26, 0x2, 0x4D, 0x0, 0x0, 0x0, 0x27, 0x4, 0x3B, 0x2, 0x86, 0xFF, 0xF6, 0x0, 0x7, 0x4, 0x48, 0x2, 0xB2, 0x0, 0x5C, 0xFF, 0xFF, 0x0, 0x66, 0xFF, 0xEB, 0x6, 0x2E, 0x6, 0x51, 0x0, 0x26, 0x2, 0x4D, 0x0, 0x0, 0x0, 0x7, 0x4, 0x3D, 0x1, 0xBE, 0x0, 0x5C, 0xFF, 0xFF, 0x0, 0x66, 0xFD, 0xE8, 0x6, 0x2E, 0x6, 0x51, 0x0, 0x26, 0x2, 0x4D, 0x0, 0x0, 0x0, 0x27, 0x4, 0x3B, 0x2, 0x86, 0xFF, 0xF6, 0x0, 0x7, 0x4, 0x3D, 0x1, 0xBE, 0x0, 0x5C, 0xFF, 0xFF, 0xFF, 0xE, 0xFF, 0xEC, 0x5, 0x33, 0x5, 0xC4, 0x0, 0x26, 0x0, 0x34, 0x14, 0x0, 0x0, 0x7, 0x4, 0x47, 0xFE, 0xA8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x57, 0xFF, 0xEC, 0x5, 0x33, 0x5, 0xC4, 0x0, 0x26, 0x0, 0x34, 0x14, 0x0, 0x0, 0x7, 0x4, 0x48, 0xFE, 0xF3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x18, 0x0, 0x0, 0x4, 0xF1, 0x5, 0xC4, 0x0, 0x26, 0x2, 0x39, 0x14, 0x0, 0x0, 0x7, 0x4, 0x47, 0xFE, 0xB2, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x61, 0x0, 0x0, 0x4, 0xF1, 0x5, 0xC4, 0x0, 0x26, 0x2, 0x39, 0x14, 0x0, 0x0, 0x7, 0x4, 0x48, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0x0, 0x6B, 0xFD, 0xFC, 0x4, 0xDD, 0x5, 0xC4, 0x0, 0x26, 0x2, 0x39, 0x0, 0x0, 0x0, 0x7, 0x4, 0x3B, 0x1, 0xE5, 0x0, 0xA, 0xFF, 0xFF, 0x0, 0x3C, 0xFF, 0xF4, 0x7, 0x7D, 0x5, 0xC4, 0x0, 0x26, 0x0, 0x24, 0x0, 0x0, 0x0, 0x7, 0x0, 0x24, 0x3, 0xE5, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x3C, 0xFF, 0xF2, 0x5, 0x88, 0x5, 0xC4, 0x0, 0x26, 0x0, 0x24, 0x0, 0x0, 0x0, 0x7, 0x0, 0x6, 0x3, 0xE5, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x90, 0xFF, 0xF2, 0x5, 0xBD, 0x5, 0xC4, 0x0, 0x26, 0x0, 0x6, 0x0, 0x0, 0x0, 0x7, 0x0, 0x24, 0x2, 0x25, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x88, 0x2, 0x7, 0x2, 0x45, 0x3, 0xDB, 0x0, 0x6, 0x4, 0x6C, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x9, 0x0, 0x0, 0x4, 0x94, 0x5, 0x1D, 0x0, 0x26, 0x7, 0xB1, 0x0, 0x0, 0x0, 0x7, 0x2, 0x2D, 0xFF, 0x75, 0xFE, 0xDC, 0xFF, 0xFF, 0xFF, 0x66, 0x0, 0x0, 0x3, 0xF2, 0x5, 0x20, 0x0, 0x26, 0x7, 0xA6, 0x3C, 0x0, 0x0, 0x7, 0x2, 0x2D, 0xFE, 0x9F, 0xFE, 0xDF, 0xFF, 0xFF, 0xFF, 0x73, 0x0, 0x0, 0x4, 0xA4, 0x5, 0x1B, 0x0, 0x26, 0x7, 0x60, 0x3C, 0x0, 0x0, 0x7, 0x2, 0x2D, 0xFE, 0xAC, 0xFE, 0xDA, 0xFF, 0xFF, 0xFF, 0x75, 0x0, 0x0, 0x1, 0xB4, 0x5, 0x20, 0x0, 0x26, 0x7, 0x5F, 0x3C, 0x0, 0x0, 0x7, 0x2, 0x2D, 0xFE, 0xAE, 0xFE, 0xDF, 0xFF, 0xFF, 0xFF, 0x9E, 0xFF, 0xF0, 0x4, 0x79, 0x5, 0x1D, 0x0, 0x26, 0x7, 0x59, 0xA, 0x0, 0x0, 0x7, 0x2, 0x2D, 0xFE, 0xD7, 0xFE, 0xDC, 0xFF, 0xFF, 0xFF, 0x24, 0x0, 0x0, 0x4, 0x73, 0x5, 0x1D, 0x0, 0x26, 0x7, 0x4F, 0x3C, 0x0, 0x0, 0x7, 0x2, 0x2D, 0xFE, 0x5D, 0xFE, 0xDC, 0xFF, 0xFF, 0xFF, 0xAE, 0x0, 0x0, 0x4, 0x8E, 0x5, 0x1D, 0x0, 0x26, 0x7, 0x6F, 0xA, 0x0, 0x0, 0x7, 0x2, 0x2D, 0xFE, 0xE7, 0xFE, 0xDC, 0xFF, 0xFF, 0x0, 0x9, 0x0, 0x0, 0x4, 0x94, 0x4, 0x8D, 0x0, 0x6, 0x7, 0xB1, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x76, 0x0, 0x0, 0x4, 0xA, 0x4, 0x8D, 0x0, 0x6, 0x7, 0xB0, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x76, 0x0, 0x0, 0x3, 0xB6, 0x4, 0x8D, 0x0, 0x6, 0x7, 0xA6, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x41, 0x0, 0x0, 0x3, 0xF3, 0x4, 0x8D, 0x0, 0x6, 0x7, 0x4E, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x76, 0x0, 0x0, 0x4, 0x68, 0x4, 0x8D, 0x0, 0x6, 0x7, 0x60, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x85, 0x0, 0x0, 0x1, 0x78, 0x4, 0x8D, 0x0, 0x6, 0x7, 0x5F, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x76, 0x0, 0x0, 0x4, 0x69, 0x4, 0x8D, 0x0, 0x6, 0x7, 0x5D, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x76, 0x0, 0x0, 0x5, 0x90, 0x4, 0x8D, 0x0, 0x6, 0x7, 0x5B, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x76, 0x0, 0x0, 0x4, 0x67, 0x4, 0x8D, 0x0, 0x6, 0x7, 0x5A, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x50, 0xFF, 0xF0, 0x4, 0x6F, 0x4, 0x9D, 0x0, 0x6, 0x7, 0x59, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x76, 0x0, 0x0, 0x4, 0x2C, 0x4, 0x8D, 0x0, 0x6, 0x7, 0x58, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x25, 0x0, 0x0, 0x4, 0x16, 0x4, 0x8D, 0x0, 0x6, 0x7, 0x54, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x5, 0x0, 0x0, 0x4, 0x37, 0x4, 0x8D, 0x0, 0x6, 0x7, 0x4F, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x16, 0x0, 0x0, 0x4, 0x4A, 0x4, 0x8D, 0x0, 0x6, 0x7, 0x50, 0x0, 0x0, 0xFF, 0xFF, 0xFF, 0x9E, 0x0, 0x0, 0x2, 0x64, 0x5, 0xEB, 0x0, 0x26, 0x7, 0x5F, 0x0, 0x0, 0x0, 0x7, 0x0, 0x6B, 0xFF, 0x40, 0x0, 0x1E, 0xFF, 0xFF, 0x0, 0x5, 0x0, 0x0, 0x4, 0x37, 0x5, 0xEB, 0x0, 0x26, 0x7, 0x4F, 0x0, 0x0, 0x0, 0x6, 0x0, 0x6B, 0x5A, 0x1E, 0xFF, 0xFF, 0x0, 0x76, 0x0, 0x0, 0x3, 0xB6, 0x5, 0xEB, 0x0, 0x26, 0x7, 0xA6, 0x0, 0x0, 0x0, 0x6, 0x0, 0x6B, 0x62, 0x1E, 0xFF, 0xFF, 0x0, 0x76, 0x0, 0x0, 0x3, 0x97, 0x6, 0x1E, 0x0, 0x26, 0x7, 0x66, 0x0, 0x0, 0x0, 0x7, 0x0, 0x76, 0x1, 0x23, 0x0, 0x1E, 0xFF, 0xFF, 0x0, 0x3F, 0xFF, 0xF0, 0x3, 0xEF, 0x4, 0x9D, 0x0, 0x6, 0x7, 0x55, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x85, 0x0, 0x0, 0x1, 0x78, 0x4, 0x8D, 0x0, 0x6, 0x7, 0x5F, 0x0, 0x0, 0xFF, 0xFF, 0xFF, 0x9E, 0x0, 0x0, 0x2, 0x64, 0x5, 0xEB, 0x0, 0x26, 0x7, 0x5F, 0x0, 0x0, 0x0, 0x7, 0x0, 0x6B, 0xFF, 0x40, 0x0, 0x1E, 0xFF, 0xFF, 0x0, 0x25, 0xFF, 0xF0, 0x3, 0x65, 0x4, 0x8D, 0x0, 0x6, 0x7, 0x5E, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x76, 0x0, 0x0, 0x4, 0x69, 0x6, 0x1E, 0x0, 0x26, 0x7, 0x5D, 0x0, 0x0, 0x0, 0x7, 0x0, 0x76, 0x1, 0x16, 0x0, 0x1E, 0xFF, 0xFF, 0x0, 0x20, 0xFF, 0xEC, 0x4, 0x3A, 0x6, 0x5, 0x0, 0x26, 0x7, 0x7D, 0x0, 0x0, 0x0, 0x6, 0x1, 0x89, 0x79, 0x1E, 0xFF, 0xFF, 0x0, 0x9, 0x0, 0x0, 0x4, 0x94, 0x4, 0x8D, 0x0, 0x6, 0x7, 0xB1, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x76, 0x0, 0x0, 0x4, 0xA, 0x4, 0x8D, 0x0, 0x6, 0x7, 0xB0, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x76, 0x0, 0x0, 0x3, 0x97, 0x4, 0x8D, 0x0, 0x6, 0x7, 0x66, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x76, 0x0, 0x0, 0x3, 0xB6, 0x4, 0x8D, 0x0, 0x6, 0x7, 0xA6, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x76, 0x0, 0x0, 0x4, 0x6E, 0x6, 0x5, 0x0, 0x26, 0x7, 0x7A, 0x0, 0x0, 0x0, 0x7, 0x1, 0x89, 0x0, 0xB9, 0x0, 0x1E, 0xFF, 0xFF, 0x0, 0x76, 0x0, 0x0, 0x5, 0x90, 0x4, 0x8D, 0x0, 0x6, 0x7, 0x5B, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x76, 0x0, 0x0, 0x4, 0x68, 0x4, 0x8D, 0x0, 0x6, 0x7, 0x60, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x50, 0xFF, 0xF0, 0x4, 0x6F, 0x4, 0x9D, 0x0, 0x6, 0x7, 0x59, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x76, 0x0, 0x0, 0x4, 0x62, 0x4, 0x8D, 0x0, 0x6, 0x7, 0x6B, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x76, 0x0, 0x0, 0x4, 0x2C, 0x4, 0x8D, 0x0, 0x6, 0x7, 0x58, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x50, 0xFF, 0xF0, 0x4, 0x44, 0x4, 0x9D, 0x0, 0x6, 0x7, 0xAF, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x25, 0x0, 0x0, 0x4, 0x16, 0x4, 0x8D, 0x0, 0x6, 0x7, 0x54, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x16, 0x0, 0x0, 0x4, 0x4A, 0x4, 0x8D, 0x0, 0x6, 0x7, 0x50, 0x0, 0x0, 0x0, 0x1, 0x0, 0x43, 0xFE, 0x37, 0x3, 0xE8, 0x4, 0x9D, 0x0, 0x29, 0x0, 0x0, 0x1, 0x23, 0x11, 0x26, 0x26, 0x35, 0x33, 0x16, 0x16, 0x33, 0x32, 0x36, 0x35, 0x34, 0x27, 0x23, 0x35, 0x33, 0x36, 0x35, 0x34, 0x26, 0x23, 0x22, 0x6, 0x15, 0x23, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x6, 0x7, 0x16, 0x16, 0x15, 0x14, 0x6, 0x7, 0x2, 0x81, 0xF3, 0x81, 0xCA, 0xF3, 0x5, 0x7A, 0x56, 0x77, 0x73, 0xE0, 0x94, 0x9D, 0xC5, 0x65, 0x76, 0x4F, 0x72, 0xF3, 0xFB, 0xBA, 0xCD, 0xFF, 0x6E, 0x5C, 0x6F, 0x6E, 0xC9, 0x9E, 0xFE, 0x37, 0x1, 0xC3, 0x16, 0x9B, 0x9C, 0x50, 0x43, 0x57, 0x47, 0xA7, 0x3, 0xB0, 0x5, 0x93, 0x3E, 0x56, 0x3E, 0x43, 0x9B, 0xAB, 0x9F, 0x9E, 0x59, 0x8C, 0x26, 0x25, 0x90, 0x5C, 0x90, 0xA6, 0x16, 0x0, 0x1, 0x0, 0x76, 0xFE, 0x99, 0x5, 0x2D, 0x4, 0x8D, 0x0, 0xF, 0x0, 0x0, 0x1, 0x23, 0x11, 0x23, 0x11, 0x21, 0x11, 0x23, 0x11, 0x33, 0x11, 0x21, 0x11, 0x33, 0x11, 0x33, 0x5, 0x2D, 0xF3, 0xC4, 0xFD, 0xF3, 0xF3, 0xF3, 0x2, 0xD, 0xF2, 0xC5, 0xFE, 0x99, 0x1, 0x67, 0x1, 0xDB, 0xFE, 0x25, 0x4, 0x8D, 0xFE, 0x12, 0x1, 0xEE, 0xFC, 0x28, 0x0, 0x1, 0x0, 0x50, 0xFE, 0x40, 0x4, 0x44, 0x4, 0x9D, 0x0, 0x1D, 0x0, 0x0, 0x1, 0x6, 0x6, 0x7, 0x11, 0x23, 0x11, 0x26, 0x2, 0x35, 0x35, 0x10, 0x0, 0x33, 0x32, 0x16, 0x17, 0x23, 0x26, 0x26, 0x23, 0x20, 0x3, 0x15, 0x14, 0x16, 0x33, 0x32, 0x36, 0x37, 0x4, 0x43, 0xD, 0xC0, 0xAF, 0xF3, 0xB6, 0xCE, 0x1, 0x19, 0xEC, 0xE8, 0xF4, 0x13, 0xF3, 0xA, 0x6F, 0x83, 0xFE, 0xF4, 0x7, 0x7F, 0x8F, 0x80, 0x75, 0xB, 0x1, 0x85, 0x99, 0xD6, 0x1D, 0xFE, 0x47, 0x1, 0xBC, 0x25, 0x1, 0x20, 0xDF, 0x4C, 0x1, 0x3, 0x1, 0x2E, 0xE9, 0xB3, 0x61, 0x78, 0xFE, 0xA5, 0x5F, 0xAE, 0xBF, 0x6A, 0x68, 0xFF, 0xFF, 0x0, 0x5, 0x0, 0x0, 0x4, 0x37, 0x4, 0x8D, 0x0, 0x6, 0x7, 0x4F, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0xB, 0xFE, 0x37, 0x5, 0xA8, 0x4, 0xA4, 0x0, 0x26, 0x7, 0x93, 0x0, 0x0, 0x0, 0x7, 0x7, 0xDB, 0x2, 0xE5, 0xFF, 0x9E, 0xFF, 0xFF, 0x0, 0x76, 0x0, 0x0, 0x4, 0x6E, 0x5, 0xCB, 0x0, 0x26, 0x7, 0x7A, 0x0, 0x0, 0x0, 0x7, 0x0, 0x71, 0x0, 0x82, 0x0, 0x21, 0xFF, 0xFF, 0x0, 0x20, 0xFF, 0xEC, 0x4, 0x3A, 0x5, 0xCB, 0x0, 0x26, 0x7, 0x7D, 0x0, 0x0, 0x0, 0x6, 0x0, 0x71, 0x42, 0x21, 0xFF, 0xFF, 0x0, 0x51, 0x0, 0x0, 0x5, 0x4D, 0x4, 0x8D, 0x0, 0x6, 0x7, 0x6D, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x25, 0xFF, 0xF0, 0x3, 0x65, 0x4, 0x8D, 0x0, 0x6, 0x7, 0x5E, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x85, 0xFF, 0xF0, 0x5, 0x62, 0x4, 0x8D, 0x0, 0x26, 0x7, 0x5F, 0x0, 0x0, 0x0, 0x7, 0x7, 0x5E, 0x1, 0xFD, 0x0, 0x0, 0xFF, 0xFF, 0xFF, 0xF0, 0x0, 0x0, 0x6, 0x4, 0x6, 0x0, 0x0, 0x26, 0x8, 0xB4, 0x0, 0x0, 0x0, 0x7, 0x0, 0x76, 0x2, 0x82, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x50, 0xFF, 0xC8, 0x4, 0x6F, 0x6, 0x1E, 0x0, 0x26, 0x8, 0xB6, 0x0, 0x0, 0x0, 0x7, 0x0, 0x76, 0x1, 0x73, 0x0, 0x1E, 0xFF, 0xFF, 0x0, 0x3F, 0xFD, 0xF7, 0x3, 0xEF, 0x4, 0x9D, 0x0, 0x26, 0x7, 0x55, 0x0, 0x0, 0x0, 0x7, 0x7, 0x25, 0x1, 0x3C, 0xFE, 0x91, 0xFF, 0xFF, 0x0, 0x29, 0x0, 0x0, 0x5, 0xE6, 0x6, 0x1E, 0x0, 0x26, 0x7, 0x51, 0x0, 0x0, 0x0, 0x7, 0x0, 0x45, 0x1, 0x78, 0x0, 0x1E, 0xFF, 0xFF, 0x0, 0x29, 0x0, 0x0, 0x5, 0xE6, 0x6, 0x1E, 0x0, 0x26, 0x7, 0x51, 0x0, 0x0, 0x0, 0x7, 0x0, 0x76, 0x2, 0x17, 0x0, 0x1E, 0xFF, 0xFF, 0x0, 0x29, 0x0, 0x0, 0x5, 0xE6, 0x5, 0xEB, 0x0, 0x26, 0x7, 0x51, 0x0, 0x0, 0x0, 0x7, 0x0, 0x6B, 0x1, 0x44, 0x0, 0x1E, 0xFF, 0xFF, 0x0, 0x5, 0x0, 0x0, 0x4, 0x37, 0x6, 0x1E, 0x0, 0x26, 0x7, 0x4F, 0x0, 0x0, 0x0, 0x7, 0x0, 0x45, 0x0, 0x8E, 0x0, 0x1E, 0xFF, 0xFF, 0x0, 0x12, 0xFE, 0x55, 0x5, 0x43, 0x5, 0xB0, 0x0, 0x26, 0x0, 0x26, 0x0, 0x0, 0x0, 0x7, 0x1, 0x8C, 0x1, 0x82, 0x0, 0x3, 0xFF, 0xFF, 0x0, 0x5B, 0xFE, 0x5A, 0x3, 0xFC, 0x4, 0x4E, 0x0, 0x26, 0x0, 0x46, 0x0, 0x0, 0x0, 0x7, 0x1, 0x8C, 0x0, 0xB4, 0x0, 0x8, 0xFF, 0xFF, 0x0, 0x95, 0xFE, 0x5C, 0x4, 0x4D, 0x5, 0xB0, 0x0, 0x26, 0x0, 0x2A, 0x0, 0x0, 0x0, 0x7, 0x1, 0x8C, 0x1, 0x3F, 0x0, 0xA, 0xFF, 0xFF, 0x0, 0x54, 0xFE, 0x52, 0x4, 0xC, 0x4, 0x4E, 0x0, 0x26, 0x0, 0x4A, 0x0, 0x0, 0x0, 0x7, 0x1, 0x8C, 0x1, 0x4, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x66, 0xFE, 0x52, 0x5, 0x1F, 0x5, 0xC4, 0x0, 0x26, 0x0, 0x34, 0x0, 0x0, 0x0, 0x7, 0x1, 0x8C, 0x1, 0x92, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x50, 0xFE, 0x4E, 0x4, 0x3E, 0x4, 0x4E, 0x0, 0x26, 0x0, 0x54, 0x0, 0x0, 0x0, 0x7, 0x1, 0x8C, 0x1, 0x12, 0xFF, 0xFC, 0xFF, 0xFF, 0x0, 0x9, 0xFE, 0x52, 0x4, 0x94, 0x4, 0x8D, 0x0, 0x26, 0x7, 0xB1, 0x0, 0x0, 0x0, 0x7, 0x1, 0x8C, 0x1, 0x23, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x76, 0xFE, 0x5A, 0x3, 0xB6, 0x4, 0x8D, 0x0, 0x26, 0x7, 0xA6, 0x0, 0x0, 0x0, 0x7, 0x1, 0x8C, 0x0, 0xED, 0x0, 0x8, 0xFF, 0xFF, 0x0, 0x50, 0xFE, 0x52, 0x4, 0x6F, 0x4, 0x9D, 0x0, 0x26, 0x7, 0x59, 0x0, 0x0, 0x0, 0x7, 0x1, 0x8C, 0x1, 0x39, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x66, 0xFF, 0xEC, 0x5, 0xD, 0x7, 0x54, 0x0, 0x26, 0x7, 0xE0, 0x0, 0x0, 0x0, 0x7, 0x0, 0x45, 0x1, 0x35, 0x1, 0x54, 0xFF, 0xFF, 0x0, 0x66, 0xFF, 0xEC, 0x5, 0xD, 0x7, 0x54, 0x0, 0x26, 0x7, 0xE0, 0x0, 0x0, 0x0, 0x7, 0x0, 0x76, 0x1, 0xD4, 0x1, 0x54, 0xFF, 0xFF, 0x0, 0x66, 0xFF, 0xEC, 0x5, 0xD, 0x7, 0x55, 0x0, 0x26, 0x7, 0xE0, 0x0, 0x0, 0x0, 0x7, 0x1, 0x77, 0x0, 0xD5, 0x1, 0x54, 0xFF, 0xFF, 0x0, 0x66, 0xFF, 0xEC, 0x5, 0xD, 0x7, 0x49, 0x0, 0x26, 0x7, 0xE0, 0x0, 0x0, 0x0, 0x7, 0x1, 0x8D, 0x0, 0xD7, 0x1, 0x54, 0xFF, 0xFF, 0x0, 0x66, 0xFF, 0xEC, 0x5, 0xD, 0x7, 0x21, 0x0, 0x26, 0x7, 0xE0, 0x0, 0x0, 0x0, 0x7, 0x0, 0x6B, 0x1, 0x1, 0x1, 0x54, 0xFF, 0xFF, 0x0, 0x66, 0xFF, 0xEC, 0x5, 0xD, 0x7, 0xB2, 0x0, 0x26, 0x7, 0xE0, 0x0, 0x0, 0x0, 0x7, 0x1, 0x8B, 0x1, 0x6A, 0x1, 0x88, 0xFF, 0xFF, 0x0, 0x66, 0xFF, 0xEC, 0x5, 0xD, 0x7, 0x1, 0x0, 0x26, 0x7, 0xE0, 0x0, 0x0, 0x0, 0x7, 0x0, 0x71, 0x0, 0xD1, 0x1, 0x57, 0xFF, 0xFF, 0x0, 0x66, 0xFF, 0xEC, 0x5, 0xD, 0x7, 0x3B, 0x0, 0x26, 0x7, 0xE0, 0x0, 0x0, 0x0, 0x7, 0x1, 0x89, 0x1, 0x8, 0x1, 0x54, 0xFF, 0xFF, 0x0, 0x66, 0xFE, 0x52, 0x5, 0xD, 0x5, 0xC4, 0x0, 0x26, 0x7, 0xE0, 0x0, 0x0, 0x0, 0x7, 0x1, 0x8C, 0x3, 0x17, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x66, 0xFF, 0xEC, 0x5, 0xD, 0x7, 0xCF, 0x0, 0x26, 0x7, 0xE0, 0x0, 0x0, 0x0, 0x7, 0x7, 0xA5, 0x1, 0x70, 0x1, 0x39, 0xFF, 0xFF, 0x0, 0x65, 0xFF, 0xEA, 0x5, 0x30, 0x7, 0x5C, 0x0, 0x26, 0x7, 0xE1, 0x0, 0x0, 0x0, 0x7, 0x0, 0x45, 0x1, 0x4E, 0x1, 0x5C, 0xFF, 0xFF, 0x0, 0x65, 0xFF, 0xEA, 0x5, 0x30, 0x7, 0x5C, 0x0, 0x26, 0x7, 0xE1, 0x0, 0x0, 0x0, 0x7, 0x0, 0x76, 0x1, 0xED, 0x1, 0x5C, 0xFF, 0xFF, 0x0, 0x65, 0xFF, 0xEA, 0x5, 0x30, 0x7, 0x5D, 0x0, 0x26, 0x7, 0xE1, 0x0, 0x0, 0x0, 0x7, 0x1, 0x77, 0x0, 0xEE, 0x1, 0x5C, 0xFF, 0xFF, 0x0, 0x65, 0xFF, 0xEA, 0x5, 0x30, 0x7, 0x29, 0x0, 0x26, 0x7, 0xE1, 0x0, 0x0, 0x0, 0x7, 0x0, 0x6B, 0x1, 0x1A, 0x1, 0x5C, 0xFF, 0xFF, 0x0, 0x65, 0xFF, 0xEA, 0x5, 0x30, 0x7, 0x9, 0x0, 0x26, 0x7, 0xE1, 0x0, 0x0, 0x0, 0x7, 0x0, 0x71, 0x0, 0xEA, 0x1, 0x5F, 0xFF, 0xFF, 0x0, 0x65, 0xFF, 0xEA, 0x5, 0x30, 0x7, 0x43, 0x0, 0x26, 0x7, 0xE1, 0x0, 0x0, 0x0, 0x7, 0x1, 0x89, 0x1, 0x21, 0x1, 0x5C, 0xFF, 0xFF, 0x0, 0x65, 0xFF, 0xEA, 0x5, 0x30, 0x7, 0x39, 0x0, 0x26, 0x7, 0xE1, 0x0, 0x0, 0x0, 0x7, 0x1, 0x8A, 0x1, 0xD4, 0x1, 0x64, 0xFF, 0xFF, 0x0, 0x65, 0xFE, 0x52, 0x5, 0x30, 0x5, 0xC4, 0x0, 0x26, 0x7, 0xE1, 0x0, 0x0, 0x0, 0x7, 0x1, 0x8C, 0x2, 0x6, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x65, 0xFF, 0xEA, 0x5, 0x30, 0x7, 0x5E, 0x0, 0x26, 0x7, 0xE1, 0x0, 0x0, 0x0, 0x7, 0x1, 0x78, 0x1, 0x6, 0x1, 0x5C, 0xFF, 0xFF, 0x0, 0x95, 0x0, 0x0, 0x5, 0x19, 0x7, 0x49, 0x0, 0x26, 0x7, 0xDE, 0x0, 0x0, 0x0, 0x7, 0x1, 0x8D, 0x0, 0xF5, 0x1, 0x54, 0xFF, 0xFF, 0x0, 0x95, 0x0, 0x0, 0x5, 0x19, 0x7, 0x54, 0x0, 0x26, 0x7, 0xDE, 0x0, 0x0, 0x0, 0x7, 0x0, 0x76, 0x1, 0xF2, 0x1, 0x54, 0xFF, 0xFF, 0x0, 0x95, 0xFD, 0xFE, 0x5, 0x19, 0x5, 0xC4, 0x0, 0x26, 0x7, 0xDE, 0x0, 0x0, 0x0, 0x7, 0x7, 0x25, 0x1, 0xE5, 0xFE, 0x98, 0xFF, 0xFF, 0x0, 0x95, 0x0, 0x0, 0x5, 0x19, 0x7, 0x56, 0x0, 0x26, 0x7, 0xDE, 0x0, 0x0, 0x0, 0x7, 0x1, 0x78, 0x1, 0xB, 0x1, 0x54, 0xFF, 0xFF, 0x0, 0x95, 0xFF, 0xEC, 0x5, 0x19, 0x7, 0x54, 0x0, 0x26, 0x7, 0xDF, 0x0, 0x0, 0x0, 0x7, 0x0, 0x45, 0x1, 0x4A, 0x1, 0x54, 0xFF, 0xFF, 0x0, 0x95, 0xFF, 0xEC, 0x5, 0x19, 0x7, 0x54, 0x0, 0x26, 0x7, 0xDF, 0x0, 0x0, 0x0, 0x7, 0x0, 0x76, 0x1, 0xE9, 0x1, 0x54, 0xFF, 0xFF, 0x0, 0x95, 0xFF, 0xEC, 0x5, 0x19, 0x7, 0x21, 0x0, 0x26, 0x7, 0xDF, 0x0, 0x0, 0x0, 0x7, 0x0, 0x6B, 0x1, 0x16, 0x1, 0x54, 0xFF, 0xFF, 0x0, 0x95, 0xFF, 0xEC, 0x5, 0x19, 0x7, 0x49, 0x0, 0x26, 0x7, 0xDF, 0x0, 0x0, 0x0, 0x7, 0x1, 0x8D, 0x0, 0xEC, 0x1, 0x54, 0xFF, 0xFF, 0x0, 0x95, 0xFF, 0xEC, 0x5, 0x19, 0x7, 0x1, 0x0, 0x26, 0x7, 0xDF, 0x0, 0x0, 0x0, 0x7, 0x0, 0x71, 0x0, 0xE6, 0x1, 0x57, 0xFF, 0xFF, 0x0, 0x95, 0xFF, 0xEC, 0x5, 0x19, 0x7, 0x3B, 0x0, 0x26, 0x7, 0xDF, 0x0, 0x0, 0x0, 0x7, 0x1, 0x89, 0x1, 0x1D, 0x1, 0x54, 0xFF, 0xFF, 0x0, 0x95, 0xFF, 0xEC, 0x5, 0x19, 0x7, 0xB2, 0x0, 0x26, 0x7, 0xDF, 0x0, 0x0, 0x0, 0x7, 0x1, 0x8B, 0x1, 0x7F, 0x1, 0x88, 0xFF, 0xFF, 0x0, 0x95, 0xFF, 0xEC, 0x5, 0x19, 0x7, 0x53, 0x0, 0x26, 0x7, 0xDF, 0x0, 0x0, 0x0, 0x7, 0x1, 0x8E, 0x1, 0x74, 0x1, 0x54, 0xFF, 0xFF, 0x0, 0x95, 0xFE, 0x52, 0x5, 0x19, 0x5, 0xB0, 0x0, 0x26, 0x7, 0xDF, 0x0, 0x0, 0x0, 0x7, 0x1, 0x8C, 0x3, 0x35, 0x0, 0x0, 0xFF, 0xFF, 0xFF, 0x91, 0xFE, 0x83, 0x2, 0x6F, 0x4, 0x3A, 0x0, 0x26, 0x0, 0x8E, 0x0, 0x0, 0x0, 0x7, 0x1, 0xE1, 0x3, 0x4E, 0x0, 0xA, 0xFF, 0xFF, 0x0, 0x79, 0xFE, 0x9D, 0x1, 0x8D, 0x4, 0x3A, 0x0, 0x26, 0x0, 0x8E, 0x0, 0x0, 0x0, 0x7, 0x1, 0xD4, 0x3, 0x5E, 0x0, 0xA, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10, 0x0, 0xC6, 0x0, 0x3, 0x0, 0x1, 0x4, 0x9, 0x0, 0x0, 0x0, 0x5E, 0x0, 0x0, 0x0, 0x3, 0x0, 0x1, 0x4, 0x9, 0x0, 0x1, 0x0, 0x1A, 0x0, 0x5E, 0x0, 0x3, 0x0, 0x1, 0x4, 0x9, 0x0, 0x2, 0x0, 0xE, 0x0, 0x78, 0x0, 0x3, 0x0, 0x1, 0x4, 0x9, 0x0, 0x3, 0x0, 0x32, 0x0, 0x86, 0x0, 0x3, 0x0, 0x1, 0x4, 0x9, 0x0, 0x4, 0x0, 0x1A, 0x0, 0x5E, 0x0, 0x3, 0x0, 0x1, 0x4, 0x9, 0x0, 0x5, 0x0, 0x26, 0x0, 0xB8, 0x0, 0x3, 0x0, 0x1, 0x4, 0x9, 0x0, 0x6, 0x0, 0x1A, 0x0, 0xDE, 0x0, 0x3, 0x0, 0x1, 0x4, 0x9, 0x0, 0x7, 0x0, 0x40, 0x0, 0xF8, 0x0, 0x3, 0x0, 0x1, 0x4, 0x9, 0x0, 0x8, 0x0, 0xC, 0x1, 0x38, 0x0, 0x3, 0x0, 0x1, 0x4, 0x9, 0x0, 0x9, 0x0, 0x26, 0x1, 0x44, 0x0, 0x3, 0x0, 0x1, 0x4, 0x9, 0x0, 0xB, 0x0, 0x14, 0x1, 0x6A, 0x0, 0x3, 0x0, 0x1, 0x4, 0x9, 0x0, 0xC, 0x0, 0x14, 0x1, 0x6A, 0x0, 0x3, 0x0, 0x1, 0x4, 0x9, 0x0, 0xD, 0x0, 0x5C, 0x1, 0x7E, 0x0, 0x3, 0x0, 0x1, 0x4, 0x9, 0x0, 0xE, 0x0, 0x54, 0x1, 0xDA, 0x0, 0x3, 0x0, 0x1, 0x4, 0x9, 0x0, 0x10, 0x0, 0xC, 0x2, 0x2E, 0x0, 0x3, 0x0, 0x1, 0x4, 0x9, 0x0, 0x11, 0x0, 0xC, 0x2, 0x3A, 0x0, 0x43, 0x0, 0x6F, 0x0, 0x70, 0x0, 0x79, 0x0, 0x72, 0x0, 0x69, 0x0, 0x67, 0x0, 0x68, 0x0, 0x74, 0x0, 0x20, 0x0, 0x32, 0x0, 0x30, 0x0, 0x31, 0x0, 0x31, 0x0, 0x20, 0x0, 0x47, 0x0, 0x6F, 0x0, 0x6F, 0x0, 0x67, 0x0, 0x6C, 0x0, 0x65, 0x0, 0x20, 0x0, 0x49, 0x0, 0x6E, 0x0, 0x63, 0x0, 0x2E, 0x0, 0x20, 0x0, 0x41, 0x0, 0x6C, 0x0, 0x6C, 0x0, 0x20, 0x0, 0x52, 0x0, 0x69, 0x0, 0x67, 0x0, 0x68, 0x0, 0x74, 0x0, 0x73, 0x0, 0x20, 0x0, 0x52, 0x0, 0x65, 0x0, 0x73, 0x0, 0x65, 0x0, 0x72, 0x0, 0x76, 0x0, 0x65, 0x0, 0x64, 0x0, 0x2E, 0x0, 0x52, 0x0, 0x6F, 0x0, 0x62, 0x0, 0x6F, 0x0, 0x74, 0x0, 0x6F, 0x0, 0x20, 0x0, 0x4D, 0x0, 0x65, 0x0, 0x64, 0x0, 0x69, 0x0, 0x75, 0x0, 0x6D, 0x0, 0x52, 0x0, 0x65, 0x0, 0x67, 0x0, 0x75, 0x0, 0x6C, 0x0, 0x61, 0x0, 0x72, 0x0, 0x47, 0x0, 0x6F, 0x0, 0x6F, 0x0, 0x67, 0x0, 0x6C, 0x0, 0x65, 0x0, 0x3A, 0x0, 0x52, 0x0, 0x6F, 0x0, 0x62, 0x0, 0x6F, 0x0, 0x74, 0x0, 0x6F, 0x0, 0x20, 0x0, 0x4D, 0x0, 0x65, 0x0, 0x64, 0x0, 0x69, 0x0, 0x75, 0x0, 0x6D, 0x0, 0x3A, 0x0, 0x32, 0x0, 0x30, 0x0, 0x31, 0x0, 0x36, 0x0, 0x56, 0x0, 0x65, 0x0, 0x72, 0x0, 0x73, 0x0, 0x69, 0x0, 0x6F, 0x0, 0x6E, 0x0, 0x20, 0x0, 0x32, 0x0, 0x2E, 0x0, 0x31, 0x0, 0x33, 0x0, 0x34, 0x0, 0x3B, 0x0, 0x20, 0x0, 0x32, 0x0, 0x30, 0x0, 0x31, 0x0, 0x36, 0x0, 0x52, 0x0, 0x6F, 0x0, 0x62, 0x0, 0x6F, 0x0, 0x74, 0x0, 0x6F, 0x0, 0x2D, 0x0, 0x4D, 0x0, 0x65, 0x0, 0x64, 0x0, 0x69, 0x0, 0x75, 0x0, 0x6D, 0x0, 0x52, 0x0, 0x6F, 0x0, 0x62, 0x0, 0x6F, 0x0, 0x74, 0x0, 0x6F, 0x0, 0x20, 0x0, 0x69, 0x0, 0x73, 0x0, 0x20, 0x0, 0x61, 0x0, 0x20, 0x0, 0x74, 0x0, 0x72, 0x0, 0x61, 0x0, 0x64, 0x0, 0x65, 0x0, 0x6D, 0x0, 0x61, 0x0, 0x72, 0x0, 0x6B, 0x0, 0x20, 0x0, 0x6F, 0x0, 0x66, 0x0, 0x20, 0x0, 0x47, 0x0, 0x6F, 0x0, 0x6F, 0x0, 0x67, 0x0, 0x6C, 0x0, 0x65, 0x0, 0x2E, 0x0, 0x47, 0x0, 0x6F, 0x0, 0x6F, 0x0, 0x67, 0x0, 0x6C, 0x0, 0x65, 0x0, 0x43, 0x0, 0x68, 0x0, 0x72, 0x0, 0x69, 0x0, 0x73, 0x0, 0x74, 0x0, 0x69, 0x0, 0x61, 0x0, 0x6E, 0x0, 0x20, 0x0, 0x52, 0x0, 0x6F, 0x0, 0x62, 0x0, 0x65, 0x0, 0x72, 0x0, 0x74, 0x0, 0x73, 0x0, 0x6F, 0x0, 0x6E, 0x0, 0x47, 0x0, 0x6F, 0x0, 0x6F, 0x0, 0x67, 0x0, 0x6C, 0x0, 0x65, 0x0, 0x2E, 0x0, 0x63, 0x0, 0x6F, 0x0, 0x6D, 0x0, 0x4C, 0x0, 0x69, 0x0, 0x63, 0x0, 0x65, 0x0, 0x6E, 0x0, 0x73, 0x0, 0x65, 0x0, 0x64, 0x0, 0x20, 0x0, 0x75, 0x0, 0x6E, 0x0, 0x64, 0x0, 0x65, 0x0, 0x72, 0x0, 0x20, 0x0, 0x74, 0x0, 0x68, 0x0, 0x65, 0x0, 0x20, 0x0, 0x41, 0x0, 0x70, 0x0, 0x61, 0x0, 0x63, 0x0, 0x68, 0x0, 0x65, 0x0, 0x20, 0x0, 0x4C, 0x0, 0x69, 0x0, 0x63, 0x0, 0x65, 0x0, 0x6E, 0x0, 0x73, 0x0, 0x65, 0x0, 0x2C, 0x0, 0x20, 0x0, 0x56, 0x0, 0x65, 0x0, 0x72, 0x0, 0x73, 0x0, 0x69, 0x0, 0x6F, 0x0, 0x6E, 0x0, 0x20, 0x0, 0x32, 0x0, 0x2E, 0x0, 0x30, 0x0, 0x68, 0x0, 0x74, 0x0, 0x74, 0x0, 0x70, 0x0, 0x3A, 0x0, 0x2F, 0x0, 0x2F, 0x0, 0x77, 0x0, 0x77, 0x0, 0x77, 0x0, 0x2E, 0x0, 0x61, 0x0, 0x70, 0x0, 0x61, 0x0, 0x63, 0x0, 0x68, 0x0, 0x65, 0x0, 0x2E, 0x0, 0x6F, 0x0, 0x72, 0x0, 0x67, 0x0, 0x2F, 0x0, 0x6C, 0x0, 0x69, 0x0, 0x63, 0x0, 0x65, 0x0, 0x6E, 0x0, 0x73, 0x0, 0x65, 0x0, 0x73, 0x0, 0x2F, 0x0, 0x4C, 0x0, 0x49, 0x0, 0x43, 0x0, 0x45, 0x0, 0x4E, 0x0, 0x53, 0x0, 0x45, 0x0, 0x2D, 0x0, 0x32, 0x0, 0x2E, 0x0, 0x30, 0x0, 0x52, 0x0, 0x6F, 0x0, 0x62, 0x0, 0x6F, 0x0, 0x74, 0x0, 0x6F, 0x0, 0x4D, 0x0, 0x65, 0x0, 0x64, 0x0, 0x69, 0x0, 0x75, 0x0, 0x6D, 0x0, 0x3, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xFF, 0x6A, 0x0, 0x64, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0xC, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x0, 0x91, 0x0, 0x26, 0x0, 0x3F, 0x0, 0x1, 0x0, 0x46, 0x0, 0x5F, 0x0, 0x1, 0x0, 0x7A, 0x0, 0x7A, 0x0, 0x1, 0x0, 0x82, 0x0, 0x82, 0x0, 0x1, 0x0, 0x84, 0x0, 0x84, 0x0, 0x1, 0x0, 0x87, 0x0, 0x87, 0x0, 0x1, 0x0, 0x8A, 0x0, 0x8A, 0x0, 0x1, 0x0, 0x8C, 0x0, 0x97, 0x0, 0x1, 0x0, 0xA6, 0x0, 0xA7, 0x0, 0x1, 0x0, 0xAD, 0x0, 0xAD, 0x0, 0x1, 0x0, 0xB0, 0x0, 0xB0, 0x0, 0x1, 0x0, 0xB4, 0x0, 0xB5, 0x0, 0x1, 0x0, 0xBD, 0x0, 0xBD, 0x0, 0x1, 0x0, 0xC3, 0x0, 0xC4, 0x0, 0x1, 0x0, 0xC9, 0x0, 0xCA, 0x0, 0x1, 0x0, 0xDB, 0x0, 0xDC, 0x0, 0x1, 0x0, 0xEC, 0x0, 0xEC, 0x0, 0x1, 0x0, 0xF2, 0x0, 0xF2, 0x0, 0x1, 0x0, 0xF8, 0x0, 0xF9, 0x0, 0x1, 0x0, 0xFD, 0x0, 0xFE, 0x0, 0x1, 0x1, 0x1, 0x1, 0x61, 0x0, 0x1, 0x1, 0x8C, 0x1, 0x8C, 0x0, 0x1, 0x1, 0x8F, 0x1, 0x8F, 0x0, 0x1, 0x1, 0x96, 0x1, 0x9A, 0x0, 0x4, 0x1, 0xB1, 0x1, 0xCB, 0x0, 0x3, 0x1, 0xCD, 0x1, 0xD1, 0x0, 0x3, 0x1, 0xD4, 0x1, 0xE4, 0x0, 0x3, 0x1, 0xEA, 0x1, 0xFF, 0x0, 0x3, 0x2, 0x1, 0x2, 0x8, 0x0, 0x3, 0x2, 0xA, 0x2, 0x20, 0x0, 0x3, 0x2, 0x30, 0x2, 0x30, 0x0, 0x1, 0x2, 0x39, 0x2, 0x3A, 0x0, 0x1, 0x2, 0x3E, 0x2, 0x3E, 0x0, 0x1, 0x2, 0x40, 0x2, 0x40, 0x0, 0x1, 0x2, 0x42, 0x2, 0x42, 0x0, 0x1, 0x2, 0x46, 0x2, 0x46, 0x0, 0x1, 0x2, 0x4A, 0x2, 0x4A, 0x0, 0x1, 0x2, 0x4C, 0x2, 0x4D, 0x0, 0x1, 0x2, 0x51, 0x2, 0x51, 0x0, 0x1, 0x2, 0x53, 0x2, 0x53, 0x0, 0x1, 0x2, 0x69, 0x2, 0x69, 0x0, 0x1, 0x2, 0x70, 0x2, 0x74, 0x0, 0x1, 0x2, 0x77, 0x2, 0x77, 0x0, 0x1, 0x2, 0x7B, 0x2, 0x7B, 0x0, 0x1, 0x2, 0x7D, 0x2, 0x7F, 0x0, 0x1, 0x2, 0x81, 0x2, 0x91, 0x0, 0x1, 0x2, 0x93, 0x2, 0x93, 0x0, 0x1, 0x2, 0x95, 0x2, 0x97, 0x0, 0x1, 0x2, 0x99, 0x2, 0x99, 0x0, 0x1, 0x2, 0x9E, 0x2, 0x9F, 0x0, 0x1, 0x2, 0xAC, 0x2, 0xB0, 0x0, 0x1, 0x2, 0xB2, 0x2, 0xB2, 0x0, 0x1, 0x2, 0xB6, 0x2, 0xB8, 0x0, 0x1, 0x2, 0xBA, 0x2, 0xBB, 0x0, 0x3, 0x2, 0xC1, 0x2, 0xC2, 0x0, 0x1, 0x2, 0xCA, 0x2, 0xCB, 0x0, 0x1, 0x2, 0xCD, 0x2, 0xCD, 0x0, 0x1, 0x2, 0xD2, 0x2, 0xD3, 0x0, 0x1, 0x2, 0xD8, 0x2, 0xDB, 0x0, 0x1, 0x2, 0xDE, 0x2, 0xDF, 0x0, 0x1, 0x2, 0xE2, 0x2, 0xE4, 0x0, 0x1, 0x2, 0xE8, 0x2, 0xE8, 0x0, 0x1, 0x2, 0xEB, 0x2, 0xEF, 0x0, 0x1, 0x2, 0xF4, 0x2, 0xF5, 0x0, 0x1, 0x2, 0xF9, 0x2, 0xF9, 0x0, 0x1, 0x2, 0xFB, 0x2, 0xFB, 0x0, 0x1, 0x2, 0xFF, 0x2, 0xFF, 0x0, 0x1, 0x3, 0x1, 0x3, 0x3, 0x0, 0x1, 0x3, 0x5, 0x3, 0x5, 0x0, 0x1, 0x3, 0x7, 0x3, 0x7, 0x0, 0x1, 0x3, 0x15, 0x3, 0x17, 0x0, 0x1, 0x3, 0x1F, 0x3, 0x1F, 0x0, 0x1, 0x3, 0x20, 0x3, 0x28, 0x0, 0x3, 0x3, 0x29, 0x3, 0x2A, 0x0, 0x4, 0x3, 0x2B, 0x3, 0x2C, 0x0, 0x3, 0x3, 0x2D, 0x3, 0x2D, 0x0, 0x4, 0x3, 0x2F, 0x3, 0x3F, 0x0, 0x1, 0x3, 0x43, 0x3, 0x44, 0x0, 0x1, 0x3, 0x47, 0x3, 0x4B, 0x0, 0x1, 0x3, 0x4F, 0x3, 0x5A, 0x0, 0x1, 0x3, 0x9A, 0x3, 0xA6, 0x0, 0x1, 0x3, 0xA8, 0x3, 0xC9, 0x0, 0x1, 0x3, 0xEF, 0x4, 0x24, 0x0, 0x3, 0x4, 0x26, 0x4, 0x28, 0x0, 0x3, 0x4, 0x2B, 0x4, 0x2E, 0x0, 0x1, 0x4, 0x2F, 0x4, 0x2F, 0x0, 0x2, 0x5, 0x5D, 0x5, 0x5E, 0x0, 0x1, 0x6, 0xC7, 0x6, 0xC8, 0x0, 0x1, 0x7, 0x25, 0x7, 0x25, 0x0, 0x3, 0x7, 0x26, 0x7, 0x2C, 0x0, 0x2, 0x7, 0x40, 0x7, 0x40, 0x0, 0x2, 0x7, 0x4E, 0x7, 0x62, 0x0, 0x1, 0x7, 0x66, 0x7, 0x66, 0x0, 0x1, 0x7, 0x6F, 0x7, 0x6F, 0x0, 0x1, 0x7, 0x71, 0x7, 0x71, 0x0, 0x1, 0x7, 0x78, 0x7, 0x7A, 0x0, 0x1, 0x7, 0x7C, 0x7, 0x7D, 0x0, 0x1, 0x7, 0x7F, 0x7, 0x7F, 0x0, 0x1, 0x7, 0x83, 0x7, 0x83, 0x0, 0x1, 0x7, 0x85, 0x7, 0x87, 0x0, 0x1, 0x7, 0x8D, 0x7, 0x8D, 0x0, 0x1, 0x7, 0x92, 0x7, 0x94, 0x0, 0x1, 0x7, 0x96, 0x7, 0x96, 0x0, 0x1, 0x7, 0xA6, 0x7, 0xA6, 0x0, 0x1, 0x7, 0xA9, 0x7, 0xA9, 0x0, 0x1, 0x7, 0xAB, 0x7, 0xAB, 0x0, 0x1, 0x7, 0xAE, 0x7, 0xB1, 0x0, 0x1, 0x7, 0xDE, 0x7, 0xE2, 0x0, 0x1, 0x7, 0xEE, 0x7, 0xF3, 0x0, 0x1, 0x7, 0xF5, 0x7, 0xF5, 0x0, 0x1, 0x7, 0xF7, 0x7, 0xF8, 0x0, 0x1, 0x7, 0xFA, 0x7, 0xFA, 0x0, 0x1, 0x7, 0xFF, 0x8, 0x89, 0x0, 0x2, 0x8, 0x8A, 0x8, 0x95, 0x0, 0x3, 0x8, 0x96, 0x8, 0x97, 0x0, 0x2, 0x8, 0x98, 0x8, 0x98, 0x0, 0x3, 0x8, 0x9A, 0x8, 0x9F, 0x0, 0x3, 0x8, 0xC8, 0x9, 0x30, 0x0, 0x1, 0x9, 0x33, 0x9, 0xBD, 0x0, 0x1, 0x9, 0xBF, 0x9, 0xDA, 0x0, 0x1, 0x9, 0xDC, 0x9, 0xF3, 0x0, 0x1, 0x9, 0xF5, 0xA, 0x1, 0x0, 0x1, 0xA, 0x3, 0xA, 0xC, 0x0, 0x1, 0xA, 0xE, 0xA, 0x29, 0x0, 0x1, 0xA, 0x2D, 0xA, 0x2D, 0x0, 0x1, 0xA, 0x2F, 0xA, 0x36, 0x0, 0x1, 0xA, 0x38, 0xA, 0x3A, 0x0, 0x1, 0xA, 0x3D, 0xA, 0x41, 0x0, 0x1, 0xA, 0x43, 0xA, 0xCC, 0x0, 0x1, 0xA, 0xCF, 0xA, 0xCF, 0x0, 0x1, 0xA, 0xD2, 0xA, 0xD3, 0x0, 0x1, 0xA, 0xD5, 0xA, 0xD6, 0x0, 0x1, 0xA, 0xD8, 0xA, 0xDB, 0x0, 0x1, 0xA, 0xE6, 0xA, 0xE7, 0x0, 0x1, 0xA, 0xEE, 0xB, 0xC, 0x0, 0x1, 0xB, 0x10, 0xB, 0x44, 0x0, 0x1, 0xB, 0x47, 0xC, 0x33, 0x0, 0x1, 0xC, 0x3C, 0xC, 0x71, 0x0, 0x1, 0xC, 0x7A, 0xC, 0xAD, 0x0, 0x1, 0xC, 0xB7, 0xC, 0xBC, 0x0, 0x1, 0xC, 0xBE, 0xC, 0xDD, 0x0, 0x1, 0xC, 0xDF, 0xC, 0xE6, 0x0, 0x1, 0xC, 0xE8, 0xC, 0xE9, 0x0, 0x1, 0xC, 0xEB, 0xC, 0xEB, 0x0, 0x1, 0xC, 0xF4, 0xD, 0x1E, 0x0, 0x1, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0xA, 0x0, 0x36, 0x0, 0x7C, 0x0, 0x4, 0x44, 0x46, 0x4C, 0x54, 0x0, 0x1A, 0x63, 0x79, 0x72, 0x6C, 0x0, 0x1A, 0x67, 0x72, 0x65, 0x6B, 0x0, 0x1A, 0x6C, 0x61, 0x74, 0x6E, 0x0, 0x1A, 0x0, 0x4, 0x0, 0x0, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x4, 0x0, 0x0, 0x0, 0x1, 0x0, 0x2, 0x0, 0x3, 0x0, 0x4, 0x63, 0x70, 0x73, 0x70, 0x0, 0x1A, 0x6B, 0x65, 0x72, 0x6E, 0x0, 0x20, 0x6D, 0x61, 0x72, 0x6B, 0x0, 0x26, 0x6D, 0x6B, 0x6D, 0x6B, 0x0, 0x3E, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x0, 0x1, 0x0, 0x0, 0x0, 0xA, 0x0, 0x2, 0x0, 0x3, 0x0, 0x4, 0x0, 0x5, 0x0, 0x6, 0x0, 0x7, 0x0, 0x8, 0x0, 0x9, 0x0, 0xA, 0x0, 0xB, 0x0, 0x0, 0x0, 0x2, 0x0, 0xC, 0x0, 0xD, 0x0, 0xE, 0x0, 0x1E, 0x2, 0x34, 0x96, 0x86, 0xB9, 0x78, 0xCC, 0xB6, 0xD8, 0x44, 0xE4, 0x20, 0xE4, 0xFA, 0xFB, 0xA6, 0xFB, 0xB6, 0xFC, 0x2, 0xFC, 0x12, 0xFC, 0x22, 0xFC, 0x32, 0x0, 0x1, 0x0, 0x0, 0x0, 0x1, 0x0, 0x8, 0x0, 0x1, 0x0, 0xA, 0x0, 0x5, 0x0, 0x24, 0x0, 0x48, 0x0, 0x1, 0x1, 0x0, 0x0, 0x9, 0x0, 0xB, 0x0, 0x15, 0x0, 0x16, 0x0, 0x17, 0x0, 0x18, 0x0, 0x19, 0x0, 0x1A, 0x0, 0x1B, 0x0, 0x1C, 0x0, 0x1D, 0x0, 0x1E, 0x0, 0x26, 0x0, 0x27, 0x0, 0x28, 0x0, 0x29, 0x0, 0x2A, 0x0, 0x2B, 0x0, 0x2C, 0x0, 0x2D, 0x0, 0x2E, 0x0, 0x2F, 0x0, 0x30, 0x0, 0x31, 0x0, 0x32, 0x0, 0x33, 0x0, 0x34, 0x0, 0x35, 0x0, 0x36, 0x0, 0x37, 0x0, 0x38, 0x0, 0x39, 0x0, 0x3A, 0x0, 0x3B, 0x0, 0x3C, 0x0, 0x3D, 0x0, 0x3E, 0x0, 0x3F, 0x0, 0x66, 0x0, 0x68, 0x0, 0x82, 0x0, 0x84, 0x0, 0x85, 0x0, 0x8D, 0x0, 0x90, 0x0, 0x92, 0x0, 0x94, 0x2, 0x30, 0x2, 0x31, 0x2, 0x32, 0x2, 0x33, 0x2, 0x34, 0x2, 0x35, 0x2, 0x36, 0x2, 0x37, 0x2, 0x38, 0x2, 0x39, 0x2, 0x68, 0x2, 0x69, 0x2, 0x6A, 0x2, 0x6B, 0x2, 0x6C, 0x2, 0x6D, 0x2, 0x6E, 0x2, 0x6F, 0x2, 0x70, 0x2, 0x71, 0x2, 0x72, 0x2, 0x73, 0x2, 0x74, 0x2, 0x75, 0x2, 0x76, 0x2, 0x77, 0x2, 0x78, 0x2, 0x79, 0x2, 0x7A, 0x2, 0x7B, 0x2, 0x7C, 0x2, 0x7D, 0x2, 0x7E, 0x2, 0x7F, 0x2, 0xC6, 0x2, 0xCA, 0x2, 0xCC, 0x2, 0xCE, 0x2, 0xD0, 0x2, 0xD2, 0x2, 0xD8, 0x2, 0xDA, 0x2, 0xDC, 0x2, 0xE0, 0x2, 0xE2, 0x2, 0xE3, 0x2, 0xEF, 0x2, 0xF0, 0x4, 0x32, 0x4, 0xC8, 0x4, 0xCF, 0x4, 0xD7, 0x4, 0xDB, 0x4, 0xE0, 0x4, 0xED, 0x8, 0xC8, 0x8, 0xC9, 0x8, 0xCB, 0x8, 0xCD, 0x8, 0xCE, 0x8, 0xCF, 0x8, 0xD0, 0x8, 0xD1, 0x8, 0xD2, 0x8, 0xD3, 0x8, 0xD4, 0x8, 0xD5, 0x8, 0xD6, 0x8, 0xD7, 0x8, 0xD8, 0x8, 0xD9, 0x8, 0xDA, 0x8, 0xDB, 0x8, 0xDC, 0x8, 0xDD, 0x8, 0xDE, 0x8, 0xDF, 0x8, 0xE0, 0x8, 0xE1, 0x8, 0xE2, 0x8, 0xE3, 0x8, 0xE4, 0x8, 0xE5, 0x8, 0xE6, 0x8, 0xE7, 0x9, 0x4, 0x9, 0x6, 0x9, 0x8, 0x9, 0xA, 0x9, 0xC, 0x9, 0xE, 0x9, 0x10, 0x9, 0x12, 0x9, 0x14, 0x9, 0x16, 0x9, 0x18, 0x9, 0x1A, 0x9, 0x1C, 0x9, 0x1E, 0x9, 0x20, 0x9, 0x22, 0x9, 0x24, 0x9, 0x26, 0x9, 0x28, 0x9, 0x2A, 0x9, 0x2C, 0x9, 0x2E, 0x9, 0x30, 0x9, 0x31, 0x9, 0x33, 0x9, 0x35, 0x9, 0x37, 0x9, 0x39, 0x9, 0x3B, 0x9, 0x3D, 0x9, 0x3F, 0x9, 0x41, 0x9, 0x43, 0x9, 0x46, 0x9, 0x48, 0x9, 0x4A, 0x9, 0x4C, 0x9, 0x4E, 0x9, 0x50, 0x9, 0x52, 0x9, 0x54, 0x9, 0x56, 0x9, 0x58, 0x9, 0x5A, 0x9, 0x5C, 0x9, 0x5E, 0x9, 0x60, 0x9, 0x62, 0x9, 0x64, 0x9, 0x66, 0x9, 0x68, 0x9, 0x6A, 0x9, 0x6C, 0x9, 0x6E, 0x9, 0x70, 0x9, 0x72, 0x9, 0x73, 0x9, 0x75, 0x9, 0x77, 0x9, 0x79, 0x9, 0x7B, 0x9, 0xD5, 0x9, 0xD6, 0x9, 0xD7, 0x9, 0xD8, 0x9, 0xD9, 0x9, 0xDA, 0x9, 0xDB, 0x9, 0xDD, 0x9, 0xDE, 0x9, 0xDF, 0x9, 0xE0, 0x9, 0xE1, 0x9, 0xE2, 0x9, 0xE3, 0x9, 0xE4, 0x9, 0xE5, 0x9, 0xE6, 0x9, 0xE7, 0x9, 0xE8, 0x9, 0xE9, 0x9, 0xEA, 0x9, 0xEB, 0x9, 0xEC, 0x9, 0xFC, 0x9, 0xFD, 0x9, 0xFE, 0x9, 0xFF, 0xA, 0x0, 0xA, 0x1, 0xA, 0x2, 0xA, 0x3, 0xA, 0x4, 0xA, 0x5, 0xA, 0x6, 0xA, 0x7, 0xA, 0x8, 0xA, 0x9, 0xA, 0xA, 0xA, 0xB, 0xA, 0xC, 0xA, 0xD, 0xA, 0xE, 0xA, 0xF, 0xA, 0x10, 0xA, 0x11, 0xA, 0x22, 0xA, 0x24, 0xA, 0x26, 0xA, 0x28, 0xA, 0x3D, 0xA, 0x3F, 0xA, 0x41, 0xA, 0x56, 0xA, 0x5C, 0xA, 0x63, 0xA, 0xCD, 0xA, 0xD2, 0xA, 0xD6, 0xB, 0x9, 0xB, 0x3F, 0xC, 0xF4, 0xC, 0xF6, 0xC, 0xF8, 0x0, 0x2, 0x0, 0x0, 0x0, 0x2, 0x0, 0xA, 0x65, 0x34, 0x0, 0x1, 0x6, 0x54, 0x0, 0x4, 0x0, 0x0, 0x3, 0x25, 0xC, 0xA2, 0x5F, 0xAE, 0x5F, 0xAE, 0xC, 0xEC, 0xD, 0x6E, 0x63, 0x96, 0x61, 0x1E, 0x61, 0x28, 0x64, 0xE8, 0x64, 0x2, 0xD, 0x74, 0x64, 0x10, 0x64, 0x10, 0x61, 0x44, 0x61, 0x92, 0x64, 0x10, 0x64, 0x10, 0x64, 0xE8, 0x64, 0xC6, 0x13, 0x7E, 0x14, 0x88, 0x61, 0xBE, 0x62, 0x94, 0x62, 0xB2, 0x62, 0xD0, 0x64, 0x4C, 0x63, 0x34, 0x15, 0xEE, 0x60, 0xFC, 0x64, 0x32, 0x61, 0x3A, 0x16, 0x5C, 0x18, 0x66, 0x18, 0x70, 0x63, 0xF8, 0x63, 0xF8, 0x63, 0x6C, 0x64, 0x32, 0x61, 0xAC, 0x1B, 0x1E, 0x63, 0x4E, 0x1C, 0x0, 0x63, 0x2E, 0x63, 0x4E, 0x1C, 0x1A, 0x64, 0x32, 0x64, 0x32, 0x64, 0x32, 0x64, 0x32, 0x64, 0xE8, 0x64, 0xE8, 0x64, 0xE8, 0x64, 0x10, 0x64, 0x10, 0x64, 0xE8, 0x61, 0x44, 0x64, 0x10, 0x64, 0x10, 0x64, 0x10, 0x64, 0xC6, 0x61, 0xBE, 0x63, 0x34, 0x64, 0x32, 0x64, 0x32, 0x61, 0x92, 0x61, 0x1E, 0x63, 0x96, 0x61, 0xAC, 0x64, 0x4C, 0x1C, 0x88, 0x64, 0x10, 0x64, 0x32, 0x64, 0x32, 0x60, 0x36, 0x63, 0x96, 0x64, 0xE8, 0x63, 0x96, 0x1D, 0x1A, 0x1E, 0xA4, 0x20, 0x32, 0x21, 0x68, 0x22, 0x46, 0x63, 0x4E, 0x22, 0x4C, 0x22, 0x56, 0x63, 0xF8, 0x27, 0x50, 0x2A, 0x8A, 0x2B, 0xF0, 0x2D, 0xE2, 0x2D, 0xFC, 0x2E, 0x2, 0x2E, 0x8, 0x32, 0x66, 0x32, 0x6C, 0x32, 0xCA, 0x33, 0x24, 0x61, 0x44, 0x64, 0xE8, 0x63, 0x6C, 0x64, 0x32, 0x64, 0x32, 0x64, 0x32, 0x64, 0xE8, 0x61, 0x28, 0x64, 0xE8, 0x33, 0xE2, 0x35, 0xC0, 0x38, 0x1E, 0x3A, 0x88, 0x64, 0x10, 0x3C, 0x52, 0x3E, 0x90, 0x62, 0xD0, 0x42, 0x2, 0x64, 0x10, 0x64, 0x10, 0x5F, 0xB8, 0x64, 0x10, 0x64, 0x10, 0x64, 0x10, 0x43, 0x18, 0x46, 0x4A, 0x64, 0x10, 0x60, 0xC, 0x47, 0x68, 0x48, 0x72, 0x49, 0x38, 0x49, 0xC6, 0x4B, 0x4, 0x60, 0x2, 0x4C, 0x9E, 0x63, 0x2E, 0x4D, 0xC8, 0x4D, 0xF2, 0x51, 0x1C, 0x64, 0x32, 0x56, 0x4A, 0x56, 0x94, 0x58, 0xB2, 0x5E, 0xD4, 0x64, 0x32, 0x59, 0x50, 0x5A, 0xF6, 0x5B, 0x20, 0x5B, 0x82, 0x5E, 0xD4, 0x63, 0x96, 0x63, 0x6C, 0x62, 0x94, 0x63, 0x4E, 0x5B, 0xBC, 0x64, 0x32, 0x60, 0x36, 0x60, 0x2, 0x62, 0xD0, 0x63, 0x2E, 0x61, 0x44, 0x61, 0x44, 0x61, 0x44, 0x64, 0x10, 0x62, 0xD0, 0x63, 0x2E, 0x64, 0x10, 0x64, 0x10, 0x64, 0xE8, 0x60, 0x2, 0x62, 0xD0, 0x63, 0x2E, 0x62, 0xD0, 0x63, 0x2E, 0x62, 0xD0, 0x63, 0x2E, 0x64, 0x2, 0x61, 0x3A, 0x61, 0x44, 0x64, 0x10, 0x64, 0x10, 0x61, 0x44, 0x64, 0x10, 0x64, 0x10, 0x61, 0x92, 0x5F, 0xAE, 0x5B, 0xE6, 0x5F, 0xAE, 0x5F, 0xAE, 0x5F, 0xAE, 0x64, 0xC6, 0x60, 0xFC, 0x64, 0x10, 0x63, 0xF8, 0x61, 0x44, 0x63, 0x34, 0x64, 0x10, 0x64, 0xE8, 0x63, 0x4E, 0x63, 0x6C, 0x63, 0x34, 0x63, 0x34, 0x64, 0xE8, 0x60, 0xC, 0x5E, 0xD4, 0x60, 0xC, 0x5E, 0xD4, 0x63, 0x96, 0x60, 0xFC, 0x63, 0x96, 0x64, 0x10, 0x61, 0xBE, 0x60, 0x2, 0x61, 0xBE, 0x60, 0x2, 0x64, 0xE8, 0x63, 0x6C, 0x64, 0xE8, 0x63, 0x6C, 0x64, 0xE8, 0x63, 0x6C, 0x61, 0xBE, 0x60, 0x2, 0x61, 0xBE, 0x60, 0x2, 0x63, 0xF8, 0x64, 0xE8, 0x63, 0x6C, 0x64, 0xE8, 0x63, 0xF8, 0x63, 0x96, 0x64, 0xE8, 0x62, 0x94, 0x63, 0x4E, 0x62, 0x94, 0x63, 0x4E, 0x63, 0x4E, 0x64, 0xE8, 0x61, 0x44, 0x61, 0x44, 0x61, 0x44, 0x64, 0xE8, 0x63, 0x6C, 0x64, 0xC6, 0x64, 0x32, 0x64, 0xC6, 0x64, 0x32, 0x64, 0xC6, 0x64, 0x32, 0x62, 0x94, 0x63, 0x4E, 0x64, 0x32, 0x64, 0x32, 0x63, 0xF8, 0x64, 0x10, 0x61, 0x28, 0x61, 0x1E, 0x64, 0x32, 0x64, 0x10, 0x65, 0x24, 0x5E, 0xFA, 0x5F, 0x48, 0x65, 0x1E, 0x5F, 0xA4, 0x65, 0x6, 0x65, 0xC, 0x65, 0x1E, 0x65, 0xC, 0x65, 0x6, 0x65, 0x6, 0x65, 0x6, 0x65, 0x6, 0x5F, 0x96, 0x65, 0xC, 0x61, 0x28, 0x64, 0xE8, 0x64, 0xE8, 0x64, 0xE8, 0x64, 0xE8, 0x61, 0xBE, 0x63, 0x96, 0x63, 0x96, 0x63, 0x96, 0x63, 0x96, 0x63, 0x96, 0x63, 0x96, 0x63, 0x96, 0x61, 0x28, 0x64, 0x2, 0x64, 0x2, 0x64, 0x2, 0x64, 0x2, 0x64, 0x10, 0x64, 0x10, 0x64, 0x10, 0x64, 0x10, 0x64, 0x10, 0x64, 0xE8, 0x64, 0xE8, 0x64, 0xE8, 0x64, 0xE8, 0x64, 0xE8, 0x64, 0x4C, 0x60, 0xFC, 0x60, 0xFC, 0x60, 0xFC, 0x60, 0xFC, 0x60, 0xFC, 0x60, 0xFC, 0x60, 0xFC, 0x61, 0x3A, 0x61, 0x3A, 0x61, 0x3A, 0x61, 0x3A, 0x63, 0xF8, 0x63, 0x6C, 0x63, 0x6C, 0x63, 0x6C, 0x63, 0x6C, 0x63, 0x6C, 0x63, 0x4E, 0x63, 0x4E, 0x63, 0x96, 0x60, 0xFC, 0x63, 0x96, 0x60, 0xFC, 0x63, 0x96, 0x60, 0xFC, 0x61, 0x28, 0x61, 0x28, 0x61, 0x28, 0x61, 0x28, 0x64, 0xE8, 0x64, 0x2, 0x61, 0x3A, 0x64, 0x2, 0x61, 0x3A, 0x64, 0x2, 0x61, 0x3A, 0x64, 0x2, 0x61, 0x3A, 0x64, 0x2, 0x61, 0x3A, 0x64, 0x10, 0x63, 0xF8, 0x64, 0x10, 0x64, 0x10, 0x64, 0x10, 0x64, 0x10, 0x64, 0x10, 0x61, 0x44, 0x61, 0x92, 0x61, 0x92, 0x61, 0x92, 0x61, 0x92, 0x64, 0x10, 0x63, 0xF8, 0x64, 0x10, 0x63, 0xF8, 0x64, 0x10, 0x63, 0xF8, 0x63, 0xF8, 0x64, 0xE8, 0x63, 0x6C, 0x64, 0xE8, 0x63, 0x6C, 0x64, 0xE8, 0x63, 0x6C, 0x61, 0xAC, 0x61, 0xAC, 0x61, 0xAC, 0x61, 0xBE, 0x61, 0xBE, 0x61, 0xBE, 0x62, 0xB2, 0x64, 0x4C, 0x63, 0x4E, 0x64, 0x4C, 0x63, 0x34, 0x63, 0x34, 0x63, 0x34, 0x65, 0x1E, 0x65, 0x1E, 0x65, 0x24, 0x65, 0xC, 0x65, 0xC, 0x65, 0xC, 0x65, 0xC, 0x65, 0xC, 0x65, 0xC, 0x65, 0xC, 0x65, 0x1E, 0x65, 0x1E, 0x65, 0x1E, 0x65, 0x1E, 0x65, 0x1E, 0x65, 0xC, 0x65, 0xC, 0x65, 0xC, 0x65, 0x1E, 0x65, 0x6, 0x5F, 0xA4, 0x5F, 0xA4, 0x5F, 0xA4, 0x5F, 0xA4, 0x65, 0x1E, 0x65, 0x1E, 0x65, 0x1E, 0x65, 0x1E, 0x65, 0x24, 0x63, 0x96, 0x64, 0x2, 0x64, 0x10, 0x64, 0x10, 0x64, 0xE8, 0x64, 0x4C, 0x63, 0x96, 0x61, 0x1E, 0x64, 0x2, 0x63, 0x34, 0x64, 0x10, 0x64, 0x10, 0x61, 0x44, 0x64, 0x10, 0x64, 0x10, 0x64, 0xE8, 0x64, 0xC6, 0x61, 0xBE, 0x64, 0x4C, 0x62, 0xD0, 0x64, 0x10, 0x64, 0x4C, 0x63, 0xF8, 0x63, 0x6C, 0x63, 0x4E, 0x63, 0x6C, 0x64, 0x2, 0x60, 0x36, 0x64, 0x10, 0x64, 0x10, 0x61, 0x44, 0x61, 0x44, 0x5F, 0xB8, 0x63, 0x96, 0x61, 0x1E, 0x60, 0x36, 0x64, 0x2, 0x64, 0x10, 0x64, 0x10, 0x64, 0xE8, 0x64, 0xC6, 0x61, 0x28, 0x61, 0xBE, 0x62, 0xD0, 0x60, 0xFC, 0x61, 0x3A, 0x63, 0x6C, 0x64, 0x32, 0x63, 0x4E, 0x63, 0x2E, 0x61, 0x3A, 0x60, 0x2, 0x63, 0x4E, 0x62, 0xB2, 0x62, 0xB2, 0x62, 0xB2, 0x64, 0x4C, 0x63, 0x4E, 0x5F, 0xAE, 0x5F, 0xAE, 0x5F, 0xAE, 0x64, 0x10, 0x63, 0xF8, 0x63, 0x96, 0x60, 0xFC, 0x64, 0x2, 0x61, 0x3A, 0x62, 0x94, 0x63, 0x4E, 0x61, 0x28, 0x64, 0x4C, 0x63, 0x4E, 0x64, 0x10, 0x62, 0xD0, 0x63, 0x2E, 0x64, 0x10, 0x63, 0x96, 0x60, 0xFC, 0x63, 0x96, 0x60, 0xFC, 0x64, 0x2, 0x61, 0x3A, 0x61, 0x3A, 0x61, 0x3A, 0x62, 0xD0, 0x63, 0x2E, 0x64, 0xE8, 0x63, 0x6C, 0x64, 0xE8, 0x63, 0x6C, 0x64, 0x32, 0x5F, 0xB8, 0x63, 0x4E, 0x5F, 0xB8, 0x63, 0x4E, 0x5F, 0xB8, 0x63, 0x4E, 0x63, 0x96, 0x60, 0xFC, 0x63, 0x96, 0x60, 0xFC, 0x63, 0x96, 0x60, 0xFC, 0x63, 0x96, 0x60, 0xFC, 0x63, 0x96, 0x60, 0xFC, 0x63, 0x96, 0x60, 0xFC, 0x63, 0x96, 0x60, 0xFC, 0x63, 0x96, 0x60, 0xFC, 0x63, 0x96, 0x60, 0xFC, 0x63, 0x96, 0x60, 0xFC, 0x63, 0x96, 0x60, 0xFC, 0x63, 0x96, 0x60, 0xFC, 0x64, 0x2, 0x61, 0x3A, 0x64, 0x2, 0x61, 0x3A, 0x64, 0x2, 0x61, 0x3A, 0x64, 0x2, 0x61, 0x3A, 0x64, 0x2, 0x61, 0x3A, 0x64, 0x2, 0x61, 0x3A, 0x64, 0x2, 0x61, 0x3A, 0x64, 0x2, 0x61, 0x3A, 0x64, 0x10, 0x64, 0x10, 0x64, 0xE8, 0x63, 0x6C, 0x64, 0xE8, 0x63, 0x6C, 0x64, 0xE8, 0x63, 0x6C, 0x64, 0xE8, 0x63, 0x6C, 0x64, 0xE8, 0x63, 0x6C, 0x64, 0xE8, 0x63, 0x6C, 0x64, 0xE8, 0x63, 0x6C, 0x63, 0x6C, 0x64, 0x4C, 0x63, 0x4E, 0x64, 0x4C, 0x63, 0x4E, 0x64, 0x4C, 0x63, 0x4E, 0x61, 0xBE, 0x60, 0x36, 0x60, 0x2, 0x63, 0xF8, 0x60, 0xC, 0x60, 0x36, 0x61, 0x44, 0x64, 0x4C, 0x64, 0x10, 0x63, 0x96, 0x60, 0xFC, 0x64, 0x10, 0x64, 0xE8, 0x63, 0x6C, 0x63, 0x96, 0x60, 0xFC, 0x63, 0x96, 0x60, 0xFC, 0x61, 0x3A, 0x64, 0xE8, 0x63, 0x6C, 0x64, 0xE8, 0x63, 0x6C, 0x63, 0x34, 0x64, 0x10, 0x63, 0xF8, 0x63, 0x96, 0x60, 0xFC, 0x63, 0x96, 0x60, 0xFC, 0x64, 0x2, 0x64, 0x2, 0x64, 0x10, 0x64, 0x10, 0x64, 0xE8, 0x63, 0x6C, 0x64, 0xE8, 0x63, 0x6C, 0x61, 0xAC, 0x61, 0xAC, 0x64, 0x10, 0x63, 0x96, 0x60, 0xFC, 0x64, 0x2, 0x64, 0xE8, 0x63, 0x6C, 0x64, 0xE8, 0x63, 0x6C, 0x64, 0xE8, 0x63, 0x6C, 0x64, 0xE8, 0x63, 0x6C, 0x63, 0x4E, 0x63, 0x6C, 0x64, 0x32, 0x61, 0x28, 0x64, 0x10, 0x62, 0xB2, 0x61, 0x1E, 0x64, 0x32, 0x61, 0x1E, 0x64, 0x32, 0x61, 0x1E, 0x64, 0x32, 0x61, 0x28, 0x64, 0xE8, 0x64, 0xE8, 0x64, 0xE8, 0x64, 0xE8, 0x64, 0xE8, 0x64, 0x2, 0x61, 0x3A, 0x64, 0x2, 0x61, 0x3A, 0x64, 0x2, 0x61, 0x3A, 0x64, 0x2, 0x61, 0x3A, 0x64, 0x2, 0x61, 0x3A, 0x64, 0x10, 0x63, 0xF8, 0x64, 0x10, 0x63, 0xF8, 0x64, 0x10, 0x63, 0xF8, 0x64, 0x10, 0x63, 0xF8, 0x61, 0x44, 0x61, 0x44, 0x61, 0x44, 0x61, 0x92, 0x61, 0x92, 0x61, 0x92, 0x61, 0x92, 0x64, 0x10, 0x63, 0xF8, 0x64, 0x10, 0x63, 0xF8, 0x64, 0x10, 0x63, 0xF8, 0x64, 0x10, 0x63, 0xF8, 0x64, 0x10, 0x63, 0xF8, 0x64, 0x10, 0x63, 0xF8, 0x64, 0xE8, 0x63, 0x6C, 0x64, 0xE8, 0x63, 0x6C, 0x64, 0xE8, 0x63, 0x6C, 0x64, 0xE8, 0x63, 0x6C, 0x64, 0xC6, 0x64, 0x32, 0x64, 0xC6, 0x64, 0x32, 0x61, 0xAC, 0x61, 0xAC, 0x61, 0xAC, 0x61, 0xAC, 0x61, 0xBE, 0x61, 0xBE, 0x61, 0xBE, 0x61, 0xBE, 0x62, 0x94, 0x63, 0x4E, 0x62, 0x94, 0x63, 0x4E, 0x62, 0xB2, 0x62, 0xB2, 0x62, 0xD0, 0x63, 0x2E, 0x62, 0xD0, 0x63, 0x2E, 0x64, 0x4C, 0x63, 0x4E, 0x63, 0x34, 0x63, 0x34, 0x63, 0x34, 0x63, 0x4E, 0x63, 0x96, 0x63, 0x96, 0x63, 0x96, 0x63, 0x96, 0x63, 0x96, 0x63, 0x96, 0x63, 0x96, 0x63, 0x96, 0x64, 0x2, 0x64, 0x2, 0x64, 0x2, 0x64, 0x2, 0x64, 0x2, 0x64, 0x2, 0x63, 0xF8, 0x63, 0xF8, 0x63, 0xF8, 0x63, 0xF8, 0x63, 0xF8, 0x63, 0xF8, 0x63, 0xF8, 0x63, 0xF8, 0x64, 0x10, 0x64, 0x10, 0x64, 0x10, 0x64, 0x10, 0x64, 0x10, 0x64, 0x10, 0x64, 0x10, 0x64, 0x10, 0x63, 0x6C, 0x63, 0x6C, 0x63, 0x6C, 0x63, 0x6C, 0x63, 0x6C, 0x63, 0x6C, 0x64, 0xE8, 0x64, 0xE8, 0x64, 0xE8, 0x64, 0xE8, 0x64, 0xE8, 0x64, 0xE8, 0x63, 0xF8, 0x63, 0xF8, 0x63, 0x6C, 0x63, 0x6C, 0x63, 0x96, 0x63, 0x96, 0x63, 0x96, 0x63, 0x96, 0x63, 0x96, 0x63, 0x96, 0x63, 0x96, 0x63, 0x96, 0x64, 0x10, 0x64, 0x10, 0x64, 0x10, 0x64, 0x10, 0x64, 0x10, 0x64, 0x10, 0x64, 0x10, 0x64, 0x10, 0x63, 0x96, 0x63, 0x96, 0x63, 0x96, 0x63, 0x96, 0x63, 0x96, 0x63, 0xF8, 0x63, 0xF8, 0x63, 0xF8, 0x63, 0xF8, 0x63, 0xF8, 0x64, 0x2, 0x64, 0x2, 0x64, 0x10, 0x64, 0x10, 0x64, 0x10, 0x64, 0x32, 0x64, 0x32, 0x64, 0x4C, 0x64, 0x4C, 0x64, 0x4C, 0x64, 0x4C, 0x64, 0xC6, 0x64, 0xE8, 0x64, 0xE8, 0x65, 0xC, 0x65, 0x1E, 0x65, 0xC, 0x65, 0x6, 0x65, 0x24, 0x65, 0x6, 0x65, 0xC, 0x65, 0x1E, 0x65, 0x24, 0x0, 0x1, 0x3, 0x25, 0x0, 0x5, 0x0, 0x7, 0x0, 0xC, 0x0, 0xD, 0x0, 0x14, 0x0, 0x26, 0x0, 0x27, 0x0, 0x28, 0x0, 0x29, 0x0, 0x2A, 0x0, 0x2B, 0x0, 0x2D, 0x0, 0x2E, 0x0, 0x30, 0x0, 0x31, 0x0, 0x32, 0x0, 0x33, 0x0, 0x34, 0x0, 0x35, 0x0, 0x36, 0x0, 0x37, 0x0, 0x39, 0x0, 0x3B, 0x0, 0x3C, 0x0, 0x3D, 0x0, 0x3E, 0x0, 0x3F, 0x0, 0x40, 0x0, 0x46, 0x0, 0x47, 0x0, 0x4A, 0x0, 0x4B, 0x0, 0x4D, 0x0, 0x50, 0x0, 0x52, 0x0, 0x53, 0x0, 0x54, 0x0, 0x55, 0x0, 0x57, 0x0, 0x59, 0x0, 0x5B, 0x0, 0x5C, 0x0, 0x5D, 0x0, 0x5E, 0x0, 0x60, 0x0, 0x8B, 0x0, 0x97, 0x0, 0x9A, 0x0, 0x9C, 0x0, 0x9D, 0x0, 0xA0, 0x0, 0xA1, 0x0, 0xA2, 0x0, 0xA5, 0x0, 0xA6, 0x0, 0xAE, 0x0, 0xB2, 0x0, 0xB3, 0x0, 0xB6, 0x0, 0xB8, 0x0, 0xC2, 0x0, 0xD8, 0x0, 0xED, 0x0, 0xEE, 0x0, 0xF2, 0x0, 0xF8, 0x0, 0xFA, 0x1, 0x2, 0x1, 0x3, 0x1, 0xE, 0x2, 0x27, 0x2, 0x29, 0x2, 0x2B, 0x2, 0x30, 0x2, 0x31, 0x2, 0x32, 0x2, 0x33, 0x2, 0x34, 0x2, 0x36, 0x2, 0x37, 0x2, 0x38, 0x2, 0x3A, 0x2, 0x3C, 0x2, 0x3D, 0x2, 0x3F, 0x2, 0x40, 0x2, 0x42, 0x2, 0x43, 0x2, 0x44, 0x2, 0x46, 0x2, 0x47, 0x2, 0x48, 0x2, 0x49, 0x2, 0x4A, 0x2, 0x4B, 0x2, 0x4C, 0x2, 0x4D, 0x2, 0x4E, 0x2, 0x55, 0x2, 0x56, 0x2, 0x60, 0x2, 0x62, 0x2, 0x64, 0x2, 0x65, 0x2, 0x66, 0x2, 0x67, 0x2, 0x68, 0x2, 0x6A, 0x2, 0x6B, 0x2, 0x6C, 0x2, 0x6D, 0x2, 0x6E, 0x2, 0x6F, 0x2, 0x70, 0x2, 0x71, 0x2, 0x72, 0x2, 0x73, 0x2, 0x74, 0x2, 0x76, 0x2, 0x77, 0x2, 0x78, 0x2, 0x79, 0x2, 0x7A, 0x2, 0x7B, 0x2, 0x7C, 0x2, 0x7D, 0x2, 0x7E, 0x2, 0x7F, 0x2, 0x80, 0x2, 0x81, 0x2, 0x82, 0x2, 0x83, 0x2, 0x84, 0x2, 0x85, 0x2, 0x87, 0x2, 0x8C, 0x2, 0x8D, 0x2, 0x8E, 0x2, 0x91, 0x2, 0x92, 0x2, 0x94, 0x2, 0x95, 0x2, 0x96, 0x2, 0x99, 0x2, 0x9A, 0x2, 0x9B, 0x2, 0xA0, 0x2, 0xA3, 0x2, 0xAE, 0x2, 0xAF, 0x2, 0xB0, 0x2, 0xB8, 0x2, 0xC5, 0x2, 0xC6, 0x2, 0xC7, 0x2, 0xCA, 0x2, 0xCB, 0x2, 0xCC, 0x2, 0xCE, 0x2, 0xD0, 0x2, 0xD2, 0x2, 0xDA, 0x2, 0xDB, 0x2, 0xEB, 0x2, 0xED, 0x2, 0xEF, 0x2, 0xF3, 0x2, 0xF4, 0x2, 0xF5, 0x3, 0x8, 0x3, 0x9, 0x3, 0xA, 0x3, 0xB, 0x3, 0xC, 0x3, 0xD, 0x3, 0xE, 0x3, 0x14, 0x3, 0x18, 0x3, 0x1A, 0x4, 0x2B, 0x4, 0x2D, 0x4, 0x34, 0x4, 0x62, 0x4, 0x63, 0x4, 0x65, 0x4, 0x66, 0x4, 0x67, 0x5, 0x59, 0x5, 0x5B, 0x5, 0x5D, 0x5, 0x5E, 0x5, 0x5F, 0x5, 0x61, 0x5, 0x64, 0x5, 0x66, 0x5, 0x6A, 0x5, 0x70, 0x5, 0xD9, 0x5, 0xDB, 0x5, 0xE5, 0x5, 0xE7, 0x5, 0xE8, 0x5, 0xEB, 0x5, 0xEC, 0x5, 0xEF, 0x5, 0xF0, 0x5, 0xF1, 0x5, 0xF9, 0x5, 0xFD, 0x5, 0xFE, 0x5, 0xFF, 0x6, 0x0, 0x6, 0x1, 0x6, 0x2, 0x6, 0x3, 0x6, 0x4, 0x6, 0x5, 0x6, 0x6, 0x6, 0x25, 0x6, 0x26, 0x6, 0x29, 0x6, 0x2A, 0x6, 0x2E, 0x6, 0x31, 0x6, 0x32, 0x6, 0x33, 0x6, 0x5F, 0x6, 0x6A, 0x6, 0x6C, 0x6, 0x70, 0x6, 0x71, 0x6, 0x72, 0x6, 0x73, 0x6, 0x75, 0x6, 0x76, 0x6, 0x78, 0x6, 0x7A, 0x6, 0x7C, 0x6, 0x86, 0x6, 0x87, 0x6, 0x88, 0x6, 0x89, 0x6, 0x8A, 0x6, 0x8B, 0x6, 0x8C, 0x6, 0x8D, 0x6, 0x96, 0x6, 0x97, 0x6, 0x9D, 0x6, 0x9F, 0x6, 0xBB, 0x6, 0xC7, 0x6, 0xC9, 0x6, 0xCD, 0x6, 0xCE, 0x6, 0xE1, 0x7, 0x54, 0x7, 0x56, 0x7, 0x57, 0x7, 0x59, 0x7, 0x5C, 0x7, 0x5D, 0x7, 0x67, 0x7, 0x68, 0x7, 0x69, 0x7, 0x7B, 0x7, 0x8A, 0x7, 0x8B, 0x7, 0x8C, 0x7, 0xAE, 0x7, 0xB1, 0x7, 0xCF, 0x7, 0xD1, 0x7, 0xD2, 0x8, 0xC8, 0x8, 0xC9, 0x8, 0xCB, 0x8, 0xCD, 0x8, 0xCE, 0x8, 0xCF, 0x8, 0xD0, 0x8, 0xD1, 0x8, 0xD2, 0x8, 0xD3, 0x8, 0xD4, 0x8, 0xD5, 0x8, 0xD6, 0x8, 0xD7, 0x8, 0xD8, 0x8, 0xD9, 0x8, 0xDA, 0x8, 0xDB, 0x8, 0xDC, 0x8, 0xDD, 0x8, 0xDE, 0x8, 0xDF, 0x8, 0xE0, 0x8, 0xE1, 0x8, 0xE2, 0x8, 0xE7, 0x8, 0xE8, 0x8, 0xE9, 0x8, 0xEA, 0x8, 0xEB, 0x8, 0xEC, 0x8, 0xED, 0x8, 0xEE, 0x8, 0xF0, 0x8, 0xF1, 0x8, 0xF2, 0x8, 0xF3, 0x8, 0xF8, 0x8, 0xF9, 0x8, 0xFA, 0x8, 0xFB, 0x8, 0xFC, 0x8, 0xFD, 0x9, 0x2, 0x9, 0x3, 0x9, 0x4, 0x9, 0x5, 0x9, 0x6, 0x9, 0x7, 0x9, 0x8, 0x9, 0x9, 0x9, 0xA, 0x9, 0xC, 0x9, 0xE, 0x9, 0x10, 0x9, 0x12, 0x9, 0x14, 0x9, 0x15, 0x9, 0x16, 0x9, 0x17, 0x9, 0x18, 0x9, 0x19, 0x9, 0x1A, 0x9, 0x1B, 0x9, 0x1C, 0x9, 0x1D, 0x9, 0x26, 0x9, 0x27, 0x9, 0x28, 0x9, 0x2A, 0x9, 0x2C, 0x9, 0x2E, 0x9, 0x30, 0x9, 0x35, 0x9, 0x37, 0x9, 0x39, 0x9, 0x3B, 0x9, 0x3D, 0x9, 0x3F, 0x9, 0x40, 0x9, 0x41, 0x9, 0x42, 0x9, 0x43, 0x9, 0x44, 0x9, 0x45, 0x9, 0x46, 0x9, 0x47, 0x9, 0x48, 0x9, 0x49, 0x9, 0x4A, 0x9, 0x4B, 0x9, 0x4D, 0x9, 0x4F, 0x9, 0x51, 0x9, 0x5C, 0x9, 0x5E, 0x9, 0x60, 0x9, 0x6E, 0x9, 0x70, 0x9, 0x71, 0x9, 0x72, 0x9, 0x73, 0x9, 0x75, 0x9, 0x77, 0x9, 0x7D, 0x9, 0x7E, 0x9, 0x7F, 0x9, 0x80, 0x9, 0x81, 0x9, 0x82, 0x9, 0x83, 0x9, 0x84, 0x9, 0x85, 0x9, 0x86, 0x9, 0x91, 0x9, 0x92, 0x9, 0x93, 0x9, 0x94, 0x9, 0x95, 0x9, 0x9B, 0x9, 0x9C, 0x9, 0x9D, 0x9, 0xA2, 0x9, 0xB3, 0x9, 0xB4, 0x9, 0xB5, 0x9, 0xB6, 0x9, 0xB7, 0x9, 0xBB, 0x9, 0xBC, 0x9, 0xBD, 0x9, 0xBE, 0x9, 0xC7, 0x9, 0xD5, 0x9, 0xD6, 0x9, 0xD7, 0x9, 0xD8, 0x9, 0xD9, 0x9, 0xDA, 0x9, 0xDD, 0x9, 0xDE, 0x9, 0xDF, 0x9, 0xE0, 0x9, 0xE1, 0x9, 0xE2, 0x9, 0xE3, 0x9, 0xE4, 0x9, 0xE5, 0x9, 0xE6, 0x9, 0xE7, 0x9, 0xE8, 0x9, 0xE9, 0x9, 0xEA, 0x9, 0xEB, 0x9, 0xEC, 0x9, 0xEF, 0x9, 0xF3, 0x9, 0xF5, 0x9, 0xF9, 0x9, 0xFC, 0x9, 0xFD, 0x9, 0xFF, 0xA, 0x0, 0xA, 0x2, 0xA, 0x3, 0xA, 0x4, 0xA, 0x5, 0xA, 0x6, 0xA, 0x7, 0xA, 0x8, 0xA, 0xA, 0xA, 0xB, 0xA, 0xC, 0xA, 0xE, 0xA, 0xF, 0xA, 0x10, 0xA, 0x11, 0xA, 0x12, 0xA, 0x13, 0xA, 0x15, 0xA, 0x16, 0xA, 0x18, 0xA, 0x19, 0xA, 0x1A, 0xA, 0x1B, 0xA, 0x21, 0xA, 0x22, 0xA, 0x24, 0xA, 0x26, 0xA, 0x28, 0xA, 0x29, 0xA, 0x2A, 0xA, 0x2B, 0xA, 0x2E, 0xA, 0x2F, 0xA, 0x30, 0xA, 0x31, 0xA, 0x32, 0xA, 0x33, 0xA, 0x35, 0xA, 0x39, 0xA, 0x3A, 0xA, 0x3F, 0xA, 0x41, 0xA, 0x42, 0xA, 0x43, 0xA, 0x44, 0xA, 0x45, 0xA, 0x46, 0xA, 0x47, 0xA, 0x48, 0xA, 0x49, 0xA, 0x4A, 0xA, 0x4D, 0xA, 0x4E, 0xA, 0x50, 0xA, 0x51, 0xA, 0x52, 0xA, 0x53, 0xA, 0x5A, 0xA, 0x5B, 0xA, 0x5E, 0xA, 0x60, 0xA, 0x62, 0xA, 0x63, 0xA, 0x64, 0xA, 0x65, 0xA, 0x66, 0xA, 0x67, 0xA, 0x68, 0xA, 0x6E, 0xA, 0x6F, 0xA, 0x70, 0xA, 0x71, 0xA, 0x72, 0xA, 0x73, 0xA, 0x74, 0xA, 0x75, 0xA, 0x76, 0xA, 0x77, 0xA, 0x78, 0xA, 0x79, 0xA, 0x7A, 0xA, 0x7B, 0xA, 0x7C, 0xA, 0x7D, 0xA, 0x7E, 0xA, 0x7F, 0xA, 0x80, 0xA, 0x81, 0xA, 0x82, 0xA, 0x83, 0xA, 0x84, 0xA, 0x85, 0xA, 0x86, 0xA, 0x87, 0xA, 0x88, 0xA, 0x89, 0xA, 0x8A, 0xA, 0x8B, 0xA, 0x8C, 0xA, 0x8D, 0xA, 0x8E, 0xA, 0x8F, 0xA, 0x90, 0xA, 0x91, 0xA, 0x92, 0xA, 0x93, 0xA, 0x94, 0xA, 0x95, 0xA, 0x96, 0xA, 0x98, 0xA, 0x9A, 0xA, 0x9B, 0xA, 0x9C, 0xA, 0x9D, 0xA, 0x9E, 0xA, 0x9F, 0xA, 0xA0, 0xA, 0xA1, 0xA, 0xA2, 0xA, 0xA3, 0xA, 0xA4, 0xA, 0xA5, 0xA, 0xA6, 0xA, 0xA7, 0xA, 0xAF, 0xA, 0xC0, 0xA, 0xC1, 0xA, 0xC2, 0xA, 0xC3, 0xA, 0xC4, 0xA, 0xC5, 0xA, 0xC7, 0xA, 0xCB, 0xA, 0xCC, 0xA, 0xCF, 0xA, 0xD1, 0xA, 0xD2, 0xA, 0xD4, 0xA, 0xD6, 0xA, 0xE6, 0xA, 0xEE, 0xA, 0xEF, 0xA, 0xF0, 0xA, 0xF2, 0xA, 0xF3, 0xA, 0xFF, 0xB, 0x0, 0xB, 0x1, 0xB, 0x2, 0xB, 0x4, 0xB, 0x9, 0xB, 0xA, 0xB, 0xB, 0xB, 0xC, 0xB, 0xD, 0xB, 0x12, 0xB, 0x13, 0xB, 0x14, 0xB, 0x15, 0xB, 0x16, 0xB, 0x17, 0xB, 0x18, 0xB, 0x1A, 0xB, 0x1C, 0xB, 0x1E, 0xB, 0x20, 0xB, 0x21, 0xB, 0x22, 0xB, 0x23, 0xB, 0x25, 0xB, 0x27, 0xB, 0x2C, 0xB, 0x2E, 0xB, 0x2F, 0xB, 0x30, 0xB, 0x32, 0xB, 0x33, 0xB, 0x34, 0xB, 0x35, 0xB, 0x36, 0xB, 0x37, 0xB, 0x38, 0xB, 0x39, 0xB, 0x3B, 0xB, 0x3C, 0xB, 0x46, 0xB, 0x47, 0xB, 0x48, 0xB, 0x4B, 0xB, 0x4D, 0xB, 0x4E, 0xB, 0x4F, 0xB, 0x50, 0xB, 0x51, 0xB, 0x52, 0xB, 0x53, 0xB, 0x55, 0xB, 0x57, 0xB, 0x59, 0xB, 0x5B, 0xB, 0x5D, 0xB, 0x5F, 0xB, 0x60, 0xB, 0x61, 0xB, 0x62, 0xB, 0x63, 0xB, 0x64, 0xB, 0x65, 0xB, 0x66, 0xB, 0x67, 0xB, 0x68, 0xB, 0x6D, 0xB, 0x6E, 0xB, 0x6F, 0xB, 0x70, 0xB, 0x71, 0xB, 0x72, 0xB, 0x73, 0xB, 0x74, 0xB, 0x75, 0xB, 0x77, 0xB, 0x79, 0xB, 0x7B, 0xB, 0x7D, 0xB, 0x7F, 0xB, 0x81, 0xB, 0x83, 0xB, 0x84, 0xB, 0x85, 0xB, 0x86, 0xB, 0x87, 0xB, 0x88, 0xB, 0x89, 0xB, 0x8A, 0xB, 0x8B, 0xB, 0x8C, 0xB, 0x8D, 0xB, 0x8E, 0xB, 0x8F, 0xB, 0x90, 0xB, 0x91, 0xB, 0x92, 0xB, 0x93, 0xB, 0x94, 0xB, 0x95, 0xB, 0x96, 0xB, 0x97, 0xB, 0x98, 0xB, 0x99, 0xB, 0x9A, 0xB, 0x9C, 0xB, 0x9E, 0xB, 0xA0, 0xB, 0xA2, 0xB, 0xAD, 0xB, 0xAF, 0xB, 0xB1, 0xB, 0xB3, 0xB, 0xBF, 0xB, 0xC0, 0xB, 0xC1, 0xB, 0xC2, 0xB, 0xC3, 0xB, 0xC5, 0xB, 0xC7, 0xB, 0xC8, 0xB, 0xC9, 0xB, 0xCA, 0xB, 0xCB, 0xB, 0xCC, 0xB, 0xCD, 0xB, 0xCF, 0xB, 0xD1, 0xB, 0xD6, 0xB, 0xE0, 0xB, 0xE1, 0xB, 0xE2, 0xB, 0xE3, 0xB, 0xE4, 0xB, 0xE5, 0xB, 0xE6, 0xB, 0xE7, 0xB, 0xEE, 0xB, 0xEF, 0xB, 0xF0, 0xB, 0xF1, 0xB, 0xF2, 0xB, 0xF3, 0xB, 0xF4, 0xB, 0xF5, 0xB, 0xF6, 0xB, 0xF7, 0xB, 0xF8, 0xB, 0xF9, 0xB, 0xFA, 0xB, 0xFB, 0xB, 0xFC, 0xB, 0xFD, 0xB, 0xFE, 0xB, 0xFF, 0xC, 0x0, 0xC, 0x1, 0xC, 0x2, 0xC, 0x3, 0xC, 0x14, 0xC, 0x15, 0xC, 0x16, 0xC, 0x17, 0xC, 0x18, 0xC, 0x19, 0xC, 0x1A, 0xC, 0x1B, 0xC, 0x1C, 0xC, 0x1D, 0xC, 0x1E, 0xC, 0x1F, 0xC, 0x40, 0xC, 0x41, 0xC, 0x44, 0xC, 0x45, 0xC, 0x52, 0xC, 0x53, 0xC, 0x54, 0xC, 0x55, 0xC, 0x56, 0xC, 0x57, 0xC, 0x58, 0xC, 0x59, 0xC, 0x62, 0xC, 0x63, 0xC, 0x64, 0xC, 0x65, 0xC, 0x66, 0xC, 0x67, 0xC, 0x68, 0xC, 0x69, 0xC, 0x81, 0xC, 0x82, 0xC, 0x83, 0xC, 0x84, 0xC, 0x85, 0xC, 0x86, 0xC, 0x87, 0xC, 0x88, 0xC, 0x89, 0xC, 0x8A, 0xC, 0x8B, 0xC, 0x8C, 0xC, 0x8D, 0xC, 0x8E, 0xC, 0x8F, 0xC, 0x9E, 0xC, 0x9F, 0xC, 0xA2, 0xC, 0xA3, 0xC, 0xA4, 0xC, 0xA5, 0xC, 0xA6, 0xC, 0xAC, 0xC, 0xAD, 0xC, 0xB7, 0xC, 0xBB, 0xC, 0xBE, 0xC, 0xC4, 0xC, 0xC9, 0xC, 0xD4, 0xC, 0xD6, 0xC, 0xDD, 0xC, 0xE1, 0x0, 0x12, 0x0, 0x39, 0xFF, 0xCE, 0x0, 0xC2, 0xFF, 0xCE, 0x2, 0x68, 0xFF, 0xCE, 0x2, 0x6C, 0xFF, 0xCE, 0x2, 0xD0, 0xFF, 0xCE, 0x2, 0xDC, 0xFF, 0xCE, 0x6, 0x23, 0xFF, 0xCE, 0x6, 0x25, 0xFF, 0xCE, 0x6, 0x29, 0xFF, 0xCE, 0x9, 0x5C, 0xFF, 0xCE, 0x9, 0x5E, 0xFF, 0xCE, 0x9, 0x60, 0xFF, 0xCE, 0xA, 0x10, 0xFF, 0xCE, 0xA, 0xC7, 0xFF, 0xCE, 0xB, 0xAD, 0xFF, 0xCE, 0xB, 0xAF, 0xFF, 0xCE, 0xB, 0xB1, 0xFF, 0xCE, 0xB, 0xB3, 0xFF, 0xCE, 0x0, 0x20, 0x0, 0x3B, 0x0, 0x16, 0x0, 0x3C, 0x0, 0x20, 0x0, 0x3E, 0x0, 0x18, 0x1, 0x3, 0x0, 0x18, 0x2, 0xAF, 0x0, 0x16, 0x5, 0x68, 0x0, 0x20, 0x6, 0x96, 0x0, 0x16, 0x8, 0xE7, 0x0, 0x18, 0x9, 0x6E, 0x0, 0x20, 0x9, 0x70, 0x0, 0x18, 0x9, 0x72, 0x0, 0x18, 0x9, 0xDA, 0x0, 0x18, 0x9, 0xE9, 0x0, 0x18, 0x9, 0xEC, 0x0, 0x18, 0xA, 0x22, 0x0, 0x20, 0xA, 0x24, 0x0, 0x20, 0xA, 0x26, 0x0, 0x20, 0xA, 0x28, 0x0, 0x18, 0xA, 0x39, 0x0, 0x16, 0xA, 0x41, 0x0, 0x18, 0xA, 0xC0, 0x0, 0x18, 0xA, 0xC2, 0x0, 0x18, 0xA, 0xC4, 0x0, 0x18, 0xA, 0xD6, 0x0, 0x18, 0xB, 0x4B, 0x0, 0x20, 0xB, 0xBF, 0x0, 0x16, 0xB, 0xC1, 0x0, 0x16, 0xB, 0xC3, 0x0, 0x20, 0xB, 0xC5, 0x0, 0x20, 0xB, 0xCB, 0x0, 0x18, 0xC, 0xA2, 0x0, 0x18, 0xC, 0xA3, 0x0, 0x18, 0x0, 0x1, 0x0, 0x14, 0xFF, 0x10, 0x1, 0x82, 0x0, 0x11, 0xFE, 0xD6, 0x0, 0x13, 0xFE, 0xD6, 0x0, 0x26, 0xFF, 0x3E, 0x0, 0x2F, 0xFF, 0x17, 0x0, 0x39, 0x0, 0x14, 0x0, 0x3B, 0x0, 0x4, 0x0, 0x46, 0xFF, 0xCE, 0x0, 0x48, 0xFF, 0xDC, 0x0, 0x49, 0xFF, 0xDC, 0x0, 0x4A, 0xFF, 0xDC, 0x0, 0x4C, 0xFF, 0xDC, 0x0, 0x54, 0xFF, 0xDB, 0x0, 0x56, 0xFF, 0xDC, 0x0, 0x57, 0xFF, 0xE4, 0x0, 0x5A, 0xFF, 0xE8, 0x0, 0x5B, 0xFF, 0xE6, 0x0, 0x5E, 0xFF, 0xE6, 0x0, 0x95, 0xFF, 0xDC, 0x0, 0x9F, 0xFF, 0xDC, 0x0, 0xB5, 0xFF, 0xDC, 0x0, 0xC2, 0x0, 0x14, 0x0, 0xC4, 0xFF, 0xE8, 0x0, 0xDA, 0xFF, 0xDC, 0x0, 0xDC, 0xFF, 0xDC, 0x0, 0xE4, 0xFF, 0xDC, 0x0, 0xFA, 0xFF, 0x3E, 0x1, 0x0, 0xFF, 0xDC, 0x2, 0x2A, 0xFF, 0xDC, 0x2, 0x31, 0xFF, 0x3E, 0x2, 0x33, 0xFF, 0x3E, 0x2, 0x3A, 0xFF, 0xDC, 0x2, 0x3C, 0xFF, 0xE6, 0x2, 0x47, 0xFF, 0xDC, 0x2, 0x48, 0xFF, 0xDC, 0x2, 0x4A, 0xFF, 0xE8, 0x2, 0x56, 0xFF, 0xDB, 0x2, 0x58, 0xFF, 0xDC, 0x2, 0x61, 0xFF, 0xDC, 0x2, 0x68, 0x0, 0x14, 0x2, 0x6C, 0x0, 0x14, 0x2, 0x8D, 0xFF, 0xDC, 0x2, 0x99, 0xFF, 0xDC, 0x2, 0xA3, 0xFF, 0x3E, 0x2, 0xAE, 0xFF, 0xDB, 0x2, 0xAF, 0x0, 0x4, 0x2, 0xB0, 0xFF, 0xE6, 0x2, 0xB4, 0xFF, 0xDC, 0x2, 0xB8, 0xFF, 0xDC, 0x2, 0xD0, 0x0, 0x14, 0x2, 0xD9, 0xFF, 0xDC, 0x2, 0xDC, 0x0, 0x14, 0x2, 0xF7, 0xFF, 0xDC, 0x2, 0xF8, 0xFF, 0xDC, 0x3, 0x2, 0xFF, 0xDC, 0x4, 0x64, 0xFE, 0xD6, 0x4, 0x68, 0xFE, 0xD6, 0x4, 0x6F, 0xFE, 0xD6, 0x4, 0x70, 0xFE, 0xD6, 0x5, 0x5B, 0xFF, 0xCE, 0x5, 0x67, 0xFF, 0xE6, 0x5, 0x6E, 0xFF, 0xDC, 0x5, 0x70, 0xFF, 0xDB, 0x5, 0xEE, 0xFF, 0xDB, 0x5, 0xF1, 0xFF, 0x3E, 0x6, 0x2, 0xFF, 0xDB, 0x6, 0x4, 0xFF, 0xDB, 0x6, 0x6, 0xFF, 0xDB, 0x6, 0x23, 0x0, 0x14, 0x6, 0x25, 0x0, 0x14, 0x6, 0x29, 0x0, 0x14, 0x6, 0x32, 0xFF, 0xDB, 0x6, 0x6A, 0xFF, 0x3E, 0x6, 0x6B, 0xFF, 0xCE, 0x6, 0x6C, 0xFF, 0x3E, 0x6, 0x6D, 0xFF, 0xCE, 0x6, 0x6F, 0xFF, 0xCE, 0x6, 0x70, 0xFF, 0x3E, 0x6, 0x71, 0xFF, 0xCE, 0x6, 0x72, 0xFF, 0x3E, 0x6, 0x73, 0xFF, 0xCE, 0x6, 0x74, 0xFF, 0x3E, 0x6, 0x75, 0xFF, 0xCE, 0x6, 0x85, 0xFF, 0xDB, 0x6, 0x87, 0xFF, 0xDB, 0x6, 0x8F, 0xFF, 0xDC, 0x6, 0x91, 0xFF, 0xDC, 0x6, 0x96, 0x0, 0x4, 0x6, 0xA9, 0xFF, 0xDC, 0x6, 0xCB, 0xFF, 0xDC, 0x6, 0xF7, 0xFF, 0xDC, 0x7, 0x67, 0xFF, 0xA5, 0x7, 0x69, 0xFF, 0xA5, 0x7, 0xB1, 0xFF, 0xA5, 0x8, 0xCD, 0xFF, 0x3E, 0x8, 0xCE, 0xFF, 0x3E, 0x8, 0xCF, 0xFF, 0x3E, 0x8, 0xD0, 0xFF, 0x3E, 0x8, 0xD1, 0xFF, 0x3E, 0x8, 0xD2, 0xFF, 0x3E, 0x8, 0xD3, 0xFF, 0x3E, 0x8, 0xE8, 0xFF, 0xCE, 0x8, 0xE9, 0xFF, 0xCE, 0x8, 0xEA, 0xFF, 0xCE, 0x8, 0xEB, 0xFF, 0xCE, 0x8, 0xEC, 0xFF, 0xCE, 0x8, 0xED, 0xFF, 0xCE, 0x8, 0xEE, 0xFF, 0xCE, 0x8, 0xEF, 0xFF, 0xDC, 0x8, 0xF0, 0xFF, 0xDC, 0x8, 0xF1, 0xFF, 0xDC, 0x8, 0xF2, 0xFF, 0xDC, 0x8, 0xF3, 0xFF, 0xDC, 0x8, 0xF9, 0xFF, 0xDB, 0x8, 0xFA, 0xFF, 0xDB, 0x8, 0xFB, 0xFF, 0xDB, 0x8, 0xFC, 0xFF, 0xDB, 0x8, 0xFD, 0xFF, 0xDB, 0x8, 0xFE, 0xFF, 0xE8, 0x8, 0xFF, 0xFF, 0xE8, 0x9, 0x0, 0xFF, 0xE8, 0x9, 0x1, 0xFF, 0xE8, 0x9, 0x2, 0xFF, 0xE6, 0x9, 0x3, 0xFF, 0xE6, 0x9, 0x4, 0xFF, 0x3E, 0x9, 0x5, 0xFF, 0xCE, 0x9, 0x6, 0xFF, 0x3E, 0x9, 0x7, 0xFF, 0xCE, 0x9, 0x8, 0xFF, 0x3E, 0x9, 0x9, 0xFF, 0xCE, 0x9, 0xB, 0xFF, 0xDC, 0x9, 0xD, 0xFF, 0xDC, 0x9, 0xF, 0xFF, 0xDC, 0x9, 0x11, 0xFF, 0xDC, 0x9, 0x13, 0xFF, 0xDC, 0x9, 0x15, 0xFF, 0xDC, 0x9, 0x17, 0xFF, 0xDC, 0x9, 0x19, 0xFF, 0xDC, 0x9, 0x1B, 0xFF, 0xDC, 0x9, 0x1D, 0xFF, 0xDC, 0x9, 0x1F, 0xFF, 0xDC, 0x9, 0x21, 0xFF, 0xDC, 0x9, 0x23, 0xFF, 0xDC, 0x9, 0x25, 0xFF, 0xDC, 0x9, 0x33, 0xFF, 0x17, 0x9, 0x47, 0xFF, 0xDB, 0x9, 0x49, 0xFF, 0xDB, 0x9, 0x4B, 0xFF, 0xDB, 0x9, 0x5C, 0x0, 0x14, 0x9, 0x5E, 0x0, 0x14, 0x9, 0x60, 0x0, 0x14, 0x9, 0x63, 0xFF, 0xE8, 0x9, 0x65, 0xFF, 0xE8, 0x9, 0x67, 0xFF, 0xE8, 0x9, 0x69, 0xFF, 0xE8, 0x9, 0x6B, 0xFF, 0xE8, 0x9, 0x6D, 0xFF, 0xE8, 0x9, 0x71, 0xFF, 0xE6, 0x9, 0x80, 0xFF, 0xA5, 0x9, 0x81, 0xFF, 0xA5, 0x9, 0x82, 0xFF, 0xA5, 0x9, 0x83, 0xFF, 0xA5, 0x9, 0x84, 0xFF, 0xA5, 0x9, 0x85, 0xFF, 0xA5, 0x9, 0x86, 0xFF, 0xA5, 0x9, 0x9B, 0xFF, 0xA5, 0x9, 0x9C, 0xFF, 0xA5, 0x9, 0x9D, 0xFF, 0xA5, 0x9, 0xD5, 0xFF, 0x3E, 0x9, 0xDD, 0xFF, 0x3E, 0x9, 0xED, 0xFF, 0xDC, 0x9, 0xF1, 0xFF, 0xE8, 0x9, 0xF3, 0xFF, 0xDB, 0x9, 0xF5, 0xFF, 0xE6, 0x9, 0xF8, 0xFF, 0xE8, 0x9, 0xF9, 0xFF, 0xDB, 0x9, 0xFA, 0xFF, 0xE8, 0xA, 0x1, 0xFF, 0x17, 0xA, 0x5, 0xFF, 0x3E, 0xA, 0x10, 0x0, 0x14, 0xA, 0x12, 0xFF, 0xCE, 0xA, 0x13, 0xFF, 0xDC, 0xA, 0x15, 0xFF, 0xDB, 0xA, 0x17, 0xFF, 0xDC, 0xA, 0x18, 0xFF, 0xE6, 0xA, 0x1A, 0xFF, 0xDC, 0xA, 0x21, 0xFF, 0xE6, 0xA, 0x29, 0xFF, 0xE6, 0xA, 0x31, 0xFF, 0x3E, 0xA, 0x32, 0xFF, 0xCE, 0xA, 0x35, 0xFF, 0xDC, 0xA, 0x39, 0x0, 0x4, 0xA, 0x3A, 0xFF, 0xE6, 0xA, 0x3B, 0xFF, 0xDC, 0xA, 0x40, 0xFF, 0xDC, 0xA, 0x42, 0xFF, 0xE6, 0xA, 0x47, 0xFF, 0x3E, 0xA, 0x48, 0xFF, 0xCE, 0xA, 0x49, 0xFF, 0x3E, 0xA, 0x4A, 0xFF, 0xCE, 0xA, 0x4E, 0xFF, 0xDC, 0xA, 0x50, 0xFF, 0xDC, 0xA, 0x51, 0xFF, 0xDC, 0xA, 0x5B, 0xFF, 0xDB, 0xA, 0x5D, 0xFF, 0xDC, 0xA, 0x60, 0xFF, 0xDB, 0xA, 0x64, 0xFF, 0xE6, 0xA, 0x66, 0xFF, 0xE6, 0xA, 0x68, 0xFF, 0xE6, 0xA, 0x6D, 0xFF, 0xDC, 0xA, 0x6E, 0xFF, 0x3E, 0xA, 0x6F, 0xFF, 0xCE, 0xA, 0x70, 0xFF, 0x3E, 0xA, 0x71, 0xFF, 0xCE, 0xA, 0x72, 0xFF, 0x3E, 0xA, 0x73, 0xFF, 0xCE, 0xA, 0x74, 0xFF, 0x3E, 0xA, 0x75, 0xFF, 0xCE, 0xA, 0x76, 0xFF, 0x3E, 0xA, 0x77, 0xFF, 0xCE, 0xA, 0x78, 0xFF, 0x3E, 0xA, 0x79, 0xFF, 0xCE, 0xA, 0x7A, 0xFF, 0x3E, 0xA, 0x7B, 0xFF, 0xCE, 0xA, 0x7C, 0xFF, 0x3E, 0xA, 0x7D, 0xFF, 0xCE, 0xA, 0x7E, 0xFF, 0x3E, 0xA, 0x7F, 0xFF, 0xCE, 0xA, 0x80, 0xFF, 0x3E, 0xA, 0x81, 0xFF, 0xCE, 0xA, 0x82, 0xFF, 0x3E, 0xA, 0x83, 0xFF, 0xCE, 0xA, 0x84, 0xFF, 0x3E, 0xA, 0x85, 0xFF, 0xCE, 0xA, 0x87, 0xFF, 0xDC, 0xA, 0x89, 0xFF, 0xDC, 0xA, 0x8B, 0xFF, 0xDC, 0xA, 0x8D, 0xFF, 0xDC, 0xA, 0x8F, 0xFF, 0xDC, 0xA, 0x91, 0xFF, 0xDC, 0xA, 0x93, 0xFF, 0xDC, 0xA, 0x95, 0xFF, 0xDC, 0xA, 0x9B, 0xFF, 0xDB, 0xA, 0x9D, 0xFF, 0xDB, 0xA, 0x9F, 0xFF, 0xDB, 0xA, 0xA1, 0xFF, 0xDB, 0xA, 0xA3, 0xFF, 0xDB, 0xA, 0xA5, 0xFF, 0xDB, 0xA, 0xA7, 0xFF, 0xDB, 0xA, 0xA9, 0xFF, 0xDC, 0xA, 0xAB, 0xFF, 0xDC, 0xA, 0xAD, 0xFF, 0xDC, 0xA, 0xAF, 0xFF, 0xDB, 0xA, 0xB1, 0xFF, 0xDC, 0xA, 0xB3, 0xFF, 0xE8, 0xA, 0xB5, 0xFF, 0xE8, 0xA, 0xB7, 0xFF, 0xE8, 0xA, 0xB9, 0xFF, 0xE8, 0xA, 0xBB, 0xFF, 0xE8, 0xA, 0xBD, 0xFF, 0xE8, 0xA, 0xBF, 0xFF, 0xE8, 0xA, 0xC1, 0xFF, 0xE6, 0xA, 0xC3, 0xFF, 0xE6, 0xA, 0xC5, 0xFF, 0xE6, 0xA, 0xC7, 0x0, 0x14, 0xA, 0xEE, 0xFF, 0x3E, 0xA, 0xEF, 0xFF, 0xCE, 0xA, 0xF3, 0xFF, 0xDB, 0xA, 0xF5, 0xFF, 0xE8, 0xA, 0xF7, 0xFF, 0xE8, 0xA, 0xF9, 0xFF, 0xE8, 0xA, 0xFB, 0xFF, 0xE8, 0xA, 0xFD, 0xFF, 0xE8, 0xA, 0xFE, 0xFF, 0xDC, 0xA, 0xFF, 0xFF, 0x3E, 0xB, 0x0, 0xFF, 0xCE, 0xB, 0x1, 0xFF, 0x3E, 0xB, 0x2, 0xFF, 0xCE, 0xB, 0x4, 0xFF, 0xCE, 0xB, 0x6, 0xFF, 0xDC, 0xB, 0xA, 0xFF, 0xDB, 0xB, 0xC, 0xFF, 0xDB, 0xB, 0xF, 0xFF, 0xDC, 0xB, 0x14, 0xFF, 0x3E, 0xB, 0x15, 0xFF, 0xCE, 0xB, 0x16, 0xFF, 0x3E, 0xB, 0x17, 0xFF, 0xCE, 0xB, 0x19, 0xFF, 0xDC, 0xB, 0x1B, 0xFF, 0xDC, 0xB, 0x21, 0xFF, 0xDB, 0xB, 0x23, 0xFF, 0xDB, 0xB, 0x29, 0xFF, 0xE8, 0xB, 0x2B, 0xFF, 0xE8, 0xB, 0x2E, 0xFF, 0x3E, 0xB, 0x2F, 0xFF, 0xCE, 0xB, 0x33, 0xFF, 0xDB, 0xB, 0x35, 0xFF, 0xDB, 0xB, 0x37, 0xFF, 0xDB, 0xB, 0x39, 0xFF, 0xDB, 0xB, 0x3B, 0xFF, 0xE6, 0xB, 0x3C, 0xFF, 0xDB, 0xB, 0x3F, 0xFF, 0x17, 0xB, 0x42, 0xFF, 0xDC, 0xB, 0x4A, 0xFF, 0xDC, 0xB, 0x54, 0xFF, 0xDC, 0xB, 0x56, 0xFF, 0xDC, 0xB, 0x58, 0xFF, 0xDC, 0xB, 0x5A, 0xFF, 0xDC, 0xB, 0x5C, 0xFF, 0xDC, 0xB, 0x5E, 0xFF, 0xDC, 0xB, 0x60, 0xFF, 0xDC, 0xB, 0x62, 0xFF, 0xDC, 0xB, 0x64, 0xFF, 0xDC, 0xB, 0x66, 0xFF, 0xDC, 0xB, 0x68, 0xFF, 0xDC, 0xB, 0x6C, 0xFF, 0xDC, 0xB, 0x90, 0xFF, 0xDB, 0xB, 0x92, 0xFF, 0xDB, 0xB, 0x94, 0xFF, 0xDB, 0xB, 0x96, 0xFF, 0xDB, 0xB, 0xAD, 0x0, 0x14, 0xB, 0xAF, 0x0, 0x14, 0xB, 0xB1, 0x0, 0x14, 0xB, 0xB3, 0x0, 0x14, 0xB, 0xB6, 0xFF, 0xE8, 0xB, 0xB8, 0xFF, 0xE8, 0xB, 0xBA, 0xFF, 0xE8, 0xB, 0xBC, 0xFF, 0xE8, 0xB, 0xBE, 0xFF, 0xE8, 0xB, 0xBF, 0x0, 0x4, 0xB, 0xC0, 0xFF, 0xE6, 0xB, 0xC1, 0x0, 0x4, 0xB, 0xC2, 0xFF, 0xE6, 0xB, 0xCC, 0xFF, 0xE6, 0xB, 0xD6, 0xFF, 0xE6, 0xB, 0xD7, 0xFF, 0xCE, 0xB, 0xD8, 0xFF, 0xDC, 0xB, 0xD9, 0xFF, 0xDC, 0xB, 0xDA, 0xFF, 0xDC, 0xB, 0xDB, 0xFF, 0xDC, 0xB, 0xDC, 0xFF, 0xDC, 0xB, 0xDD, 0xFF, 0xDC, 0xB, 0xDE, 0xFF, 0xDC, 0xB, 0xDF, 0xFF, 0xDC, 0xC, 0x14, 0xFF, 0xDB, 0xC, 0x15, 0xFF, 0xDB, 0xC, 0x16, 0xFF, 0xDB, 0xC, 0x17, 0xFF, 0xDB, 0xC, 0x18, 0xFF, 0xDB, 0xC, 0x19, 0xFF, 0xDB, 0xC, 0x20, 0xFF, 0xE8, 0xC, 0x21, 0xFF, 0xE8, 0xC, 0x22, 0xFF, 0xE8, 0xC, 0x23, 0xFF, 0xE8, 0xC, 0x24, 0xFF, 0xE8, 0xC, 0x25, 0xFF, 0xE8, 0xC, 0x26, 0xFF, 0xE8, 0xC, 0x27, 0xFF, 0xE8, 0xC, 0x44, 0xFF, 0xDB, 0xC, 0x45, 0xFF, 0xDB, 0xC, 0x46, 0xFF, 0xE8, 0xC, 0x47, 0xFF, 0xE8, 0xC, 0x4A, 0xFF, 0xDC, 0xC, 0x4B, 0xFF, 0xDC, 0xC, 0x4C, 0xFF, 0xDC, 0xC, 0x4D, 0xFF, 0xDC, 0xC, 0x4E, 0xFF, 0xDC, 0xC, 0x4F, 0xFF, 0xDC, 0xC, 0x50, 0xFF, 0xDC, 0xC, 0x51, 0xFF, 0xDC, 0xC, 0x7A, 0xFF, 0xDC, 0xC, 0x7B, 0xFF, 0xDC, 0xC, 0x7C, 0xFF, 0xDC, 0xC, 0x7D, 0xFF, 0xDC, 0xC, 0x7E, 0xFF, 0xDC, 0xC, 0x7F, 0xFF, 0xDC, 0xC, 0x80, 0xFF, 0xDC, 0xC, 0x81, 0xFF, 0x3E, 0xC, 0x82, 0xFF, 0x3E, 0xC, 0x85, 0xFF, 0x3E, 0xC, 0x9A, 0xFF, 0xE8, 0xC, 0x9B, 0xFF, 0xE8, 0xC, 0x9C, 0xFF, 0xE8, 0xC, 0x9D, 0xFF, 0xE8, 0xC, 0xB7, 0xFF, 0xA5, 0xC, 0xBE, 0xFF, 0xA5, 0xC, 0xD6, 0xFF, 0xA5, 0x0, 0x42, 0x0, 0x39, 0xFF, 0xDC, 0x0, 0x3B, 0xFF, 0xE2, 0x0, 0x3C, 0xFF, 0xEA, 0x0, 0x3E, 0xFF, 0xCC, 0x0, 0xC2, 0xFF, 0xDC, 0x1, 0x3, 0xFF, 0xCC, 0x2, 0x68, 0xFF, 0xDC, 0x2, 0x6C, 0xFF, 0xDC, 0x2, 0xAF, 0xFF, 0xE2, 0x2, 0xD0, 0xFF, 0xDC, 0x2, 0xDC, 0xFF, 0xDC, 0x5, 0x68, 0xFF, 0xEA, 0x6, 0x23, 0xFF, 0xDC, 0x6, 0x25, 0xFF, 0xDC, 0x6, 0x29, 0xFF, 0xDC, 0x6, 0x96, 0xFF, 0xE2, 0x7, 0x67, 0x0, 0xF, 0x7, 0x69, 0x0, 0xF, 0x7, 0xB1, 0x0, 0xF, 0x8, 0xE7, 0xFF, 0xCC, 0x9, 0x5C, 0xFF, 0xDC, 0x9, 0x5E, 0xFF, 0xDC, 0x9, 0x60, 0xFF, 0xDC, 0x9, 0x6E, 0xFF, 0xEA, 0x9, 0x70, 0xFF, 0xCC, 0x9, 0x72, 0xFF, 0xCC, 0x9, 0x80, 0x0, 0xF, 0x9, 0x81, 0x0, 0xF, 0x9, 0x82, 0x0, 0xF, 0x9, 0x83, 0x0, 0xF, 0x9, 0x84, 0x0, 0xF, 0x9, 0x85, 0x0, 0xF, 0x9, 0x86, 0x0, 0xF, 0x9, 0x9B, 0x0, 0xF, 0x9, 0x9C, 0x0, 0xF, 0x9, 0x9D, 0x0, 0xF, 0x9, 0xDA, 0xFF, 0xCC, 0x9, 0xE9, 0xFF, 0xCC, 0x9, 0xEC, 0xFF, 0xCC, 0xA, 0x10, 0xFF, 0xDC, 0xA, 0x22, 0xFF, 0xEA, 0xA, 0x24, 0xFF, 0xEA, 0xA, 0x26, 0xFF, 0xEA, 0xA, 0x28, 0xFF, 0xCC, 0xA, 0x39, 0xFF, 0xE2, 0xA, 0x41, 0xFF, 0xCC, 0xA, 0xC0, 0xFF, 0xCC, 0xA, 0xC2, 0xFF, 0xCC, 0xA, 0xC4, 0xFF, 0xCC, 0xA, 0xC7, 0xFF, 0xDC, 0xA, 0xD6, 0xFF, 0xCC, 0xB, 0x4B, 0xFF, 0xEA, 0xB, 0xAD, 0xFF, 0xDC, 0xB, 0xAF, 0xFF, 0xDC, 0xB, 0xB1, 0xFF, 0xDC, 0xB, 0xB3, 0xFF, 0xDC, 0xB, 0xBF, 0xFF, 0xE2, 0xB, 0xC1, 0xFF, 0xE2, 0xB, 0xC3, 0xFF, 0xEA, 0xB, 0xC5, 0xFF, 0xEA, 0xB, 0xCB, 0xFF, 0xCC, 0xC, 0xA2, 0xFF, 0xCC, 0xC, 0xA3, 0xFF, 0xCC, 0xC, 0xB7, 0x0, 0xF, 0xC, 0xBE, 0x0, 0xF, 0xC, 0xD6, 0x0, 0xF, 0x0, 0x59, 0x0, 0x26, 0x0, 0x4, 0x0, 0x39, 0xFF, 0xD7, 0x0, 0x3B, 0xFF, 0xEC, 0x0, 0x3E, 0xFF, 0xC2, 0x0, 0xC2, 0xFF, 0xD7, 0x0, 0xFA, 0x0, 0x4, 0x1, 0x3, 0xFF, 0xC2, 0x2, 0x31, 0x0, 0x4, 0x2, 0x33, 0x0, 0x4, 0x2, 0x68, 0xFF, 0xD7, 0x2, 0x6C, 0xFF, 0xD7, 0x2, 0xA3, 0x0, 0x4, 0x2, 0xAF, 0xFF, 0xEC, 0x2, 0xD0, 0xFF, 0xD7, 0x2, 0xDC, 0xFF, 0xD7, 0x5, 0xF1, 0x0, 0x4, 0x6, 0x23, 0xFF, 0xD7, 0x6, 0x25, 0xFF, 0xD7, 0x6, 0x29, 0xFF, 0xD7, 0x6, 0x6A, 0x0, 0x4, 0x6, 0x6C, 0x0, 0x4, 0x6, 0x70, 0x0, 0x4, 0x6, 0x72, 0x0, 0x4, 0x6, 0x74, 0x0, 0x4, 0x6, 0x96, 0xFF, 0xEC, 0x8, 0xCD, 0x0, 0x4, 0x8, 0xCE, 0x0, 0x4, 0x8, 0xCF, 0x0, 0x4, 0x8, 0xD0, 0x0, 0x4, 0x8, 0xD1, 0x0, 0x4, 0x8, 0xD2, 0x0, 0x4, 0x8, 0xD3, 0x0, 0x4, 0x8, 0xE7, 0xFF, 0xC2, 0x9, 0x4, 0x0, 0x4, 0x9, 0x6, 0x0, 0x4, 0x9, 0x8, 0x0, 0x4, 0x9, 0x5C, 0xFF, 0xD7, 0x9, 0x5E, 0xFF, 0xD7, 0x9, 0x60, 0xFF, 0xD7, 0x9, 0x70, 0xFF, 0xC2, 0x9, 0x72, 0xFF, 0xC2, 0x9, 0xD5, 0x0, 0x4, 0x9, 0xDA, 0xFF, 0xC2, 0x9, 0xDD, 0x0, 0x4, 0x9, 0xE9, 0xFF, 0xC2, 0x9, 0xEC, 0xFF, 0xC2, 0xA, 0x5, 0x0, 0x4, 0xA, 0x10, 0xFF, 0xD7, 0xA, 0x28, 0xFF, 0xC2, 0xA, 0x31, 0x0, 0x4, 0xA, 0x39, 0xFF, 0xEC, 0xA, 0x41, 0xFF, 0xC2, 0xA, 0x47, 0x0, 0x4, 0xA, 0x49, 0x0, 0x4, 0xA, 0x6E, 0x0, 0x4, 0xA, 0x70, 0x0, 0x4, 0xA, 0x72, 0x0, 0x4, 0xA, 0x74, 0x0, 0x4, 0xA, 0x76, 0x0, 0x4, 0xA, 0x78, 0x0, 0x4, 0xA, 0x7A, 0x0, 0x4, 0xA, 0x7C, 0x0, 0x4, 0xA, 0x7E, 0x0, 0x4, 0xA, 0x80, 0x0, 0x4, 0xA, 0x82, 0x0, 0x4, 0xA, 0x84, 0x0, 0x4, 0xA, 0xC0, 0xFF, 0xC2, 0xA, 0xC2, 0xFF, 0xC2, 0xA, 0xC4, 0xFF, 0xC2, 0xA, 0xC7, 0xFF, 0xD7, 0xA, 0xD6, 0xFF, 0xC2, 0xA, 0xEE, 0x0, 0x4, 0xA, 0xFF, 0x0, 0x4, 0xB, 0x1, 0x0, 0x4, 0xB, 0x14, 0x0, 0x4, 0xB, 0x16, 0x0, 0x4, 0xB, 0x2E, 0x0, 0x4, 0xB, 0xAD, 0xFF, 0xD7, 0xB, 0xAF, 0xFF, 0xD7, 0xB, 0xB1, 0xFF, 0xD7, 0xB, 0xB3, 0xFF, 0xD7, 0xB, 0xBF, 0xFF, 0xEC, 0xB, 0xC1, 0xFF, 0xEC, 0xB, 0xCB, 0xFF, 0xC2, 0xC, 0x81, 0x0, 0x4, 0xC, 0x82, 0x0, 0x4, 0xC, 0x85, 0x0, 0x4, 0xC, 0xA2, 0xFF, 0xC2, 0xC, 0xA3, 0xFF, 0xC2, 0x0, 0x1B, 0x0, 0x2F, 0xFF, 0xED, 0x0, 0x3A, 0xFF, 0xED, 0x8, 0xE3, 0xFF, 0xED, 0x8, 0xE4, 0xFF, 0xED, 0x8, 0xE5, 0xFF, 0xED, 0x8, 0xE6, 0xFF, 0xED, 0x9, 0x33, 0xFF, 0xED, 0x9, 0x62, 0xFF, 0xED, 0x9, 0x64, 0xFF, 0xED, 0x9, 0x66, 0xFF, 0xED, 0x9, 0x68, 0xFF, 0xED, 0x9, 0x6A, 0xFF, 0xED, 0x9, 0x6C, 0xFF, 0xED, 0xA, 0x1, 0xFF, 0xED, 0xA, 0xB2, 0xFF, 0xED, 0xA, 0xB4, 0xFF, 0xED, 0xA, 0xF4, 0xFF, 0xED, 0xA, 0xF6, 0xFF, 0xED, 0xA, 0xF8, 0xFF, 0xED, 0xA, 0xFA, 0xFF, 0xED, 0xA, 0xFC, 0xFF, 0xED, 0xB, 0x3F, 0xFF, 0xED, 0xB, 0xB5, 0xFF, 0xED, 0xB, 0xB7, 0xFF, 0xED, 0xB, 0xB9, 0xFF, 0xED, 0xB, 0xBB, 0xFF, 0xED, 0xB, 0xBD, 0xFF, 0xED, 0x0, 0x82, 0x0, 0x7, 0x0, 0x18, 0x0, 0xC, 0x0, 0x18, 0x0, 0xE, 0x0, 0x24, 0x0, 0x42, 0x0, 0x28, 0x0, 0x48, 0xFF, 0xF0, 0x0, 0x49, 0xFF, 0xF0, 0x0, 0x4A, 0xFF, 0xF0, 0x0, 0x4C, 0xFF, 0xF0, 0x0, 0x56, 0xFF, 0xF0, 0x0, 0x62, 0x0, 0x1B, 0x0, 0x95, 0xFF, 0xF0, 0x0, 0x9F, 0xFF, 0xF0, 0x0, 0xB5, 0xFF, 0xF0, 0x0, 0xDA, 0xFF, 0xF0, 0x0, 0xDC, 0xFF, 0xF0, 0x0, 0xE4, 0xFF, 0xF0, 0x1, 0x0, 0xFF, 0xF0, 0x2, 0x2A, 0xFF, 0xF0, 0x2, 0x3A, 0xFF, 0xF0, 0x2, 0x47, 0xFF, 0xF0, 0x2, 0x48, 0xFF, 0xF0, 0x2, 0x58, 0xFF, 0xF0, 0x2, 0x61, 0xFF, 0xF0, 0x2, 0x8D, 0xFF, 0xF0, 0x2, 0x99, 0xFF, 0xF0, 0x2, 0xB4, 0xFF, 0xF0, 0x2, 0xB8, 0xFF, 0xF0, 0x2, 0xD9, 0xFF, 0xF0, 0x2, 0xF7, 0xFF, 0xF0, 0x2, 0xF8, 0xFF, 0xF0, 0x3, 0x2, 0xFF, 0xF0, 0x4, 0x62, 0x0, 0x18, 0x4, 0x63, 0x0, 0x18, 0x4, 0x65, 0x0, 0x18, 0x4, 0x66, 0x0, 0x18, 0x4, 0x67, 0x0, 0x18, 0x5, 0x6E, 0xFF, 0xF0, 0x6, 0x8F, 0xFF, 0xF0, 0x6, 0x91, 0xFF, 0xF0, 0x6, 0xA9, 0xFF, 0xF0, 0x6, 0xCB, 0xFF, 0xF0, 0x6, 0xF7, 0xFF, 0xF0, 0x8, 0xEF, 0xFF, 0xF0, 0x8, 0xF0, 0xFF, 0xF0, 0x8, 0xF1, 0xFF, 0xF0, 0x8, 0xF2, 0xFF, 0xF0, 0x8, 0xF3, 0xFF, 0xF0, 0x9, 0xB, 0xFF, 0xF0, 0x9, 0xD, 0xFF, 0xF0, 0x9, 0xF, 0xFF, 0xF0, 0x9, 0x11, 0xFF, 0xF0, 0x9, 0x13, 0xFF, 0xF0, 0x9, 0x15, 0xFF, 0xF0, 0x9, 0x17, 0xFF, 0xF0, 0x9, 0x19, 0xFF, 0xF0, 0x9, 0x1B, 0xFF, 0xF0, 0x9, 0x1D, 0xFF, 0xF0, 0x9, 0x1F, 0xFF, 0xF0, 0x9, 0x21, 0xFF, 0xF0, 0x9, 0x23, 0xFF, 0xF0, 0x9, 0x25, 0xFF, 0xF0, 0x9, 0xED, 0xFF, 0xF0, 0xA, 0x13, 0xFF, 0xF0, 0xA, 0x17, 0xFF, 0xF0, 0xA, 0x1A, 0xFF, 0xF0, 0xA, 0x2A, 0x0, 0x18, 0xA, 0x2B, 0x0, 0x18, 0xA, 0x2E, 0x0, 0x18, 0xA, 0x35, 0xFF, 0xF0, 0xA, 0x3B, 0xFF, 0xF0, 0xA, 0x40, 0xFF, 0xF0, 0xA, 0x4E, 0xFF, 0xF0, 0xA, 0x50, 0xFF, 0xF0, 0xA, 0x51, 0xFF, 0xF0, 0xA, 0x5D, 0xFF, 0xF0, 0xA, 0x6D, 0xFF, 0xF0, 0xA, 0x87, 0xFF, 0xF0, 0xA, 0x89, 0xFF, 0xF0, 0xA, 0x8B, 0xFF, 0xF0, 0xA, 0x8D, 0xFF, 0xF0, 0xA, 0x8F, 0xFF, 0xF0, 0xA, 0x91, 0xFF, 0xF0, 0xA, 0x93, 0xFF, 0xF0, 0xA, 0x95, 0xFF, 0xF0, 0xA, 0xA9, 0xFF, 0xF0, 0xA, 0xAB, 0xFF, 0xF0, 0xA, 0xAD, 0xFF, 0xF0, 0xA, 0xB1, 0xFF, 0xF0, 0xA, 0xFE, 0xFF, 0xF0, 0xB, 0x6, 0xFF, 0xF0, 0xB, 0xF, 0xFF, 0xF0, 0xB, 0x19, 0xFF, 0xF0, 0xB, 0x1B, 0xFF, 0xF0, 0xB, 0x42, 0xFF, 0xF0, 0xB, 0x4A, 0xFF, 0xF0, 0xB, 0x54, 0xFF, 0xF0, 0xB, 0x56, 0xFF, 0xF0, 0xB, 0x58, 0xFF, 0xF0, 0xB, 0x5A, 0xFF, 0xF0, 0xB, 0x5C, 0xFF, 0xF0, 0xB, 0x5E, 0xFF, 0xF0, 0xB, 0x60, 0xFF, 0xF0, 0xB, 0x62, 0xFF, 0xF0, 0xB, 0x64, 0xFF, 0xF0, 0xB, 0x66, 0xFF, 0xF0, 0xB, 0x68, 0xFF, 0xF0, 0xB, 0x6C, 0xFF, 0xF0, 0xB, 0xD8, 0xFF, 0xF0, 0xB, 0xD9, 0xFF, 0xF0, 0xB, 0xDA, 0xFF, 0xF0, 0xB, 0xDB, 0xFF, 0xF0, 0xB, 0xDC, 0xFF, 0xF0, 0xB, 0xDD, 0xFF, 0xF0, 0xB, 0xDE, 0xFF, 0xF0, 0xB, 0xDF, 0xFF, 0xF0, 0xC, 0x4A, 0xFF, 0xF0, 0xC, 0x4B, 0xFF, 0xF0, 0xC, 0x4C, 0xFF, 0xF0, 0xC, 0x4D, 0xFF, 0xF0, 0xC, 0x4E, 0xFF, 0xF0, 0xC, 0x4F, 0xFF, 0xF0, 0xC, 0x50, 0xFF, 0xF0, 0xC, 0x51, 0xFF, 0xF0, 0xC, 0x7A, 0xFF, 0xF0, 0xC, 0x7B, 0xFF, 0xF0, 0xC, 0x7C, 0xFF, 0xF0, 0xC, 0x7D, 0xFF, 0xF0, 0xC, 0x7E, 0xFF, 0xF0, 0xC, 0x7F, 0xFF, 0xF0, 0xC, 0x80, 0xFF, 0xF0, 0x0, 0x2, 0x2, 0x8C, 0xFF, 0xDF, 0x4, 0x63, 0xFF, 0xBC, 0x0, 0xAB, 0x0, 0x48, 0xFF, 0xEA, 0x0, 0x49, 0xFF, 0xEA, 0x0, 0x4A, 0xFF, 0xEA, 0x0, 0x4C, 0xFF, 0xEA, 0x0, 0x54, 0xFF, 0xF5, 0x0, 0x56, 0xFF, 0xEA, 0x0, 0x95, 0xFF, 0xEA, 0x0, 0x9F, 0xFF, 0xEA, 0x0, 0xB5, 0xFF, 0xEA, 0x0, 0xDA, 0xFF, 0xEA, 0x0, 0xDC, 0xFF, 0xEA, 0x0, 0xE4, 0xFF, 0xEA, 0x1, 0x0, 0xFF, 0xEA, 0x2, 0x2A, 0xFF, 0xEA, 0x2, 0x3A, 0xFF, 0xEA, 0x2, 0x47, 0xFF, 0xEA, 0x2, 0x48, 0xFF, 0xEA, 0x2, 0x56, 0xFF, 0xF5, 0x2, 0x58, 0xFF, 0xEA, 0x2, 0x61, 0xFF, 0xEA, 0x2, 0x8D, 0xFF, 0xEA, 0x2, 0x99, 0xFF, 0xEA, 0x2, 0xAE, 0xFF, 0xF5, 0x2, 0xB4, 0xFF, 0xEA, 0x2, 0xB8, 0xFF, 0xEA, 0x2, 0xD9, 0xFF, 0xEA, 0x2, 0xF7, 0xFF, 0xEA, 0x2, 0xF8, 0xFF, 0xEA, 0x3, 0x2, 0xFF, 0xEA, 0x5, 0x6E, 0xFF, 0xEA, 0x5, 0x70, 0xFF, 0xF5, 0x5, 0xEE, 0xFF, 0xF5, 0x6, 0x2, 0xFF, 0xF5, 0x6, 0x4, 0xFF, 0xF5, 0x6, 0x6, 0xFF, 0xF5, 0x6, 0x32, 0xFF, 0xF5, 0x6, 0x85, 0xFF, 0xF5, 0x6, 0x87, 0xFF, 0xF5, 0x6, 0x8F, 0xFF, 0xEA, 0x6, 0x91, 0xFF, 0xEA, 0x6, 0xA9, 0xFF, 0xEA, 0x6, 0xCB, 0xFF, 0xEA, 0x6, 0xF7, 0xFF, 0xEA, 0x8, 0xEF, 0xFF, 0xEA, 0x8, 0xF0, 0xFF, 0xEA, 0x8, 0xF1, 0xFF, 0xEA, 0x8, 0xF2, 0xFF, 0xEA, 0x8, 0xF3, 0xFF, 0xEA, 0x8, 0xF9, 0xFF, 0xF5, 0x8, 0xFA, 0xFF, 0xF5, 0x8, 0xFB, 0xFF, 0xF5, 0x8, 0xFC, 0xFF, 0xF5, 0x8, 0xFD, 0xFF, 0xF5, 0x9, 0xB, 0xFF, 0xEA, 0x9, 0xD, 0xFF, 0xEA, 0x9, 0xF, 0xFF, 0xEA, 0x9, 0x11, 0xFF, 0xEA, 0x9, 0x13, 0xFF, 0xEA, 0x9, 0x15, 0xFF, 0xEA, 0x9, 0x17, 0xFF, 0xEA, 0x9, 0x19, 0xFF, 0xEA, 0x9, 0x1B, 0xFF, 0xEA, 0x9, 0x1D, 0xFF, 0xEA, 0x9, 0x1F, 0xFF, 0xEA, 0x9, 0x21, 0xFF, 0xEA, 0x9, 0x23, 0xFF, 0xEA, 0x9, 0x25, 0xFF, 0xEA, 0x9, 0x47, 0xFF, 0xF5, 0x9, 0x49, 0xFF, 0xF5, 0x9, 0x4B, 0xFF, 0xF5, 0x9, 0xED, 0xFF, 0xEA, 0x9, 0xF3, 0xFF, 0xF5, 0x9, 0xF9, 0xFF, 0xF5, 0xA, 0x13, 0xFF, 0xEA, 0xA, 0x15, 0xFF, 0xF5, 0xA, 0x17, 0xFF, 0xEA, 0xA, 0x1A, 0xFF, 0xEA, 0xA, 0x35, 0xFF, 0xEA, 0xA, 0x3B, 0xFF, 0xEA, 0xA, 0x40, 0xFF, 0xEA, 0xA, 0x4E, 0xFF, 0xEA, 0xA, 0x50, 0xFF, 0xEA, 0xA, 0x51, 0xFF, 0xEA, 0xA, 0x5B, 0xFF, 0xF5, 0xA, 0x5D, 0xFF, 0xEA, 0xA, 0x60, 0xFF, 0xF5, 0xA, 0x6D, 0xFF, 0xEA, 0xA, 0x87, 0xFF, 0xEA, 0xA, 0x89, 0xFF, 0xEA, 0xA, 0x8B, 0xFF, 0xEA, 0xA, 0x8D, 0xFF, 0xEA, 0xA, 0x8F, 0xFF, 0xEA, 0xA, 0x91, 0xFF, 0xEA, 0xA, 0x93, 0xFF, 0xEA, 0xA, 0x95, 0xFF, 0xEA, 0xA, 0x9B, 0xFF, 0xF5, 0xA, 0x9D, 0xFF, 0xF5, 0xA, 0x9F, 0xFF, 0xF5, 0xA, 0xA1, 0xFF, 0xF5, 0xA, 0xA3, 0xFF, 0xF5, 0xA, 0xA5, 0xFF, 0xF5, 0xA, 0xA7, 0xFF, 0xF5, 0xA, 0xA9, 0xFF, 0xEA, 0xA, 0xAB, 0xFF, 0xEA, 0xA, 0xAD, 0xFF, 0xEA, 0xA, 0xAF, 0xFF, 0xF5, 0xA, 0xB1, 0xFF, 0xEA, 0xA, 0xF3, 0xFF, 0xF5, 0xA, 0xFE, 0xFF, 0xEA, 0xB, 0x6, 0xFF, 0xEA, 0xB, 0xA, 0xFF, 0xF5, 0xB, 0xC, 0xFF, 0xF5, 0xB, 0xF, 0xFF, 0xEA, 0xB, 0x19, 0xFF, 0xEA, 0xB, 0x1B, 0xFF, 0xEA, 0xB, 0x21, 0xFF, 0xF5, 0xB, 0x23, 0xFF, 0xF5, 0xB, 0x33, 0xFF, 0xF5, 0xB, 0x35, 0xFF, 0xF5, 0xB, 0x37, 0xFF, 0xF5, 0xB, 0x39, 0xFF, 0xF5, 0xB, 0x3C, 0xFF, 0xF5, 0xB, 0x42, 0xFF, 0xEA, 0xB, 0x4A, 0xFF, 0xEA, 0xB, 0x54, 0xFF, 0xEA, 0xB, 0x56, 0xFF, 0xEA, 0xB, 0x58, 0xFF, 0xEA, 0xB, 0x5A, 0xFF, 0xEA, 0xB, 0x5C, 0xFF, 0xEA, 0xB, 0x5E, 0xFF, 0xEA, 0xB, 0x60, 0xFF, 0xEA, 0xB, 0x62, 0xFF, 0xEA, 0xB, 0x64, 0xFF, 0xEA, 0xB, 0x66, 0xFF, 0xEA, 0xB, 0x68, 0xFF, 0xEA, 0xB, 0x6C, 0xFF, 0xEA, 0xB, 0x90, 0xFF, 0xF5, 0xB, 0x92, 0xFF, 0xF5, 0xB, 0x94, 0xFF, 0xF5, 0xB, 0x96, 0xFF, 0xF5, 0xB, 0xD8, 0xFF, 0xEA, 0xB, 0xD9, 0xFF, 0xEA, 0xB, 0xDA, 0xFF, 0xEA, 0xB, 0xDB, 0xFF, 0xEA, 0xB, 0xDC, 0xFF, 0xEA, 0xB, 0xDD, 0xFF, 0xEA, 0xB, 0xDE, 0xFF, 0xEA, 0xB, 0xDF, 0xFF, 0xEA, 0xC, 0x14, 0xFF, 0xF5, 0xC, 0x15, 0xFF, 0xF5, 0xC, 0x16, 0xFF, 0xF5, 0xC, 0x17, 0xFF, 0xF5, 0xC, 0x18, 0xFF, 0xF5, 0xC, 0x19, 0xFF, 0xF5, 0xC, 0x44, 0xFF, 0xF5, 0xC, 0x45, 0xFF, 0xF5, 0xC, 0x4A, 0xFF, 0xEA, 0xC, 0x4B, 0xFF, 0xEA, 0xC, 0x4C, 0xFF, 0xEA, 0xC, 0x4D, 0xFF, 0xEA, 0xC, 0x4E, 0xFF, 0xEA, 0xC, 0x4F, 0xFF, 0xEA, 0xC, 0x50, 0xFF, 0xEA, 0xC, 0x51, 0xFF, 0xEA, 0xC, 0x7A, 0xFF, 0xEA, 0xC, 0x7B, 0xFF, 0xEA, 0xC, 0x7C, 0xFF, 0xEA, 0xC, 0x7D, 0xFF, 0xEA, 0xC, 0x7E, 0xFF, 0xEA, 0xC, 0x7F, 0xFF, 0xEA, 0xC, 0x80, 0xFF, 0xEA, 0x0, 0x38, 0x0, 0x54, 0xFF, 0xE5, 0x0, 0x59, 0x0, 0xF, 0x2, 0x56, 0xFF, 0xE5, 0x2, 0xAE, 0xFF, 0xE5, 0x4, 0x63, 0x0, 0x1E, 0x5, 0x70, 0xFF, 0xE5, 0x5, 0xEE, 0xFF, 0xE5, 0x6, 0x2, 0xFF, 0xE5, 0x6, 0x4, 0xFF, 0xE5, 0x6, 0x6, 0xFF, 0xE5, 0x6, 0x32, 0xFF, 0xE5, 0x6, 0x85, 0xFF, 0xE5, 0x6, 0x87, 0xFF, 0xE5, 0x8, 0xF9, 0xFF, 0xE5, 0x8, 0xFA, 0xFF, 0xE5, 0x8, 0xFB, 0xFF, 0xE5, 0x8, 0xFC, 0xFF, 0xE5, 0x8, 0xFD, 0xFF, 0xE5, 0x9, 0x47, 0xFF, 0xE5, 0x9, 0x49, 0xFF, 0xE5, 0x9, 0x4B, 0xFF, 0xE5, 0x9, 0xF3, 0xFF, 0xE5, 0x9, 0xF9, 0xFF, 0xE5, 0xA, 0x15, 0xFF, 0xE5, 0xA, 0x5B, 0xFF, 0xE5, 0xA, 0x60, 0xFF, 0xE5, 0xA, 0x9B, 0xFF, 0xE5, 0xA, 0x9D, 0xFF, 0xE5, 0xA, 0x9F, 0xFF, 0xE5, 0xA, 0xA1, 0xFF, 0xE5, 0xA, 0xA3, 0xFF, 0xE5, 0xA, 0xA5, 0xFF, 0xE5, 0xA, 0xA7, 0xFF, 0xE5, 0xA, 0xAF, 0xFF, 0xE5, 0xA, 0xF3, 0xFF, 0xE5, 0xB, 0xA, 0xFF, 0xE5, 0xB, 0xC, 0xFF, 0xE5, 0xB, 0x21, 0xFF, 0xE5, 0xB, 0x23, 0xFF, 0xE5, 0xB, 0x33, 0xFF, 0xE5, 0xB, 0x35, 0xFF, 0xE5, 0xB, 0x37, 0xFF, 0xE5, 0xB, 0x39, 0xFF, 0xE5, 0xB, 0x3C, 0xFF, 0xE5, 0xB, 0x90, 0xFF, 0xE5, 0xB, 0x92, 0xFF, 0xE5, 0xB, 0x94, 0xFF, 0xE5, 0xB, 0x96, 0xFF, 0xE5, 0xC, 0x14, 0xFF, 0xE5, 0xC, 0x15, 0xFF, 0xE5, 0xC, 0x16, 0xFF, 0xE5, 0xC, 0x17, 0xFF, 0xE5, 0xC, 0x18, 0xFF, 0xE5, 0xC, 0x19, 0xFF, 0xE5, 0xC, 0x44, 0xFF, 0xE5, 0xC, 0x45, 0xFF, 0xE5, 0x0, 0x6, 0x0, 0x11, 0xFF, 0x9C, 0x0, 0x13, 0xFF, 0x9C, 0x4, 0x64, 0xFF, 0x9C, 0x4, 0x68, 0xFF, 0x9C, 0x4, 0x6F, 0xFF, 0x9C, 0x4, 0x70, 0xFF, 0x9C, 0x0, 0x1B, 0x0, 0x2F, 0xFF, 0xEA, 0x0, 0x3A, 0xFF, 0xEA, 0x8, 0xE3, 0xFF, 0xEA, 0x8, 0xE4, 0xFF, 0xEA, 0x8, 0xE5, 0xFF, 0xEA, 0x8, 0xE6, 0xFF, 0xEA, 0x9, 0x33, 0xFF, 0xEA, 0x9, 0x62, 0xFF, 0xEA, 0x9, 0x64, 0xFF, 0xEA, 0x9, 0x66, 0xFF, 0xEA, 0x9, 0x68, 0xFF, 0xEA, 0x9, 0x6A, 0xFF, 0xEA, 0x9, 0x6C, 0xFF, 0xEA, 0xA, 0x1, 0xFF, 0xEA, 0xA, 0xB2, 0xFF, 0xEA, 0xA, 0xB4, 0xFF, 0xEA, 0xA, 0xF4, 0xFF, 0xEA, 0xA, 0xF6, 0xFF, 0xEA, 0xA, 0xF8, 0xFF, 0xEA, 0xA, 0xFA, 0xFF, 0xEA, 0xA, 0xFC, 0xFF, 0xEA, 0xB, 0x3F, 0xFF, 0xEA, 0xB, 0xB5, 0xFF, 0xEA, 0xB, 0xB7, 0xFF, 0xEA, 0xB, 0xB9, 0xFF, 0xEA, 0xB, 0xBB, 0xFF, 0xEA, 0xB, 0xBD, 0xFF, 0xEA, 0x0, 0x24, 0x0, 0x7, 0xFF, 0xE6, 0x0, 0xC, 0xFF, 0xE6, 0x0, 0x5B, 0xFF, 0xF2, 0x0, 0x5E, 0xFF, 0xF2, 0x2, 0x3C, 0xFF, 0xF2, 0x2, 0x8C, 0xFF, 0xF4, 0x2, 0xB0, 0xFF, 0xF2, 0x4, 0x62, 0xFF, 0xE6, 0x4, 0x63, 0xFF, 0xE6, 0x4, 0x65, 0xFF, 0xE6, 0x4, 0x66, 0xFF, 0xE6, 0x4, 0x67, 0xFF, 0xE6, 0x5, 0x67, 0xFF, 0xF2, 0x9, 0x2, 0xFF, 0xF2, 0x9, 0x3, 0xFF, 0xF2, 0x9, 0x71, 0xFF, 0xF2, 0x9, 0xF5, 0xFF, 0xF2, 0xA, 0x18, 0xFF, 0xF2, 0xA, 0x21, 0xFF, 0xF2, 0xA, 0x29, 0xFF, 0xF2, 0xA, 0x2A, 0xFF, 0xE6, 0xA, 0x2B, 0xFF, 0xE6, 0xA, 0x2E, 0xFF, 0xE6, 0xA, 0x3A, 0xFF, 0xF2, 0xA, 0x42, 0xFF, 0xF2, 0xA, 0x64, 0xFF, 0xF2, 0xA, 0x66, 0xFF, 0xF2, 0xA, 0x68, 0xFF, 0xF2, 0xA, 0xC1, 0xFF, 0xF2, 0xA, 0xC3, 0xFF, 0xF2, 0xA, 0xC5, 0xFF, 0xF2, 0xB, 0x3B, 0xFF, 0xF2, 0xB, 0xC0, 0xFF, 0xF2, 0xB, 0xC2, 0xFF, 0xF2, 0xB, 0xCC, 0xFF, 0xF2, 0xB, 0xD6, 0xFF, 0xF2, 0x0, 0x62, 0x0, 0x28, 0xFF, 0xF2, 0x0, 0x2C, 0xFF, 0xF2, 0x0, 0x34, 0xFF, 0xF2, 0x0, 0x36, 0xFF, 0xF2, 0x0, 0x84, 0xFF, 0xF2, 0x0, 0x94, 0xFF, 0xF2, 0x0, 0x9E, 0xFF, 0xF2, 0x0, 0xAA, 0xFF, 0xF2, 0x0, 0xB4, 0xFF, 0xF2, 0x0, 0xB6, 0xFF, 0xF2, 0x0, 0xFF, 0xFF, 0xF2, 0x2, 0x32, 0xFF, 0xF2, 0x2, 0x43, 0x0, 0xE, 0x2, 0x55, 0xFF, 0xF2, 0x2, 0x57, 0xFF, 0xF2, 0x2, 0x66, 0xFF, 0xF2, 0x2, 0x69, 0xFF, 0xF2, 0x2, 0x9E, 0xFF, 0xF2, 0x2, 0xAD, 0xFF, 0xF2, 0x2, 0xB1, 0xFF, 0xF2, 0x2, 0xB3, 0xFF, 0xF2, 0x2, 0xB5, 0xFF, 0xF2, 0x2, 0xB7, 0xFF, 0xF2, 0x2, 0xD8, 0xFF, 0xF2, 0x3, 0x1, 0xFF, 0xF2, 0x5, 0x63, 0xFF, 0xF2, 0x5, 0xE5, 0xFF, 0xF2, 0x5, 0xED, 0xFF, 0xF2, 0x6, 0x1, 0xFF, 0xF2, 0x6, 0x3, 0xFF, 0xF2, 0x6, 0x5, 0xFF, 0xF2, 0x6, 0x31, 0xFF, 0xF2, 0x6, 0x33, 0xFF, 0xF2, 0x6, 0x84, 0xFF, 0xF2, 0x6, 0x86, 0xFF, 0xF2, 0x6, 0x8E, 0xFF, 0xF2, 0x6, 0x90, 0xFF, 0xF2, 0x6, 0xE3, 0xFF, 0xF2, 0x7, 0xCF, 0xFF, 0xF2, 0x7, 0xD0, 0xFF, 0xF2, 0x7, 0xD2, 0xFF, 0xF2, 0x7, 0xD3, 0xFF, 0xF2, 0x8, 0xD4, 0xFF, 0xF2, 0x8, 0xDE, 0xFF, 0xF2, 0x8, 0xDF, 0xFF, 0xF2, 0x8, 0xE0, 0xFF, 0xF2, 0x8, 0xE1, 0xFF, 0xF2, 0x8, 0xE2, 0xFF, 0xF2, 0x9, 0xA, 0xFF, 0xF2, 0x9, 0xC, 0xFF, 0xF2, 0x9, 0xE, 0xFF, 0xF2, 0x9, 0x10, 0xFF, 0xF2, 0x9, 0x1E, 0xFF, 0xF2, 0x9, 0x20, 0xFF, 0xF2, 0x9, 0x22, 0xFF, 0xF2, 0x9, 0x24, 0xFF, 0xF2, 0x9, 0x46, 0xFF, 0xF2, 0x9, 0x48, 0xFF, 0xF2, 0x9, 0x4A, 0xFF, 0xF2, 0x9, 0x7B, 0xFF, 0xF2, 0x9, 0xD9, 0xFF, 0xF2, 0x9, 0xE6, 0xFF, 0xF2, 0xA, 0xC, 0xFF, 0xF2, 0xA, 0xF, 0xFF, 0xF2, 0xA, 0x3C, 0xFF, 0xF2, 0xA, 0x3F, 0xFF, 0xF2, 0xA, 0x5A, 0xFF, 0xF2, 0xA, 0x5C, 0xFF, 0xF2, 0xA, 0x5E, 0xFF, 0xF2, 0xA, 0x5F, 0xFF, 0xF2, 0xA, 0x9A, 0xFF, 0xF2, 0xA, 0x9C, 0xFF, 0xF2, 0xA, 0x9E, 0xFF, 0xF2, 0xA, 0xA0, 0xFF, 0xF2, 0xA, 0xA2, 0xFF, 0xF2, 0xA, 0xA4, 0xFF, 0xF2, 0xA, 0xA6, 0xFF, 0xF2, 0xA, 0xA8, 0xFF, 0xF2, 0xA, 0xAA, 0xFF, 0xF2, 0xA, 0xAC, 0xFF, 0xF2, 0xA, 0xAE, 0xFF, 0xF2, 0xA, 0xB0, 0xFF, 0xF2, 0xA, 0xF2, 0xFF, 0xF2, 0xB, 0x9, 0xFF, 0xF2, 0xB, 0xB, 0xFF, 0xF2, 0xB, 0x20, 0xFF, 0xF2, 0xB, 0x22, 0xFF, 0xF2, 0xB, 0x32, 0xFF, 0xF2, 0xB, 0x34, 0xFF, 0xF2, 0xB, 0x36, 0xFF, 0xF2, 0xB, 0x38, 0xFF, 0xF2, 0xB, 0x49, 0xFF, 0xF2, 0xB, 0x53, 0xFF, 0xF2, 0xB, 0x6B, 0xFF, 0xF2, 0xB, 0x8F, 0xFF, 0xF2, 0xB, 0x91, 0xFF, 0xF2, 0xB, 0x93, 0xFF, 0xF2, 0xB, 0x95, 0xFF, 0xF2, 0x0, 0x63, 0x0, 0x28, 0xFF, 0xE4, 0x0, 0x2C, 0xFF, 0xE4, 0x0, 0x34, 0xFF, 0xE4, 0x0, 0x36, 0xFF, 0xE4, 0x0, 0x84, 0xFF, 0xE4, 0x0, 0x94, 0xFF, 0xE4, 0x0, 0x9E, 0xFF, 0xE4, 0x0, 0xAA, 0xFF, 0xE4, 0x0, 0xB4, 0xFF, 0xE4, 0x0, 0xB6, 0xFF, 0xE4, 0x0, 0xFF, 0xFF, 0xE4, 0x2, 0x32, 0xFF, 0xE4, 0x2, 0x37, 0xFF, 0xBD, 0x2, 0x43, 0x0, 0x11, 0x2, 0x55, 0xFF, 0xE4, 0x2, 0x57, 0xFF, 0xE4, 0x2, 0x66, 0xFF, 0xE4, 0x2, 0x69, 0xFF, 0xE4, 0x2, 0x9E, 0xFF, 0xE4, 0x2, 0xAD, 0xFF, 0xE4, 0x2, 0xB1, 0xFF, 0xE4, 0x2, 0xB3, 0xFF, 0xE4, 0x2, 0xB5, 0xFF, 0xE4, 0x2, 0xB7, 0xFF, 0xE4, 0x2, 0xD8, 0xFF, 0xE4, 0x3, 0x1, 0xFF, 0xE4, 0x5, 0x63, 0xFF, 0xE4, 0x5, 0xE5, 0xFF, 0xE4, 0x5, 0xED, 0xFF, 0xE4, 0x6, 0x1, 0xFF, 0xE4, 0x6, 0x3, 0xFF, 0xE4, 0x6, 0x5, 0xFF, 0xE4, 0x6, 0x31, 0xFF, 0xE4, 0x6, 0x33, 0xFF, 0xE4, 0x6, 0x84, 0xFF, 0xE4, 0x6, 0x86, 0xFF, 0xE4, 0x6, 0x8E, 0xFF, 0xE4, 0x6, 0x90, 0xFF, 0xE4, 0x6, 0xE3, 0xFF, 0xE4, 0x7, 0xCF, 0xFF, 0xE4, 0x7, 0xD0, 0xFF, 0xE4, 0x7, 0xD2, 0xFF, 0xE4, 0x7, 0xD3, 0xFF, 0xE4, 0x8, 0xD4, 0xFF, 0xE4, 0x8, 0xDE, 0xFF, 0xE4, 0x8, 0xDF, 0xFF, 0xE4, 0x8, 0xE0, 0xFF, 0xE4, 0x8, 0xE1, 0xFF, 0xE4, 0x8, 0xE2, 0xFF, 0xE4, 0x9, 0xA, 0xFF, 0xE4, 0x9, 0xC, 0xFF, 0xE4, 0x9, 0xE, 0xFF, 0xE4, 0x9, 0x10, 0xFF, 0xE4, 0x9, 0x1E, 0xFF, 0xE4, 0x9, 0x20, 0xFF, 0xE4, 0x9, 0x22, 0xFF, 0xE4, 0x9, 0x24, 0xFF, 0xE4, 0x9, 0x46, 0xFF, 0xE4, 0x9, 0x48, 0xFF, 0xE4, 0x9, 0x4A, 0xFF, 0xE4, 0x9, 0x7B, 0xFF, 0xE4, 0x9, 0xD9, 0xFF, 0xE4, 0x9, 0xE6, 0xFF, 0xE4, 0xA, 0xC, 0xFF, 0xE4, 0xA, 0xF, 0xFF, 0xE4, 0xA, 0x3C, 0xFF, 0xE4, 0xA, 0x3F, 0xFF, 0xE4, 0xA, 0x5A, 0xFF, 0xE4, 0xA, 0x5C, 0xFF, 0xE4, 0xA, 0x5E, 0xFF, 0xE4, 0xA, 0x5F, 0xFF, 0xE4, 0xA, 0x9A, 0xFF, 0xE4, 0xA, 0x9C, 0xFF, 0xE4, 0xA, 0x9E, 0xFF, 0xE4, 0xA, 0xA0, 0xFF, 0xE4, 0xA, 0xA2, 0xFF, 0xE4, 0xA, 0xA4, 0xFF, 0xE4, 0xA, 0xA6, 0xFF, 0xE4, 0xA, 0xA8, 0xFF, 0xE4, 0xA, 0xAA, 0xFF, 0xE4, 0xA, 0xAC, 0xFF, 0xE4, 0xA, 0xAE, 0xFF, 0xE4, 0xA, 0xB0, 0xFF, 0xE4, 0xA, 0xF2, 0xFF, 0xE4, 0xB, 0x9, 0xFF, 0xE4, 0xB, 0xB, 0xFF, 0xE4, 0xB, 0x20, 0xFF, 0xE4, 0xB, 0x22, 0xFF, 0xE4, 0xB, 0x32, 0xFF, 0xE4, 0xB, 0x34, 0xFF, 0xE4, 0xB, 0x36, 0xFF, 0xE4, 0xB, 0x38, 0xFF, 0xE4, 0xB, 0x49, 0xFF, 0xE4, 0xB, 0x53, 0xFF, 0xE4, 0xB, 0x6B, 0xFF, 0xE4, 0xB, 0x8F, 0xFF, 0xE4, 0xB, 0x91, 0xFF, 0xE4, 0xB, 0x93, 0xFF, 0xE4, 0xB, 0x95, 0xFF, 0xE4, 0x0, 0x4D, 0x0, 0x26, 0xFF, 0xE2, 0x0, 0x3D, 0xFF, 0xCE, 0x0, 0x3E, 0xFF, 0xCF, 0x0, 0xFA, 0xFF, 0xE2, 0x1, 0x3, 0xFF, 0xCF, 0x2, 0x31, 0xFF, 0xE2, 0x2, 0x33, 0xFF, 0xE2, 0x2, 0x43, 0xFF, 0xE0, 0x2, 0x70, 0xFF, 0xCE, 0x2, 0xA3, 0xFF, 0xE2, 0x2, 0xCA, 0xFF, 0xCE, 0x2, 0xDA, 0xFF, 0xCE, 0x2, 0xF4, 0xFF, 0xCE, 0x5, 0xF1, 0xFF, 0xE2, 0x6, 0x6A, 0xFF, 0xE2, 0x6, 0x6C, 0xFF, 0xE2, 0x6, 0x70, 0xFF, 0xE2, 0x6, 0x72, 0xFF, 0xE2, 0x6, 0x74, 0xFF, 0xE2, 0x8, 0xCD, 0xFF, 0xE2, 0x8, 0xCE, 0xFF, 0xE2, 0x8, 0xCF, 0xFF, 0xE2, 0x8, 0xD0, 0xFF, 0xE2, 0x8, 0xD1, 0xFF, 0xE2, 0x8, 0xD2, 0xFF, 0xE2, 0x8, 0xD3, 0xFF, 0xE2, 0x8, 0xE7, 0xFF, 0xCF, 0x9, 0x4, 0xFF, 0xE2, 0x9, 0x6, 0xFF, 0xE2, 0x9, 0x8, 0xFF, 0xE2, 0x9, 0x70, 0xFF, 0xCF, 0x9, 0x72, 0xFF, 0xCF, 0x9, 0xD5, 0xFF, 0xE2, 0x9, 0xDA, 0xFF, 0xCF, 0x9, 0xDD, 0xFF, 0xE2, 0x9, 0xE9, 0xFF, 0xCF, 0x9, 0xEA, 0xFF, 0xCE, 0x9, 0xEC, 0xFF, 0xCF, 0xA, 0x5, 0xFF, 0xE2, 0xA, 0x11, 0xFF, 0xCE, 0xA, 0x28, 0xFF, 0xCF, 0xA, 0x31, 0xFF, 0xE2, 0xA, 0x41, 0xFF, 0xCF, 0xA, 0x44, 0xFF, 0xCE, 0xA, 0x47, 0xFF, 0xE2, 0xA, 0x49, 0xFF, 0xE2, 0xA, 0x52, 0xFF, 0xCE, 0xA, 0x6E, 0xFF, 0xE2, 0xA, 0x70, 0xFF, 0xE2, 0xA, 0x72, 0xFF, 0xE2, 0xA, 0x74, 0xFF, 0xE2, 0xA, 0x76, 0xFF, 0xE2, 0xA, 0x78, 0xFF, 0xE2, 0xA, 0x7A, 0xFF, 0xE2, 0xA, 0x7C, 0xFF, 0xE2, 0xA, 0x7E, 0xFF, 0xE2, 0xA, 0x80, 0xFF, 0xE2, 0xA, 0x82, 0xFF, 0xE2, 0xA, 0x84, 0xFF, 0xE2, 0xA, 0xC0, 0xFF, 0xCF, 0xA, 0xC2, 0xFF, 0xCF, 0xA, 0xC4, 0xFF, 0xCF, 0xA, 0xD6, 0xFF, 0xCF, 0xA, 0xEE, 0xFF, 0xE2, 0xA, 0xFF, 0xFF, 0xE2, 0xB, 0x1, 0xFF, 0xE2, 0xB, 0x14, 0xFF, 0xE2, 0xB, 0x16, 0xFF, 0xE2, 0xB, 0x2E, 0xFF, 0xE2, 0xB, 0xC7, 0xFF, 0xCE, 0xB, 0xC9, 0xFF, 0xCE, 0xB, 0xCB, 0xFF, 0xCF, 0xC, 0x81, 0xFF, 0xE2, 0xC, 0x82, 0xFF, 0xE2, 0xC, 0x85, 0xFF, 0xE2, 0xC, 0xA2, 0xFF, 0xCF, 0xC, 0xA3, 0xFF, 0xCF, 0x0, 0x37, 0x0, 0x11, 0xFF, 0x62, 0x0, 0x13, 0xFF, 0x62, 0x0, 0x26, 0xFF, 0xC9, 0x0, 0xFA, 0xFF, 0xC9, 0x2, 0x31, 0xFF, 0xC9, 0x2, 0x33, 0xFF, 0xC9, 0x2, 0x46, 0xFF, 0xF1, 0x2, 0xA3, 0xFF, 0xC9, 0x4, 0x64, 0xFF, 0x62, 0x4, 0x68, 0xFF, 0x62, 0x4, 0x6F, 0xFF, 0x62, 0x4, 0x70, 0xFF, 0x62, 0x5, 0xF1, 0xFF, 0xC9, 0x6, 0x6A, 0xFF, 0xC9, 0x6, 0x6C, 0xFF, 0xC9, 0x6, 0x70, 0xFF, 0xC9, 0x6, 0x72, 0xFF, 0xC9, 0x6, 0x74, 0xFF, 0xC9, 0x8, 0xCD, 0xFF, 0xC9, 0x8, 0xCE, 0xFF, 0xC9, 0x8, 0xCF, 0xFF, 0xC9, 0x8, 0xD0, 0xFF, 0xC9, 0x8, 0xD1, 0xFF, 0xC9, 0x8, 0xD2, 0xFF, 0xC9, 0x8, 0xD3, 0xFF, 0xC9, 0x9, 0x4, 0xFF, 0xC9, 0x9, 0x6, 0xFF, 0xC9, 0x9, 0x8, 0xFF, 0xC9, 0x9, 0xD5, 0xFF, 0xC9, 0x9, 0xDD, 0xFF, 0xC9, 0xA, 0x5, 0xFF, 0xC9, 0xA, 0x31, 0xFF, 0xC9, 0xA, 0x47, 0xFF, 0xC9, 0xA, 0x49, 0xFF, 0xC9, 0xA, 0x6E, 0xFF, 0xC9, 0xA, 0x70, 0xFF, 0xC9, 0xA, 0x72, 0xFF, 0xC9, 0xA, 0x74, 0xFF, 0xC9, 0xA, 0x76, 0xFF, 0xC9, 0xA, 0x78, 0xFF, 0xC9, 0xA, 0x7A, 0xFF, 0xC9, 0xA, 0x7C, 0xFF, 0xC9, 0xA, 0x7E, 0xFF, 0xC9, 0xA, 0x80, 0xFF, 0xC9, 0xA, 0x82, 0xFF, 0xC9, 0xA, 0x84, 0xFF, 0xC9, 0xA, 0xEE, 0xFF, 0xC9, 0xA, 0xFF, 0xFF, 0xC9, 0xB, 0x1, 0xFF, 0xC9, 0xB, 0x14, 0xFF, 0xC9, 0xB, 0x16, 0xFF, 0xC9, 0xB, 0x2E, 0xFF, 0xC9, 0xC, 0x81, 0xFF, 0xC9, 0xC, 0x82, 0xFF, 0xC9, 0xC, 0x85, 0xFF, 0xC9, 0x0, 0x1, 0x2, 0x43, 0x0, 0x1A, 0x0, 0x2, 0x2, 0x49, 0xFF, 0xF8, 0x2, 0x8C, 0xFF, 0xF5, 0x1, 0x3E, 0x0, 0x48, 0xFF, 0xD9, 0x0, 0x49, 0xFF, 0xD9, 0x0, 0x4A, 0xFF, 0xD9, 0x0, 0x4C, 0xFF, 0xD9, 0x0, 0x52, 0xFF, 0xD1, 0x0, 0x53, 0xFF, 0xD1, 0x0, 0x54, 0xFF, 0xD2, 0x0, 0x55, 0xFF, 0xD1, 0x0, 0x56, 0xFF, 0xD9, 0x0, 0x5A, 0xFF, 0xDA, 0x0, 0x5B, 0xFF, 0xDF, 0x0, 0x5E, 0xFF, 0xDF, 0x0, 0x95, 0xFF, 0xD9, 0x0, 0x9F, 0xFF, 0xD9, 0x0, 0xB5, 0xFF, 0xD9, 0x0, 0xC4, 0xFF, 0xDA, 0x0, 0xDA, 0xFF, 0xD9, 0x0, 0xDC, 0xFF, 0xD9, 0x0, 0xE4, 0xFF, 0xD9, 0x0, 0xEA, 0xFF, 0xD1, 0x1, 0x0, 0xFF, 0xD9, 0x2, 0x28, 0xFF, 0xD1, 0x2, 0x2A, 0xFF, 0xD9, 0x2, 0x3A, 0xFF, 0xD9, 0x2, 0x3C, 0xFF, 0xDF, 0x2, 0x3D, 0xFF, 0xF8, 0x2, 0x3E, 0xFF, 0xE4, 0x2, 0x40, 0xFF, 0xD1, 0x2, 0x41, 0xFF, 0xE9, 0x2, 0x42, 0xFF, 0xE7, 0x2, 0x44, 0xFF, 0xEF, 0x2, 0x45, 0xFF, 0xE5, 0x2, 0x47, 0xFF, 0xD9, 0x2, 0x48, 0xFF, 0xD9, 0x2, 0x49, 0xFF, 0xE1, 0x2, 0x4A, 0xFF, 0xDA, 0x2, 0x4B, 0xFF, 0xCA, 0x2, 0x4C, 0xFF, 0xD0, 0x2, 0x4D, 0xFF, 0xD8, 0x2, 0x56, 0xFF, 0xD2, 0x2, 0x58, 0xFF, 0xD9, 0x2, 0x61, 0xFF, 0xD9, 0x2, 0x82, 0xFF, 0xD1, 0x2, 0x86, 0xFF, 0xD1, 0x2, 0x87, 0xFF, 0xD1, 0x2, 0x89, 0xFF, 0xD1, 0x2, 0x8A, 0xFF, 0xD1, 0x2, 0x8B, 0xFF, 0xD1, 0x2, 0x8D, 0xFF, 0xD9, 0x2, 0x8E, 0xFF, 0xD1, 0x2, 0x90, 0xFF, 0xD1, 0x2, 0x91, 0xFF, 0xD1, 0x2, 0x94, 0xFF, 0xD1, 0x2, 0x96, 0xFF, 0xD1, 0x2, 0x99, 0xFF, 0xD9, 0x2, 0x9B, 0xFF, 0xD1, 0x2, 0xAE, 0xFF, 0xD2, 0x2, 0xB0, 0xFF, 0xDF, 0x2, 0xB4, 0xFF, 0xD9, 0x2, 0xB8, 0xFF, 0xD9, 0x2, 0xC2, 0xFF, 0xD1, 0x2, 0xCD, 0xFF, 0xD1, 0x2, 0xD3, 0xFF, 0xD1, 0x2, 0xD5, 0xFF, 0xD1, 0x2, 0xD9, 0xFF, 0xD9, 0x2, 0xEA, 0xFF, 0xD1, 0x2, 0xEC, 0xFF, 0xD1, 0x2, 0xEE, 0xFF, 0xD1, 0x2, 0xF3, 0xFF, 0xD1, 0x2, 0xF7, 0xFF, 0xD9, 0x2, 0xF8, 0xFF, 0xD9, 0x3, 0x2, 0xFF, 0xD9, 0x3, 0xF, 0xFF, 0xD1, 0x3, 0x13, 0xFF, 0xD1, 0x5, 0x67, 0xFF, 0xDF, 0x5, 0x6E, 0xFF, 0xD9, 0x5, 0x70, 0xFF, 0xD2, 0x5, 0xEE, 0xFF, 0xD2, 0x5, 0xF0, 0xFF, 0xD1, 0x6, 0x0, 0xFF, 0xD1, 0x6, 0x2, 0xFF, 0xD2, 0x6, 0x4, 0xFF, 0xD2, 0x6, 0x6, 0xFF, 0xD2, 0x6, 0x28, 0xFF, 0xD1, 0x6, 0x30, 0xFF, 0xD1, 0x6, 0x32, 0xFF, 0xD2, 0x6, 0x85, 0xFF, 0xD2, 0x6, 0x87, 0xFF, 0xD2, 0x6, 0x8F, 0xFF, 0xD9, 0x6, 0x91, 0xFF, 0xD9, 0x6, 0xA9, 0xFF, 0xD9, 0x6, 0xAB, 0xFF, 0xD1, 0x6, 0xAC, 0xFF, 0xD1, 0x6, 0xCB, 0xFF, 0xD9, 0x6, 0xF7, 0xFF, 0xD9, 0x6, 0xFB, 0xFF, 0xD1, 0x6, 0xFC, 0xFF, 0xD1, 0x6, 0xFD, 0xFF, 0xD1, 0x7, 0x12, 0xFF, 0xD1, 0x8, 0xEF, 0xFF, 0xD9, 0x8, 0xF0, 0xFF, 0xD9, 0x8, 0xF1, 0xFF, 0xD9, 0x8, 0xF2, 0xFF, 0xD9, 0x8, 0xF3, 0xFF, 0xD9, 0x8, 0xF8, 0xFF, 0xD1, 0x8, 0xF9, 0xFF, 0xD2, 0x8, 0xFA, 0xFF, 0xD2, 0x8, 0xFB, 0xFF, 0xD2, 0x8, 0xFC, 0xFF, 0xD2, 0x8, 0xFD, 0xFF, 0xD2, 0x8, 0xFE, 0xFF, 0xDA, 0x8, 0xFF, 0xFF, 0xDA, 0x9, 0x0, 0xFF, 0xDA, 0x9, 0x1, 0xFF, 0xDA, 0x9, 0x2, 0xFF, 0xDF, 0x9, 0x3, 0xFF, 0xDF, 0x9, 0xB, 0xFF, 0xD9, 0x9, 0xD, 0xFF, 0xD9, 0x9, 0xF, 0xFF, 0xD9, 0x9, 0x11, 0xFF, 0xD9, 0x9, 0x13, 0xFF, 0xD9, 0x9, 0x15, 0xFF, 0xD9, 0x9, 0x17, 0xFF, 0xD9, 0x9, 0x19, 0xFF, 0xD9, 0x9, 0x1B, 0xFF, 0xD9, 0x9, 0x1D, 0xFF, 0xD9, 0x9, 0x1F, 0xFF, 0xD9, 0x9, 0x21, 0xFF, 0xD9, 0x9, 0x23, 0xFF, 0xD9, 0x9, 0x25, 0xFF, 0xD9, 0x9, 0x40, 0xFF, 0xD1, 0x9, 0x42, 0xFF, 0xD1, 0x9, 0x44, 0xFF, 0xD1, 0x9, 0x45, 0xFF, 0xD1, 0x9, 0x47, 0xFF, 0xD2, 0x9, 0x49, 0xFF, 0xD2, 0x9, 0x4B, 0xFF, 0xD2, 0x9, 0x63, 0xFF, 0xDA, 0x9, 0x65, 0xFF, 0xDA, 0x9, 0x67, 0xFF, 0xDA, 0x9, 0x69, 0xFF, 0xDA, 0x9, 0x6B, 0xFF, 0xDA, 0x9, 0x6D, 0xFF, 0xDA, 0x9, 0x71, 0xFF, 0xDF, 0x9, 0xED, 0xFF, 0xD9, 0x9, 0xEF, 0xFF, 0xD1, 0x9, 0xF1, 0xFF, 0xDA, 0x9, 0xF3, 0xFF, 0xD2, 0x9, 0xF5, 0xFF, 0xDF, 0x9, 0xF8, 0xFF, 0xDA, 0x9, 0xF9, 0xFF, 0xD2, 0x9, 0xFA, 0xFF, 0xDA, 0xA, 0x13, 0xFF, 0xD9, 0xA, 0x14, 0xFF, 0xD1, 0xA, 0x15, 0xFF, 0xD2, 0xA, 0x16, 0xFF, 0xD1, 0xA, 0x17, 0xFF, 0xD9, 0xA, 0x18, 0xFF, 0xDF, 0xA, 0x1A, 0xFF, 0xD9, 0xA, 0x1B, 0xFF, 0xD1, 0xA, 0x20, 0xFF, 0xD1, 0xA, 0x21, 0xFF, 0xDF, 0xA, 0x29, 0xFF, 0xDF, 0xA, 0x30, 0xFF, 0xD1, 0xA, 0x35, 0xFF, 0xD9, 0xA, 0x36, 0xFF, 0xD1, 0xA, 0x3A, 0xFF, 0xDF, 0xA, 0x3B, 0xFF, 0xD9, 0xA, 0x40, 0xFF, 0xD9, 0xA, 0x42, 0xFF, 0xDF, 0xA, 0x4E, 0xFF, 0xD9, 0xA, 0x50, 0xFF, 0xD9, 0xA, 0x51, 0xFF, 0xD9, 0xA, 0x57, 0xFF, 0xD1, 0xA, 0x59, 0xFF, 0xD1, 0xA, 0x5B, 0xFF, 0xD2, 0xA, 0x5D, 0xFF, 0xD9, 0xA, 0x60, 0xFF, 0xD2, 0xA, 0x64, 0xFF, 0xDF, 0xA, 0x66, 0xFF, 0xDF, 0xA, 0x68, 0xFF, 0xDF, 0xA, 0x6C, 0xFF, 0xD1, 0xA, 0x6D, 0xFF, 0xD9, 0xA, 0x87, 0xFF, 0xD9, 0xA, 0x89, 0xFF, 0xD9, 0xA, 0x8B, 0xFF, 0xD9, 0xA, 0x8D, 0xFF, 0xD9, 0xA, 0x8F, 0xFF, 0xD9, 0xA, 0x91, 0xFF, 0xD9, 0xA, 0x93, 0xFF, 0xD9, 0xA, 0x95, 0xFF, 0xD9, 0xA, 0x9B, 0xFF, 0xD2, 0xA, 0x9D, 0xFF, 0xD2, 0xA, 0x9F, 0xFF, 0xD2, 0xA, 0xA1, 0xFF, 0xD2, 0xA, 0xA3, 0xFF, 0xD2, 0xA, 0xA5, 0xFF, 0xD2, 0xA, 0xA7, 0xFF, 0xD2, 0xA, 0xA9, 0xFF, 0xD9, 0xA, 0xAB, 0xFF, 0xD9, 0xA, 0xAD, 0xFF, 0xD9, 0xA, 0xAF, 0xFF, 0xD2, 0xA, 0xB1, 0xFF, 0xD9, 0xA, 0xB3, 0xFF, 0xDA, 0xA, 0xB5, 0xFF, 0xDA, 0xA, 0xB7, 0xFF, 0xDA, 0xA, 0xB9, 0xFF, 0xDA, 0xA, 0xBB, 0xFF, 0xDA, 0xA, 0xBD, 0xFF, 0xDA, 0xA, 0xBF, 0xFF, 0xDA, 0xA, 0xC1, 0xFF, 0xDF, 0xA, 0xC3, 0xFF, 0xDF, 0xA, 0xC5, 0xFF, 0xDF, 0xA, 0xCC, 0xFF, 0xD1, 0xA, 0xE7, 0xFF, 0xD1, 0xA, 0xED, 0xFF, 0xD1, 0xA, 0xF3, 0xFF, 0xD2, 0xA, 0xF5, 0xFF, 0xDA, 0xA, 0xF7, 0xFF, 0xDA, 0xA, 0xF9, 0xFF, 0xDA, 0xA, 0xFB, 0xFF, 0xDA, 0xA, 0xFD, 0xFF, 0xDA, 0xA, 0xFE, 0xFF, 0xD9, 0xB, 0x6, 0xFF, 0xD9, 0xB, 0xA, 0xFF, 0xD2, 0xB, 0xC, 0xFF, 0xD2, 0xB, 0xF, 0xFF, 0xD9, 0xB, 0x13, 0xFF, 0xD1, 0xB, 0x19, 0xFF, 0xD9, 0xB, 0x1B, 0xFF, 0xD9, 0xB, 0x21, 0xFF, 0xD2, 0xB, 0x23, 0xFF, 0xD2, 0xB, 0x29, 0xFF, 0xDA, 0xB, 0x2B, 0xFF, 0xDA, 0xB, 0x33, 0xFF, 0xD2, 0xB, 0x35, 0xFF, 0xD2, 0xB, 0x37, 0xFF, 0xD2, 0xB, 0x39, 0xFF, 0xD2, 0xB, 0x3B, 0xFF, 0xDF, 0xB, 0x3C, 0xFF, 0xD2, 0xB, 0x42, 0xFF, 0xD9, 0xB, 0x4A, 0xFF, 0xD9, 0xB, 0x54, 0xFF, 0xD9, 0xB, 0x56, 0xFF, 0xD9, 0xB, 0x58, 0xFF, 0xD9, 0xB, 0x5A, 0xFF, 0xD9, 0xB, 0x5C, 0xFF, 0xD9, 0xB, 0x5E, 0xFF, 0xD9, 0xB, 0x60, 0xFF, 0xD9, 0xB, 0x62, 0xFF, 0xD9, 0xB, 0x64, 0xFF, 0xD9, 0xB, 0x66, 0xFF, 0xD9, 0xB, 0x68, 0xFF, 0xD9, 0xB, 0x6C, 0xFF, 0xD9, 0xB, 0x84, 0xFF, 0xD1, 0xB, 0x86, 0xFF, 0xD1, 0xB, 0x88, 0xFF, 0xD1, 0xB, 0x8A, 0xFF, 0xD1, 0xB, 0x8C, 0xFF, 0xD1, 0xB, 0x8E, 0xFF, 0xD1, 0xB, 0x90, 0xFF, 0xD2, 0xB, 0x92, 0xFF, 0xD2, 0xB, 0x94, 0xFF, 0xD2, 0xB, 0x96, 0xFF, 0xD2, 0xB, 0xB6, 0xFF, 0xDA, 0xB, 0xB8, 0xFF, 0xDA, 0xB, 0xBA, 0xFF, 0xDA, 0xB, 0xBC, 0xFF, 0xDA, 0xB, 0xBE, 0xFF, 0xDA, 0xB, 0xC0, 0xFF, 0xDF, 0xB, 0xC2, 0xFF, 0xDF, 0xB, 0xCC, 0xFF, 0xDF, 0xB, 0xD6, 0xFF, 0xDF, 0xB, 0xD8, 0xFF, 0xD9, 0xB, 0xD9, 0xFF, 0xD9, 0xB, 0xDA, 0xFF, 0xD9, 0xB, 0xDB, 0xFF, 0xD9, 0xB, 0xDC, 0xFF, 0xD9, 0xB, 0xDD, 0xFF, 0xD9, 0xB, 0xDE, 0xFF, 0xD9, 0xB, 0xDF, 0xFF, 0xD9, 0xC, 0x14, 0xFF, 0xD2, 0xC, 0x15, 0xFF, 0xD2, 0xC, 0x16, 0xFF, 0xD2, 0xC, 0x17, 0xFF, 0xD2, 0xC, 0x18, 0xFF, 0xD2, 0xC, 0x19, 0xFF, 0xD2, 0xC, 0x20, 0xFF, 0xDA, 0xC, 0x21, 0xFF, 0xDA, 0xC, 0x22, 0xFF, 0xDA, 0xC, 0x23, 0xFF, 0xDA, 0xC, 0x24, 0xFF, 0xDA, 0xC, 0x25, 0xFF, 0xDA, 0xC, 0x26, 0xFF, 0xDA, 0xC, 0x27, 0xFF, 0xDA, 0xC, 0x44, 0xFF, 0xD2, 0xC, 0x45, 0xFF, 0xD2, 0xC, 0x46, 0xFF, 0xDA, 0xC, 0x47, 0xFF, 0xDA, 0xC, 0x4A, 0xFF, 0xD9, 0xC, 0x4B, 0xFF, 0xD9, 0xC, 0x4C, 0xFF, 0xD9, 0xC, 0x4D, 0xFF, 0xD9, 0xC, 0x4E, 0xFF, 0xD9, 0xC, 0x4F, 0xFF, 0xD9, 0xC, 0x50, 0xFF, 0xD9, 0xC, 0x51, 0xFF, 0xD9, 0xC, 0x7A, 0xFF, 0xD9, 0xC, 0x7B, 0xFF, 0xD9, 0xC, 0x7C, 0xFF, 0xD9, 0xC, 0x7D, 0xFF, 0xD9, 0xC, 0x7E, 0xFF, 0xD9, 0xC, 0x7F, 0xFF, 0xD9, 0xC, 0x80, 0xFF, 0xD9, 0xC, 0x9A, 0xFF, 0xDA, 0xC, 0x9B, 0xFF, 0xDA, 0xC, 0x9C, 0xFF, 0xDA, 0xC, 0x9D, 0xFF, 0xDA, 0x0, 0xCE, 0x0, 0x7, 0xFF, 0xD7, 0x0, 0xC, 0xFF, 0xD7, 0x0, 0x48, 0xFF, 0xEF, 0x0, 0x49, 0xFF, 0xEF, 0x0, 0x4A, 0xFF, 0xEF, 0x0, 0x4C, 0xFF, 0xEF, 0x0, 0x56, 0xFF, 0xEF, 0x0, 0x5A, 0xFF, 0xEE, 0x0, 0x5B, 0xFF, 0xD9, 0x0, 0x5E, 0xFF, 0xD9, 0x0, 0x95, 0xFF, 0xEF, 0x0, 0x9F, 0xFF, 0xEF, 0x0, 0xB5, 0xFF, 0xEF, 0x0, 0xC4, 0xFF, 0xEE, 0x0, 0xDA, 0xFF, 0xEF, 0x0, 0xDC, 0xFF, 0xEF, 0x0, 0xE4, 0xFF, 0xEF, 0x1, 0x0, 0xFF, 0xEF, 0x2, 0x2A, 0xFF, 0xEF, 0x2, 0x3A, 0xFF, 0xEF, 0x2, 0x3C, 0xFF, 0xD9, 0x2, 0x41, 0xFF, 0xEA, 0x2, 0x43, 0x0, 0x10, 0x2, 0x45, 0xFF, 0xE8, 0x2, 0x47, 0xFF, 0xEF, 0x2, 0x48, 0xFF, 0xEF, 0x2, 0x49, 0xFF, 0xD0, 0x2, 0x4A, 0xFF, 0xEE, 0x2, 0x4B, 0xFF, 0xE5, 0x2, 0x58, 0xFF, 0xEF, 0x2, 0x61, 0xFF, 0xEF, 0x2, 0x8D, 0xFF, 0xEF, 0x2, 0x99, 0xFF, 0xEF, 0x2, 0xB0, 0xFF, 0xD9, 0x2, 0xB4, 0xFF, 0xEF, 0x2, 0xB8, 0xFF, 0xEF, 0x2, 0xD9, 0xFF, 0xEF, 0x2, 0xF7, 0xFF, 0xEF, 0x2, 0xF8, 0xFF, 0xEF, 0x3, 0x2, 0xFF, 0xEF, 0x4, 0x62, 0xFF, 0xD7, 0x4, 0x63, 0xFF, 0xD7, 0x4, 0x65, 0xFF, 0xD7, 0x4, 0x66, 0xFF, 0xD7, 0x4, 0x67, 0xFF, 0xD7, 0x5, 0x67, 0xFF, 0xD9, 0x5, 0x6E, 0xFF, 0xEF, 0x6, 0x8F, 0xFF, 0xEF, 0x6, 0x91, 0xFF, 0xEF, 0x6, 0xA9, 0xFF, 0xEF, 0x6, 0xCB, 0xFF, 0xEF, 0x6, 0xF7, 0xFF, 0xEF, 0x8, 0xEF, 0xFF, 0xEF, 0x8, 0xF0, 0xFF, 0xEF, 0x8, 0xF1, 0xFF, 0xEF, 0x8, 0xF2, 0xFF, 0xEF, 0x8, 0xF3, 0xFF, 0xEF, 0x8, 0xFE, 0xFF, 0xEE, 0x8, 0xFF, 0xFF, 0xEE, 0x9, 0x0, 0xFF, 0xEE, 0x9, 0x1, 0xFF, 0xEE, 0x9, 0x2, 0xFF, 0xD9, 0x9, 0x3, 0xFF, 0xD9, 0x9, 0xB, 0xFF, 0xEF, 0x9, 0xD, 0xFF, 0xEF, 0x9, 0xF, 0xFF, 0xEF, 0x9, 0x11, 0xFF, 0xEF, 0x9, 0x13, 0xFF, 0xEF, 0x9, 0x15, 0xFF, 0xEF, 0x9, 0x17, 0xFF, 0xEF, 0x9, 0x19, 0xFF, 0xEF, 0x9, 0x1B, 0xFF, 0xEF, 0x9, 0x1D, 0xFF, 0xEF, 0x9, 0x1F, 0xFF, 0xEF, 0x9, 0x21, 0xFF, 0xEF, 0x9, 0x23, 0xFF, 0xEF, 0x9, 0x25, 0xFF, 0xEF, 0x9, 0x63, 0xFF, 0xEE, 0x9, 0x65, 0xFF, 0xEE, 0x9, 0x67, 0xFF, 0xEE, 0x9, 0x69, 0xFF, 0xEE, 0x9, 0x6B, 0xFF, 0xEE, 0x9, 0x6D, 0xFF, 0xEE, 0x9, 0x71, 0xFF, 0xD9, 0x9, 0xED, 0xFF, 0xEF, 0x9, 0xF1, 0xFF, 0xEE, 0x9, 0xF5, 0xFF, 0xD9, 0x9, 0xF8, 0xFF, 0xEE, 0x9, 0xFA, 0xFF, 0xEE, 0xA, 0x13, 0xFF, 0xEF, 0xA, 0x17, 0xFF, 0xEF, 0xA, 0x18, 0xFF, 0xD9, 0xA, 0x1A, 0xFF, 0xEF, 0xA, 0x21, 0xFF, 0xD9, 0xA, 0x29, 0xFF, 0xD9, 0xA, 0x2A, 0xFF, 0xD7, 0xA, 0x2B, 0xFF, 0xD7, 0xA, 0x2E, 0xFF, 0xD7, 0xA, 0x35, 0xFF, 0xEF, 0xA, 0x3A, 0xFF, 0xD9, 0xA, 0x3B, 0xFF, 0xEF, 0xA, 0x40, 0xFF, 0xEF, 0xA, 0x42, 0xFF, 0xD9, 0xA, 0x4E, 0xFF, 0xEF, 0xA, 0x50, 0xFF, 0xEF, 0xA, 0x51, 0xFF, 0xEF, 0xA, 0x5D, 0xFF, 0xEF, 0xA, 0x64, 0xFF, 0xD9, 0xA, 0x66, 0xFF, 0xD9, 0xA, 0x68, 0xFF, 0xD9, 0xA, 0x6D, 0xFF, 0xEF, 0xA, 0x87, 0xFF, 0xEF, 0xA, 0x89, 0xFF, 0xEF, 0xA, 0x8B, 0xFF, 0xEF, 0xA, 0x8D, 0xFF, 0xEF, 0xA, 0x8F, 0xFF, 0xEF, 0xA, 0x91, 0xFF, 0xEF, 0xA, 0x93, 0xFF, 0xEF, 0xA, 0x95, 0xFF, 0xEF, 0xA, 0xA9, 0xFF, 0xEF, 0xA, 0xAB, 0xFF, 0xEF, 0xA, 0xAD, 0xFF, 0xEF, 0xA, 0xB1, 0xFF, 0xEF, 0xA, 0xB3, 0xFF, 0xEE, 0xA, 0xB5, 0xFF, 0xEE, 0xA, 0xB7, 0xFF, 0xEE, 0xA, 0xB9, 0xFF, 0xEE, 0xA, 0xBB, 0xFF, 0xEE, 0xA, 0xBD, 0xFF, 0xEE, 0xA, 0xBF, 0xFF, 0xEE, 0xA, 0xC1, 0xFF, 0xD9, 0xA, 0xC3, 0xFF, 0xD9, 0xA, 0xC5, 0xFF, 0xD9, 0xA, 0xF5, 0xFF, 0xEE, 0xA, 0xF7, 0xFF, 0xEE, 0xA, 0xF9, 0xFF, 0xEE, 0xA, 0xFB, 0xFF, 0xEE, 0xA, 0xFD, 0xFF, 0xEE, 0xA, 0xFE, 0xFF, 0xEF, 0xB, 0x6, 0xFF, 0xEF, 0xB, 0xF, 0xFF, 0xEF, 0xB, 0x19, 0xFF, 0xEF, 0xB, 0x1B, 0xFF, 0xEF, 0xB, 0x29, 0xFF, 0xEE, 0xB, 0x2B, 0xFF, 0xEE, 0xB, 0x3B, 0xFF, 0xD9, 0xB, 0x42, 0xFF, 0xEF, 0xB, 0x4A, 0xFF, 0xEF, 0xB, 0x54, 0xFF, 0xEF, 0xB, 0x56, 0xFF, 0xEF, 0xB, 0x58, 0xFF, 0xEF, 0xB, 0x5A, 0xFF, 0xEF, 0xB, 0x5C, 0xFF, 0xEF, 0xB, 0x5E, 0xFF, 0xEF, 0xB, 0x60, 0xFF, 0xEF, 0xB, 0x62, 0xFF, 0xEF, 0xB, 0x64, 0xFF, 0xEF, 0xB, 0x66, 0xFF, 0xEF, 0xB, 0x68, 0xFF, 0xEF, 0xB, 0x6C, 0xFF, 0xEF, 0xB, 0xB6, 0xFF, 0xEE, 0xB, 0xB8, 0xFF, 0xEE, 0xB, 0xBA, 0xFF, 0xEE, 0xB, 0xBC, 0xFF, 0xEE, 0xB, 0xBE, 0xFF, 0xEE, 0xB, 0xC0, 0xFF, 0xD9, 0xB, 0xC2, 0xFF, 0xD9, 0xB, 0xCC, 0xFF, 0xD9, 0xB, 0xD6, 0xFF, 0xD9, 0xB, 0xD8, 0xFF, 0xEF, 0xB, 0xD9, 0xFF, 0xEF, 0xB, 0xDA, 0xFF, 0xEF, 0xB, 0xDB, 0xFF, 0xEF, 0xB, 0xDC, 0xFF, 0xEF, 0xB, 0xDD, 0xFF, 0xEF, 0xB, 0xDE, 0xFF, 0xEF, 0xB, 0xDF, 0xFF, 0xEF, 0xC, 0x20, 0xFF, 0xEE, 0xC, 0x21, 0xFF, 0xEE, 0xC, 0x22, 0xFF, 0xEE, 0xC, 0x23, 0xFF, 0xEE, 0xC, 0x24, 0xFF, 0xEE, 0xC, 0x25, 0xFF, 0xEE, 0xC, 0x26, 0xFF, 0xEE, 0xC, 0x27, 0xFF, 0xEE, 0xC, 0x46, 0xFF, 0xEE, 0xC, 0x47, 0xFF, 0xEE, 0xC, 0x4A, 0xFF, 0xEF, 0xC, 0x4B, 0xFF, 0xEF, 0xC, 0x4C, 0xFF, 0xEF, 0xC, 0x4D, 0xFF, 0xEF, 0xC, 0x4E, 0xFF, 0xEF, 0xC, 0x4F, 0xFF, 0xEF, 0xC, 0x50, 0xFF, 0xEF, 0xC, 0x51, 0xFF, 0xEF, 0xC, 0x7A, 0xFF, 0xEF, 0xC, 0x7B, 0xFF, 0xEF, 0xC, 0x7C, 0xFF, 0xEF, 0xC, 0x7D, 0xFF, 0xEF, 0xC, 0x7E, 0xFF, 0xEF, 0xC, 0x7F, 0xFF, 0xEF, 0xC, 0x80, 0xFF, 0xEF, 0xC, 0x9A, 0xFF, 0xEE, 0xC, 0x9B, 0xFF, 0xEE, 0xC, 0x9C, 0xFF, 0xEE, 0xC, 0x9D, 0xFF, 0xEE, 0x0, 0x59, 0x0, 0x7, 0xFF, 0xD6, 0x0, 0xC, 0xFF, 0xD6, 0x0, 0x4B, 0xFF, 0xF6, 0x0, 0x5A, 0xFF, 0xFA, 0x0, 0x5B, 0xFF, 0xE6, 0x0, 0x5E, 0xFF, 0xE6, 0x0, 0xC4, 0xFF, 0xFA, 0x2, 0x3C, 0xFF, 0xE6, 0x2, 0x41, 0xFF, 0xF8, 0x2, 0x43, 0x0, 0x7, 0x2, 0x45, 0xFF, 0xF7, 0x2, 0x49, 0xFF, 0xCE, 0x2, 0x4A, 0xFF, 0xFA, 0x2, 0xB0, 0xFF, 0xE6, 0x4, 0x62, 0xFF, 0xD6, 0x4, 0x63, 0xFF, 0xD6, 0x4, 0x65, 0xFF, 0xD6, 0x4, 0x66, 0xFF, 0xD6, 0x4, 0x67, 0xFF, 0xD6, 0x5, 0x67, 0xFF, 0xE6, 0x8, 0xFE, 0xFF, 0xFA, 0x8, 0xFF, 0xFF, 0xFA, 0x9, 0x0, 0xFF, 0xFA, 0x9, 0x1, 0xFF, 0xFA, 0x9, 0x2, 0xFF, 0xE6, 0x9, 0x3, 0xFF, 0xE6, 0x9, 0x63, 0xFF, 0xFA, 0x9, 0x65, 0xFF, 0xFA, 0x9, 0x67, 0xFF, 0xFA, 0x9, 0x69, 0xFF, 0xFA, 0x9, 0x6B, 0xFF, 0xFA, 0x9, 0x6D, 0xFF, 0xFA, 0x9, 0x71, 0xFF, 0xE6, 0x9, 0xF1, 0xFF, 0xFA, 0x9, 0xF5, 0xFF, 0xE6, 0x9, 0xF8, 0xFF, 0xFA, 0x9, 0xFA, 0xFF, 0xFA, 0xA, 0x18, 0xFF, 0xE6, 0xA, 0x21, 0xFF, 0xE6, 0xA, 0x29, 0xFF, 0xE6, 0xA, 0x2A, 0xFF, 0xD6, 0xA, 0x2B, 0xFF, 0xD6, 0xA, 0x2E, 0xFF, 0xD6, 0xA, 0x3A, 0xFF, 0xE6, 0xA, 0x42, 0xFF, 0xE6, 0xA, 0x64, 0xFF, 0xE6, 0xA, 0x66, 0xFF, 0xE6, 0xA, 0x68, 0xFF, 0xE6, 0xA, 0xB3, 0xFF, 0xFA, 0xA, 0xB5, 0xFF, 0xFA, 0xA, 0xB7, 0xFF, 0xFA, 0xA, 0xB9, 0xFF, 0xFA, 0xA, 0xBB, 0xFF, 0xFA, 0xA, 0xBD, 0xFF, 0xFA, 0xA, 0xBF, 0xFF, 0xFA, 0xA, 0xC1, 0xFF, 0xE6, 0xA, 0xC3, 0xFF, 0xE6, 0xA, 0xC5, 0xFF, 0xE6, 0xA, 0xF5, 0xFF, 0xFA, 0xA, 0xF7, 0xFF, 0xFA, 0xA, 0xF9, 0xFF, 0xFA, 0xA, 0xFB, 0xFF, 0xFA, 0xA, 0xFD, 0xFF, 0xFA, 0xB, 0x29, 0xFF, 0xFA, 0xB, 0x2B, 0xFF, 0xFA, 0xB, 0x3B, 0xFF, 0xE6, 0xB, 0xB6, 0xFF, 0xFA, 0xB, 0xB8, 0xFF, 0xFA, 0xB, 0xBA, 0xFF, 0xFA, 0xB, 0xBC, 0xFF, 0xFA, 0xB, 0xBE, 0xFF, 0xFA, 0xB, 0xC0, 0xFF, 0xE6, 0xB, 0xC2, 0xFF, 0xE6, 0xB, 0xCC, 0xFF, 0xE6, 0xB, 0xD6, 0xFF, 0xE6, 0xC, 0x20, 0xFF, 0xFA, 0xC, 0x21, 0xFF, 0xFA, 0xC, 0x22, 0xFF, 0xFA, 0xC, 0x23, 0xFF, 0xFA, 0xC, 0x24, 0xFF, 0xFA, 0xC, 0x25, 0xFF, 0xFA, 0xC, 0x26, 0xFF, 0xFA, 0xC, 0x27, 0xFF, 0xFA, 0xC, 0x46, 0xFF, 0xFA, 0xC, 0x47, 0xFF, 0xFA, 0xC, 0x9A, 0xFF, 0xFA, 0xC, 0x9B, 0xFF, 0xFA, 0xC, 0x9C, 0xFF, 0xFA, 0xC, 0x9D, 0xFF, 0xFA, 0x0, 0x7C, 0x0, 0x11, 0x0, 0x11, 0x0, 0x13, 0x0, 0x11, 0x0, 0x48, 0xFF, 0xE5, 0x0, 0x49, 0xFF, 0xE5, 0x0, 0x4A, 0xFF, 0xE5, 0x0, 0x4C, 0xFF, 0xE5, 0x0, 0x56, 0xFF, 0xE5, 0x0, 0x95, 0xFF, 0xE5, 0x0, 0x9F, 0xFF, 0xE5, 0x0, 0xB5, 0xFF, 0xE5, 0x0, 0xDA, 0xFF, 0xE5, 0x0, 0xDC, 0xFF, 0xE5, 0x0, 0xE4, 0xFF, 0xE5, 0x1, 0x0, 0xFF, 0xE5, 0x2, 0x2A, 0xFF, 0xE5, 0x2, 0x3A, 0xFF, 0xE5, 0x2, 0x43, 0x0, 0x10, 0x2, 0x47, 0xFF, 0xE5, 0x2, 0x48, 0xFF, 0xE5, 0x2, 0x58, 0xFF, 0xE5, 0x2, 0x61, 0xFF, 0xE5, 0x2, 0x8D, 0xFF, 0xE5, 0x2, 0x99, 0xFF, 0xE5, 0x2, 0xB4, 0xFF, 0xE5, 0x2, 0xB8, 0xFF, 0xE5, 0x2, 0xD9, 0xFF, 0xE5, 0x2, 0xF7, 0xFF, 0xE5, 0x2, 0xF8, 0xFF, 0xE5, 0x3, 0x2, 0xFF, 0xE5, 0x4, 0x64, 0x0, 0x11, 0x4, 0x68, 0x0, 0x11, 0x4, 0x6F, 0x0, 0x11, 0x4, 0x70, 0x0, 0x11, 0x5, 0x6E, 0xFF, 0xE5, 0x6, 0x8F, 0xFF, 0xE5, 0x6, 0x91, 0xFF, 0xE5, 0x6, 0xA9, 0xFF, 0xE5, 0x6, 0xCB, 0xFF, 0xE5, 0x6, 0xF7, 0xFF, 0xE5, 0x8, 0xEF, 0xFF, 0xE5, 0x8, 0xF0, 0xFF, 0xE5, 0x8, 0xF1, 0xFF, 0xE5, 0x8, 0xF2, 0xFF, 0xE5, 0x8, 0xF3, 0xFF, 0xE5, 0x9, 0xB, 0xFF, 0xE5, 0x9, 0xD, 0xFF, 0xE5, 0x9, 0xF, 0xFF, 0xE5, 0x9, 0x11, 0xFF, 0xE5, 0x9, 0x13, 0xFF, 0xE5, 0x9, 0x15, 0xFF, 0xE5, 0x9, 0x17, 0xFF, 0xE5, 0x9, 0x19, 0xFF, 0xE5, 0x9, 0x1B, 0xFF, 0xE5, 0x9, 0x1D, 0xFF, 0xE5, 0x9, 0x1F, 0xFF, 0xE5, 0x9, 0x21, 0xFF, 0xE5, 0x9, 0x23, 0xFF, 0xE5, 0x9, 0x25, 0xFF, 0xE5, 0x9, 0xED, 0xFF, 0xE5, 0xA, 0x13, 0xFF, 0xE5, 0xA, 0x17, 0xFF, 0xE5, 0xA, 0x1A, 0xFF, 0xE5, 0xA, 0x35, 0xFF, 0xE5, 0xA, 0x3B, 0xFF, 0xE5, 0xA, 0x40, 0xFF, 0xE5, 0xA, 0x4E, 0xFF, 0xE5, 0xA, 0x50, 0xFF, 0xE5, 0xA, 0x51, 0xFF, 0xE5, 0xA, 0x5D, 0xFF, 0xE5, 0xA, 0x6D, 0xFF, 0xE5, 0xA, 0x87, 0xFF, 0xE5, 0xA, 0x89, 0xFF, 0xE5, 0xA, 0x8B, 0xFF, 0xE5, 0xA, 0x8D, 0xFF, 0xE5, 0xA, 0x8F, 0xFF, 0xE5, 0xA, 0x91, 0xFF, 0xE5, 0xA, 0x93, 0xFF, 0xE5, 0xA, 0x95, 0xFF, 0xE5, 0xA, 0xA9, 0xFF, 0xE5, 0xA, 0xAB, 0xFF, 0xE5, 0xA, 0xAD, 0xFF, 0xE5, 0xA, 0xB1, 0xFF, 0xE5, 0xA, 0xFE, 0xFF, 0xE5, 0xB, 0x6, 0xFF, 0xE5, 0xB, 0xF, 0xFF, 0xE5, 0xB, 0x19, 0xFF, 0xE5, 0xB, 0x1B, 0xFF, 0xE5, 0xB, 0x42, 0xFF, 0xE5, 0xB, 0x4A, 0xFF, 0xE5, 0xB, 0x54, 0xFF, 0xE5, 0xB, 0x56, 0xFF, 0xE5, 0xB, 0x58, 0xFF, 0xE5, 0xB, 0x5A, 0xFF, 0xE5, 0xB, 0x5C, 0xFF, 0xE5, 0xB, 0x5E, 0xFF, 0xE5, 0xB, 0x60, 0xFF, 0xE5, 0xB, 0x62, 0xFF, 0xE5, 0xB, 0x64, 0xFF, 0xE5, 0xB, 0x66, 0xFF, 0xE5, 0xB, 0x68, 0xFF, 0xE5, 0xB, 0x6C, 0xFF, 0xE5, 0xB, 0xD8, 0xFF, 0xE5, 0xB, 0xD9, 0xFF, 0xE5, 0xB, 0xDA, 0xFF, 0xE5, 0xB, 0xDB, 0xFF, 0xE5, 0xB, 0xDC, 0xFF, 0xE5, 0xB, 0xDD, 0xFF, 0xE5, 0xB, 0xDE, 0xFF, 0xE5, 0xB, 0xDF, 0xFF, 0xE5, 0xC, 0x4A, 0xFF, 0xE5, 0xC, 0x4B, 0xFF, 0xE5, 0xC, 0x4C, 0xFF, 0xE5, 0xC, 0x4D, 0xFF, 0xE5, 0xC, 0x4E, 0xFF, 0xE5, 0xC, 0x4F, 0xFF, 0xE5, 0xC, 0x50, 0xFF, 0xE5, 0xC, 0x51, 0xFF, 0xE5, 0xC, 0x7A, 0xFF, 0xE5, 0xC, 0x7B, 0xFF, 0xE5, 0xC, 0x7C, 0xFF, 0xE5, 0xC, 0x7D, 0xFF, 0xE5, 0xC, 0x7E, 0xFF, 0xE5, 0xC, 0x7F, 0xFF, 0xE5, 0xC, 0x80, 0xFF, 0xE5, 0x0, 0x6, 0x2, 0x49, 0xFF, 0xE8, 0x2, 0x83, 0xFF, 0xDB, 0x2, 0x8C, 0xFF, 0xDD, 0x2, 0x94, 0xFF, 0xF4, 0x2, 0xD1, 0xFF, 0xEA, 0x3, 0x4, 0xFF, 0xEA, 0x0, 0x1, 0x2, 0x8C, 0xFF, 0xD6, 0x0, 0x1, 0x2, 0x49, 0x0, 0x19, 0x1, 0x17, 0x0, 0x7, 0x0, 0xD, 0x0, 0xC, 0x0, 0xD, 0x0, 0x48, 0xFF, 0xE6, 0x0, 0x49, 0xFF, 0xE6, 0x0, 0x4A, 0xFF, 0xE6, 0x0, 0x4B, 0x0, 0xD, 0x0, 0x4C, 0xFF, 0xE6, 0x0, 0x54, 0xFF, 0xE8, 0x0, 0x56, 0xFF, 0xE6, 0x0, 0x5B, 0x0, 0xC, 0x0, 0x5E, 0x0, 0xC, 0x0, 0x95, 0xFF, 0xE6, 0x0, 0x9F, 0xFF, 0xE6, 0x0, 0xB5, 0xFF, 0xE6, 0x0, 0xDA, 0xFF, 0xE6, 0x0, 0xDC, 0xFF, 0xE6, 0x0, 0xE4, 0xFF, 0xE6, 0x1, 0x0, 0xFF, 0xE6, 0x2, 0x2A, 0xFF, 0xE6, 0x2, 0x3A, 0xFF, 0xE6, 0x2, 0x3C, 0x0, 0xC, 0x2, 0x3D, 0xFF, 0xF8, 0x2, 0x43, 0xFF, 0xB7, 0x2, 0x45, 0x0, 0xC, 0x2, 0x47, 0xFF, 0xE6, 0x2, 0x48, 0xFF, 0xE6, 0x2, 0x49, 0x0, 0xD, 0x2, 0x56, 0xFF, 0xE8, 0x2, 0x58, 0xFF, 0xE6, 0x2, 0x61, 0xFF, 0xE6, 0x2, 0x8D, 0xFF, 0xE6, 0x2, 0x99, 0xFF, 0xE6, 0x2, 0xAE, 0xFF, 0xE8, 0x2, 0xB0, 0x0, 0xC, 0x2, 0xB4, 0xFF, 0xE6, 0x2, 0xB8, 0xFF, 0xE6, 0x2, 0xD9, 0xFF, 0xE6, 0x2, 0xF7, 0xFF, 0xE6, 0x2, 0xF8, 0xFF, 0xE6, 0x3, 0x2, 0xFF, 0xE6, 0x4, 0x62, 0x0, 0xD, 0x4, 0x63, 0x0, 0xD, 0x4, 0x65, 0x0, 0xD, 0x4, 0x66, 0x0, 0xD, 0x4, 0x67, 0x0, 0xD, 0x5, 0x67, 0x0, 0xC, 0x5, 0x6E, 0xFF, 0xE6, 0x5, 0x70, 0xFF, 0xE8, 0x5, 0xEE, 0xFF, 0xE8, 0x6, 0x2, 0xFF, 0xE8, 0x6, 0x4, 0xFF, 0xE8, 0x6, 0x6, 0xFF, 0xE8, 0x6, 0x32, 0xFF, 0xE8, 0x6, 0x85, 0xFF, 0xE8, 0x6, 0x87, 0xFF, 0xE8, 0x6, 0x8F, 0xFF, 0xE6, 0x6, 0x91, 0xFF, 0xE6, 0x6, 0xA9, 0xFF, 0xE6, 0x6, 0xCB, 0xFF, 0xE6, 0x6, 0xF7, 0xFF, 0xE6, 0x7, 0x4F, 0x0, 0xE, 0x7, 0x52, 0x0, 0xE, 0x7, 0x54, 0x0, 0xF, 0x7, 0x55, 0xFF, 0xF4, 0x7, 0x57, 0xFF, 0xEA, 0x7, 0x59, 0xFF, 0xEC, 0x7, 0x61, 0xFF, 0xEA, 0x7, 0x67, 0xFF, 0xB9, 0x7, 0x68, 0xFF, 0xEC, 0x7, 0x69, 0xFF, 0xB9, 0x7, 0x70, 0x0, 0xF, 0x7, 0x71, 0xFF, 0xEC, 0x7, 0x74, 0x0, 0xF, 0x7, 0x8C, 0x0, 0xF, 0x7, 0x8D, 0xFF, 0xEC, 0x7, 0x8E, 0x0, 0xE, 0x7, 0x90, 0x0, 0xF, 0x7, 0x96, 0xFF, 0xEC, 0x7, 0xAF, 0xFF, 0xED, 0x7, 0xB1, 0xFF, 0xB9, 0x8, 0xEF, 0xFF, 0xE6, 0x8, 0xF0, 0xFF, 0xE6, 0x8, 0xF1, 0xFF, 0xE6, 0x8, 0xF2, 0xFF, 0xE6, 0x8, 0xF3, 0xFF, 0xE6, 0x8, 0xF9, 0xFF, 0xE8, 0x8, 0xFA, 0xFF, 0xE8, 0x8, 0xFB, 0xFF, 0xE8, 0x8, 0xFC, 0xFF, 0xE8, 0x8, 0xFD, 0xFF, 0xE8, 0x9, 0x2, 0x0, 0xC, 0x9, 0x3, 0x0, 0xC, 0x9, 0xB, 0xFF, 0xE6, 0x9, 0xD, 0xFF, 0xE6, 0x9, 0xF, 0xFF, 0xE6, 0x9, 0x11, 0xFF, 0xE6, 0x9, 0x13, 0xFF, 0xE6, 0x9, 0x15, 0xFF, 0xE6, 0x9, 0x17, 0xFF, 0xE6, 0x9, 0x19, 0xFF, 0xE6, 0x9, 0x1B, 0xFF, 0xE6, 0x9, 0x1D, 0xFF, 0xE6, 0x9, 0x1F, 0xFF, 0xE6, 0x9, 0x21, 0xFF, 0xE6, 0x9, 0x23, 0xFF, 0xE6, 0x9, 0x25, 0xFF, 0xE6, 0x9, 0x47, 0xFF, 0xE8, 0x9, 0x49, 0xFF, 0xE8, 0x9, 0x4B, 0xFF, 0xE8, 0x9, 0x71, 0x0, 0xC, 0x9, 0x80, 0xFF, 0xB9, 0x9, 0x81, 0xFF, 0xB9, 0x9, 0x82, 0xFF, 0xB9, 0x9, 0x83, 0xFF, 0xB9, 0x9, 0x84, 0xFF, 0xB9, 0x9, 0x85, 0xFF, 0xB9, 0x9, 0x86, 0xFF, 0xB9, 0x9, 0x87, 0xFF, 0xEC, 0x9, 0x91, 0xFF, 0xEC, 0x9, 0x92, 0xFF, 0xEC, 0x9, 0x93, 0xFF, 0xEC, 0x9, 0x94, 0xFF, 0xEC, 0x9, 0x95, 0xFF, 0xEC, 0x9, 0x9A, 0x0, 0xE, 0x9, 0x9B, 0xFF, 0xB9, 0x9, 0x9C, 0xFF, 0xB9, 0x9, 0x9D, 0xFF, 0xB9, 0x9, 0x9E, 0xFF, 0xEC, 0x9, 0x9F, 0xFF, 0xEC, 0x9, 0xA0, 0xFF, 0xEC, 0x9, 0xA1, 0xFF, 0xEC, 0x9, 0xA8, 0xFF, 0xEC, 0x9, 0xA9, 0xFF, 0xEC, 0x9, 0xAA, 0xFF, 0xEC, 0x9, 0xAB, 0xFF, 0xEC, 0x9, 0xBB, 0xFF, 0xEC, 0x9, 0xBC, 0xFF, 0xEC, 0x9, 0xBD, 0xFF, 0xEC, 0x9, 0xBE, 0xFF, 0xEC, 0x9, 0xC2, 0xFF, 0xF4, 0x9, 0xC3, 0xFF, 0xF4, 0x9, 0xC4, 0xFF, 0xF4, 0x9, 0xC5, 0xFF, 0xF4, 0x9, 0xC7, 0x0, 0xF, 0x9, 0xD0, 0x0, 0xE, 0x9, 0xD1, 0x0, 0xE, 0x9, 0xED, 0xFF, 0xE6, 0x9, 0xF3, 0xFF, 0xE8, 0x9, 0xF5, 0x0, 0xC, 0x9, 0xF9, 0xFF, 0xE8, 0xA, 0x13, 0xFF, 0xE6, 0xA, 0x15, 0xFF, 0xE8, 0xA, 0x17, 0xFF, 0xE6, 0xA, 0x18, 0x0, 0xC, 0xA, 0x1A, 0xFF, 0xE6, 0xA, 0x21, 0x0, 0xC, 0xA, 0x29, 0x0, 0xC, 0xA, 0x2A, 0x0, 0xD, 0xA, 0x2B, 0x0, 0xD, 0xA, 0x2E, 0x0, 0xD, 0xA, 0x35, 0xFF, 0xE6, 0xA, 0x3A, 0x0, 0xC, 0xA, 0x3B, 0xFF, 0xE6, 0xA, 0x40, 0xFF, 0xE6, 0xA, 0x42, 0x0, 0xC, 0xA, 0x4E, 0xFF, 0xE6, 0xA, 0x50, 0xFF, 0xE6, 0xA, 0x51, 0xFF, 0xE6, 0xA, 0x5B, 0xFF, 0xE8, 0xA, 0x5D, 0xFF, 0xE6, 0xA, 0x60, 0xFF, 0xE8, 0xA, 0x64, 0x0, 0xC, 0xA, 0x66, 0x0, 0xC, 0xA, 0x68, 0x0, 0xC, 0xA, 0x6D, 0xFF, 0xE6, 0xA, 0x87, 0xFF, 0xE6, 0xA, 0x89, 0xFF, 0xE6, 0xA, 0x8B, 0xFF, 0xE6, 0xA, 0x8D, 0xFF, 0xE6, 0xA, 0x8F, 0xFF, 0xE6, 0xA, 0x91, 0xFF, 0xE6, 0xA, 0x93, 0xFF, 0xE6, 0xA, 0x95, 0xFF, 0xE6, 0xA, 0x9B, 0xFF, 0xE8, 0xA, 0x9D, 0xFF, 0xE8, 0xA, 0x9F, 0xFF, 0xE8, 0xA, 0xA1, 0xFF, 0xE8, 0xA, 0xA3, 0xFF, 0xE8, 0xA, 0xA5, 0xFF, 0xE8, 0xA, 0xA7, 0xFF, 0xE8, 0xA, 0xA9, 0xFF, 0xE6, 0xA, 0xAB, 0xFF, 0xE6, 0xA, 0xAD, 0xFF, 0xE6, 0xA, 0xAF, 0xFF, 0xE8, 0xA, 0xB1, 0xFF, 0xE6, 0xA, 0xC1, 0x0, 0xC, 0xA, 0xC3, 0x0, 0xC, 0xA, 0xC5, 0x0, 0xC, 0xA, 0xF3, 0xFF, 0xE8, 0xA, 0xFE, 0xFF, 0xE6, 0xB, 0x6, 0xFF, 0xE6, 0xB, 0xA, 0xFF, 0xE8, 0xB, 0xC, 0xFF, 0xE8, 0xB, 0xF, 0xFF, 0xE6, 0xB, 0x19, 0xFF, 0xE6, 0xB, 0x1B, 0xFF, 0xE6, 0xB, 0x21, 0xFF, 0xE8, 0xB, 0x23, 0xFF, 0xE8, 0xB, 0x33, 0xFF, 0xE8, 0xB, 0x35, 0xFF, 0xE8, 0xB, 0x37, 0xFF, 0xE8, 0xB, 0x39, 0xFF, 0xE8, 0xB, 0x3B, 0x0, 0xC, 0xB, 0x3C, 0xFF, 0xE8, 0xB, 0x42, 0xFF, 0xE6, 0xB, 0x4A, 0xFF, 0xE6, 0xB, 0x54, 0xFF, 0xE6, 0xB, 0x56, 0xFF, 0xE6, 0xB, 0x58, 0xFF, 0xE6, 0xB, 0x5A, 0xFF, 0xE6, 0xB, 0x5C, 0xFF, 0xE6, 0xB, 0x5E, 0xFF, 0xE6, 0xB, 0x60, 0xFF, 0xE6, 0xB, 0x62, 0xFF, 0xE6, 0xB, 0x64, 0xFF, 0xE6, 0xB, 0x66, 0xFF, 0xE6, 0xB, 0x68, 0xFF, 0xE6, 0xB, 0x6C, 0xFF, 0xE6, 0xB, 0x90, 0xFF, 0xE8, 0xB, 0x92, 0xFF, 0xE8, 0xB, 0x94, 0xFF, 0xE8, 0xB, 0x96, 0xFF, 0xE8, 0xB, 0xC0, 0x0, 0xC, 0xB, 0xC2, 0x0, 0xC, 0xB, 0xCC, 0x0, 0xC, 0xB, 0xD6, 0x0, 0xC, 0xB, 0xD8, 0xFF, 0xE6, 0xB, 0xD9, 0xFF, 0xE6, 0xB, 0xDA, 0xFF, 0xE6, 0xB, 0xDB, 0xFF, 0xE6, 0xB, 0xDC, 0xFF, 0xE6, 0xB, 0xDD, 0xFF, 0xE6, 0xB, 0xDE, 0xFF, 0xE6, 0xB, 0xDF, 0xFF, 0xE6, 0xC, 0x14, 0xFF, 0xE8, 0xC, 0x15, 0xFF, 0xE8, 0xC, 0x16, 0xFF, 0xE8, 0xC, 0x17, 0xFF, 0xE8, 0xC, 0x18, 0xFF, 0xE8, 0xC, 0x19, 0xFF, 0xE8, 0xC, 0x44, 0xFF, 0xE8, 0xC, 0x45, 0xFF, 0xE8, 0xC, 0x4A, 0xFF, 0xE6, 0xC, 0x4B, 0xFF, 0xE6, 0xC, 0x4C, 0xFF, 0xE6, 0xC, 0x4D, 0xFF, 0xE6, 0xC, 0x4E, 0xFF, 0xE6, 0xC, 0x4F, 0xFF, 0xE6, 0xC, 0x50, 0xFF, 0xE6, 0xC, 0x51, 0xFF, 0xE6, 0xC, 0x7A, 0xFF, 0xE6, 0xC, 0x7B, 0xFF, 0xE6, 0xC, 0x7C, 0xFF, 0xE6, 0xC, 0x7D, 0xFF, 0xE6, 0xC, 0x7E, 0xFF, 0xE6, 0xC, 0x7F, 0xFF, 0xE6, 0xC, 0x80, 0xFF, 0xE6, 0xC, 0xB7, 0xFF, 0xB9, 0xC, 0xBB, 0xFF, 0xEC, 0xC, 0xBC, 0x0, 0xE, 0xC, 0xBE, 0xFF, 0xB9, 0xC, 0xCA, 0x0, 0xE, 0xC, 0xCD, 0x0, 0xE, 0xC, 0xD6, 0xFF, 0xB9, 0xC, 0xDD, 0xFF, 0xEC, 0xC, 0xE0, 0xFF, 0xEC, 0xC, 0xE1, 0x0, 0xF, 0xC, 0xE5, 0xFF, 0xEC, 0xC, 0xE6, 0x0, 0xE, 0x0, 0x1, 0x2, 0x8C, 0xFF, 0xE5, 0x0, 0x17, 0x0, 0x5D, 0xFF, 0xEC, 0x0, 0x5F, 0xFF, 0xEC, 0x0, 0xCA, 0xFF, 0xEC, 0x0, 0xF5, 0xFF, 0xEC, 0x2, 0x84, 0xFF, 0xEC, 0x2, 0x8C, 0xFF, 0xC1, 0x2, 0xCB, 0xFF, 0xEC, 0x2, 0xDB, 0xFF, 0xEC, 0x2, 0xF5, 0xFF, 0xEC, 0x5, 0x62, 0xFF, 0xEC, 0x5, 0xDA, 0xFF, 0xEC, 0x5, 0xDC, 0xFF, 0xEC, 0x9, 0x74, 0xFF, 0xEC, 0x9, 0x76, 0xFF, 0xEC, 0x9, 0x78, 0xFF, 0xEC, 0xA, 0x19, 0xFF, 0xEC, 0xA, 0x45, 0xFF, 0xEC, 0xA, 0x53, 0xFF, 0xEC, 0xB, 0xC8, 0xFF, 0xEC, 0xB, 0xCA, 0xFF, 0xEC, 0xB, 0xCE, 0xFF, 0xEC, 0xB, 0xD0, 0xFF, 0xEC, 0xB, 0xD2, 0xFF, 0xEC, 0x0, 0x16, 0x0, 0x5D, 0xFF, 0xF1, 0x0, 0x5F, 0xFF, 0xF1, 0x0, 0xCA, 0xFF, 0xF1, 0x0, 0xF5, 0xFF, 0xF1, 0x2, 0x84, 0xFF, 0xF1, 0x2, 0xCB, 0xFF, 0xF1, 0x2, 0xDB, 0xFF, 0xF1, 0x2, 0xF5, 0xFF, 0xF1, 0x5, 0x62, 0xFF, 0xF1, 0x5, 0xDA, 0xFF, 0xF1, 0x5, 0xDC, 0xFF, 0xF1, 0x9, 0x74, 0xFF, 0xF1, 0x9, 0x76, 0xFF, 0xF1, 0x9, 0x78, 0xFF, 0xF1, 0xA, 0x19, 0xFF, 0xF1, 0xA, 0x45, 0xFF, 0xF1, 0xA, 0x53, 0xFF, 0xF1, 0xB, 0xC8, 0xFF, 0xF1, 0xB, 0xCA, 0xFF, 0xF1, 0xB, 0xCE, 0xFF, 0xF1, 0xB, 0xD0, 0xFF, 0xF1, 0xB, 0xD2, 0xFF, 0xF1, 0x0, 0x2F, 0x0, 0x5B, 0xFF, 0xF3, 0x0, 0x5D, 0xFF, 0xF1, 0x0, 0x5E, 0xFF, 0xF3, 0x0, 0x5F, 0xFF, 0xF2, 0x0, 0xCA, 0xFF, 0xF2, 0x0, 0xF5, 0xFF, 0xF2, 0x2, 0x3C, 0xFF, 0xF3, 0x2, 0x84, 0xFF, 0xF1, 0x2, 0xB0, 0xFF, 0xF3, 0x2, 0xCB, 0xFF, 0xF1, 0x2, 0xDB, 0xFF, 0xF1, 0x2, 0xF5, 0xFF, 0xF1, 0x5, 0x62, 0xFF, 0xF2, 0x5, 0x67, 0xFF, 0xF3, 0x5, 0xDA, 0xFF, 0xF2, 0x5, 0xDC, 0xFF, 0xF2, 0x9, 0x2, 0xFF, 0xF3, 0x9, 0x3, 0xFF, 0xF3, 0x9, 0x71, 0xFF, 0xF3, 0x9, 0x74, 0xFF, 0xF2, 0x9, 0x76, 0xFF, 0xF2, 0x9, 0x78, 0xFF, 0xF2, 0x9, 0xF5, 0xFF, 0xF3, 0xA, 0x18, 0xFF, 0xF3, 0xA, 0x19, 0xFF, 0xF1, 0xA, 0x21, 0xFF, 0xF3, 0xA, 0x29, 0xFF, 0xF3, 0xA, 0x3A, 0xFF, 0xF3, 0xA, 0x42, 0xFF, 0xF3, 0xA, 0x45, 0xFF, 0xF1, 0xA, 0x53, 0xFF, 0xF1, 0xA, 0x64, 0xFF, 0xF3, 0xA, 0x66, 0xFF, 0xF3, 0xA, 0x68, 0xFF, 0xF3, 0xA, 0xC1, 0xFF, 0xF3, 0xA, 0xC3, 0xFF, 0xF3, 0xA, 0xC5, 0xFF, 0xF3, 0xB, 0x3B, 0xFF, 0xF3, 0xB, 0xC0, 0xFF, 0xF3, 0xB, 0xC2, 0xFF, 0xF3, 0xB, 0xC8, 0xFF, 0xF1, 0xB, 0xCA, 0xFF, 0xF1, 0xB, 0xCC, 0xFF, 0xF3, 0xB, 0xCE, 0xFF, 0xF2, 0xB, 0xD0, 0xFF, 0xF2, 0xB, 0xD2, 0xFF, 0xF2, 0xB, 0xD6, 0xFF, 0xF3, 0x0, 0x77, 0x0, 0x7, 0xFF, 0xBE, 0x0, 0xC, 0xFF, 0xBE, 0x0, 0x39, 0xFF, 0xAF, 0x0, 0x3B, 0xFF, 0xBB, 0x0, 0x3D, 0xFF, 0xEF, 0x0, 0x3E, 0xFF, 0xB3, 0x0, 0x5B, 0xFF, 0xE4, 0x0, 0x5D, 0xFF, 0xEE, 0x0, 0x5E, 0xFF, 0xE4, 0x0, 0xC2, 0xFF, 0xAF, 0x1, 0x3, 0xFF, 0xB3, 0x2, 0x3C, 0xFF, 0xE4, 0x2, 0x68, 0xFF, 0xAF, 0x2, 0x6C, 0xFF, 0xAF, 0x2, 0x70, 0xFF, 0xEF, 0x2, 0x74, 0xFF, 0xD3, 0x2, 0x77, 0xFF, 0xCD, 0x2, 0x7C, 0xFF, 0xE5, 0x2, 0x84, 0xFF, 0xEE, 0x2, 0x8C, 0xFF, 0xC4, 0x2, 0x94, 0xFF, 0xE1, 0x2, 0x9F, 0xFF, 0xE3, 0x2, 0xAF, 0xFF, 0xBB, 0x2, 0xB0, 0xFF, 0xE4, 0x2, 0xB6, 0xFF, 0xE1, 0x2, 0xCA, 0xFF, 0xEF, 0x2, 0xCB, 0xFF, 0xEE, 0x2, 0xD0, 0xFF, 0xAF, 0x2, 0xD1, 0xFF, 0xBF, 0x2, 0xDA, 0xFF, 0xEF, 0x2, 0xDB, 0xFF, 0xEE, 0x2, 0xDC, 0xFF, 0xAF, 0x2, 0xDE, 0xFF, 0xCD, 0x2, 0xE0, 0xFF, 0xD8, 0x2, 0xF4, 0xFF, 0xEF, 0x2, 0xF5, 0xFF, 0xEE, 0x2, 0xF9, 0xFF, 0xD0, 0x2, 0xFA, 0xFF, 0xF4, 0x2, 0xFB, 0xFF, 0xE1, 0x3, 0x3, 0xFF, 0x60, 0x3, 0x4, 0xFF, 0xBD, 0x4, 0x62, 0xFF, 0xBE, 0x4, 0x63, 0xFF, 0xBE, 0x4, 0x65, 0xFF, 0xBE, 0x4, 0x66, 0xFF, 0xBE, 0x4, 0x67, 0xFF, 0xBE, 0x5, 0x67, 0xFF, 0xE4, 0x6, 0x1F, 0xFF, 0xCD, 0x6, 0x23, 0xFF, 0xAF, 0x6, 0x25, 0xFF, 0xAF, 0x6, 0x29, 0xFF, 0xAF, 0x6, 0x96, 0xFF, 0xBB, 0x8, 0xE7, 0xFF, 0xB3, 0x9, 0x2, 0xFF, 0xE4, 0x9, 0x3, 0xFF, 0xE4, 0x9, 0x5C, 0xFF, 0xAF, 0x9, 0x5E, 0xFF, 0xAF, 0x9, 0x60, 0xFF, 0xAF, 0x9, 0x70, 0xFF, 0xB3, 0x9, 0x71, 0xFF, 0xE4, 0x9, 0x72, 0xFF, 0xB3, 0x9, 0xDA, 0xFF, 0xB3, 0x9, 0xE9, 0xFF, 0xB3, 0x9, 0xEA, 0xFF, 0xEF, 0x9, 0xEC, 0xFF, 0xB3, 0x9, 0xF5, 0xFF, 0xE4, 0xA, 0x4, 0xFF, 0xD3, 0xA, 0x10, 0xFF, 0xAF, 0xA, 0x11, 0xFF, 0xEF, 0xA, 0x18, 0xFF, 0xE4, 0xA, 0x19, 0xFF, 0xEE, 0xA, 0x21, 0xFF, 0xE4, 0xA, 0x28, 0xFF, 0xB3, 0xA, 0x29, 0xFF, 0xE4, 0xA, 0x2A, 0xFF, 0xBE, 0xA, 0x2B, 0xFF, 0xBE, 0xA, 0x2E, 0xFF, 0xBE, 0xA, 0x39, 0xFF, 0xBB, 0xA, 0x3A, 0xFF, 0xE4, 0xA, 0x41, 0xFF, 0xB3, 0xA, 0x42, 0xFF, 0xE4, 0xA, 0x44, 0xFF, 0xEF, 0xA, 0x45, 0xFF, 0xEE, 0xA, 0x52, 0xFF, 0xEF, 0xA, 0x53, 0xFF, 0xEE, 0xA, 0x63, 0xFF, 0xD3, 0xA, 0x64, 0xFF, 0xE4, 0xA, 0x65, 0xFF, 0xD3, 0xA, 0x66, 0xFF, 0xE4, 0xA, 0x67, 0xFF, 0xD3, 0xA, 0x68, 0xFF, 0xE4, 0xA, 0x69, 0xFF, 0xCD, 0xA, 0xC0, 0xFF, 0xB3, 0xA, 0xC1, 0xFF, 0xE4, 0xA, 0xC2, 0xFF, 0xB3, 0xA, 0xC3, 0xFF, 0xE4, 0xA, 0xC4, 0xFF, 0xB3, 0xA, 0xC5, 0xFF, 0xE4, 0xA, 0xC7, 0xFF, 0xAF, 0xA, 0xC9, 0xFF, 0xCD, 0xA, 0xD6, 0xFF, 0xB3, 0xB, 0x3B, 0xFF, 0xE4, 0xB, 0xAD, 0xFF, 0xAF, 0xB, 0xAF, 0xFF, 0xAF, 0xB, 0xB1, 0xFF, 0xAF, 0xB, 0xB3, 0xFF, 0xAF, 0xB, 0xBF, 0xFF, 0xBB, 0xB, 0xC0, 0xFF, 0xE4, 0xB, 0xC1, 0xFF, 0xBB, 0xB, 0xC2, 0xFF, 0xE4, 0xB, 0xC7, 0xFF, 0xEF, 0xB, 0xC8, 0xFF, 0xEE, 0xB, 0xC9, 0xFF, 0xEF, 0xB, 0xCA, 0xFF, 0xEE, 0xB, 0xCB, 0xFF, 0xB3, 0xB, 0xCC, 0xFF, 0xE4, 0xB, 0xD6, 0xFF, 0xE4, 0xC, 0xA2, 0xFF, 0xB3, 0xC, 0xA3, 0xFF, 0xB3, 0x0, 0x97, 0x0, 0x7, 0xFF, 0xD6, 0x0, 0xC, 0xFF, 0xD6, 0x0, 0x39, 0xFF, 0xC0, 0x0, 0x3B, 0xFF, 0xDB, 0x0, 0x3D, 0xFF, 0xF6, 0x0, 0x3E, 0xFF, 0xC9, 0x0, 0x52, 0xFF, 0xE2, 0x0, 0x53, 0xFF, 0xE2, 0x0, 0x55, 0xFF, 0xE2, 0x0, 0xC2, 0xFF, 0xC0, 0x0, 0xEA, 0xFF, 0xE2, 0x1, 0x3, 0xFF, 0xC9, 0x2, 0x28, 0xFF, 0xE2, 0x2, 0x40, 0xFF, 0xE2, 0x2, 0x68, 0xFF, 0xC0, 0x2, 0x6A, 0xFF, 0xF9, 0x2, 0x6C, 0xFF, 0xC0, 0x2, 0x70, 0xFF, 0xF6, 0x2, 0x73, 0xFF, 0xF9, 0x2, 0x74, 0xFF, 0xF2, 0x2, 0x77, 0xFF, 0xEE, 0x2, 0x7C, 0xFF, 0xD7, 0x2, 0x82, 0xFF, 0xE2, 0x2, 0x86, 0xFF, 0xE2, 0x2, 0x87, 0xFF, 0xE2, 0x2, 0x89, 0xFF, 0xE2, 0x2, 0x8A, 0xFF, 0xE2, 0x2, 0x8B, 0xFF, 0xE2, 0x2, 0x8C, 0xFF, 0xDF, 0x2, 0x8E, 0xFF, 0xE2, 0x2, 0x90, 0xFF, 0xE2, 0x2, 0x91, 0xFF, 0xE2, 0x2, 0x94, 0xFF, 0xE2, 0x2, 0x96, 0xFF, 0xE2, 0x2, 0x9B, 0xFF, 0xE2, 0x2, 0xAF, 0xFF, 0xDB, 0x2, 0xC2, 0xFF, 0xE2, 0x2, 0xCA, 0xFF, 0xF6, 0x2, 0xCD, 0xFF, 0xE2, 0x2, 0xD0, 0xFF, 0xC0, 0x2, 0xD1, 0xFF, 0xDE, 0x2, 0xD3, 0xFF, 0xE2, 0x2, 0xD5, 0xFF, 0xE2, 0x2, 0xDA, 0xFF, 0xF6, 0x2, 0xDC, 0xFF, 0xC0, 0x2, 0xDE, 0xFF, 0xEE, 0x2, 0xE0, 0xFF, 0xEE, 0x2, 0xE3, 0xFF, 0xDC, 0x2, 0xE7, 0xFF, 0xF9, 0x2, 0xEA, 0xFF, 0xE2, 0x2, 0xEC, 0xFF, 0xE2, 0x2, 0xEE, 0xFF, 0xE2, 0x2, 0xF3, 0xFF, 0xE2, 0x2, 0xF4, 0xFF, 0xF6, 0x2, 0xF9, 0xFF, 0xDF, 0x2, 0xFB, 0xFF, 0xF2, 0x2, 0xFD, 0xFF, 0xF9, 0x3, 0x3, 0xFF, 0xC0, 0x3, 0x4, 0xFF, 0xDF, 0x3, 0x6, 0xFF, 0xF9, 0x3, 0x8, 0xFF, 0xF9, 0x3, 0xF, 0xFF, 0xE2, 0x3, 0x10, 0xFF, 0xF9, 0x3, 0x13, 0xFF, 0xE2, 0x4, 0x62, 0xFF, 0xD6, 0x4, 0x63, 0xFF, 0xD6, 0x4, 0x65, 0xFF, 0xD6, 0x4, 0x66, 0xFF, 0xD6, 0x4, 0x67, 0xFF, 0xD6, 0x5, 0xF0, 0xFF, 0xE2, 0x6, 0x0, 0xFF, 0xE2, 0x6, 0x1F, 0xFF, 0xEE, 0x6, 0x23, 0xFF, 0xC0, 0x6, 0x25, 0xFF, 0xC0, 0x6, 0x28, 0xFF, 0xE2, 0x6, 0x29, 0xFF, 0xC0, 0x6, 0x30, 0xFF, 0xE2, 0x6, 0x96, 0xFF, 0xDB, 0x6, 0xAB, 0xFF, 0xE2, 0x6, 0xAC, 0xFF, 0xE2, 0x6, 0xFB, 0xFF, 0xE2, 0x6, 0xFC, 0xFF, 0xE2, 0x6, 0xFD, 0xFF, 0xE2, 0x7, 0x12, 0xFF, 0xE2, 0x8, 0xE7, 0xFF, 0xC9, 0x8, 0xF8, 0xFF, 0xE2, 0x9, 0x40, 0xFF, 0xE2, 0x9, 0x42, 0xFF, 0xE2, 0x9, 0x44, 0xFF, 0xE2, 0x9, 0x45, 0xFF, 0xE2, 0x9, 0x5C, 0xFF, 0xC0, 0x9, 0x5E, 0xFF, 0xC0, 0x9, 0x60, 0xFF, 0xC0, 0x9, 0x70, 0xFF, 0xC9, 0x9, 0x72, 0xFF, 0xC9, 0x9, 0xDA, 0xFF, 0xC9, 0x9, 0xE9, 0xFF, 0xC9, 0x9, 0xEA, 0xFF, 0xF6, 0x9, 0xEC, 0xFF, 0xC9, 0x9, 0xEF, 0xFF, 0xE2, 0xA, 0x4, 0xFF, 0xF2, 0xA, 0x10, 0xFF, 0xC0, 0xA, 0x11, 0xFF, 0xF6, 0xA, 0x14, 0xFF, 0xE2, 0xA, 0x16, 0xFF, 0xE2, 0xA, 0x1B, 0xFF, 0xE2, 0xA, 0x20, 0xFF, 0xE2, 0xA, 0x28, 0xFF, 0xC9, 0xA, 0x2A, 0xFF, 0xD6, 0xA, 0x2B, 0xFF, 0xD6, 0xA, 0x2E, 0xFF, 0xD6, 0xA, 0x30, 0xFF, 0xE2, 0xA, 0x36, 0xFF, 0xE2, 0xA, 0x39, 0xFF, 0xDB, 0xA, 0x41, 0xFF, 0xC9, 0xA, 0x44, 0xFF, 0xF6, 0xA, 0x52, 0xFF, 0xF6, 0xA, 0x57, 0xFF, 0xE2, 0xA, 0x59, 0xFF, 0xE2, 0xA, 0x63, 0xFF, 0xF2, 0xA, 0x65, 0xFF, 0xF2, 0xA, 0x67, 0xFF, 0xF2, 0xA, 0x69, 0xFF, 0xEE, 0xA, 0x6C, 0xFF, 0xE2, 0xA, 0xC0, 0xFF, 0xC9, 0xA, 0xC2, 0xFF, 0xC9, 0xA, 0xC4, 0xFF, 0xC9, 0xA, 0xC7, 0xFF, 0xC0, 0xA, 0xC9, 0xFF, 0xEE, 0xA, 0xCC, 0xFF, 0xE2, 0xA, 0xD6, 0xFF, 0xC9, 0xA, 0xE7, 0xFF, 0xE2, 0xA, 0xED, 0xFF, 0xE2, 0xB, 0x13, 0xFF, 0xE2, 0xB, 0x84, 0xFF, 0xE2, 0xB, 0x86, 0xFF, 0xE2, 0xB, 0x88, 0xFF, 0xE2, 0xB, 0x8A, 0xFF, 0xE2, 0xB, 0x8C, 0xFF, 0xE2, 0xB, 0x8E, 0xFF, 0xE2, 0xB, 0xAD, 0xFF, 0xC0, 0xB, 0xAF, 0xFF, 0xC0, 0xB, 0xB1, 0xFF, 0xC0, 0xB, 0xB3, 0xFF, 0xC0, 0xB, 0xBF, 0xFF, 0xDB, 0xB, 0xC1, 0xFF, 0xDB, 0xB, 0xC7, 0xFF, 0xF6, 0xB, 0xC9, 0xFF, 0xF6, 0xB, 0xCB, 0xFF, 0xC9, 0xC, 0xA2, 0xFF, 0xC9, 0xC, 0xA3, 0xFF, 0xC9, 0x0, 0x9A, 0x0, 0x7, 0xFF, 0xCD, 0x0, 0xC, 0xFF, 0xCD, 0x0, 0x39, 0xFF, 0xC0, 0x0, 0x3B, 0xFF, 0xDA, 0x0, 0x3D, 0xFF, 0xF7, 0x0, 0x3E, 0xFF, 0xC7, 0x0, 0x52, 0xFF, 0xE0, 0x0, 0x53, 0xFF, 0xE0, 0x0, 0x55, 0xFF, 0xE0, 0x0, 0x5D, 0xFF, 0xF5, 0x0, 0xC2, 0xFF, 0xC0, 0x0, 0xEA, 0xFF, 0xE0, 0x1, 0x3, 0xFF, 0xC7, 0x2, 0x28, 0xFF, 0xE0, 0x2, 0x40, 0xFF, 0xE0, 0x2, 0x68, 0xFF, 0xC0, 0x2, 0x6C, 0xFF, 0xC0, 0x2, 0x70, 0xFF, 0xF7, 0x2, 0x74, 0xFF, 0xF3, 0x2, 0x77, 0xFF, 0xEC, 0x2, 0x7C, 0xFF, 0xD8, 0x2, 0x82, 0xFF, 0xE0, 0x2, 0x84, 0xFF, 0xF5, 0x2, 0x86, 0xFF, 0xE0, 0x2, 0x87, 0xFF, 0xE0, 0x2, 0x89, 0xFF, 0xE0, 0x2, 0x8A, 0xFF, 0xE0, 0x2, 0x8B, 0xFF, 0xE0, 0x2, 0x8C, 0xFF, 0xDA, 0x2, 0x8E, 0xFF, 0xE0, 0x2, 0x90, 0xFF, 0xE0, 0x2, 0x91, 0xFF, 0xE0, 0x2, 0x94, 0xFF, 0xE0, 0x2, 0x96, 0xFF, 0xE0, 0x2, 0x9B, 0xFF, 0xE0, 0x2, 0xAF, 0xFF, 0xDA, 0x2, 0xC2, 0xFF, 0xE0, 0x2, 0xCA, 0xFF, 0xF7, 0x2, 0xCB, 0xFF, 0xF5, 0x2, 0xCD, 0xFF, 0xE0, 0x2, 0xD0, 0xFF, 0xC0, 0x2, 0xD1, 0xFF, 0xD6, 0x2, 0xD3, 0xFF, 0xE0, 0x2, 0xD5, 0xFF, 0xE0, 0x2, 0xDA, 0xFF, 0xF7, 0x2, 0xDB, 0xFF, 0xF5, 0x2, 0xDC, 0xFF, 0xC0, 0x2, 0xDE, 0xFF, 0xEC, 0x2, 0xE0, 0xFF, 0xEC, 0x2, 0xE3, 0xFF, 0xDC, 0x2, 0xEA, 0xFF, 0xE0, 0x2, 0xEC, 0xFF, 0xE0, 0x2, 0xEE, 0xFF, 0xE0, 0x2, 0xF3, 0xFF, 0xE0, 0x2, 0xF4, 0xFF, 0xF7, 0x2, 0xF5, 0xFF, 0xF5, 0x2, 0xF9, 0xFF, 0xDF, 0x2, 0xFB, 0xFF, 0xF0, 0x3, 0x3, 0xFF, 0xC1, 0x3, 0x4, 0xFF, 0xDA, 0x3, 0xF, 0xFF, 0xE0, 0x3, 0x13, 0xFF, 0xE0, 0x4, 0x62, 0xFF, 0xCD, 0x4, 0x63, 0xFF, 0xCD, 0x4, 0x65, 0xFF, 0xCD, 0x4, 0x66, 0xFF, 0xCD, 0x4, 0x67, 0xFF, 0xCD, 0x5, 0xF0, 0xFF, 0xE0, 0x6, 0x0, 0xFF, 0xE0, 0x6, 0x1F, 0xFF, 0xEC, 0x6, 0x23, 0xFF, 0xC0, 0x6, 0x25, 0xFF, 0xC0, 0x6, 0x28, 0xFF, 0xE0, 0x6, 0x29, 0xFF, 0xC0, 0x6, 0x30, 0xFF, 0xE0, 0x6, 0x96, 0xFF, 0xDA, 0x6, 0xAB, 0xFF, 0xE0, 0x6, 0xAC, 0xFF, 0xE0, 0x6, 0xFB, 0xFF, 0xE0, 0x6, 0xFC, 0xFF, 0xE0, 0x6, 0xFD, 0xFF, 0xE0, 0x7, 0x12, 0xFF, 0xE0, 0x8, 0xE7, 0xFF, 0xC7, 0x8, 0xF8, 0xFF, 0xE0, 0x9, 0x40, 0xFF, 0xE0, 0x9, 0x42, 0xFF, 0xE0, 0x9, 0x44, 0xFF, 0xE0, 0x9, 0x45, 0xFF, 0xE0, 0x9, 0x5C, 0xFF, 0xC0, 0x9, 0x5E, 0xFF, 0xC0, 0x9, 0x60, 0xFF, 0xC0, 0x9, 0x70, 0xFF, 0xC7, 0x9, 0x72, 0xFF, 0xC7, 0x9, 0xDA, 0xFF, 0xC7, 0x9, 0xE9, 0xFF, 0xC7, 0x9, 0xEA, 0xFF, 0xF7, 0x9, 0xEC, 0xFF, 0xC7, 0x9, 0xEF, 0xFF, 0xE0, 0xA, 0x4, 0xFF, 0xF3, 0xA, 0x10, 0xFF, 0xC0, 0xA, 0x11, 0xFF, 0xF7, 0xA, 0x14, 0xFF, 0xE0, 0xA, 0x16, 0xFF, 0xE0, 0xA, 0x19, 0xFF, 0xF5, 0xA, 0x1B, 0xFF, 0xE0, 0xA, 0x20, 0xFF, 0xE0, 0xA, 0x28, 0xFF, 0xC7, 0xA, 0x2A, 0xFF, 0xCD, 0xA, 0x2B, 0xFF, 0xCD, 0xA, 0x2E, 0xFF, 0xCD, 0xA, 0x30, 0xFF, 0xE0, 0xA, 0x36, 0xFF, 0xE0, 0xA, 0x39, 0xFF, 0xDA, 0xA, 0x41, 0xFF, 0xC7, 0xA, 0x44, 0xFF, 0xF7, 0xA, 0x45, 0xFF, 0xF5, 0xA, 0x52, 0xFF, 0xF7, 0xA, 0x53, 0xFF, 0xF5, 0xA, 0x57, 0xFF, 0xE0, 0xA, 0x59, 0xFF, 0xE0, 0xA, 0x63, 0xFF, 0xF3, 0xA, 0x65, 0xFF, 0xF3, 0xA, 0x67, 0xFF, 0xF3, 0xA, 0x69, 0xFF, 0xEC, 0xA, 0x6C, 0xFF, 0xE0, 0xA, 0xC0, 0xFF, 0xC7, 0xA, 0xC2, 0xFF, 0xC7, 0xA, 0xC4, 0xFF, 0xC7, 0xA, 0xC7, 0xFF, 0xC0, 0xA, 0xC9, 0xFF, 0xEC, 0xA, 0xCC, 0xFF, 0xE0, 0xA, 0xD6, 0xFF, 0xC7, 0xA, 0xE7, 0xFF, 0xE0, 0xA, 0xED, 0xFF, 0xE0, 0xB, 0x13, 0xFF, 0xE0, 0xB, 0x84, 0xFF, 0xE0, 0xB, 0x86, 0xFF, 0xE0, 0xB, 0x88, 0xFF, 0xE0, 0xB, 0x8A, 0xFF, 0xE0, 0xB, 0x8C, 0xFF, 0xE0, 0xB, 0x8E, 0xFF, 0xE0, 0xB, 0xAD, 0xFF, 0xC0, 0xB, 0xAF, 0xFF, 0xC0, 0xB, 0xB1, 0xFF, 0xC0, 0xB, 0xB3, 0xFF, 0xC0, 0xB, 0xBF, 0xFF, 0xDA, 0xB, 0xC1, 0xFF, 0xDA, 0xB, 0xC7, 0xFF, 0xF7, 0xB, 0xC8, 0xFF, 0xF5, 0xB, 0xC9, 0xFF, 0xF7, 0xB, 0xCA, 0xFF, 0xF5, 0xB, 0xCB, 0xFF, 0xC7, 0xC, 0xA2, 0xFF, 0xC7, 0xC, 0xA3, 0xFF, 0xC7, 0x0, 0x72, 0x0, 0x39, 0xFF, 0x95, 0x0, 0x52, 0xFF, 0xDF, 0x0, 0x53, 0xFF, 0xDF, 0x0, 0x55, 0xFF, 0xDF, 0x0, 0x5B, 0xFF, 0xEA, 0x0, 0x5E, 0xFF, 0xEA, 0x0, 0xC2, 0xFF, 0x95, 0x0, 0xEA, 0xFF, 0xDF, 0x2, 0x28, 0xFF, 0xDF, 0x2, 0x3C, 0xFF, 0xEA, 0x2, 0x40, 0xFF, 0xDF, 0x2, 0x68, 0xFF, 0x95, 0x2, 0x6C, 0xFF, 0x95, 0x2, 0x7C, 0xFF, 0xD6, 0x2, 0x82, 0xFF, 0xDF, 0x2, 0x86, 0xFF, 0xDF, 0x2, 0x87, 0xFF, 0xDF, 0x2, 0x89, 0xFF, 0xDF, 0x2, 0x8A, 0xFF, 0xDF, 0x2, 0x8B, 0xFF, 0xDF, 0x2, 0x8C, 0xFF, 0xD5, 0x2, 0x8E, 0xFF, 0xDF, 0x2, 0x90, 0xFF, 0xDF, 0x2, 0x91, 0xFF, 0xDF, 0x2, 0x94, 0xFF, 0xEC, 0x2, 0x96, 0xFF, 0xDF, 0x2, 0x9B, 0xFF, 0xDF, 0x2, 0x9F, 0xFF, 0xEC, 0x2, 0xB0, 0xFF, 0xEA, 0x2, 0xB6, 0xFF, 0xE9, 0x2, 0xC2, 0xFF, 0xDF, 0x2, 0xCD, 0xFF, 0xDF, 0x2, 0xD0, 0xFF, 0x95, 0x2, 0xD1, 0xFF, 0xCB, 0x2, 0xD3, 0xFF, 0xDF, 0x2, 0xD5, 0xFF, 0xDF, 0x2, 0xDC, 0xFF, 0x95, 0x2, 0xE3, 0xFF, 0xE4, 0x2, 0xEA, 0xFF, 0xDF, 0x2, 0xEC, 0xFF, 0xDF, 0x2, 0xEE, 0xFF, 0xDF, 0x2, 0xF3, 0xFF, 0xDF, 0x2, 0xFA, 0xFF, 0xF1, 0x3, 0x4, 0xFF, 0xCF, 0x3, 0xF, 0xFF, 0xDF, 0x3, 0x13, 0xFF, 0xDF, 0x5, 0x67, 0xFF, 0xEA, 0x5, 0xF0, 0xFF, 0xDF, 0x6, 0x0, 0xFF, 0xDF, 0x6, 0x23, 0xFF, 0x95, 0x6, 0x25, 0xFF, 0x95, 0x6, 0x28, 0xFF, 0xDF, 0x6, 0x29, 0xFF, 0x95, 0x6, 0x30, 0xFF, 0xDF, 0x6, 0xAB, 0xFF, 0xDF, 0x6, 0xAC, 0xFF, 0xDF, 0x6, 0xFB, 0xFF, 0xDF, 0x6, 0xFC, 0xFF, 0xDF, 0x6, 0xFD, 0xFF, 0xDF, 0x7, 0x12, 0xFF, 0xDF, 0x8, 0xF8, 0xFF, 0xDF, 0x9, 0x2, 0xFF, 0xEA, 0x9, 0x3, 0xFF, 0xEA, 0x9, 0x40, 0xFF, 0xDF, 0x9, 0x42, 0xFF, 0xDF, 0x9, 0x44, 0xFF, 0xDF, 0x9, 0x45, 0xFF, 0xDF, 0x9, 0x5C, 0xFF, 0x95, 0x9, 0x5E, 0xFF, 0x95, 0x9, 0x60, 0xFF, 0x95, 0x9, 0x71, 0xFF, 0xEA, 0x9, 0xEF, 0xFF, 0xDF, 0x9, 0xF5, 0xFF, 0xEA, 0xA, 0x10, 0xFF, 0x95, 0xA, 0x14, 0xFF, 0xDF, 0xA, 0x16, 0xFF, 0xDF, 0xA, 0x18, 0xFF, 0xEA, 0xA, 0x1B, 0xFF, 0xDF, 0xA, 0x20, 0xFF, 0xDF, 0xA, 0x21, 0xFF, 0xEA, 0xA, 0x29, 0xFF, 0xEA, 0xA, 0x30, 0xFF, 0xDF, 0xA, 0x36, 0xFF, 0xDF, 0xA, 0x3A, 0xFF, 0xEA, 0xA, 0x42, 0xFF, 0xEA, 0xA, 0x57, 0xFF, 0xDF, 0xA, 0x59, 0xFF, 0xDF, 0xA, 0x64, 0xFF, 0xEA, 0xA, 0x66, 0xFF, 0xEA, 0xA, 0x68, 0xFF, 0xEA, 0xA, 0x6C, 0xFF, 0xDF, 0xA, 0xC1, 0xFF, 0xEA, 0xA, 0xC3, 0xFF, 0xEA, 0xA, 0xC5, 0xFF, 0xEA, 0xA, 0xC7, 0xFF, 0x95, 0xA, 0xCC, 0xFF, 0xDF, 0xA, 0xE7, 0xFF, 0xDF, 0xA, 0xED, 0xFF, 0xDF, 0xB, 0x13, 0xFF, 0xDF, 0xB, 0x3B, 0xFF, 0xEA, 0xB, 0x84, 0xFF, 0xDF, 0xB, 0x86, 0xFF, 0xDF, 0xB, 0x88, 0xFF, 0xDF, 0xB, 0x8A, 0xFF, 0xDF, 0xB, 0x8C, 0xFF, 0xDF, 0xB, 0x8E, 0xFF, 0xDF, 0xB, 0xAD, 0xFF, 0x95, 0xB, 0xAF, 0xFF, 0x95, 0xB, 0xB1, 0xFF, 0x95, 0xB, 0xB3, 0xFF, 0x95, 0xB, 0xC0, 0xFF, 0xEA, 0xB, 0xC2, 0xFF, 0xEA, 0xB, 0xCC, 0xFF, 0xEA, 0xB, 0xD6, 0xFF, 0xEA, 0x0, 0x8F, 0x0, 0x39, 0xFF, 0xE4, 0x0, 0x3B, 0xFF, 0xE1, 0x0, 0x3D, 0xFF, 0xEA, 0x0, 0x3E, 0xFF, 0xE1, 0x0, 0x52, 0xFF, 0xE5, 0x0, 0x53, 0xFF, 0xE5, 0x0, 0x55, 0xFF, 0xE5, 0x0, 0x5D, 0xFF, 0xF0, 0x0, 0xC2, 0xFF, 0xE4, 0x0, 0xEA, 0xFF, 0xE5, 0x1, 0x3, 0xFF, 0xE1, 0x2, 0x28, 0xFF, 0xE5, 0x2, 0x40, 0xFF, 0xE5, 0x2, 0x68, 0xFF, 0xE4, 0x2, 0x6C, 0xFF, 0xE4, 0x2, 0x70, 0xFF, 0xEA, 0x2, 0x74, 0xFF, 0xE6, 0x2, 0x77, 0xFF, 0xE6, 0x2, 0x7C, 0xFF, 0xE4, 0x2, 0x82, 0xFF, 0xE5, 0x2, 0x84, 0xFF, 0xF0, 0x2, 0x86, 0xFF, 0xE5, 0x2, 0x87, 0xFF, 0xE5, 0x2, 0x89, 0xFF, 0xE5, 0x2, 0x8A, 0xFF, 0xE5, 0x2, 0x8B, 0xFF, 0xE5, 0x2, 0x8C, 0xFF, 0xC8, 0x2, 0x8E, 0xFF, 0xE5, 0x2, 0x90, 0xFF, 0xE5, 0x2, 0x91, 0xFF, 0xE5, 0x2, 0x94, 0xFF, 0xE5, 0x2, 0x96, 0xFF, 0xE5, 0x2, 0x9B, 0xFF, 0xE5, 0x2, 0xAF, 0xFF, 0xE1, 0x2, 0xC2, 0xFF, 0xE5, 0x2, 0xCA, 0xFF, 0xEA, 0x2, 0xCB, 0xFF, 0xF0, 0x2, 0xCD, 0xFF, 0xE5, 0x2, 0xD0, 0xFF, 0xE4, 0x2, 0xD1, 0xFF, 0xB8, 0x2, 0xD3, 0xFF, 0xE5, 0x2, 0xD5, 0xFF, 0xE5, 0x2, 0xDA, 0xFF, 0xEA, 0x2, 0xDB, 0xFF, 0xF0, 0x2, 0xDC, 0xFF, 0xE4, 0x2, 0xDE, 0xFF, 0xE6, 0x2, 0xE0, 0xFF, 0xE6, 0x2, 0xEA, 0xFF, 0xE5, 0x2, 0xEC, 0xFF, 0xE5, 0x2, 0xEE, 0xFF, 0xE5, 0x2, 0xF3, 0xFF, 0xE5, 0x2, 0xF4, 0xFF, 0xEA, 0x2, 0xF5, 0xFF, 0xF0, 0x2, 0xF9, 0xFF, 0xE5, 0x2, 0xFB, 0xFF, 0xEC, 0x3, 0x3, 0xFF, 0xE0, 0x3, 0x4, 0xFF, 0xCC, 0x3, 0xF, 0xFF, 0xE5, 0x3, 0x13, 0xFF, 0xE5, 0x5, 0xF0, 0xFF, 0xE5, 0x6, 0x0, 0xFF, 0xE5, 0x6, 0x1F, 0xFF, 0xE6, 0x6, 0x23, 0xFF, 0xE4, 0x6, 0x25, 0xFF, 0xE4, 0x6, 0x28, 0xFF, 0xE5, 0x6, 0x29, 0xFF, 0xE4, 0x6, 0x30, 0xFF, 0xE5, 0x6, 0x96, 0xFF, 0xE1, 0x6, 0xAB, 0xFF, 0xE5, 0x6, 0xAC, 0xFF, 0xE5, 0x6, 0xFB, 0xFF, 0xE5, 0x6, 0xFC, 0xFF, 0xE5, 0x6, 0xFD, 0xFF, 0xE5, 0x7, 0x12, 0xFF, 0xE5, 0x8, 0xE7, 0xFF, 0xE1, 0x8, 0xF8, 0xFF, 0xE5, 0x9, 0x40, 0xFF, 0xE5, 0x9, 0x42, 0xFF, 0xE5, 0x9, 0x44, 0xFF, 0xE5, 0x9, 0x45, 0xFF, 0xE5, 0x9, 0x5C, 0xFF, 0xE4, 0x9, 0x5E, 0xFF, 0xE4, 0x9, 0x60, 0xFF, 0xE4, 0x9, 0x70, 0xFF, 0xE1, 0x9, 0x72, 0xFF, 0xE1, 0x9, 0xDA, 0xFF, 0xE1, 0x9, 0xE9, 0xFF, 0xE1, 0x9, 0xEA, 0xFF, 0xEA, 0x9, 0xEC, 0xFF, 0xE1, 0x9, 0xEF, 0xFF, 0xE5, 0xA, 0x4, 0xFF, 0xE6, 0xA, 0x10, 0xFF, 0xE4, 0xA, 0x11, 0xFF, 0xEA, 0xA, 0x14, 0xFF, 0xE5, 0xA, 0x16, 0xFF, 0xE5, 0xA, 0x19, 0xFF, 0xF0, 0xA, 0x1B, 0xFF, 0xE5, 0xA, 0x20, 0xFF, 0xE5, 0xA, 0x28, 0xFF, 0xE1, 0xA, 0x30, 0xFF, 0xE5, 0xA, 0x36, 0xFF, 0xE5, 0xA, 0x39, 0xFF, 0xE1, 0xA, 0x41, 0xFF, 0xE1, 0xA, 0x44, 0xFF, 0xEA, 0xA, 0x45, 0xFF, 0xF0, 0xA, 0x52, 0xFF, 0xEA, 0xA, 0x53, 0xFF, 0xF0, 0xA, 0x57, 0xFF, 0xE5, 0xA, 0x59, 0xFF, 0xE5, 0xA, 0x63, 0xFF, 0xE6, 0xA, 0x65, 0xFF, 0xE6, 0xA, 0x67, 0xFF, 0xE6, 0xA, 0x69, 0xFF, 0xE6, 0xA, 0x6C, 0xFF, 0xE5, 0xA, 0xC0, 0xFF, 0xE1, 0xA, 0xC2, 0xFF, 0xE1, 0xA, 0xC4, 0xFF, 0xE1, 0xA, 0xC7, 0xFF, 0xE4, 0xA, 0xC9, 0xFF, 0xE6, 0xA, 0xCC, 0xFF, 0xE5, 0xA, 0xD6, 0xFF, 0xE1, 0xA, 0xE7, 0xFF, 0xE5, 0xA, 0xED, 0xFF, 0xE5, 0xB, 0x13, 0xFF, 0xE5, 0xB, 0x84, 0xFF, 0xE5, 0xB, 0x86, 0xFF, 0xE5, 0xB, 0x88, 0xFF, 0xE5, 0xB, 0x8A, 0xFF, 0xE5, 0xB, 0x8C, 0xFF, 0xE5, 0xB, 0x8E, 0xFF, 0xE5, 0xB, 0xAD, 0xFF, 0xE4, 0xB, 0xAF, 0xFF, 0xE4, 0xB, 0xB1, 0xFF, 0xE4, 0xB, 0xB3, 0xFF, 0xE4, 0xB, 0xBF, 0xFF, 0xE1, 0xB, 0xC1, 0xFF, 0xE1, 0xB, 0xC7, 0xFF, 0xEA, 0xB, 0xC8, 0xFF, 0xF0, 0xB, 0xC9, 0xFF, 0xEA, 0xB, 0xCA, 0xFF, 0xF0, 0xB, 0xCB, 0xFF, 0xE1, 0xC, 0xA2, 0xFF, 0xE1, 0xC, 0xA3, 0xFF, 0xE1, 0x0, 0xDC, 0x0, 0x26, 0x0, 0x18, 0x0, 0x28, 0xFF, 0xE6, 0x0, 0x2C, 0xFF, 0xE6, 0x0, 0x34, 0xFF, 0xE6, 0x0, 0x36, 0xFF, 0xE6, 0x0, 0x39, 0xFF, 0xDD, 0x0, 0x3B, 0xFF, 0xDD, 0x0, 0x3E, 0xFF, 0xDC, 0x0, 0x84, 0xFF, 0xE6, 0x0, 0x94, 0xFF, 0xE6, 0x0, 0x9E, 0xFF, 0xE6, 0x0, 0xAA, 0xFF, 0xE6, 0x0, 0xB4, 0xFF, 0xE6, 0x0, 0xB6, 0xFF, 0xE6, 0x0, 0xC2, 0xFF, 0xDD, 0x0, 0xFA, 0x0, 0x18, 0x0, 0xFF, 0xFF, 0xE6, 0x1, 0x3, 0xFF, 0xDC, 0x2, 0x31, 0x0, 0x18, 0x2, 0x32, 0xFF, 0xE6, 0x2, 0x33, 0x0, 0x18, 0x2, 0x55, 0xFF, 0xE6, 0x2, 0x57, 0xFF, 0xE6, 0x2, 0x66, 0xFF, 0xE6, 0x2, 0x68, 0xFF, 0xDD, 0x2, 0x69, 0xFF, 0xE6, 0x2, 0x6A, 0x0, 0x11, 0x2, 0x6C, 0xFF, 0xDD, 0x2, 0x6F, 0x0, 0x20, 0x2, 0x73, 0x0, 0x11, 0x2, 0x77, 0xFF, 0xD8, 0x2, 0x7C, 0xFF, 0xE8, 0x2, 0x83, 0x0, 0x1F, 0x2, 0x88, 0x0, 0x23, 0x2, 0x8F, 0xFF, 0xDD, 0x2, 0x9A, 0x0, 0x23, 0x2, 0x9E, 0xFF, 0xE6, 0x2, 0xA3, 0x0, 0x18, 0x2, 0xAD, 0xFF, 0xE6, 0x2, 0xAF, 0xFF, 0xDD, 0x2, 0xB1, 0xFF, 0xE6, 0x2, 0xB3, 0xFF, 0xE6, 0x2, 0xB5, 0xFF, 0xE6, 0x2, 0xB7, 0xFF, 0xE6, 0x2, 0xD0, 0xFF, 0xDD, 0x2, 0xD8, 0xFF, 0xE6, 0x2, 0xDC, 0xFF, 0xDD, 0x2, 0xDE, 0xFF, 0xD8, 0x2, 0xDF, 0xFF, 0xDD, 0x2, 0xE0, 0xFF, 0xDB, 0x2, 0xE1, 0xFF, 0xD6, 0x2, 0xE4, 0xFF, 0xED, 0x2, 0xE7, 0x0, 0x11, 0x2, 0xE8, 0x0, 0x23, 0x2, 0xEF, 0xFF, 0xEE, 0x2, 0xF9, 0xFF, 0xDC, 0x2, 0xFB, 0xFF, 0xDB, 0x2, 0xFD, 0x0, 0x11, 0x3, 0x1, 0xFF, 0xE6, 0x3, 0x3, 0xFF, 0xDC, 0x3, 0x5, 0xFF, 0xFB, 0x3, 0x6, 0x0, 0x11, 0x3, 0x7, 0x0, 0x23, 0x3, 0x8, 0x0, 0x11, 0x3, 0x9, 0x0, 0x23, 0x3, 0x10, 0x0, 0x11, 0x3, 0x11, 0x0, 0x23, 0x5, 0x63, 0xFF, 0xE6, 0x5, 0xE5, 0xFF, 0xE6, 0x5, 0xED, 0xFF, 0xE6, 0x5, 0xF1, 0x0, 0x18, 0x6, 0x1, 0xFF, 0xE6, 0x6, 0x3, 0xFF, 0xE6, 0x6, 0x5, 0xFF, 0xE6, 0x6, 0x1F, 0xFF, 0xD8, 0x6, 0x20, 0xFF, 0xDD, 0x6, 0x23, 0xFF, 0xDD, 0x6, 0x25, 0xFF, 0xDD, 0x6, 0x29, 0xFF, 0xDD, 0x6, 0x31, 0xFF, 0xE6, 0x6, 0x33, 0xFF, 0xE6, 0x6, 0x6A, 0x0, 0x18, 0x6, 0x6C, 0x0, 0x18, 0x6, 0x70, 0x0, 0x18, 0x6, 0x72, 0x0, 0x18, 0x6, 0x74, 0x0, 0x18, 0x6, 0x84, 0xFF, 0xE6, 0x6, 0x86, 0xFF, 0xE6, 0x6, 0x8E, 0xFF, 0xE6, 0x6, 0x90, 0xFF, 0xE6, 0x6, 0x96, 0xFF, 0xDD, 0x6, 0xE3, 0xFF, 0xE6, 0x7, 0xCF, 0xFF, 0xE6, 0x7, 0xD0, 0xFF, 0xE6, 0x7, 0xD2, 0xFF, 0xE6, 0x7, 0xD3, 0xFF, 0xE6, 0x8, 0xCD, 0x0, 0x18, 0x8, 0xCE, 0x0, 0x18, 0x8, 0xCF, 0x0, 0x18, 0x8, 0xD0, 0x0, 0x18, 0x8, 0xD1, 0x0, 0x18, 0x8, 0xD2, 0x0, 0x18, 0x8, 0xD3, 0x0, 0x18, 0x8, 0xD4, 0xFF, 0xE6, 0x8, 0xDE, 0xFF, 0xE6, 0x8, 0xDF, 0xFF, 0xE6, 0x8, 0xE0, 0xFF, 0xE6, 0x8, 0xE1, 0xFF, 0xE6, 0x8, 0xE2, 0xFF, 0xE6, 0x8, 0xE7, 0xFF, 0xDC, 0x9, 0x4, 0x0, 0x18, 0x9, 0x6, 0x0, 0x18, 0x9, 0x8, 0x0, 0x18, 0x9, 0xA, 0xFF, 0xE6, 0x9, 0xC, 0xFF, 0xE6, 0x9, 0xE, 0xFF, 0xE6, 0x9, 0x10, 0xFF, 0xE6, 0x9, 0x1E, 0xFF, 0xE6, 0x9, 0x20, 0xFF, 0xE6, 0x9, 0x22, 0xFF, 0xE6, 0x9, 0x24, 0xFF, 0xE6, 0x9, 0x46, 0xFF, 0xE6, 0x9, 0x48, 0xFF, 0xE6, 0x9, 0x4A, 0xFF, 0xE6, 0x9, 0x5C, 0xFF, 0xDD, 0x9, 0x5E, 0xFF, 0xDD, 0x9, 0x60, 0xFF, 0xDD, 0x9, 0x70, 0xFF, 0xDC, 0x9, 0x72, 0xFF, 0xDC, 0x9, 0x7B, 0xFF, 0xE6, 0x9, 0xD5, 0x0, 0x18, 0x9, 0xD9, 0xFF, 0xE6, 0x9, 0xDA, 0xFF, 0xDC, 0x9, 0xDD, 0x0, 0x18, 0x9, 0xE6, 0xFF, 0xE6, 0x9, 0xE9, 0xFF, 0xDC, 0x9, 0xEC, 0xFF, 0xDC, 0xA, 0x5, 0x0, 0x18, 0xA, 0xC, 0xFF, 0xE6, 0xA, 0xF, 0xFF, 0xE6, 0xA, 0x10, 0xFF, 0xDD, 0xA, 0x28, 0xFF, 0xDC, 0xA, 0x31, 0x0, 0x18, 0xA, 0x39, 0xFF, 0xDD, 0xA, 0x3C, 0xFF, 0xE6, 0xA, 0x3F, 0xFF, 0xE6, 0xA, 0x41, 0xFF, 0xDC, 0xA, 0x47, 0x0, 0x18, 0xA, 0x49, 0x0, 0x18, 0xA, 0x5A, 0xFF, 0xE6, 0xA, 0x5C, 0xFF, 0xE6, 0xA, 0x5E, 0xFF, 0xE6, 0xA, 0x5F, 0xFF, 0xE6, 0xA, 0x69, 0xFF, 0xD8, 0xA, 0x6A, 0xFF, 0xDD, 0xA, 0x6E, 0x0, 0x18, 0xA, 0x70, 0x0, 0x18, 0xA, 0x72, 0x0, 0x18, 0xA, 0x74, 0x0, 0x18, 0xA, 0x76, 0x0, 0x18, 0xA, 0x78, 0x0, 0x18, 0xA, 0x7A, 0x0, 0x18, 0xA, 0x7C, 0x0, 0x18, 0xA, 0x7E, 0x0, 0x18, 0xA, 0x80, 0x0, 0x18, 0xA, 0x82, 0x0, 0x18, 0xA, 0x84, 0x0, 0x18, 0xA, 0x9A, 0xFF, 0xE6, 0xA, 0x9C, 0xFF, 0xE6, 0xA, 0x9E, 0xFF, 0xE6, 0xA, 0xA0, 0xFF, 0xE6, 0xA, 0xA2, 0xFF, 0xE6, 0xA, 0xA4, 0xFF, 0xE6, 0xA, 0xA6, 0xFF, 0xE6, 0xA, 0xA8, 0xFF, 0xE6, 0xA, 0xAA, 0xFF, 0xE6, 0xA, 0xAC, 0xFF, 0xE6, 0xA, 0xAE, 0xFF, 0xE6, 0xA, 0xB0, 0xFF, 0xE6, 0xA, 0xC0, 0xFF, 0xDC, 0xA, 0xC2, 0xFF, 0xDC, 0xA, 0xC4, 0xFF, 0xDC, 0xA, 0xC7, 0xFF, 0xDD, 0xA, 0xC9, 0xFF, 0xD8, 0xA, 0xCA, 0xFF, 0xDD, 0xA, 0xD6, 0xFF, 0xDC, 0xA, 0xEE, 0x0, 0x18, 0xA, 0xF2, 0xFF, 0xE6, 0xA, 0xFF, 0x0, 0x18, 0xB, 0x1, 0x0, 0x18, 0xB, 0x9, 0xFF, 0xE6, 0xB, 0xB, 0xFF, 0xE6, 0xB, 0x14, 0x0, 0x18, 0xB, 0x16, 0x0, 0x18, 0xB, 0x20, 0xFF, 0xE6, 0xB, 0x22, 0xFF, 0xE6, 0xB, 0x2E, 0x0, 0x18, 0xB, 0x32, 0xFF, 0xE6, 0xB, 0x34, 0xFF, 0xE6, 0xB, 0x36, 0xFF, 0xE6, 0xB, 0x38, 0xFF, 0xE6, 0xB, 0x49, 0xFF, 0xE6, 0xB, 0x53, 0xFF, 0xE6, 0xB, 0x6B, 0xFF, 0xE6, 0xB, 0x8F, 0xFF, 0xE6, 0xB, 0x91, 0xFF, 0xE6, 0xB, 0x93, 0xFF, 0xE6, 0xB, 0x95, 0xFF, 0xE6, 0xB, 0xAD, 0xFF, 0xDD, 0xB, 0xAF, 0xFF, 0xDD, 0xB, 0xB1, 0xFF, 0xDD, 0xB, 0xB3, 0xFF, 0xDD, 0xB, 0xBF, 0xFF, 0xDD, 0xB, 0xC1, 0xFF, 0xDD, 0xB, 0xCB, 0xFF, 0xDC, 0xC, 0x81, 0x0, 0x18, 0xC, 0x82, 0x0, 0x18, 0xC, 0x85, 0x0, 0x18, 0xC, 0xA2, 0xFF, 0xDC, 0xC, 0xA3, 0xFF, 0xDC, 0x0, 0x45, 0x0, 0x1C, 0xFF, 0xF1, 0x0, 0x39, 0xFF, 0xF0, 0x0, 0x3B, 0xFF, 0xF3, 0x0, 0x3D, 0xFF, 0xF3, 0x0, 0x3E, 0xFF, 0xE8, 0x0, 0xC2, 0xFF, 0xF0, 0x1, 0x3, 0xFF, 0xE8, 0x2, 0x68, 0xFF, 0xF0, 0x2, 0x6A, 0xFF, 0xF4, 0x2, 0x6C, 0xFF, 0xF0, 0x2, 0x70, 0xFF, 0xF3, 0x2, 0x73, 0xFF, 0xF4, 0x2, 0x74, 0xFF, 0xF2, 0x2, 0x7C, 0xFF, 0xF0, 0x2, 0xAF, 0xFF, 0xF3, 0x2, 0xCA, 0xFF, 0xF3, 0x2, 0xD0, 0xFF, 0xF0, 0x2, 0xDA, 0xFF, 0xF3, 0x2, 0xDC, 0xFF, 0xF0, 0x2, 0xE7, 0xFF, 0xF4, 0x2, 0xF4, 0xFF, 0xF3, 0x2, 0xF9, 0xFF, 0xF1, 0x2, 0xFB, 0xFF, 0xF1, 0x2, 0xFD, 0xFF, 0xF4, 0x3, 0x3, 0xFF, 0xF4, 0x3, 0x6, 0xFF, 0xF4, 0x3, 0x8, 0xFF, 0xF4, 0x3, 0x10, 0xFF, 0xF4, 0x6, 0x23, 0xFF, 0xF0, 0x6, 0x25, 0xFF, 0xF0, 0x6, 0x29, 0xFF, 0xF0, 0x6, 0x96, 0xFF, 0xF3, 0x8, 0xE7, 0xFF, 0xE8, 0x9, 0x5C, 0xFF, 0xF0, 0x9, 0x5E, 0xFF, 0xF0, 0x9, 0x60, 0xFF, 0xF0, 0x9, 0x70, 0xFF, 0xE8, 0x9, 0x72, 0xFF, 0xE8, 0x9, 0xDA, 0xFF, 0xE8, 0x9, 0xE9, 0xFF, 0xE8, 0x9, 0xEA, 0xFF, 0xF3, 0x9, 0xEC, 0xFF, 0xE8, 0xA, 0x4, 0xFF, 0xF2, 0xA, 0x10, 0xFF, 0xF0, 0xA, 0x11, 0xFF, 0xF3, 0xA, 0x28, 0xFF, 0xE8, 0xA, 0x39, 0xFF, 0xF3, 0xA, 0x41, 0xFF, 0xE8, 0xA, 0x44, 0xFF, 0xF3, 0xA, 0x52, 0xFF, 0xF3, 0xA, 0x63, 0xFF, 0xF2, 0xA, 0x65, 0xFF, 0xF2, 0xA, 0x67, 0xFF, 0xF2, 0xA, 0xC0, 0xFF, 0xE8, 0xA, 0xC2, 0xFF, 0xE8, 0xA, 0xC4, 0xFF, 0xE8, 0xA, 0xC7, 0xFF, 0xF0, 0xA, 0xD6, 0xFF, 0xE8, 0xB, 0xAD, 0xFF, 0xF0, 0xB, 0xAF, 0xFF, 0xF0, 0xB, 0xB1, 0xFF, 0xF0, 0xB, 0xB3, 0xFF, 0xF0, 0xB, 0xBF, 0xFF, 0xF3, 0xB, 0xC1, 0xFF, 0xF3, 0xB, 0xC7, 0xFF, 0xF3, 0xB, 0xC9, 0xFF, 0xF3, 0xB, 0xCB, 0xFF, 0xE8, 0xC, 0xA2, 0xFF, 0xE8, 0xC, 0xA3, 0xFF, 0xE8, 0x0, 0xCC, 0x0, 0x26, 0x0, 0xD, 0x0, 0x39, 0xFF, 0xBD, 0x0, 0x3B, 0xFF, 0xD2, 0x0, 0x3D, 0x0, 0xF, 0x0, 0x3E, 0xFF, 0xDD, 0x0, 0x52, 0xFF, 0xF5, 0x0, 0x53, 0xFF, 0xF5, 0x0, 0x55, 0xFF, 0xF5, 0x0, 0xC2, 0xFF, 0xBD, 0x0, 0xEA, 0xFF, 0xF5, 0x0, 0xFA, 0x0, 0xD, 0x1, 0x3, 0xFF, 0xDD, 0x2, 0x28, 0xFF, 0xF5, 0x2, 0x31, 0x0, 0xD, 0x2, 0x33, 0x0, 0xD, 0x2, 0x40, 0xFF, 0xF5, 0x2, 0x68, 0xFF, 0xBD, 0x2, 0x6A, 0x0, 0xF, 0x2, 0x6C, 0xFF, 0xBD, 0x2, 0x6F, 0x0, 0x14, 0x2, 0x70, 0x0, 0xF, 0x2, 0x73, 0x0, 0xF, 0x2, 0x74, 0xFF, 0xF0, 0x2, 0x77, 0xFF, 0xC7, 0x2, 0x7C, 0xFF, 0xE4, 0x2, 0x7D, 0xFF, 0xF3, 0x2, 0x82, 0xFF, 0xF5, 0x2, 0x83, 0x0, 0x13, 0x2, 0x86, 0xFF, 0xF5, 0x2, 0x87, 0xFF, 0xF5, 0x2, 0x88, 0x0, 0x14, 0x2, 0x89, 0xFF, 0xF5, 0x2, 0x8A, 0xFF, 0xF5, 0x2, 0x8B, 0xFF, 0xF5, 0x2, 0x8C, 0xFF, 0xDE, 0x2, 0x8E, 0xFF, 0xF5, 0x2, 0x8F, 0xFF, 0xDB, 0x2, 0x90, 0xFF, 0xF5, 0x2, 0x91, 0xFF, 0xF5, 0x2, 0x94, 0xFF, 0xF0, 0x2, 0x96, 0xFF, 0xF5, 0x2, 0x9A, 0x0, 0x14, 0x2, 0x9B, 0xFF, 0xF5, 0x2, 0xA3, 0x0, 0xD, 0x2, 0xAF, 0xFF, 0xD2, 0x2, 0xC2, 0xFF, 0xF5, 0x2, 0xCA, 0x0, 0xF, 0x2, 0xCD, 0xFF, 0xF5, 0x2, 0xD0, 0xFF, 0xBD, 0x2, 0xD1, 0xFF, 0xD0, 0x2, 0xD3, 0xFF, 0xF5, 0x2, 0xD5, 0xFF, 0xF5, 0x2, 0xDA, 0x0, 0xF, 0x2, 0xDC, 0xFF, 0xBD, 0x2, 0xDE, 0xFF, 0xC7, 0x2, 0xDF, 0xFF, 0xDB, 0x2, 0xE0, 0xFF, 0xCE, 0x2, 0xE1, 0xFF, 0xDF, 0x2, 0xE3, 0xFF, 0xEE, 0x2, 0xE7, 0x0, 0xF, 0x2, 0xE8, 0x0, 0x14, 0x2, 0xEA, 0xFF, 0xF5, 0x2, 0xEC, 0xFF, 0xF5, 0x2, 0xEE, 0xFF, 0xF5, 0x2, 0xF3, 0xFF, 0xF5, 0x2, 0xF4, 0x0, 0xF, 0x2, 0xF9, 0xFF, 0xCB, 0x2, 0xFB, 0xFF, 0xCB, 0x2, 0xFD, 0x0, 0xF, 0x3, 0x3, 0xFF, 0xD6, 0x3, 0x4, 0xFF, 0xD7, 0x3, 0x6, 0x0, 0xF, 0x3, 0x7, 0x0, 0x14, 0x3, 0x8, 0x0, 0xF, 0x3, 0x9, 0x0, 0x14, 0x3, 0xF, 0xFF, 0xF5, 0x3, 0x10, 0x0, 0xF, 0x3, 0x11, 0x0, 0x14, 0x3, 0x13, 0xFF, 0xF5, 0x5, 0xF0, 0xFF, 0xF5, 0x5, 0xF1, 0x0, 0xD, 0x6, 0x0, 0xFF, 0xF5, 0x6, 0x1F, 0xFF, 0xC7, 0x6, 0x20, 0xFF, 0xDB, 0x6, 0x23, 0xFF, 0xBD, 0x6, 0x25, 0xFF, 0xBD, 0x6, 0x28, 0xFF, 0xF5, 0x6, 0x29, 0xFF, 0xBD, 0x6, 0x30, 0xFF, 0xF5, 0x6, 0x6A, 0x0, 0xD, 0x6, 0x6C, 0x0, 0xD, 0x6, 0x70, 0x0, 0xD, 0x6, 0x72, 0x0, 0xD, 0x6, 0x74, 0x0, 0xD, 0x6, 0x96, 0xFF, 0xD2, 0x6, 0xAB, 0xFF, 0xF5, 0x6, 0xAC, 0xFF, 0xF5, 0x6, 0xFB, 0xFF, 0xF5, 0x6, 0xFC, 0xFF, 0xF5, 0x6, 0xFD, 0xFF, 0xF5, 0x7, 0x12, 0xFF, 0xF5, 0x8, 0xCD, 0x0, 0xD, 0x8, 0xCE, 0x0, 0xD, 0x8, 0xCF, 0x0, 0xD, 0x8, 0xD0, 0x0, 0xD, 0x8, 0xD1, 0x0, 0xD, 0x8, 0xD2, 0x0, 0xD, 0x8, 0xD3, 0x0, 0xD, 0x8, 0xE7, 0xFF, 0xDD, 0x8, 0xF8, 0xFF, 0xF5, 0x9, 0x4, 0x0, 0xD, 0x9, 0x6, 0x0, 0xD, 0x9, 0x8, 0x0, 0xD, 0x9, 0x40, 0xFF, 0xF5, 0x9, 0x42, 0xFF, 0xF5, 0x9, 0x44, 0xFF, 0xF5, 0x9, 0x45, 0xFF, 0xF5, 0x9, 0x5C, 0xFF, 0xBD, 0x9, 0x5E, 0xFF, 0xBD, 0x9, 0x60, 0xFF, 0xBD, 0x9, 0x70, 0xFF, 0xDD, 0x9, 0x72, 0xFF, 0xDD, 0x9, 0xD5, 0x0, 0xD, 0x9, 0xDA, 0xFF, 0xDD, 0x9, 0xDD, 0x0, 0xD, 0x9, 0xE9, 0xFF, 0xDD, 0x9, 0xEA, 0x0, 0xF, 0x9, 0xEC, 0xFF, 0xDD, 0x9, 0xEF, 0xFF, 0xF5, 0xA, 0x4, 0xFF, 0xF0, 0xA, 0x5, 0x0, 0xD, 0xA, 0x10, 0xFF, 0xBD, 0xA, 0x11, 0x0, 0xF, 0xA, 0x14, 0xFF, 0xF5, 0xA, 0x16, 0xFF, 0xF5, 0xA, 0x1B, 0xFF, 0xF5, 0xA, 0x20, 0xFF, 0xF5, 0xA, 0x28, 0xFF, 0xDD, 0xA, 0x30, 0xFF, 0xF5, 0xA, 0x31, 0x0, 0xD, 0xA, 0x36, 0xFF, 0xF5, 0xA, 0x39, 0xFF, 0xD2, 0xA, 0x41, 0xFF, 0xDD, 0xA, 0x44, 0x0, 0xF, 0xA, 0x47, 0x0, 0xD, 0xA, 0x49, 0x0, 0xD, 0xA, 0x52, 0x0, 0xF, 0xA, 0x57, 0xFF, 0xF5, 0xA, 0x59, 0xFF, 0xF5, 0xA, 0x63, 0xFF, 0xF0, 0xA, 0x65, 0xFF, 0xF0, 0xA, 0x67, 0xFF, 0xF0, 0xA, 0x69, 0xFF, 0xC7, 0xA, 0x6A, 0xFF, 0xDB, 0xA, 0x6C, 0xFF, 0xF5, 0xA, 0x6E, 0x0, 0xD, 0xA, 0x70, 0x0, 0xD, 0xA, 0x72, 0x0, 0xD, 0xA, 0x74, 0x0, 0xD, 0xA, 0x76, 0x0, 0xD, 0xA, 0x78, 0x0, 0xD, 0xA, 0x7A, 0x0, 0xD, 0xA, 0x7C, 0x0, 0xD, 0xA, 0x7E, 0x0, 0xD, 0xA, 0x80, 0x0, 0xD, 0xA, 0x82, 0x0, 0xD, 0xA, 0x84, 0x0, 0xD, 0xA, 0xC0, 0xFF, 0xDD, 0xA, 0xC2, 0xFF, 0xDD, 0xA, 0xC4, 0xFF, 0xDD, 0xA, 0xC7, 0xFF, 0xBD, 0xA, 0xC9, 0xFF, 0xC7, 0xA, 0xCA, 0xFF, 0xDB, 0xA, 0xCC, 0xFF, 0xF5, 0xA, 0xD6, 0xFF, 0xDD, 0xA, 0xE7, 0xFF, 0xF5, 0xA, 0xED, 0xFF, 0xF5, 0xA, 0xEE, 0x0, 0xD, 0xA, 0xFF, 0x0, 0xD, 0xB, 0x1, 0x0, 0xD, 0xB, 0x13, 0xFF, 0xF5, 0xB, 0x14, 0x0, 0xD, 0xB, 0x16, 0x0, 0xD, 0xB, 0x2E, 0x0, 0xD, 0xB, 0x84, 0xFF, 0xF5, 0xB, 0x86, 0xFF, 0xF5, 0xB, 0x88, 0xFF, 0xF5, 0xB, 0x8A, 0xFF, 0xF5, 0xB, 0x8C, 0xFF, 0xF5, 0xB, 0x8E, 0xFF, 0xF5, 0xB, 0xAD, 0xFF, 0xBD, 0xB, 0xAF, 0xFF, 0xBD, 0xB, 0xB1, 0xFF, 0xBD, 0xB, 0xB3, 0xFF, 0xBD, 0xB, 0xBF, 0xFF, 0xD2, 0xB, 0xC1, 0xFF, 0xD2, 0xB, 0xC7, 0x0, 0xF, 0xB, 0xC9, 0x0, 0xF, 0xB, 0xCB, 0xFF, 0xDD, 0xC, 0x81, 0x0, 0xD, 0xC, 0x82, 0x0, 0xD, 0xC, 0x85, 0x0, 0xD, 0xC, 0xA2, 0xFF, 0xDD, 0xC, 0xA3, 0xFF, 0xDD, 0x0, 0x47, 0x0, 0x7, 0xFF, 0xD6, 0x0, 0xC, 0xFF, 0xD6, 0x0, 0x39, 0xFF, 0xC1, 0x0, 0x3B, 0xFF, 0xDC, 0x0, 0x3E, 0xFF, 0xCA, 0x0, 0xC2, 0xFF, 0xC1, 0x1, 0x3, 0xFF, 0xCA, 0x2, 0x68, 0xFF, 0xC1, 0x2, 0x6C, 0xFF, 0xC1, 0x2, 0x74, 0xFF, 0xF3, 0x2, 0x77, 0xFF, 0xEF, 0x2, 0x7C, 0xFF, 0xD9, 0x2, 0x8C, 0xFF, 0xDF, 0x2, 0x94, 0xFF, 0xE4, 0x2, 0xAF, 0xFF, 0xDC, 0x2, 0xD0, 0xFF, 0xC1, 0x2, 0xD1, 0xFF, 0xDE, 0x2, 0xDC, 0xFF, 0xC1, 0x2, 0xDE, 0xFF, 0xEF, 0x2, 0xE0, 0xFF, 0xEF, 0x2, 0xE3, 0xFF, 0xDC, 0x2, 0xF9, 0xFF, 0xE1, 0x2, 0xFB, 0xFF, 0xF3, 0x3, 0x3, 0xFF, 0xC2, 0x3, 0x4, 0xFF, 0xE0, 0x4, 0x62, 0xFF, 0xD6, 0x4, 0x63, 0xFF, 0xD6, 0x4, 0x65, 0xFF, 0xD6, 0x4, 0x66, 0xFF, 0xD6, 0x4, 0x67, 0xFF, 0xD6, 0x6, 0x1F, 0xFF, 0xEF, 0x6, 0x23, 0xFF, 0xC1, 0x6, 0x25, 0xFF, 0xC1, 0x6, 0x29, 0xFF, 0xC1, 0x6, 0x96, 0xFF, 0xDC, 0x8, 0xE7, 0xFF, 0xCA, 0x9, 0x5C, 0xFF, 0xC1, 0x9, 0x5E, 0xFF, 0xC1, 0x9, 0x60, 0xFF, 0xC1, 0x9, 0x70, 0xFF, 0xCA, 0x9, 0x72, 0xFF, 0xCA, 0x9, 0xDA, 0xFF, 0xCA, 0x9, 0xE9, 0xFF, 0xCA, 0x9, 0xEC, 0xFF, 0xCA, 0xA, 0x4, 0xFF, 0xF3, 0xA, 0x10, 0xFF, 0xC1, 0xA, 0x28, 0xFF, 0xCA, 0xA, 0x2A, 0xFF, 0xD6, 0xA, 0x2B, 0xFF, 0xD6, 0xA, 0x2E, 0xFF, 0xD6, 0xA, 0x39, 0xFF, 0xDC, 0xA, 0x41, 0xFF, 0xCA, 0xA, 0x63, 0xFF, 0xF3, 0xA, 0x65, 0xFF, 0xF3, 0xA, 0x67, 0xFF, 0xF3, 0xA, 0x69, 0xFF, 0xEF, 0xA, 0xC0, 0xFF, 0xCA, 0xA, 0xC2, 0xFF, 0xCA, 0xA, 0xC4, 0xFF, 0xCA, 0xA, 0xC7, 0xFF, 0xC1, 0xA, 0xC9, 0xFF, 0xEF, 0xA, 0xD6, 0xFF, 0xCA, 0xB, 0xAD, 0xFF, 0xC1, 0xB, 0xAF, 0xFF, 0xC1, 0xB, 0xB1, 0xFF, 0xC1, 0xB, 0xB3, 0xFF, 0xC1, 0xB, 0xBF, 0xFF, 0xDC, 0xB, 0xC1, 0xFF, 0xDC, 0xB, 0xCB, 0xFF, 0xCA, 0xC, 0xA2, 0xFF, 0xCA, 0xC, 0xA3, 0xFF, 0xCA, 0x0, 0x42, 0x0, 0x39, 0xFF, 0xE1, 0x0, 0x3D, 0xFF, 0xD8, 0x0, 0x3E, 0xFF, 0xD7, 0x0, 0xC2, 0xFF, 0xE1, 0x1, 0x3, 0xFF, 0xD7, 0x2, 0x68, 0xFF, 0xE1, 0x2, 0x6A, 0xFF, 0xE3, 0x2, 0x6C, 0xFF, 0xE1, 0x2, 0x6F, 0xFF, 0xE0, 0x2, 0x70, 0xFF, 0xD8, 0x2, 0x73, 0xFF, 0xE3, 0x2, 0x74, 0xFF, 0xDD, 0x2, 0x88, 0xFF, 0xEC, 0x2, 0x9A, 0xFF, 0xEC, 0x2, 0xCA, 0xFF, 0xD8, 0x2, 0xD0, 0xFF, 0xE1, 0x2, 0xDA, 0xFF, 0xD8, 0x2, 0xDC, 0xFF, 0xE1, 0x2, 0xE7, 0xFF, 0xE3, 0x2, 0xE8, 0xFF, 0xEC, 0x2, 0xF4, 0xFF, 0xD8, 0x2, 0xFD, 0xFF, 0xE3, 0x3, 0x3, 0xFF, 0xDE, 0x3, 0x6, 0xFF, 0xE3, 0x3, 0x7, 0xFF, 0xEC, 0x3, 0x8, 0xFF, 0xE3, 0x3, 0x9, 0xFF, 0xEC, 0x3, 0x10, 0xFF, 0xE3, 0x3, 0x11, 0xFF, 0xEC, 0x6, 0x23, 0xFF, 0xE1, 0x6, 0x25, 0xFF, 0xE1, 0x6, 0x29, 0xFF, 0xE1, 0x8, 0xE7, 0xFF, 0xD7, 0x9, 0x5C, 0xFF, 0xE1, 0x9, 0x5E, 0xFF, 0xE1, 0x9, 0x60, 0xFF, 0xE1, 0x9, 0x70, 0xFF, 0xD7, 0x9, 0x72, 0xFF, 0xD7, 0x9, 0xDA, 0xFF, 0xD7, 0x9, 0xE9, 0xFF, 0xD7, 0x9, 0xEA, 0xFF, 0xD8, 0x9, 0xEC, 0xFF, 0xD7, 0xA, 0x4, 0xFF, 0xDD, 0xA, 0x10, 0xFF, 0xE1, 0xA, 0x11, 0xFF, 0xD8, 0xA, 0x28, 0xFF, 0xD7, 0xA, 0x41, 0xFF, 0xD7, 0xA, 0x44, 0xFF, 0xD8, 0xA, 0x52, 0xFF, 0xD8, 0xA, 0x63, 0xFF, 0xDD, 0xA, 0x65, 0xFF, 0xDD, 0xA, 0x67, 0xFF, 0xDD, 0xA, 0xC0, 0xFF, 0xD7, 0xA, 0xC2, 0xFF, 0xD7, 0xA, 0xC4, 0xFF, 0xD7, 0xA, 0xC7, 0xFF, 0xE1, 0xA, 0xD6, 0xFF, 0xD7, 0xB, 0xAD, 0xFF, 0xE1, 0xB, 0xAF, 0xFF, 0xE1, 0xB, 0xB1, 0xFF, 0xE1, 0xB, 0xB3, 0xFF, 0xE1, 0xB, 0xC7, 0xFF, 0xD8, 0xB, 0xC9, 0xFF, 0xD8, 0xB, 0xCB, 0xFF, 0xD7, 0xC, 0xA2, 0xFF, 0xD7, 0xC, 0xA3, 0xFF, 0xD7, 0x0, 0x31, 0x0, 0x39, 0xFF, 0xE0, 0x0, 0x3D, 0xFF, 0xE2, 0x0, 0xC2, 0xFF, 0xE0, 0x2, 0x68, 0xFF, 0xE0, 0x2, 0x6A, 0xFF, 0xD7, 0x2, 0x6C, 0xFF, 0xE0, 0x2, 0x6F, 0xFF, 0xD8, 0x2, 0x70, 0xFF, 0xE2, 0x2, 0x73, 0xFF, 0xD7, 0x2, 0x74, 0xFF, 0xD2, 0x2, 0x83, 0xFF, 0xDB, 0x2, 0x88, 0xFF, 0xE9, 0x2, 0x9A, 0xFF, 0xE9, 0x2, 0xCA, 0xFF, 0xE2, 0x2, 0xD0, 0xFF, 0xE0, 0x2, 0xDA, 0xFF, 0xE2, 0x2, 0xDC, 0xFF, 0xE0, 0x2, 0xE7, 0xFF, 0xD7, 0x2, 0xE8, 0xFF, 0xE9, 0x2, 0xF4, 0xFF, 0xE2, 0x2, 0xFD, 0xFF, 0xD7, 0x3, 0x6, 0xFF, 0xD7, 0x3, 0x7, 0xFF, 0xE9, 0x3, 0x8, 0xFF, 0xD7, 0x3, 0x9, 0xFF, 0xE9, 0x3, 0x10, 0xFF, 0xD7, 0x3, 0x11, 0xFF, 0xE9, 0x6, 0x23, 0xFF, 0xE0, 0x6, 0x25, 0xFF, 0xE0, 0x6, 0x29, 0xFF, 0xE0, 0x9, 0x5C, 0xFF, 0xE0, 0x9, 0x5E, 0xFF, 0xE0, 0x9, 0x60, 0xFF, 0xE0, 0x9, 0xEA, 0xFF, 0xE2, 0xA, 0x4, 0xFF, 0xD2, 0xA, 0x10, 0xFF, 0xE0, 0xA, 0x11, 0xFF, 0xE2, 0xA, 0x44, 0xFF, 0xE2, 0xA, 0x52, 0xFF, 0xE2, 0xA, 0x63, 0xFF, 0xD2, 0xA, 0x65, 0xFF, 0xD2, 0xA, 0x67, 0xFF, 0xD2, 0xA, 0xC7, 0xFF, 0xE0, 0xB, 0xAD, 0xFF, 0xE0, 0xB, 0xAF, 0xFF, 0xE0, 0xB, 0xB1, 0xFF, 0xE0, 0xB, 0xB3, 0xFF, 0xE0, 0xB, 0xC7, 0xFF, 0xE2, 0xB, 0xC9, 0xFF, 0xE2, 0x0, 0x23, 0x0, 0x39, 0xFF, 0xE9, 0x0, 0x3E, 0xFF, 0xF2, 0x0, 0xC2, 0xFF, 0xE9, 0x1, 0x3, 0xFF, 0xF2, 0x2, 0x68, 0xFF, 0xE9, 0x2, 0x6C, 0xFF, 0xE9, 0x2, 0xD0, 0xFF, 0xE9, 0x2, 0xDC, 0xFF, 0xE9, 0x6, 0x23, 0xFF, 0xE9, 0x6, 0x25, 0xFF, 0xE9, 0x6, 0x29, 0xFF, 0xE9, 0x8, 0xE7, 0xFF, 0xF2, 0x9, 0x5C, 0xFF, 0xE9, 0x9, 0x5E, 0xFF, 0xE9, 0x9, 0x60, 0xFF, 0xE9, 0x9, 0x70, 0xFF, 0xF2, 0x9, 0x72, 0xFF, 0xF2, 0x9, 0xDA, 0xFF, 0xF2, 0x9, 0xE9, 0xFF, 0xF2, 0x9, 0xEC, 0xFF, 0xF2, 0xA, 0x10, 0xFF, 0xE9, 0xA, 0x28, 0xFF, 0xF2, 0xA, 0x41, 0xFF, 0xF2, 0xA, 0xC0, 0xFF, 0xF2, 0xA, 0xC2, 0xFF, 0xF2, 0xA, 0xC4, 0xFF, 0xF2, 0xA, 0xC7, 0xFF, 0xE9, 0xA, 0xD6, 0xFF, 0xF2, 0xB, 0xAD, 0xFF, 0xE9, 0xB, 0xAF, 0xFF, 0xE9, 0xB, 0xB1, 0xFF, 0xE9, 0xB, 0xB3, 0xFF, 0xE9, 0xB, 0xCB, 0xFF, 0xF2, 0xC, 0xA2, 0xFF, 0xF2, 0xC, 0xA3, 0xFF, 0xF2, 0x0, 0x4F, 0x0, 0x52, 0xFF, 0xEE, 0x0, 0x53, 0xFF, 0xEE, 0x0, 0x55, 0xFF, 0xEE, 0x0, 0x5D, 0xFF, 0xE4, 0x0, 0xEA, 0xFF, 0xEE, 0x2, 0x28, 0xFF, 0xEE, 0x2, 0x40, 0xFF, 0xEE, 0x2, 0x82, 0xFF, 0xEE, 0x2, 0x83, 0xFF, 0xED, 0x2, 0x84, 0xFF, 0xE4, 0x2, 0x86, 0xFF, 0xEE, 0x2, 0x87, 0xFF, 0xEE, 0x2, 0x89, 0xFF, 0xEE, 0x2, 0x8A, 0xFF, 0xEE, 0x2, 0x8B, 0xFF, 0xEE, 0x2, 0x8C, 0xFF, 0xE9, 0x2, 0x8E, 0xFF, 0xEE, 0x2, 0x90, 0xFF, 0xEE, 0x2, 0x91, 0xFF, 0xEE, 0x2, 0x94, 0xFF, 0xF5, 0x2, 0x96, 0xFF, 0xEE, 0x2, 0x9B, 0xFF, 0xEE, 0x2, 0x9F, 0xFF, 0xF3, 0x2, 0xB6, 0xFF, 0xF0, 0x2, 0xC2, 0xFF, 0xEE, 0x2, 0xCB, 0xFF, 0xE4, 0x2, 0xCD, 0xFF, 0xEE, 0x2, 0xD1, 0xFF, 0xDC, 0x2, 0xD3, 0xFF, 0xEE, 0x2, 0xD5, 0xFF, 0xEE, 0x2, 0xDB, 0xFF, 0xE4, 0x2, 0xEA, 0xFF, 0xEE, 0x2, 0xEC, 0xFF, 0xEE, 0x2, 0xEE, 0xFF, 0xEE, 0x2, 0xF3, 0xFF, 0xEE, 0x2, 0xF5, 0xFF, 0xE4, 0x3, 0x4, 0xFF, 0xE7, 0x3, 0xF, 0xFF, 0xEE, 0x3, 0x13, 0xFF, 0xEE, 0x5, 0xF0, 0xFF, 0xEE, 0x6, 0x0, 0xFF, 0xEE, 0x6, 0x28, 0xFF, 0xEE, 0x6, 0x30, 0xFF, 0xEE, 0x6, 0xAB, 0xFF, 0xEE, 0x6, 0xAC, 0xFF, 0xEE, 0x6, 0xFB, 0xFF, 0xEE, 0x6, 0xFC, 0xFF, 0xEE, 0x6, 0xFD, 0xFF, 0xEE, 0x7, 0x12, 0xFF, 0xEE, 0x8, 0xF8, 0xFF, 0xEE, 0x9, 0x40, 0xFF, 0xEE, 0x9, 0x42, 0xFF, 0xEE, 0x9, 0x44, 0xFF, 0xEE, 0x9, 0x45, 0xFF, 0xEE, 0x9, 0xEF, 0xFF, 0xEE, 0xA, 0x14, 0xFF, 0xEE, 0xA, 0x16, 0xFF, 0xEE, 0xA, 0x19, 0xFF, 0xE4, 0xA, 0x1B, 0xFF, 0xEE, 0xA, 0x20, 0xFF, 0xEE, 0xA, 0x30, 0xFF, 0xEE, 0xA, 0x36, 0xFF, 0xEE, 0xA, 0x45, 0xFF, 0xE4, 0xA, 0x53, 0xFF, 0xE4, 0xA, 0x57, 0xFF, 0xEE, 0xA, 0x59, 0xFF, 0xEE, 0xA, 0x6C, 0xFF, 0xEE, 0xA, 0xCC, 0xFF, 0xEE, 0xA, 0xE7, 0xFF, 0xEE, 0xA, 0xED, 0xFF, 0xEE, 0xB, 0x13, 0xFF, 0xEE, 0xB, 0x84, 0xFF, 0xEE, 0xB, 0x86, 0xFF, 0xEE, 0xB, 0x88, 0xFF, 0xEE, 0xB, 0x8A, 0xFF, 0xEE, 0xB, 0x8C, 0xFF, 0xEE, 0xB, 0x8E, 0xFF, 0xEE, 0xB, 0xC8, 0xFF, 0xE4, 0xB, 0xCA, 0xFF, 0xE4, 0x0, 0x66, 0x0, 0x7, 0xFF, 0xF1, 0x0, 0xC, 0xFF, 0xF1, 0x0, 0x52, 0xFF, 0xFB, 0x0, 0x53, 0xFF, 0xFB, 0x0, 0x55, 0xFF, 0xFB, 0x0, 0x5B, 0xFF, 0xED, 0x0, 0x5E, 0xFF, 0xED, 0x0, 0xEA, 0xFF, 0xFB, 0x2, 0x28, 0xFF, 0xFB, 0x2, 0x3C, 0xFF, 0xED, 0x2, 0x40, 0xFF, 0xFB, 0x2, 0x82, 0xFF, 0xFB, 0x2, 0x86, 0xFF, 0xFB, 0x2, 0x87, 0xFF, 0xFB, 0x2, 0x89, 0xFF, 0xFB, 0x2, 0x8A, 0xFF, 0xFB, 0x2, 0x8B, 0xFF, 0xFB, 0x2, 0x8C, 0xFF, 0xEC, 0x2, 0x8E, 0xFF, 0xFB, 0x2, 0x90, 0xFF, 0xFB, 0x2, 0x91, 0xFF, 0xFB, 0x2, 0x94, 0xFF, 0xF8, 0x2, 0x96, 0xFF, 0xFB, 0x2, 0x9B, 0xFF, 0xFB, 0x2, 0x9F, 0xFF, 0xF4, 0x2, 0xB0, 0xFF, 0xED, 0x2, 0xC2, 0xFF, 0xFB, 0x2, 0xCD, 0xFF, 0xFB, 0x2, 0xD1, 0xFF, 0xE3, 0x2, 0xD3, 0xFF, 0xFB, 0x2, 0xD5, 0xFF, 0xFB, 0x2, 0xEA, 0xFF, 0xFB, 0x2, 0xEC, 0xFF, 0xFB, 0x2, 0xEE, 0xFF, 0xFB, 0x2, 0xF3, 0xFF, 0xFB, 0x3, 0x4, 0xFF, 0xEA, 0x3, 0xF, 0xFF, 0xFB, 0x3, 0x13, 0xFF, 0xFB, 0x4, 0x62, 0xFF, 0xF1, 0x4, 0x63, 0xFF, 0xF1, 0x4, 0x65, 0xFF, 0xF1, 0x4, 0x66, 0xFF, 0xF1, 0x4, 0x67, 0xFF, 0xF1, 0x5, 0x67, 0xFF, 0xED, 0x5, 0xF0, 0xFF, 0xFB, 0x6, 0x0, 0xFF, 0xFB, 0x6, 0x28, 0xFF, 0xFB, 0x6, 0x30, 0xFF, 0xFB, 0x6, 0xAB, 0xFF, 0xFB, 0x6, 0xAC, 0xFF, 0xFB, 0x6, 0xFB, 0xFF, 0xFB, 0x6, 0xFC, 0xFF, 0xFB, 0x6, 0xFD, 0xFF, 0xFB, 0x7, 0x12, 0xFF, 0xFB, 0x8, 0xF8, 0xFF, 0xFB, 0x9, 0x2, 0xFF, 0xED, 0x9, 0x3, 0xFF, 0xED, 0x9, 0x40, 0xFF, 0xFB, 0x9, 0x42, 0xFF, 0xFB, 0x9, 0x44, 0xFF, 0xFB, 0x9, 0x45, 0xFF, 0xFB, 0x9, 0x71, 0xFF, 0xED, 0x9, 0xEF, 0xFF, 0xFB, 0x9, 0xF5, 0xFF, 0xED, 0xA, 0x14, 0xFF, 0xFB, 0xA, 0x16, 0xFF, 0xFB, 0xA, 0x18, 0xFF, 0xED, 0xA, 0x1B, 0xFF, 0xFB, 0xA, 0x20, 0xFF, 0xFB, 0xA, 0x21, 0xFF, 0xED, 0xA, 0x29, 0xFF, 0xED, 0xA, 0x2A, 0xFF, 0xF1, 0xA, 0x2B, 0xFF, 0xF1, 0xA, 0x2E, 0xFF, 0xF1, 0xA, 0x30, 0xFF, 0xFB, 0xA, 0x36, 0xFF, 0xFB, 0xA, 0x3A, 0xFF, 0xED, 0xA, 0x42, 0xFF, 0xED, 0xA, 0x57, 0xFF, 0xFB, 0xA, 0x59, 0xFF, 0xFB, 0xA, 0x64, 0xFF, 0xED, 0xA, 0x66, 0xFF, 0xED, 0xA, 0x68, 0xFF, 0xED, 0xA, 0x6C, 0xFF, 0xFB, 0xA, 0xC1, 0xFF, 0xED, 0xA, 0xC3, 0xFF, 0xED, 0xA, 0xC5, 0xFF, 0xED, 0xA, 0xCC, 0xFF, 0xFB, 0xA, 0xE7, 0xFF, 0xFB, 0xA, 0xED, 0xFF, 0xFB, 0xB, 0x13, 0xFF, 0xFB, 0xB, 0x3B, 0xFF, 0xED, 0xB, 0x84, 0xFF, 0xFB, 0xB, 0x86, 0xFF, 0xFB, 0xB, 0x88, 0xFF, 0xFB, 0xB, 0x8A, 0xFF, 0xFB, 0xB, 0x8C, 0xFF, 0xFB, 0xB, 0x8E, 0xFF, 0xFB, 0xB, 0xC0, 0xFF, 0xED, 0xB, 0xC2, 0xFF, 0xED, 0xB, 0xCC, 0xFF, 0xED, 0xB, 0xD6, 0xFF, 0xED, 0x0, 0x4A, 0x0, 0x52, 0xFF, 0xF4, 0x0, 0x53, 0xFF, 0xF4, 0x0, 0x55, 0xFF, 0xF4, 0x0, 0xEA, 0xFF, 0xF4, 0x2, 0x28, 0xFF, 0xF4, 0x2, 0x40, 0xFF, 0xF4, 0x2, 0x82, 0xFF, 0xF4, 0x2, 0x83, 0x0, 0x1D, 0x2, 0x86, 0xFF, 0xF4, 0x2, 0x87, 0xFF, 0xF4, 0x2, 0x89, 0xFF, 0xF4, 0x2, 0x8A, 0xFF, 0xF4, 0x2, 0x8B, 0xFF, 0xF4, 0x2, 0x8C, 0xFF, 0xE8, 0x2, 0x8E, 0xFF, 0xF4, 0x2, 0x8F, 0xFF, 0xE8, 0x2, 0x90, 0xFF, 0xF4, 0x2, 0x91, 0xFF, 0xF4, 0x2, 0x92, 0xFF, 0xD0, 0x2, 0x94, 0xFF, 0xF4, 0x2, 0x96, 0xFF, 0xF4, 0x2, 0x9B, 0xFF, 0xF4, 0x2, 0xC2, 0xFF, 0xF4, 0x2, 0xCD, 0xFF, 0xF4, 0x2, 0xD1, 0xFF, 0xEC, 0x2, 0xD3, 0xFF, 0xF4, 0x2, 0xD5, 0xFF, 0xF4, 0x2, 0xDF, 0xFF, 0xE8, 0x2, 0xE1, 0xFF, 0xEC, 0x2, 0xEA, 0xFF, 0xF4, 0x2, 0xEC, 0xFF, 0xF4, 0x2, 0xEE, 0xFF, 0xF4, 0x2, 0xF3, 0xFF, 0xF4, 0x3, 0x4, 0xFF, 0xEC, 0x3, 0xF, 0xFF, 0xF4, 0x3, 0x13, 0xFF, 0xF4, 0x5, 0xF0, 0xFF, 0xF4, 0x6, 0x0, 0xFF, 0xF4, 0x6, 0x20, 0xFF, 0xE8, 0x6, 0x28, 0xFF, 0xF4, 0x6, 0x30, 0xFF, 0xF4, 0x6, 0xAB, 0xFF, 0xF4, 0x6, 0xAC, 0xFF, 0xF4, 0x6, 0xFB, 0xFF, 0xF4, 0x6, 0xFC, 0xFF, 0xF4, 0x6, 0xFD, 0xFF, 0xF4, 0x7, 0x12, 0xFF, 0xF4, 0x8, 0xF8, 0xFF, 0xF4, 0x9, 0x40, 0xFF, 0xF4, 0x9, 0x42, 0xFF, 0xF4, 0x9, 0x44, 0xFF, 0xF4, 0x9, 0x45, 0xFF, 0xF4, 0x9, 0xEF, 0xFF, 0xF4, 0xA, 0x14, 0xFF, 0xF4, 0xA, 0x16, 0xFF, 0xF4, 0xA, 0x1B, 0xFF, 0xF4, 0xA, 0x20, 0xFF, 0xF4, 0xA, 0x30, 0xFF, 0xF4, 0xA, 0x36, 0xFF, 0xF4, 0xA, 0x57, 0xFF, 0xF4, 0xA, 0x59, 0xFF, 0xF4, 0xA, 0x6A, 0xFF, 0xE8, 0xA, 0x6C, 0xFF, 0xF4, 0xA, 0xCA, 0xFF, 0xE8, 0xA, 0xCC, 0xFF, 0xF4, 0xA, 0xE7, 0xFF, 0xF4, 0xA, 0xED, 0xFF, 0xF4, 0xB, 0x13, 0xFF, 0xF4, 0xB, 0x84, 0xFF, 0xF4, 0xB, 0x86, 0xFF, 0xF4, 0xB, 0x88, 0xFF, 0xF4, 0xB, 0x8A, 0xFF, 0xF4, 0xB, 0x8C, 0xFF, 0xF4, 0xB, 0x8E, 0xFF, 0xF4, 0x0, 0xA, 0x0, 0x7, 0xFF, 0xF1, 0x0, 0xC, 0xFF, 0xF1, 0x4, 0x62, 0xFF, 0xF1, 0x4, 0x63, 0xFF, 0xF1, 0x4, 0x65, 0xFF, 0xF1, 0x4, 0x66, 0xFF, 0xF1, 0x4, 0x67, 0xFF, 0xF1, 0xA, 0x2A, 0xFF, 0xF1, 0xA, 0x2B, 0xFF, 0xF1, 0xA, 0x2E, 0xFF, 0xF1, 0x0, 0xCA, 0x0, 0x48, 0xFF, 0xEF, 0x0, 0x49, 0xFF, 0xEF, 0x0, 0x4A, 0xFF, 0xEF, 0x0, 0x4C, 0xFF, 0xEF, 0x0, 0x54, 0xFF, 0xD2, 0x0, 0x56, 0xFF, 0xEF, 0x0, 0x95, 0xFF, 0xEF, 0x0, 0x9F, 0xFF, 0xEF, 0x0, 0xB5, 0xFF, 0xEF, 0x0, 0xDA, 0xFF, 0xEF, 0x0, 0xDC, 0xFF, 0xEF, 0x0, 0xE4, 0xFF, 0xEF, 0x1, 0x0, 0xFF, 0xEF, 0x2, 0x2A, 0xFF, 0xEF, 0x2, 0x3A, 0xFF, 0xEF, 0x2, 0x47, 0xFF, 0xEF, 0x2, 0x48, 0xFF, 0xEF, 0x2, 0x56, 0xFF, 0xD2, 0x2, 0x58, 0xFF, 0xEF, 0x2, 0x61, 0xFF, 0xEF, 0x2, 0x8D, 0xFF, 0xEF, 0x2, 0x99, 0xFF, 0xEF, 0x2, 0xAE, 0xFF, 0xD2, 0x2, 0xB2, 0xFF, 0xE9, 0x2, 0xB4, 0xFF, 0xEF, 0x2, 0xB8, 0xFF, 0xEF, 0x2, 0xD9, 0xFF, 0xEF, 0x2, 0xF7, 0xFF, 0xEF, 0x2, 0xF8, 0xFF, 0xEF, 0x3, 0x2, 0xFF, 0xEF, 0x5, 0x6E, 0xFF, 0xEF, 0x5, 0x70, 0xFF, 0xD2, 0x5, 0xEE, 0xFF, 0xD2, 0x6, 0x2, 0xFF, 0xD2, 0x6, 0x4, 0xFF, 0xD2, 0x6, 0x6, 0xFF, 0xD2, 0x6, 0x32, 0xFF, 0xD2, 0x6, 0x85, 0xFF, 0xD2, 0x6, 0x87, 0xFF, 0xD2, 0x6, 0x8F, 0xFF, 0xEF, 0x6, 0x91, 0xFF, 0xEF, 0x6, 0xA9, 0xFF, 0xEF, 0x6, 0xCB, 0xFF, 0xEF, 0x6, 0xF7, 0xFF, 0xEF, 0x7, 0x57, 0xFF, 0xE9, 0x7, 0x59, 0xFF, 0xE9, 0x7, 0x61, 0xFF, 0xE7, 0x7, 0x68, 0xFF, 0xE9, 0x7, 0x71, 0xFF, 0xE9, 0x7, 0x8D, 0xFF, 0xE9, 0x7, 0x96, 0xFF, 0xE9, 0x7, 0xAF, 0xFF, 0xE9, 0x8, 0xEF, 0xFF, 0xEF, 0x8, 0xF0, 0xFF, 0xEF, 0x8, 0xF1, 0xFF, 0xEF, 0x8, 0xF2, 0xFF, 0xEF, 0x8, 0xF3, 0xFF, 0xEF, 0x8, 0xF9, 0xFF, 0xD2, 0x8, 0xFA, 0xFF, 0xD2, 0x8, 0xFB, 0xFF, 0xD2, 0x8, 0xFC, 0xFF, 0xD2, 0x8, 0xFD, 0xFF, 0xD2, 0x9, 0xB, 0xFF, 0xEF, 0x9, 0xD, 0xFF, 0xEF, 0x9, 0xF, 0xFF, 0xEF, 0x9, 0x11, 0xFF, 0xEF, 0x9, 0x13, 0xFF, 0xEF, 0x9, 0x15, 0xFF, 0xEF, 0x9, 0x17, 0xFF, 0xEF, 0x9, 0x19, 0xFF, 0xEF, 0x9, 0x1B, 0xFF, 0xEF, 0x9, 0x1D, 0xFF, 0xEF, 0x9, 0x1F, 0xFF, 0xEF, 0x9, 0x21, 0xFF, 0xEF, 0x9, 0x23, 0xFF, 0xEF, 0x9, 0x25, 0xFF, 0xEF, 0x9, 0x47, 0xFF, 0xD2, 0x9, 0x49, 0xFF, 0xD2, 0x9, 0x4B, 0xFF, 0xD2, 0x9, 0x87, 0xFF, 0xE9, 0x9, 0x91, 0xFF, 0xE9, 0x9, 0x92, 0xFF, 0xE9, 0x9, 0x93, 0xFF, 0xE9, 0x9, 0x94, 0xFF, 0xE9, 0x9, 0x95, 0xFF, 0xE9, 0x9, 0x9E, 0xFF, 0xE9, 0x9, 0x9F, 0xFF, 0xE9, 0x9, 0xA0, 0xFF, 0xE9, 0x9, 0xA1, 0xFF, 0xE9, 0x9, 0xA8, 0xFF, 0xE9, 0x9, 0xA9, 0xFF, 0xE9, 0x9, 0xAA, 0xFF, 0xE9, 0x9, 0xAB, 0xFF, 0xE9, 0x9, 0xBB, 0xFF, 0xE9, 0x9, 0xBC, 0xFF, 0xE9, 0x9, 0xBD, 0xFF, 0xE9, 0x9, 0xBE, 0xFF, 0xE9, 0x9, 0xED, 0xFF, 0xEF, 0x9, 0xF3, 0xFF, 0xD2, 0x9, 0xF9, 0xFF, 0xD2, 0xA, 0x13, 0xFF, 0xEF, 0xA, 0x15, 0xFF, 0xD2, 0xA, 0x17, 0xFF, 0xEF, 0xA, 0x1A, 0xFF, 0xEF, 0xA, 0x35, 0xFF, 0xEF, 0xA, 0x3B, 0xFF, 0xEF, 0xA, 0x40, 0xFF, 0xEF, 0xA, 0x4E, 0xFF, 0xEF, 0xA, 0x50, 0xFF, 0xEF, 0xA, 0x51, 0xFF, 0xEF, 0xA, 0x5B, 0xFF, 0xD2, 0xA, 0x5D, 0xFF, 0xEF, 0xA, 0x60, 0xFF, 0xD2, 0xA, 0x6D, 0xFF, 0xEF, 0xA, 0x87, 0xFF, 0xEF, 0xA, 0x89, 0xFF, 0xEF, 0xA, 0x8B, 0xFF, 0xEF, 0xA, 0x8D, 0xFF, 0xEF, 0xA, 0x8F, 0xFF, 0xEF, 0xA, 0x91, 0xFF, 0xEF, 0xA, 0x93, 0xFF, 0xEF, 0xA, 0x95, 0xFF, 0xEF, 0xA, 0x9B, 0xFF, 0xD2, 0xA, 0x9D, 0xFF, 0xD2, 0xA, 0x9F, 0xFF, 0xD2, 0xA, 0xA1, 0xFF, 0xD2, 0xA, 0xA3, 0xFF, 0xD2, 0xA, 0xA5, 0xFF, 0xD2, 0xA, 0xA7, 0xFF, 0xD2, 0xA, 0xA9, 0xFF, 0xEF, 0xA, 0xAB, 0xFF, 0xEF, 0xA, 0xAD, 0xFF, 0xEF, 0xA, 0xAF, 0xFF, 0xD2, 0xA, 0xB1, 0xFF, 0xEF, 0xA, 0xF3, 0xFF, 0xD2, 0xA, 0xFE, 0xFF, 0xEF, 0xB, 0x6, 0xFF, 0xEF, 0xB, 0xA, 0xFF, 0xD2, 0xB, 0xC, 0xFF, 0xD2, 0xB, 0xF, 0xFF, 0xEF, 0xB, 0x19, 0xFF, 0xEF, 0xB, 0x1B, 0xFF, 0xEF, 0xB, 0x21, 0xFF, 0xD2, 0xB, 0x23, 0xFF, 0xD2, 0xB, 0x33, 0xFF, 0xD2, 0xB, 0x35, 0xFF, 0xD2, 0xB, 0x37, 0xFF, 0xD2, 0xB, 0x39, 0xFF, 0xD2, 0xB, 0x3C, 0xFF, 0xD2, 0xB, 0x42, 0xFF, 0xEF, 0xB, 0x4A, 0xFF, 0xEF, 0xB, 0x54, 0xFF, 0xEF, 0xB, 0x56, 0xFF, 0xEF, 0xB, 0x58, 0xFF, 0xEF, 0xB, 0x5A, 0xFF, 0xEF, 0xB, 0x5C, 0xFF, 0xEF, 0xB, 0x5E, 0xFF, 0xEF, 0xB, 0x60, 0xFF, 0xEF, 0xB, 0x62, 0xFF, 0xEF, 0xB, 0x64, 0xFF, 0xEF, 0xB, 0x66, 0xFF, 0xEF, 0xB, 0x68, 0xFF, 0xEF, 0xB, 0x6C, 0xFF, 0xEF, 0xB, 0x90, 0xFF, 0xD2, 0xB, 0x92, 0xFF, 0xD2, 0xB, 0x94, 0xFF, 0xD2, 0xB, 0x96, 0xFF, 0xD2, 0xB, 0xD8, 0xFF, 0xEF, 0xB, 0xD9, 0xFF, 0xEF, 0xB, 0xDA, 0xFF, 0xEF, 0xB, 0xDB, 0xFF, 0xEF, 0xB, 0xDC, 0xFF, 0xEF, 0xB, 0xDD, 0xFF, 0xEF, 0xB, 0xDE, 0xFF, 0xEF, 0xB, 0xDF, 0xFF, 0xEF, 0xC, 0x14, 0xFF, 0xD2, 0xC, 0x15, 0xFF, 0xD2, 0xC, 0x16, 0xFF, 0xD2, 0xC, 0x17, 0xFF, 0xD2, 0xC, 0x18, 0xFF, 0xD2, 0xC, 0x19, 0xFF, 0xD2, 0xC, 0x44, 0xFF, 0xD2, 0xC, 0x45, 0xFF, 0xD2, 0xC, 0x4A, 0xFF, 0xEF, 0xC, 0x4B, 0xFF, 0xEF, 0xC, 0x4C, 0xFF, 0xEF, 0xC, 0x4D, 0xFF, 0xEF, 0xC, 0x4E, 0xFF, 0xEF, 0xC, 0x4F, 0xFF, 0xEF, 0xC, 0x50, 0xFF, 0xEF, 0xC, 0x51, 0xFF, 0xEF, 0xC, 0x7A, 0xFF, 0xEF, 0xC, 0x7B, 0xFF, 0xEF, 0xC, 0x7C, 0xFF, 0xEF, 0xC, 0x7D, 0xFF, 0xEF, 0xC, 0x7E, 0xFF, 0xEF, 0xC, 0x7F, 0xFF, 0xEF, 0xC, 0x80, 0xFF, 0xEF, 0xC, 0xBB, 0xFF, 0xE9, 0xC, 0xDD, 0xFF, 0xE9, 0xC, 0xE0, 0xFF, 0xE9, 0xC, 0xE5, 0xFF, 0xE9, 0x1, 0x4B, 0x0, 0x7, 0x0, 0xE, 0x0, 0xC, 0x0, 0xE, 0x0, 0x46, 0xFF, 0xEF, 0x0, 0x48, 0xFF, 0xC8, 0x0, 0x49, 0xFF, 0xC8, 0x0, 0x4A, 0xFF, 0xC8, 0x0, 0x4B, 0x0, 0xE, 0x0, 0x4C, 0xFF, 0xC8, 0x0, 0x54, 0xFF, 0xE3, 0x0, 0x56, 0xFF, 0xC8, 0x0, 0x5B, 0x0, 0xC, 0x0, 0x5E, 0x0, 0xC, 0x0, 0x95, 0xFF, 0xC8, 0x0, 0x9F, 0xFF, 0xC8, 0x0, 0xB5, 0xFF, 0xC8, 0x0, 0xDA, 0xFF, 0xC8, 0x0, 0xDC, 0xFF, 0xC8, 0x0, 0xE4, 0xFF, 0xC8, 0x1, 0x0, 0xFF, 0xC8, 0x2, 0x2A, 0xFF, 0xC8, 0x2, 0x3A, 0xFF, 0xC8, 0x2, 0x3C, 0x0, 0xC, 0x2, 0x3D, 0xFF, 0xEA, 0x2, 0x46, 0xFF, 0xDA, 0x2, 0x47, 0xFF, 0xCB, 0x2, 0x48, 0xFF, 0xC8, 0x2, 0x4B, 0xFF, 0xE1, 0x2, 0x56, 0xFF, 0xE3, 0x2, 0x58, 0xFF, 0xC8, 0x2, 0x61, 0xFF, 0xC8, 0x2, 0x83, 0xFF, 0xC3, 0x2, 0x88, 0xFF, 0xD3, 0x2, 0x8D, 0xFF, 0xC8, 0x2, 0x99, 0xFF, 0xC8, 0x2, 0x9A, 0xFF, 0xD3, 0x2, 0xAE, 0xFF, 0xE3, 0x2, 0xB0, 0x0, 0xC, 0x2, 0xB2, 0xFF, 0xEA, 0x2, 0xB4, 0xFF, 0xC8, 0x2, 0xB6, 0x0, 0xD, 0x2, 0xB8, 0xFF, 0xC8, 0x2, 0xD9, 0xFF, 0xC8, 0x2, 0xE8, 0xFF, 0xD3, 0x2, 0xF7, 0xFF, 0xC8, 0x2, 0xF8, 0xFF, 0xC8, 0x2, 0xFA, 0x0, 0xC, 0x2, 0xFC, 0x0, 0xC, 0x3, 0x2, 0xFF, 0xC8, 0x3, 0x7, 0xFF, 0xD3, 0x3, 0x9, 0xFF, 0xD3, 0x3, 0x11, 0xFF, 0xD3, 0x4, 0x62, 0x0, 0xE, 0x4, 0x63, 0x0, 0xE, 0x4, 0x65, 0x0, 0xE, 0x4, 0x66, 0x0, 0xE, 0x4, 0x67, 0x0, 0xE, 0x5, 0x5B, 0xFF, 0xEF, 0x5, 0x67, 0x0, 0xC, 0x5, 0x6E, 0xFF, 0xC8, 0x5, 0x70, 0xFF, 0xE3, 0x5, 0xEE, 0xFF, 0xE3, 0x6, 0x2, 0xFF, 0xE3, 0x6, 0x4, 0xFF, 0xE3, 0x6, 0x6, 0xFF, 0xE3, 0x6, 0x32, 0xFF, 0xE3, 0x6, 0x6B, 0xFF, 0xEF, 0x6, 0x6D, 0xFF, 0xEF, 0x6, 0x6F, 0xFF, 0xEF, 0x6, 0x71, 0xFF, 0xEF, 0x6, 0x73, 0xFF, 0xEF, 0x6, 0x75, 0xFF, 0xEF, 0x6, 0x85, 0xFF, 0xE3, 0x6, 0x87, 0xFF, 0xE3, 0x6, 0x8F, 0xFF, 0xC8, 0x6, 0x91, 0xFF, 0xC8, 0x6, 0xA9, 0xFF, 0xC8, 0x6, 0xCB, 0xFF, 0xC8, 0x6, 0xF7, 0xFF, 0xC8, 0x7, 0x4F, 0x0, 0x8, 0x7, 0x52, 0x0, 0x8, 0x7, 0x54, 0x0, 0x9, 0x7, 0x55, 0xFF, 0xF9, 0x7, 0x57, 0xFF, 0xF3, 0x7, 0x59, 0xFF, 0xF4, 0x7, 0x61, 0xFF, 0xF3, 0x7, 0x67, 0xFF, 0xD6, 0x7, 0x68, 0xFF, 0xF4, 0x7, 0x69, 0xFF, 0xD6, 0x7, 0x70, 0x0, 0x9, 0x7, 0x71, 0xFF, 0xF4, 0x7, 0x74, 0x0, 0x9, 0x7, 0x8C, 0x0, 0x9, 0x7, 0x8D, 0xFF, 0xF4, 0x7, 0x8E, 0x0, 0x8, 0x7, 0x90, 0x0, 0x9, 0x7, 0x96, 0xFF, 0xF4, 0x7, 0xAF, 0xFF, 0xF4, 0x7, 0xB1, 0xFF, 0xD6, 0x8, 0xE8, 0xFF, 0xEF, 0x8, 0xE9, 0xFF, 0xEF, 0x8, 0xEA, 0xFF, 0xEF, 0x8, 0xEB, 0xFF, 0xEF, 0x8, 0xEC, 0xFF, 0xEF, 0x8, 0xED, 0xFF, 0xEF, 0x8, 0xEE, 0xFF, 0xEF, 0x8, 0xEF, 0xFF, 0xC8, 0x8, 0xF0, 0xFF, 0xC8, 0x8, 0xF1, 0xFF, 0xC8, 0x8, 0xF2, 0xFF, 0xC8, 0x8, 0xF3, 0xFF, 0xC8, 0x8, 0xF9, 0xFF, 0xE3, 0x8, 0xFA, 0xFF, 0xE3, 0x8, 0xFB, 0xFF, 0xE3, 0x8, 0xFC, 0xFF, 0xE3, 0x8, 0xFD, 0xFF, 0xE3, 0x9, 0x2, 0x0, 0xC, 0x9, 0x3, 0x0, 0xC, 0x9, 0x5, 0xFF, 0xEF, 0x9, 0x7, 0xFF, 0xEF, 0x9, 0x9, 0xFF, 0xEF, 0x9, 0xB, 0xFF, 0xC8, 0x9, 0xD, 0xFF, 0xC8, 0x9, 0xF, 0xFF, 0xC8, 0x9, 0x11, 0xFF, 0xC8, 0x9, 0x13, 0xFF, 0xC8, 0x9, 0x15, 0xFF, 0xC8, 0x9, 0x17, 0xFF, 0xC8, 0x9, 0x19, 0xFF, 0xC8, 0x9, 0x1B, 0xFF, 0xC8, 0x9, 0x1D, 0xFF, 0xC8, 0x9, 0x1F, 0xFF, 0xC8, 0x9, 0x21, 0xFF, 0xC8, 0x9, 0x23, 0xFF, 0xC8, 0x9, 0x25, 0xFF, 0xC8, 0x9, 0x47, 0xFF, 0xE3, 0x9, 0x49, 0xFF, 0xE3, 0x9, 0x4B, 0xFF, 0xE3, 0x9, 0x71, 0x0, 0xC, 0x9, 0x80, 0xFF, 0xD6, 0x9, 0x81, 0xFF, 0xD6, 0x9, 0x82, 0xFF, 0xD6, 0x9, 0x83, 0xFF, 0xD6, 0x9, 0x84, 0xFF, 0xD6, 0x9, 0x85, 0xFF, 0xD6, 0x9, 0x86, 0xFF, 0xD6, 0x9, 0x87, 0xFF, 0xF4, 0x9, 0x91, 0xFF, 0xF4, 0x9, 0x92, 0xFF, 0xF4, 0x9, 0x93, 0xFF, 0xF4, 0x9, 0x94, 0xFF, 0xF4, 0x9, 0x95, 0xFF, 0xF4, 0x9, 0x9A, 0x0, 0x8, 0x9, 0x9B, 0xFF, 0xD6, 0x9, 0x9C, 0xFF, 0xD6, 0x9, 0x9D, 0xFF, 0xD6, 0x9, 0x9E, 0xFF, 0xF4, 0x9, 0x9F, 0xFF, 0xF4, 0x9, 0xA0, 0xFF, 0xF4, 0x9, 0xA1, 0xFF, 0xF4, 0x9, 0xA8, 0xFF, 0xF4, 0x9, 0xA9, 0xFF, 0xF4, 0x9, 0xAA, 0xFF, 0xF4, 0x9, 0xAB, 0xFF, 0xF4, 0x9, 0xBB, 0xFF, 0xF4, 0x9, 0xBC, 0xFF, 0xF4, 0x9, 0xBD, 0xFF, 0xF4, 0x9, 0xBE, 0xFF, 0xF4, 0x9, 0xC2, 0xFF, 0xF9, 0x9, 0xC3, 0xFF, 0xF9, 0x9, 0xC4, 0xFF, 0xF9, 0x9, 0xC5, 0xFF, 0xF9, 0x9, 0xC7, 0x0, 0x9, 0x9, 0xD0, 0x0, 0x8, 0x9, 0xD1, 0x0, 0x8, 0x9, 0xED, 0xFF, 0xC8, 0x9, 0xF3, 0xFF, 0xE3, 0x9, 0xF5, 0x0, 0xC, 0x9, 0xF9, 0xFF, 0xE3, 0xA, 0x12, 0xFF, 0xEF, 0xA, 0x13, 0xFF, 0xC8, 0xA, 0x15, 0xFF, 0xE3, 0xA, 0x17, 0xFF, 0xC8, 0xA, 0x18, 0x0, 0xC, 0xA, 0x1A, 0xFF, 0xC8, 0xA, 0x21, 0x0, 0xC, 0xA, 0x29, 0x0, 0xC, 0xA, 0x2A, 0x0, 0xE, 0xA, 0x2B, 0x0, 0xE, 0xA, 0x2E, 0x0, 0xE, 0xA, 0x32, 0xFF, 0xEF, 0xA, 0x35, 0xFF, 0xC8, 0xA, 0x3A, 0x0, 0xC, 0xA, 0x3B, 0xFF, 0xC8, 0xA, 0x40, 0xFF, 0xC8, 0xA, 0x42, 0x0, 0xC, 0xA, 0x48, 0xFF, 0xEF, 0xA, 0x4A, 0xFF, 0xEF, 0xA, 0x4E, 0xFF, 0xC8, 0xA, 0x50, 0xFF, 0xC8, 0xA, 0x51, 0xFF, 0xC8, 0xA, 0x5B, 0xFF, 0xE3, 0xA, 0x5D, 0xFF, 0xC8, 0xA, 0x60, 0xFF, 0xE3, 0xA, 0x64, 0x0, 0xC, 0xA, 0x66, 0x0, 0xC, 0xA, 0x68, 0x0, 0xC, 0xA, 0x6D, 0xFF, 0xC8, 0xA, 0x6F, 0xFF, 0xEF, 0xA, 0x71, 0xFF, 0xEF, 0xA, 0x73, 0xFF, 0xEF, 0xA, 0x75, 0xFF, 0xEF, 0xA, 0x77, 0xFF, 0xEF, 0xA, 0x79, 0xFF, 0xEF, 0xA, 0x7B, 0xFF, 0xEF, 0xA, 0x7D, 0xFF, 0xEF, 0xA, 0x7F, 0xFF, 0xEF, 0xA, 0x81, 0xFF, 0xEF, 0xA, 0x83, 0xFF, 0xEF, 0xA, 0x85, 0xFF, 0xEF, 0xA, 0x87, 0xFF, 0xC8, 0xA, 0x89, 0xFF, 0xC8, 0xA, 0x8B, 0xFF, 0xC8, 0xA, 0x8D, 0xFF, 0xC8, 0xA, 0x8F, 0xFF, 0xC8, 0xA, 0x91, 0xFF, 0xC8, 0xA, 0x93, 0xFF, 0xC8, 0xA, 0x95, 0xFF, 0xC8, 0xA, 0x9B, 0xFF, 0xE3, 0xA, 0x9D, 0xFF, 0xE3, 0xA, 0x9F, 0xFF, 0xE3, 0xA, 0xA1, 0xFF, 0xE3, 0xA, 0xA3, 0xFF, 0xE3, 0xA, 0xA5, 0xFF, 0xE3, 0xA, 0xA7, 0xFF, 0xE3, 0xA, 0xA9, 0xFF, 0xC8, 0xA, 0xAB, 0xFF, 0xC8, 0xA, 0xAD, 0xFF, 0xC8, 0xA, 0xAF, 0xFF, 0xE3, 0xA, 0xB1, 0xFF, 0xC8, 0xA, 0xC1, 0x0, 0xC, 0xA, 0xC3, 0x0, 0xC, 0xA, 0xC5, 0x0, 0xC, 0xA, 0xEF, 0xFF, 0xEF, 0xA, 0xF3, 0xFF, 0xE3, 0xA, 0xFE, 0xFF, 0xC8, 0xB, 0x0, 0xFF, 0xEF, 0xB, 0x2, 0xFF, 0xEF, 0xB, 0x4, 0xFF, 0xEF, 0xB, 0x6, 0xFF, 0xC8, 0xB, 0xA, 0xFF, 0xE3, 0xB, 0xC, 0xFF, 0xE3, 0xB, 0xF, 0xFF, 0xC8, 0xB, 0x15, 0xFF, 0xEF, 0xB, 0x17, 0xFF, 0xEF, 0xB, 0x19, 0xFF, 0xC8, 0xB, 0x1B, 0xFF, 0xC8, 0xB, 0x21, 0xFF, 0xE3, 0xB, 0x23, 0xFF, 0xE3, 0xB, 0x2F, 0xFF, 0xEF, 0xB, 0x33, 0xFF, 0xE3, 0xB, 0x35, 0xFF, 0xE3, 0xB, 0x37, 0xFF, 0xE3, 0xB, 0x39, 0xFF, 0xE3, 0xB, 0x3B, 0x0, 0xC, 0xB, 0x3C, 0xFF, 0xE3, 0xB, 0x42, 0xFF, 0xC8, 0xB, 0x4A, 0xFF, 0xC8, 0xB, 0x54, 0xFF, 0xC8, 0xB, 0x56, 0xFF, 0xC8, 0xB, 0x58, 0xFF, 0xC8, 0xB, 0x5A, 0xFF, 0xC8, 0xB, 0x5C, 0xFF, 0xC8, 0xB, 0x5E, 0xFF, 0xC8, 0xB, 0x60, 0xFF, 0xC8, 0xB, 0x62, 0xFF, 0xC8, 0xB, 0x64, 0xFF, 0xC8, 0xB, 0x66, 0xFF, 0xC8, 0xB, 0x68, 0xFF, 0xC8, 0xB, 0x6C, 0xFF, 0xC8, 0xB, 0x90, 0xFF, 0xE3, 0xB, 0x92, 0xFF, 0xE3, 0xB, 0x94, 0xFF, 0xE3, 0xB, 0x96, 0xFF, 0xE3, 0xB, 0xC0, 0x0, 0xC, 0xB, 0xC2, 0x0, 0xC, 0xB, 0xCC, 0x0, 0xC, 0xB, 0xD6, 0x0, 0xC, 0xB, 0xD7, 0xFF, 0xEF, 0xB, 0xD8, 0xFF, 0xC8, 0xB, 0xD9, 0xFF, 0xC8, 0xB, 0xDA, 0xFF, 0xC8, 0xB, 0xDB, 0xFF, 0xC8, 0xB, 0xDC, 0xFF, 0xC8, 0xB, 0xDD, 0xFF, 0xC8, 0xB, 0xDE, 0xFF, 0xC8, 0xB, 0xDF, 0xFF, 0xC8, 0xC, 0x14, 0xFF, 0xE3, 0xC, 0x15, 0xFF, 0xE3, 0xC, 0x16, 0xFF, 0xE3, 0xC, 0x17, 0xFF, 0xE3, 0xC, 0x18, 0xFF, 0xE3, 0xC, 0x19, 0xFF, 0xE3, 0xC, 0x44, 0xFF, 0xE3, 0xC, 0x45, 0xFF, 0xE3, 0xC, 0x4A, 0xFF, 0xC8, 0xC, 0x4B, 0xFF, 0xC8, 0xC, 0x4C, 0xFF, 0xC8, 0xC, 0x4D, 0xFF, 0xC8, 0xC, 0x4E, 0xFF, 0xC8, 0xC, 0x4F, 0xFF, 0xC8, 0xC, 0x50, 0xFF, 0xC8, 0xC, 0x51, 0xFF, 0xC8, 0xC, 0x7A, 0xFF, 0xC8, 0xC, 0x7B, 0xFF, 0xC8, 0xC, 0x7C, 0xFF, 0xC8, 0xC, 0x7D, 0xFF, 0xC8, 0xC, 0x7E, 0xFF, 0xC8, 0xC, 0x7F, 0xFF, 0xC8, 0xC, 0x80, 0xFF, 0xC8, 0xC, 0xB7, 0xFF, 0xD6, 0xC, 0xBB, 0xFF, 0xF4, 0xC, 0xBC, 0x0, 0x8, 0xC, 0xBE, 0xFF, 0xD6, 0xC, 0xCA, 0x0, 0x8, 0xC, 0xCD, 0x0, 0x8, 0xC, 0xD6, 0xFF, 0xD6, 0xC, 0xDD, 0xFF, 0xF4, 0xC, 0xE0, 0xFF, 0xF4, 0xC, 0xE1, 0x0, 0x9, 0xC, 0xE5, 0xFF, 0xF4, 0xC, 0xE6, 0x0, 0x8, 0x0, 0x12, 0x2, 0x83, 0x0, 0x16, 0x2, 0x88, 0x0, 0x11, 0x2, 0x8C, 0xFF, 0xEF, 0x2, 0x8F, 0xFF, 0xEF, 0x2, 0x94, 0xFF, 0xF6, 0x2, 0x97, 0x0, 0x14, 0x2, 0x9A, 0x0, 0x11, 0x2, 0xD1, 0xFF, 0xE8, 0x2, 0xDF, 0xFF, 0xEF, 0x2, 0xE1, 0xFF, 0xE2, 0x2, 0xE8, 0x0, 0x11, 0x3, 0x4, 0xFF, 0xEF, 0x3, 0x7, 0x0, 0x11, 0x3, 0x9, 0x0, 0x11, 0x3, 0x11, 0x0, 0x11, 0x6, 0x20, 0xFF, 0xEF, 0xA, 0x6A, 0xFF, 0xEF, 0xA, 0xCA, 0xFF, 0xEF, 0x0, 0x87, 0x0, 0x48, 0xFF, 0xED, 0x0, 0x49, 0xFF, 0xED, 0x0, 0x4A, 0xFF, 0xED, 0x0, 0x4C, 0xFF, 0xED, 0x0, 0x56, 0xFF, 0xED, 0x0, 0x95, 0xFF, 0xED, 0x0, 0x9F, 0xFF, 0xED, 0x0, 0xB5, 0xFF, 0xED, 0x0, 0xDA, 0xFF, 0xED, 0x0, 0xDC, 0xFF, 0xED, 0x0, 0xE4, 0xFF, 0xED, 0x1, 0x0, 0xFF, 0xED, 0x2, 0x2A, 0xFF, 0xED, 0x2, 0x3A, 0xFF, 0xED, 0x2, 0x47, 0xFF, 0xED, 0x2, 0x48, 0xFF, 0xED, 0x2, 0x58, 0xFF, 0xED, 0x2, 0x61, 0xFF, 0xED, 0x2, 0x83, 0x0, 0x13, 0x2, 0x88, 0x0, 0xF, 0x2, 0x8C, 0xFF, 0xE1, 0x2, 0x8D, 0xFF, 0xED, 0x2, 0x8F, 0xFF, 0xE1, 0x2, 0x92, 0xFF, 0xD1, 0x2, 0x94, 0xFF, 0xED, 0x2, 0x99, 0xFF, 0xED, 0x2, 0x9A, 0x0, 0xF, 0x2, 0xB4, 0xFF, 0xED, 0x2, 0xB8, 0xFF, 0xED, 0x2, 0xD1, 0xFF, 0x9F, 0x2, 0xD9, 0xFF, 0xED, 0x2, 0xDF, 0xFF, 0xE1, 0x2, 0xE1, 0xFF, 0xDA, 0x2, 0xE8, 0x0, 0xF, 0x2, 0xF7, 0xFF, 0xED, 0x2, 0xF8, 0xFF, 0xED, 0x3, 0x2, 0xFF, 0xED, 0x3, 0x4, 0xFF, 0xE1, 0x3, 0x7, 0x0, 0xF, 0x3, 0x9, 0x0, 0xF, 0x3, 0x11, 0x0, 0xF, 0x5, 0x6E, 0xFF, 0xED, 0x6, 0x20, 0xFF, 0xE1, 0x6, 0x8F, 0xFF, 0xED, 0x6, 0x91, 0xFF, 0xED, 0x6, 0xA9, 0xFF, 0xED, 0x6, 0xCB, 0xFF, 0xED, 0x6, 0xF7, 0xFF, 0xED, 0x8, 0xEF, 0xFF, 0xED, 0x8, 0xF0, 0xFF, 0xED, 0x8, 0xF1, 0xFF, 0xED, 0x8, 0xF2, 0xFF, 0xED, 0x8, 0xF3, 0xFF, 0xED, 0x9, 0xB, 0xFF, 0xED, 0x9, 0xD, 0xFF, 0xED, 0x9, 0xF, 0xFF, 0xED, 0x9, 0x11, 0xFF, 0xED, 0x9, 0x13, 0xFF, 0xED, 0x9, 0x15, 0xFF, 0xED, 0x9, 0x17, 0xFF, 0xED, 0x9, 0x19, 0xFF, 0xED, 0x9, 0x1B, 0xFF, 0xED, 0x9, 0x1D, 0xFF, 0xED, 0x9, 0x1F, 0xFF, 0xED, 0x9, 0x21, 0xFF, 0xED, 0x9, 0x23, 0xFF, 0xED, 0x9, 0x25, 0xFF, 0xED, 0x9, 0xED, 0xFF, 0xED, 0xA, 0x13, 0xFF, 0xED, 0xA, 0x17, 0xFF, 0xED, 0xA, 0x1A, 0xFF, 0xED, 0xA, 0x35, 0xFF, 0xED, 0xA, 0x3B, 0xFF, 0xED, 0xA, 0x40, 0xFF, 0xED, 0xA, 0x4E, 0xFF, 0xED, 0xA, 0x50, 0xFF, 0xED, 0xA, 0x51, 0xFF, 0xED, 0xA, 0x5D, 0xFF, 0xED, 0xA, 0x6A, 0xFF, 0xE1, 0xA, 0x6D, 0xFF, 0xED, 0xA, 0x87, 0xFF, 0xED, 0xA, 0x89, 0xFF, 0xED, 0xA, 0x8B, 0xFF, 0xED, 0xA, 0x8D, 0xFF, 0xED, 0xA, 0x8F, 0xFF, 0xED, 0xA, 0x91, 0xFF, 0xED, 0xA, 0x93, 0xFF, 0xED, 0xA, 0x95, 0xFF, 0xED, 0xA, 0xA9, 0xFF, 0xED, 0xA, 0xAB, 0xFF, 0xED, 0xA, 0xAD, 0xFF, 0xED, 0xA, 0xB1, 0xFF, 0xED, 0xA, 0xCA, 0xFF, 0xE1, 0xA, 0xFE, 0xFF, 0xED, 0xB, 0x6, 0xFF, 0xED, 0xB, 0xF, 0xFF, 0xED, 0xB, 0x19, 0xFF, 0xED, 0xB, 0x1B, 0xFF, 0xED, 0xB, 0x42, 0xFF, 0xED, 0xB, 0x4A, 0xFF, 0xED, 0xB, 0x54, 0xFF, 0xED, 0xB, 0x56, 0xFF, 0xED, 0xB, 0x58, 0xFF, 0xED, 0xB, 0x5A, 0xFF, 0xED, 0xB, 0x5C, 0xFF, 0xED, 0xB, 0x5E, 0xFF, 0xED, 0xB, 0x60, 0xFF, 0xED, 0xB, 0x62, 0xFF, 0xED, 0xB, 0x64, 0xFF, 0xED, 0xB, 0x66, 0xFF, 0xED, 0xB, 0x68, 0xFF, 0xED, 0xB, 0x6C, 0xFF, 0xED, 0xB, 0xD8, 0xFF, 0xED, 0xB, 0xD9, 0xFF, 0xED, 0xB, 0xDA, 0xFF, 0xED, 0xB, 0xDB, 0xFF, 0xED, 0xB, 0xDC, 0xFF, 0xED, 0xB, 0xDD, 0xFF, 0xED, 0xB, 0xDE, 0xFF, 0xED, 0xB, 0xDF, 0xFF, 0xED, 0xC, 0x4A, 0xFF, 0xED, 0xC, 0x4B, 0xFF, 0xED, 0xC, 0x4C, 0xFF, 0xED, 0xC, 0x4D, 0xFF, 0xED, 0xC, 0x4E, 0xFF, 0xED, 0xC, 0x4F, 0xFF, 0xED, 0xC, 0x50, 0xFF, 0xED, 0xC, 0x51, 0xFF, 0xED, 0xC, 0x7A, 0xFF, 0xED, 0xC, 0x7B, 0xFF, 0xED, 0xC, 0x7C, 0xFF, 0xED, 0xC, 0x7D, 0xFF, 0xED, 0xC, 0x7E, 0xFF, 0xED, 0xC, 0x7F, 0xFF, 0xED, 0xC, 0x80, 0xFF, 0xED, 0x0, 0x27, 0x0, 0x5B, 0xFF, 0xD6, 0x0, 0x5E, 0xFF, 0xD6, 0x2, 0x3C, 0xFF, 0xD6, 0x2, 0x8C, 0xFF, 0xAD, 0x2, 0x8F, 0xFF, 0xF4, 0x2, 0x94, 0xFF, 0xF6, 0x2, 0x9F, 0xFF, 0xE8, 0x2, 0xB0, 0xFF, 0xD6, 0x2, 0xB6, 0xFF, 0xE9, 0x2, 0xD1, 0xFF, 0x88, 0x2, 0xDF, 0xFF, 0xF4, 0x2, 0xE1, 0xFF, 0xF4, 0x2, 0xFA, 0x0, 0x5, 0x2, 0xFC, 0xFF, 0xF8, 0x3, 0x4, 0xFF, 0xAC, 0x5, 0x67, 0xFF, 0xD6, 0x6, 0x20, 0xFF, 0xF4, 0x9, 0x2, 0xFF, 0xD6, 0x9, 0x3, 0xFF, 0xD6, 0x9, 0x71, 0xFF, 0xD6, 0x9, 0xF5, 0xFF, 0xD6, 0xA, 0x18, 0xFF, 0xD6, 0xA, 0x21, 0xFF, 0xD6, 0xA, 0x29, 0xFF, 0xD6, 0xA, 0x3A, 0xFF, 0xD6, 0xA, 0x42, 0xFF, 0xD6, 0xA, 0x64, 0xFF, 0xD6, 0xA, 0x66, 0xFF, 0xD6, 0xA, 0x68, 0xFF, 0xD6, 0xA, 0x6A, 0xFF, 0xF4, 0xA, 0xC1, 0xFF, 0xD6, 0xA, 0xC3, 0xFF, 0xD6, 0xA, 0xC5, 0xFF, 0xD6, 0xA, 0xCA, 0xFF, 0xF4, 0xB, 0x3B, 0xFF, 0xD6, 0xB, 0xC0, 0xFF, 0xD6, 0xB, 0xC2, 0xFF, 0xD6, 0xB, 0xCC, 0xFF, 0xD6, 0xB, 0xD6, 0xFF, 0xD6, 0x0, 0x69, 0x0, 0x52, 0xFF, 0xF8, 0x0, 0x53, 0xFF, 0xF8, 0x0, 0x55, 0xFF, 0xF8, 0x0, 0x5B, 0xFF, 0xF3, 0x0, 0x5D, 0xFF, 0xEF, 0x0, 0x5E, 0xFF, 0xF3, 0x0, 0xEA, 0xFF, 0xF8, 0x2, 0x28, 0xFF, 0xF8, 0x2, 0x3C, 0xFF, 0xF3, 0x2, 0x40, 0xFF, 0xF8, 0x2, 0x82, 0xFF, 0xF8, 0x2, 0x83, 0xFF, 0xEE, 0x2, 0x84, 0xFF, 0xEF, 0x2, 0x86, 0xFF, 0xF8, 0x2, 0x87, 0xFF, 0xF8, 0x2, 0x88, 0xFF, 0xF2, 0x2, 0x89, 0xFF, 0xF8, 0x2, 0x8A, 0xFF, 0xF8, 0x2, 0x8B, 0xFF, 0xF8, 0x2, 0x8E, 0xFF, 0xF8, 0x2, 0x90, 0xFF, 0xF8, 0x2, 0x91, 0xFF, 0xF8, 0x2, 0x94, 0xFF, 0xF4, 0x2, 0x96, 0xFF, 0xF8, 0x2, 0x9A, 0xFF, 0xF2, 0x2, 0x9B, 0xFF, 0xF8, 0x2, 0xB0, 0xFF, 0xF3, 0x2, 0xC2, 0xFF, 0xF8, 0x2, 0xCB, 0xFF, 0xEF, 0x2, 0xCD, 0xFF, 0xF8, 0x2, 0xD3, 0xFF, 0xF8, 0x2, 0xD5, 0xFF, 0xF8, 0x2, 0xDB, 0xFF, 0xEF, 0x2, 0xE8, 0xFF, 0xF2, 0x2, 0xEA, 0xFF, 0xF8, 0x2, 0xEC, 0xFF, 0xF8, 0x2, 0xEE, 0xFF, 0xF8, 0x2, 0xF3, 0xFF, 0xF8, 0x2, 0xF5, 0xFF, 0xEF, 0x3, 0x7, 0xFF, 0xF2, 0x3, 0x9, 0xFF, 0xF2, 0x3, 0xF, 0xFF, 0xF8, 0x3, 0x11, 0xFF, 0xF2, 0x3, 0x13, 0xFF, 0xF8, 0x5, 0x67, 0xFF, 0xF3, 0x5, 0xF0, 0xFF, 0xF8, 0x6, 0x0, 0xFF, 0xF8, 0x6, 0x28, 0xFF, 0xF8, 0x6, 0x30, 0xFF, 0xF8, 0x6, 0xAB, 0xFF, 0xF8, 0x6, 0xAC, 0xFF, 0xF8, 0x6, 0xFB, 0xFF, 0xF8, 0x6, 0xFC, 0xFF, 0xF8, 0x6, 0xFD, 0xFF, 0xF8, 0x7, 0x12, 0xFF, 0xF8, 0x8, 0xF8, 0xFF, 0xF8, 0x9, 0x2, 0xFF, 0xF3, 0x9, 0x3, 0xFF, 0xF3, 0x9, 0x40, 0xFF, 0xF8, 0x9, 0x42, 0xFF, 0xF8, 0x9, 0x44, 0xFF, 0xF8, 0x9, 0x45, 0xFF, 0xF8, 0x9, 0x71, 0xFF, 0xF3, 0x9, 0xEF, 0xFF, 0xF8, 0x9, 0xF5, 0xFF, 0xF3, 0xA, 0x14, 0xFF, 0xF8, 0xA, 0x16, 0xFF, 0xF8, 0xA, 0x18, 0xFF, 0xF3, 0xA, 0x19, 0xFF, 0xEF, 0xA, 0x1B, 0xFF, 0xF8, 0xA, 0x20, 0xFF, 0xF8, 0xA, 0x21, 0xFF, 0xF3, 0xA, 0x29, 0xFF, 0xF3, 0xA, 0x30, 0xFF, 0xF8, 0xA, 0x36, 0xFF, 0xF8, 0xA, 0x3A, 0xFF, 0xF3, 0xA, 0x42, 0xFF, 0xF3, 0xA, 0x45, 0xFF, 0xEF, 0xA, 0x53, 0xFF, 0xEF, 0xA, 0x57, 0xFF, 0xF8, 0xA, 0x59, 0xFF, 0xF8, 0xA, 0x64, 0xFF, 0xF3, 0xA, 0x66, 0xFF, 0xF3, 0xA, 0x68, 0xFF, 0xF3, 0xA, 0x6C, 0xFF, 0xF8, 0xA, 0xC1, 0xFF, 0xF3, 0xA, 0xC3, 0xFF, 0xF3, 0xA, 0xC5, 0xFF, 0xF3, 0xA, 0xCC, 0xFF, 0xF8, 0xA, 0xE7, 0xFF, 0xF8, 0xA, 0xED, 0xFF, 0xF8, 0xB, 0x13, 0xFF, 0xF8, 0xB, 0x3B, 0xFF, 0xF3, 0xB, 0x84, 0xFF, 0xF8, 0xB, 0x86, 0xFF, 0xF8, 0xB, 0x88, 0xFF, 0xF8, 0xB, 0x8A, 0xFF, 0xF8, 0xB, 0x8C, 0xFF, 0xF8, 0xB, 0x8E, 0xFF, 0xF8, 0xB, 0xC0, 0xFF, 0xF3, 0xB, 0xC2, 0xFF, 0xF3, 0xB, 0xC8, 0xFF, 0xEF, 0xB, 0xCA, 0xFF, 0xEF, 0xB, 0xCC, 0xFF, 0xF3, 0xB, 0xD6, 0xFF, 0xF3, 0x0, 0xA, 0x0, 0x7, 0xFF, 0xD6, 0x0, 0xC, 0xFF, 0xD6, 0x4, 0x62, 0xFF, 0xD6, 0x4, 0x63, 0xFF, 0xD6, 0x4, 0x65, 0xFF, 0xD6, 0x4, 0x66, 0xFF, 0xD6, 0x4, 0x67, 0xFF, 0xD6, 0xA, 0x2A, 0xFF, 0xD6, 0xA, 0x2B, 0xFF, 0xD6, 0xA, 0x2E, 0xFF, 0xD6, 0x0, 0x18, 0x0, 0x5D, 0xFF, 0xEB, 0x2, 0x84, 0xFF, 0xEB, 0x2, 0x8C, 0xFF, 0xA6, 0x2, 0x8F, 0xFF, 0xD8, 0x2, 0x94, 0xFF, 0xE3, 0x2, 0x9F, 0xFF, 0xD9, 0x2, 0xB6, 0xFF, 0xDB, 0x2, 0xCB, 0xFF, 0xEB, 0x2, 0xD1, 0xFF, 0x1D, 0x2, 0xDB, 0xFF, 0xEB, 0x2, 0xDF, 0xFF, 0xD8, 0x2, 0xE1, 0xFF, 0xDE, 0x2, 0xF5, 0xFF, 0xEB, 0x2, 0xFA, 0xFF, 0xEF, 0x2, 0xFC, 0xFF, 0xF1, 0x3, 0x4, 0xFF, 0x5E, 0x6, 0x20, 0xFF, 0xD8, 0xA, 0x19, 0xFF, 0xEB, 0xA, 0x45, 0xFF, 0xEB, 0xA, 0x53, 0xFF, 0xEB, 0xA, 0x6A, 0xFF, 0xD8, 0xA, 0xCA, 0xFF, 0xD8, 0xB, 0xC8, 0xFF, 0xEB, 0xB, 0xCA, 0xFF, 0xEB, 0x0, 0xE, 0x2, 0x8C, 0xFF, 0x9B, 0x2, 0x8F, 0xFF, 0xE2, 0x2, 0x94, 0xFF, 0xE7, 0x2, 0x9F, 0xFF, 0xD9, 0x2, 0xB6, 0xFF, 0xDB, 0x2, 0xD1, 0xFF, 0x1D, 0x2, 0xDF, 0xFF, 0xE2, 0x2, 0xE1, 0xFF, 0xDE, 0x2, 0xFA, 0xFF, 0xEF, 0x2, 0xFC, 0xFF, 0xF1, 0x3, 0x4, 0xFF, 0x5E, 0x6, 0x20, 0xFF, 0xE2, 0xA, 0x6A, 0xFF, 0xE2, 0xA, 0xCA, 0xFF, 0xE2, 0x0, 0xA, 0x0, 0x7, 0xFF, 0xDD, 0x0, 0xC, 0xFF, 0xDD, 0x4, 0x62, 0xFF, 0xDD, 0x4, 0x63, 0xFF, 0xDD, 0x4, 0x65, 0xFF, 0xDD, 0x4, 0x66, 0xFF, 0xDD, 0x4, 0x67, 0xFF, 0xDD, 0xA, 0x2A, 0xFF, 0xDD, 0xA, 0x2B, 0xFF, 0xDD, 0xA, 0x2E, 0xFF, 0xDD, 0x0, 0xBB, 0x0, 0x48, 0xFF, 0x79, 0x0, 0x49, 0xFF, 0x79, 0x0, 0x4A, 0xFF, 0x79, 0x0, 0x4C, 0xFF, 0x79, 0x0, 0x54, 0xFF, 0x6D, 0x0, 0x56, 0xFF, 0x79, 0x0, 0x58, 0xFF, 0x26, 0x0, 0x59, 0x0, 0x14, 0x0, 0x5C, 0x0, 0xC, 0x0, 0x95, 0xFF, 0x79, 0x0, 0x9F, 0xFF, 0x79, 0x0, 0xB5, 0xFF, 0x79, 0x0, 0xDA, 0xFF, 0x79, 0x0, 0xDC, 0xFF, 0x79, 0x0, 0xE4, 0xFF, 0x79, 0x0, 0xF4, 0xFF, 0x26, 0x1, 0x0, 0xFF, 0x79, 0x2, 0x2A, 0xFF, 0x79, 0x2, 0x3A, 0xFF, 0x79, 0x2, 0x47, 0xFF, 0x79, 0x2, 0x48, 0xFF, 0x79, 0x2, 0x56, 0xFF, 0x6D, 0x2, 0x58, 0xFF, 0x79, 0x2, 0x61, 0xFF, 0x79, 0x2, 0x8D, 0xFF, 0x79, 0x2, 0x99, 0xFF, 0x79, 0x2, 0xAE, 0xFF, 0x6D, 0x2, 0xB4, 0xFF, 0x79, 0x2, 0xB8, 0xFF, 0x79, 0x2, 0xD9, 0xFF, 0x79, 0x2, 0xF7, 0xFF, 0x79, 0x2, 0xF8, 0xFF, 0x79, 0x3, 0x2, 0xFF, 0x79, 0x5, 0x6E, 0xFF, 0x79, 0x5, 0x70, 0xFF, 0x6D, 0x5, 0xEE, 0xFF, 0x6D, 0x6, 0x2, 0xFF, 0x6D, 0x6, 0x4, 0xFF, 0x6D, 0x6, 0x6, 0xFF, 0x6D, 0x6, 0x32, 0xFF, 0x6D, 0x6, 0x85, 0xFF, 0x6D, 0x6, 0x87, 0xFF, 0x6D, 0x6, 0x8F, 0xFF, 0x79, 0x6, 0x91, 0xFF, 0x79, 0x6, 0xA9, 0xFF, 0x79, 0x6, 0xCB, 0xFF, 0x79, 0x6, 0xF7, 0xFF, 0x79, 0x7, 0x2C, 0xFF, 0x26, 0x8, 0xEF, 0xFF, 0x79, 0x8, 0xF0, 0xFF, 0x79, 0x8, 0xF1, 0xFF, 0x79, 0x8, 0xF2, 0xFF, 0x79, 0x8, 0xF3, 0xFF, 0x79, 0x8, 0xF9, 0xFF, 0x6D, 0x8, 0xFA, 0xFF, 0x6D, 0x8, 0xFB, 0xFF, 0x6D, 0x8, 0xFC, 0xFF, 0x6D, 0x8, 0xFD, 0xFF, 0x6D, 0x9, 0xB, 0xFF, 0x79, 0x9, 0xD, 0xFF, 0x79, 0x9, 0xF, 0xFF, 0x79, 0x9, 0x11, 0xFF, 0x79, 0x9, 0x13, 0xFF, 0x79, 0x9, 0x15, 0xFF, 0x79, 0x9, 0x17, 0xFF, 0x79, 0x9, 0x19, 0xFF, 0x79, 0x9, 0x1B, 0xFF, 0x79, 0x9, 0x1D, 0xFF, 0x79, 0x9, 0x1F, 0xFF, 0x79, 0x9, 0x21, 0xFF, 0x79, 0x9, 0x23, 0xFF, 0x79, 0x9, 0x25, 0xFF, 0x79, 0x9, 0x47, 0xFF, 0x6D, 0x9, 0x49, 0xFF, 0x6D, 0x9, 0x4B, 0xFF, 0x6D, 0x9, 0x53, 0xFF, 0x26, 0x9, 0x55, 0xFF, 0x26, 0x9, 0x57, 0xFF, 0x26, 0x9, 0x59, 0xFF, 0x26, 0x9, 0x5B, 0xFF, 0x26, 0x9, 0xED, 0xFF, 0x79, 0x9, 0xF3, 0xFF, 0x6D, 0x9, 0xF9, 0xFF, 0x6D, 0xA, 0x13, 0xFF, 0x79, 0xA, 0x15, 0xFF, 0x6D, 0xA, 0x17, 0xFF, 0x79, 0xA, 0x1A, 0xFF, 0x79, 0xA, 0x1C, 0xFF, 0x26, 0xA, 0x35, 0xFF, 0x79, 0xA, 0x3B, 0xFF, 0x79, 0xA, 0x40, 0xFF, 0x79, 0xA, 0x4E, 0xFF, 0x79, 0xA, 0x50, 0xFF, 0x79, 0xA, 0x51, 0xFF, 0x79, 0xA, 0x5B, 0xFF, 0x6D, 0xA, 0x5D, 0xFF, 0x79, 0xA, 0x60, 0xFF, 0x6D, 0xA, 0x6D, 0xFF, 0x79, 0xA, 0x87, 0xFF, 0x79, 0xA, 0x89, 0xFF, 0x79, 0xA, 0x8B, 0xFF, 0x79, 0xA, 0x8D, 0xFF, 0x79, 0xA, 0x8F, 0xFF, 0x79, 0xA, 0x91, 0xFF, 0x79, 0xA, 0x93, 0xFF, 0x79, 0xA, 0x95, 0xFF, 0x79, 0xA, 0x9B, 0xFF, 0x6D, 0xA, 0x9D, 0xFF, 0x6D, 0xA, 0x9F, 0xFF, 0x6D, 0xA, 0xA1, 0xFF, 0x6D, 0xA, 0xA3, 0xFF, 0x6D, 0xA, 0xA5, 0xFF, 0x6D, 0xA, 0xA7, 0xFF, 0x6D, 0xA, 0xA9, 0xFF, 0x79, 0xA, 0xAB, 0xFF, 0x79, 0xA, 0xAD, 0xFF, 0x79, 0xA, 0xAF, 0xFF, 0x6D, 0xA, 0xB1, 0xFF, 0x79, 0xA, 0xF3, 0xFF, 0x6D, 0xA, 0xFE, 0xFF, 0x79, 0xB, 0x6, 0xFF, 0x79, 0xB, 0xA, 0xFF, 0x6D, 0xB, 0xC, 0xFF, 0x6D, 0xB, 0xF, 0xFF, 0x79, 0xB, 0x19, 0xFF, 0x79, 0xB, 0x1B, 0xFF, 0x79, 0xB, 0x21, 0xFF, 0x6D, 0xB, 0x23, 0xFF, 0x6D, 0xB, 0x33, 0xFF, 0x6D, 0xB, 0x35, 0xFF, 0x6D, 0xB, 0x37, 0xFF, 0x6D, 0xB, 0x39, 0xFF, 0x6D, 0xB, 0x3C, 0xFF, 0x6D, 0xB, 0x42, 0xFF, 0x79, 0xB, 0x4A, 0xFF, 0x79, 0xB, 0x54, 0xFF, 0x79, 0xB, 0x56, 0xFF, 0x79, 0xB, 0x58, 0xFF, 0x79, 0xB, 0x5A, 0xFF, 0x79, 0xB, 0x5C, 0xFF, 0x79, 0xB, 0x5E, 0xFF, 0x79, 0xB, 0x60, 0xFF, 0x79, 0xB, 0x62, 0xFF, 0x79, 0xB, 0x64, 0xFF, 0x79, 0xB, 0x66, 0xFF, 0x79, 0xB, 0x68, 0xFF, 0x79, 0xB, 0x6C, 0xFF, 0x79, 0xB, 0x90, 0xFF, 0x6D, 0xB, 0x92, 0xFF, 0x6D, 0xB, 0x94, 0xFF, 0x6D, 0xB, 0x96, 0xFF, 0x6D, 0xB, 0xA4, 0xFF, 0x26, 0xB, 0xA6, 0xFF, 0x26, 0xB, 0xA8, 0xFF, 0x26, 0xB, 0xAA, 0xFF, 0x26, 0xB, 0xAC, 0xFF, 0x26, 0xB, 0xD8, 0xFF, 0x79, 0xB, 0xD9, 0xFF, 0x79, 0xB, 0xDA, 0xFF, 0x79, 0xB, 0xDB, 0xFF, 0x79, 0xB, 0xDC, 0xFF, 0x79, 0xB, 0xDD, 0xFF, 0x79, 0xB, 0xDE, 0xFF, 0x79, 0xB, 0xDF, 0xFF, 0x79, 0xC, 0x14, 0xFF, 0x6D, 0xC, 0x15, 0xFF, 0x6D, 0xC, 0x16, 0xFF, 0x6D, 0xC, 0x17, 0xFF, 0x6D, 0xC, 0x18, 0xFF, 0x6D, 0xC, 0x19, 0xFF, 0x6D, 0xC, 0x44, 0xFF, 0x6D, 0xC, 0x45, 0xFF, 0x6D, 0xC, 0x4A, 0xFF, 0x79, 0xC, 0x4B, 0xFF, 0x79, 0xC, 0x4C, 0xFF, 0x79, 0xC, 0x4D, 0xFF, 0x79, 0xC, 0x4E, 0xFF, 0x79, 0xC, 0x4F, 0xFF, 0x79, 0xC, 0x50, 0xFF, 0x79, 0xC, 0x51, 0xFF, 0x79, 0xC, 0x7A, 0xFF, 0x79, 0xC, 0x7B, 0xFF, 0x79, 0xC, 0x7C, 0xFF, 0x79, 0xC, 0x7D, 0xFF, 0x79, 0xC, 0x7E, 0xFF, 0x79, 0xC, 0x7F, 0xFF, 0x79, 0xC, 0x80, 0xFF, 0x79, 0x0, 0x9, 0x2, 0x8C, 0xFF, 0x6F, 0x2, 0x94, 0xFF, 0xDA, 0x2, 0x9F, 0xFF, 0xD9, 0x2, 0xB6, 0xFF, 0xDB, 0x2, 0xD1, 0xFF, 0x1D, 0x2, 0xE1, 0xFF, 0xDE, 0x2, 0xFA, 0xFF, 0xEF, 0x2, 0xFC, 0xFF, 0xF1, 0x3, 0x4, 0xFF, 0x5E, 0x0, 0x13, 0x7, 0x4F, 0xFF, 0xED, 0x7, 0x51, 0xFF, 0xF4, 0x7, 0x52, 0xFF, 0xF0, 0x7, 0x54, 0xFF, 0xF1, 0x7, 0x70, 0xFF, 0xF1, 0x7, 0x74, 0xFF, 0xF1, 0x7, 0x8C, 0xFF, 0xF1, 0x7, 0x8E, 0xFF, 0xED, 0x7, 0x90, 0xFF, 0xF1, 0x9, 0x9A, 0xFF, 0xED, 0x9, 0xC7, 0xFF, 0xF1, 0x9, 0xCF, 0xFF, 0xF4, 0x9, 0xD0, 0xFF, 0xED, 0x9, 0xD1, 0xFF, 0xED, 0xC, 0xBC, 0xFF, 0xED, 0xC, 0xCA, 0xFF, 0xED, 0xC, 0xCD, 0xFF, 0xED, 0xC, 0xE1, 0xFF, 0xF1, 0xC, 0xE6, 0xFF, 0xED, 0x0, 0x13, 0x7, 0x4F, 0xFF, 0xE3, 0x7, 0x51, 0xFF, 0xF0, 0x7, 0x52, 0xFF, 0xE9, 0x7, 0x54, 0xFF, 0xE7, 0x7, 0x70, 0xFF, 0xE7, 0x7, 0x74, 0xFF, 0xE7, 0x7, 0x8C, 0xFF, 0xE7, 0x7, 0x8E, 0xFF, 0xE3, 0x7, 0x90, 0xFF, 0xE7, 0x9, 0x9A, 0xFF, 0xE3, 0x9, 0xC7, 0xFF, 0xE7, 0x9, 0xCF, 0xFF, 0xF0, 0x9, 0xD0, 0xFF, 0xE3, 0x9, 0xD1, 0xFF, 0xE3, 0xC, 0xBC, 0xFF, 0xE3, 0xC, 0xCA, 0xFF, 0xE3, 0xC, 0xCD, 0xFF, 0xE3, 0xC, 0xE1, 0xFF, 0xE7, 0xC, 0xE6, 0xFF, 0xE3, 0x0, 0x3, 0x7, 0x51, 0xFF, 0xF4, 0x7, 0x52, 0xFF, 0xED, 0x9, 0xCF, 0xFF, 0xF4, 0x0, 0x2, 0x7, 0x52, 0xFF, 0xB1, 0x7, 0x57, 0xFF, 0xEF, 0x0, 0x2, 0x0, 0x59, 0x0, 0x14, 0x0, 0x5C, 0x0, 0xC, 0x0, 0x12, 0x2, 0x6F, 0xFF, 0xA7, 0x2, 0x7C, 0x0, 0x10, 0x2, 0x81, 0xFF, 0xD6, 0x2, 0x83, 0xFF, 0x83, 0x2, 0x85, 0xFF, 0xB6, 0x2, 0x93, 0xFF, 0xD9, 0x2, 0x97, 0xFF, 0xBD, 0x2, 0x9D, 0xFF, 0xCC, 0x2, 0xB2, 0xFF, 0xBC, 0x2, 0xC5, 0xFF, 0xCC, 0x2, 0xC7, 0xFF, 0xD5, 0x2, 0xCF, 0xFF, 0xD6, 0x2, 0xD7, 0xFF, 0xD6, 0x2, 0xE1, 0xFF, 0xDD, 0x2, 0xE4, 0xFF, 0xD7, 0x2, 0xF6, 0xFF, 0x91, 0x3, 0x0, 0xFF, 0xDC, 0x3, 0x3, 0x0, 0x16, 0x0, 0x2, 0x2, 0x83, 0xFF, 0x77, 0x2, 0xB2, 0xFF, 0xFB, 0x0, 0xA, 0x2, 0x7C, 0xFF, 0xCC, 0x2, 0x8C, 0xFF, 0xC7, 0x2, 0x94, 0xFF, 0xE3, 0x2, 0xD1, 0xFF, 0xBF, 0x2, 0xE0, 0xFF, 0xD7, 0x2, 0xE3, 0xFF, 0xDC, 0x2, 0xF9, 0xFF, 0xCA, 0x2, 0xFB, 0xFF, 0xEA, 0x3, 0x3, 0xFF, 0x75, 0x3, 0x4, 0xFF, 0xCA, 0x0, 0x31, 0x0, 0x57, 0xFF, 0x75, 0x0, 0x5C, 0xFF, 0x96, 0x0, 0x6E, 0xFE, 0xDB, 0x0, 0x7D, 0xFE, 0xDF, 0x0, 0x82, 0xFE, 0xA6, 0x0, 0x87, 0xFF, 0x51, 0x0, 0x8A, 0xFF, 0x3D, 0x2, 0x37, 0xFF, 0x67, 0x2, 0x3D, 0xFF, 0xEE, 0x2, 0x3E, 0xFE, 0xFC, 0x2, 0x42, 0xFF, 0x2E, 0x2, 0x45, 0xFF, 0x3C, 0x2, 0x46, 0xFE, 0xF3, 0x2, 0x49, 0xFF, 0x6B, 0x2, 0x4B, 0xFE, 0xFC, 0x2, 0x4C, 0xFE, 0xFB, 0x2, 0x4D, 0xFE, 0xF8, 0x2, 0x6F, 0xFF, 0x57, 0x2, 0x7C, 0x0, 0x7, 0x2, 0x80, 0xFF, 0xB9, 0x2, 0x81, 0xFF, 0x3B, 0x2, 0x83, 0xFE, 0xE9, 0x2, 0x85, 0xFF, 0x0, 0x2, 0x8C, 0xFF, 0x5D, 0x2, 0x93, 0xFE, 0xFB, 0x2, 0x94, 0xFF, 0x9D, 0x2, 0x95, 0xFF, 0x0, 0x2, 0x97, 0xFE, 0xF3, 0x2, 0x98, 0x0, 0x1F, 0x2, 0x9D, 0xFE, 0xFB, 0x2, 0x9F, 0xFE, 0xFE, 0x2, 0xB2, 0xFE, 0xF1, 0x2, 0xB6, 0xFF, 0xA7, 0x2, 0xC5, 0xFF, 0x2, 0x2, 0xC7, 0xFF, 0x2C, 0x2, 0xCF, 0xFE, 0xFB, 0x2, 0xD1, 0xFF, 0x5E, 0x2, 0xD7, 0xFF, 0x3B, 0x2, 0xE1, 0xFE, 0xF8, 0x2, 0xE3, 0xFF, 0x30, 0x2, 0xE4, 0xFE, 0xDB, 0x2, 0xEF, 0xFF, 0xBC, 0x2, 0xF6, 0xFE, 0xD9, 0x2, 0xFA, 0xFF, 0x21, 0x2, 0xFC, 0xFF, 0x53, 0x3, 0x0, 0xFE, 0xF6, 0x3, 0x3, 0x0, 0x7, 0x3, 0x4, 0xFF, 0x20, 0x3, 0x5, 0xFF, 0xD3, 0x0, 0x8, 0x2, 0x8C, 0xFF, 0xEF, 0x2, 0x94, 0xFF, 0xF6, 0x2, 0x9F, 0xFF, 0xF0, 0x2, 0xB6, 0xFF, 0xF2, 0x2, 0xD1, 0xFF, 0xE2, 0x2, 0xFA, 0xFF, 0xF2, 0x2, 0xFC, 0xFF, 0xF2, 0x3, 0x4, 0xFF, 0xF0, 0x0, 0x2, 0x2, 0xA7, 0x0, 0x7, 0x3, 0x3, 0xFF, 0xE4, 0x0, 0x4, 0x0, 0xE, 0xFF, 0xE4, 0x0, 0x42, 0xFF, 0xF8, 0x0, 0x62, 0xFF, 0xF5, 0x2, 0xE4, 0xFF, 0xEC, 0x0, 0x2, 0x2, 0x8C, 0xFF, 0xF4, 0x4, 0x63, 0xFF, 0xB5, 0x0, 0x13, 0x0, 0x5C, 0xFF, 0xBC, 0x2, 0x37, 0xFF, 0xC0, 0x2, 0x49, 0xFF, 0xAD, 0x2, 0x80, 0xFF, 0xD3, 0x2, 0x8C, 0xFF, 0xB3, 0x2, 0x94, 0xFF, 0xF1, 0x2, 0x9F, 0xFF, 0xAB, 0x2, 0xB2, 0xFF, 0xCE, 0x2, 0xB6, 0xFF, 0xC3, 0x2, 0xD1, 0xFF, 0x83, 0x2, 0xE1, 0xFF, 0xA8, 0x2, 0xEF, 0xFF, 0xDB, 0x2, 0xFA, 0xFF, 0xAB, 0x2, 0xFC, 0xFF, 0xA8, 0x3, 0x4, 0xFF, 0xAE, 0x3, 0x5, 0xFF, 0xEE, 0x7, 0x57, 0xFF, 0xE5, 0x7, 0x61, 0xFF, 0xE4, 0x7, 0xAF, 0xFF, 0xE6, 0x0, 0x6, 0x0, 0x5, 0xFF, 0xF5, 0x0, 0x5C, 0xFF, 0xB3, 0x7, 0x52, 0xFF, 0xB2, 0x7, 0x57, 0xFF, 0xF1, 0x7, 0x61, 0xFF, 0xF0, 0x7, 0xAF, 0xFF, 0xF2, 0x0, 0x4, 0x0, 0x4B, 0x0, 0x17, 0x0, 0x59, 0x0, 0x32, 0x0, 0x5C, 0x0, 0x16, 0x4, 0x63, 0x0, 0xA, 0x0, 0x35, 0x0, 0x5, 0xFF, 0xCE, 0x0, 0x57, 0xFF, 0xB9, 0x0, 0x5C, 0xFF, 0xCD, 0x0, 0x6E, 0xFF, 0x5F, 0x0, 0x7D, 0xFF, 0x61, 0x0, 0x82, 0xFF, 0x40, 0x0, 0x87, 0xFF, 0xA5, 0x0, 0x8A, 0xFF, 0x99, 0x2, 0x37, 0xFF, 0xB2, 0x2, 0x3D, 0xFF, 0xFA, 0x2, 0x3E, 0xFF, 0x73, 0x2, 0x42, 0xFF, 0x6F, 0x2, 0x45, 0xFF, 0x92, 0x2, 0x46, 0xFF, 0x6D, 0x2, 0x49, 0xFF, 0xAB, 0x2, 0x4B, 0xFF, 0x73, 0x2, 0x4C, 0xFF, 0x72, 0x2, 0x4D, 0xFF, 0x70, 0x2, 0x6F, 0xFF, 0xA8, 0x2, 0x7C, 0x0, 0x10, 0x2, 0x80, 0xFF, 0xE2, 0x2, 0x81, 0xFF, 0x98, 0x2, 0x83, 0xFF, 0x68, 0x2, 0x85, 0xFF, 0x75, 0x2, 0x8C, 0xFF, 0xAB, 0x2, 0x93, 0xFF, 0x72, 0x2, 0x94, 0xFF, 0xCD, 0x2, 0x95, 0xFF, 0x75, 0x2, 0x97, 0xFF, 0x6D, 0x2, 0x98, 0x0, 0x1A, 0x2, 0x9D, 0xFF, 0x72, 0x2, 0x9F, 0xFF, 0x74, 0x2, 0xB2, 0xFF, 0x6E, 0x2, 0xB6, 0xFF, 0xD7, 0x2, 0xC5, 0xFF, 0x76, 0x2, 0xC7, 0xFF, 0x8F, 0x2, 0xCF, 0xFF, 0x72, 0x2, 0xD1, 0xFF, 0xAC, 0x2, 0xD7, 0xFF, 0x98, 0x2, 0xE1, 0xFF, 0x70, 0x2, 0xE3, 0xFF, 0x91, 0x2, 0xE4, 0xFF, 0x5F, 0x2, 0xEF, 0xFF, 0xE4, 0x2, 0xF6, 0xFF, 0x5E, 0x2, 0xFA, 0xFF, 0x89, 0x2, 0xFC, 0xFF, 0xA6, 0x3, 0x0, 0xFF, 0x6F, 0x3, 0x3, 0x0, 0x10, 0x3, 0x4, 0xFF, 0x88, 0x3, 0x5, 0xFF, 0xF1, 0x7, 0x57, 0xFF, 0xB3, 0x7, 0x61, 0xFF, 0xB3, 0x7, 0xAF, 0xFF, 0xB3, 0x0, 0x7, 0x0, 0xE, 0x0, 0x16, 0x0, 0x42, 0x0, 0x12, 0x0, 0x57, 0xFF, 0xE0, 0x0, 0x62, 0x0, 0x14, 0x7, 0x57, 0xFF, 0xD6, 0x7, 0x61, 0xFF, 0xD6, 0x7, 0xAF, 0xFF, 0xD6, 0x0, 0x7, 0x0, 0xE, 0x0, 0x10, 0x0, 0x42, 0x0, 0xD, 0x0, 0x57, 0xFF, 0xE9, 0x0, 0x62, 0x0, 0xF, 0x7, 0x57, 0xFF, 0xE5, 0x7, 0x61, 0xFF, 0xE5, 0x7, 0xAF, 0xFF, 0xE7, 0x0, 0x17, 0x2, 0x37, 0xFF, 0xD0, 0x2, 0x3D, 0xFF, 0xF9, 0x2, 0x41, 0xFF, 0xEC, 0x2, 0x43, 0x0, 0x12, 0x2, 0x49, 0xFF, 0xBE, 0x2, 0x4B, 0xFF, 0xDA, 0x2, 0x4C, 0xFF, 0xDC, 0x2, 0x4D, 0xFF, 0xE2, 0x2, 0x6F, 0x0, 0x17, 0x2, 0x80, 0xFF, 0xE7, 0x2, 0x8C, 0xFF, 0xCC, 0x2, 0xD1, 0xFF, 0xB7, 0x2, 0xE1, 0xFF, 0xC1, 0x2, 0xE3, 0xFF, 0xD2, 0x2, 0xE4, 0xFF, 0xC0, 0x2, 0xEF, 0xFF, 0xE5, 0x2, 0xF9, 0x0, 0xE, 0x2, 0xFB, 0x0, 0xD, 0x3, 0x4, 0xFF, 0xBD, 0x3, 0x5, 0xFF, 0xF1, 0x7, 0x57, 0xFF, 0xE7, 0x7, 0x61, 0xFF, 0xE5, 0x7, 0xAF, 0xFF, 0xE7, 0x0, 0x1, 0x2, 0xB2, 0xFF, 0xF0, 0x0, 0x6, 0x0, 0x5C, 0xFF, 0xE3, 0x2, 0x37, 0xFF, 0xC6, 0x2, 0x4C, 0xFF, 0xE2, 0x7, 0x57, 0xFF, 0xEA, 0x7, 0x61, 0xFF, 0xE9, 0x7, 0xAF, 0xFF, 0xEC, 0x0, 0x7, 0x0, 0x4B, 0x0, 0xE, 0x2, 0x3D, 0xFF, 0xF8, 0x2, 0x45, 0x0, 0xC, 0x2, 0x46, 0xFF, 0xE8, 0x2, 0x49, 0x0, 0xD, 0x2, 0x83, 0xFF, 0xBC, 0x2, 0xB2, 0xFF, 0xF0, 0x0, 0xA, 0x0, 0x59, 0xFF, 0xFC, 0x2, 0x49, 0xFF, 0xE8, 0x2, 0x83, 0xFF, 0xC0, 0x2, 0x8C, 0xFF, 0xE3, 0x2, 0x9F, 0xFF, 0xEF, 0x2, 0xB6, 0xFF, 0xF0, 0x2, 0xD1, 0xFF, 0xE2, 0x2, 0xFA, 0xFF, 0xF4, 0x3, 0x4, 0xFF, 0xEA, 0x4, 0x63, 0xFF, 0x98, 0x0, 0x18, 0x0, 0x24, 0xFF, 0xB1, 0x0, 0x59, 0xFF, 0xEE, 0x0, 0x5C, 0xFF, 0xDC, 0x0, 0xC3, 0xFF, 0xED, 0x2, 0x37, 0xFF, 0xE3, 0x2, 0x38, 0xFF, 0xCD, 0x2, 0x43, 0x0, 0x1F, 0x2, 0x49, 0xFF, 0xC3, 0x2, 0x6F, 0x0, 0x14, 0x2, 0x7C, 0xFF, 0xDA, 0x2, 0x8C, 0xFF, 0xB8, 0x2, 0x94, 0xFF, 0xE1, 0x2, 0xD1, 0xFF, 0x87, 0x2, 0xE0, 0xFF, 0x5D, 0x2, 0xE1, 0xFF, 0x83, 0x2, 0xE3, 0xFF, 0x84, 0x2, 0xE4, 0xFF, 0xDA, 0x2, 0xEF, 0xFF, 0xF1, 0x2, 0xF9, 0xFF, 0xAA, 0x2, 0xFB, 0xFF, 0xC5, 0x3, 0x3, 0xFF, 0x81, 0x3, 0x4, 0xFF, 0xA6, 0x7, 0x52, 0xFF, 0xC9, 0x7, 0x61, 0xFF, 0xF4, 0x0, 0x2, 0x2, 0x8C, 0xFF, 0xDF, 0x4, 0x63, 0xFF, 0x90, 0x0, 0x3, 0x0, 0x4B, 0xFF, 0xF4, 0x0, 0x5C, 0xFF, 0xE8, 0x7, 0x52, 0xFF, 0xEF, 0x0, 0x8, 0x2, 0x6F, 0x0, 0xE, 0x2, 0x83, 0x0, 0xE, 0x2, 0xE0, 0xFF, 0xEE, 0x2, 0xE1, 0xFF, 0xEE, 0x2, 0xE3, 0xFF, 0xEE, 0x2, 0xF9, 0xFF, 0xED, 0x2, 0xFB, 0xFF, 0xEC, 0x3, 0x3, 0xFF, 0xEE, 0x0, 0x6, 0x2, 0x49, 0xFF, 0xE8, 0x2, 0x83, 0xFF, 0xDB, 0x2, 0x8C, 0xFF, 0xD7, 0x2, 0x94, 0xFF, 0xF4, 0x2, 0xD1, 0xFF, 0xEA, 0x3, 0x4, 0xFF, 0xEA, 0x0, 0x1E, 0x0, 0xB, 0xFF, 0xD5, 0x0, 0xE, 0x0, 0x16, 0x0, 0xF, 0xFF, 0xBD, 0x0, 0x42, 0x0, 0x13, 0x0, 0x4B, 0xFF, 0xE1, 0x0, 0x57, 0xFF, 0xCD, 0x0, 0x59, 0xFF, 0xE5, 0x0, 0x62, 0x0, 0x14, 0x0, 0x6E, 0xFF, 0x9C, 0x0, 0x7D, 0xFF, 0xC9, 0x0, 0x82, 0xFF, 0x8D, 0x0, 0x87, 0xFF, 0xB5, 0x0, 0x8A, 0xFF, 0xB3, 0x2, 0x37, 0xFF, 0xC8, 0x2, 0x3B, 0xFF, 0xE5, 0x2, 0x3D, 0xFF, 0xF8, 0x2, 0x3E, 0xFF, 0xB0, 0x2, 0x3F, 0x0, 0xE, 0x2, 0x41, 0xFF, 0xE7, 0x2, 0x42, 0xFF, 0xC8, 0x2, 0x45, 0xFF, 0xD4, 0x2, 0x46, 0xFF, 0x9F, 0x2, 0x49, 0xFF, 0xE0, 0x2, 0x4B, 0xFF, 0xC3, 0x2, 0x4C, 0xFF, 0xD3, 0x2, 0x4D, 0xFF, 0xB8, 0x4, 0x6C, 0xFF, 0xB7, 0x7, 0x57, 0xFF, 0xBC, 0x7, 0x61, 0xFF, 0xBC, 0x7, 0xAF, 0xFF, 0xBE, 0x0, 0x8, 0x0, 0x59, 0x0, 0xF, 0x0, 0x82, 0xFF, 0x15, 0x2, 0x3D, 0xFF, 0xFB, 0x2, 0x43, 0xFF, 0xAE, 0x2, 0x46, 0xFF, 0xBA, 0x2, 0x6F, 0xFF, 0x2A, 0x2, 0x83, 0xFF, 0x4D, 0x2, 0xF6, 0xFF, 0xD4, 0x0, 0x7, 0x0, 0x82, 0xFF, 0xD2, 0x2, 0x34, 0xFF, 0xF2, 0x2, 0x36, 0xFF, 0xEF, 0x2, 0x43, 0xFF, 0xE8, 0x2, 0x6F, 0xFF, 0xD2, 0x2, 0x7C, 0xFF, 0xEB, 0x3, 0x3, 0xFF, 0xDD, 0x0, 0x1, 0x7, 0x57, 0xFF, 0xE9, 0x0, 0x4, 0x7, 0x52, 0xFF, 0xBB, 0x7, 0x57, 0xFF, 0xF1, 0x7, 0x61, 0xFF, 0xF1, 0x7, 0xAF, 0xFF, 0xF1, 0x0, 0x1, 0x7, 0x52, 0xFF, 0xF0, 0x0, 0x1, 0x7, 0x52, 0x0, 0xE, 0x0, 0x2, 0xB, 0x56, 0x0, 0x4, 0x0, 0x0, 0x11, 0xBE, 0x1F, 0xD8, 0x0, 0x27, 0x0, 0x25, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xC, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xFF, 0xED, 0xFF, 0xEE, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xB, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xB, 0x0, 0x0, 0x0, 0xB, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xFF, 0xEE, 0xFF, 0xEE, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xFF, 0xE8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xFF, 0xB7, 0xFF, 0xD6, 0xFF, 0xEC, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xFF, 0xE0, 0x0, 0x0, 0xFF, 0xE7, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xFF, 0xD8, 0xFF, 0x96, 0x0, 0x0, 0xFF, 0xF4, 0xFF, 0xE7, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xFF, 0xE8, 0xFF, 0xE1, 0xFF, 0xF8, 0xFF, 0xF4, 0x0, 0x0, 0x0, 0x0, 0xFF, 0xF4, 0xFF, 0xCA, 0xFF, 0xEE, 0xFF, 0x84, 0xFF, 0x53, 0x0, 0x0, 0x0, 0x0, 0x0, 0xD, 0x0, 0x0, 0x0, 0x0, 0xFF, 0xF0, 0x0, 0x0, 0xFF, 0x6F, 0x0, 0x0, 0xFF, 0xD6, 0xFF, 0xA0, 0xFF, 0xC2, 0x0, 0x12, 0x0, 0x0, 0x0, 0x13, 0x0, 0x0, 0xFF, 0x9C, 0x0, 0x0, 0x0, 0x0, 0xFF, 0x7A, 0xFF, 0xC6, 0x0, 0x0, 0x0, 0x0, 0xFF, 0xDA, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xFF, 0xF0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xFF, 0xEF, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xFF, 0xA8, 0xFF, 0xE6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xFF, 0xEF, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xFF, 0xB3, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xFF, 0xF0, 0x0, 0x0, 0x0, 0x0, 0xFF, 0xEC, 0xFF, 0xEE, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xFF, 0xE4, 0x0, 0x0, 0x0, 0x14, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xFF, 0xEF, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xE, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xFF, 0xEC, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xFF, 0xF0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xFF, 0xE0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xFF, 0xF4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xFF, 0xF0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xFF, 0xDA, 0xFF, 0xF0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xFF, 0xF1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xFF, 0xF2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xFF, 0xE6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xFF, 0xF2, 0x0, 0x0, 0x0, 0x0, 0xFF, 0xF0, 0x0, 0x0, 0x0, 0x0, 0xFF, 0xF0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xA, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xFF, 0x66, 0xFF, 0xD0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xFF, 0xE8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xFF, 0xE9, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xFF, 0xE4, 0xFF, 0xD4, 0xFF, 0xF6, 0xFF, 0xE3, 0xFF, 0xE7, 0x0, 0x0, 0x0, 0x0, 0xFF, 0xE5, 0xFF, 0xD4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xFF, 0x5A, 0x0, 0x0, 0xFF, 0x9B, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xFF, 0xA1, 0xFF, 0xDF, 0xFF, 0xC6, 0xFF, 0x9A, 0xFF, 0xC8, 0xFF, 0x66, 0xFF, 0xB1, 0xFF, 0xBC, 0xFF, 0xEA, 0xFF, 0xB0, 0x0, 0x12, 0x0, 0x13, 0xFF, 0x8F, 0xFF, 0xA9, 0xFF, 0xDC, 0xFF, 0xEF, 0x0, 0x8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xFF, 0xE4, 0x0, 0x12, 0x0, 0x0, 0xFF, 0xF2, 0x0, 0x0, 0xFF, 0x11, 0x0, 0x0, 0xFF, 0xEE, 0x0, 0x13, 0x0, 0x0, 0xFF, 0x71, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xFF, 0x83, 0xFF, 0xF2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xFF, 0xE8, 0xFF, 0xED, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xFF, 0xEA, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xFF, 0x9F, 0xFF, 0xDC, 0xFF, 0xAA, 0xFF, 0x56, 0xFF, 0xB9, 0xFF, 0x84, 0xFF, 0x6F, 0xFF, 0xB3, 0xFF, 0xA7, 0x0, 0x0, 0x0, 0x11, 0x0, 0x11, 0xFF, 0x8C, 0xFF, 0xAD, 0xFF, 0xBF, 0xFF, 0xEF, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xFF, 0xAC, 0x0, 0x10, 0x0, 0x0, 0xFF, 0xF0, 0xFF, 0xC6, 0xFE, 0xFC, 0xFF, 0x73, 0xFF, 0xEC, 0x0, 0x11, 0xFF, 0xB6, 0xFF, 0x11, 0x0, 0x0, 0xFF, 0x70, 0x0, 0x0, 0xFF, 0x28, 0xFF, 0xF0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xFF, 0xF1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xFF, 0xEA, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xFF, 0xB2, 0xFF, 0xB3, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xFF, 0xD4, 0x0, 0x0, 0xFF, 0xEF, 0x0, 0x0, 0x0, 0x0, 0xFF, 0xEF, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xFF, 0xE9, 0xFF, 0xE4, 0x0, 0x0, 0xFF, 0xE9, 0xFF, 0xEC, 0x0, 0xE, 0x0, 0x0, 0xFF, 0xEA, 0xFF, 0xE3, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xE, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xFF, 0xE4, 0xFF, 0xDE, 0x0, 0x0, 0xFF, 0xE6, 0xFF, 0xE9, 0x0, 0x0, 0x0, 0x0, 0xFF, 0xE5, 0xFF, 0xD8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x12, 0x0, 0x0, 0x0, 0x12, 0x0, 0x0, 0x0, 0xF, 0x0, 0x0, 0xFF, 0x56, 0x0, 0x0, 0xFF, 0xC3, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xFF, 0xE1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xFF, 0xEA, 0x0, 0x0, 0x0, 0x0, 0xFF, 0xD9, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xFF, 0xF4, 0x0, 0x0, 0x0, 0x0, 0xFF, 0xE9, 0x0, 0x0, 0x0, 0x0, 0xFF, 0xEC, 0x0, 0x0, 0x0, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x11, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xFF, 0x5F, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xFF, 0xF2, 0x0, 0x0, 0x0, 0x0, 0xFF, 0xF2, 0x0, 0x0, 0xFF, 0x53, 0xFF, 0xF4, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xFF, 0x71, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xFF, 0xC1, 0x0, 0x0, 0xFF, 0xDB, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xFF, 0x6A, 0xFE, 0x76, 0xFF, 0xA4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xFF, 0x2F, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xFF, 0xE6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xFF, 0xBE, 0x0, 0x0, 0x0, 0x0, 0xFF, 0xF1, 0x0, 0x14, 0x0, 0x0, 0xFF, 0xF1, 0xFF, 0x7D, 0xFF, 0xE6, 0xFF, 0x2F, 0xFE, 0xEF, 0x0, 0x14, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xFF, 0xED, 0x0, 0x0, 0xFE, 0xE8, 0x0, 0x0, 0xFF, 0x97, 0xFF, 0xB1, 0xFF, 0xB7, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xFF, 0x2E, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xFF, 0xD3, 0x0, 0x0, 0xFF, 0xB6, 0x0, 0x0, 0xFF, 0xEA, 0xFF, 0xA7, 0x0, 0x0, 0xFF, 0x6F, 0xFF, 0xBF, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xFF, 0xA6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xFF, 0xD8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xFF, 0xF1, 0x0, 0x0, 0x0, 0x0, 0xFF, 0xF1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xFF, 0xD4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xFF, 0xDF, 0x0, 0x0, 0x0, 0x0, 0xFF, 0xDF, 0xFF, 0xEC, 0xFF, 0xC7, 0xFF, 0xDC, 0xFF, 0xE5, 0x0, 0x0, 0x0, 0x0, 0x0, 0xF, 0x0, 0x0, 0xFF, 0xB5, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xFF, 0x65, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xFF, 0xB1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xFF, 0xF2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xFF, 0xE3, 0xFF, 0xA6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xFF, 0xE6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xFF, 0xDC, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xFF, 0xD0, 0xFF, 0xED, 0x0, 0x0, 0xFF, 0xCE, 0xFF, 0xE2, 0xFF, 0x9D, 0xFF, 0xCE, 0xFF, 0xD6, 0xFF, 0xF4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xFF, 0x91, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xFF, 0x29, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xFF, 0x7E, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xFF, 0xE9, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xFF, 0xB2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xFF, 0x66, 0xFF, 0xEE, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xFF, 0xE5, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xFF, 0x70, 0xFF, 0x78, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xFF, 0xE4, 0x0, 0x0, 0x0, 0x0, 0xFF, 0xB3, 0xFF, 0xC4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xFF, 0xFB, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xFF, 0xA7, 0x0, 0x0, 0x0, 0x0, 0xFF, 0xC9, 0x0, 0x0, 0xFF, 0xBC, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xFE, 0xE3, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xFF, 0x48, 0xFF, 0xB9, 0xFF, 0x5A, 0xFF, 0x5B, 0xFF, 0x75, 0xFF, 0x3A, 0xFF, 0x53, 0x0, 0x0, 0xFF, 0x55, 0x0, 0x0, 0x0, 0x9, 0x0, 0x9, 0x0, 0x0, 0xFF, 0x60, 0xFF, 0x7D, 0xFF, 0xCF, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xFF, 0x5E, 0x0, 0x7, 0x0, 0x0, 0x0, 0x0, 0xFF, 0x8A, 0xFE, 0x61, 0xFE, 0xFC, 0x0, 0x0, 0x0, 0x9, 0x0, 0x0, 0xFE, 0x57, 0x0, 0x0, 0xFE, 0xF8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xE, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xFF, 0xEE, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xFF, 0xEA, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xFF, 0xAD, 0xFF, 0xB5, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xFF, 0xD1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xFF, 0xC2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xFF, 0xE4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xFF, 0xB4, 0xFF, 0xE0, 0xFF, 0xB8, 0xFF, 0xAD, 0x0, 0x0, 0xFF, 0x85, 0xFF, 0xA4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x13, 0x0, 0x1E, 0x0, 0x0, 0xFF, 0xC4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xFF, 0xBB, 0xFE, 0xAB, 0xFF, 0xAE, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xFF, 0x44, 0x0, 0x0, 0xFF, 0xE0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x3, 0x32, 0x0, 0x7, 0x0, 0xC, 0x0, 0x11, 0x0, 0x12, 0x0, 0x13, 0x0, 0x26, 0x0, 0x27, 0x0, 0x28, 0x0, 0x29, 0x0, 0x2A, 0x0, 0x2D, 0x0, 0x2E, 0x0, 0x2F, 0x0, 0x30, 0x0, 0x31, 0x0, 0x32, 0x0, 0x33, 0x0, 0x34, 0x0, 0x35, 0x0, 0x39, 0x0, 0x3A, 0x0, 0x3B, 0x0, 0x3C, 0x0, 0x3D, 0x0, 0x3E, 0x0, 0x3F, 0x0, 0x46, 0x0, 0x47, 0x0, 0x48, 0x0, 0x4A, 0x0, 0x4D, 0x0, 0x52, 0x0, 0x53, 0x0, 0x54, 0x0, 0x55, 0x0, 0x57, 0x0, 0x5B, 0x0, 0x5D, 0x0, 0x5E, 0x0, 0x5F, 0x0, 0x8B, 0x0, 0x97, 0x0, 0x9A, 0x0, 0x9C, 0x0, 0x9D, 0x0, 0xA0, 0x0, 0xA1, 0x0, 0xA2, 0x0, 0xA5, 0x0, 0xA6, 0x0, 0xAE, 0x0, 0xB2, 0x0, 0xB3, 0x0, 0xB6, 0x0, 0xB8, 0x0, 0xC2, 0x0, 0xCA, 0x0, 0xD8, 0x0, 0xD9, 0x0, 0xDA, 0x0, 0xED, 0x0, 0xEE, 0x0, 0xF2, 0x0, 0xF8, 0x0, 0xFA, 0x1, 0x2, 0x1, 0x3, 0x2, 0x27, 0x2, 0x29, 0x2, 0x2A, 0x2, 0x2B, 0x2, 0x30, 0x2, 0x31, 0x2, 0x32, 0x2, 0x33, 0x2, 0x3C, 0x2, 0x40, 0x2, 0x46, 0x2, 0x4E, 0x2, 0x55, 0x2, 0x56, 0x2, 0x60, 0x2, 0x62, 0x2, 0x64, 0x2, 0x65, 0x2, 0x66, 0x2, 0x67, 0x2, 0x6A, 0x2, 0x6B, 0x2, 0x6D, 0x2, 0x70, 0x2, 0x72, 0x2, 0x73, 0x2, 0x74, 0x2, 0x76, 0x2, 0x77, 0x2, 0x78, 0x2, 0x79, 0x2, 0x7A, 0x2, 0x7B, 0x2, 0x7C, 0x2, 0x82, 0x2, 0x84, 0x2, 0x8D, 0x2, 0x92, 0x2, 0x94, 0x2, 0x95, 0x2, 0x9A, 0x2, 0x9B, 0x2, 0xA0, 0x2, 0xA3, 0x2, 0xAE, 0x2, 0xAF, 0x2, 0xB0, 0x2, 0xC5, 0x2, 0xC6, 0x2, 0xC7, 0x2, 0xCA, 0x2, 0xCB, 0x2, 0xCC, 0x2, 0xCE, 0x2, 0xD0, 0x2, 0xD2, 0x2, 0xDA, 0x2, 0xDB, 0x2, 0xEB, 0x2, 0xED, 0x2, 0xEF, 0x2, 0xF3, 0x2, 0xF4, 0x2, 0xF5, 0x3, 0x8, 0x3, 0x9, 0x3, 0xA, 0x3, 0xB, 0x3, 0xC, 0x3, 0xD, 0x3, 0xE, 0x3, 0x14, 0x3, 0x18, 0x3, 0x1A, 0x4, 0x2B, 0x4, 0x2D, 0x4, 0x34, 0x4, 0x5E, 0x4, 0x5F, 0x4, 0x62, 0x4, 0x63, 0x4, 0x64, 0x4, 0x65, 0x4, 0x66, 0x4, 0x67, 0x4, 0x68, 0x4, 0x6F, 0x4, 0x70, 0x5, 0x59, 0x5, 0x5B, 0x5, 0x5D, 0x5, 0x5E, 0x5, 0x5F, 0x5, 0x61, 0x5, 0x62, 0x5, 0x64, 0x5, 0x66, 0x5, 0x6A, 0x5, 0x70, 0x5, 0xD9, 0x5, 0xDA, 0x5, 0xDB, 0x5, 0xDC, 0x5, 0xE5, 0x5, 0xE7, 0x5, 0xE8, 0x5, 0xEB, 0x5, 0xEC, 0x5, 0xEF, 0x5, 0xF0, 0x5, 0xF1, 0x5, 0xF9, 0x5, 0xFD, 0x5, 0xFE, 0x5, 0xFF, 0x6, 0x0, 0x6, 0x1, 0x6, 0x2, 0x6, 0x3, 0x6, 0x4, 0x6, 0x5, 0x6, 0x6, 0x6, 0x25, 0x6, 0x26, 0x6, 0x29, 0x6, 0x2A, 0x6, 0x2E, 0x6, 0x31, 0x6, 0x32, 0x6, 0x33, 0x6, 0x5F, 0x6, 0x6A, 0x6, 0x6C, 0x6, 0x6E, 0x6, 0x70, 0x6, 0x71, 0x6, 0x72, 0x6, 0x73, 0x6, 0x75, 0x6, 0x76, 0x6, 0x78, 0x6, 0x7A, 0x6, 0x7C, 0x6, 0x86, 0x6, 0x87, 0x6, 0x88, 0x6, 0x89, 0x6, 0x8A, 0x6, 0x8B, 0x6, 0x8C, 0x6, 0x8D, 0x6, 0x96, 0x6, 0x97, 0x6, 0x9D, 0x6, 0x9F, 0x6, 0xBB, 0x6, 0xC7, 0x6, 0xC9, 0x6, 0xCD, 0x6, 0xCE, 0x6, 0xE1, 0x7, 0x54, 0x7, 0x59, 0x7, 0x5C, 0x7, 0x5D, 0x7, 0x67, 0x7, 0x68, 0x7, 0x69, 0x7, 0x7B, 0x7, 0x8A, 0x7, 0x8B, 0x7, 0x8C, 0x7, 0xAE, 0x7, 0xB1, 0x7, 0xCF, 0x7, 0xD1, 0x7, 0xD2, 0x8, 0xC7, 0x8, 0xC8, 0x8, 0xC9, 0x8, 0xCB, 0x8, 0xCD, 0x8, 0xCE, 0x8, 0xCF, 0x8, 0xD0, 0x8, 0xD1, 0x8, 0xD2, 0x8, 0xD3, 0x8, 0xD4, 0x8, 0xD5, 0x8, 0xD6, 0x8, 0xD7, 0x8, 0xD8, 0x8, 0xD9, 0x8, 0xDA, 0x8, 0xDB, 0x8, 0xDC, 0x8, 0xDD, 0x8, 0xDE, 0x8, 0xDF, 0x8, 0xE0, 0x8, 0xE1, 0x8, 0xE2, 0x8, 0xE3, 0x8, 0xE4, 0x8, 0xE5, 0x8, 0xE6, 0x8, 0xE7, 0x8, 0xE8, 0x8, 0xE9, 0x8, 0xEA, 0x8, 0xEB, 0x8, 0xEC, 0x8, 0xED, 0x8, 0xEE, 0x8, 0xEF, 0x8, 0xF0, 0x8, 0xF1, 0x8, 0xF2, 0x8, 0xF3, 0x8, 0xF8, 0x8, 0xF9, 0x8, 0xFA, 0x8, 0xFB, 0x8, 0xFC, 0x8, 0xFD, 0x9, 0x2, 0x9, 0x3, 0x9, 0x4, 0x9, 0x5, 0x9, 0x6, 0x9, 0x7, 0x9, 0x8, 0x9, 0x9, 0x9, 0xA, 0x9, 0xB, 0x9, 0xC, 0x9, 0xD, 0x9, 0xE, 0x9, 0xF, 0x9, 0x10, 0x9, 0x11, 0x9, 0x12, 0x9, 0x14, 0x9, 0x15, 0x9, 0x16, 0x9, 0x17, 0x9, 0x18, 0x9, 0x19, 0x9, 0x1A, 0x9, 0x1B, 0x9, 0x1C, 0x9, 0x1D, 0x9, 0x26, 0x9, 0x27, 0x9, 0x28, 0x9, 0x2A, 0x9, 0x2C, 0x9, 0x2E, 0x9, 0x30, 0x9, 0x33, 0x9, 0x35, 0x9, 0x37, 0x9, 0x39, 0x9, 0x3B, 0x9, 0x3D, 0x9, 0x3F, 0x9, 0x40, 0x9, 0x41, 0x9, 0x42, 0x9, 0x43, 0x9, 0x44, 0x9, 0x45, 0x9, 0x46, 0x9, 0x47, 0x9, 0x48, 0x9, 0x49, 0x9, 0x4A, 0x9, 0x4B, 0x9, 0x4D, 0x9, 0x4F, 0x9, 0x51, 0x9, 0x5C, 0x9, 0x5E, 0x9, 0x60, 0x9, 0x62, 0x9, 0x64, 0x9, 0x66, 0x9, 0x68, 0x9, 0x6A, 0x9, 0x6C, 0x9, 0x6E, 0x9, 0x70, 0x9, 0x71, 0x9, 0x72, 0x9, 0x73, 0x9, 0x74, 0x9, 0x75, 0x9, 0x76, 0x9, 0x77, 0x9, 0x78, 0x9, 0x7D, 0x9, 0x7E, 0x9, 0x7F, 0x9, 0x80, 0x9, 0x81, 0x9, 0x82, 0x9, 0x83, 0x9, 0x84, 0x9, 0x85, 0x9, 0x86, 0x9, 0x91, 0x9, 0x92, 0x9, 0x93, 0x9, 0x94, 0x9, 0x95, 0x9, 0x9B, 0x9, 0x9C, 0x9, 0x9D, 0x9, 0xA2, 0x9, 0xB3, 0x9, 0xB4, 0x9, 0xB5, 0x9, 0xB6, 0x9, 0xB7, 0x9, 0xBB, 0x9, 0xBC, 0x9, 0xBD, 0x9, 0xBE, 0x9, 0xC7, 0x9, 0xD5, 0x9, 0xD6, 0x9, 0xD7, 0x9, 0xD8, 0x9, 0xD9, 0x9, 0xDA, 0x9, 0xDD, 0x9, 0xDE, 0x9, 0xDF, 0x9, 0xE0, 0x9, 0xE1, 0x9, 0xE2, 0x9, 0xE3, 0x9, 0xE4, 0x9, 0xE5, 0x9, 0xE6, 0x9, 0xE7, 0x9, 0xE8, 0x9, 0xE9, 0x9, 0xEA, 0x9, 0xEB, 0x9, 0xEC, 0x9, 0xEF, 0x9, 0xF3, 0x9, 0xF5, 0x9, 0xF9, 0x9, 0xFC, 0x9, 0xFD, 0x9, 0xFF, 0xA, 0x0, 0xA, 0x1, 0xA, 0x2, 0xA, 0x3, 0xA, 0x4, 0xA, 0x5, 0xA, 0x6, 0xA, 0x7, 0xA, 0x8, 0xA, 0xA, 0xA, 0xB, 0xA, 0xC, 0xA, 0xE, 0xA, 0xF, 0xA, 0x10, 0xA, 0x11, 0xA, 0x12, 0xA, 0x13, 0xA, 0x15, 0xA, 0x16, 0xA, 0x17, 0xA, 0x18, 0xA, 0x19, 0xA, 0x1A, 0xA, 0x1B, 0xA, 0x21, 0xA, 0x22, 0xA, 0x24, 0xA, 0x26, 0xA, 0x28, 0xA, 0x29, 0xA, 0x2A, 0xA, 0x2B, 0xA, 0x2E, 0xA, 0x2F, 0xA, 0x30, 0xA, 0x31, 0xA, 0x32, 0xA, 0x33, 0xA, 0x35, 0xA, 0x39, 0xA, 0x3A, 0xA, 0x3F, 0xA, 0x40, 0xA, 0x41, 0xA, 0x42, 0xA, 0x43, 0xA, 0x44, 0xA, 0x45, 0xA, 0x46, 0xA, 0x47, 0xA, 0x48, 0xA, 0x49, 0xA, 0x4A, 0xA, 0x4D, 0xA, 0x4E, 0xA, 0x50, 0xA, 0x51, 0xA, 0x52, 0xA, 0x53, 0xA, 0x5A, 0xA, 0x5B, 0xA, 0x5E, 0xA, 0x60, 0xA, 0x62, 0xA, 0x63, 0xA, 0x64, 0xA, 0x65, 0xA, 0x66, 0xA, 0x67, 0xA, 0x68, 0xA, 0x6E, 0xA, 0x6F, 0xA, 0x70, 0xA, 0x71, 0xA, 0x72, 0xA, 0x73, 0xA, 0x74, 0xA, 0x75, 0xA, 0x76, 0xA, 0x77, 0xA, 0x78, 0xA, 0x79, 0xA, 0x7A, 0xA, 0x7B, 0xA, 0x7C, 0xA, 0x7D, 0xA, 0x7E, 0xA, 0x7F, 0xA, 0x80, 0xA, 0x81, 0xA, 0x82, 0xA, 0x83, 0xA, 0x84, 0xA, 0x85, 0xA, 0x86, 0xA, 0x87, 0xA, 0x88, 0xA, 0x89, 0xA, 0x8A, 0xA, 0x8B, 0xA, 0x8C, 0xA, 0x8D, 0xA, 0x8E, 0xA, 0x8F, 0xA, 0x90, 0xA, 0x91, 0xA, 0x92, 0xA, 0x93, 0xA, 0x94, 0xA, 0x95, 0xA, 0x96, 0xA, 0x98, 0xA, 0x9A, 0xA, 0x9B, 0xA, 0x9C, 0xA, 0x9D, 0xA, 0x9E, 0xA, 0x9F, 0xA, 0xA0, 0xA, 0xA1, 0xA, 0xA2, 0xA, 0xA3, 0xA, 0xA4, 0xA, 0xA5, 0xA, 0xA6, 0xA, 0xA7, 0xA, 0xAF, 0xA, 0xB2, 0xA, 0xB4, 0xA, 0xC0, 0xA, 0xC1, 0xA, 0xC2, 0xA, 0xC3, 0xA, 0xC4, 0xA, 0xC5, 0xA, 0xC7, 0xA, 0xCB, 0xA, 0xCC, 0xA, 0xCF, 0xA, 0xD1, 0xA, 0xD2, 0xA, 0xD4, 0xA, 0xD6, 0xA, 0xDC, 0xA, 0xE6, 0xA, 0xEE, 0xA, 0xEF, 0xA, 0xF0, 0xA, 0xF2, 0xA, 0xF3, 0xA, 0xF4, 0xA, 0xF6, 0xA, 0xF8, 0xA, 0xFA, 0xA, 0xFC, 0xA, 0xFF, 0xB, 0x0, 0xB, 0x1, 0xB, 0x2, 0xB, 0x4, 0xB, 0x9, 0xB, 0xA, 0xB, 0xB, 0xB, 0xC, 0xB, 0xD, 0xB, 0xE, 0xB, 0xF, 0xB, 0x12, 0xB, 0x13, 0xB, 0x14, 0xB, 0x15, 0xB, 0x16, 0xB, 0x17, 0xB, 0x18, 0xB, 0x1A, 0xB, 0x1C, 0xB, 0x1E, 0xB, 0x20, 0xB, 0x21, 0xB, 0x22, 0xB, 0x23, 0xB, 0x25, 0xB, 0x27, 0xB, 0x2C, 0xB, 0x2E, 0xB, 0x2F, 0xB, 0x30, 0xB, 0x32, 0xB, 0x33, 0xB, 0x34, 0xB, 0x35, 0xB, 0x36, 0xB, 0x37, 0xB, 0x38, 0xB, 0x39, 0xB, 0x3B, 0xB, 0x3C, 0xB, 0x42, 0xB, 0x46, 0xB, 0x47, 0xB, 0x48, 0xB, 0x4B, 0xB, 0x4D, 0xB, 0x4E, 0xB, 0x4F, 0xB, 0x50, 0xB, 0x51, 0xB, 0x52, 0xB, 0x53, 0xB, 0x54, 0xB, 0x55, 0xB, 0x57, 0xB, 0x59, 0xB, 0x5B, 0xB, 0x5D, 0xB, 0x5F, 0xB, 0x60, 0xB, 0x61, 0xB, 0x62, 0xB, 0x63, 0xB, 0x64, 0xB, 0x65, 0xB, 0x66, 0xB, 0x67, 0xB, 0x68, 0xB, 0x6D, 0xB, 0x6E, 0xB, 0x6F, 0xB, 0x70, 0xB, 0x71, 0xB, 0x72, 0xB, 0x73, 0xB, 0x74, 0xB, 0x75, 0xB, 0x77, 0xB, 0x79, 0xB, 0x7B, 0xB, 0x7D, 0xB, 0x7F, 0xB, 0x81, 0xB, 0x83, 0xB, 0x84, 0xB, 0x85, 0xB, 0x86, 0xB, 0x87, 0xB, 0x88, 0xB, 0x89, 0xB, 0x8A, 0xB, 0x8B, 0xB, 0x8C, 0xB, 0x8D, 0xB, 0x8E, 0xB, 0x8F, 0xB, 0x90, 0xB, 0x91, 0xB, 0x92, 0xB, 0x93, 0xB, 0x94, 0xB, 0x95, 0xB, 0x96, 0xB, 0x97, 0xB, 0x98, 0xB, 0x99, 0xB, 0x9A, 0xB, 0x9C, 0xB, 0x9E, 0xB, 0xA0, 0xB, 0xA2, 0xB, 0xAD, 0xB, 0xAF, 0xB, 0xB1, 0xB, 0xB3, 0xB, 0xB5, 0xB, 0xB7, 0xB, 0xB9, 0xB, 0xBB, 0xB, 0xBD, 0xB, 0xBF, 0xB, 0xC0, 0xB, 0xC1, 0xB, 0xC2, 0xB, 0xC3, 0xB, 0xC5, 0xB, 0xC7, 0xB, 0xC8, 0xB, 0xC9, 0xB, 0xCA, 0xB, 0xCB, 0xB, 0xCC, 0xB, 0xCD, 0xB, 0xCE, 0xB, 0xCF, 0xB, 0xD0, 0xB, 0xD1, 0xB, 0xD2, 0xB, 0xD6, 0xB, 0xE0, 0xB, 0xE1, 0xB, 0xE2, 0xB, 0xE3, 0xB, 0xE4, 0xB, 0xE5, 0xB, 0xE6, 0xB, 0xE7, 0xB, 0xEE, 0xB, 0xEF, 0xB, 0xF0, 0xB, 0xF1, 0xB, 0xF2, 0xB, 0xF3, 0xB, 0xF4, 0xB, 0xF5, 0xB, 0xF6, 0xB, 0xF7, 0xB, 0xF8, 0xB, 0xF9, 0xB, 0xFA, 0xB, 0xFB, 0xB, 0xFC, 0xB, 0xFD, 0xB, 0xFE, 0xB, 0xFF, 0xC, 0x0, 0xC, 0x1, 0xC, 0x2, 0xC, 0x3, 0xC, 0x14, 0xC, 0x15, 0xC, 0x16, 0xC, 0x17, 0xC, 0x18, 0xC, 0x19, 0xC, 0x1A, 0xC, 0x1B, 0xC, 0x1C, 0xC, 0x1D, 0xC, 0x1E, 0xC, 0x1F, 0xC, 0x40, 0xC, 0x41, 0xC, 0x44, 0xC, 0x45, 0xC, 0x52, 0xC, 0x53, 0xC, 0x54, 0xC, 0x55, 0xC, 0x56, 0xC, 0x57, 0xC, 0x58, 0xC, 0x59, 0xC, 0x62, 0xC, 0x63, 0xC, 0x64, 0xC, 0x65, 0xC, 0x66, 0xC, 0x67, 0xC, 0x68, 0xC, 0x69, 0xC, 0x81, 0xC, 0x82, 0xC, 0x83, 0xC, 0x84, 0xC, 0x85, 0xC, 0x86, 0xC, 0x87, 0xC, 0x88, 0xC, 0x89, 0xC, 0x8A, 0xC, 0x8B, 0xC, 0x8C, 0xC, 0x8D, 0xC, 0x8E, 0xC, 0x8F, 0xC, 0x9E, 0xC, 0x9F, 0xC, 0xA2, 0xC, 0xA3, 0xC, 0xA4, 0xC, 0xA5, 0xC, 0xA6, 0xC, 0xAC, 0xC, 0xAD, 0xC, 0xB7, 0xC, 0xBB, 0xC, 0xBE, 0xC, 0xC4, 0xC, 0xC9, 0xC, 0xD4, 0xC, 0xD6, 0xC, 0xDD, 0xC, 0xE1, 0x0, 0x2, 0x2, 0x59, 0x0, 0x7, 0x0, 0x7, 0x0, 0x19, 0x0, 0xC, 0x0, 0xC, 0x0, 0x19, 0x0, 0x11, 0x0, 0x11, 0x0, 0x21, 0x0, 0x12, 0x0, 0x12, 0x0, 0x25, 0x0, 0x13, 0x0, 0x13, 0x0, 0x21, 0x0, 0x26, 0x0, 0x26, 0x0, 0x2, 0x0, 0x27, 0x0, 0x27, 0x0, 0x1C, 0x0, 0x28, 0x0, 0x28, 0x0, 0x13, 0x0, 0x29, 0x0, 0x29, 0x0, 0x1, 0x0, 0x2A, 0x0, 0x2A, 0x0, 0x5, 0x0, 0x2F, 0x0, 0x2F, 0x0, 0xA, 0x0, 0x30, 0x0, 0x30, 0x0, 0xB, 0x0, 0x31, 0x0, 0x31, 0x0, 0x18, 0x0, 0x34, 0x0, 0x34, 0x0, 0x1, 0x0, 0x35, 0x0, 0x35, 0x0, 0x16, 0x0, 0x39, 0x0, 0x39, 0x0, 0xE, 0x0, 0x3A, 0x0, 0x3A, 0x0, 0xA, 0x0, 0x3B, 0x0, 0x3B, 0x0, 0x1D, 0x0, 0x3C, 0x0, 0x3C, 0x0, 0x1B, 0x0, 0x3D, 0x0, 0x3D, 0x0, 0x12, 0x0, 0x3E, 0x0, 0x3E, 0x0, 0xC, 0x0, 0x3F, 0x0, 0x3F, 0x0, 0x11, 0x0, 0x46, 0x0, 0x46, 0x0, 0x6, 0x0, 0x47, 0x0, 0x47, 0x0, 0x7, 0x0, 0x48, 0x0, 0x48, 0x0, 0x17, 0x0, 0x4A, 0x0, 0x4A, 0x0, 0x8, 0x0, 0x4D, 0x0, 0x4D, 0x0, 0x4, 0x0, 0x52, 0x0, 0x53, 0x0, 0x4, 0x0, 0x54, 0x0, 0x54, 0x0, 0x3, 0x0, 0x55, 0x0, 0x55, 0x0, 0x7, 0x0, 0x57, 0x0, 0x57, 0x0, 0x15, 0x0, 0x5B, 0x0, 0x5B, 0x0, 0x9, 0x0, 0x5D, 0x0, 0x5D, 0x0, 0x14, 0x0, 0x5E, 0x0, 0x5E, 0x0, 0x9, 0x0, 0x5F, 0x0, 0x5F, 0x0, 0x10, 0x0, 0x8B, 0x0, 0x8B, 0x0, 0x7, 0x0, 0x97, 0x0, 0x97, 0x0, 0x7, 0x0, 0x9A, 0x0, 0x9A, 0x0, 0x7, 0x0, 0x9C, 0x0, 0x9C, 0x0, 0x7, 0x0, 0x9D, 0x0, 0x9D, 0x0, 0x1, 0x0, 0xA0, 0x0, 0xA1, 0x0, 0x1, 0x0, 0xA6, 0x0, 0xA6, 0x0, 0x1, 0x0, 0xAE, 0x0, 0xAE, 0x0, 0xB, 0x0, 0xB8, 0x0, 0xB8, 0x0, 0x16, 0x0, 0xC2, 0x0, 0xC2, 0x0, 0xE, 0x0, 0xCA, 0x0, 0xCA, 0x0, 0x10, 0x0, 0xD8, 0x0, 0xD8, 0x0, 0x11, 0x0, 0xD9, 0x0, 0xDA, 0x0, 0x10, 0x0, 0xED, 0x0, 0xEE, 0x0, 0x7, 0x0, 0xF2, 0x0, 0xF2, 0x0, 0x18, 0x0, 0xF8, 0x0, 0xF8, 0x0, 0x1C, 0x0, 0xFA, 0x0, 0xFA, 0x0, 0x2, 0x1, 0x2, 0x1, 0x2, 0x0, 0x15, 0x1, 0x3, 0x1, 0x3, 0x0, 0xC, 0x2, 0x29, 0x2, 0x29, 0x0, 0x7, 0x2, 0x2A, 0x2, 0x2A, 0x0, 0x17, 0x2, 0x2B, 0x2, 0x2B, 0x0, 0x7, 0x2, 0x30, 0x2, 0x30, 0x0, 0x22, 0x2, 0x31, 0x2, 0x31, 0x0, 0x2, 0x2, 0x32, 0x2, 0x32, 0x0, 0x1, 0x2, 0x33, 0x2, 0x33, 0x0, 0x2, 0x2, 0x3C, 0x2, 0x3C, 0x0, 0x9, 0x2, 0x40, 0x2, 0x40, 0x0, 0x4, 0x2, 0x46, 0x2, 0x46, 0x0, 0x7, 0x2, 0x4E, 0x2, 0x4E, 0x0, 0xB, 0x2, 0x55, 0x2, 0x55, 0x0, 0x1, 0x2, 0x56, 0x2, 0x56, 0x0, 0x3, 0x2, 0x60, 0x2, 0x60, 0x0, 0x7, 0x2, 0x62, 0x2, 0x62, 0x0, 0x7, 0x2, 0x64, 0x2, 0x64, 0x0, 0x7, 0x2, 0x65, 0x2, 0x65, 0x0, 0x1, 0x2, 0x66, 0x2, 0x66, 0x0, 0x13, 0x2, 0x67, 0x2, 0x67, 0x0, 0x1, 0x2, 0x6A, 0x2, 0x6B, 0x0, 0x20, 0x2, 0x70, 0x2, 0x70, 0x0, 0x12, 0x2, 0x74, 0x2, 0x74, 0x0, 0x26, 0x2, 0x7A, 0x2, 0x7A, 0x0, 0x20, 0x2, 0x7C, 0x2, 0x7C, 0x0, 0x20, 0x2, 0x82, 0x2, 0x82, 0x0, 0x1A, 0x2, 0x84, 0x2, 0x84, 0x0, 0x14, 0x2, 0x8D, 0x2, 0x8D, 0x0, 0x7, 0x2, 0x92, 0x2, 0x92, 0x0, 0x1F, 0x2, 0x94, 0x2, 0x94, 0x0, 0x1F, 0x2, 0x95, 0x2, 0x95, 0x0, 0x7, 0x2, 0x9A, 0x2, 0x9B, 0x0, 0x1F, 0x2, 0xA0, 0x2, 0xA0, 0x0, 0x1F, 0x2, 0xA3, 0x2, 0xA3, 0x0, 0x2, 0x2, 0xAE, 0x2, 0xAE, 0x0, 0x3, 0x2, 0xAF, 0x2, 0xAF, 0x0, 0x1D, 0x2, 0xB0, 0x2, 0xB0, 0x0, 0x9, 0x2, 0xC5, 0x2, 0xC5, 0x0, 0x7, 0x2, 0xC6, 0x2, 0xC6, 0x0, 0x22, 0x2, 0xC7, 0x2, 0xC7, 0x0, 0x1A, 0x2, 0xCA, 0x2, 0xCA, 0x0, 0x12, 0x2, 0xCB, 0x2, 0xCB, 0x0, 0x14, 0x2, 0xCC, 0x2, 0xCC, 0x0, 0xB, 0x2, 0xCE, 0x2, 0xCE, 0x0, 0xB, 0x2, 0xD0, 0x2, 0xD0, 0x0, 0xB, 0x2, 0xDA, 0x2, 0xDA, 0x0, 0x12, 0x2, 0xDB, 0x2, 0xDB, 0x0, 0x14, 0x2, 0xEF, 0x2, 0xEF, 0x0, 0x1, 0x2, 0xF3, 0x2, 0xF3, 0x0, 0x1A, 0x2, 0xF4, 0x2, 0xF4, 0x0, 0x12, 0x2, 0xF5, 0x2, 0xF5, 0x0, 0x14, 0x3, 0x8, 0x3, 0x8, 0x0, 0x12, 0x3, 0x9, 0x3, 0x9, 0x0, 0x14, 0x3, 0xA, 0x3, 0xA, 0x0, 0x12, 0x3, 0xB, 0x3, 0xB, 0x0, 0x14, 0x3, 0xC, 0x3, 0xC, 0x0, 0x5, 0x3, 0xD, 0x3, 0xD, 0x0, 0x8, 0x3, 0xE, 0x3, 0xE, 0x0, 0xB, 0x3, 0x1A, 0x3, 0x1A, 0x0, 0xB, 0x4, 0x34, 0x4, 0x34, 0x0, 0x18, 0x4, 0x5E, 0x4, 0x5F, 0x0, 0x25, 0x4, 0x62, 0x4, 0x63, 0x0, 0x19, 0x4, 0x64, 0x4, 0x64, 0x0, 0x21, 0x4, 0x65, 0x4, 0x67, 0x0, 0x19, 0x4, 0x68, 0x4, 0x68, 0x0, 0x21, 0x4, 0x6F, 0x4, 0x70, 0x0, 0x21, 0x5, 0x59, 0x5, 0x59, 0x0, 0x16, 0x5, 0x5B, 0x5, 0x5B, 0x0, 0x6, 0x5, 0x5E, 0x5, 0x5E, 0x0, 0x4, 0x5, 0x5F, 0x5, 0x5F, 0x0, 0xB, 0x5, 0x61, 0x5, 0x61, 0x0, 0x11, 0x5, 0x62, 0x5, 0x62, 0x0, 0x10, 0x5, 0x66, 0x5, 0x66, 0x0, 0x1, 0x5, 0x6A, 0x5, 0x6A, 0x0, 0x9, 0x5, 0x70, 0x5, 0x70, 0x0, 0x3, 0x5, 0xD9, 0x5, 0xD9, 0x0, 0x11, 0x5, 0xDA, 0x5, 0xDA, 0x0, 0x10, 0x5, 0xDB, 0x5, 0xDB, 0x0, 0x11, 0x5, 0xDC, 0x5, 0xDC, 0x0, 0x10, 0x5, 0xE5, 0x5, 0xE5, 0x0, 0x1, 0x5, 0xE7, 0x5, 0xE7, 0x0, 0x20, 0x5, 0xE8, 0x5, 0xE8, 0x0, 0x1F, 0x5, 0xEB, 0x5, 0xEB, 0x0, 0x20, 0x5, 0xEC, 0x5, 0xEC, 0x0, 0x1F, 0x5, 0xEF, 0x5, 0xEF, 0x0, 0x2, 0x5, 0xF0, 0x5, 0xF0, 0x0, 0x6, 0x5, 0xF1, 0x5, 0xF1, 0x0, 0x2, 0x5, 0xFD, 0x5, 0xFD, 0x0, 0xE, 0x5, 0xFE, 0x5, 0xFE, 0x0, 0x1A, 0x5, 0xFF, 0x5, 0xFF, 0x0, 0xE, 0x6, 0x0, 0x6, 0x0, 0x0, 0x1A, 0x6, 0x1, 0x6, 0x1, 0x0, 0x1, 0x6, 0x2, 0x6, 0x2, 0x0, 0x3, 0x6, 0x3, 0x6, 0x3, 0x0, 0x1, 0x6, 0x4, 0x6, 0x4, 0x0, 0x3, 0x6, 0x5, 0x6, 0x5, 0x0, 0x1, 0x6, 0x6, 0x6, 0x6, 0x0, 0x3, 0x6, 0x25, 0x6, 0x25, 0x0, 0xE, 0x6, 0x26, 0x6, 0x26, 0x0, 0x1A, 0x6, 0x29, 0x6, 0x29, 0x0, 0xE, 0x6, 0x2A, 0x6, 0x2A, 0x0, 0x1A, 0x6, 0x2E, 0x6, 0x2E, 0x0, 0x4, 0x6, 0x31, 0x6, 0x31, 0x0, 0x1, 0x6, 0x32, 0x6, 0x32, 0x0, 0x3, 0x6, 0x33, 0x6, 0x33, 0x0, 0x1, 0x6, 0x5F, 0x6, 0x5F, 0x0, 0x4, 0x6, 0x6A, 0x6, 0x6A, 0x0, 0x2, 0x6, 0x6C, 0x6, 0x6C, 0x0, 0x1, 0x6, 0x6E, 0x6, 0x6E, 0x0, 0xA, 0x6, 0x70, 0x6, 0x70, 0x0, 0x1D, 0x6, 0x71, 0x6, 0x71, 0x0, 0x9, 0x6, 0x72, 0x6, 0x72, 0x0, 0x1D, 0x6, 0x73, 0x6, 0x73, 0x0, 0x9, 0x6, 0x75, 0x6, 0x75, 0x0, 0x9, 0x6, 0x76, 0x6, 0x76, 0x0, 0x1, 0x6, 0x78, 0x6, 0x78, 0x0, 0xB, 0x6, 0x7A, 0x6, 0x7A, 0x0, 0xB, 0x6, 0x7C, 0x6, 0x7C, 0x0, 0xB, 0x6, 0x86, 0x6, 0x86, 0x0, 0x1, 0x6, 0x87, 0x6, 0x87, 0x0, 0x3, 0x6, 0x88, 0x6, 0x88, 0x0, 0x16, 0x6, 0x89, 0x6, 0x89, 0x0, 0x7, 0x6, 0x8A, 0x6, 0x8A, 0x0, 0x16, 0x6, 0x8B, 0x6, 0x8B, 0x0, 0x7, 0x6, 0x8C, 0x6, 0x8C, 0x0, 0x16, 0x6, 0x8D, 0x6, 0x8D, 0x0, 0x7, 0x6, 0x96, 0x6, 0x96, 0x0, 0x1D, 0x6, 0x97, 0x6, 0x97, 0x0, 0x9, 0x6, 0x9D, 0x6, 0x9D, 0x0, 0x7, 0x6, 0x9F, 0x6, 0x9F, 0x0, 0x7, 0x6, 0xBB, 0x6, 0xBB, 0x0, 0x4, 0x6, 0xC9, 0x6, 0xC9, 0x0, 0x13, 0x6, 0xCD, 0x6, 0xCD, 0x0, 0x1C, 0x6, 0xCE, 0x6, 0xCE, 0x0, 0x7, 0x7, 0x54, 0x7, 0x54, 0x0, 0x23, 0x7, 0x59, 0x7, 0x59, 0x0, 0xD, 0x7, 0x5C, 0x7, 0x5C, 0x0, 0x24, 0x7, 0x5D, 0x7, 0x5D, 0x0, 0x1E, 0x7, 0x67, 0x7, 0x67, 0x0, 0xF, 0x7, 0x68, 0x7, 0x68, 0x0, 0xD, 0x7, 0x69, 0x7, 0x69, 0x0, 0xF, 0x7, 0x7B, 0x7, 0x7B, 0x0, 0x1E, 0x7, 0x8A, 0x7, 0x8C, 0x0, 0x1E, 0x7, 0xAE, 0x7, 0xAE, 0x0, 0xD, 0x7, 0xB1, 0x7, 0xB1, 0x0, 0xF, 0x7, 0xCF, 0x7, 0xCF, 0x0, 0x13, 0x7, 0xD1, 0x7, 0xD2, 0x0, 0x1, 0x8, 0xC7, 0x8, 0xC7, 0x0, 0x25, 0x8, 0xC8, 0x8, 0xC9, 0x0, 0x1, 0x8, 0xCB, 0x8, 0xCB, 0x0, 0xE, 0x8, 0xCD, 0x8, 0xD3, 0x0, 0x2, 0x8, 0xD4, 0x8, 0xD4, 0x0, 0x13, 0x8, 0xD5, 0x8, 0xD8, 0x0, 0x5, 0x8, 0xDE, 0x8, 0xE2, 0x0, 0x1, 0x8, 0xE3, 0x8, 0xE6, 0x0, 0xA, 0x8, 0xE7, 0x8, 0xE7, 0x0, 0xC, 0x8, 0xE8, 0x8, 0xEE, 0x0, 0x6, 0x8, 0xEF, 0x8, 0xEF, 0x0, 0x17, 0x8, 0xF0, 0x8, 0xF3, 0x0, 0x8, 0x8, 0xF8, 0x8, 0xF8, 0x0, 0x4, 0x8, 0xF9, 0x8, 0xFD, 0x0, 0x3, 0x9, 0x2, 0x9, 0x3, 0x0, 0x9, 0x9, 0x4, 0x9, 0x4, 0x0, 0x2, 0x9, 0x5, 0x9, 0x5, 0x0, 0x6, 0x9, 0x6, 0x9, 0x6, 0x0, 0x2, 0x9, 0x7, 0x9, 0x7, 0x0, 0x6, 0x9, 0x8, 0x9, 0x8, 0x0, 0x2, 0x9, 0x9, 0x9, 0x9, 0x0, 0x6, 0x9, 0xA, 0x9, 0xA, 0x0, 0x13, 0x9, 0xB, 0x9, 0xB, 0x0, 0x17, 0x9, 0xC, 0x9, 0xC, 0x0, 0x13, 0x9, 0xD, 0x9, 0xD, 0x0, 0x17, 0x9, 0xE, 0x9, 0xE, 0x0, 0x13, 0x9, 0xF, 0x9, 0xF, 0x0, 0x17, 0x9, 0x10, 0x9, 0x10, 0x0, 0x13, 0x9, 0x11, 0x9, 0x11, 0x0, 0x17, 0x9, 0x12, 0x9, 0x12, 0x0, 0x1, 0x9, 0x14, 0x9, 0x14, 0x0, 0x5, 0x9, 0x15, 0x9, 0x15, 0x0, 0x8, 0x9, 0x16, 0x9, 0x16, 0x0, 0x5, 0x9, 0x17, 0x9, 0x17, 0x0, 0x8, 0x9, 0x18, 0x9, 0x18, 0x0, 0x5, 0x9, 0x19, 0x9, 0x19, 0x0, 0x8, 0x9, 0x1A, 0x9, 0x1A, 0x0, 0x5, 0x9, 0x1B, 0x9, 0x1B, 0x0, 0x8, 0x9, 0x1C, 0x9, 0x1C, 0x0, 0x5, 0x9, 0x1D, 0x9, 0x1D, 0x0, 0x8, 0x9, 0x27, 0x9, 0x27, 0x0, 0x4, 0x9, 0x33, 0x9, 0x33, 0x0, 0xA, 0x9, 0x35, 0x9, 0x35, 0x0, 0xB, 0x9, 0x37, 0x9, 0x37, 0x0, 0x18, 0x9, 0x39, 0x9, 0x39, 0x0, 0x18, 0x9, 0x3B, 0x9, 0x3B, 0x0, 0x18, 0x9, 0x3D, 0x9, 0x3D, 0x0, 0x18, 0x9, 0x40, 0x9, 0x40, 0x0, 0x4, 0x9, 0x42, 0x9, 0x42, 0x0, 0x4, 0x9, 0x44, 0x9, 0x45, 0x0, 0x4, 0x9, 0x46, 0x9, 0x46, 0x0, 0x1, 0x9, 0x47, 0x9, 0x47, 0x0, 0x3, 0x9, 0x48, 0x9, 0x48, 0x0, 0x1, 0x9, 0x49, 0x9, 0x49, 0x0, 0x3, 0x9, 0x4A, 0x9, 0x4A, 0x0, 0x1, 0x9, 0x4B, 0x9, 0x4B, 0x0, 0x3, 0x9, 0x4D, 0x9, 0x4D, 0x0, 0x15, 0x9, 0x4F, 0x9, 0x4F, 0x0, 0x15, 0x9, 0x51, 0x9, 0x51, 0x0, 0x15, 0x9, 0x5C, 0x9, 0x5C, 0x0, 0xE, 0x9, 0x5E, 0x9, 0x5E, 0x0, 0xE, 0x9, 0x60, 0x9, 0x60, 0x0, 0xE, 0x9, 0x62, 0x9, 0x62, 0x0, 0xA, 0x9, 0x64, 0x9, 0x64, 0x0, 0xA, 0x9, 0x66, 0x9, 0x66, 0x0, 0xA, 0x9, 0x68, 0x9, 0x68, 0x0, 0xA, 0x9, 0x6A, 0x9, 0x6A, 0x0, 0xA, 0x9, 0x6C, 0x9, 0x6C, 0x0, 0xA, 0x9, 0x6E, 0x9, 0x6E, 0x0, 0x1B, 0x9, 0x70, 0x9, 0x70, 0x0, 0xC, 0x9, 0x71, 0x9, 0x71, 0x0, 0x9, 0x9, 0x72, 0x9, 0x72, 0x0, 0xC, 0x9, 0x73, 0x9, 0x73, 0x0, 0x11, 0x9, 0x74, 0x9, 0x74, 0x0, 0x10, 0x9, 0x75, 0x9, 0x75, 0x0, 0x11, 0x9, 0x76, 0x9, 0x76, 0x0, 0x10, 0x9, 0x77, 0x9, 0x77, 0x0, 0x11, 0x9, 0x78, 0x9, 0x78, 0x0, 0x10, 0x9, 0x7D, 0x9, 0x7E, 0x0, 0xD, 0x9, 0x7F, 0x9, 0x7F, 0x0, 0x23, 0x9, 0x80, 0x9, 0x86, 0x0, 0xF, 0x9, 0x91, 0x9, 0x95, 0x0, 0xD, 0x9, 0x9B, 0x9, 0x9D, 0x0, 0xF, 0x9, 0xA2, 0x9, 0xA2, 0x0, 0xD, 0x9, 0xB3, 0x9, 0xB3, 0x0, 0x1E, 0x9, 0xB4, 0x9, 0xB7, 0x0, 0x24, 0x9, 0xBB, 0x9, 0xBE, 0x0, 0xD, 0x9, 0xC7, 0x9, 0xC7, 0x0, 0x23, 0x9, 0xD5, 0x9, 0xD5, 0x0, 0x2, 0x9, 0xD6, 0x9, 0xD6, 0x0, 0x5, 0x9, 0xD9, 0x9, 0xD9, 0x0, 0x1, 0x9, 0xDA, 0x9, 0xDA, 0x0, 0xC, 0x9, 0xDD, 0x9, 0xDD, 0x0, 0x2, 0x9, 0xDE, 0x9, 0xDE, 0x0, 0x1C, 0x9, 0xDF, 0x9, 0xDF, 0x0, 0x5, 0x9, 0xE0, 0x9, 0xE0, 0x0, 0x11, 0x9, 0xE3, 0x9, 0xE3, 0x0, 0xB, 0x9, 0xE6, 0x9, 0xE6, 0x0, 0x1, 0x9, 0xE7, 0x9, 0xE7, 0x0, 0x16, 0x9, 0xE8, 0x9, 0xE8, 0x0, 0xE, 0x9, 0xE9, 0x9, 0xE9, 0x0, 0xC, 0x9, 0xEA, 0x9, 0xEA, 0x0, 0x12, 0x9, 0xEC, 0x9, 0xEC, 0x0, 0xC, 0x9, 0xEF, 0x9, 0xEF, 0x0, 0x4, 0x9, 0xF3, 0x9, 0xF3, 0x0, 0x3, 0x9, 0xF5, 0x9, 0xF5, 0x0, 0x9, 0x9, 0xF9, 0x9, 0xF9, 0x0, 0x3, 0x9, 0xFC, 0x9, 0xFC, 0x0, 0x5, 0x9, 0xFD, 0x9, 0xFD, 0x0, 0x22, 0xA, 0x1, 0xA, 0x1, 0x0, 0xA, 0xA, 0x2, 0xA, 0x3, 0x0, 0xB, 0xA, 0x4, 0xA, 0x4, 0x0, 0x26, 0xA, 0x5, 0xA, 0x5, 0x0, 0x2, 0xA, 0x6, 0xA, 0x6, 0x0, 0x1C, 0xA, 0x7, 0xA, 0x7, 0x0, 0x22, 0xA, 0x8, 0xA, 0x8, 0x0, 0x5, 0xA, 0xC, 0xA, 0xC, 0x0, 0x1, 0xA, 0xE, 0xA, 0xE, 0x0, 0x16, 0xA, 0xF, 0xA, 0xF, 0x0, 0x13, 0xA, 0x10, 0xA, 0x10, 0x0, 0xE, 0xA, 0x11, 0xA, 0x11, 0x0, 0x12, 0xA, 0x12, 0xA, 0x12, 0x0, 0x6, 0xA, 0x13, 0xA, 0x13, 0x0, 0x8, 0xA, 0x15, 0xA, 0x15, 0x0, 0x3, 0xA, 0x16, 0xA, 0x16, 0x0, 0x7, 0xA, 0x17, 0xA, 0x17, 0x0, 0x17, 0xA, 0x18, 0xA, 0x18, 0x0, 0x9, 0xA, 0x19, 0xA, 0x19, 0x0, 0x14, 0xA, 0x1A, 0xA, 0x1A, 0x0, 0x8, 0xA, 0x1B, 0xA, 0x1B, 0x0, 0x1A, 0xA, 0x21, 0xA, 0x21, 0x0, 0x9, 0xA, 0x22, 0xA, 0x22, 0x0, 0x1B, 0xA, 0x24, 0xA, 0x24, 0x0, 0x1B, 0xA, 0x26, 0xA, 0x26, 0x0, 0x1B, 0xA, 0x28, 0xA, 0x28, 0x0, 0xC, 0xA, 0x29, 0xA, 0x29, 0x0, 0x9, 0xA, 0x2A, 0xA, 0x2B, 0x0, 0x19, 0xA, 0x2E, 0xA, 0x2E, 0x0, 0x19, 0xA, 0x30, 0xA, 0x30, 0x0, 0x4, 0xA, 0x31, 0xA, 0x31, 0x0, 0x2, 0xA, 0x32, 0xA, 0x32, 0x0, 0x6, 0xA, 0x33, 0xA, 0x33, 0x0, 0x5, 0xA, 0x35, 0xA, 0x35, 0x0, 0x8, 0xA, 0x39, 0xA, 0x39, 0x0, 0x1D, 0xA, 0x3A, 0xA, 0x3A, 0x0, 0x9, 0xA, 0x3F, 0xA, 0x3F, 0x0, 0x13, 0xA, 0x40, 0xA, 0x40, 0x0, 0x17, 0xA, 0x41, 0xA, 0x41, 0x0, 0xC, 0xA, 0x42, 0xA, 0x42, 0x0, 0x9, 0xA, 0x44, 0xA, 0x44, 0x0, 0x12, 0xA, 0x45, 0xA, 0x45, 0x0, 0x14, 0xA, 0x47, 0xA, 0x47, 0x0, 0x2, 0xA, 0x48, 0xA, 0x48, 0x0, 0x6, 0xA, 0x49, 0xA, 0x49, 0x0, 0x2, 0xA, 0x4A, 0xA, 0x4A, 0x0, 0x6, 0xA, 0x4D, 0xA, 0x4D, 0x0, 0x5, 0xA, 0x4E, 0xA, 0x4E, 0x0, 0x8, 0xA, 0x50, 0xA, 0x51, 0x0, 0x8, 0xA, 0x52, 0xA, 0x52, 0x0, 0x12, 0xA, 0x53, 0xA, 0x53, 0x0, 0x14, 0xA, 0x5A, 0xA, 0x5A, 0x0, 0x1, 0xA, 0x5B, 0xA, 0x5B, 0x0, 0x3, 0xA, 0x5E, 0xA, 0x5E, 0x0, 0x1, 0xA, 0x60, 0xA, 0x60, 0x0, 0x3, 0xA, 0x62, 0xA, 0x62, 0x0, 0x7, 0xA, 0x63, 0xA, 0x63, 0x0, 0x26, 0xA, 0x64, 0xA, 0x64, 0x0, 0x9, 0xA, 0x65, 0xA, 0x65, 0x0, 0x26, 0xA, 0x66, 0xA, 0x66, 0x0, 0x9, 0xA, 0x67, 0xA, 0x67, 0x0, 0x26, 0xA, 0x68, 0xA, 0x68, 0x0, 0x9, 0xA, 0x6E, 0xA, 0x6E, 0x0, 0x2, 0xA, 0x6F, 0xA, 0x6F, 0x0, 0x6, 0xA, 0x70, 0xA, 0x70, 0x0, 0x2, 0xA, 0x71, 0xA, 0x71, 0x0, 0x6, 0xA, 0x72, 0xA, 0x72, 0x0, 0x2, 0xA, 0x73, 0xA, 0x73, 0x0, 0x6, 0xA, 0x74, 0xA, 0x74, 0x0, 0x2, 0xA, 0x75, 0xA, 0x75, 0x0, 0x6, 0xA, 0x76, 0xA, 0x76, 0x0, 0x2, 0xA, 0x77, 0xA, 0x77, 0x0, 0x6, 0xA, 0x78, 0xA, 0x78, 0x0, 0x2, 0xA, 0x79, 0xA, 0x79, 0x0, 0x6, 0xA, 0x7A, 0xA, 0x7A, 0x0, 0x2, 0xA, 0x7B, 0xA, 0x7B, 0x0, 0x6, 0xA, 0x7C, 0xA, 0x7C, 0x0, 0x2, 0xA, 0x7D, 0xA, 0x7D, 0x0, 0x6, 0xA, 0x7E, 0xA, 0x7E, 0x0, 0x2, 0xA, 0x7F, 0xA, 0x7F, 0x0, 0x6, 0xA, 0x80, 0xA, 0x80, 0x0, 0x2, 0xA, 0x81, 0xA, 0x81, 0x0, 0x6, 0xA, 0x82, 0xA, 0x82, 0x0, 0x2, 0xA, 0x83, 0xA, 0x83, 0x0, 0x6, 0xA, 0x84, 0xA, 0x84, 0x0, 0x2, 0xA, 0x85, 0xA, 0x85, 0x0, 0x6, 0xA, 0x86, 0xA, 0x86, 0x0, 0x5, 0xA, 0x87, 0xA, 0x87, 0x0, 0x8, 0xA, 0x88, 0xA, 0x88, 0x0, 0x5, 0xA, 0x89, 0xA, 0x89, 0x0, 0x8, 0xA, 0x8A, 0xA, 0x8A, 0x0, 0x5, 0xA, 0x8B, 0xA, 0x8B, 0x0, 0x8, 0xA, 0x8C, 0xA, 0x8C, 0x0, 0x5, 0xA, 0x8D, 0xA, 0x8D, 0x0, 0x8, 0xA, 0x8E, 0xA, 0x8E, 0x0, 0x5, 0xA, 0x8F, 0xA, 0x8F, 0x0, 0x8, 0xA, 0x90, 0xA, 0x90, 0x0, 0x5, 0xA, 0x91, 0xA, 0x91, 0x0, 0x8, 0xA, 0x92, 0xA, 0x92, 0x0, 0x5, 0xA, 0x93, 0xA, 0x93, 0x0, 0x8, 0xA, 0x94, 0xA, 0x94, 0x0, 0x5, 0xA, 0x95, 0xA, 0x95, 0x0, 0x8, 0xA, 0x9A, 0xA, 0x9A, 0x0, 0x1, 0xA, 0x9B, 0xA, 0x9B, 0x0, 0x3, 0xA, 0x9C, 0xA, 0x9C, 0x0, 0x1, 0xA, 0x9D, 0xA, 0x9D, 0x0, 0x3, 0xA, 0x9E, 0xA, 0x9E, 0x0, 0x1, 0xA, 0x9F, 0xA, 0x9F, 0x0, 0x3, 0xA, 0xA0, 0xA, 0xA0, 0x0, 0x1, 0xA, 0xA1, 0xA, 0xA1, 0x0, 0x3, 0xA, 0xA2, 0xA, 0xA2, 0x0, 0x1, 0xA, 0xA3, 0xA, 0xA3, 0x0, 0x3, 0xA, 0xA4, 0xA, 0xA4, 0x0, 0x1, 0xA, 0xA5, 0xA, 0xA5, 0x0, 0x3, 0xA, 0xA6, 0xA, 0xA6, 0x0, 0x1, 0xA, 0xA7, 0xA, 0xA7, 0x0, 0x3, 0xA, 0xAF, 0xA, 0xAF, 0x0, 0x3, 0xA, 0xB2, 0xA, 0xB2, 0x0, 0xA, 0xA, 0xB4, 0xA, 0xB4, 0x0, 0xA, 0xA, 0xC0, 0xA, 0xC0, 0x0, 0xC, 0xA, 0xC1, 0xA, 0xC1, 0x0, 0x9, 0xA, 0xC2, 0xA, 0xC2, 0x0, 0xC, 0xA, 0xC3, 0xA, 0xC3, 0x0, 0x9, 0xA, 0xC4, 0xA, 0xC4, 0x0, 0xC, 0xA, 0xC5, 0xA, 0xC5, 0x0, 0x9, 0xA, 0xC7, 0xA, 0xC7, 0x0, 0xE, 0xA, 0xCB, 0xA, 0xCB, 0x0, 0x22, 0xA, 0xCC, 0xA, 0xCC, 0x0, 0x1A, 0xA, 0xCF, 0xA, 0xCF, 0x0, 0x4, 0xA, 0xD1, 0xA, 0xD1, 0x0, 0x20, 0xA, 0xD2, 0xA, 0xD2, 0x0, 0x22, 0xA, 0xD4, 0xA, 0xD4, 0x0, 0xB, 0xA, 0xD6, 0xA, 0xD6, 0x0, 0xC, 0xA, 0xDC, 0xA, 0xDC, 0x0, 0x25, 0xA, 0xEE, 0xA, 0xEE, 0x0, 0x2, 0xA, 0xEF, 0xA, 0xEF, 0x0, 0x6, 0xA, 0xF2, 0xA, 0xF2, 0x0, 0x1, 0xA, 0xF3, 0xA, 0xF3, 0x0, 0x3, 0xA, 0xF4, 0xA, 0xF4, 0x0, 0xA, 0xA, 0xF6, 0xA, 0xF6, 0x0, 0xA, 0xA, 0xF8, 0xA, 0xF8, 0x0, 0xA, 0xA, 0xFA, 0xA, 0xFA, 0x0, 0xA, 0xA, 0xFC, 0xA, 0xFC, 0x0, 0xA, 0xA, 0xFF, 0xA, 0xFF, 0x0, 0x2, 0xB, 0x0, 0xB, 0x0, 0x0, 0x6, 0xB, 0x1, 0xB, 0x1, 0x0, 0x2, 0xB, 0x2, 0xB, 0x2, 0x0, 0x6, 0xB, 0x4, 0xB, 0x4, 0x0, 0x8, 0xB, 0x9, 0xB, 0x9, 0x0, 0x1, 0xB, 0xA, 0xB, 0xA, 0x0, 0x3, 0xB, 0xB, 0xB, 0xB, 0x0, 0x1, 0xB, 0xC, 0xB, 0xC, 0x0, 0x3, 0xB, 0xD, 0xB, 0xD, 0x0, 0x11, 0xB, 0xE, 0xB, 0xF, 0x0, 0x10, 0xB, 0x13, 0xB, 0x13, 0x0, 0x4, 0xB, 0x14, 0xB, 0x14, 0x0, 0x2, 0xB, 0x15, 0xB, 0x15, 0x0, 0x6, 0xB, 0x16, 0xB, 0x16, 0x0, 0x2, 0xB, 0x17, 0xB, 0x17, 0x0, 0x6, 0xB, 0x18, 0xB, 0x18, 0x0, 0x5, 0xB, 0x1A, 0xB, 0x1A, 0x0, 0x5, 0xB, 0x20, 0xB, 0x20, 0x0, 0x1, 0xB, 0x21, 0xB, 0x21, 0x0, 0x3, 0xB, 0x22, 0xB, 0x22, 0x0, 0x1, 0xB, 0x23, 0xB, 0x23, 0x0, 0x3, 0xB, 0x25, 0xB, 0x25, 0x0, 0x15, 0xB, 0x27, 0xB, 0x27, 0x0, 0x15, 0xB, 0x2E, 0xB, 0x2E, 0x0, 0x2, 0xB, 0x2F, 0xB, 0x2F, 0x0, 0x6, 0xB, 0x30, 0xB, 0x30, 0x0, 0x5, 0xB, 0x32, 0xB, 0x32, 0x0, 0x1, 0xB, 0x33, 0xB, 0x33, 0x0, 0x3, 0xB, 0x34, 0xB, 0x34, 0x0, 0x1, 0xB, 0x35, 0xB, 0x35, 0x0, 0x3, 0xB, 0x36, 0xB, 0x36, 0x0, 0x1, 0xB, 0x37, 0xB, 0x37, 0x0, 0x3, 0xB, 0x38, 0xB, 0x38, 0x0, 0x1, 0xB, 0x39, 0xB, 0x39, 0x0, 0x3, 0xB, 0x3B, 0xB, 0x3B, 0x0, 0x9, 0xB, 0x3C, 0xB, 0x3C, 0x0, 0x3, 0xB, 0x42, 0xB, 0x42, 0x0, 0x17, 0xB, 0x46, 0xB, 0x46, 0x0, 0x7, 0xB, 0x47, 0xB, 0x47, 0x0, 0x13, 0xB, 0x4B, 0xB, 0x4B, 0x0, 0x1B, 0xB, 0x4D, 0xB, 0x4D, 0x0, 0x1C, 0xB, 0x4E, 0xB, 0x4E, 0x0, 0x7, 0xB, 0x4F, 0xB, 0x4F, 0x0, 0x1C, 0xB, 0x50, 0xB, 0x50, 0x0, 0x7, 0xB, 0x51, 0xB, 0x51, 0x0, 0x1C, 0xB, 0x52, 0xB, 0x52, 0x0, 0x7, 0xB, 0x53, 0xB, 0x53, 0x0, 0x13, 0xB, 0x54, 0xB, 0x54, 0x0, 0x17, 0xB, 0x55, 0xB, 0x55, 0x0, 0x1, 0xB, 0x57, 0xB, 0x57, 0x0, 0x1, 0xB, 0x59, 0xB, 0x59, 0x0, 0x1, 0xB, 0x5B, 0xB, 0x5B, 0x0, 0x1, 0xB, 0x5D, 0xB, 0x5D, 0x0, 0x1, 0xB, 0x5F, 0xB, 0x5F, 0x0, 0x5, 0xB, 0x60, 0xB, 0x60, 0x0, 0x8, 0xB, 0x61, 0xB, 0x61, 0x0, 0x5, 0xB, 0x62, 0xB, 0x62, 0x0, 0x8, 0xB, 0x63, 0xB, 0x63, 0x0, 0x5, 0xB, 0x64, 0xB, 0x64, 0x0, 0x8, 0xB, 0x65, 0xB, 0x65, 0x0, 0x5, 0xB, 0x66, 0xB, 0x66, 0x0, 0x8, 0xB, 0x67, 0xB, 0x67, 0x0, 0x5, 0xB, 0x68, 0xB, 0x68, 0x0, 0x8, 0xB, 0x6E, 0xB, 0x6E, 0x0, 0x4, 0xB, 0x70, 0xB, 0x70, 0x0, 0x4, 0xB, 0x72, 0xB, 0x72, 0x0, 0x4, 0xB, 0x74, 0xB, 0x74, 0x0, 0x4, 0xB, 0x75, 0xB, 0x75, 0x0, 0xB, 0xB, 0x77, 0xB, 0x77, 0x0, 0xB, 0xB, 0x79, 0xB, 0x79, 0x0, 0xB, 0xB, 0x7B, 0xB, 0x7B, 0x0, 0x18, 0xB, 0x7D, 0xB, 0x7D, 0x0, 0x18, 0xB, 0x7F, 0xB, 0x7F, 0x0, 0x18, 0xB, 0x81, 0xB, 0x81, 0x0, 0x18, 0xB, 0x84, 0xB, 0x84, 0x0, 0x4, 0xB, 0x86, 0xB, 0x86, 0x0, 0x4, 0xB, 0x88, 0xB, 0x88, 0x0, 0x4, 0xB, 0x8A, 0xB, 0x8A, 0x0, 0x4, 0xB, 0x8C, 0xB, 0x8C, 0x0, 0x4, 0xB, 0x8E, 0xB, 0x8E, 0x0, 0x4, 0xB, 0x8F, 0xB, 0x8F, 0x0, 0x1, 0xB, 0x90, 0xB, 0x90, 0x0, 0x3, 0xB, 0x91, 0xB, 0x91, 0x0, 0x1, 0xB, 0x92, 0xB, 0x92, 0x0, 0x3, 0xB, 0x93, 0xB, 0x93, 0x0, 0x1, 0xB, 0x94, 0xB, 0x94, 0x0, 0x3, 0xB, 0x95, 0xB, 0x95, 0x0, 0x1, 0xB, 0x96, 0xB, 0x96, 0x0, 0x3, 0xB, 0x97, 0xB, 0x97, 0x0, 0x16, 0xB, 0x98, 0xB, 0x98, 0x0, 0x7, 0xB, 0x99, 0xB, 0x99, 0x0, 0x16, 0xB, 0x9A, 0xB, 0x9A, 0x0, 0x7, 0xB, 0x9C, 0xB, 0x9C, 0x0, 0x15, 0xB, 0x9E, 0xB, 0x9E, 0x0, 0x15, 0xB, 0xA0, 0xB, 0xA0, 0x0, 0x15, 0xB, 0xA2, 0xB, 0xA2, 0x0, 0x15, 0xB, 0xAD, 0xB, 0xAD, 0x0, 0xE, 0xB, 0xAF, 0xB, 0xAF, 0x0, 0xE, 0xB, 0xB1, 0xB, 0xB1, 0x0, 0xE, 0xB, 0xB3, 0xB, 0xB3, 0x0, 0xE, 0xB, 0xB5, 0xB, 0xB5, 0x0, 0xA, 0xB, 0xB7, 0xB, 0xB7, 0x0, 0xA, 0xB, 0xB9, 0xB, 0xB9, 0x0, 0xA, 0xB, 0xBB, 0xB, 0xBB, 0x0, 0xA, 0xB, 0xBD, 0xB, 0xBD, 0x0, 0xA, 0xB, 0xBF, 0xB, 0xBF, 0x0, 0x1D, 0xB, 0xC0, 0xB, 0xC0, 0x0, 0x9, 0xB, 0xC1, 0xB, 0xC1, 0x0, 0x1D, 0xB, 0xC2, 0xB, 0xC2, 0x0, 0x9, 0xB, 0xC3, 0xB, 0xC3, 0x0, 0x1B, 0xB, 0xC5, 0xB, 0xC5, 0x0, 0x1B, 0xB, 0xC7, 0xB, 0xC7, 0x0, 0x12, 0xB, 0xC8, 0xB, 0xC8, 0x0, 0x14, 0xB, 0xC9, 0xB, 0xC9, 0x0, 0x12, 0xB, 0xCA, 0xB, 0xCA, 0x0, 0x14, 0xB, 0xCB, 0xB, 0xCB, 0x0, 0xC, 0xB, 0xCC, 0xB, 0xCC, 0x0, 0x9, 0xB, 0xCD, 0xB, 0xCD, 0x0, 0x11, 0xB, 0xCE, 0xB, 0xCE, 0x0, 0x10, 0xB, 0xCF, 0xB, 0xCF, 0x0, 0x11, 0xB, 0xD0, 0xB, 0xD0, 0x0, 0x10, 0xB, 0xD1, 0xB, 0xD1, 0x0, 0x11, 0xB, 0xD2, 0xB, 0xD2, 0x0, 0x10, 0xB, 0xD6, 0xB, 0xD6, 0x0, 0x9, 0xB, 0xE0, 0xB, 0xE7, 0x0, 0x2, 0xB, 0xEE, 0xB, 0xF3, 0x0, 0x5, 0xB, 0xF4, 0xB, 0xFB, 0x0, 0x4, 0xC, 0x14, 0xC, 0x19, 0x0, 0x3, 0xC, 0x1A, 0xC, 0x1F, 0x0, 0x1, 0xC, 0x40, 0xC, 0x41, 0x0, 0x4, 0xC, 0x44, 0xC, 0x45, 0x0, 0x3, 0xC, 0x52, 0xC, 0x59, 0x0, 0x2, 0xC, 0x81, 0xC, 0x85, 0x0, 0x2, 0xC, 0x86, 0xC, 0x8A, 0x0, 0x4, 0xC, 0x8B, 0xC, 0x8C, 0x0, 0x5, 0xC, 0x9E, 0xC, 0x9F, 0x0, 0x7, 0xC, 0xA2, 0xC, 0xA5, 0x0, 0xC, 0xC, 0xA6, 0xC, 0xA6, 0x0, 0x16, 0xC, 0xAC, 0xC, 0xAD, 0x0, 0x1, 0xC, 0xB7, 0xC, 0xB7, 0x0, 0xF, 0xC, 0xBB, 0xC, 0xBB, 0x0, 0xD, 0xC, 0xBE, 0xC, 0xBE, 0x0, 0xF, 0xC, 0xC4, 0xC, 0xC4, 0x0, 0x1E, 0xC, 0xC9, 0xC, 0xC9, 0x0, 0x23, 0xC, 0xD4, 0xC, 0xD4, 0x0, 0x1E, 0xC, 0xD6, 0xC, 0xD6, 0x0, 0xF, 0xC, 0xDD, 0xC, 0xDD, 0x0, 0xD, 0xC, 0xE1, 0xC, 0xE1, 0x0, 0x23, 0x0, 0x2, 0x2, 0x8B, 0x0, 0x7, 0x0, 0x7, 0x0, 0x14, 0x0, 0xC, 0x0, 0xC, 0x0, 0x14, 0x0, 0x11, 0x0, 0x11, 0x0, 0x1A, 0x0, 0x12, 0x0, 0x12, 0x0, 0x1F, 0x0, 0x13, 0x0, 0x13, 0x0, 0x1A, 0x0, 0x26, 0x0, 0x26, 0x0, 0x6, 0x0, 0x28, 0x0, 0x28, 0x0, 0x2, 0x0, 0x2C, 0x0, 0x2C, 0x0, 0x2, 0x0, 0x2F, 0x0, 0x2F, 0x0, 0x23, 0x0, 0x34, 0x0, 0x34, 0x0, 0x2, 0x0, 0x36, 0x0, 0x36, 0x0, 0x2, 0x0, 0x38, 0x0, 0x38, 0x0, 0x10, 0x0, 0x39, 0x0, 0x39, 0x0, 0xB, 0x0, 0x3A, 0x0, 0x3A, 0x0, 0xA, 0x0, 0x3B, 0x0, 0x3B, 0x0, 0x1D, 0x0, 0x3C, 0x0, 0x3C, 0x0, 0x16, 0x0, 0x3D, 0x0, 0x3D, 0x0, 0x11, 0x0, 0x3E, 0x0, 0x3E, 0x0, 0xC, 0x0, 0x3F, 0x0, 0x3F, 0x0, 0x13, 0x0, 0x46, 0x0, 0x46, 0x0, 0x7, 0x0, 0x48, 0x0, 0x4A, 0x0, 0x1, 0x0, 0x4C, 0x0, 0x4C, 0x0, 0x1, 0x0, 0x52, 0x0, 0x53, 0x0, 0x3, 0x0, 0x54, 0x0, 0x54, 0x0, 0x4, 0x0, 0x55, 0x0, 0x55, 0x0, 0x3, 0x0, 0x56, 0x0, 0x56, 0x0, 0x1, 0x0, 0x58, 0x0, 0x58, 0x0, 0xE, 0x0, 0x5A, 0x0, 0x5A, 0x0, 0x5, 0x0, 0x5B, 0x0, 0x5B, 0x0, 0x9, 0x0, 0x5D, 0x0, 0x5D, 0x0, 0x15, 0x0, 0x5E, 0x0, 0x5E, 0x0, 0x9, 0x0, 0x5F, 0x0, 0x5F, 0x0, 0xF, 0x0, 0x84, 0x0, 0x84, 0x0, 0x2, 0x0, 0x94, 0x0, 0x94, 0x0, 0x2, 0x0, 0x95, 0x0, 0x95, 0x0, 0x1, 0x0, 0x9E, 0x0, 0x9E, 0x0, 0x2, 0x0, 0x9F, 0x0, 0x9F, 0x0, 0x1, 0x0, 0xAA, 0x0, 0xAA, 0x0, 0x2, 0x0, 0xB4, 0x0, 0xB4, 0x0, 0x2, 0x0, 0xB5, 0x0, 0xB5, 0x0, 0x1, 0x0, 0xB6, 0x0, 0xB6, 0x0, 0x2, 0x0, 0xC2, 0x0, 0xC2, 0x0, 0xB, 0x0, 0xC4, 0x0, 0xC4, 0x0, 0x5, 0x0, 0xCA, 0x0, 0xCA, 0x0, 0xF, 0x0, 0xDA, 0x0, 0xDA, 0x0, 0x1, 0x0, 0xDC, 0x0, 0xDC, 0x0, 0x1, 0x0, 0xE4, 0x0, 0xE4, 0x0, 0x1, 0x0, 0xEA, 0x0, 0xEA, 0x0, 0x3, 0x0, 0xF4, 0x0, 0xF4, 0x0, 0xE, 0x0, 0xF5, 0x0, 0xF5, 0x0, 0xF, 0x0, 0xFA, 0x0, 0xFA, 0x0, 0x6, 0x0, 0xFF, 0x0, 0xFF, 0x0, 0x2, 0x1, 0x0, 0x1, 0x0, 0x0, 0x1, 0x1, 0x3, 0x1, 0x3, 0x0, 0xC, 0x2, 0x28, 0x2, 0x28, 0x0, 0x3, 0x2, 0x2A, 0x2, 0x2A, 0x0, 0x1, 0x2, 0x31, 0x2, 0x31, 0x0, 0x6, 0x2, 0x32, 0x2, 0x32, 0x0, 0x2, 0x2, 0x33, 0x2, 0x33, 0x0, 0x6, 0x2, 0x3A, 0x2, 0x3A, 0x0, 0x1, 0x2, 0x3C, 0x2, 0x3C, 0x0, 0x9, 0x2, 0x40, 0x2, 0x40, 0x0, 0x3, 0x2, 0x47, 0x2, 0x48, 0x0, 0x1, 0x2, 0x4A, 0x2, 0x4A, 0x0, 0x5, 0x2, 0x55, 0x2, 0x55, 0x0, 0x2, 0x2, 0x56, 0x2, 0x56, 0x0, 0x4, 0x2, 0x57, 0x2, 0x57, 0x0, 0x2, 0x2, 0x58, 0x2, 0x58, 0x0, 0x1, 0x2, 0x61, 0x2, 0x61, 0x0, 0x1, 0x2, 0x66, 0x2, 0x66, 0x0, 0x2, 0x2, 0x68, 0x2, 0x68, 0x0, 0xB, 0x2, 0x69, 0x2, 0x69, 0x0, 0x2, 0x2, 0x6A, 0x2, 0x6A, 0x0, 0x19, 0x2, 0x6C, 0x2, 0x6C, 0x0, 0xB, 0x2, 0x70, 0x2, 0x70, 0x0, 0x11, 0x2, 0x73, 0x2, 0x73, 0x0, 0x19, 0x2, 0x74, 0x2, 0x74, 0x0, 0x22, 0x2, 0x77, 0x2, 0x77, 0x0, 0x20, 0x2, 0x82, 0x2, 0x82, 0x0, 0x3, 0x2, 0x84, 0x2, 0x84, 0x0, 0x15, 0x2, 0x86, 0x2, 0x87, 0x0, 0x3, 0x2, 0x88, 0x2, 0x88, 0x0, 0x1B, 0x2, 0x89, 0x2, 0x8B, 0x0, 0x3, 0x2, 0x8D, 0x2, 0x8D, 0x0, 0x1, 0x2, 0x8E, 0x2, 0x8E, 0x0, 0x3, 0x2, 0x8F, 0x2, 0x8F, 0x0, 0x21, 0x2, 0x90, 0x2, 0x91, 0x0, 0x3, 0x2, 0x94, 0x2, 0x94, 0x0, 0x3, 0x2, 0x96, 0x2, 0x96, 0x0, 0x3, 0x2, 0x99, 0x2, 0x99, 0x0, 0x1, 0x2, 0x9A, 0x2, 0x9A, 0x0, 0x1B, 0x2, 0x9B, 0x2, 0x9B, 0x0, 0x3, 0x2, 0x9E, 0x2, 0x9E, 0x0, 0x2, 0x2, 0xA3, 0x2, 0xA3, 0x0, 0x6, 0x2, 0xAD, 0x2, 0xAD, 0x0, 0x2, 0x2, 0xAE, 0x2, 0xAE, 0x0, 0x4, 0x2, 0xAF, 0x2, 0xAF, 0x0, 0x1D, 0x2, 0xB0, 0x2, 0xB0, 0x0, 0x9, 0x2, 0xB1, 0x2, 0xB1, 0x0, 0x2, 0x2, 0xB3, 0x2, 0xB3, 0x0, 0x2, 0x2, 0xB4, 0x2, 0xB4, 0x0, 0x1, 0x2, 0xB5, 0x2, 0xB5, 0x0, 0x2, 0x2, 0xB7, 0x2, 0xB7, 0x0, 0x2, 0x2, 0xB8, 0x2, 0xB8, 0x0, 0x1, 0x2, 0xC2, 0x2, 0xC2, 0x0, 0x3, 0x2, 0xCA, 0x2, 0xCA, 0x0, 0x11, 0x2, 0xCB, 0x2, 0xCB, 0x0, 0x15, 0x2, 0xCD, 0x2, 0xCD, 0x0, 0x3, 0x2, 0xD0, 0x2, 0xD0, 0x0, 0xB, 0x2, 0xD3, 0x2, 0xD3, 0x0, 0x3, 0x2, 0xD5, 0x2, 0xD5, 0x0, 0x3, 0x2, 0xD8, 0x2, 0xD8, 0x0, 0x2, 0x2, 0xD9, 0x2, 0xD9, 0x0, 0x1, 0x2, 0xDA, 0x2, 0xDA, 0x0, 0x11, 0x2, 0xDB, 0x2, 0xDB, 0x0, 0x15, 0x2, 0xDC, 0x2, 0xDC, 0x0, 0xB, 0x2, 0xDE, 0x2, 0xDE, 0x0, 0x20, 0x2, 0xDF, 0x2, 0xDF, 0x0, 0x21, 0x2, 0xE7, 0x2, 0xE7, 0x0, 0x19, 0x2, 0xE8, 0x2, 0xE8, 0x0, 0x1B, 0x2, 0xEA, 0x2, 0xEA, 0x0, 0x3, 0x2, 0xEC, 0x2, 0xEC, 0x0, 0x3, 0x2, 0xEE, 0x2, 0xEE, 0x0, 0x3, 0x2, 0xF3, 0x2, 0xF3, 0x0, 0x3, 0x2, 0xF4, 0x2, 0xF4, 0x0, 0x11, 0x2, 0xF5, 0x2, 0xF5, 0x0, 0x15, 0x2, 0xF7, 0x2, 0xF8, 0x0, 0x1, 0x2, 0xFD, 0x2, 0xFD, 0x0, 0x19, 0x3, 0x1, 0x3, 0x1, 0x0, 0x2, 0x3, 0x2, 0x3, 0x2, 0x0, 0x1, 0x3, 0x6, 0x3, 0x6, 0x0, 0x19, 0x3, 0x7, 0x3, 0x7, 0x0, 0x1B, 0x3, 0x8, 0x3, 0x8, 0x0, 0x19, 0x3, 0x9, 0x3, 0x9, 0x0, 0x1B, 0x3, 0xF, 0x3, 0xF, 0x0, 0x3, 0x3, 0x10, 0x3, 0x10, 0x0, 0x19, 0x3, 0x11, 0x3, 0x11, 0x0, 0x1B, 0x3, 0x13, 0x3, 0x13, 0x0, 0x3, 0x4, 0x5E, 0x4, 0x5F, 0x0, 0x1F, 0x4, 0x62, 0x4, 0x63, 0x0, 0x14, 0x4, 0x64, 0x4, 0x64, 0x0, 0x1A, 0x4, 0x65, 0x4, 0x67, 0x0, 0x14, 0x4, 0x68, 0x4, 0x68, 0x0, 0x1A, 0x4, 0x6F, 0x4, 0x70, 0x0, 0x1A, 0x5, 0x5B, 0x5, 0x5B, 0x0, 0x7, 0x5, 0x61, 0x5, 0x61, 0x0, 0x13, 0x5, 0x62, 0x5, 0x62, 0x0, 0xF, 0x5, 0x63, 0x5, 0x63, 0x0, 0x2, 0x5, 0x67, 0x5, 0x67, 0x0, 0x9, 0x5, 0x68, 0x5, 0x68, 0x0, 0x16, 0x5, 0x6E, 0x5, 0x6E, 0x0, 0x1, 0x5, 0x70, 0x5, 0x70, 0x0, 0x4, 0x5, 0x74, 0x5, 0x74, 0x0, 0x10, 0x5, 0xD9, 0x5, 0xD9, 0x0, 0x13, 0x5, 0xDA, 0x5, 0xDA, 0x0, 0xF, 0x5, 0xDB, 0x5, 0xDB, 0x0, 0x13, 0x5, 0xDC, 0x5, 0xDC, 0x0, 0xF, 0x5, 0xE5, 0x5, 0xE5, 0x0, 0x2, 0x5, 0xED, 0x5, 0xED, 0x0, 0x2, 0x5, 0xEE, 0x5, 0xEE, 0x0, 0x4, 0x5, 0xF0, 0x5, 0xF0, 0x0, 0x3, 0x5, 0xF1, 0x5, 0xF1, 0x0, 0x6, 0x6, 0x0, 0x6, 0x0, 0x0, 0x3, 0x6, 0x1, 0x6, 0x1, 0x0, 0x2, 0x6, 0x2, 0x6, 0x2, 0x0, 0x4, 0x6, 0x3, 0x6, 0x3, 0x0, 0x2, 0x6, 0x4, 0x6, 0x4, 0x0, 0x4, 0x6, 0x5, 0x6, 0x5, 0x0, 0x2, 0x6, 0x6, 0x6, 0x6, 0x0, 0x4, 0x6, 0x1F, 0x6, 0x1F, 0x0, 0x20, 0x6, 0x20, 0x6, 0x20, 0x0, 0x21, 0x6, 0x23, 0x6, 0x23, 0x0, 0xB, 0x6, 0x25, 0x6, 0x25, 0x0, 0xB, 0x6, 0x28, 0x6, 0x28, 0x0, 0x3, 0x6, 0x29, 0x6, 0x29, 0x0, 0xB, 0x6, 0x30, 0x6, 0x30, 0x0, 0x3, 0x6, 0x31, 0x6, 0x31, 0x0, 0x2, 0x6, 0x32, 0x6, 0x32, 0x0, 0x4, 0x6, 0x33, 0x6, 0x33, 0x0, 0x2, 0x6, 0x6A, 0x6, 0x6A, 0x0, 0x6, 0x6, 0x6B, 0x6, 0x6B, 0x0, 0x7, 0x6, 0x6C, 0x6, 0x6C, 0x0, 0x6, 0x6, 0x6D, 0x6, 0x6D, 0x0, 0x7, 0x6, 0x6F, 0x6, 0x6F, 0x0, 0x7, 0x6, 0x70, 0x6, 0x70, 0x0, 0x6, 0x6, 0x71, 0x6, 0x71, 0x0, 0x7, 0x6, 0x72, 0x6, 0x72, 0x0, 0x6, 0x6, 0x73, 0x6, 0x73, 0x0, 0x7, 0x6, 0x74, 0x6, 0x74, 0x0, 0x6, 0x6, 0x75, 0x6, 0x75, 0x0, 0x7, 0x6, 0x84, 0x6, 0x84, 0x0, 0x2, 0x6, 0x85, 0x6, 0x85, 0x0, 0x4, 0x6, 0x86, 0x6, 0x86, 0x0, 0x2, 0x6, 0x87, 0x6, 0x87, 0x0, 0x4, 0x6, 0x8E, 0x6, 0x8E, 0x0, 0x2, 0x6, 0x8F, 0x6, 0x8F, 0x0, 0x1, 0x6, 0x90, 0x6, 0x90, 0x0, 0x2, 0x6, 0x91, 0x6, 0x91, 0x0, 0x1, 0x6, 0x96, 0x6, 0x96, 0x0, 0x1D, 0x6, 0xA9, 0x6, 0xA9, 0x0, 0x1, 0x6, 0xAB, 0x6, 0xAC, 0x0, 0x3, 0x6, 0xCB, 0x6, 0xCB, 0x0, 0x1, 0x6, 0xE3, 0x6, 0xE3, 0x0, 0x2, 0x6, 0xF7, 0x6, 0xF7, 0x0, 0x1, 0x6, 0xFB, 0x6, 0xFD, 0x0, 0x3, 0x7, 0x12, 0x7, 0x12, 0x0, 0x3, 0x7, 0x2C, 0x7, 0x2C, 0x0, 0xE, 0x7, 0x4F, 0x7, 0x4F, 0x0, 0x17, 0x7, 0x50, 0x7, 0x50, 0x0, 0x1C, 0x7, 0x51, 0x7, 0x51, 0x0, 0x24, 0x7, 0x53, 0x7, 0x53, 0x0, 0x12, 0x7, 0x54, 0x7, 0x54, 0x0, 0x18, 0x7, 0x55, 0x7, 0x55, 0x0, 0x1E, 0x7, 0x57, 0x7, 0x57, 0x0, 0x8, 0x7, 0x59, 0x7, 0x59, 0x0, 0x8, 0x7, 0x61, 0x7, 0x61, 0x0, 0x8, 0x7, 0x67, 0x7, 0x67, 0x0, 0xD, 0x7, 0x68, 0x7, 0x68, 0x0, 0x8, 0x7, 0x69, 0x7, 0x69, 0x0, 0xD, 0x7, 0x70, 0x7, 0x70, 0x0, 0x18, 0x7, 0x71, 0x7, 0x71, 0x0, 0x8, 0x7, 0x74, 0x7, 0x74, 0x0, 0x18, 0x7, 0x78, 0x7, 0x78, 0x0, 0x1C, 0x7, 0x89, 0x7, 0x89, 0x0, 0x1C, 0x7, 0x8C, 0x7, 0x8C, 0x0, 0x18, 0x7, 0x8D, 0x7, 0x8D, 0x0, 0x8, 0x7, 0x8E, 0x7, 0x8E, 0x0, 0x17, 0x7, 0x8F, 0x7, 0x8F, 0x0, 0x1C, 0x7, 0x90, 0x7, 0x90, 0x0, 0x18, 0x7, 0x96, 0x7, 0x96, 0x0, 0x8, 0x7, 0xAF, 0x7, 0xAF, 0x0, 0x8, 0x7, 0xB1, 0x7, 0xB1, 0x0, 0xD, 0x7, 0xCF, 0x7, 0xD0, 0x0, 0x2, 0x7, 0xD2, 0x7, 0xD3, 0x0, 0x2, 0x8, 0xC7, 0x8, 0xC7, 0x0, 0x1F, 0x8, 0xCD, 0x8, 0xD3, 0x0, 0x6, 0x8, 0xD4, 0x8, 0xD4, 0x0, 0x2, 0x8, 0xDE, 0x8, 0xE2, 0x0, 0x2, 0x8, 0xE3, 0x8, 0xE6, 0x0, 0xA, 0x8, 0xE7, 0x8, 0xE7, 0x0, 0xC, 0x8, 0xE8, 0x8, 0xEE, 0x0, 0x7, 0x8, 0xEF, 0x8, 0xF3, 0x0, 0x1, 0x8, 0xF8, 0x8, 0xF8, 0x0, 0x3, 0x8, 0xF9, 0x8, 0xFD, 0x0, 0x4, 0x8, 0xFE, 0x9, 0x1, 0x0, 0x5, 0x9, 0x2, 0x9, 0x3, 0x0, 0x9, 0x9, 0x4, 0x9, 0x4, 0x0, 0x6, 0x9, 0x5, 0x9, 0x5, 0x0, 0x7, 0x9, 0x6, 0x9, 0x6, 0x0, 0x6, 0x9, 0x7, 0x9, 0x7, 0x0, 0x7, 0x9, 0x8, 0x9, 0x8, 0x0, 0x6, 0x9, 0x9, 0x9, 0x9, 0x0, 0x7, 0x9, 0xA, 0x9, 0xA, 0x0, 0x2, 0x9, 0xB, 0x9, 0xB, 0x0, 0x1, 0x9, 0xC, 0x9, 0xC, 0x0, 0x2, 0x9, 0xD, 0x9, 0xD, 0x0, 0x1, 0x9, 0xE, 0x9, 0xE, 0x0, 0x2, 0x9, 0xF, 0x9, 0xF, 0x0, 0x1, 0x9, 0x10, 0x9, 0x10, 0x0, 0x2, 0x9, 0x11, 0x9, 0x11, 0x0, 0x1, 0x9, 0x13, 0x9, 0x13, 0x0, 0x1, 0x9, 0x15, 0x9, 0x15, 0x0, 0x1, 0x9, 0x17, 0x9, 0x17, 0x0, 0x1, 0x9, 0x19, 0x9, 0x19, 0x0, 0x1, 0x9, 0x1B, 0x9, 0x1B, 0x0, 0x1, 0x9, 0x1D, 0x9, 0x1D, 0x0, 0x1, 0x9, 0x1E, 0x9, 0x1E, 0x0, 0x2, 0x9, 0x1F, 0x9, 0x1F, 0x0, 0x1, 0x9, 0x20, 0x9, 0x20, 0x0, 0x2, 0x9, 0x21, 0x9, 0x21, 0x0, 0x1, 0x9, 0x22, 0x9, 0x22, 0x0, 0x2, 0x9, 0x23, 0x9, 0x23, 0x0, 0x1, 0x9, 0x24, 0x9, 0x24, 0x0, 0x2, 0x9, 0x25, 0x9, 0x25, 0x0, 0x1, 0x9, 0x33, 0x9, 0x33, 0x0, 0x23, 0x9, 0x40, 0x9, 0x40, 0x0, 0x3, 0x9, 0x42, 0x9, 0x42, 0x0, 0x3, 0x9, 0x44, 0x9, 0x45, 0x0, 0x3, 0x9, 0x46, 0x9, 0x46, 0x0, 0x2, 0x9, 0x47, 0x9, 0x47, 0x0, 0x4, 0x9, 0x48, 0x9, 0x48, 0x0, 0x2, 0x9, 0x49, 0x9, 0x49, 0x0, 0x4, 0x9, 0x4A, 0x9, 0x4A, 0x0, 0x2, 0x9, 0x4B, 0x9, 0x4B, 0x0, 0x4, 0x9, 0x52, 0x9, 0x52, 0x0, 0x10, 0x9, 0x53, 0x9, 0x53, 0x0, 0xE, 0x9, 0x54, 0x9, 0x54, 0x0, 0x10, 0x9, 0x55, 0x9, 0x55, 0x0, 0xE, 0x9, 0x56, 0x9, 0x56, 0x0, 0x10, 0x9, 0x57, 0x9, 0x57, 0x0, 0xE, 0x9, 0x58, 0x9, 0x58, 0x0, 0x10, 0x9, 0x59, 0x9, 0x59, 0x0, 0xE, 0x9, 0x5A, 0x9, 0x5A, 0x0, 0x10, 0x9, 0x5B, 0x9, 0x5B, 0x0, 0xE, 0x9, 0x5C, 0x9, 0x5C, 0x0, 0xB, 0x9, 0x5E, 0x9, 0x5E, 0x0, 0xB, 0x9, 0x60, 0x9, 0x60, 0x0, 0xB, 0x9, 0x62, 0x9, 0x62, 0x0, 0xA, 0x9, 0x63, 0x9, 0x63, 0x0, 0x5, 0x9, 0x64, 0x9, 0x64, 0x0, 0xA, 0x9, 0x65, 0x9, 0x65, 0x0, 0x5, 0x9, 0x66, 0x9, 0x66, 0x0, 0xA, 0x9, 0x67, 0x9, 0x67, 0x0, 0x5, 0x9, 0x68, 0x9, 0x68, 0x0, 0xA, 0x9, 0x69, 0x9, 0x69, 0x0, 0x5, 0x9, 0x6A, 0x9, 0x6A, 0x0, 0xA, 0x9, 0x6B, 0x9, 0x6B, 0x0, 0x5, 0x9, 0x6C, 0x9, 0x6C, 0x0, 0xA, 0x9, 0x6D, 0x9, 0x6D, 0x0, 0x5, 0x9, 0x6E, 0x9, 0x6E, 0x0, 0x16, 0x9, 0x70, 0x9, 0x70, 0x0, 0xC, 0x9, 0x71, 0x9, 0x71, 0x0, 0x9, 0x9, 0x72, 0x9, 0x72, 0x0, 0xC, 0x9, 0x73, 0x9, 0x73, 0x0, 0x13, 0x9, 0x74, 0x9, 0x74, 0x0, 0xF, 0x9, 0x75, 0x9, 0x75, 0x0, 0x13, 0x9, 0x76, 0x9, 0x76, 0x0, 0xF, 0x9, 0x77, 0x9, 0x77, 0x0, 0x13, 0x9, 0x78, 0x9, 0x78, 0x0, 0xF, 0x9, 0x7B, 0x9, 0x7B, 0x0, 0x2, 0x9, 0x80, 0x9, 0x86, 0x0, 0xD, 0x9, 0x87, 0x9, 0x87, 0x0, 0x8, 0x9, 0x91, 0x9, 0x95, 0x0, 0x8, 0x9, 0x96, 0x9, 0x99, 0x0, 0x12, 0x9, 0x9A, 0x9, 0x9A, 0x0, 0x17, 0x9, 0x9B, 0x9, 0x9D, 0x0, 0xD, 0x9, 0x9E, 0x9, 0xA1, 0x0, 0x8, 0x9, 0xA8, 0x9, 0xAB, 0x0, 0x8, 0x9, 0xBB, 0x9, 0xBE, 0x0, 0x8, 0x9, 0xC2, 0x9, 0xC5, 0x0, 0x1E, 0x9, 0xC7, 0x9, 0xC7, 0x0, 0x18, 0x9, 0xC9, 0x9, 0xCE, 0x0, 0x12, 0x9, 0xCF, 0x9, 0xCF, 0x0, 0x24, 0x9, 0xD0, 0x9, 0xD1, 0x0, 0x17, 0x9, 0xD5, 0x9, 0xD5, 0x0, 0x6, 0x9, 0xD9, 0x9, 0xD9, 0x0, 0x2, 0x9, 0xDA, 0x9, 0xDA, 0x0, 0xC, 0x9, 0xDD, 0x9, 0xDD, 0x0, 0x6, 0x9, 0xE0, 0x9, 0xE0, 0x0, 0x13, 0x9, 0xE6, 0x9, 0xE6, 0x0, 0x2, 0x9, 0xE9, 0x9, 0xE9, 0x0, 0xC, 0x9, 0xEA, 0x9, 0xEA, 0x0, 0x11, 0x9, 0xEC, 0x9, 0xEC, 0x0, 0xC, 0x9, 0xED, 0x9, 0xED, 0x0, 0x1, 0x9, 0xEF, 0x9, 0xEF, 0x0, 0x3, 0x9, 0xF1, 0x9, 0xF1, 0x0, 0x5, 0x9, 0xF3, 0x9, 0xF3, 0x0, 0x4, 0x9, 0xF5, 0x9, 0xF5, 0x0, 0x9, 0x9, 0xF8, 0x9, 0xF8, 0x0, 0x5, 0x9, 0xF9, 0x9, 0xF9, 0x0, 0x4, 0x9, 0xFA, 0x9, 0xFA, 0x0, 0x5, 0xA, 0x1, 0xA, 0x1, 0x0, 0x23, 0xA, 0x4, 0xA, 0x4, 0x0, 0x22, 0xA, 0x5, 0xA, 0x5, 0x0, 0x6, 0xA, 0xC, 0xA, 0xC, 0x0, 0x2, 0xA, 0xF, 0xA, 0xF, 0x0, 0x2, 0xA, 0x10, 0xA, 0x10, 0x0, 0xB, 0xA, 0x11, 0xA, 0x11, 0x0, 0x11, 0xA, 0x12, 0xA, 0x12, 0x0, 0x7, 0xA, 0x13, 0xA, 0x13, 0x0, 0x1, 0xA, 0x14, 0xA, 0x14, 0x0, 0x3, 0xA, 0x15, 0xA, 0x15, 0x0, 0x4, 0xA, 0x16, 0xA, 0x16, 0x0, 0x3, 0xA, 0x17, 0xA, 0x17, 0x0, 0x1, 0xA, 0x18, 0xA, 0x18, 0x0, 0x9, 0xA, 0x19, 0xA, 0x19, 0x0, 0x15, 0xA, 0x1A, 0xA, 0x1A, 0x0, 0x1, 0xA, 0x1B, 0xA, 0x1B, 0x0, 0x3, 0xA, 0x1C, 0xA, 0x1C, 0x0, 0xE, 0xA, 0x20, 0xA, 0x20, 0x0, 0x3, 0xA, 0x21, 0xA, 0x21, 0x0, 0x9, 0xA, 0x22, 0xA, 0x22, 0x0, 0x16, 0xA, 0x24, 0xA, 0x24, 0x0, 0x16, 0xA, 0x26, 0xA, 0x26, 0x0, 0x16, 0xA, 0x28, 0xA, 0x28, 0x0, 0xC, 0xA, 0x29, 0xA, 0x29, 0x0, 0x9, 0xA, 0x2A, 0xA, 0x2B, 0x0, 0x14, 0xA, 0x2E, 0xA, 0x2E, 0x0, 0x14, 0xA, 0x30, 0xA, 0x30, 0x0, 0x3, 0xA, 0x31, 0xA, 0x31, 0x0, 0x6, 0xA, 0x32, 0xA, 0x32, 0x0, 0x7, 0xA, 0x35, 0xA, 0x35, 0x0, 0x1, 0xA, 0x36, 0xA, 0x36, 0x0, 0x3, 0xA, 0x39, 0xA, 0x39, 0x0, 0x1D, 0xA, 0x3A, 0xA, 0x3A, 0x0, 0x9, 0xA, 0x3B, 0xA, 0x3B, 0x0, 0x1, 0xA, 0x3C, 0xA, 0x3C, 0x0, 0x2, 0xA, 0x3F, 0xA, 0x3F, 0x0, 0x2, 0xA, 0x40, 0xA, 0x40, 0x0, 0x1, 0xA, 0x41, 0xA, 0x41, 0x0, 0xC, 0xA, 0x42, 0xA, 0x42, 0x0, 0x9, 0xA, 0x44, 0xA, 0x44, 0x0, 0x11, 0xA, 0x45, 0xA, 0x45, 0x0, 0x15, 0xA, 0x47, 0xA, 0x47, 0x0, 0x6, 0xA, 0x48, 0xA, 0x48, 0x0, 0x7, 0xA, 0x49, 0xA, 0x49, 0x0, 0x6, 0xA, 0x4A, 0xA, 0x4A, 0x0, 0x7, 0xA, 0x4E, 0xA, 0x4E, 0x0, 0x1, 0xA, 0x50, 0xA, 0x51, 0x0, 0x1, 0xA, 0x52, 0xA, 0x52, 0x0, 0x11, 0xA, 0x53, 0xA, 0x53, 0x0, 0x15, 0xA, 0x57, 0xA, 0x57, 0x0, 0x3, 0xA, 0x59, 0xA, 0x59, 0x0, 0x3, 0xA, 0x5A, 0xA, 0x5A, 0x0, 0x2, 0xA, 0x5B, 0xA, 0x5B, 0x0, 0x4, 0xA, 0x5C, 0xA, 0x5C, 0x0, 0x2, 0xA, 0x5D, 0xA, 0x5D, 0x0, 0x1, 0xA, 0x5E, 0xA, 0x5F, 0x0, 0x2, 0xA, 0x60, 0xA, 0x60, 0x0, 0x4, 0xA, 0x63, 0xA, 0x63, 0x0, 0x22, 0xA, 0x64, 0xA, 0x64, 0x0, 0x9, 0xA, 0x65, 0xA, 0x65, 0x0, 0x22, 0xA, 0x66, 0xA, 0x66, 0x0, 0x9, 0xA, 0x67, 0xA, 0x67, 0x0, 0x22, 0xA, 0x68, 0xA, 0x68, 0x0, 0x9, 0xA, 0x69, 0xA, 0x69, 0x0, 0x20, 0xA, 0x6A, 0xA, 0x6A, 0x0, 0x21, 0xA, 0x6C, 0xA, 0x6C, 0x0, 0x3, 0xA, 0x6D, 0xA, 0x6D, 0x0, 0x1, 0xA, 0x6E, 0xA, 0x6E, 0x0, 0x6, 0xA, 0x6F, 0xA, 0x6F, 0x0, 0x7, 0xA, 0x70, 0xA, 0x70, 0x0, 0x6, 0xA, 0x71, 0xA, 0x71, 0x0, 0x7, 0xA, 0x72, 0xA, 0x72, 0x0, 0x6, 0xA, 0x73, 0xA, 0x73, 0x0, 0x7, 0xA, 0x74, 0xA, 0x74, 0x0, 0x6, 0xA, 0x75, 0xA, 0x75, 0x0, 0x7, 0xA, 0x76, 0xA, 0x76, 0x0, 0x6, 0xA, 0x77, 0xA, 0x77, 0x0, 0x7, 0xA, 0x78, 0xA, 0x78, 0x0, 0x6, 0xA, 0x79, 0xA, 0x79, 0x0, 0x7, 0xA, 0x7A, 0xA, 0x7A, 0x0, 0x6, 0xA, 0x7B, 0xA, 0x7B, 0x0, 0x7, 0xA, 0x7C, 0xA, 0x7C, 0x0, 0x6, 0xA, 0x7D, 0xA, 0x7D, 0x0, 0x7, 0xA, 0x7E, 0xA, 0x7E, 0x0, 0x6, 0xA, 0x7F, 0xA, 0x7F, 0x0, 0x7, 0xA, 0x80, 0xA, 0x80, 0x0, 0x6, 0xA, 0x81, 0xA, 0x81, 0x0, 0x7, 0xA, 0x82, 0xA, 0x82, 0x0, 0x6, 0xA, 0x83, 0xA, 0x83, 0x0, 0x7, 0xA, 0x84, 0xA, 0x84, 0x0, 0x6, 0xA, 0x85, 0xA, 0x85, 0x0, 0x7, 0xA, 0x87, 0xA, 0x87, 0x0, 0x1, 0xA, 0x89, 0xA, 0x89, 0x0, 0x1, 0xA, 0x8B, 0xA, 0x8B, 0x0, 0x1, 0xA, 0x8D, 0xA, 0x8D, 0x0, 0x1, 0xA, 0x8F, 0xA, 0x8F, 0x0, 0x1, 0xA, 0x91, 0xA, 0x91, 0x0, 0x1, 0xA, 0x93, 0xA, 0x93, 0x0, 0x1, 0xA, 0x95, 0xA, 0x95, 0x0, 0x1, 0xA, 0x9A, 0xA, 0x9A, 0x0, 0x2, 0xA, 0x9B, 0xA, 0x9B, 0x0, 0x4, 0xA, 0x9C, 0xA, 0x9C, 0x0, 0x2, 0xA, 0x9D, 0xA, 0x9D, 0x0, 0x4, 0xA, 0x9E, 0xA, 0x9E, 0x0, 0x2, 0xA, 0x9F, 0xA, 0x9F, 0x0, 0x4, 0xA, 0xA0, 0xA, 0xA0, 0x0, 0x2, 0xA, 0xA1, 0xA, 0xA1, 0x0, 0x4, 0xA, 0xA2, 0xA, 0xA2, 0x0, 0x2, 0xA, 0xA3, 0xA, 0xA3, 0x0, 0x4, 0xA, 0xA4, 0xA, 0xA4, 0x0, 0x2, 0xA, 0xA5, 0xA, 0xA5, 0x0, 0x4, 0xA, 0xA6, 0xA, 0xA6, 0x0, 0x2, 0xA, 0xA7, 0xA, 0xA7, 0x0, 0x4, 0xA, 0xA8, 0xA, 0xA8, 0x0, 0x2, 0xA, 0xA9, 0xA, 0xA9, 0x0, 0x1, 0xA, 0xAA, 0xA, 0xAA, 0x0, 0x2, 0xA, 0xAB, 0xA, 0xAB, 0x0, 0x1, 0xA, 0xAC, 0xA, 0xAC, 0x0, 0x2, 0xA, 0xAD, 0xA, 0xAD, 0x0, 0x1, 0xA, 0xAE, 0xA, 0xAE, 0x0, 0x2, 0xA, 0xAF, 0xA, 0xAF, 0x0, 0x4, 0xA, 0xB0, 0xA, 0xB0, 0x0, 0x2, 0xA, 0xB1, 0xA, 0xB1, 0x0, 0x1, 0xA, 0xB2, 0xA, 0xB2, 0x0, 0xA, 0xA, 0xB3, 0xA, 0xB3, 0x0, 0x5, 0xA, 0xB4, 0xA, 0xB4, 0x0, 0xA, 0xA, 0xB5, 0xA, 0xB5, 0x0, 0x5, 0xA, 0xB7, 0xA, 0xB7, 0x0, 0x5, 0xA, 0xB9, 0xA, 0xB9, 0x0, 0x5, 0xA, 0xBB, 0xA, 0xBB, 0x0, 0x5, 0xA, 0xBD, 0xA, 0xBD, 0x0, 0x5, 0xA, 0xBF, 0xA, 0xBF, 0x0, 0x5, 0xA, 0xC0, 0xA, 0xC0, 0x0, 0xC, 0xA, 0xC1, 0xA, 0xC1, 0x0, 0x9, 0xA, 0xC2, 0xA, 0xC2, 0x0, 0xC, 0xA, 0xC3, 0xA, 0xC3, 0x0, 0x9, 0xA, 0xC4, 0xA, 0xC4, 0x0, 0xC, 0xA, 0xC5, 0xA, 0xC5, 0x0, 0x9, 0xA, 0xC7, 0xA, 0xC7, 0x0, 0xB, 0xA, 0xC9, 0xA, 0xC9, 0x0, 0x20, 0xA, 0xCA, 0xA, 0xCA, 0x0, 0x21, 0xA, 0xCC, 0xA, 0xCC, 0x0, 0x3, 0xA, 0xD6, 0xA, 0xD6, 0x0, 0xC, 0xA, 0xDC, 0xA, 0xDC, 0x0, 0x1F, 0xA, 0xE7, 0xA, 0xE7, 0x0, 0x3, 0xA, 0xED, 0xA, 0xED, 0x0, 0x3, 0xA, 0xEE, 0xA, 0xEE, 0x0, 0x6, 0xA, 0xEF, 0xA, 0xEF, 0x0, 0x7, 0xA, 0xF2, 0xA, 0xF2, 0x0, 0x2, 0xA, 0xF3, 0xA, 0xF3, 0x0, 0x4, 0xA, 0xF4, 0xA, 0xF4, 0x0, 0xA, 0xA, 0xF5, 0xA, 0xF5, 0x0, 0x5, 0xA, 0xF6, 0xA, 0xF6, 0x0, 0xA, 0xA, 0xF7, 0xA, 0xF7, 0x0, 0x5, 0xA, 0xF8, 0xA, 0xF8, 0x0, 0xA, 0xA, 0xF9, 0xA, 0xF9, 0x0, 0x5, 0xA, 0xFA, 0xA, 0xFA, 0x0, 0xA, 0xA, 0xFB, 0xA, 0xFB, 0x0, 0x5, 0xA, 0xFC, 0xA, 0xFC, 0x0, 0xA, 0xA, 0xFD, 0xA, 0xFD, 0x0, 0x5, 0xA, 0xFE, 0xA, 0xFE, 0x0, 0x1, 0xA, 0xFF, 0xA, 0xFF, 0x0, 0x6, 0xB, 0x0, 0xB, 0x0, 0x0, 0x7, 0xB, 0x1, 0xB, 0x1, 0x0, 0x6, 0xB, 0x2, 0xB, 0x2, 0x0, 0x7, 0xB, 0x4, 0xB, 0x4, 0x0, 0x7, 0xB, 0x6, 0xB, 0x6, 0x0, 0x1, 0xB, 0x9, 0xB, 0x9, 0x0, 0x2, 0xB, 0xA, 0xB, 0xA, 0x0, 0x4, 0xB, 0xB, 0xB, 0xB, 0x0, 0x2, 0xB, 0xC, 0xB, 0xC, 0x0, 0x4, 0xB, 0xF, 0xB, 0xF, 0x0, 0x1, 0xB, 0x13, 0xB, 0x13, 0x0, 0x3, 0xB, 0x14, 0xB, 0x14, 0x0, 0x6, 0xB, 0x15, 0xB, 0x15, 0x0, 0x7, 0xB, 0x16, 0xB, 0x16, 0x0, 0x6, 0xB, 0x17, 0xB, 0x17, 0x0, 0x7, 0xB, 0x19, 0xB, 0x19, 0x0, 0x1, 0xB, 0x1B, 0xB, 0x1B, 0x0, 0x1, 0xB, 0x20, 0xB, 0x20, 0x0, 0x2, 0xB, 0x21, 0xB, 0x21, 0x0, 0x4, 0xB, 0x22, 0xB, 0x22, 0x0, 0x2, 0xB, 0x23, 0xB, 0x23, 0x0, 0x4, 0xB, 0x29, 0xB, 0x29, 0x0, 0x5, 0xB, 0x2B, 0xB, 0x2B, 0x0, 0x5, 0xB, 0x2E, 0xB, 0x2E, 0x0, 0x6, 0xB, 0x2F, 0xB, 0x2F, 0x0, 0x7, 0xB, 0x32, 0xB, 0x32, 0x0, 0x2, 0xB, 0x33, 0xB, 0x33, 0x0, 0x4, 0xB, 0x34, 0xB, 0x34, 0x0, 0x2, 0xB, 0x35, 0xB, 0x35, 0x0, 0x4, 0xB, 0x36, 0xB, 0x36, 0x0, 0x2, 0xB, 0x37, 0xB, 0x37, 0x0, 0x4, 0xB, 0x38, 0xB, 0x38, 0x0, 0x2, 0xB, 0x39, 0xB, 0x39, 0x0, 0x4, 0xB, 0x3B, 0xB, 0x3B, 0x0, 0x9, 0xB, 0x3C, 0xB, 0x3C, 0x0, 0x4, 0xB, 0x3F, 0xB, 0x3F, 0x0, 0x23, 0xB, 0x42, 0xB, 0x42, 0x0, 0x1, 0xB, 0x49, 0xB, 0x49, 0x0, 0x2, 0xB, 0x4A, 0xB, 0x4A, 0x0, 0x1, 0xB, 0x4B, 0xB, 0x4B, 0x0, 0x16, 0xB, 0x53, 0xB, 0x53, 0x0, 0x2, 0xB, 0x54, 0xB, 0x54, 0x0, 0x1, 0xB, 0x56, 0xB, 0x56, 0x0, 0x1, 0xB, 0x58, 0xB, 0x58, 0x0, 0x1, 0xB, 0x5A, 0xB, 0x5A, 0x0, 0x1, 0xB, 0x5C, 0xB, 0x5C, 0x0, 0x1, 0xB, 0x5E, 0xB, 0x5E, 0x0, 0x1, 0xB, 0x60, 0xB, 0x60, 0x0, 0x1, 0xB, 0x62, 0xB, 0x62, 0x0, 0x1, 0xB, 0x64, 0xB, 0x64, 0x0, 0x1, 0xB, 0x66, 0xB, 0x66, 0x0, 0x1, 0xB, 0x68, 0xB, 0x68, 0x0, 0x1, 0xB, 0x6B, 0xB, 0x6B, 0x0, 0x2, 0xB, 0x6C, 0xB, 0x6C, 0x0, 0x1, 0xB, 0x84, 0xB, 0x84, 0x0, 0x3, 0xB, 0x86, 0xB, 0x86, 0x0, 0x3, 0xB, 0x88, 0xB, 0x88, 0x0, 0x3, 0xB, 0x8A, 0xB, 0x8A, 0x0, 0x3, 0xB, 0x8C, 0xB, 0x8C, 0x0, 0x3, 0xB, 0x8E, 0xB, 0x8E, 0x0, 0x3, 0xB, 0x8F, 0xB, 0x8F, 0x0, 0x2, 0xB, 0x90, 0xB, 0x90, 0x0, 0x4, 0xB, 0x91, 0xB, 0x91, 0x0, 0x2, 0xB, 0x92, 0xB, 0x92, 0x0, 0x4, 0xB, 0x93, 0xB, 0x93, 0x0, 0x2, 0xB, 0x94, 0xB, 0x94, 0x0, 0x4, 0xB, 0x95, 0xB, 0x95, 0x0, 0x2, 0xB, 0x96, 0xB, 0x96, 0x0, 0x4, 0xB, 0xA3, 0xB, 0xA3, 0x0, 0x10, 0xB, 0xA4, 0xB, 0xA4, 0x0, 0xE, 0xB, 0xA5, 0xB, 0xA5, 0x0, 0x10, 0xB, 0xA6, 0xB, 0xA6, 0x0, 0xE, 0xB, 0xA7, 0xB, 0xA7, 0x0, 0x10, 0xB, 0xA8, 0xB, 0xA8, 0x0, 0xE, 0xB, 0xA9, 0xB, 0xA9, 0x0, 0x10, 0xB, 0xAA, 0xB, 0xAA, 0x0, 0xE, 0xB, 0xAB, 0xB, 0xAB, 0x0, 0x10, 0xB, 0xAC, 0xB, 0xAC, 0x0, 0xE, 0xB, 0xAD, 0xB, 0xAD, 0x0, 0xB, 0xB, 0xAF, 0xB, 0xAF, 0x0, 0xB, 0xB, 0xB1, 0xB, 0xB1, 0x0, 0xB, 0xB, 0xB3, 0xB, 0xB3, 0x0, 0xB, 0xB, 0xB5, 0xB, 0xB5, 0x0, 0xA, 0xB, 0xB6, 0xB, 0xB6, 0x0, 0x5, 0xB, 0xB7, 0xB, 0xB7, 0x0, 0xA, 0xB, 0xB8, 0xB, 0xB8, 0x0, 0x5, 0xB, 0xB9, 0xB, 0xB9, 0x0, 0xA, 0xB, 0xBA, 0xB, 0xBA, 0x0, 0x5, 0xB, 0xBB, 0xB, 0xBB, 0x0, 0xA, 0xB, 0xBC, 0xB, 0xBC, 0x0, 0x5, 0xB, 0xBD, 0xB, 0xBD, 0x0, 0xA, 0xB, 0xBE, 0xB, 0xBE, 0x0, 0x5, 0xB, 0xBF, 0xB, 0xBF, 0x0, 0x1D, 0xB, 0xC0, 0xB, 0xC0, 0x0, 0x9, 0xB, 0xC1, 0xB, 0xC1, 0x0, 0x1D, 0xB, 0xC2, 0xB, 0xC2, 0x0, 0x9, 0xB, 0xC3, 0xB, 0xC3, 0x0, 0x16, 0xB, 0xC5, 0xB, 0xC5, 0x0, 0x16, 0xB, 0xC7, 0xB, 0xC7, 0x0, 0x11, 0xB, 0xC8, 0xB, 0xC8, 0x0, 0x15, 0xB, 0xC9, 0xB, 0xC9, 0x0, 0x11, 0xB, 0xCA, 0xB, 0xCA, 0x0, 0x15, 0xB, 0xCB, 0xB, 0xCB, 0x0, 0xC, 0xB, 0xCC, 0xB, 0xCC, 0x0, 0x9, 0xB, 0xCD, 0xB, 0xCD, 0x0, 0x13, 0xB, 0xCE, 0xB, 0xCE, 0x0, 0xF, 0xB, 0xCF, 0xB, 0xCF, 0x0, 0x13, 0xB, 0xD0, 0xB, 0xD0, 0x0, 0xF, 0xB, 0xD1, 0xB, 0xD1, 0x0, 0x13, 0xB, 0xD2, 0xB, 0xD2, 0x0, 0xF, 0xB, 0xD6, 0xB, 0xD6, 0x0, 0x9, 0xB, 0xD7, 0xB, 0xD7, 0x0, 0x7, 0xB, 0xD8, 0xB, 0xDF, 0x0, 0x1, 0xC, 0x14, 0xC, 0x19, 0x0, 0x4, 0xC, 0x20, 0xC, 0x27, 0x0, 0x5, 0xC, 0x44, 0xC, 0x45, 0x0, 0x4, 0xC, 0x46, 0xC, 0x47, 0x0, 0x5, 0xC, 0x4A, 0xC, 0x51, 0x0, 0x1, 0xC, 0x7A, 0xC, 0x80, 0x0, 0x1, 0xC, 0x81, 0xC, 0x82, 0x0, 0x6, 0xC, 0x85, 0xC, 0x85, 0x0, 0x6, 0xC, 0x9A, 0xC, 0x9D, 0x0, 0x5, 0xC, 0xA2, 0xC, 0xA3, 0x0, 0xC, 0xC, 0xB7, 0xC, 0xB7, 0x0, 0xD, 0xC, 0xBB, 0xC, 0xBB, 0x0, 0x8, 0xC, 0xBC, 0xC, 0xBC, 0x0, 0x17, 0xC, 0xBE, 0xC, 0xBE, 0x0, 0xD, 0xC, 0xCA, 0xC, 0xCA, 0x0, 0x17, 0xC, 0xCB, 0xC, 0xCB, 0x0, 0x1C, 0xC, 0xCD, 0xC, 0xCD, 0x0, 0x17, 0xC, 0xD6, 0xC, 0xD6, 0x0, 0xD, 0xC, 0xDD, 0xC, 0xDD, 0x0, 0x8, 0xC, 0xE0, 0xC, 0xE0, 0x0, 0x8, 0xC, 0xE1, 0xC, 0xE1, 0x0, 0x18, 0xC, 0xE2, 0xC, 0xE2, 0x0, 0x1C, 0xC, 0xE5, 0xC, 0xE5, 0x0, 0x8, 0xC, 0xE6, 0xC, 0xE6, 0x0, 0x17, 0x0, 0x4, 0x0, 0x0, 0x0, 0x1, 0x0, 0x8, 0x0, 0x1, 0x0, 0xC, 0x0, 0xA6, 0x0, 0x1, 0x3, 0x8C, 0x9, 0xA, 0x0, 0x2, 0x0, 0x19, 0x1, 0xB1, 0x1, 0xC5, 0x0, 0x0, 0x1, 0xCB, 0x1, 0xCB, 0x0, 0x15, 0x1, 0xEE, 0x1, 0xF5, 0x0, 0x16, 0x1, 0xF7, 0x1, 0xF7, 0x0, 0x1E, 0x1, 0xFB, 0x1, 0xFD, 0x0, 0x1F, 0x2, 0x1, 0x2, 0x3, 0x0, 0x22, 0x2, 0x8, 0x2, 0x8, 0x0, 0x25, 0x2, 0xC, 0x2, 0xC, 0x0, 0x26, 0x2, 0x14, 0x2, 0x20, 0x0, 0x27, 0x2, 0xBA, 0x2, 0xBE, 0x0, 0x34, 0x3, 0x20, 0x3, 0x24, 0x0, 0x39, 0x3, 0x2B, 0x3, 0x2C, 0x0, 0x3E, 0x3, 0xEF, 0x3, 0xF0, 0x0, 0x40, 0x3, 0xF2, 0x3, 0xF8, 0x0, 0x42, 0x3, 0xFA, 0x3, 0xFD, 0x0, 0x49, 0x4, 0x0, 0x4, 0x24, 0x0, 0x4D, 0x4, 0x27, 0x4, 0x27, 0x0, 0x72, 0x4, 0xE2, 0x4, 0xE3, 0x0, 0x73, 0x4, 0xE5, 0x4, 0xE5, 0x0, 0x75, 0x5, 0x76, 0x5, 0x95, 0x0, 0x76, 0x6, 0x8, 0x6, 0x8, 0x0, 0x96, 0x6, 0xD, 0x6, 0x16, 0x0, 0x97, 0x6, 0x37, 0x6, 0x37, 0x0, 0xA1, 0x7, 0x2D, 0x7, 0x33, 0x0, 0xA2, 0x8, 0x8A, 0x8, 0x8E, 0x0, 0xA9, 0x0, 0x2, 0x0, 0x7B, 0x0, 0x26, 0x0, 0x3F, 0x0, 0x0, 0x0, 0x46, 0x0, 0x5F, 0x0, 0x1A, 0x0, 0x82, 0x0, 0x82, 0x0, 0x34, 0x0, 0x84, 0x0, 0x84, 0x0, 0x35, 0x0, 0x87, 0x0, 0x87, 0x0, 0x36, 0x0, 0x8A, 0x0, 0x8A, 0x0, 0x37, 0x0, 0x8C, 0x0, 0x97, 0x0, 0x38, 0x0, 0xA6, 0x0, 0xA7, 0x0, 0x44, 0x0, 0xAD, 0x0, 0xAD, 0x0, 0x46, 0x0, 0xB0, 0x0, 0xB0, 0x0, 0x47, 0x0, 0xB4, 0x0, 0xB5, 0x0, 0x48, 0x0, 0xBD, 0x0, 0xBD, 0x0, 0x4A, 0x0, 0xC3, 0x0, 0xC4, 0x0, 0x4B, 0x0, 0xC9, 0x0, 0xCA, 0x0, 0x4D, 0x0, 0xDB, 0x0, 0xDC, 0x0, 0x4F, 0x0, 0xEC, 0x0, 0xEC, 0x0, 0x51, 0x0, 0xF2, 0x0, 0xF2, 0x0, 0x52, 0x0, 0xF8, 0x0, 0xF9, 0x0, 0x53, 0x0, 0xFD, 0x0, 0xFE, 0x0, 0x55, 0x1, 0x1, 0x1, 0x61, 0x0, 0x57, 0x2, 0x30, 0x2, 0x30, 0x0, 0xB8, 0x2, 0x3A, 0x2, 0x3A, 0x0, 0xB9, 0x2, 0x3E, 0x2, 0x3E, 0x0, 0xBA, 0x2, 0x40, 0x2, 0x40, 0x0, 0xBB, 0x2, 0x42, 0x2, 0x42, 0x0, 0xBC, 0x2, 0x46, 0x2, 0x46, 0x0, 0xBD, 0x2, 0x4A, 0x2, 0x4A, 0x0, 0xBE, 0x2, 0x4C, 0x2, 0x4D, 0x0, 0xBF, 0x2, 0x51, 0x2, 0x51, 0x0, 0xC1, 0x2, 0x53, 0x2, 0x53, 0x0, 0xC2, 0x2, 0x69, 0x2, 0x69, 0x0, 0xC3, 0x2, 0x70, 0x2, 0x72, 0x0, 0xC4, 0x2, 0x74, 0x2, 0x74, 0x0, 0xC7, 0x2, 0x77, 0x2, 0x77, 0x0, 0xC8, 0x2, 0x7B, 0x2, 0x7B, 0x0, 0xC9, 0x2, 0x7D, 0x2, 0x7F, 0x0, 0xCA, 0x2, 0x81, 0x2, 0x91, 0x0, 0xCD, 0x2, 0x93, 0x2, 0x93, 0x0, 0xDE, 0x2, 0x95, 0x2, 0x97, 0x0, 0xDF, 0x2, 0x99, 0x2, 0x99, 0x0, 0xE2, 0x2, 0x9E, 0x2, 0x9F, 0x0, 0xE3, 0x2, 0xAC, 0x2, 0xB0, 0x0, 0xE5, 0x2, 0xB2, 0x2, 0xB2, 0x0, 0xEA, 0x2, 0xB6, 0x2, 0xB8, 0x0, 0xEB, 0x2, 0xC1, 0x2, 0xC2, 0x0, 0xEE, 0x2, 0xD8, 0x2, 0xD9, 0x0, 0xF0, 0x2, 0xE2, 0x2, 0xE2, 0x0, 0xF2, 0x2, 0xEF, 0x2, 0xEF, 0x0, 0xF3, 0x2, 0xF9, 0x2, 0xF9, 0x0, 0xF4, 0x2, 0xFB, 0x2, 0xFB, 0x0, 0xF5, 0x2, 0xFF, 0x2, 0xFF, 0x0, 0xF6, 0x3, 0x1, 0x3, 0x3, 0x0, 0xF7, 0x3, 0x5, 0x3, 0x5, 0x0, 0xFA, 0x3, 0x2F, 0x3, 0x3F, 0x0, 0xFB, 0x3, 0x43, 0x3, 0x44, 0x1, 0xC, 0x3, 0x47, 0x3, 0x4B, 0x1, 0xE, 0x3, 0x4F, 0x3, 0x5A, 0x1, 0x13, 0x3, 0x9A, 0x3, 0xA6, 0x1, 0x1F, 0x3, 0xA8, 0x3, 0xA9, 0x1, 0x2C, 0x3, 0xAB, 0x3, 0xC9, 0x1, 0x2E, 0x4, 0x2B, 0x4, 0x2E, 0x1, 0x4D, 0x7, 0x4E, 0x7, 0x62, 0x1, 0x51, 0x7, 0x66, 0x7, 0x66, 0x1, 0x66, 0x7, 0x71, 0x7, 0x71, 0x1, 0x67, 0x7, 0x78, 0x7, 0x7A, 0x1, 0x68, 0x7, 0x7D, 0x7, 0x7D, 0x1, 0x6B, 0x7, 0x7F, 0x7, 0x7F, 0x1, 0x6C, 0x7, 0x83, 0x7, 0x83, 0x1, 0x6D, 0x7, 0x85, 0x7, 0x87, 0x1, 0x6E, 0x7, 0x8D, 0x7, 0x8D, 0x1, 0x71, 0x7, 0x92, 0x7, 0x92, 0x1, 0x72, 0x7, 0x94, 0x7, 0x94, 0x1, 0x73, 0x7, 0x96, 0x7, 0x96, 0x1, 0x74, 0x7, 0xA6, 0x7, 0xA6, 0x1, 0x75, 0x7, 0xA9, 0x7, 0xA9, 0x1, 0x76, 0x7, 0xAB, 0x7, 0xAB, 0x1, 0x77, 0x7, 0xAE, 0x7, 0xB1, 0x1, 0x78, 0x7, 0xDE, 0x7, 0xE2, 0x1, 0x7C, 0x7, 0xEE, 0x7, 0xFD, 0x1, 0x81, 0x8, 0xAD, 0x8, 0xB0, 0x1, 0x91, 0x8, 0xB3, 0x8, 0xB8, 0x1, 0x95, 0x8, 0xC8, 0x9, 0x30, 0x1, 0x9B, 0x9, 0x33, 0x9, 0xD4, 0x2, 0x4, 0x9, 0xEB, 0x9, 0xEC, 0x2, 0xA6, 0x9, 0xF7, 0x9, 0xF8, 0x2, 0xA8, 0x9, 0xFC, 0x9, 0xFD, 0x2, 0xAA, 0xA, 0x0, 0xA, 0x0, 0x2, 0xAC, 0xA, 0x3, 0xA, 0x4, 0x2, 0xAD, 0xA, 0x9, 0xA, 0x9, 0x2, 0xAF, 0xA, 0x12, 0xA, 0x14, 0x2, 0xB0, 0xA, 0x16, 0xA, 0x17, 0x2, 0xB3, 0xA, 0x19, 0xA, 0x1E, 0x2, 0xB5, 0xA, 0x20, 0xA, 0x29, 0x2, 0xBB, 0xA, 0x2D, 0xA, 0x2D, 0x2, 0xC5, 0xA, 0x2F, 0xA, 0x36, 0x2, 0xC6, 0xA, 0x38, 0xA, 0x3A, 0x2, 0xCE, 0xA, 0x44, 0xA, 0x45, 0x2, 0xD1, 0xA, 0x47, 0xA, 0x4A, 0x2, 0xD3, 0xA, 0x4D, 0xA, 0x4F, 0x2, 0xD7, 0xA, 0x51, 0xA, 0x5B, 0x2, 0xDA, 0xA, 0x5E, 0xA, 0x6C, 0x2, 0xE5, 0xA, 0x6E, 0xA, 0xC5, 0x2, 0xF4, 0xA, 0xE7, 0xA, 0xE7, 0x3, 0x4C, 0xA, 0xEE, 0xB, 0xC, 0x3, 0x4D, 0xB, 0x10, 0xB, 0x3E, 0x3, 0x6C, 0xB, 0x41, 0xB, 0x41, 0x3, 0x9B, 0xB, 0x4D, 0xB, 0xD7, 0x3, 0x9C, 0xC, 0x7A, 0xC, 0x7B, 0x4, 0x27, 0xC, 0x81, 0xC, 0x82, 0x4, 0x29, 0xC, 0x90, 0xC, 0x91, 0x4, 0x2B, 0xC, 0x96, 0xC, 0x97, 0x4, 0x2D, 0xC, 0x9A, 0xC, 0x9B, 0x4, 0x2F, 0xC, 0xA2, 0xC, 0xA3, 0x4, 0x31, 0xC, 0xB7, 0xC, 0xBC, 0x4, 0x33, 0xC, 0xBE, 0xC, 0xDD, 0x4, 0x39, 0xC, 0xDF, 0xC, 0xE6, 0x4, 0x59, 0xC, 0xE8, 0xC, 0xE9, 0x4, 0x61, 0xC, 0xEB, 0xC, 0xEB, 0x4, 0x63, 0xC, 0xED, 0xD, 0x4, 0x4, 0x64, 0xD, 0x7, 0xD, 0xD, 0x4, 0x7C, 0xD, 0xF, 0xD, 0x11, 0x4, 0x83, 0xD, 0x13, 0xD, 0x1B, 0x4, 0x86, 0xD, 0x1D, 0xD, 0x1E, 0x4, 0x8F, 0x0, 0xAE, 0x0, 0x0, 0x2, 0xBA, 0x0, 0x0, 0x2, 0xC0, 0x0, 0x0, 0x2, 0xC6, 0x0, 0x0, 0x5, 0x66, 0x0, 0x0, 0x2, 0xCC, 0x0, 0x0, 0x2, 0xD2, 0x0, 0x0, 0x2, 0xD8, 0x0, 0x0, 0x5, 0x78, 0x0, 0x0, 0x5, 0x72, 0x0, 0x0, 0x2, 0xDE, 0x0, 0x0, 0x2, 0xE4, 0x0, 0x0, 0x2, 0xEA, 0x0, 0x0, 0x5, 0x78, 0x0, 0x0, 0x2, 0xF0, 0x0, 0x0, 0x2, 0xF6, 0x0, 0x0, 0x2, 0xFC, 0x0, 0x0, 0x3, 0x2, 0x0, 0x0, 0x3, 0x2, 0x0, 0x0, 0x3, 0x8, 0x0, 0x0, 0x3, 0xE, 0x0, 0x0, 0x3, 0x14, 0x0, 0x0, 0x3, 0x1A, 0x0, 0x0, 0x3, 0x20, 0x0, 0x0, 0x3, 0x26, 0x0, 0x0, 0x3, 0x2C, 0x0, 0x0, 0x3, 0x32, 0x0, 0x0, 0x3, 0x38, 0x0, 0x0, 0x3, 0x3E, 0x0, 0x0, 0x3, 0x44, 0x0, 0x0, 0x3, 0x4A, 0x0, 0x0, 0x3, 0x50, 0x0, 0x0, 0x3, 0x56, 0x0, 0x0, 0x3, 0x5C, 0x0, 0x0, 0x3, 0x62, 0x0, 0x0, 0x3, 0x68, 0x0, 0x0, 0x3, 0x6E, 0x0, 0x0, 0x3, 0x74, 0x0, 0x0, 0x3, 0x7A, 0x0, 0x0, 0x3, 0x80, 0x0, 0x0, 0x4, 0xCA, 0x0, 0x0, 0x4, 0x7C, 0x0, 0x0, 0x3, 0x86, 0x0, 0x0, 0x4, 0xCA, 0x0, 0x0, 0x3, 0xC2, 0x0, 0x0, 0x3, 0x8C, 0x0, 0x0, 0x4, 0xA6, 0x0, 0x0, 0x3, 0xC2, 0x0, 0x0, 0x4, 0x3A, 0x0, 0x0, 0x3, 0x92, 0x0, 0x0, 0x3, 0x98, 0x0, 0x0, 0x4, 0x3A, 0x0, 0x0, 0x3, 0x9E, 0x0, 0x0, 0x3, 0xA4, 0x0, 0x0, 0x3, 0xAA, 0x0, 0x0, 0x3, 0xB0, 0x0, 0x0, 0x3, 0xB6, 0x0, 0x0, 0x3, 0xBC, 0x0, 0x0, 0x3, 0xC2, 0x0, 0x0, 0x5, 0x0, 0x0, 0x0, 0x3, 0xC8, 0x0, 0x0, 0x5, 0x0, 0x0, 0x0, 0x3, 0xCE, 0x0, 0x0, 0x3, 0xD4, 0x0, 0x0, 0x3, 0xDA, 0x0, 0x0, 0x3, 0xE0, 0x0, 0x0, 0x3, 0xE6, 0x0, 0x0, 0x3, 0xEC, 0x0, 0x0, 0x3, 0xF2, 0x0, 0x0, 0x3, 0xF8, 0x0, 0x0, 0x3, 0xFE, 0x0, 0x0, 0x4, 0x4, 0x0, 0x0, 0x4, 0xA, 0x0, 0x0, 0x4, 0x10, 0x0, 0x0, 0x5, 0x1E, 0x0, 0x0, 0x4, 0x16, 0x0, 0x0, 0x4, 0x1C, 0x0, 0x0, 0x4, 0x22, 0x0, 0x0, 0x4, 0x28, 0x0, 0x0, 0x4, 0x2E, 0x0, 0x0, 0x5, 0x0, 0x0, 0x0, 0x4, 0x34, 0x0, 0x0, 0x4, 0x3A, 0x0, 0x0, 0x4, 0x40, 0x0, 0x0, 0x4, 0x46, 0x0, 0x0, 0x4, 0x4C, 0x0, 0x0, 0x4, 0x4C, 0x0, 0x0, 0x4, 0x52, 0x0, 0x0, 0x5, 0x0, 0x0, 0x0, 0x4, 0x58, 0x0, 0x0, 0x5, 0x0, 0x0, 0x0, 0x4, 0x5E, 0x0, 0x0, 0x5, 0x60, 0x0, 0x0, 0x5, 0x0, 0x0, 0x0, 0x4, 0x64, 0x0, 0x0, 0x5, 0x0, 0x0, 0x0, 0x4, 0xCA, 0x0, 0x0, 0x4, 0x6A, 0x0, 0x0, 0x4, 0x70, 0x0, 0x0, 0x5, 0x0, 0x0, 0x0, 0x4, 0xF4, 0x0, 0x0, 0x4, 0xF4, 0x0, 0x0, 0x4, 0x76, 0x0, 0x0, 0x4, 0xF4, 0x0, 0x0, 0x4, 0x7C, 0x0, 0x0, 0x5, 0x60, 0x0, 0x0, 0x4, 0x82, 0x0, 0x0, 0x4, 0x88, 0x0, 0x0, 0x4, 0x8E, 0x0, 0x0, 0x4, 0x94, 0x0, 0x0, 0x4, 0xF4, 0x0, 0x0, 0x4, 0xCA, 0x0, 0x0, 0x4, 0xF4, 0x0, 0x0, 0x5, 0x0, 0x0, 0x0, 0x5, 0x60, 0x0, 0x0, 0x4, 0xF4, 0x0, 0x0, 0x4, 0x9A, 0x0, 0x0, 0x4, 0xA0, 0x0, 0x0, 0x4, 0xDC, 0x0, 0x0, 0x5, 0x0, 0x0, 0x0, 0x4, 0xCA, 0x0, 0x0, 0x4, 0xA6, 0x0, 0x0, 0x5, 0x0, 0x0, 0x0, 0x4, 0xAC, 0x0, 0x0, 0x5, 0x0, 0x0, 0x0, 0x4, 0xB2, 0x0, 0x0, 0x4, 0xB8, 0x0, 0x0, 0x5, 0x0, 0x0, 0x0, 0x5, 0x0, 0x0, 0x0, 0x5, 0x0, 0x0, 0x0, 0x5, 0x0, 0x0, 0x0, 0x4, 0xBE, 0x0, 0x0, 0x5, 0x0, 0x0, 0x0, 0x5, 0x0, 0x0, 0x0, 0x4, 0xC4, 0x0, 0x0, 0x4, 0xCA, 0x0, 0x0, 0x4, 0xD0, 0x0, 0x0, 0x5, 0x0, 0x0, 0x0, 0x4, 0xD6, 0x0, 0x0, 0x5, 0x0, 0x0, 0x0, 0x4, 0xDC, 0x0, 0x0, 0x5, 0x0, 0x0, 0x0, 0x5, 0x0, 0x0, 0x0, 0x5, 0x0, 0x0, 0x0, 0x5, 0x0, 0x0, 0x0, 0x4, 0xE2, 0x0, 0x0, 0x4, 0xE8, 0x0, 0x0, 0x4, 0xEE, 0x0, 0x0, 0x4, 0xF4, 0x0, 0x0, 0x5, 0x0, 0x0, 0x0, 0x4, 0xFA, 0x0, 0x0, 0x5, 0x0, 0x0, 0x0, 0x5, 0x6, 0x0, 0x0, 0x5, 0x60, 0x0, 0x0, 0x5, 0xC, 0x0, 0x0, 0x5, 0x12, 0x0, 0x0, 0x5, 0x18, 0x0, 0x0, 0x5, 0x1E, 0x0, 0x0, 0x5, 0x24, 0x0, 0x0, 0x5, 0x2A, 0x0, 0x0, 0x5, 0x60, 0x0, 0x0, 0x5, 0x30, 0x0, 0x0, 0x5, 0x36, 0x0, 0x0, 0x5, 0x3C, 0x0, 0x0, 0x5, 0x42, 0x0, 0x0, 0x5, 0x48, 0x0, 0x0, 0x5, 0x4E, 0x0, 0x0, 0x5, 0x54, 0x0, 0x0, 0x5, 0x5A, 0x0, 0x0, 0x5, 0x60, 0x0, 0x0, 0x5, 0x66, 0x0, 0x0, 0x5, 0x66, 0x0, 0x0, 0x5, 0x6C, 0x0, 0x0, 0x5, 0x72, 0x0, 0x0, 0x5, 0x78, 0x0, 0x1, 0xFD, 0xEA, 0x5, 0xA, 0x0, 0x1, 0xFD, 0xD5, 0x5, 0xA, 0x0, 0x1, 0xFD, 0xB5, 0x5, 0xA, 0x0, 0x1, 0xFD, 0xBB, 0x5, 0x5, 0x0, 0x1, 0xFD, 0xBA, 0x6, 0x28, 0x0, 0x1, 0xFD, 0xB9, 0x4, 0xAA, 0x0, 0x1, 0xFD, 0xA8, 0x5, 0x4, 0x0, 0x1, 0xFD, 0xBA, 0x4, 0xCF, 0x0, 0x1, 0xFD, 0x6B, 0x5, 0xA, 0x0, 0x1, 0xFD, 0xB9, 0x4, 0x9F, 0x0, 0x1, 0xFD, 0xB5, 0x4, 0x9F, 0x0, 0x1, 0xFE, 0x35, 0x5, 0xD, 0x0, 0x1, 0xFD, 0xB8, 0x4, 0xA0, 0x0, 0x1, 0xFD, 0xB7, 0x4, 0x2A, 0x0, 0x1, 0xFD, 0xA1, 0x4, 0x2A, 0x0, 0x1, 0xFD, 0xD0, 0x4, 0x2A, 0x0, 0x1, 0xFE, 0x48, 0x4, 0xEF, 0x0, 0x1, 0xFD, 0xF3, 0x4, 0x92, 0x0, 0x1, 0xFD, 0xB8, 0x4, 0x48, 0x0, 0x1, 0xFD, 0xB5, 0x5, 0xBE, 0x0, 0x1, 0x0, 0x20, 0x5, 0xA, 0x0, 0x1, 0xFF, 0x97, 0x5, 0xA, 0x0, 0x1, 0xFD, 0xC3, 0x5, 0xA, 0x0, 0x1, 0xFD, 0x9D, 0x5, 0xA, 0x0, 0x1, 0xFD, 0xB1, 0x5, 0xA, 0x0, 0x1, 0xFD, 0xB9, 0x4, 0xAD, 0x0, 0x1, 0xFD, 0xB8, 0x4, 0xE6, 0x0, 0x1, 0xFD, 0x9B, 0x4, 0x6B, 0x0, 0x1, 0xFD, 0xC4, 0x4, 0xDC, 0x0, 0x1, 0xFD, 0xC2, 0x4, 0xA7, 0x0, 0x1, 0xFE, 0x3, 0x4, 0x58, 0x0, 0x1, 0xFD, 0xB8, 0x4, 0xC3, 0x0, 0x1, 0xFD, 0x85, 0x4, 0x5F, 0x0, 0x1, 0xFD, 0xA3, 0x4, 0xC4, 0x0, 0x1, 0xFD, 0xCA, 0x4, 0x92, 0x0, 0x1, 0xFD, 0xC2, 0x4, 0x92, 0x0, 0x1, 0xFD, 0xE0, 0x4, 0x92, 0x0, 0x1, 0xFD, 0xA2, 0x4, 0x92, 0x0, 0x1, 0xFD, 0xEA, 0x4, 0x92, 0x0, 0x1, 0xFD, 0xE0, 0x4, 0xA6, 0x0, 0x1, 0xFE, 0x4D, 0x4, 0xA6, 0x0, 0x1, 0xFD, 0xF5, 0x5, 0x0, 0x0, 0x1, 0xFE, 0x20, 0x5, 0x0, 0x0, 0x1, 0xFD, 0xA7, 0x4, 0xA6, 0x0, 0x1, 0xFD, 0xC5, 0x4, 0x92, 0x0, 0x1, 0xFD, 0xBD, 0x4, 0x59, 0x0, 0x1, 0xFD, 0x9D, 0x4, 0x92, 0x0, 0x1, 0xFD, 0xC3, 0x5, 0x46, 0x0, 0x1, 0xFD, 0xCF, 0x5, 0x46, 0x0, 0x1, 0xFD, 0xAA, 0x5, 0xA, 0x0, 0x1, 0xFD, 0x87, 0x5, 0xA, 0x0, 0x1, 0xFE, 0x1B, 0x4, 0x92, 0x0, 0x1, 0xFE, 0x4D, 0x4, 0x92, 0x0, 0x1, 0xFD, 0xAB, 0x4, 0x92, 0x0, 0x1, 0xFE, 0xB, 0x4, 0x92, 0x0, 0x1, 0xFD, 0xD2, 0x4, 0x92, 0x0, 0x1, 0xFD, 0xD9, 0x4, 0x92, 0x0, 0x1, 0xFE, 0x17, 0x4, 0x92, 0x0, 0x1, 0xFD, 0xA7, 0x4, 0x92, 0x0, 0x1, 0x0, 0x1, 0x4, 0x92, 0x0, 0x1, 0xFD, 0xEB, 0x3, 0xD8, 0x0, 0x1, 0xFD, 0xB8, 0x4, 0x84, 0x0, 0x1, 0xFD, 0xBD, 0x4, 0x92, 0x0, 0x1, 0xFD, 0xC0, 0x4, 0x92, 0x0, 0x1, 0xFD, 0xC8, 0x4, 0x92, 0x0, 0x1, 0xFD, 0x99, 0x4, 0x92, 0x0, 0x1, 0xFD, 0xC2, 0x3, 0xBF, 0x0, 0x1, 0xFD, 0xBB, 0x4, 0x92, 0x0, 0x1, 0xFD, 0xBC, 0x3, 0xCC, 0x0, 0x1, 0xFD, 0xD6, 0x4, 0x92, 0x0, 0x1, 0xFD, 0xD4, 0x4, 0x92, 0x0, 0x1, 0xFD, 0xAE, 0x4, 0x92, 0x0, 0x1, 0xFD, 0xB1, 0x4, 0x92, 0x0, 0x1, 0xFD, 0xF6, 0x4, 0x92, 0x0, 0x1, 0xFD, 0xB9, 0x3, 0xE1, 0x0, 0x1, 0xFD, 0xC7, 0x4, 0x92, 0x0, 0x1, 0xFD, 0x9B, 0x4, 0x92, 0x0, 0x1, 0xFD, 0xB9, 0x3, 0xB3, 0x0, 0x1, 0xFD, 0xB4, 0x3, 0xAE, 0x0, 0x1, 0xFD, 0x8A, 0x4, 0x92, 0x0, 0x1, 0xFD, 0xAA, 0x4, 0x92, 0x0, 0x1, 0xFD, 0xAD, 0x4, 0x92, 0x0, 0x1, 0xFD, 0xBF, 0x4, 0x92, 0x0, 0x1, 0xFD, 0xBA, 0x4, 0x92, 0x0, 0x1, 0xFD, 0xCE, 0x4, 0x92, 0x0, 0x1, 0xFD, 0xB5, 0x4, 0x92, 0x0, 0x1, 0xFD, 0xBE, 0x3, 0xB0, 0x0, 0x1, 0xFD, 0xD8, 0x4, 0x92, 0x0, 0x1, 0xFD, 0xC9, 0x4, 0x92, 0x0, 0x1, 0xFD, 0x93, 0x4, 0x92, 0x0, 0x1, 0xFD, 0xA5, 0x4, 0x92, 0x0, 0x1, 0xFD, 0xC6, 0x4, 0x92, 0x0, 0x1, 0xFD, 0xB3, 0x4, 0x92, 0x0, 0x1, 0xFD, 0xF5, 0x4, 0x92, 0x0, 0x1, 0xFD, 0xF4, 0x4, 0x92, 0x0, 0x1, 0xFD, 0xB9, 0x4, 0x92, 0x0, 0x1, 0xFD, 0x94, 0x4, 0x92, 0x0, 0x1, 0xFD, 0xB8, 0x4, 0x92, 0x0, 0x1, 0xFD, 0xAC, 0x4, 0x92, 0x0, 0x1, 0xFD, 0xBC, 0x4, 0x92, 0x0, 0x1, 0xFD, 0xA6, 0x3, 0xCE, 0x0, 0x1, 0xFD, 0x84, 0x4, 0x92, 0x0, 0x1, 0xFD, 0xCC, 0x4, 0x92, 0x0, 0x1, 0xFD, 0xDC, 0x4, 0x92, 0x0, 0x1, 0xFD, 0xB6, 0x4, 0x92, 0x0, 0x1, 0xFD, 0xBE, 0x4, 0x92, 0x0, 0x1, 0xFD, 0xD7, 0x4, 0x92, 0x0, 0x1, 0xFE, 0x7A, 0x4, 0x92, 0x0, 0x1, 0x1, 0x86, 0x4, 0x92, 0x0, 0x1, 0xFD, 0xE1, 0x4, 0x92, 0x0, 0x1, 0x2, 0x1F, 0x4, 0x92, 0x0, 0x1, 0xFE, 0xC5, 0x4, 0x92, 0x0, 0x1, 0xFC, 0xAA, 0x4, 0x92, 0x0, 0x1, 0xFD, 0xB7, 0x4, 0x92, 0x0, 0x1, 0xFD, 0xD4, 0x4, 0xE8, 0x0, 0x1, 0xFD, 0xBB, 0x5, 0xA, 0x0, 0x1, 0xFD, 0x67, 0x5, 0xA, 0x0, 0x1, 0xFD, 0xB8, 0x5, 0xA, 0x4, 0x91, 0x19, 0x1A, 0x16, 0x2C, 0xF, 0x48, 0x16, 0x50, 0x19, 0x26, 0x9, 0x24, 0xF, 0xE4, 0x16, 0x9E, 0x13, 0xFE, 0x9, 0x2A, 0x16, 0xB0, 0x16, 0xC8, 0x16, 0xE0, 0x37, 0x92, 0x19, 0x32, 0x16, 0x2C, 0xB, 0x9A, 0x17, 0x40, 0x17, 0x58, 0x17, 0x7C, 0x17, 0x94, 0x17, 0xAC, 0x17, 0xC4, 0x9, 0x30, 0x14, 0x82, 0x18, 0x0, 0x19, 0x20, 0x16, 0x32, 0x12, 0x8A, 0x16, 0x56, 0x19, 0x2C, 0x9, 0x36, 0x19, 0x2C, 0x18, 0x6, 0x14, 0x4, 0x9, 0x3C, 0x16, 0xB6, 0x16, 0xCE, 0x16, 0xE6, 0x16, 0xF8, 0x19, 0x38, 0x12, 0x84, 0x9, 0x42, 0x17, 0x46, 0x17, 0x4C, 0x17, 0x82, 0x17, 0x88, 0x17, 0xB2, 0x17, 0xCA, 0x12, 0x90, 0x14, 0x88, 0x56, 0xB0, 0x9, 0x48, 0x9, 0x4E, 0x9, 0x54, 0x9, 0x5A, 0x16, 0x56, 0x9, 0x60, 0x19, 0xDA, 0xC, 0xFC, 0x9, 0x66, 0x9, 0x6C, 0x37, 0x92, 0x16, 0xF8, 0x9, 0x72, 0x9, 0x78, 0x9, 0x7E, 0x16, 0x32, 0x9, 0x84, 0x9, 0x8A, 0x9, 0x90, 0x9, 0x96, 0x14, 0x3A, 0x14, 0x40, 0x9, 0x9C, 0x14, 0x76, 0x14, 0x7C, 0x18, 0x0, 0x56, 0xB0, 0xF, 0xE4, 0xE, 0xA, 0xE, 0xFA, 0x9, 0xA2, 0x9, 0xA8, 0x9, 0xAE, 0x9, 0xB4, 0x9, 0xBA, 0x17, 0x40, 0x9, 0xC0, 0x9, 0xC6, 0xA, 0xC2, 0xD, 0xC2, 0x9, 0xCC, 0x9, 0xD2, 0x9, 0xD8, 0x9, 0xDE, 0x9, 0xE4, 0x9, 0xEA, 0x9, 0xF0, 0x9, 0xF6, 0x14, 0xE8, 0x9, 0xFC, 0x19, 0x20, 0xD, 0x8C, 0xD, 0x8C, 0x17, 0x4C, 0xA, 0x2, 0x19, 0x2C, 0x19, 0x2C, 0xA, 0x8, 0xC, 0xC6, 0xA, 0xE, 0xA, 0x14, 0xA, 0x1A, 0xA, 0x1A, 0xA, 0x20, 0xA, 0x26, 0xA, 0x2C, 0xA, 0x32, 0xA, 0x38, 0xA, 0x3E, 0xA, 0x44, 0xA, 0x4A, 0xA, 0x4A, 0xA, 0x50, 0xA, 0x56, 0x16, 0xF8, 0x14, 0xA6, 0xA, 0x5C, 0xA, 0x62, 0xA, 0x68, 0xA, 0x74, 0xA, 0x6E, 0xA, 0x74, 0xA, 0x7A, 0xA, 0x7A, 0xA, 0x80, 0xA, 0x86, 0xA, 0x8C, 0xA, 0x92, 0xA, 0xF8, 0xA, 0x98, 0xA, 0x98, 0xA, 0x9E, 0xA, 0xA4, 0xA, 0xAA, 0xA, 0xB0, 0xA, 0xB6, 0xD, 0x26, 0xD, 0xF8, 0xA, 0xBC, 0xC, 0xF6, 0xB, 0x58, 0xA, 0xC2, 0xA, 0xC8, 0xA, 0xCE, 0xA, 0xD4, 0xA, 0xD4, 0xA, 0xDA, 0xA, 0xE0, 0xA, 0xE6, 0xA, 0xEC, 0xA, 0xF2, 0xA, 0xF8, 0xA, 0xFE, 0xB, 0x4, 0xD, 0xEC, 0xB, 0xA, 0xB, 0x10, 0xB, 0x16, 0xB, 0x1C, 0xB, 0x22, 0x37, 0xA4, 0xB, 0x28, 0xB, 0x2E, 0xB, 0x34, 0xB, 0x3A, 0xB, 0x40, 0xB, 0x46, 0xB, 0x4C, 0xB, 0x52, 0xB, 0x58, 0xB, 0x5E, 0xB, 0x5E, 0xB, 0x64, 0xB, 0x6A, 0xB, 0x70, 0x14, 0xA6, 0xB, 0x76, 0xB, 0x7C, 0xB, 0x82, 0x12, 0xFC, 0xB, 0x88, 0xB, 0x8E, 0xB, 0x94, 0xB, 0x9A, 0xB, 0xA0, 0xB, 0xA6, 0xB, 0xAC, 0xB, 0xB2, 0xB, 0xB8, 0xB, 0xBE, 0xB, 0xC4, 0xB, 0xCA, 0xC, 0x8A, 0x16, 0x14, 0xB, 0xD0, 0xB, 0xD6, 0xB, 0xDC, 0xB, 0xE2, 0xB, 0xE8, 0xB, 0xEE, 0xB, 0xF4, 0xB, 0xFA, 0x16, 0x1A, 0xC, 0x0, 0xC, 0x6, 0xC, 0xC, 0xC, 0x12, 0xC, 0x18, 0xC, 0x30, 0xC, 0x1E, 0xC, 0x24, 0xC, 0x2A, 0xC, 0x30, 0xC, 0x36, 0xC, 0x3C, 0xC, 0x42, 0xC, 0x48, 0xC, 0x4E, 0x13, 0x6E, 0x16, 0xE, 0xC, 0x54, 0xC, 0x5A, 0xC, 0x60, 0xC, 0x66, 0xC, 0x6C, 0xC, 0x72, 0xC, 0x78, 0xC, 0x7E, 0xC, 0x84, 0xE, 0x4, 0xC, 0x8A, 0xC, 0x90, 0xC, 0x96, 0xC, 0x9C, 0xC, 0xA2, 0xC, 0xB4, 0xC, 0xA8, 0xC, 0xAE, 0xC, 0xB4, 0xD, 0x44, 0xF, 0x24, 0xC, 0xBA, 0xC, 0xC0, 0xC, 0xC6, 0x14, 0x40, 0xC, 0xCC, 0xC, 0xD2, 0xC, 0xD8, 0xC, 0xDE, 0xC, 0xE4, 0xC, 0xEA, 0xC, 0xF0, 0xC, 0xF6, 0xC, 0xFC, 0xE, 0x4, 0xD, 0x2, 0xD, 0x8, 0xD, 0xE, 0xD, 0x14, 0xE, 0xA, 0xD, 0x1A, 0xD, 0x20, 0xD, 0x26, 0xE, 0x22, 0xD, 0x2C, 0xD, 0x32, 0x56, 0xB0, 0xD, 0x38, 0xD, 0x3E, 0x56, 0xB0, 0xD, 0x44, 0xD, 0x4A, 0xD, 0x6E, 0xD, 0x50, 0x54, 0xCA, 0xD, 0x56, 0xD, 0x5C, 0x38, 0x2E, 0xD, 0x62, 0x56, 0xEC, 0xD, 0xA4, 0xD, 0x68, 0xD, 0x6E, 0xE, 0x34, 0xD, 0x74, 0xD, 0x7A, 0xD, 0x80, 0xD, 0x86, 0xD, 0x8C, 0xD, 0x92, 0xD, 0x98, 0xD, 0x9E, 0xD, 0xA4, 0xD, 0xAA, 0xD, 0xB0, 0xD, 0xB6, 0xD, 0xBC, 0xD, 0xC2, 0xD, 0xC8, 0xD, 0xCE, 0xD, 0xD4, 0x16, 0xF8, 0xD, 0xDA, 0x17, 0x46, 0xD, 0xE0, 0xD, 0xE6, 0xD, 0xEC, 0xD, 0xF2, 0x56, 0xB0, 0xD, 0xF8, 0x16, 0xE, 0xD, 0xFE, 0xE, 0x4, 0xE, 0xA, 0xE, 0x10, 0xE, 0x16, 0xE, 0x1C, 0xE, 0x22, 0xE, 0x28, 0xE, 0x2E, 0xE, 0x34, 0xE, 0x3A, 0xE, 0x40, 0xE, 0x46, 0xE, 0x4C, 0x18, 0x66, 0x18, 0xDE, 0x18, 0xC6, 0xE, 0x8E, 0xE, 0x52, 0x12, 0x2A, 0x18, 0xC0, 0x19, 0x2, 0x11, 0xF4, 0xE, 0x58, 0x18, 0xBA, 0x19, 0x4A, 0x18, 0x72, 0x18, 0xB4, 0x11, 0xCA, 0x18, 0x6C, 0x18, 0xF0, 0x18, 0x8A, 0x18, 0xD2, 0x11, 0x9A, 0xE, 0x5E, 0x18, 0xA8, 0xE, 0x64, 0xE, 0x6A, 0x18, 0xCC, 0xE, 0x70, 0xE, 0x76, 0xE, 0x7C, 0xE, 0x82, 0xE, 0x88, 0xE, 0x8E, 0xE, 0x94, 0xE, 0x9A, 0xE, 0xA0, 0xE, 0xA6, 0xE, 0xAC, 0x19, 0x44, 0xE, 0xB2, 0x16, 0xB6, 0x10, 0xEC, 0x18, 0xD8, 0x18, 0xA2, 0x19, 0x3E, 0xE, 0xB8, 0xE, 0xBE, 0xE, 0xC4, 0xE, 0xCA, 0xE, 0xD0, 0xE, 0xFA, 0x19, 0xDA, 0xE, 0xD6, 0xE, 0xDC, 0xE, 0xFA, 0xE, 0xE2, 0xE, 0xE8, 0x19, 0xDA, 0xE, 0xEE, 0x19, 0xDA, 0x19, 0xDA, 0xE, 0xF4, 0xE, 0xFA, 0xF, 0x0, 0xF, 0x6, 0xF, 0xC, 0x16, 0x56, 0x17, 0x88, 0xF, 0x12, 0xF, 0x18, 0xF, 0x1E, 0xF, 0x24, 0xF, 0x2A, 0x19, 0x4A, 0xF, 0x30, 0x18, 0x72, 0x16, 0x50, 0x16, 0x50, 0x18, 0x6, 0x17, 0x7C, 0x17, 0x82, 0xF, 0x36, 0xF, 0x36, 0x14, 0xAC, 0xF, 0x3C, 0x13, 0x1A, 0xF, 0x42, 0x19, 0x1A, 0xF, 0x48, 0x12, 0xEA, 0x12, 0xEA, 0x13, 0xEC, 0x12, 0x60, 0xF, 0x4E, 0xF, 0x4E, 0x14, 0xB8, 0x12, 0x6C, 0xF, 0x54, 0xF, 0x5A, 0xF, 0x5A, 0x14, 0xC4, 0xF, 0x60, 0x13, 0x62, 0xF, 0x66, 0xF, 0x66, 0x14, 0xD0, 0xF, 0x6C, 0x12, 0xCC, 0xF, 0x72, 0xF, 0x72, 0x14, 0xB2, 0xF, 0x78, 0x13, 0x20, 0xF, 0x7E, 0x19, 0x20, 0x12, 0x8A, 0x15, 0x30, 0x15, 0x30, 0x15, 0xC, 0x12, 0x96, 0xF, 0x84, 0xF, 0x84, 0x14, 0xBE, 0x12, 0xA2, 0xF, 0x8A, 0x12, 0x24, 0x12, 0x24, 0x14, 0xCA, 0xF, 0x90, 0x13, 0x68, 0xF, 0x96, 0xF, 0x96, 0x14, 0xD6, 0xF, 0x9C, 0x12, 0xD2, 0x13, 0x98, 0x18, 0x30, 0xF, 0xA2, 0x18, 0x2A, 0x13, 0xCE, 0x19, 0x1A, 0x19, 0x20, 0x16, 0x38, 0x16, 0x3E, 0xF, 0xB4, 0xF, 0xBA, 0xF, 0xA8, 0xF, 0xAE, 0xF, 0xB4, 0xF, 0xBA, 0xF, 0xC0, 0x16, 0x56, 0xF, 0xC6, 0x16, 0x80, 0x16, 0x62, 0x16, 0x68, 0xF, 0xCC, 0xF, 0xDE, 0x19, 0x26, 0x19, 0x2C, 0x13, 0xEC, 0x15, 0xC, 0x15, 0x6, 0x15, 0xC, 0xF, 0xD2, 0x16, 0x68, 0xF, 0xD8, 0xF, 0xDE, 0xF, 0xE4, 0x19, 0x2C, 0x15, 0xD2, 0x15, 0xD8, 0xF, 0xEA, 0xF, 0xF0, 0x18, 0x48, 0xF, 0xF6, 0x18, 0x42, 0xF, 0xFC, 0x13, 0xFE, 0x14, 0x4, 0x10, 0x2, 0x10, 0x8, 0x12, 0xD8, 0x16, 0xB0, 0x16, 0xB6, 0x10, 0xE, 0x10, 0x14, 0x16, 0xC8, 0x16, 0xCE, 0x16, 0xC8, 0x16, 0xCE, 0x16, 0xC8, 0x16, 0xCE, 0x15, 0x36, 0x15, 0x3C, 0x37, 0x92, 0x16, 0xF8, 0x10, 0x1A, 0x10, 0x20, 0x16, 0xF8, 0x15, 0x1E, 0x15, 0x24, 0x10, 0x26, 0x11, 0x46, 0x10, 0x2C, 0x10, 0x32, 0x10, 0x38, 0x10, 0x3E, 0x17, 0x40, 0x17, 0x46, 0x10, 0x44, 0x10, 0x4A, 0x10, 0x50, 0x10, 0x56, 0x10, 0x5C, 0x10, 0x62, 0x17, 0x58, 0x17, 0x4C, 0x17, 0x58, 0x17, 0x4C, 0x10, 0x5C, 0x10, 0x62, 0x17, 0x7C, 0x17, 0x82, 0x17, 0x7C, 0x17, 0x82, 0x10, 0x68, 0x17, 0x82, 0x10, 0x6E, 0x10, 0x74, 0x10, 0x7A, 0x10, 0x80, 0x10, 0x86, 0x10, 0x8C, 0x10, 0x92, 0x10, 0x98, 0x10, 0x9E, 0x10, 0xA4, 0x17, 0x94, 0x17, 0x88, 0x10, 0xAA, 0x10, 0xB0, 0x10, 0xB6, 0x18, 0x6, 0x12, 0x4E, 0x10, 0xBC, 0x10, 0xC2, 0x10, 0xC8, 0x10, 0xCE, 0x17, 0xF4, 0x17, 0xFA, 0x10, 0xD4, 0x10, 0xDA, 0x10, 0xE0, 0x10, 0xE6, 0x10, 0xEC, 0x10, 0xEC, 0x18, 0xC0, 0x10, 0xF2, 0x10, 0xF2, 0x10, 0xF8, 0x10, 0xFE, 0x11, 0x4, 0x11, 0xA, 0x19, 0x3E, 0x18, 0xD8, 0x11, 0x10, 0x11, 0x10, 0x11, 0x82, 0x18, 0x7E, 0x11, 0x16, 0x11, 0x16, 0x11, 0x1C, 0x18, 0x90, 0x11, 0x22, 0x18, 0xFC, 0x18, 0xFC, 0x11, 0x28, 0x11, 0x2E, 0x11, 0x34, 0x11, 0x3A, 0x11, 0x3A, 0x11, 0x40, 0x11, 0x46, 0x19, 0x14, 0x11, 0x4C, 0x11, 0x52, 0x19, 0x3E, 0x11, 0x58, 0x11, 0x64, 0x11, 0x5E, 0x11, 0x64, 0x11, 0x6A, 0x11, 0x70, 0x11, 0x76, 0x11, 0x7C, 0x19, 0x44, 0x11, 0x82, 0x11, 0x88, 0x11, 0x8E, 0x11, 0x94, 0x11, 0x9A, 0x11, 0xA0, 0x11, 0xA6, 0x11, 0xAC, 0x11, 0xB2, 0x18, 0x8A, 0x11, 0xB8, 0x11, 0xBE, 0x18, 0x6C, 0x11, 0xC4, 0x11, 0xCA, 0x11, 0xCA, 0x11, 0xCA, 0x11, 0xD0, 0x18, 0x72, 0x11, 0xD6, 0x11, 0xDC, 0x11, 0xE2, 0x11, 0xE8, 0x19, 0x4A, 0x11, 0xEE, 0x11, 0xF4, 0x11, 0xFA, 0x12, 0x0, 0x12, 0x6, 0x19, 0x2, 0x12, 0x6, 0x18, 0xC0, 0x12, 0xC, 0x18, 0xC0, 0x12, 0x12, 0x12, 0x18, 0x15, 0x9C, 0x12, 0x1E, 0x12, 0x24, 0x12, 0x2A, 0x12, 0x30, 0x12, 0x36, 0x18, 0x78, 0x12, 0x3C, 0x12, 0x42, 0x12, 0x48, 0x12, 0x6C, 0x12, 0x4E, 0x12, 0x54, 0x12, 0x5A, 0x12, 0x60, 0x12, 0x66, 0x12, 0x6C, 0x16, 0xA4, 0x12, 0x72, 0x12, 0x78, 0x19, 0x20, 0x19, 0x2C, 0x12, 0x7E, 0x12, 0x84, 0x12, 0x8A, 0x12, 0x90, 0x12, 0x96, 0x12, 0x9C, 0x17, 0x4C, 0x14, 0x4, 0x12, 0xA2, 0x12, 0xA8, 0x12, 0xAE, 0x12, 0xB4, 0x12, 0xBA, 0x12, 0xB4, 0x12, 0xBA, 0x12, 0xC0, 0x12, 0xC6, 0x12, 0xCC, 0x12, 0xD2, 0x12, 0xD8, 0x12, 0xDE, 0x12, 0xE4, 0x19, 0x1A, 0x19, 0x20, 0x12, 0xEA, 0x12, 0xF0, 0x15, 0x30, 0x12, 0xF6, 0x12, 0xFC, 0x13, 0x2, 0x13, 0x8, 0x13, 0xE, 0x13, 0x14, 0x18, 0x2A, 0x13, 0xCE, 0x13, 0x1A, 0x13, 0x20, 0x16, 0x62, 0x16, 0x68, 0x13, 0x26, 0x13, 0x2C, 0x13, 0x32, 0x13, 0x38, 0x13, 0x3E, 0x13, 0x44, 0x13, 0x4A, 0x13, 0x50, 0x13, 0x56, 0x13, 0x5C, 0x13, 0x62, 0x13, 0x68, 0x13, 0x6E, 0x13, 0x74, 0x13, 0x7A, 0x13, 0x80, 0x13, 0x86, 0x13, 0x8C, 0x16, 0x8, 0x13, 0x92, 0x13, 0x98, 0x13, 0x9E, 0x13, 0xA4, 0x13, 0xAA, 0x13, 0xB0, 0x13, 0xB6, 0x13, 0xBC, 0x19, 0x1A, 0x19, 0x20, 0x13, 0xC2, 0x13, 0xC8, 0x19, 0x1A, 0x19, 0x20, 0x19, 0x1A, 0x19, 0x20, 0x19, 0x1A, 0x19, 0x20, 0x19, 0x1A, 0x19, 0x20, 0x14, 0xAC, 0x14, 0xB2, 0x19, 0x1A, 0x19, 0x20, 0x19, 0x1A, 0x19, 0x20, 0x19, 0x1A, 0x19, 0x20, 0x19, 0x1A, 0x19, 0x20, 0x18, 0x2A, 0x13, 0xCE, 0x19, 0x26, 0x19, 0x2C, 0x13, 0xD4, 0x13, 0xDA, 0x13, 0xE0, 0x13, 0xE6, 0x19, 0x26, 0x19, 0x2C, 0x19, 0x26, 0x19, 0x2C, 0x19, 0x26, 0x19, 0x2C, 0x19, 0x26, 0x19, 0x2C, 0x13, 0xEC, 0x15, 0xC, 0x13, 0xF2, 0x13, 0xF8, 0x13, 0xFE, 0x14, 0x4, 0x19, 0x32, 0x19, 0x38, 0x14, 0xA, 0x14, 0x10, 0x19, 0x32, 0x19, 0x38, 0x19, 0x32, 0x19, 0x38, 0x19, 0x32, 0x19, 0x38, 0x19, 0x32, 0x19, 0x38, 0x14, 0xC4, 0x14, 0xCA, 0x14, 0x16, 0x14, 0x1C, 0x14, 0x16, 0x14, 0x1C, 0x14, 0x22, 0x14, 0x28, 0x14, 0x2E, 0x14, 0x34, 0x14, 0x3A, 0x14, 0x40, 0x17, 0x94, 0x17, 0x88, 0x14, 0x46, 0x14, 0x4C, 0x14, 0x52, 0x14, 0x58, 0x14, 0x52, 0x14, 0x58, 0x14, 0x5E, 0x14, 0x64, 0x14, 0x6A, 0x14, 0x70, 0x14, 0x76, 0x14, 0x7C, 0x14, 0x82, 0x14, 0x88, 0x14, 0x8E, 0x14, 0x94, 0x14, 0x9A, 0x14, 0xA0, 0x14, 0xA6, 0x14, 0xAC, 0x14, 0xB2, 0x14, 0xB8, 0x14, 0xBE, 0x14, 0xC4, 0x14, 0xCA, 0x14, 0xD0, 0x14, 0xD6, 0x17, 0x94, 0x17, 0x9A, 0x17, 0x94, 0x14, 0xE2, 0x17, 0x94, 0x14, 0xDC, 0x17, 0x94, 0x14, 0xE2, 0x14, 0xE8, 0x19, 0x1A, 0x14, 0xEE, 0x19, 0x1A, 0x14, 0xF4, 0x14, 0xFA, 0x15, 0x0, 0x15, 0x6, 0x15, 0xC, 0x15, 0x12, 0x15, 0x18, 0x19, 0x32, 0x19, 0x38, 0x15, 0x1E, 0x15, 0x24, 0x15, 0x2A, 0x15, 0x30, 0x15, 0x36, 0x15, 0x3C, 0x15, 0x42, 0x15, 0x48, 0x15, 0x4E, 0x15, 0x54, 0x15, 0x5A, 0x15, 0x60, 0x15, 0x66, 0x15, 0x6C, 0x15, 0x72, 0x15, 0x78, 0x15, 0x7E, 0x15, 0x84, 0x15, 0x8A, 0x15, 0x90, 0x15, 0x96, 0x15, 0x9C, 0x15, 0xA2, 0x15, 0xA8, 0x15, 0xAE, 0x15, 0xB4, 0x15, 0xBA, 0x15, 0xC0, 0x15, 0xC6, 0x15, 0xCC, 0x15, 0xD2, 0x15, 0xD8, 0x15, 0xDE, 0x15, 0xE4, 0x19, 0x26, 0x19, 0x2C, 0x19, 0x32, 0x15, 0xEA, 0x19, 0x32, 0x15, 0xF0, 0x15, 0xF6, 0x15, 0xFC, 0x19, 0x32, 0x16, 0x2, 0x18, 0x60, 0x16, 0x8, 0x16, 0xE, 0x16, 0x14, 0x16, 0x1A, 0x16, 0x20, 0x17, 0x1C, 0x16, 0x26, 0x16, 0x2C, 0x16, 0x32, 0x16, 0x2C, 0x16, 0x32, 0x16, 0x38, 0x16, 0x3E, 0x16, 0x44, 0x16, 0x4A, 0x16, 0x50, 0x16, 0x56, 0x16, 0x50, 0x16, 0x56, 0x16, 0x50, 0x16, 0x56, 0x16, 0x50, 0x16, 0x56, 0x19, 0x26, 0x16, 0x5C, 0x19, 0x26, 0x16, 0x5C, 0x19, 0x26, 0x19, 0x2C, 0x19, 0x26, 0x19, 0x2C, 0x16, 0x62, 0x16, 0x68, 0x16, 0x6E, 0x16, 0x74, 0x16, 0x7A, 0x16, 0x80, 0x16, 0x86, 0x16, 0x8C, 0x16, 0x9E, 0x18, 0x6, 0x16, 0x92, 0x16, 0x98, 0x16, 0x9E, 0x18, 0x6, 0x16, 0xA4, 0x16, 0xAA, 0x16, 0xB0, 0x16, 0xB6, 0x16, 0xB0, 0x16, 0xB6, 0x16, 0xC8, 0x16, 0xCE, 0x16, 0xBC, 0x16, 0xC2, 0x16, 0xC8, 0x16, 0xCE, 0x16, 0xC8, 0x16, 0xCE, 0x16, 0xD4, 0x16, 0xDA, 0x16, 0xE0, 0x16, 0xE6, 0x16, 0xEC, 0x16, 0xF2, 0x37, 0x92, 0x16, 0xF8, 0x37, 0x92, 0x16, 0xF8, 0x37, 0x92, 0x16, 0xF8, 0x19, 0x32, 0x16, 0xFE, 0x19, 0x32, 0x17, 0x4, 0x19, 0x32, 0x17, 0xA, 0x19, 0x32, 0x17, 0xA, 0x17, 0x10, 0x17, 0x16, 0x17, 0x1C, 0x17, 0x22, 0x17, 0x28, 0x17, 0x2E, 0x17, 0x40, 0x17, 0x46, 0x17, 0x34, 0x17, 0x3A, 0x17, 0x40, 0x17, 0x46, 0x17, 0x64, 0x17, 0x6A, 0x17, 0x58, 0x17, 0x4C, 0x17, 0x58, 0x17, 0x52, 0x17, 0x58, 0x17, 0x5E, 0x17, 0x64, 0x17, 0x6A, 0x17, 0x70, 0x17, 0x76, 0x17, 0x7C, 0x17, 0x82, 0x17, 0x7C, 0x17, 0x82, 0x17, 0x7C, 0x17, 0x82, 0x17, 0x94, 0x17, 0x88, 0x17, 0x94, 0x17, 0x88, 0x17, 0x94, 0x17, 0x88, 0x17, 0x94, 0x17, 0x8E, 0x17, 0x94, 0x17, 0x9A, 0x17, 0xA0, 0x17, 0xA6, 0x17, 0xAC, 0x17, 0xB2, 0x17, 0xB8, 0x17, 0xBE, 0x17, 0xC4, 0x17, 0xCA, 0x17, 0xD0, 0x17, 0xD6, 0x17, 0xDC, 0x17, 0xE2, 0x17, 0xE8, 0x17, 0xEE, 0x17, 0xF4, 0x17, 0xFA, 0x18, 0x0, 0x56, 0xB0, 0x18, 0x0, 0x56, 0xB0, 0x18, 0x6, 0x18, 0xC, 0x18, 0x12, 0x18, 0x18, 0x19, 0x20, 0x18, 0x1E, 0x18, 0x24, 0x18, 0x2A, 0x18, 0x30, 0x18, 0x36, 0x18, 0x3C, 0x18, 0x42, 0x18, 0x48, 0x18, 0x4E, 0x18, 0x54, 0x18, 0x5A, 0x18, 0x60, 0x19, 0x3E, 0x19, 0x44, 0x18, 0xD2, 0x18, 0x8A, 0x19, 0x4A, 0x18, 0xDE, 0x19, 0x3E, 0x18, 0xA2, 0x19, 0x44, 0x18, 0x66, 0x18, 0xD2, 0x18, 0x8A, 0x18, 0x6C, 0x18, 0xB4, 0x18, 0x72, 0x19, 0x4A, 0x18, 0xBA, 0x18, 0xC0, 0x18, 0xDE, 0x18, 0xC6, 0x18, 0x90, 0x18, 0x78, 0x18, 0x7E, 0x18, 0x84, 0x19, 0x2, 0x18, 0x8A, 0x18, 0x90, 0x18, 0xF0, 0x18, 0x96, 0x18, 0x9C, 0x19, 0x3E, 0x18, 0xA2, 0x18, 0xA8, 0x19, 0x44, 0x18, 0xAE, 0x18, 0xB4, 0x18, 0xD2, 0x19, 0x4A, 0x18, 0xBA, 0x18, 0xD8, 0x18, 0xC0, 0x18, 0xC6, 0x18, 0xCC, 0x18, 0xD2, 0x18, 0xD8, 0x18, 0xDE, 0x18, 0xE4, 0x18, 0xEA, 0x18, 0xF0, 0x18, 0xF6, 0x18, 0xFC, 0x19, 0x2, 0x19, 0x8, 0x19, 0x8, 0x19, 0xE, 0x19, 0x14, 0x19, 0x1A, 0x19, 0x20, 0x19, 0x26, 0x19, 0x2C, 0x19, 0x32, 0x19, 0x38, 0x19, 0x3E, 0x19, 0x44, 0x19, 0x4A, 0x19, 0x50, 0x19, 0x50, 0x19, 0x56, 0x19, 0x5C, 0x19, 0x62, 0x19, 0x68, 0x19, 0x6E, 0x19, 0x74, 0x19, 0x7A, 0x19, 0x7A, 0x19, 0x98, 0x19, 0x80, 0x19, 0x86, 0x19, 0x8C, 0x19, 0x92, 0x19, 0x98, 0x19, 0x9E, 0x19, 0xA4, 0x19, 0xAA, 0x19, 0xB0, 0x19, 0xB0, 0x19, 0xB6, 0x19, 0xBC, 0x19, 0xC2, 0x19, 0xC8, 0x19, 0xCE, 0x19, 0xD4, 0x19, 0xDA, 0x19, 0xDA, 0x0, 0x1, 0x2, 0x73, 0x6, 0x4C, 0x0, 0x1, 0x3, 0x52, 0x6, 0x41, 0x0, 0x1, 0x2, 0x87, 0x6, 0x4C, 0x0, 0x1, 0x1, 0xE0, 0x6, 0xBE, 0x0, 0x1, 0x0, 0xDF, 0x6, 0x40, 0x0, 0x1, 0x2, 0x19, 0x5, 0xA, 0x0, 0x1, 0x3, 0xA7, 0x6, 0x4C, 0x0, 0x1, 0x2, 0xCB, 0x6, 0x8A, 0x0, 0x1, 0x3, 0x5C, 0x5, 0xB, 0x0, 0x1, 0x2, 0x1C, 0x5, 0x7, 0x0, 0x1, 0x2, 0xDF, 0x6, 0x48, 0x0, 0x1, 0x1, 0x1F, 0x6, 0x40, 0x0, 0x1, 0x1, 0x28, 0x6, 0x9B, 0x0, 0x1, 0x3, 0xC9, 0x6, 0x40, 0x0, 0x1, 0x3, 0xA7, 0x5, 0xA, 0x0, 0x1, 0x1, 0x9B, 0x6, 0xBE, 0x0, 0x1, 0x2, 0x9F, 0x6, 0x40, 0x0, 0x1, 0x2, 0x72, 0x6, 0x40, 0x0, 0x1, 0x1, 0x63, 0x6, 0x48, 0x0, 0x1, 0x1, 0x63, 0x6, 0x9B, 0x0, 0x1, 0x2, 0x4A, 0x6, 0x48, 0x0, 0x1, 0x1, 0x55, 0x6, 0x40, 0x0, 0x1, 0x2, 0x86, 0x6, 0x4C, 0x0, 0x1, 0x3, 0x22, 0x6, 0x40, 0x0, 0x1, 0x3, 0x5F, 0x6, 0x41, 0x0, 0x1, 0x1, 0x7B, 0x6, 0x40, 0x0, 0x1, 0x1, 0xAA, 0x5, 0xA, 0x0, 0x1, 0x2, 0xCB, 0x6, 0x40, 0x0, 0x1, 0x2, 0x1, 0x5, 0xA, 0x0, 0x1, 0x2, 0x65, 0x5, 0xA, 0x0, 0x1, 0x2, 0x85, 0x6, 0xA4, 0x0, 0x1, 0x1, 0xF5, 0x5, 0xA, 0x0, 0x1, 0x2, 0x4E, 0x5, 0xA, 0x0, 0x1, 0x2, 0x14, 0x6, 0x63, 0x0, 0x1, 0x2, 0x14, 0x6, 0x40, 0x0, 0x1, 0x2, 0xE, 0x5, 0xA, 0x0, 0x1, 0x2, 0x28, 0x5, 0xA, 0x0, 0x1, 0x1, 0x89, 0x5, 0xA, 0x0, 0x1, 0x2, 0x72, 0x5, 0xA, 0x0, 0x1, 0x2, 0x90, 0x5, 0xA, 0x0, 0x1, 0x2, 0x35, 0x5, 0xA, 0x0, 0x1, 0x2, 0x70, 0x6, 0xA4, 0x0, 0x1, 0x1, 0x63, 0x6, 0x40, 0x0, 0x1, 0x0, 0xF1, 0x5, 0xA, 0x0, 0x1, 0x1, 0x6A, 0x5, 0xA, 0x0, 0x1, 0x1, 0x7E, 0x6, 0x40, 0x0, 0x1, 0x2, 0x4F, 0x6, 0x40, 0x0, 0x1, 0x1, 0x31, 0x6, 0x40, 0x0, 0x1, 0x2, 0x75, 0x5, 0xA, 0x0, 0x1, 0x3, 0x80, 0x5, 0xA, 0x0, 0x1, 0x3, 0x85, 0x5, 0xA, 0x0, 0x1, 0x2, 0xA2, 0x5, 0xA, 0x0, 0x1, 0x3, 0x8E, 0x5, 0xA, 0x0, 0x1, 0x3, 0x48, 0x5, 0xA, 0x0, 0x1, 0x2, 0x6A, 0x6, 0x40, 0x0, 0x1, 0x0, 0xE8, 0x6, 0x40, 0x0, 0x1, 0x0, 0xE8, 0x5, 0xA, 0x0, 0x1, 0x1, 0xED, 0x5, 0xA, 0x0, 0x1, 0x0, 0xFA, 0x5, 0xA, 0x0, 0x1, 0x1, 0x75, 0x5, 0xA, 0x0, 0x1, 0x2, 0x1B, 0x5, 0xA, 0x0, 0x1, 0x2, 0x50, 0x5, 0xA, 0x0, 0x1, 0x2, 0x54, 0x6, 0xA4, 0x0, 0x1, 0x0, 0xD8, 0x5, 0xA, 0x0, 0x1, 0x3, 0x13, 0x6, 0xA4, 0x0, 0x1, 0x0, 0xEE, 0x6, 0x40, 0x0, 0x1, 0x1, 0x38, 0x6, 0x40, 0x0, 0x1, 0x2, 0x9C, 0x5, 0xA, 0x0, 0x1, 0x1, 0xFA, 0x5, 0xA, 0x0, 0x1, 0x2, 0x1E, 0x5, 0xA, 0x0, 0x1, 0x1, 0xF4, 0x5, 0xA, 0x0, 0x1, 0x1, 0xEC, 0x5, 0xA, 0x0, 0x1, 0x2, 0x3A, 0x5, 0xA, 0x0, 0x1, 0x1, 0xF4, 0x6, 0x61, 0x0, 0x1, 0x2, 0x3A, 0x6, 0x61, 0x0, 0x1, 0x2, 0x0, 0x6, 0x61, 0x0, 0x1, 0x2, 0x3B, 0x6, 0x61, 0x0, 0x1, 0x2, 0xC2, 0x6, 0x61, 0x0, 0x1, 0x2, 0x17, 0x5, 0xA, 0x0, 0x1, 0x2, 0x5C, 0x5, 0xA, 0x0, 0x1, 0x2, 0x49, 0x6, 0x40, 0x0, 0x1, 0x0, 0xF6, 0x5, 0xA, 0x0, 0x1, 0x2, 0x31, 0x6, 0x40, 0x0, 0x1, 0x1, 0xF0, 0x6, 0x61, 0x0, 0x1, 0x2, 0x37, 0x6, 0x61, 0x0, 0x1, 0x5, 0xA4, 0x6, 0x40, 0x0, 0x1, 0x5, 0x84, 0x6, 0x40, 0x0, 0x1, 0x3, 0xCD, 0x6, 0x40, 0x0, 0x1, 0x2, 0x7, 0x6, 0xA4, 0x0, 0x1, 0x4, 0x47, 0x6, 0x40, 0x0, 0x1, 0x4, 0xA9, 0x6, 0xA4, 0x0, 0x1, 0x3, 0x66, 0x6, 0x40, 0x0, 0x1, 0x3, 0x19, 0x6, 0x40, 0x0, 0x1, 0x1, 0xE3, 0x6, 0x40, 0x0, 0x1, 0x1, 0xEE, 0x6, 0x40, 0x0, 0x1, 0x2, 0xAC, 0x5, 0xA, 0x0, 0x1, 0x2, 0x6E, 0x6, 0x48, 0x0, 0x1, 0x2, 0x6F, 0x5, 0xA, 0x0, 0x1, 0x2, 0x37, 0x5, 0x9, 0x0, 0x1, 0x1, 0x2E, 0x4, 0xF5, 0x0, 0x1, 0x2, 0x57, 0x5, 0x0, 0x0, 0x1, 0x2, 0x2B, 0x4, 0xFC, 0x0, 0x1, 0x3, 0x4A, 0x4, 0xFA, 0x0, 0x1, 0x2, 0x37, 0x6, 0x4C, 0x0, 0x1, 0x3, 0x3C, 0x4, 0xFC, 0x0, 0x1, 0x2, 0xBC, 0x6, 0x40, 0x0, 0x1, 0x3, 0xD5, 0x6, 0x48, 0x0, 0x1, 0x2, 0x63, 0x6, 0x55, 0x0, 0x1, 0x2, 0xD4, 0x6, 0x48, 0x0, 0x1, 0x2, 0x91, 0x6, 0x48, 0x0, 0x1, 0x2, 0xCF, 0x6, 0x48, 0x0, 0x1, 0x3, 0x81, 0x6, 0x48, 0x0, 0x1, 0x2, 0xA3, 0x6, 0x56, 0x0, 0x1, 0x3, 0x94, 0x6, 0x40, 0x0, 0x1, 0x1, 0xAD, 0x4, 0xFC, 0x0, 0x1, 0x2, 0xBF, 0x4, 0xF5, 0x0, 0x1, 0x3, 0x3E, 0x4, 0xFC, 0x0, 0x1, 0x2, 0xE, 0x5, 0x9, 0x0, 0x1, 0x2, 0x4F, 0x4, 0xFC, 0x0, 0x1, 0x2, 0x30, 0x4, 0xFC, 0x0, 0x1, 0x2, 0x82, 0x4, 0xF5, 0x0, 0x1, 0x2, 0xF6, 0x4, 0xF5, 0x0, 0x1, 0x2, 0x53, 0x4, 0xF5, 0x0, 0x1, 0x1, 0xFB, 0x4, 0xF5, 0x0, 0x1, 0x2, 0xE7, 0x6, 0xCC, 0x0, 0x1, 0x2, 0x67, 0x4, 0xF5, 0x0, 0x1, 0x2, 0x26, 0x4, 0xFC, 0x0, 0x1, 0x3, 0x2C, 0x4, 0xF5, 0x0, 0x1, 0x3, 0x33, 0x4, 0xFC, 0x0, 0x1, 0x2, 0x18, 0x5, 0xA, 0x0, 0x1, 0x3, 0x3B, 0x4, 0xF5, 0x0, 0x1, 0x2, 0xD, 0x4, 0xF5, 0x0, 0x1, 0x2, 0x47, 0x5, 0xA, 0x0, 0x1, 0x3, 0x9F, 0x6, 0x41, 0x0, 0x1, 0x3, 0x22, 0x4, 0xFC, 0x0, 0x1, 0x1, 0xD5, 0x6, 0xCC, 0x0, 0x1, 0x2, 0x80, 0x6, 0x1C, 0x0, 0x1, 0x2, 0x1C, 0x4, 0xEF, 0x0, 0x1, 0x2, 0x48, 0x5, 0x50, 0x0, 0x1, 0x3, 0x29, 0x6, 0x40, 0x0, 0x1, 0x2, 0x9A, 0x6, 0x61, 0x0, 0x1, 0x2, 0x47, 0x5, 0xC, 0x0, 0x1, 0x2, 0xD4, 0x7, 0x6E, 0x0, 0x1, 0x2, 0x4F, 0x6, 0x23, 0x0, 0x1, 0x2, 0xD7, 0x6, 0x56, 0x0, 0x1, 0x2, 0x8A, 0x6, 0x4C, 0x0, 0x1, 0x2, 0x81, 0x6, 0x19, 0x0, 0x1, 0x2, 0x5C, 0x6, 0x4C, 0x0, 0x1, 0x1, 0x11, 0x6, 0x4C, 0x0, 0x1, 0x2, 0xC5, 0x6, 0x4C, 0x0, 0x1, 0x2, 0x21, 0x5, 0xA, 0x0, 0x1, 0x2, 0x63, 0x6, 0x4C, 0x0, 0x1, 0x2, 0xA4, 0x6, 0x61, 0x0, 0x1, 0x3, 0x4D, 0x5, 0xA, 0x0, 0x1, 0x2, 0x71, 0x5, 0xA, 0x0, 0x1, 0x2, 0x3D, 0x5, 0xA, 0x0, 0x1, 0x2, 0xA7, 0x5, 0xA, 0x0, 0x1, 0x2, 0x4B, 0x5, 0xA, 0x0, 0x1, 0x2, 0xF, 0x5, 0xA, 0x0, 0x1, 0x1, 0x5, 0x5, 0xA, 0x0, 0x1, 0x3, 0x1, 0x5, 0xA, 0x0, 0x1, 0x2, 0xB, 0x5, 0xA, 0x0, 0x1, 0x1, 0x23, 0x5, 0xA, 0x0, 0x1, 0x2, 0xF6, 0x5, 0xA, 0x0, 0x1, 0x2, 0x54, 0x5, 0xA, 0x0, 0x1, 0x1, 0xF6, 0x5, 0xA, 0x0, 0x1, 0x3, 0x73, 0x5, 0xA, 0x0, 0x1, 0x1, 0xF3, 0x5, 0xA, 0x0, 0x1, 0x2, 0x4A, 0x5, 0xA, 0x0, 0x1, 0x2, 0x3F, 0x5, 0xA, 0x0, 0x1, 0x1, 0xFB, 0x5, 0xA, 0x0, 0x1, 0x2, 0x79, 0x5, 0xA, 0x0, 0x1, 0x2, 0xF8, 0x5, 0xA, 0x0, 0x1, 0x1, 0xEA, 0x5, 0xA, 0x0, 0x1, 0x2, 0xD, 0x5, 0xA, 0x0, 0x1, 0x2, 0x67, 0x5, 0xA, 0x0, 0x1, 0x2, 0x4F, 0x5, 0xA, 0x0, 0x1, 0x2, 0x56, 0x5, 0xA, 0x0, 0x1, 0x2, 0xB1, 0x5, 0xA, 0x0, 0x1, 0x3, 0x4E, 0x5, 0xA, 0x0, 0x1, 0x2, 0xFB, 0x6, 0x40, 0x0, 0x1, 0x2, 0x67, 0x6, 0xA4, 0x0, 0x1, 0x2, 0xEB, 0x5, 0xA, 0x0, 0x1, 0x2, 0x5B, 0x5, 0xA, 0x0, 0x1, 0x2, 0x36, 0x5, 0xA, 0x0, 0x1, 0x1, 0x67, 0x6, 0x40, 0x0, 0x1, 0x2, 0x10, 0x5, 0xA, 0x0, 0x1, 0x2, 0x69, 0x5, 0xA, 0x0, 0x1, 0x2, 0x23, 0x5, 0xA, 0x0, 0x1, 0x4, 0xAB, 0x6, 0x40, 0x0, 0x1, 0x1, 0x63, 0x5, 0xA, 0x0, 0x1, 0x2, 0x97, 0x5, 0xA, 0x0, 0x1, 0x2, 0xB0, 0x5, 0xA, 0x0, 0x1, 0x2, 0x76, 0x5, 0xA, 0x0, 0x1, 0x2, 0x8D, 0x6, 0x40, 0x0, 0x1, 0x2, 0xD, 0x6, 0x40, 0x0, 0x1, 0x1, 0xF3, 0x6, 0xA1, 0x0, 0x1, 0x2, 0x2A, 0x5, 0xA, 0x0, 0x1, 0x2, 0x57, 0x6, 0x40, 0x0, 0x1, 0x1, 0x17, 0x6, 0xA4, 0x0, 0x1, 0x3, 0xCA, 0x5, 0xA, 0x0, 0x1, 0x2, 0x88, 0x5, 0xA, 0x0, 0x1, 0x2, 0x1C, 0x5, 0xA, 0x0, 0x1, 0x2, 0x45, 0x6, 0xA4, 0x0, 0x1, 0x1, 0xFD, 0x5, 0xA, 0x0, 0x1, 0x2, 0x5, 0x5, 0xA, 0x0, 0x1, 0x2, 0x30, 0x5, 0xA, 0x0, 0x1, 0x2, 0x18, 0x6, 0x40, 0x0, 0x1, 0x2, 0x4D, 0x5, 0xA, 0x0, 0x1, 0x2, 0x34, 0x5, 0xA, 0x0, 0x1, 0x2, 0x24, 0x5, 0xA, 0x0, 0x1, 0x2, 0x11, 0x5, 0xA, 0x0, 0x1, 0x1, 0x9, 0x6, 0x40, 0x0, 0x1, 0x1, 0xFE, 0x5, 0xA, 0x0, 0x1, 0x2, 0x77, 0x6, 0xA4, 0x0, 0x1, 0x2, 0x3B, 0x5, 0xA, 0x0, 0x1, 0x2, 0x46, 0x5, 0xA, 0x0, 0x1, 0x1, 0x7F, 0x6, 0x48, 0x0, 0x1, 0x1, 0x7D, 0x6, 0x40, 0x0, 0x1, 0x1, 0x72, 0x6, 0x48, 0x0, 0x1, 0x1, 0x6F, 0x5, 0x3, 0x0, 0x1, 0x2, 0x3B, 0x5, 0x28, 0x0, 0x1, 0x2, 0x5C, 0x5, 0x28, 0x0, 0x1, 0x2, 0x15, 0x5, 0x28, 0x0, 0x1, 0x2, 0x50, 0x5, 0x28, 0x0, 0x1, 0x3, 0x1E, 0x5, 0x28, 0x0, 0x1, 0x2, 0x71, 0x5, 0x28, 0x0, 0x1, 0x2, 0x31, 0x5, 0x28, 0x0, 0x1, 0x2, 0x33, 0x5, 0x28, 0x0, 0x1, 0x3, 0xC, 0x5, 0x28, 0x0, 0x1, 0x2, 0x2B, 0x5, 0x28, 0x0, 0x1, 0x3, 0x3, 0x5, 0x28, 0x0, 0x1, 0x2, 0x8A, 0x5, 0x28, 0x0, 0x1, 0x2, 0xD7, 0x5, 0x28, 0x0, 0x1, 0x2, 0x6F, 0x5, 0x28, 0x0, 0x1, 0x2, 0x45, 0x5, 0x28, 0x0, 0x1, 0x2, 0x61, 0x5, 0x28, 0x0, 0x1, 0x2, 0x72, 0x6, 0x4C, 0x0, 0x1, 0x2, 0xDE, 0x6, 0x5E, 0x0, 0x1, 0x2, 0xD5, 0x6, 0x5E, 0x0, 0x1, 0x2, 0xC0, 0x6, 0x5E, 0x0, 0x1, 0x2, 0xD9, 0x6, 0x66, 0x0, 0x1, 0x4, 0x5E, 0x6, 0x69, 0x0, 0x1, 0x1, 0x7A, 0x4, 0xE8, 0x0, 0x1, 0x1, 0x70, 0x5, 0x3, 0x0, 0x1, 0x2, 0x4A, 0x5, 0x3, 0x0, 0x1, 0x0, 0xF2, 0x6, 0x55, 0x0, 0x1, 0x1, 0x34, 0x6, 0x72, 0x0, 0x1, 0x0, 0xEC, 0x3, 0x20, 0x0, 0x1, 0x1, 0x11, 0x4, 0xE8, 0x0, 0x1, 0x1, 0x95, 0x6, 0x72, 0x0, 0x1, 0x1, 0x1C, 0x6, 0x72, 0x0, 0x1, 0x1, 0x1F, 0x3, 0x20, 0x0, 0x1, 0x2, 0xC5, 0x5, 0xA, 0x0, 0x1, 0x3, 0x50, 0x6, 0x47, 0x0, 0x1, 0x1, 0x0, 0x5, 0x28, 0x0, 0x1, 0x3, 0x6E, 0x5, 0xA, 0x0, 0x1, 0x2, 0x11, 0x5, 0x28, 0x0, 0x1, 0x2, 0x7B, 0x5, 0x28, 0x0, 0x1, 0x2, 0xAD, 0x7, 0xAF, 0x0, 0x1, 0x2, 0xAD, 0x7, 0x95, 0x0, 0x1, 0x2, 0xAD, 0x7, 0xE1, 0x0, 0x1, 0x2, 0xAC, 0x6, 0x55, 0x0, 0x1, 0x1, 0x21, 0x7, 0xB7, 0x0, 0x1, 0x2, 0xD6, 0x7, 0x95, 0x0, 0x1, 0x2, 0xC4, 0x7, 0xAF, 0x0, 0x1, 0x2, 0xC4, 0x7, 0x95, 0x0, 0x1, 0x2, 0x9B, 0x7, 0xAF, 0x0, 0x1, 0x2, 0x9B, 0x7, 0x6D, 0x0, 0x1, 0x2, 0x37, 0x6, 0x79, 0x0, 0x1, 0x2, 0x37, 0x6, 0x5F, 0x0, 0x1, 0x2, 0x37, 0x6, 0xAB, 0x0, 0x1, 0x1, 0xC, 0x6, 0x72, 0x0, 0x1, 0x2, 0x3E, 0x6, 0x5F, 0x0, 0x1, 0x2, 0x40, 0x6, 0x5F, 0x0, 0x1, 0x2, 0x39, 0x6, 0x79, 0x0, 0x1, 0x2, 0x39, 0x6, 0x37, 0x0, 0x1, 0x2, 0x37, 0x6, 0x3A, 0x0, 0x1, 0x2, 0xAB, 0x7, 0x94, 0x0, 0x1, 0x2, 0x14, 0x6, 0x49, 0x0, 0x1, 0x2, 0xAC, 0x7, 0xB3, 0x0, 0x1, 0x2, 0x15, 0x6, 0x68, 0x0, 0x1, 0x2, 0x3B, 0x7, 0xA6, 0x0, 0x1, 0x2, 0x73, 0x7, 0x78, 0x0, 0x1, 0x2, 0x72, 0x7, 0x87, 0x0, 0x1, 0x2, 0xA9, 0x7, 0xA0, 0x0, 0x1, 0x2, 0xA8, 0x7, 0x94, 0x0, 0x1, 0x2, 0x2A, 0x6, 0x49, 0x0, 0x1, 0x2, 0xA9, 0x6, 0x55, 0x0, 0x1, 0x1, 0x21, 0x7, 0x9D, 0x0, 0x1, 0x1, 0xC, 0x6, 0x58, 0x0, 0x1, 0x1, 0xC, 0x6, 0x33, 0x0, 0x1, 0x1, 0xC, 0x6, 0x4E, 0x0, 0x1, 0x1, 0x20, 0x7, 0x87, 0x0, 0x1, 0x3, 0x52, 0x7, 0x9F, 0x0, 0x1, 0x1, 0x14, 0x7, 0xAF, 0x0, 0x1, 0x1, 0x6, 0x8, 0xA, 0x0, 0x1, 0x2, 0xD6, 0x7, 0x9E, 0x0, 0x1, 0x2, 0x3E, 0x6, 0x68, 0x0, 0x1, 0x2, 0xC4, 0x7, 0x8B, 0x0, 0x1, 0x2, 0xC4, 0x7, 0x91, 0x0, 0x1, 0x2, 0x40, 0x6, 0x5B, 0x0, 0x1, 0x2, 0x5C, 0x7, 0xAF, 0x0, 0x1, 0x1, 0x99, 0x6, 0x79, 0x0, 0x1, 0x2, 0x5C, 0x7, 0x9E, 0x0, 0x1, 0x1, 0x99, 0x6, 0x68, 0x0, 0x1, 0x2, 0x7A, 0x7, 0xAF, 0x0, 0x1, 0x2, 0x25, 0x6, 0x79, 0x0, 0x1, 0x2, 0x7A, 0x7, 0x9E, 0x0, 0x1, 0x2, 0x25, 0x6, 0x68, 0x0, 0x1, 0x2, 0x6C, 0x7, 0x9E, 0x0, 0x1, 0x2, 0x9B, 0x7, 0x95, 0x0, 0x1, 0x2, 0x39, 0x6, 0x5F, 0x0, 0x1, 0x2, 0x9B, 0x7, 0x70, 0x0, 0x1, 0x2, 0x39, 0x6, 0x3A, 0x0, 0x1, 0x2, 0x9B, 0x7, 0x8B, 0x0, 0x1, 0x2, 0x39, 0x6, 0x55, 0x0, 0x1, 0x2, 0x9B, 0x7, 0xE1, 0x0, 0x1, 0x2, 0x39, 0x6, 0xAB, 0x0, 0x1, 0x2, 0x9B, 0x7, 0x91, 0x0, 0x1, 0x2, 0x39, 0x6, 0x5B, 0x0, 0x1, 0x3, 0x92, 0x7, 0x9E, 0x0, 0x1, 0x2, 0xF5, 0x6, 0x68, 0x0, 0x1, 0x2, 0x73, 0x7, 0x9E, 0x0, 0x1, 0x2, 0x6F, 0x7, 0xAF, 0x0, 0x1, 0x2, 0x7, 0x6, 0x79, 0x0, 0x1, 0x2, 0x6E, 0x7, 0x7F, 0x0, 0x1, 0x2, 0x6, 0x6, 0x49, 0x0, 0x1, 0x3, 0xA7, 0x7, 0xBB, 0x0, 0x1, 0x3, 0x5C, 0x6, 0x7A, 0x0, 0x1, 0x2, 0xCB, 0x7, 0xF9, 0x0, 0x1, 0x2, 0x1C, 0x6, 0x76, 0x0, 0x1, 0x1, 0xCB, 0x5, 0x28, 0x0, 0x1, 0x2, 0x51, 0x6, 0x97, 0x0, 0x1, 0x2, 0x51, 0x6, 0x86, 0x0, 0x1, 0x2, 0x51, 0x6, 0x7D, 0x0, 0x1, 0x2, 0x51, 0x6, 0x55, 0x0, 0x1, 0x2, 0x51, 0x6, 0xC9, 0x0, 0x1, 0x2, 0x21, 0x6, 0x97, 0x0, 0x1, 0x0, 0xFF, 0x6, 0x97, 0x0, 0x1, 0x0, 0xFF, 0x6, 0x86, 0x0, 0x1, 0x2, 0x70, 0x6, 0x7D, 0x0, 0x1, 0x2, 0x5F, 0x6, 0x86, 0x0, 0x1, 0x2, 0x5F, 0x6, 0x7D, 0x0, 0x1, 0x2, 0x5F, 0x6, 0x55, 0x0, 0x1, 0x2, 0x40, 0x6, 0x97, 0x0, 0x1, 0x2, 0x40, 0x6, 0x86, 0x0, 0x1, 0x2, 0x40, 0x6, 0x55, 0x0, 0x1, 0x2, 0x51, 0x6, 0x58, 0x0, 0x1, 0x2, 0x51, 0x6, 0x73, 0x0, 0x1, 0x2, 0x4F, 0x6, 0x97, 0x0, 0x1, 0x2, 0x4E, 0x6, 0x67, 0x0, 0x1, 0x2, 0x4F, 0x6, 0x86, 0x0, 0x1, 0x1, 0xCB, 0x6, 0x86, 0x0, 0x1, 0x2, 0x21, 0x6, 0x58, 0x0, 0x1, 0x2, 0x21, 0x6, 0x73, 0x0, 0x1, 0x2, 0x20, 0x6, 0x67, 0x0, 0x1, 0x2, 0x21, 0x6, 0x86, 0x0, 0x1, 0x2, 0x53, 0x6, 0x86, 0x0, 0x1, 0x2, 0x53, 0x6, 0x73, 0x0, 0x1, 0x2, 0x52, 0x6, 0x67, 0x0, 0x1, 0x2, 0x53, 0x5, 0x28, 0x0, 0x1, 0x2, 0x65, 0x6, 0x86, 0x0, 0x1, 0x0, 0xFF, 0x6, 0x7D, 0x0, 0x1, 0x0, 0xFF, 0x6, 0x58, 0x0, 0x1, 0x0, 0xFF, 0x6, 0x73, 0x0, 0x1, 0x0, 0xFE, 0x6, 0x67, 0x0, 0x1, 0x2, 0xDE, 0x6, 0x86, 0x0, 0x1, 0x0, 0xF5, 0x6, 0x97, 0x0, 0x1, 0x0, 0xF5, 0x5, 0x28, 0x0, 0x1, 0x2, 0x70, 0x6, 0x97, 0x0, 0x1, 0x2, 0x70, 0x6, 0x86, 0x0, 0x1, 0x2, 0x5F, 0x6, 0x58, 0x0, 0x1, 0x2, 0x5F, 0x6, 0x73, 0x0, 0x1, 0x2, 0x5F, 0x6, 0x79, 0x0, 0x1, 0x2, 0x3, 0x6, 0x97, 0x0, 0x1, 0x2, 0x3, 0x5, 0x28, 0x0, 0x1, 0x2, 0x3, 0x6, 0x86, 0x0, 0x1, 0x2, 0x2C, 0x6, 0x97, 0x0, 0x1, 0x2, 0x2C, 0x6, 0x86, 0x0, 0x1, 0x2, 0x1B, 0x6, 0x86, 0x0, 0x1, 0x2, 0x40, 0x6, 0x7D, 0x0, 0x1, 0x2, 0x40, 0x6, 0x58, 0x0, 0x1, 0x2, 0x40, 0x6, 0xC9, 0x0, 0x1, 0x2, 0x40, 0x6, 0x79, 0x0, 0x1, 0x2, 0x40, 0x5, 0x28, 0x0, 0x1, 0x3, 0x3, 0x6, 0x86, 0x0, 0x1, 0x2, 0x19, 0x6, 0x86, 0x0, 0x1, 0x2, 0x1C, 0x6, 0x97, 0x0, 0x1, 0x2, 0x1B, 0x6, 0x67, 0x0, 0x1, 0x2, 0x1C, 0x6, 0x86, 0x0, 0x1, 0x2, 0x73, 0x7, 0x6D, 0x0, 0x1, 0x1, 0x2E, 0x6, 0x22, 0x0, 0x1, 0x2, 0x2B, 0x6, 0x29, 0x0, 0x1, 0x2, 0x73, 0x7, 0x75, 0x0, 0x1, 0x2, 0x6E, 0x7, 0xB7, 0x0, 0x1, 0x1, 0x21, 0x7, 0x75, 0x0, 0x1, 0x2, 0x91, 0x7, 0x93, 0x0, 0x1, 0x2, 0xD4, 0x7, 0x93, 0x0, 0x1, 0x2, 0x4F, 0x6, 0x47, 0x0, 0x1, 0x2, 0x88, 0x5, 0x0, 0x0, 0x1, 0x2, 0x15, 0x5, 0xA, 0x0, 0x1, 0x2, 0x4, 0x5, 0x0, 0x0, 0x1, 0x2, 0x2B, 0x6, 0x37, 0x0, 0x1, 0x1, 0xAD, 0x6, 0x6B, 0x0, 0x1, 0x1, 0xC, 0x6, 0x30, 0x0, 0x1, 0x2, 0x30, 0x6, 0x6B, 0x0, 0x1, 0x2, 0x2, 0x6, 0x55, 0x0, 0x1, 0x3, 0x92, 0x7, 0xAF, 0x0, 0x1, 0x2, 0xF5, 0x6, 0x79, 0x0, 0x1, 0x3, 0x92, 0x7, 0x6D, 0x0, 0x1, 0x2, 0xF5, 0x6, 0x37, 0x0, 0x1, 0x2, 0x73, 0x7, 0xAF, 0x0, 0x1, 0x2, 0x2, 0x6, 0x79, 0x0, 0x1, 0x1, 0x11, 0x6, 0x46, 0x0, 0x1, 0x3, 0x7B, 0x7, 0xAF, 0x0, 0x1, 0x3, 0x8C, 0x6, 0x79, 0x0, 0x1, 0x2, 0x73, 0x7, 0xB7, 0x0, 0x1, 0x2, 0xD4, 0x7, 0xB7, 0x0, 0x1, 0x2, 0x4F, 0x6, 0x6B, 0x0, 0x1, 0x2, 0xDD, 0x4, 0xF5, 0x0, 0x1, 0x2, 0x80, 0x7, 0x60, 0x0, 0x1, 0x2, 0x1C, 0x6, 0x33, 0x0, 0x1, 0x3, 0xD5, 0x7, 0x93, 0x0, 0x1, 0x3, 0x3E, 0x6, 0x47, 0x0, 0x1, 0x2, 0xAD, 0x7, 0x6D, 0x0, 0x1, 0x2, 0x37, 0x6, 0x37, 0x0, 0x1, 0x2, 0x81, 0x7, 0x46, 0x0, 0x1, 0x2, 0x28, 0x6, 0x38, 0x0, 0x1, 0x3, 0xD5, 0x7, 0x75, 0x0, 0x1, 0x3, 0x3E, 0x6, 0x29, 0x0, 0x1, 0x2, 0x63, 0x7, 0x82, 0x0, 0x1, 0x2, 0xE, 0x6, 0x36, 0x0, 0x1, 0x2, 0xD4, 0x7, 0x78, 0x0, 0x1, 0x2, 0x4F, 0x6, 0x2C, 0x0, 0x1, 0x2, 0xD4, 0x7, 0x75, 0x0, 0x1, 0x2, 0x4F, 0x6, 0x29, 0x0, 0x1, 0x2, 0xC4, 0x7, 0x6D, 0x0, 0x1, 0x2, 0x40, 0x6, 0x37, 0x0, 0x1, 0x2, 0xD2, 0x6, 0x45, 0x0, 0x1, 0x2, 0xD2, 0x7, 0x72, 0x0, 0x1, 0x2, 0x33, 0x6, 0x37, 0x0, 0x1, 0x2, 0xA3, 0x7, 0x83, 0x0, 0x1, 0x2, 0x18, 0x6, 0x37, 0x0, 0x1, 0x2, 0x91, 0x7, 0x78, 0x0, 0x1, 0x2, 0x91, 0x7, 0x75, 0x0, 0x1, 0x2, 0x2, 0x6, 0x37, 0x0, 0x1, 0x2, 0x91, 0x7, 0x99, 0x0, 0x1, 0x2, 0x2, 0x6, 0x5B, 0x0, 0x1, 0x2, 0xCF, 0x7, 0x75, 0x0, 0x1, 0x2, 0x26, 0x6, 0x29, 0x0, 0x1, 0x3, 0x81, 0x7, 0x75, 0x0, 0x1, 0x3, 0x33, 0x6, 0x29, 0x0, 0x1, 0x2, 0xAD, 0x8, 0x2, 0x0, 0x1, 0x2, 0x37, 0x6, 0xCC, 0x0, 0x1, 0x2, 0x37, 0x6, 0x55, 0x0, 0x1, 0x2, 0x73, 0x8, 0xA, 0x0, 0x1, 0x2, 0x2B, 0x6, 0xCC, 0x0, 0x1, 0x2, 0x73, 0x7, 0x9D, 0x0, 0x1, 0x2, 0x2B, 0x6, 0x5F, 0x0, 0x1, 0x2, 0x73, 0x7, 0xA6, 0x0, 0x1, 0x1, 0x21, 0x8, 0xA, 0x0, 0x1, 0x1, 0xC, 0x6, 0xC5, 0x0, 0x1, 0x1, 0x21, 0x6, 0x48, 0x0, 0x1, 0x1, 0x7, 0x6, 0x40, 0x0, 0x1, 0x2, 0xC4, 0x8, 0x2, 0x0, 0x1, 0x2, 0x40, 0x6, 0xCC, 0x0, 0x1, 0x2, 0xBF, 0x7, 0xAD, 0x0, 0x1, 0x2, 0x44, 0x6, 0x79, 0x0, 0x1, 0x2, 0xBF, 0x8, 0x0, 0x0, 0x1, 0x2, 0x44, 0x6, 0xCC, 0x0, 0x1, 0x2, 0xBF, 0x7, 0x93, 0x0, 0x1, 0x2, 0x44, 0x6, 0x5F, 0x0, 0x1, 0x2, 0xBF, 0x6, 0x3E, 0x0, 0x1, 0x2, 0x44, 0x5, 0xA, 0x0, 0x1, 0x2, 0x9B, 0x8, 0x2, 0x0, 0x1, 0x2, 0x39, 0x6, 0xCC, 0x0, 0x1, 0x2, 0xC2, 0x7, 0xBB, 0x0, 0x1, 0x2, 0x42, 0x6, 0x64, 0x0, 0x1, 0x2, 0xC2, 0x8, 0xE, 0x0, 0x1, 0x2, 0x42, 0x6, 0xB7, 0x0, 0x1, 0x2, 0xC2, 0x7, 0xA1, 0x0, 0x1, 0x2, 0x42, 0x6, 0x4A, 0x0, 0x1, 0x2, 0xC2, 0x6, 0x4C, 0x0, 0x1, 0x2, 0x42, 0x4, 0xF5, 0x0, 0x1, 0x2, 0x73, 0x6, 0x40, 0x0, 0x1, 0x2, 0x2, 0x5, 0xA, 0x0, 0x1, 0x2, 0x73, 0x8, 0x2, 0x0, 0x1, 0x2, 0x2, 0x6, 0xCC, 0x0, 0x1, 0x2, 0x73, 0x7, 0x95, 0x0, 0x1, 0x2, 0x2, 0x6, 0x5F, 0x0, 0x1, 0x2, 0x42, 0x5, 0xA, 0x0, 0x1, 0x2, 0xAD, 0x7, 0x9E, 0x0, 0x1, 0x2, 0x37, 0x6, 0x68, 0x0, 0x1, 0x1, 0x21, 0x7, 0xA6, 0x0, 0x1, 0x1, 0xC, 0x6, 0x61, 0x0, 0x1, 0x2, 0xC4, 0x7, 0x9E, 0x0, 0x1, 0x2, 0x40, 0x6, 0x68, 0x0, 0x1, 0x2, 0x9B, 0x7, 0x9E, 0x0, 0x1, 0x2, 0x39, 0x6, 0x68, 0x0, 0x1, 0x2, 0x38, 0x7, 0x95, 0x0, 0x1, 0x2, 0x39, 0x7, 0xA6, 0x0, 0x1, 0x2, 0x28, 0x5, 0xB, 0x0, 0x1, 0x2, 0x37, 0x7, 0x66, 0x0, 0x1, 0x2, 0x37, 0x7, 0x78, 0x0, 0x1, 0x3, 0xA7, 0x7, 0x7C, 0x0, 0x1, 0x3, 0x5C, 0x6, 0x3B, 0x0, 0x1, 0x2, 0xA9, 0x7, 0xB3, 0x0, 0x1, 0x2, 0x2B, 0x6, 0x68, 0x0, 0x1, 0x2, 0x59, 0x7, 0x9F, 0x0, 0x1, 0x2, 0x57, 0x7, 0xA5, 0x0, 0x1, 0x2, 0xC4, 0x7, 0x70, 0x0, 0x1, 0x2, 0x40, 0x6, 0x3A, 0x0, 0x1, 0x2, 0xA9, 0x7, 0xC4, 0x0, 0x1, 0x2, 0x2B, 0x6, 0x79, 0x0, 0x1, 0x2, 0xD6, 0x7, 0xAF, 0x0, 0x1, 0x2, 0x3E, 0x6, 0x79, 0x0, 0x1, 0x2, 0xAD, 0x7, 0x84, 0x0, 0x1, 0x2, 0x37, 0x6, 0x4E, 0x0, 0x1, 0x2, 0xAD, 0x7, 0xA9, 0x0, 0x1, 0x2, 0x37, 0x6, 0x73, 0x0, 0x1, 0x2, 0x73, 0x7, 0x8C, 0x0, 0x1, 0x2, 0x2B, 0x6, 0x4E, 0x0, 0x1, 0x2, 0x73, 0x7, 0xB1, 0x0, 0x1, 0x2, 0x2B, 0x6, 0x73, 0x0, 0x1, 0x1, 0x21, 0x7, 0x8C, 0x0, 0x1, 0x1, 0xC, 0x6, 0x47, 0x0, 0x1, 0x1, 0x21, 0x7, 0xB1, 0x0, 0x1, 0x1, 0xC, 0x6, 0x6C, 0x0, 0x1, 0x2, 0xC4, 0x7, 0x84, 0x0, 0x1, 0x2, 0x40, 0x6, 0x4E, 0x0, 0x1, 0x2, 0xC4, 0x7, 0xA9, 0x0, 0x1, 0x2, 0x40, 0x6, 0x73, 0x0, 0x1, 0x2, 0x5C, 0x7, 0x84, 0x0, 0x1, 0x1, 0x99, 0x6, 0x4E, 0x0, 0x1, 0x2, 0x5C, 0x7, 0xA9, 0x0, 0x1, 0x1, 0x99, 0x6, 0x73, 0x0, 0x1, 0x2, 0x9B, 0x7, 0x84, 0x0, 0x1, 0x2, 0x39, 0x6, 0x4E, 0x0, 0x1, 0x2, 0x9B, 0x7, 0xA9, 0x0, 0x1, 0x2, 0x39, 0x6, 0x73, 0x0, 0x1, 0x2, 0xCD, 0x7, 0xA6, 0x0, 0x1, 0x2, 0x2, 0x7, 0xC6, 0x0, 0x1, 0x2, 0xAC, 0x7, 0x7F, 0x0, 0x1, 0x2, 0x36, 0x6, 0x49, 0x0, 0x1, 0x2, 0x40, 0x7, 0x66, 0x0, 0x1, 0x2, 0x40, 0x7, 0x8E, 0x0, 0x1, 0x2, 0xC3, 0x7, 0x7F, 0x0, 0x1, 0x2, 0x3F, 0x6, 0x49, 0x0, 0x1, 0x2, 0x40, 0x7, 0x78, 0x0, 0x1, 0x2, 0x2, 0x6, 0x3A, 0x0, 0x1, 0x2, 0x33, 0x5, 0xA, 0x0, 0x1, 0x2, 0x23, 0x4, 0xF5, 0x0, 0x1, 0x2, 0x4E, 0x4, 0xF5, 0x0, 0x1, 0x2, 0x37, 0x7, 0x79, 0x0, 0x1, 0x2, 0x8C, 0x7, 0x86, 0x0, 0x1, 0x2, 0x5E, 0x6, 0x4C, 0x0, 0x1, 0x2, 0x8D, 0x6, 0x47, 0x0, 0x1, 0x2, 0xAC, 0x7, 0xC4, 0x0, 0x1, 0x2, 0x15, 0x6, 0x79, 0x0, 0x1, 0x2, 0x3A, 0x7, 0x87, 0x0, 0x1, 0x2, 0xC, 0x7, 0x86, 0x0, 0x1, 0x2, 0x3B, 0x6, 0x48, 0x0, 0x1, 0x2, 0xD, 0x6, 0x47, 0x0, 0x1, 0x2, 0x2B, 0x7, 0xA9, 0x0, 0x1, 0x2, 0x73, 0x7, 0x93, 0x0, 0x1, 0x2, 0x2B, 0x6, 0x55, 0x0, 0x1, 0x2, 0x72, 0x7, 0x8B, 0x0, 0x1, 0x1, 0xDF, 0x7, 0xFD, 0x0, 0x1, 0x2, 0xA9, 0x7, 0x85, 0x0, 0x1, 0x2, 0x2B, 0x6, 0x3A, 0x0, 0x1, 0x2, 0xCC, 0x7, 0x87, 0x0, 0x1, 0x2, 0x1, 0x7, 0xA7, 0x0, 0x1, 0x2, 0xCD, 0x7, 0x75, 0x0, 0x1, 0x2, 0x2, 0x7, 0x95, 0x0, 0x1, 0x2, 0xCD, 0x6, 0x48, 0x0, 0x1, 0x2, 0x59, 0x7, 0xB0, 0x0, 0x1, 0x2, 0x57, 0x7, 0xB6, 0x0, 0x1, 0x2, 0x59, 0x6, 0x41, 0x0, 0x1, 0x2, 0x57, 0x6, 0x47, 0x0, 0x1, 0x1, 0x14, 0x7, 0x70, 0x0, 0x1, 0x1, 0x6, 0x7, 0xCB, 0x0, 0x1, 0x1, 0x14, 0x6, 0x40, 0x0, 0x1, 0x1, 0x6, 0x6, 0x9B, 0x0, 0x1, 0x3, 0x7A, 0x7, 0x7F, 0x0, 0x1, 0x3, 0x8B, 0x6, 0x49, 0x0, 0x1, 0x3, 0x7B, 0x6, 0x40, 0x0, 0x1, 0x3, 0x8C, 0x5, 0xA, 0x0, 0x1, 0x2, 0xD5, 0x7, 0x7F, 0x0, 0x1, 0x2, 0x3D, 0x6, 0x49, 0x0, 0x1, 0x2, 0x3E, 0x5, 0xA, 0x0, 0x1, 0x2, 0x40, 0x7, 0xCE, 0x0, 0x1, 0x2, 0x40, 0x7, 0x8B, 0x0, 0x1, 0x2, 0x40, 0x7, 0xA9, 0x0, 0x1, 0x2, 0x5E, 0x7, 0xBB, 0x0, 0x1, 0x2, 0x88, 0x6, 0x6F, 0x0, 0x1, 0x2, 0x5D, 0x7, 0x8B, 0x0, 0x1, 0x2, 0x87, 0x6, 0x3F, 0x0, 0x1, 0x2, 0x5B, 0x7, 0x7F, 0x0, 0x1, 0x1, 0x98, 0x6, 0x49, 0x0, 0x1, 0x2, 0x5C, 0x7, 0x70, 0x0, 0x1, 0x1, 0x99, 0x6, 0x3A, 0x0, 0x1, 0x2, 0x5C, 0x6, 0x40, 0x0, 0x1, 0x1, 0x99, 0x5, 0xA, 0x0, 0x1, 0x2, 0x25, 0x5, 0xA, 0x0, 0x1, 0x2, 0x24, 0x7, 0xB8, 0x0, 0x1, 0x2, 0x7A, 0x6, 0x40, 0x0, 0x1, 0x2, 0x25, 0x7, 0xA7, 0x0, 0x1, 0x2, 0x79, 0x7, 0x7F, 0x0, 0x1, 0x2, 0x24, 0x6, 0x49, 0x0, 0x1, 0x2, 0x6B, 0x7, 0x7F, 0x0, 0x1, 0x1, 0x45, 0x7, 0x3, 0x0, 0x1, 0x2, 0x6C, 0x6, 0x40, 0x0, 0x1, 0x1, 0x46, 0x5, 0xC4, 0x0, 0x1, 0x2, 0x39, 0x5, 0xA, 0x0, 0x1, 0x2, 0x39, 0x7, 0xCE, 0x0, 0x1, 0x2, 0x9B, 0x6, 0x40, 0x0, 0x1, 0x2, 0x39, 0x7, 0x66, 0x0, 0x1, 0x2, 0x99, 0x7, 0xA1, 0x0, 0x1, 0x2, 0x1, 0x6, 0x55, 0x0, 0x1, 0x2, 0x99, 0x6, 0x4C, 0x0, 0x1, 0x2, 0x1, 0x5, 0x0, 0x0, 0x1, 0x3, 0x91, 0x7, 0x7F, 0x0, 0x1, 0x2, 0xF4, 0x6, 0x49, 0x0, 0x1, 0x3, 0x92, 0x6, 0x40, 0x0, 0x1, 0x2, 0xF5, 0x5, 0xA, 0x0, 0x1, 0x2, 0x86, 0x7, 0x8B, 0x0, 0x1, 0x2, 0x3, 0x6, 0x3F, 0x0, 0x1, 0x2, 0x87, 0x7, 0x79, 0x0, 0x1, 0x2, 0x4, 0x6, 0x2D, 0x0, 0x1, 0x2, 0x72, 0x7, 0x7F, 0x0, 0x1, 0x2, 0x1, 0x6, 0x49, 0x0, 0x1, 0x2, 0x6F, 0x7, 0x9E, 0x0, 0x1, 0x2, 0x7, 0x6, 0x68, 0x0, 0x1, 0x2, 0x6F, 0x6, 0x40, 0x0, 0x1, 0x2, 0x2, 0x6, 0x68, 0x0, 0x1, 0x1, 0x46, 0x6, 0xF1, 0x0, 0x1, 0x2, 0xF5, 0x6, 0xAB, 0x0, 0x1, 0x2, 0x2, 0x6, 0xAB, 0x0, 0x1, 0x2, 0x6F, 0x6, 0x55, 0x0, 0x1, 0x2, 0x6F, 0x6, 0x3A, 0x0, 0x1, 0x2, 0xAD, 0x7, 0x8B, 0x0, 0x1, 0x2, 0xAD, 0x7, 0x70, 0x0, 0x1, 0x1, 0x2E, 0x6, 0x40, 0x0, 0x1, 0x1, 0x2E, 0x6, 0x25, 0x0, 0x1, 0x1, 0x21, 0x7, 0x93, 0x0, 0x1, 0x1, 0x21, 0x7, 0x78, 0x0, 0x1, 0x2, 0x2B, 0x6, 0x47, 0x0, 0x1, 0x2, 0x2B, 0x6, 0x2C, 0x0, 0x1, 0x2, 0x73, 0x7, 0x8B, 0x0, 0x1, 0x2, 0x73, 0x7, 0x70, 0x0, 0x1, 0x2, 0x1C, 0x5, 0x28, 0x0, 0x1, 0x2, 0x2, 0x5, 0x28, 0x0, 0x1, 0x2, 0x70, 0x5, 0x28, 0x0, 0x1, 0x2, 0x19, 0x6, 0x55, 0x0, 0x1, 0x2, 0x21, 0x6, 0x55, 0x0, 0x1, 0x2, 0xF, 0x6, 0x97, 0x0, 0x1, 0x0, 0xFF, 0x5, 0x28, 0x0, 0x1, 0x0, 0xFF, 0x6, 0x55, 0x0, 0x1, 0x2, 0x2, 0x6, 0x97, 0x0, 0x1, 0x2, 0x31, 0x6, 0x73, 0x0, 0x1, 0x2, 0xE, 0x5, 0x28, 0x0, 0x1, 0x2, 0xF, 0x5, 0x28, 0x0, 0x1, 0x2, 0x71, 0x6, 0x73, 0x0, 0x1, 0x2, 0xFE, 0x5, 0x28, 0x0, 0x1, 0x2, 0x32, 0x5, 0x28, 0x0, 0x1, 0x2, 0x1B, 0x5, 0x28, 0x0, 0x1, 0x2, 0x26, 0x5, 0x28, 0x0, 0x1, 0x2, 0xB, 0x5, 0x28, 0x0, 0x1, 0x2, 0x65, 0x5, 0x28, 0x0, 0x1, 0x2, 0x4F, 0x5, 0x28, 0x0, 0x1, 0x2, 0x19, 0x5, 0x28, 0x0, 0x1, 0x2, 0x71, 0x6, 0x58, 0x0, 0x1, 0x2, 0x31, 0x6, 0x58, 0x0, 0x1, 0x2, 0xDE, 0x5, 0x28, 0x0, 0x1, 0x3, 0x6E, 0x6, 0x79, 0x0, 0x1, 0x2, 0x5F, 0x6, 0x97, 0x0, 0x1, 0x2, 0x2C, 0x5, 0x28, 0x0, 0x1, 0x3, 0x3, 0x6, 0x97, 0x0, 0x1, 0x3, 0x3, 0x6, 0x55, 0x0, 0x1, 0x2, 0x19, 0x6, 0x97, 0x0, 0x1, 0x2, 0xAD, 0x6, 0x40, 0x0, 0x1, 0x2, 0x37, 0x5, 0xA, 0x0, 0x1, 0x2, 0x73, 0x6, 0x48, 0x0, 0x1, 0x2, 0x2B, 0x5, 0xA, 0x0, 0x1, 0x2, 0xC4, 0x6, 0x40, 0x0, 0x1, 0x2, 0x40, 0x5, 0xA, 0x0, 0x1, 0x2, 0x51, 0x5, 0x28, 0x0, 0x1, 0x2, 0x21, 0x5, 0x28, 0x0, 0x1, 0x2, 0x5F, 0x5, 0x28, 0x0, 0x1, 0x2, 0xC0, 0x7, 0xCD, 0x0, 0x1, 0x2, 0xC0, 0x7, 0xBC, 0x0, 0x1, 0x2, 0xC0, 0x7, 0xB3, 0x0, 0x1, 0x2, 0xC0, 0x7, 0x8B, 0x0, 0x1, 0x2, 0xC0, 0x7, 0xFF, 0x0, 0x1, 0x2, 0xC0, 0x7, 0x8E, 0x0, 0x1, 0x2, 0xC0, 0x7, 0xA9, 0x0, 0x1, 0x2, 0xD9, 0x7, 0xD5, 0x0, 0x1, 0x2, 0xD9, 0x7, 0x93, 0x0, 0x1, 0x2, 0xD9, 0x7, 0x96, 0x0, 0x1, 0x2, 0xD9, 0x7, 0xB1, 0x0, 0x1, 0x2, 0xD8, 0x7, 0xA5, 0x0, 0x1, 0x2, 0xD9, 0x7, 0xC4, 0x0, 0x1, 0x2, 0xDE, 0x7, 0xB3, 0x0, 0x1, 0x2, 0xDE, 0x7, 0xCD, 0x0, 0x1, 0x2, 0xDE, 0x7, 0xBC, 0x0, 0x1, 0x2, 0xD5, 0x7, 0xCD, 0x0, 0x1, 0x2, 0xD5, 0x7, 0x8B, 0x0, 0x1, 0x2, 0xD5, 0x7, 0xB3, 0x0, 0x1, 0x2, 0xD5, 0x7, 0x8E, 0x0, 0x1, 0x2, 0xD5, 0x7, 0xA9, 0x0, 0x1, 0x2, 0xD5, 0x7, 0xFF, 0x0, 0x1, 0x2, 0xD5, 0x7, 0xAF, 0x0, 0x1, 0x1, 0xC, 0x5, 0x3, 0x0, 0x4, 0x0, 0x0, 0x0, 0x1, 0x0, 0x8, 0x0, 0x1, 0x42, 0xC6, 0x0, 0xC, 0x0, 0x1, 0x43, 0x88, 0x1, 0xFC, 0x0, 0x2, 0x0, 0x52, 0x0, 0x26, 0x0, 0x3F, 0x0, 0x0, 0x0, 0x46, 0x0, 0x5F, 0x0, 0x1A, 0x0, 0x8C, 0x0, 0x97, 0x0, 0x34, 0x0, 0xA6, 0x0, 0xA7, 0x0, 0x40, 0x0, 0xAD, 0x0, 0xAD, 0x0, 0x42, 0x0, 0xB0, 0x0, 0xB0, 0x0, 0x43, 0x0, 0xB4, 0x0, 0xB5, 0x0, 0x44, 0x0, 0xBD, 0x0, 0xBD, 0x0, 0x46, 0x0, 0xC3, 0x0, 0xC4, 0x0, 0x47, 0x0, 0xC9, 0x0, 0xCA, 0x0, 0x49, 0x0, 0xDB, 0x0, 0xDC, 0x0, 0x4B, 0x0, 0xF2, 0x0, 0xF2, 0x0, 0x4D, 0x0, 0xF8, 0x0, 0xF9, 0x0, 0x4E, 0x0, 0xFD, 0x0, 0xFE, 0x0, 0x50, 0x1, 0x1, 0x1, 0x61, 0x0, 0x52, 0x2, 0x39, 0x2, 0x3A, 0x0, 0xB3, 0x2, 0x40, 0x2, 0x40, 0x0, 0xB5, 0x2, 0x4D, 0x2, 0x4D, 0x0, 0xB6, 0x2, 0x71, 0x2, 0x71, 0x0, 0xB7, 0x2, 0x73, 0x2, 0x73, 0x0, 0xB8, 0x2, 0x85, 0x2, 0x85, 0x0, 0xB9, 0x2, 0x88, 0x2, 0x88, 0x0, 0xBA, 0x2, 0xB7, 0x2, 0xB8, 0x0, 0xBB, 0x2, 0xD8, 0x2, 0xD9, 0x0, 0xBD, 0x2, 0xE3, 0x2, 0xE4, 0x0, 0xBF, 0x2, 0xEF, 0x2, 0xEF, 0x0, 0xC1, 0x2, 0xF9, 0x2, 0xF9, 0x0, 0xC2, 0x2, 0xFB, 0x2, 0xFB, 0x0, 0xC3, 0x3, 0x1, 0x3, 0x3, 0x0, 0xC4, 0x3, 0x5, 0x3, 0x5, 0x0, 0xC7, 0x3, 0x2F, 0x3, 0x3F, 0x0, 0xC8, 0x3, 0x43, 0x3, 0x44, 0x0, 0xD9, 0x3, 0x47, 0x3, 0x4B, 0x0, 0xDB, 0x3, 0x4F, 0x3, 0x5A, 0x0, 0xE0, 0x3, 0x9A, 0x3, 0xA6, 0x0, 0xEC, 0x3, 0xA8, 0x3, 0xA9, 0x0, 0xF9, 0x3, 0xAB, 0x3, 0xC9, 0x0, 0xFB, 0x4, 0x2B, 0x4, 0x2E, 0x1, 0x1A, 0x6, 0xEA, 0x6, 0xEA, 0x1, 0x1E, 0x7, 0x4E, 0x7, 0x62, 0x1, 0x1F, 0x7, 0x6F, 0x7, 0x6F, 0x1, 0x34, 0x7, 0x79, 0x7, 0x79, 0x1, 0x35, 0x7, 0x7C, 0x7, 0x7C, 0x1, 0x36, 0x7, 0x8D, 0x7, 0x8D, 0x1, 0x37, 0x7, 0x93, 0x7, 0x94, 0x1, 0x38, 0x7, 0xA6, 0x7, 0xA6, 0x1, 0x3A, 0x7, 0xA9, 0x7, 0xA9, 0x1, 0x3B, 0x7, 0xAB, 0x7, 0xAB, 0x1, 0x3C, 0x7, 0xAE, 0x7, 0xB1, 0x1, 0x3D, 0x7, 0xDE, 0x7, 0xE2, 0x1, 0x41, 0x7, 0xEE, 0x7, 0xF3, 0x1, 0x46, 0x7, 0xF5, 0x7, 0xF5, 0x1, 0x4C, 0x7, 0xF7, 0x7, 0xF8, 0x1, 0x4D, 0x7, 0xFA, 0x7, 0xFA, 0x1, 0x4F, 0x8, 0xAD, 0x8, 0xB0, 0x1, 0x50, 0x8, 0xB3, 0x8, 0xB8, 0x1, 0x54, 0x8, 0xC8, 0x9, 0x30, 0x1, 0x5A, 0x9, 0x33, 0x9, 0x33, 0x1, 0xC3, 0x9, 0x35, 0x9, 0x78, 0x1, 0xC4, 0x9, 0x7D, 0x9, 0xD4, 0x2, 0x8, 0xA, 0x12, 0xA, 0x13, 0x2, 0x60, 0xA, 0x16, 0xA, 0x17, 0x2, 0x62, 0xA, 0x19, 0xA, 0x19, 0x2, 0x64, 0xA, 0x1C, 0xA, 0x1D, 0x2, 0x65, 0xA, 0x22, 0xA, 0x29, 0x2, 0x67, 0xA, 0x2F, 0xA, 0x32, 0x2, 0x6F, 0xA, 0x6E, 0xA, 0xC5, 0x2, 0x73, 0xA, 0xE7, 0xA, 0xE7, 0x2, 0xCB, 0xA, 0xEE, 0xB, 0x2, 0x2, 0xCC, 0xB, 0x5, 0xB, 0xC, 0x2, 0xE1, 0xB, 0x10, 0xB, 0x3B, 0x2, 0xE9, 0xB, 0x4D, 0xB, 0xD7, 0x3, 0x15, 0xC, 0xB7, 0xC, 0xCE, 0x3, 0xA0, 0xC, 0xD0, 0xC, 0xD4, 0x3, 0xB8, 0xC, 0xD6, 0xC, 0xD7, 0x3, 0xBD, 0xC, 0xD9, 0xC, 0xD9, 0x3, 0xBF, 0xC, 0xDB, 0xC, 0xDD, 0x3, 0xC0, 0xC, 0xDF, 0xC, 0xE7, 0x3, 0xC3, 0xC, 0xEB, 0xC, 0xEB, 0x3, 0xCC, 0xC, 0xED, 0xC, 0xFC, 0x3, 0xCD, 0xD, 0x12, 0xD, 0x12, 0x3, 0xDD, 0xD, 0x1D, 0xD, 0x1E, 0x3, 0xDE, 0x3, 0xE0, 0xD, 0xE6, 0xD, 0xEC, 0xC, 0x8A, 0xE, 0x10, 0xE, 0x4C, 0x10, 0x92, 0xE, 0x82, 0xE, 0x9A, 0xD, 0xDA, 0xC, 0x9C, 0xE, 0xB2, 0xD, 0xEC, 0xE, 0xF4, 0xF, 0xC, 0xF, 0x3C, 0xF, 0x48, 0x7, 0xC2, 0xF, 0x54, 0xF, 0x78, 0xF, 0x90, 0xF, 0xDE, 0xF, 0xEA, 0x10, 0x2, 0x10, 0x14, 0x10, 0x20, 0x10, 0x26, 0x10, 0x62, 0xD, 0xF2, 0xD, 0x5C, 0xE, 0x16, 0xE, 0x52, 0xE, 0x7C, 0xE, 0x88, 0xE, 0xA0, 0xD, 0xE0, 0xC, 0x42, 0xE, 0xB8, 0xD, 0xE0, 0xE, 0xFA, 0xF, 0x12, 0xF, 0x42, 0xF, 0x4E, 0x7, 0xC8, 0xF, 0x5A, 0xF, 0x7E, 0x10, 0x50, 0xF, 0xE4, 0xF, 0xF0, 0x10, 0x56, 0x10, 0x1A, 0x10, 0x5C, 0x10, 0x2C, 0xE, 0x16, 0x7, 0xCE, 0xD, 0xE0, 0x7, 0xD4, 0xD, 0xEC, 0x7, 0xDA, 0xF, 0xC, 0xF, 0x12, 0x7, 0xE0, 0x7, 0xE6, 0xD, 0xE0, 0xD, 0xF2, 0x7, 0xEC, 0x8, 0x7C, 0x7, 0xF2, 0x7, 0xF8, 0xD, 0x8C, 0xD, 0x92, 0x7, 0xFE, 0xD, 0xB0, 0xF, 0xE4, 0x10, 0x26, 0x10, 0x2C, 0x8, 0x4, 0x8, 0xA, 0xD, 0xEC, 0x8, 0x10, 0x8, 0x16, 0xC, 0x9C, 0x8, 0x1C, 0xF, 0x54, 0x8, 0x22, 0x8, 0x28, 0x8, 0x2E, 0x8, 0x34, 0x8, 0x3A, 0x8, 0x40, 0x8, 0x46, 0x8, 0x4C, 0x8, 0x52, 0x8, 0x58, 0xE, 0x16, 0x8, 0x5E, 0xD, 0xD4, 0xD, 0xD4, 0xF, 0xE4, 0x8, 0x64, 0x8, 0x64, 0x8, 0x6A, 0x8, 0x70, 0x8, 0x76, 0x8, 0x76, 0x8, 0x7C, 0xB, 0x4C, 0x8, 0x82, 0xB, 0xB2, 0xA, 0x2C, 0xB, 0x4C, 0xB, 0x34, 0x8, 0x88, 0x8, 0x8E, 0x8, 0x94, 0xA, 0xC8, 0x8, 0x9A, 0x8, 0xA0, 0x8, 0xA6, 0x8, 0xAC, 0x8, 0xB2, 0x8, 0xB8, 0x8, 0xBE, 0x8, 0xC4, 0x8, 0xCA, 0x8, 0xD0, 0x8, 0xD6, 0x8, 0xDC, 0x8, 0xDC, 0x8, 0xE2, 0x8, 0xE8, 0x8, 0xE8, 0x8, 0xEE, 0x8, 0xF4, 0x8, 0xFA, 0x9, 0x0, 0x9, 0x6, 0x9, 0xC, 0x9, 0xC, 0x9, 0x12, 0x9, 0x18, 0xB, 0xA, 0x9, 0x1E, 0x9, 0x24, 0xA, 0x9E, 0x9, 0x2A, 0x9, 0x72, 0xA, 0x62, 0x9, 0xAE, 0x9, 0x30, 0x9, 0x36, 0x9, 0x3C, 0x9, 0x42, 0x9, 0x42, 0x9, 0x48, 0xA, 0x8C, 0x9, 0x4E, 0xB, 0xD6, 0x9, 0x54, 0x9, 0x5A, 0x9, 0x60, 0x9, 0x66, 0xB, 0x88, 0x9, 0x6C, 0xB, 0x9A, 0x9, 0x72, 0xF, 0xE4, 0x9, 0x78, 0x9, 0x7E, 0x9, 0x84, 0x9, 0x8A, 0xB, 0x94, 0x9, 0x90, 0x9, 0x96, 0x9, 0x9C, 0x9, 0xA2, 0x9, 0xA8, 0x9, 0xAE, 0x9, 0xB4, 0x9, 0xB4, 0x9, 0xBA, 0x9, 0xC0, 0xD, 0xCE, 0x9, 0xC6, 0x9, 0xCC, 0x9, 0xD2, 0x9, 0xD8, 0x9, 0xDE, 0x9, 0xE4, 0x9, 0xEA, 0xC, 0x18, 0x9, 0xF0, 0x9, 0xF6, 0x9, 0xFC, 0xA, 0x2, 0xA, 0x8, 0xA, 0xE, 0xA, 0x1A, 0xA, 0x14, 0xD, 0xEC, 0xA, 0x1A, 0xA, 0xC8, 0x10, 0xD4, 0xA, 0x20, 0xA, 0x26, 0xA, 0x2C, 0xA, 0x32, 0xA, 0x38, 0xA, 0x3E, 0xA, 0x44, 0xA, 0x4A, 0xA, 0x50, 0xA, 0x56, 0xA, 0x5C, 0xA, 0x62, 0xA, 0x68, 0xA, 0x6E, 0xA, 0x74, 0xA, 0x7A, 0xA, 0x80, 0xA, 0x86, 0xA, 0x8C, 0xA, 0x92, 0xA, 0x98, 0xA, 0x9E, 0xA, 0xA4, 0xA, 0xAA, 0xA, 0xB0, 0xA, 0xC2, 0xA, 0xB6, 0xA, 0xBC, 0xA, 0xC2, 0xA, 0xC8, 0xA, 0xCE, 0xA, 0xD4, 0xA, 0xDA, 0xA, 0xE0, 0xA, 0xE6, 0xA, 0xEC, 0xA, 0xF2, 0xA, 0xF8, 0xA, 0xFE, 0xD, 0x8C, 0xB, 0x4, 0xB, 0xA, 0xB, 0xA, 0xB, 0x10, 0xB, 0x16, 0xB, 0x1C, 0xB, 0x22, 0xB, 0x28, 0xB, 0x2E, 0xB, 0x34, 0xB, 0x3A, 0xD, 0x8C, 0xB, 0x40, 0xB, 0x46, 0xB, 0x4C, 0xB, 0x52, 0xE, 0x88, 0xB, 0x58, 0xB, 0x5E, 0xB, 0x64, 0xB, 0x6A, 0xB, 0x70, 0xB, 0x76, 0xB, 0x7C, 0xB, 0x82, 0xB, 0x88, 0xB, 0x8E, 0xB, 0x94, 0xB, 0x9A, 0xB, 0xA0, 0xB, 0xA6, 0xB, 0xAC, 0xB, 0xB2, 0xB, 0xB8, 0xB, 0xBE, 0xB, 0xC4, 0xB, 0xCA, 0xB, 0xD0, 0xB, 0xD6, 0xB, 0xDC, 0xB, 0xE2, 0xB, 0xE8, 0xB, 0xEE, 0xB, 0xF4, 0xB, 0xFA, 0x10, 0x6E, 0x10, 0xEC, 0x10, 0xB0, 0x10, 0xE6, 0xC, 0x0, 0xD, 0x56, 0x10, 0xAA, 0x10, 0x7A, 0xD, 0x3E, 0xC, 0x6, 0x10, 0xA4, 0x10, 0xDA, 0x10, 0x74, 0x10, 0x9E, 0xD, 0x2C, 0x10, 0x86, 0x10, 0xCE, 0x10, 0x80, 0x10, 0xBC, 0xD, 0xE, 0xC, 0xC, 0x10, 0x68, 0x10, 0xB6, 0xC, 0x12, 0xC, 0x18, 0x10, 0xC8, 0xC, 0x1E, 0x10, 0x98, 0xC, 0x24, 0xE, 0xB8, 0xD, 0x8, 0x10, 0xC2, 0x10, 0x92, 0x10, 0x8C, 0xC, 0x2A, 0xC, 0x30, 0xD, 0xE6, 0xC, 0x36, 0xC, 0x3C, 0xC, 0x42, 0xC, 0x5A, 0xC, 0x48, 0xC, 0x4E, 0xC, 0x60, 0xC, 0x54, 0xD, 0xE0, 0xC, 0x5A, 0xD, 0xE0, 0xC, 0x60, 0xE, 0x16, 0xC, 0x66, 0xC, 0x6C, 0xC, 0x72, 0xC, 0x78, 0x10, 0xD4, 0xC, 0x7E, 0x10, 0xDA, 0xC, 0x84, 0x10, 0x74, 0xE, 0x10, 0xE, 0x10, 0xE, 0xA0, 0xF, 0x90, 0x10, 0x50, 0xD, 0xE6, 0xD, 0xE6, 0xD, 0xE6, 0xD, 0xE6, 0xD, 0xE6, 0xD, 0xE6, 0xD, 0xE6, 0xE, 0x4, 0xE, 0x4C, 0xE, 0x4C, 0xE, 0x4C, 0xE, 0x4C, 0xD, 0xDA, 0xD, 0xDA, 0xD, 0xDA, 0xD, 0xDA, 0xF, 0xC, 0xF, 0x3C, 0xF, 0x3C, 0xF, 0x3C, 0xF, 0x3C, 0xF, 0x3C, 0xF, 0xDE, 0xF, 0xDE, 0xF, 0xDE, 0xF, 0xDE, 0x10, 0x20, 0x10, 0x62, 0x10, 0x62, 0x10, 0x62, 0x10, 0x62, 0x10, 0x62, 0x10, 0x62, 0x10, 0x62, 0xE, 0xA, 0xE, 0x52, 0xE, 0x52, 0xE, 0x52, 0xE, 0x52, 0xD, 0xE0, 0xD, 0xE0, 0xD, 0xE0, 0xD, 0xE0, 0xF, 0x12, 0xF, 0x42, 0xF, 0x42, 0xF, 0x42, 0xF, 0x42, 0xF, 0x42, 0xF, 0xE4, 0xF, 0xE4, 0xF, 0xE4, 0xF, 0xE4, 0x10, 0x5C, 0x10, 0x5C, 0xD, 0xE6, 0x10, 0x62, 0xD, 0xE6, 0x10, 0x62, 0xD, 0xE6, 0x10, 0x62, 0xC, 0x8A, 0xD, 0x5C, 0xC, 0x8A, 0xD, 0x5C, 0xC, 0x8A, 0xD, 0x5C, 0xC, 0x8A, 0xD, 0x5C, 0xE, 0x10, 0xE, 0x16, 0xE, 0x4C, 0xE, 0x52, 0xE, 0x4C, 0xE, 0x52, 0xE, 0x4C, 0xE, 0x52, 0xE, 0x4C, 0xE, 0x52, 0xE, 0x4C, 0xE, 0x52, 0xE, 0x82, 0xE, 0x88, 0xE, 0x82, 0xE, 0x88, 0xE, 0x82, 0xE, 0x88, 0xC, 0x90, 0xE, 0x88, 0xE, 0x9A, 0xE, 0xA0, 0xD, 0xDA, 0xD, 0xE0, 0xD, 0xDA, 0xD, 0xE0, 0xD, 0xDA, 0xD, 0xE0, 0xC, 0x96, 0xD, 0xE0, 0xD, 0xDA, 0xC, 0x9C, 0xC, 0xA2, 0xC, 0xA8, 0xD, 0xEC, 0xD, 0xE0, 0xC, 0xAE, 0xC, 0xB4, 0xD, 0xEC, 0xD, 0xE0, 0xD, 0xEC, 0xD, 0xE0, 0xF, 0xC, 0xF, 0x12, 0xC, 0xBA, 0xC, 0xC0, 0xF, 0xC, 0xF, 0x12, 0xF, 0x12, 0xF, 0x3C, 0xF, 0x42, 0xF, 0x3C, 0xF, 0x42, 0xF, 0x3C, 0xF, 0x42, 0xF, 0x54, 0xF, 0x5A, 0xC, 0xC6, 0xC, 0xCC, 0xF, 0x54, 0xF, 0x5A, 0xF, 0x78, 0xF, 0x7E, 0xF, 0x78, 0xF, 0x7E, 0xC, 0xD2, 0xC, 0xD8, 0xC, 0xDE, 0xC, 0xE4, 0xF, 0x78, 0xF, 0x7E, 0xC, 0xEA, 0xC, 0xF0, 0xC, 0xF6, 0xC, 0xFC, 0xF, 0x90, 0x10, 0x50, 0xF, 0xDE, 0xF, 0xE4, 0xF, 0xDE, 0xF, 0xE4, 0xF, 0xDE, 0xF, 0xE4, 0xF, 0xDE, 0xF, 0xE4, 0xF, 0xDE, 0xF, 0xE4, 0xF, 0xDE, 0xF, 0xE4, 0x10, 0x2, 0x10, 0x56, 0x10, 0x20, 0x10, 0x5C, 0x10, 0x20, 0x10, 0x26, 0x10, 0x2C, 0x10, 0x26, 0x10, 0x2C, 0x10, 0x26, 0x10, 0x2C, 0xD, 0x8, 0xD, 0x8, 0x10, 0xAA, 0x10, 0x8C, 0x10, 0x8C, 0x10, 0x8C, 0x10, 0x8C, 0x10, 0x8C, 0x10, 0x8C, 0x10, 0x8C, 0xD, 0x2, 0x10, 0x98, 0x10, 0x98, 0x10, 0x98, 0x10, 0x98, 0x10, 0x80, 0x10, 0x80, 0x10, 0x80, 0x10, 0x80, 0x10, 0x74, 0x10, 0xDA, 0x10, 0xDA, 0x10, 0xDA, 0x10, 0xDA, 0x10, 0xDA, 0xD, 0x56, 0xD, 0x56, 0xD, 0x56, 0xD, 0x56, 0x10, 0xEC, 0x10, 0x8C, 0x10, 0x8C, 0x10, 0x8C, 0x10, 0xC2, 0x10, 0xC2, 0x10, 0xC2, 0x10, 0xC2, 0xD, 0x8, 0x10, 0x98, 0x10, 0x98, 0x10, 0x98, 0x10, 0x98, 0x10, 0x98, 0xD, 0xE, 0xD, 0xE, 0xD, 0xE, 0xD, 0x14, 0x10, 0xBC, 0x10, 0x80, 0x10, 0x80, 0x10, 0x80, 0xD, 0x1A, 0x10, 0x80, 0x10, 0xCE, 0xD, 0x20, 0xD, 0x2C, 0xD, 0x26, 0xD, 0x2C, 0xD, 0x2C, 0x10, 0x74, 0xD, 0x32, 0x10, 0x74, 0x10, 0xDA, 0x10, 0xDA, 0x10, 0xDA, 0x11, 0x22, 0xD, 0x3E, 0xD, 0x38, 0xD, 0x3E, 0x10, 0x7A, 0x10, 0x7A, 0xD, 0x44, 0x10, 0x7A, 0xD, 0x4A, 0x10, 0xAA, 0xD, 0x50, 0xD, 0x56, 0xD, 0x56, 0xD, 0x56, 0xD, 0x56, 0xD, 0x56, 0xD, 0x56, 0x10, 0xE6, 0x10, 0xEC, 0x10, 0xEC, 0x10, 0x6E, 0x10, 0x6E, 0x10, 0x6E, 0x10, 0x62, 0xE, 0x52, 0xF, 0x4E, 0xD, 0x5C, 0x10, 0x1A, 0xF, 0x7E, 0xD, 0xE0, 0x10, 0x2, 0x10, 0x56, 0x10, 0x2, 0x10, 0x56, 0x10, 0x2, 0x10, 0x56, 0x10, 0x20, 0x10, 0x5C, 0xE, 0xF4, 0xE, 0xFA, 0xD, 0xE6, 0x10, 0x62, 0xD, 0x62, 0xD, 0x68, 0xD, 0xE6, 0x10, 0x62, 0xD, 0xE6, 0x10, 0x62, 0xD, 0xE6, 0x10, 0x62, 0xD, 0xE6, 0x10, 0x62, 0xD, 0xE6, 0x10, 0x62, 0xD, 0x62, 0xD, 0x68, 0xD, 0xE6, 0x10, 0x62, 0xD, 0xE6, 0x10, 0x62, 0xD, 0xE6, 0x10, 0x62, 0xD, 0xE6, 0x10, 0x62, 0xD, 0x62, 0xD, 0x68, 0xD, 0x6E, 0xD, 0x74, 0xE, 0x4C, 0xE, 0x52, 0xE, 0x4C, 0xE, 0x52, 0xE, 0x4C, 0xE, 0x52, 0xE, 0x4C, 0xE, 0x52, 0xE, 0x4C, 0xE, 0x52, 0xE, 0x4C, 0xE, 0x52, 0xD, 0x6E, 0xD, 0x74, 0xD, 0xDA, 0xD, 0xE0, 0xD, 0x7A, 0x11, 0x34, 0xD, 0x80, 0xD, 0x86, 0xF, 0x3C, 0xF, 0x42, 0xF, 0x3C, 0xF, 0x42, 0xF, 0x3C, 0xF, 0x42, 0xF, 0x3C, 0xF, 0x42, 0xF, 0x3C, 0xF, 0x42, 0xD, 0x80, 0xD, 0x86, 0xD, 0x8C, 0xD, 0x92, 0xD, 0x8C, 0xD, 0x92, 0xD, 0x8C, 0xD, 0x92, 0xD, 0x8C, 0xD, 0x92, 0xD, 0x98, 0xD, 0x9E, 0xD, 0xA4, 0xD, 0xAA, 0xF, 0xDE, 0xF, 0xE4, 0xD, 0xB0, 0xF, 0xE4, 0xD, 0xB0, 0xF, 0xE4, 0xD, 0xB0, 0xF, 0xE4, 0xD, 0xB0, 0xF, 0xE4, 0xD, 0xB6, 0xD, 0xBC, 0xD, 0xC2, 0xD, 0xC8, 0x10, 0x20, 0x10, 0x5C, 0x10, 0x20, 0x10, 0x5C, 0xD, 0xCE, 0xD, 0xE6, 0x10, 0x62, 0xD, 0xDA, 0xD, 0xE0, 0xF, 0x3C, 0xF, 0x42, 0xF, 0xDE, 0xF, 0xE4, 0xF, 0xDE, 0xF, 0xE4, 0xF, 0xDE, 0xF, 0xE4, 0xF, 0xDE, 0xF, 0xE4, 0xF, 0xDE, 0xF, 0xE4, 0xD, 0xD4, 0xD, 0xE6, 0x10, 0x62, 0xD, 0xE6, 0x10, 0x62, 0xE, 0x82, 0xE, 0x88, 0xE, 0xB2, 0xE, 0xB8, 0x11, 0xA, 0x11, 0x10, 0x11, 0xA, 0x11, 0x10, 0xE, 0x82, 0xE, 0x88, 0xF, 0xC, 0xF, 0x12, 0xD, 0xE6, 0x10, 0x62, 0xD, 0xE6, 0x10, 0x62, 0xE, 0x4C, 0xE, 0x52, 0xE, 0x4C, 0xE, 0x52, 0xD, 0xDA, 0xD, 0xE0, 0xD, 0xDA, 0xD, 0xE0, 0xF, 0x3C, 0xF, 0x42, 0xF, 0x3C, 0xF, 0x42, 0xF, 0x54, 0xF, 0x5A, 0xF, 0x54, 0xF, 0x5A, 0xF, 0xDE, 0xF, 0xE4, 0xF, 0xDE, 0xF, 0xE4, 0xE, 0x9A, 0xE, 0xA0, 0xD, 0xE6, 0x10, 0x62, 0xE, 0x70, 0xE, 0x76, 0xF, 0x3C, 0xF, 0x42, 0xF, 0x3C, 0xF, 0x42, 0xF, 0x3C, 0xF, 0x42, 0xF, 0x3C, 0xF, 0x42, 0x10, 0x20, 0x10, 0x5C, 0xD, 0xEC, 0xD, 0xF2, 0xE, 0xD6, 0xD, 0xF8, 0xE, 0xDC, 0xD, 0xFE, 0xE, 0x4, 0xE, 0xA, 0xE, 0x10, 0xE, 0x16, 0xE, 0x1C, 0xE, 0x22, 0xE, 0x28, 0xE, 0x2E, 0xE, 0x34, 0xE, 0x3A, 0xE, 0x40, 0xE, 0x46, 0xE, 0x4C, 0xE, 0x52, 0xE, 0x4C, 0xE, 0x52, 0xE, 0x58, 0xE, 0x5E, 0xE, 0x64, 0xE, 0x6A, 0xE, 0x70, 0xE, 0x76, 0x10, 0x92, 0xE, 0x7C, 0xE, 0x82, 0xE, 0x88, 0xE, 0x9A, 0xE, 0xA0, 0xE, 0x8E, 0xE, 0x94, 0xE, 0x9A, 0xE, 0xA0, 0xE, 0xA6, 0xE, 0xAC, 0xE, 0xB2, 0xE, 0xB8, 0xE, 0xBE, 0xE, 0xC4, 0xE, 0xCA, 0xE, 0xD0, 0xE, 0xD6, 0x11, 0x34, 0xE, 0xD6, 0x11, 0x34, 0xE, 0xDC, 0xE, 0xE2, 0xE, 0xE8, 0xE, 0xEE, 0xE, 0xF4, 0xE, 0xFA, 0xF, 0x0, 0xF, 0x6, 0xF, 0xC, 0xF, 0x12, 0xF, 0x18, 0xF, 0x1E, 0xF, 0x24, 0xF, 0x2A, 0xF, 0x30, 0xF, 0x36, 0xF, 0x3C, 0xF, 0x42, 0xF, 0x3C, 0xF, 0x42, 0xF, 0x3C, 0xF, 0x42, 0xF, 0x3C, 0xF, 0x42, 0xF, 0x48, 0xF, 0x4E, 0xF, 0x48, 0xF, 0x4E, 0xF, 0x54, 0xF, 0x5A, 0xF, 0x60, 0xF, 0x66, 0xF, 0x60, 0xF, 0x66, 0xF, 0x6C, 0xF, 0x72, 0xF, 0x78, 0xF, 0x7E, 0xF, 0x84, 0xF, 0x8A, 0xF, 0x78, 0xF, 0x7E, 0xF, 0x78, 0xF, 0x7E, 0xF, 0x84, 0xF, 0x8A, 0xF, 0x90, 0x10, 0x50, 0xF, 0x96, 0xF, 0x9C, 0xF, 0xA2, 0xF, 0xA8, 0xF, 0xAE, 0xF, 0xB4, 0xF, 0xBA, 0xF, 0xC0, 0xF, 0xC6, 0xF, 0xCC, 0xF, 0xD2, 0xF, 0xD8, 0xF, 0xDE, 0xF, 0xE4, 0xF, 0xDE, 0xF, 0xE4, 0xF, 0xEA, 0xF, 0xF0, 0xF, 0xF6, 0xF, 0xFC, 0x10, 0x2, 0x10, 0x56, 0x10, 0x8, 0x10, 0xE, 0x10, 0x14, 0x10, 0x1A, 0x10, 0x14, 0x10, 0x1A, 0x10, 0x20, 0x10, 0x5C, 0x10, 0x26, 0x10, 0x2C, 0x10, 0x32, 0x10, 0x38, 0x10, 0x3E, 0x10, 0x44, 0x10, 0x4A, 0x10, 0x50, 0x10, 0x56, 0x10, 0x5C, 0x10, 0x62, 0x10, 0x8C, 0x10, 0x98, 0x10, 0xBC, 0x10, 0x80, 0x10, 0xDA, 0x10, 0xEC, 0x10, 0x68, 0x10, 0x8C, 0x10, 0x92, 0x10, 0x98, 0x10, 0x6E, 0x10, 0xBC, 0x10, 0x80, 0x10, 0x86, 0x10, 0x9E, 0x10, 0x74, 0x10, 0xDA, 0x10, 0xA4, 0x10, 0xAA, 0x10, 0xEC, 0x10, 0xB0, 0x10, 0x80, 0x10, 0xEC, 0x10, 0x98, 0x10, 0x7A, 0x10, 0x80, 0x10, 0x80, 0x10, 0xCE, 0x10, 0x86, 0x10, 0x8C, 0x10, 0x92, 0x10, 0x98, 0x10, 0x9E, 0x10, 0xBC, 0x10, 0xDA, 0x10, 0xA4, 0x10, 0xC2, 0x10, 0xAA, 0x10, 0xB0, 0x10, 0xB6, 0x10, 0xBC, 0x10, 0xC2, 0x10, 0xEC, 0x10, 0xC8, 0x10, 0xCE, 0x10, 0xD4, 0x10, 0xDA, 0x10, 0xE0, 0x10, 0xE6, 0x10, 0xE6, 0x10, 0xE6, 0x10, 0xEC, 0x10, 0xF2, 0x10, 0xF8, 0x10, 0xFE, 0x11, 0x4, 0x11, 0xA, 0x11, 0x10, 0x11, 0x16, 0x11, 0x1C, 0x11, 0x22, 0x11, 0x28, 0x11, 0x2E, 0x11, 0x34, 0x0, 0x1, 0x2, 0xBA, 0xFF, 0xF6, 0x0, 0x1, 0x3, 0x8C, 0xFE, 0x69, 0x0, 0x1, 0x2, 0xDF, 0x0, 0xA, 0x0, 0x1, 0x2, 0x54, 0x0, 0xA, 0x0, 0x1, 0x1, 0x28, 0x0, 0xA, 0x0, 0x1, 0x3, 0xC9, 0x0, 0x0, 0x0, 0x1, 0x3, 0xA7, 0xFF, 0xFC, 0x0, 0x1, 0x2, 0xB8, 0x0, 0x0, 0x0, 0x1, 0x1, 0x63, 0x0, 0x7, 0x0, 0x1, 0x1, 0x63, 0x0, 0xA, 0x0, 0x1, 0x2, 0x4A, 0x0, 0xA, 0x0, 0x1, 0x2, 0xB0, 0xFF, 0xF9, 0x0, 0x1, 0x2, 0x33, 0xFE, 0x19, 0x0, 0x1, 0x2, 0x86, 0x0, 0xA, 0x0, 0x1, 0x3, 0x22, 0x0, 0x0, 0x0, 0x1, 0x1, 0x5A, 0xFE, 0x35, 0x0, 0x1, 0x1, 0x50, 0x0, 0xA, 0x0, 0x1, 0x2, 0xCB, 0x0, 0x10, 0x0, 0x1, 0x3, 0xC, 0xFF, 0x79, 0x0, 0x1, 0x2, 0x2A, 0x0, 0x0, 0x0, 0x1, 0x2, 0x1, 0x0, 0x0, 0x0, 0x1, 0x2, 0x65, 0x0, 0x0, 0x0, 0x1, 0x2, 0x74, 0xFF, 0xFC, 0x0, 0x1, 0x1, 0xF5, 0x0, 0x0, 0x0, 0x1, 0x2, 0x4E, 0x0, 0x0, 0x0, 0x1, 0x2, 0x5D, 0xFE, 0x41, 0x0, 0x1, 0x1, 0xF2, 0x0, 0x0, 0x0, 0x1, 0x2, 0x23, 0x0, 0x0, 0x0, 0x1, 0x2, 0x25, 0x0, 0x0, 0x0, 0x1, 0x1, 0x89, 0xFE, 0x41, 0x0, 0x1, 0x2, 0x2B, 0xFE, 0x41, 0x0, 0x1, 0x2, 0x72, 0x0, 0x0, 0x0, 0x1, 0x2, 0x90, 0x0, 0x0, 0x0, 0x1, 0x0, 0xF1, 0x0, 0x0, 0x0, 0x1, 0x1, 0x6A, 0x0, 0x0, 0x0, 0x1, 0x1, 0x7E, 0x0, 0x0, 0x0, 0x1, 0x1, 0x31, 0xFE, 0x41, 0x0, 0x1, 0x2, 0x75, 0xFE, 0x41, 0x0, 0x1, 0x3, 0x80, 0x0, 0x0, 0x0, 0x1, 0x3, 0x80, 0xFE, 0x41, 0x0, 0x1, 0x3, 0x85, 0xFE, 0x41, 0x0, 0x1, 0x2, 0xA2, 0xFE, 0x41, 0x0, 0x1, 0x2, 0x3E, 0xFE, 0x41, 0x0, 0x1, 0x2, 0x42, 0x0, 0x0, 0x0, 0x1, 0x3, 0x8E, 0x0, 0x0, 0x0, 0x1, 0x3, 0x48, 0x0, 0x0, 0x0, 0x1, 0x2, 0x6A, 0xFE, 0x41, 0x0, 0x1, 0x0, 0xE8, 0x0, 0x0, 0x0, 0x1, 0x0, 0xE8, 0xFE, 0x41, 0x0, 0x1, 0x1, 0xED, 0xFE, 0x41, 0x0, 0x1, 0x0, 0xFA, 0x0, 0x0, 0x0, 0x1, 0x1, 0x75, 0xFE, 0x41, 0x0, 0x1, 0x2, 0x1B, 0x0, 0x0, 0x0, 0x1, 0x2, 0x50, 0x0, 0x0, 0x0, 0x1, 0x2, 0x17, 0xFE, 0x41, 0x0, 0x1, 0x0, 0xD4, 0xFE, 0x41, 0x0, 0x1, 0x2, 0x64, 0xFE, 0x41, 0x0, 0x1, 0x1, 0x66, 0xFE, 0x41, 0x0, 0x1, 0x1, 0xB6, 0xFE, 0x41, 0x0, 0x1, 0x2, 0x9C, 0x0, 0x0, 0x0, 0x1, 0x2, 0x30, 0x0, 0x0, 0x0, 0x1, 0x2, 0x1E, 0x0, 0x0, 0x0, 0x1, 0x1, 0xF4, 0xFE, 0x41, 0x0, 0x1, 0x1, 0xEC, 0xFE, 0x41, 0x0, 0x1, 0x2, 0x3A, 0xFE, 0x41, 0x0, 0x1, 0x1, 0xF9, 0x0, 0x0, 0x0, 0x1, 0x2, 0x0, 0x0, 0x0, 0x0, 0x1, 0x2, 0xC2, 0x0, 0x0, 0x0, 0x1, 0x2, 0x17, 0x0, 0x0, 0x0, 0x1, 0x2, 0x5C, 0x0, 0x0, 0x0, 0x1, 0x2, 0x49, 0xFE, 0x41, 0x0, 0x1, 0x2, 0x1A, 0x0, 0x0, 0x0, 0x1, 0x1, 0xFA, 0x0, 0x0, 0x0, 0x1, 0x5, 0xA4, 0x0, 0x0, 0x0, 0x1, 0x5, 0xB, 0xFE, 0x41, 0x0, 0x1, 0x5, 0x85, 0xFE, 0x41, 0x0, 0x1, 0x3, 0xCD, 0x0, 0x0, 0x0, 0x1, 0x4, 0x47, 0x0, 0x0, 0x0, 0x1, 0x4, 0xA9, 0xFE, 0x41, 0x0, 0x1, 0x3, 0x66, 0x0, 0x0, 0x0, 0x1, 0x3, 0x19, 0x0, 0x0, 0x0, 0x1, 0x1, 0xE3, 0x0, 0x0, 0x0, 0x1, 0x1, 0xEE, 0x0, 0x0, 0x0, 0x1, 0x2, 0xAC, 0xFE, 0x41, 0x0, 0x1, 0x2, 0xA9, 0x0, 0xA, 0x0, 0x1, 0x2, 0x12, 0xFF, 0xF6, 0x0, 0x1, 0x3, 0x4A, 0xFF, 0xF6, 0x0, 0x1, 0x2, 0x67, 0xFF, 0xF6, 0x0, 0x1, 0x2, 0xCB, 0x0, 0xA, 0x0, 0x1, 0x2, 0xE, 0xFF, 0xF7, 0x0, 0x1, 0x2, 0x29, 0x0, 0xA, 0x0, 0x1, 0x2, 0x9A, 0xFF, 0xF6, 0x0, 0x1, 0x2, 0x47, 0xFF, 0xF6, 0x0, 0x1, 0x2, 0x4D, 0xFF, 0xF6, 0x0, 0x1, 0x3, 0xC1, 0xFF, 0xFE, 0x0, 0x1, 0x2, 0xC9, 0x0, 0x3, 0x0, 0x1, 0x2, 0xA2, 0x0, 0x0, 0x0, 0x1, 0x2, 0x5C, 0x0, 0xA, 0x0, 0x1, 0x1, 0x11, 0x0, 0xA, 0x0, 0x1, 0x2, 0x21, 0xFF, 0xF6, 0x0, 0x1, 0x2, 0xA4, 0xFF, 0xF6, 0x0, 0x1, 0x3, 0x4D, 0x0, 0x0, 0x0, 0x1, 0x2, 0x71, 0x0, 0x0, 0x0, 0x1, 0x2, 0x3D, 0x0, 0x0, 0x0, 0x1, 0x2, 0x44, 0x0, 0x0, 0x0, 0x1, 0x2, 0xA7, 0x0, 0x0, 0x0, 0x1, 0x2, 0x4B, 0x0, 0x0, 0x0, 0x1, 0x2, 0xF, 0x0, 0x0, 0x0, 0x1, 0x1, 0x5, 0xFE, 0x41, 0x0, 0x1, 0x1, 0xD2, 0x0, 0x0, 0x0, 0x1, 0x2, 0xB, 0x0, 0x0, 0x0, 0x1, 0x2, 0x24, 0x0, 0x0, 0x0, 0x1, 0x2, 0xF6, 0x0, 0x0, 0x0, 0x1, 0x2, 0x54, 0x0, 0x0, 0x0, 0x1, 0x2, 0x4D, 0x0, 0x0, 0x0, 0x1, 0x1, 0xF6, 0x0, 0x0, 0x0, 0x1, 0x3, 0x73, 0x0, 0x0, 0x0, 0x1, 0x1, 0xF3, 0x0, 0x0, 0x0, 0x1, 0x2, 0x4A, 0x0, 0x0, 0x0, 0x1, 0x2, 0x34, 0x0, 0x0, 0x0, 0x1, 0x2, 0x3F, 0x0, 0x0, 0x0, 0x1, 0x1, 0xFB, 0x0, 0x0, 0x0, 0x1, 0x2, 0x79, 0x0, 0x0, 0x0, 0x1, 0x1, 0xFE, 0x0, 0x0, 0x0, 0x1, 0x2, 0xF8, 0x0, 0x0, 0x0, 0x1, 0x1, 0xEA, 0x0, 0x0, 0x0, 0x1, 0x2, 0xD, 0x0, 0x0, 0x0, 0x1, 0x2, 0x67, 0x0, 0x0, 0x0, 0x1, 0x2, 0x7, 0x0, 0x0, 0x0, 0x1, 0x2, 0x4F, 0x0, 0x0, 0x0, 0x1, 0x2, 0x56, 0x0, 0x0, 0x0, 0x1, 0x2, 0x5B, 0x0, 0x0, 0x0, 0x1, 0x2, 0xB1, 0x0, 0x0, 0x0, 0x1, 0x2, 0x78, 0x0, 0x0, 0x0, 0x1, 0x3, 0x4E, 0x0, 0x0, 0x0, 0x1, 0x2, 0xFB, 0x0, 0x0, 0x0, 0x1, 0x2, 0x14, 0x0, 0x0, 0x0, 0x1, 0x1, 0xAA, 0x0, 0x0, 0x0, 0x1, 0x3, 0xF7, 0x0, 0x0, 0x0, 0x1, 0x1, 0x69, 0xFE, 0x41, 0x0, 0x1, 0x1, 0x75, 0x0, 0x0, 0x0, 0x1, 0x2, 0x36, 0x0, 0x0, 0x0, 0x1, 0x1, 0xF7, 0x0, 0x0, 0x0, 0x1, 0x2, 0x10, 0x0, 0x0, 0x0, 0x1, 0x2, 0x69, 0xFE, 0x41, 0x0, 0x1, 0x2, 0x23, 0xFE, 0x41, 0x0, 0x1, 0x4, 0xAB, 0x0, 0x0, 0x0, 0x1, 0x1, 0x63, 0x0, 0x0, 0x0, 0x1, 0x1, 0x3A, 0xFE, 0x41, 0x0, 0x1, 0x2, 0x76, 0x0, 0x0, 0x0, 0x1, 0x2, 0x81, 0xFE, 0x41, 0x0, 0x1, 0x2, 0x3D, 0xFE, 0x41, 0x0, 0x1, 0x1, 0x51, 0xFE, 0x41, 0x0, 0x1, 0x2, 0x22, 0xFE, 0x41, 0x0, 0x1, 0x1, 0x17, 0xFE, 0x41, 0x0, 0x1, 0x3, 0x83, 0xFE, 0x41, 0x0, 0x1, 0x2, 0x37, 0xFE, 0x41, 0x0, 0x1, 0x2, 0x88, 0xFE, 0x41, 0x0, 0x1, 0x0, 0xFD, 0xFE, 0x41, 0x0, 0x1, 0x2, 0x1C, 0xFE, 0x41, 0x0, 0x1, 0x1, 0x38, 0xFE, 0x41, 0x0, 0x1, 0x1, 0xFD, 0xFE, 0x41, 0x0, 0x1, 0x2, 0x5, 0xFE, 0x41, 0x0, 0x1, 0x2, 0x7, 0xFE, 0x41, 0x0, 0x1, 0x2, 0x30, 0xFE, 0x41, 0x0, 0x1, 0x2, 0x33, 0xFE, 0x41, 0x0, 0x1, 0x2, 0x18, 0xFE, 0x41, 0x0, 0x1, 0x2, 0x4D, 0xFE, 0x41, 0x0, 0x1, 0x2, 0x34, 0xFE, 0x41, 0x0, 0x1, 0x2, 0x24, 0xFE, 0x41, 0x0, 0x1, 0x2, 0x11, 0xFE, 0x41, 0x0, 0x1, 0x1, 0x9, 0xFE, 0x41, 0x0, 0x1, 0x1, 0xFE, 0xFE, 0x41, 0x0, 0x1, 0x0, 0xEC, 0xFE, 0x41, 0x0, 0x1, 0x2, 0x3B, 0xFE, 0x41, 0x0, 0x1, 0x2, 0x46, 0xFD, 0xDD, 0x0, 0x1, 0x1, 0x7F, 0x0, 0x7, 0x0, 0x1, 0x1, 0x7C, 0x0, 0xA, 0x0, 0x1, 0x1, 0x73, 0x0, 0x7, 0x0, 0x1, 0x1, 0x69, 0x0, 0xA, 0x0, 0x1, 0x3, 0x49, 0x0, 0x0, 0x0, 0x1, 0x2, 0x3B, 0x0, 0xA, 0x0, 0x1, 0x2, 0x5C, 0xFF, 0xF6, 0x0, 0x1, 0x1, 0xCF, 0x0, 0xA, 0x0, 0x1, 0x2, 0x5B, 0x0, 0xA, 0x0, 0x1, 0x2, 0xD7, 0xFF, 0xF6, 0x0, 0x1, 0x2, 0x52, 0x0, 0x0, 0x0, 0x1, 0x2, 0x72, 0x0, 0xA, 0x0, 0x1, 0x2, 0xDA, 0x0, 0x7, 0x0, 0x1, 0x2, 0xCE, 0x0, 0x0, 0x0, 0x1, 0x2, 0xEF, 0x0, 0xA, 0x0, 0x1, 0x4, 0x58, 0x0, 0xA, 0x0, 0x1, 0x0, 0xBE, 0xFE, 0x35, 0x0, 0x1, 0x1, 0x7A, 0xFE, 0x35, 0x0, 0x1, 0x1, 0x6A, 0x0, 0xA, 0x0, 0x1, 0x2, 0x43, 0xFE, 0x35, 0x0, 0x1, 0x1, 0x6, 0xFE, 0x35, 0x0, 0x1, 0x1, 0x11, 0xFE, 0x35, 0x0, 0x1, 0x2, 0x32, 0x0, 0xA, 0x0, 0x1, 0x2, 0xC4, 0xFE, 0x19, 0x0, 0x1, 0x3, 0x37, 0xFF, 0xF6, 0x0, 0x1, 0x2, 0x10, 0x0, 0x8, 0x0, 0x1, 0x1, 0xC6, 0x0, 0xA, 0x0, 0x1, 0x2, 0x7B, 0x0, 0xA, 0x0, 0x1, 0x2, 0xAA, 0xFF, 0xF9, 0x0, 0x1, 0x2, 0xD9, 0xFD, 0xF0, 0x0, 0x1, 0x1, 0x21, 0xFE, 0x59, 0x0, 0x1, 0x2, 0x0, 0xFF, 0xF6, 0x0, 0x1, 0x2, 0x92, 0xFE, 0x43, 0x0, 0x1, 0x2, 0x22, 0xFE, 0x2D, 0x0, 0x1, 0x2, 0x63, 0xFE, 0x1, 0x0, 0x1, 0x1, 0x6, 0xFE, 0x1, 0x0, 0x1, 0x2, 0xD1, 0xFD, 0xFE, 0x0, 0x1, 0x2, 0x37, 0xFE, 0x1, 0x0, 0x1, 0x2, 0x64, 0xFE, 0x1, 0x0, 0x1, 0x1, 0x0, 0xFE, 0x1, 0x0, 0x1, 0x2, 0x7F, 0xFE, 0x3D, 0x0, 0x1, 0x2, 0x25, 0xFE, 0x33, 0x0, 0x1, 0x2, 0x7F, 0xFD, 0xF7, 0x0, 0x1, 0x2, 0x25, 0xFD, 0xED, 0x0, 0x1, 0x2, 0x6D, 0xFD, 0xFB, 0x0, 0x1, 0x1, 0xBE, 0xFD, 0xF7, 0x0, 0x1, 0x2, 0x6D, 0xFE, 0x41, 0x0, 0x1, 0x1, 0xBE, 0xFE, 0x3D, 0x0, 0x1, 0x2, 0x4C, 0xFE, 0x3C, 0x0, 0x1, 0x1, 0xCB, 0x0, 0xA, 0x0, 0x1, 0x2, 0x5F, 0xFF, 0xFF, 0x0, 0x1, 0x2, 0x5F, 0xFD, 0xF6, 0x0, 0x1, 0x0, 0xFF, 0xFE, 0x52, 0x0, 0x1, 0x2, 0x8, 0xFD, 0xFE, 0x0, 0x1, 0x2, 0x6, 0xFD, 0xFF, 0x0, 0x1, 0x2, 0x6, 0x0, 0x8, 0x0, 0x1, 0x2, 0x6E, 0xFD, 0xF8, 0x0, 0x1, 0x2, 0xE, 0xFD, 0xFF, 0x0, 0x1, 0x2, 0xE, 0x0, 0x8, 0x0, 0x1, 0x2, 0x31, 0xFE, 0x3D, 0x0, 0x1, 0x2, 0x1B, 0xFD, 0xFE, 0x0, 0x1, 0x2, 0x1B, 0xFE, 0x44, 0x0, 0x1, 0x2, 0x40, 0x0, 0x0, 0x0, 0x1, 0x2, 0x1E, 0xFF, 0xF9, 0x0, 0x1, 0x2, 0xB7, 0xFE, 0x94, 0x0, 0x1, 0x1, 0xE9, 0xFE, 0x99, 0x0, 0x1, 0x2, 0x74, 0xFE, 0x9B, 0x0, 0x1, 0x2, 0x39, 0xFE, 0x91, 0x0, 0x1, 0x1, 0x21, 0xFE, 0x98, 0x0, 0x1, 0x2, 0xC7, 0xFE, 0x91, 0x0, 0x1, 0x2, 0x47, 0xFE, 0x8D, 0x0, 0x1, 0x2, 0xB0, 0x0, 0x0, 0x0, 0x1, 0x2, 0x44, 0xFF, 0xF6, 0x0, 0x1, 0x2, 0xB0, 0xFE, 0x91, 0x0, 0x1, 0x2, 0x44, 0xFE, 0x87, 0x0, 0x1, 0x2, 0x9B, 0xFE, 0x91, 0x0, 0x1, 0x1, 0xEB, 0xFE, 0x91, 0x0, 0x1, 0x2, 0xC2, 0xFF, 0xF6, 0x0, 0x1, 0x2, 0xC2, 0xFE, 0x87, 0x0, 0x1, 0x2, 0x37, 0xFE, 0x91, 0x0, 0x1, 0x2, 0x6F, 0xFE, 0xA1, 0x0, 0x1, 0x2, 0xF0, 0xFE, 0xA, 0x0, 0x1, 0x0, 0xF8, 0x0, 0xA, 0x0, 0x1, 0x2, 0x3E, 0x0, 0x0, 0x0, 0x1, 0x1, 0x21, 0x0, 0x7, 0x0, 0x1, 0x1, 0x6, 0x0, 0xA, 0x0, 0x1, 0x2, 0xB7, 0x0, 0x3, 0x0, 0x1, 0x2, 0x63, 0x0, 0xA, 0x0, 0x1, 0x2, 0x74, 0xFF, 0xF6, 0x0, 0x1, 0x2, 0x74, 0xFE, 0x87, 0x0, 0x1, 0x2, 0x75, 0xFE, 0xBE, 0x0, 0x1, 0x2, 0xAA, 0xFE, 0x36, 0x0, 0x1, 0x2, 0x1E, 0xFE, 0x36, 0x0, 0x1, 0x2, 0x3D, 0x0, 0xA, 0x0, 0x1, 0x2, 0x5D, 0x0, 0x0, 0x0, 0x1, 0x2, 0x3D, 0xFE, 0x9B, 0x0, 0x1, 0x2, 0x5D, 0xFE, 0x91, 0x0, 0x1, 0x2, 0x3E, 0xFE, 0xD2, 0x0, 0x1, 0x2, 0x5E, 0xFE, 0xC8, 0x0, 0x1, 0x2, 0x3D, 0xFE, 0x1, 0x0, 0x1, 0x2, 0x5D, 0xFD, 0xF7, 0x0, 0x1, 0x2, 0x3D, 0xFE, 0x7E, 0x0, 0x1, 0x2, 0x5D, 0xFE, 0x74, 0x0, 0x1, 0x2, 0x74, 0x0, 0xA, 0x0, 0x1, 0x2, 0x39, 0x0, 0x0, 0x0, 0x1, 0x2, 0x74, 0xFE, 0x7E, 0x0, 0x1, 0x2, 0x39, 0xFE, 0x74, 0x0, 0x1, 0x2, 0x74, 0xFE, 0x63, 0x0, 0x1, 0x2, 0x39, 0xFE, 0x59, 0x0, 0x1, 0x2, 0x74, 0xFE, 0x47, 0x0, 0x1, 0x2, 0x39, 0xFE, 0x3D, 0x0, 0x1, 0x1, 0x4A, 0x0, 0xA, 0x0, 0x1, 0x2, 0xD9, 0xFF, 0xF9, 0x0, 0x1, 0x2, 0x2A, 0xFE, 0x41, 0x0, 0x1, 0x2, 0xCF, 0xFE, 0x9B, 0x0, 0x1, 0x2, 0x4B, 0xFE, 0x9B, 0x0, 0x1, 0x2, 0xCF, 0x0, 0xA, 0x0, 0x1, 0x2, 0x4B, 0x0, 0xA, 0x0, 0x1, 0x2, 0xCF, 0xFE, 0x94, 0x0, 0x1, 0x2, 0x4B, 0xFE, 0x94, 0x0, 0x1, 0x2, 0x92, 0x0, 0x4C, 0x0, 0x1, 0x2, 0x22, 0x0, 0x36, 0x0, 0x1, 0x2, 0x92, 0xFE, 0xDD, 0x0, 0x1, 0x2, 0x22, 0xFE, 0xC7, 0x0, 0x1, 0x2, 0x93, 0xFF, 0x14, 0x0, 0x1, 0x2, 0x23, 0xFE, 0xFE, 0x0, 0x1, 0x2, 0x63, 0xFE, 0x9B, 0x0, 0x1, 0x2, 0x64, 0xFE, 0xD2, 0x0, 0x1, 0x1, 0x7, 0xFE, 0xD2, 0x0, 0x1, 0x2, 0x63, 0xFE, 0x7E, 0x0, 0x1, 0x1, 0x6, 0xFE, 0x7E, 0x0, 0x1, 0x3, 0x7F, 0x0, 0xA, 0x0, 0x1, 0x3, 0x83, 0x0, 0xA, 0x0, 0x1, 0x3, 0x7F, 0xFE, 0x9B, 0x0, 0x1, 0x3, 0x83, 0xFE, 0x9B, 0x0, 0x1, 0x2, 0xD1, 0x0, 0x7, 0x0, 0x1, 0x2, 0x37, 0x0, 0xA, 0x0, 0x1, 0x2, 0xD1, 0xFE, 0x98, 0x0, 0x1, 0x2, 0x37, 0xFE, 0x9B, 0x0, 0x1, 0x2, 0xD2, 0xFE, 0xCF, 0x0, 0x1, 0x2, 0x38, 0xFE, 0xD2, 0x0, 0x1, 0x2, 0xD1, 0xFE, 0x7B, 0x0, 0x1, 0x2, 0x37, 0xFE, 0x7E, 0x0, 0x1, 0x2, 0xC7, 0x0, 0x0, 0x0, 0x1, 0x2, 0x47, 0xFF, 0xFC, 0x0, 0x1, 0x2, 0x12, 0x0, 0xA, 0x0, 0x1, 0x0, 0xF4, 0xFE, 0x69, 0x0, 0x1, 0x2, 0x64, 0x0, 0xA, 0x0, 0x1, 0x1, 0x0, 0x0, 0xA, 0x0, 0x1, 0x2, 0x64, 0xFE, 0x9B, 0x0, 0x1, 0x1, 0x0, 0xFE, 0x9B, 0x0, 0x1, 0x2, 0x65, 0xFE, 0xD2, 0x0, 0x1, 0x1, 0x1, 0xFE, 0xD2, 0x0, 0x1, 0x2, 0x7F, 0x0, 0x0, 0x0, 0x1, 0x2, 0x25, 0xFF, 0xF6, 0x0, 0x1, 0x2, 0x7F, 0xFE, 0x91, 0x0, 0x1, 0x2, 0x25, 0xFE, 0x87, 0x0, 0x1, 0x2, 0x6D, 0x0, 0x4, 0x0, 0x1, 0x2, 0x6D, 0xFE, 0x95, 0x0, 0x1, 0x1, 0xBE, 0xFE, 0x91, 0x0, 0x1, 0x2, 0x6E, 0xFE, 0xCC, 0x0, 0x1, 0x1, 0xBF, 0xFE, 0xC8, 0x0, 0x1, 0x2, 0x6D, 0xFE, 0x78, 0x0, 0x1, 0x1, 0xBE, 0xFE, 0x74, 0x0, 0x1, 0x2, 0x9B, 0xFE, 0x98, 0x0, 0x1, 0x2, 0x37, 0xFE, 0x98, 0x0, 0x1, 0x2, 0x9B, 0xFE, 0x59, 0x0, 0x1, 0x2, 0x37, 0xFE, 0x59, 0x0, 0x1, 0x2, 0x9B, 0xFE, 0x74, 0x0, 0x1, 0x1, 0xEB, 0xFE, 0x74, 0x0, 0x1, 0x2, 0x9B, 0x0, 0x0, 0x0, 0x1, 0x2, 0x37, 0x0, 0x0, 0x0, 0x1, 0x2, 0x99, 0x0, 0xA, 0x0, 0x1, 0x2, 0x1, 0x0, 0xA, 0x0, 0x1, 0x2, 0x99, 0xFE, 0x9B, 0x0, 0x1, 0x2, 0x1, 0xFE, 0x9B, 0x0, 0x1, 0x3, 0x8F, 0x0, 0xA, 0x0, 0x1, 0x3, 0x8F, 0xFE, 0x9B, 0x0, 0x1, 0x2, 0xF8, 0xFE, 0x9B, 0x0, 0x1, 0x2, 0x88, 0x0, 0xD, 0x0, 0x1, 0x2, 0x5, 0x0, 0xA, 0x0, 0x1, 0x2, 0x6F, 0x0, 0x10, 0x0, 0x1, 0x2, 0x6A, 0x0, 0xA, 0x0, 0x1, 0x2, 0xD, 0x0, 0xA, 0x0, 0x1, 0x2, 0x6A, 0xFE, 0x9B, 0x0, 0x1, 0x2, 0xD, 0xFE, 0x9B, 0x0, 0x1, 0x2, 0x6B, 0xFE, 0xD2, 0x0, 0x1, 0x2, 0xE, 0xFE, 0xD2, 0x0, 0x1, 0x2, 0x4C, 0xFE, 0xD2, 0x0, 0x1, 0x1, 0xBE, 0x0, 0x0, 0x0, 0x1, 0x2, 0xF8, 0x0, 0xA, 0x0, 0x1, 0x2, 0xF0, 0xFF, 0x79, 0x0, 0x1, 0x1, 0xE9, 0x0, 0x8, 0x0, 0x1, 0x2, 0x76, 0x0, 0xA, 0x0, 0x1, 0x2, 0x1C, 0x0, 0xA, 0x0, 0x1, 0x2, 0x6E, 0x0, 0x1, 0x0, 0x1, 0x2, 0x31, 0x0, 0x0, 0x0, 0x1, 0x0, 0xFF, 0x0, 0x1, 0x0, 0x1, 0x2, 0x8, 0x0, 0x7, 0x0, 0x1, 0x2, 0x58, 0x0, 0x0, 0x0, 0x1, 0x2, 0x13, 0x0, 0xA, 0x0, 0x1, 0x2, 0x22, 0x0, 0x8, 0x0, 0x1, 0x2, 0xFE, 0x0, 0xA, 0x0, 0x1, 0x1, 0xE6, 0x0, 0xA, 0x0, 0x1, 0x2, 0x1B, 0x0, 0x7, 0x0, 0x1, 0x2, 0x26, 0x0, 0x8, 0x0, 0x1, 0x2, 0x6, 0xFF, 0xF6, 0x0, 0x1, 0x2, 0x65, 0x0, 0xA, 0x0, 0x1, 0x2, 0x4C, 0xFF, 0xFF, 0x0, 0x1, 0x3, 0xBA, 0xFF, 0xF6, 0x0, 0x1, 0x1, 0xD0, 0xFF, 0xF6, 0x0, 0x1, 0x3, 0x6E, 0x0, 0x0, 0x0, 0x1, 0x2, 0x6E, 0x0, 0x0, 0x0, 0x1, 0x2, 0x31, 0xFD, 0xF7, 0x0, 0x1, 0x3, 0x3, 0x0, 0xA, 0x0, 0x1, 0x2, 0x1E, 0x0, 0x15, 0x0, 0x1, 0x2, 0xB7, 0xFE, 0x55, 0x0, 0x1, 0x1, 0xE9, 0xFE, 0x5A, 0x0, 0x1, 0x2, 0x74, 0xFE, 0x5C, 0x0, 0x1, 0x2, 0x39, 0xFE, 0x52, 0x0, 0x1, 0x2, 0xC7, 0xFE, 0x52, 0x0, 0x1, 0x2, 0x47, 0xFE, 0x4E, 0x0, 0x1, 0x2, 0x58, 0xFE, 0x52, 0x0, 0x1, 0x2, 0x22, 0xFE, 0x5A, 0x0, 0x1, 0x2, 0x6E, 0xFE, 0x52, 0x0, 0x1, 0x2, 0xDA, 0xFD, 0xFE, 0x0, 0x1, 0x1, 0x6, 0xFE, 0x63, 0x0, 0x1, 0x1, 0x6, 0xFE, 0x9B, 0x0, 0x4, 0x0, 0x0, 0x0, 0x1, 0x0, 0x8, 0x0, 0x1, 0x0, 0xC, 0x0, 0x18, 0x0, 0x1, 0x2, 0x56, 0x2, 0x80, 0x0, 0x1, 0x0, 0x4, 0x2, 0xE, 0x2, 0xF, 0x2, 0x11, 0x2, 0x12, 0x0, 0x2, 0x0, 0x5F, 0x0, 0x26, 0x0, 0x3F, 0x0, 0x0, 0x0, 0x46, 0x0, 0x5F, 0x0, 0x1A, 0x0, 0x82, 0x0, 0x82, 0x0, 0x34, 0x0, 0x84, 0x0, 0x84, 0x0, 0x35, 0x0, 0x87, 0x0, 0x87, 0x0, 0x36, 0x0, 0x8A, 0x0, 0x8A, 0x0, 0x37, 0x0, 0x8C, 0x0, 0x8C, 0x0, 0x38, 0x0, 0x94, 0x0, 0x95, 0x0, 0x39, 0x2, 0xD2, 0x2, 0xD2, 0x0, 0x3B, 0x2, 0xDA, 0x2, 0xDB, 0x0, 0x3C, 0x2, 0xEB, 0x2, 0xEB, 0x0, 0x3E, 0x2, 0xED, 0x2, 0xED, 0x0, 0x3F, 0x2, 0xF4, 0x2, 0xF5, 0x0, 0x40, 0x3, 0x17, 0x3, 0x17, 0x0, 0x42, 0x4, 0x2B, 0x4, 0x2D, 0x0, 0x43, 0x5, 0x5D, 0x5, 0x5E, 0x0, 0x46, 0x6, 0xC7, 0x6, 0xC8, 0x0, 0x48, 0x7, 0x4E, 0x7, 0x62, 0x0, 0x4A, 0x7, 0xA6, 0x7, 0xA6, 0x0, 0x5F, 0x7, 0xAE, 0x7, 0xB1, 0x0, 0x60, 0x7, 0xDE, 0x7, 0xE2, 0x0, 0x64, 0x8, 0xAD, 0x8, 0xAD, 0x0, 0x69, 0x8, 0xB3, 0x8, 0xB3, 0x0, 0x6A, 0x8, 0xB5, 0x8, 0xB8, 0x0, 0x6B, 0x8, 0xC8, 0x8, 0xF3, 0x0, 0x6F, 0x8, 0xF8, 0x9, 0x28, 0x0, 0x9B, 0x9, 0x2A, 0x9, 0x2A, 0x0, 0xCC, 0x9, 0x2C, 0x9, 0x2C, 0x0, 0xCD, 0x9, 0x2E, 0x9, 0x30, 0x0, 0xCE, 0x9, 0x33, 0x9, 0x33, 0x0, 0xD1, 0x9, 0x35, 0x9, 0xDA, 0x0, 0xD2, 0x9, 0xDD, 0x9, 0xEC, 0x1, 0x78, 0x9, 0xF3, 0x9, 0xF3, 0x1, 0x88, 0x9, 0xF5, 0x9, 0xF5, 0x1, 0x89, 0x9, 0xF9, 0x9, 0xF9, 0x1, 0x8A, 0x9, 0xFC, 0x9, 0xFC, 0x1, 0x8B, 0x9, 0xFE, 0xA, 0x1, 0x1, 0x8C, 0xA, 0x3, 0xA, 0x3, 0x1, 0x90, 0xA, 0x5, 0xA, 0x6, 0x1, 0x91, 0xA, 0x8, 0xA, 0x8, 0x1, 0x93, 0xA, 0xA, 0xA, 0xC, 0x1, 0x94, 0xA, 0xE, 0xA, 0x13, 0x1, 0x97, 0xA, 0x15, 0xA, 0x1A, 0x1, 0x9D, 0xA, 0x1C, 0xA, 0x1D, 0x1, 0xA3, 0xA, 0x1F, 0xA, 0x1F, 0x1, 0xA5, 0xA, 0x21, 0xA, 0x29, 0x1, 0xA6, 0xA, 0x2F, 0xA, 0x33, 0x1, 0xAF, 0xA, 0x35, 0xA, 0x35, 0x1, 0xB4, 0xA, 0x3F, 0xA, 0x41, 0x1, 0xB5, 0xA, 0x43, 0xA, 0x43, 0x1, 0xB8, 0xA, 0x46, 0xA, 0x4E, 0x1, 0xB9, 0xA, 0x5A, 0xA, 0x5B, 0x1, 0xC2, 0xA, 0x64, 0xA, 0x64, 0x1, 0xC4, 0xA, 0x66, 0xA, 0x66, 0x1, 0xC5, 0xA, 0x68, 0xA, 0x68, 0x1, 0xC6, 0xA, 0x6D, 0xA, 0x96, 0x1, 0xC7, 0xA, 0x98, 0xA, 0xA7, 0x1, 0xF1, 0xA, 0xB2, 0xA, 0xB5, 0x2, 0x1, 0xA, 0xC0, 0xA, 0xC7, 0x2, 0x5, 0xA, 0xCF, 0xA, 0xCF, 0x2, 0xD, 0xA, 0xD6, 0xA, 0xD6, 0x2, 0xE, 0xA, 0xD8, 0xA, 0xD9, 0x2, 0xF, 0xA, 0xDB, 0xA, 0xDB, 0x2, 0x11, 0xA, 0xEE, 0xA, 0xF0, 0x2, 0x12, 0xA, 0xF2, 0xA, 0xFD, 0x2, 0x15, 0xA, 0xFF, 0xB, 0xC, 0x2, 0x21, 0xB, 0x10, 0xB, 0x1C, 0x2, 0x2F, 0xB, 0x1E, 0xB, 0x1E, 0x2, 0x3C, 0xB, 0x20, 0xB, 0x3B, 0x2, 0x3D, 0xB, 0x3F, 0xB, 0x3F, 0x2, 0x59, 0xB, 0x42, 0xB, 0x43, 0x2, 0x5A, 0xB, 0x47, 0xB, 0xD7, 0x2, 0x5C, 0xB, 0xE0, 0xB, 0xE7, 0x2, 0xED, 0xB, 0xEE, 0xB, 0xF3, 0x2, 0xF5, 0xB, 0xFC, 0xC, 0x3, 0x2, 0xFB, 0xC, 0xC, 0xC, 0x1F, 0x3, 0x3, 0xC, 0x28, 0xC, 0x2B, 0x3, 0x17, 0xC, 0x44, 0xC, 0x45, 0x3, 0x1B, 0xC, 0x52, 0xC, 0x59, 0x3, 0x1D, 0xC, 0x62, 0xC, 0x69, 0x3, 0x25, 0xC, 0x81, 0xC, 0x85, 0x3, 0x2D, 0xC, 0x8B, 0xC, 0x8F, 0x3, 0x32, 0xC, 0x96, 0xC, 0x99, 0x3, 0x37, 0xC, 0xA2, 0xC, 0xA6, 0x3, 0x3B, 0xC, 0xAC, 0xC, 0xAD, 0x3, 0x40, 0xC, 0xB7, 0xC, 0xBC, 0x3, 0x42, 0xC, 0xBE, 0xC, 0xCE, 0x3, 0x48, 0xC, 0xD0, 0xC, 0xD4, 0x3, 0x59, 0xC, 0xD6, 0xC, 0xD7, 0x3, 0x5E, 0xC, 0xD9, 0xC, 0xD9, 0x3, 0x60, 0xC, 0xDB, 0xC, 0xDD, 0x3, 0x61, 0xC, 0xDF, 0xC, 0xE2, 0x3, 0x64, 0xC, 0xE4, 0xC, 0xE6, 0x3, 0x68, 0xC, 0xEB, 0xC, 0xEB, 0x3, 0x6B, 0xC, 0xEE, 0xD, 0x1C, 0x3, 0x6C, 0x0, 0x4, 0x0, 0x0, 0x0, 0x12, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x1E, 0x0, 0x0, 0x0, 0x24, 0x0, 0x1, 0x0, 0x0, 0x4, 0x7E, 0x0, 0x1, 0x0, 0x0, 0x4, 0xE6, 0x0, 0x1, 0x0, 0x0, 0x4, 0xF6, 0x0, 0x1, 0x0, 0x0, 0x4, 0x9C, 0x3, 0x9B, 0x2C, 0x1A, 0x7, 0xC8, 0x7, 0xCE, 0x7, 0xDA, 0x8, 0xD6, 0x7, 0xE6, 0x7, 0xF2, 0x9, 0x0, 0x8, 0x52, 0x8, 0x40, 0x7, 0xFE, 0x2A, 0xA0, 0x2A, 0xAC, 0x2A, 0xB8, 0x2C, 0x32, 0x8, 0x58, 0x2C, 0x32, 0x2A, 0xCA, 0x2A, 0xD6, 0x2A, 0xE2, 0x2A, 0xE8, 0x8, 0x28, 0x2B, 0x0, 0x8, 0x34, 0x2B, 0x6C, 0x2B, 0x12, 0x2A, 0xA0, 0x8, 0x16, 0x7, 0xD4, 0x7, 0xE0, 0x8, 0xDC, 0x7, 0xEC, 0x7, 0xF8, 0x8, 0x40, 0x29, 0xD4, 0x2A, 0x4C, 0x8, 0x4, 0x29, 0xD4, 0x8, 0xA, 0x8, 0x10, 0x8, 0xE2, 0x8, 0x16, 0x7, 0xC2, 0x25, 0x66, 0x8, 0x1C, 0x25, 0x84, 0x8, 0x22, 0x8, 0x2E, 0x8, 0x46, 0x8, 0x3A, 0x8, 0x4C, 0x8, 0x3A, 0x7, 0xB6, 0x7, 0x8C, 0x7, 0xBC, 0x7, 0xF8, 0x7, 0xE0, 0x24, 0x52, 0x7, 0x38, 0x9, 0x0, 0x8, 0x34, 0x8, 0x3A, 0x9, 0x0, 0x2A, 0xAC, 0x8, 0x34, 0x8, 0x3A, 0x8, 0x40, 0x7, 0x3E, 0x28, 0x7E, 0x7, 0x44, 0x9, 0x0, 0x8, 0x40, 0x2A, 0xB8, 0x8, 0x10, 0x8, 0x7C, 0x8, 0xD0, 0x8, 0xAC, 0x8, 0xCA, 0x7, 0x4A, 0x7, 0xAA, 0x8, 0xA6, 0x8, 0xC4, 0x7, 0xA4, 0x8, 0xF4, 0x8, 0xA0, 0x8, 0xF4, 0x8, 0x82, 0x8, 0x9A, 0x7, 0x9E, 0x8, 0x8E, 0x8, 0xBE, 0x8, 0x88, 0x8, 0xB2, 0x7, 0x98, 0x26, 0x26, 0x8, 0xEE, 0x7, 0x92, 0x8, 0xB8, 0x8, 0x94, 0x8, 0xE8, 0x9, 0x0, 0x9, 0x0, 0x26, 0x1A, 0x8, 0xFA, 0x7, 0x50, 0x7, 0xE0, 0x7, 0x56, 0x7, 0x5C, 0x8, 0xF4, 0x7, 0x62, 0x8, 0x82, 0x7, 0x68, 0x7, 0x68, 0x7, 0x6E, 0x2A, 0xE2, 0x25, 0x84, 0x2C, 0x1A, 0x2C, 0x1A, 0x2C, 0x1A, 0x2C, 0x1A, 0x2C, 0x1A, 0x2C, 0x1A, 0x2C, 0x1A, 0x7, 0xCE, 0x8, 0xD6, 0x8, 0xD6, 0x8, 0xD6, 0x8, 0xD6, 0x8, 0x52, 0x8, 0x52, 0x8, 0x52, 0x8, 0x52, 0x2A, 0xB8, 0x2C, 0x32, 0x2C, 0x32, 0x2C, 0x32, 0x2C, 0x32, 0x2C, 0x32, 0x2A, 0xE8, 0x2A, 0xE8, 0x2A, 0xE8, 0x2A, 0xE8, 0x2B, 0x6C, 0x2A, 0xA0, 0x2A, 0xA0, 0x2A, 0xA0, 0x2A, 0xA0, 0x2A, 0xA0, 0x2A, 0xA0, 0x2A, 0xA0, 0x7, 0xD4, 0x8, 0xDC, 0x8, 0xDC, 0x8, 0xDC, 0x8, 0xDC, 0x8, 0x10, 0x8, 0xE2, 0x8, 0xE2, 0x8, 0xE2, 0x8, 0xE2, 0x8, 0xE2, 0x8, 0x22, 0x8, 0x22, 0x8, 0x22, 0x8, 0x22, 0x8, 0x4C, 0x8, 0x4C, 0x2C, 0x1A, 0x2A, 0xA0, 0x2C, 0x1A, 0x2A, 0xA0, 0x2C, 0x1A, 0x2A, 0xA0, 0x7, 0xCE, 0x7, 0xD4, 0x7, 0xCE, 0x7, 0xD4, 0x7, 0xCE, 0x7, 0xD4, 0x7, 0xCE, 0x7, 0xD4, 0x7, 0xDA, 0x7, 0x74, 0x8, 0xD6, 0x8, 0xDC, 0x8, 0xD6, 0x8, 0xDC, 0x8, 0xD6, 0x8, 0xDC, 0x8, 0xD6, 0x8, 0xDC, 0x8, 0xD6, 0x8, 0xDC, 0x7, 0xF2, 0x7, 0xF8, 0x7, 0xF2, 0x7, 0xF8, 0x7, 0xF2, 0x7, 0xF8, 0x7, 0xF2, 0x7, 0xF8, 0x9, 0x0, 0x8, 0x40, 0x8, 0x52, 0x8, 0x52, 0x8, 0x52, 0x8, 0x52, 0x29, 0xD4, 0x8, 0x52, 0x8, 0x40, 0x7, 0xFE, 0x8, 0x4, 0x2A, 0xA0, 0x29, 0xD4, 0x2A, 0xA0, 0x29, 0xD4, 0x2A, 0xA0, 0x7, 0x7A, 0x2A, 0xA0, 0x7, 0x80, 0x2A, 0xB8, 0x8, 0x10, 0x2A, 0xB8, 0x8, 0x10, 0x2A, 0xB8, 0x8, 0x10, 0x8, 0x10, 0x2C, 0x32, 0x8, 0xE2, 0x2C, 0x32, 0x8, 0xE2, 0x2C, 0x32, 0x8, 0xE2, 0x2A, 0xCA, 0x25, 0x66, 0x2A, 0xCA, 0x25, 0x66, 0x2A, 0xCA, 0x25, 0x66, 0x2A, 0xD6, 0x8, 0x1C, 0x2A, 0xD6, 0x8, 0x1C, 0x2A, 0xD6, 0x8, 0x1C, 0x2A, 0xD6, 0x8, 0x1C, 0x2A, 0xD6, 0x8, 0x1C, 0x2A, 0xE2, 0x25, 0x84, 0x2A, 0xE2, 0x25, 0x84, 0x2A, 0xE2, 0x7, 0x86, 0x2A, 0xE8, 0x8, 0x22, 0x2A, 0xE8, 0x8, 0x22, 0x2A, 0xE8, 0x8, 0x22, 0x2A, 0xE8, 0x8, 0x22, 0x2A, 0xE8, 0x8, 0x22, 0x2A, 0xE8, 0x8, 0x22, 0x2B, 0x0, 0x8, 0x46, 0x2B, 0x6C, 0x8, 0x4C, 0x2B, 0x6C, 0x2B, 0x12, 0x8, 0x3A, 0x2B, 0x12, 0x8, 0x3A, 0x2B, 0x12, 0x8, 0x3A, 0x7, 0xB6, 0x7, 0xBC, 0x7, 0x8C, 0x7, 0xF8, 0x7, 0x92, 0x7, 0x92, 0x8, 0xA6, 0x8, 0xE8, 0x8, 0xE8, 0x8, 0xE8, 0x8, 0xE8, 0x8, 0xE8, 0x8, 0xE8, 0x8, 0xE8, 0x8, 0xB8, 0x8, 0xEE, 0x8, 0xEE, 0x8, 0xEE, 0x8, 0xEE, 0x8, 0x88, 0x8, 0x88, 0x8, 0x88, 0x8, 0x88, 0x8, 0x82, 0x8, 0xF4, 0x8, 0xF4, 0x8, 0xF4, 0x8, 0xF4, 0x8, 0xF4, 0x7, 0xAA, 0x7, 0xAA, 0x7, 0xAA, 0x7, 0xAA, 0x8, 0xD0, 0x8, 0xE8, 0x8, 0xE8, 0x8, 0xE8, 0x8, 0xB8, 0x8, 0xB8, 0x8, 0xB8, 0x8, 0xB8, 0x7, 0x92, 0x8, 0xEE, 0x8, 0xEE, 0x8, 0xEE, 0x8, 0xEE, 0x8, 0xEE, 0x7, 0x98, 0x7, 0x98, 0x7, 0x98, 0x7, 0x98, 0x8, 0xB2, 0x8, 0x88, 0x8, 0x88, 0x8, 0x88, 0x8, 0x88, 0x8, 0x88, 0x8, 0xBE, 0x8, 0x8E, 0x7, 0x9E, 0x7, 0x9E, 0x7, 0x9E, 0x7, 0x9E, 0x8, 0x82, 0x8, 0x82, 0x8, 0x82, 0x8, 0xF4, 0x8, 0xF4, 0x8, 0xF4, 0x8, 0xF4, 0x7, 0xA4, 0x7, 0xA4, 0x7, 0xA4, 0x8, 0xC4, 0x8, 0xC4, 0x8, 0xC4, 0x8, 0xC4, 0x8, 0xA6, 0x8, 0xA6, 0x8, 0xA6, 0x7, 0xAA, 0x7, 0xAA, 0x7, 0xAA, 0x7, 0xAA, 0x7, 0xAA, 0x7, 0xAA, 0x8, 0xCA, 0x8, 0xD0, 0x8, 0xD0, 0x8, 0x7C, 0x8, 0x7C, 0x8, 0x7C, 0x2C, 0x1A, 0x8, 0xD6, 0x9, 0x0, 0x8, 0x52, 0x2B, 0x7E, 0x29, 0x62, 0x2C, 0x1A, 0x7, 0xC8, 0x8, 0xD6, 0x2B, 0x12, 0x9, 0x0, 0x8, 0x52, 0x7, 0xFE, 0x2A, 0xAC, 0x2A, 0xB8, 0x2C, 0x32, 0x8, 0x58, 0x2A, 0xE2, 0x2B, 0x6C, 0x8, 0x34, 0x8, 0x52, 0x2B, 0x6C, 0x8, 0xE2, 0x8, 0x2E, 0x8, 0xE2, 0x8, 0xD6, 0x2A, 0xD6, 0x8, 0x52, 0x8, 0x52, 0x8, 0x40, 0x7, 0xFE, 0x2C, 0x1A, 0x7, 0xC8, 0x8, 0xD6, 0x2A, 0xAC, 0x9, 0x0, 0x2C, 0x32, 0x8, 0x58, 0x7, 0xCE, 0x2A, 0xE2, 0x8, 0x34, 0x2A, 0xA0, 0x8, 0xDC, 0x8, 0xE2, 0x8, 0x16, 0x7, 0xD4, 0x8, 0x4C, 0x8, 0x3A, 0x8, 0xDC, 0x8, 0x1C, 0x29, 0xD4, 0x2A, 0x4C, 0x8, 0x4C, 0x2B, 0x0, 0x8, 0x46, 0x2B, 0x0, 0x8, 0x46, 0x2B, 0x0, 0x8, 0x46, 0x2B, 0x6C, 0x8, 0x4C, 0x2A, 0xAC, 0x8, 0xA, 0x2C, 0x1A, 0x2A, 0xA0, 0x8, 0xD6, 0x8, 0xDC, 0x7, 0xCE, 0x7, 0xD4, 0x2B, 0x6C, 0x8, 0x52, 0x8, 0x52, 0x2C, 0x1A, 0x2A, 0xA0, 0x2C, 0x1A, 0x2A, 0xA0, 0x7, 0xB6, 0x7, 0xBC, 0x8, 0xD6, 0x8, 0xDC, 0x2C, 0x32, 0x8, 0xE2, 0x8, 0x4C, 0x8, 0x4C, 0x8, 0x4C, 0x7, 0xE0, 0x2C, 0x1A, 0x2A, 0xA0, 0x2C, 0x1A, 0x2A, 0xA0, 0x2C, 0x1A, 0x2A, 0xA0, 0x2C, 0x1A, 0x2A, 0xA0, 0x2C, 0x1A, 0x2A, 0xA0, 0x2C, 0x1A, 0x2A, 0xA0, 0x2C, 0x1A, 0x2A, 0xA0, 0x2C, 0x1A, 0x2A, 0xA0, 0x2C, 0x1A, 0x2A, 0xA0, 0x2C, 0x1A, 0x2A, 0xA0, 0x2C, 0x1A, 0x2A, 0xA0, 0x2C, 0x1A, 0x2A, 0xA0, 0x8, 0xD6, 0x8, 0xDC, 0x8, 0xD6, 0x8, 0xDC, 0x8, 0xD6, 0x8, 0xDC, 0x8, 0xD6, 0x8, 0xDC, 0x8, 0xD6, 0x8, 0xDC, 0x8, 0xD6, 0x8, 0xDC, 0x8, 0xD6, 0x8, 0xDC, 0x8, 0xD6, 0x8, 0xDC, 0x8, 0x52, 0x8, 0x52, 0x29, 0xD4, 0x2C, 0x32, 0x8, 0xE2, 0x2C, 0x32, 0x8, 0xE2, 0x2C, 0x32, 0x8, 0xE2, 0x2C, 0x32, 0x8, 0xE2, 0x2C, 0x32, 0x8, 0xE2, 0x2C, 0x32, 0x8, 0xE2, 0x2C, 0x32, 0x8, 0xE2, 0x2A, 0xE8, 0x8, 0x22, 0x2A, 0xE8, 0x8, 0x22, 0x2B, 0x6C, 0x8, 0x4C, 0x2B, 0x6C, 0x8, 0x4C, 0x2B, 0x6C, 0x8, 0x4C, 0x7, 0xB0, 0x2A, 0xE2, 0x8, 0x40, 0x2B, 0x6C, 0x8, 0x34, 0x8, 0x3A, 0x7, 0xE6, 0x2C, 0x1A, 0x2A, 0xA0, 0x8, 0x52, 0x2C, 0x32, 0x8, 0xE2, 0x2A, 0xE8, 0x8, 0x22, 0x2A, 0xE8, 0x8, 0x22, 0x2A, 0xE8, 0x8, 0x22, 0x2A, 0xE8, 0x8, 0x22, 0x2A, 0xE8, 0x8, 0x22, 0x2C, 0x1A, 0x2A, 0xA0, 0x2C, 0x1A, 0x2A, 0xA0, 0x7, 0xB6, 0x7, 0xBC, 0x7, 0xF2, 0x7, 0xF8, 0x7, 0xFE, 0x8, 0x4, 0x2C, 0x32, 0x8, 0xE2, 0x2C, 0x32, 0x8, 0xE2, 0x7, 0xF2, 0x7, 0xF8, 0x2A, 0xB8, 0x8, 0x10, 0x2C, 0x1A, 0x2A, 0xA0, 0x2C, 0x1A, 0x2A, 0xA0, 0x8, 0xD6, 0x8, 0xDC, 0x8, 0xD6, 0x8, 0xDC, 0x8, 0x52, 0x8, 0x52, 0x2C, 0x32, 0x8, 0xE2, 0x2C, 0x32, 0x8, 0xE2, 0x2A, 0xCA, 0x25, 0x66, 0x2A, 0xCA, 0x25, 0x66, 0x2A, 0xE8, 0x8, 0x22, 0x2A, 0xE8, 0x8, 0x22, 0x9, 0x0, 0x8, 0x40, 0x2C, 0x1A, 0x2A, 0xA0, 0x8, 0xD6, 0x8, 0xDC, 0x2C, 0x32, 0x8, 0xE2, 0x2C, 0x32, 0x8, 0xE2, 0x2C, 0x32, 0x8, 0xE2, 0x2C, 0x32, 0x8, 0xE2, 0x2B, 0x6C, 0x8, 0x4C, 0x8, 0x40, 0x7, 0xD4, 0x2A, 0x4C, 0x7, 0xCE, 0x2A, 0xAC, 0x2C, 0x32, 0x7, 0xC2, 0x2B, 0x0, 0x8, 0x46, 0x7, 0xC8, 0x8, 0x16, 0x7, 0xC8, 0x8, 0x16, 0x7, 0xC8, 0x8, 0x16, 0x7, 0xCE, 0x7, 0xD4, 0x7, 0xDA, 0x7, 0xE0, 0x7, 0xDA, 0x7, 0xE0, 0x7, 0xDA, 0x7, 0xE0, 0x7, 0xDA, 0x7, 0xE0, 0x7, 0xDA, 0x7, 0xE0, 0x8, 0xD6, 0x8, 0xDC, 0x8, 0xD6, 0x8, 0xDC, 0x8, 0xD6, 0x8, 0xDC, 0x8, 0xD6, 0x8, 0xDC, 0x8, 0xD6, 0x8, 0xDC, 0x7, 0xE6, 0x7, 0xEC, 0x7, 0xF2, 0x7, 0xF8, 0x9, 0x0, 0x8, 0x40, 0x9, 0x0, 0x8, 0x40, 0x9, 0x0, 0x8, 0x40, 0x9, 0x0, 0x8, 0x40, 0x7, 0xFE, 0x8, 0x4, 0x7, 0xFE, 0x8, 0x4, 0x7, 0xFE, 0x8, 0x4, 0x2A, 0xA0, 0x29, 0xD4, 0x2A, 0xA0, 0x29, 0xD4, 0x2A, 0xA0, 0x29, 0xD4, 0x2A, 0xA0, 0x29, 0xD4, 0x2A, 0xAC, 0x8, 0xA, 0x2A, 0xAC, 0x8, 0xA, 0x2A, 0xB8, 0x8, 0x10, 0x2A, 0xB8, 0x8, 0x10, 0x2A, 0xB8, 0x8, 0x10, 0x2A, 0xB8, 0x8, 0x10, 0x2C, 0x32, 0x8, 0xE2, 0x2C, 0x32, 0x8, 0xE2, 0x2C, 0x32, 0x8, 0xE2, 0x2C, 0x32, 0x8, 0xE2, 0x8, 0x58, 0x8, 0x16, 0x8, 0x58, 0x8, 0x16, 0x2A, 0xCA, 0x25, 0x66, 0x2A, 0xCA, 0x25, 0x66, 0x2A, 0xCA, 0x25, 0x66, 0x2A, 0xCA, 0x25, 0x66, 0x2A, 0xD6, 0x8, 0x1C, 0x2A, 0xD6, 0x8, 0x1C, 0x2A, 0xD6, 0x8, 0x1C, 0x2A, 0xD6, 0x8, 0x1C, 0x2A, 0xD6, 0x8, 0x1C, 0x2A, 0xE2, 0x25, 0x84, 0x2A, 0xE2, 0x25, 0x84, 0x2A, 0xE2, 0x25, 0x84, 0x2A, 0xE2, 0x25, 0x84, 0x2A, 0xE8, 0x8, 0x22, 0x2A, 0xE8, 0x8, 0x22, 0x2A, 0xE8, 0x8, 0x22, 0x2A, 0xE8, 0x8, 0x22, 0x2A, 0xE8, 0x8, 0x22, 0x8, 0x28, 0x8, 0x2E, 0x8, 0x28, 0x8, 0x2E, 0x2B, 0x0, 0x8, 0x46, 0x2B, 0x0, 0x8, 0x46, 0x8, 0x34, 0x8, 0x3A, 0x8, 0x34, 0x8, 0x3A, 0x2B, 0x6C, 0x8, 0x4C, 0x2B, 0x12, 0x8, 0x3A, 0x2B, 0x12, 0x8, 0x3A, 0x2B, 0x12, 0x8, 0x3A, 0x8, 0x40, 0x25, 0x84, 0x8, 0x46, 0x8, 0x4C, 0x2A, 0xA0, 0x2C, 0x1A, 0x2C, 0x1A, 0x2C, 0x1A, 0x2C, 0x1A, 0x2C, 0x1A, 0x2C, 0x1A, 0x2C, 0x1A, 0x2C, 0x1A, 0x8, 0xD6, 0x8, 0xD6, 0x8, 0xD6, 0x8, 0xD6, 0x8, 0xD6, 0x8, 0xD6, 0x9, 0x0, 0x9, 0x0, 0x9, 0x0, 0x9, 0x0, 0x9, 0x0, 0x9, 0x0, 0x9, 0x0, 0x9, 0x0, 0x8, 0x52, 0x8, 0x52, 0x8, 0x52, 0x8, 0x52, 0x8, 0x52, 0x8, 0x52, 0x8, 0x52, 0x8, 0x52, 0x8, 0xE2, 0x8, 0xE2, 0x8, 0xE2, 0x8, 0xE2, 0x8, 0xE2, 0x8, 0xE2, 0x2B, 0x7E, 0x2B, 0x7E, 0x2B, 0x36, 0x2B, 0x36, 0x2B, 0x36, 0x2B, 0x36, 0x2B, 0x6C, 0x2B, 0x6C, 0x2B, 0x6C, 0x2B, 0x6C, 0x8, 0xE2, 0x8, 0xE2, 0x2C, 0x1A, 0x2C, 0x1A, 0x2C, 0x1A, 0x2C, 0x1A, 0x2C, 0x1A, 0x2C, 0x1A, 0x2C, 0x1A, 0x2C, 0x1A, 0x9, 0x0, 0x9, 0x0, 0x9, 0x0, 0x9, 0x0, 0x9, 0x0, 0x9, 0x0, 0x9, 0x0, 0x9, 0x0, 0x2C, 0x1A, 0x2C, 0x1A, 0x2C, 0x1A, 0x2C, 0x1A, 0x2C, 0x1A, 0x8, 0xD6, 0x8, 0xD6, 0x9, 0x0, 0x9, 0x0, 0x9, 0x0, 0x8, 0x52, 0x8, 0x52, 0x8, 0x52, 0x8, 0x52, 0x2B, 0x6C, 0x2B, 0x6C, 0x2B, 0x6C, 0x2B, 0x6C, 0x8, 0x58, 0x2B, 0x7E, 0x2B, 0x7E, 0x8, 0xE8, 0x8, 0x5E, 0x8, 0x64, 0x8, 0x6A, 0x8, 0x70, 0x8, 0x76, 0x8, 0xE8, 0x8, 0x94, 0x8, 0xEE, 0x8, 0x7C, 0x8, 0xB2, 0x8, 0x88, 0x8, 0x8E, 0x8, 0x9A, 0x8, 0x82, 0x8, 0xF4, 0x8, 0xA0, 0x8, 0xA6, 0x8, 0xD0, 0x8, 0xAC, 0x8, 0x88, 0x8, 0xD0, 0x8, 0xEE, 0x8, 0xC4, 0x8, 0x88, 0x8, 0x88, 0x8, 0xBE, 0x8, 0x8E, 0x8, 0xE8, 0x8, 0x94, 0x8, 0xEE, 0x8, 0x9A, 0x8, 0xB2, 0x8, 0xF4, 0x8, 0xA0, 0x8, 0xB8, 0x8, 0xA6, 0x8, 0xAC, 0x8, 0xB2, 0x8, 0xB8, 0x8, 0xD0, 0x8, 0xBE, 0x8, 0xF4, 0x8, 0xC4, 0x8, 0xCA, 0x8, 0xCA, 0x8, 0xCA, 0x8, 0xD0, 0x2C, 0x1A, 0x2A, 0xA0, 0x8, 0xD6, 0x8, 0xDC, 0x2C, 0x32, 0x8, 0xE2, 0x8, 0xE8, 0x8, 0xEE, 0x8, 0xF4, 0x26, 0x1A, 0x26, 0x1A, 0x26, 0x1A, 0x26, 0x1A, 0x26, 0x1A, 0x26, 0x1A, 0x26, 0x1A, 0x26, 0x1A, 0x26, 0x1A, 0x26, 0x1A, 0x8, 0xFA, 0x8, 0xFA, 0x8, 0xFA, 0x8, 0xFA, 0x8, 0xFA, 0x8, 0xFA, 0x8, 0xFA, 0x8, 0xFA, 0x8, 0xFA, 0x9, 0x0, 0x9, 0x0, 0x9, 0x0, 0x9, 0x0, 0x9, 0x0, 0x9, 0x0, 0x9, 0x0, 0x9, 0x0, 0x9, 0x0, 0x9, 0x0, 0x9, 0x0, 0x9, 0x0, 0x9, 0x0, 0x0, 0x1, 0x7, 0x3B, 0x6, 0x40, 0x0, 0x1, 0x2, 0xA0, 0x6, 0x40, 0x0, 0x1, 0x2, 0x94, 0x6, 0x40, 0x0, 0x1, 0x4, 0x7C, 0x6, 0x40, 0x0, 0x1, 0x8, 0xAC, 0x6, 0x40, 0x0, 0x1, 0x3, 0xC4, 0x6, 0x40, 0x0, 0x1, 0x4, 0x9, 0x6, 0x40, 0x0, 0x1, 0x4, 0xF4, 0x6, 0x40, 0x0, 0x1, 0x5, 0x58, 0x6, 0x40, 0x0, 0x1, 0x4, 0x8F, 0x6, 0x40, 0x0, 0x1, 0x5, 0x1B, 0x6, 0x40, 0x0, 0x1, 0x2, 0xA2, 0x6, 0x40, 0x0, 0x1, 0x2, 0xE8, 0x6, 0x40, 0x0, 0x1, 0x2, 0xD2, 0x6, 0x40, 0x0, 0x1, 0x5, 0x85, 0x6, 0x40, 0x0, 0x1, 0x4, 0x7B, 0x6, 0x40, 0x0, 0x1, 0x4, 0xA7, 0x6, 0x40, 0x0, 0x1, 0x3, 0xBA, 0x6, 0x40, 0x0, 0x1, 0x4, 0x5D, 0x6, 0x40, 0x0, 0x1, 0x4, 0x84, 0x6, 0x40, 0x0, 0x1, 0x4, 0xA3, 0x6, 0x40, 0x0, 0x1, 0x7, 0x85, 0x6, 0x40, 0x0, 0x1, 0x6, 0xC1, 0x6, 0x40, 0x0, 0x1, 0x4, 0x8B, 0x6, 0x40, 0x0, 0x1, 0x5, 0xD, 0x6, 0x40, 0x0, 0x1, 0x5, 0x39, 0x6, 0x40, 0x0, 0x1, 0x4, 0x31, 0x6, 0x40, 0x0, 0x1, 0x5, 0x3A, 0x6, 0x40, 0x0, 0x1, 0x4, 0x85, 0x6, 0x40, 0x0, 0x1, 0x4, 0x66, 0x6, 0x40, 0x0, 0x1, 0x2, 0xD6, 0x6, 0x40, 0x0, 0x1, 0x5, 0x73, 0x6, 0x40, 0x0, 0x1, 0x4, 0x89, 0x6, 0x40, 0x0, 0x1, 0x5, 0xB, 0x6, 0x40, 0x0, 0x1, 0x4, 0x2D, 0x6, 0x40, 0x0, 0x1, 0x6, 0xF7, 0x6, 0x40, 0x0, 0x1, 0x4, 0x73, 0x6, 0x40, 0x0, 0x1, 0x4, 0x81, 0x6, 0x40, 0x0, 0x1, 0x4, 0x22, 0x6, 0x40, 0x0, 0x1, 0x4, 0x72, 0x6, 0x40, 0x0, 0x1, 0x5, 0x2E, 0x6, 0x40, 0x0, 0x1, 0x3, 0xF6, 0x6, 0x40, 0x0, 0x1, 0x5, 0x10, 0x6, 0x40, 0x0, 0x1, 0x4, 0x7, 0x6, 0x40, 0x0, 0x1, 0x4, 0x71, 0x6, 0x40, 0x0, 0x1, 0x5, 0xF2, 0x6, 0x40, 0x0, 0x1, 0x3, 0xE5, 0x6, 0x40, 0x0, 0x1, 0x2, 0x42, 0x6, 0x40, 0x0, 0x1, 0x5, 0x1E, 0x6, 0x40, 0x0, 0x1, 0x4, 0x1D, 0x6, 0x40, 0x0, 0x1, 0x5, 0x1A, 0x6, 0x40, 0x0, 0x1, 0x2, 0x39, 0x6, 0x40, 0x0, 0x1, 0x4, 0xCA, 0x6, 0x40, 0x0, 0x1, 0x4, 0x79, 0x6, 0x40, 0x0, 0x1, 0x4, 0x2A, 0x6, 0x40, 0x0, 0x1, 0x4, 0xDD, 0x6, 0x40, 0x0, 0x1, 0x1, 0xFD, 0x6, 0x40, 0x0, 0x1, 0x4, 0x5C, 0x6, 0x40, 0x0, 0x1, 0x4, 0x61, 0x6, 0x40, 0x0, 0x1, 0x6, 0x6, 0x6, 0x40, 0x0, 0x1, 0x4, 0x6D, 0x6, 0x40, 0x0, 0x1, 0x4, 0x3C, 0x6, 0x40, 0x0, 0x1, 0x4, 0x5F, 0x6, 0x40, 0x0, 0x1, 0x4, 0xDE, 0x6, 0x40, 0x0, 0x1, 0x4, 0x80, 0x6, 0x40, 0x0, 0x1, 0x3, 0xD6, 0x6, 0x40, 0x0, 0x1, 0x4, 0x35, 0x6, 0x40, 0x0, 0x1, 0x6, 0x8, 0x6, 0x40, 0x0, 0x1, 0x4, 0x3D, 0x6, 0x40, 0x0, 0x1, 0x4, 0x86, 0x6, 0x40, 0x0, 0x1, 0x4, 0x4B, 0x6, 0x40, 0x0, 0x1, 0x4, 0x8E, 0x6, 0x40, 0x0, 0x1, 0x4, 0x9E, 0x6, 0x40, 0x0, 0x1, 0x3, 0xE1, 0x6, 0x40, 0x0, 0x1, 0x4, 0xC0, 0x6, 0x40, 0x0, 0x1, 0x5, 0x98, 0x6, 0x40, 0x0, 0x1, 0x5, 0xB0, 0x6, 0x40, 0x0, 0x4, 0x0, 0x0, 0x0, 0x1, 0x0, 0x8, 0x0, 0x1, 0x0, 0xC, 0x0, 0x16, 0x0, 0x1, 0x2, 0x4E, 0x2, 0x6E, 0x0, 0x1, 0x0, 0x3, 0x2, 0xD, 0x2, 0x10, 0x2, 0x13, 0x0, 0x2, 0x0, 0x5E, 0x0, 0x26, 0x0, 0x3F, 0x0, 0x0, 0x0, 0x46, 0x0, 0x5F, 0x0, 0x1A, 0x0, 0x8C, 0x0, 0x8C, 0x0, 0x34, 0x0, 0x94, 0x0, 0x95, 0x0, 0x35, 0x2, 0xD2, 0x2, 0xD2, 0x0, 0x37, 0x2, 0xDA, 0x2, 0xDB, 0x0, 0x38, 0x2, 0xEB, 0x2, 0xEB, 0x0, 0x3A, 0x2, 0xED, 0x2, 0xED, 0x0, 0x3B, 0x2, 0xF4, 0x2, 0xF5, 0x0, 0x3C, 0x3, 0x17, 0x3, 0x17, 0x0, 0x3E, 0x4, 0x2B, 0x4, 0x2D, 0x0, 0x3F, 0x5, 0x5D, 0x5, 0x5E, 0x0, 0x42, 0x6, 0xC7, 0x6, 0xC8, 0x0, 0x44, 0x7, 0x4E, 0x7, 0x62, 0x0, 0x46, 0x7, 0xA6, 0x7, 0xA6, 0x0, 0x5B, 0x7, 0xAE, 0x7, 0xB1, 0x0, 0x5C, 0x7, 0xDE, 0x7, 0xE2, 0x0, 0x60, 0x8, 0xAD, 0x8, 0xAD, 0x0, 0x65, 0x8, 0xB3, 0x8, 0xB3, 0x0, 0x66, 0x8, 0xB5, 0x8, 0xB8, 0x0, 0x67, 0x8, 0xC8, 0x8, 0xF3, 0x0, 0x6B, 0x8, 0xF8, 0x9, 0x28, 0x0, 0x97, 0x9, 0x2A, 0x9, 0x2A, 0x0, 0xC8, 0x9, 0x2C, 0x9, 0x2C, 0x0, 0xC9, 0x9, 0x2E, 0x9, 0x30, 0x0, 0xCA, 0x9, 0x33, 0x9, 0x33, 0x0, 0xCD, 0x9, 0x35, 0x9, 0x78, 0x0, 0xCE, 0x9, 0x7D, 0x9, 0xDA, 0x1, 0x12, 0x9, 0xDD, 0x9, 0xEC, 0x1, 0x70, 0x9, 0xF3, 0x9, 0xF3, 0x1, 0x80, 0x9, 0xF5, 0x9, 0xF5, 0x1, 0x81, 0x9, 0xF9, 0x9, 0xF9, 0x1, 0x82, 0x9, 0xFC, 0x9, 0xFC, 0x1, 0x83, 0x9, 0xFE, 0xA, 0x1, 0x1, 0x84, 0xA, 0x3, 0xA, 0x3, 0x1, 0x88, 0xA, 0x5, 0xA, 0x6, 0x1, 0x89, 0xA, 0x8, 0xA, 0x8, 0x1, 0x8B, 0xA, 0xA, 0xA, 0xC, 0x1, 0x8C, 0xA, 0xE, 0xA, 0x13, 0x1, 0x8F, 0xA, 0x15, 0xA, 0x1A, 0x1, 0x95, 0xA, 0x1C, 0xA, 0x1D, 0x1, 0x9B, 0xA, 0x1F, 0xA, 0x1F, 0x1, 0x9D, 0xA, 0x21, 0xA, 0x29, 0x1, 0x9E, 0xA, 0x2F, 0xA, 0x33, 0x1, 0xA7, 0xA, 0x35, 0xA, 0x35, 0x1, 0xAC, 0xA, 0x3F, 0xA, 0x41, 0x1, 0xAD, 0xA, 0x43, 0xA, 0x43, 0x1, 0xB0, 0xA, 0x46, 0xA, 0x4A, 0x1, 0xB1, 0xA, 0x4D, 0xA, 0x4E, 0x1, 0xB6, 0xA, 0x5A, 0xA, 0x5B, 0x1, 0xB8, 0xA, 0x64, 0xA, 0x64, 0x1, 0xBA, 0xA, 0x66, 0xA, 0x66, 0x1, 0xBB, 0xA, 0x68, 0xA, 0x68, 0x1, 0xBC, 0xA, 0x6D, 0xA, 0x96, 0x1, 0xBD, 0xA, 0x98, 0xA, 0xA7, 0x1, 0xE7, 0xA, 0xB2, 0xA, 0xB5, 0x1, 0xF7, 0xA, 0xC0, 0xA, 0xC7, 0x1, 0xFB, 0xA, 0xCF, 0xA, 0xCF, 0x2, 0x3, 0xA, 0xD6, 0xA, 0xD6, 0x2, 0x4, 0xA, 0xD8, 0xA, 0xD9, 0x2, 0x5, 0xA, 0xDB, 0xA, 0xDB, 0x2, 0x7, 0xA, 0xEE, 0xA, 0xF0, 0x2, 0x8, 0xA, 0xF2, 0xA, 0xFD, 0x2, 0xB, 0xA, 0xFF, 0xB, 0x2, 0x2, 0x17, 0xB, 0x5, 0xB, 0xC, 0x2, 0x1B, 0xB, 0x10, 0xB, 0x1C, 0x2, 0x23, 0xB, 0x1E, 0xB, 0x1E, 0x2, 0x30, 0xB, 0x20, 0xB, 0x3B, 0x2, 0x31, 0xB, 0x3F, 0xB, 0x3F, 0x2, 0x4D, 0xB, 0x42, 0xB, 0x43, 0x2, 0x4E, 0xB, 0x47, 0xB, 0xD7, 0x2, 0x50, 0xB, 0xE0, 0xB, 0xE7, 0x2, 0xE1, 0xB, 0xEE, 0xB, 0xF3, 0x2, 0xE9, 0xB, 0xFC, 0xC, 0x3, 0x2, 0xEF, 0xC, 0xC, 0xC, 0x1F, 0x2, 0xF7, 0xC, 0x28, 0xC, 0x2B, 0x3, 0xB, 0xC, 0x44, 0xC, 0x45, 0x3, 0xF, 0xC, 0x52, 0xC, 0x59, 0x3, 0x11, 0xC, 0x62, 0xC, 0x69, 0x3, 0x19, 0xC, 0x81, 0xC, 0x85, 0x3, 0x21, 0xC, 0x8B, 0xC, 0x8F, 0x3, 0x26, 0xC, 0x96, 0xC, 0x99, 0x3, 0x2B, 0xC, 0xA2, 0xC, 0xA6, 0x3, 0x2F, 0xC, 0xAC, 0xC, 0xAD, 0x3, 0x34, 0xC, 0xB7, 0xC, 0xBC, 0x3, 0x36, 0xC, 0xBE, 0xC, 0xCE, 0x3, 0x3C, 0xC, 0xD0, 0xC, 0xD4, 0x3, 0x4D, 0xC, 0xD6, 0xC, 0xD7, 0x3, 0x52, 0xC, 0xD9, 0xC, 0xD9, 0x3, 0x54, 0xC, 0xDB, 0xC, 0xDD, 0x3, 0x55, 0xC, 0xDF, 0xC, 0xE2, 0x3, 0x58, 0xC, 0xE4, 0xC, 0xE6, 0x3, 0x5C, 0xC, 0xEB, 0xC, 0xEB, 0x3, 0x5F, 0xC, 0xEE, 0xD, 0x1C, 0x3, 0x60, 0x0, 0x3, 0x0, 0x0, 0x0, 0xE, 0x0, 0x0, 0x0, 0x14, 0x0, 0x0, 0x0, 0x1A, 0x0, 0x1, 0x0, 0x0, 0xFF, 0xDB, 0x0, 0x1, 0x0, 0x0, 0xFF, 0xDC, 0x0, 0x1, 0x0, 0x0, 0xFF, 0x78, 0x3, 0x8F, 0x9, 0x1E, 0x7, 0xBC, 0x7, 0xC2, 0x7, 0xCE, 0x9, 0x2A, 0x7, 0xDA, 0x7, 0xE6, 0x9, 0x60, 0x8, 0x8E, 0x8, 0x70, 0x7, 0xF2, 0x9, 0x24, 0x8, 0x4, 0x8, 0x10, 0x9, 0x36, 0x8, 0x9A, 0x9, 0x36, 0x8, 0x22, 0x8, 0x2E, 0x8, 0x3A, 0x8, 0x40, 0x8, 0x4C, 0x8, 0x58, 0x8, 0x5E, 0x8, 0x94, 0x8, 0x64, 0x9, 0x24, 0x8, 0x1C, 0x7, 0xC8, 0x7, 0xD4, 0x9, 0x30, 0x7, 0xE0, 0x7, 0xEC, 0x8, 0x70, 0x7, 0xFE, 0x7, 0xB0, 0x7, 0xF8, 0x7, 0xFE, 0x8, 0xA, 0x8, 0x16, 0x9, 0x3C, 0x8, 0x1C, 0x7, 0xB6, 0x8, 0x28, 0x8, 0x34, 0x8, 0x76, 0x8, 0x46, 0x8, 0x52, 0x8, 0x7C, 0x8, 0x6A, 0x8, 0x82, 0x8, 0x6A, 0x7, 0xD4, 0x7, 0x20, 0x7, 0x26, 0x9, 0x60, 0x8, 0x5E, 0x8, 0x6A, 0x9, 0x60, 0x8, 0x4, 0x8, 0x5E, 0x8, 0x6A, 0x8, 0x70, 0x7, 0x2C, 0x7, 0x32, 0x7, 0x38, 0x9, 0x60, 0x8, 0x70, 0x8, 0x10, 0x8, 0x16, 0x8, 0xC4, 0x9, 0x18, 0x8, 0xF4, 0x9, 0x12, 0x7, 0x3E, 0x7, 0x9E, 0x8, 0xEE, 0x9, 0xC, 0x7, 0x98, 0x9, 0x4E, 0x8, 0xE8, 0x9, 0x4E, 0x8, 0xCA, 0x8, 0xE2, 0x7, 0x92, 0x8, 0xD6, 0x9, 0x6, 0x8, 0xD0, 0x8, 0xFA, 0x7, 0x8C, 0x7, 0x44, 0x9, 0x48, 0x7, 0x86, 0x9, 0x0, 0x8, 0xDC, 0x9, 0x42, 0x9, 0x60, 0x9, 0x60, 0x9, 0x54, 0x9, 0x5A, 0x7, 0x4A, 0x7, 0xD4, 0x7, 0x50, 0x7, 0x56, 0x9, 0x4E, 0x7, 0x5C, 0x8, 0xCA, 0x7, 0x62, 0x7, 0x62, 0x7, 0x68, 0x8, 0x3A, 0x8, 0x76, 0x9, 0x1E, 0x9, 0x1E, 0x9, 0x1E, 0x9, 0x1E, 0x9, 0x1E, 0x9, 0x1E, 0x9, 0x1E, 0x7, 0xC2, 0x9, 0x2A, 0x9, 0x2A, 0x9, 0x2A, 0x9, 0x2A, 0x8, 0x8E, 0x8, 0x8E, 0x8, 0x8E, 0x8, 0x8E, 0x8, 0x10, 0x9, 0x36, 0x9, 0x36, 0x9, 0x36, 0x9, 0x36, 0x9, 0x36, 0x8, 0x40, 0x8, 0x40, 0x8, 0x40, 0x8, 0x40, 0x8, 0x94, 0x9, 0x24, 0x9, 0x24, 0x9, 0x24, 0x9, 0x24, 0x9, 0x24, 0x9, 0x24, 0x9, 0x24, 0x7, 0xC8, 0x9, 0x30, 0x9, 0x30, 0x9, 0x30, 0x9, 0x30, 0x8, 0x16, 0x9, 0x3C, 0x9, 0x3C, 0x9, 0x3C, 0x9, 0x3C, 0x9, 0x3C, 0x8, 0x46, 0x8, 0x46, 0x8, 0x46, 0x8, 0x46, 0x8, 0x82, 0x8, 0x82, 0x9, 0x1E, 0x9, 0x24, 0x9, 0x1E, 0x9, 0x24, 0x9, 0x1E, 0x9, 0x24, 0x7, 0xC2, 0x7, 0xC8, 0x7, 0xC2, 0x7, 0xC8, 0x7, 0xC2, 0x7, 0xC8, 0x7, 0xC2, 0x7, 0xC8, 0x7, 0xCE, 0x7, 0x6E, 0x9, 0x2A, 0x9, 0x30, 0x9, 0x2A, 0x9, 0x30, 0x9, 0x2A, 0x9, 0x30, 0x9, 0x2A, 0x9, 0x30, 0x9, 0x2A, 0x9, 0x30, 0x7, 0xE6, 0x7, 0xEC, 0x7, 0xE6, 0x7, 0xEC, 0x7, 0xE6, 0x7, 0xEC, 0x7, 0xE6, 0x7, 0xEC, 0x9, 0x60, 0x8, 0x70, 0x8, 0x8E, 0x8, 0x8E, 0x8, 0x8E, 0x8, 0x8E, 0x7, 0xFE, 0x8, 0x8E, 0x8, 0x70, 0x7, 0xF2, 0x7, 0xF8, 0x9, 0x24, 0x7, 0xFE, 0x9, 0x24, 0x7, 0xFE, 0x9, 0x24, 0x7, 0x74, 0x9, 0x24, 0x7, 0x7A, 0x8, 0x10, 0x8, 0x16, 0x8, 0x10, 0x8, 0x16, 0x8, 0x10, 0x8, 0x16, 0x8, 0x16, 0x9, 0x36, 0x9, 0x3C, 0x9, 0x36, 0x9, 0x3C, 0x9, 0x36, 0x9, 0x3C, 0x8, 0x22, 0x8, 0x28, 0x8, 0x22, 0x8, 0x28, 0x8, 0x22, 0x8, 0x28, 0x8, 0x2E, 0x8, 0x34, 0x8, 0x2E, 0x8, 0x34, 0x8, 0x2E, 0x8, 0x34, 0x8, 0x2E, 0x8, 0x34, 0x8, 0x2E, 0x8, 0x34, 0x8, 0x3A, 0x8, 0x76, 0x8, 0x3A, 0x8, 0x76, 0x8, 0x3A, 0x7, 0x80, 0x8, 0x40, 0x8, 0x46, 0x8, 0x40, 0x8, 0x46, 0x8, 0x40, 0x8, 0x46, 0x8, 0x40, 0x8, 0x46, 0x8, 0x40, 0x8, 0x46, 0x8, 0x40, 0x8, 0x46, 0x8, 0x58, 0x8, 0x7C, 0x8, 0x94, 0x8, 0x82, 0x8, 0x94, 0x8, 0x64, 0x8, 0x6A, 0x8, 0x64, 0x8, 0x6A, 0x8, 0x64, 0x8, 0x6A, 0x7, 0x86, 0x7, 0x86, 0x8, 0xEE, 0x9, 0x42, 0x9, 0x42, 0x9, 0x42, 0x9, 0x42, 0x9, 0x42, 0x9, 0x42, 0x9, 0x42, 0x9, 0x0, 0x9, 0x48, 0x9, 0x48, 0x9, 0x48, 0x9, 0x48, 0x8, 0xD0, 0x8, 0xD0, 0x8, 0xD0, 0x8, 0xD0, 0x8, 0xCA, 0x9, 0x4E, 0x9, 0x4E, 0x9, 0x4E, 0x9, 0x4E, 0x9, 0x4E, 0x7, 0x9E, 0x7, 0x9E, 0x7, 0x9E, 0x7, 0x9E, 0x9, 0x18, 0x9, 0x42, 0x9, 0x42, 0x9, 0x42, 0x9, 0x0, 0x9, 0x0, 0x9, 0x0, 0x9, 0x0, 0x7, 0x86, 0x9, 0x48, 0x9, 0x48, 0x9, 0x48, 0x9, 0x48, 0x9, 0x48, 0x7, 0x8C, 0x7, 0x8C, 0x7, 0x8C, 0x7, 0x8C, 0x8, 0xFA, 0x8, 0xD0, 0x8, 0xD0, 0x8, 0xD0, 0x8, 0xD0, 0x8, 0xD0, 0x9, 0x6, 0x8, 0xD6, 0x7, 0x92, 0x7, 0x92, 0x7, 0x92, 0x7, 0x92, 0x8, 0xCA, 0x8, 0xCA, 0x8, 0xCA, 0x9, 0x4E, 0x9, 0x4E, 0x9, 0x4E, 0x9, 0x4E, 0x7, 0x98, 0x7, 0x98, 0x7, 0x98, 0x9, 0xC, 0x9, 0xC, 0x9, 0xC, 0x9, 0xC, 0x8, 0xEE, 0x8, 0xEE, 0x8, 0xEE, 0x7, 0x9E, 0x7, 0x9E, 0x7, 0x9E, 0x7, 0x9E, 0x7, 0x9E, 0x7, 0x9E, 0x9, 0x12, 0x9, 0x18, 0x9, 0x18, 0x8, 0xC4, 0x8, 0xC4, 0x8, 0xC4, 0x9, 0x1E, 0x9, 0x2A, 0x9, 0x60, 0x8, 0x8E, 0x8, 0xA0, 0x7, 0xA4, 0x9, 0x1E, 0x7, 0xBC, 0x9, 0x2A, 0x8, 0x64, 0x9, 0x60, 0x8, 0x8E, 0x7, 0xF2, 0x8, 0x4, 0x8, 0x10, 0x9, 0x36, 0x8, 0x9A, 0x8, 0x3A, 0x8, 0x94, 0x8, 0x5E, 0x8, 0x8E, 0x8, 0x94, 0x9, 0x3C, 0x8, 0x52, 0x9, 0x3C, 0x9, 0x2A, 0x8, 0x2E, 0x8, 0x8E, 0x8, 0x8E, 0x8, 0x70, 0x7, 0xF2, 0x9, 0x1E, 0x7, 0xBC, 0x9, 0x2A, 0x8, 0x4, 0x9, 0x60, 0x9, 0x36, 0x8, 0x9A, 0x7, 0xC2, 0x8, 0x3A, 0x8, 0x5E, 0x9, 0x24, 0x9, 0x30, 0x9, 0x3C, 0x8, 0x1C, 0x7, 0xC8, 0x8, 0x82, 0x8, 0x6A, 0x9, 0x30, 0x8, 0x34, 0x7, 0xFE, 0x7, 0xB0, 0x8, 0x82, 0x8, 0x58, 0x8, 0x7C, 0x8, 0x58, 0x8, 0x7C, 0x8, 0x58, 0x8, 0x7C, 0x8, 0x94, 0x8, 0x82, 0x8, 0x4, 0x8, 0xA, 0x9, 0x1E, 0x9, 0x24, 0x9, 0x2A, 0x9, 0x30, 0x7, 0xC2, 0x7, 0xC8, 0x8, 0x94, 0x8, 0x8E, 0x8, 0x8E, 0x9, 0x1E, 0x9, 0x24, 0x9, 0x1E, 0x9, 0x24, 0x9, 0x2A, 0x9, 0x30, 0x9, 0x36, 0x9, 0x3C, 0x8, 0x82, 0x8, 0x82, 0x8, 0x82, 0x7, 0xD4, 0x9, 0x1E, 0x9, 0x24, 0x9, 0x1E, 0x9, 0x24, 0x9, 0x1E, 0x9, 0x24, 0x9, 0x1E, 0x9, 0x24, 0x9, 0x1E, 0x9, 0x24, 0x9, 0x1E, 0x9, 0x24, 0x9, 0x1E, 0x9, 0x24, 0x9, 0x1E, 0x9, 0x24, 0x9, 0x1E, 0x9, 0x24, 0x9, 0x1E, 0x9, 0x24, 0x9, 0x1E, 0x9, 0x24, 0x9, 0x1E, 0x9, 0x24, 0x9, 0x2A, 0x9, 0x30, 0x9, 0x2A, 0x9, 0x30, 0x9, 0x2A, 0x9, 0x30, 0x9, 0x2A, 0x9, 0x30, 0x9, 0x2A, 0x9, 0x30, 0x9, 0x2A, 0x9, 0x30, 0x9, 0x2A, 0x9, 0x30, 0x9, 0x2A, 0x9, 0x30, 0x8, 0x8E, 0x8, 0x8E, 0x7, 0xFE, 0x9, 0x36, 0x9, 0x3C, 0x9, 0x36, 0x9, 0x3C, 0x9, 0x36, 0x9, 0x3C, 0x9, 0x36, 0x9, 0x3C, 0x9, 0x36, 0x9, 0x3C, 0x9, 0x36, 0x9, 0x3C, 0x9, 0x36, 0x9, 0x3C, 0x8, 0x40, 0x8, 0x46, 0x8, 0x40, 0x8, 0x46, 0x8, 0x94, 0x8, 0x82, 0x8, 0x94, 0x8, 0x82, 0x8, 0x94, 0x8, 0x82, 0x7, 0xAA, 0x8, 0x3A, 0x8, 0x70, 0x8, 0x94, 0x8, 0x5E, 0x8, 0x6A, 0x7, 0xDA, 0x9, 0x1E, 0x9, 0x24, 0x8, 0x8E, 0x9, 0x36, 0x9, 0x3C, 0x8, 0x40, 0x8, 0x46, 0x8, 0x40, 0x8, 0x46, 0x8, 0x40, 0x8, 0x46, 0x8, 0x40, 0x8, 0x46, 0x8, 0x40, 0x8, 0x46, 0x9, 0x1E, 0x9, 0x24, 0x9, 0x1E, 0x9, 0x24, 0x7, 0xE6, 0x7, 0xEC, 0x7, 0xF2, 0x7, 0xF8, 0x9, 0x36, 0x9, 0x3C, 0x9, 0x36, 0x9, 0x3C, 0x7, 0xE6, 0x7, 0xEC, 0x8, 0x10, 0x8, 0x16, 0x9, 0x1E, 0x9, 0x24, 0x9, 0x1E, 0x9, 0x24, 0x9, 0x2A, 0x9, 0x30, 0x9, 0x2A, 0x9, 0x30, 0x8, 0x8E, 0x8, 0x8E, 0x9, 0x36, 0x9, 0x3C, 0x9, 0x36, 0x9, 0x3C, 0x8, 0x22, 0x8, 0x28, 0x8, 0x22, 0x8, 0x28, 0x8, 0x40, 0x8, 0x46, 0x8, 0x40, 0x8, 0x46, 0x9, 0x60, 0x8, 0x70, 0x9, 0x1E, 0x9, 0x24, 0x9, 0x2A, 0x9, 0x30, 0x9, 0x36, 0x9, 0x3C, 0x9, 0x36, 0x9, 0x3C, 0x9, 0x36, 0x9, 0x3C, 0x9, 0x36, 0x9, 0x3C, 0x8, 0x94, 0x8, 0x82, 0x8, 0x70, 0x7, 0xC8, 0x7, 0xB0, 0x7, 0xC2, 0x8, 0x4, 0x9, 0x36, 0x7, 0xB6, 0x8, 0x58, 0x8, 0x7C, 0x7, 0xBC, 0x8, 0x1C, 0x7, 0xBC, 0x8, 0x1C, 0x7, 0xBC, 0x8, 0x1C, 0x7, 0xC2, 0x7, 0xC8, 0x7, 0xCE, 0x7, 0xD4, 0x7, 0xCE, 0x7, 0xD4, 0x7, 0xCE, 0x7, 0xD4, 0x7, 0xCE, 0x7, 0xD4, 0x7, 0xCE, 0x7, 0xD4, 0x9, 0x2A, 0x9, 0x30, 0x9, 0x2A, 0x9, 0x30, 0x9, 0x2A, 0x9, 0x30, 0x9, 0x2A, 0x9, 0x30, 0x9, 0x2A, 0x9, 0x30, 0x7, 0xDA, 0x7, 0xE0, 0x7, 0xE6, 0x7, 0xEC, 0x9, 0x60, 0x8, 0x70, 0x9, 0x60, 0x8, 0x70, 0x9, 0x60, 0x8, 0x70, 0x9, 0x60, 0x8, 0x70, 0x7, 0xF2, 0x7, 0xF8, 0x7, 0xF2, 0x7, 0xF8, 0x7, 0xF2, 0x7, 0xF8, 0x9, 0x24, 0x7, 0xFE, 0x9, 0x24, 0x7, 0xFE, 0x9, 0x24, 0x7, 0xFE, 0x9, 0x24, 0x7, 0xFE, 0x8, 0x4, 0x8, 0xA, 0x8, 0x4, 0x8, 0xA, 0x8, 0x10, 0x8, 0x16, 0x8, 0x10, 0x8, 0x16, 0x8, 0x10, 0x8, 0x16, 0x8, 0x10, 0x8, 0x16, 0x9, 0x36, 0x9, 0x3C, 0x9, 0x36, 0x9, 0x3C, 0x9, 0x36, 0x9, 0x3C, 0x9, 0x36, 0x9, 0x3C, 0x8, 0x9A, 0x8, 0x1C, 0x8, 0x9A, 0x8, 0x1C, 0x8, 0x22, 0x8, 0x28, 0x8, 0x22, 0x8, 0x28, 0x8, 0x22, 0x8, 0x28, 0x8, 0x22, 0x8, 0x28, 0x8, 0x2E, 0x8, 0x34, 0x8, 0x2E, 0x8, 0x34, 0x8, 0x2E, 0x8, 0x34, 0x8, 0x2E, 0x8, 0x34, 0x8, 0x2E, 0x8, 0x34, 0x8, 0x3A, 0x8, 0x76, 0x8, 0x3A, 0x8, 0x76, 0x8, 0x3A, 0x8, 0x76, 0x8, 0x3A, 0x8, 0x76, 0x8, 0x40, 0x8, 0x46, 0x8, 0x40, 0x8, 0x46, 0x8, 0x40, 0x8, 0x46, 0x8, 0x40, 0x8, 0x46, 0x8, 0x40, 0x8, 0x46, 0x8, 0x4C, 0x8, 0x52, 0x8, 0x4C, 0x8, 0x52, 0x8, 0x58, 0x8, 0x7C, 0x8, 0x58, 0x8, 0x7C, 0x8, 0x5E, 0x8, 0x6A, 0x8, 0x5E, 0x8, 0x6A, 0x8, 0x94, 0x8, 0x82, 0x8, 0x64, 0x8, 0x6A, 0x8, 0x64, 0x8, 0x6A, 0x8, 0x64, 0x8, 0x6A, 0x8, 0x70, 0x8, 0x76, 0x8, 0x7C, 0x8, 0x82, 0x9, 0x24, 0x9, 0x1E, 0x9, 0x1E, 0x9, 0x1E, 0x9, 0x1E, 0x9, 0x1E, 0x9, 0x1E, 0x9, 0x1E, 0x9, 0x1E, 0x9, 0x2A, 0x9, 0x2A, 0x9, 0x2A, 0x9, 0x2A, 0x9, 0x2A, 0x9, 0x2A, 0x9, 0x60, 0x9, 0x60, 0x9, 0x60, 0x9, 0x60, 0x9, 0x60, 0x9, 0x60, 0x9, 0x60, 0x9, 0x60, 0x8, 0x8E, 0x8, 0x8E, 0x8, 0x8E, 0x8, 0x8E, 0x8, 0x8E, 0x8, 0x8E, 0x8, 0x8E, 0x8, 0x8E, 0x9, 0x3C, 0x9, 0x3C, 0x9, 0x3C, 0x9, 0x3C, 0x9, 0x3C, 0x9, 0x3C, 0x8, 0xA0, 0x8, 0xA0, 0x8, 0x88, 0x8, 0x88, 0x8, 0x88, 0x8, 0x88, 0x8, 0x94, 0x8, 0x94, 0x8, 0x94, 0x8, 0x94, 0x9, 0x3C, 0x9, 0x3C, 0x9, 0x1E, 0x9, 0x1E, 0x9, 0x1E, 0x9, 0x1E, 0x9, 0x1E, 0x9, 0x1E, 0x9, 0x1E, 0x9, 0x1E, 0x9, 0x60, 0x9, 0x60, 0x9, 0x60, 0x9, 0x60, 0x9, 0x60, 0x9, 0x60, 0x9, 0x60, 0x9, 0x60, 0x9, 0x1E, 0x9, 0x1E, 0x9, 0x1E, 0x9, 0x1E, 0x9, 0x1E, 0x9, 0x2A, 0x9, 0x2A, 0x9, 0x60, 0x9, 0x60, 0x9, 0x60, 0x8, 0x8E, 0x8, 0x8E, 0x8, 0x8E, 0x8, 0x8E, 0x8, 0x94, 0x8, 0x94, 0x8, 0x94, 0x8, 0x94, 0x8, 0x9A, 0x8, 0xA0, 0x8, 0xA0, 0x9, 0x42, 0x8, 0xA6, 0x8, 0xAC, 0x8, 0xB2, 0x8, 0xB8, 0x8, 0xBE, 0x9, 0x42, 0x8, 0xDC, 0x9, 0x48, 0x8, 0xC4, 0x8, 0xFA, 0x8, 0xD0, 0x8, 0xD6, 0x8, 0xE2, 0x8, 0xCA, 0x9, 0x4E, 0x8, 0xE8, 0x8, 0xEE, 0x9, 0x18, 0x8, 0xF4, 0x8, 0xD0, 0x9, 0x18, 0x9, 0x48, 0x9, 0xC, 0x8, 0xD0, 0x8, 0xD0, 0x9, 0x6, 0x8, 0xD6, 0x9, 0x42, 0x8, 0xDC, 0x9, 0x48, 0x8, 0xE2, 0x8, 0xFA, 0x9, 0x4E, 0x8, 0xE8, 0x9, 0x0, 0x8, 0xEE, 0x8, 0xF4, 0x8, 0xFA, 0x9, 0x0, 0x9, 0x18, 0x9, 0x6, 0x9, 0x4E, 0x9, 0xC, 0x9, 0x12, 0x9, 0x12, 0x9, 0x12, 0x9, 0x18, 0x9, 0x1E, 0x9, 0x24, 0x9, 0x2A, 0x9, 0x30, 0x9, 0x36, 0x9, 0x3C, 0x9, 0x42, 0x9, 0x48, 0x9, 0x4E, 0x9, 0x54, 0x9, 0x54, 0x9, 0x54, 0x9, 0x54, 0x9, 0x54, 0x9, 0x54, 0x9, 0x54, 0x9, 0x54, 0x9, 0x54, 0x9, 0x54, 0x9, 0x5A, 0x9, 0x5A, 0x9, 0x5A, 0x9, 0x5A, 0x9, 0x5A, 0x9, 0x5A, 0x9, 0x5A, 0x9, 0x5A, 0x9, 0x5A, 0x9, 0x60, 0x9, 0x60, 0x9, 0x60, 0x9, 0x60, 0x9, 0x60, 0x9, 0x60, 0x9, 0x60, 0x9, 0x60, 0x9, 0x60, 0x9, 0x60, 0x9, 0x60, 0x9, 0x60, 0x9, 0x60, 0x0, 0x1, 0x7, 0xB4, 0xFE, 0x69, 0x0, 0x1, 0x7, 0x3B, 0xFE, 0x69, 0x0, 0x1, 0x2, 0xA0, 0xFE, 0x69, 0x0, 0x1, 0x2, 0x82, 0xFE, 0x69, 0x0, 0x1, 0x2, 0x94, 0xFE, 0x69, 0x0, 0x1, 0x4, 0x7C, 0xFE, 0x69, 0x0, 0x1, 0x3, 0xC6, 0xFE, 0x69, 0x0, 0x1, 0x8, 0xAC, 0xFE, 0x69, 0x0, 0x1, 0x3, 0xC4, 0xFE, 0x69, 0x0, 0x1, 0x4, 0x9, 0xFE, 0x69, 0x0, 0x1, 0x4, 0xF4, 0xFE, 0x69, 0x0, 0x1, 0x5, 0x58, 0xFE, 0x69, 0x0, 0x1, 0x4, 0x8F, 0xFE, 0x69, 0x0, 0x1, 0x5, 0x1B, 0xFE, 0x69, 0x0, 0x1, 0x2, 0xA2, 0xFE, 0x69, 0x0, 0x1, 0x2, 0xE8, 0xFE, 0x69, 0x0, 0x1, 0x2, 0xD2, 0xFE, 0x69, 0x0, 0x1, 0x4, 0x7B, 0xFE, 0x69, 0x0, 0x1, 0x4, 0xA7, 0xFE, 0x69, 0x0, 0x1, 0x3, 0xBA, 0xFE, 0x69, 0x0, 0x1, 0x4, 0x5D, 0xFE, 0x69, 0x0, 0x1, 0x4, 0x84, 0xFE, 0x69, 0x0, 0x1, 0x5, 0x44, 0xFE, 0x69, 0x0, 0x1, 0x4, 0xA3, 0xFE, 0x69, 0x0, 0x1, 0x2, 0x1, 0xFE, 0x69, 0x0, 0x1, 0x4, 0x8B, 0xFE, 0x69, 0x0, 0x1, 0x5, 0xD, 0xFE, 0x69, 0x0, 0x1, 0x5, 0x39, 0xFE, 0x69, 0x0, 0x1, 0x4, 0x31, 0xFE, 0x69, 0x0, 0x1, 0x5, 0x3A, 0xFE, 0x69, 0x0, 0x1, 0x4, 0x85, 0xFE, 0x69, 0x0, 0x1, 0x4, 0x66, 0xFE, 0x69, 0x0, 0x1, 0x2, 0xD6, 0xFE, 0x69, 0x0, 0x1, 0x5, 0x73, 0xFE, 0x69, 0x0, 0x1, 0x4, 0x89, 0xFE, 0x69, 0x0, 0x1, 0x5, 0xB, 0xFE, 0x69, 0x0, 0x1, 0x4, 0x2D, 0xFE, 0x69, 0x0, 0x1, 0x2, 0xC, 0xFE, 0x69, 0x0, 0x1, 0x7, 0x1, 0xFE, 0x69, 0x0, 0x1, 0x6, 0xF7, 0xFE, 0x69, 0x0, 0x1, 0x5, 0xAF, 0xFE, 0x69, 0x0, 0x1, 0x4, 0x73, 0xFE, 0x69, 0x0, 0x1, 0x4, 0x81, 0xFE, 0x69, 0x0, 0x1, 0x4, 0xFF, 0xFE, 0x69, 0x0, 0x1, 0x2, 0xD0, 0xFE, 0x69, 0x0, 0x1, 0x4, 0xD5, 0xFE, 0x69, 0x0, 0x1, 0x4, 0x22, 0xFE, 0x69, 0x0, 0x1, 0x4, 0xDC, 0xFE, 0x69, 0x0, 0x1, 0x5, 0x38, 0xFE, 0x69, 0x0, 0x1, 0x4, 0x72, 0xFE, 0x69, 0x0, 0x1, 0x5, 0x2E, 0xFE, 0x69, 0x0, 0x1, 0x3, 0xF6, 0xFE, 0x69, 0x0, 0x1, 0x7, 0xB, 0xFE, 0x69, 0x0, 0x1, 0x5, 0x10, 0xFE, 0x69, 0x0, 0x1, 0x4, 0xD2, 0xFE, 0x69, 0x0, 0x1, 0x4, 0x7, 0xFE, 0x69, 0x0, 0x1, 0x4, 0x71, 0xFE, 0x69, 0x0, 0x1, 0x2, 0xAA, 0xFE, 0x69, 0x0, 0x1, 0x5, 0xF2, 0xFE, 0x69, 0x0, 0x1, 0x3, 0xE5, 0xFE, 0x69, 0x0, 0x1, 0x5, 0xCC, 0xFE, 0x69, 0x0, 0x1, 0x2, 0x42, 0xFE, 0x69, 0x0, 0x1, 0x4, 0xE0, 0xFE, 0x69, 0x0, 0x1, 0x5, 0x1E, 0xFE, 0x69, 0x0, 0x1, 0x5, 0x9A, 0xFE, 0x69, 0x0, 0x1, 0x4, 0x1D, 0xFE, 0x69, 0x0, 0x1, 0x5, 0x1A, 0xFE, 0x69, 0x0, 0x1, 0x2, 0x39, 0xFE, 0x69, 0x0, 0x1, 0x4, 0xCA, 0xFE, 0x69, 0x0, 0x1, 0x4, 0x79, 0xFE, 0x69, 0x0, 0x1, 0x4, 0x2A, 0xFE, 0x69, 0x0, 0x1, 0x4, 0xDD, 0xFE, 0x69, 0x0, 0x1, 0x1, 0xFD, 0xFE, 0x69, 0x0, 0x1, 0x4, 0x5C, 0xFE, 0x69, 0x0, 0x1, 0x4, 0x61, 0xFE, 0x69, 0x0, 0x1, 0x6, 0x6, 0xFE, 0x69, 0x0, 0x1, 0x4, 0x6D, 0xFE, 0x69, 0x0, 0x1, 0x4, 0x3C, 0xFE, 0x69, 0x0, 0x1, 0x4, 0x5F, 0xFE, 0x69, 0x0, 0x1, 0x4, 0xDE, 0xFE, 0x69, 0x0, 0x1, 0x4, 0x80, 0xFE, 0x69, 0x0, 0x1, 0x3, 0xD6, 0xFE, 0x69, 0x0, 0x1, 0x4, 0x35, 0xFE, 0x69, 0x0, 0x1, 0x6, 0x8, 0xFE, 0x69, 0x0, 0x1, 0x4, 0x3D, 0xFE, 0x69, 0x0, 0x1, 0x5, 0x53, 0xFE, 0x69, 0x0, 0x1, 0x4, 0x55, 0xFE, 0x69, 0x0, 0x1, 0x4, 0x86, 0xFE, 0x69, 0x0, 0x1, 0x4, 0x4B, 0xFE, 0x69, 0x0, 0x1, 0x5, 0x86, 0xFE, 0x69, 0x0, 0x1, 0x4, 0x8E, 0xFE, 0x69, 0x0, 0x1, 0x4, 0x9E, 0xFE, 0x69, 0x0, 0x1, 0x3, 0xE1, 0xFE, 0x69, 0x0, 0x1, 0x4, 0xC0, 0xFE, 0x69, 0x0, 0x1, 0x5, 0x75, 0xFE, 0x69, 0x0, 0x1, 0x5, 0x98, 0xFE, 0x69, 0x0, 0x1, 0x5, 0xB0, 0xFE, 0x69, 0x0, 0x4, 0x0, 0x0, 0x0, 0x1, 0x0, 0x8, 0x0, 0x1, 0x0, 0xC, 0x0, 0x12, 0x0, 0x1, 0x0, 0x3A, 0x0, 0x46, 0x0, 0x1, 0x0, 0x1, 0x1, 0x8F, 0x0, 0x1, 0x0, 0x12, 0x0, 0x46, 0x0, 0x4A, 0x0, 0x4E, 0x0, 0x54, 0x0, 0x5A, 0x0, 0x5E, 0x0, 0x8E, 0x1, 0x5, 0x1, 0x6, 0x1, 0x7, 0x1, 0x9, 0x1, 0xD, 0x1, 0xE, 0x1, 0x11, 0x1, 0x13, 0x1, 0x1E, 0x4, 0x2C, 0x4, 0x2E, 0x0, 0x1, 0x0, 0x0, 0x0, 0x6, 0x0, 0x1, 0xFF, 0x3E, 0x2, 0x83, 0x0, 0x12, 0x0, 0x26, 0x0, 0x2C, 0x0, 0x44, 0x0, 0x32, 0x0, 0x38, 0x0, 0x3E, 0x0, 0x44, 0x0, 0x4A, 0x0, 0x50, 0x0, 0x56, 0x0, 0x5C, 0x0, 0x62, 0x0, 0x68, 0x0, 0x6E, 0x0, 0x74, 0x0, 0x7A, 0x0, 0x80, 0x0, 0x86, 0x0, 0x1, 0x3, 0x67, 0x2, 0x8E, 0x0, 0x1, 0x3, 0x92, 0x2, 0x8E, 0x0, 0x1, 0x3, 0xD6, 0x2, 0x8E, 0x0, 0x1, 0x3, 0x9C, 0x2, 0x8E, 0x0, 0x1, 0x2, 0xFD, 0x2, 0x8E, 0x0, 0x1, 0x1, 0x34, 0x2, 0x8E, 0x0, 0x1, 0x3, 0x71, 0x2, 0x71, 0x0, 0x1, 0x3, 0x88, 0x2, 0x9C, 0x0, 0x1, 0x3, 0xD2, 0x2, 0x8E, 0x0, 0x1, 0x3, 0x56, 0x2, 0x8E, 0x0, 0x1, 0x3, 0x6B, 0x2, 0x8E, 0x0, 0x1, 0x3, 0x76, 0x2, 0x8E, 0x0, 0x1, 0x3, 0x9B, 0x3, 0xB, 0x0, 0x1, 0x3, 0x13, 0x2, 0x7F, 0x0, 0x1, 0x1, 0x3, 0x2, 0x84, 0x0, 0x1, 0x1, 0xAA, 0x2, 0x8E, 0x0, 0x1, 0x1, 0x97, 0x2, 0x8E, 0x0, 0x4, 0x0, 0x0, 0x0, 0x1, 0x0, 0x8, 0x0, 0x1, 0x0, 0xC, 0x0, 0x12, 0x0, 0x1, 0x2, 0xF8, 0x3, 0x4, 0x0, 0x1, 0x0, 0x1, 0x1, 0xC6, 0x0, 0x2, 0x0, 0x7B, 0x0, 0x26, 0x0, 0x3F, 0x0, 0x0, 0x0, 0x46, 0x0, 0x5F, 0x0, 0x1A, 0x0, 0x82, 0x0, 0x82, 0x0, 0x34, 0x0, 0x84, 0x0, 0x84, 0x0, 0x35, 0x0, 0x87, 0x0, 0x87, 0x0, 0x36, 0x0, 0x8A, 0x0, 0x8A, 0x0, 0x37, 0x0, 0x8C, 0x0, 0x97, 0x0, 0x38, 0x0, 0xA6, 0x0, 0xA7, 0x0, 0x44, 0x0, 0xAD, 0x0, 0xAD, 0x0, 0x46, 0x0, 0xB0, 0x0, 0xB1, 0x0, 0x47, 0x0, 0xB4, 0x0, 0xB5, 0x0, 0x49, 0x0, 0xBD, 0x0, 0xBD, 0x0, 0x4B, 0x0, 0xC3, 0x0, 0xC4, 0x0, 0x4C, 0x0, 0xC9, 0x0, 0xCA, 0x0, 0x4E, 0x0, 0xDB, 0x0, 0xDC, 0x0, 0x50, 0x0, 0xEC, 0x0, 0xEC, 0x0, 0x52, 0x0, 0xF2, 0x0, 0xF2, 0x0, 0x53, 0x0, 0xF8, 0x0, 0xF9, 0x0, 0x54, 0x0, 0xFD, 0x0, 0xFE, 0x0, 0x56, 0x1, 0x1, 0x1, 0x61, 0x0, 0x58, 0x2, 0x30, 0x2, 0x30, 0x0, 0xB9, 0x2, 0x3A, 0x2, 0x3A, 0x0, 0xBA, 0x2, 0x3E, 0x2, 0x3E, 0x0, 0xBB, 0x2, 0x40, 0x2, 0x40, 0x0, 0xBC, 0x2, 0x42, 0x2, 0x43, 0x0, 0xBD, 0x2, 0x46, 0x2, 0x46, 0x0, 0xBF, 0x2, 0x4A, 0x2, 0x4A, 0x0, 0xC0, 0x2, 0x4C, 0x2, 0x4D, 0x0, 0xC1, 0x2, 0x51, 0x2, 0x51, 0x0, 0xC3, 0x2, 0x53, 0x2, 0x53, 0x0, 0xC4, 0x2, 0x69, 0x2, 0x69, 0x0, 0xC5, 0x2, 0x70, 0x2, 0x72, 0x0, 0xC6, 0x2, 0x74, 0x2, 0x74, 0x0, 0xC9, 0x2, 0x77, 0x2, 0x77, 0x0, 0xCA, 0x2, 0x7B, 0x2, 0x7B, 0x0, 0xCB, 0x2, 0x7D, 0x2, 0x7F, 0x0, 0xCC, 0x2, 0x81, 0x2, 0x91, 0x0, 0xCF, 0x2, 0x93, 0x2, 0x93, 0x0, 0xE0, 0x2, 0x95, 0x2, 0x97, 0x0, 0xE1, 0x2, 0x99, 0x2, 0x99, 0x0, 0xE4, 0x2, 0x9E, 0x2, 0x9F, 0x0, 0xE5, 0x2, 0xAC, 0x2, 0xB0, 0x0, 0xE7, 0x2, 0xB2, 0x2, 0xB2, 0x0, 0xEC, 0x2, 0xB6, 0x2, 0xB8, 0x0, 0xED, 0x2, 0xC1, 0x2, 0xC2, 0x0, 0xF0, 0x2, 0xCA, 0x2, 0xCB, 0x0, 0xF2, 0x2, 0xCD, 0x2, 0xCD, 0x0, 0xF4, 0x2, 0xD2, 0x2, 0xD3, 0x0, 0xF5, 0x2, 0xD8, 0x2, 0xDB, 0x0, 0xF7, 0x2, 0xDE, 0x2, 0xDF, 0x0, 0xFB, 0x2, 0xE2, 0x2, 0xE2, 0x0, 0xFD, 0x2, 0xE8, 0x2, 0xE8, 0x0, 0xFE, 0x2, 0xEB, 0x2, 0xEF, 0x0, 0xFF, 0x2, 0xF4, 0x2, 0xF5, 0x1, 0x4, 0x2, 0xF9, 0x2, 0xF9, 0x1, 0x6, 0x2, 0xFB, 0x2, 0xFB, 0x1, 0x7, 0x2, 0xFF, 0x2, 0xFF, 0x1, 0x8, 0x3, 0x1, 0x3, 0x3, 0x1, 0x9, 0x3, 0x5, 0x3, 0x5, 0x1, 0xC, 0x3, 0x7, 0x3, 0x7, 0x1, 0xD, 0x3, 0x15, 0x3, 0x17, 0x1, 0xE, 0x3, 0x1F, 0x3, 0x1F, 0x1, 0x11, 0x3, 0x2F, 0x3, 0x3F, 0x1, 0x12, 0x3, 0x43, 0x3, 0x44, 0x1, 0x23, 0x3, 0x47, 0x3, 0x4B, 0x1, 0x25, 0x3, 0x4F, 0x3, 0x5A, 0x1, 0x2A, 0x3, 0x9A, 0x3, 0xA6, 0x1, 0x36, 0x3, 0xA8, 0x3, 0xA9, 0x1, 0x43, 0x3, 0xAB, 0x3, 0xC9, 0x1, 0x45, 0x4, 0x2B, 0x4, 0x2E, 0x1, 0x64, 0x5, 0x5D, 0x5, 0x5E, 0x1, 0x68, 0x6, 0xC7, 0x6, 0xC8, 0x1, 0x6A, 0x7, 0x4E, 0x7, 0x62, 0x1, 0x6C, 0x7, 0x66, 0x7, 0x66, 0x1, 0x81, 0x7, 0x71, 0x7, 0x71, 0x1, 0x82, 0x7, 0x78, 0x7, 0x7A, 0x1, 0x83, 0x7, 0x7D, 0x7, 0x7D, 0x1, 0x86, 0x7, 0x7F, 0x7, 0x7F, 0x1, 0x87, 0x7, 0x83, 0x7, 0x83, 0x1, 0x88, 0x7, 0x85, 0x7, 0x87, 0x1, 0x89, 0x7, 0x8D, 0x7, 0x8D, 0x1, 0x8C, 0x7, 0x92, 0x7, 0x92, 0x1, 0x8D, 0x7, 0x94, 0x7, 0x94, 0x1, 0x8E, 0x7, 0x96, 0x7, 0x96, 0x1, 0x8F, 0x7, 0xA6, 0x7, 0xA6, 0x1, 0x90, 0x7, 0xA9, 0x7, 0xA9, 0x1, 0x91, 0x7, 0xAB, 0x7, 0xAB, 0x1, 0x92, 0x7, 0xAE, 0x7, 0xB1, 0x1, 0x93, 0x7, 0xDE, 0x7, 0xE2, 0x1, 0x97, 0x7, 0xEE, 0x7, 0xF3, 0x1, 0x9C, 0x7, 0xF5, 0x7, 0xF5, 0x1, 0xA2, 0x7, 0xF7, 0x7, 0xF8, 0x1, 0xA3, 0x7, 0xFA, 0x7, 0xFA, 0x1, 0xA5, 0x8, 0xAD, 0x8, 0xB0, 0x1, 0xA6, 0x8, 0xB3, 0x8, 0xB8, 0x1, 0xAA, 0x8, 0xC8, 0x9, 0x30, 0x1, 0xB0, 0x9, 0x33, 0x9, 0xDA, 0x2, 0x19, 0x9, 0xDC, 0x9, 0xF3, 0x2, 0xC1, 0x9, 0xF5, 0x9, 0xF5, 0x2, 0xD9, 0x9, 0xF7, 0xA, 0x1, 0x2, 0xDA, 0xA, 0x3, 0xA, 0xC, 0x2, 0xE5, 0xA, 0xE, 0xA, 0x29, 0x2, 0xEF, 0xA, 0x2D, 0xA, 0x2D, 0x3, 0xB, 0xA, 0x2F, 0xA, 0x36, 0x3, 0xC, 0xA, 0x38, 0xA, 0x3A, 0x3, 0x14, 0xA, 0x3D, 0xA, 0x41, 0x3, 0x17, 0xA, 0x43, 0xA, 0xCC, 0x3, 0x1C, 0xA, 0xCF, 0xA, 0xCF, 0x3, 0xA6, 0xA, 0xD2, 0xA, 0xD3, 0x3, 0xA7, 0xA, 0xD5, 0xA, 0xD6, 0x3, 0xA9, 0xA, 0xD8, 0xA, 0xDB, 0x3, 0xAB, 0xA, 0xE7, 0xA, 0xE7, 0x3, 0xAF, 0xA, 0xEE, 0xB, 0xC, 0x3, 0xB0, 0xB, 0x10, 0xB, 0x44, 0x3, 0xCF, 0xB, 0x47, 0xC, 0x33, 0x4, 0x4, 0xC, 0x3C, 0xC, 0x71, 0x4, 0xF1, 0xC, 0x7A, 0xC, 0xAD, 0x5, 0x27, 0xC, 0xB7, 0xC, 0xBC, 0x5, 0x5B, 0xC, 0xBE, 0xC, 0xDD, 0x5, 0x61, 0xC, 0xDF, 0xC, 0xE6, 0x5, 0x81, 0xC, 0xE8, 0xC, 0xE9, 0x5, 0x89, 0xC, 0xEB, 0xC, 0xEB, 0x5, 0x8B, 0xC, 0xED, 0xD, 0x1E, 0x5, 0x8C, 0x0, 0x1, 0x0, 0x0, 0x0, 0x6, 0x0, 0x1, 0xFF, 0xB7, 0x4, 0x26, 0x5, 0xBE, 0x13, 0x52, 0x11, 0x96, 0x11, 0xA2, 0x11, 0xAE, 0x13, 0x5E, 0x11, 0xBA, 0x11, 0xC6, 0x12, 0x86, 0x12, 0x92, 0x11, 0x72, 0x11, 0xCC, 0x11, 0xD8, 0x11, 0xE4, 0x11, 0xF0, 0x13, 0x6A, 0x12, 0xAA, 0x13, 0x6A, 0x12, 0x2, 0x12, 0xE, 0x12, 0x1A, 0x12, 0x20, 0x12, 0x2C, 0x12, 0x38, 0x12, 0x3E, 0x12, 0xA4, 0x12, 0x4A, 0x13, 0x58, 0x11, 0x9C, 0x11, 0xA8, 0x11, 0xB4, 0x13, 0x64, 0x11, 0xC0, 0x12, 0x80, 0x12, 0x56, 0x11, 0xC, 0x11, 0x84, 0x11, 0xD2, 0x11, 0xDE, 0x11, 0xEA, 0x11, 0xF6, 0x13, 0x70, 0x11, 0xFC, 0x11, 0x90, 0x12, 0x8, 0x12, 0x14, 0x12, 0x5C, 0x12, 0x26, 0x12, 0x32, 0x12, 0x62, 0x12, 0x44, 0x12, 0x68, 0x12, 0x50, 0x11, 0x5A, 0x10, 0x76, 0x11, 0x60, 0x10, 0x7C, 0x10, 0x28, 0x12, 0x86, 0x13, 0x9A, 0x10, 0xA0, 0xF, 0x38, 0xB, 0x7E, 0xB, 0x84, 0x12, 0x80, 0xB, 0x8A, 0xB, 0x90, 0xB, 0x96, 0xB, 0x9C, 0xB, 0xA2, 0xB, 0xA8, 0xB, 0xAE, 0xB, 0xB4, 0xD, 0x70, 0x11, 0x12, 0x11, 0x18, 0xB, 0xBA, 0x11, 0x1E, 0x11, 0x24, 0x12, 0x4A, 0xB, 0xC0, 0xB, 0xC6, 0x12, 0x80, 0x10, 0xAC, 0xB, 0xCC, 0xB, 0xD2, 0xB, 0xD8, 0xB, 0xDE, 0xB, 0xE4, 0xB, 0xEA, 0xB, 0xF0, 0xB, 0xF6, 0xB, 0xFC, 0x13, 0x58, 0xC, 0x2, 0xC, 0x2, 0xC, 0x8, 0x11, 0xA8, 0xC, 0xE, 0xC, 0x14, 0xD, 0x1C, 0x13, 0x64, 0x11, 0x54, 0xC, 0x1A, 0xC, 0x20, 0xC, 0x20, 0xC, 0x26, 0xD, 0x4, 0xC, 0x2C, 0xC, 0x32, 0x12, 0x80, 0xC, 0x38, 0xC, 0x3E, 0xC, 0x44, 0xC, 0x4A, 0xC, 0x50, 0xC, 0x50, 0xC, 0x56, 0xC, 0x5C, 0xC, 0x62, 0xC, 0x68, 0xC, 0x6E, 0xC, 0x74, 0xF, 0x68, 0x11, 0xEA, 0x11, 0xEA, 0x11, 0xEA, 0xC, 0x7A, 0xC, 0x80, 0xC, 0x86, 0xC, 0x8C, 0xC, 0x92, 0xC, 0x98, 0x12, 0x8, 0xC, 0x9E, 0xC, 0xA4, 0x12, 0x8, 0x12, 0x8, 0xC, 0xAA, 0xC, 0xAA, 0x11, 0xF6, 0x11, 0xF6, 0x12, 0x14, 0xF, 0x9E, 0xF, 0x9E, 0xC, 0xB0, 0xC, 0xB6, 0xC, 0xBC, 0xC, 0xC2, 0xC, 0xC8, 0xF, 0x1A, 0xC, 0xCE, 0xF, 0x5C, 0xC, 0xD4, 0xC, 0xDA, 0xC, 0xE0, 0xC, 0xE6, 0xC, 0xEC, 0xC, 0xF2, 0xC, 0xF8, 0xD, 0x22, 0xD, 0x22, 0xD, 0x22, 0xD, 0x22, 0xC, 0xFE, 0xD, 0x4, 0xD, 0xA, 0xD, 0x10, 0xE, 0x6, 0xD, 0x16, 0xD, 0x1C, 0xD, 0x22, 0xD, 0x22, 0xD, 0x28, 0xD, 0x2E, 0xD, 0x34, 0xD, 0x3A, 0xD, 0x40, 0xD, 0x46, 0xD, 0x4C, 0xD, 0x52, 0xD, 0x58, 0xD, 0x5E, 0xD, 0x64, 0xF, 0xE, 0xD, 0x6A, 0x11, 0x42, 0x12, 0x7A, 0x12, 0x74, 0x12, 0x80, 0x12, 0x8C, 0xD, 0x70, 0x12, 0x98, 0x12, 0x9E, 0x10, 0xB2, 0x12, 0xB0, 0x11, 0x7E, 0xD, 0x76, 0xD, 0x7C, 0x10, 0xCA, 0x10, 0xD6, 0x10, 0xE2, 0x10, 0xFA, 0x11, 0x36, 0x11, 0x0, 0x10, 0xEE, 0xD, 0x82, 0xD, 0x88, 0x11, 0x66, 0x11, 0x48, 0xD, 0x8E, 0x10, 0xD0, 0x10, 0xDC, 0x10, 0xE8, 0x10, 0xA6, 0xE, 0x1E, 0xD, 0xEE, 0x11, 0x6C, 0x11, 0x6C, 0x11, 0x30, 0xD, 0x94, 0xD, 0x9A, 0x11, 0x3C, 0xD, 0xA0, 0xD, 0xA6, 0x11, 0x6, 0x10, 0xF4, 0xD, 0xAC, 0xD, 0xB2, 0x10, 0xF4, 0xD, 0xB8, 0xD, 0xBE, 0xD, 0xC4, 0x11, 0x8A, 0x12, 0x80, 0x10, 0xB8, 0x10, 0xBE, 0xD, 0xCA, 0xD, 0xD0, 0xD, 0xD6, 0xD, 0xDC, 0x10, 0xE2, 0x10, 0xE8, 0x10, 0xCA, 0x10, 0xD0, 0x10, 0xA6, 0x12, 0x86, 0x11, 0x6C, 0xD, 0xE2, 0xD, 0xE8, 0x12, 0x3E, 0x12, 0x44, 0x11, 0x36, 0x11, 0x3C, 0xE, 0x18, 0xE, 0x1E, 0x12, 0x86, 0x11, 0x6C, 0x11, 0xE4, 0xD, 0xEE, 0x10, 0xC4, 0x12, 0x3E, 0x12, 0x44, 0xD, 0xF4, 0x11, 0x7E, 0xD, 0xFA, 0xE, 0x0, 0xE, 0x6, 0xE, 0xC, 0xE, 0x12, 0xE, 0x1E, 0x11, 0x6C, 0xE, 0x18, 0x12, 0x56, 0xE, 0x1E, 0xE, 0x9C, 0x13, 0x3A, 0xE, 0x24, 0xF, 0xE, 0x13, 0x58, 0xE, 0x2A, 0xE, 0x30, 0xE, 0x36, 0xE, 0x3C, 0xE, 0x42, 0xE, 0x48, 0xE, 0x4E, 0xE, 0x54, 0xE, 0x5A, 0x10, 0xA0, 0xE, 0x60, 0x11, 0xA8, 0xE, 0x66, 0xE, 0x6C, 0xE, 0xA8, 0xE, 0x72, 0xE, 0x72, 0xF, 0x5C, 0xE, 0x78, 0xE, 0x7E, 0xE, 0x84, 0x12, 0x50, 0x12, 0x50, 0xE, 0x8A, 0xE, 0x90, 0xE, 0x96, 0xE, 0x9C, 0xE, 0xA2, 0xE, 0xA8, 0xE, 0xAE, 0xE, 0xB4, 0xE, 0xBA, 0xE, 0xC0, 0x12, 0x2, 0xE, 0xC6, 0xE, 0xCC, 0xE, 0xD2, 0xE, 0xD8, 0xE, 0xDE, 0xE, 0xE4, 0xE, 0xEA, 0xE, 0xF0, 0xE, 0xF6, 0x12, 0x80, 0xE, 0xFC, 0xF, 0x2, 0xF, 0x8, 0xF, 0xE, 0xF, 0x14, 0xF, 0x1A, 0xF, 0x20, 0xF, 0x26, 0xF, 0x2C, 0xF, 0x32, 0xF, 0x38, 0xF, 0x3E, 0xF, 0x44, 0xF, 0x4A, 0xF, 0x50, 0x12, 0x8, 0x12, 0x14, 0xF, 0x56, 0xF, 0x5C, 0xF, 0x62, 0x12, 0x50, 0xF, 0x68, 0xF, 0x6E, 0xF, 0x74, 0xF, 0x7A, 0xF, 0x80, 0xF, 0x86, 0xF, 0x8C, 0xF, 0x92, 0xF, 0x98, 0xF, 0x9E, 0xF, 0xA4, 0xF, 0xAA, 0xF, 0xB0, 0xF, 0xB6, 0xF, 0xBC, 0xF, 0xC2, 0x12, 0x86, 0x12, 0x56, 0x11, 0xF0, 0x11, 0xF6, 0x12, 0xDA, 0x13, 0x4C, 0x13, 0x10, 0x13, 0x46, 0xF, 0xC8, 0x10, 0x94, 0x13, 0xA, 0x13, 0x40, 0x10, 0x8E, 0x13, 0x82, 0x13, 0x4, 0x13, 0x82, 0x12, 0xE0, 0x12, 0xFE, 0x12, 0xF8, 0x12, 0xEC, 0x13, 0x34, 0x12, 0xE6, 0x13, 0x1C, 0x10, 0x88, 0xF, 0xCE, 0x12, 0xF8, 0x13, 0x22, 0xF, 0xD4, 0x13, 0x16, 0x13, 0x28, 0x13, 0x2E, 0xF, 0xF2, 0xF, 0xDA, 0x13, 0x22, 0xF, 0xE0, 0xF, 0xE6, 0xF, 0xEC, 0xF, 0xF2, 0xF, 0xF8, 0x13, 0x82, 0x13, 0x7C, 0xF, 0xFE, 0x10, 0x4, 0x10, 0x82, 0x13, 0x22, 0x12, 0xF2, 0x13, 0x76, 0x13, 0x94, 0x13, 0x94, 0x13, 0x88, 0x13, 0x8E, 0x10, 0xA, 0x10, 0xAC, 0x10, 0x10, 0x10, 0x16, 0x10, 0x1C, 0x10, 0xAC, 0x10, 0x22, 0x13, 0x9A, 0x13, 0x9A, 0x13, 0x9A, 0x10, 0xAC, 0x10, 0x28, 0x10, 0x2E, 0x10, 0x34, 0x10, 0x3A, 0x10, 0x40, 0x13, 0x3A, 0x10, 0x46, 0x13, 0x82, 0x10, 0x4C, 0x12, 0xE0, 0x10, 0x52, 0x10, 0x52, 0x10, 0x58, 0x12, 0x1A, 0x12, 0x5C, 0x13, 0x52, 0x13, 0x52, 0x13, 0x52, 0x13, 0x52, 0x13, 0x52, 0x13, 0x52, 0x13, 0x52, 0x11, 0xA2, 0x13, 0x5E, 0x13, 0x5E, 0x13, 0x5E, 0x13, 0x5E, 0x12, 0x92, 0x12, 0x92, 0x12, 0x92, 0x12, 0x92, 0x11, 0xF0, 0x13, 0x6A, 0x13, 0x6A, 0x13, 0x6A, 0x13, 0x6A, 0x13, 0x6A, 0x12, 0x20, 0x12, 0x20, 0x12, 0x20, 0x12, 0x20, 0x12, 0xA4, 0x13, 0x58, 0x13, 0x58, 0x13, 0x58, 0x13, 0x58, 0x13, 0x58, 0x13, 0x58, 0x13, 0x58, 0x11, 0xA8, 0x13, 0x64, 0x13, 0x64, 0x13, 0x64, 0x13, 0x64, 0x13, 0x9A, 0x13, 0x9A, 0x13, 0x9A, 0x13, 0x9A, 0x11, 0xF6, 0x13, 0x70, 0x13, 0x70, 0x13, 0x70, 0x13, 0x70, 0x13, 0x70, 0x12, 0x26, 0x12, 0x26, 0x12, 0x26, 0x12, 0x26, 0x12, 0x68, 0x12, 0x68, 0x13, 0x52, 0x13, 0x58, 0x13, 0x52, 0x13, 0x58, 0x13, 0x52, 0x13, 0x58, 0x11, 0xA2, 0x11, 0xA8, 0x11, 0xA2, 0x11, 0xA8, 0x11, 0xA2, 0x11, 0xA8, 0x11, 0xA2, 0x11, 0xA8, 0x11, 0xAE, 0x10, 0x5E, 0x13, 0x5E, 0x13, 0x64, 0x13, 0x5E, 0x13, 0x64, 0x13, 0x5E, 0x13, 0x64, 0x13, 0x5E, 0x13, 0x64, 0x13, 0x5E, 0x13, 0x64, 0x11, 0xC6, 0x12, 0x80, 0x11, 0xC6, 0x12, 0x80, 0x11, 0xC6, 0x12, 0x80, 0x11, 0xC6, 0x12, 0x80, 0x12, 0x86, 0x12, 0x56, 0x12, 0x92, 0x13, 0x9A, 0x12, 0x92, 0x13, 0x9A, 0x12, 0x92, 0x13, 0x9A, 0x12, 0x92, 0x11, 0xC, 0x12, 0x92, 0x11, 0x72, 0x10, 0xAC, 0x11, 0xCC, 0x11, 0xD2, 0x11, 0xD8, 0x11, 0xDE, 0x11, 0xD8, 0x11, 0xDE, 0x11, 0xD8, 0x10, 0x64, 0x11, 0xD8, 0x10, 0x6A, 0x11, 0xF0, 0x11, 0xF6, 0x11, 0xF0, 0x11, 0xF6, 0x11, 0xF0, 0x11, 0xF6, 0x11, 0xF6, 0x13, 0x6A, 0x13, 0x70, 0x13, 0x6A, 0x13, 0x70, 0x13, 0x6A, 0x13, 0x70, 0x12, 0x2, 0x12, 0x8, 0x12, 0x2, 0x12, 0x8, 0x12, 0x2, 0x12, 0x8, 0x12, 0xE, 0x12, 0x14, 0x12, 0xE, 0x12, 0x14, 0x12, 0xE, 0x12, 0x14, 0x12, 0xE, 0x12, 0x14, 0x12, 0xE, 0x12, 0x14, 0x12, 0x1A, 0x12, 0x5C, 0x12, 0x1A, 0x12, 0x5C, 0x12, 0x1A, 0x10, 0x70, 0x12, 0x20, 0x12, 0x26, 0x12, 0x20, 0x12, 0x26, 0x12, 0x20, 0x12, 0x26, 0x12, 0x20, 0x12, 0x26, 0x12, 0x20, 0x12, 0x26, 0x12, 0x20, 0x12, 0x26, 0x12, 0x38, 0x12, 0x62, 0x12, 0xA4, 0x12, 0x68, 0x12, 0xA4, 0x12, 0x4A, 0x12, 0x50, 0x12, 0x4A, 0x12, 0x50, 0x12, 0x4A, 0x12, 0x50, 0x11, 0x5A, 0x11, 0x60, 0x10, 0x76, 0x10, 0x7C, 0x10, 0x82, 0x10, 0x82, 0x13, 0xA, 0x13, 0x76, 0x13, 0x76, 0x13, 0x76, 0x13, 0x76, 0x13, 0x76, 0x13, 0x76, 0x13, 0x76, 0x13, 0x22, 0x13, 0x7C, 0x13, 0x7C, 0x13, 0x7C, 0x13, 0x7C, 0x12, 0xE6, 0x12, 0xE6, 0x12, 0xE6, 0x12, 0xE6, 0x12, 0xE0, 0x13, 0x82, 0x13, 0x82, 0x13, 0x82, 0x13, 0x82, 0x13, 0x82, 0x10, 0x94, 0x10, 0x94, 0x10, 0x94, 0x10, 0x94, 0x13, 0x4C, 0x13, 0x76, 0x13, 0x76, 0x13, 0x76, 0x13, 0x22, 0x13, 0x22, 0x13, 0x22, 0x13, 0x22, 0x10, 0x82, 0x13, 0x7C, 0x13, 0x7C, 0x13, 0x7C, 0x13, 0x7C, 0x13, 0x7C, 0x10, 0x88, 0x10, 0x88, 0x10, 0x88, 0x10, 0x88, 0x13, 0x1C, 0x12, 0xE6, 0x12, 0xE6, 0x12, 0xE6, 0x12, 0xE6, 0x12, 0xE6, 0x13, 0x34, 0x12, 0xEC, 0x12, 0xF8, 0x12, 0xF8, 0x12, 0xF8, 0x12, 0xF8, 0x12, 0xE0, 0x12, 0xE0, 0x12, 0xE0, 0x13, 0x82, 0x13, 0x82, 0x13, 0x82, 0x13, 0x82, 0x10, 0x8E, 0x10, 0x8E, 0x10, 0x8E, 0x13, 0x40, 0x13, 0x40, 0x13, 0x40, 0x13, 0x40, 0x13, 0xA, 0x13, 0xA, 0x13, 0xA, 0x10, 0x94, 0x10, 0x94, 0x10, 0x94, 0x10, 0x94, 0x10, 0x94, 0x10, 0x94, 0x13, 0x46, 0x13, 0x4C, 0x13, 0x4C, 0x12, 0xDA, 0x12, 0xDA, 0x12, 0xDA, 0x13, 0x52, 0x13, 0x5E, 0x12, 0x86, 0x12, 0x92, 0x12, 0xB6, 0x10, 0x9A, 0x12, 0x8C, 0x13, 0x52, 0x11, 0x96, 0x13, 0x5E, 0x12, 0x4A, 0x12, 0x86, 0x12, 0x92, 0x11, 0xCC, 0x11, 0xE4, 0x11, 0xF0, 0x13, 0x6A, 0x12, 0xAA, 0x12, 0x1A, 0x12, 0xA4, 0x12, 0x3E, 0x12, 0x92, 0x12, 0xA4, 0x12, 0x7A, 0x12, 0x74, 0x12, 0x80, 0x12, 0x8C, 0x12, 0x9E, 0x10, 0xA0, 0x13, 0x70, 0x12, 0x32, 0x12, 0x8C, 0x12, 0x9E, 0x13, 0x70, 0x12, 0x9E, 0x12, 0xB0, 0x13, 0x5E, 0x11, 0x42, 0x12, 0xE, 0x12, 0x92, 0x12, 0x92, 0x11, 0x72, 0x11, 0xCC, 0x10, 0xFA, 0x13, 0x52, 0x11, 0x96, 0x11, 0x42, 0x13, 0x5E, 0x10, 0xE2, 0x11, 0xE4, 0x12, 0x86, 0x13, 0x6A, 0x12, 0xAA, 0x11, 0xA2, 0x12, 0x1A, 0x12, 0x3E, 0x13, 0x58, 0x13, 0x64, 0x10, 0xE8, 0x13, 0x70, 0x11, 0xFC, 0x11, 0xA8, 0x12, 0x68, 0x12, 0x44, 0x13, 0x64, 0x11, 0x48, 0x12, 0x14, 0x11, 0xC, 0x13, 0x9A, 0x11, 0x84, 0x10, 0xA6, 0x12, 0x68, 0x12, 0x38, 0x12, 0x62, 0x12, 0x38, 0x12, 0x62, 0x12, 0x38, 0x12, 0x62, 0x12, 0xA4, 0x12, 0x68, 0x10, 0xAC, 0x11, 0xE4, 0x11, 0xEA, 0x13, 0x52, 0x13, 0x58, 0x13, 0x5E, 0x10, 0xE2, 0x13, 0x64, 0x10, 0xE8, 0x10, 0xB2, 0x10, 0xB8, 0x10, 0xBE, 0x10, 0xD6, 0x10, 0xDC, 0x11, 0xA2, 0x11, 0xA8, 0x12, 0xA4, 0x12, 0x92, 0x10, 0xCA, 0x10, 0xD0, 0x12, 0x92, 0x13, 0x52, 0x13, 0x58, 0x13, 0x52, 0x13, 0x58, 0x11, 0x5A, 0x11, 0x60, 0x13, 0x5E, 0x13, 0x64, 0x10, 0xC4, 0x11, 0x54, 0x11, 0x54, 0x10, 0xCA, 0x10, 0xD0, 0x10, 0xD6, 0x10, 0xDC, 0x10, 0xE2, 0x10, 0xE8, 0x10, 0xE2, 0x10, 0xE8, 0x13, 0x6A, 0x13, 0x70, 0x11, 0x8A, 0x12, 0x80, 0x11, 0x8A, 0x11, 0x8A, 0x12, 0x80, 0x10, 0xEE, 0x10, 0xF4, 0x10, 0xFA, 0x12, 0x68, 0x10, 0xFA, 0x12, 0x68, 0x10, 0xFA, 0x12, 0x68, 0x11, 0x36, 0x11, 0x3C, 0x11, 0x0, 0x11, 0x6, 0x11, 0xB4, 0x13, 0x52, 0x13, 0x58, 0x13, 0x52, 0x13, 0x58, 0x13, 0x52, 0x13, 0x58, 0x13, 0x52, 0x13, 0x58, 0x13, 0x52, 0x13, 0x58, 0x13, 0x52, 0x13, 0x58, 0x13, 0x52, 0x13, 0x58, 0x13, 0x52, 0x13, 0x58, 0x13, 0x52, 0x13, 0x58, 0x13, 0x52, 0x13, 0x58, 0x13, 0x52, 0x13, 0x58, 0x13, 0x52, 0x13, 0x58, 0x13, 0x5E, 0x13, 0x64, 0x13, 0x5E, 0x13, 0x64, 0x13, 0x5E, 0x13, 0x64, 0x13, 0x5E, 0x13, 0x64, 0x13, 0x5E, 0x13, 0x64, 0x13, 0x5E, 0x13, 0x64, 0x13, 0x5E, 0x13, 0x64, 0x13, 0x5E, 0x13, 0x64, 0x12, 0x92, 0x13, 0x9A, 0x12, 0x92, 0x11, 0xC, 0x13, 0x6A, 0x13, 0x70, 0x13, 0x6A, 0x13, 0x70, 0x13, 0x6A, 0x13, 0x70, 0x13, 0x6A, 0x13, 0x70, 0x13, 0x6A, 0x13, 0x70, 0x13, 0x6A, 0x13, 0x70, 0x13, 0x6A, 0x13, 0x70, 0x11, 0x12, 0x11, 0x18, 0x11, 0x12, 0x11, 0x18, 0x11, 0x12, 0x11, 0x18, 0x11, 0x12, 0x11, 0x18, 0x11, 0x12, 0x11, 0x18, 0x12, 0x20, 0x12, 0x26, 0x12, 0x20, 0x12, 0x26, 0x11, 0x1E, 0x11, 0x24, 0x11, 0x1E, 0x11, 0x24, 0x11, 0x1E, 0x11, 0x24, 0x11, 0x1E, 0x11, 0x24, 0x11, 0x1E, 0x11, 0x24, 0x12, 0xA4, 0x12, 0x68, 0x12, 0xA4, 0x12, 0x68, 0x12, 0xA4, 0x12, 0x68, 0x11, 0x2A, 0x12, 0x1A, 0x11, 0x30, 0x11, 0x36, 0x11, 0x3C, 0x11, 0x42, 0x11, 0x48, 0x12, 0x56, 0x11, 0x42, 0x11, 0x48, 0x11, 0x4E, 0x12, 0xA4, 0x12, 0x3E, 0x12, 0x44, 0x12, 0x74, 0x11, 0xBA, 0x12, 0x80, 0x13, 0x52, 0x13, 0x58, 0x12, 0x92, 0x13, 0x9A, 0x13, 0x6A, 0x13, 0x70, 0x12, 0x20, 0x12, 0x26, 0x12, 0x20, 0x12, 0x26, 0x12, 0x20, 0x12, 0x26, 0x12, 0x20, 0x12, 0x26, 0x12, 0x20, 0x12, 0x26, 0x11, 0x54, 0x13, 0x52, 0x13, 0x58, 0x13, 0x52, 0x13, 0x58, 0x11, 0x5A, 0x11, 0x60, 0x11, 0xC6, 0x12, 0x80, 0x11, 0xCC, 0x11, 0xD2, 0x13, 0x6A, 0x13, 0x70, 0x13, 0x6A, 0x13, 0x70, 0x11, 0xC6, 0x12, 0x80, 0x11, 0xF0, 0x11, 0xF6, 0x13, 0x52, 0x13, 0x58, 0x13, 0x52, 0x13, 0x58, 0x13, 0x5E, 0x13, 0x64, 0x13, 0x5E, 0x13, 0x64, 0x12, 0x92, 0x13, 0x9A, 0x12, 0x92, 0x13, 0x9A, 0x13, 0x6A, 0x13, 0x70, 0x13, 0x6A, 0x13, 0x70, 0x12, 0x2, 0x12, 0x8, 0x12, 0x2, 0x12, 0x8, 0x12, 0x20, 0x12, 0x26, 0x12, 0x20, 0x12, 0x26, 0x12, 0x86, 0x12, 0x56, 0x13, 0x52, 0x13, 0x58, 0x13, 0x5E, 0x13, 0x64, 0x13, 0x6A, 0x13, 0x70, 0x13, 0x6A, 0x13, 0x70, 0x13, 0x6A, 0x13, 0x70, 0x13, 0x6A, 0x13, 0x70, 0x12, 0xA4, 0x12, 0x68, 0x12, 0x80, 0x11, 0x66, 0x11, 0x6C, 0x11, 0x72, 0x11, 0x78, 0x11, 0x7E, 0x11, 0xA8, 0x11, 0x84, 0x11, 0x8A, 0x11, 0xA2, 0x11, 0xE4, 0x13, 0x6A, 0x11, 0x90, 0x12, 0x38, 0x12, 0x62, 0x11, 0x96, 0x11, 0x9C, 0x11, 0x96, 0x11, 0x9C, 0x11, 0x96, 0x11, 0x9C, 0x11, 0xA2, 0x11, 0xA8, 0x11, 0xAE, 0x11, 0xB4, 0x11, 0xAE, 0x11, 0xB4, 0x11, 0xAE, 0x11, 0xB4, 0x11, 0xAE, 0x11, 0xB4, 0x11, 0xAE, 0x11, 0xB4, 0x13, 0x5E, 0x13, 0x64, 0x13, 0x5E, 0x13, 0x64, 0x13, 0x5E, 0x13, 0x64, 0x13, 0x5E, 0x13, 0x64, 0x13, 0x5E, 0x13, 0x64, 0x11, 0xBA, 0x11, 0xC0, 0x11, 0xC6, 0x12, 0x80, 0x12, 0x86, 0x12, 0x56, 0x12, 0x86, 0x12, 0x56, 0x12, 0x86, 0x12, 0x56, 0x12, 0x86, 0x12, 0x56, 0x11, 0xCC, 0x11, 0xD2, 0x11, 0xCC, 0x11, 0xD2, 0x11, 0xCC, 0x11, 0xD2, 0x11, 0xD8, 0x11, 0xDE, 0x11, 0xD8, 0x11, 0xDE, 0x11, 0xD8, 0x11, 0xDE, 0x11, 0xD8, 0x11, 0xDE, 0x11, 0xE4, 0x11, 0xEA, 0x11, 0xE4, 0x11, 0xEA, 0x11, 0xF0, 0x11, 0xF6, 0x11, 0xF0, 0x11, 0xF6, 0x11, 0xF0, 0x11, 0xF6, 0x11, 0xF0, 0x11, 0xF6, 0x13, 0x6A, 0x13, 0x70, 0x13, 0x6A, 0x13, 0x70, 0x13, 0x6A, 0x13, 0x70, 0x13, 0x6A, 0x13, 0x70, 0x12, 0xAA, 0x11, 0xFC, 0x12, 0xAA, 0x11, 0xFC, 0x12, 0x2, 0x12, 0x8, 0x12, 0x2, 0x12, 0x8, 0x12, 0x2, 0x12, 0x8, 0x12, 0x2, 0x12, 0x8, 0x12, 0xE, 0x12, 0x14, 0x12, 0xE, 0x12, 0x14, 0x12, 0xE, 0x12, 0x14, 0x12, 0xE, 0x12, 0x14, 0x12, 0xE, 0x12, 0x14, 0x12, 0x1A, 0x12, 0x5C, 0x12, 0x1A, 0x12, 0x5C, 0x12, 0x1A, 0x12, 0x5C, 0x12, 0x1A, 0x12, 0x5C, 0x12, 0x20, 0x12, 0x26, 0x12, 0x20, 0x12, 0x26, 0x12, 0x20, 0x12, 0x26, 0x12, 0x20, 0x12, 0x26, 0x12, 0x20, 0x12, 0x26, 0x12, 0x2C, 0x12, 0x32, 0x12, 0x2C, 0x12, 0x32, 0x12, 0x38, 0x12, 0x62, 0x12, 0x38, 0x12, 0x62, 0x12, 0x3E, 0x12, 0x44, 0x12, 0x3E, 0x12, 0x44, 0x12, 0xA4, 0x12, 0x68, 0x12, 0x4A, 0x12, 0x50, 0x12, 0x4A, 0x12, 0x50, 0x12, 0x4A, 0x12, 0x50, 0x12, 0x56, 0x12, 0x5C, 0x12, 0x62, 0x12, 0x68, 0x13, 0x58, 0x12, 0x7A, 0x12, 0x7A, 0x12, 0x7A, 0x12, 0x7A, 0x12, 0x7A, 0x12, 0x7A, 0x12, 0x7A, 0x12, 0x7A, 0x13, 0x52, 0x13, 0x52, 0x13, 0x52, 0x13, 0x52, 0x13, 0x52, 0x13, 0x52, 0x13, 0x52, 0x13, 0x52, 0x12, 0x74, 0x12, 0x74, 0x12, 0x74, 0x12, 0x74, 0x12, 0x74, 0x12, 0x74, 0x13, 0x5E, 0x13, 0x5E, 0x13, 0x5E, 0x13, 0x5E, 0x13, 0x5E, 0x13, 0x5E, 0x12, 0x80, 0x12, 0x80, 0x12, 0x80, 0x12, 0x80, 0x12, 0x80, 0x12, 0x80, 0x12, 0x80, 0x12, 0x80, 0x12, 0x86, 0x12, 0x86, 0x12, 0x86, 0x12, 0x86, 0x12, 0x86, 0x12, 0x86, 0x12, 0x86, 0x12, 0x86, 0x12, 0x8C, 0x12, 0x8C, 0x12, 0x8C, 0x12, 0x8C, 0x12, 0x8C, 0x12, 0x8C, 0x12, 0x8C, 0x12, 0x8C, 0x12, 0x92, 0x12, 0x92, 0x12, 0x92, 0x12, 0x92, 0x12, 0x92, 0x12, 0x92, 0x12, 0x92, 0x12, 0x92, 0x13, 0x70, 0x13, 0x70, 0x13, 0x70, 0x13, 0x70, 0x13, 0x70, 0x13, 0x70, 0x12, 0xB6, 0x12, 0xB6, 0x12, 0x6E, 0x12, 0x6E, 0x12, 0x6E, 0x12, 0x6E, 0x12, 0x9E, 0x12, 0x9E, 0x12, 0x9E, 0x12, 0x9E, 0x12, 0x9E, 0x12, 0x9E, 0x12, 0x9E, 0x12, 0x9E, 0x12, 0xA4, 0x12, 0xA4, 0x12, 0xA4, 0x12, 0xA4, 0x12, 0xB0, 0x12, 0xB0, 0x12, 0xB0, 0x12, 0xB0, 0x12, 0xB0, 0x12, 0xB0, 0x12, 0xB0, 0x12, 0xB0, 0x12, 0x7A, 0x12, 0x7A, 0x12, 0x74, 0x12, 0x74, 0x12, 0x80, 0x12, 0x80, 0x12, 0x8C, 0x12, 0x8C, 0x13, 0x70, 0x13, 0x70, 0x12, 0x9E, 0x12, 0x9E, 0x12, 0xB0, 0x12, 0xB0, 0x12, 0x7A, 0x12, 0x7A, 0x12, 0x7A, 0x12, 0x7A, 0x12, 0x7A, 0x12, 0x7A, 0x12, 0x7A, 0x12, 0x7A, 0x13, 0x52, 0x13, 0x52, 0x13, 0x52, 0x13, 0x52, 0x13, 0x52, 0x13, 0x52, 0x13, 0x52, 0x13, 0x52, 0x12, 0x80, 0x12, 0x80, 0x12, 0x80, 0x12, 0x80, 0x12, 0x80, 0x12, 0x80, 0x12, 0x80, 0x12, 0x80, 0x12, 0x86, 0x12, 0x86, 0x12, 0x86, 0x12, 0x86, 0x12, 0x86, 0x12, 0x86, 0x12, 0x86, 0x12, 0x86, 0x12, 0xB0, 0x12, 0xB0, 0x12, 0xB0, 0x12, 0xB0, 0x12, 0xB0, 0x12, 0xB0, 0x12, 0xB0, 0x12, 0xB0, 0x12, 0x7A, 0x12, 0x7A, 0x12, 0x7A, 0x12, 0x7A, 0x12, 0x7A, 0x12, 0x7A, 0x12, 0x7A, 0x13, 0x52, 0x13, 0x52, 0x13, 0x52, 0x13, 0x52, 0x13, 0x52, 0x12, 0x80, 0x12, 0x80, 0x12, 0x80, 0x12, 0x80, 0x12, 0x80, 0x13, 0x5E, 0x13, 0x5E, 0x12, 0x86, 0x12, 0x86, 0x12, 0x86, 0x12, 0x8C, 0x12, 0x8C, 0x12, 0x8C, 0x12, 0x8C, 0x12, 0x8C, 0x12, 0x8C, 0x12, 0x92, 0x12, 0x92, 0x12, 0x92, 0x12, 0x92, 0x12, 0x9E, 0x12, 0x9E, 0x12, 0x9E, 0x12, 0x9E, 0x12, 0x98, 0x12, 0x98, 0x12, 0x9E, 0x12, 0x9E, 0x12, 0xA4, 0x12, 0xA4, 0x12, 0xA4, 0x12, 0xA4, 0x12, 0xAA, 0x12, 0xB0, 0x12, 0xB0, 0x12, 0xB0, 0x12, 0xB0, 0x12, 0xB0, 0x12, 0xB6, 0x12, 0xB6, 0x13, 0x76, 0x12, 0xBC, 0x12, 0xC2, 0x12, 0xC8, 0x12, 0xCE, 0x12, 0xD4, 0x13, 0x76, 0x12, 0xF2, 0x13, 0x7C, 0x12, 0xDA, 0x13, 0x1C, 0x12, 0xE6, 0x12, 0xEC, 0x12, 0xFE, 0x12, 0xE0, 0x13, 0x82, 0x13, 0x4, 0x13, 0xA, 0x13, 0x4C, 0x13, 0x10, 0x12, 0xE6, 0x13, 0x4C, 0x13, 0x7C, 0x12, 0xF8, 0x13, 0x40, 0x12, 0xE6, 0x12, 0xE6, 0x13, 0x34, 0x12, 0xEC, 0x13, 0x2E, 0x13, 0x76, 0x12, 0xF2, 0x12, 0xF8, 0x13, 0x7C, 0x13, 0x28, 0x12, 0xFE, 0x13, 0x1C, 0x13, 0x82, 0x13, 0x4, 0x13, 0x22, 0x13, 0xA, 0x13, 0x10, 0x13, 0x16, 0x13, 0x1C, 0x13, 0x22, 0x13, 0x4C, 0x13, 0x28, 0x13, 0x2E, 0x13, 0x34, 0x13, 0x3A, 0x13, 0x82, 0x13, 0x40, 0x13, 0x46, 0x13, 0x46, 0x13, 0x46, 0x13, 0x4C, 0x13, 0x52, 0x13, 0x58, 0x13, 0x5E, 0x13, 0x64, 0x13, 0x6A, 0x13, 0x70, 0x13, 0x76, 0x13, 0x7C, 0x13, 0x82, 0x13, 0x88, 0x13, 0x88, 0x13, 0x88, 0x13, 0x88, 0x13, 0x88, 0x13, 0x88, 0x13, 0x88, 0x13, 0x88, 0x13, 0x88, 0x13, 0x88, 0x13, 0x8E, 0x13, 0x8E, 0x13, 0x8E, 0x13, 0x8E, 0x13, 0x8E, 0x13, 0x8E, 0x13, 0x8E, 0x13, 0x8E, 0x13, 0x8E, 0x13, 0x94, 0x13, 0x94, 0x13, 0x94, 0x13, 0x94, 0x13, 0x94, 0x13, 0x94, 0x13, 0x94, 0x13, 0x94, 0x13, 0x94, 0x13, 0x94, 0x13, 0x94, 0x13, 0x94, 0x13, 0x94, 0x13, 0x9A, 0x13, 0x9A, 0x0, 0x1, 0x2, 0x4F, 0x6, 0x9B, 0x0, 0x1, 0x5, 0x94, 0x6, 0x40, 0x0, 0x1, 0x7, 0xB4, 0x6, 0x40, 0x0, 0x1, 0x7, 0x3B, 0x5, 0xA, 0x0, 0x1, 0x2, 0xD, 0x6, 0xBE, 0x0, 0x1, 0x4, 0xDA, 0x6, 0x47, 0x0, 0x1, 0x5, 0x89, 0x6, 0x40, 0x0, 0x1, 0x4, 0xD6, 0x6, 0x40, 0x0, 0x1, 0x2, 0xC6, 0x6, 0x48, 0x0, 0x1, 0x2, 0xC6, 0x6, 0x9B, 0x0, 0x1, 0x4, 0x91, 0x6, 0x48, 0x0, 0x1, 0x4, 0x14, 0x5, 0xA, 0x0, 0x1, 0x5, 0x8B, 0x6, 0x55, 0x0, 0x1, 0x4, 0xA0, 0x6, 0x40, 0x0, 0x1, 0x5, 0x5B, 0x6, 0x4C, 0x0, 0x1, 0x6, 0x43, 0x6, 0x40, 0x0, 0x1, 0x4, 0xCC, 0x6, 0x41, 0x0, 0x1, 0x2, 0xDF, 0x6, 0x40, 0x0, 0x1, 0x5, 0x43, 0x6, 0x40, 0x0, 0x1, 0x3, 0x2D, 0x5, 0xA, 0x0, 0x1, 0x5, 0x95, 0x6, 0x40, 0x0, 0x1, 0x4, 0x52, 0x5, 0xA, 0x0, 0x1, 0x4, 0xB8, 0x5, 0xA, 0x0, 0x1, 0x4, 0x82, 0x6, 0xA4, 0x0, 0x1, 0x4, 0x47, 0x5, 0xA, 0x0, 0x1, 0x4, 0xDA, 0x6, 0x63, 0x0, 0x1, 0x5, 0xC1, 0x5, 0xA, 0x0, 0x1, 0x4, 0x61, 0x5, 0xA, 0x0, 0x1, 0x5, 0xD6, 0x5, 0xA, 0x0, 0x1, 0x2, 0xBA, 0x5, 0xA, 0x0, 0x1, 0x4, 0xE4, 0x5, 0xA, 0x0, 0x1, 0x4, 0xDB, 0x5, 0xA, 0x0, 0x1, 0x4, 0x76, 0x5, 0xA, 0x0, 0x1, 0x5, 0x1B, 0x5, 0xA, 0x0, 0x1, 0x4, 0x71, 0x5, 0xA, 0x0, 0x1, 0x4, 0x71, 0x6, 0xA4, 0x0, 0x1, 0x2, 0xC6, 0x6, 0x40, 0x0, 0x1, 0x2, 0x78, 0x5, 0xA, 0x0, 0x1, 0x2, 0xD7, 0x5, 0xA, 0x0, 0x1, 0x3, 0x6, 0x6, 0x40, 0x0, 0x1, 0x3, 0xD3, 0x6, 0x40, 0x0, 0x1, 0x2, 0xA6, 0x6, 0x40, 0x0, 0x1, 0x4, 0xD0, 0x5, 0xA, 0x0, 0x1, 0x4, 0xCF, 0x5, 0xA, 0x0, 0x1, 0x4, 0x86, 0x5, 0xA, 0x0, 0x1, 0x6, 0xA8, 0x5, 0xA, 0x0, 0x1, 0x6, 0x93, 0x5, 0xA, 0x0, 0x1, 0x4, 0xD4, 0x6, 0x40, 0x0, 0x1, 0x2, 0xD0, 0x6, 0x40, 0x0, 0x1, 0x3, 0x2A, 0x5, 0xA, 0x0, 0x1, 0x2, 0x68, 0x5, 0xA, 0x0, 0x1, 0x3, 0x4C, 0x5, 0xA, 0x0, 0x1, 0x3, 0xF2, 0x6, 0xA4, 0x0, 0x1, 0x2, 0xAA, 0x6, 0x40, 0x0, 0x1, 0x2, 0xC1, 0x6, 0x40, 0x0, 0x1, 0x5, 0x3E, 0x5, 0xA, 0x0, 0x1, 0x4, 0x60, 0x5, 0xA, 0x0, 0x1, 0x5, 0xF0, 0x5, 0xA, 0x0, 0x1, 0x3, 0xE7, 0x6, 0x40, 0x0, 0x1, 0x4, 0x39, 0x5, 0xA, 0x0, 0x1, 0x4, 0x93, 0x5, 0xA, 0x0, 0x1, 0x5, 0x1, 0x5, 0xA, 0x0, 0x1, 0x4, 0x8D, 0x5, 0xA, 0x0, 0x1, 0x4, 0xA3, 0x5, 0xA, 0x0, 0x1, 0x5, 0x86, 0x6, 0x61, 0x0, 0x1, 0x4, 0x43, 0x5, 0xA, 0x0, 0x1, 0x5, 0x11, 0x5, 0xA, 0x0, 0x1, 0x3, 0xAD, 0x6, 0x40, 0x0, 0x1, 0x3, 0x8B, 0x5, 0xA, 0x0, 0x1, 0x4, 0xDA, 0x6, 0x40, 0x0, 0x1, 0x4, 0x31, 0x6, 0x61, 0x0, 0x1, 0x7, 0xB8, 0x6, 0x40, 0x0, 0x1, 0x7, 0x64, 0x6, 0x40, 0x0, 0x1, 0x8, 0xB2, 0x6, 0x40, 0x0, 0x1, 0x5, 0xDD, 0x6, 0x40, 0x0, 0x1, 0x4, 0x95, 0x6, 0xA4, 0x0, 0x1, 0x6, 0x3D, 0x6, 0x40, 0x0, 0x1, 0x6, 0xD3, 0x6, 0xA4, 0x0, 0x1, 0x5, 0x75, 0x6, 0x40, 0x0, 0x1, 0x5, 0x35, 0x6, 0x40, 0x0, 0x1, 0x3, 0xC6, 0x6, 0x40, 0x0, 0x1, 0x3, 0xDD, 0x6, 0x40, 0x0, 0x1, 0x5, 0x57, 0x5, 0xA, 0x0, 0x1, 0x3, 0xEE, 0x6, 0x47, 0x0, 0x1, 0x6, 0x71, 0x4, 0xFC, 0x0, 0x1, 0x5, 0x5A, 0x6, 0x40, 0x0, 0x1, 0x7, 0x54, 0x6, 0x40, 0x0, 0x1, 0x4, 0xF7, 0x6, 0x4C, 0x0, 0x1, 0x4, 0xF7, 0x4, 0xF5, 0x0, 0x1, 0x5, 0xD3, 0x6, 0xCC, 0x0, 0x1, 0x4, 0xD4, 0x4, 0xF5, 0x0, 0x1, 0x6, 0x8F, 0x4, 0xF5, 0x0, 0x1, 0x6, 0xEC, 0x4, 0xF5, 0x0, 0x1, 0x6, 0x84, 0x4, 0xF5, 0x0, 0x1, 0x4, 0x70, 0x4, 0xF5, 0x0, 0x1, 0x7, 0x49, 0x6, 0x41, 0x0, 0x1, 0x6, 0x50, 0x4, 0xFC, 0x0, 0x1, 0x3, 0xF0, 0x6, 0xCC, 0x0, 0x1, 0x4, 0x89, 0x5, 0x50, 0x0, 0x1, 0x6, 0x50, 0x6, 0x40, 0x0, 0x1, 0x5, 0x1B, 0x6, 0x61, 0x0, 0x1, 0x4, 0x4A, 0x5, 0xC, 0x0, 0x1, 0x6, 0x2B, 0x6, 0x56, 0x0, 0x1, 0x5, 0x0, 0x5, 0xA, 0x0, 0x1, 0x6, 0x3, 0x4, 0xF5, 0x0, 0x1, 0x6, 0x53, 0x6, 0x4C, 0x0, 0x1, 0x7, 0xFE, 0x6, 0x4C, 0x0, 0x1, 0x5, 0x4, 0x6, 0x61, 0x0, 0x1, 0x4, 0x2D, 0x5, 0xA, 0x0, 0x1, 0x5, 0xAA, 0x6, 0x4C, 0x0, 0x1, 0x5, 0x56, 0x6, 0x61, 0x0, 0x1, 0x5, 0x87, 0x6, 0x4C, 0x0, 0x1, 0x4, 0x9A, 0x4, 0xF5, 0x0, 0x1, 0x6, 0xC1, 0x5, 0xA, 0x0, 0x1, 0x4, 0x8A, 0x5, 0xA, 0x0, 0x1, 0x4, 0xEE, 0x5, 0xA, 0x0, 0x1, 0x4, 0xA, 0x5, 0xA, 0x0, 0x1, 0x4, 0x17, 0x5, 0xA, 0x0, 0x1, 0x2, 0x7, 0x5, 0xA, 0x0, 0x1, 0x3, 0xF0, 0x5, 0xA, 0x0, 0x1, 0x4, 0x6D, 0x5, 0xA, 0x0, 0x1, 0x3, 0xB4, 0x5, 0xA, 0x0, 0x1, 0x5, 0xEB, 0x5, 0xA, 0x0, 0x1, 0x4, 0x9E, 0x5, 0xA, 0x0, 0x1, 0x7, 0x3E, 0x5, 0xA, 0x0, 0x1, 0x3, 0xE6, 0x5, 0xA, 0x0, 0x1, 0x4, 0x7A, 0x5, 0xA, 0x0, 0x1, 0x4, 0xF2, 0x5, 0xA, 0x0, 0x1, 0x3, 0xF7, 0x5, 0xA, 0x0, 0x1, 0x5, 0xF4, 0x5, 0xA, 0x0, 0x1, 0x4, 0x25, 0x5, 0xA, 0x0, 0x1, 0x4, 0xCA, 0x5, 0xA, 0x0, 0x1, 0x3, 0x65, 0x5, 0xA, 0x0, 0x1, 0x4, 0xA0, 0x5, 0xA, 0x0, 0x1, 0x4, 0xAB, 0x5, 0xA, 0x0, 0x1, 0x4, 0x6C, 0x5, 0xA, 0x0, 0x1, 0x5, 0x52, 0x5, 0xA, 0x0, 0x1, 0x4, 0xA4, 0x5, 0xA, 0x0, 0x1, 0x6, 0xFC, 0x5, 0xA, 0x0, 0x1, 0x5, 0xF, 0x6, 0x40, 0x0, 0x1, 0x3, 0x56, 0x6, 0xA4, 0x0, 0x1, 0x7, 0xD7, 0x5, 0xA, 0x0, 0x1, 0x5, 0x4D, 0x5, 0xA, 0x0, 0x1, 0x4, 0xF1, 0x5, 0xA, 0x0, 0x1, 0x3, 0x57, 0x5, 0xA, 0x0, 0x1, 0x3, 0x1D, 0x5, 0xA, 0x0, 0x1, 0x4, 0x51, 0x5, 0xA, 0x0, 0x1, 0x3, 0x1D, 0x6, 0x40, 0x0, 0x1, 0x4, 0x28, 0x5, 0xA, 0x0, 0x1, 0x4, 0x63, 0x5, 0xA, 0x0, 0x1, 0x6, 0xE1, 0x6, 0x40, 0x0, 0x1, 0x2, 0xE5, 0x5, 0xA, 0x0, 0x1, 0x5, 0x17, 0x5, 0xA, 0x0, 0x1, 0x5, 0x5F, 0x5, 0xA, 0x0, 0x1, 0x4, 0xF0, 0x5, 0xA, 0x0, 0x1, 0x4, 0x82, 0x6, 0x40, 0x0, 0x1, 0x4, 0xCC, 0x6, 0x40, 0x0, 0x1, 0x2, 0xD6, 0x6, 0xA1, 0x0, 0x1, 0x5, 0xBB, 0x5, 0xA, 0x0, 0x1, 0x4, 0x64, 0x6, 0x40, 0x0, 0x1, 0x2, 0x56, 0x6, 0xA4, 0x0, 0x1, 0x7, 0x43, 0x5, 0xA, 0x0, 0x1, 0x4, 0xC6, 0x5, 0xA, 0x0, 0x1, 0x4, 0x81, 0x5, 0xA, 0x0, 0x1, 0x3, 0xA4, 0x6, 0xA4, 0x0, 0x1, 0x3, 0xF6, 0x5, 0xA, 0x0, 0x1, 0x4, 0x1C, 0x5, 0xA, 0x0, 0x1, 0x4, 0xD5, 0x5, 0xA, 0x0, 0x1, 0x5, 0x2A, 0x5, 0xA, 0x0, 0x1, 0x4, 0xAE, 0x6, 0x40, 0x0, 0x1, 0x4, 0x79, 0x5, 0xA, 0x0, 0x1, 0x4, 0x8C, 0x5, 0xA, 0x0, 0x1, 0x4, 0x5A, 0x5, 0xA, 0x0, 0x1, 0x5, 0x77, 0x5, 0xA, 0x0, 0x1, 0x2, 0x8A, 0x6, 0x40, 0x0, 0x1, 0x4, 0x38, 0x5, 0xA, 0x0, 0x1, 0x3, 0x4C, 0x6, 0xA4, 0x0, 0x1, 0x5, 0xF, 0x5, 0xA, 0x0, 0x1, 0x4, 0xA7, 0x5, 0xA, 0x0, 0x1, 0x2, 0xA0, 0x6, 0x48, 0x0, 0x1, 0x2, 0x82, 0x6, 0x40, 0x0, 0x1, 0x2, 0x94, 0x6, 0x48, 0x0, 0x1, 0x2, 0x7E, 0x5, 0x3, 0x0, 0x1, 0x4, 0x7C, 0x5, 0x28, 0x0, 0x1, 0x3, 0xC6, 0x5, 0x28, 0x0, 0x1, 0x6, 0x3A, 0x5, 0x28, 0x0, 0x1, 0x6, 0x20, 0x5, 0x28, 0x0, 0x1, 0x6, 0x92, 0x5, 0x28, 0x0, 0x1, 0x4, 0x88, 0x5, 0x28, 0x0, 0x1, 0x5, 0xF1, 0x5, 0x28, 0x0, 0x1, 0x4, 0x8C, 0x5, 0x28, 0x0, 0x1, 0x4, 0xD2, 0x5, 0x28, 0x0, 0x1, 0x5, 0x44, 0x6, 0x4C, 0x0, 0x1, 0x4, 0x31, 0x6, 0x47, 0x0, 0x1, 0x8, 0xAC, 0x6, 0x69, 0x0, 0x1, 0x2, 0x42, 0x5, 0x3, 0x0, 0x1, 0x2, 0xE6, 0x4, 0xE8, 0x0, 0x1, 0x2, 0xD3, 0x5, 0x3, 0x0, 0x1, 0x3, 0xAD, 0x5, 0x3, 0x0, 0x1, 0x4, 0xEE, 0x6, 0x47, 0x0, 0x1, 0x4, 0x9D, 0x5, 0xA, 0x0, 0x1, 0x5, 0xA9, 0x5, 0xA, 0x0, 0x1, 0x5, 0x9D, 0x6, 0x47, 0x0, 0x1, 0x3, 0xC4, 0x5, 0x28, 0x0, 0x1, 0x4, 0x9, 0x5, 0x28, 0x0, 0x1, 0x4, 0xF4, 0x5, 0x28, 0x0, 0x1, 0x5, 0x58, 0x6, 0x48, 0x0, 0x1, 0x4, 0x8F, 0x6, 0x68, 0x0, 0x1, 0x5, 0x1B, 0x6, 0x47, 0x0, 0x1, 0x2, 0xA2, 0x6, 0x9B, 0x0, 0x1, 0x2, 0xE8, 0x6, 0x9B, 0x0, 0x1, 0x2, 0xD2, 0x5, 0xC4, 0x0, 0x1, 0x5, 0x85, 0x6, 0x8A, 0x0, 0x1, 0x4, 0x89, 0x5, 0x7, 0x0, 0x1, 0x4, 0x7B, 0x5, 0x28, 0x0, 0x1, 0x4, 0xA7, 0x5, 0x28, 0x0, 0x1, 0x4, 0x5D, 0x5, 0x28, 0x0, 0x1, 0x4, 0x84, 0x5, 0x28, 0x0, 0x1, 0x5, 0x44, 0x6, 0x40, 0x0, 0x1, 0x4, 0x98, 0x5, 0xA, 0x0, 0x1, 0x4, 0x6F, 0x4, 0xFC, 0x0, 0x1, 0x2, 0x27, 0x4, 0xE8, 0x0, 0x1, 0x5, 0xCA, 0x4, 0xF5, 0x0, 0x1, 0x5, 0x1A, 0x6, 0x1C, 0x0, 0x1, 0x4, 0xF, 0x4, 0xEF, 0x0, 0x1, 0x5, 0x89, 0x6, 0x19, 0x0, 0x1, 0x7, 0xA2, 0x6, 0x48, 0x0, 0x1, 0x6, 0x77, 0x4, 0xFC, 0x0, 0x1, 0x4, 0xD6, 0x6, 0x55, 0x0, 0x1, 0x4, 0x17, 0x5, 0x9, 0x0, 0x1, 0x5, 0xA9, 0x6, 0x48, 0x0, 0x1, 0x4, 0x98, 0x4, 0xFC, 0x0, 0x1, 0x5, 0x51, 0x6, 0x56, 0x0, 0x1, 0x4, 0x3D, 0x5, 0xA, 0x0, 0x1, 0x5, 0xA, 0x6, 0x48, 0x0, 0x1, 0x6, 0xF9, 0x6, 0x48, 0x0, 0x1, 0x6, 0x6F, 0x4, 0xFC, 0x0, 0x1, 0x2, 0xC, 0x6, 0x40, 0x0, 0x1, 0x5, 0x8A, 0x6, 0x3E, 0x0, 0x1, 0x4, 0x9F, 0x5, 0xA, 0x0, 0x1, 0x5, 0xA5, 0x6, 0x4C, 0x0, 0x1, 0x4, 0xF2, 0x4, 0xF5, 0x0, 0x1, 0x4, 0xA3, 0x6, 0x47, 0x0, 0x1, 0x3, 0xF6, 0x4, 0xF5, 0x0, 0x1, 0x5, 0x89, 0x6, 0x48, 0x0, 0x1, 0x4, 0x66, 0x4, 0xFC, 0x0, 0x1, 0x4, 0x75, 0x6, 0x48, 0x0, 0x1, 0x3, 0x5B, 0x4, 0xFC, 0x0, 0x1, 0x4, 0x45, 0x6, 0x47, 0x0, 0x1, 0x4, 0x3D, 0x5, 0xB, 0x0, 0x1, 0x7, 0x85, 0x6, 0x4C, 0x0, 0x1, 0x6, 0xC1, 0x5, 0xB, 0x0, 0x1, 0x4, 0x90, 0x4, 0xF5, 0x0, 0x1, 0x4, 0x98, 0x4, 0xF5, 0x0, 0x1, 0x4, 0x71, 0x6, 0x41, 0x0, 0x1, 0x4, 0xDF, 0x6, 0x4C, 0x0, 0x1, 0x4, 0x7B, 0x6, 0x4C, 0x0, 0x1, 0x2, 0x1, 0x6, 0x40, 0x0, 0x1, 0x5, 0x7B, 0x6, 0x45, 0x0, 0x1, 0x4, 0x8B, 0x5, 0xA, 0x0, 0x1, 0x5, 0xD, 0x6, 0x4C, 0x0, 0x1, 0x4, 0x81, 0x6, 0x47, 0x0, 0x1, 0x5, 0x39, 0x6, 0x55, 0x0, 0x1, 0x4, 0x31, 0x5, 0xA, 0x0, 0x1, 0x5, 0x3A, 0x6, 0x48, 0x0, 0x1, 0x4, 0x85, 0x6, 0x47, 0x0, 0x1, 0x4, 0x66, 0x6, 0x4C, 0x0, 0x1, 0x2, 0xD6, 0x6, 0xBE, 0x0, 0x1, 0x5, 0x73, 0x6, 0x55, 0x0, 0x1, 0x5, 0xB, 0x6, 0x41, 0x0, 0x1, 0x3, 0xAB, 0x6, 0x47, 0x0, 0x1, 0x4, 0x55, 0x6, 0x40, 0x0, 0x1, 0x2, 0xC, 0x6, 0x9B, 0x0, 0x1, 0x7, 0x1, 0x6, 0x40, 0x0, 0x1, 0x6, 0xF7, 0x5, 0xA, 0x0, 0x1, 0x5, 0xAF, 0x6, 0x40, 0x0, 0x1, 0x4, 0x73, 0x5, 0xA, 0x0, 0x1, 0x4, 0x81, 0x5, 0x0, 0x0, 0x1, 0x4, 0xFF, 0x6, 0x40, 0x0, 0x1, 0x2, 0xD0, 0x5, 0xA, 0x0, 0x1, 0x4, 0xD5, 0x6, 0x40, 0x0, 0x1, 0x4, 0x22, 0x5, 0xA, 0x0, 0x1, 0x4, 0xDC, 0x6, 0x40, 0x0, 0x1, 0x5, 0x38, 0x6, 0x40, 0x0, 0x1, 0x4, 0x72, 0x5, 0xA, 0x0, 0x1, 0x5, 0x2E, 0x6, 0x4C, 0x0, 0x1, 0x3, 0xF6, 0x5, 0x0, 0x0, 0x1, 0x7, 0xB, 0x6, 0x40, 0x0, 0x1, 0x5, 0x10, 0x6, 0x4C, 0x0, 0x1, 0x4, 0x7, 0x5, 0x0, 0x0, 0x1, 0x4, 0xD2, 0x6, 0x40, 0x0, 0x1, 0x4, 0x7, 0x5, 0xA, 0x0, 0x1, 0x4, 0x71, 0x6, 0x68, 0x0, 0x1, 0x2, 0xAA, 0x5, 0xC4, 0x0, 0x1, 0x5, 0xF2, 0x5, 0xA, 0x0, 0x1, 0x3, 0xE5, 0x5, 0xA, 0x0, 0x1, 0x5, 0xCC, 0x6, 0x40, 0x0, 0x1, 0x4, 0x61, 0x5, 0x9, 0x0, 0x1, 0x4, 0x85, 0x5, 0xA, 0x0, 0x1, 0x4, 0x89, 0x5, 0xA, 0x0, 0x1, 0x5, 0xB0, 0x6, 0x48, 0x0, 0x1, 0x2, 0xAA, 0x4, 0xF5, 0x0, 0x1, 0x2, 0x42, 0x6, 0x48, 0x0, 0x1, 0x4, 0x89, 0x5, 0x0, 0x0, 0x1, 0x4, 0x61, 0x4, 0xFC, 0x0, 0x1, 0x4, 0xE0, 0x6, 0x40, 0x0, 0x1, 0x5, 0x1E, 0x6, 0x4C, 0x0, 0x1, 0x6, 0x95, 0x4, 0xFA, 0x0, 0x1, 0x5, 0x9A, 0x6, 0x40, 0x0, 0x1, 0x4, 0x1D, 0x5, 0x28, 0x0, 0x1, 0x5, 0x1A, 0x5, 0x28, 0x0, 0x1, 0x2, 0x39, 0x5, 0x28, 0x0, 0x1, 0x4, 0xCA, 0x5, 0x28, 0x0, 0x1, 0x4, 0x79, 0x5, 0x28, 0x0, 0x1, 0x4, 0x2A, 0x5, 0x28, 0x0, 0x1, 0x4, 0xDD, 0x5, 0x28, 0x0, 0x1, 0x1, 0xFD, 0x5, 0x28, 0x0, 0x1, 0x4, 0x5C, 0x5, 0x28, 0x0, 0x1, 0x4, 0x61, 0x5, 0x28, 0x0, 0x1, 0x3, 0xBA, 0x5, 0x28, 0x0, 0x1, 0x6, 0x6, 0x5, 0x28, 0x0, 0x1, 0x4, 0x6D, 0x5, 0x28, 0x0, 0x1, 0x4, 0x3C, 0x5, 0x28, 0x0, 0x1, 0x4, 0x5F, 0x5, 0x28, 0x0, 0x1, 0x4, 0x46, 0x5, 0x28, 0x0, 0x1, 0x4, 0xDE, 0x5, 0x28, 0x0, 0x1, 0x4, 0x80, 0x5, 0x28, 0x0, 0x1, 0x4, 0xE4, 0x5, 0x28, 0x0, 0x1, 0x4, 0x47, 0x5, 0x28, 0x0, 0x1, 0x3, 0xD6, 0x5, 0x28, 0x0, 0x1, 0x6, 0x47, 0x5, 0xA, 0x0, 0x1, 0x4, 0x35, 0x5, 0x28, 0x0, 0x1, 0x6, 0x8, 0x5, 0x28, 0x0, 0x1, 0x4, 0x3D, 0x5, 0x28, 0x0, 0x1, 0x5, 0x53, 0x6, 0x40, 0x0, 0x1, 0x4, 0x55, 0x5, 0xA, 0x0, 0x1, 0x4, 0x86, 0x6, 0x48, 0x0, 0x1, 0x4, 0x4B, 0x5, 0xA, 0x0, 0x1, 0x5, 0x86, 0x6, 0x40, 0x0, 0x1, 0x4, 0x8E, 0x5, 0xA, 0x0, 0x1, 0x4, 0x9E, 0x5, 0x28, 0x0, 0x1, 0x3, 0xE1, 0x5, 0x28, 0x0, 0x1, 0x4, 0xC0, 0x5, 0x28, 0x0, 0x1, 0x5, 0x75, 0x6, 0x5E, 0x0, 0x1, 0x5, 0x98, 0x6, 0x66, 0x0, 0x1, 0x5, 0xB0, 0x6, 0x5E, 0x0, 0x1, 0x2, 0x1B, 0x5, 0x3, 0x0, 0x9, 0x0, 0x0, 0x0, 0x1, 0x0, 0x8, 0x0, 0x1, 0x0, 0x4, 0x0, 0x0, 0x4, 0x4A, 0x0, 0x4, 0x0, 0x0, 0x0, 0x1, 0x0, 0x8, 0x0, 0x1, 0x0, 0xC, 0x0, 0x14, 0x0, 0x1, 0x0, 0x1C, 0x0, 0x32, 0x0, 0x1, 0x0, 0x2, 0x8, 0x9A, 0x8, 0x9D, 0x0, 0x1, 0x0, 0x2, 0x0, 0x93, 0x1, 0x31, 0x0, 0x2, 0x0, 0x0, 0x0, 0xA, 0x0, 0x0, 0x0, 0x10, 0x0, 0x1, 0xFE, 0x9, 0x0, 0xD6, 0x0, 0x1, 0xFD, 0x41, 0x0, 0xD6, 0x0, 0x2, 0x0, 0x6, 0x0, 0xC, 0x0, 0x1, 0x3, 0x1B, 0xFE, 0xCE, 0x0, 0x1, 0x1, 0x64, 0xFE, 0xCB, 0x0, 0x9, 0x0, 0x0, 0x0, 0x1, 0x0, 0x8, 0x0, 0x1, 0x0, 0x4, 0x0, 0x0, 0xB, 0xFC, 0x0, 0x9, 0x0, 0x0, 0x0, 0x1, 0x0, 0x8, 0x0, 0x1, 0x0, 0x4, 0x0, 0x0, 0xC, 0x3A, 0x0, 0x9, 0x0, 0x0, 0x0, 0x1, 0x0, 0x8, 0x0, 0x1, 0x0, 0x6, 0x0, 0x0, 0xC, 0x64, 0x0, 0x6, 0x0, 0x0, 0x0, 0x1, 0x0, 0x8, 0x0, 0x1, 0x0, 0xC, 0x0, 0x76, 0x0, 0x1, 0x0, 0xCE, 0x2, 0x62, 0x0, 0x2, 0x0, 0x11, 0x1, 0xC7, 0x1, 0xCA, 0x0, 0x0, 0x1, 0xCD, 0x1, 0xD1, 0x0, 0x4, 0x1, 0xD4, 0x1, 0xE4, 0x0, 0x9, 0x1, 0xEA, 0x1, 0xED, 0x0, 0x1A, 0x1, 0xF6, 0x1, 0xF6, 0x0, 0x1E, 0x1, 0xF8, 0x1, 0xFA, 0x0, 0x1F, 0x1, 0xFE, 0x1, 0xFF, 0x0, 0x22, 0x2, 0x4, 0x2, 0x7, 0x0, 0x24, 0x2, 0xA, 0x2, 0xB, 0x0, 0x28, 0x3, 0x25, 0x3, 0x28, 0x0, 0x2A, 0x3, 0xF1, 0x3, 0xF1, 0x0, 0x2E, 0x3, 0xF9, 0x3, 0xF9, 0x0, 0x2F, 0x3, 0xFE, 0x3, 0xFF, 0x0, 0x30, 0x4, 0x26, 0x4, 0x26, 0x0, 0x32, 0x4, 0x28, 0x4, 0x28, 0x0, 0x33, 0x8, 0x8F, 0x8, 0x95, 0x0, 0x34, 0x8, 0x98, 0x8, 0x98, 0x0, 0x3B, 0x0, 0x2, 0x0, 0xE, 0x0, 0x7A, 0x0, 0x7A, 0x0, 0x0, 0x1, 0x8C, 0x1, 0x8C, 0x0, 0x1, 0x1, 0xC7, 0x1, 0xCA, 0x0, 0x2, 0x1, 0xCD, 0x1, 0xD1, 0x0, 0x6, 0x1, 0xD4, 0x1, 0xD7, 0x0, 0xB, 0x1, 0xDA, 0x1, 0xE4, 0x0, 0xF, 0x1, 0xEA, 0x1, 0xED, 0x0, 0x1A, 0x1, 0xF6, 0x1, 0xF6, 0x0, 0x1E, 0x1, 0xF8, 0x1, 0xFA, 0x0, 0x1F, 0x1, 0xFE, 0x1, 0xFF, 0x0, 0x22, 0x2, 0x4, 0x2, 0x7, 0x0, 0x24, 0x2, 0xA, 0x2, 0xB, 0x0, 0x28, 0x7, 0x25, 0x7, 0x25, 0x0, 0x2A, 0x8, 0x8F, 0x8, 0x95, 0x0, 0x2B, 0x0, 0x3C, 0x0, 0x0, 0x1, 0x52, 0x0, 0x0, 0x0, 0xF2, 0x0, 0x0, 0x0, 0xF8, 0x0, 0x0, 0x0, 0xFE, 0x0, 0x0, 0x1, 0x4, 0x0, 0x0, 0x1, 0x7C, 0x0, 0x0, 0x1, 0x7C, 0x0, 0x0, 0x1, 0x7C, 0x0, 0x0, 0x1, 0x52, 0x0, 0x0, 0x1, 0x76, 0x0, 0x0, 0x1, 0x70, 0x0, 0x0, 0x1, 0x88, 0x0, 0x0, 0x1, 0xA, 0x0, 0x0, 0x1, 0x10, 0x0, 0x0, 0x1, 0x28, 0x0, 0x0, 0x1, 0x7C, 0x0, 0x0, 0x1, 0x88, 0x0, 0x0, 0x1, 0x52, 0x0, 0x0, 0x1, 0x88, 0x0, 0x0, 0x1, 0x88, 0x0, 0x0, 0x1, 0x88, 0x0, 0x0, 0x1, 0x82, 0x0, 0x0, 0x1, 0x88, 0x0, 0x0, 0x1, 0x88, 0x0, 0x0, 0x1, 0x88, 0x0, 0x0, 0x1, 0x88, 0x0, 0x0, 0x1, 0x16, 0x0, 0x0, 0x1, 0x88, 0x0, 0x0, 0x1, 0x52, 0x0, 0x0, 0x1, 0x52, 0x0, 0x0, 0x1, 0x6A, 0x0, 0x0, 0x1, 0x52, 0x0, 0x0, 0x1, 0x82, 0x0, 0x0, 0x1, 0x1C, 0x0, 0x0, 0x1, 0x88, 0x0, 0x0, 0x1, 0x88, 0x0, 0x0, 0x1, 0x22, 0x0, 0x0, 0x1, 0x28, 0x0, 0x0, 0x1, 0x2E, 0x0, 0x0, 0x1, 0x34, 0x0, 0x0, 0x1, 0x3A, 0x0, 0x0, 0x1, 0x40, 0x0, 0x0, 0x1, 0x46, 0x0, 0x0, 0x1, 0x52, 0x0, 0x0, 0x1, 0x88, 0x0, 0x0, 0x1, 0x8E, 0x0, 0x0, 0x1, 0x82, 0x0, 0x0, 0x1, 0x4C, 0x0, 0x0, 0x1, 0x52, 0x0, 0x0, 0x1, 0x58, 0x0, 0x0, 0x1, 0x5E, 0x0, 0x0, 0x1, 0x64, 0x0, 0x0, 0x1, 0x6A, 0x0, 0x0, 0x1, 0x70, 0x0, 0x0, 0x1, 0x76, 0x0, 0x0, 0x1, 0x88, 0x0, 0x0, 0x1, 0x7C, 0x0, 0x0, 0x1, 0x82, 0x0, 0x0, 0x1, 0x88, 0x0, 0x0, 0x1, 0x8E, 0x0, 0x1, 0xFD, 0x9B, 0x0, 0x0, 0x0, 0x1, 0xFD, 0xCF, 0xFF, 0xFC, 0x0, 0x1, 0xFD, 0xB0, 0x0, 0x0, 0x0, 0x1, 0xFD, 0xED, 0xFF, 0xF9, 0x0, 0x1, 0xFD, 0xD0, 0x0, 0x0, 0x0, 0x1, 0xFD, 0x9C, 0x0, 0x3, 0x0, 0x1, 0xFD, 0x98, 0x0, 0x0, 0x0, 0x1, 0xFD, 0xD4, 0x0, 0x0, 0x0, 0x1, 0xFD, 0xEC, 0x0, 0x0, 0x0, 0x1, 0xFD, 0xC8, 0x0, 0x0, 0x0, 0x1, 0xFD, 0xC2, 0x0, 0x0, 0x0, 0x1, 0xFD, 0xEA, 0x0, 0x0, 0x0, 0x1, 0xFD, 0xB3, 0x0, 0x0, 0x0, 0x1, 0xFD, 0xC9, 0x0, 0x17, 0x0, 0x1, 0xFD, 0xD6, 0x0, 0x0, 0x0, 0x1, 0xFD, 0xDE, 0x0, 0x0, 0x0, 0x1, 0xFD, 0xB9, 0x0, 0x0, 0x0, 0x1, 0xFE, 0x3C, 0x0, 0x0, 0x0, 0x1, 0xFD, 0xC4, 0x0, 0x0, 0x0, 0x1, 0xFD, 0xC9, 0x0, 0x0, 0x0, 0x1, 0xFD, 0xB2, 0x0, 0x0, 0x0, 0x1, 0xFD, 0x68, 0x0, 0x0, 0x0, 0x1, 0xFD, 0xA8, 0x0, 0x0, 0x0, 0x1, 0xFD, 0xB6, 0x0, 0x0, 0x0, 0x1, 0xFD, 0xB7, 0x0, 0x0, 0x0, 0x1, 0xFD, 0xB8, 0x0, 0x0, 0x0, 0x1, 0xFD, 0xD9, 0x0, 0x0, 0x0, 0x32, 0x0, 0x66, 0x0, 0x6C, 0x0, 0x72, 0x0, 0x78, 0x0, 0x7E, 0x0, 0x84, 0x0, 0x8A, 0x0, 0x90, 0x0, 0x90, 0x0, 0x96, 0x0, 0x9C, 0x1, 0x3E, 0x1, 0x38, 0x1, 0x44, 0x0, 0xA2, 0x1, 0x4A, 0x0, 0xA8, 0x0, 0xAE, 0x0, 0xB4, 0x0, 0xBA, 0x0, 0xC0, 0x1, 0x50, 0x1, 0x56, 0x0, 0xC6, 0x0, 0xCC, 0x0, 0xD2, 0x0, 0xD8, 0x0, 0xDE, 0x0, 0xEA, 0x0, 0xE4, 0x1, 0x32, 0x0, 0xEA, 0x0, 0xF0, 0x0, 0xF6, 0x0, 0xFC, 0x1, 0x2, 0x1, 0x8, 0x1, 0xE, 0x1, 0x14, 0x1, 0x1A, 0x1, 0x20, 0x1, 0x26, 0x1, 0x2C, 0x1, 0x32, 0x1, 0x38, 0x1, 0x3E, 0x1, 0x44, 0x1, 0x4A, 0x1, 0x50, 0x1, 0x56, 0x0, 0x1, 0x0, 0xE1, 0xFE, 0x3D, 0x0, 0x1, 0x1, 0x35, 0xFE, 0x52, 0x0, 0x1, 0xFD, 0xB9, 0xFE, 0x7A, 0x0, 0x1, 0xFD, 0x9C, 0xFE, 0x7A, 0x0, 0x1, 0xFD, 0xCF, 0xFE, 0x24, 0x0, 0x1, 0xFD, 0xB1, 0xFE, 0x24, 0x0, 0x1, 0xFD, 0xED, 0xFE, 0x25, 0x0, 0x1, 0xFD, 0xB6, 0xFE, 0x3D, 0x0, 0x1, 0xFD, 0xB7, 0xFE, 0x15, 0x0, 0x1, 0xFD, 0xBB, 0xFE, 0xA5, 0x0, 0x1, 0xFD, 0xD0, 0xFD, 0xD7, 0x0, 0x1, 0xFD, 0xB8, 0xFE, 0x24, 0x0, 0x1, 0xFD, 0xB9, 0xFE, 0xAF, 0x0, 0x1, 0xFD, 0xB8, 0xFE, 0x68, 0x0, 0x1, 0xFD, 0xB8, 0xFE, 0x74, 0x0, 0x1, 0xFD, 0xB8, 0xFE, 0x8A, 0x0, 0x1, 0xFD, 0xB9, 0xFE, 0xC8, 0x0, 0x1, 0xFD, 0xB8, 0xFE, 0xAD, 0x0, 0x1, 0xFD, 0xB8, 0xFD, 0xF9, 0x0, 0x1, 0xFD, 0x98, 0xFE, 0x2B, 0x0, 0x1, 0xFD, 0xB8, 0xFE, 0x13, 0x0, 0x1, 0xFD, 0xB9, 0xFE, 0xB0, 0x0, 0x1, 0xFD, 0xB9, 0xFE, 0xE, 0x0, 0x1, 0xFD, 0xB7, 0xFE, 0xE, 0x0, 0x1, 0xFD, 0xD4, 0xFE, 0x6, 0x0, 0x1, 0xFD, 0xB8, 0xFD, 0xD8, 0x0, 0x1, 0xFD, 0xB8, 0xFD, 0xDA, 0x0, 0x1, 0xFD, 0xEC, 0xFD, 0xD7, 0x0, 0x1, 0xFD, 0xC8, 0xFD, 0xD6, 0x0, 0x1, 0xFD, 0xC2, 0xFD, 0xD7, 0x0, 0x1, 0xFD, 0xEA, 0xFD, 0xD7, 0x0, 0x1, 0xFD, 0xB3, 0xFD, 0xED, 0x0, 0x1, 0xFD, 0xC9, 0xFE, 0x1F, 0x0, 0x1, 0x0, 0xF5, 0xFF, 0x66, 0x0, 0x1, 0xFD, 0xB2, 0xFD, 0xF2, 0x0, 0x1, 0xFD, 0x68, 0xFE, 0x98, 0x0, 0x1, 0xFD, 0xA8, 0xFE, 0x91, 0x0, 0x1, 0xFD, 0xB8, 0xFE, 0x29, 0x0, 0x1, 0xFD, 0xBA, 0xFE, 0xE, 0x0, 0x1, 0xFD, 0xB7, 0xFE, 0x83, 0x0, 0x1, 0xFD, 0xB8, 0xFE, 0x59, 0x0, 0x1, 0x0, 0xC, 0x0, 0x14, 0x0, 0x1, 0x0, 0xA2, 0x0, 0xB8, 0x0, 0x1, 0x0, 0x2, 0x3, 0x2B, 0x3, 0x2C, 0x0, 0x2, 0x0, 0x17, 0x8, 0xC8, 0x9, 0x30, 0x0, 0x0, 0x9, 0x33, 0x9, 0xD4, 0x0, 0x69, 0xA, 0x12, 0xA, 0x13, 0x1, 0xB, 0xA, 0x16, 0xA, 0x17, 0x1, 0xD, 0xA, 0x19, 0xA, 0x19, 0x1, 0xF, 0xA, 0x1C, 0xA, 0x1D, 0x1, 0x10, 0xA, 0x22, 0xA, 0x29, 0x1, 0x12, 0xA, 0x2D, 0xA, 0x2D, 0x1, 0x1A, 0xA, 0x2F, 0xA, 0x32, 0x1, 0x1B, 0xA, 0x38, 0xA, 0x38, 0x1, 0x1F, 0xA, 0x5E, 0xA, 0x5E, 0x1, 0x20, 0xA, 0x6E, 0xA, 0xC5, 0x1, 0x21, 0xA, 0xE7, 0xA, 0xE7, 0x1, 0x79, 0xA, 0xEE, 0xB, 0xC, 0x1, 0x7A, 0xB, 0x10, 0xB, 0x3E, 0x1, 0x99, 0xB, 0x4D, 0xB, 0xD7, 0x1, 0xC8, 0xC, 0xB7, 0xC, 0xBC, 0x2, 0x53, 0xC, 0xBE, 0xC, 0xDD, 0x2, 0x59, 0xC, 0xDF, 0xC, 0xE6, 0x2, 0x79, 0xC, 0xE8, 0xC, 0xE9, 0x2, 0x81, 0xC, 0xEB, 0xC, 0xEB, 0x2, 0x83, 0xC, 0xED, 0xC, 0xFC, 0x2, 0x84, 0xD, 0x1D, 0xD, 0x1E, 0x2, 0x94, 0x0, 0x2, 0x0, 0x0, 0x0, 0xA, 0x0, 0x0, 0x0, 0x10, 0x0, 0x1, 0xFD, 0xC3, 0x5, 0x46, 0x0, 0x1, 0xFD, 0xCF, 0x5, 0x46, 0x2, 0x96, 0x5, 0xD0, 0x5, 0xD0, 0x6, 0x8A, 0x6, 0x48, 0x6, 0x90, 0x7, 0x1A, 0x7, 0x1A, 0x7, 0x1A, 0x7, 0x1A, 0x7, 0x1A, 0x7, 0x1A, 0x7, 0x1A, 0x5, 0xC4, 0x7, 0x26, 0x7, 0x26, 0x7, 0x26, 0x7, 0x26, 0x5, 0xA6, 0x5, 0xA6, 0x5, 0xA6, 0x5, 0xA6, 0x6, 0x18, 0x7, 0x32, 0x7, 0x32, 0x7, 0x32, 0x7, 0x32, 0x7, 0x32, 0x6, 0x4E, 0x6, 0x4E, 0x6, 0x4E, 0x6, 0x4E, 0x6, 0x78, 0x7, 0x20, 0x7, 0x20, 0x7, 0x20, 0x7, 0x20, 0x7, 0x20, 0x7, 0x20, 0x7, 0x20, 0x5, 0xCA, 0x7, 0x2C, 0x7, 0x2C, 0x7, 0x2C, 0x7, 0x2C, 0x7, 0x50, 0x7, 0x50, 0x7, 0x50, 0x7, 0x50, 0x6, 0x1E, 0x7, 0x38, 0x7, 0x38, 0x7, 0x38, 0x7, 0x38, 0x7, 0x38, 0x6, 0x54, 0x6, 0x54, 0x6, 0x54, 0x6, 0x54, 0x6, 0x9C, 0x6, 0x9C, 0x7, 0x1A, 0x7, 0x20, 0x7, 0x1A, 0x7, 0x20, 0x7, 0x1A, 0x7, 0x20, 0x5, 0xC4, 0x5, 0xCA, 0x5, 0xC4, 0x5, 0xCA, 0x5, 0xC4, 0x5, 0xCA, 0x5, 0xC4, 0x5, 0xCA, 0x5, 0xD0, 0x5, 0xD6, 0x7, 0x26, 0x7, 0x2C, 0x7, 0x26, 0x7, 0x2C, 0x7, 0x26, 0x7, 0x2C, 0x7, 0x26, 0x7, 0x2C, 0x7, 0x26, 0x7, 0x2C, 0x5, 0xE8, 0x7, 0x2C, 0x5, 0xE8, 0x7, 0x2C, 0x5, 0xE8, 0x7, 0x2C, 0x5, 0xE8, 0x7, 0x2C, 0x5, 0xEE, 0x6, 0x8A, 0x5, 0xA6, 0x7, 0x50, 0x5, 0xA6, 0x7, 0x50, 0x5, 0xA6, 0x7, 0x50, 0x5, 0xA6, 0x5, 0x70, 0x5, 0xA6, 0x5, 0x2E, 0x5, 0x5E, 0x5, 0xF4, 0x5, 0xFA, 0x6, 0x0, 0x6, 0x6, 0x6, 0x0, 0x6, 0x6, 0x6, 0x0, 0x6, 0x6, 0x6, 0x0, 0x6, 0x6, 0x6, 0x18, 0x6, 0x1E, 0x6, 0x18, 0x6, 0x1E, 0x6, 0x18, 0x6, 0x1E, 0x6, 0x1E, 0x7, 0x32, 0x7, 0x38, 0x7, 0x32, 0x7, 0x38, 0x7, 0x32, 0x7, 0x38, 0x6, 0x30, 0x6, 0x36, 0x6, 0x30, 0x6, 0x36, 0x6, 0x30, 0x6, 0x36, 0x6, 0x3C, 0x6, 0x42, 0x6, 0x3C, 0x6, 0x42, 0x6, 0x3C, 0x6, 0x42, 0x6, 0x3C, 0x6, 0x42, 0x6, 0x3C, 0x6, 0x42, 0x6, 0x48, 0x6, 0x90, 0x6, 0x48, 0x6, 0x90, 0x6, 0x48, 0x6, 0x90, 0x6, 0x4E, 0x6, 0x54, 0x6, 0x4E, 0x6, 0x54, 0x6, 0x4E, 0x6, 0x54, 0x6, 0x4E, 0x6, 0x54, 0x6, 0x4E, 0x6, 0x54, 0x6, 0x4E, 0x6, 0x54, 0x6, 0x66, 0x6, 0x96, 0x6, 0x78, 0x6, 0x9C, 0x6, 0x78, 0x6, 0x7E, 0x6, 0x84, 0x6, 0x7E, 0x6, 0x84, 0x6, 0x7E, 0x6, 0x84, 0x5, 0x9A, 0x5, 0xA0, 0x5, 0x34, 0x5, 0x3A, 0x5, 0x40, 0x5, 0x40, 0x6, 0xD2, 0x7, 0x3E, 0x7, 0x3E, 0x7, 0x3E, 0x7, 0x3E, 0x7, 0x3E, 0x7, 0x3E, 0x7, 0x3E, 0x6, 0xEA, 0x7, 0x44, 0x7, 0x44, 0x7, 0x44, 0x7, 0x44, 0x6, 0xAE, 0x6, 0xAE, 0x6, 0xAE, 0x6, 0xAE, 0x6, 0xA8, 0x7, 0x4A, 0x7, 0x4A, 0x7, 0x4A, 0x7, 0x4A, 0x7, 0x4A, 0x5, 0x58, 0x5, 0x58, 0x5, 0x58, 0x5, 0x58, 0x7, 0x14, 0x7, 0x3E, 0x7, 0x3E, 0x7, 0x3E, 0x6, 0xEA, 0x6, 0xEA, 0x6, 0xEA, 0x6, 0xEA, 0x5, 0x40, 0x7, 0x44, 0x7, 0x44, 0x7, 0x44, 0x7, 0x44, 0x7, 0x44, 0x5, 0x46, 0x5, 0x46, 0x5, 0x46, 0x5, 0x46, 0x6, 0xE4, 0x6, 0xAE, 0x6, 0xAE, 0x6, 0xAE, 0x6, 0xAE, 0x6, 0xAE, 0x6, 0xFC, 0x6, 0xB4, 0x5, 0x4C, 0x5, 0x4C, 0x5, 0x4C, 0x5, 0x4C, 0x6, 0xA8, 0x6, 0xA8, 0x6, 0xA8, 0x7, 0x4A, 0x7, 0x4A, 0x7, 0x4A, 0x7, 0x4A, 0x5, 0x52, 0x5, 0x52, 0x5, 0x52, 0x7, 0x8, 0x7, 0x8, 0x7, 0x8, 0x7, 0x8, 0x6, 0xD2, 0x6, 0xD2, 0x6, 0xD2, 0x5, 0x58, 0x5, 0x58, 0x5, 0x58, 0x5, 0x58, 0x5, 0x58, 0x5, 0x58, 0x7, 0xE, 0x7, 0x14, 0x7, 0x14, 0x6, 0xA2, 0x6, 0xA2, 0x6, 0xA2, 0x7, 0x20, 0x7, 0x2C, 0x6, 0x2A, 0x5, 0xCA, 0x6, 0x72, 0x6, 0x42, 0x5, 0x70, 0x6, 0x66, 0x6, 0x96, 0x6, 0x66, 0x6, 0x96, 0x6, 0x66, 0x6, 0x96, 0x6, 0x78, 0x6, 0x9C, 0x5, 0x5E, 0x6, 0xC, 0x6, 0x12, 0x7, 0x1A, 0x7, 0x20, 0x5, 0x64, 0x5, 0x6A, 0x7, 0x1A, 0x7, 0x20, 0x7, 0x1A, 0x7, 0x20, 0x7, 0x1A, 0x7, 0x20, 0x7, 0x1A, 0x7, 0x20, 0x7, 0x1A, 0x7, 0x20, 0x7, 0x1A, 0x7, 0x20, 0x7, 0x1A, 0x7, 0x20, 0x7, 0x1A, 0x7, 0x20, 0x7, 0x1A, 0x7, 0x20, 0x7, 0x1A, 0x7, 0x20, 0x7, 0x1A, 0x7, 0x20, 0x7, 0x1A, 0x7, 0x20, 0x7, 0x26, 0x7, 0x2C, 0x7, 0x26, 0x7, 0x2C, 0x7, 0x26, 0x7, 0x2C, 0x7, 0x26, 0x7, 0x2C, 0x7, 0x26, 0x7, 0x2C, 0x7, 0x26, 0x7, 0x2C, 0x7, 0x26, 0x7, 0x2C, 0x7, 0x26, 0x7, 0x2C, 0x5, 0xA6, 0x7, 0x50, 0x5, 0xA6, 0x5, 0x70, 0x7, 0x32, 0x7, 0x38, 0x7, 0x32, 0x7, 0x38, 0x7, 0x32, 0x7, 0x38, 0x7, 0x32, 0x7, 0x38, 0x7, 0x32, 0x7, 0x38, 0x7, 0x32, 0x7, 0x38, 0x7, 0x32, 0x7, 0x38, 0x5, 0x76, 0x5, 0x7C, 0x5, 0x76, 0x5, 0x7C, 0x5, 0x76, 0x5, 0x7C, 0x5, 0x76, 0x5, 0x7C, 0x5, 0x76, 0x5, 0x7C, 0x6, 0x4E, 0x6, 0x54, 0x6, 0x4E, 0x6, 0x54, 0x5, 0x82, 0x5, 0x88, 0x5, 0x82, 0x5, 0x88, 0x5, 0x82, 0x5, 0x88, 0x5, 0x82, 0x5, 0x88, 0x5, 0x82, 0x5, 0x88, 0x6, 0x78, 0x6, 0x9C, 0x6, 0x78, 0x6, 0x9C, 0x6, 0x78, 0x6, 0x9C, 0x5, 0x8E, 0x7, 0x1A, 0x7, 0x20, 0x5, 0xA6, 0x7, 0x50, 0x7, 0x32, 0x7, 0x38, 0x6, 0x4E, 0x6, 0x54, 0x6, 0x4E, 0x6, 0x54, 0x6, 0x4E, 0x6, 0x54, 0x6, 0x4E, 0x6, 0x54, 0x6, 0x4E, 0x6, 0x54, 0x5, 0x94, 0x7, 0x1A, 0x7, 0x20, 0x7, 0x1A, 0x7, 0x20, 0x5, 0x9A, 0x5, 0xA0, 0x5, 0xE8, 0x7, 0x2C, 0x5, 0xF4, 0x5, 0xFA, 0x7, 0x32, 0x7, 0x38, 0x7, 0x32, 0x7, 0x38, 0x5, 0xE8, 0x7, 0x2C, 0x6, 0x18, 0x6, 0x1E, 0x7, 0x1A, 0x7, 0x20, 0x7, 0x1A, 0x7, 0x20, 0x7, 0x26, 0x7, 0x2C, 0x7, 0x26, 0x7, 0x2C, 0x5, 0xA6, 0x7, 0x50, 0x5, 0xA6, 0x7, 0x50, 0x7, 0x32, 0x7, 0x38, 0x7, 0x32, 0x7, 0x38, 0x6, 0x30, 0x6, 0x36, 0x6, 0x30, 0x6, 0x36, 0x6, 0x4E, 0x6, 0x54, 0x6, 0x4E, 0x6, 0x54, 0x5, 0xEE, 0x6, 0x8A, 0x7, 0x1A, 0x7, 0x20, 0x7, 0x26, 0x7, 0x2C, 0x7, 0x32, 0x7, 0x38, 0x7, 0x32, 0x7, 0x38, 0x7, 0x32, 0x7, 0x38, 0x7, 0x32, 0x7, 0x38, 0x6, 0x78, 0x6, 0x9C, 0x5, 0xAC, 0x5, 0xB2, 0x5, 0xB8, 0x6, 0x24, 0x5, 0xBE, 0x6, 0x24, 0x5, 0xBE, 0x6, 0x24, 0x5, 0xBE, 0x5, 0xC4, 0x5, 0xCA, 0x5, 0xD0, 0x5, 0xD6, 0x5, 0xD0, 0x5, 0xD6, 0x5, 0xD0, 0x5, 0xD6, 0x5, 0xD0, 0x5, 0xD6, 0x5, 0xD0, 0x5, 0xD6, 0x7, 0x26, 0x7, 0x2C, 0x7, 0x26, 0x7, 0x2C, 0x7, 0x26, 0x7, 0x2C, 0x7, 0x26, 0x7, 0x2C, 0x7, 0x26, 0x7, 0x2C, 0x5, 0xDC, 0x5, 0xE2, 0x5, 0xE8, 0x7, 0x2C, 0x5, 0xEE, 0x6, 0x8A, 0x5, 0xEE, 0x6, 0x8A, 0x5, 0xEE, 0x6, 0x8A, 0x5, 0xEE, 0x6, 0x8A, 0x5, 0xF4, 0x5, 0xFA, 0x5, 0xF4, 0x5, 0xFA, 0x5, 0xF4, 0x5, 0xFA, 0x6, 0x0, 0x6, 0x6, 0x6, 0x0, 0x6, 0x6, 0x6, 0x0, 0x6, 0x6, 0x6, 0x0, 0x6, 0x6, 0x6, 0xC, 0x6, 0x12, 0x6, 0xC, 0x6, 0x12, 0x6, 0x18, 0x6, 0x1E, 0x6, 0x18, 0x6, 0x1E, 0x6, 0x18, 0x6, 0x1E, 0x6, 0x18, 0x6, 0x1E, 0x7, 0x32, 0x7, 0x38, 0x7, 0x32, 0x7, 0x38, 0x7, 0x32, 0x7, 0x38, 0x7, 0x32, 0x7, 0x38, 0x6, 0x24, 0x6, 0x2A, 0x6, 0x24, 0x6, 0x2A, 0x6, 0x30, 0x6, 0x36, 0x6, 0x30, 0x6, 0x36, 0x6, 0x30, 0x6, 0x36, 0x6, 0x30, 0x6, 0x36, 0x6, 0x3C, 0x6, 0x42, 0x6, 0x3C, 0x6, 0x42, 0x6, 0x3C, 0x6, 0x42, 0x6, 0x3C, 0x6, 0x42, 0x6, 0x3C, 0x6, 0x42, 0x6, 0x48, 0x6, 0x90, 0x6, 0x48, 0x6, 0x90, 0x6, 0x48, 0x6, 0x90, 0x6, 0x48, 0x6, 0x90, 0x6, 0x4E, 0x6, 0x54, 0x6, 0x4E, 0x6, 0x54, 0x6, 0x4E, 0x6, 0x54, 0x6, 0x4E, 0x6, 0x54, 0x6, 0x4E, 0x6, 0x54, 0x6, 0x5A, 0x6, 0x60, 0x6, 0x5A, 0x6, 0x60, 0x6, 0x66, 0x6, 0x96, 0x6, 0x66, 0x6, 0x96, 0x6, 0x6C, 0x6, 0x72, 0x6, 0x6C, 0x6, 0x72, 0x6, 0x78, 0x6, 0x9C, 0x6, 0x7E, 0x6, 0x84, 0x6, 0x7E, 0x6, 0x84, 0x6, 0x7E, 0x6, 0x84, 0x6, 0x8A, 0x6, 0x90, 0x6, 0x96, 0x6, 0x9C, 0x7, 0x20, 0x7, 0x3E, 0x7, 0x44, 0x6, 0xE4, 0x6, 0xAE, 0x7, 0x4A, 0x7, 0x14, 0x7, 0x3E, 0x6, 0xBA, 0x7, 0x44, 0x6, 0xA2, 0x6, 0xE4, 0x6, 0xAE, 0x6, 0xB4, 0x6, 0xC6, 0x6, 0xA8, 0x7, 0x4A, 0x6, 0xCC, 0x6, 0xD2, 0x7, 0x14, 0x6, 0xD8, 0x6, 0xAE, 0x7, 0x14, 0x7, 0x44, 0x6, 0xC0, 0x7, 0x8, 0x6, 0xAE, 0x6, 0xAE, 0x6, 0xFC, 0x6, 0xB4, 0x6, 0xF6, 0x7, 0x3E, 0x6, 0xBA, 0x6, 0xC0, 0x7, 0x44, 0x6, 0xF0, 0x6, 0xC6, 0x6, 0xE4, 0x7, 0x4A, 0x6, 0xCC, 0x6, 0xEA, 0x6, 0xD2, 0x6, 0xD8, 0x6, 0xDE, 0x6, 0xE4, 0x6, 0xEA, 0x7, 0x14, 0x6, 0xF0, 0x6, 0xF6, 0x6, 0xFC, 0x7, 0x2, 0x7, 0x4A, 0x7, 0x8, 0x7, 0xE, 0x7, 0xE, 0x7, 0xE, 0x7, 0x14, 0x7, 0x1A, 0x7, 0x20, 0x7, 0x26, 0x7, 0x2C, 0x7, 0x32, 0x7, 0x38, 0x7, 0x3E, 0x7, 0x44, 0x7, 0x4A, 0x7, 0x50, 0x7, 0x50, 0x0, 0x1, 0x3, 0x52, 0x6, 0x41, 0x0, 0x1, 0x2, 0xCB, 0x6, 0x8A, 0x0, 0x1, 0x2, 0x1C, 0x5, 0x7, 0x0, 0x1, 0x1, 0xCB, 0x5, 0x28, 0x0, 0x1, 0x2, 0x53, 0x5, 0x28, 0x0, 0x1, 0x0, 0xF5, 0x5, 0x28, 0x0, 0x1, 0x2, 0x3, 0x5, 0x28, 0x0, 0x1, 0x2, 0x40, 0x5, 0x28, 0x0, 0x1, 0x1, 0x11, 0x4, 0xE8, 0x0, 0x1, 0x2, 0xDD, 0x4, 0xF5, 0x0, 0x1, 0x2, 0xD2, 0x6, 0x45, 0x0, 0x1, 0x1, 0x7, 0x6, 0x40, 0x0, 0x1, 0x2, 0xBF, 0x6, 0x3E, 0x0, 0x1, 0x2, 0x44, 0x5, 0xA, 0x0, 0x1, 0x2, 0xC2, 0x6, 0x4C, 0x0, 0x1, 0x2, 0x42, 0x4, 0xF5, 0x0, 0x1, 0x2, 0x42, 0x5, 0xA, 0x0, 0x1, 0x2, 0x28, 0x5, 0xB, 0x0, 0x1, 0x3, 0xA7, 0x6, 0x4C, 0x0, 0x1, 0x3, 0x5C, 0x5, 0xB, 0x0, 0x1, 0x1, 0x21, 0x6, 0x48, 0x0, 0x1, 0x2, 0x33, 0x5, 0xA, 0x0, 0x1, 0x2, 0x23, 0x4, 0xF5, 0x0, 0x1, 0x2, 0x4E, 0x4, 0xF5, 0x0, 0x1, 0x2, 0x8D, 0x6, 0x47, 0x0, 0x1, 0x2, 0xAC, 0x6, 0x55, 0x0, 0x1, 0x2, 0x15, 0x5, 0xA, 0x0, 0x1, 0x2, 0x3B, 0x6, 0x48, 0x0, 0x1, 0x2, 0xD, 0x6, 0x47, 0x0, 0x1, 0x2, 0x73, 0x6, 0x4C, 0x0, 0x1, 0x1, 0xE0, 0x6, 0xBE, 0x0, 0x1, 0x2, 0xA9, 0x6, 0x55, 0x0, 0x1, 0x2, 0xCD, 0x6, 0x48, 0x0, 0x1, 0x2, 0x59, 0x6, 0x41, 0x0, 0x1, 0x2, 0x57, 0x6, 0x47, 0x0, 0x1, 0x1, 0x14, 0x6, 0x40, 0x0, 0x1, 0x1, 0x6, 0x6, 0x9B, 0x0, 0x1, 0x3, 0x7B, 0x6, 0x40, 0x0, 0x1, 0x3, 0x8C, 0x5, 0xA, 0x0, 0x1, 0x2, 0xD6, 0x6, 0x40, 0x0, 0x1, 0x2, 0x3E, 0x5, 0xA, 0x0, 0x1, 0x2, 0x5E, 0x6, 0x4C, 0x0, 0x1, 0x2, 0x88, 0x5, 0x0, 0x0, 0x1, 0x2, 0x5C, 0x6, 0x40, 0x0, 0x1, 0x1, 0x99, 0x5, 0xA, 0x0, 0x1, 0x2, 0x7A, 0x6, 0x40, 0x0, 0x1, 0x2, 0x25, 0x5, 0xA, 0x0, 0x1, 0x2, 0x6C, 0x6, 0x40, 0x0, 0x1, 0x2, 0x9B, 0x6, 0x40, 0x0, 0x1, 0x2, 0x39, 0x5, 0xA, 0x0, 0x1, 0x2, 0x99, 0x6, 0x4C, 0x0, 0x1, 0x2, 0x1, 0x5, 0x0, 0x0, 0x1, 0x3, 0x92, 0x6, 0x40, 0x0, 0x1, 0x2, 0x87, 0x6, 0x4C, 0x0, 0x1, 0x2, 0x4, 0x5, 0x0, 0x0, 0x1, 0x2, 0x73, 0x6, 0x40, 0x0, 0x1, 0x2, 0x6F, 0x6, 0x40, 0x0, 0x1, 0x2, 0x7, 0x5, 0xA, 0x0, 0x1, 0x2, 0x2, 0x6, 0x68, 0x0, 0x1, 0x1, 0x46, 0x5, 0xC4, 0x0, 0x1, 0x2, 0xF5, 0x5, 0xA, 0x0, 0x1, 0x2, 0x2, 0x5, 0xA, 0x0, 0x1, 0x2, 0x1C, 0x5, 0x28, 0x0, 0x1, 0x2, 0x70, 0x5, 0x28, 0x0, 0x1, 0x0, 0xFF, 0x5, 0x28, 0x0, 0x1, 0x2, 0x2, 0x5, 0x28, 0x0, 0x1, 0x2, 0xE, 0x5, 0x28, 0x0, 0x1, 0x2, 0xF, 0x5, 0x28, 0x0, 0x1, 0x2, 0xFE, 0x5, 0x28, 0x0, 0x1, 0x2, 0x32, 0x5, 0x28, 0x0, 0x1, 0x2, 0x1B, 0x5, 0x28, 0x0, 0x1, 0x2, 0x26, 0x5, 0x28, 0x0, 0x1, 0x2, 0xB, 0x5, 0x28, 0x0, 0x1, 0x2, 0x65, 0x5, 0x28, 0x0, 0x1, 0x2, 0x4F, 0x5, 0x28, 0x0, 0x1, 0x2, 0x71, 0x5, 0x28, 0x0, 0x1, 0x2, 0x31, 0x5, 0x28, 0x0, 0x1, 0x2, 0xDE, 0x5, 0x28, 0x0, 0x1, 0x3, 0x6E, 0x5, 0xA, 0x0, 0x1, 0x2, 0x2C, 0x5, 0x28, 0x0, 0x1, 0x3, 0x3, 0x5, 0x28, 0x0, 0x1, 0x2, 0x19, 0x5, 0x28, 0x0, 0x1, 0x2, 0xAD, 0x6, 0x40, 0x0, 0x1, 0x2, 0x37, 0x5, 0xA, 0x0, 0x1, 0x2, 0x73, 0x6, 0x48, 0x0, 0x1, 0x2, 0x2B, 0x5, 0xA, 0x0, 0x1, 0x2, 0xC4, 0x6, 0x40, 0x0, 0x1, 0x2, 0x40, 0x5, 0xA, 0x0, 0x1, 0x2, 0x51, 0x5, 0x28, 0x0, 0x1, 0x2, 0x21, 0x5, 0x28, 0x0, 0x1, 0x2, 0x5F, 0x5, 0x28, 0x0, 0x1, 0x1, 0xC, 0x5, 0x3, 0x0, 0x1, 0x0, 0xC, 0x0, 0x14, 0x0, 0x1, 0x0, 0x1E, 0x0, 0x34, 0x0, 0x1, 0x0, 0x2, 0x8, 0x9B, 0x8, 0x9E, 0x0, 0x1, 0x0, 0x3, 0x0, 0x8C, 0x0, 0x97, 0x1, 0x20, 0x0, 0x2, 0x0, 0x0, 0x0, 0xA, 0x0, 0x0, 0x0, 0x10, 0x0, 0x1, 0xFD, 0xAF, 0x0, 0xD6, 0x0, 0x1, 0xFC, 0xE7, 0x0, 0xD6, 0x0, 0x3, 0x0, 0x8, 0x0, 0xE, 0x0, 0x14, 0x0, 0x1, 0x3, 0x65, 0x5, 0x1F, 0x0, 0x1, 0x1, 0x6B, 0x5, 0x17, 0x0, 0x1, 0x1, 0x80, 0x3, 0x1A, 0x0, 0x1, 0x0, 0xC, 0x0, 0x14, 0x0, 0x1, 0x0, 0x1A, 0x0, 0x30, 0x0, 0x1, 0x0, 0x2, 0x8, 0x9C, 0x8, 0x9F, 0x0, 0x1, 0x0, 0x1, 0x0, 0xDC, 0x0, 0x2, 0x0, 0x0, 0x0, 0xA, 0x0, 0x0, 0x0, 0x10, 0x0, 0x1, 0xFD, 0x48, 0x0, 0xD6, 0x0, 0x1, 0xFC, 0x5F, 0x0, 0xD6, 0x0, 0x1, 0x0, 0x4, 0x0, 0x1, 0x2, 0x43, 0xFF, 0x89, 0x0, 0x1, 0x0, 0xC, 0x0, 0xA6, 0x0, 0x1, 0x0, 0xE0, 0x6, 0x5E, 0x0, 0x2, 0x0, 0x19, 0x1, 0xB1, 0x1, 0xC5, 0x0, 0x0, 0x1, 0xCB, 0x1, 0xCB, 0x0, 0x15, 0x1, 0xEE, 0x1, 0xF5, 0x0, 0x16, 0x1, 0xF7, 0x1, 0xF7, 0x0, 0x1E, 0x1, 0xFB, 0x1, 0xFD, 0x0, 0x1F, 0x2, 0x1, 0x2, 0x3, 0x0, 0x22, 0x2, 0x8, 0x2, 0x8, 0x0, 0x25, 0x2, 0xC, 0x2, 0xC, 0x0, 0x26, 0x2, 0x14, 0x2, 0x20, 0x0, 0x27, 0x2, 0xBA, 0x2, 0xBE, 0x0, 0x34, 0x3, 0x20, 0x3, 0x24, 0x0, 0x39, 0x3, 0x2B, 0x3, 0x2C, 0x0, 0x3E, 0x3, 0xEF, 0x3, 0xF0, 0x0, 0x40, 0x3, 0xF2, 0x3, 0xF8, 0x0, 0x42, 0x3, 0xFA, 0x3, 0xFD, 0x0, 0x49, 0x4, 0x0, 0x4, 0x24, 0x0, 0x4D, 0x4, 0x27, 0x4, 0x27, 0x0, 0x72, 0x4, 0xE2, 0x4, 0xE3, 0x0, 0x73, 0x4, 0xE5, 0x4, 0xE5, 0x0, 0x75, 0x5, 0x76, 0x5, 0x95, 0x0, 0x76, 0x6, 0x8, 0x6, 0x8, 0x0, 0x96, 0x6, 0xD, 0x6, 0x16, 0x0, 0x97, 0x6, 0x37, 0x6, 0x37, 0x0, 0xA1, 0x7, 0x2D, 0x7, 0x33, 0x0, 0xA2, 0x8, 0x8A, 0x8, 0x8E, 0x0, 0xA9, 0x0, 0x2, 0x0, 0x9, 0x1, 0xB1, 0x1, 0xC5, 0x0, 0x0, 0x1, 0xCB, 0x1, 0xCB, 0x0, 0x15, 0x1, 0xEE, 0x1, 0xF5, 0x0, 0x16, 0x1, 0xF7, 0x1, 0xF7, 0x0, 0x1E, 0x1, 0xFB, 0x1, 0xFD, 0x0, 0x1F, 0x2, 0x1, 0x2, 0x3, 0x0, 0x22, 0x2, 0x8, 0x2, 0x8, 0x0, 0x25, 0x2, 0xC, 0x2, 0xC, 0x0, 0x26, 0x8, 0x8A, 0x8, 0x8E, 0x0, 0x27, 0x0, 0xAE, 0x0, 0x0, 0x2, 0xBA, 0x0, 0x0, 0x2, 0xC0, 0x0, 0x0, 0x2, 0xC6, 0x0, 0x0, 0x5, 0x66, 0x0, 0x0, 0x2, 0xCC, 0x0, 0x0, 0x2, 0xD2, 0x0, 0x0, 0x2, 0xD8, 0x0, 0x0, 0x5, 0x78, 0x0, 0x0, 0x5, 0x72, 0x0, 0x0, 0x2, 0xDE, 0x0, 0x0, 0x2, 0xE4, 0x0, 0x0, 0x2, 0xEA, 0x0, 0x0, 0x5, 0x78, 0x0, 0x0, 0x2, 0xF0, 0x0, 0x0, 0x2, 0xF6, 0x0, 0x0, 0x2, 0xFC, 0x0, 0x0, 0x3, 0x2, 0x0, 0x0, 0x3, 0x2, 0x0, 0x0, 0x3, 0x8, 0x0, 0x0, 0x3, 0xE, 0x0, 0x0, 0x3, 0x14, 0x0, 0x0, 0x3, 0x1A, 0x0, 0x0, 0x3, 0x20, 0x0, 0x0, 0x3, 0x26, 0x0, 0x0, 0x3, 0x2C, 0x0, 0x0, 0x3, 0x32, 0x0, 0x0, 0x3, 0x38, 0x0, 0x0, 0x3, 0x3E, 0x0, 0x0, 0x3, 0x44, 0x0, 0x0, 0x3, 0x4A, 0x0, 0x0, 0x3, 0x50, 0x0, 0x0, 0x3, 0x56, 0x0, 0x0, 0x3, 0x5C, 0x0, 0x0, 0x3, 0x62, 0x0, 0x0, 0x3, 0x68, 0x0, 0x0, 0x3, 0x6E, 0x0, 0x0, 0x3, 0x74, 0x0, 0x0, 0x3, 0x7A, 0x0, 0x0, 0x3, 0x80, 0x0, 0x0, 0x4, 0xCA, 0x0, 0x0, 0x4, 0x7C, 0x0, 0x0, 0x3, 0x86, 0x0, 0x0, 0x4, 0xCA, 0x0, 0x0, 0x3, 0xC2, 0x0, 0x0, 0x3, 0x8C, 0x0, 0x0, 0x4, 0xA6, 0x0, 0x0, 0x3, 0xC2, 0x0, 0x0, 0x4, 0x3A, 0x0, 0x0, 0x3, 0x92, 0x0, 0x0, 0x3, 0x98, 0x0, 0x0, 0x4, 0x3A, 0x0, 0x0, 0x3, 0x9E, 0x0, 0x0, 0x3, 0xA4, 0x0, 0x0, 0x3, 0xAA, 0x0, 0x0, 0x3, 0xB0, 0x0, 0x0, 0x3, 0xB6, 0x0, 0x0, 0x3, 0xBC, 0x0, 0x0, 0x3, 0xC2, 0x0, 0x0, 0x5, 0x0, 0x0, 0x0, 0x3, 0xC8, 0x0, 0x0, 0x5, 0x0, 0x0, 0x0, 0x3, 0xCE, 0x0, 0x0, 0x3, 0xD4, 0x0, 0x0, 0x3, 0xDA, 0x0, 0x0, 0x3, 0xE0, 0x0, 0x0, 0x3, 0xE6, 0x0, 0x0, 0x3, 0xEC, 0x0, 0x0, 0x3, 0xF2, 0x0, 0x0, 0x3, 0xF8, 0x0, 0x0, 0x3, 0xFE, 0x0, 0x0, 0x4, 0x4, 0x0, 0x0, 0x4, 0xA, 0x0, 0x0, 0x4, 0x10, 0x0, 0x0, 0x5, 0x1E, 0x0, 0x0, 0x4, 0x16, 0x0, 0x0, 0x4, 0x1C, 0x0, 0x0, 0x4, 0x22, 0x0, 0x0, 0x4, 0x28, 0x0, 0x0, 0x4, 0x2E, 0x0, 0x0, 0x5, 0x0, 0x0, 0x0, 0x4, 0x34, 0x0, 0x0, 0x4, 0x3A, 0x0, 0x0, 0x4, 0x40, 0x0, 0x0, 0x4, 0x46, 0x0, 0x0, 0x4, 0x4C, 0x0, 0x0, 0x4, 0x4C, 0x0, 0x0, 0x4, 0x52, 0x0, 0x0, 0x5, 0x0, 0x0, 0x0, 0x4, 0x58, 0x0, 0x0, 0x5, 0x0, 0x0, 0x0, 0x4, 0x5E, 0x0, 0x0, 0x5, 0x60, 0x0, 0x0, 0x5, 0x0, 0x0, 0x0, 0x4, 0x64, 0x0, 0x0, 0x5, 0x0, 0x0, 0x0, 0x4, 0xCA, 0x0, 0x0, 0x4, 0x6A, 0x0, 0x0, 0x4, 0x70, 0x0, 0x0, 0x5, 0x0, 0x0, 0x0, 0x4, 0xF4, 0x0, 0x0, 0x4, 0xF4, 0x0, 0x0, 0x4, 0x76, 0x0, 0x0, 0x4, 0xF4, 0x0, 0x0, 0x4, 0x7C, 0x0, 0x0, 0x5, 0x60, 0x0, 0x0, 0x4, 0x82, 0x0, 0x0, 0x4, 0x88, 0x0, 0x0, 0x4, 0x8E, 0x0, 0x0, 0x4, 0x94, 0x0, 0x0, 0x4, 0xF4, 0x0, 0x0, 0x4, 0xCA, 0x0, 0x0, 0x4, 0xF4, 0x0, 0x0, 0x5, 0x0, 0x0, 0x0, 0x5, 0x60, 0x0, 0x0, 0x4, 0xF4, 0x0, 0x0, 0x4, 0x9A, 0x0, 0x0, 0x4, 0xA0, 0x0, 0x0, 0x4, 0xDC, 0x0, 0x0, 0x5, 0x0, 0x0, 0x0, 0x4, 0xCA, 0x0, 0x0, 0x4, 0xA6, 0x0, 0x0, 0x5, 0x0, 0x0, 0x0, 0x4, 0xAC, 0x0, 0x0, 0x5, 0x0, 0x0, 0x0, 0x4, 0xB2, 0x0, 0x0, 0x4, 0xB8, 0x0, 0x0, 0x5, 0x0, 0x0, 0x0, 0x5, 0x0, 0x0, 0x0, 0x5, 0x0, 0x0, 0x0, 0x5, 0x0, 0x0, 0x0, 0x4, 0xBE, 0x0, 0x0, 0x5, 0x0, 0x0, 0x0, 0x5, 0x0, 0x0, 0x0, 0x4, 0xC4, 0x0, 0x0, 0x4, 0xCA, 0x0, 0x0, 0x4, 0xD0, 0x0, 0x0, 0x5, 0x0, 0x0, 0x0, 0x4, 0xD6, 0x0, 0x0, 0x5, 0x0, 0x0, 0x0, 0x4, 0xDC, 0x0, 0x0, 0x5, 0x0, 0x0, 0x0, 0x5, 0x0, 0x0, 0x0, 0x5, 0x0, 0x0, 0x0, 0x5, 0x0, 0x0, 0x0, 0x4, 0xE2, 0x0, 0x0, 0x4, 0xE8, 0x0, 0x0, 0x4, 0xEE, 0x0, 0x0, 0x4, 0xF4, 0x0, 0x0, 0x5, 0x0, 0x0, 0x0, 0x4, 0xFA, 0x0, 0x0, 0x5, 0x0, 0x0, 0x0, 0x5, 0x6, 0x0, 0x0, 0x5, 0x60, 0x0, 0x0, 0x5, 0xC, 0x0, 0x0, 0x5, 0x12, 0x0, 0x0, 0x5, 0x18, 0x0, 0x0, 0x5, 0x1E, 0x0, 0x0, 0x5, 0x24, 0x0, 0x0, 0x5, 0x2A, 0x0, 0x0, 0x5, 0x60, 0x0, 0x0, 0x5, 0x30, 0x0, 0x0, 0x5, 0x36, 0x0, 0x0, 0x5, 0x3C, 0x0, 0x0, 0x5, 0x42, 0x0, 0x0, 0x5, 0x48, 0x0, 0x0, 0x5, 0x4E, 0x0, 0x0, 0x5, 0x54, 0x0, 0x0, 0x5, 0x5A, 0x0, 0x0, 0x5, 0x60, 0x0, 0x0, 0x5, 0x66, 0x0, 0x0, 0x5, 0x66, 0x0, 0x0, 0x5, 0x6C, 0x0, 0x0, 0x5, 0x72, 0x0, 0x0, 0x5, 0x78, 0x0, 0x1, 0xFD, 0xEA, 0x5, 0xA, 0x0, 0x1, 0xFD, 0xD5, 0x5, 0xA, 0x0, 0x1, 0xFD, 0xB5, 0x5, 0xA, 0x0, 0x1, 0xFD, 0xBB, 0x5, 0x5, 0x0, 0x1, 0xFD, 0xBA, 0x6, 0x28, 0x0, 0x1, 0xFD, 0xB9, 0x4, 0xAA, 0x0, 0x1, 0xFD, 0xA8, 0x5, 0x4, 0x0, 0x1, 0xFD, 0xBA, 0x4, 0xCF, 0x0, 0x1, 0xFD, 0x6B, 0x5, 0xA, 0x0, 0x1, 0xFD, 0xB9, 0x4, 0x9F, 0x0, 0x1, 0xFD, 0xB5, 0x4, 0x9F, 0x0, 0x1, 0xFE, 0x35, 0x5, 0xD, 0x0, 0x1, 0xFD, 0xB8, 0x4, 0xA0, 0x0, 0x1, 0xFD, 0xB7, 0x4, 0x2A, 0x0, 0x1, 0xFD, 0xA1, 0x4, 0x2A, 0x0, 0x1, 0xFD, 0xD0, 0x4, 0x2A, 0x0, 0x1, 0xFE, 0x48, 0x4, 0xEF, 0x0, 0x1, 0xFD, 0xF3, 0x4, 0x92, 0x0, 0x1, 0xFD, 0xB8, 0x4, 0x48, 0x0, 0x1, 0xFD, 0xB5, 0x5, 0xBE, 0x0, 0x1, 0x0, 0x20, 0x5, 0xA, 0x0, 0x1, 0xFF, 0x97, 0x5, 0xA, 0x0, 0x1, 0xFD, 0xC3, 0x5, 0xA, 0x0, 0x1, 0xFD, 0x9D, 0x5, 0xA, 0x0, 0x1, 0xFD, 0xB1, 0x5, 0xA, 0x0, 0x1, 0xFD, 0xB9, 0x4, 0xAD, 0x0, 0x1, 0xFD, 0xB8, 0x4, 0xE6, 0x0, 0x1, 0xFD, 0x9B, 0x4, 0x6B, 0x0, 0x1, 0xFD, 0xC4, 0x4, 0xDC, 0x0, 0x1, 0xFD, 0xC2, 0x4, 0xA7, 0x0, 0x1, 0xFE, 0x3, 0x4, 0x58, 0x0, 0x1, 0xFD, 0xB8, 0x4, 0xC3, 0x0, 0x1, 0xFD, 0x85, 0x4, 0x5F, 0x0, 0x1, 0xFD, 0xA3, 0x4, 0xC4, 0x0, 0x1, 0xFD, 0xCA, 0x4, 0x92, 0x0, 0x1, 0xFD, 0xC2, 0x4, 0x92, 0x0, 0x1, 0xFD, 0xE0, 0x4, 0x92, 0x0, 0x1, 0xFD, 0xA2, 0x4, 0x92, 0x0, 0x1, 0xFD, 0xEA, 0x4, 0x92, 0x0, 0x1, 0xFD, 0xE0, 0x4, 0xA6, 0x0, 0x1, 0xFE, 0x4D, 0x4, 0xA6, 0x0, 0x1, 0xFD, 0xF5, 0x5, 0x0, 0x0, 0x1, 0xFE, 0x20, 0x5, 0x0, 0x0, 0x1, 0xFD, 0xA7, 0x4, 0xA6, 0x0, 0x1, 0xFD, 0xC5, 0x4, 0x92, 0x0, 0x1, 0xFD, 0xBD, 0x4, 0x59, 0x0, 0x1, 0xFD, 0x9D, 0x4, 0x92, 0x0, 0x1, 0xFD, 0xC3, 0x5, 0x46, 0x0, 0x1, 0xFD, 0xCF, 0x5, 0x46, 0x0, 0x1, 0xFD, 0xAA, 0x5, 0xA, 0x0, 0x1, 0xFD, 0x87, 0x5, 0xA, 0x0, 0x1, 0xFE, 0x1B, 0x4, 0x92, 0x0, 0x1, 0xFE, 0x4D, 0x4, 0x92, 0x0, 0x1, 0xFD, 0xAB, 0x4, 0x92, 0x0, 0x1, 0xFE, 0xB, 0x4, 0x92, 0x0, 0x1, 0xFD, 0xD2, 0x4, 0x92, 0x0, 0x1, 0xFD, 0xD9, 0x4, 0x92, 0x0, 0x1, 0xFE, 0x17, 0x4, 0x92, 0x0, 0x1, 0xFD, 0xA7, 0x4, 0x92, 0x0, 0x1, 0x0, 0x1, 0x4, 0x92, 0x0, 0x1, 0xFD, 0xEB, 0x3, 0xD8, 0x0, 0x1, 0xFD, 0xB8, 0x4, 0x84, 0x0, 0x1, 0xFD, 0xBD, 0x4, 0x92, 0x0, 0x1, 0xFD, 0xC0, 0x4, 0x92, 0x0, 0x1, 0xFD, 0xC8, 0x4, 0x92, 0x0, 0x1, 0xFD, 0x99, 0x4, 0x92, 0x0, 0x1, 0xFD, 0xC2, 0x3, 0xBF, 0x0, 0x1, 0xFD, 0xBB, 0x4, 0x92, 0x0, 0x1, 0xFD, 0xBC, 0x3, 0xCC, 0x0, 0x1, 0xFD, 0xD6, 0x4, 0x92, 0x0, 0x1, 0xFD, 0xD4, 0x4, 0x92, 0x0, 0x1, 0xFD, 0xAE, 0x4, 0x92, 0x0, 0x1, 0xFD, 0xB1, 0x4, 0x92, 0x0, 0x1, 0xFD, 0xF6, 0x4, 0x92, 0x0, 0x1, 0xFD, 0xB9, 0x3, 0xE1, 0x0, 0x1, 0xFD, 0xC7, 0x4, 0x92, 0x0, 0x1, 0xFD, 0x9B, 0x4, 0x92, 0x0, 0x1, 0xFD, 0xB9, 0x3, 0xB3, 0x0, 0x1, 0xFD, 0xB4, 0x3, 0xAE, 0x0, 0x1, 0xFD, 0x8A, 0x4, 0x92, 0x0, 0x1, 0xFD, 0xAA, 0x4, 0x92, 0x0, 0x1, 0xFD, 0xAD, 0x4, 0x92, 0x0, 0x1, 0xFD, 0xBF, 0x4, 0x92, 0x0, 0x1, 0xFD, 0xBA, 0x4, 0x92, 0x0, 0x1, 0xFD, 0xCE, 0x4, 0x92, 0x0, 0x1, 0xFD, 0xB5, 0x4, 0x92, 0x0, 0x1, 0xFD, 0xBE, 0x3, 0xB0, 0x0, 0x1, 0xFD, 0xD8, 0x4, 0x92, 0x0, 0x1, 0xFD, 0xC9, 0x4, 0x92, 0x0, 0x1, 0xFD, 0x93, 0x4, 0x92, 0x0, 0x1, 0xFD, 0xA5, 0x4, 0x92, 0x0, 0x1, 0xFD, 0xC6, 0x4, 0x92, 0x0, 0x1, 0xFD, 0xB3, 0x4, 0x92, 0x0, 0x1, 0xFD, 0xF5, 0x4, 0x92, 0x0, 0x1, 0xFD, 0xF4, 0x4, 0x92, 0x0, 0x1, 0xFD, 0xB9, 0x4, 0x92, 0x0, 0x1, 0xFD, 0x94, 0x4, 0x92, 0x0, 0x1, 0xFD, 0xB8, 0x4, 0x92, 0x0, 0x1, 0xFD, 0xAC, 0x4, 0x92, 0x0, 0x1, 0xFD, 0xBC, 0x4, 0x92, 0x0, 0x1, 0xFD, 0xA6, 0x3, 0xCE, 0x0, 0x1, 0xFD, 0x84, 0x4, 0x92, 0x0, 0x1, 0xFD, 0xCC, 0x4, 0x92, 0x0, 0x1, 0xFD, 0xDC, 0x4, 0x92, 0x0, 0x1, 0xFD, 0xB6, 0x4, 0x92, 0x0, 0x1, 0xFD, 0xBE, 0x4, 0x92, 0x0, 0x1, 0xFD, 0xD7, 0x4, 0x92, 0x0, 0x1, 0xFE, 0x7A, 0x4, 0x92, 0x0, 0x1, 0x1, 0x86, 0x4, 0x92, 0x0, 0x1, 0xFD, 0xE1, 0x4, 0x92, 0x0, 0x1, 0x2, 0x1F, 0x4, 0x92, 0x0, 0x1, 0xFE, 0xC5, 0x4, 0x92, 0x0, 0x1, 0xFC, 0xAA, 0x4, 0x92, 0x0, 0x1, 0xFD, 0xB7, 0x4, 0x92, 0x0, 0x1, 0xFD, 0xD4, 0x4, 0xE8, 0x0, 0x1, 0xFD, 0xBB, 0x5, 0xA, 0x0, 0x1, 0xFD, 0x67, 0x5, 0xA, 0x0, 0x1, 0xFD, 0xB8, 0x5, 0xA, 0x0, 0x2C, 0x0, 0x5A, 0x0, 0x60, 0x0, 0x66, 0x0, 0x6C, 0x0, 0x72, 0x0, 0x78, 0x0, 0x7E, 0x0, 0x84, 0x0, 0x8A, 0x0, 0x90, 0x0, 0x96, 0x0, 0x9C, 0x0, 0xA2, 0x0, 0xA8, 0x0, 0xAE, 0x0, 0xB4, 0x0, 0xBA, 0x0, 0xC0, 0x0, 0xC6, 0x0, 0xCC, 0x0, 0xD2, 0x0, 0xD8, 0x0, 0xDE, 0x0, 0xE4, 0x0, 0xEA, 0x0, 0xF0, 0x0, 0xF6, 0x0, 0xFC, 0x1, 0x2, 0x1, 0x8, 0x1, 0xE, 0x1, 0x14, 0x1, 0x1A, 0x1, 0x20, 0x1, 0x26, 0x1, 0x2C, 0x1, 0x32, 0x1, 0x38, 0x1, 0x3E, 0x1, 0x44, 0x1, 0x44, 0x1, 0x4A, 0x1, 0x50, 0x1, 0x56, 0x0, 0x1, 0xFD, 0xEA, 0x6, 0x79, 0x0, 0x1, 0xFD, 0xD5, 0x6, 0x79, 0x0, 0x1, 0xFD, 0xB5, 0x6, 0x68, 0x0, 0x1, 0xFD, 0xD4, 0x6, 0x5F, 0x0, 0x1, 0xFD, 0xBB, 0x6, 0x37, 0x0, 0x1, 0xFD, 0xBA, 0x7, 0x44, 0x0, 0x1, 0xFD, 0xB9, 0x6, 0x4F, 0x0, 0x1, 0xFD, 0xB8, 0x6, 0x27, 0x0, 0x1, 0xFD, 0x67, 0x6, 0x37, 0x0, 0x1, 0xFD, 0xA8, 0x6, 0xC6, 0x0, 0x1, 0xFD, 0xBA, 0x6, 0x77, 0x0, 0x1, 0xFD, 0x6B, 0x6, 0x5B, 0x0, 0x1, 0xFD, 0xB8, 0x6, 0x68, 0x0, 0x1, 0xFD, 0xB8, 0x6, 0x70, 0x0, 0x1, 0xFD, 0xB5, 0x6, 0x70, 0x0, 0x1, 0xFE, 0x35, 0x6, 0x51, 0x0, 0x1, 0xFD, 0xB8, 0x7, 0xC, 0x0, 0x1, 0xFD, 0xB8, 0x6, 0x9, 0x0, 0x1, 0xFD, 0xB7, 0x6, 0x94, 0x0, 0x1, 0xFD, 0xA1, 0x6, 0x94, 0x0, 0x1, 0xFD, 0xD1, 0x6, 0x94, 0x0, 0x1, 0xFE, 0x48, 0x6, 0xA4, 0x0, 0x1, 0xFD, 0xF3, 0x7, 0x1A, 0x0, 0x1, 0xFD, 0xB8, 0x6, 0xD0, 0x0, 0x1, 0xFD, 0xB5, 0x8, 0x1, 0x0, 0x1, 0x0, 0x20, 0x6, 0x66, 0x0, 0x1, 0xFF, 0x97, 0x6, 0x66, 0x0, 0x1, 0xFD, 0xC3, 0x6, 0x41, 0x0, 0x1, 0xFD, 0x9D, 0x6, 0xBC, 0x0, 0x1, 0xFD, 0xB1, 0x6, 0xFE, 0x0, 0x1, 0xFD, 0xB9, 0x6, 0xA3, 0x0, 0x1, 0xFD, 0xB8, 0x6, 0x7B, 0x0, 0x1, 0xFD, 0x9C, 0x7, 0xBF, 0x0, 0x1, 0xFD, 0xC4, 0x6, 0x9E, 0x0, 0x1, 0xFD, 0xC3, 0x7, 0x5D, 0x0, 0x1, 0xFE, 0x3, 0x6, 0x13, 0x0, 0x1, 0xFD, 0xB8, 0x7, 0x15, 0x0, 0x1, 0xFD, 0x85, 0x6, 0x13, 0x0, 0x1, 0xFD, 0xA3, 0x6, 0xCD, 0x0, 0x1, 0xFD, 0xD4, 0x6, 0x2C, 0x0, 0x1, 0xFD, 0xBB, 0x6, 0x4, 0x0, 0x1, 0xFD, 0x67, 0x6, 0x4, 0x0, 0x1, 0xFD, 0xB8, 0x6, 0x30, 0x0, 0x1, 0x0, 0x0, 0x0, 0xA, 0x1, 0x7A, 0x2, 0xCA, 0x0, 0x4, 0x44, 0x46, 0x4C, 0x54, 0x0, 0x1A, 0x63, 0x79, 0x72, 0x6C, 0x0, 0x1A, 0x67, 0x72, 0x65, 0x6B, 0x0, 0x1A, 0x6C, 0x61, 0x74, 0x6E, 0x0, 0x4C, 0x0, 0x4, 0x0, 0x0, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x14, 0x0, 0x0, 0x0, 0x1, 0x0, 0x2, 0x0, 0x3, 0x0, 0x4, 0x0, 0x8, 0x0, 0xC, 0x0, 0xD, 0x0, 0xE, 0x0, 0xF, 0x0, 0x10, 0x0, 0x11, 0x0, 0x12, 0x0, 0x13, 0x0, 0x14, 0x0, 0x15, 0x0, 0x16, 0x0, 0x17, 0x0, 0x18, 0x0, 0x19, 0x0, 0x2E, 0x0, 0x7, 0x41, 0x5A, 0x45, 0x20, 0x0, 0xF4, 0x43, 0x52, 0x54, 0x20, 0x0, 0xF4, 0x46, 0x52, 0x41, 0x20, 0x0, 0x5E, 0x4D, 0x4F, 0x4C, 0x20, 0x0, 0xC2, 0x4E, 0x41, 0x56, 0x20, 0x0, 0x90, 0x52, 0x4F, 0x4D, 0x20, 0x0, 0xC2, 0x54, 0x52, 0x4B, 0x20, 0x0, 0xF4, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x15, 0x0, 0x0, 0x0, 0x1, 0x0, 0x2, 0x0, 0x3, 0x0, 0x4, 0x0, 0x7, 0x0, 0x8, 0x0, 0xC, 0x0, 0xD, 0x0, 0xE, 0x0, 0xF, 0x0, 0x10, 0x0, 0x11, 0x0, 0x12, 0x0, 0x13, 0x0, 0x14, 0x0, 0x15, 0x0, 0x16, 0x0, 0x17, 0x0, 0x18, 0x0, 0x19, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x16, 0x0, 0x0, 0x0, 0x1, 0x0, 0x2, 0x0, 0x3, 0x0, 0x4, 0x0, 0x6, 0x0, 0x8, 0x0, 0x9, 0x0, 0xC, 0x0, 0xD, 0x0, 0xE, 0x0, 0xF, 0x0, 0x10, 0x0, 0x11, 0x0, 0x12, 0x0, 0x13, 0x0, 0x14, 0x0, 0x15, 0x0, 0x16, 0x0, 0x17, 0x0, 0x18, 0x0, 0x19, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x16, 0x0, 0x0, 0x0, 0x1, 0x0, 0x2, 0x0, 0x3, 0x0, 0x4, 0x0, 0x6, 0x0, 0x8, 0x0, 0xB, 0x0, 0xC, 0x0, 0xD, 0x0, 0xE, 0x0, 0xF, 0x0, 0x10, 0x0, 0x11, 0x0, 0x12, 0x0, 0x13, 0x0, 0x14, 0x0, 0x15, 0x0, 0x16, 0x0, 0x17, 0x0, 0x18, 0x0, 0x19, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x16, 0x0, 0x0, 0x0, 0x1, 0x0, 0x2, 0x0, 0x3, 0x0, 0x4, 0x0, 0x6, 0x0, 0x8, 0x0, 0xA, 0x0, 0xC, 0x0, 0xD, 0x0, 0xE, 0x0, 0xF, 0x0, 0x10, 0x0, 0x11, 0x0, 0x12, 0x0, 0x13, 0x0, 0x14, 0x0, 0x15, 0x0, 0x16, 0x0, 0x17, 0x0, 0x18, 0x0, 0x19, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x15, 0x0, 0x0, 0x0, 0x1, 0x0, 0x2, 0x0, 0x3, 0x0, 0x4, 0x0, 0x5, 0x0, 0x8, 0x0, 0xC, 0x0, 0xD, 0x0, 0xE, 0x0, 0xF, 0x0, 0x10, 0x0, 0x11, 0x0, 0x12, 0x0, 0x13, 0x0, 0x14, 0x0, 0x15, 0x0, 0x16, 0x0, 0x17, 0x0, 0x18, 0x0, 0x19, 0x0, 0x1A, 0x63, 0x32, 0x73, 0x63, 0x0, 0x9E, 0x63, 0x63, 0x6D, 0x70, 0x0, 0xA4, 0x64, 0x6C, 0x69, 0x67, 0x0, 0xB4, 0x64, 0x6E, 0x6F, 0x6D, 0x0, 0xBA, 0x66, 0x72, 0x61, 0x63, 0x0, 0xC0, 0x6C, 0x69, 0x67, 0x61, 0x0, 0xCA, 0x6C, 0x69, 0x67, 0x61, 0x0, 0xD0, 0x6C, 0x69, 0x67, 0x61, 0x0, 0xDC, 0x6C, 0x6E, 0x75, 0x6D, 0x0, 0xE4, 0x6C, 0x6F, 0x63, 0x6C, 0x0, 0xEA, 0x6C, 0x6F, 0x63, 0x6C, 0x0, 0xF0, 0x6C, 0x6F, 0x63, 0x6C, 0x0, 0xF6, 0x6E, 0x75, 0x6D, 0x72, 0x0, 0xFC, 0x6F, 0x6E, 0x75, 0x6D, 0x1, 0x2, 0x70, 0x6E, 0x75, 0x6D, 0x1, 0x8, 0x73, 0x61, 0x6C, 0x74, 0x1, 0xE, 0x73, 0x6D, 0x63, 0x70, 0x1, 0x14, 0x73, 0x73, 0x30, 0x31, 0x1, 0x1A, 0x73, 0x73, 0x30, 0x32, 0x1, 0x20, 0x73, 0x73, 0x30, 0x33, 0x1, 0x26, 0x73, 0x73, 0x30, 0x34, 0x1, 0x2C, 0x73, 0x73, 0x30, 0x35, 0x1, 0x32, 0x73, 0x73, 0x30, 0x36, 0x1, 0x38, 0x73, 0x73, 0x30, 0x37, 0x1, 0x3E, 0x74, 0x6E, 0x75, 0x6D, 0x1, 0x44, 0x75, 0x6E, 0x69, 0x63, 0x1, 0x4A, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x6, 0x0, 0x3, 0x0, 0x4, 0x0, 0x6, 0x0, 0x7, 0x0, 0x8, 0x0, 0xC, 0x0, 0x0, 0x0, 0x1, 0x0, 0x12, 0x0, 0x0, 0x0, 0x1, 0x0, 0x21, 0x0, 0x0, 0x0, 0x3, 0x0, 0x1F, 0x0, 0x20, 0x0, 0x22, 0x0, 0x0, 0x0, 0x1, 0x0, 0x11, 0x0, 0x0, 0x0, 0x4, 0x0, 0x10, 0x0, 0x11, 0x0, 0x10, 0x0, 0x11, 0x0, 0x0, 0x0, 0x2, 0x0, 0x10, 0x0, 0x11, 0x0, 0x0, 0x0, 0x1, 0x0, 0x1E, 0x0, 0x0, 0x0, 0x1, 0x0, 0xF, 0x0, 0x0, 0x0, 0x1, 0x0, 0xD, 0x0, 0x0, 0x0, 0x1, 0x0, 0xE, 0x0, 0x0, 0x0, 0x1, 0x0, 0x22, 0x0, 0x0, 0x0, 0x1, 0x0, 0x1B, 0x0, 0x0, 0x0, 0x1, 0x0, 0x1C, 0x0, 0x0, 0x0, 0x1, 0x0, 0x13, 0x0, 0x0, 0x0, 0x1, 0x0, 0x1, 0x0, 0x0, 0x0, 0x1, 0x0, 0x14, 0x0, 0x0, 0x0, 0x1, 0x0, 0x15, 0x0, 0x0, 0x0, 0x1, 0x0, 0x16, 0x0, 0x0, 0x0, 0x1, 0x0, 0x17, 0x0, 0x0, 0x0, 0x1, 0x0, 0x18, 0x0, 0x0, 0x0, 0x1, 0x0, 0x19, 0x0, 0x0, 0x0, 0x1, 0x0, 0x1A, 0x0, 0x0, 0x0, 0x1, 0x0, 0x1D, 0x0, 0x0, 0x0, 0x1, 0x0, 0x2, 0x0, 0x23, 0x0, 0x48, 0x4, 0x5A, 0x8, 0x24, 0xA, 0xBE, 0xB, 0x9C, 0xE, 0x10, 0xE, 0x6A, 0x1D, 0x90, 0x23, 0xC, 0x24, 0x36, 0x24, 0x4C, 0x24, 0x62, 0x24, 0x82, 0x24, 0xE8, 0x24, 0xFE, 0x25, 0x34, 0x25, 0x48, 0x25, 0x6C, 0x25, 0x96, 0x25, 0xD2, 0x25, 0xEC, 0x26, 0x0, 0x26, 0x14, 0x26, 0x28, 0x26, 0x3A, 0x26, 0x54, 0x26, 0x96, 0x26, 0xB4, 0x27, 0x6, 0x27, 0x4C, 0x27, 0xAE, 0x28, 0xC, 0x28, 0x20, 0x28, 0x50, 0x28, 0x72, 0x0, 0x1, 0x0, 0x0, 0x0, 0x1, 0x0, 0x8, 0x0, 0x2, 0x2, 0x6, 0x1, 0x0, 0x7, 0x63, 0x8, 0xB2, 0x7, 0x4D, 0x7, 0x4C, 0x7, 0x4B, 0x7, 0x4A, 0x7, 0x49, 0x7, 0x48, 0x7, 0x47, 0x7, 0x46, 0x7, 0x45, 0x7, 0x44, 0x7, 0xB1, 0x7, 0xB0, 0x7, 0xAF, 0x7, 0xAE, 0x7, 0xA6, 0x7, 0x62, 0x7, 0x61, 0x7, 0x60, 0x7, 0x5F, 0x7, 0x5E, 0x7, 0x5D, 0x7, 0x5C, 0x7, 0x5B, 0x7, 0x5A, 0x7, 0x59, 0x7, 0x58, 0x7, 0x57, 0x7, 0x56, 0x7, 0x55, 0x7, 0x54, 0x7, 0x53, 0x7, 0x52, 0x7, 0x51, 0x7, 0x50, 0x7, 0x4F, 0x7, 0x4E, 0x7, 0x64, 0x7, 0x65, 0x8, 0xB4, 0x8, 0xB6, 0x8, 0xB5, 0x8, 0xB7, 0x8, 0xB3, 0x8, 0xB8, 0x7, 0xDC, 0x7, 0x66, 0x7, 0x67, 0x7, 0x68, 0x7, 0x69, 0x7, 0x6A, 0x7, 0x6B, 0x7, 0x6C, 0x7, 0x6D, 0x7, 0x6E, 0x7, 0x6F, 0x7, 0x70, 0x7, 0x71, 0x7, 0x72, 0x7, 0x73, 0x7, 0x74, 0x7, 0x75, 0x7, 0x76, 0x7, 0x77, 0x7, 0x78, 0x7, 0x79, 0x7, 0x7A, 0x7, 0x7C, 0x7, 0x7D, 0xC, 0xEA, 0x7, 0x7E, 0x7, 0x7F, 0x7, 0x80, 0x7, 0x81, 0x7, 0x82, 0x7, 0x83, 0x7, 0x84, 0x7, 0x85, 0x7, 0x86, 0x7, 0x87, 0x7, 0xC4, 0x7, 0x89, 0x7, 0x8A, 0x7, 0x8B, 0x7, 0x8C, 0xC, 0xE4, 0x7, 0x8D, 0x7, 0x8F, 0x7, 0x90, 0x7, 0x91, 0x7, 0x92, 0x7, 0x93, 0x7, 0x94, 0x7, 0x95, 0x7, 0xFE, 0x7, 0x97, 0x7, 0x98, 0x7, 0x9A, 0x7, 0x9C, 0x7, 0x9B, 0x7, 0x99, 0x9, 0x7D, 0x9, 0x7E, 0x9, 0x7F, 0x9, 0x80, 0x9, 0x81, 0x9, 0x82, 0x9, 0x83, 0x9, 0x84, 0x9, 0x85, 0x9, 0x86, 0x9, 0x87, 0x9, 0x88, 0x9, 0x89, 0x9, 0x8A, 0x9, 0x8B, 0x9, 0x8C, 0x9, 0x8D, 0x9, 0x8E, 0x9, 0x8F, 0x9, 0x90, 0x9, 0x91, 0x9, 0x92, 0x9, 0x93, 0x9, 0x94, 0x9, 0x95, 0x9, 0x96, 0x9, 0x97, 0x9, 0x98, 0x9, 0x99, 0x9, 0x9A, 0x9, 0x9B, 0x9, 0x9C, 0x9, 0x9D, 0x9, 0x9E, 0x9, 0x9F, 0x9, 0xA0, 0x9, 0xA1, 0x9, 0xA2, 0x9, 0xA3, 0x9, 0xA4, 0x9, 0xA5, 0x9, 0xA6, 0x9, 0xA7, 0x9, 0xA8, 0x9, 0xA9, 0x9, 0xAA, 0x9, 0xAB, 0x9, 0xAC, 0x9, 0xAD, 0x9, 0xAE, 0x9, 0xAF, 0x9, 0xB0, 0x9, 0xB1, 0xC, 0xEC, 0x9, 0xB2, 0x9, 0xB3, 0x9, 0xB4, 0x9, 0xB5, 0x9, 0xB6, 0x9, 0xB7, 0x9, 0xB8, 0x9, 0xB9, 0x9, 0xBA, 0x9, 0xBB, 0x9, 0xBC, 0x9, 0xBD, 0x9, 0xBF, 0x9, 0xC0, 0x9, 0xC1, 0x9, 0xC2, 0x9, 0xC3, 0x9, 0xC4, 0xC, 0xEF, 0x9, 0xC5, 0x9, 0xC6, 0x9, 0xC8, 0x9, 0xC7, 0x9, 0xC9, 0x9, 0xCA, 0x9, 0xCB, 0x9, 0xCC, 0x9, 0xCD, 0x9, 0xCE, 0x9, 0xCF, 0x9, 0xD0, 0x9, 0xD1, 0x9, 0xD2, 0x9, 0xD3, 0x9, 0xD4, 0xC, 0xED, 0xC, 0xEE, 0xC, 0xB7, 0xC, 0xB8, 0xC, 0xB9, 0xC, 0xBA, 0xC, 0xBB, 0xC, 0xBC, 0xC, 0xBD, 0xC, 0xBE, 0xC, 0xBF, 0xC, 0xC0, 0xC, 0xC1, 0xC, 0xC2, 0xC, 0xC3, 0xC, 0xC4, 0xC, 0xC5, 0xC, 0xC6, 0xC, 0xC7, 0xC, 0xC8, 0xC, 0xC9, 0xC, 0xCA, 0xC, 0xCB, 0xC, 0xCC, 0xC, 0xCD, 0xC, 0xCE, 0xC, 0xCF, 0xC, 0xD0, 0xC, 0xD1, 0xC, 0xD2, 0xC, 0xD3, 0x7, 0x7B, 0xC, 0xD4, 0xC, 0xD5, 0xC, 0xD6, 0xC, 0xD7, 0xC, 0xD8, 0xC, 0xD9, 0xC, 0xDA, 0xC, 0xDB, 0xC, 0xDC, 0xC, 0xDD, 0xC, 0xDE, 0xC, 0xDF, 0xC, 0xE0, 0xC, 0xE1, 0xC, 0xE2, 0xC, 0xF0, 0xC, 0xF1, 0xC, 0xF2, 0xC, 0xF3, 0xC, 0xE3, 0xC, 0xE5, 0xC, 0xE6, 0xC, 0xE8, 0x7, 0x96, 0xC, 0xE9, 0xC, 0xE7, 0x7, 0x88, 0x7, 0x8E, 0x9, 0xBE, 0xC, 0xEB, 0xC, 0xFA, 0xC, 0xFB, 0xC, 0xFC, 0x0, 0x1, 0x1, 0x0, 0x0, 0x9, 0x0, 0xB, 0x0, 0x15, 0x0, 0x16, 0x0, 0x17, 0x0, 0x18, 0x0, 0x19, 0x0, 0x1A, 0x0, 0x1B, 0x0, 0x1C, 0x0, 0x1D, 0x0, 0x1E, 0x0, 0x26, 0x0, 0x27, 0x0, 0x28, 0x0, 0x29, 0x0, 0x2A, 0x0, 0x2B, 0x0, 0x2C, 0x0, 0x2D, 0x0, 0x2E, 0x0, 0x2F, 0x0, 0x30, 0x0, 0x31, 0x0, 0x32, 0x0, 0x33, 0x0, 0x34, 0x0, 0x35, 0x0, 0x36, 0x0, 0x37, 0x0, 0x38, 0x0, 0x39, 0x0, 0x3A, 0x0, 0x3B, 0x0, 0x3C, 0x0, 0x3D, 0x0, 0x3E, 0x0, 0x3F, 0x0, 0x66, 0x0, 0x68, 0x0, 0x82, 0x0, 0x84, 0x0, 0x85, 0x0, 0x8D, 0x0, 0x90, 0x0, 0x92, 0x0, 0x94, 0x2, 0x30, 0x2, 0x31, 0x2, 0x32, 0x2, 0x33, 0x2, 0x34, 0x2, 0x35, 0x2, 0x36, 0x2, 0x37, 0x2, 0x38, 0x2, 0x39, 0x2, 0x68, 0x2, 0x69, 0x2, 0x6A, 0x2, 0x6B, 0x2, 0x6C, 0x2, 0x6D, 0x2, 0x6E, 0x2, 0x6F, 0x2, 0x70, 0x2, 0x71, 0x2, 0x72, 0x2, 0x73, 0x2, 0x74, 0x2, 0x75, 0x2, 0x76, 0x2, 0x77, 0x2, 0x78, 0x2, 0x79, 0x2, 0x7A, 0x2, 0x7B, 0x2, 0x7C, 0x2, 0x7D, 0x2, 0x7E, 0x2, 0x7F, 0x2, 0xC6, 0x2, 0xCA, 0x2, 0xCC, 0x2, 0xCE, 0x2, 0xD0, 0x2, 0xD2, 0x2, 0xD8, 0x2, 0xDA, 0x2, 0xDC, 0x2, 0xE0, 0x2, 0xE2, 0x2, 0xE3, 0x2, 0xEF, 0x2, 0xF0, 0x4, 0x32, 0x4, 0xC8, 0x4, 0xCF, 0x4, 0xD7, 0x4, 0xDB, 0x4, 0xE0, 0x4, 0xED, 0x8, 0xC8, 0x8, 0xC9, 0x8, 0xCB, 0x8, 0xCD, 0x8, 0xCE, 0x8, 0xCF, 0x8, 0xD0, 0x8, 0xD1, 0x8, 0xD2, 0x8, 0xD3, 0x8, 0xD4, 0x8, 0xD5, 0x8, 0xD6, 0x8, 0xD7, 0x8, 0xD8, 0x8, 0xD9, 0x8, 0xDA, 0x8, 0xDB, 0x8, 0xDC, 0x8, 0xDD, 0x8, 0xDE, 0x8, 0xDF, 0x8, 0xE0, 0x8, 0xE1, 0x8, 0xE2, 0x8, 0xE3, 0x8, 0xE4, 0x8, 0xE5, 0x8, 0xE6, 0x8, 0xE7, 0x9, 0x4, 0x9, 0x6, 0x9, 0x8, 0x9, 0xA, 0x9, 0xC, 0x9, 0xE, 0x9, 0x10, 0x9, 0x12, 0x9, 0x14, 0x9, 0x16, 0x9, 0x18, 0x9, 0x1A, 0x9, 0x1C, 0x9, 0x1E, 0x9, 0x20, 0x9, 0x22, 0x9, 0x24, 0x9, 0x26, 0x9, 0x28, 0x9, 0x2A, 0x9, 0x2C, 0x9, 0x2E, 0x9, 0x30, 0x9, 0x31, 0x9, 0x33, 0x9, 0x35, 0x9, 0x37, 0x9, 0x39, 0x9, 0x3B, 0x9, 0x3D, 0x9, 0x3F, 0x9, 0x41, 0x9, 0x43, 0x9, 0x46, 0x9, 0x48, 0x9, 0x4A, 0x9, 0x4C, 0x9, 0x4E, 0x9, 0x50, 0x9, 0x52, 0x9, 0x54, 0x9, 0x56, 0x9, 0x58, 0x9, 0x5A, 0x9, 0x5C, 0x9, 0x5E, 0x9, 0x60, 0x9, 0x62, 0x9, 0x64, 0x9, 0x66, 0x9, 0x68, 0x9, 0x6A, 0x9, 0x6C, 0x9, 0x6E, 0x9, 0x70, 0x9, 0x72, 0x9, 0x73, 0x9, 0x75, 0x9, 0x77, 0x9, 0x79, 0x9, 0x7B, 0x9, 0xD5, 0x9, 0xD6, 0x9, 0xD7, 0x9, 0xD8, 0x9, 0xD9, 0x9, 0xDA, 0x9, 0xDB, 0x9, 0xDD, 0x9, 0xDE, 0x9, 0xDF, 0x9, 0xE0, 0x9, 0xE1, 0x9, 0xE2, 0x9, 0xE3, 0x9, 0xE4, 0x9, 0xE5, 0x9, 0xE6, 0x9, 0xE7, 0x9, 0xE8, 0x9, 0xE9, 0x9, 0xEA, 0x9, 0xEB, 0x9, 0xEC, 0x9, 0xFC, 0x9, 0xFD, 0x9, 0xFE, 0x9, 0xFF, 0xA, 0x0, 0xA, 0x1, 0xA, 0x2, 0xA, 0x3, 0xA, 0x4, 0xA, 0x5, 0xA, 0x6, 0xA, 0x7, 0xA, 0x8, 0xA, 0x9, 0xA, 0xA, 0xA, 0xB, 0xA, 0xC, 0xA, 0xD, 0xA, 0xE, 0xA, 0xF, 0xA, 0x10, 0xA, 0x11, 0xA, 0x22, 0xA, 0x24, 0xA, 0x26, 0xA, 0x28, 0xA, 0x3D, 0xA, 0x3F, 0xA, 0x41, 0xA, 0x56, 0xA, 0x5C, 0xA, 0x63, 0xA, 0xCD, 0xA, 0xD2, 0xA, 0xD6, 0xB, 0x9, 0xB, 0x3F, 0xC, 0xF4, 0xC, 0xF6, 0xC, 0xF8, 0x0, 0x1, 0x0, 0x0, 0x0, 0x1, 0x0, 0x8, 0x0, 0x2, 0x1, 0xE2, 0x0, 0xEE, 0x8, 0xB2, 0x7, 0xB1, 0x7, 0xB0, 0x7, 0xAF, 0x7, 0xAE, 0x7, 0xA6, 0x7, 0x62, 0x7, 0x61, 0x7, 0x60, 0x7, 0x5F, 0x7, 0x5E, 0x7, 0x5D, 0x7, 0x5C, 0x7, 0x5B, 0x7, 0x5A, 0x7, 0x59, 0x7, 0x58, 0x7, 0x57, 0x7, 0x56, 0x7, 0x55, 0x7, 0x54, 0x7, 0x53, 0x7, 0x52, 0x7, 0x51, 0x7, 0x50, 0x7, 0x4F, 0x7, 0x4E, 0x7, 0xFE, 0x8, 0xB4, 0x9, 0x7E, 0x8, 0xB6, 0x8, 0xB5, 0x9, 0x7D, 0x7, 0x5F, 0x8, 0xB3, 0x8, 0xB8, 0x7, 0xDC, 0xC, 0xBE, 0xC, 0xBF, 0x7, 0x66, 0x7, 0x67, 0xC, 0xC0, 0xC, 0xC1, 0xC, 0xC2, 0x7, 0x68, 0xC, 0xC3, 0x7, 0x69, 0x7, 0x6A, 0x7, 0x6B, 0xC, 0xC8, 0x7, 0x6C, 0x7, 0x6C, 0xC, 0xC9, 0xC, 0xCA, 0x7, 0x6D, 0x7, 0x6E, 0x7, 0x6F, 0x7, 0x76, 0xC, 0xD7, 0xC, 0xD8, 0x7, 0x77, 0x7, 0x78, 0x7, 0x79, 0x7, 0x7A, 0x7, 0x7B, 0x7, 0x7C, 0xC, 0xDB, 0xC, 0xDC, 0xC, 0xDE, 0xC, 0xE1, 0xC, 0xEA, 0x7, 0x7E, 0x7, 0x7F, 0x7, 0x80, 0x7, 0x81, 0x7, 0x82, 0x7, 0x83, 0x7, 0x84, 0x7, 0x85, 0x7, 0x86, 0x7, 0x87, 0x7, 0x70, 0x7, 0x71, 0x7, 0x72, 0x7, 0x73, 0x7, 0x74, 0x7, 0x75, 0x7, 0xC4, 0x7, 0x89, 0x7, 0x8A, 0x7, 0x8B, 0x7, 0x8C, 0xC, 0xE4, 0x7, 0x8D, 0x7, 0x8F, 0x7, 0x90, 0x7, 0x91, 0x7, 0x93, 0x7, 0x95, 0x8, 0xB7, 0x9, 0x7F, 0x9, 0x80, 0x9, 0x81, 0x9, 0x82, 0x9, 0x83, 0x9, 0x84, 0x9, 0x85, 0x9, 0x86, 0x9, 0x87, 0x9, 0x88, 0x9, 0x89, 0x9, 0x8A, 0x9, 0x8B, 0x9, 0x8C, 0x9, 0x8D, 0x9, 0x8E, 0x9, 0x8F, 0x9, 0x90, 0x9, 0x91, 0x9, 0x92, 0x9, 0x93, 0x9, 0x94, 0x9, 0x95, 0x9, 0x96, 0x9, 0x97, 0x9, 0x98, 0x9, 0x99, 0x9, 0x9A, 0x9, 0xD1, 0x9, 0x9B, 0x9, 0x9C, 0x9, 0x9D, 0x9, 0x9E, 0x9, 0x9F, 0x9, 0xA0, 0x9, 0xA1, 0x9, 0xA2, 0x9, 0xA3, 0x9, 0xA4, 0x9, 0xA5, 0x9, 0xA6, 0x9, 0xA7, 0x9, 0xA8, 0x9, 0xA9, 0x9, 0xAA, 0x9, 0xAB, 0x9, 0xAC, 0x9, 0xAD, 0x9, 0xAE, 0x9, 0xAF, 0x9, 0xB0, 0xC, 0xEC, 0x9, 0xB2, 0x9, 0xB3, 0x9, 0xB4, 0x9, 0xB5, 0x9, 0xB6, 0x9, 0xB7, 0x9, 0xB8, 0x9, 0xB9, 0x9, 0xBA, 0x9, 0xBB, 0x9, 0xBC, 0x9, 0xBD, 0x9, 0xBF, 0x9, 0xC0, 0x9, 0xC1, 0x9, 0xC2, 0x9, 0xC3, 0x9, 0xC4, 0xC, 0xEF, 0x9, 0xC5, 0x9, 0xC6, 0x9, 0xC8, 0x9, 0xC7, 0x9, 0xC9, 0x9, 0xCA, 0x9, 0xCB, 0x9, 0xCC, 0x9, 0xCD, 0x9, 0xCE, 0x9, 0xCF, 0x9, 0xD0, 0x9, 0xD2, 0x9, 0xD3, 0x9, 0xD4, 0xC, 0xED, 0xC, 0xEE, 0xC, 0xB7, 0xC, 0xB8, 0xC, 0xB9, 0xC, 0xBA, 0xC, 0xC4, 0xC, 0xC7, 0xC, 0xC5, 0xC, 0xC6, 0xC, 0xCB, 0xC, 0xCC, 0xC, 0xCD, 0xC, 0xBB, 0xC, 0xBC, 0xC, 0xBD, 0xC, 0xD6, 0xC, 0xD9, 0xC, 0xDA, 0xC, 0xDD, 0xC, 0xDF, 0xC, 0xE0, 0x7, 0x7D, 0xC, 0xE2, 0xC, 0xCE, 0xC, 0xCF, 0xC, 0xD0, 0xC, 0xD1, 0xC, 0xD2, 0xC, 0xD3, 0xC, 0xD4, 0xC, 0xD5, 0xC, 0xF0, 0xC, 0xF1, 0xC, 0xF2, 0xC, 0xF3, 0xC, 0xE3, 0xC, 0xE5, 0xC, 0xE6, 0x7, 0x94, 0xC, 0xE8, 0x7, 0x96, 0xC, 0xE9, 0xC, 0xE7, 0x7, 0x92, 0x7, 0x88, 0x7, 0x8E, 0x9, 0xBE, 0xC, 0xEB, 0xC, 0xFA, 0xC, 0xFB, 0xC, 0xFC, 0x0, 0x1, 0x0, 0xEE, 0x0, 0xB, 0x0, 0x46, 0x0, 0x47, 0x0, 0x48, 0x0, 0x49, 0x0, 0x4A, 0x0, 0x4B, 0x0, 0x4C, 0x0, 0x4D, 0x0, 0x4E, 0x0, 0x4F, 0x0, 0x50, 0x0, 0x51, 0x0, 0x52, 0x0, 0x53, 0x0, 0x54, 0x0, 0x55, 0x0, 0x56, 0x0, 0x57, 0x0, 0x58, 0x0, 0x59, 0x0, 0x5A, 0x0, 0x5B, 0x0, 0x5C, 0x0, 0x5D, 0x0, 0x5E, 0x0, 0x5F, 0x0, 0x86, 0x0, 0x87, 0x0, 0x88, 0x0, 0x8A, 0x0, 0x8B, 0x0, 0x8C, 0x0, 0x8E, 0x0, 0x91, 0x0, 0x93, 0x0, 0x95, 0x2, 0x3A, 0x2, 0x3B, 0x2, 0x3C, 0x2, 0x3D, 0x2, 0x3E, 0x2, 0x3F, 0x2, 0x40, 0x2, 0x41, 0x2, 0x42, 0x2, 0x43, 0x2, 0x44, 0x2, 0x45, 0x2, 0x46, 0x2, 0x47, 0x2, 0x48, 0x2, 0x49, 0x2, 0x4A, 0x2, 0x4B, 0x2, 0x4C, 0x2, 0x4D, 0x2, 0x80, 0x2, 0x81, 0x2, 0x82, 0x2, 0x83, 0x2, 0x84, 0x2, 0x85, 0x2, 0x86, 0x2, 0x87, 0x2, 0x88, 0x2, 0x89, 0x2, 0x8A, 0x2, 0x8B, 0x2, 0x8C, 0x2, 0x8D, 0x2, 0x8E, 0x2, 0x8F, 0x2, 0x90, 0x2, 0x91, 0x2, 0x92, 0x2, 0x93, 0x2, 0x94, 0x2, 0x95, 0x2, 0x96, 0x2, 0x97, 0x2, 0x98, 0x2, 0x99, 0x2, 0x9A, 0x2, 0x9B, 0x2, 0x9C, 0x2, 0x9D, 0x2, 0xC7, 0x2, 0xCB, 0x2, 0xCD, 0x2, 0xCF, 0x2, 0xD1, 0x2, 0xD3, 0x2, 0xD9, 0x2, 0xDB, 0x2, 0xDD, 0x2, 0xE1, 0x2, 0xE4, 0x2, 0xF1, 0x8, 0xCA, 0x8, 0xCC, 0x8, 0xE8, 0x8, 0xE9, 0x8, 0xEA, 0x8, 0xEB, 0x8, 0xEC, 0x8, 0xED, 0x8, 0xEE, 0x8, 0xEF, 0x8, 0xF0, 0x8, 0xF1, 0x8, 0xF2, 0x8, 0xF3, 0x8, 0xF4, 0x8, 0xF5, 0x8, 0xF6, 0x8, 0xF7, 0x8, 0xF8, 0x8, 0xF9, 0x8, 0xFA, 0x8, 0xFB, 0x8, 0xFC, 0x8, 0xFD, 0x8, 0xFE, 0x8, 0xFF, 0x9, 0x0, 0x9, 0x1, 0x9, 0x2, 0x9, 0x3, 0x9, 0x5, 0x9, 0x7, 0x9, 0x9, 0x9, 0xB, 0x9, 0xD, 0x9, 0xF, 0x9, 0x11, 0x9, 0x13, 0x9, 0x15, 0x9, 0x17, 0x9, 0x19, 0x9, 0x1B, 0x9, 0x1D, 0x9, 0x1F, 0x9, 0x21, 0x9, 0x23, 0x9, 0x25, 0x9, 0x27, 0x9, 0x29, 0x9, 0x2B, 0x9, 0x2D, 0x9, 0x2F, 0x9, 0x32, 0x9, 0x34, 0x9, 0x36, 0x9, 0x38, 0x9, 0x3A, 0x9, 0x3C, 0x9, 0x3E, 0x9, 0x40, 0x9, 0x42, 0x9, 0x44, 0x9, 0x47, 0x9, 0x49, 0x9, 0x4B, 0x9, 0x4D, 0x9, 0x4F, 0x9, 0x51, 0x9, 0x53, 0x9, 0x55, 0x9, 0x57, 0x9, 0x59, 0x9, 0x5B, 0x9, 0x5D, 0x9, 0x5F, 0x9, 0x61, 0x9, 0x63, 0x9, 0x65, 0x9, 0x67, 0x9, 0x69, 0x9, 0x6B, 0x9, 0x6D, 0x9, 0x6F, 0x9, 0x71, 0x9, 0x74, 0x9, 0x76, 0x9, 0x78, 0x9, 0x7A, 0x9, 0x7C, 0x9, 0xED, 0x9, 0xEE, 0x9, 0xEF, 0x9, 0xF0, 0x9, 0xF2, 0x9, 0xF3, 0x9, 0xF4, 0x9, 0xF5, 0x9, 0xF6, 0x9, 0xF7, 0x9, 0xF8, 0x9, 0xF9, 0x9, 0xFA, 0x9, 0xFB, 0xA, 0x12, 0xA, 0x13, 0xA, 0x14, 0xA, 0x15, 0xA, 0x16, 0xA, 0x17, 0xA, 0x18, 0xA, 0x19, 0xA, 0x1A, 0xA, 0x1B, 0xA, 0x1C, 0xA, 0x1D, 0xA, 0x1E, 0xA, 0x1F, 0xA, 0x20, 0xA, 0x21, 0xA, 0x23, 0xA, 0x25, 0xA, 0x27, 0xA, 0x29, 0xA, 0x3E, 0xA, 0x40, 0xA, 0x42, 0xA, 0x50, 0xA, 0x57, 0xA, 0x5D, 0xA, 0x64, 0xA, 0xCE, 0xA, 0xCF, 0xA, 0xD3, 0xA, 0xD7, 0xB, 0xA, 0xB, 0x43, 0xC, 0xF5, 0xC, 0xF7, 0xC, 0xF9, 0x0, 0x1, 0x0, 0x0, 0x0, 0x1, 0x0, 0x8, 0x0, 0x2, 0x1, 0x4A, 0x0, 0xA2, 0x7, 0xE0, 0x7, 0xE1, 0x7, 0xE2, 0x7, 0xDE, 0x7, 0xDF, 0x7, 0xE0, 0x0, 0x27, 0x0, 0x28, 0x0, 0x29, 0x7, 0xE1, 0x0, 0x2B, 0x0, 0x2C, 0x0, 0x2D, 0x0, 0x2E, 0x0, 0x2F, 0x0, 0x30, 0x0, 0x31, 0x7, 0xE2, 0x7, 0xDE, 0x0, 0x34, 0x0, 0x35, 0x0, 0x36, 0x0, 0x37, 0x0, 0x38, 0x0, 0x39, 0x7, 0xDF, 0x0, 0x3B, 0x0, 0x3C, 0x0, 0x3D, 0x0, 0x3E, 0x0, 0x3F, 0x0, 0x82, 0x8, 0xC9, 0x0, 0x84, 0x0, 0x85, 0x8, 0xC8, 0x0, 0x92, 0x0, 0x94, 0x0, 0x8D, 0x8, 0xCB, 0xC, 0xFD, 0xC, 0xFE, 0xC, 0xFF, 0xD, 0x0, 0xD, 0x1, 0xD, 0x2, 0xD, 0x6, 0xD, 0x7, 0xD, 0x8, 0xD, 0x9, 0xD, 0xA, 0xD, 0x10, 0xD, 0x14, 0xD, 0x15, 0xD, 0x16, 0xC, 0xFD, 0xC, 0xFE, 0xC, 0xFF, 0xD, 0x0, 0xD, 0x1, 0xD, 0x2, 0xD, 0x6, 0x8, 0xD4, 0xD, 0x7, 0xD, 0x8, 0xD, 0x9, 0xD, 0xA, 0x8, 0xD9, 0x8, 0xDA, 0x8, 0xDB, 0x8, 0xDC, 0xD, 0x10, 0x8, 0xDE, 0x8, 0xDF, 0x8, 0xE0, 0x8, 0xE1, 0x8, 0xE2, 0xD, 0x14, 0xD, 0x15, 0x8, 0xE5, 0xD, 0x16, 0x8, 0xE7, 0x9, 0x72, 0xD, 0x3, 0xD, 0x3, 0xD, 0x4, 0xD, 0x4, 0xD, 0x5, 0xD, 0x5, 0x9, 0xA, 0x9, 0xC, 0x9, 0xE, 0x9, 0x10, 0x9, 0x12, 0xD, 0xB, 0xD, 0xB, 0xD, 0xC, 0xD, 0xC, 0xD, 0xD, 0xD, 0xD, 0xD, 0xE, 0xD, 0xE, 0xD, 0xF, 0xD, 0xF, 0x9, 0x1E, 0x9, 0x20, 0x9, 0x22, 0x9, 0x24, 0x9, 0x26, 0x9, 0x28, 0x9, 0x2A, 0x9, 0x2C, 0x9, 0x2E, 0x9, 0x31, 0x9, 0x33, 0x9, 0x35, 0x9, 0x37, 0x9, 0x39, 0x9, 0x3B, 0x9, 0x3D, 0xD, 0x11, 0xD, 0x11, 0xD, 0x12, 0xD, 0x12, 0xD, 0x13, 0xD, 0x13, 0x9, 0x46, 0x9, 0x48, 0x9, 0x4A, 0x9, 0x4C, 0x9, 0x4E, 0x9, 0x50, 0x9, 0x52, 0x9, 0x54, 0x9, 0x56, 0x9, 0x58, 0x9, 0x5A, 0x9, 0x5E, 0x9, 0x60, 0xD, 0x17, 0xD, 0x17, 0xD, 0x18, 0xD, 0x18, 0xD, 0x19, 0xD, 0x19, 0xD, 0x1A, 0xD, 0x1A, 0xD, 0x1B, 0xD, 0x1B, 0xD, 0x1C, 0xD, 0x1C, 0x9, 0x6E, 0x9, 0x70, 0x9, 0x73, 0x9, 0x75, 0x9, 0x77, 0x9, 0x79, 0x9, 0x7B, 0xA, 0x22, 0xA, 0x24, 0xA, 0x26, 0xA, 0x28, 0x0, 0x1, 0x0, 0xA2, 0x0, 0x26, 0x0, 0x2A, 0x0, 0x32, 0x0, 0x33, 0x0, 0x3A, 0x0, 0x46, 0x0, 0x47, 0x0, 0x48, 0x0, 0x49, 0x0, 0x4A, 0x0, 0x4B, 0x0, 0x4C, 0x0, 0x4D, 0x0, 0x4E, 0x0, 0x4F, 0x0, 0x50, 0x0, 0x51, 0x0, 0x52, 0x0, 0x53, 0x0, 0x54, 0x0, 0x55, 0x0, 0x56, 0x0, 0x57, 0x0, 0x58, 0x0, 0x59, 0x0, 0x5A, 0x0, 0x5B, 0x0, 0x5C, 0x0, 0x5D, 0x0, 0x5E, 0x0, 0x5F, 0x0, 0x87, 0x0, 0x88, 0x0, 0x8A, 0x0, 0x8B, 0x0, 0x8C, 0x0, 0x93, 0x0, 0x95, 0x8, 0xCA, 0x8, 0xCC, 0x8, 0xCD, 0x8, 0xCE, 0x8, 0xCF, 0x8, 0xD0, 0x8, 0xD1, 0x8, 0xD2, 0x8, 0xD3, 0x8, 0xD5, 0x8, 0xD6, 0x8, 0xD7, 0x8, 0xD8, 0x8, 0xDD, 0x8, 0xE3, 0x8, 0xE4, 0x8, 0xE6, 0x8, 0xE8, 0x8, 0xE9, 0x8, 0xEA, 0x8, 0xEB, 0x8, 0xEC, 0x8, 0xED, 0x8, 0xEE, 0x8, 0xEF, 0x8, 0xF0, 0x8, 0xF1, 0x8, 0xF2, 0x8, 0xF3, 0x8, 0xF4, 0x8, 0xF5, 0x8, 0xF6, 0x8, 0xF7, 0x8, 0xF8, 0x8, 0xF9, 0x8, 0xFA, 0x8, 0xFB, 0x8, 0xFC, 0x8, 0xFD, 0x8, 0xFE, 0x8, 0xFF, 0x9, 0x0, 0x9, 0x1, 0x9, 0x2, 0x9, 0x3, 0x9, 0x4, 0x9, 0x5, 0x9, 0x6, 0x9, 0x7, 0x9, 0x8, 0x9, 0x9, 0x9, 0xB, 0x9, 0xD, 0x9, 0xF, 0x9, 0x11, 0x9, 0x13, 0x9, 0x14, 0x9, 0x15, 0x9, 0x16, 0x9, 0x17, 0x9, 0x18, 0x9, 0x19, 0x9, 0x1A, 0x9, 0x1B, 0x9, 0x1C, 0x9, 0x1D, 0x9, 0x1F, 0x9, 0x21, 0x9, 0x23, 0x9, 0x25, 0x9, 0x27, 0x9, 0x29, 0x9, 0x2B, 0x9, 0x2D, 0x9, 0x2F, 0x9, 0x32, 0x9, 0x34, 0x9, 0x36, 0x9, 0x38, 0x9, 0x3A, 0x9, 0x3C, 0x9, 0x3E, 0x9, 0x3F, 0x9, 0x40, 0x9, 0x41, 0x9, 0x42, 0x9, 0x43, 0x9, 0x44, 0x9, 0x47, 0x9, 0x49, 0x9, 0x4B, 0x9, 0x4D, 0x9, 0x4F, 0x9, 0x51, 0x9, 0x53, 0x9, 0x55, 0x9, 0x57, 0x9, 0x59, 0x9, 0x5B, 0x9, 0x5F, 0x9, 0x61, 0x9, 0x62, 0x9, 0x63, 0x9, 0x64, 0x9, 0x65, 0x9, 0x66, 0x9, 0x67, 0x9, 0x68, 0x9, 0x69, 0x9, 0x6A, 0x9, 0x6B, 0x9, 0x6C, 0x9, 0x6D, 0x9, 0x6F, 0x9, 0x71, 0x9, 0x74, 0x9, 0x76, 0x9, 0x78, 0x9, 0x7A, 0x9, 0x7C, 0xA, 0x23, 0xA, 0x25, 0xA, 0x27, 0xA, 0x29, 0x0, 0x4, 0x0, 0x0, 0x0, 0x1, 0x0, 0x8, 0x0, 0x1, 0x0, 0xB6, 0x0, 0xE, 0x0, 0x22, 0x0, 0x34, 0x0, 0x3E, 0x0, 0x48, 0x0, 0x52, 0x0, 0x5C, 0x0, 0x66, 0x0, 0x70, 0x0, 0x7A, 0x0, 0x84, 0x0, 0x8E, 0x0, 0x98, 0x0, 0xA2, 0x0, 0xAC, 0x0, 0x2, 0x0, 0x6, 0x0, 0xC, 0x8, 0x8A, 0x0, 0x2, 0x3, 0x2B, 0x8, 0x8B, 0x0, 0x2, 0x3, 0x2C, 0x0, 0x1, 0x0, 0x4, 0x8, 0x8C, 0x0, 0x2, 0x3, 0x2B, 0x0, 0x1, 0x0, 0x4, 0x8, 0x8D, 0x0, 0x2, 0x3, 0x2B, 0x0, 0x1, 0x0, 0x4, 0x8, 0x8E, 0x0, 0x2, 0x3, 0x2B, 0x0, 0x1, 0x0, 0x4, 0x8, 0x91, 0x0, 0x2, 0x3, 0x2D, 0x0, 0x1, 0x0, 0x4, 0x8, 0x90, 0x0, 0x2, 0x3, 0x2D, 0x0, 0x1, 0x0, 0x4, 0x8, 0x92, 0x0, 0x2, 0x3, 0x2D, 0x0, 0x1, 0x0, 0x4, 0x8, 0x93, 0x0, 0x2, 0x3, 0x2D, 0x0, 0x1, 0x0, 0x4, 0x8, 0x94, 0x0, 0x2, 0x3, 0x2D, 0x0, 0x1, 0x0, 0x4, 0x8, 0x95, 0x0, 0x2, 0x3, 0x2D, 0x0, 0x1, 0x0, 0x4, 0x8, 0x8F, 0x0, 0x2, 0x3, 0x2D, 0x0, 0x1, 0x0, 0x4, 0x8, 0x98, 0x0, 0x2, 0x3, 0x2D, 0x0, 0x1, 0x0, 0x4, 0x8, 0x96, 0x0, 0x2, 0x3, 0x2D, 0x0, 0x1, 0x0, 0x4, 0x8, 0x97, 0x0, 0x2, 0x3, 0x2D, 0x0, 0x1, 0x0, 0xE, 0x1, 0xB4, 0x1, 0xB5, 0x1, 0xB9, 0x1, 0xBD, 0x1, 0xD4, 0x1, 0xD5, 0x1, 0xD6, 0x1, 0xDA, 0x1, 0xE0, 0x1, 0xE1, 0x1, 0xF6, 0x3, 0x28, 0x3, 0x29, 0x3, 0x2A, 0x0, 0x6, 0x0, 0x0, 0x0, 0x12, 0x0, 0x2A, 0x0, 0x42, 0x0, 0x5A, 0x0, 0x72, 0x0, 0x8A, 0x0, 0xA2, 0x0, 0xBA, 0x0, 0xD2, 0x0, 0xEA, 0x1, 0x2, 0x1, 0x1A, 0x1, 0x32, 0x1, 0x4A, 0x1, 0x62, 0x1, 0x7A, 0x1, 0x92, 0x1, 0xAA, 0x1, 0xC2, 0x0, 0x3, 0x0, 0x0, 0x0, 0x1, 0x0, 0x12, 0x0, 0x1, 0x1, 0xB0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x5, 0x0, 0x1, 0x0, 0x1, 0x0, 0x4E, 0x0, 0x3, 0x0, 0x0, 0x0, 0x1, 0x0, 0x12, 0x0, 0x1, 0x1, 0x98, 0x0, 0x1, 0x0, 0x0, 0x0, 0x5, 0x0, 0x1, 0x0, 0x1, 0x0, 0x4F, 0x0, 0x3, 0x0, 0x0, 0x0, 0x1, 0x0, 0x12, 0x0, 0x1, 0x1, 0x80, 0x0, 0x1, 0x0, 0x0, 0x0, 0x5, 0x0, 0x1, 0x0, 0x1, 0x9, 0x2F, 0x0, 0x3, 0x0, 0x0, 0x0, 0x1, 0x0, 0x12, 0x0, 0x1, 0x1, 0x68, 0x0, 0x1, 0x0, 0x0, 0x0, 0x5, 0x0, 0x1, 0x0, 0x1, 0x0, 0xFE, 0x0, 0x3, 0x0, 0x0, 0x0, 0x1, 0x0, 0x12, 0x0, 0x1, 0x1, 0x50, 0x0, 0x1, 0x0, 0x0, 0x0, 0x5, 0x0, 0x1, 0x0, 0x1, 0x1, 0x1D, 0x0, 0x3, 0x0, 0x0, 0x0, 0x1, 0x0, 0x12, 0x0, 0x1, 0x1, 0x38, 0x0, 0x1, 0x0, 0x0, 0x0, 0x5, 0x0, 0x1, 0x0, 0x1, 0x1, 0x4F, 0x0, 0x3, 0x0, 0x0, 0x0, 0x1, 0x0, 0x12, 0x0, 0x1, 0x1, 0x20, 0x0, 0x1, 0x0, 0x0, 0x0, 0x5, 0x0, 0x1, 0x0, 0x1, 0x1, 0x64, 0x0, 0x3, 0x0, 0x0, 0x0, 0x1, 0x0, 0x12, 0x0, 0x1, 0x1, 0x8, 0x0, 0x1, 0x0, 0x0, 0x0, 0x5, 0x0, 0x1, 0x0, 0x1, 0xB, 0x43, 0x0, 0x3, 0x0, 0x0, 0x0, 0x1, 0x0, 0x12, 0x0, 0x1, 0x0, 0xF0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x5, 0x0, 0x1, 0x0, 0x1, 0xA, 0x1D, 0x0, 0x3, 0x0, 0x0, 0x0, 0x1, 0x0, 0x12, 0x0, 0x1, 0x0, 0xD8, 0x0, 0x1, 0x0, 0x0, 0x0, 0x5, 0x0, 0x1, 0x0, 0x1, 0xA, 0x1F, 0x0, 0x3, 0x0, 0x0, 0x0, 0x1, 0x0, 0x12, 0x0, 0x1, 0x0, 0xC0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x5, 0x0, 0x1, 0x0, 0x1, 0x3, 0x91, 0x0, 0x3, 0x0, 0x0, 0x0, 0x1, 0x0, 0x12, 0x0, 0x1, 0x0, 0xA8, 0x0, 0x1, 0x0, 0x0, 0x0, 0x5, 0x0, 0x1, 0x0, 0x1, 0x3, 0xC5, 0x0, 0x3, 0x0, 0x0, 0x0, 0x1, 0x0, 0x12, 0x0, 0x1, 0x0, 0x90, 0x0, 0x1, 0x0, 0x0, 0x0, 0x5, 0x0, 0x1, 0x0, 0x1, 0x3, 0xD3, 0x0, 0x3, 0x0, 0x0, 0x0, 0x1, 0x0, 0x12, 0x0, 0x1, 0x0, 0x78, 0x0, 0x1, 0x0, 0x0, 0x0, 0x5, 0x0, 0x1, 0x0, 0x1, 0x3, 0xD7, 0x0, 0x3, 0x0, 0x0, 0x0, 0x1, 0x0, 0x12, 0x0, 0x1, 0x0, 0x60, 0x0, 0x1, 0x0, 0x0, 0x0, 0x5, 0x0, 0x1, 0x0, 0x1, 0x4, 0x2C, 0x0, 0x3, 0x0, 0x0, 0x0, 0x1, 0x0, 0x12, 0x0, 0x1, 0x0, 0x48, 0x0, 0x1, 0x0, 0x0, 0x0, 0x5, 0x0, 0x1, 0x0, 0x1, 0xA, 0x99, 0x0, 0x3, 0x0, 0x0, 0x0, 0x1, 0x0, 0x12, 0x0, 0x1, 0x0, 0x30, 0x0, 0x1, 0x0, 0x0, 0x0, 0x5, 0x0, 0x1, 0x0, 0x1, 0x4, 0x9C, 0x0, 0x3, 0x0, 0x0, 0x0, 0x1, 0x0, 0x12, 0x0, 0x1, 0x0, 0x18, 0x0, 0x1, 0x0, 0x0, 0x0, 0x5, 0x0, 0x1, 0x0, 0x1, 0x5, 0x72, 0x0, 0x2, 0x0, 0x19, 0x1, 0xB1, 0x1, 0xC6, 0x0, 0x0, 0x1, 0xCB, 0x1, 0xCC, 0x0, 0x16, 0x1, 0xEE, 0x1, 0xF5, 0x0, 0x18, 0x1, 0xF7, 0x1, 0xF7, 0x0, 0x20, 0x1, 0xFB, 0x1, 0xFD, 0x0, 0x21, 0x2, 0x1, 0x2, 0x3, 0x0, 0x24, 0x2, 0x8, 0x2, 0x9, 0x0, 0x27, 0x2, 0xC, 0x2, 0xC, 0x0, 0x29, 0x2, 0x14, 0x2, 0x20, 0x0, 0x2A, 0x2, 0xBA, 0x2, 0xBE, 0x0, 0x37, 0x3, 0x20, 0x3, 0x24, 0x0, 0x3C, 0x3, 0x2B, 0x3, 0x2C, 0x0, 0x41, 0x3, 0xEF, 0x3, 0xF0, 0x0, 0x43, 0x3, 0xF2, 0x3, 0xF8, 0x0, 0x45, 0x3, 0xFA, 0x3, 0xFD, 0x0, 0x4C, 0x4, 0x0, 0x4, 0x24, 0x0, 0x50, 0x4, 0x27, 0x4, 0x27, 0x0, 0x75, 0x4, 0xE3, 0x4, 0xE3, 0x0, 0x76, 0x4, 0xE5, 0x4, 0xE5, 0x0, 0x77, 0x5, 0x76, 0x5, 0x95, 0x0, 0x78, 0x6, 0x8, 0x6, 0x8, 0x0, 0x98, 0x6, 0xD, 0x6, 0x16, 0x0, 0x99, 0x6, 0x37, 0x6, 0x37, 0x0, 0xA3, 0x7, 0x2D, 0x7, 0x33, 0x0, 0xA4, 0x8, 0x8A, 0x8, 0x8E, 0x0, 0xAB, 0x0, 0x1, 0x0, 0x0, 0x0, 0x1, 0x0, 0x8, 0x0, 0x2, 0x0, 0x2A, 0x0, 0x12, 0x7, 0xF5, 0x7, 0xEE, 0x7, 0xF0, 0x7, 0xF1, 0x7, 0xF3, 0x7, 0xFC, 0x7, 0xF9, 0x7, 0xEF, 0x7, 0xF6, 0x7, 0xFB, 0xD, 0x1D, 0x7, 0xF4, 0x7, 0xFD, 0x7, 0xF7, 0x7, 0xF8, 0x7, 0xF2, 0xD, 0x1E, 0x7, 0xFA, 0x0, 0x1, 0x0, 0x12, 0x0, 0x4E, 0x0, 0x4F, 0x0, 0xFE, 0x1, 0x1D, 0x1, 0x4F, 0x1, 0x64, 0x3, 0x91, 0x3, 0xC5, 0x3, 0xD3, 0x3, 0xD7, 0x4, 0x2C, 0x4, 0x9C, 0x5, 0x72, 0x9, 0x2F, 0xA, 0x1D, 0xA, 0x1F, 0xA, 0x99, 0xB, 0x43, 0x0, 0x4, 0x0, 0x0, 0x0, 0x1, 0x0, 0x8, 0x0, 0x1, 0xE, 0xC0, 0x0, 0x3D, 0x0, 0x80, 0x1, 0x5C, 0x1, 0x76, 0x1, 0xA0, 0x1, 0xD2, 0x2, 0x98, 0x2, 0xA2, 0x2, 0xDC, 0x3, 0xE, 0x3, 0x92, 0x3, 0x9C, 0x3, 0xC6, 0x3, 0xF8, 0x4, 0x12, 0x4, 0x5C, 0x5, 0x44, 0x5, 0x56, 0x5, 0x98, 0x5, 0xE6, 0x6, 0x20, 0x6, 0xEE, 0x7, 0x0, 0x7, 0x32, 0x7, 0x44, 0x7, 0x8E, 0x7, 0xC0, 0x8, 0x42, 0x8, 0x5C, 0x8, 0x86, 0x8, 0xB8, 0x9, 0x42, 0x9, 0x4C, 0x9, 0x7E, 0x9, 0xB8, 0x9, 0xD2, 0x9, 0xFC, 0xA, 0x36, 0xA, 0x50, 0xA, 0x9A, 0xB, 0x14, 0xB, 0x26, 0xB, 0x68, 0xB, 0xA2, 0xB, 0xE4, 0xC, 0x76, 0xC, 0x88, 0xC, 0xC2, 0xC, 0xD4, 0xD, 0x26, 0xD, 0x58, 0xD, 0x6A, 0xD, 0x74, 0xD, 0x86, 0xD, 0x90, 0xD, 0xEA, 0xD, 0xF4, 0xE, 0x1E, 0xE, 0x48, 0xE, 0x72, 0xE, 0x9C, 0xE, 0xAE, 0x0, 0x19, 0x0, 0x34, 0x0, 0x3C, 0x0, 0x44, 0x0, 0x4C, 0x0, 0x54, 0x0, 0x5C, 0x0, 0x64, 0x0, 0x6C, 0x0, 0x74, 0x0, 0x7C, 0x0, 0x82, 0x0, 0x88, 0x0, 0x8E, 0x0, 0x94, 0x0, 0x9A, 0x0, 0xA0, 0x0, 0xA6, 0x0, 0xAC, 0x0, 0xB2, 0x0, 0xB8, 0x0, 0xBE, 0x0, 0xC4, 0x0, 0xCA, 0x0, 0xD0, 0x0, 0xD6, 0xA, 0x7C, 0x0, 0x3, 0x1, 0xB7, 0x1, 0xB2, 0xA, 0x7E, 0x0, 0x3, 0x1, 0xB7, 0x1, 0xB1, 0xA, 0x80, 0x0, 0x3, 0x1, 0xB7, 0x1, 0xBA, 0xA, 0x72, 0x0, 0x3, 0x1, 0xB3, 0x1, 0xB2, 0xA, 0x74, 0x0, 0x3, 0x1, 0xB3, 0x1, 0xB1, 0xA, 0x76, 0x0, 0x3, 0x1, 0xB3, 0x1, 0xBA, 0xA, 0x78, 0x0, 0x3, 0x1, 0xB3, 0x1, 0xB4, 0xA, 0xFF, 0x0, 0x3, 0x1, 0xB9, 0x1, 0xB5, 0xB, 0x1, 0x0, 0x3, 0x1, 0xB8, 0x1, 0xB5, 0x8, 0xCE, 0x0, 0x2, 0x1, 0xB2, 0xB, 0x16, 0x0, 0x2, 0x1, 0xC2, 0x9, 0x6, 0x0, 0x2, 0x1, 0xB7, 0x8, 0xCF, 0x0, 0x2, 0x1, 0xB3, 0x8, 0xD1, 0x0, 0x2, 0x1, 0xB9, 0xA, 0x6E, 0x0, 0x2, 0x1, 0xD4, 0xB, 0x2E, 0x0, 0x2, 0x1, 0xB8, 0x8, 0xCD, 0x0, 0x2, 0x1, 0xB1, 0xA, 0x70, 0x0, 0x2, 0x1, 0xBA, 0x9, 0x4, 0x0, 0x2, 0x1, 0xB5, 0x9, 0x8, 0x0, 0x2, 0x1, 0xD9, 0x8, 0xD2, 0x0, 0x2, 0x1, 0xBB, 0xA, 0x31, 0x0, 0x2, 0x1, 0xD6, 0x8, 0xD0, 0x0, 0x2, 0x1, 0xB4, 0xA, 0xEE, 0x0, 0x2, 0x1, 0xBD, 0xB, 0x14, 0x0, 0x2, 0x1, 0xC0, 0x0, 0x3, 0x0, 0x8, 0x0, 0xE, 0x0, 0x14, 0xB, 0x4F, 0x0, 0x2, 0x1, 0xD4, 0xB, 0x4D, 0x0, 0x2, 0x1, 0xB8, 0xB, 0x51, 0x0, 0x2, 0x1, 0xE2, 0x0, 0x5, 0x0, 0xC, 0x0, 0x12, 0x0, 0x18, 0x0, 0x1E, 0x0, 0x24, 0x9, 0xA, 0x0, 0x2, 0x1, 0xB2, 0x8, 0xD4, 0x0, 0x2, 0x1, 0xD8, 0x9, 0xC, 0x0, 0x2, 0x1, 0xB3, 0x9, 0xE, 0x0, 0x2, 0x1, 0xB8, 0x9, 0x10, 0x0, 0x2, 0x1, 0xBD, 0x0, 0x6, 0x0, 0xE, 0x0, 0x14, 0x0, 0x1A, 0x0, 0x20, 0x0, 0x26, 0x0, 0x2C, 0xB, 0x5D, 0x0, 0x2, 0x1, 0xDE, 0xB, 0x5B, 0x0, 0x2, 0x7, 0x25, 0xB, 0x57, 0x0, 0x2, 0x1, 0xD4, 0xB, 0x55, 0x0, 0x2, 0x1, 0xB8, 0xB, 0x59, 0x0, 0x2, 0x1, 0xE2, 0x9, 0x12, 0x0, 0x2, 0x1, 0xBD, 0x0, 0x17, 0x0, 0x30, 0x0, 0x38, 0x0, 0x40, 0x0, 0x48, 0x0, 0x50, 0x0, 0x58, 0x0, 0x60, 0x0, 0x66, 0x0, 0x6C, 0x0, 0x72, 0x0, 0x78, 0x0, 0x7E, 0x0, 0x84, 0x0, 0x8A, 0x0, 0x90, 0x0, 0x96, 0x0, 0x9C, 0x0, 0xA2, 0x0, 0xA8, 0x0, 0xAE, 0x0, 0xB4, 0x0, 0xBA, 0x0, 0xC0, 0xA, 0x8C, 0x0, 0x3, 0x1, 0xB3, 0x1, 0xB2, 0xA, 0x8E, 0x0, 0x3, 0x1, 0xB3, 0x1, 0xB1, 0xA, 0x90, 0x0, 0x3, 0x1, 0xB3, 0x1, 0xBA, 0xA, 0x92, 0x0, 0x3, 0x1, 0xB3, 0x1, 0xB4, 0xB, 0x61, 0x0, 0x3, 0x1, 0xB5, 0x1, 0xB2, 0xB, 0x5F, 0x0, 0x3, 0x1, 0xB5, 0x1, 0xB1, 0x8, 0xD6, 0x0, 0x2, 0x1, 0xB2, 0xB, 0x1A, 0x0, 0x2, 0x1, 0xC2, 0x9, 0x16, 0x0, 0x2, 0x1, 0xB7, 0xB, 0x30, 0x0, 0x2, 0x1, 0xD8, 0x8, 0xD7, 0x0, 0x2, 0x1, 0xB3, 0xB, 0x63, 0x0, 0x2, 0x1, 0xDE, 0x8, 0xD8, 0x0, 0x2, 0x1, 0xB9, 0xA, 0x86, 0x0, 0x2, 0x1, 0xD4, 0x9, 0x18, 0x0, 0x2, 0x1, 0xB8, 0x8, 0xD5, 0x0, 0x2, 0x1, 0xB1, 0xA, 0x88, 0x0, 0x2, 0x1, 0xBA, 0x9, 0x14, 0x0, 0x2, 0x1, 0xB5, 0x9, 0x1A, 0x0, 0x2, 0x1, 0xD9, 0xA, 0x8A, 0x0, 0x2, 0x1, 0xB4, 0xB, 0x65, 0x0, 0x2, 0x1, 0xE1, 0x9, 0x1C, 0x0, 0x2, 0x1, 0xBD, 0xB, 0x18, 0x0, 0x2, 0x1, 0xC0, 0x0, 0x1, 0x0, 0x4, 0xB, 0x69, 0x0, 0x2, 0x1, 0xB8, 0x0, 0x7, 0x0, 0x10, 0x0, 0x16, 0x0, 0x1C, 0x0, 0x22, 0x0, 0x28, 0x0, 0x2E, 0x0, 0x34, 0xB, 0x10, 0x0, 0x2, 0x1, 0xB2, 0x9, 0x20, 0x0, 0x2, 0x1, 0xB7, 0x9, 0x1E, 0x0, 0x2, 0x1, 0xB3, 0x9, 0x24, 0x0, 0x2, 0x7, 0x25, 0x9, 0x22, 0x0, 0x2, 0x1, 0xB8, 0xB, 0x6B, 0x0, 0x2, 0x1, 0xB5, 0xB, 0x5, 0x0, 0x2, 0x1, 0xBD, 0x0, 0x6, 0x0, 0xE, 0x0, 0x14, 0x0, 0x1A, 0x0, 0x20, 0x0, 0x26, 0x0, 0x2C, 0xB, 0x73, 0x0, 0x2, 0x1, 0xDF, 0x9, 0x26, 0x0, 0x2, 0x1, 0xB3, 0xB, 0x71, 0x0, 0x2, 0x1, 0xB9, 0xB, 0x6F, 0x0, 0x2, 0x1, 0xD4, 0xB, 0x6D, 0x0, 0x2, 0x1, 0xB8, 0xB, 0x2C, 0x0, 0x2, 0x1, 0xBD, 0x0, 0x10, 0x0, 0x22, 0x0, 0x2A, 0x0, 0x30, 0x0, 0x36, 0x0, 0x3C, 0x0, 0x42, 0x0, 0x48, 0x0, 0x4E, 0x0, 0x54, 0x0, 0x5A, 0x0, 0x60, 0x0, 0x66, 0x0, 0x6C, 0x0, 0x72, 0x0, 0x78, 0x0, 0x7E, 0x4, 0x2D, 0x0, 0x3, 0x1, 0xB9, 0x1, 0xB2, 0x8, 0xDA, 0x0, 0x2, 0x1, 0xB2, 0xB, 0x1E, 0x0, 0x2, 0x1, 0xC2, 0x9, 0x2C, 0x0, 0x2, 0x1, 0xB7, 0x8, 0xDB, 0x0, 0x2, 0x1, 0xB3, 0x8, 0xDC, 0x0, 0x2, 0x1, 0xB9, 0xA, 0x98, 0x0, 0x2, 0x1, 0xD4, 0x9, 0x30, 0x0, 0x2, 0x1, 0xB8, 0x8, 0xD9, 0x0, 0x2, 0x1, 0xB1, 0xA, 0x96, 0x0, 0x2, 0x1, 0xBA, 0x9, 0x2A, 0x0, 0x2, 0x1, 0xB5, 0x9, 0x2E, 0x0, 0x2, 0x1, 0xD9, 0x9, 0x28, 0x0, 0x2, 0x1, 0xB4, 0x4, 0x2B, 0x0, 0x2, 0x1, 0xE1, 0xA, 0xF0, 0x0, 0x2, 0x1, 0xBD, 0xB, 0x1C, 0x0, 0x2, 0x1, 0xC0, 0x0, 0x1, 0x0, 0x4, 0x9, 0x33, 0x0, 0x2, 0x1, 0xB3, 0x0, 0x5, 0x0, 0xC, 0x0, 0x12, 0x0, 0x18, 0x0, 0x1E, 0x0, 0x24, 0xB, 0x75, 0x0, 0x2, 0x1, 0xB2, 0x9, 0x35, 0x0, 0x2, 0x7, 0x25, 0xB, 0x77, 0x0, 0x2, 0x1, 0xD4, 0xB, 0x79, 0x0, 0x2, 0x1, 0xE2, 0xB, 0x7, 0x0, 0x2, 0x1, 0xBD, 0x0, 0x6, 0x0, 0xE, 0x0, 0x14, 0x0, 0x1A, 0x0, 0x20, 0x0, 0x26, 0x0, 0x2C, 0x9, 0x37, 0x0, 0x2, 0x1, 0xB2, 0xB, 0x81, 0x0, 0x2, 0x1, 0xDE, 0x9, 0x39, 0x0, 0x2, 0x7, 0x25, 0xB, 0x7B, 0x0, 0x2, 0x1, 0xD4, 0x9, 0x3D, 0x0, 0x2, 0x1, 0xB8, 0xB, 0x7F, 0x0, 0x2, 0x1, 0xE2, 0x0, 0x3, 0x0, 0x8, 0x0, 0xE, 0x0, 0x14, 0xA, 0x2F, 0x0, 0x2, 0x1, 0xB2, 0xB, 0x85, 0x0, 0x2, 0x1, 0xD4, 0xB, 0x83, 0x0, 0x2, 0x1, 0xB8, 0x0, 0x9, 0x0, 0x14, 0x0, 0x1A, 0x0, 0x20, 0x0, 0x26, 0x0, 0x2C, 0x0, 0x32, 0x0, 0x38, 0x0, 0x3E, 0x0, 0x44, 0x9, 0x3F, 0x0, 0x2, 0x1, 0xB2, 0xB, 0x8D, 0x0, 0x2, 0x1, 0xDE, 0x9, 0x41, 0x0, 0x2, 0x7, 0x25, 0xB, 0x89, 0x0, 0x2, 0x1, 0xD4, 0xB, 0x87, 0x0, 0x2, 0x1, 0xB8, 0xB, 0x12, 0x0, 0x2, 0x1, 0xB1, 0xB, 0x8B, 0x0, 0x2, 0x1, 0xE2, 0x8, 0xDD, 0x0, 0x2, 0x1, 0xB4, 0x9, 0x43, 0x0, 0x2, 0x1, 0xBD, 0x0, 0x1A, 0x0, 0x36, 0x0, 0x3E, 0x0, 0x46, 0x0, 0x4E, 0x0, 0x56, 0x0, 0x5E, 0x0, 0x66, 0x0, 0x6E, 0x0, 0x76, 0x0, 0x7E, 0x0, 0x86, 0x0, 0x8E, 0x0, 0x94, 0x0, 0x9A, 0x0, 0xA0, 0x0, 0xA6, 0x0, 0xAC, 0x0, 0xB2, 0x0, 0xB8, 0x0, 0xBE, 0x0, 0xC4, 0x0, 0xCA, 0x0, 0xD0, 0x0, 0xD6, 0x0, 0xDC, 0x0, 0xE2, 0xA, 0x9E, 0x0, 0x3, 0x1, 0xB3, 0x1, 0xB2, 0xA, 0xA0, 0x0, 0x3, 0x1, 0xB3, 0x1, 0xB1, 0xA, 0xA2, 0x0, 0x3, 0x1, 0xB3, 0x1, 0xBA, 0xA, 0xA4, 0x0, 0x3, 0x1, 0xB3, 0x1, 0xB4, 0xB, 0x32, 0x0, 0x3, 0x1, 0xB9, 0x1, 0xB5, 0xB, 0x38, 0x0, 0x3, 0x1, 0xB8, 0x1, 0xB5, 0xB, 0x95, 0x0, 0x3, 0x1, 0xB5, 0x1, 0xB2, 0xB, 0x93, 0x0, 0x3, 0x1, 0xB5, 0x1, 0xB1, 0xB, 0x8F, 0x0, 0x3, 0x1, 0xB4, 0x1, 0xB2, 0xB, 0x91, 0x0, 0x3, 0x1, 0xB4, 0x1, 0xB9, 0xB, 0x34, 0x0, 0x3, 0x1, 0xB4, 0x1, 0xB5, 0x8, 0xDF, 0x0, 0x2, 0x1, 0xB2, 0x9, 0x4A, 0x0, 0x2, 0x1, 0xBC, 0xB, 0x22, 0x0, 0x2, 0x1, 0xC2, 0x9, 0x48, 0x0, 0x2, 0x1, 0xB7, 0x8, 0xE0, 0x0, 0x2, 0x1, 0xB3, 0x8, 0xE2, 0x0, 0x2, 0x1, 0xB9, 0xA, 0x9A, 0x0, 0x2, 0x1, 0xD4, 0xB, 0x36, 0x0, 0x2, 0x1, 0xB8, 0x8, 0xDE, 0x0, 0x2, 0x1, 0xB1, 0xA, 0x9C, 0x0, 0x2, 0x1, 0xBA, 0x9, 0x46, 0x0, 0x2, 0x1, 0xB5, 0xB, 0x9, 0x0, 0x2, 0x1, 0xD9, 0x8, 0xE1, 0x0, 0x2, 0x1, 0xB4, 0xA, 0xF2, 0x0, 0x2, 0x1, 0xBD, 0xB, 0x20, 0x0, 0x2, 0x1, 0xC0, 0x0, 0x2, 0x0, 0x6, 0x0, 0xC, 0xB, 0x97, 0x0, 0x2, 0x1, 0xB2, 0xB, 0x99, 0x0, 0x2, 0x1, 0xB8, 0x0, 0x8, 0x0, 0x12, 0x0, 0x18, 0x0, 0x1E, 0x0, 0x24, 0x0, 0x2A, 0x0, 0x30, 0x0, 0x36, 0x0, 0x3C, 0x9, 0x4C, 0x0, 0x2, 0x1, 0xB2, 0xB, 0x26, 0x0, 0x2, 0x1, 0xC2, 0x9, 0x4E, 0x0, 0x2, 0x7, 0x25, 0xB, 0x9D, 0x0, 0x2, 0x1, 0xD4, 0xB, 0x9B, 0x0, 0x2, 0x1, 0xB8, 0xB, 0xA1, 0x0, 0x2, 0x1, 0xE2, 0x9, 0x50, 0x0, 0x2, 0x1, 0xBD, 0xB, 0x24, 0x0, 0x2, 0x1, 0xC0, 0x0, 0x9, 0x0, 0x14, 0x0, 0x1C, 0x0, 0x24, 0x0, 0x2A, 0x0, 0x30, 0x0, 0x36, 0x0, 0x3C, 0x0, 0x42, 0x0, 0x48, 0xB, 0xA7, 0x0, 0x3, 0x1, 0xB2, 0x1, 0xB8, 0xB, 0xA9, 0x0, 0x3, 0x1, 0xBD, 0x1, 0xB8, 0x9, 0x52, 0x0, 0x2, 0x1, 0xB2, 0x9, 0x56, 0x0, 0x2, 0x1, 0xD8, 0x9, 0x54, 0x0, 0x2, 0x1, 0xB3, 0x9, 0x58, 0x0, 0x2, 0x7, 0x25, 0xB, 0xA5, 0x0, 0x2, 0x1, 0xD4, 0xB, 0xA3, 0x0, 0x2, 0x1, 0xB8, 0x9, 0x5A, 0x0, 0x2, 0x1, 0xBD, 0x0, 0x7, 0x0, 0x10, 0x0, 0x16, 0x0, 0x1C, 0x0, 0x22, 0x0, 0x28, 0x0, 0x2E, 0x0, 0x34, 0x9, 0x5E, 0x0, 0x2, 0x1, 0xD8, 0xB, 0xB3, 0x0, 0x2, 0x1, 0xDE, 0x9, 0x5C, 0x0, 0x2, 0x7, 0x25, 0xB, 0xAF, 0x0, 0x2, 0x1, 0xD4, 0xB, 0xAD, 0x0, 0x2, 0x1, 0xB8, 0xB, 0xB1, 0x0, 0x2, 0x1, 0xE2, 0x9, 0x60, 0x0, 0x2, 0x1, 0xBD, 0x0, 0x18, 0x0, 0x32, 0x0, 0x3A, 0x0, 0x42, 0x0, 0x4A, 0x0, 0x52, 0x0, 0x5A, 0x0, 0x62, 0x0, 0x68, 0x0, 0x6E, 0x0, 0x74, 0x0, 0x7A, 0x0, 0x80, 0x0, 0x86, 0x0, 0x8C, 0x0, 0x92, 0x0, 0x98, 0x0, 0x9E, 0x0, 0xA4, 0x0, 0xAA, 0x0, 0xB0, 0x0, 0xB6, 0x0, 0xBC, 0x0, 0xC2, 0x0, 0xC8, 0xA, 0xF8, 0x0, 0x3, 0x1, 0xB9, 0x1, 0xB2, 0xA, 0xFC, 0x0, 0x3, 0x1, 0xB9, 0x1, 0xB1, 0xA, 0xF6, 0x0, 0x3, 0x1, 0xB9, 0x1, 0xB5, 0xA, 0xFA, 0x0, 0x3, 0x1, 0xB9, 0x1, 0xBD, 0xB, 0xBD, 0x0, 0x3, 0x1, 0xB5, 0x1, 0xB9, 0xB, 0xBB, 0x0, 0x3, 0x1, 0xB4, 0x1, 0xB2, 0x8, 0xE4, 0x0, 0x2, 0x1, 0xB2, 0x9, 0x6A, 0x0, 0x2, 0x1, 0xBC, 0xB, 0x2A, 0x0, 0x2, 0x1, 0xC2, 0x9, 0x66, 0x0, 0x2, 0x1, 0xB7, 0x8, 0xE5, 0x0, 0x2, 0x1, 0xB3, 0xB, 0xB9, 0x0, 0x2, 0x1, 0xDE, 0x8, 0xE6, 0x0, 0x2, 0x1, 0xB9, 0xA, 0xB2, 0x0, 0x2, 0x1, 0xD4, 0xB, 0xB5, 0x0, 0x2, 0x1, 0xD5, 0x8, 0xE3, 0x0, 0x2, 0x1, 0xB1, 0xA, 0xB4, 0x0, 0x2, 0x1, 0xBA, 0x9, 0x64, 0x0, 0x2, 0x1, 0xB5, 0x9, 0x6C, 0x0, 0x2, 0x1, 0xD9, 0x9, 0x68, 0x0, 0x2, 0x1, 0xBB, 0x9, 0x62, 0x0, 0x2, 0x1, 0xB4, 0xB, 0xB7, 0x0, 0x2, 0x1, 0xE1, 0xA, 0xF4, 0x0, 0x2, 0x1, 0xBD, 0xB, 0x28, 0x0, 0x2, 0x1, 0xC0, 0x0, 0x2, 0x0, 0x6, 0x0, 0xC, 0xB, 0xC1, 0x0, 0x2, 0x1, 0xD4, 0xB, 0xBF, 0x0, 0x2, 0x1, 0xB4, 0x0, 0x6, 0x0, 0xE, 0x0, 0x14, 0x0, 0x1A, 0x0, 0x20, 0x0, 0x26, 0x0, 0x2C, 0xA, 0x24, 0x0, 0x2, 0x1, 0xB2, 0x9, 0x6E, 0x0, 0x2, 0x1, 0xB3, 0xA, 0x26, 0x0, 0x2, 0x1, 0xB9, 0xB, 0xC5, 0x0, 0x2, 0x1, 0xD4, 0xB, 0xC3, 0x0, 0x2, 0x1, 0xB8, 0xA, 0x22, 0x0, 0x2, 0x1, 0xB1, 0x0, 0x2, 0x0, 0x6, 0x0, 0xC, 0xB, 0xC9, 0x0, 0x2, 0x1, 0xB9, 0xB, 0xC7, 0x0, 0x2, 0x1, 0xB8, 0x0, 0x9, 0x0, 0x14, 0x0, 0x1A, 0x0, 0x20, 0x0, 0x26, 0x0, 0x2C, 0x0, 0x32, 0x0, 0x38, 0x0, 0x3E, 0x0, 0x44, 0x8, 0xE7, 0x0, 0x2, 0x1, 0xB2, 0x9, 0x70, 0x0, 0x2, 0x1, 0xB3, 0x9, 0x72, 0x0, 0x2, 0x1, 0xB9, 0xA, 0xC0, 0x0, 0x2, 0x1, 0xD4, 0xB, 0xCB, 0x0, 0x2, 0x1, 0xB8, 0xA, 0x28, 0x0, 0x2, 0x1, 0xB1, 0xA, 0xC2, 0x0, 0x2, 0x1, 0xBA, 0xB, 0x3A, 0x0, 0x2, 0x1, 0xB5, 0xA, 0xC4, 0x0, 0x2, 0x1, 0xB4, 0x0, 0x6, 0x0, 0xE, 0x0, 0x14, 0x0, 0x1A, 0x0, 0x20, 0x0, 0x26, 0x0, 0x2C, 0x9, 0x73, 0x0, 0x2, 0x1, 0xB2, 0xB, 0xCD, 0x0, 0x2, 0x1, 0xB3, 0xB, 0xCF, 0x0, 0x2, 0x1, 0xD4, 0x9, 0x75, 0x0, 0x2, 0x1, 0xB8, 0xB, 0xD1, 0x0, 0x2, 0x1, 0xE2, 0x9, 0x77, 0x0, 0x2, 0x1, 0xBD, 0x0, 0x10, 0x0, 0x22, 0x0, 0x28, 0x0, 0x2E, 0x0, 0x34, 0x0, 0x3A, 0x0, 0x40, 0x0, 0x46, 0x0, 0x4C, 0x0, 0x52, 0x0, 0x58, 0x0, 0x5E, 0x0, 0x64, 0x0, 0x6A, 0x0, 0x70, 0x0, 0x76, 0x0, 0x7C, 0x8, 0xE9, 0x0, 0x2, 0x1, 0xB2, 0xB, 0x17, 0x0, 0x2, 0x1, 0xC2, 0x9, 0x7, 0x0, 0x2, 0x1, 0xB7, 0x8, 0xEA, 0x0, 0x2, 0x1, 0xB3, 0x8, 0xEC, 0x0, 0x2, 0x1, 0xB9, 0xA, 0x6F, 0x0, 0x2, 0x1, 0xD4, 0xB, 0x2F, 0x0, 0x2, 0x1, 0xB8, 0x8, 0xE8, 0x0, 0x2, 0x1, 0xB1, 0xA, 0x71, 0x0, 0x2, 0x1, 0xBA, 0x9, 0x5, 0x0, 0x2, 0x1, 0xB5, 0x9, 0x9, 0x0, 0x2, 0x1, 0xD9, 0x8, 0xED, 0x0, 0x2, 0x1, 0xBB, 0xA, 0x32, 0x0, 0x2, 0x1, 0xD6, 0x8, 0xEB, 0x0, 0x2, 0x1, 0xB4, 0xA, 0xEF, 0x0, 0x2, 0x1, 0xBD, 0xB, 0x15, 0x0, 0x2, 0x1, 0xC0, 0x0, 0x3, 0x0, 0x8, 0x0, 0xE, 0x0, 0x14, 0xB, 0x50, 0x0, 0x2, 0x1, 0xD4, 0xB, 0x4E, 0x0, 0x2, 0x1, 0xB8, 0xB, 0x52, 0x0, 0x2, 0x1, 0xE2, 0x0, 0x5, 0x0, 0xC, 0x0, 0x12, 0x0, 0x18, 0x0, 0x1E, 0x0, 0x24, 0x9, 0xB, 0x0, 0x2, 0x1, 0xB2, 0x8, 0xEF, 0x0, 0x2, 0x1, 0xD8, 0x9, 0xD, 0x0, 0x2, 0x1, 0xB3, 0x9, 0xF, 0x0, 0x2, 0x1, 0xB8, 0x9, 0x11, 0x0, 0x2, 0x1, 0xBD, 0x0, 0x6, 0x0, 0xE, 0x0, 0x14, 0x0, 0x1A, 0x0, 0x20, 0x0, 0x26, 0x0, 0x2C, 0xB, 0x5E, 0x0, 0x2, 0x1, 0xDE, 0xB, 0x5C, 0x0, 0x2, 0x7, 0x25, 0xB, 0x58, 0x0, 0x2, 0x1, 0xD4, 0xB, 0x56, 0x0, 0x2, 0x1, 0xB8, 0xB, 0x5A, 0x0, 0x2, 0x1, 0xE2, 0x9, 0x13, 0x0, 0x2, 0x1, 0xBD, 0x0, 0x11, 0x0, 0x24, 0x0, 0x2A, 0x0, 0x30, 0x0, 0x36, 0x0, 0x3C, 0x0, 0x42, 0x0, 0x48, 0x0, 0x4E, 0x0, 0x54, 0x0, 0x5A, 0x0, 0x60, 0x0, 0x66, 0x0, 0x6C, 0x0, 0x72, 0x0, 0x78, 0x0, 0x7E, 0x0, 0x84, 0x8, 0xF1, 0x0, 0x2, 0x1, 0xB2, 0xB, 0x1B, 0x0, 0x2, 0x1, 0xC2, 0x9, 0x17, 0x0, 0x2, 0x1, 0xB7, 0xB, 0x31, 0x0, 0x2, 0x1, 0xD8, 0x8, 0xF2, 0x0, 0x2, 0x1, 0xB3, 0xB, 0x64, 0x0, 0x2, 0x1, 0xDE, 0x8, 0xF3, 0x0, 0x2, 0x1, 0xB9, 0xA, 0x87, 0x0, 0x2, 0x1, 0xD4, 0x9, 0x19, 0x0, 0x2, 0x1, 0xB8, 0x8, 0xF0, 0x0, 0x2, 0x1, 0xB1, 0xA, 0x89, 0x0, 0x2, 0x1, 0xBA, 0x9, 0x15, 0x0, 0x2, 0x1, 0xB5, 0x9, 0x1B, 0x0, 0x2, 0x1, 0xD9, 0xA, 0x8B, 0x0, 0x2, 0x1, 0xB4, 0xB, 0x66, 0x0, 0x2, 0x1, 0xE1, 0x9, 0x1D, 0x0, 0x2, 0x1, 0xBD, 0xB, 0x19, 0x0, 0x2, 0x1, 0xC0, 0x0, 0x1, 0x0, 0x4, 0xB, 0x6A, 0x0, 0x2, 0x1, 0xB8, 0x0, 0x6, 0x0, 0xE, 0x0, 0x14, 0x0, 0x1A, 0x0, 0x20, 0x0, 0x26, 0x0, 0x2C, 0xB, 0x11, 0x0, 0x2, 0x1, 0xB2, 0x9, 0x21, 0x0, 0x2, 0x1, 0xB7, 0x9, 0x1F, 0x0, 0x2, 0x1, 0xB3, 0x9, 0x23, 0x0, 0x2, 0x1, 0xB8, 0xB, 0x6C, 0x0, 0x2, 0x1, 0xB5, 0xB, 0x6, 0x0, 0x2, 0x1, 0xBD, 0x0, 0x7, 0x0, 0x10, 0x0, 0x16, 0x0, 0x1C, 0x0, 0x22, 0x0, 0x28, 0x0, 0x2E, 0x0, 0x34, 0xB, 0x74, 0x0, 0x2, 0x1, 0xDF, 0x9, 0x27, 0x0, 0x2, 0x1, 0xB3, 0xB, 0x72, 0x0, 0x2, 0x1, 0xB9, 0xB, 0x70, 0x0, 0x2, 0x1, 0xD4, 0xB, 0x6E, 0x0, 0x2, 0x1, 0xB8, 0xB, 0xD3, 0x0, 0x2, 0x1, 0xE2, 0xB, 0x2D, 0x0, 0x2, 0x1, 0xBD, 0x0, 0x3, 0x0, 0x8, 0x0, 0xE, 0x0, 0x14, 0xA, 0x99, 0x0, 0x2, 0x1, 0xD4, 0x9, 0x2F, 0x0, 0x2, 0x1, 0xD9, 0x4, 0x2C, 0x0, 0x2, 0x1, 0xE1, 0x0, 0x5, 0x0, 0xC, 0x0, 0x12, 0x0, 0x18, 0x0, 0x1E, 0x0, 0x24, 0xB, 0x76, 0x0, 0x2, 0x1, 0xB2, 0x9, 0x36, 0x0, 0x2, 0x7, 0x25, 0xB, 0x78, 0x0, 0x2, 0x1, 0xD4, 0xB, 0x7A, 0x0, 0x2, 0x1, 0xE2, 0xB, 0x8, 0x0, 0x2, 0x1, 0xBD, 0x0, 0x7, 0x0, 0x10, 0x0, 0x16, 0x0, 0x1C, 0x0, 0x22, 0x0, 0x28, 0x0, 0x2E, 0x0, 0x34, 0x9, 0x38, 0x0, 0x2, 0x1, 0xB2, 0xB, 0x82, 0x0, 0x2, 0x1, 0xDE, 0x9, 0x3A, 0x0, 0x2, 0x7, 0x25, 0xB, 0x7C, 0x0, 0x2, 0x1, 0xD4, 0x9, 0x3E, 0x0, 0x2, 0x1, 0xB8, 0xB, 0x80, 0x0, 0x2, 0x1, 0xE2, 0x9, 0x3C, 0x0, 0x2, 0x1, 0xBD, 0x0, 0x3, 0x0, 0x8, 0x0, 0xE, 0x0, 0x14, 0xA, 0x30, 0x0, 0x2, 0x1, 0xB2, 0xB, 0x86, 0x0, 0x2, 0x1, 0xD4, 0xB, 0x84, 0x0, 0x2, 0x1, 0xB8, 0x0, 0x9, 0x0, 0x14, 0x0, 0x1A, 0x0, 0x20, 0x0, 0x26, 0x0, 0x2C, 0x0, 0x32, 0x0, 0x38, 0x0, 0x3E, 0x0, 0x44, 0x9, 0x40, 0x0, 0x2, 0x1, 0xB2, 0xB, 0x8E, 0x0, 0x2, 0x1, 0xDE, 0x9, 0x42, 0x0, 0x2, 0x7, 0x25, 0xB, 0x8A, 0x0, 0x2, 0x1, 0xD4, 0xB, 0x88, 0x0, 0x2, 0x1, 0xB8, 0xB, 0x13, 0x0, 0x2, 0x1, 0xB1, 0xB, 0x8C, 0x0, 0x2, 0x1, 0xE2, 0x8, 0xF8, 0x0, 0x2, 0x1, 0xB4, 0x9, 0x44, 0x0, 0x2, 0x1, 0xBD, 0x0, 0xF, 0x0, 0x20, 0x0, 0x26, 0x0, 0x2C, 0x0, 0x32, 0x0, 0x38, 0x0, 0x3E, 0x0, 0x44, 0x0, 0x4A, 0x0, 0x50, 0x0, 0x56, 0x0, 0x5C, 0x0, 0x62, 0x0, 0x68, 0x0, 0x6E, 0x0, 0x74, 0x8, 0xFA, 0x0, 0x2, 0x1, 0xB2, 0x9, 0x4B, 0x0, 0x2, 0x1, 0xBC, 0xB, 0x23, 0x0, 0x2, 0x1, 0xC2, 0x9, 0x49, 0x0, 0x2, 0x1, 0xB7, 0x8, 0xFB, 0x0, 0x2, 0x1, 0xB3, 0x8, 0xFD, 0x0, 0x2, 0x1, 0xB9, 0xA, 0x9B, 0x0, 0x2, 0x1, 0xD4, 0xB, 0x37, 0x0, 0x2, 0x1, 0xB8, 0x8, 0xF9, 0x0, 0x2, 0x1, 0xB1, 0xA, 0x9D, 0x0, 0x2, 0x1, 0xBA, 0x9, 0x47, 0x0, 0x2, 0x1, 0xB5, 0xB, 0xA, 0x0, 0x2, 0x1, 0xD9, 0x8, 0xFC, 0x0, 0x2, 0x1, 0xB4, 0xA, 0xF3, 0x0, 0x2, 0x1, 0xBD, 0xB, 0x21, 0x0, 0x2, 0x1, 0xC0, 0x0, 0x2, 0x0, 0x6, 0x0, 0xC, 0xB, 0x98, 0x0, 0x2, 0x1, 0xB2, 0xB, 0x9A, 0x0, 0x2, 0x1, 0xB8, 0x0, 0x8, 0x0, 0x12, 0x0, 0x18, 0x0, 0x1E, 0x0, 0x24, 0x0, 0x2A, 0x0, 0x30, 0x0, 0x36, 0x0, 0x3C, 0x9, 0x4D, 0x0, 0x2, 0x1, 0xB2, 0xB, 0x27, 0x0, 0x2, 0x1, 0xC2, 0x9, 0x4F, 0x0, 0x2, 0x7, 0x25, 0xB, 0x9E, 0x0, 0x2, 0x1, 0xD4, 0xB, 0x9C, 0x0, 0x2, 0x1, 0xB8, 0xB, 0xA2, 0x0, 0x2, 0x1, 0xE2, 0x9, 0x51, 0x0, 0x2, 0x1, 0xBD, 0xB, 0x25, 0x0, 0x2, 0x1, 0xC0, 0x0, 0x7, 0x0, 0x10, 0x0, 0x16, 0x0, 0x1C, 0x0, 0x22, 0x0, 0x28, 0x0, 0x2E, 0x0, 0x34, 0x9, 0x53, 0x0, 0x2, 0x1, 0xB2, 0x9, 0x57, 0x0, 0x2, 0x1, 0xD8, 0x9, 0x55, 0x0, 0x2, 0x1, 0xB3, 0x9, 0x59, 0x0, 0x2, 0x7, 0x25, 0xB, 0xA6, 0x0, 0x2, 0x1, 0xD4, 0xB, 0xA4, 0x0, 0x2, 0x1, 0xB8, 0x9, 0x5B, 0x0, 0x2, 0x1, 0xBD, 0x0, 0x8, 0x0, 0x12, 0x0, 0x18, 0x0, 0x1E, 0x0, 0x24, 0x0, 0x2A, 0x0, 0x30, 0x0, 0x36, 0x0, 0x3C, 0x9, 0x5F, 0x0, 0x2, 0x1, 0xD8, 0xB, 0xB4, 0x0, 0x2, 0x1, 0xDE, 0x9, 0x5D, 0x0, 0x2, 0x7, 0x25, 0xB, 0xD4, 0x0, 0x2, 0x1, 0xB9, 0xB, 0xB0, 0x0, 0x2, 0x1, 0xD4, 0xB, 0xAE, 0x0, 0x2, 0x1, 0xB8, 0xB, 0xB2, 0x0, 0x2, 0x1, 0xE2, 0x9, 0x61, 0x0, 0x2, 0x1, 0xBD, 0x0, 0x12, 0x0, 0x26, 0x0, 0x2C, 0x0, 0x32, 0x0, 0x38, 0x0, 0x3E, 0x0, 0x44, 0x0, 0x4A, 0x0, 0x50, 0x0, 0x56, 0x0, 0x5C, 0x0, 0x62, 0x0, 0x68, 0x0, 0x6E, 0x0, 0x74, 0x0, 0x7A, 0x0, 0x80, 0x0, 0x86, 0x0, 0x8C, 0x8, 0xFF, 0x0, 0x2, 0x1, 0xB2, 0x9, 0x6B, 0x0, 0x2, 0x1, 0xBC, 0xB, 0x2B, 0x0, 0x2, 0x1, 0xC2, 0x9, 0x67, 0x0, 0x2, 0x1, 0xB7, 0x9, 0x0, 0x0, 0x2, 0x1, 0xB3, 0xB, 0xBA, 0x0, 0x2, 0x1, 0xDE, 0x9, 0x1, 0x0, 0x2, 0x1, 0xB9, 0xA, 0xB3, 0x0, 0x2, 0x1, 0xD4, 0xB, 0xB6, 0x0, 0x2, 0x1, 0xD5, 0x8, 0xFE, 0x0, 0x2, 0x1, 0xB1, 0xA, 0xB5, 0x0, 0x2, 0x1, 0xBA, 0x9, 0x65, 0x0, 0x2, 0x1, 0xB5, 0x9, 0x6D, 0x0, 0x2, 0x1, 0xD9, 0x9, 0x69, 0x0, 0x2, 0x1, 0xBB, 0x9, 0x63, 0x0, 0x2, 0x1, 0xB4, 0xB, 0xB8, 0x0, 0x2, 0x1, 0xE1, 0xA, 0xF5, 0x0, 0x2, 0x1, 0xBD, 0xB, 0x29, 0x0, 0x2, 0x1, 0xC0, 0x0, 0x2, 0x0, 0x6, 0x0, 0xC, 0xB, 0xC2, 0x0, 0x2, 0x1, 0xD4, 0xB, 0xC0, 0x0, 0x2, 0x1, 0xB4, 0x0, 0x7, 0x0, 0x10, 0x0, 0x16, 0x0, 0x1C, 0x0, 0x22, 0x0, 0x28, 0x0, 0x2E, 0x0, 0x34, 0xA, 0x25, 0x0, 0x2, 0x1, 0xB2, 0x9, 0x6F, 0x0, 0x2, 0x1, 0xB3, 0xA, 0x27, 0x0, 0x2, 0x1, 0xB9, 0xB, 0xC6, 0x0, 0x2, 0x1, 0xD4, 0xB, 0xC4, 0x0, 0x2, 0x1, 0xB8, 0xA, 0x23, 0x0, 0x2, 0x1, 0xB1, 0xB, 0xD5, 0x0, 0x2, 0x1, 0xBB, 0x0, 0x2, 0x0, 0x6, 0x0, 0xC, 0xB, 0xCA, 0x0, 0x2, 0x1, 0xB9, 0xB, 0xC8, 0x0, 0x2, 0x1, 0xB8, 0x0, 0xA, 0x0, 0x16, 0x0, 0x1C, 0x0, 0x22, 0x0, 0x28, 0x0, 0x2E, 0x0, 0x34, 0x0, 0x3A, 0x0, 0x40, 0x0, 0x46, 0x0, 0x4C, 0x9, 0x2, 0x0, 0x2, 0x1, 0xB2, 0x9, 0x71, 0x0, 0x2, 0x1, 0xB3, 0x9, 0x3, 0x0, 0x2, 0x1, 0xB9, 0xA, 0xC1, 0x0, 0x2, 0x1, 0xD4, 0xB, 0xCC, 0x0, 0x2, 0x1, 0xB8, 0xA, 0x29, 0x0, 0x2, 0x1, 0xB1, 0xA, 0xC3, 0x0, 0x2, 0x1, 0xBA, 0xB, 0x3B, 0x0, 0x2, 0x1, 0xB5, 0xB, 0xD6, 0x0, 0x2, 0x1, 0xBB, 0xA, 0xC5, 0x0, 0x2, 0x1, 0xB4, 0x0, 0x6, 0x0, 0xE, 0x0, 0x14, 0x0, 0x1A, 0x0, 0x20, 0x0, 0x26, 0x0, 0x2C, 0x9, 0x74, 0x0, 0x2, 0x1, 0xB2, 0xB, 0xCE, 0x0, 0x2, 0x1, 0xB3, 0xB, 0xD0, 0x0, 0x2, 0x1, 0xD4, 0x9, 0x76, 0x0, 0x2, 0x1, 0xB8, 0xB, 0xD2, 0x0, 0x2, 0x1, 0xE2, 0x9, 0x78, 0x0, 0x2, 0x1, 0xBD, 0x0, 0x2, 0x0, 0x6, 0x0, 0xC, 0x9, 0x79, 0x0, 0x2, 0x1, 0xB2, 0xB, 0x3, 0x0, 0x2, 0x1, 0xB5, 0x0, 0x1, 0x0, 0x4, 0x9, 0x7B, 0x0, 0x2, 0x1, 0xB2, 0x0, 0x2, 0x0, 0x6, 0x0, 0xC, 0x9, 0x7A, 0x0, 0x2, 0x1, 0xB2, 0xB, 0x4, 0x0, 0x2, 0x1, 0xB5, 0x0, 0x1, 0x0, 0x4, 0x9, 0x7C, 0x0, 0x2, 0x1, 0xB2, 0x0, 0xB, 0x0, 0x18, 0x0, 0x1E, 0x0, 0x24, 0x0, 0x2A, 0x0, 0x30, 0x0, 0x36, 0x0, 0x3C, 0x0, 0x42, 0x0, 0x48, 0x0, 0x4E, 0x0, 0x54, 0x8, 0xF5, 0x0, 0x2, 0x1, 0xB2, 0xB, 0x1F, 0x0, 0x2, 0x1, 0xC2, 0x9, 0x2D, 0x0, 0x2, 0x1, 0xB7, 0x8, 0xF6, 0x0, 0x2, 0x1, 0xB3, 0x8, 0xF7, 0x0, 0x2, 0x1, 0xB9, 0x8, 0xF4, 0x0, 0x2, 0x1, 0xB1, 0xA, 0x97, 0x0, 0x2, 0x1, 0xBA, 0x9, 0x2B, 0x0, 0x2, 0x1, 0xB5, 0x9, 0x29, 0x0, 0x2, 0x1, 0xB4, 0xA, 0xF1, 0x0, 0x2, 0x1, 0xBD, 0xB, 0x1D, 0x0, 0x2, 0x1, 0xC0, 0x0, 0x1, 0x0, 0x4, 0x4, 0x2F, 0x0, 0x2, 0x1, 0xB8, 0x0, 0x5, 0x0, 0xC, 0x0, 0x12, 0x0, 0x18, 0x0, 0x1E, 0x0, 0x24, 0xA, 0xA8, 0x0, 0x2, 0x1, 0xB2, 0xA, 0xB0, 0x0, 0x2, 0x1, 0xD4, 0xA, 0xAA, 0x0, 0x2, 0x1, 0xB1, 0xA, 0xAC, 0x0, 0x2, 0x1, 0xBA, 0xA, 0xAE, 0x0, 0x2, 0x1, 0xB4, 0x0, 0x5, 0x0, 0xC, 0x0, 0x12, 0x0, 0x18, 0x0, 0x1E, 0x0, 0x24, 0xA, 0xA9, 0x0, 0x2, 0x1, 0xB2, 0xA, 0xB1, 0x0, 0x2, 0x1, 0xD4, 0xA, 0xAB, 0x0, 0x2, 0x1, 0xB1, 0xA, 0xAD, 0x0, 0x2, 0x1, 0xBA, 0xA, 0xAF, 0x0, 0x2, 0x1, 0xB4, 0x0, 0x5, 0x0, 0xC, 0x0, 0x12, 0x0, 0x18, 0x0, 0x1E, 0x0, 0x24, 0xA, 0xB6, 0x0, 0x2, 0x1, 0xB2, 0xA, 0xBE, 0x0, 0x2, 0x1, 0xD4, 0xA, 0xB8, 0x0, 0x2, 0x1, 0xB1, 0xA, 0xBA, 0x0, 0x2, 0x1, 0xBA, 0xA, 0xBC, 0x0, 0x2, 0x1, 0xB4, 0x0, 0x5, 0x0, 0xC, 0x0, 0x12, 0x0, 0x18, 0x0, 0x1E, 0x0, 0x24, 0xA, 0xB7, 0x0, 0x2, 0x1, 0xB2, 0xA, 0xBF, 0x0, 0x2, 0x1, 0xD4, 0xA, 0xB9, 0x0, 0x2, 0x1, 0xB1, 0xA, 0xBB, 0x0, 0x2, 0x1, 0xBA, 0xA, 0xBD, 0x0, 0x2, 0x1, 0xB4, 0x0, 0x2, 0x0, 0x6, 0x0, 0xC, 0x9, 0x34, 0x0, 0x2, 0x1, 0xB3, 0xA, 0x2D, 0x0, 0x2, 0x1, 0xBD, 0x0, 0x2, 0x0, 0x6, 0x0, 0xC, 0xB, 0x40, 0x0, 0x2, 0x1, 0xB2, 0xB, 0x41, 0x0, 0x2, 0x1, 0xB9, 0x0, 0x2, 0x0, 0xF, 0x0, 0x26, 0x0, 0x35, 0x0, 0x0, 0x0, 0x37, 0x0, 0x3F, 0x0, 0x10, 0x0, 0x46, 0x0, 0x4E, 0x0, 0x19, 0x0, 0x50, 0x0, 0x55, 0x0, 0x22, 0x0, 0x57, 0x0, 0x5F, 0x0, 0x28, 0x0, 0x82, 0x0, 0x82, 0x0, 0x31, 0x0, 0x84, 0x0, 0x84, 0x0, 0x32, 0x0, 0x87, 0x0, 0x87, 0x0, 0x33, 0x0, 0x8A, 0x0, 0x8A, 0x0, 0x34, 0x0, 0x8E, 0x0, 0x8E, 0x0, 0x35, 0x0, 0x96, 0x0, 0x96, 0x0, 0x36, 0x0, 0xB4, 0x0, 0xB5, 0x0, 0x37, 0x0, 0xC3, 0x0, 0xC4, 0x0, 0x39, 0x0, 0xEC, 0x0, 0xEC, 0x0, 0x3B, 0x2, 0x51, 0x2, 0x51, 0x0, 0x3C, 0x0, 0x4, 0x0, 0x0, 0x0, 0x1, 0x0, 0x8, 0x0, 0x1, 0x5, 0x6A, 0x0, 0x5, 0x0, 0x10, 0x1, 0x22, 0x2, 0x34, 0x3, 0x46, 0x4, 0x58, 0x0, 0x1C, 0x0, 0x3A, 0x0, 0x42, 0x0, 0x4A, 0x0, 0x52, 0x0, 0x5A, 0x0, 0x62, 0x0, 0x6A, 0x0, 0x72, 0x0, 0x7A, 0x0, 0x82, 0x0, 0x8A, 0x0, 0x92, 0x0, 0x9A, 0x0, 0xA2, 0x0, 0xAA, 0x0, 0xB2, 0x0, 0xBA, 0x0, 0xC2, 0x0, 0xCA, 0x0, 0xD2, 0x0, 0xDA, 0x0, 0xE2, 0x0, 0xEA, 0x0, 0xF2, 0x0, 0xFA, 0x1, 0x0, 0x1, 0x6, 0x1, 0xC, 0x8, 0x35, 0x0, 0x3, 0x1, 0x96, 0x1, 0x97, 0x8, 0x36, 0x0, 0x3, 0x1, 0x96, 0x1, 0x98, 0x8, 0x33, 0x0, 0x3, 0x1, 0x96, 0x1, 0x99, 0x8, 0x34, 0x0, 0x3, 0x1, 0x96, 0x1, 0x9A, 0x8, 0x39, 0x0, 0x3, 0x1, 0x97, 0x1, 0x96, 0x8, 0x38, 0x0, 0x3, 0x1, 0x97, 0x1, 0x97, 0x8, 0x37, 0x0, 0x3, 0x1, 0x97, 0x1, 0x98, 0x8, 0x3E, 0x0, 0x3, 0x1, 0x97, 0x1, 0x99, 0x8, 0x3D, 0x0, 0x3, 0x1, 0x97, 0x1, 0x9A, 0x8, 0x4, 0x0, 0x3, 0x1, 0x98, 0x1, 0x96, 0x8, 0x2, 0x0, 0x3, 0x1, 0x98, 0x1, 0x97, 0x8, 0x3, 0x0, 0x3, 0x1, 0x98, 0x1, 0x98, 0x7, 0x40, 0x0, 0x3, 0x1, 0x98, 0x1, 0x99, 0x8, 0x0, 0x0, 0x3, 0x1, 0x98, 0x1, 0x9A, 0x8, 0x66, 0x0, 0x3, 0x1, 0x99, 0x1, 0x96, 0x8, 0x68, 0x0, 0x3, 0x1, 0x99, 0x1, 0x97, 0x8, 0x67, 0x0, 0x3, 0x1, 0x99, 0x1, 0x98, 0x8, 0x6F, 0x0, 0x3, 0x1, 0x99, 0x1, 0x99, 0x8, 0x6E, 0x0, 0x3, 0x1, 0x99, 0x1, 0x9A, 0x8, 0x16, 0x0, 0x3, 0x1, 0x9A, 0x1, 0x96, 0x8, 0x11, 0x0, 0x3, 0x1, 0x9A, 0x1, 0x97, 0x8, 0x12, 0x0, 0x3, 0x1, 0x9A, 0x1, 0x98, 0x8, 0x5, 0x0, 0x3, 0x1, 0x9A, 0x1, 0x99, 0x8, 0x32, 0x0, 0x3, 0x1, 0x9A, 0x1, 0x9A, 0x8, 0x23, 0x0, 0x2, 0x1, 0x97, 0x8, 0x22, 0x0, 0x2, 0x1, 0x98, 0x8, 0x26, 0x0, 0x2, 0x1, 0x99, 0x8, 0x25, 0x0, 0x2, 0x1, 0x9A, 0x0, 0x1C, 0x0, 0x3A, 0x0, 0x42, 0x0, 0x4A, 0x0, 0x52, 0x0, 0x5A, 0x0, 0x62, 0x0, 0x6A, 0x0, 0x72, 0x0, 0x7A, 0x0, 0x82, 0x0, 0x8A, 0x0, 0x92, 0x0, 0x9A, 0x0, 0xA2, 0x0, 0xAA, 0x0, 0xB2, 0x0, 0xBA, 0x0, 0xC2, 0x0, 0xCA, 0x0, 0xD2, 0x0, 0xDA, 0x0, 0xE2, 0x0, 0xEA, 0x0, 0xF2, 0x0, 0xFA, 0x1, 0x0, 0x1, 0x6, 0x1, 0xC, 0x8, 0x21, 0x0, 0x3, 0x1, 0x96, 0x1, 0x96, 0x8, 0x20, 0x0, 0x3, 0x1, 0x96, 0x1, 0x97, 0x8, 0x1F, 0x0, 0x3, 0x1, 0x96, 0x1, 0x98, 0x8, 0x18, 0x0, 0x3, 0x1, 0x96, 0x1, 0x99, 0x8, 0x17, 0x0, 0x3, 0x1, 0x96, 0x1, 0x9A, 0x8, 0x2B, 0x0, 0x3, 0x1, 0x97, 0x1, 0x96, 0x8, 0x2C, 0x0, 0x3, 0x1, 0x97, 0x1, 0x98, 0x8, 0x2D, 0x0, 0x3, 0x1, 0x97, 0x1, 0x99, 0x8, 0x2E, 0x0, 0x3, 0x1, 0x97, 0x1, 0x9A, 0x8, 0x19, 0x0, 0x3, 0x1, 0x98, 0x1, 0x96, 0x8, 0x1C, 0x0, 0x3, 0x1, 0x98, 0x1, 0x97, 0x8, 0x1B, 0x0, 0x3, 0x1, 0x98, 0x1, 0x98, 0x8, 0x1E, 0x0, 0x3, 0x1, 0x98, 0x1, 0x99, 0x8, 0x1D, 0x0, 0x3, 0x1, 0x98, 0x1, 0x9A, 0x8, 0x6D, 0x0, 0x3, 0x1, 0x99, 0x1, 0x96, 0x8, 0x6B, 0x0, 0x3, 0x1, 0x99, 0x1, 0x97, 0x8, 0x6C, 0x0, 0x3, 0x1, 0x99, 0x1, 0x98, 0x8, 0x69, 0x0, 0x3, 0x1, 0x99, 0x1, 0x99, 0x8, 0x6A, 0x0, 0x3, 0x1, 0x99, 0x1, 0x9A, 0x8, 0x9, 0x0, 0x3, 0x1, 0x9A, 0x1, 0x96, 0x8, 0x8, 0x0, 0x3, 0x1, 0x9A, 0x1, 0x97, 0x8, 0x7, 0x0, 0x3, 0x1, 0x9A, 0x1, 0x98, 0x8, 0xB, 0x0, 0x3, 0x1, 0x9A, 0x1, 0x99, 0x8, 0xA, 0x0, 0x3, 0x1, 0x9A, 0x1, 0x9A, 0x8, 0x88, 0x0, 0x2, 0x1, 0x96, 0x8, 0x89, 0x0, 0x2, 0x1, 0x98, 0x8, 0x85, 0x0, 0x2, 0x1, 0x99, 0x8, 0x86, 0x0, 0x2, 0x1, 0x9A, 0x0, 0x1C, 0x0, 0x3A, 0x0, 0x42, 0x0, 0x4A, 0x0, 0x52, 0x0, 0x5A, 0x0, 0x62, 0x0, 0x6A, 0x0, 0x72, 0x0, 0x7A, 0x0, 0x82, 0x0, 0x8A, 0x0, 0x92, 0x0, 0x9A, 0x0, 0xA2, 0x0, 0xAA, 0x0, 0xB2, 0x0, 0xBA, 0x0, 0xC2, 0x0, 0xCA, 0x0, 0xD2, 0x0, 0xDA, 0x0, 0xE2, 0x0, 0xEA, 0x0, 0xF2, 0x0, 0xFA, 0x1, 0x0, 0x1, 0x6, 0x1, 0xC, 0x8, 0xE, 0x0, 0x3, 0x1, 0x96, 0x1, 0x96, 0x8, 0xC, 0x0, 0x3, 0x1, 0x96, 0x1, 0x97, 0x8, 0xD, 0x0, 0x3, 0x1, 0x96, 0x1, 0x98, 0x8, 0xF, 0x0, 0x3, 0x1, 0x96, 0x1, 0x99, 0x8, 0x10, 0x0, 0x3, 0x1, 0x96, 0x1, 0x9A, 0x8, 0x7D, 0x0, 0x3, 0x1, 0x97, 0x1, 0x96, 0x8, 0x7F, 0x0, 0x3, 0x1, 0x97, 0x1, 0x97, 0x8, 0x7E, 0x0, 0x3, 0x1, 0x97, 0x1, 0x98, 0x8, 0x81, 0x0, 0x3, 0x1, 0x97, 0x1, 0x99, 0x8, 0x80, 0x0, 0x3, 0x1, 0x97, 0x1, 0x9A, 0x8, 0x5E, 0x0, 0x3, 0x1, 0x98, 0x1, 0x96, 0x8, 0x5F, 0x0, 0x3, 0x1, 0x98, 0x1, 0x97, 0x8, 0x5D, 0x0, 0x3, 0x1, 0x98, 0x1, 0x99, 0x8, 0x24, 0x0, 0x3, 0x1, 0x98, 0x1, 0x9A, 0x8, 0x4B, 0x0, 0x3, 0x1, 0x99, 0x1, 0x96, 0x8, 0x64, 0x0, 0x3, 0x1, 0x99, 0x1, 0x97, 0x8, 0x49, 0x0, 0x3, 0x1, 0x99, 0x1, 0x98, 0x8, 0x50, 0x0, 0x3, 0x1, 0x99, 0x1, 0x99, 0x8, 0x4F, 0x0, 0x3, 0x1, 0x99, 0x1, 0x9A, 0x8, 0x63, 0x0, 0x3, 0x1, 0x9A, 0x1, 0x96, 0x8, 0x61, 0x0, 0x3, 0x1, 0x9A, 0x1, 0x97, 0x8, 0x62, 0x0, 0x3, 0x1, 0x9A, 0x1, 0x98, 0x8, 0x1A, 0x0, 0x3, 0x1, 0x9A, 0x1, 0x99, 0x8, 0x60, 0x0, 0x3, 0x1, 0x9A, 0x1, 0x9A, 0x8, 0x57, 0x0, 0x2, 0x1, 0x96, 0x8, 0x5A, 0x0, 0x2, 0x1, 0x97, 0x8, 0x54, 0x0, 0x2, 0x1, 0x99, 0x8, 0x53, 0x0, 0x2, 0x1, 0x9A, 0x0, 0x1C, 0x0, 0x3A, 0x0, 0x42, 0x0, 0x4A, 0x0, 0x52, 0x0, 0x5A, 0x0, 0x62, 0x0, 0x6A, 0x0, 0x72, 0x0, 0x7A, 0x0, 0x82, 0x0, 0x8A, 0x0, 0x92, 0x0, 0x9A, 0x0, 0xA2, 0x0, 0xAA, 0x0, 0xB2, 0x0, 0xBA, 0x0, 0xC2, 0x0, 0xCA, 0x0, 0xD2, 0x0, 0xDA, 0x0, 0xE2, 0x0, 0xEA, 0x0, 0xF2, 0x0, 0xFA, 0x1, 0x0, 0x1, 0x6, 0x1, 0xC, 0x8, 0x52, 0x0, 0x3, 0x1, 0x96, 0x1, 0x96, 0x8, 0x30, 0x0, 0x3, 0x1, 0x96, 0x1, 0x97, 0x8, 0x2F, 0x0, 0x3, 0x1, 0x96, 0x1, 0x98, 0x8, 0x51, 0x0, 0x3, 0x1, 0x96, 0x1, 0x99, 0x8, 0x2A, 0x0, 0x3, 0x1, 0x96, 0x1, 0x9A, 0x8, 0x48, 0x0, 0x3, 0x1, 0x97, 0x1, 0x96, 0x8, 0x46, 0x0, 0x3, 0x1, 0x97, 0x1, 0x97, 0x8, 0x47, 0x0, 0x3, 0x1, 0x97, 0x1, 0x98, 0x8, 0x44, 0x0, 0x3, 0x1, 0x97, 0x1, 0x99, 0x8, 0x45, 0x0, 0x3, 0x1, 0x97, 0x1, 0x9A, 0x8, 0x29, 0x0, 0x3, 0x1, 0x98, 0x1, 0x96, 0x8, 0x28, 0x0, 0x3, 0x1, 0x98, 0x1, 0x97, 0x8, 0x27, 0x0, 0x3, 0x1, 0x98, 0x1, 0x98, 0x8, 0x5C, 0x0, 0x3, 0x1, 0x98, 0x1, 0x99, 0x8, 0x31, 0x0, 0x3, 0x1, 0x98, 0x1, 0x9A, 0x8, 0x43, 0x0, 0x3, 0x1, 0x99, 0x1, 0x96, 0x8, 0x87, 0x0, 0x3, 0x1, 0x99, 0x1, 0x97, 0x8, 0x5B, 0x0, 0x3, 0x1, 0x99, 0x1, 0x98, 0x8, 0x65, 0x0, 0x3, 0x1, 0x99, 0x1, 0x9A, 0x8, 0x71, 0x0, 0x3, 0x1, 0x9A, 0x1, 0x96, 0x8, 0x56, 0x0, 0x3, 0x1, 0x9A, 0x1, 0x97, 0x8, 0x55, 0x0, 0x3, 0x1, 0x9A, 0x1, 0x98, 0x8, 0x58, 0x0, 0x3, 0x1, 0x9A, 0x1, 0x99, 0x8, 0x7A, 0x0, 0x3, 0x1, 0x9A, 0x1, 0x9A, 0x8, 0x41, 0x0, 0x2, 0x1, 0x96, 0x8, 0x3F, 0x0, 0x2, 0x1, 0x97, 0x8, 0x40, 0x0, 0x2, 0x1, 0x98, 0x8, 0x42, 0x0, 0x2, 0x1, 0x9A, 0x0, 0x1C, 0x0, 0x3A, 0x0, 0x42, 0x0, 0x4A, 0x0, 0x52, 0x0, 0x5A, 0x0, 0x62, 0x0, 0x6A, 0x0, 0x72, 0x0, 0x7A, 0x0, 0x82, 0x0, 0x8A, 0x0, 0x92, 0x0, 0x9A, 0x0, 0xA2, 0x0, 0xAA, 0x0, 0xB2, 0x0, 0xBA, 0x0, 0xC2, 0x0, 0xCA, 0x0, 0xD2, 0x0, 0xDA, 0x0, 0xE2, 0x0, 0xEA, 0x0, 0xF2, 0x0, 0xFA, 0x1, 0x0, 0x1, 0x6, 0x1, 0xC, 0x8, 0x1, 0x0, 0x3, 0x1, 0x96, 0x1, 0x96, 0x8, 0x59, 0x0, 0x3, 0x1, 0x96, 0x1, 0x97, 0x8, 0x4C, 0x0, 0x3, 0x1, 0x96, 0x1, 0x98, 0x8, 0x4D, 0x0, 0x3, 0x1, 0x96, 0x1, 0x99, 0x8, 0x4E, 0x0, 0x3, 0x1, 0x96, 0x1, 0x9A, 0x8, 0x15, 0x0, 0x3, 0x1, 0x97, 0x1, 0x96, 0x8, 0x3C, 0x0, 0x3, 0x1, 0x97, 0x1, 0x97, 0x8, 0x3B, 0x0, 0x3, 0x1, 0x97, 0x1, 0x98, 0x8, 0x3A, 0x0, 0x3, 0x1, 0x97, 0x1, 0x99, 0x8, 0x7B, 0x0, 0x3, 0x1, 0x97, 0x1, 0x9A, 0x8, 0x6, 0x0, 0x3, 0x1, 0x98, 0x1, 0x96, 0x7, 0xFF, 0x0, 0x3, 0x1, 0x98, 0x1, 0x97, 0x8, 0x4A, 0x0, 0x3, 0x1, 0x98, 0x1, 0x98, 0x8, 0x13, 0x0, 0x3, 0x1, 0x98, 0x1, 0x99, 0x8, 0x14, 0x0, 0x3, 0x1, 0x98, 0x1, 0x9A, 0x8, 0x77, 0x0, 0x3, 0x1, 0x99, 0x1, 0x96, 0x8, 0x79, 0x0, 0x3, 0x1, 0x99, 0x1, 0x97, 0x8, 0x78, 0x0, 0x3, 0x1, 0x99, 0x1, 0x98, 0x8, 0x76, 0x0, 0x3, 0x1, 0x99, 0x1, 0x99, 0x8, 0x75, 0x0, 0x3, 0x1, 0x99, 0x1, 0x9A, 0x8, 0x82, 0x0, 0x3, 0x1, 0x9A, 0x1, 0x96, 0x8, 0x83, 0x0, 0x3, 0x1, 0x9A, 0x1, 0x97, 0x8, 0x84, 0x0, 0x3, 0x1, 0x9A, 0x1, 0x98, 0x8, 0x7C, 0x0, 0x3, 0x1, 0x9A, 0x1, 0x99, 0x8, 0x74, 0x0, 0x2, 0x1, 0x96, 0x8, 0x73, 0x0, 0x2, 0x1, 0x97, 0x8, 0x72, 0x0, 0x2, 0x1, 0x98, 0x8, 0x70, 0x0, 0x2, 0x1, 0x99, 0x0, 0x2, 0x0, 0x1, 0x1, 0x96, 0x1, 0x9A, 0x0, 0x0, 0x0, 0x6, 0x0, 0x0, 0x0, 0xC, 0x0, 0x1E, 0x0, 0x30, 0x0, 0x42, 0x0, 0x54, 0x0, 0x66, 0x0, 0x78, 0x0, 0x94, 0x0, 0xAC, 0x0, 0xC4, 0x0, 0xDC, 0x0, 0xF4, 0x1, 0xC, 0x0, 0x3, 0x0, 0x1, 0x0, 0x88, 0x0, 0x1, 0x0, 0x6C, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x9, 0x0, 0x3, 0x0, 0x1, 0x0, 0x8E, 0x0, 0x1, 0x0, 0x5A, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x9, 0x0, 0x3, 0x0, 0x1, 0x0, 0x94, 0x0, 0x1, 0x0, 0x48, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0xA, 0x0, 0x3, 0x0, 0x1, 0x0, 0x9A, 0x0, 0x1, 0x0, 0x36, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0xB, 0x0, 0x3, 0x0, 0x1, 0x0, 0xA0, 0x0, 0x1, 0x0, 0x24, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x9, 0x0, 0x3, 0x0, 0x1, 0x0, 0xA6, 0x0, 0x1, 0x0, 0x12, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0xA, 0x0, 0x1, 0x0, 0x3, 0x3, 0x2B, 0x3, 0x2D, 0x3, 0x2E, 0x0, 0x3, 0x0, 0x1, 0x0, 0x12, 0x0, 0x1, 0x0, 0x90, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x9, 0x0, 0x1, 0x0, 0x1, 0x1, 0x20, 0x0, 0x3, 0x0, 0x1, 0x0, 0x12, 0x0, 0x1, 0x0, 0x78, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x9, 0x0, 0x1, 0x0, 0x1, 0x0, 0x8C, 0x0, 0x3, 0x0, 0x1, 0x0, 0x12, 0x0, 0x1, 0x0, 0x60, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0xA, 0x0, 0x1, 0x0, 0x1, 0x0, 0x93, 0x0, 0x3, 0x0, 0x1, 0x0, 0x12, 0x0, 0x1, 0x0, 0x48, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0xB, 0x0, 0x1, 0x0, 0x1, 0x0, 0xDC, 0x0, 0x3, 0x0, 0x1, 0x0, 0x12, 0x0, 0x1, 0x0, 0x30, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x9, 0x0, 0x1, 0x0, 0x1, 0x0, 0x97, 0x0, 0x3, 0x0, 0x1, 0x0, 0x12, 0x0, 0x1, 0x0, 0x18, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0xA, 0x0, 0x1, 0x0, 0x1, 0x1, 0x31, 0x0, 0x1, 0x0, 0x1, 0x3, 0x2C, 0x0, 0x1, 0x0, 0x0, 0x0, 0x1, 0x0, 0x8, 0x0, 0x2, 0x0, 0x3A, 0x0, 0x4, 0x8, 0x9B, 0x8, 0x9E, 0x8, 0x9B, 0x8, 0x9B, 0x0, 0x1, 0x0, 0x0, 0x0, 0x1, 0x0, 0x8, 0x0, 0x2, 0x0, 0x24, 0x0, 0x4, 0x8, 0x9A, 0x8, 0x9D, 0x8, 0x9A, 0x8, 0x9A, 0x0, 0x1, 0x0, 0x0, 0x0, 0x1, 0x0, 0x8, 0x0, 0x2, 0x0, 0xE, 0x0, 0x4, 0x8, 0x9C, 0x8, 0x9F, 0x8, 0x9C, 0x8, 0x9C, 0x0, 0x2, 0x0, 0x1, 0x3, 0x2B, 0x3, 0x2E, 0x0, 0x0, 0x0, 0x4, 0x0, 0x0, 0x0, 0x1, 0x0, 0x8, 0x0, 0x1, 0x0, 0x4E, 0x0, 0x6, 0x0, 0x12, 0x0, 0x1C, 0x0, 0x26, 0x0, 0x30, 0x0, 0x3A, 0x0, 0x44, 0x0, 0x1, 0x0, 0x4, 0x8, 0xAD, 0x0, 0x2, 0x8, 0x9B, 0x0, 0x1, 0x0, 0x4, 0x8, 0xAE, 0x0, 0x2, 0x8, 0x9A, 0x0, 0x1, 0x0, 0x4, 0x8, 0xB0, 0x0, 0x2, 0x8, 0x9B, 0x0, 0x1, 0x0, 0x4, 0x8, 0xAF, 0x0, 0x2, 0x8, 0x9C, 0x0, 0x1, 0x0, 0x4, 0x8, 0xAC, 0x0, 0x2, 0x8, 0x9B, 0x0, 0x1, 0x0, 0x4, 0x8, 0xB1, 0x0, 0x2, 0x8, 0x9A, 0x0, 0x1, 0x0, 0x6, 0x0, 0x8C, 0x0, 0x93, 0x0, 0x97, 0x0, 0xDC, 0x1, 0x20, 0x1, 0x31, 0x0, 0x1, 0x0, 0x0, 0x0, 0x1, 0x0, 0x8, 0x0, 0x1, 0x0, 0x6, 0x0, 0x2, 0x0, 0x1, 0x0, 0x2, 0x9, 0x56, 0x9, 0x57, 0x0, 0x1, 0x0, 0x0, 0x0, 0x1, 0x0, 0x8, 0x0, 0x2, 0x0, 0x18, 0x0, 0x9, 0xC, 0xF4, 0xC, 0xF5, 0xC, 0xF6, 0xC, 0xF7, 0xC, 0xFA, 0xC, 0xFB, 0xC, 0xFC, 0xC, 0xF8, 0xC, 0xF9, 0x0, 0x1, 0x0, 0x9, 0x9, 0x8, 0x9, 0x9, 0x9, 0x1A, 0x9, 0x1B, 0x9, 0x9D, 0x9, 0xA6, 0x9, 0xBE, 0xB, 0x9, 0xB, 0xA, 0x0, 0x1, 0x0, 0x0, 0x0, 0x1, 0x0, 0x8, 0x0, 0x1, 0x0, 0x6, 0x0, 0x1, 0x0, 0x1, 0x0, 0x1, 0x4, 0x53, 0x0, 0x4, 0x0, 0x0, 0x0, 0x1, 0x0, 0x8, 0x0, 0x1, 0x0, 0x40, 0x0, 0x1, 0x0, 0x8, 0x0, 0x2, 0x0, 0x6, 0x0, 0xE, 0x7, 0x29, 0x0, 0x3, 0x0, 0x4B, 0x0, 0x4E, 0x7, 0x27, 0x0, 0x2, 0x0, 0x4E, 0x0, 0x4, 0x0, 0x0, 0x0, 0x1, 0x0, 0x8, 0x0, 0x1, 0x0, 0x1C, 0x0, 0x1, 0x0, 0x8, 0x0, 0x2, 0x0, 0x6, 0x0, 0xE, 0x7, 0x2A, 0x0, 0x3, 0x0, 0x4B, 0x0, 0x51, 0x7, 0x28, 0x0, 0x2, 0x0, 0x51, 0x0, 0x1, 0x0, 0x1, 0x0, 0x4B, 0x0, 0x4, 0x0, 0x0, 0x0, 0x1, 0x0, 0x8, 0x0, 0x1, 0x0, 0x2A, 0x0, 0x3, 0x0, 0xC, 0x0, 0x16, 0x0, 0x20, 0x0, 0x1, 0x0, 0x4, 0x7, 0x26, 0x0, 0x2, 0x0, 0x4B, 0x0, 0x1, 0x0, 0x4, 0x7, 0x2C, 0x0, 0x2, 0x0, 0x59, 0x0, 0x1, 0x0, 0x4, 0x7, 0x2B, 0x0, 0x2, 0x0, 0x59, 0x0, 0x1, 0x0, 0x3, 0x0, 0x4B, 0x0, 0x58, 0x0, 0x96, 0x0, 0x1, 0x0, 0x0, 0x0, 0x1, 0x0, 0x8, 0x0, 0x2, 0x0, 0xA, 0x0, 0x2, 0x7, 0xAA, 0x7, 0xA7, 0x0, 0x1, 0x0, 0x2, 0x0, 0x30, 0x0, 0x4C, 0x0, 0x1, 0x0, 0x0, 0x0, 0x1, 0x0, 0x8, 0x0, 0x1, 0x0, 0x6, 0x7, 0x5B, 0x0, 0x1, 0x0, 0x1, 0x0, 0x4C, 0x0, 0x1, 0x0, 0x0, 0x0, 0x1, 0x0, 0x8, 0x0, 0x1, 0x0, 0x6, 0x5, 0x6E, 0x0, 0x1, 0x0, 0x1, 0x2, 0x3A, 0x0, 0x1, 0x0, 0x0, 0x0, 0x1, 0x0, 0x8, 0x0, 0x1, 0x0, 0x6, 0x7, 0x72, 0x0, 0x1, 0x0, 0x1, 0x0, 0x37, 0x0, 0x1, 0x0, 0x0, 0x0, 0x1, 0x0, 0x8, 0x0, 0x2, 0x0, 0x1C, 0x0, 0x2, 0x7, 0xAA, 0x7, 0xAB, 0x0, 0x1, 0x0, 0x0, 0x0, 0x1, 0x0, 0x8, 0x0, 0x2, 0x0, 0xA, 0x0, 0x2, 0x7, 0xAC, 0x7, 0xAD, 0x0, 0x1, 0x0, 0x2, 0x0, 0x30, 0x0, 0x50, 0x0, 0x1, 0x0, 0x0, 0x0, 0x1, 0x0, 0x8, 0x0, 0x2, 0x0, 0x1E, 0x0, 0xC, 0x7, 0xCF, 0x7, 0xD1, 0x7, 0xD0, 0x7, 0xD2, 0x7, 0xD3, 0x8, 0xA1, 0x8, 0xA2, 0x8, 0xA3, 0x8, 0xA4, 0x8, 0xA5, 0x8, 0xA6, 0x8, 0xA7, 0x0, 0x1, 0x0, 0xC, 0x0, 0x28, 0x0, 0x29, 0x0, 0x2C, 0x0, 0x34, 0x0, 0x36, 0x0, 0x47, 0x0, 0x48, 0x0, 0x49, 0x0, 0x4C, 0x0, 0x54, 0x0, 0x55, 0x0, 0x56, 0x0, 0x1, 0x0, 0x0, 0x0, 0x1, 0x0, 0x8, 0x0, 0x2, 0x0, 0xC, 0x0, 0x3, 0x8, 0xA8, 0x8, 0xA9, 0x8, 0xA9, 0x0, 0x1, 0x0, 0x3, 0x0, 0x4A, 0x0, 0x4C, 0x8, 0xA4, 0x0, 0x1, 0x0, 0x0, 0x0, 0x1, 0x0, 0x8, 0x0, 0x2, 0x0, 0x2E, 0x0, 0x14, 0x7, 0xE9, 0x7, 0xED, 0x7, 0xE7, 0x7, 0xE4, 0x7, 0xE6, 0x7, 0xE5, 0x7, 0xEA, 0x7, 0xE8, 0x7, 0xEC, 0x7, 0xEB, 0x7, 0xD9, 0x7, 0xD4, 0x7, 0xD5, 0x7, 0xD6, 0x7, 0xD7, 0x7, 0xD8, 0x0, 0x1B, 0x0, 0x1D, 0x7, 0xDD, 0x8, 0x99, 0x0, 0x2, 0x0, 0x4, 0x0, 0x15, 0x0, 0x1E, 0x0, 0x0, 0x8, 0xA0, 0x8, 0xA0, 0x0, 0xA, 0x8, 0xAB, 0x8, 0xAB, 0x0, 0xB, 0xA, 0xDD, 0xA, 0xE4, 0x0, 0xC, 0x0, 0x1, 0x0, 0x0, 0x0, 0x1, 0x0, 0x8, 0x0, 0x2, 0x0, 0x2E, 0x0, 0x14, 0xA, 0xE4, 0x8, 0xAB, 0xA, 0xDD, 0xA, 0xDE, 0xA, 0xDF, 0xA, 0xE0, 0xA, 0xE1, 0x8, 0xA0, 0xA, 0xE2, 0xA, 0xE3, 0x7, 0xD6, 0x7, 0xD8, 0x7, 0xD7, 0x7, 0xD5, 0x7, 0xD9, 0x8, 0x99, 0x0, 0x1B, 0x7, 0xDD, 0x0, 0x1D, 0x7, 0xD4, 0x0, 0x2, 0x0, 0x2, 0x0, 0x15, 0x0, 0x1E, 0x0, 0x0, 0x7, 0xE4, 0x7, 0xED, 0x0, 0xA, 0x0, 0x1, 0x0, 0x0, 0x0, 0x1, 0x0, 0x8, 0x0, 0x2, 0x0, 0x2E, 0x0, 0x14, 0x7, 0xEA, 0x7, 0xEC, 0x7, 0xED, 0x7, 0xE7, 0x7, 0xE4, 0x7, 0xE6, 0x7, 0xE5, 0x7, 0xE8, 0x7, 0xEB, 0x7, 0xE9, 0x0, 0x1C, 0x0, 0x16, 0x0, 0x17, 0x0, 0x18, 0x0, 0x19, 0x0, 0x1A, 0x0, 0x1B, 0x0, 0x1D, 0x0, 0x1E, 0x0, 0x15, 0x0, 0x1, 0x0, 0x14, 0x0, 0x1B, 0x0, 0x1D, 0x7, 0xD4, 0x7, 0xD5, 0x7, 0xD6, 0x7, 0xD7, 0x7, 0xD8, 0x7, 0xD9, 0x7, 0xDD, 0x8, 0x99, 0x8, 0xA0, 0x8, 0xAB, 0xA, 0xDD, 0xA, 0xDE, 0xA, 0xDF, 0xA, 0xE0, 0xA, 0xE1, 0xA, 0xE2, 0xA, 0xE3, 0xA, 0xE4, 0x0, 0x1, 0x0, 0x0, 0x0, 0x1, 0x0, 0x8, 0x0, 0x2, 0x0, 0x2E, 0x0, 0x14, 0xA, 0xE1, 0xA, 0xE2, 0x8, 0xAB, 0xA, 0xDD, 0xA, 0xDE, 0xA, 0xDF, 0xA, 0xE0, 0x8, 0xA0, 0xA, 0xE3, 0x0, 0x18, 0x0, 0x1A, 0x0, 0x19, 0x0, 0x17, 0x0, 0x1C, 0x0, 0x15, 0x0, 0x1B, 0x0, 0x1E, 0x0, 0x1D, 0x0, 0x16, 0xA, 0xE4, 0x0, 0x2, 0x0, 0x6, 0x0, 0x1B, 0x0, 0x1B, 0x0, 0x0, 0x0, 0x1D, 0x0, 0x1D, 0x0, 0x1, 0x7, 0xD4, 0x7, 0xD9, 0x0, 0x2, 0x7, 0xDD, 0x7, 0xDD, 0x0, 0x8, 0x7, 0xE4, 0x7, 0xED, 0x0, 0x9, 0x8, 0x99, 0x8, 0x99, 0x0, 0x13, 0x0, 0x1, 0x0, 0x0, 0x0, 0x1, 0x0, 0x8, 0x0, 0x1, 0x0, 0x6, 0x4, 0x6F, 0x0, 0x1, 0x0, 0x1, 0x0, 0x14, 0x0, 0x6, 0x0, 0x0, 0x0, 0x1, 0x0, 0x8, 0x0, 0x3, 0x0, 0x1, 0x0, 0x12, 0x0, 0x1, 0x0, 0x6C, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x21, 0x0, 0x2, 0x0, 0x3, 0x4, 0x83, 0x4, 0x83, 0x0, 0x0, 0x7, 0x41, 0x7, 0x43, 0x0, 0x1, 0x7, 0x9D, 0x7, 0xA3, 0x0, 0x4, 0x0, 0x1, 0x0, 0x0, 0x0, 0x1, 0x0, 0x8, 0x0, 0x2, 0x0, 0x3C, 0x0, 0xA, 0x7, 0x43, 0x7, 0x42, 0x7, 0x41, 0x7, 0x9D, 0x7, 0x9E, 0x7, 0x9F, 0x7, 0xA0, 0x7, 0xA1, 0x7, 0xA2, 0x7, 0xA3, 0x0, 0x1, 0x0, 0x0, 0x0, 0x1, 0x0, 0x8, 0x0, 0x2, 0x0, 0x1A, 0x0, 0xA, 0x7, 0xC8, 0x0, 0x7B, 0x0, 0x74, 0x0, 0x75, 0x7, 0xC9, 0x7, 0xCA, 0x7, 0xCB, 0x7, 0xCC, 0x7, 0xCD, 0x7, 0xCE, 0x0, 0x2, 0x0, 0x1, 0x0, 0x15, 0x0, 0x1E, 0x0, 0x0} diff --git a/vendor/github.com/wcharczuk/go-chart/v2/seq.go b/vendor/github.com/wcharczuk/go-chart/v2/seq.go new file mode 100644 index 00000000..76ac40d6 --- /dev/null +++ b/vendor/github.com/wcharczuk/go-chart/v2/seq.go @@ -0,0 +1,275 @@ +package chart + +import ( + "math" + "sort" +) + +// ValueSequence returns a sequence for a given values set. +func ValueSequence(values ...float64) Seq { + return Seq{NewArray(values...)} +} + +// Sequence is a provider for values for a seq. +type Sequence interface { + Len() int + GetValue(int) float64 +} + +// Seq is a utility wrapper for seq providers. +type Seq struct { + Sequence +} + +// Values enumerates the seq into a slice. +func (s Seq) Values() (output []float64) { + if s.Len() == 0 { + return + } + + output = make([]float64, s.Len()) + for i := 0; i < s.Len(); i++ { + output[i] = s.GetValue(i) + } + return +} + +// Each applies the `mapfn` to all values in the value provider. +func (s Seq) Each(mapfn func(int, float64)) { + for i := 0; i < s.Len(); i++ { + mapfn(i, s.GetValue(i)) + } +} + +// Map applies the `mapfn` to all values in the value provider, +// returning a new seq. +func (s Seq) Map(mapfn func(i int, v float64) float64) Seq { + output := make([]float64, s.Len()) + for i := 0; i < s.Len(); i++ { + mapfn(i, s.GetValue(i)) + } + return Seq{Array(output)} +} + +// FoldLeft collapses a seq from left to right. +func (s Seq) FoldLeft(mapfn func(i int, v0, v float64) float64) (v0 float64) { + if s.Len() == 0 { + return 0 + } + + if s.Len() == 1 { + return s.GetValue(0) + } + + v0 = s.GetValue(0) + for i := 1; i < s.Len(); i++ { + v0 = mapfn(i, v0, s.GetValue(i)) + } + return +} + +// FoldRight collapses a seq from right to left. +func (s Seq) FoldRight(mapfn func(i int, v0, v float64) float64) (v0 float64) { + if s.Len() == 0 { + return 0 + } + + if s.Len() == 1 { + return s.GetValue(0) + } + + v0 = s.GetValue(s.Len() - 1) + for i := s.Len() - 2; i >= 0; i-- { + v0 = mapfn(i, v0, s.GetValue(i)) + } + return +} + +// Min returns the minimum value in the seq. +func (s Seq) Min() float64 { + if s.Len() == 0 { + return 0 + } + min := s.GetValue(0) + var value float64 + for i := 1; i < s.Len(); i++ { + value = s.GetValue(i) + if value < min { + min = value + } + } + return min +} + +// Max returns the maximum value in the seq. +func (s Seq) Max() float64 { + if s.Len() == 0 { + return 0 + } + max := s.GetValue(0) + var value float64 + for i := 1; i < s.Len(); i++ { + value = s.GetValue(i) + if value > max { + max = value + } + } + return max +} + +// MinMax returns the minimum and the maximum in one pass. +func (s Seq) MinMax() (min, max float64) { + if s.Len() == 0 { + return + } + min = s.GetValue(0) + max = min + var value float64 + for i := 1; i < s.Len(); i++ { + value = s.GetValue(i) + if value < min { + min = value + } + if value > max { + max = value + } + } + return +} + +// Sort returns the seq sorted in ascending order. +// This fully enumerates the seq. +func (s Seq) Sort() Seq { + if s.Len() == 0 { + return s + } + values := s.Values() + sort.Float64s(values) + return Seq{Array(values)} +} + +// Reverse reverses the sequence +func (s Seq) Reverse() Seq { + if s.Len() == 0 { + return s + } + + values := s.Values() + valuesLen := len(values) + valuesLen1 := len(values) - 1 + valuesLen2 := valuesLen >> 1 + var i, j float64 + for index := 0; index < valuesLen2; index++ { + i = values[index] + j = values[valuesLen1-index] + values[index] = j + values[valuesLen1-index] = i + } + + return Seq{Array(values)} +} + +// Median returns the median or middle value in the sorted seq. +func (s Seq) Median() (median float64) { + l := s.Len() + if l == 0 { + return + } + + sorted := s.Sort() + if l%2 == 0 { + v0 := sorted.GetValue(l/2 - 1) + v1 := sorted.GetValue(l/2 + 1) + median = (v0 + v1) / 2 + } else { + median = float64(sorted.GetValue(l << 1)) + } + + return +} + +// Sum adds all the elements of a series together. +func (s Seq) Sum() (accum float64) { + if s.Len() == 0 { + return 0 + } + + for i := 0; i < s.Len(); i++ { + accum += s.GetValue(i) + } + return +} + +// Average returns the float average of the values in the buffer. +func (s Seq) Average() float64 { + if s.Len() == 0 { + return 0 + } + + return s.Sum() / float64(s.Len()) +} + +// Variance computes the variance of the buffer. +func (s Seq) Variance() float64 { + if s.Len() == 0 { + return 0 + } + + m := s.Average() + var variance, v float64 + for i := 0; i < s.Len(); i++ { + v = s.GetValue(i) + variance += (v - m) * (v - m) + } + + return variance / float64(s.Len()) +} + +// StdDev returns the standard deviation. +func (s Seq) StdDev() float64 { + if s.Len() == 0 { + return 0 + } + + return math.Pow(s.Variance(), 0.5) +} + +//Percentile finds the relative standing in a slice of floats. +// `percent` should be given on the interval [0,1.0). +func (s Seq) Percentile(percent float64) (percentile float64) { + l := s.Len() + if l == 0 { + return 0 + } + + if percent < 0 || percent > 1.0 { + panic("percent out of range [0.0, 1.0)") + } + + sorted := s.Sort() + index := percent * float64(l) + if index == float64(int64(index)) { + i := f64i(index) + ci := sorted.GetValue(i - 1) + c := sorted.GetValue(i) + percentile = (ci + c) / 2.0 + } else { + i := f64i(index) + percentile = sorted.GetValue(i) + } + + return percentile +} + +// Normalize maps every value to the interval [0, 1.0]. +func (s Seq) Normalize() Seq { + min, max := s.MinMax() + + delta := max - min + output := make([]float64, s.Len()) + for i := 0; i < s.Len(); i++ { + output[i] = (s.GetValue(i) - min) / delta + } + + return Seq{Array(output)} +} diff --git a/vendor/github.com/wcharczuk/go-chart/v2/series.go b/vendor/github.com/wcharczuk/go-chart/v2/series.go new file mode 100644 index 00000000..7986d012 --- /dev/null +++ b/vendor/github.com/wcharczuk/go-chart/v2/series.go @@ -0,0 +1,10 @@ +package chart + +// Series is an alias to Renderable. +type Series interface { + GetName() string + GetYAxis() YAxisType + GetStyle() Style + Validate() error + Render(r Renderer, canvasBox Box, xrange, yrange Range, s Style) +} diff --git a/vendor/github.com/wcharczuk/go-chart/v2/sma_series.go b/vendor/github.com/wcharczuk/go-chart/v2/sma_series.go new file mode 100644 index 00000000..b952c0ad --- /dev/null +++ b/vendor/github.com/wcharczuk/go-chart/v2/sma_series.go @@ -0,0 +1,120 @@ +package chart + +import ( + "fmt" +) + +const ( + // DefaultSimpleMovingAveragePeriod is the default number of values to average. + DefaultSimpleMovingAveragePeriod = 16 +) + +// Interface Assertions. +var ( + _ Series = (*SMASeries)(nil) + _ FirstValuesProvider = (*SMASeries)(nil) + _ LastValuesProvider = (*SMASeries)(nil) +) + +// SMASeries is a computed series. +type SMASeries struct { + Name string + Style Style + YAxis YAxisType + + Period int + InnerSeries ValuesProvider +} + +// GetName returns the name of the time series. +func (sma SMASeries) GetName() string { + return sma.Name +} + +// GetStyle returns the line style. +func (sma SMASeries) GetStyle() Style { + return sma.Style +} + +// GetYAxis returns which YAxis the series draws on. +func (sma SMASeries) GetYAxis() YAxisType { + return sma.YAxis +} + +// Len returns the number of elements in the series. +func (sma SMASeries) Len() int { + return sma.InnerSeries.Len() +} + +// GetPeriod returns the window size. +func (sma SMASeries) GetPeriod(defaults ...int) int { + if sma.Period == 0 { + if len(defaults) > 0 { + return defaults[0] + } + return DefaultSimpleMovingAveragePeriod + } + return sma.Period +} + +// GetValues gets a value at a given index. +func (sma SMASeries) GetValues(index int) (x, y float64) { + if sma.InnerSeries == nil || sma.InnerSeries.Len() == 0 { + return + } + px, _ := sma.InnerSeries.GetValues(index) + x = px + y = sma.getAverage(index) + return +} + +// GetFirstValues computes the first moving average value. +func (sma SMASeries) GetFirstValues() (x, y float64) { + if sma.InnerSeries == nil || sma.InnerSeries.Len() == 0 { + return + } + px, _ := sma.InnerSeries.GetValues(0) + x = px + y = sma.getAverage(0) + return +} + +// GetLastValues computes the last moving average value but walking back window size samples, +// and recomputing the last moving average chunk. +func (sma SMASeries) GetLastValues() (x, y float64) { + if sma.InnerSeries == nil || sma.InnerSeries.Len() == 0 { + return + } + seriesLen := sma.InnerSeries.Len() + px, _ := sma.InnerSeries.GetValues(seriesLen - 1) + x = px + y = sma.getAverage(seriesLen - 1) + return +} + +func (sma SMASeries) getAverage(index int) float64 { + period := sma.GetPeriod() + floor := MaxInt(0, index-period) + var accum float64 + var count float64 + for x := index; x >= floor; x-- { + _, vy := sma.InnerSeries.GetValues(x) + accum += vy + count += 1.0 + } + return accum / count +} + +// Render renders the series. +func (sma SMASeries) Render(r Renderer, canvasBox Box, xrange, yrange Range, defaults Style) { + style := sma.Style.InheritFrom(defaults) + Draw.LineSeries(r, canvasBox, xrange, yrange, style, sma) +} + +// Validate validates the series. +func (sma SMASeries) Validate() error { + if sma.InnerSeries == nil { + return fmt.Errorf("sma series requires InnerSeries to be set") + } + return nil +} diff --git a/vendor/github.com/wcharczuk/go-chart/v2/stacked_bar_chart.go b/vendor/github.com/wcharczuk/go-chart/v2/stacked_bar_chart.go new file mode 100644 index 00000000..10aa5451 --- /dev/null +++ b/vendor/github.com/wcharczuk/go-chart/v2/stacked_bar_chart.go @@ -0,0 +1,610 @@ +package chart + +import ( + "errors" + "fmt" + "io" + "math" + + "github.com/golang/freetype/truetype" +) + +// StackedBar is a bar within a StackedBarChart. +type StackedBar struct { + Name string + Width int + Values []Value +} + +// GetWidth returns the width of the bar. +func (sb StackedBar) GetWidth() int { + if sb.Width == 0 { + return 50 + } + return sb.Width +} + +// StackedBarChart is a chart that draws sections of a bar based on percentages. +type StackedBarChart struct { + Title string + TitleStyle Style + + ColorPalette ColorPalette + + Width int + Height int + DPI float64 + + Background Style + Canvas Style + + XAxis Style + YAxis Style + + BarSpacing int + + Font *truetype.Font + defaultFont *truetype.Font + + IsHorizontal bool + + Bars []StackedBar + Elements []Renderable +} + +// GetDPI returns the dpi for the chart. +func (sbc StackedBarChart) GetDPI(defaults ...float64) float64 { + if sbc.DPI == 0 { + if len(defaults) > 0 { + return defaults[0] + } + return DefaultDPI + } + return sbc.DPI +} + +// GetFont returns the text font. +func (sbc StackedBarChart) GetFont() *truetype.Font { + if sbc.Font == nil { + return sbc.defaultFont + } + return sbc.Font +} + +// GetWidth returns the chart width or the default value. +func (sbc StackedBarChart) GetWidth() int { + if sbc.Width == 0 { + return DefaultChartWidth + } + return sbc.Width +} + +// GetHeight returns the chart height or the default value. +func (sbc StackedBarChart) GetHeight() int { + if sbc.Height == 0 { + return DefaultChartWidth + } + return sbc.Height +} + +// GetBarSpacing returns the spacing between bars. +func (sbc StackedBarChart) GetBarSpacing() int { + if sbc.BarSpacing == 0 { + return 100 + } + return sbc.BarSpacing +} + +// Render renders the chart with the given renderer to the given io.Writer. +func (sbc StackedBarChart) Render(rp RendererProvider, w io.Writer) error { + if len(sbc.Bars) == 0 { + return errors.New("please provide at least one bar") + } + + r, err := rp(sbc.GetWidth(), sbc.GetHeight()) + if err != nil { + return err + } + + if sbc.Font == nil { + defaultFont, err := GetDefaultFont() + if err != nil { + return err + } + sbc.defaultFont = defaultFont + } + r.SetDPI(sbc.GetDPI(DefaultDPI)) + + var canvasBox Box + if sbc.IsHorizontal { + canvasBox = sbc.getHorizontalAdjustedCanvasBox(r, sbc.getDefaultCanvasBox()) + sbc.drawCanvas(r, canvasBox) + sbc.drawHorizontalBars(r, canvasBox) + sbc.drawHorizontalXAxis(r, canvasBox) + sbc.drawHorizontalYAxis(r, canvasBox) + } else { + canvasBox = sbc.getAdjustedCanvasBox(r, sbc.getDefaultCanvasBox()) + sbc.drawCanvas(r, canvasBox) + sbc.drawBars(r, canvasBox) + sbc.drawXAxis(r, canvasBox) + sbc.drawYAxis(r, canvasBox) + } + + sbc.drawTitle(r) + for _, a := range sbc.Elements { + a(r, canvasBox, sbc.styleDefaultsElements()) + } + + return r.Save(w) +} + +func (sbc StackedBarChart) drawCanvas(r Renderer, canvasBox Box) { + Draw.Box(r, canvasBox, sbc.getCanvasStyle()) +} + +func (sbc StackedBarChart) drawBars(r Renderer, canvasBox Box) { + xoffset := canvasBox.Left + for _, bar := range sbc.Bars { + sbc.drawBar(r, canvasBox, xoffset, bar) + xoffset += (sbc.GetBarSpacing() + bar.GetWidth()) + } +} + +func (sbc StackedBarChart) drawHorizontalBars(r Renderer, canvasBox Box) { + yOffset := canvasBox.Top + for _, bar := range sbc.Bars { + sbc.drawHorizontalBar(r, canvasBox, yOffset, bar) + yOffset += sbc.GetBarSpacing() + bar.GetWidth() + } +} + +func (sbc StackedBarChart) drawBar(r Renderer, canvasBox Box, xoffset int, bar StackedBar) int { + barSpacing2 := sbc.GetBarSpacing() >> 1 + bxl := xoffset + barSpacing2 + bxr := bxl + bar.GetWidth() + + normalizedBarComponents := Values(bar.Values).Normalize() + yoffset := canvasBox.Top + for index, bv := range normalizedBarComponents { + barHeight := int(math.Ceil(bv.Value * float64(canvasBox.Height()))) + barBox := Box{ + Top: yoffset, + Left: bxl, + Right: bxr, + Bottom: MinInt(yoffset+barHeight, canvasBox.Bottom-DefaultStrokeWidth), + } + Draw.Box(r, barBox, bv.Style.InheritFrom(sbc.styleDefaultsStackedBarValue(index))) + yoffset += barHeight + } + + // draw the labels + yoffset = canvasBox.Top + var lx, ly int + for index, bv := range normalizedBarComponents { + barHeight := int(math.Ceil(bv.Value * float64(canvasBox.Height()))) + + if len(bv.Label) > 0 { + lx = bxl + ((bxr - bxl) / 2) + ly = yoffset + (barHeight / 2) + + bv.Style.InheritFrom(sbc.styleDefaultsStackedBarValue(index)).WriteToRenderer(r) + tb := r.MeasureText(bv.Label) + lx = lx - (tb.Width() >> 1) + ly = ly + (tb.Height() >> 1) + + if lx < 0 { + lx = 0 + } + if ly < 0 { + lx = 0 + } + + r.Text(bv.Label, lx, ly) + } + yoffset += barHeight + } + + return bxr +} + +func (sbc StackedBarChart) drawHorizontalBar(r Renderer, canvasBox Box, yoffset int, bar StackedBar) { + halfBarSpacing := sbc.GetBarSpacing() >> 1 + + boxTop := yoffset + halfBarSpacing + boxBottom := boxTop + bar.GetWidth() + + normalizedBarComponents := Values(bar.Values).Normalize() + + xOffset := canvasBox.Right + for index, bv := range normalizedBarComponents { + barHeight := int(math.Ceil(bv.Value * float64(canvasBox.Width()))) + barBox := Box{ + Top: boxTop, + Left: MinInt(xOffset-barHeight, canvasBox.Left+DefaultStrokeWidth), + Right: xOffset, + Bottom: boxBottom, + } + Draw.Box(r, barBox, bv.Style.InheritFrom(sbc.styleDefaultsStackedBarValue(index))) + xOffset -= barHeight + } + + // draw the labels + xOffset = canvasBox.Right + var lx, ly int + for index, bv := range normalizedBarComponents { + barHeight := int(math.Ceil(bv.Value * float64(canvasBox.Width()))) + + if len(bv.Label) > 0 { + lx = xOffset - (barHeight / 2) + ly = boxTop + ((boxBottom - boxTop) / 2) + + bv.Style.InheritFrom(sbc.styleDefaultsStackedBarValue(index)).WriteToRenderer(r) + tb := r.MeasureText(bv.Label) + lx = lx - (tb.Width() >> 1) + ly = ly + (tb.Height() >> 1) + + if lx < 0 { + lx = 0 + } + if ly < 0 { + lx = 0 + } + + r.Text(bv.Label, lx, ly) + } + xOffset -= barHeight + } +} + +func (sbc StackedBarChart) drawXAxis(r Renderer, canvasBox Box) { + if !sbc.XAxis.Hidden { + axisStyle := sbc.XAxis.InheritFrom(sbc.styleDefaultsAxes()) + axisStyle.WriteToRenderer(r) + + r.MoveTo(canvasBox.Left, canvasBox.Bottom) + r.LineTo(canvasBox.Right, canvasBox.Bottom) + r.Stroke() + + r.MoveTo(canvasBox.Left, canvasBox.Bottom) + r.LineTo(canvasBox.Left, canvasBox.Bottom+DefaultVerticalTickHeight) + r.Stroke() + + cursor := canvasBox.Left + for _, bar := range sbc.Bars { + + barLabelBox := Box{ + Top: canvasBox.Bottom + DefaultXAxisMargin, + Left: cursor, + Right: cursor + bar.GetWidth() + sbc.GetBarSpacing(), + Bottom: sbc.GetHeight(), + } + if len(bar.Name) > 0 { + Draw.TextWithin(r, bar.Name, barLabelBox, axisStyle) + } + axisStyle.WriteToRenderer(r) + r.MoveTo(barLabelBox.Right, canvasBox.Bottom) + r.LineTo(barLabelBox.Right, canvasBox.Bottom+DefaultVerticalTickHeight) + r.Stroke() + cursor += bar.GetWidth() + sbc.GetBarSpacing() + } + } +} + +func (sbc StackedBarChart) drawHorizontalXAxis(r Renderer, canvasBox Box) { + if !sbc.XAxis.Hidden { + axisStyle := sbc.XAxis.InheritFrom(sbc.styleDefaultsAxes()) + axisStyle.WriteToRenderer(r) + r.MoveTo(canvasBox.Left, canvasBox.Bottom) + r.LineTo(canvasBox.Right, canvasBox.Bottom) + r.Stroke() + + r.MoveTo(canvasBox.Left, canvasBox.Bottom) + r.LineTo(canvasBox.Left, canvasBox.Bottom+DefaultVerticalTickHeight) + r.Stroke() + + ticks := LinearRangeWithStep(0.0, 1.0, 0.2) + for _, t := range ticks { + axisStyle.GetStrokeOptions().WriteToRenderer(r) + tx := canvasBox.Left + int(t*float64(canvasBox.Width())) + r.MoveTo(tx, canvasBox.Bottom) + r.LineTo(tx, canvasBox.Bottom+DefaultVerticalTickHeight) + r.Stroke() + + axisStyle.GetTextOptions().WriteToRenderer(r) + text := fmt.Sprintf("%0.0f%%", t*100) + + textBox := r.MeasureText(text) + textX := tx - (textBox.Width() >> 1) + textY := canvasBox.Bottom + DefaultXAxisMargin + 10 + + if t == 1 { + textX = canvasBox.Right - textBox.Width() + } + + Draw.Text(r, text, textX, textY, axisStyle) + } + } +} + +func (sbc StackedBarChart) drawYAxis(r Renderer, canvasBox Box) { + if !sbc.YAxis.Hidden { + axisStyle := sbc.YAxis.InheritFrom(sbc.styleDefaultsAxes()) + axisStyle.WriteToRenderer(r) + r.MoveTo(canvasBox.Right, canvasBox.Top) + r.LineTo(canvasBox.Right, canvasBox.Bottom) + r.Stroke() + + r.MoveTo(canvasBox.Right, canvasBox.Bottom) + r.LineTo(canvasBox.Right+DefaultHorizontalTickWidth, canvasBox.Bottom) + r.Stroke() + + ticks := LinearRangeWithStep(0.0, 1.0, 0.2) + for _, t := range ticks { + axisStyle.GetStrokeOptions().WriteToRenderer(r) + ty := canvasBox.Bottom - int(t*float64(canvasBox.Height())) + r.MoveTo(canvasBox.Right, ty) + r.LineTo(canvasBox.Right+DefaultHorizontalTickWidth, ty) + r.Stroke() + + axisStyle.GetTextOptions().WriteToRenderer(r) + text := fmt.Sprintf("%0.0f%%", t*100) + + tb := r.MeasureText(text) + Draw.Text(r, text, canvasBox.Right+DefaultYAxisMargin+5, ty+(tb.Height()>>1), axisStyle) + } + } +} + +func (sbc StackedBarChart) drawHorizontalYAxis(r Renderer, canvasBox Box) { + if !sbc.YAxis.Hidden { + axisStyle := sbc.YAxis.InheritFrom(sbc.styleDefaultsHorizontalAxes()) + axisStyle.WriteToRenderer(r) + + r.MoveTo(canvasBox.Left, canvasBox.Bottom) + r.LineTo(canvasBox.Left, canvasBox.Top) + r.Stroke() + + r.MoveTo(canvasBox.Left, canvasBox.Bottom) + r.LineTo(canvasBox.Left-DefaultHorizontalTickWidth, canvasBox.Bottom) + r.Stroke() + + cursor := canvasBox.Top + for _, bar := range sbc.Bars { + barLabelBox := Box{ + Top: cursor, + Left: 0, + Right: canvasBox.Left - DefaultYAxisMargin, + Bottom: cursor + bar.GetWidth() + sbc.GetBarSpacing(), + } + if len(bar.Name) > 0 { + Draw.TextWithin(r, bar.Name, barLabelBox, axisStyle) + } + axisStyle.WriteToRenderer(r) + r.MoveTo(canvasBox.Left, barLabelBox.Bottom) + r.LineTo(canvasBox.Left-DefaultHorizontalTickWidth, barLabelBox.Bottom) + r.Stroke() + cursor += bar.GetWidth() + sbc.GetBarSpacing() + } + } +} + +func (sbc StackedBarChart) drawTitle(r Renderer) { + if len(sbc.Title) > 0 && !sbc.TitleStyle.Hidden { + r.SetFont(sbc.TitleStyle.GetFont(sbc.GetFont())) + r.SetFontColor(sbc.TitleStyle.GetFontColor(sbc.GetColorPalette().TextColor())) + titleFontSize := sbc.TitleStyle.GetFontSize(DefaultTitleFontSize) + r.SetFontSize(titleFontSize) + + textBox := r.MeasureText(sbc.Title) + + textWidth := textBox.Width() + textHeight := textBox.Height() + + titleX := (sbc.GetWidth() >> 1) - (textWidth >> 1) + titleY := sbc.TitleStyle.Padding.GetTop(DefaultTitleTop) + textHeight + + r.Text(sbc.Title, titleX, titleY) + } +} + +func (sbc StackedBarChart) getCanvasStyle() Style { + return sbc.Canvas.InheritFrom(sbc.styleDefaultsCanvas()) +} + +func (sbc StackedBarChart) styleDefaultsCanvas() Style { + return Style{ + FillColor: sbc.GetColorPalette().CanvasColor(), + StrokeColor: sbc.GetColorPalette().CanvasStrokeColor(), + StrokeWidth: DefaultCanvasStrokeWidth, + } +} + +// GetColorPalette returns the color palette for the chart. +func (sbc StackedBarChart) GetColorPalette() ColorPalette { + if sbc.ColorPalette != nil { + return sbc.ColorPalette + } + return AlternateColorPalette +} + +func (sbc StackedBarChart) getDefaultCanvasBox() Box { + return sbc.Box() +} + +func (sbc StackedBarChart) getAdjustedCanvasBox(r Renderer, canvasBox Box) Box { + var totalWidth int + for _, bar := range sbc.Bars { + totalWidth += bar.GetWidth() + sbc.GetBarSpacing() + } + + if !sbc.XAxis.Hidden { + xaxisHeight := DefaultVerticalTickHeight + + axisStyle := sbc.XAxis.InheritFrom(sbc.styleDefaultsAxes()) + axisStyle.WriteToRenderer(r) + + cursor := canvasBox.Left + for _, bar := range sbc.Bars { + if len(bar.Name) > 0 { + barLabelBox := Box{ + Top: canvasBox.Bottom + DefaultXAxisMargin, + Left: cursor, + Right: cursor + bar.GetWidth() + sbc.GetBarSpacing(), + Bottom: sbc.GetHeight(), + } + lines := Text.WrapFit(r, bar.Name, barLabelBox.Width(), axisStyle) + linesBox := Text.MeasureLines(r, lines, axisStyle) + + xaxisHeight = MaxInt(linesBox.Height()+(2*DefaultXAxisMargin), xaxisHeight) + } + } + return Box{ + Top: canvasBox.Top, + Left: canvasBox.Left, + Right: canvasBox.Left + totalWidth, + Bottom: sbc.GetHeight() - xaxisHeight, + } + } + return Box{ + Top: canvasBox.Top, + Left: canvasBox.Left, + Right: canvasBox.Left + totalWidth, + Bottom: canvasBox.Bottom, + } + +} + +func (sbc StackedBarChart) getHorizontalAdjustedCanvasBox(r Renderer, canvasBox Box) Box { + var totalHeight int + for _, bar := range sbc.Bars { + totalHeight += bar.GetWidth() + sbc.GetBarSpacing() + } + + if !sbc.YAxis.Hidden { + yAxisWidth := DefaultHorizontalTickWidth + + axisStyle := sbc.YAxis.InheritFrom(sbc.styleDefaultsHorizontalAxes()) + axisStyle.WriteToRenderer(r) + + cursor := canvasBox.Top + for _, bar := range sbc.Bars { + if len(bar.Name) > 0 { + barLabelBox := Box{ + Top: cursor, + Left: 0, + Right: canvasBox.Left + DefaultYAxisMargin, + Bottom: cursor + bar.GetWidth() + sbc.GetBarSpacing(), + } + lines := Text.WrapFit(r, bar.Name, barLabelBox.Width(), axisStyle) + linesBox := Text.MeasureLines(r, lines, axisStyle) + + yAxisWidth = MaxInt(linesBox.Height()+(2*DefaultXAxisMargin), yAxisWidth) + } + } + return Box{ + Top: canvasBox.Top, + Left: canvasBox.Left + yAxisWidth, + Right: canvasBox.Right, + Bottom: canvasBox.Top + totalHeight, + } + } + return Box{ + Top: canvasBox.Top, + Left: canvasBox.Left, + Right: canvasBox.Right, + Bottom: canvasBox.Top + totalHeight, + } +} + +// Box returns the chart bounds as a box. +func (sbc StackedBarChart) Box() Box { + dpr := sbc.Background.Padding.GetRight(10) + dpb := sbc.Background.Padding.GetBottom(50) + + return Box{ + Top: sbc.Background.Padding.GetTop(20), + Left: sbc.Background.Padding.GetLeft(20), + Right: sbc.GetWidth() - dpr, + Bottom: sbc.GetHeight() - dpb, + } +} + +func (sbc StackedBarChart) styleDefaultsStackedBarValue(index int) Style { + return Style{ + StrokeColor: sbc.GetColorPalette().GetSeriesColor(index), + StrokeWidth: 3.0, + FillColor: sbc.GetColorPalette().GetSeriesColor(index), + FontSize: sbc.getScaledFontSize(), + FontColor: sbc.GetColorPalette().TextColor(), + Font: sbc.GetFont(), + } +} + +func (sbc StackedBarChart) styleDefaultsTitle() Style { + return sbc.TitleStyle.InheritFrom(Style{ + FontColor: DefaultTextColor, + Font: sbc.GetFont(), + FontSize: sbc.getTitleFontSize(), + TextHorizontalAlign: TextHorizontalAlignCenter, + TextVerticalAlign: TextVerticalAlignTop, + TextWrap: TextWrapWord, + }) +} + +func (sbc StackedBarChart) getScaledFontSize() float64 { + effectiveDimension := MinInt(sbc.GetWidth(), sbc.GetHeight()) + if effectiveDimension >= 2048 { + return 48.0 + } else if effectiveDimension >= 1024 { + return 24.0 + } else if effectiveDimension > 512 { + return 18.0 + } else if effectiveDimension > 256 { + return 12.0 + } + return 10.0 +} + +func (sbc StackedBarChart) getTitleFontSize() float64 { + effectiveDimension := MinInt(sbc.GetWidth(), sbc.GetHeight()) + if effectiveDimension >= 2048 { + return 48 + } else if effectiveDimension >= 1024 { + return 24 + } else if effectiveDimension >= 512 { + return 18 + } else if effectiveDimension >= 256 { + return 12 + } + return 10 +} + +func (sbc StackedBarChart) styleDefaultsAxes() Style { + return Style{ + StrokeColor: DefaultAxisColor, + Font: sbc.GetFont(), + FontSize: DefaultAxisFontSize, + FontColor: DefaultAxisColor, + TextHorizontalAlign: TextHorizontalAlignCenter, + TextVerticalAlign: TextVerticalAlignTop, + TextWrap: TextWrapWord, + } +} + +func (sbc StackedBarChart) styleDefaultsHorizontalAxes() Style { + return Style{ + StrokeColor: DefaultAxisColor, + Font: sbc.GetFont(), + FontSize: DefaultAxisFontSize, + FontColor: DefaultAxisColor, + TextHorizontalAlign: TextHorizontalAlignCenter, + TextVerticalAlign: TextVerticalAlignMiddle, + TextWrap: TextWrapWord, + } +} + +func (sbc StackedBarChart) styleDefaultsElements() Style { + return Style{ + Font: sbc.GetFont(), + } +} diff --git a/vendor/github.com/wcharczuk/go-chart/v2/stringutil.go b/vendor/github.com/wcharczuk/go-chart/v2/stringutil.go new file mode 100644 index 00000000..858d4474 --- /dev/null +++ b/vendor/github.com/wcharczuk/go-chart/v2/stringutil.go @@ -0,0 +1,57 @@ +package chart + +import "strings" + +// SplitCSV splits a corpus by the `,`, dropping leading or trailing whitespace unless quoted. +func SplitCSV(text string) (output []string) { + if len(text) == 0 { + return + } + + var state int + var word []rune + var opened rune + for _, r := range text { + switch state { + case 0: // word + if isQuote(r) { + opened = r + state = 1 + } else if isCSVDelim(r) { + output = append(output, strings.TrimSpace(string(word))) + word = nil + } else { + word = append(word, r) + } + case 1: // we're in a quoted section + if matchesQuote(opened, r) { + state = 0 + continue + } + word = append(word, r) + } + } + + if len(word) > 0 { + output = append(output, strings.TrimSpace(string(word))) + } + return +} + +func isCSVDelim(r rune) bool { + return r == rune(',') +} + +func isQuote(r rune) bool { + return r == '"' || r == '\'' || r == '“' || r == '”' || r == '`' +} + +func matchesQuote(a, b rune) bool { + if a == '“' && b == '”' { + return true + } + if a == '”' && b == '“' { + return true + } + return a == b +} diff --git a/vendor/github.com/wcharczuk/go-chart/v2/style.go b/vendor/github.com/wcharczuk/go-chart/v2/style.go new file mode 100644 index 00000000..c601d6d1 --- /dev/null +++ b/vendor/github.com/wcharczuk/go-chart/v2/style.go @@ -0,0 +1,480 @@ +package chart + +import ( + "fmt" + "strings" + + "github.com/golang/freetype/truetype" + "github.com/wcharczuk/go-chart/v2/drawing" +) + +const ( + // Disabled indicates if the value should be interpreted as set intentionally to zero. + // this is because golang optionals aren't here yet. + Disabled = -1 +) + +// Hidden is a prebuilt style with the `Hidden` property set to true. +func Hidden() Style { + return Style{ + Hidden: true, + } +} + +// Shown is a prebuilt style with the `Hidden` property set to false. +// You can also think of this as the default. +func Shown() Style { + return Style{ + Hidden: false, + } +} + +// StyleTextDefaults returns a style for drawing outside a +// chart context. +func StyleTextDefaults() Style { + font, _ := GetDefaultFont() + return Style{ + Hidden: false, + Font: font, + FontColor: DefaultTextColor, + FontSize: DefaultTitleFontSize, + } +} + +// Style is a simple style set. +type Style struct { + Hidden bool + Padding Box + + ClassName string + + StrokeWidth float64 + StrokeColor drawing.Color + StrokeDashArray []float64 + + DotColor drawing.Color + DotWidth float64 + + DotWidthProvider SizeProvider + DotColorProvider DotColorProvider + + FillColor drawing.Color + + FontSize float64 + FontColor drawing.Color + Font *truetype.Font + + TextHorizontalAlign TextHorizontalAlign + TextVerticalAlign TextVerticalAlign + TextWrap TextWrap + TextLineSpacing int + TextRotationDegrees float64 //0 is unset or normal +} + +// IsZero returns if the object is set or not. +func (s Style) IsZero() bool { + return !s.Hidden && + s.StrokeColor.IsZero() && + s.StrokeWidth == 0 && + s.DotColor.IsZero() && + s.DotWidth == 0 && + s.FillColor.IsZero() && + s.FontColor.IsZero() && + s.FontSize == 0 && + s.Font == nil && + s.ClassName == "" +} + +// String returns a text representation of the style. +func (s Style) String() string { + if s.IsZero() { + return "{}" + } + + var output []string + if s.Hidden { + output = []string{"\"hidden\": true"} + } else { + output = []string{"\"hidden\": false"} + } + + if s.ClassName != "" { + output = append(output, fmt.Sprintf("\"class_name\": %s", s.ClassName)) + } else { + output = append(output, "\"class_name\": null") + } + + if !s.Padding.IsZero() { + output = append(output, fmt.Sprintf("\"padding\": %s", s.Padding.String())) + } else { + output = append(output, "\"padding\": null") + } + + if s.StrokeWidth >= 0 { + output = append(output, fmt.Sprintf("\"stroke_width\": %0.2f", s.StrokeWidth)) + } else { + output = append(output, "\"stroke_width\": null") + } + + if !s.StrokeColor.IsZero() { + output = append(output, fmt.Sprintf("\"stroke_color\": %s", s.StrokeColor.String())) + } else { + output = append(output, "\"stroke_color\": null") + } + + if len(s.StrokeDashArray) > 0 { + var elements []string + for _, v := range s.StrokeDashArray { + elements = append(elements, fmt.Sprintf("%.2f", v)) + } + dashArray := strings.Join(elements, ", ") + output = append(output, fmt.Sprintf("\"stroke_dash_array\": [%s]", dashArray)) + } else { + output = append(output, "\"stroke_dash_array\": null") + } + + if s.DotWidth >= 0 { + output = append(output, fmt.Sprintf("\"dot_width\": %0.2f", s.DotWidth)) + } else { + output = append(output, "\"dot_width\": null") + } + + if !s.DotColor.IsZero() { + output = append(output, fmt.Sprintf("\"dot_color\": %s", s.DotColor.String())) + } else { + output = append(output, "\"dot_color\": null") + } + + if !s.FillColor.IsZero() { + output = append(output, fmt.Sprintf("\"fill_color\": %s", s.FillColor.String())) + } else { + output = append(output, "\"fill_color\": null") + } + + if s.FontSize != 0 { + output = append(output, fmt.Sprintf("\"font_size\": \"%0.2fpt\"", s.FontSize)) + } else { + output = append(output, "\"font_size\": null") + } + + if !s.FontColor.IsZero() { + output = append(output, fmt.Sprintf("\"font_color\": %s", s.FontColor.String())) + } else { + output = append(output, "\"font_color\": null") + } + + if s.Font != nil { + output = append(output, fmt.Sprintf("\"font\": \"%s\"", s.Font.Name(truetype.NameIDFontFamily))) + } else { + output = append(output, "\"font_color\": null") + } + + return "{" + strings.Join(output, ", ") + "}" +} + +// GetClassName returns the class name or a default. +func (s Style) GetClassName(defaults ...string) string { + if s.ClassName == "" { + if len(defaults) > 0 { + return defaults[0] + } + return "" + } + return s.ClassName +} + +// GetStrokeColor returns the stroke color. +func (s Style) GetStrokeColor(defaults ...drawing.Color) drawing.Color { + if s.StrokeColor.IsZero() { + if len(defaults) > 0 { + return defaults[0] + } + return drawing.ColorTransparent + } + return s.StrokeColor +} + +// GetFillColor returns the fill color. +func (s Style) GetFillColor(defaults ...drawing.Color) drawing.Color { + if s.FillColor.IsZero() { + if len(defaults) > 0 { + return defaults[0] + } + return drawing.ColorTransparent + } + return s.FillColor +} + +// GetDotColor returns the stroke color. +func (s Style) GetDotColor(defaults ...drawing.Color) drawing.Color { + if s.DotColor.IsZero() { + if len(defaults) > 0 { + return defaults[0] + } + return drawing.ColorTransparent + } + return s.DotColor +} + +// GetStrokeWidth returns the stroke width. +func (s Style) GetStrokeWidth(defaults ...float64) float64 { + if s.StrokeWidth == 0 { + if len(defaults) > 0 { + return defaults[0] + } + return DefaultStrokeWidth + } + return s.StrokeWidth +} + +// GetDotWidth returns the dot width for scatter plots. +func (s Style) GetDotWidth(defaults ...float64) float64 { + if s.DotWidth == 0 { + if len(defaults) > 0 { + return defaults[0] + } + return DefaultDotWidth + } + return s.DotWidth +} + +// GetStrokeDashArray returns the stroke dash array. +func (s Style) GetStrokeDashArray(defaults ...[]float64) []float64 { + if len(s.StrokeDashArray) == 0 { + if len(defaults) > 0 { + return defaults[0] + } + return nil + } + return s.StrokeDashArray +} + +// GetFontSize gets the font size. +func (s Style) GetFontSize(defaults ...float64) float64 { + if s.FontSize == 0 { + if len(defaults) > 0 { + return defaults[0] + } + return DefaultFontSize + } + return s.FontSize +} + +// GetFontColor gets the font size. +func (s Style) GetFontColor(defaults ...drawing.Color) drawing.Color { + if s.FontColor.IsZero() { + if len(defaults) > 0 { + return defaults[0] + } + return drawing.ColorTransparent + } + return s.FontColor +} + +// GetFont returns the font face. +func (s Style) GetFont(defaults ...*truetype.Font) *truetype.Font { + if s.Font == nil { + if len(defaults) > 0 { + return defaults[0] + } + return nil + } + return s.Font +} + +// GetPadding returns the padding. +func (s Style) GetPadding(defaults ...Box) Box { + if s.Padding.IsZero() { + if len(defaults) > 0 { + return defaults[0] + } + return Box{} + } + return s.Padding +} + +// GetTextHorizontalAlign returns the horizontal alignment. +func (s Style) GetTextHorizontalAlign(defaults ...TextHorizontalAlign) TextHorizontalAlign { + if s.TextHorizontalAlign == TextHorizontalAlignUnset { + if len(defaults) > 0 { + return defaults[0] + } + return TextHorizontalAlignUnset + } + return s.TextHorizontalAlign +} + +// GetTextVerticalAlign returns the vertical alignment. +func (s Style) GetTextVerticalAlign(defaults ...TextVerticalAlign) TextVerticalAlign { + if s.TextVerticalAlign == TextVerticalAlignUnset { + if len(defaults) > 0 { + return defaults[0] + } + return TextVerticalAlignUnset + } + return s.TextVerticalAlign +} + +// GetTextWrap returns the word wrap. +func (s Style) GetTextWrap(defaults ...TextWrap) TextWrap { + if s.TextWrap == TextWrapUnset { + if len(defaults) > 0 { + return defaults[0] + } + return TextWrapUnset + } + return s.TextWrap +} + +// GetTextLineSpacing returns the spacing in pixels between lines of text (vertically). +func (s Style) GetTextLineSpacing(defaults ...int) int { + if s.TextLineSpacing == 0 { + if len(defaults) > 0 { + return defaults[0] + } + return DefaultLineSpacing + } + return s.TextLineSpacing +} + +// GetTextRotationDegrees returns the text rotation in degrees. +func (s Style) GetTextRotationDegrees(defaults ...float64) float64 { + if s.TextRotationDegrees == 0 { + if len(defaults) > 0 { + return defaults[0] + } + } + return s.TextRotationDegrees +} + +// WriteToRenderer passes the style's options to a renderer. +func (s Style) WriteToRenderer(r Renderer) { + r.SetClassName(s.GetClassName()) + r.SetStrokeColor(s.GetStrokeColor()) + r.SetStrokeWidth(s.GetStrokeWidth()) + r.SetStrokeDashArray(s.GetStrokeDashArray()) + r.SetFillColor(s.GetFillColor()) + r.SetFont(s.GetFont()) + r.SetFontColor(s.GetFontColor()) + r.SetFontSize(s.GetFontSize()) + + r.ClearTextRotation() + if s.GetTextRotationDegrees() != 0 { + r.SetTextRotation(DegreesToRadians(s.GetTextRotationDegrees())) + } +} + +// WriteDrawingOptionsToRenderer passes just the drawing style options to a renderer. +func (s Style) WriteDrawingOptionsToRenderer(r Renderer) { + r.SetClassName(s.GetClassName()) + r.SetStrokeColor(s.GetStrokeColor()) + r.SetStrokeWidth(s.GetStrokeWidth()) + r.SetStrokeDashArray(s.GetStrokeDashArray()) + r.SetFillColor(s.GetFillColor()) +} + +// WriteTextOptionsToRenderer passes just the text style options to a renderer. +func (s Style) WriteTextOptionsToRenderer(r Renderer) { + r.SetClassName(s.GetClassName()) + r.SetFont(s.GetFont()) + r.SetFontColor(s.GetFontColor()) + r.SetFontSize(s.GetFontSize()) +} + +// InheritFrom coalesces two styles into a new style. +func (s Style) InheritFrom(defaults Style) (final Style) { + final.ClassName = s.GetClassName(defaults.ClassName) + + final.StrokeColor = s.GetStrokeColor(defaults.StrokeColor) + final.StrokeWidth = s.GetStrokeWidth(defaults.StrokeWidth) + final.StrokeDashArray = s.GetStrokeDashArray(defaults.StrokeDashArray) + + final.DotColor = s.GetDotColor(defaults.DotColor) + final.DotWidth = s.GetDotWidth(defaults.DotWidth) + + final.DotWidthProvider = s.DotWidthProvider + final.DotColorProvider = s.DotColorProvider + + final.FillColor = s.GetFillColor(defaults.FillColor) + final.FontColor = s.GetFontColor(defaults.FontColor) + final.FontSize = s.GetFontSize(defaults.FontSize) + final.Font = s.GetFont(defaults.Font) + final.Padding = s.GetPadding(defaults.Padding) + final.TextHorizontalAlign = s.GetTextHorizontalAlign(defaults.TextHorizontalAlign) + final.TextVerticalAlign = s.GetTextVerticalAlign(defaults.TextVerticalAlign) + final.TextWrap = s.GetTextWrap(defaults.TextWrap) + final.TextLineSpacing = s.GetTextLineSpacing(defaults.TextLineSpacing) + final.TextRotationDegrees = s.GetTextRotationDegrees(defaults.TextRotationDegrees) + + return +} + +// GetStrokeOptions returns the stroke components. +func (s Style) GetStrokeOptions() Style { + return Style{ + ClassName: s.ClassName, + StrokeDashArray: s.StrokeDashArray, + StrokeColor: s.StrokeColor, + StrokeWidth: s.StrokeWidth, + } +} + +// GetFillOptions returns the fill components. +func (s Style) GetFillOptions() Style { + return Style{ + ClassName: s.ClassName, + FillColor: s.FillColor, + } +} + +// GetDotOptions returns the dot components. +func (s Style) GetDotOptions() Style { + return Style{ + ClassName: s.ClassName, + StrokeDashArray: nil, + FillColor: s.DotColor, + StrokeColor: s.DotColor, + StrokeWidth: 1.0, + } +} + +// GetFillAndStrokeOptions returns the fill and stroke components. +func (s Style) GetFillAndStrokeOptions() Style { + return Style{ + ClassName: s.ClassName, + StrokeDashArray: s.StrokeDashArray, + FillColor: s.FillColor, + StrokeColor: s.StrokeColor, + StrokeWidth: s.StrokeWidth, + } +} + +// GetTextOptions returns just the text components of the style. +func (s Style) GetTextOptions() Style { + return Style{ + ClassName: s.ClassName, + FontColor: s.FontColor, + FontSize: s.FontSize, + Font: s.Font, + TextHorizontalAlign: s.TextHorizontalAlign, + TextVerticalAlign: s.TextVerticalAlign, + TextWrap: s.TextWrap, + TextLineSpacing: s.TextLineSpacing, + TextRotationDegrees: s.TextRotationDegrees, + } +} + +// ShouldDrawStroke tells drawing functions if they should draw the stroke. +func (s Style) ShouldDrawStroke() bool { + return !s.StrokeColor.IsZero() && s.StrokeWidth > 0 +} + +// ShouldDrawDot tells drawing functions if they should draw the dot. +func (s Style) ShouldDrawDot() bool { + return (!s.DotColor.IsZero() && s.DotWidth > 0) || s.DotColorProvider != nil || s.DotWidthProvider != nil +} + +// ShouldDrawFill tells drawing functions if they should draw the stroke. +func (s Style) ShouldDrawFill() bool { + return !s.FillColor.IsZero() +} diff --git a/vendor/github.com/wcharczuk/go-chart/v2/text.go b/vendor/github.com/wcharczuk/go-chart/v2/text.go new file mode 100644 index 00000000..0a9dfd0b --- /dev/null +++ b/vendor/github.com/wcharczuk/go-chart/v2/text.go @@ -0,0 +1,166 @@ +package chart + +import ( + "strings" +) + +// TextHorizontalAlign is an enum for the horizontal alignment options. +type TextHorizontalAlign int + +const ( + // TextHorizontalAlignUnset is the unset state for text horizontal alignment. + TextHorizontalAlignUnset TextHorizontalAlign = 0 + // TextHorizontalAlignLeft aligns a string horizontally so that it's left ligature starts at horizontal pixel 0. + TextHorizontalAlignLeft TextHorizontalAlign = 1 + // TextHorizontalAlignCenter left aligns a string horizontally so that there are equal pixels + // to the left and to the right of a string within a box. + TextHorizontalAlignCenter TextHorizontalAlign = 2 + // TextHorizontalAlignRight right aligns a string horizontally so that the right ligature ends at the right-most pixel + // of a box. + TextHorizontalAlignRight TextHorizontalAlign = 3 +) + +// TextWrap is an enum for the word wrap options. +type TextWrap int + +const ( + // TextWrapUnset is the unset state for text wrap options. + TextWrapUnset TextWrap = 0 + // TextWrapNone will spill text past horizontal boundaries. + TextWrapNone TextWrap = 1 + // TextWrapWord will split a string on words (i.e. spaces) to fit within a horizontal boundary. + TextWrapWord TextWrap = 2 + // TextWrapRune will split a string on a rune (i.e. utf-8 codepage) to fit within a horizontal boundary. + TextWrapRune TextWrap = 3 +) + +// TextVerticalAlign is an enum for the vertical alignment options. +type TextVerticalAlign int + +const ( + // TextVerticalAlignUnset is the unset state for vertical alignment options. + TextVerticalAlignUnset TextVerticalAlign = 0 + // TextVerticalAlignBaseline aligns text according to the "baseline" of the string, or where a normal ascender begins. + TextVerticalAlignBaseline TextVerticalAlign = 1 + // TextVerticalAlignBottom aligns the text according to the lowers pixel of any of the ligatures (ex. g or q both extend below the baseline). + TextVerticalAlignBottom TextVerticalAlign = 2 + // TextVerticalAlignMiddle aligns the text so that there is an equal amount of space above and below the top and bottom of the ligatures. + TextVerticalAlignMiddle TextVerticalAlign = 3 + // TextVerticalAlignMiddleBaseline aligns the text vertically so that there is an equal number of pixels above and below the baseline of the string. + TextVerticalAlignMiddleBaseline TextVerticalAlign = 4 + // TextVerticalAlignTop alignts the text so that the top of the ligatures are at y-pixel 0 in the container. + TextVerticalAlignTop TextVerticalAlign = 5 +) + +var ( + // Text contains utilities for text. + Text = &text{} +) + +// TextStyle encapsulates text style options. +type TextStyle struct { + HorizontalAlign TextHorizontalAlign + VerticalAlign TextVerticalAlign + Wrap TextWrap +} + +type text struct{} + +func (t text) WrapFit(r Renderer, value string, width int, style Style) []string { + switch style.TextWrap { + case TextWrapRune: + return t.WrapFitRune(r, value, width, style) + case TextWrapWord: + return t.WrapFitWord(r, value, width, style) + } + return []string{value} +} + +func (t text) WrapFitWord(r Renderer, value string, width int, style Style) []string { + style.WriteToRenderer(r) + + var output []string + var line string + var word string + + var textBox Box + + for _, c := range value { + if c == rune('\n') { // commit the line to output + output = append(output, t.Trim(line+word)) + line = "" + word = "" + continue + } + + textBox = r.MeasureText(line + word + string(c)) + + if textBox.Width() >= width { + output = append(output, t.Trim(line)) + line = word + word = string(c) + continue + } + + if c == rune(' ') || c == rune('\t') { + line = line + word + string(c) + word = "" + continue + } + word = word + string(c) + } + + return append(output, t.Trim(line+word)) +} + +func (t text) WrapFitRune(r Renderer, value string, width int, style Style) []string { + style.WriteToRenderer(r) + + var output []string + var line string + var textBox Box + for _, c := range value { + if c == rune('\n') { + output = append(output, line) + line = "" + continue + } + + textBox = r.MeasureText(line + string(c)) + + if textBox.Width() >= width { + output = append(output, line) + line = string(c) + continue + } + line = line + string(c) + } + return t.appendLast(output, line) +} + +func (t text) Trim(value string) string { + return strings.Trim(value, " \t\n\r") +} + +func (t text) MeasureLines(r Renderer, lines []string, style Style) Box { + style.WriteTextOptionsToRenderer(r) + var output Box + for index, line := range lines { + lineBox := r.MeasureText(line) + output.Right = MaxInt(lineBox.Right, output.Right) + output.Bottom += lineBox.Height() + if index < len(lines)-1 { + output.Bottom += +style.GetTextLineSpacing() + } + } + return output +} + +func (t text) appendLast(lines []string, text string) []string { + if len(lines) == 0 { + return []string{text} + } + lastLine := lines[len(lines)-1] + lines[len(lines)-1] = lastLine + text + return lines +} diff --git a/vendor/github.com/wcharczuk/go-chart/v2/tick.go b/vendor/github.com/wcharczuk/go-chart/v2/tick.go new file mode 100644 index 00000000..1732c60b --- /dev/null +++ b/vendor/github.com/wcharczuk/go-chart/v2/tick.go @@ -0,0 +1,115 @@ +package chart + +import ( + "fmt" + "math" + "strings" +) + +// TicksProvider is a type that provides ticks. +type TicksProvider interface { + GetTicks(r Renderer, defaults Style, vf ValueFormatter) []Tick +} + +// Tick represents a label on an axis. +type Tick struct { + Value float64 + Label string +} + +// Ticks is an array of ticks. +type Ticks []Tick + +// Len returns the length of the ticks set. +func (t Ticks) Len() int { + return len(t) +} + +// Swap swaps two elements. +func (t Ticks) Swap(i, j int) { + t[i], t[j] = t[j], t[i] +} + +// Less returns if i's value is less than j's value. +func (t Ticks) Less(i, j int) bool { + return t[i].Value < t[j].Value +} + +// String returns a string representation of the set of ticks. +func (t Ticks) String() string { + var values []string + for i, tick := range t { + values = append(values, fmt.Sprintf("[%d: %s]", i, tick.Label)) + } + return strings.Join(values, ", ") +} + +// GenerateContinuousTicks generates a set of ticks. +func GenerateContinuousTicks(r Renderer, ra Range, isVertical bool, style Style, vf ValueFormatter) []Tick { + if vf == nil { + vf = FloatValueFormatter + } + + var ticks []Tick + min, max := ra.GetMin(), ra.GetMax() + + if ra.IsDescending() { + ticks = append(ticks, Tick{ + Value: max, + Label: vf(max), + }) + } else { + ticks = append(ticks, Tick{ + Value: min, + Label: vf(min), + }) + } + + minLabel := vf(min) + style.GetTextOptions().WriteToRenderer(r) + labelBox := r.MeasureText(minLabel) + + var tickSize float64 + if isVertical { + tickSize = float64(labelBox.Height() + DefaultMinimumTickVerticalSpacing) + } else { + tickSize = float64(labelBox.Width() + DefaultMinimumTickHorizontalSpacing) + } + + domain := float64(ra.GetDomain()) + domainRemainder := domain - (tickSize * 2) + intermediateTickCount := int(math.Floor(float64(domainRemainder) / float64(tickSize))) + + rangeDelta := math.Abs(max - min) + tickStep := rangeDelta / float64(intermediateTickCount) + + roundTo := GetRoundToForDelta(rangeDelta) / 10 + intermediateTickCount = MinInt(intermediateTickCount, DefaultTickCountSanityCheck) + + for x := 1; x < intermediateTickCount; x++ { + var tickValue float64 + if ra.IsDescending() { + tickValue = max - RoundUp(tickStep*float64(x), roundTo) + } else { + tickValue = min + RoundUp(tickStep*float64(x), roundTo) + } + ticks = append(ticks, Tick{ + Value: tickValue, + Label: vf(tickValue), + }) + } + + if ra.IsDescending() { + ticks = append(ticks, Tick{ + Value: min, + Label: vf(min), + }) + } else { + ticks = append(ticks, Tick{ + Value: max, + Label: vf(max), + }) + } + + return ticks +} diff --git a/vendor/github.com/wcharczuk/go-chart/v2/time_series.go b/vendor/github.com/wcharczuk/go-chart/v2/time_series.go new file mode 100644 index 00000000..83ee905e --- /dev/null +++ b/vendor/github.com/wcharczuk/go-chart/v2/time_series.go @@ -0,0 +1,91 @@ +package chart + +import ( + "fmt" + "time" +) + +// Interface Assertions. +var ( + _ Series = (*TimeSeries)(nil) + _ FirstValuesProvider = (*TimeSeries)(nil) + _ LastValuesProvider = (*TimeSeries)(nil) + _ ValueFormatterProvider = (*TimeSeries)(nil) +) + +// TimeSeries is a line on a chart. +type TimeSeries struct { + Name string + Style Style + + YAxis YAxisType + + XValues []time.Time + YValues []float64 +} + +// GetName returns the name of the time series. +func (ts TimeSeries) GetName() string { + return ts.Name +} + +// GetStyle returns the line style. +func (ts TimeSeries) GetStyle() Style { + return ts.Style +} + +// Len returns the number of elements in the series. +func (ts TimeSeries) Len() int { + return len(ts.XValues) +} + +// GetValues gets x, y values at a given index. +func (ts TimeSeries) GetValues(index int) (x, y float64) { + x = TimeToFloat64(ts.XValues[index]) + y = ts.YValues[index] + return +} + +// GetFirstValues gets the first values. +func (ts TimeSeries) GetFirstValues() (x, y float64) { + x = TimeToFloat64(ts.XValues[0]) + y = ts.YValues[0] + return +} + +// GetLastValues gets the last values. +func (ts TimeSeries) GetLastValues() (x, y float64) { + x = TimeToFloat64(ts.XValues[len(ts.XValues)-1]) + y = ts.YValues[len(ts.YValues)-1] + return +} + +// GetValueFormatters returns value formatter defaults for the series. +func (ts TimeSeries) GetValueFormatters() (x, y ValueFormatter) { + x = TimeValueFormatter + y = FloatValueFormatter + return +} + +// GetYAxis returns which YAxis the series draws on. +func (ts TimeSeries) GetYAxis() YAxisType { + return ts.YAxis +} + +// Render renders the series. +func (ts TimeSeries) Render(r Renderer, canvasBox Box, xrange, yrange Range, defaults Style) { + style := ts.Style.InheritFrom(defaults) + Draw.LineSeries(r, canvasBox, xrange, yrange, style, ts) +} + +// Validate validates the series. +func (ts TimeSeries) Validate() error { + if len(ts.XValues) == 0 { + return fmt.Errorf("time series must have xvalues set") + } + + if len(ts.YValues) == 0 { + return fmt.Errorf("time series must have yvalues set") + } + return nil +} diff --git a/vendor/github.com/wcharczuk/go-chart/v2/times.go b/vendor/github.com/wcharczuk/go-chart/v2/times.go new file mode 100644 index 00000000..95e2acd7 --- /dev/null +++ b/vendor/github.com/wcharczuk/go-chart/v2/times.go @@ -0,0 +1,46 @@ +package chart + +import ( + "sort" + "time" +) + +// Assert types implement interfaces. +var ( + _ Sequence = (*Times)(nil) + _ sort.Interface = (*Times)(nil) +) + +// Times are an array of times. +// It wraps the array with methods that implement `seq.Provider`. +type Times []time.Time + +// Array returns the times to an array. +func (t Times) Array() []time.Time { + return []time.Time(t) +} + +// Len returns the length of the array. +func (t Times) Len() int { + return len(t) +} + +// GetValue returns a value at an index as a time. +func (t Times) GetValue(index int) float64 { + return ToFloat64(t[index]) +} + +// Swap implements sort.Interface. +func (t Times) Swap(i, j int) { + t[i], t[j] = t[j], t[i] +} + +// Less implements sort.Interface. +func (t Times) Less(i, j int) bool { + return t[i].Before(t[j]) +} + +// ToFloat64 returns a float64 representation of a time. +func ToFloat64(t time.Time) float64 { + return float64(t.UnixNano()) +} diff --git a/vendor/github.com/wcharczuk/go-chart/v2/timeutil.go b/vendor/github.com/wcharczuk/go-chart/v2/timeutil.go new file mode 100644 index 00000000..aa6b9e4d --- /dev/null +++ b/vendor/github.com/wcharczuk/go-chart/v2/timeutil.go @@ -0,0 +1,150 @@ +package chart + +import "time" + +// SecondsPerXYZ +const ( + SecondsPerHour = 60 * 60 + SecondsPerDay = 60 * 60 * 24 +) + +// TimeMillis returns a duration as a float millis. +func TimeMillis(d time.Duration) float64 { + return float64(d) / float64(time.Millisecond) +} + +// DiffHours returns the difference in hours between two times. +func DiffHours(t1, t2 time.Time) (hours int) { + t1n := t1.Unix() + t2n := t2.Unix() + var diff int64 + if t1n > t2n { + diff = t1n - t2n + } else { + diff = t2n - t1n + } + return int(diff / (SecondsPerHour)) +} + +// TimeMin returns the minimum and maximum times in a given range. +func TimeMin(times ...time.Time) (min time.Time) { + if len(times) == 0 { + return + } + min = times[0] + for index := 1; index < len(times); index++ { + if times[index].Before(min) { + min = times[index] + } + + } + return +} + +// TimeMax returns the minimum and maximum times in a given range. +func TimeMax(times ...time.Time) (max time.Time) { + if len(times) == 0 { + return + } + max = times[0] + + for index := 1; index < len(times); index++ { + if times[index].After(max) { + max = times[index] + } + } + return +} + +// TimeMinMax returns the minimum and maximum times in a given range. +func TimeMinMax(times ...time.Time) (min, max time.Time) { + if len(times) == 0 { + return + } + min = times[0] + max = times[0] + + for index := 1; index < len(times); index++ { + if times[index].Before(min) { + min = times[index] + } + if times[index].After(max) { + max = times[index] + } + } + return +} + +// TimeToFloat64 returns a float64 representation of a time. +func TimeToFloat64(t time.Time) float64 { + return float64(t.UnixNano()) +} + +// TimeFromFloat64 returns a time from a float64. +func TimeFromFloat64(tf float64) time.Time { + return time.Unix(0, int64(tf)) +} + +// TimeDescending sorts a given list of times ascending, or min to max. +type TimeDescending []time.Time + +// Len implements sort.Sorter +func (d TimeDescending) Len() int { return len(d) } + +// Swap implements sort.Sorter +func (d TimeDescending) Swap(i, j int) { d[i], d[j] = d[j], d[i] } + +// Less implements sort.Sorter +func (d TimeDescending) Less(i, j int) bool { return d[i].After(d[j]) } + +// TimeAscending sorts a given list of times ascending, or min to max. +type TimeAscending []time.Time + +// Len implements sort.Sorter +func (a TimeAscending) Len() int { return len(a) } + +// Swap implements sort.Sorter +func (a TimeAscending) Swap(i, j int) { a[i], a[j] = a[j], a[i] } + +// Less implements sort.Sorter +func (a TimeAscending) Less(i, j int) bool { return a[i].Before(a[j]) } + +// Days generates a seq of timestamps by day, from -days to today. +func Days(days int) []time.Time { + var values []time.Time + for day := days; day >= 0; day-- { + values = append(values, time.Now().AddDate(0, 0, -day)) + } + return values +} + +// Hours returns a sequence of times by the hour for a given number of hours +// after a given start. +func Hours(start time.Time, totalHours int) []time.Time { + times := make([]time.Time, totalHours) + + last := start + for i := 0; i < totalHours; i++ { + times[i] = last + last = last.Add(time.Hour) + } + + return times +} + +// HoursFilled adds zero values for the data bounded by the start and end of the xdata array. +func HoursFilled(xdata []time.Time, ydata []float64) ([]time.Time, []float64) { + start, end := TimeMinMax(xdata...) + totalHours := DiffHours(start, end) + + finalTimes := Hours(start, totalHours+1) + finalValues := make([]float64, totalHours+1) + + var hoursFromStart int + for i, xd := range xdata { + hoursFromStart = DiffHours(start, xd) + finalValues[hoursFromStart] = ydata[i] + } + + return finalTimes, finalValues +} diff --git a/vendor/github.com/wcharczuk/go-chart/v2/value.go b/vendor/github.com/wcharczuk/go-chart/v2/value.go new file mode 100644 index 00000000..783e304b --- /dev/null +++ b/vendor/github.com/wcharczuk/go-chart/v2/value.go @@ -0,0 +1,53 @@ +package chart + +// Value is a chart value. +type Value struct { + Style Style + Label string + Value float64 +} + +// Values is an array of Value. +type Values []Value + +// Values returns the values. +func (vs Values) Values() []float64 { + values := make([]float64, len(vs)) + for index, v := range vs { + values[index] = v.Value + } + return values +} + +// ValuesNormalized returns normalized values. +func (vs Values) ValuesNormalized() []float64 { + return Normalize(vs.Values()...) +} + +// Normalize returns the values normalized. +func (vs Values) Normalize() []Value { + var output []Value + var total float64 + + for _, v := range vs { + total += v.Value + } + + for _, v := range vs { + if v.Value > 0 { + output = append(output, Value{ + Style: v.Style, + Label: v.Label, + Value: RoundDown(v.Value/total, 0.0001), + }) + } + } + return output +} + +// Value2 is a two axis value. +type Value2 struct { + Style Style + Label string + XValue, YValue float64 +} diff --git a/vendor/github.com/wcharczuk/go-chart/v2/value_buffer.go b/vendor/github.com/wcharczuk/go-chart/v2/value_buffer.go new file mode 100644 index 00000000..d544bd37 --- /dev/null +++ b/vendor/github.com/wcharczuk/go-chart/v2/value_buffer.go @@ -0,0 +1,220 @@ +package chart + +import ( + "fmt" + "strings" +) + +const ( + bufferMinimumGrow = 4 + bufferShrinkThreshold = 32 + bufferGrowFactor = 200 + bufferDefaultCapacity = 4 +) + +// NewValueBuffer creates a new value buffer with an optional set of values. +func NewValueBuffer(values ...float64) *ValueBuffer { + var tail int + array := make([]float64, MaxInt(len(values), bufferDefaultCapacity)) + if len(values) > 0 { + copy(array, values) + tail = len(values) + } + return &ValueBuffer{ + array: array, + head: 0, + tail: tail, + size: len(values), + } +} + +// NewValueBufferWithCapacity creates a new ValueBuffer pre-allocated with the given capacity. +func NewValueBufferWithCapacity(capacity int) *ValueBuffer { + return &ValueBuffer{ + array: make([]float64, capacity), + head: 0, + tail: 0, + size: 0, + } +} + +// ValueBuffer is a fifo datastructure that is backed by a pre-allocated array. +// Instead of allocating a whole new node object for each element, array elements are re-used (which saves GC churn). +// Enqueue can be O(n), Dequeue is generally O(1). +// Buffer implements `seq.Provider` +type ValueBuffer struct { + array []float64 + head int + tail int + size int +} + +// Len returns the length of the Buffer (as it is currently populated). +// Actual memory footprint may be different. +func (b *ValueBuffer) Len() int { + return b.size +} + +// GetValue implements seq provider. +func (b *ValueBuffer) GetValue(index int) float64 { + effectiveIndex := (b.head + index) % len(b.array) + return b.array[effectiveIndex] +} + +// Capacity returns the total size of the Buffer, including empty elements. +func (b *ValueBuffer) Capacity() int { + return len(b.array) +} + +// SetCapacity sets the capacity of the Buffer. +func (b *ValueBuffer) SetCapacity(capacity int) { + newArray := make([]float64, capacity) + if b.size > 0 { + if b.head < b.tail { + arrayCopy(b.array, b.head, newArray, 0, b.size) + } else { + arrayCopy(b.array, b.head, newArray, 0, len(b.array)-b.head) + arrayCopy(b.array, 0, newArray, len(b.array)-b.head, b.tail) + } + } + b.array = newArray + b.head = 0 + if b.size == capacity { + b.tail = 0 + } else { + b.tail = b.size + } +} + +// Clear removes all objects from the Buffer. +func (b *ValueBuffer) Clear() { + b.array = make([]float64, bufferDefaultCapacity) + b.head = 0 + b.tail = 0 + b.size = 0 +} + +// Enqueue adds an element to the "back" of the Buffer. +func (b *ValueBuffer) Enqueue(value float64) { + if b.size == len(b.array) { + newCapacity := int(len(b.array) * int(bufferGrowFactor/100)) + if newCapacity < (len(b.array) + bufferMinimumGrow) { + newCapacity = len(b.array) + bufferMinimumGrow + } + b.SetCapacity(newCapacity) + } + + b.array[b.tail] = value + b.tail = (b.tail + 1) % len(b.array) + b.size++ +} + +// Dequeue removes the first element from the RingBuffer. +func (b *ValueBuffer) Dequeue() float64 { + if b.size == 0 { + return 0 + } + + removed := b.array[b.head] + b.head = (b.head + 1) % len(b.array) + b.size-- + return removed +} + +// Peek returns but does not remove the first element. +func (b *ValueBuffer) Peek() float64 { + if b.size == 0 { + return 0 + } + return b.array[b.head] +} + +// PeekBack returns but does not remove the last element. +func (b *ValueBuffer) PeekBack() float64 { + if b.size == 0 { + return 0 + } + if b.tail == 0 { + return b.array[len(b.array)-1] + } + return b.array[b.tail-1] +} + +// TrimExcess resizes the capacity of the buffer to better fit the contents. +func (b *ValueBuffer) TrimExcess() { + threshold := float64(len(b.array)) * 0.9 + if b.size < int(threshold) { + b.SetCapacity(b.size) + } +} + +// Array returns the ring buffer, in order, as an array. +func (b *ValueBuffer) Array() Array { + newArray := make([]float64, b.size) + + if b.size == 0 { + return newArray + } + + if b.head < b.tail { + arrayCopy(b.array, b.head, newArray, 0, b.size) + } else { + arrayCopy(b.array, b.head, newArray, 0, len(b.array)-b.head) + arrayCopy(b.array, 0, newArray, len(b.array)-b.head, b.tail) + } + + return Array(newArray) +} + +// Each calls the consumer for each element in the buffer. +func (b *ValueBuffer) Each(mapfn func(int, float64)) { + if b.size == 0 { + return + } + + var index int + if b.head < b.tail { + for cursor := b.head; cursor < b.tail; cursor++ { + mapfn(index, b.array[cursor]) + index++ + } + } else { + for cursor := b.head; cursor < len(b.array); cursor++ { + mapfn(index, b.array[cursor]) + index++ + } + for cursor := 0; cursor < b.tail; cursor++ { + mapfn(index, b.array[cursor]) + index++ + } + } +} + +// String returns a string representation for value buffers. +func (b *ValueBuffer) String() string { + var values []string + for _, elem := range b.Array() { + values = append(values, fmt.Sprintf("%v", elem)) + } + return strings.Join(values, " <= ") +} + +// -------------------------------------------------------------------------------- +// Util methods +// -------------------------------------------------------------------------------- + +func arrayClear(source []float64, index, length int) { + for x := 0; x < length; x++ { + absoluteIndex := x + index + source[absoluteIndex] = 0 + } +} + +func arrayCopy(source []float64, sourceIndex int, destination []float64, destinationIndex, length int) { + for x := 0; x < length; x++ { + from := sourceIndex + x + to := destinationIndex + x + + destination[to] = source[from] + } +} diff --git a/vendor/github.com/wcharczuk/go-chart/v2/value_formatter.go b/vendor/github.com/wcharczuk/go-chart/v2/value_formatter.go new file mode 100644 index 00000000..468f3bdb --- /dev/null +++ b/vendor/github.com/wcharczuk/go-chart/v2/value_formatter.go @@ -0,0 +1,105 @@ +package chart + +import ( + "fmt" + "strconv" + "time" +) + +// ValueFormatter is a function that takes a value and produces a string. +type ValueFormatter func(v interface{}) string + +// TimeValueFormatter is a ValueFormatter for timestamps. +func TimeValueFormatter(v interface{}) string { + return formatTime(v, DefaultDateFormat) +} + +// TimeHourValueFormatter is a ValueFormatter for timestamps. +func TimeHourValueFormatter(v interface{}) string { + return formatTime(v, DefaultDateHourFormat) +} + +// TimeMinuteValueFormatter is a ValueFormatter for timestamps. +func TimeMinuteValueFormatter(v interface{}) string { + return formatTime(v, DefaultDateMinuteFormat) +} + +// TimeDateValueFormatter is a ValueFormatter for timestamps. +func TimeDateValueFormatter(v interface{}) string { + return formatTime(v, "2006-01-02") +} + +// TimeValueFormatterWithFormat returns a time formatter with a given format. +func TimeValueFormatterWithFormat(format string) ValueFormatter { + return func(v interface{}) string { + return formatTime(v, format) + } +} + +// TimeValueFormatterWithFormat is a ValueFormatter for timestamps with a given format. +func formatTime(v interface{}, dateFormat string) string { + if typed, isTyped := v.(time.Time); isTyped { + return typed.Format(dateFormat) + } + if typed, isTyped := v.(int64); isTyped { + return time.Unix(0, typed).Format(dateFormat) + } + if typed, isTyped := v.(float64); isTyped { + return time.Unix(0, int64(typed)).Format(dateFormat) + } + return "" +} + +// IntValueFormatter is a ValueFormatter for float64. +func IntValueFormatter(v interface{}) string { + switch v.(type) { + case int: + return strconv.Itoa(v.(int)) + case int64: + return strconv.FormatInt(v.(int64), 10) + case float32: + return strconv.FormatInt(int64(v.(float32)), 10) + case float64: + return strconv.FormatInt(int64(v.(float64)), 10) + default: + return "" + } +} + +// FloatValueFormatter is a ValueFormatter for float64. +func FloatValueFormatter(v interface{}) string { + return FloatValueFormatterWithFormat(v, DefaultFloatFormat) +} + +// PercentValueFormatter is a formatter for percent values. +// NOTE: it normalizes the values, i.e. multiplies by 100.0. +func PercentValueFormatter(v interface{}) string { + if typed, isTyped := v.(float64); isTyped { + return FloatValueFormatterWithFormat(typed*100.0, DefaultPercentValueFormat) + } + return "" +} + +// FloatValueFormatterWithFormat is a ValueFormatter for float64 with a given format. +func FloatValueFormatterWithFormat(v interface{}, floatFormat string) string { + if typed, isTyped := v.(int); isTyped { + return fmt.Sprintf(floatFormat, float64(typed)) + } + if typed, isTyped := v.(int64); isTyped { + return fmt.Sprintf(floatFormat, float64(typed)) + } + if typed, isTyped := v.(float32); isTyped { + return fmt.Sprintf(floatFormat, typed) + } + if typed, isTyped := v.(float64); isTyped { + return fmt.Sprintf(floatFormat, typed) + } + return "" +} + +// KValueFormatter is a formatter for K values. +func KValueFormatter(k float64, vf ValueFormatter) ValueFormatter { + return func(v interface{}) string { + return fmt.Sprintf("%0.0fσ %s", k, vf(v)) + } +} diff --git a/vendor/github.com/wcharczuk/go-chart/v2/value_formatter_provider.go b/vendor/github.com/wcharczuk/go-chart/v2/value_formatter_provider.go new file mode 100644 index 00000000..829fb1db --- /dev/null +++ b/vendor/github.com/wcharczuk/go-chart/v2/value_formatter_provider.go @@ -0,0 +1,6 @@ +package chart + +// ValueFormatterProvider is a series that has custom formatters. +type ValueFormatterProvider interface { + GetValueFormatters() (x, y ValueFormatter) +} diff --git a/vendor/github.com/wcharczuk/go-chart/v2/value_provider.go b/vendor/github.com/wcharczuk/go-chart/v2/value_provider.go new file mode 100644 index 00000000..be985eb6 --- /dev/null +++ b/vendor/github.com/wcharczuk/go-chart/v2/value_provider.go @@ -0,0 +1,51 @@ +package chart + +import "github.com/wcharczuk/go-chart/v2/drawing" + +// ValuesProvider is a type that produces values. +type ValuesProvider interface { + Len() int + GetValues(index int) (float64, float64) +} + +// BoundedValuesProvider allows series to return a range. +type BoundedValuesProvider interface { + Len() int + GetBoundedValues(index int) (x, y1, y2 float64) +} + +// FirstValuesProvider is a special type of value provider that can return it's (potentially computed) first value. +type FirstValuesProvider interface { + GetFirstValues() (x, y float64) +} + +// LastValuesProvider is a special type of value provider that can return it's (potentially computed) last value. +type LastValuesProvider interface { + GetLastValues() (x, y float64) +} + +// BoundedLastValuesProvider is a special type of value provider that can return it's (potentially computed) bounded last value. +type BoundedLastValuesProvider interface { + GetBoundedLastValues() (x, y1, y2 float64) +} + +// FullValuesProvider is an interface that combines `ValuesProvider` and `LastValuesProvider` +type FullValuesProvider interface { + ValuesProvider + LastValuesProvider +} + +// FullBoundedValuesProvider is an interface that combines `BoundedValuesProvider` and `BoundedLastValuesProvider` +type FullBoundedValuesProvider interface { + BoundedValuesProvider + BoundedLastValuesProvider +} + +// SizeProvider is a provider for integer size. +type SizeProvider func(xrange, yrange Range, index int, x, y float64) float64 + +// ColorProvider is a general provider for color ranges based on values. +type ColorProvider func(v, vmin, vmax float64) drawing.Color + +// DotColorProvider is a provider for dot color. +type DotColorProvider func(xrange, yrange Range, index int, x, y float64) drawing.Color diff --git a/vendor/github.com/wcharczuk/go-chart/v2/vector_renderer.go b/vendor/github.com/wcharczuk/go-chart/v2/vector_renderer.go new file mode 100644 index 00000000..eb2fc831 --- /dev/null +++ b/vendor/github.com/wcharczuk/go-chart/v2/vector_renderer.go @@ -0,0 +1,365 @@ +package chart + +import ( + "bytes" + "fmt" + "io" + "math" + "strings" + + "golang.org/x/image/font" + + "github.com/golang/freetype/truetype" + "github.com/wcharczuk/go-chart/v2/drawing" +) + +// SVG returns a new png/raster renderer. +func SVG(width, height int) (Renderer, error) { + buffer := bytes.NewBuffer([]byte{}) + canvas := newCanvas(buffer) + canvas.Start(width, height) + return &vectorRenderer{ + b: buffer, + c: canvas, + s: &Style{}, + p: []string{}, + dpi: DefaultDPI, + }, nil +} + +// SVGWithCSS returns a new png/raster renderer with attached custom CSS +// The optional nonce argument sets a CSP nonce. +func SVGWithCSS(css string, nonce string) func(width, height int) (Renderer, error) { + return func(width, height int) (Renderer, error) { + buffer := bytes.NewBuffer([]byte{}) + canvas := newCanvas(buffer) + canvas.css = css + canvas.nonce = nonce + canvas.Start(width, height) + return &vectorRenderer{ + b: buffer, + c: canvas, + s: &Style{}, + p: []string{}, + dpi: DefaultDPI, + }, nil + } +} + +// vectorRenderer renders chart commands to a bitmap. +type vectorRenderer struct { + dpi float64 + b *bytes.Buffer + c *canvas + s *Style + p []string + fc *font.Drawer +} + +func (vr *vectorRenderer) ResetStyle() { + vr.s = &Style{Font: vr.s.Font} + vr.fc = nil +} + +// GetDPI returns the dpi. +func (vr *vectorRenderer) GetDPI() float64 { + return vr.dpi +} + +// SetDPI implements the interface method. +func (vr *vectorRenderer) SetDPI(dpi float64) { + vr.dpi = dpi + vr.c.dpi = dpi +} + +// SetClassName implements the interface method. +func (vr *vectorRenderer) SetClassName(classname string) { + vr.s.ClassName = classname +} + +// SetStrokeColor implements the interface method. +func (vr *vectorRenderer) SetStrokeColor(c drawing.Color) { + vr.s.StrokeColor = c +} + +// SetFillColor implements the interface method. +func (vr *vectorRenderer) SetFillColor(c drawing.Color) { + vr.s.FillColor = c +} + +// SetLineWidth implements the interface method. +func (vr *vectorRenderer) SetStrokeWidth(width float64) { + vr.s.StrokeWidth = width +} + +// StrokeDashArray sets the stroke dash array. +func (vr *vectorRenderer) SetStrokeDashArray(dashArray []float64) { + vr.s.StrokeDashArray = dashArray +} + +// MoveTo implements the interface method. +func (vr *vectorRenderer) MoveTo(x, y int) { + vr.p = append(vr.p, fmt.Sprintf("M %d %d", x, y)) +} + +// LineTo implements the interface method. +func (vr *vectorRenderer) LineTo(x, y int) { + vr.p = append(vr.p, fmt.Sprintf("L %d %d", x, y)) +} + +// QuadCurveTo draws a quad curve. +func (vr *vectorRenderer) QuadCurveTo(cx, cy, x, y int) { + vr.p = append(vr.p, fmt.Sprintf("Q%d,%d %d,%d", cx, cy, x, y)) +} + +func (vr *vectorRenderer) ArcTo(cx, cy int, rx, ry, startAngle, delta float64) { + startAngle = RadianAdd(startAngle, _pi2) + endAngle := RadianAdd(startAngle, delta) + + startx := cx + int(rx*math.Sin(startAngle)) + starty := cy - int(ry*math.Cos(startAngle)) + + if len(vr.p) > 0 { + vr.p = append(vr.p, fmt.Sprintf("L %d %d", startx, starty)) + } else { + vr.p = append(vr.p, fmt.Sprintf("M %d %d", startx, starty)) + } + + endx := cx + int(rx*math.Sin(endAngle)) + endy := cy - int(ry*math.Cos(endAngle)) + + dd := RadiansToDegrees(delta) + + largeArcFlag := 0 + if delta > _pi { + largeArcFlag = 1 + } + + vr.p = append(vr.p, fmt.Sprintf("A %d %d %0.2f %d 1 %d %d", int(rx), int(ry), dd, largeArcFlag, endx, endy)) +} + +// Close closes a shape. +func (vr *vectorRenderer) Close() { + vr.p = append(vr.p, fmt.Sprintf("Z")) +} + +// Stroke draws the path with no fill. +func (vr *vectorRenderer) Stroke() { + vr.drawPath(vr.s.GetStrokeOptions()) +} + +// Fill draws the path with no stroke. +func (vr *vectorRenderer) Fill() { + vr.drawPath(vr.s.GetFillOptions()) +} + +// FillStroke draws the path with both fill and stroke. +func (vr *vectorRenderer) FillStroke() { + vr.drawPath(vr.s.GetFillAndStrokeOptions()) +} + +// drawPath draws a path. +func (vr *vectorRenderer) drawPath(s Style) { + vr.c.Path(strings.Join(vr.p, "\n"), vr.s.GetFillAndStrokeOptions()) + vr.p = []string{} // clear the path +} + +// Circle implements the interface method. +func (vr *vectorRenderer) Circle(radius float64, x, y int) { + vr.c.Circle(x, y, int(radius), vr.s.GetFillAndStrokeOptions()) +} + +// SetFont implements the interface method. +func (vr *vectorRenderer) SetFont(f *truetype.Font) { + vr.s.Font = f +} + +// SetFontColor implements the interface method. +func (vr *vectorRenderer) SetFontColor(c drawing.Color) { + vr.s.FontColor = c +} + +// SetFontSize implements the interface method. +func (vr *vectorRenderer) SetFontSize(size float64) { + vr.s.FontSize = size +} + +// Text draws a text blob. +func (vr *vectorRenderer) Text(body string, x, y int) { + vr.c.Text(x, y, body, vr.s.GetTextOptions()) +} + +// MeasureText uses the truetype font drawer to measure the width of text. +func (vr *vectorRenderer) MeasureText(body string) (box Box) { + if vr.s.GetFont() != nil { + vr.fc = &font.Drawer{ + Face: truetype.NewFace(vr.s.GetFont(), &truetype.Options{ + DPI: vr.dpi, + Size: vr.s.FontSize, + }), + } + w := vr.fc.MeasureString(body).Ceil() + + box.Right = w + box.Bottom = int(drawing.PointsToPixels(vr.dpi, vr.s.FontSize)) + if vr.c.textTheta == nil { + return + } + box = box.Corners().Rotate(RadiansToDegrees(*vr.c.textTheta)).Box() + } + return +} + +// SetTextRotation sets the text rotation. +func (vr *vectorRenderer) SetTextRotation(radians float64) { + vr.c.textTheta = &radians +} + +// ClearTextRotation clears the text rotation. +func (vr *vectorRenderer) ClearTextRotation() { + vr.c.textTheta = nil +} + +// Save saves the renderer's contents to a writer. +func (vr *vectorRenderer) Save(w io.Writer) error { + vr.c.End() + _, err := w.Write(vr.b.Bytes()) + return err +} + +func newCanvas(w io.Writer) *canvas { + return &canvas{ + w: w, + dpi: DefaultDPI, + } +} + +type canvas struct { + w io.Writer + dpi float64 + textTheta *float64 + width int + height int + css string + nonce string +} + +func (c *canvas) Start(width, height int) { + c.width = width + c.height = height + c.w.Write([]byte(fmt.Sprintf(`\n`, c.width, c.height))) + if c.css != "" { + c.w.Write([]byte(``, c.css))) + } +} + +func (c *canvas) Path(d string, style Style) { + var strokeDashArrayProperty string + if len(style.StrokeDashArray) > 0 { + strokeDashArrayProperty = c.getStrokeDashArray(style) + } + c.w.Write([]byte(fmt.Sprintf(``, strokeDashArrayProperty, d, c.styleAsSVG(style)))) +} + +func (c *canvas) Text(x, y int, body string, style Style) { + if c.textTheta == nil { + c.w.Write([]byte(fmt.Sprintf(`%s`, x, y, c.styleAsSVG(style), body))) + } else { + transform := fmt.Sprintf(` transform="rotate(%0.2f,%d,%d)"`, RadiansToDegrees(*c.textTheta), x, y) + c.w.Write([]byte(fmt.Sprintf(`%s`, x, y, c.styleAsSVG(style), transform, body))) + } +} + +func (c *canvas) Circle(x, y, r int, style Style) { + c.w.Write([]byte(fmt.Sprintf(``, x, y, r, c.styleAsSVG(style)))) +} + +func (c *canvas) End() { + c.w.Write([]byte("")) +} + +// getStrokeDashArray returns the stroke-dasharray property of a style. +func (c *canvas) getStrokeDashArray(s Style) string { + if len(s.StrokeDashArray) > 0 { + var values []string + for _, v := range s.StrokeDashArray { + values = append(values, fmt.Sprintf("%0.1f", v)) + } + return "stroke-dasharray=\"" + strings.Join(values, ", ") + "\"" + } + return "" +} + +// GetFontFace returns the font face for the style. +func (c *canvas) getFontFace(s Style) string { + family := "sans-serif" + if s.GetFont() != nil { + name := s.GetFont().Name(truetype.NameIDFontFamily) + if len(name) != 0 { + family = fmt.Sprintf(`'%s',%s`, name, family) + } + } + return fmt.Sprintf("font-family:%s", family) +} + +// styleAsSVG returns the style as a svg style or class string. +func (c *canvas) styleAsSVG(s Style) string { + sw := s.StrokeWidth + sc := s.StrokeColor + fc := s.FillColor + fs := s.FontSize + fnc := s.FontColor + + if s.ClassName != "" { + var classes []string + classes = append(classes, s.ClassName) + if !sc.IsZero() { + classes = append(classes, "stroke") + } + if !fc.IsZero() { + classes = append(classes, "fill") + } + if fs != 0 || s.Font != nil { + classes = append(classes, "text") + } + + return fmt.Sprintf("class=\"%s\"", strings.Join(classes, " ")) + } + + var pieces []string + + if sw != 0 { + pieces = append(pieces, "stroke-width:"+fmt.Sprintf("%d", int(sw))) + } else { + pieces = append(pieces, "stroke-width:0") + } + + if !sc.IsZero() { + pieces = append(pieces, "stroke:"+sc.String()) + } else { + pieces = append(pieces, "stroke:none") + } + + if !fnc.IsZero() { + pieces = append(pieces, "fill:"+fnc.String()) + } else if !fc.IsZero() { + pieces = append(pieces, "fill:"+fc.String()) + } else { + pieces = append(pieces, "fill:none") + } + + if fs != 0 { + pieces = append(pieces, "font-size:"+fmt.Sprintf("%.1fpx", drawing.PointsToPixels(c.dpi, fs))) + } + + if s.Font != nil { + pieces = append(pieces, c.getFontFace(s)) + } + return fmt.Sprintf("style=\"%s\"", strings.Join(pieces, ";")) +} diff --git a/vendor/github.com/wcharczuk/go-chart/v2/viridis.go b/vendor/github.com/wcharczuk/go-chart/v2/viridis.go new file mode 100644 index 00000000..42343190 --- /dev/null +++ b/vendor/github.com/wcharczuk/go-chart/v2/viridis.go @@ -0,0 +1,269 @@ +package chart + +import "github.com/wcharczuk/go-chart/v2/drawing" + +var viridisColors = [256]drawing.Color{ + drawing.Color{R: 0x44, G: 0x1, B: 0x54, A: 0xff}, + drawing.Color{R: 0x44, G: 0x2, B: 0x55, A: 0xff}, + drawing.Color{R: 0x45, G: 0x3, B: 0x57, A: 0xff}, + drawing.Color{R: 0x45, G: 0x5, B: 0x58, A: 0xff}, + drawing.Color{R: 0x45, G: 0x6, B: 0x5a, A: 0xff}, + drawing.Color{R: 0x46, G: 0x8, B: 0x5b, A: 0xff}, + drawing.Color{R: 0x46, G: 0x9, B: 0x5d, A: 0xff}, + drawing.Color{R: 0x46, G: 0xb, B: 0x5e, A: 0xff}, + drawing.Color{R: 0x46, G: 0xc, B: 0x60, A: 0xff}, + drawing.Color{R: 0x47, G: 0xe, B: 0x61, A: 0xff}, + drawing.Color{R: 0x47, G: 0xf, B: 0x62, A: 0xff}, + drawing.Color{R: 0x47, G: 0x11, B: 0x64, A: 0xff}, + drawing.Color{R: 0x47, G: 0x12, B: 0x65, A: 0xff}, + drawing.Color{R: 0x47, G: 0x14, B: 0x66, A: 0xff}, + drawing.Color{R: 0x48, G: 0x15, B: 0x68, A: 0xff}, + drawing.Color{R: 0x48, G: 0x16, B: 0x69, A: 0xff}, + drawing.Color{R: 0x48, G: 0x18, B: 0x6a, A: 0xff}, + drawing.Color{R: 0x48, G: 0x19, B: 0x6c, A: 0xff}, + drawing.Color{R: 0x48, G: 0x1a, B: 0x6d, A: 0xff}, + drawing.Color{R: 0x48, G: 0x1c, B: 0x6e, A: 0xff}, + drawing.Color{R: 0x48, G: 0x1d, B: 0x6f, A: 0xff}, + drawing.Color{R: 0x48, G: 0x1e, B: 0x70, A: 0xff}, + drawing.Color{R: 0x48, G: 0x20, B: 0x71, A: 0xff}, + drawing.Color{R: 0x48, G: 0x21, B: 0x73, A: 0xff}, + drawing.Color{R: 0x48, G: 0x22, B: 0x74, A: 0xff}, + drawing.Color{R: 0x48, G: 0x24, B: 0x75, A: 0xff}, + drawing.Color{R: 0x48, G: 0x25, B: 0x76, A: 0xff}, + drawing.Color{R: 0x48, G: 0x26, B: 0x77, A: 0xff}, + drawing.Color{R: 0x48, G: 0x27, B: 0x78, A: 0xff}, + drawing.Color{R: 0x47, G: 0x29, B: 0x79, A: 0xff}, + drawing.Color{R: 0x47, G: 0x2a, B: 0x79, A: 0xff}, + drawing.Color{R: 0x47, G: 0x2b, B: 0x7a, A: 0xff}, + drawing.Color{R: 0x47, G: 0x2c, B: 0x7b, A: 0xff}, + drawing.Color{R: 0x47, G: 0x2e, B: 0x7c, A: 0xff}, + drawing.Color{R: 0x46, G: 0x2f, B: 0x7d, A: 0xff}, + drawing.Color{R: 0x46, G: 0x30, B: 0x7e, A: 0xff}, + drawing.Color{R: 0x46, G: 0x31, B: 0x7e, A: 0xff}, + drawing.Color{R: 0x46, G: 0x33, B: 0x7f, A: 0xff}, + drawing.Color{R: 0x45, G: 0x34, B: 0x80, A: 0xff}, + drawing.Color{R: 0x45, G: 0x35, B: 0x81, A: 0xff}, + drawing.Color{R: 0x45, G: 0x36, B: 0x81, A: 0xff}, + drawing.Color{R: 0x44, G: 0x38, B: 0x82, A: 0xff}, + drawing.Color{R: 0x44, G: 0x39, B: 0x83, A: 0xff}, + drawing.Color{R: 0x44, G: 0x3a, B: 0x83, A: 0xff}, + drawing.Color{R: 0x43, G: 0x3b, B: 0x84, A: 0xff}, + drawing.Color{R: 0x43, G: 0x3c, B: 0x84, A: 0xff}, + drawing.Color{R: 0x43, G: 0x3e, B: 0x85, A: 0xff}, + drawing.Color{R: 0x42, G: 0x3f, B: 0x85, A: 0xff}, + drawing.Color{R: 0x42, G: 0x40, B: 0x86, A: 0xff}, + drawing.Color{R: 0x41, G: 0x41, B: 0x86, A: 0xff}, + drawing.Color{R: 0x41, G: 0x42, B: 0x87, A: 0xff}, + drawing.Color{R: 0x41, G: 0x43, B: 0x87, A: 0xff}, + drawing.Color{R: 0x40, G: 0x45, B: 0x88, A: 0xff}, + drawing.Color{R: 0x40, G: 0x46, B: 0x88, A: 0xff}, + drawing.Color{R: 0x3f, G: 0x47, B: 0x88, A: 0xff}, + drawing.Color{R: 0x3f, G: 0x48, B: 0x89, A: 0xff}, + drawing.Color{R: 0x3e, G: 0x49, B: 0x89, A: 0xff}, + drawing.Color{R: 0x3e, G: 0x4a, B: 0x89, A: 0xff}, + drawing.Color{R: 0x3d, G: 0x4b, B: 0x8a, A: 0xff}, + drawing.Color{R: 0x3d, G: 0x4d, B: 0x8a, A: 0xff}, + drawing.Color{R: 0x3c, G: 0x4e, B: 0x8a, A: 0xff}, + drawing.Color{R: 0x3c, G: 0x4f, B: 0x8a, A: 0xff}, + drawing.Color{R: 0x3b, G: 0x50, B: 0x8b, A: 0xff}, + drawing.Color{R: 0x3b, G: 0x51, B: 0x8b, A: 0xff}, + drawing.Color{R: 0x3a, G: 0x52, B: 0x8b, A: 0xff}, + drawing.Color{R: 0x3a, G: 0x53, B: 0x8b, A: 0xff}, + drawing.Color{R: 0x39, G: 0x54, B: 0x8c, A: 0xff}, + drawing.Color{R: 0x39, G: 0x55, B: 0x8c, A: 0xff}, + drawing.Color{R: 0x38, G: 0x56, B: 0x8c, A: 0xff}, + drawing.Color{R: 0x38, G: 0x57, B: 0x8c, A: 0xff}, + drawing.Color{R: 0x37, G: 0x58, B: 0x8c, A: 0xff}, + drawing.Color{R: 0x37, G: 0x59, B: 0x8c, A: 0xff}, + drawing.Color{R: 0x36, G: 0x5b, B: 0x8d, A: 0xff}, + drawing.Color{R: 0x36, G: 0x5c, B: 0x8d, A: 0xff}, + drawing.Color{R: 0x35, G: 0x5d, B: 0x8d, A: 0xff}, + drawing.Color{R: 0x35, G: 0x5e, B: 0x8d, A: 0xff}, + drawing.Color{R: 0x34, G: 0x5f, B: 0x8d, A: 0xff}, + drawing.Color{R: 0x34, G: 0x60, B: 0x8d, A: 0xff}, + drawing.Color{R: 0x33, G: 0x61, B: 0x8d, A: 0xff}, + drawing.Color{R: 0x33, G: 0x62, B: 0x8d, A: 0xff}, + drawing.Color{R: 0x33, G: 0x63, B: 0x8d, A: 0xff}, + drawing.Color{R: 0x32, G: 0x64, B: 0x8e, A: 0xff}, + drawing.Color{R: 0x32, G: 0x65, B: 0x8e, A: 0xff}, + drawing.Color{R: 0x31, G: 0x66, B: 0x8e, A: 0xff}, + drawing.Color{R: 0x31, G: 0x67, B: 0x8e, A: 0xff}, + drawing.Color{R: 0x30, G: 0x68, B: 0x8e, A: 0xff}, + drawing.Color{R: 0x30, G: 0x69, B: 0x8e, A: 0xff}, + drawing.Color{R: 0x2f, G: 0x6a, B: 0x8e, A: 0xff}, + drawing.Color{R: 0x2f, G: 0x6b, B: 0x8e, A: 0xff}, + drawing.Color{R: 0x2f, G: 0x6c, B: 0x8e, A: 0xff}, + drawing.Color{R: 0x2e, G: 0x6d, B: 0x8e, A: 0xff}, + drawing.Color{R: 0x2e, G: 0x6e, B: 0x8e, A: 0xff}, + drawing.Color{R: 0x2d, G: 0x6f, B: 0x8e, A: 0xff}, + drawing.Color{R: 0x2d, G: 0x70, B: 0x8e, A: 0xff}, + drawing.Color{R: 0x2d, G: 0x70, B: 0x8e, A: 0xff}, + drawing.Color{R: 0x2c, G: 0x71, B: 0x8e, A: 0xff}, + drawing.Color{R: 0x2c, G: 0x72, B: 0x8e, A: 0xff}, + drawing.Color{R: 0x2b, G: 0x73, B: 0x8e, A: 0xff}, + drawing.Color{R: 0x2b, G: 0x74, B: 0x8e, A: 0xff}, + drawing.Color{R: 0x2b, G: 0x75, B: 0x8e, A: 0xff}, + drawing.Color{R: 0x2a, G: 0x76, B: 0x8e, A: 0xff}, + drawing.Color{R: 0x2a, G: 0x77, B: 0x8e, A: 0xff}, + drawing.Color{R: 0x29, G: 0x78, B: 0x8e, A: 0xff}, + drawing.Color{R: 0x29, G: 0x79, B: 0x8e, A: 0xff}, + drawing.Color{R: 0x29, G: 0x7a, B: 0x8e, A: 0xff}, + drawing.Color{R: 0x28, G: 0x7b, B: 0x8e, A: 0xff}, + drawing.Color{R: 0x28, G: 0x7c, B: 0x8e, A: 0xff}, + drawing.Color{R: 0x28, G: 0x7d, B: 0x8e, A: 0xff}, + drawing.Color{R: 0x27, G: 0x7e, B: 0x8e, A: 0xff}, + drawing.Color{R: 0x27, G: 0x7f, B: 0x8e, A: 0xff}, + drawing.Color{R: 0x26, G: 0x80, B: 0x8e, A: 0xff}, + drawing.Color{R: 0x26, G: 0x81, B: 0x8e, A: 0xff}, + drawing.Color{R: 0x26, G: 0x82, B: 0x8e, A: 0xff}, + drawing.Color{R: 0x25, G: 0x83, B: 0x8e, A: 0xff}, + drawing.Color{R: 0x25, G: 0x83, B: 0x8e, A: 0xff}, + drawing.Color{R: 0x25, G: 0x84, B: 0x8e, A: 0xff}, + drawing.Color{R: 0x24, G: 0x85, B: 0x8e, A: 0xff}, + drawing.Color{R: 0x24, G: 0x86, B: 0x8e, A: 0xff}, + drawing.Color{R: 0x23, G: 0x87, B: 0x8e, A: 0xff}, + drawing.Color{R: 0x23, G: 0x88, B: 0x8e, A: 0xff}, + drawing.Color{R: 0x23, G: 0x89, B: 0x8e, A: 0xff}, + drawing.Color{R: 0x22, G: 0x8a, B: 0x8d, A: 0xff}, + drawing.Color{R: 0x22, G: 0x8b, B: 0x8d, A: 0xff}, + drawing.Color{R: 0x22, G: 0x8c, B: 0x8d, A: 0xff}, + drawing.Color{R: 0x21, G: 0x8d, B: 0x8d, A: 0xff}, + drawing.Color{R: 0x21, G: 0x8e, B: 0x8d, A: 0xff}, + drawing.Color{R: 0x21, G: 0x8f, B: 0x8d, A: 0xff}, + drawing.Color{R: 0x20, G: 0x90, B: 0x8d, A: 0xff}, + drawing.Color{R: 0x20, G: 0x91, B: 0x8c, A: 0xff}, + drawing.Color{R: 0x20, G: 0x92, B: 0x8c, A: 0xff}, + drawing.Color{R: 0x20, G: 0x93, B: 0x8c, A: 0xff}, + drawing.Color{R: 0x1f, G: 0x93, B: 0x8c, A: 0xff}, + drawing.Color{R: 0x1f, G: 0x94, B: 0x8c, A: 0xff}, + drawing.Color{R: 0x1f, G: 0x95, B: 0x8b, A: 0xff}, + drawing.Color{R: 0x1f, G: 0x96, B: 0x8b, A: 0xff}, + drawing.Color{R: 0x1f, G: 0x97, B: 0x8b, A: 0xff}, + drawing.Color{R: 0x1e, G: 0x98, B: 0x8b, A: 0xff}, + drawing.Color{R: 0x1e, G: 0x99, B: 0x8a, A: 0xff}, + drawing.Color{R: 0x1e, G: 0x9a, B: 0x8a, A: 0xff}, + drawing.Color{R: 0x1e, G: 0x9b, B: 0x8a, A: 0xff}, + drawing.Color{R: 0x1e, G: 0x9c, B: 0x89, A: 0xff}, + drawing.Color{R: 0x1e, G: 0x9d, B: 0x89, A: 0xff}, + drawing.Color{R: 0x1e, G: 0x9e, B: 0x89, A: 0xff}, + drawing.Color{R: 0x1e, G: 0x9f, B: 0x88, A: 0xff}, + drawing.Color{R: 0x1e, G: 0xa0, B: 0x88, A: 0xff}, + drawing.Color{R: 0x1f, G: 0xa1, B: 0x88, A: 0xff}, + drawing.Color{R: 0x1f, G: 0xa2, B: 0x87, A: 0xff}, + drawing.Color{R: 0x1f, G: 0xa3, B: 0x87, A: 0xff}, + drawing.Color{R: 0x1f, G: 0xa3, B: 0x86, A: 0xff}, + drawing.Color{R: 0x20, G: 0xa4, B: 0x86, A: 0xff}, + drawing.Color{R: 0x20, G: 0xa5, B: 0x86, A: 0xff}, + drawing.Color{R: 0x21, G: 0xa6, B: 0x85, A: 0xff}, + drawing.Color{R: 0x21, G: 0xa7, B: 0x85, A: 0xff}, + drawing.Color{R: 0x22, G: 0xa8, B: 0x84, A: 0xff}, + drawing.Color{R: 0x23, G: 0xa9, B: 0x83, A: 0xff}, + drawing.Color{R: 0x23, G: 0xaa, B: 0x83, A: 0xff}, + drawing.Color{R: 0x24, G: 0xab, B: 0x82, A: 0xff}, + drawing.Color{R: 0x25, G: 0xac, B: 0x82, A: 0xff}, + drawing.Color{R: 0x26, G: 0xad, B: 0x81, A: 0xff}, + drawing.Color{R: 0x27, G: 0xae, B: 0x81, A: 0xff}, + drawing.Color{R: 0x28, G: 0xaf, B: 0x80, A: 0xff}, + drawing.Color{R: 0x29, G: 0xaf, B: 0x7f, A: 0xff}, + drawing.Color{R: 0x2a, G: 0xb0, B: 0x7f, A: 0xff}, + drawing.Color{R: 0x2b, G: 0xb1, B: 0x7e, A: 0xff}, + drawing.Color{R: 0x2c, G: 0xb2, B: 0x7d, A: 0xff}, + drawing.Color{R: 0x2e, G: 0xb3, B: 0x7c, A: 0xff}, + drawing.Color{R: 0x2f, G: 0xb4, B: 0x7c, A: 0xff}, + drawing.Color{R: 0x30, G: 0xb5, B: 0x7b, A: 0xff}, + drawing.Color{R: 0x32, G: 0xb6, B: 0x7a, A: 0xff}, + drawing.Color{R: 0x33, G: 0xb7, B: 0x79, A: 0xff}, + drawing.Color{R: 0x35, G: 0xb7, B: 0x79, A: 0xff}, + drawing.Color{R: 0x36, G: 0xb8, B: 0x78, A: 0xff}, + drawing.Color{R: 0x38, G: 0xb9, B: 0x77, A: 0xff}, + drawing.Color{R: 0x39, G: 0xba, B: 0x76, A: 0xff}, + drawing.Color{R: 0x3b, G: 0xbb, B: 0x75, A: 0xff}, + drawing.Color{R: 0x3d, G: 0xbc, B: 0x74, A: 0xff}, + drawing.Color{R: 0x3e, G: 0xbd, B: 0x73, A: 0xff}, + drawing.Color{R: 0x40, G: 0xbe, B: 0x72, A: 0xff}, + drawing.Color{R: 0x42, G: 0xbe, B: 0x71, A: 0xff}, + drawing.Color{R: 0x44, G: 0xbf, B: 0x70, A: 0xff}, + drawing.Color{R: 0x46, G: 0xc0, B: 0x6f, A: 0xff}, + drawing.Color{R: 0x48, G: 0xc1, B: 0x6e, A: 0xff}, + drawing.Color{R: 0x49, G: 0xc2, B: 0x6d, A: 0xff}, + drawing.Color{R: 0x4b, G: 0xc2, B: 0x6c, A: 0xff}, + drawing.Color{R: 0x4d, G: 0xc3, B: 0x6b, A: 0xff}, + drawing.Color{R: 0x4f, G: 0xc4, B: 0x6a, A: 0xff}, + drawing.Color{R: 0x51, G: 0xc5, B: 0x69, A: 0xff}, + drawing.Color{R: 0x53, G: 0xc6, B: 0x68, A: 0xff}, + drawing.Color{R: 0x55, G: 0xc6, B: 0x66, A: 0xff}, + drawing.Color{R: 0x58, G: 0xc7, B: 0x65, A: 0xff}, + drawing.Color{R: 0x5a, G: 0xc8, B: 0x64, A: 0xff}, + drawing.Color{R: 0x5c, G: 0xc9, B: 0x63, A: 0xff}, + drawing.Color{R: 0x5e, G: 0xc9, B: 0x62, A: 0xff}, + drawing.Color{R: 0x60, G: 0xca, B: 0x60, A: 0xff}, + drawing.Color{R: 0x62, G: 0xcb, B: 0x5f, A: 0xff}, + drawing.Color{R: 0x65, G: 0xcc, B: 0x5e, A: 0xff}, + drawing.Color{R: 0x67, G: 0xcc, B: 0x5c, A: 0xff}, + drawing.Color{R: 0x69, G: 0xcd, B: 0x5b, A: 0xff}, + drawing.Color{R: 0x6c, G: 0xce, B: 0x5a, A: 0xff}, + drawing.Color{R: 0x6e, G: 0xce, B: 0x58, A: 0xff}, + drawing.Color{R: 0x70, G: 0xcf, B: 0x57, A: 0xff}, + drawing.Color{R: 0x73, G: 0xd0, B: 0x55, A: 0xff}, + drawing.Color{R: 0x75, G: 0xd0, B: 0x54, A: 0xff}, + drawing.Color{R: 0x77, G: 0xd1, B: 0x52, A: 0xff}, + drawing.Color{R: 0x7a, G: 0xd2, B: 0x51, A: 0xff}, + drawing.Color{R: 0x7c, G: 0xd2, B: 0x4f, A: 0xff}, + drawing.Color{R: 0x7f, G: 0xd3, B: 0x4e, A: 0xff}, + drawing.Color{R: 0x81, G: 0xd4, B: 0x4c, A: 0xff}, + drawing.Color{R: 0x84, G: 0xd4, B: 0x4b, A: 0xff}, + drawing.Color{R: 0x86, G: 0xd5, B: 0x49, A: 0xff}, + drawing.Color{R: 0x89, G: 0xd5, B: 0x48, A: 0xff}, + drawing.Color{R: 0x8b, G: 0xd6, B: 0x46, A: 0xff}, + drawing.Color{R: 0x8e, G: 0xd7, B: 0x44, A: 0xff}, + drawing.Color{R: 0x90, G: 0xd7, B: 0x43, A: 0xff}, + drawing.Color{R: 0x93, G: 0xd8, B: 0x41, A: 0xff}, + drawing.Color{R: 0x95, G: 0xd8, B: 0x3f, A: 0xff}, + drawing.Color{R: 0x98, G: 0xd9, B: 0x3e, A: 0xff}, + drawing.Color{R: 0x9b, G: 0xd9, B: 0x3c, A: 0xff}, + drawing.Color{R: 0x9d, G: 0xda, B: 0x3a, A: 0xff}, + drawing.Color{R: 0xa0, G: 0xda, B: 0x39, A: 0xff}, + drawing.Color{R: 0xa3, G: 0xdb, B: 0x37, A: 0xff}, + drawing.Color{R: 0xa5, G: 0xdb, B: 0x35, A: 0xff}, + drawing.Color{R: 0xa8, G: 0xdc, B: 0x33, A: 0xff}, + drawing.Color{R: 0xab, G: 0xdc, B: 0x32, A: 0xff}, + drawing.Color{R: 0xad, G: 0xdd, B: 0x30, A: 0xff}, + drawing.Color{R: 0xb0, G: 0xdd, B: 0x2e, A: 0xff}, + drawing.Color{R: 0xb3, G: 0xdd, B: 0x2d, A: 0xff}, + drawing.Color{R: 0xb5, G: 0xde, B: 0x2b, A: 0xff}, + drawing.Color{R: 0xb8, G: 0xde, B: 0x29, A: 0xff}, + drawing.Color{R: 0xbb, G: 0xdf, B: 0x27, A: 0xff}, + drawing.Color{R: 0xbd, G: 0xdf, B: 0x26, A: 0xff}, + drawing.Color{R: 0xc0, G: 0xdf, B: 0x24, A: 0xff}, + drawing.Color{R: 0xc3, G: 0xe0, B: 0x23, A: 0xff}, + drawing.Color{R: 0xc5, G: 0xe0, B: 0x21, A: 0xff}, + drawing.Color{R: 0xc8, G: 0xe1, B: 0x20, A: 0xff}, + drawing.Color{R: 0xcb, G: 0xe1, B: 0x1e, A: 0xff}, + drawing.Color{R: 0xcd, G: 0xe1, B: 0x1d, A: 0xff}, + drawing.Color{R: 0xd0, G: 0xe2, B: 0x1c, A: 0xff}, + drawing.Color{R: 0xd3, G: 0xe2, B: 0x1b, A: 0xff}, + drawing.Color{R: 0xd5, G: 0xe2, B: 0x1a, A: 0xff}, + drawing.Color{R: 0xd8, G: 0xe3, B: 0x19, A: 0xff}, + drawing.Color{R: 0xdb, G: 0xe3, B: 0x18, A: 0xff}, + drawing.Color{R: 0xdd, G: 0xe3, B: 0x18, A: 0xff}, + drawing.Color{R: 0xe0, G: 0xe4, B: 0x18, A: 0xff}, + drawing.Color{R: 0xe2, G: 0xe4, B: 0x18, A: 0xff}, + drawing.Color{R: 0xe5, G: 0xe4, B: 0x18, A: 0xff}, + drawing.Color{R: 0xe8, G: 0xe5, B: 0x19, A: 0xff}, + drawing.Color{R: 0xea, G: 0xe5, B: 0x19, A: 0xff}, + drawing.Color{R: 0xed, G: 0xe5, B: 0x1a, A: 0xff}, + drawing.Color{R: 0xef, G: 0xe6, B: 0x1b, A: 0xff}, + drawing.Color{R: 0xf2, G: 0xe6, B: 0x1c, A: 0xff}, + drawing.Color{R: 0xf4, G: 0xe6, B: 0x1e, A: 0xff}, + drawing.Color{R: 0xf7, G: 0xe6, B: 0x1f, A: 0xff}, + drawing.Color{R: 0xf9, G: 0xe7, B: 0x21, A: 0xff}, + drawing.Color{R: 0xfb, G: 0xe7, B: 0x23, A: 0xff}, + drawing.Color{R: 0xfe, G: 0xe7, B: 0x24, A: 0xff}, +} + +// Viridis creates a color map provider. +func Viridis(v, vmin, vmax float64) drawing.Color { + normalized := (v - vmin) / (vmax - vmin) + index := uint8(normalized * 255) + return viridisColors[index] +} diff --git a/vendor/github.com/wcharczuk/go-chart/v2/xaxis.go b/vendor/github.com/wcharczuk/go-chart/v2/xaxis.go new file mode 100644 index 00000000..4fcb569c --- /dev/null +++ b/vendor/github.com/wcharczuk/go-chart/v2/xaxis.go @@ -0,0 +1,208 @@ +package chart + +import ( + "math" +) + +// HideXAxis hides the x-axis. +func HideXAxis() XAxis { + return XAxis{ + Style: Hidden(), + } +} + +// XAxis represents the horizontal axis. +type XAxis struct { + Name string + NameStyle Style + + Style Style + ValueFormatter ValueFormatter + Range Range + + TickStyle Style + Ticks []Tick + TickPosition TickPosition + + GridLines []GridLine + GridMajorStyle Style + GridMinorStyle Style +} + +// GetName returns the name. +func (xa XAxis) GetName() string { + return xa.Name +} + +// GetStyle returns the style. +func (xa XAxis) GetStyle() Style { + return xa.Style +} + +// GetValueFormatter returns the value formatter for the axis. +func (xa XAxis) GetValueFormatter() ValueFormatter { + if xa.ValueFormatter != nil { + return xa.ValueFormatter + } + return FloatValueFormatter +} + +// GetTickPosition returns the tick position option for the axis. +func (xa XAxis) GetTickPosition(defaults ...TickPosition) TickPosition { + if xa.TickPosition == TickPositionUnset { + if len(defaults) > 0 { + return defaults[0] + } + return TickPositionUnderTick + } + return xa.TickPosition +} + +// GetTicks returns the ticks for a series. +// The coalesce priority is: +// - User Supplied Ticks (i.e. Ticks array on the axis itself). +// - Range ticks (i.e. if the range provides ticks). +// - Generating continuous ticks based on minimum spacing and canvas width. +func (xa XAxis) GetTicks(r Renderer, ra Range, defaults Style, vf ValueFormatter) []Tick { + if len(xa.Ticks) > 0 { + return xa.Ticks + } + if tp, isTickProvider := ra.(TicksProvider); isTickProvider { + return tp.GetTicks(r, defaults, vf) + } + tickStyle := xa.Style.InheritFrom(defaults) + return GenerateContinuousTicks(r, ra, false, tickStyle, vf) +} + +// GetGridLines returns the gridlines for the axis. +func (xa XAxis) GetGridLines(ticks []Tick) []GridLine { + if len(xa.GridLines) > 0 { + return xa.GridLines + } + return GenerateGridLines(ticks, xa.GridMajorStyle, xa.GridMinorStyle) +} + +// Measure returns the bounds of the axis. +func (xa XAxis) Measure(r Renderer, canvasBox Box, ra Range, defaults Style, ticks []Tick) Box { + tickStyle := xa.TickStyle.InheritFrom(xa.Style.InheritFrom(defaults)) + + tp := xa.GetTickPosition() + + var ltx, rtx int + var tx, ty int + var left, right, bottom = math.MaxInt32, 0, 0 + for index, t := range ticks { + v := t.Value + tb := Draw.MeasureText(r, t.Label, tickStyle.GetTextOptions()) + + tx = canvasBox.Left + ra.Translate(v) + ty = canvasBox.Bottom + DefaultXAxisMargin + tb.Height() + switch tp { + case TickPositionUnderTick, TickPositionUnset: + ltx = tx - tb.Width()>>1 + rtx = tx + tb.Width()>>1 + break + case TickPositionBetweenTicks: + if index > 0 { + ltx = ra.Translate(ticks[index-1].Value) + rtx = tx + } + break + } + + left = MinInt(left, ltx) + right = MaxInt(right, rtx) + bottom = MaxInt(bottom, ty) + } + + if !xa.NameStyle.Hidden && len(xa.Name) > 0 { + tb := Draw.MeasureText(r, xa.Name, xa.NameStyle.InheritFrom(defaults)) + bottom += DefaultXAxisMargin + tb.Height() + } + + return Box{ + Top: canvasBox.Bottom, + Left: left, + Right: right, + Bottom: bottom, + } +} + +// Render renders the axis +func (xa XAxis) Render(r Renderer, canvasBox Box, ra Range, defaults Style, ticks []Tick) { + tickStyle := xa.TickStyle.InheritFrom(xa.Style.InheritFrom(defaults)) + + tickStyle.GetStrokeOptions().WriteToRenderer(r) + r.MoveTo(canvasBox.Left, canvasBox.Bottom) + r.LineTo(canvasBox.Right, canvasBox.Bottom) + r.Stroke() + + tp := xa.GetTickPosition() + + var tx, ty int + var maxTextHeight int + for index, t := range ticks { + v := t.Value + lx := ra.Translate(v) + + tx = canvasBox.Left + lx + + tickStyle.GetStrokeOptions().WriteToRenderer(r) + r.MoveTo(tx, canvasBox.Bottom) + r.LineTo(tx, canvasBox.Bottom+DefaultVerticalTickHeight) + r.Stroke() + + tickWithAxisStyle := xa.TickStyle.InheritFrom(xa.Style.InheritFrom(defaults)) + tb := Draw.MeasureText(r, t.Label, tickWithAxisStyle) + + switch tp { + case TickPositionUnderTick, TickPositionUnset: + if tickStyle.TextRotationDegrees == 0 { + tx = tx - tb.Width()>>1 + ty = canvasBox.Bottom + DefaultXAxisMargin + tb.Height() + } else { + ty = canvasBox.Bottom + (2 * DefaultXAxisMargin) + } + Draw.Text(r, t.Label, tx, ty, tickWithAxisStyle) + maxTextHeight = MaxInt(maxTextHeight, tb.Height()) + break + case TickPositionBetweenTicks: + if index > 0 { + llx := ra.Translate(ticks[index-1].Value) + ltx := canvasBox.Left + llx + finalTickStyle := tickWithAxisStyle.InheritFrom(Style{TextHorizontalAlign: TextHorizontalAlignCenter}) + + Draw.TextWithin(r, t.Label, Box{ + Left: ltx, + Right: tx, + Top: canvasBox.Bottom + DefaultXAxisMargin, + Bottom: canvasBox.Bottom + DefaultXAxisMargin, + }, finalTickStyle) + + ftb := Text.MeasureLines(r, Text.WrapFit(r, t.Label, tx-ltx, finalTickStyle), finalTickStyle) + maxTextHeight = MaxInt(maxTextHeight, ftb.Height()) + } + break + } + } + + nameStyle := xa.NameStyle.InheritFrom(defaults) + if !xa.NameStyle.Hidden && len(xa.Name) > 0 { + tb := Draw.MeasureText(r, xa.Name, nameStyle) + tx := canvasBox.Right - (canvasBox.Width()>>1 + tb.Width()>>1) + ty := canvasBox.Bottom + DefaultXAxisMargin + maxTextHeight + DefaultXAxisMargin + tb.Height() + Draw.Text(r, xa.Name, tx, ty, nameStyle) + } + + if !xa.GridMajorStyle.Hidden || !xa.GridMinorStyle.Hidden { + for _, gl := range xa.GetGridLines(ticks) { + if (gl.IsMinor && !xa.GridMinorStyle.Hidden) || (!gl.IsMinor && !xa.GridMajorStyle.Hidden) { + defaults := xa.GridMajorStyle + if gl.IsMinor { + defaults = xa.GridMinorStyle + } + gl.Render(r, canvasBox, ra, true, gl.Style.InheritFrom(defaults)) + } + } + } +} diff --git a/vendor/github.com/wcharczuk/go-chart/v2/yaxis.go b/vendor/github.com/wcharczuk/go-chart/v2/yaxis.go new file mode 100644 index 00000000..841fc862 --- /dev/null +++ b/vendor/github.com/wcharczuk/go-chart/v2/yaxis.go @@ -0,0 +1,234 @@ +package chart + +import ( + "math" +) + +// HideYAxis hides a y-axis. +func HideYAxis() YAxis { + return YAxis{ + Style: Hidden(), + } +} + +// YAxis is a veritcal rule of the range. +// There can be (2) y-axes; a primary and secondary. +type YAxis struct { + Name string + NameStyle Style + + Style Style + + Zero GridLine + + AxisType YAxisType + Ascending bool + + ValueFormatter ValueFormatter + Range Range + + TickStyle Style + Ticks []Tick + + GridLines []GridLine + GridMajorStyle Style + GridMinorStyle Style +} + +// GetName returns the name. +func (ya YAxis) GetName() string { + return ya.Name +} + +// GetNameStyle returns the name style. +func (ya YAxis) GetNameStyle() Style { + return ya.NameStyle +} + +// GetStyle returns the style. +func (ya YAxis) GetStyle() Style { + return ya.Style +} + +// GetValueFormatter returns the value formatter for the axis. +func (ya YAxis) GetValueFormatter() ValueFormatter { + if ya.ValueFormatter != nil { + return ya.ValueFormatter + } + return FloatValueFormatter +} + +// GetTickStyle returns the tick style. +func (ya YAxis) GetTickStyle() Style { + return ya.TickStyle +} + +// GetTicks returns the ticks for a series. +// The coalesce priority is: +// - User Supplied Ticks (i.e. Ticks array on the axis itself). +// - Range ticks (i.e. if the range provides ticks). +// - Generating continuous ticks based on minimum spacing and canvas width. +func (ya YAxis) GetTicks(r Renderer, ra Range, defaults Style, vf ValueFormatter) []Tick { + if len(ya.Ticks) > 0 { + return ya.Ticks + } + if tp, isTickProvider := ra.(TicksProvider); isTickProvider { + return tp.GetTicks(r, defaults, vf) + } + tickStyle := ya.Style.InheritFrom(defaults) + return GenerateContinuousTicks(r, ra, true, tickStyle, vf) +} + +// GetGridLines returns the gridlines for the axis. +func (ya YAxis) GetGridLines(ticks []Tick) []GridLine { + if len(ya.GridLines) > 0 { + return ya.GridLines + } + return GenerateGridLines(ticks, ya.GridMajorStyle, ya.GridMinorStyle) +} + +// Measure returns the bounds of the axis. +func (ya YAxis) Measure(r Renderer, canvasBox Box, ra Range, defaults Style, ticks []Tick) Box { + var tx int + if ya.AxisType == YAxisPrimary { + tx = canvasBox.Right + DefaultYAxisMargin + } else if ya.AxisType == YAxisSecondary { + tx = canvasBox.Left - DefaultYAxisMargin + } + + ya.TickStyle.InheritFrom(ya.Style.InheritFrom(defaults)).WriteToRenderer(r) + var minx, maxx, miny, maxy = math.MaxInt32, 0, math.MaxInt32, 0 + var maxTextHeight int + for _, t := range ticks { + v := t.Value + ly := canvasBox.Bottom - ra.Translate(v) + + tb := r.MeasureText(t.Label) + tbh2 := tb.Height() >> 1 + finalTextX := tx + if ya.AxisType == YAxisSecondary { + finalTextX = tx - tb.Width() + } + + maxTextHeight = MaxInt(tb.Height(), maxTextHeight) + + if ya.AxisType == YAxisPrimary { + minx = canvasBox.Right + maxx = MaxInt(maxx, tx+tb.Width()) + } else if ya.AxisType == YAxisSecondary { + minx = MinInt(minx, finalTextX) + maxx = MaxInt(maxx, tx) + } + + miny = MinInt(miny, ly-tbh2) + maxy = MaxInt(maxy, ly+tbh2) + } + + if !ya.NameStyle.Hidden && len(ya.Name) > 0 { + maxx += (DefaultYAxisMargin + maxTextHeight) + } + + return Box{ + Top: miny, + Left: minx, + Right: maxx, + Bottom: maxy, + } +} + +// Render renders the axis. +func (ya YAxis) Render(r Renderer, canvasBox Box, ra Range, defaults Style, ticks []Tick) { + tickStyle := ya.TickStyle.InheritFrom(ya.Style.InheritFrom(defaults)) + tickStyle.WriteToRenderer(r) + + sw := tickStyle.GetStrokeWidth(defaults.StrokeWidth) + + var lx int + var tx int + if ya.AxisType == YAxisPrimary { + lx = canvasBox.Right + int(sw) + tx = lx + DefaultYAxisMargin + } else if ya.AxisType == YAxisSecondary { + lx = canvasBox.Left - int(sw) + tx = lx - DefaultYAxisMargin + } + + r.MoveTo(lx, canvasBox.Bottom) + r.LineTo(lx, canvasBox.Top) + r.Stroke() + + var maxTextWidth int + var finalTextX, finalTextY int + for _, t := range ticks { + v := t.Value + ly := canvasBox.Bottom - ra.Translate(v) + + tb := Draw.MeasureText(r, t.Label, tickStyle) + + if tb.Width() > maxTextWidth { + maxTextWidth = tb.Width() + } + + if ya.AxisType == YAxisSecondary { + finalTextX = tx - tb.Width() + } else { + finalTextX = tx + } + + if tickStyle.TextRotationDegrees == 0 { + finalTextY = ly + tb.Height()>>1 + } else { + finalTextY = ly + } + + tickStyle.WriteToRenderer(r) + + r.MoveTo(lx, ly) + if ya.AxisType == YAxisPrimary { + r.LineTo(lx+DefaultHorizontalTickWidth, ly) + } else if ya.AxisType == YAxisSecondary { + r.LineTo(lx-DefaultHorizontalTickWidth, ly) + } + r.Stroke() + + Draw.Text(r, t.Label, finalTextX, finalTextY, tickStyle) + } + + nameStyle := ya.NameStyle.InheritFrom(defaults.InheritFrom(Style{TextRotationDegrees: 90})) + if !ya.NameStyle.Hidden && len(ya.Name) > 0 { + nameStyle.GetTextOptions().WriteToRenderer(r) + tb := Draw.MeasureText(r, ya.Name, nameStyle) + + var tx int + if ya.AxisType == YAxisPrimary { + tx = canvasBox.Right + int(sw) + DefaultYAxisMargin + maxTextWidth + DefaultYAxisMargin + } else if ya.AxisType == YAxisSecondary { + tx = canvasBox.Left - (DefaultYAxisMargin + int(sw) + maxTextWidth + DefaultYAxisMargin) + } + + var ty int + if nameStyle.TextRotationDegrees == 0 { + ty = canvasBox.Top + (canvasBox.Height()>>1 - tb.Width()>>1) + } else { + ty = canvasBox.Top + (canvasBox.Height()>>1 - tb.Height()>>1) + } + + Draw.Text(r, ya.Name, tx, ty, nameStyle) + } + + if !ya.Zero.Style.Hidden { + ya.Zero.Render(r, canvasBox, ra, false, Style{}) + } + + if !ya.GridMajorStyle.Hidden || !ya.GridMinorStyle.Hidden { + for _, gl := range ya.GetGridLines(ticks) { + if (gl.IsMinor && !ya.GridMinorStyle.Hidden) || (!gl.IsMinor && !ya.GridMajorStyle.Hidden) { + defaults := ya.GridMajorStyle + if gl.IsMinor { + defaults = ya.GridMinorStyle + } + gl.Render(r, canvasBox, ra, false, gl.Style.InheritFrom(defaults)) + } + } + } +} diff --git a/vendor/golang.org/x/image/AUTHORS b/vendor/golang.org/x/image/AUTHORS new file mode 100644 index 00000000..15167cd7 --- /dev/null +++ b/vendor/golang.org/x/image/AUTHORS @@ -0,0 +1,3 @@ +# This source code refers to The Go Authors for copyright purposes. +# The master list of authors is in the main Go distribution, +# visible at http://tip.golang.org/AUTHORS. diff --git a/vendor/golang.org/x/image/CONTRIBUTORS b/vendor/golang.org/x/image/CONTRIBUTORS new file mode 100644 index 00000000..1c4577e9 --- /dev/null +++ b/vendor/golang.org/x/image/CONTRIBUTORS @@ -0,0 +1,3 @@ +# This source code was written by the Go contributors. +# The master list of contributors is in the main Go distribution, +# visible at http://tip.golang.org/CONTRIBUTORS. diff --git a/vendor/golang.org/x/image/LICENSE b/vendor/golang.org/x/image/LICENSE new file mode 100644 index 00000000..6a66aea5 --- /dev/null +++ b/vendor/golang.org/x/image/LICENSE @@ -0,0 +1,27 @@ +Copyright (c) 2009 The Go Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/vendor/golang.org/x/image/PATENTS b/vendor/golang.org/x/image/PATENTS new file mode 100644 index 00000000..73309904 --- /dev/null +++ b/vendor/golang.org/x/image/PATENTS @@ -0,0 +1,22 @@ +Additional IP Rights Grant (Patents) + +"This implementation" means the copyrightable works distributed by +Google as part of the Go project. + +Google hereby grants to You a perpetual, worldwide, non-exclusive, +no-charge, royalty-free, irrevocable (except as stated in this section) +patent license to make, have made, use, offer to sell, sell, import, +transfer and otherwise run, modify and propagate the contents of this +implementation of Go, where such license applies only to those patent +claims, both currently owned or controlled by Google and acquired in +the future, licensable by Google that are necessarily infringed by this +implementation of Go. This grant does not include claims that would be +infringed only as a consequence of further modification of this +implementation. If you or your agent or exclusive licensee institute or +order or agree to the institution of patent litigation against any +entity (including a cross-claim or counterclaim in a lawsuit) alleging +that this implementation of Go or any code incorporated within this +implementation of Go constitutes direct or contributory patent +infringement, or inducement of patent infringement, then any patent +rights granted to you under this License for this implementation of Go +shall terminate as of the date such litigation is filed. diff --git a/vendor/golang.org/x/image/draw/draw.go b/vendor/golang.org/x/image/draw/draw.go new file mode 100644 index 00000000..cd5aaba6 --- /dev/null +++ b/vendor/golang.org/x/image/draw/draw.go @@ -0,0 +1,61 @@ +// Copyright 2015 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package draw provides image composition functions. +// +// See "The Go image/draw package" for an introduction to this package: +// http://golang.org/doc/articles/image_draw.html +// +// This package is a superset of and a drop-in replacement for the image/draw +// package in the standard library. +package draw + +// This file just contains the API exported by the image/draw package in the +// standard library. Other files in this package provide additional features. + +import ( + "image" + "image/draw" +) + +// Draw calls DrawMask with a nil mask. +func Draw(dst Image, r image.Rectangle, src image.Image, sp image.Point, op Op) { + draw.Draw(dst, r, src, sp, draw.Op(op)) +} + +// DrawMask aligns r.Min in dst with sp in src and mp in mask and then +// replaces the rectangle r in dst with the result of a Porter-Duff +// composition. A nil mask is treated as opaque. +func DrawMask(dst Image, r image.Rectangle, src image.Image, sp image.Point, mask image.Image, mp image.Point, op Op) { + draw.DrawMask(dst, r, src, sp, mask, mp, draw.Op(op)) +} + +// Drawer contains the Draw method. +type Drawer = draw.Drawer + +// FloydSteinberg is a Drawer that is the Src Op with Floyd-Steinberg error +// diffusion. +var FloydSteinberg Drawer = floydSteinberg{} + +type floydSteinberg struct{} + +func (floydSteinberg) Draw(dst Image, r image.Rectangle, src image.Image, sp image.Point) { + draw.FloydSteinberg.Draw(dst, r, src, sp) +} + +// Image is an image.Image with a Set method to change a single pixel. +type Image = draw.Image + +// Op is a Porter-Duff compositing operator. +type Op = draw.Op + +const ( + // Over specifies ``(src in mask) over dst''. + Over Op = draw.Over + // Src specifies ``src in mask''. + Src Op = draw.Src +) + +// Quantizer produces a palette for an image. +type Quantizer = draw.Quantizer diff --git a/vendor/golang.org/x/image/draw/draw_go117.go b/vendor/golang.org/x/image/draw/draw_go117.go new file mode 100644 index 00000000..fa836486 --- /dev/null +++ b/vendor/golang.org/x/image/draw/draw_go117.go @@ -0,0 +1,27 @@ +// Copyright 2021 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build go1.17 +// +build go1.17 + +package draw + +import ( + "image/draw" +) + +// The package documentation, in draw.go, gives the intent of this package: +// +// This package is a superset of and a drop-in replacement for the +// image/draw package in the standard library. +// +// "Drop-in replacement" means that we use type aliases in this file. +// +// TODO: move the type aliases to draw.go once Go 1.16 is no longer supported. + +// RGBA64Image extends both the Image and image.RGBA64Image interfaces with a +// SetRGBA64 method to change a single pixel. SetRGBA64 is equivalent to +// calling Set, but it can avoid allocations from converting concrete color +// types to the color.Color interface type. +type RGBA64Image = draw.RGBA64Image diff --git a/vendor/golang.org/x/image/draw/impl.go b/vendor/golang.org/x/image/draw/impl.go new file mode 100644 index 00000000..75498adb --- /dev/null +++ b/vendor/golang.org/x/image/draw/impl.go @@ -0,0 +1,6670 @@ +// generated by "go run gen.go". DO NOT EDIT. + +package draw + +import ( + "image" + "image/color" + "math" + + "golang.org/x/image/math/f64" +) + +func (z nnInterpolator) Scale(dst Image, dr image.Rectangle, src image.Image, sr image.Rectangle, op Op, opts *Options) { + // Try to simplify a Scale to a Copy when DstMask is not specified. + // If DstMask is not nil, Copy will call Scale back with same dr and sr, and cause stack overflow. + if dr.Size() == sr.Size() && (opts == nil || opts.DstMask == nil) { + Copy(dst, dr.Min, src, sr, op, opts) + return + } + + var o Options + if opts != nil { + o = *opts + } + + // adr is the affected destination pixels. + adr := dst.Bounds().Intersect(dr) + adr, o.DstMask = clipAffectedDestRect(adr, o.DstMask, o.DstMaskP) + if adr.Empty() || sr.Empty() { + return + } + // Make adr relative to dr.Min. + adr = adr.Sub(dr.Min) + if op == Over && o.SrcMask == nil && opaque(src) { + op = Src + } + + // sr is the source pixels. If it extends beyond the src bounds, + // we cannot use the type-specific fast paths, as they access + // the Pix fields directly without bounds checking. + // + // Similarly, the fast paths assume that the masks are nil. + if o.DstMask != nil || o.SrcMask != nil || !sr.In(src.Bounds()) { + switch op { + case Over: + z.scale_Image_Image_Over(dst, dr, adr, src, sr, &o) + case Src: + z.scale_Image_Image_Src(dst, dr, adr, src, sr, &o) + } + } else if _, ok := src.(*image.Uniform); ok { + Draw(dst, dr, src, src.Bounds().Min, op) + } else { + switch op { + case Over: + switch dst := dst.(type) { + case *image.RGBA: + switch src := src.(type) { + case *image.NRGBA: + z.scale_RGBA_NRGBA_Over(dst, dr, adr, src, sr, &o) + case *image.RGBA: + z.scale_RGBA_RGBA_Over(dst, dr, adr, src, sr, &o) + default: + z.scale_RGBA_Image_Over(dst, dr, adr, src, sr, &o) + } + default: + switch src := src.(type) { + default: + z.scale_Image_Image_Over(dst, dr, adr, src, sr, &o) + } + } + case Src: + switch dst := dst.(type) { + case *image.RGBA: + switch src := src.(type) { + case *image.Gray: + z.scale_RGBA_Gray_Src(dst, dr, adr, src, sr, &o) + case *image.NRGBA: + z.scale_RGBA_NRGBA_Src(dst, dr, adr, src, sr, &o) + case *image.RGBA: + z.scale_RGBA_RGBA_Src(dst, dr, adr, src, sr, &o) + case *image.YCbCr: + switch src.SubsampleRatio { + default: + z.scale_RGBA_Image_Src(dst, dr, adr, src, sr, &o) + case image.YCbCrSubsampleRatio444: + z.scale_RGBA_YCbCr444_Src(dst, dr, adr, src, sr, &o) + case image.YCbCrSubsampleRatio422: + z.scale_RGBA_YCbCr422_Src(dst, dr, adr, src, sr, &o) + case image.YCbCrSubsampleRatio420: + z.scale_RGBA_YCbCr420_Src(dst, dr, adr, src, sr, &o) + case image.YCbCrSubsampleRatio440: + z.scale_RGBA_YCbCr440_Src(dst, dr, adr, src, sr, &o) + } + default: + z.scale_RGBA_Image_Src(dst, dr, adr, src, sr, &o) + } + default: + switch src := src.(type) { + default: + z.scale_Image_Image_Src(dst, dr, adr, src, sr, &o) + } + } + } + } +} + +func (z nnInterpolator) Transform(dst Image, s2d f64.Aff3, src image.Image, sr image.Rectangle, op Op, opts *Options) { + // Try to simplify a Transform to a Copy. + if s2d[0] == 1 && s2d[1] == 0 && s2d[3] == 0 && s2d[4] == 1 { + dx := int(s2d[2]) + dy := int(s2d[5]) + if float64(dx) == s2d[2] && float64(dy) == s2d[5] { + Copy(dst, image.Point{X: sr.Min.X + dx, Y: sr.Min.X + dy}, src, sr, op, opts) + return + } + } + + var o Options + if opts != nil { + o = *opts + } + + dr := transformRect(&s2d, &sr) + // adr is the affected destination pixels. + adr := dst.Bounds().Intersect(dr) + adr, o.DstMask = clipAffectedDestRect(adr, o.DstMask, o.DstMaskP) + if adr.Empty() || sr.Empty() { + return + } + if op == Over && o.SrcMask == nil && opaque(src) { + op = Src + } + + d2s := invert(&s2d) + // bias is a translation of the mapping from dst coordinates to src + // coordinates such that the latter temporarily have non-negative X + // and Y coordinates. This allows us to write int(f) instead of + // int(math.Floor(f)), since "round to zero" and "round down" are + // equivalent when f >= 0, but the former is much cheaper. The X-- + // and Y-- are because the TransformLeaf methods have a "sx -= 0.5" + // adjustment. + bias := transformRect(&d2s, &adr).Min + bias.X-- + bias.Y-- + d2s[2] -= float64(bias.X) + d2s[5] -= float64(bias.Y) + // Make adr relative to dr.Min. + adr = adr.Sub(dr.Min) + // sr is the source pixels. If it extends beyond the src bounds, + // we cannot use the type-specific fast paths, as they access + // the Pix fields directly without bounds checking. + // + // Similarly, the fast paths assume that the masks are nil. + if o.DstMask != nil || o.SrcMask != nil || !sr.In(src.Bounds()) { + switch op { + case Over: + z.transform_Image_Image_Over(dst, dr, adr, &d2s, src, sr, bias, &o) + case Src: + z.transform_Image_Image_Src(dst, dr, adr, &d2s, src, sr, bias, &o) + } + } else if u, ok := src.(*image.Uniform); ok { + transform_Uniform(dst, dr, adr, &d2s, u, sr, bias, op) + } else { + switch op { + case Over: + switch dst := dst.(type) { + case *image.RGBA: + switch src := src.(type) { + case *image.NRGBA: + z.transform_RGBA_NRGBA_Over(dst, dr, adr, &d2s, src, sr, bias, &o) + case *image.RGBA: + z.transform_RGBA_RGBA_Over(dst, dr, adr, &d2s, src, sr, bias, &o) + default: + z.transform_RGBA_Image_Over(dst, dr, adr, &d2s, src, sr, bias, &o) + } + default: + switch src := src.(type) { + default: + z.transform_Image_Image_Over(dst, dr, adr, &d2s, src, sr, bias, &o) + } + } + case Src: + switch dst := dst.(type) { + case *image.RGBA: + switch src := src.(type) { + case *image.Gray: + z.transform_RGBA_Gray_Src(dst, dr, adr, &d2s, src, sr, bias, &o) + case *image.NRGBA: + z.transform_RGBA_NRGBA_Src(dst, dr, adr, &d2s, src, sr, bias, &o) + case *image.RGBA: + z.transform_RGBA_RGBA_Src(dst, dr, adr, &d2s, src, sr, bias, &o) + case *image.YCbCr: + switch src.SubsampleRatio { + default: + z.transform_RGBA_Image_Src(dst, dr, adr, &d2s, src, sr, bias, &o) + case image.YCbCrSubsampleRatio444: + z.transform_RGBA_YCbCr444_Src(dst, dr, adr, &d2s, src, sr, bias, &o) + case image.YCbCrSubsampleRatio422: + z.transform_RGBA_YCbCr422_Src(dst, dr, adr, &d2s, src, sr, bias, &o) + case image.YCbCrSubsampleRatio420: + z.transform_RGBA_YCbCr420_Src(dst, dr, adr, &d2s, src, sr, bias, &o) + case image.YCbCrSubsampleRatio440: + z.transform_RGBA_YCbCr440_Src(dst, dr, adr, &d2s, src, sr, bias, &o) + } + default: + z.transform_RGBA_Image_Src(dst, dr, adr, &d2s, src, sr, bias, &o) + } + default: + switch src := src.(type) { + default: + z.transform_Image_Image_Src(dst, dr, adr, &d2s, src, sr, bias, &o) + } + } + } + } +} + +func (nnInterpolator) scale_RGBA_Gray_Src(dst *image.RGBA, dr, adr image.Rectangle, src *image.Gray, sr image.Rectangle, opts *Options) { + dw2 := uint64(dr.Dx()) * 2 + dh2 := uint64(dr.Dy()) * 2 + sw := uint64(sr.Dx()) + sh := uint64(sr.Dy()) + for dy := int32(adr.Min.Y); dy < int32(adr.Max.Y); dy++ { + sy := (2*uint64(dy) + 1) * sh / dh2 + d := (dr.Min.Y+int(dy)-dst.Rect.Min.Y)*dst.Stride + (dr.Min.X+adr.Min.X-dst.Rect.Min.X)*4 + for dx := int32(adr.Min.X); dx < int32(adr.Max.X); dx, d = dx+1, d+4 { + sx := (2*uint64(dx) + 1) * sw / dw2 + pi := (sr.Min.Y+int(sy)-src.Rect.Min.Y)*src.Stride + (sr.Min.X + int(sx) - src.Rect.Min.X) + pr := uint32(src.Pix[pi]) * 0x101 + out := uint8(pr >> 8) + dst.Pix[d+0] = out + dst.Pix[d+1] = out + dst.Pix[d+2] = out + dst.Pix[d+3] = 0xff + } + } +} + +func (nnInterpolator) scale_RGBA_NRGBA_Over(dst *image.RGBA, dr, adr image.Rectangle, src *image.NRGBA, sr image.Rectangle, opts *Options) { + dw2 := uint64(dr.Dx()) * 2 + dh2 := uint64(dr.Dy()) * 2 + sw := uint64(sr.Dx()) + sh := uint64(sr.Dy()) + for dy := int32(adr.Min.Y); dy < int32(adr.Max.Y); dy++ { + sy := (2*uint64(dy) + 1) * sh / dh2 + d := (dr.Min.Y+int(dy)-dst.Rect.Min.Y)*dst.Stride + (dr.Min.X+adr.Min.X-dst.Rect.Min.X)*4 + for dx := int32(adr.Min.X); dx < int32(adr.Max.X); dx, d = dx+1, d+4 { + sx := (2*uint64(dx) + 1) * sw / dw2 + pi := (sr.Min.Y+int(sy)-src.Rect.Min.Y)*src.Stride + (sr.Min.X+int(sx)-src.Rect.Min.X)*4 + pa := uint32(src.Pix[pi+3]) * 0x101 + pr := uint32(src.Pix[pi+0]) * pa / 0xff + pg := uint32(src.Pix[pi+1]) * pa / 0xff + pb := uint32(src.Pix[pi+2]) * pa / 0xff + pa1 := (0xffff - pa) * 0x101 + dst.Pix[d+0] = uint8((uint32(dst.Pix[d+0])*pa1/0xffff + pr) >> 8) + dst.Pix[d+1] = uint8((uint32(dst.Pix[d+1])*pa1/0xffff + pg) >> 8) + dst.Pix[d+2] = uint8((uint32(dst.Pix[d+2])*pa1/0xffff + pb) >> 8) + dst.Pix[d+3] = uint8((uint32(dst.Pix[d+3])*pa1/0xffff + pa) >> 8) + } + } +} + +func (nnInterpolator) scale_RGBA_NRGBA_Src(dst *image.RGBA, dr, adr image.Rectangle, src *image.NRGBA, sr image.Rectangle, opts *Options) { + dw2 := uint64(dr.Dx()) * 2 + dh2 := uint64(dr.Dy()) * 2 + sw := uint64(sr.Dx()) + sh := uint64(sr.Dy()) + for dy := int32(adr.Min.Y); dy < int32(adr.Max.Y); dy++ { + sy := (2*uint64(dy) + 1) * sh / dh2 + d := (dr.Min.Y+int(dy)-dst.Rect.Min.Y)*dst.Stride + (dr.Min.X+adr.Min.X-dst.Rect.Min.X)*4 + for dx := int32(adr.Min.X); dx < int32(adr.Max.X); dx, d = dx+1, d+4 { + sx := (2*uint64(dx) + 1) * sw / dw2 + pi := (sr.Min.Y+int(sy)-src.Rect.Min.Y)*src.Stride + (sr.Min.X+int(sx)-src.Rect.Min.X)*4 + pa := uint32(src.Pix[pi+3]) * 0x101 + pr := uint32(src.Pix[pi+0]) * pa / 0xff + pg := uint32(src.Pix[pi+1]) * pa / 0xff + pb := uint32(src.Pix[pi+2]) * pa / 0xff + dst.Pix[d+0] = uint8(pr >> 8) + dst.Pix[d+1] = uint8(pg >> 8) + dst.Pix[d+2] = uint8(pb >> 8) + dst.Pix[d+3] = uint8(pa >> 8) + } + } +} + +func (nnInterpolator) scale_RGBA_RGBA_Over(dst *image.RGBA, dr, adr image.Rectangle, src *image.RGBA, sr image.Rectangle, opts *Options) { + dw2 := uint64(dr.Dx()) * 2 + dh2 := uint64(dr.Dy()) * 2 + sw := uint64(sr.Dx()) + sh := uint64(sr.Dy()) + for dy := int32(adr.Min.Y); dy < int32(adr.Max.Y); dy++ { + sy := (2*uint64(dy) + 1) * sh / dh2 + d := (dr.Min.Y+int(dy)-dst.Rect.Min.Y)*dst.Stride + (dr.Min.X+adr.Min.X-dst.Rect.Min.X)*4 + for dx := int32(adr.Min.X); dx < int32(adr.Max.X); dx, d = dx+1, d+4 { + sx := (2*uint64(dx) + 1) * sw / dw2 + pi := (sr.Min.Y+int(sy)-src.Rect.Min.Y)*src.Stride + (sr.Min.X+int(sx)-src.Rect.Min.X)*4 + pr := uint32(src.Pix[pi+0]) * 0x101 + pg := uint32(src.Pix[pi+1]) * 0x101 + pb := uint32(src.Pix[pi+2]) * 0x101 + pa := uint32(src.Pix[pi+3]) * 0x101 + pa1 := (0xffff - pa) * 0x101 + dst.Pix[d+0] = uint8((uint32(dst.Pix[d+0])*pa1/0xffff + pr) >> 8) + dst.Pix[d+1] = uint8((uint32(dst.Pix[d+1])*pa1/0xffff + pg) >> 8) + dst.Pix[d+2] = uint8((uint32(dst.Pix[d+2])*pa1/0xffff + pb) >> 8) + dst.Pix[d+3] = uint8((uint32(dst.Pix[d+3])*pa1/0xffff + pa) >> 8) + } + } +} + +func (nnInterpolator) scale_RGBA_RGBA_Src(dst *image.RGBA, dr, adr image.Rectangle, src *image.RGBA, sr image.Rectangle, opts *Options) { + dw2 := uint64(dr.Dx()) * 2 + dh2 := uint64(dr.Dy()) * 2 + sw := uint64(sr.Dx()) + sh := uint64(sr.Dy()) + for dy := int32(adr.Min.Y); dy < int32(adr.Max.Y); dy++ { + sy := (2*uint64(dy) + 1) * sh / dh2 + d := (dr.Min.Y+int(dy)-dst.Rect.Min.Y)*dst.Stride + (dr.Min.X+adr.Min.X-dst.Rect.Min.X)*4 + for dx := int32(adr.Min.X); dx < int32(adr.Max.X); dx, d = dx+1, d+4 { + sx := (2*uint64(dx) + 1) * sw / dw2 + pi := (sr.Min.Y+int(sy)-src.Rect.Min.Y)*src.Stride + (sr.Min.X+int(sx)-src.Rect.Min.X)*4 + pr := uint32(src.Pix[pi+0]) * 0x101 + pg := uint32(src.Pix[pi+1]) * 0x101 + pb := uint32(src.Pix[pi+2]) * 0x101 + pa := uint32(src.Pix[pi+3]) * 0x101 + dst.Pix[d+0] = uint8(pr >> 8) + dst.Pix[d+1] = uint8(pg >> 8) + dst.Pix[d+2] = uint8(pb >> 8) + dst.Pix[d+3] = uint8(pa >> 8) + } + } +} + +func (nnInterpolator) scale_RGBA_YCbCr444_Src(dst *image.RGBA, dr, adr image.Rectangle, src *image.YCbCr, sr image.Rectangle, opts *Options) { + dw2 := uint64(dr.Dx()) * 2 + dh2 := uint64(dr.Dy()) * 2 + sw := uint64(sr.Dx()) + sh := uint64(sr.Dy()) + for dy := int32(adr.Min.Y); dy < int32(adr.Max.Y); dy++ { + sy := (2*uint64(dy) + 1) * sh / dh2 + d := (dr.Min.Y+int(dy)-dst.Rect.Min.Y)*dst.Stride + (dr.Min.X+adr.Min.X-dst.Rect.Min.X)*4 + for dx := int32(adr.Min.X); dx < int32(adr.Max.X); dx, d = dx+1, d+4 { + sx := (2*uint64(dx) + 1) * sw / dw2 + pi := (sr.Min.Y+int(sy)-src.Rect.Min.Y)*src.YStride + (sr.Min.X + int(sx) - src.Rect.Min.X) + pj := (sr.Min.Y+int(sy)-src.Rect.Min.Y)*src.CStride + (sr.Min.X + int(sx) - src.Rect.Min.X) + + // This is an inline version of image/color/ycbcr.go's YCbCr.RGBA method. + pyy1 := int(src.Y[pi]) * 0x10101 + pcb1 := int(src.Cb[pj]) - 128 + pcr1 := int(src.Cr[pj]) - 128 + pr := (pyy1 + 91881*pcr1) >> 8 + pg := (pyy1 - 22554*pcb1 - 46802*pcr1) >> 8 + pb := (pyy1 + 116130*pcb1) >> 8 + if pr < 0 { + pr = 0 + } else if pr > 0xffff { + pr = 0xffff + } + if pg < 0 { + pg = 0 + } else if pg > 0xffff { + pg = 0xffff + } + if pb < 0 { + pb = 0 + } else if pb > 0xffff { + pb = 0xffff + } + dst.Pix[d+0] = uint8(pr >> 8) + dst.Pix[d+1] = uint8(pg >> 8) + dst.Pix[d+2] = uint8(pb >> 8) + dst.Pix[d+3] = 0xff + } + } +} + +func (nnInterpolator) scale_RGBA_YCbCr422_Src(dst *image.RGBA, dr, adr image.Rectangle, src *image.YCbCr, sr image.Rectangle, opts *Options) { + dw2 := uint64(dr.Dx()) * 2 + dh2 := uint64(dr.Dy()) * 2 + sw := uint64(sr.Dx()) + sh := uint64(sr.Dy()) + for dy := int32(adr.Min.Y); dy < int32(adr.Max.Y); dy++ { + sy := (2*uint64(dy) + 1) * sh / dh2 + d := (dr.Min.Y+int(dy)-dst.Rect.Min.Y)*dst.Stride + (dr.Min.X+adr.Min.X-dst.Rect.Min.X)*4 + for dx := int32(adr.Min.X); dx < int32(adr.Max.X); dx, d = dx+1, d+4 { + sx := (2*uint64(dx) + 1) * sw / dw2 + pi := (sr.Min.Y+int(sy)-src.Rect.Min.Y)*src.YStride + (sr.Min.X + int(sx) - src.Rect.Min.X) + pj := (sr.Min.Y+int(sy)-src.Rect.Min.Y)*src.CStride + ((sr.Min.X+int(sx))/2 - src.Rect.Min.X/2) + + // This is an inline version of image/color/ycbcr.go's YCbCr.RGBA method. + pyy1 := int(src.Y[pi]) * 0x10101 + pcb1 := int(src.Cb[pj]) - 128 + pcr1 := int(src.Cr[pj]) - 128 + pr := (pyy1 + 91881*pcr1) >> 8 + pg := (pyy1 - 22554*pcb1 - 46802*pcr1) >> 8 + pb := (pyy1 + 116130*pcb1) >> 8 + if pr < 0 { + pr = 0 + } else if pr > 0xffff { + pr = 0xffff + } + if pg < 0 { + pg = 0 + } else if pg > 0xffff { + pg = 0xffff + } + if pb < 0 { + pb = 0 + } else if pb > 0xffff { + pb = 0xffff + } + dst.Pix[d+0] = uint8(pr >> 8) + dst.Pix[d+1] = uint8(pg >> 8) + dst.Pix[d+2] = uint8(pb >> 8) + dst.Pix[d+3] = 0xff + } + } +} + +func (nnInterpolator) scale_RGBA_YCbCr420_Src(dst *image.RGBA, dr, adr image.Rectangle, src *image.YCbCr, sr image.Rectangle, opts *Options) { + dw2 := uint64(dr.Dx()) * 2 + dh2 := uint64(dr.Dy()) * 2 + sw := uint64(sr.Dx()) + sh := uint64(sr.Dy()) + for dy := int32(adr.Min.Y); dy < int32(adr.Max.Y); dy++ { + sy := (2*uint64(dy) + 1) * sh / dh2 + d := (dr.Min.Y+int(dy)-dst.Rect.Min.Y)*dst.Stride + (dr.Min.X+adr.Min.X-dst.Rect.Min.X)*4 + for dx := int32(adr.Min.X); dx < int32(adr.Max.X); dx, d = dx+1, d+4 { + sx := (2*uint64(dx) + 1) * sw / dw2 + pi := (sr.Min.Y+int(sy)-src.Rect.Min.Y)*src.YStride + (sr.Min.X + int(sx) - src.Rect.Min.X) + pj := ((sr.Min.Y+int(sy))/2-src.Rect.Min.Y/2)*src.CStride + ((sr.Min.X+int(sx))/2 - src.Rect.Min.X/2) + + // This is an inline version of image/color/ycbcr.go's YCbCr.RGBA method. + pyy1 := int(src.Y[pi]) * 0x10101 + pcb1 := int(src.Cb[pj]) - 128 + pcr1 := int(src.Cr[pj]) - 128 + pr := (pyy1 + 91881*pcr1) >> 8 + pg := (pyy1 - 22554*pcb1 - 46802*pcr1) >> 8 + pb := (pyy1 + 116130*pcb1) >> 8 + if pr < 0 { + pr = 0 + } else if pr > 0xffff { + pr = 0xffff + } + if pg < 0 { + pg = 0 + } else if pg > 0xffff { + pg = 0xffff + } + if pb < 0 { + pb = 0 + } else if pb > 0xffff { + pb = 0xffff + } + dst.Pix[d+0] = uint8(pr >> 8) + dst.Pix[d+1] = uint8(pg >> 8) + dst.Pix[d+2] = uint8(pb >> 8) + dst.Pix[d+3] = 0xff + } + } +} + +func (nnInterpolator) scale_RGBA_YCbCr440_Src(dst *image.RGBA, dr, adr image.Rectangle, src *image.YCbCr, sr image.Rectangle, opts *Options) { + dw2 := uint64(dr.Dx()) * 2 + dh2 := uint64(dr.Dy()) * 2 + sw := uint64(sr.Dx()) + sh := uint64(sr.Dy()) + for dy := int32(adr.Min.Y); dy < int32(adr.Max.Y); dy++ { + sy := (2*uint64(dy) + 1) * sh / dh2 + d := (dr.Min.Y+int(dy)-dst.Rect.Min.Y)*dst.Stride + (dr.Min.X+adr.Min.X-dst.Rect.Min.X)*4 + for dx := int32(adr.Min.X); dx < int32(adr.Max.X); dx, d = dx+1, d+4 { + sx := (2*uint64(dx) + 1) * sw / dw2 + pi := (sr.Min.Y+int(sy)-src.Rect.Min.Y)*src.YStride + (sr.Min.X + int(sx) - src.Rect.Min.X) + pj := ((sr.Min.Y+int(sy))/2-src.Rect.Min.Y/2)*src.CStride + (sr.Min.X + int(sx) - src.Rect.Min.X) + + // This is an inline version of image/color/ycbcr.go's YCbCr.RGBA method. + pyy1 := int(src.Y[pi]) * 0x10101 + pcb1 := int(src.Cb[pj]) - 128 + pcr1 := int(src.Cr[pj]) - 128 + pr := (pyy1 + 91881*pcr1) >> 8 + pg := (pyy1 - 22554*pcb1 - 46802*pcr1) >> 8 + pb := (pyy1 + 116130*pcb1) >> 8 + if pr < 0 { + pr = 0 + } else if pr > 0xffff { + pr = 0xffff + } + if pg < 0 { + pg = 0 + } else if pg > 0xffff { + pg = 0xffff + } + if pb < 0 { + pb = 0 + } else if pb > 0xffff { + pb = 0xffff + } + dst.Pix[d+0] = uint8(pr >> 8) + dst.Pix[d+1] = uint8(pg >> 8) + dst.Pix[d+2] = uint8(pb >> 8) + dst.Pix[d+3] = 0xff + } + } +} + +func (nnInterpolator) scale_RGBA_Image_Over(dst *image.RGBA, dr, adr image.Rectangle, src image.Image, sr image.Rectangle, opts *Options) { + dw2 := uint64(dr.Dx()) * 2 + dh2 := uint64(dr.Dy()) * 2 + sw := uint64(sr.Dx()) + sh := uint64(sr.Dy()) + for dy := int32(adr.Min.Y); dy < int32(adr.Max.Y); dy++ { + sy := (2*uint64(dy) + 1) * sh / dh2 + d := (dr.Min.Y+int(dy)-dst.Rect.Min.Y)*dst.Stride + (dr.Min.X+adr.Min.X-dst.Rect.Min.X)*4 + for dx := int32(adr.Min.X); dx < int32(adr.Max.X); dx, d = dx+1, d+4 { + sx := (2*uint64(dx) + 1) * sw / dw2 + pr, pg, pb, pa := src.At(sr.Min.X+int(sx), sr.Min.Y+int(sy)).RGBA() + pa1 := (0xffff - pa) * 0x101 + dst.Pix[d+0] = uint8((uint32(dst.Pix[d+0])*pa1/0xffff + pr) >> 8) + dst.Pix[d+1] = uint8((uint32(dst.Pix[d+1])*pa1/0xffff + pg) >> 8) + dst.Pix[d+2] = uint8((uint32(dst.Pix[d+2])*pa1/0xffff + pb) >> 8) + dst.Pix[d+3] = uint8((uint32(dst.Pix[d+3])*pa1/0xffff + pa) >> 8) + } + } +} + +func (nnInterpolator) scale_RGBA_Image_Src(dst *image.RGBA, dr, adr image.Rectangle, src image.Image, sr image.Rectangle, opts *Options) { + dw2 := uint64(dr.Dx()) * 2 + dh2 := uint64(dr.Dy()) * 2 + sw := uint64(sr.Dx()) + sh := uint64(sr.Dy()) + for dy := int32(adr.Min.Y); dy < int32(adr.Max.Y); dy++ { + sy := (2*uint64(dy) + 1) * sh / dh2 + d := (dr.Min.Y+int(dy)-dst.Rect.Min.Y)*dst.Stride + (dr.Min.X+adr.Min.X-dst.Rect.Min.X)*4 + for dx := int32(adr.Min.X); dx < int32(adr.Max.X); dx, d = dx+1, d+4 { + sx := (2*uint64(dx) + 1) * sw / dw2 + pr, pg, pb, pa := src.At(sr.Min.X+int(sx), sr.Min.Y+int(sy)).RGBA() + dst.Pix[d+0] = uint8(pr >> 8) + dst.Pix[d+1] = uint8(pg >> 8) + dst.Pix[d+2] = uint8(pb >> 8) + dst.Pix[d+3] = uint8(pa >> 8) + } + } +} + +func (nnInterpolator) scale_Image_Image_Over(dst Image, dr, adr image.Rectangle, src image.Image, sr image.Rectangle, opts *Options) { + dw2 := uint64(dr.Dx()) * 2 + dh2 := uint64(dr.Dy()) * 2 + sw := uint64(sr.Dx()) + sh := uint64(sr.Dy()) + srcMask, smp := opts.SrcMask, opts.SrcMaskP + dstMask, dmp := opts.DstMask, opts.DstMaskP + dstColorRGBA64 := &color.RGBA64{} + dstColor := color.Color(dstColorRGBA64) + for dy := int32(adr.Min.Y); dy < int32(adr.Max.Y); dy++ { + sy := (2*uint64(dy) + 1) * sh / dh2 + for dx := int32(adr.Min.X); dx < int32(adr.Max.X); dx++ { + sx := (2*uint64(dx) + 1) * sw / dw2 + pr, pg, pb, pa := src.At(sr.Min.X+int(sx), sr.Min.Y+int(sy)).RGBA() + if srcMask != nil { + _, _, _, ma := srcMask.At(smp.X+sr.Min.X+int(sx), smp.Y+sr.Min.Y+int(sy)).RGBA() + pr = pr * ma / 0xffff + pg = pg * ma / 0xffff + pb = pb * ma / 0xffff + pa = pa * ma / 0xffff + } + qr, qg, qb, qa := dst.At(dr.Min.X+int(dx), dr.Min.Y+int(dy)).RGBA() + if dstMask != nil { + _, _, _, ma := dstMask.At(dmp.X+dr.Min.X+int(dx), dmp.Y+dr.Min.Y+int(dy)).RGBA() + pr = pr * ma / 0xffff + pg = pg * ma / 0xffff + pb = pb * ma / 0xffff + pa = pa * ma / 0xffff + } + pa1 := 0xffff - pa + dstColorRGBA64.R = uint16(qr*pa1/0xffff + pr) + dstColorRGBA64.G = uint16(qg*pa1/0xffff + pg) + dstColorRGBA64.B = uint16(qb*pa1/0xffff + pb) + dstColorRGBA64.A = uint16(qa*pa1/0xffff + pa) + dst.Set(dr.Min.X+int(dx), dr.Min.Y+int(dy), dstColor) + } + } +} + +func (nnInterpolator) scale_Image_Image_Src(dst Image, dr, adr image.Rectangle, src image.Image, sr image.Rectangle, opts *Options) { + dw2 := uint64(dr.Dx()) * 2 + dh2 := uint64(dr.Dy()) * 2 + sw := uint64(sr.Dx()) + sh := uint64(sr.Dy()) + srcMask, smp := opts.SrcMask, opts.SrcMaskP + dstMask, dmp := opts.DstMask, opts.DstMaskP + dstColorRGBA64 := &color.RGBA64{} + dstColor := color.Color(dstColorRGBA64) + for dy := int32(adr.Min.Y); dy < int32(adr.Max.Y); dy++ { + sy := (2*uint64(dy) + 1) * sh / dh2 + for dx := int32(adr.Min.X); dx < int32(adr.Max.X); dx++ { + sx := (2*uint64(dx) + 1) * sw / dw2 + pr, pg, pb, pa := src.At(sr.Min.X+int(sx), sr.Min.Y+int(sy)).RGBA() + if srcMask != nil { + _, _, _, ma := srcMask.At(smp.X+sr.Min.X+int(sx), smp.Y+sr.Min.Y+int(sy)).RGBA() + pr = pr * ma / 0xffff + pg = pg * ma / 0xffff + pb = pb * ma / 0xffff + pa = pa * ma / 0xffff + } + if dstMask != nil { + qr, qg, qb, qa := dst.At(dr.Min.X+int(dx), dr.Min.Y+int(dy)).RGBA() + _, _, _, ma := dstMask.At(dmp.X+dr.Min.X+int(dx), dmp.Y+dr.Min.Y+int(dy)).RGBA() + pr = pr * ma / 0xffff + pg = pg * ma / 0xffff + pb = pb * ma / 0xffff + pa = pa * ma / 0xffff + pa1 := 0xffff - ma + dstColorRGBA64.R = uint16(qr*pa1/0xffff + pr) + dstColorRGBA64.G = uint16(qg*pa1/0xffff + pg) + dstColorRGBA64.B = uint16(qb*pa1/0xffff + pb) + dstColorRGBA64.A = uint16(qa*pa1/0xffff + pa) + dst.Set(dr.Min.X+int(dx), dr.Min.Y+int(dy), dstColor) + } else { + dstColorRGBA64.R = uint16(pr) + dstColorRGBA64.G = uint16(pg) + dstColorRGBA64.B = uint16(pb) + dstColorRGBA64.A = uint16(pa) + dst.Set(dr.Min.X+int(dx), dr.Min.Y+int(dy), dstColor) + } + } + } +} + +func (nnInterpolator) transform_RGBA_Gray_Src(dst *image.RGBA, dr, adr image.Rectangle, d2s *f64.Aff3, src *image.Gray, sr image.Rectangle, bias image.Point, opts *Options) { + for dy := int32(adr.Min.Y); dy < int32(adr.Max.Y); dy++ { + dyf := float64(dr.Min.Y+int(dy)) + 0.5 + d := (dr.Min.Y+int(dy)-dst.Rect.Min.Y)*dst.Stride + (dr.Min.X+adr.Min.X-dst.Rect.Min.X)*4 + for dx := int32(adr.Min.X); dx < int32(adr.Max.X); dx, d = dx+1, d+4 { + dxf := float64(dr.Min.X+int(dx)) + 0.5 + sx0 := int(d2s[0]*dxf+d2s[1]*dyf+d2s[2]) + bias.X + sy0 := int(d2s[3]*dxf+d2s[4]*dyf+d2s[5]) + bias.Y + if !(image.Point{sx0, sy0}).In(sr) { + continue + } + pi := (sy0-src.Rect.Min.Y)*src.Stride + (sx0 - src.Rect.Min.X) + pr := uint32(src.Pix[pi]) * 0x101 + out := uint8(pr >> 8) + dst.Pix[d+0] = out + dst.Pix[d+1] = out + dst.Pix[d+2] = out + dst.Pix[d+3] = 0xff + } + } +} + +func (nnInterpolator) transform_RGBA_NRGBA_Over(dst *image.RGBA, dr, adr image.Rectangle, d2s *f64.Aff3, src *image.NRGBA, sr image.Rectangle, bias image.Point, opts *Options) { + for dy := int32(adr.Min.Y); dy < int32(adr.Max.Y); dy++ { + dyf := float64(dr.Min.Y+int(dy)) + 0.5 + d := (dr.Min.Y+int(dy)-dst.Rect.Min.Y)*dst.Stride + (dr.Min.X+adr.Min.X-dst.Rect.Min.X)*4 + for dx := int32(adr.Min.X); dx < int32(adr.Max.X); dx, d = dx+1, d+4 { + dxf := float64(dr.Min.X+int(dx)) + 0.5 + sx0 := int(d2s[0]*dxf+d2s[1]*dyf+d2s[2]) + bias.X + sy0 := int(d2s[3]*dxf+d2s[4]*dyf+d2s[5]) + bias.Y + if !(image.Point{sx0, sy0}).In(sr) { + continue + } + pi := (sy0-src.Rect.Min.Y)*src.Stride + (sx0-src.Rect.Min.X)*4 + pa := uint32(src.Pix[pi+3]) * 0x101 + pr := uint32(src.Pix[pi+0]) * pa / 0xff + pg := uint32(src.Pix[pi+1]) * pa / 0xff + pb := uint32(src.Pix[pi+2]) * pa / 0xff + pa1 := (0xffff - pa) * 0x101 + dst.Pix[d+0] = uint8((uint32(dst.Pix[d+0])*pa1/0xffff + pr) >> 8) + dst.Pix[d+1] = uint8((uint32(dst.Pix[d+1])*pa1/0xffff + pg) >> 8) + dst.Pix[d+2] = uint8((uint32(dst.Pix[d+2])*pa1/0xffff + pb) >> 8) + dst.Pix[d+3] = uint8((uint32(dst.Pix[d+3])*pa1/0xffff + pa) >> 8) + } + } +} + +func (nnInterpolator) transform_RGBA_NRGBA_Src(dst *image.RGBA, dr, adr image.Rectangle, d2s *f64.Aff3, src *image.NRGBA, sr image.Rectangle, bias image.Point, opts *Options) { + for dy := int32(adr.Min.Y); dy < int32(adr.Max.Y); dy++ { + dyf := float64(dr.Min.Y+int(dy)) + 0.5 + d := (dr.Min.Y+int(dy)-dst.Rect.Min.Y)*dst.Stride + (dr.Min.X+adr.Min.X-dst.Rect.Min.X)*4 + for dx := int32(adr.Min.X); dx < int32(adr.Max.X); dx, d = dx+1, d+4 { + dxf := float64(dr.Min.X+int(dx)) + 0.5 + sx0 := int(d2s[0]*dxf+d2s[1]*dyf+d2s[2]) + bias.X + sy0 := int(d2s[3]*dxf+d2s[4]*dyf+d2s[5]) + bias.Y + if !(image.Point{sx0, sy0}).In(sr) { + continue + } + pi := (sy0-src.Rect.Min.Y)*src.Stride + (sx0-src.Rect.Min.X)*4 + pa := uint32(src.Pix[pi+3]) * 0x101 + pr := uint32(src.Pix[pi+0]) * pa / 0xff + pg := uint32(src.Pix[pi+1]) * pa / 0xff + pb := uint32(src.Pix[pi+2]) * pa / 0xff + dst.Pix[d+0] = uint8(pr >> 8) + dst.Pix[d+1] = uint8(pg >> 8) + dst.Pix[d+2] = uint8(pb >> 8) + dst.Pix[d+3] = uint8(pa >> 8) + } + } +} + +func (nnInterpolator) transform_RGBA_RGBA_Over(dst *image.RGBA, dr, adr image.Rectangle, d2s *f64.Aff3, src *image.RGBA, sr image.Rectangle, bias image.Point, opts *Options) { + for dy := int32(adr.Min.Y); dy < int32(adr.Max.Y); dy++ { + dyf := float64(dr.Min.Y+int(dy)) + 0.5 + d := (dr.Min.Y+int(dy)-dst.Rect.Min.Y)*dst.Stride + (dr.Min.X+adr.Min.X-dst.Rect.Min.X)*4 + for dx := int32(adr.Min.X); dx < int32(adr.Max.X); dx, d = dx+1, d+4 { + dxf := float64(dr.Min.X+int(dx)) + 0.5 + sx0 := int(d2s[0]*dxf+d2s[1]*dyf+d2s[2]) + bias.X + sy0 := int(d2s[3]*dxf+d2s[4]*dyf+d2s[5]) + bias.Y + if !(image.Point{sx0, sy0}).In(sr) { + continue + } + pi := (sy0-src.Rect.Min.Y)*src.Stride + (sx0-src.Rect.Min.X)*4 + pr := uint32(src.Pix[pi+0]) * 0x101 + pg := uint32(src.Pix[pi+1]) * 0x101 + pb := uint32(src.Pix[pi+2]) * 0x101 + pa := uint32(src.Pix[pi+3]) * 0x101 + pa1 := (0xffff - pa) * 0x101 + dst.Pix[d+0] = uint8((uint32(dst.Pix[d+0])*pa1/0xffff + pr) >> 8) + dst.Pix[d+1] = uint8((uint32(dst.Pix[d+1])*pa1/0xffff + pg) >> 8) + dst.Pix[d+2] = uint8((uint32(dst.Pix[d+2])*pa1/0xffff + pb) >> 8) + dst.Pix[d+3] = uint8((uint32(dst.Pix[d+3])*pa1/0xffff + pa) >> 8) + } + } +} + +func (nnInterpolator) transform_RGBA_RGBA_Src(dst *image.RGBA, dr, adr image.Rectangle, d2s *f64.Aff3, src *image.RGBA, sr image.Rectangle, bias image.Point, opts *Options) { + for dy := int32(adr.Min.Y); dy < int32(adr.Max.Y); dy++ { + dyf := float64(dr.Min.Y+int(dy)) + 0.5 + d := (dr.Min.Y+int(dy)-dst.Rect.Min.Y)*dst.Stride + (dr.Min.X+adr.Min.X-dst.Rect.Min.X)*4 + for dx := int32(adr.Min.X); dx < int32(adr.Max.X); dx, d = dx+1, d+4 { + dxf := float64(dr.Min.X+int(dx)) + 0.5 + sx0 := int(d2s[0]*dxf+d2s[1]*dyf+d2s[2]) + bias.X + sy0 := int(d2s[3]*dxf+d2s[4]*dyf+d2s[5]) + bias.Y + if !(image.Point{sx0, sy0}).In(sr) { + continue + } + pi := (sy0-src.Rect.Min.Y)*src.Stride + (sx0-src.Rect.Min.X)*4 + pr := uint32(src.Pix[pi+0]) * 0x101 + pg := uint32(src.Pix[pi+1]) * 0x101 + pb := uint32(src.Pix[pi+2]) * 0x101 + pa := uint32(src.Pix[pi+3]) * 0x101 + dst.Pix[d+0] = uint8(pr >> 8) + dst.Pix[d+1] = uint8(pg >> 8) + dst.Pix[d+2] = uint8(pb >> 8) + dst.Pix[d+3] = uint8(pa >> 8) + } + } +} + +func (nnInterpolator) transform_RGBA_YCbCr444_Src(dst *image.RGBA, dr, adr image.Rectangle, d2s *f64.Aff3, src *image.YCbCr, sr image.Rectangle, bias image.Point, opts *Options) { + for dy := int32(adr.Min.Y); dy < int32(adr.Max.Y); dy++ { + dyf := float64(dr.Min.Y+int(dy)) + 0.5 + d := (dr.Min.Y+int(dy)-dst.Rect.Min.Y)*dst.Stride + (dr.Min.X+adr.Min.X-dst.Rect.Min.X)*4 + for dx := int32(adr.Min.X); dx < int32(adr.Max.X); dx, d = dx+1, d+4 { + dxf := float64(dr.Min.X+int(dx)) + 0.5 + sx0 := int(d2s[0]*dxf+d2s[1]*dyf+d2s[2]) + bias.X + sy0 := int(d2s[3]*dxf+d2s[4]*dyf+d2s[5]) + bias.Y + if !(image.Point{sx0, sy0}).In(sr) { + continue + } + pi := (sy0-src.Rect.Min.Y)*src.YStride + (sx0 - src.Rect.Min.X) + pj := (sy0-src.Rect.Min.Y)*src.CStride + (sx0 - src.Rect.Min.X) + + // This is an inline version of image/color/ycbcr.go's YCbCr.RGBA method. + pyy1 := int(src.Y[pi]) * 0x10101 + pcb1 := int(src.Cb[pj]) - 128 + pcr1 := int(src.Cr[pj]) - 128 + pr := (pyy1 + 91881*pcr1) >> 8 + pg := (pyy1 - 22554*pcb1 - 46802*pcr1) >> 8 + pb := (pyy1 + 116130*pcb1) >> 8 + if pr < 0 { + pr = 0 + } else if pr > 0xffff { + pr = 0xffff + } + if pg < 0 { + pg = 0 + } else if pg > 0xffff { + pg = 0xffff + } + if pb < 0 { + pb = 0 + } else if pb > 0xffff { + pb = 0xffff + } + dst.Pix[d+0] = uint8(pr >> 8) + dst.Pix[d+1] = uint8(pg >> 8) + dst.Pix[d+2] = uint8(pb >> 8) + dst.Pix[d+3] = 0xff + } + } +} + +func (nnInterpolator) transform_RGBA_YCbCr422_Src(dst *image.RGBA, dr, adr image.Rectangle, d2s *f64.Aff3, src *image.YCbCr, sr image.Rectangle, bias image.Point, opts *Options) { + for dy := int32(adr.Min.Y); dy < int32(adr.Max.Y); dy++ { + dyf := float64(dr.Min.Y+int(dy)) + 0.5 + d := (dr.Min.Y+int(dy)-dst.Rect.Min.Y)*dst.Stride + (dr.Min.X+adr.Min.X-dst.Rect.Min.X)*4 + for dx := int32(adr.Min.X); dx < int32(adr.Max.X); dx, d = dx+1, d+4 { + dxf := float64(dr.Min.X+int(dx)) + 0.5 + sx0 := int(d2s[0]*dxf+d2s[1]*dyf+d2s[2]) + bias.X + sy0 := int(d2s[3]*dxf+d2s[4]*dyf+d2s[5]) + bias.Y + if !(image.Point{sx0, sy0}).In(sr) { + continue + } + pi := (sy0-src.Rect.Min.Y)*src.YStride + (sx0 - src.Rect.Min.X) + pj := (sy0-src.Rect.Min.Y)*src.CStride + ((sx0)/2 - src.Rect.Min.X/2) + + // This is an inline version of image/color/ycbcr.go's YCbCr.RGBA method. + pyy1 := int(src.Y[pi]) * 0x10101 + pcb1 := int(src.Cb[pj]) - 128 + pcr1 := int(src.Cr[pj]) - 128 + pr := (pyy1 + 91881*pcr1) >> 8 + pg := (pyy1 - 22554*pcb1 - 46802*pcr1) >> 8 + pb := (pyy1 + 116130*pcb1) >> 8 + if pr < 0 { + pr = 0 + } else if pr > 0xffff { + pr = 0xffff + } + if pg < 0 { + pg = 0 + } else if pg > 0xffff { + pg = 0xffff + } + if pb < 0 { + pb = 0 + } else if pb > 0xffff { + pb = 0xffff + } + dst.Pix[d+0] = uint8(pr >> 8) + dst.Pix[d+1] = uint8(pg >> 8) + dst.Pix[d+2] = uint8(pb >> 8) + dst.Pix[d+3] = 0xff + } + } +} + +func (nnInterpolator) transform_RGBA_YCbCr420_Src(dst *image.RGBA, dr, adr image.Rectangle, d2s *f64.Aff3, src *image.YCbCr, sr image.Rectangle, bias image.Point, opts *Options) { + for dy := int32(adr.Min.Y); dy < int32(adr.Max.Y); dy++ { + dyf := float64(dr.Min.Y+int(dy)) + 0.5 + d := (dr.Min.Y+int(dy)-dst.Rect.Min.Y)*dst.Stride + (dr.Min.X+adr.Min.X-dst.Rect.Min.X)*4 + for dx := int32(adr.Min.X); dx < int32(adr.Max.X); dx, d = dx+1, d+4 { + dxf := float64(dr.Min.X+int(dx)) + 0.5 + sx0 := int(d2s[0]*dxf+d2s[1]*dyf+d2s[2]) + bias.X + sy0 := int(d2s[3]*dxf+d2s[4]*dyf+d2s[5]) + bias.Y + if !(image.Point{sx0, sy0}).In(sr) { + continue + } + pi := (sy0-src.Rect.Min.Y)*src.YStride + (sx0 - src.Rect.Min.X) + pj := ((sy0)/2-src.Rect.Min.Y/2)*src.CStride + ((sx0)/2 - src.Rect.Min.X/2) + + // This is an inline version of image/color/ycbcr.go's YCbCr.RGBA method. + pyy1 := int(src.Y[pi]) * 0x10101 + pcb1 := int(src.Cb[pj]) - 128 + pcr1 := int(src.Cr[pj]) - 128 + pr := (pyy1 + 91881*pcr1) >> 8 + pg := (pyy1 - 22554*pcb1 - 46802*pcr1) >> 8 + pb := (pyy1 + 116130*pcb1) >> 8 + if pr < 0 { + pr = 0 + } else if pr > 0xffff { + pr = 0xffff + } + if pg < 0 { + pg = 0 + } else if pg > 0xffff { + pg = 0xffff + } + if pb < 0 { + pb = 0 + } else if pb > 0xffff { + pb = 0xffff + } + dst.Pix[d+0] = uint8(pr >> 8) + dst.Pix[d+1] = uint8(pg >> 8) + dst.Pix[d+2] = uint8(pb >> 8) + dst.Pix[d+3] = 0xff + } + } +} + +func (nnInterpolator) transform_RGBA_YCbCr440_Src(dst *image.RGBA, dr, adr image.Rectangle, d2s *f64.Aff3, src *image.YCbCr, sr image.Rectangle, bias image.Point, opts *Options) { + for dy := int32(adr.Min.Y); dy < int32(adr.Max.Y); dy++ { + dyf := float64(dr.Min.Y+int(dy)) + 0.5 + d := (dr.Min.Y+int(dy)-dst.Rect.Min.Y)*dst.Stride + (dr.Min.X+adr.Min.X-dst.Rect.Min.X)*4 + for dx := int32(adr.Min.X); dx < int32(adr.Max.X); dx, d = dx+1, d+4 { + dxf := float64(dr.Min.X+int(dx)) + 0.5 + sx0 := int(d2s[0]*dxf+d2s[1]*dyf+d2s[2]) + bias.X + sy0 := int(d2s[3]*dxf+d2s[4]*dyf+d2s[5]) + bias.Y + if !(image.Point{sx0, sy0}).In(sr) { + continue + } + pi := (sy0-src.Rect.Min.Y)*src.YStride + (sx0 - src.Rect.Min.X) + pj := ((sy0)/2-src.Rect.Min.Y/2)*src.CStride + (sx0 - src.Rect.Min.X) + + // This is an inline version of image/color/ycbcr.go's YCbCr.RGBA method. + pyy1 := int(src.Y[pi]) * 0x10101 + pcb1 := int(src.Cb[pj]) - 128 + pcr1 := int(src.Cr[pj]) - 128 + pr := (pyy1 + 91881*pcr1) >> 8 + pg := (pyy1 - 22554*pcb1 - 46802*pcr1) >> 8 + pb := (pyy1 + 116130*pcb1) >> 8 + if pr < 0 { + pr = 0 + } else if pr > 0xffff { + pr = 0xffff + } + if pg < 0 { + pg = 0 + } else if pg > 0xffff { + pg = 0xffff + } + if pb < 0 { + pb = 0 + } else if pb > 0xffff { + pb = 0xffff + } + dst.Pix[d+0] = uint8(pr >> 8) + dst.Pix[d+1] = uint8(pg >> 8) + dst.Pix[d+2] = uint8(pb >> 8) + dst.Pix[d+3] = 0xff + } + } +} + +func (nnInterpolator) transform_RGBA_Image_Over(dst *image.RGBA, dr, adr image.Rectangle, d2s *f64.Aff3, src image.Image, sr image.Rectangle, bias image.Point, opts *Options) { + for dy := int32(adr.Min.Y); dy < int32(adr.Max.Y); dy++ { + dyf := float64(dr.Min.Y+int(dy)) + 0.5 + d := (dr.Min.Y+int(dy)-dst.Rect.Min.Y)*dst.Stride + (dr.Min.X+adr.Min.X-dst.Rect.Min.X)*4 + for dx := int32(adr.Min.X); dx < int32(adr.Max.X); dx, d = dx+1, d+4 { + dxf := float64(dr.Min.X+int(dx)) + 0.5 + sx0 := int(d2s[0]*dxf+d2s[1]*dyf+d2s[2]) + bias.X + sy0 := int(d2s[3]*dxf+d2s[4]*dyf+d2s[5]) + bias.Y + if !(image.Point{sx0, sy0}).In(sr) { + continue + } + pr, pg, pb, pa := src.At(sx0, sy0).RGBA() + pa1 := (0xffff - pa) * 0x101 + dst.Pix[d+0] = uint8((uint32(dst.Pix[d+0])*pa1/0xffff + pr) >> 8) + dst.Pix[d+1] = uint8((uint32(dst.Pix[d+1])*pa1/0xffff + pg) >> 8) + dst.Pix[d+2] = uint8((uint32(dst.Pix[d+2])*pa1/0xffff + pb) >> 8) + dst.Pix[d+3] = uint8((uint32(dst.Pix[d+3])*pa1/0xffff + pa) >> 8) + } + } +} + +func (nnInterpolator) transform_RGBA_Image_Src(dst *image.RGBA, dr, adr image.Rectangle, d2s *f64.Aff3, src image.Image, sr image.Rectangle, bias image.Point, opts *Options) { + for dy := int32(adr.Min.Y); dy < int32(adr.Max.Y); dy++ { + dyf := float64(dr.Min.Y+int(dy)) + 0.5 + d := (dr.Min.Y+int(dy)-dst.Rect.Min.Y)*dst.Stride + (dr.Min.X+adr.Min.X-dst.Rect.Min.X)*4 + for dx := int32(adr.Min.X); dx < int32(adr.Max.X); dx, d = dx+1, d+4 { + dxf := float64(dr.Min.X+int(dx)) + 0.5 + sx0 := int(d2s[0]*dxf+d2s[1]*dyf+d2s[2]) + bias.X + sy0 := int(d2s[3]*dxf+d2s[4]*dyf+d2s[5]) + bias.Y + if !(image.Point{sx0, sy0}).In(sr) { + continue + } + pr, pg, pb, pa := src.At(sx0, sy0).RGBA() + dst.Pix[d+0] = uint8(pr >> 8) + dst.Pix[d+1] = uint8(pg >> 8) + dst.Pix[d+2] = uint8(pb >> 8) + dst.Pix[d+3] = uint8(pa >> 8) + } + } +} + +func (nnInterpolator) transform_Image_Image_Over(dst Image, dr, adr image.Rectangle, d2s *f64.Aff3, src image.Image, sr image.Rectangle, bias image.Point, opts *Options) { + srcMask, smp := opts.SrcMask, opts.SrcMaskP + dstMask, dmp := opts.DstMask, opts.DstMaskP + dstColorRGBA64 := &color.RGBA64{} + dstColor := color.Color(dstColorRGBA64) + for dy := int32(adr.Min.Y); dy < int32(adr.Max.Y); dy++ { + dyf := float64(dr.Min.Y+int(dy)) + 0.5 + for dx := int32(adr.Min.X); dx < int32(adr.Max.X); dx++ { + dxf := float64(dr.Min.X+int(dx)) + 0.5 + sx0 := int(d2s[0]*dxf+d2s[1]*dyf+d2s[2]) + bias.X + sy0 := int(d2s[3]*dxf+d2s[4]*dyf+d2s[5]) + bias.Y + if !(image.Point{sx0, sy0}).In(sr) { + continue + } + pr, pg, pb, pa := src.At(sx0, sy0).RGBA() + if srcMask != nil { + _, _, _, ma := srcMask.At(smp.X+sx0, smp.Y+sy0).RGBA() + pr = pr * ma / 0xffff + pg = pg * ma / 0xffff + pb = pb * ma / 0xffff + pa = pa * ma / 0xffff + } + qr, qg, qb, qa := dst.At(dr.Min.X+int(dx), dr.Min.Y+int(dy)).RGBA() + if dstMask != nil { + _, _, _, ma := dstMask.At(dmp.X+dr.Min.X+int(dx), dmp.Y+dr.Min.Y+int(dy)).RGBA() + pr = pr * ma / 0xffff + pg = pg * ma / 0xffff + pb = pb * ma / 0xffff + pa = pa * ma / 0xffff + } + pa1 := 0xffff - pa + dstColorRGBA64.R = uint16(qr*pa1/0xffff + pr) + dstColorRGBA64.G = uint16(qg*pa1/0xffff + pg) + dstColorRGBA64.B = uint16(qb*pa1/0xffff + pb) + dstColorRGBA64.A = uint16(qa*pa1/0xffff + pa) + dst.Set(dr.Min.X+int(dx), dr.Min.Y+int(dy), dstColor) + } + } +} + +func (nnInterpolator) transform_Image_Image_Src(dst Image, dr, adr image.Rectangle, d2s *f64.Aff3, src image.Image, sr image.Rectangle, bias image.Point, opts *Options) { + srcMask, smp := opts.SrcMask, opts.SrcMaskP + dstMask, dmp := opts.DstMask, opts.DstMaskP + dstColorRGBA64 := &color.RGBA64{} + dstColor := color.Color(dstColorRGBA64) + for dy := int32(adr.Min.Y); dy < int32(adr.Max.Y); dy++ { + dyf := float64(dr.Min.Y+int(dy)) + 0.5 + for dx := int32(adr.Min.X); dx < int32(adr.Max.X); dx++ { + dxf := float64(dr.Min.X+int(dx)) + 0.5 + sx0 := int(d2s[0]*dxf+d2s[1]*dyf+d2s[2]) + bias.X + sy0 := int(d2s[3]*dxf+d2s[4]*dyf+d2s[5]) + bias.Y + if !(image.Point{sx0, sy0}).In(sr) { + continue + } + pr, pg, pb, pa := src.At(sx0, sy0).RGBA() + if srcMask != nil { + _, _, _, ma := srcMask.At(smp.X+sx0, smp.Y+sy0).RGBA() + pr = pr * ma / 0xffff + pg = pg * ma / 0xffff + pb = pb * ma / 0xffff + pa = pa * ma / 0xffff + } + if dstMask != nil { + qr, qg, qb, qa := dst.At(dr.Min.X+int(dx), dr.Min.Y+int(dy)).RGBA() + _, _, _, ma := dstMask.At(dmp.X+dr.Min.X+int(dx), dmp.Y+dr.Min.Y+int(dy)).RGBA() + pr = pr * ma / 0xffff + pg = pg * ma / 0xffff + pb = pb * ma / 0xffff + pa = pa * ma / 0xffff + pa1 := 0xffff - ma + dstColorRGBA64.R = uint16(qr*pa1/0xffff + pr) + dstColorRGBA64.G = uint16(qg*pa1/0xffff + pg) + dstColorRGBA64.B = uint16(qb*pa1/0xffff + pb) + dstColorRGBA64.A = uint16(qa*pa1/0xffff + pa) + dst.Set(dr.Min.X+int(dx), dr.Min.Y+int(dy), dstColor) + } else { + dstColorRGBA64.R = uint16(pr) + dstColorRGBA64.G = uint16(pg) + dstColorRGBA64.B = uint16(pb) + dstColorRGBA64.A = uint16(pa) + dst.Set(dr.Min.X+int(dx), dr.Min.Y+int(dy), dstColor) + } + } + } +} + +func (z ablInterpolator) Scale(dst Image, dr image.Rectangle, src image.Image, sr image.Rectangle, op Op, opts *Options) { + // Try to simplify a Scale to a Copy when DstMask is not specified. + // If DstMask is not nil, Copy will call Scale back with same dr and sr, and cause stack overflow. + if dr.Size() == sr.Size() && (opts == nil || opts.DstMask == nil) { + Copy(dst, dr.Min, src, sr, op, opts) + return + } + + var o Options + if opts != nil { + o = *opts + } + + // adr is the affected destination pixels. + adr := dst.Bounds().Intersect(dr) + adr, o.DstMask = clipAffectedDestRect(adr, o.DstMask, o.DstMaskP) + if adr.Empty() || sr.Empty() { + return + } + // Make adr relative to dr.Min. + adr = adr.Sub(dr.Min) + if op == Over && o.SrcMask == nil && opaque(src) { + op = Src + } + + // sr is the source pixels. If it extends beyond the src bounds, + // we cannot use the type-specific fast paths, as they access + // the Pix fields directly without bounds checking. + // + // Similarly, the fast paths assume that the masks are nil. + if o.DstMask != nil || o.SrcMask != nil || !sr.In(src.Bounds()) { + switch op { + case Over: + z.scale_Image_Image_Over(dst, dr, adr, src, sr, &o) + case Src: + z.scale_Image_Image_Src(dst, dr, adr, src, sr, &o) + } + } else if _, ok := src.(*image.Uniform); ok { + Draw(dst, dr, src, src.Bounds().Min, op) + } else { + switch op { + case Over: + switch dst := dst.(type) { + case *image.RGBA: + switch src := src.(type) { + case *image.NRGBA: + z.scale_RGBA_NRGBA_Over(dst, dr, adr, src, sr, &o) + case *image.RGBA: + z.scale_RGBA_RGBA_Over(dst, dr, adr, src, sr, &o) + default: + z.scale_RGBA_Image_Over(dst, dr, adr, src, sr, &o) + } + default: + switch src := src.(type) { + default: + z.scale_Image_Image_Over(dst, dr, adr, src, sr, &o) + } + } + case Src: + switch dst := dst.(type) { + case *image.RGBA: + switch src := src.(type) { + case *image.Gray: + z.scale_RGBA_Gray_Src(dst, dr, adr, src, sr, &o) + case *image.NRGBA: + z.scale_RGBA_NRGBA_Src(dst, dr, adr, src, sr, &o) + case *image.RGBA: + z.scale_RGBA_RGBA_Src(dst, dr, adr, src, sr, &o) + case *image.YCbCr: + switch src.SubsampleRatio { + default: + z.scale_RGBA_Image_Src(dst, dr, adr, src, sr, &o) + case image.YCbCrSubsampleRatio444: + z.scale_RGBA_YCbCr444_Src(dst, dr, adr, src, sr, &o) + case image.YCbCrSubsampleRatio422: + z.scale_RGBA_YCbCr422_Src(dst, dr, adr, src, sr, &o) + case image.YCbCrSubsampleRatio420: + z.scale_RGBA_YCbCr420_Src(dst, dr, adr, src, sr, &o) + case image.YCbCrSubsampleRatio440: + z.scale_RGBA_YCbCr440_Src(dst, dr, adr, src, sr, &o) + } + default: + z.scale_RGBA_Image_Src(dst, dr, adr, src, sr, &o) + } + default: + switch src := src.(type) { + default: + z.scale_Image_Image_Src(dst, dr, adr, src, sr, &o) + } + } + } + } +} + +func (z ablInterpolator) Transform(dst Image, s2d f64.Aff3, src image.Image, sr image.Rectangle, op Op, opts *Options) { + // Try to simplify a Transform to a Copy. + if s2d[0] == 1 && s2d[1] == 0 && s2d[3] == 0 && s2d[4] == 1 { + dx := int(s2d[2]) + dy := int(s2d[5]) + if float64(dx) == s2d[2] && float64(dy) == s2d[5] { + Copy(dst, image.Point{X: sr.Min.X + dx, Y: sr.Min.X + dy}, src, sr, op, opts) + return + } + } + + var o Options + if opts != nil { + o = *opts + } + + dr := transformRect(&s2d, &sr) + // adr is the affected destination pixels. + adr := dst.Bounds().Intersect(dr) + adr, o.DstMask = clipAffectedDestRect(adr, o.DstMask, o.DstMaskP) + if adr.Empty() || sr.Empty() { + return + } + if op == Over && o.SrcMask == nil && opaque(src) { + op = Src + } + + d2s := invert(&s2d) + // bias is a translation of the mapping from dst coordinates to src + // coordinates such that the latter temporarily have non-negative X + // and Y coordinates. This allows us to write int(f) instead of + // int(math.Floor(f)), since "round to zero" and "round down" are + // equivalent when f >= 0, but the former is much cheaper. The X-- + // and Y-- are because the TransformLeaf methods have a "sx -= 0.5" + // adjustment. + bias := transformRect(&d2s, &adr).Min + bias.X-- + bias.Y-- + d2s[2] -= float64(bias.X) + d2s[5] -= float64(bias.Y) + // Make adr relative to dr.Min. + adr = adr.Sub(dr.Min) + // sr is the source pixels. If it extends beyond the src bounds, + // we cannot use the type-specific fast paths, as they access + // the Pix fields directly without bounds checking. + // + // Similarly, the fast paths assume that the masks are nil. + if o.DstMask != nil || o.SrcMask != nil || !sr.In(src.Bounds()) { + switch op { + case Over: + z.transform_Image_Image_Over(dst, dr, adr, &d2s, src, sr, bias, &o) + case Src: + z.transform_Image_Image_Src(dst, dr, adr, &d2s, src, sr, bias, &o) + } + } else if u, ok := src.(*image.Uniform); ok { + transform_Uniform(dst, dr, adr, &d2s, u, sr, bias, op) + } else { + switch op { + case Over: + switch dst := dst.(type) { + case *image.RGBA: + switch src := src.(type) { + case *image.NRGBA: + z.transform_RGBA_NRGBA_Over(dst, dr, adr, &d2s, src, sr, bias, &o) + case *image.RGBA: + z.transform_RGBA_RGBA_Over(dst, dr, adr, &d2s, src, sr, bias, &o) + default: + z.transform_RGBA_Image_Over(dst, dr, adr, &d2s, src, sr, bias, &o) + } + default: + switch src := src.(type) { + default: + z.transform_Image_Image_Over(dst, dr, adr, &d2s, src, sr, bias, &o) + } + } + case Src: + switch dst := dst.(type) { + case *image.RGBA: + switch src := src.(type) { + case *image.Gray: + z.transform_RGBA_Gray_Src(dst, dr, adr, &d2s, src, sr, bias, &o) + case *image.NRGBA: + z.transform_RGBA_NRGBA_Src(dst, dr, adr, &d2s, src, sr, bias, &o) + case *image.RGBA: + z.transform_RGBA_RGBA_Src(dst, dr, adr, &d2s, src, sr, bias, &o) + case *image.YCbCr: + switch src.SubsampleRatio { + default: + z.transform_RGBA_Image_Src(dst, dr, adr, &d2s, src, sr, bias, &o) + case image.YCbCrSubsampleRatio444: + z.transform_RGBA_YCbCr444_Src(dst, dr, adr, &d2s, src, sr, bias, &o) + case image.YCbCrSubsampleRatio422: + z.transform_RGBA_YCbCr422_Src(dst, dr, adr, &d2s, src, sr, bias, &o) + case image.YCbCrSubsampleRatio420: + z.transform_RGBA_YCbCr420_Src(dst, dr, adr, &d2s, src, sr, bias, &o) + case image.YCbCrSubsampleRatio440: + z.transform_RGBA_YCbCr440_Src(dst, dr, adr, &d2s, src, sr, bias, &o) + } + default: + z.transform_RGBA_Image_Src(dst, dr, adr, &d2s, src, sr, bias, &o) + } + default: + switch src := src.(type) { + default: + z.transform_Image_Image_Src(dst, dr, adr, &d2s, src, sr, bias, &o) + } + } + } + } +} + +func (ablInterpolator) scale_RGBA_Gray_Src(dst *image.RGBA, dr, adr image.Rectangle, src *image.Gray, sr image.Rectangle, opts *Options) { + sw := int32(sr.Dx()) + sh := int32(sr.Dy()) + yscale := float64(sh) / float64(dr.Dy()) + xscale := float64(sw) / float64(dr.Dx()) + swMinus1, shMinus1 := sw-1, sh-1 + + for dy := int32(adr.Min.Y); dy < int32(adr.Max.Y); dy++ { + sy := (float64(dy)+0.5)*yscale - 0.5 + // If sy < 0, we will clamp sy0 to 0 anyway, so it doesn't matter if + // we say int32(sy) instead of int32(math.Floor(sy)). Similarly for + // sx, below. + sy0 := int32(sy) + yFrac0 := sy - float64(sy0) + yFrac1 := 1 - yFrac0 + sy1 := sy0 + 1 + if sy < 0 { + sy0, sy1 = 0, 0 + yFrac0, yFrac1 = 0, 1 + } else if sy1 > shMinus1 { + sy0, sy1 = shMinus1, shMinus1 + yFrac0, yFrac1 = 1, 0 + } + d := (dr.Min.Y+int(dy)-dst.Rect.Min.Y)*dst.Stride + (dr.Min.X+adr.Min.X-dst.Rect.Min.X)*4 + + for dx := int32(adr.Min.X); dx < int32(adr.Max.X); dx, d = dx+1, d+4 { + sx := (float64(dx)+0.5)*xscale - 0.5 + sx0 := int32(sx) + xFrac0 := sx - float64(sx0) + xFrac1 := 1 - xFrac0 + sx1 := sx0 + 1 + if sx < 0 { + sx0, sx1 = 0, 0 + xFrac0, xFrac1 = 0, 1 + } else if sx1 > swMinus1 { + sx0, sx1 = swMinus1, swMinus1 + xFrac0, xFrac1 = 1, 0 + } + + s00i := (sr.Min.Y+int(sy0)-src.Rect.Min.Y)*src.Stride + (sr.Min.X + int(sx0) - src.Rect.Min.X) + s00ru := uint32(src.Pix[s00i]) * 0x101 + s00r := float64(s00ru) + s10i := (sr.Min.Y+int(sy0)-src.Rect.Min.Y)*src.Stride + (sr.Min.X + int(sx1) - src.Rect.Min.X) + s10ru := uint32(src.Pix[s10i]) * 0x101 + s10r := float64(s10ru) + s10r = xFrac1*s00r + xFrac0*s10r + s01i := (sr.Min.Y+int(sy1)-src.Rect.Min.Y)*src.Stride + (sr.Min.X + int(sx0) - src.Rect.Min.X) + s01ru := uint32(src.Pix[s01i]) * 0x101 + s01r := float64(s01ru) + s11i := (sr.Min.Y+int(sy1)-src.Rect.Min.Y)*src.Stride + (sr.Min.X + int(sx1) - src.Rect.Min.X) + s11ru := uint32(src.Pix[s11i]) * 0x101 + s11r := float64(s11ru) + s11r = xFrac1*s01r + xFrac0*s11r + s11r = yFrac1*s10r + yFrac0*s11r + pr := uint32(s11r) + out := uint8(pr >> 8) + dst.Pix[d+0] = out + dst.Pix[d+1] = out + dst.Pix[d+2] = out + dst.Pix[d+3] = 0xff + } + } +} + +func (ablInterpolator) scale_RGBA_NRGBA_Over(dst *image.RGBA, dr, adr image.Rectangle, src *image.NRGBA, sr image.Rectangle, opts *Options) { + sw := int32(sr.Dx()) + sh := int32(sr.Dy()) + yscale := float64(sh) / float64(dr.Dy()) + xscale := float64(sw) / float64(dr.Dx()) + swMinus1, shMinus1 := sw-1, sh-1 + + for dy := int32(adr.Min.Y); dy < int32(adr.Max.Y); dy++ { + sy := (float64(dy)+0.5)*yscale - 0.5 + // If sy < 0, we will clamp sy0 to 0 anyway, so it doesn't matter if + // we say int32(sy) instead of int32(math.Floor(sy)). Similarly for + // sx, below. + sy0 := int32(sy) + yFrac0 := sy - float64(sy0) + yFrac1 := 1 - yFrac0 + sy1 := sy0 + 1 + if sy < 0 { + sy0, sy1 = 0, 0 + yFrac0, yFrac1 = 0, 1 + } else if sy1 > shMinus1 { + sy0, sy1 = shMinus1, shMinus1 + yFrac0, yFrac1 = 1, 0 + } + d := (dr.Min.Y+int(dy)-dst.Rect.Min.Y)*dst.Stride + (dr.Min.X+adr.Min.X-dst.Rect.Min.X)*4 + + for dx := int32(adr.Min.X); dx < int32(adr.Max.X); dx, d = dx+1, d+4 { + sx := (float64(dx)+0.5)*xscale - 0.5 + sx0 := int32(sx) + xFrac0 := sx - float64(sx0) + xFrac1 := 1 - xFrac0 + sx1 := sx0 + 1 + if sx < 0 { + sx0, sx1 = 0, 0 + xFrac0, xFrac1 = 0, 1 + } else if sx1 > swMinus1 { + sx0, sx1 = swMinus1, swMinus1 + xFrac0, xFrac1 = 1, 0 + } + + s00i := (sr.Min.Y+int(sy0)-src.Rect.Min.Y)*src.Stride + (sr.Min.X+int(sx0)-src.Rect.Min.X)*4 + s00au := uint32(src.Pix[s00i+3]) * 0x101 + s00ru := uint32(src.Pix[s00i+0]) * s00au / 0xff + s00gu := uint32(src.Pix[s00i+1]) * s00au / 0xff + s00bu := uint32(src.Pix[s00i+2]) * s00au / 0xff + s00r := float64(s00ru) + s00g := float64(s00gu) + s00b := float64(s00bu) + s00a := float64(s00au) + s10i := (sr.Min.Y+int(sy0)-src.Rect.Min.Y)*src.Stride + (sr.Min.X+int(sx1)-src.Rect.Min.X)*4 + s10au := uint32(src.Pix[s10i+3]) * 0x101 + s10ru := uint32(src.Pix[s10i+0]) * s10au / 0xff + s10gu := uint32(src.Pix[s10i+1]) * s10au / 0xff + s10bu := uint32(src.Pix[s10i+2]) * s10au / 0xff + s10r := float64(s10ru) + s10g := float64(s10gu) + s10b := float64(s10bu) + s10a := float64(s10au) + s10r = xFrac1*s00r + xFrac0*s10r + s10g = xFrac1*s00g + xFrac0*s10g + s10b = xFrac1*s00b + xFrac0*s10b + s10a = xFrac1*s00a + xFrac0*s10a + s01i := (sr.Min.Y+int(sy1)-src.Rect.Min.Y)*src.Stride + (sr.Min.X+int(sx0)-src.Rect.Min.X)*4 + s01au := uint32(src.Pix[s01i+3]) * 0x101 + s01ru := uint32(src.Pix[s01i+0]) * s01au / 0xff + s01gu := uint32(src.Pix[s01i+1]) * s01au / 0xff + s01bu := uint32(src.Pix[s01i+2]) * s01au / 0xff + s01r := float64(s01ru) + s01g := float64(s01gu) + s01b := float64(s01bu) + s01a := float64(s01au) + s11i := (sr.Min.Y+int(sy1)-src.Rect.Min.Y)*src.Stride + (sr.Min.X+int(sx1)-src.Rect.Min.X)*4 + s11au := uint32(src.Pix[s11i+3]) * 0x101 + s11ru := uint32(src.Pix[s11i+0]) * s11au / 0xff + s11gu := uint32(src.Pix[s11i+1]) * s11au / 0xff + s11bu := uint32(src.Pix[s11i+2]) * s11au / 0xff + s11r := float64(s11ru) + s11g := float64(s11gu) + s11b := float64(s11bu) + s11a := float64(s11au) + s11r = xFrac1*s01r + xFrac0*s11r + s11g = xFrac1*s01g + xFrac0*s11g + s11b = xFrac1*s01b + xFrac0*s11b + s11a = xFrac1*s01a + xFrac0*s11a + s11r = yFrac1*s10r + yFrac0*s11r + s11g = yFrac1*s10g + yFrac0*s11g + s11b = yFrac1*s10b + yFrac0*s11b + s11a = yFrac1*s10a + yFrac0*s11a + pr := uint32(s11r) + pg := uint32(s11g) + pb := uint32(s11b) + pa := uint32(s11a) + pa1 := (0xffff - pa) * 0x101 + dst.Pix[d+0] = uint8((uint32(dst.Pix[d+0])*pa1/0xffff + pr) >> 8) + dst.Pix[d+1] = uint8((uint32(dst.Pix[d+1])*pa1/0xffff + pg) >> 8) + dst.Pix[d+2] = uint8((uint32(dst.Pix[d+2])*pa1/0xffff + pb) >> 8) + dst.Pix[d+3] = uint8((uint32(dst.Pix[d+3])*pa1/0xffff + pa) >> 8) + } + } +} + +func (ablInterpolator) scale_RGBA_NRGBA_Src(dst *image.RGBA, dr, adr image.Rectangle, src *image.NRGBA, sr image.Rectangle, opts *Options) { + sw := int32(sr.Dx()) + sh := int32(sr.Dy()) + yscale := float64(sh) / float64(dr.Dy()) + xscale := float64(sw) / float64(dr.Dx()) + swMinus1, shMinus1 := sw-1, sh-1 + + for dy := int32(adr.Min.Y); dy < int32(adr.Max.Y); dy++ { + sy := (float64(dy)+0.5)*yscale - 0.5 + // If sy < 0, we will clamp sy0 to 0 anyway, so it doesn't matter if + // we say int32(sy) instead of int32(math.Floor(sy)). Similarly for + // sx, below. + sy0 := int32(sy) + yFrac0 := sy - float64(sy0) + yFrac1 := 1 - yFrac0 + sy1 := sy0 + 1 + if sy < 0 { + sy0, sy1 = 0, 0 + yFrac0, yFrac1 = 0, 1 + } else if sy1 > shMinus1 { + sy0, sy1 = shMinus1, shMinus1 + yFrac0, yFrac1 = 1, 0 + } + d := (dr.Min.Y+int(dy)-dst.Rect.Min.Y)*dst.Stride + (dr.Min.X+adr.Min.X-dst.Rect.Min.X)*4 + + for dx := int32(adr.Min.X); dx < int32(adr.Max.X); dx, d = dx+1, d+4 { + sx := (float64(dx)+0.5)*xscale - 0.5 + sx0 := int32(sx) + xFrac0 := sx - float64(sx0) + xFrac1 := 1 - xFrac0 + sx1 := sx0 + 1 + if sx < 0 { + sx0, sx1 = 0, 0 + xFrac0, xFrac1 = 0, 1 + } else if sx1 > swMinus1 { + sx0, sx1 = swMinus1, swMinus1 + xFrac0, xFrac1 = 1, 0 + } + + s00i := (sr.Min.Y+int(sy0)-src.Rect.Min.Y)*src.Stride + (sr.Min.X+int(sx0)-src.Rect.Min.X)*4 + s00au := uint32(src.Pix[s00i+3]) * 0x101 + s00ru := uint32(src.Pix[s00i+0]) * s00au / 0xff + s00gu := uint32(src.Pix[s00i+1]) * s00au / 0xff + s00bu := uint32(src.Pix[s00i+2]) * s00au / 0xff + s00r := float64(s00ru) + s00g := float64(s00gu) + s00b := float64(s00bu) + s00a := float64(s00au) + s10i := (sr.Min.Y+int(sy0)-src.Rect.Min.Y)*src.Stride + (sr.Min.X+int(sx1)-src.Rect.Min.X)*4 + s10au := uint32(src.Pix[s10i+3]) * 0x101 + s10ru := uint32(src.Pix[s10i+0]) * s10au / 0xff + s10gu := uint32(src.Pix[s10i+1]) * s10au / 0xff + s10bu := uint32(src.Pix[s10i+2]) * s10au / 0xff + s10r := float64(s10ru) + s10g := float64(s10gu) + s10b := float64(s10bu) + s10a := float64(s10au) + s10r = xFrac1*s00r + xFrac0*s10r + s10g = xFrac1*s00g + xFrac0*s10g + s10b = xFrac1*s00b + xFrac0*s10b + s10a = xFrac1*s00a + xFrac0*s10a + s01i := (sr.Min.Y+int(sy1)-src.Rect.Min.Y)*src.Stride + (sr.Min.X+int(sx0)-src.Rect.Min.X)*4 + s01au := uint32(src.Pix[s01i+3]) * 0x101 + s01ru := uint32(src.Pix[s01i+0]) * s01au / 0xff + s01gu := uint32(src.Pix[s01i+1]) * s01au / 0xff + s01bu := uint32(src.Pix[s01i+2]) * s01au / 0xff + s01r := float64(s01ru) + s01g := float64(s01gu) + s01b := float64(s01bu) + s01a := float64(s01au) + s11i := (sr.Min.Y+int(sy1)-src.Rect.Min.Y)*src.Stride + (sr.Min.X+int(sx1)-src.Rect.Min.X)*4 + s11au := uint32(src.Pix[s11i+3]) * 0x101 + s11ru := uint32(src.Pix[s11i+0]) * s11au / 0xff + s11gu := uint32(src.Pix[s11i+1]) * s11au / 0xff + s11bu := uint32(src.Pix[s11i+2]) * s11au / 0xff + s11r := float64(s11ru) + s11g := float64(s11gu) + s11b := float64(s11bu) + s11a := float64(s11au) + s11r = xFrac1*s01r + xFrac0*s11r + s11g = xFrac1*s01g + xFrac0*s11g + s11b = xFrac1*s01b + xFrac0*s11b + s11a = xFrac1*s01a + xFrac0*s11a + s11r = yFrac1*s10r + yFrac0*s11r + s11g = yFrac1*s10g + yFrac0*s11g + s11b = yFrac1*s10b + yFrac0*s11b + s11a = yFrac1*s10a + yFrac0*s11a + pr := uint32(s11r) + pg := uint32(s11g) + pb := uint32(s11b) + pa := uint32(s11a) + dst.Pix[d+0] = uint8(pr >> 8) + dst.Pix[d+1] = uint8(pg >> 8) + dst.Pix[d+2] = uint8(pb >> 8) + dst.Pix[d+3] = uint8(pa >> 8) + } + } +} + +func (ablInterpolator) scale_RGBA_RGBA_Over(dst *image.RGBA, dr, adr image.Rectangle, src *image.RGBA, sr image.Rectangle, opts *Options) { + sw := int32(sr.Dx()) + sh := int32(sr.Dy()) + yscale := float64(sh) / float64(dr.Dy()) + xscale := float64(sw) / float64(dr.Dx()) + swMinus1, shMinus1 := sw-1, sh-1 + + for dy := int32(adr.Min.Y); dy < int32(adr.Max.Y); dy++ { + sy := (float64(dy)+0.5)*yscale - 0.5 + // If sy < 0, we will clamp sy0 to 0 anyway, so it doesn't matter if + // we say int32(sy) instead of int32(math.Floor(sy)). Similarly for + // sx, below. + sy0 := int32(sy) + yFrac0 := sy - float64(sy0) + yFrac1 := 1 - yFrac0 + sy1 := sy0 + 1 + if sy < 0 { + sy0, sy1 = 0, 0 + yFrac0, yFrac1 = 0, 1 + } else if sy1 > shMinus1 { + sy0, sy1 = shMinus1, shMinus1 + yFrac0, yFrac1 = 1, 0 + } + d := (dr.Min.Y+int(dy)-dst.Rect.Min.Y)*dst.Stride + (dr.Min.X+adr.Min.X-dst.Rect.Min.X)*4 + + for dx := int32(adr.Min.X); dx < int32(adr.Max.X); dx, d = dx+1, d+4 { + sx := (float64(dx)+0.5)*xscale - 0.5 + sx0 := int32(sx) + xFrac0 := sx - float64(sx0) + xFrac1 := 1 - xFrac0 + sx1 := sx0 + 1 + if sx < 0 { + sx0, sx1 = 0, 0 + xFrac0, xFrac1 = 0, 1 + } else if sx1 > swMinus1 { + sx0, sx1 = swMinus1, swMinus1 + xFrac0, xFrac1 = 1, 0 + } + + s00i := (sr.Min.Y+int(sy0)-src.Rect.Min.Y)*src.Stride + (sr.Min.X+int(sx0)-src.Rect.Min.X)*4 + s00ru := uint32(src.Pix[s00i+0]) * 0x101 + s00gu := uint32(src.Pix[s00i+1]) * 0x101 + s00bu := uint32(src.Pix[s00i+2]) * 0x101 + s00au := uint32(src.Pix[s00i+3]) * 0x101 + s00r := float64(s00ru) + s00g := float64(s00gu) + s00b := float64(s00bu) + s00a := float64(s00au) + s10i := (sr.Min.Y+int(sy0)-src.Rect.Min.Y)*src.Stride + (sr.Min.X+int(sx1)-src.Rect.Min.X)*4 + s10ru := uint32(src.Pix[s10i+0]) * 0x101 + s10gu := uint32(src.Pix[s10i+1]) * 0x101 + s10bu := uint32(src.Pix[s10i+2]) * 0x101 + s10au := uint32(src.Pix[s10i+3]) * 0x101 + s10r := float64(s10ru) + s10g := float64(s10gu) + s10b := float64(s10bu) + s10a := float64(s10au) + s10r = xFrac1*s00r + xFrac0*s10r + s10g = xFrac1*s00g + xFrac0*s10g + s10b = xFrac1*s00b + xFrac0*s10b + s10a = xFrac1*s00a + xFrac0*s10a + s01i := (sr.Min.Y+int(sy1)-src.Rect.Min.Y)*src.Stride + (sr.Min.X+int(sx0)-src.Rect.Min.X)*4 + s01ru := uint32(src.Pix[s01i+0]) * 0x101 + s01gu := uint32(src.Pix[s01i+1]) * 0x101 + s01bu := uint32(src.Pix[s01i+2]) * 0x101 + s01au := uint32(src.Pix[s01i+3]) * 0x101 + s01r := float64(s01ru) + s01g := float64(s01gu) + s01b := float64(s01bu) + s01a := float64(s01au) + s11i := (sr.Min.Y+int(sy1)-src.Rect.Min.Y)*src.Stride + (sr.Min.X+int(sx1)-src.Rect.Min.X)*4 + s11ru := uint32(src.Pix[s11i+0]) * 0x101 + s11gu := uint32(src.Pix[s11i+1]) * 0x101 + s11bu := uint32(src.Pix[s11i+2]) * 0x101 + s11au := uint32(src.Pix[s11i+3]) * 0x101 + s11r := float64(s11ru) + s11g := float64(s11gu) + s11b := float64(s11bu) + s11a := float64(s11au) + s11r = xFrac1*s01r + xFrac0*s11r + s11g = xFrac1*s01g + xFrac0*s11g + s11b = xFrac1*s01b + xFrac0*s11b + s11a = xFrac1*s01a + xFrac0*s11a + s11r = yFrac1*s10r + yFrac0*s11r + s11g = yFrac1*s10g + yFrac0*s11g + s11b = yFrac1*s10b + yFrac0*s11b + s11a = yFrac1*s10a + yFrac0*s11a + pr := uint32(s11r) + pg := uint32(s11g) + pb := uint32(s11b) + pa := uint32(s11a) + pa1 := (0xffff - pa) * 0x101 + dst.Pix[d+0] = uint8((uint32(dst.Pix[d+0])*pa1/0xffff + pr) >> 8) + dst.Pix[d+1] = uint8((uint32(dst.Pix[d+1])*pa1/0xffff + pg) >> 8) + dst.Pix[d+2] = uint8((uint32(dst.Pix[d+2])*pa1/0xffff + pb) >> 8) + dst.Pix[d+3] = uint8((uint32(dst.Pix[d+3])*pa1/0xffff + pa) >> 8) + } + } +} + +func (ablInterpolator) scale_RGBA_RGBA_Src(dst *image.RGBA, dr, adr image.Rectangle, src *image.RGBA, sr image.Rectangle, opts *Options) { + sw := int32(sr.Dx()) + sh := int32(sr.Dy()) + yscale := float64(sh) / float64(dr.Dy()) + xscale := float64(sw) / float64(dr.Dx()) + swMinus1, shMinus1 := sw-1, sh-1 + + for dy := int32(adr.Min.Y); dy < int32(adr.Max.Y); dy++ { + sy := (float64(dy)+0.5)*yscale - 0.5 + // If sy < 0, we will clamp sy0 to 0 anyway, so it doesn't matter if + // we say int32(sy) instead of int32(math.Floor(sy)). Similarly for + // sx, below. + sy0 := int32(sy) + yFrac0 := sy - float64(sy0) + yFrac1 := 1 - yFrac0 + sy1 := sy0 + 1 + if sy < 0 { + sy0, sy1 = 0, 0 + yFrac0, yFrac1 = 0, 1 + } else if sy1 > shMinus1 { + sy0, sy1 = shMinus1, shMinus1 + yFrac0, yFrac1 = 1, 0 + } + d := (dr.Min.Y+int(dy)-dst.Rect.Min.Y)*dst.Stride + (dr.Min.X+adr.Min.X-dst.Rect.Min.X)*4 + + for dx := int32(adr.Min.X); dx < int32(adr.Max.X); dx, d = dx+1, d+4 { + sx := (float64(dx)+0.5)*xscale - 0.5 + sx0 := int32(sx) + xFrac0 := sx - float64(sx0) + xFrac1 := 1 - xFrac0 + sx1 := sx0 + 1 + if sx < 0 { + sx0, sx1 = 0, 0 + xFrac0, xFrac1 = 0, 1 + } else if sx1 > swMinus1 { + sx0, sx1 = swMinus1, swMinus1 + xFrac0, xFrac1 = 1, 0 + } + + s00i := (sr.Min.Y+int(sy0)-src.Rect.Min.Y)*src.Stride + (sr.Min.X+int(sx0)-src.Rect.Min.X)*4 + s00ru := uint32(src.Pix[s00i+0]) * 0x101 + s00gu := uint32(src.Pix[s00i+1]) * 0x101 + s00bu := uint32(src.Pix[s00i+2]) * 0x101 + s00au := uint32(src.Pix[s00i+3]) * 0x101 + s00r := float64(s00ru) + s00g := float64(s00gu) + s00b := float64(s00bu) + s00a := float64(s00au) + s10i := (sr.Min.Y+int(sy0)-src.Rect.Min.Y)*src.Stride + (sr.Min.X+int(sx1)-src.Rect.Min.X)*4 + s10ru := uint32(src.Pix[s10i+0]) * 0x101 + s10gu := uint32(src.Pix[s10i+1]) * 0x101 + s10bu := uint32(src.Pix[s10i+2]) * 0x101 + s10au := uint32(src.Pix[s10i+3]) * 0x101 + s10r := float64(s10ru) + s10g := float64(s10gu) + s10b := float64(s10bu) + s10a := float64(s10au) + s10r = xFrac1*s00r + xFrac0*s10r + s10g = xFrac1*s00g + xFrac0*s10g + s10b = xFrac1*s00b + xFrac0*s10b + s10a = xFrac1*s00a + xFrac0*s10a + s01i := (sr.Min.Y+int(sy1)-src.Rect.Min.Y)*src.Stride + (sr.Min.X+int(sx0)-src.Rect.Min.X)*4 + s01ru := uint32(src.Pix[s01i+0]) * 0x101 + s01gu := uint32(src.Pix[s01i+1]) * 0x101 + s01bu := uint32(src.Pix[s01i+2]) * 0x101 + s01au := uint32(src.Pix[s01i+3]) * 0x101 + s01r := float64(s01ru) + s01g := float64(s01gu) + s01b := float64(s01bu) + s01a := float64(s01au) + s11i := (sr.Min.Y+int(sy1)-src.Rect.Min.Y)*src.Stride + (sr.Min.X+int(sx1)-src.Rect.Min.X)*4 + s11ru := uint32(src.Pix[s11i+0]) * 0x101 + s11gu := uint32(src.Pix[s11i+1]) * 0x101 + s11bu := uint32(src.Pix[s11i+2]) * 0x101 + s11au := uint32(src.Pix[s11i+3]) * 0x101 + s11r := float64(s11ru) + s11g := float64(s11gu) + s11b := float64(s11bu) + s11a := float64(s11au) + s11r = xFrac1*s01r + xFrac0*s11r + s11g = xFrac1*s01g + xFrac0*s11g + s11b = xFrac1*s01b + xFrac0*s11b + s11a = xFrac1*s01a + xFrac0*s11a + s11r = yFrac1*s10r + yFrac0*s11r + s11g = yFrac1*s10g + yFrac0*s11g + s11b = yFrac1*s10b + yFrac0*s11b + s11a = yFrac1*s10a + yFrac0*s11a + pr := uint32(s11r) + pg := uint32(s11g) + pb := uint32(s11b) + pa := uint32(s11a) + dst.Pix[d+0] = uint8(pr >> 8) + dst.Pix[d+1] = uint8(pg >> 8) + dst.Pix[d+2] = uint8(pb >> 8) + dst.Pix[d+3] = uint8(pa >> 8) + } + } +} + +func (ablInterpolator) scale_RGBA_YCbCr444_Src(dst *image.RGBA, dr, adr image.Rectangle, src *image.YCbCr, sr image.Rectangle, opts *Options) { + sw := int32(sr.Dx()) + sh := int32(sr.Dy()) + yscale := float64(sh) / float64(dr.Dy()) + xscale := float64(sw) / float64(dr.Dx()) + swMinus1, shMinus1 := sw-1, sh-1 + + for dy := int32(adr.Min.Y); dy < int32(adr.Max.Y); dy++ { + sy := (float64(dy)+0.5)*yscale - 0.5 + // If sy < 0, we will clamp sy0 to 0 anyway, so it doesn't matter if + // we say int32(sy) instead of int32(math.Floor(sy)). Similarly for + // sx, below. + sy0 := int32(sy) + yFrac0 := sy - float64(sy0) + yFrac1 := 1 - yFrac0 + sy1 := sy0 + 1 + if sy < 0 { + sy0, sy1 = 0, 0 + yFrac0, yFrac1 = 0, 1 + } else if sy1 > shMinus1 { + sy0, sy1 = shMinus1, shMinus1 + yFrac0, yFrac1 = 1, 0 + } + d := (dr.Min.Y+int(dy)-dst.Rect.Min.Y)*dst.Stride + (dr.Min.X+adr.Min.X-dst.Rect.Min.X)*4 + + for dx := int32(adr.Min.X); dx < int32(adr.Max.X); dx, d = dx+1, d+4 { + sx := (float64(dx)+0.5)*xscale - 0.5 + sx0 := int32(sx) + xFrac0 := sx - float64(sx0) + xFrac1 := 1 - xFrac0 + sx1 := sx0 + 1 + if sx < 0 { + sx0, sx1 = 0, 0 + xFrac0, xFrac1 = 0, 1 + } else if sx1 > swMinus1 { + sx0, sx1 = swMinus1, swMinus1 + xFrac0, xFrac1 = 1, 0 + } + + s00i := (sr.Min.Y+int(sy0)-src.Rect.Min.Y)*src.YStride + (sr.Min.X + int(sx0) - src.Rect.Min.X) + s00j := (sr.Min.Y+int(sy0)-src.Rect.Min.Y)*src.CStride + (sr.Min.X + int(sx0) - src.Rect.Min.X) + + // This is an inline version of image/color/ycbcr.go's YCbCr.RGBA method. + s00yy1 := int(src.Y[s00i]) * 0x10101 + s00cb1 := int(src.Cb[s00j]) - 128 + s00cr1 := int(src.Cr[s00j]) - 128 + s00ru := (s00yy1 + 91881*s00cr1) >> 8 + s00gu := (s00yy1 - 22554*s00cb1 - 46802*s00cr1) >> 8 + s00bu := (s00yy1 + 116130*s00cb1) >> 8 + if s00ru < 0 { + s00ru = 0 + } else if s00ru > 0xffff { + s00ru = 0xffff + } + if s00gu < 0 { + s00gu = 0 + } else if s00gu > 0xffff { + s00gu = 0xffff + } + if s00bu < 0 { + s00bu = 0 + } else if s00bu > 0xffff { + s00bu = 0xffff + } + + s00r := float64(s00ru) + s00g := float64(s00gu) + s00b := float64(s00bu) + s10i := (sr.Min.Y+int(sy0)-src.Rect.Min.Y)*src.YStride + (sr.Min.X + int(sx1) - src.Rect.Min.X) + s10j := (sr.Min.Y+int(sy0)-src.Rect.Min.Y)*src.CStride + (sr.Min.X + int(sx1) - src.Rect.Min.X) + + // This is an inline version of image/color/ycbcr.go's YCbCr.RGBA method. + s10yy1 := int(src.Y[s10i]) * 0x10101 + s10cb1 := int(src.Cb[s10j]) - 128 + s10cr1 := int(src.Cr[s10j]) - 128 + s10ru := (s10yy1 + 91881*s10cr1) >> 8 + s10gu := (s10yy1 - 22554*s10cb1 - 46802*s10cr1) >> 8 + s10bu := (s10yy1 + 116130*s10cb1) >> 8 + if s10ru < 0 { + s10ru = 0 + } else if s10ru > 0xffff { + s10ru = 0xffff + } + if s10gu < 0 { + s10gu = 0 + } else if s10gu > 0xffff { + s10gu = 0xffff + } + if s10bu < 0 { + s10bu = 0 + } else if s10bu > 0xffff { + s10bu = 0xffff + } + + s10r := float64(s10ru) + s10g := float64(s10gu) + s10b := float64(s10bu) + s10r = xFrac1*s00r + xFrac0*s10r + s10g = xFrac1*s00g + xFrac0*s10g + s10b = xFrac1*s00b + xFrac0*s10b + s01i := (sr.Min.Y+int(sy1)-src.Rect.Min.Y)*src.YStride + (sr.Min.X + int(sx0) - src.Rect.Min.X) + s01j := (sr.Min.Y+int(sy1)-src.Rect.Min.Y)*src.CStride + (sr.Min.X + int(sx0) - src.Rect.Min.X) + + // This is an inline version of image/color/ycbcr.go's YCbCr.RGBA method. + s01yy1 := int(src.Y[s01i]) * 0x10101 + s01cb1 := int(src.Cb[s01j]) - 128 + s01cr1 := int(src.Cr[s01j]) - 128 + s01ru := (s01yy1 + 91881*s01cr1) >> 8 + s01gu := (s01yy1 - 22554*s01cb1 - 46802*s01cr1) >> 8 + s01bu := (s01yy1 + 116130*s01cb1) >> 8 + if s01ru < 0 { + s01ru = 0 + } else if s01ru > 0xffff { + s01ru = 0xffff + } + if s01gu < 0 { + s01gu = 0 + } else if s01gu > 0xffff { + s01gu = 0xffff + } + if s01bu < 0 { + s01bu = 0 + } else if s01bu > 0xffff { + s01bu = 0xffff + } + + s01r := float64(s01ru) + s01g := float64(s01gu) + s01b := float64(s01bu) + s11i := (sr.Min.Y+int(sy1)-src.Rect.Min.Y)*src.YStride + (sr.Min.X + int(sx1) - src.Rect.Min.X) + s11j := (sr.Min.Y+int(sy1)-src.Rect.Min.Y)*src.CStride + (sr.Min.X + int(sx1) - src.Rect.Min.X) + + // This is an inline version of image/color/ycbcr.go's YCbCr.RGBA method. + s11yy1 := int(src.Y[s11i]) * 0x10101 + s11cb1 := int(src.Cb[s11j]) - 128 + s11cr1 := int(src.Cr[s11j]) - 128 + s11ru := (s11yy1 + 91881*s11cr1) >> 8 + s11gu := (s11yy1 - 22554*s11cb1 - 46802*s11cr1) >> 8 + s11bu := (s11yy1 + 116130*s11cb1) >> 8 + if s11ru < 0 { + s11ru = 0 + } else if s11ru > 0xffff { + s11ru = 0xffff + } + if s11gu < 0 { + s11gu = 0 + } else if s11gu > 0xffff { + s11gu = 0xffff + } + if s11bu < 0 { + s11bu = 0 + } else if s11bu > 0xffff { + s11bu = 0xffff + } + + s11r := float64(s11ru) + s11g := float64(s11gu) + s11b := float64(s11bu) + s11r = xFrac1*s01r + xFrac0*s11r + s11g = xFrac1*s01g + xFrac0*s11g + s11b = xFrac1*s01b + xFrac0*s11b + s11r = yFrac1*s10r + yFrac0*s11r + s11g = yFrac1*s10g + yFrac0*s11g + s11b = yFrac1*s10b + yFrac0*s11b + pr := uint32(s11r) + pg := uint32(s11g) + pb := uint32(s11b) + dst.Pix[d+0] = uint8(pr >> 8) + dst.Pix[d+1] = uint8(pg >> 8) + dst.Pix[d+2] = uint8(pb >> 8) + dst.Pix[d+3] = 0xff + } + } +} + +func (ablInterpolator) scale_RGBA_YCbCr422_Src(dst *image.RGBA, dr, adr image.Rectangle, src *image.YCbCr, sr image.Rectangle, opts *Options) { + sw := int32(sr.Dx()) + sh := int32(sr.Dy()) + yscale := float64(sh) / float64(dr.Dy()) + xscale := float64(sw) / float64(dr.Dx()) + swMinus1, shMinus1 := sw-1, sh-1 + + for dy := int32(adr.Min.Y); dy < int32(adr.Max.Y); dy++ { + sy := (float64(dy)+0.5)*yscale - 0.5 + // If sy < 0, we will clamp sy0 to 0 anyway, so it doesn't matter if + // we say int32(sy) instead of int32(math.Floor(sy)). Similarly for + // sx, below. + sy0 := int32(sy) + yFrac0 := sy - float64(sy0) + yFrac1 := 1 - yFrac0 + sy1 := sy0 + 1 + if sy < 0 { + sy0, sy1 = 0, 0 + yFrac0, yFrac1 = 0, 1 + } else if sy1 > shMinus1 { + sy0, sy1 = shMinus1, shMinus1 + yFrac0, yFrac1 = 1, 0 + } + d := (dr.Min.Y+int(dy)-dst.Rect.Min.Y)*dst.Stride + (dr.Min.X+adr.Min.X-dst.Rect.Min.X)*4 + + for dx := int32(adr.Min.X); dx < int32(adr.Max.X); dx, d = dx+1, d+4 { + sx := (float64(dx)+0.5)*xscale - 0.5 + sx0 := int32(sx) + xFrac0 := sx - float64(sx0) + xFrac1 := 1 - xFrac0 + sx1 := sx0 + 1 + if sx < 0 { + sx0, sx1 = 0, 0 + xFrac0, xFrac1 = 0, 1 + } else if sx1 > swMinus1 { + sx0, sx1 = swMinus1, swMinus1 + xFrac0, xFrac1 = 1, 0 + } + + s00i := (sr.Min.Y+int(sy0)-src.Rect.Min.Y)*src.YStride + (sr.Min.X + int(sx0) - src.Rect.Min.X) + s00j := (sr.Min.Y+int(sy0)-src.Rect.Min.Y)*src.CStride + ((sr.Min.X+int(sx0))/2 - src.Rect.Min.X/2) + + // This is an inline version of image/color/ycbcr.go's YCbCr.RGBA method. + s00yy1 := int(src.Y[s00i]) * 0x10101 + s00cb1 := int(src.Cb[s00j]) - 128 + s00cr1 := int(src.Cr[s00j]) - 128 + s00ru := (s00yy1 + 91881*s00cr1) >> 8 + s00gu := (s00yy1 - 22554*s00cb1 - 46802*s00cr1) >> 8 + s00bu := (s00yy1 + 116130*s00cb1) >> 8 + if s00ru < 0 { + s00ru = 0 + } else if s00ru > 0xffff { + s00ru = 0xffff + } + if s00gu < 0 { + s00gu = 0 + } else if s00gu > 0xffff { + s00gu = 0xffff + } + if s00bu < 0 { + s00bu = 0 + } else if s00bu > 0xffff { + s00bu = 0xffff + } + + s00r := float64(s00ru) + s00g := float64(s00gu) + s00b := float64(s00bu) + s10i := (sr.Min.Y+int(sy0)-src.Rect.Min.Y)*src.YStride + (sr.Min.X + int(sx1) - src.Rect.Min.X) + s10j := (sr.Min.Y+int(sy0)-src.Rect.Min.Y)*src.CStride + ((sr.Min.X+int(sx1))/2 - src.Rect.Min.X/2) + + // This is an inline version of image/color/ycbcr.go's YCbCr.RGBA method. + s10yy1 := int(src.Y[s10i]) * 0x10101 + s10cb1 := int(src.Cb[s10j]) - 128 + s10cr1 := int(src.Cr[s10j]) - 128 + s10ru := (s10yy1 + 91881*s10cr1) >> 8 + s10gu := (s10yy1 - 22554*s10cb1 - 46802*s10cr1) >> 8 + s10bu := (s10yy1 + 116130*s10cb1) >> 8 + if s10ru < 0 { + s10ru = 0 + } else if s10ru > 0xffff { + s10ru = 0xffff + } + if s10gu < 0 { + s10gu = 0 + } else if s10gu > 0xffff { + s10gu = 0xffff + } + if s10bu < 0 { + s10bu = 0 + } else if s10bu > 0xffff { + s10bu = 0xffff + } + + s10r := float64(s10ru) + s10g := float64(s10gu) + s10b := float64(s10bu) + s10r = xFrac1*s00r + xFrac0*s10r + s10g = xFrac1*s00g + xFrac0*s10g + s10b = xFrac1*s00b + xFrac0*s10b + s01i := (sr.Min.Y+int(sy1)-src.Rect.Min.Y)*src.YStride + (sr.Min.X + int(sx0) - src.Rect.Min.X) + s01j := (sr.Min.Y+int(sy1)-src.Rect.Min.Y)*src.CStride + ((sr.Min.X+int(sx0))/2 - src.Rect.Min.X/2) + + // This is an inline version of image/color/ycbcr.go's YCbCr.RGBA method. + s01yy1 := int(src.Y[s01i]) * 0x10101 + s01cb1 := int(src.Cb[s01j]) - 128 + s01cr1 := int(src.Cr[s01j]) - 128 + s01ru := (s01yy1 + 91881*s01cr1) >> 8 + s01gu := (s01yy1 - 22554*s01cb1 - 46802*s01cr1) >> 8 + s01bu := (s01yy1 + 116130*s01cb1) >> 8 + if s01ru < 0 { + s01ru = 0 + } else if s01ru > 0xffff { + s01ru = 0xffff + } + if s01gu < 0 { + s01gu = 0 + } else if s01gu > 0xffff { + s01gu = 0xffff + } + if s01bu < 0 { + s01bu = 0 + } else if s01bu > 0xffff { + s01bu = 0xffff + } + + s01r := float64(s01ru) + s01g := float64(s01gu) + s01b := float64(s01bu) + s11i := (sr.Min.Y+int(sy1)-src.Rect.Min.Y)*src.YStride + (sr.Min.X + int(sx1) - src.Rect.Min.X) + s11j := (sr.Min.Y+int(sy1)-src.Rect.Min.Y)*src.CStride + ((sr.Min.X+int(sx1))/2 - src.Rect.Min.X/2) + + // This is an inline version of image/color/ycbcr.go's YCbCr.RGBA method. + s11yy1 := int(src.Y[s11i]) * 0x10101 + s11cb1 := int(src.Cb[s11j]) - 128 + s11cr1 := int(src.Cr[s11j]) - 128 + s11ru := (s11yy1 + 91881*s11cr1) >> 8 + s11gu := (s11yy1 - 22554*s11cb1 - 46802*s11cr1) >> 8 + s11bu := (s11yy1 + 116130*s11cb1) >> 8 + if s11ru < 0 { + s11ru = 0 + } else if s11ru > 0xffff { + s11ru = 0xffff + } + if s11gu < 0 { + s11gu = 0 + } else if s11gu > 0xffff { + s11gu = 0xffff + } + if s11bu < 0 { + s11bu = 0 + } else if s11bu > 0xffff { + s11bu = 0xffff + } + + s11r := float64(s11ru) + s11g := float64(s11gu) + s11b := float64(s11bu) + s11r = xFrac1*s01r + xFrac0*s11r + s11g = xFrac1*s01g + xFrac0*s11g + s11b = xFrac1*s01b + xFrac0*s11b + s11r = yFrac1*s10r + yFrac0*s11r + s11g = yFrac1*s10g + yFrac0*s11g + s11b = yFrac1*s10b + yFrac0*s11b + pr := uint32(s11r) + pg := uint32(s11g) + pb := uint32(s11b) + dst.Pix[d+0] = uint8(pr >> 8) + dst.Pix[d+1] = uint8(pg >> 8) + dst.Pix[d+2] = uint8(pb >> 8) + dst.Pix[d+3] = 0xff + } + } +} + +func (ablInterpolator) scale_RGBA_YCbCr420_Src(dst *image.RGBA, dr, adr image.Rectangle, src *image.YCbCr, sr image.Rectangle, opts *Options) { + sw := int32(sr.Dx()) + sh := int32(sr.Dy()) + yscale := float64(sh) / float64(dr.Dy()) + xscale := float64(sw) / float64(dr.Dx()) + swMinus1, shMinus1 := sw-1, sh-1 + + for dy := int32(adr.Min.Y); dy < int32(adr.Max.Y); dy++ { + sy := (float64(dy)+0.5)*yscale - 0.5 + // If sy < 0, we will clamp sy0 to 0 anyway, so it doesn't matter if + // we say int32(sy) instead of int32(math.Floor(sy)). Similarly for + // sx, below. + sy0 := int32(sy) + yFrac0 := sy - float64(sy0) + yFrac1 := 1 - yFrac0 + sy1 := sy0 + 1 + if sy < 0 { + sy0, sy1 = 0, 0 + yFrac0, yFrac1 = 0, 1 + } else if sy1 > shMinus1 { + sy0, sy1 = shMinus1, shMinus1 + yFrac0, yFrac1 = 1, 0 + } + d := (dr.Min.Y+int(dy)-dst.Rect.Min.Y)*dst.Stride + (dr.Min.X+adr.Min.X-dst.Rect.Min.X)*4 + + for dx := int32(adr.Min.X); dx < int32(adr.Max.X); dx, d = dx+1, d+4 { + sx := (float64(dx)+0.5)*xscale - 0.5 + sx0 := int32(sx) + xFrac0 := sx - float64(sx0) + xFrac1 := 1 - xFrac0 + sx1 := sx0 + 1 + if sx < 0 { + sx0, sx1 = 0, 0 + xFrac0, xFrac1 = 0, 1 + } else if sx1 > swMinus1 { + sx0, sx1 = swMinus1, swMinus1 + xFrac0, xFrac1 = 1, 0 + } + + s00i := (sr.Min.Y+int(sy0)-src.Rect.Min.Y)*src.YStride + (sr.Min.X + int(sx0) - src.Rect.Min.X) + s00j := ((sr.Min.Y+int(sy0))/2-src.Rect.Min.Y/2)*src.CStride + ((sr.Min.X+int(sx0))/2 - src.Rect.Min.X/2) + + // This is an inline version of image/color/ycbcr.go's YCbCr.RGBA method. + s00yy1 := int(src.Y[s00i]) * 0x10101 + s00cb1 := int(src.Cb[s00j]) - 128 + s00cr1 := int(src.Cr[s00j]) - 128 + s00ru := (s00yy1 + 91881*s00cr1) >> 8 + s00gu := (s00yy1 - 22554*s00cb1 - 46802*s00cr1) >> 8 + s00bu := (s00yy1 + 116130*s00cb1) >> 8 + if s00ru < 0 { + s00ru = 0 + } else if s00ru > 0xffff { + s00ru = 0xffff + } + if s00gu < 0 { + s00gu = 0 + } else if s00gu > 0xffff { + s00gu = 0xffff + } + if s00bu < 0 { + s00bu = 0 + } else if s00bu > 0xffff { + s00bu = 0xffff + } + + s00r := float64(s00ru) + s00g := float64(s00gu) + s00b := float64(s00bu) + s10i := (sr.Min.Y+int(sy0)-src.Rect.Min.Y)*src.YStride + (sr.Min.X + int(sx1) - src.Rect.Min.X) + s10j := ((sr.Min.Y+int(sy0))/2-src.Rect.Min.Y/2)*src.CStride + ((sr.Min.X+int(sx1))/2 - src.Rect.Min.X/2) + + // This is an inline version of image/color/ycbcr.go's YCbCr.RGBA method. + s10yy1 := int(src.Y[s10i]) * 0x10101 + s10cb1 := int(src.Cb[s10j]) - 128 + s10cr1 := int(src.Cr[s10j]) - 128 + s10ru := (s10yy1 + 91881*s10cr1) >> 8 + s10gu := (s10yy1 - 22554*s10cb1 - 46802*s10cr1) >> 8 + s10bu := (s10yy1 + 116130*s10cb1) >> 8 + if s10ru < 0 { + s10ru = 0 + } else if s10ru > 0xffff { + s10ru = 0xffff + } + if s10gu < 0 { + s10gu = 0 + } else if s10gu > 0xffff { + s10gu = 0xffff + } + if s10bu < 0 { + s10bu = 0 + } else if s10bu > 0xffff { + s10bu = 0xffff + } + + s10r := float64(s10ru) + s10g := float64(s10gu) + s10b := float64(s10bu) + s10r = xFrac1*s00r + xFrac0*s10r + s10g = xFrac1*s00g + xFrac0*s10g + s10b = xFrac1*s00b + xFrac0*s10b + s01i := (sr.Min.Y+int(sy1)-src.Rect.Min.Y)*src.YStride + (sr.Min.X + int(sx0) - src.Rect.Min.X) + s01j := ((sr.Min.Y+int(sy1))/2-src.Rect.Min.Y/2)*src.CStride + ((sr.Min.X+int(sx0))/2 - src.Rect.Min.X/2) + + // This is an inline version of image/color/ycbcr.go's YCbCr.RGBA method. + s01yy1 := int(src.Y[s01i]) * 0x10101 + s01cb1 := int(src.Cb[s01j]) - 128 + s01cr1 := int(src.Cr[s01j]) - 128 + s01ru := (s01yy1 + 91881*s01cr1) >> 8 + s01gu := (s01yy1 - 22554*s01cb1 - 46802*s01cr1) >> 8 + s01bu := (s01yy1 + 116130*s01cb1) >> 8 + if s01ru < 0 { + s01ru = 0 + } else if s01ru > 0xffff { + s01ru = 0xffff + } + if s01gu < 0 { + s01gu = 0 + } else if s01gu > 0xffff { + s01gu = 0xffff + } + if s01bu < 0 { + s01bu = 0 + } else if s01bu > 0xffff { + s01bu = 0xffff + } + + s01r := float64(s01ru) + s01g := float64(s01gu) + s01b := float64(s01bu) + s11i := (sr.Min.Y+int(sy1)-src.Rect.Min.Y)*src.YStride + (sr.Min.X + int(sx1) - src.Rect.Min.X) + s11j := ((sr.Min.Y+int(sy1))/2-src.Rect.Min.Y/2)*src.CStride + ((sr.Min.X+int(sx1))/2 - src.Rect.Min.X/2) + + // This is an inline version of image/color/ycbcr.go's YCbCr.RGBA method. + s11yy1 := int(src.Y[s11i]) * 0x10101 + s11cb1 := int(src.Cb[s11j]) - 128 + s11cr1 := int(src.Cr[s11j]) - 128 + s11ru := (s11yy1 + 91881*s11cr1) >> 8 + s11gu := (s11yy1 - 22554*s11cb1 - 46802*s11cr1) >> 8 + s11bu := (s11yy1 + 116130*s11cb1) >> 8 + if s11ru < 0 { + s11ru = 0 + } else if s11ru > 0xffff { + s11ru = 0xffff + } + if s11gu < 0 { + s11gu = 0 + } else if s11gu > 0xffff { + s11gu = 0xffff + } + if s11bu < 0 { + s11bu = 0 + } else if s11bu > 0xffff { + s11bu = 0xffff + } + + s11r := float64(s11ru) + s11g := float64(s11gu) + s11b := float64(s11bu) + s11r = xFrac1*s01r + xFrac0*s11r + s11g = xFrac1*s01g + xFrac0*s11g + s11b = xFrac1*s01b + xFrac0*s11b + s11r = yFrac1*s10r + yFrac0*s11r + s11g = yFrac1*s10g + yFrac0*s11g + s11b = yFrac1*s10b + yFrac0*s11b + pr := uint32(s11r) + pg := uint32(s11g) + pb := uint32(s11b) + dst.Pix[d+0] = uint8(pr >> 8) + dst.Pix[d+1] = uint8(pg >> 8) + dst.Pix[d+2] = uint8(pb >> 8) + dst.Pix[d+3] = 0xff + } + } +} + +func (ablInterpolator) scale_RGBA_YCbCr440_Src(dst *image.RGBA, dr, adr image.Rectangle, src *image.YCbCr, sr image.Rectangle, opts *Options) { + sw := int32(sr.Dx()) + sh := int32(sr.Dy()) + yscale := float64(sh) / float64(dr.Dy()) + xscale := float64(sw) / float64(dr.Dx()) + swMinus1, shMinus1 := sw-1, sh-1 + + for dy := int32(adr.Min.Y); dy < int32(adr.Max.Y); dy++ { + sy := (float64(dy)+0.5)*yscale - 0.5 + // If sy < 0, we will clamp sy0 to 0 anyway, so it doesn't matter if + // we say int32(sy) instead of int32(math.Floor(sy)). Similarly for + // sx, below. + sy0 := int32(sy) + yFrac0 := sy - float64(sy0) + yFrac1 := 1 - yFrac0 + sy1 := sy0 + 1 + if sy < 0 { + sy0, sy1 = 0, 0 + yFrac0, yFrac1 = 0, 1 + } else if sy1 > shMinus1 { + sy0, sy1 = shMinus1, shMinus1 + yFrac0, yFrac1 = 1, 0 + } + d := (dr.Min.Y+int(dy)-dst.Rect.Min.Y)*dst.Stride + (dr.Min.X+adr.Min.X-dst.Rect.Min.X)*4 + + for dx := int32(adr.Min.X); dx < int32(adr.Max.X); dx, d = dx+1, d+4 { + sx := (float64(dx)+0.5)*xscale - 0.5 + sx0 := int32(sx) + xFrac0 := sx - float64(sx0) + xFrac1 := 1 - xFrac0 + sx1 := sx0 + 1 + if sx < 0 { + sx0, sx1 = 0, 0 + xFrac0, xFrac1 = 0, 1 + } else if sx1 > swMinus1 { + sx0, sx1 = swMinus1, swMinus1 + xFrac0, xFrac1 = 1, 0 + } + + s00i := (sr.Min.Y+int(sy0)-src.Rect.Min.Y)*src.YStride + (sr.Min.X + int(sx0) - src.Rect.Min.X) + s00j := ((sr.Min.Y+int(sy0))/2-src.Rect.Min.Y/2)*src.CStride + (sr.Min.X + int(sx0) - src.Rect.Min.X) + + // This is an inline version of image/color/ycbcr.go's YCbCr.RGBA method. + s00yy1 := int(src.Y[s00i]) * 0x10101 + s00cb1 := int(src.Cb[s00j]) - 128 + s00cr1 := int(src.Cr[s00j]) - 128 + s00ru := (s00yy1 + 91881*s00cr1) >> 8 + s00gu := (s00yy1 - 22554*s00cb1 - 46802*s00cr1) >> 8 + s00bu := (s00yy1 + 116130*s00cb1) >> 8 + if s00ru < 0 { + s00ru = 0 + } else if s00ru > 0xffff { + s00ru = 0xffff + } + if s00gu < 0 { + s00gu = 0 + } else if s00gu > 0xffff { + s00gu = 0xffff + } + if s00bu < 0 { + s00bu = 0 + } else if s00bu > 0xffff { + s00bu = 0xffff + } + + s00r := float64(s00ru) + s00g := float64(s00gu) + s00b := float64(s00bu) + s10i := (sr.Min.Y+int(sy0)-src.Rect.Min.Y)*src.YStride + (sr.Min.X + int(sx1) - src.Rect.Min.X) + s10j := ((sr.Min.Y+int(sy0))/2-src.Rect.Min.Y/2)*src.CStride + (sr.Min.X + int(sx1) - src.Rect.Min.X) + + // This is an inline version of image/color/ycbcr.go's YCbCr.RGBA method. + s10yy1 := int(src.Y[s10i]) * 0x10101 + s10cb1 := int(src.Cb[s10j]) - 128 + s10cr1 := int(src.Cr[s10j]) - 128 + s10ru := (s10yy1 + 91881*s10cr1) >> 8 + s10gu := (s10yy1 - 22554*s10cb1 - 46802*s10cr1) >> 8 + s10bu := (s10yy1 + 116130*s10cb1) >> 8 + if s10ru < 0 { + s10ru = 0 + } else if s10ru > 0xffff { + s10ru = 0xffff + } + if s10gu < 0 { + s10gu = 0 + } else if s10gu > 0xffff { + s10gu = 0xffff + } + if s10bu < 0 { + s10bu = 0 + } else if s10bu > 0xffff { + s10bu = 0xffff + } + + s10r := float64(s10ru) + s10g := float64(s10gu) + s10b := float64(s10bu) + s10r = xFrac1*s00r + xFrac0*s10r + s10g = xFrac1*s00g + xFrac0*s10g + s10b = xFrac1*s00b + xFrac0*s10b + s01i := (sr.Min.Y+int(sy1)-src.Rect.Min.Y)*src.YStride + (sr.Min.X + int(sx0) - src.Rect.Min.X) + s01j := ((sr.Min.Y+int(sy1))/2-src.Rect.Min.Y/2)*src.CStride + (sr.Min.X + int(sx0) - src.Rect.Min.X) + + // This is an inline version of image/color/ycbcr.go's YCbCr.RGBA method. + s01yy1 := int(src.Y[s01i]) * 0x10101 + s01cb1 := int(src.Cb[s01j]) - 128 + s01cr1 := int(src.Cr[s01j]) - 128 + s01ru := (s01yy1 + 91881*s01cr1) >> 8 + s01gu := (s01yy1 - 22554*s01cb1 - 46802*s01cr1) >> 8 + s01bu := (s01yy1 + 116130*s01cb1) >> 8 + if s01ru < 0 { + s01ru = 0 + } else if s01ru > 0xffff { + s01ru = 0xffff + } + if s01gu < 0 { + s01gu = 0 + } else if s01gu > 0xffff { + s01gu = 0xffff + } + if s01bu < 0 { + s01bu = 0 + } else if s01bu > 0xffff { + s01bu = 0xffff + } + + s01r := float64(s01ru) + s01g := float64(s01gu) + s01b := float64(s01bu) + s11i := (sr.Min.Y+int(sy1)-src.Rect.Min.Y)*src.YStride + (sr.Min.X + int(sx1) - src.Rect.Min.X) + s11j := ((sr.Min.Y+int(sy1))/2-src.Rect.Min.Y/2)*src.CStride + (sr.Min.X + int(sx1) - src.Rect.Min.X) + + // This is an inline version of image/color/ycbcr.go's YCbCr.RGBA method. + s11yy1 := int(src.Y[s11i]) * 0x10101 + s11cb1 := int(src.Cb[s11j]) - 128 + s11cr1 := int(src.Cr[s11j]) - 128 + s11ru := (s11yy1 + 91881*s11cr1) >> 8 + s11gu := (s11yy1 - 22554*s11cb1 - 46802*s11cr1) >> 8 + s11bu := (s11yy1 + 116130*s11cb1) >> 8 + if s11ru < 0 { + s11ru = 0 + } else if s11ru > 0xffff { + s11ru = 0xffff + } + if s11gu < 0 { + s11gu = 0 + } else if s11gu > 0xffff { + s11gu = 0xffff + } + if s11bu < 0 { + s11bu = 0 + } else if s11bu > 0xffff { + s11bu = 0xffff + } + + s11r := float64(s11ru) + s11g := float64(s11gu) + s11b := float64(s11bu) + s11r = xFrac1*s01r + xFrac0*s11r + s11g = xFrac1*s01g + xFrac0*s11g + s11b = xFrac1*s01b + xFrac0*s11b + s11r = yFrac1*s10r + yFrac0*s11r + s11g = yFrac1*s10g + yFrac0*s11g + s11b = yFrac1*s10b + yFrac0*s11b + pr := uint32(s11r) + pg := uint32(s11g) + pb := uint32(s11b) + dst.Pix[d+0] = uint8(pr >> 8) + dst.Pix[d+1] = uint8(pg >> 8) + dst.Pix[d+2] = uint8(pb >> 8) + dst.Pix[d+3] = 0xff + } + } +} + +func (ablInterpolator) scale_RGBA_Image_Over(dst *image.RGBA, dr, adr image.Rectangle, src image.Image, sr image.Rectangle, opts *Options) { + sw := int32(sr.Dx()) + sh := int32(sr.Dy()) + yscale := float64(sh) / float64(dr.Dy()) + xscale := float64(sw) / float64(dr.Dx()) + swMinus1, shMinus1 := sw-1, sh-1 + + for dy := int32(adr.Min.Y); dy < int32(adr.Max.Y); dy++ { + sy := (float64(dy)+0.5)*yscale - 0.5 + // If sy < 0, we will clamp sy0 to 0 anyway, so it doesn't matter if + // we say int32(sy) instead of int32(math.Floor(sy)). Similarly for + // sx, below. + sy0 := int32(sy) + yFrac0 := sy - float64(sy0) + yFrac1 := 1 - yFrac0 + sy1 := sy0 + 1 + if sy < 0 { + sy0, sy1 = 0, 0 + yFrac0, yFrac1 = 0, 1 + } else if sy1 > shMinus1 { + sy0, sy1 = shMinus1, shMinus1 + yFrac0, yFrac1 = 1, 0 + } + d := (dr.Min.Y+int(dy)-dst.Rect.Min.Y)*dst.Stride + (dr.Min.X+adr.Min.X-dst.Rect.Min.X)*4 + + for dx := int32(adr.Min.X); dx < int32(adr.Max.X); dx, d = dx+1, d+4 { + sx := (float64(dx)+0.5)*xscale - 0.5 + sx0 := int32(sx) + xFrac0 := sx - float64(sx0) + xFrac1 := 1 - xFrac0 + sx1 := sx0 + 1 + if sx < 0 { + sx0, sx1 = 0, 0 + xFrac0, xFrac1 = 0, 1 + } else if sx1 > swMinus1 { + sx0, sx1 = swMinus1, swMinus1 + xFrac0, xFrac1 = 1, 0 + } + + s00ru, s00gu, s00bu, s00au := src.At(sr.Min.X+int(sx0), sr.Min.Y+int(sy0)).RGBA() + s00r := float64(s00ru) + s00g := float64(s00gu) + s00b := float64(s00bu) + s00a := float64(s00au) + s10ru, s10gu, s10bu, s10au := src.At(sr.Min.X+int(sx1), sr.Min.Y+int(sy0)).RGBA() + s10r := float64(s10ru) + s10g := float64(s10gu) + s10b := float64(s10bu) + s10a := float64(s10au) + s10r = xFrac1*s00r + xFrac0*s10r + s10g = xFrac1*s00g + xFrac0*s10g + s10b = xFrac1*s00b + xFrac0*s10b + s10a = xFrac1*s00a + xFrac0*s10a + s01ru, s01gu, s01bu, s01au := src.At(sr.Min.X+int(sx0), sr.Min.Y+int(sy1)).RGBA() + s01r := float64(s01ru) + s01g := float64(s01gu) + s01b := float64(s01bu) + s01a := float64(s01au) + s11ru, s11gu, s11bu, s11au := src.At(sr.Min.X+int(sx1), sr.Min.Y+int(sy1)).RGBA() + s11r := float64(s11ru) + s11g := float64(s11gu) + s11b := float64(s11bu) + s11a := float64(s11au) + s11r = xFrac1*s01r + xFrac0*s11r + s11g = xFrac1*s01g + xFrac0*s11g + s11b = xFrac1*s01b + xFrac0*s11b + s11a = xFrac1*s01a + xFrac0*s11a + s11r = yFrac1*s10r + yFrac0*s11r + s11g = yFrac1*s10g + yFrac0*s11g + s11b = yFrac1*s10b + yFrac0*s11b + s11a = yFrac1*s10a + yFrac0*s11a + pr := uint32(s11r) + pg := uint32(s11g) + pb := uint32(s11b) + pa := uint32(s11a) + pa1 := (0xffff - pa) * 0x101 + dst.Pix[d+0] = uint8((uint32(dst.Pix[d+0])*pa1/0xffff + pr) >> 8) + dst.Pix[d+1] = uint8((uint32(dst.Pix[d+1])*pa1/0xffff + pg) >> 8) + dst.Pix[d+2] = uint8((uint32(dst.Pix[d+2])*pa1/0xffff + pb) >> 8) + dst.Pix[d+3] = uint8((uint32(dst.Pix[d+3])*pa1/0xffff + pa) >> 8) + } + } +} + +func (ablInterpolator) scale_RGBA_Image_Src(dst *image.RGBA, dr, adr image.Rectangle, src image.Image, sr image.Rectangle, opts *Options) { + sw := int32(sr.Dx()) + sh := int32(sr.Dy()) + yscale := float64(sh) / float64(dr.Dy()) + xscale := float64(sw) / float64(dr.Dx()) + swMinus1, shMinus1 := sw-1, sh-1 + + for dy := int32(adr.Min.Y); dy < int32(adr.Max.Y); dy++ { + sy := (float64(dy)+0.5)*yscale - 0.5 + // If sy < 0, we will clamp sy0 to 0 anyway, so it doesn't matter if + // we say int32(sy) instead of int32(math.Floor(sy)). Similarly for + // sx, below. + sy0 := int32(sy) + yFrac0 := sy - float64(sy0) + yFrac1 := 1 - yFrac0 + sy1 := sy0 + 1 + if sy < 0 { + sy0, sy1 = 0, 0 + yFrac0, yFrac1 = 0, 1 + } else if sy1 > shMinus1 { + sy0, sy1 = shMinus1, shMinus1 + yFrac0, yFrac1 = 1, 0 + } + d := (dr.Min.Y+int(dy)-dst.Rect.Min.Y)*dst.Stride + (dr.Min.X+adr.Min.X-dst.Rect.Min.X)*4 + + for dx := int32(adr.Min.X); dx < int32(adr.Max.X); dx, d = dx+1, d+4 { + sx := (float64(dx)+0.5)*xscale - 0.5 + sx0 := int32(sx) + xFrac0 := sx - float64(sx0) + xFrac1 := 1 - xFrac0 + sx1 := sx0 + 1 + if sx < 0 { + sx0, sx1 = 0, 0 + xFrac0, xFrac1 = 0, 1 + } else if sx1 > swMinus1 { + sx0, sx1 = swMinus1, swMinus1 + xFrac0, xFrac1 = 1, 0 + } + + s00ru, s00gu, s00bu, s00au := src.At(sr.Min.X+int(sx0), sr.Min.Y+int(sy0)).RGBA() + s00r := float64(s00ru) + s00g := float64(s00gu) + s00b := float64(s00bu) + s00a := float64(s00au) + s10ru, s10gu, s10bu, s10au := src.At(sr.Min.X+int(sx1), sr.Min.Y+int(sy0)).RGBA() + s10r := float64(s10ru) + s10g := float64(s10gu) + s10b := float64(s10bu) + s10a := float64(s10au) + s10r = xFrac1*s00r + xFrac0*s10r + s10g = xFrac1*s00g + xFrac0*s10g + s10b = xFrac1*s00b + xFrac0*s10b + s10a = xFrac1*s00a + xFrac0*s10a + s01ru, s01gu, s01bu, s01au := src.At(sr.Min.X+int(sx0), sr.Min.Y+int(sy1)).RGBA() + s01r := float64(s01ru) + s01g := float64(s01gu) + s01b := float64(s01bu) + s01a := float64(s01au) + s11ru, s11gu, s11bu, s11au := src.At(sr.Min.X+int(sx1), sr.Min.Y+int(sy1)).RGBA() + s11r := float64(s11ru) + s11g := float64(s11gu) + s11b := float64(s11bu) + s11a := float64(s11au) + s11r = xFrac1*s01r + xFrac0*s11r + s11g = xFrac1*s01g + xFrac0*s11g + s11b = xFrac1*s01b + xFrac0*s11b + s11a = xFrac1*s01a + xFrac0*s11a + s11r = yFrac1*s10r + yFrac0*s11r + s11g = yFrac1*s10g + yFrac0*s11g + s11b = yFrac1*s10b + yFrac0*s11b + s11a = yFrac1*s10a + yFrac0*s11a + pr := uint32(s11r) + pg := uint32(s11g) + pb := uint32(s11b) + pa := uint32(s11a) + dst.Pix[d+0] = uint8(pr >> 8) + dst.Pix[d+1] = uint8(pg >> 8) + dst.Pix[d+2] = uint8(pb >> 8) + dst.Pix[d+3] = uint8(pa >> 8) + } + } +} + +func (ablInterpolator) scale_Image_Image_Over(dst Image, dr, adr image.Rectangle, src image.Image, sr image.Rectangle, opts *Options) { + sw := int32(sr.Dx()) + sh := int32(sr.Dy()) + yscale := float64(sh) / float64(dr.Dy()) + xscale := float64(sw) / float64(dr.Dx()) + swMinus1, shMinus1 := sw-1, sh-1 + srcMask, smp := opts.SrcMask, opts.SrcMaskP + dstMask, dmp := opts.DstMask, opts.DstMaskP + dstColorRGBA64 := &color.RGBA64{} + dstColor := color.Color(dstColorRGBA64) + + for dy := int32(adr.Min.Y); dy < int32(adr.Max.Y); dy++ { + sy := (float64(dy)+0.5)*yscale - 0.5 + // If sy < 0, we will clamp sy0 to 0 anyway, so it doesn't matter if + // we say int32(sy) instead of int32(math.Floor(sy)). Similarly for + // sx, below. + sy0 := int32(sy) + yFrac0 := sy - float64(sy0) + yFrac1 := 1 - yFrac0 + sy1 := sy0 + 1 + if sy < 0 { + sy0, sy1 = 0, 0 + yFrac0, yFrac1 = 0, 1 + } else if sy1 > shMinus1 { + sy0, sy1 = shMinus1, shMinus1 + yFrac0, yFrac1 = 1, 0 + } + + for dx := int32(adr.Min.X); dx < int32(adr.Max.X); dx++ { + sx := (float64(dx)+0.5)*xscale - 0.5 + sx0 := int32(sx) + xFrac0 := sx - float64(sx0) + xFrac1 := 1 - xFrac0 + sx1 := sx0 + 1 + if sx < 0 { + sx0, sx1 = 0, 0 + xFrac0, xFrac1 = 0, 1 + } else if sx1 > swMinus1 { + sx0, sx1 = swMinus1, swMinus1 + xFrac0, xFrac1 = 1, 0 + } + + s00ru, s00gu, s00bu, s00au := src.At(sr.Min.X+int(sx0), sr.Min.Y+int(sy0)).RGBA() + if srcMask != nil { + _, _, _, ma := srcMask.At(smp.X+sr.Min.X+int(sx0), smp.Y+sr.Min.Y+int(sy0)).RGBA() + s00ru = s00ru * ma / 0xffff + s00gu = s00gu * ma / 0xffff + s00bu = s00bu * ma / 0xffff + s00au = s00au * ma / 0xffff + } + s00r := float64(s00ru) + s00g := float64(s00gu) + s00b := float64(s00bu) + s00a := float64(s00au) + s10ru, s10gu, s10bu, s10au := src.At(sr.Min.X+int(sx1), sr.Min.Y+int(sy0)).RGBA() + if srcMask != nil { + _, _, _, ma := srcMask.At(smp.X+sr.Min.X+int(sx1), smp.Y+sr.Min.Y+int(sy0)).RGBA() + s10ru = s10ru * ma / 0xffff + s10gu = s10gu * ma / 0xffff + s10bu = s10bu * ma / 0xffff + s10au = s10au * ma / 0xffff + } + s10r := float64(s10ru) + s10g := float64(s10gu) + s10b := float64(s10bu) + s10a := float64(s10au) + s10r = xFrac1*s00r + xFrac0*s10r + s10g = xFrac1*s00g + xFrac0*s10g + s10b = xFrac1*s00b + xFrac0*s10b + s10a = xFrac1*s00a + xFrac0*s10a + s01ru, s01gu, s01bu, s01au := src.At(sr.Min.X+int(sx0), sr.Min.Y+int(sy1)).RGBA() + if srcMask != nil { + _, _, _, ma := srcMask.At(smp.X+sr.Min.X+int(sx0), smp.Y+sr.Min.Y+int(sy1)).RGBA() + s01ru = s01ru * ma / 0xffff + s01gu = s01gu * ma / 0xffff + s01bu = s01bu * ma / 0xffff + s01au = s01au * ma / 0xffff + } + s01r := float64(s01ru) + s01g := float64(s01gu) + s01b := float64(s01bu) + s01a := float64(s01au) + s11ru, s11gu, s11bu, s11au := src.At(sr.Min.X+int(sx1), sr.Min.Y+int(sy1)).RGBA() + if srcMask != nil { + _, _, _, ma := srcMask.At(smp.X+sr.Min.X+int(sx1), smp.Y+sr.Min.Y+int(sy1)).RGBA() + s11ru = s11ru * ma / 0xffff + s11gu = s11gu * ma / 0xffff + s11bu = s11bu * ma / 0xffff + s11au = s11au * ma / 0xffff + } + s11r := float64(s11ru) + s11g := float64(s11gu) + s11b := float64(s11bu) + s11a := float64(s11au) + s11r = xFrac1*s01r + xFrac0*s11r + s11g = xFrac1*s01g + xFrac0*s11g + s11b = xFrac1*s01b + xFrac0*s11b + s11a = xFrac1*s01a + xFrac0*s11a + s11r = yFrac1*s10r + yFrac0*s11r + s11g = yFrac1*s10g + yFrac0*s11g + s11b = yFrac1*s10b + yFrac0*s11b + s11a = yFrac1*s10a + yFrac0*s11a + pr := uint32(s11r) + pg := uint32(s11g) + pb := uint32(s11b) + pa := uint32(s11a) + qr, qg, qb, qa := dst.At(dr.Min.X+int(dx), dr.Min.Y+int(dy)).RGBA() + if dstMask != nil { + _, _, _, ma := dstMask.At(dmp.X+dr.Min.X+int(dx), dmp.Y+dr.Min.Y+int(dy)).RGBA() + pr = pr * ma / 0xffff + pg = pg * ma / 0xffff + pb = pb * ma / 0xffff + pa = pa * ma / 0xffff + } + pa1 := 0xffff - pa + dstColorRGBA64.R = uint16(qr*pa1/0xffff + pr) + dstColorRGBA64.G = uint16(qg*pa1/0xffff + pg) + dstColorRGBA64.B = uint16(qb*pa1/0xffff + pb) + dstColorRGBA64.A = uint16(qa*pa1/0xffff + pa) + dst.Set(dr.Min.X+int(dx), dr.Min.Y+int(dy), dstColor) + } + } +} + +func (ablInterpolator) scale_Image_Image_Src(dst Image, dr, adr image.Rectangle, src image.Image, sr image.Rectangle, opts *Options) { + sw := int32(sr.Dx()) + sh := int32(sr.Dy()) + yscale := float64(sh) / float64(dr.Dy()) + xscale := float64(sw) / float64(dr.Dx()) + swMinus1, shMinus1 := sw-1, sh-1 + srcMask, smp := opts.SrcMask, opts.SrcMaskP + dstMask, dmp := opts.DstMask, opts.DstMaskP + dstColorRGBA64 := &color.RGBA64{} + dstColor := color.Color(dstColorRGBA64) + + for dy := int32(adr.Min.Y); dy < int32(adr.Max.Y); dy++ { + sy := (float64(dy)+0.5)*yscale - 0.5 + // If sy < 0, we will clamp sy0 to 0 anyway, so it doesn't matter if + // we say int32(sy) instead of int32(math.Floor(sy)). Similarly for + // sx, below. + sy0 := int32(sy) + yFrac0 := sy - float64(sy0) + yFrac1 := 1 - yFrac0 + sy1 := sy0 + 1 + if sy < 0 { + sy0, sy1 = 0, 0 + yFrac0, yFrac1 = 0, 1 + } else if sy1 > shMinus1 { + sy0, sy1 = shMinus1, shMinus1 + yFrac0, yFrac1 = 1, 0 + } + + for dx := int32(adr.Min.X); dx < int32(adr.Max.X); dx++ { + sx := (float64(dx)+0.5)*xscale - 0.5 + sx0 := int32(sx) + xFrac0 := sx - float64(sx0) + xFrac1 := 1 - xFrac0 + sx1 := sx0 + 1 + if sx < 0 { + sx0, sx1 = 0, 0 + xFrac0, xFrac1 = 0, 1 + } else if sx1 > swMinus1 { + sx0, sx1 = swMinus1, swMinus1 + xFrac0, xFrac1 = 1, 0 + } + + s00ru, s00gu, s00bu, s00au := src.At(sr.Min.X+int(sx0), sr.Min.Y+int(sy0)).RGBA() + if srcMask != nil { + _, _, _, ma := srcMask.At(smp.X+sr.Min.X+int(sx0), smp.Y+sr.Min.Y+int(sy0)).RGBA() + s00ru = s00ru * ma / 0xffff + s00gu = s00gu * ma / 0xffff + s00bu = s00bu * ma / 0xffff + s00au = s00au * ma / 0xffff + } + s00r := float64(s00ru) + s00g := float64(s00gu) + s00b := float64(s00bu) + s00a := float64(s00au) + s10ru, s10gu, s10bu, s10au := src.At(sr.Min.X+int(sx1), sr.Min.Y+int(sy0)).RGBA() + if srcMask != nil { + _, _, _, ma := srcMask.At(smp.X+sr.Min.X+int(sx1), smp.Y+sr.Min.Y+int(sy0)).RGBA() + s10ru = s10ru * ma / 0xffff + s10gu = s10gu * ma / 0xffff + s10bu = s10bu * ma / 0xffff + s10au = s10au * ma / 0xffff + } + s10r := float64(s10ru) + s10g := float64(s10gu) + s10b := float64(s10bu) + s10a := float64(s10au) + s10r = xFrac1*s00r + xFrac0*s10r + s10g = xFrac1*s00g + xFrac0*s10g + s10b = xFrac1*s00b + xFrac0*s10b + s10a = xFrac1*s00a + xFrac0*s10a + s01ru, s01gu, s01bu, s01au := src.At(sr.Min.X+int(sx0), sr.Min.Y+int(sy1)).RGBA() + if srcMask != nil { + _, _, _, ma := srcMask.At(smp.X+sr.Min.X+int(sx0), smp.Y+sr.Min.Y+int(sy1)).RGBA() + s01ru = s01ru * ma / 0xffff + s01gu = s01gu * ma / 0xffff + s01bu = s01bu * ma / 0xffff + s01au = s01au * ma / 0xffff + } + s01r := float64(s01ru) + s01g := float64(s01gu) + s01b := float64(s01bu) + s01a := float64(s01au) + s11ru, s11gu, s11bu, s11au := src.At(sr.Min.X+int(sx1), sr.Min.Y+int(sy1)).RGBA() + if srcMask != nil { + _, _, _, ma := srcMask.At(smp.X+sr.Min.X+int(sx1), smp.Y+sr.Min.Y+int(sy1)).RGBA() + s11ru = s11ru * ma / 0xffff + s11gu = s11gu * ma / 0xffff + s11bu = s11bu * ma / 0xffff + s11au = s11au * ma / 0xffff + } + s11r := float64(s11ru) + s11g := float64(s11gu) + s11b := float64(s11bu) + s11a := float64(s11au) + s11r = xFrac1*s01r + xFrac0*s11r + s11g = xFrac1*s01g + xFrac0*s11g + s11b = xFrac1*s01b + xFrac0*s11b + s11a = xFrac1*s01a + xFrac0*s11a + s11r = yFrac1*s10r + yFrac0*s11r + s11g = yFrac1*s10g + yFrac0*s11g + s11b = yFrac1*s10b + yFrac0*s11b + s11a = yFrac1*s10a + yFrac0*s11a + pr := uint32(s11r) + pg := uint32(s11g) + pb := uint32(s11b) + pa := uint32(s11a) + if dstMask != nil { + qr, qg, qb, qa := dst.At(dr.Min.X+int(dx), dr.Min.Y+int(dy)).RGBA() + _, _, _, ma := dstMask.At(dmp.X+dr.Min.X+int(dx), dmp.Y+dr.Min.Y+int(dy)).RGBA() + pr = pr * ma / 0xffff + pg = pg * ma / 0xffff + pb = pb * ma / 0xffff + pa = pa * ma / 0xffff + pa1 := 0xffff - ma + dstColorRGBA64.R = uint16(qr*pa1/0xffff + pr) + dstColorRGBA64.G = uint16(qg*pa1/0xffff + pg) + dstColorRGBA64.B = uint16(qb*pa1/0xffff + pb) + dstColorRGBA64.A = uint16(qa*pa1/0xffff + pa) + dst.Set(dr.Min.X+int(dx), dr.Min.Y+int(dy), dstColor) + } else { + dstColorRGBA64.R = uint16(pr) + dstColorRGBA64.G = uint16(pg) + dstColorRGBA64.B = uint16(pb) + dstColorRGBA64.A = uint16(pa) + dst.Set(dr.Min.X+int(dx), dr.Min.Y+int(dy), dstColor) + } + } + } +} + +func (ablInterpolator) transform_RGBA_Gray_Src(dst *image.RGBA, dr, adr image.Rectangle, d2s *f64.Aff3, src *image.Gray, sr image.Rectangle, bias image.Point, opts *Options) { + for dy := int32(adr.Min.Y); dy < int32(adr.Max.Y); dy++ { + dyf := float64(dr.Min.Y+int(dy)) + 0.5 + d := (dr.Min.Y+int(dy)-dst.Rect.Min.Y)*dst.Stride + (dr.Min.X+adr.Min.X-dst.Rect.Min.X)*4 + for dx := int32(adr.Min.X); dx < int32(adr.Max.X); dx, d = dx+1, d+4 { + dxf := float64(dr.Min.X+int(dx)) + 0.5 + sx := d2s[0]*dxf + d2s[1]*dyf + d2s[2] + sy := d2s[3]*dxf + d2s[4]*dyf + d2s[5] + if !(image.Point{int(sx) + bias.X, int(sy) + bias.Y}).In(sr) { + continue + } + + sx -= 0.5 + sx0 := int(sx) + xFrac0 := sx - float64(sx0) + xFrac1 := 1 - xFrac0 + sx0 += bias.X + sx1 := sx0 + 1 + if sx0 < sr.Min.X { + sx0, sx1 = sr.Min.X, sr.Min.X + xFrac0, xFrac1 = 0, 1 + } else if sx1 >= sr.Max.X { + sx0, sx1 = sr.Max.X-1, sr.Max.X-1 + xFrac0, xFrac1 = 1, 0 + } + + sy -= 0.5 + sy0 := int(sy) + yFrac0 := sy - float64(sy0) + yFrac1 := 1 - yFrac0 + sy0 += bias.Y + sy1 := sy0 + 1 + if sy0 < sr.Min.Y { + sy0, sy1 = sr.Min.Y, sr.Min.Y + yFrac0, yFrac1 = 0, 1 + } else if sy1 >= sr.Max.Y { + sy0, sy1 = sr.Max.Y-1, sr.Max.Y-1 + yFrac0, yFrac1 = 1, 0 + } + + s00i := (sy0-src.Rect.Min.Y)*src.Stride + (sx0 - src.Rect.Min.X) + s00ru := uint32(src.Pix[s00i]) * 0x101 + s00r := float64(s00ru) + s10i := (sy0-src.Rect.Min.Y)*src.Stride + (sx1 - src.Rect.Min.X) + s10ru := uint32(src.Pix[s10i]) * 0x101 + s10r := float64(s10ru) + s10r = xFrac1*s00r + xFrac0*s10r + s01i := (sy1-src.Rect.Min.Y)*src.Stride + (sx0 - src.Rect.Min.X) + s01ru := uint32(src.Pix[s01i]) * 0x101 + s01r := float64(s01ru) + s11i := (sy1-src.Rect.Min.Y)*src.Stride + (sx1 - src.Rect.Min.X) + s11ru := uint32(src.Pix[s11i]) * 0x101 + s11r := float64(s11ru) + s11r = xFrac1*s01r + xFrac0*s11r + s11r = yFrac1*s10r + yFrac0*s11r + pr := uint32(s11r) + out := uint8(pr >> 8) + dst.Pix[d+0] = out + dst.Pix[d+1] = out + dst.Pix[d+2] = out + dst.Pix[d+3] = 0xff + } + } +} + +func (ablInterpolator) transform_RGBA_NRGBA_Over(dst *image.RGBA, dr, adr image.Rectangle, d2s *f64.Aff3, src *image.NRGBA, sr image.Rectangle, bias image.Point, opts *Options) { + for dy := int32(adr.Min.Y); dy < int32(adr.Max.Y); dy++ { + dyf := float64(dr.Min.Y+int(dy)) + 0.5 + d := (dr.Min.Y+int(dy)-dst.Rect.Min.Y)*dst.Stride + (dr.Min.X+adr.Min.X-dst.Rect.Min.X)*4 + for dx := int32(adr.Min.X); dx < int32(adr.Max.X); dx, d = dx+1, d+4 { + dxf := float64(dr.Min.X+int(dx)) + 0.5 + sx := d2s[0]*dxf + d2s[1]*dyf + d2s[2] + sy := d2s[3]*dxf + d2s[4]*dyf + d2s[5] + if !(image.Point{int(sx) + bias.X, int(sy) + bias.Y}).In(sr) { + continue + } + + sx -= 0.5 + sx0 := int(sx) + xFrac0 := sx - float64(sx0) + xFrac1 := 1 - xFrac0 + sx0 += bias.X + sx1 := sx0 + 1 + if sx0 < sr.Min.X { + sx0, sx1 = sr.Min.X, sr.Min.X + xFrac0, xFrac1 = 0, 1 + } else if sx1 >= sr.Max.X { + sx0, sx1 = sr.Max.X-1, sr.Max.X-1 + xFrac0, xFrac1 = 1, 0 + } + + sy -= 0.5 + sy0 := int(sy) + yFrac0 := sy - float64(sy0) + yFrac1 := 1 - yFrac0 + sy0 += bias.Y + sy1 := sy0 + 1 + if sy0 < sr.Min.Y { + sy0, sy1 = sr.Min.Y, sr.Min.Y + yFrac0, yFrac1 = 0, 1 + } else if sy1 >= sr.Max.Y { + sy0, sy1 = sr.Max.Y-1, sr.Max.Y-1 + yFrac0, yFrac1 = 1, 0 + } + + s00i := (sy0-src.Rect.Min.Y)*src.Stride + (sx0-src.Rect.Min.X)*4 + s00au := uint32(src.Pix[s00i+3]) * 0x101 + s00ru := uint32(src.Pix[s00i+0]) * s00au / 0xff + s00gu := uint32(src.Pix[s00i+1]) * s00au / 0xff + s00bu := uint32(src.Pix[s00i+2]) * s00au / 0xff + s00r := float64(s00ru) + s00g := float64(s00gu) + s00b := float64(s00bu) + s00a := float64(s00au) + s10i := (sy0-src.Rect.Min.Y)*src.Stride + (sx1-src.Rect.Min.X)*4 + s10au := uint32(src.Pix[s10i+3]) * 0x101 + s10ru := uint32(src.Pix[s10i+0]) * s10au / 0xff + s10gu := uint32(src.Pix[s10i+1]) * s10au / 0xff + s10bu := uint32(src.Pix[s10i+2]) * s10au / 0xff + s10r := float64(s10ru) + s10g := float64(s10gu) + s10b := float64(s10bu) + s10a := float64(s10au) + s10r = xFrac1*s00r + xFrac0*s10r + s10g = xFrac1*s00g + xFrac0*s10g + s10b = xFrac1*s00b + xFrac0*s10b + s10a = xFrac1*s00a + xFrac0*s10a + s01i := (sy1-src.Rect.Min.Y)*src.Stride + (sx0-src.Rect.Min.X)*4 + s01au := uint32(src.Pix[s01i+3]) * 0x101 + s01ru := uint32(src.Pix[s01i+0]) * s01au / 0xff + s01gu := uint32(src.Pix[s01i+1]) * s01au / 0xff + s01bu := uint32(src.Pix[s01i+2]) * s01au / 0xff + s01r := float64(s01ru) + s01g := float64(s01gu) + s01b := float64(s01bu) + s01a := float64(s01au) + s11i := (sy1-src.Rect.Min.Y)*src.Stride + (sx1-src.Rect.Min.X)*4 + s11au := uint32(src.Pix[s11i+3]) * 0x101 + s11ru := uint32(src.Pix[s11i+0]) * s11au / 0xff + s11gu := uint32(src.Pix[s11i+1]) * s11au / 0xff + s11bu := uint32(src.Pix[s11i+2]) * s11au / 0xff + s11r := float64(s11ru) + s11g := float64(s11gu) + s11b := float64(s11bu) + s11a := float64(s11au) + s11r = xFrac1*s01r + xFrac0*s11r + s11g = xFrac1*s01g + xFrac0*s11g + s11b = xFrac1*s01b + xFrac0*s11b + s11a = xFrac1*s01a + xFrac0*s11a + s11r = yFrac1*s10r + yFrac0*s11r + s11g = yFrac1*s10g + yFrac0*s11g + s11b = yFrac1*s10b + yFrac0*s11b + s11a = yFrac1*s10a + yFrac0*s11a + pr := uint32(s11r) + pg := uint32(s11g) + pb := uint32(s11b) + pa := uint32(s11a) + pa1 := (0xffff - pa) * 0x101 + dst.Pix[d+0] = uint8((uint32(dst.Pix[d+0])*pa1/0xffff + pr) >> 8) + dst.Pix[d+1] = uint8((uint32(dst.Pix[d+1])*pa1/0xffff + pg) >> 8) + dst.Pix[d+2] = uint8((uint32(dst.Pix[d+2])*pa1/0xffff + pb) >> 8) + dst.Pix[d+3] = uint8((uint32(dst.Pix[d+3])*pa1/0xffff + pa) >> 8) + } + } +} + +func (ablInterpolator) transform_RGBA_NRGBA_Src(dst *image.RGBA, dr, adr image.Rectangle, d2s *f64.Aff3, src *image.NRGBA, sr image.Rectangle, bias image.Point, opts *Options) { + for dy := int32(adr.Min.Y); dy < int32(adr.Max.Y); dy++ { + dyf := float64(dr.Min.Y+int(dy)) + 0.5 + d := (dr.Min.Y+int(dy)-dst.Rect.Min.Y)*dst.Stride + (dr.Min.X+adr.Min.X-dst.Rect.Min.X)*4 + for dx := int32(adr.Min.X); dx < int32(adr.Max.X); dx, d = dx+1, d+4 { + dxf := float64(dr.Min.X+int(dx)) + 0.5 + sx := d2s[0]*dxf + d2s[1]*dyf + d2s[2] + sy := d2s[3]*dxf + d2s[4]*dyf + d2s[5] + if !(image.Point{int(sx) + bias.X, int(sy) + bias.Y}).In(sr) { + continue + } + + sx -= 0.5 + sx0 := int(sx) + xFrac0 := sx - float64(sx0) + xFrac1 := 1 - xFrac0 + sx0 += bias.X + sx1 := sx0 + 1 + if sx0 < sr.Min.X { + sx0, sx1 = sr.Min.X, sr.Min.X + xFrac0, xFrac1 = 0, 1 + } else if sx1 >= sr.Max.X { + sx0, sx1 = sr.Max.X-1, sr.Max.X-1 + xFrac0, xFrac1 = 1, 0 + } + + sy -= 0.5 + sy0 := int(sy) + yFrac0 := sy - float64(sy0) + yFrac1 := 1 - yFrac0 + sy0 += bias.Y + sy1 := sy0 + 1 + if sy0 < sr.Min.Y { + sy0, sy1 = sr.Min.Y, sr.Min.Y + yFrac0, yFrac1 = 0, 1 + } else if sy1 >= sr.Max.Y { + sy0, sy1 = sr.Max.Y-1, sr.Max.Y-1 + yFrac0, yFrac1 = 1, 0 + } + + s00i := (sy0-src.Rect.Min.Y)*src.Stride + (sx0-src.Rect.Min.X)*4 + s00au := uint32(src.Pix[s00i+3]) * 0x101 + s00ru := uint32(src.Pix[s00i+0]) * s00au / 0xff + s00gu := uint32(src.Pix[s00i+1]) * s00au / 0xff + s00bu := uint32(src.Pix[s00i+2]) * s00au / 0xff + s00r := float64(s00ru) + s00g := float64(s00gu) + s00b := float64(s00bu) + s00a := float64(s00au) + s10i := (sy0-src.Rect.Min.Y)*src.Stride + (sx1-src.Rect.Min.X)*4 + s10au := uint32(src.Pix[s10i+3]) * 0x101 + s10ru := uint32(src.Pix[s10i+0]) * s10au / 0xff + s10gu := uint32(src.Pix[s10i+1]) * s10au / 0xff + s10bu := uint32(src.Pix[s10i+2]) * s10au / 0xff + s10r := float64(s10ru) + s10g := float64(s10gu) + s10b := float64(s10bu) + s10a := float64(s10au) + s10r = xFrac1*s00r + xFrac0*s10r + s10g = xFrac1*s00g + xFrac0*s10g + s10b = xFrac1*s00b + xFrac0*s10b + s10a = xFrac1*s00a + xFrac0*s10a + s01i := (sy1-src.Rect.Min.Y)*src.Stride + (sx0-src.Rect.Min.X)*4 + s01au := uint32(src.Pix[s01i+3]) * 0x101 + s01ru := uint32(src.Pix[s01i+0]) * s01au / 0xff + s01gu := uint32(src.Pix[s01i+1]) * s01au / 0xff + s01bu := uint32(src.Pix[s01i+2]) * s01au / 0xff + s01r := float64(s01ru) + s01g := float64(s01gu) + s01b := float64(s01bu) + s01a := float64(s01au) + s11i := (sy1-src.Rect.Min.Y)*src.Stride + (sx1-src.Rect.Min.X)*4 + s11au := uint32(src.Pix[s11i+3]) * 0x101 + s11ru := uint32(src.Pix[s11i+0]) * s11au / 0xff + s11gu := uint32(src.Pix[s11i+1]) * s11au / 0xff + s11bu := uint32(src.Pix[s11i+2]) * s11au / 0xff + s11r := float64(s11ru) + s11g := float64(s11gu) + s11b := float64(s11bu) + s11a := float64(s11au) + s11r = xFrac1*s01r + xFrac0*s11r + s11g = xFrac1*s01g + xFrac0*s11g + s11b = xFrac1*s01b + xFrac0*s11b + s11a = xFrac1*s01a + xFrac0*s11a + s11r = yFrac1*s10r + yFrac0*s11r + s11g = yFrac1*s10g + yFrac0*s11g + s11b = yFrac1*s10b + yFrac0*s11b + s11a = yFrac1*s10a + yFrac0*s11a + pr := uint32(s11r) + pg := uint32(s11g) + pb := uint32(s11b) + pa := uint32(s11a) + dst.Pix[d+0] = uint8(pr >> 8) + dst.Pix[d+1] = uint8(pg >> 8) + dst.Pix[d+2] = uint8(pb >> 8) + dst.Pix[d+3] = uint8(pa >> 8) + } + } +} + +func (ablInterpolator) transform_RGBA_RGBA_Over(dst *image.RGBA, dr, adr image.Rectangle, d2s *f64.Aff3, src *image.RGBA, sr image.Rectangle, bias image.Point, opts *Options) { + for dy := int32(adr.Min.Y); dy < int32(adr.Max.Y); dy++ { + dyf := float64(dr.Min.Y+int(dy)) + 0.5 + d := (dr.Min.Y+int(dy)-dst.Rect.Min.Y)*dst.Stride + (dr.Min.X+adr.Min.X-dst.Rect.Min.X)*4 + for dx := int32(adr.Min.X); dx < int32(adr.Max.X); dx, d = dx+1, d+4 { + dxf := float64(dr.Min.X+int(dx)) + 0.5 + sx := d2s[0]*dxf + d2s[1]*dyf + d2s[2] + sy := d2s[3]*dxf + d2s[4]*dyf + d2s[5] + if !(image.Point{int(sx) + bias.X, int(sy) + bias.Y}).In(sr) { + continue + } + + sx -= 0.5 + sx0 := int(sx) + xFrac0 := sx - float64(sx0) + xFrac1 := 1 - xFrac0 + sx0 += bias.X + sx1 := sx0 + 1 + if sx0 < sr.Min.X { + sx0, sx1 = sr.Min.X, sr.Min.X + xFrac0, xFrac1 = 0, 1 + } else if sx1 >= sr.Max.X { + sx0, sx1 = sr.Max.X-1, sr.Max.X-1 + xFrac0, xFrac1 = 1, 0 + } + + sy -= 0.5 + sy0 := int(sy) + yFrac0 := sy - float64(sy0) + yFrac1 := 1 - yFrac0 + sy0 += bias.Y + sy1 := sy0 + 1 + if sy0 < sr.Min.Y { + sy0, sy1 = sr.Min.Y, sr.Min.Y + yFrac0, yFrac1 = 0, 1 + } else if sy1 >= sr.Max.Y { + sy0, sy1 = sr.Max.Y-1, sr.Max.Y-1 + yFrac0, yFrac1 = 1, 0 + } + + s00i := (sy0-src.Rect.Min.Y)*src.Stride + (sx0-src.Rect.Min.X)*4 + s00ru := uint32(src.Pix[s00i+0]) * 0x101 + s00gu := uint32(src.Pix[s00i+1]) * 0x101 + s00bu := uint32(src.Pix[s00i+2]) * 0x101 + s00au := uint32(src.Pix[s00i+3]) * 0x101 + s00r := float64(s00ru) + s00g := float64(s00gu) + s00b := float64(s00bu) + s00a := float64(s00au) + s10i := (sy0-src.Rect.Min.Y)*src.Stride + (sx1-src.Rect.Min.X)*4 + s10ru := uint32(src.Pix[s10i+0]) * 0x101 + s10gu := uint32(src.Pix[s10i+1]) * 0x101 + s10bu := uint32(src.Pix[s10i+2]) * 0x101 + s10au := uint32(src.Pix[s10i+3]) * 0x101 + s10r := float64(s10ru) + s10g := float64(s10gu) + s10b := float64(s10bu) + s10a := float64(s10au) + s10r = xFrac1*s00r + xFrac0*s10r + s10g = xFrac1*s00g + xFrac0*s10g + s10b = xFrac1*s00b + xFrac0*s10b + s10a = xFrac1*s00a + xFrac0*s10a + s01i := (sy1-src.Rect.Min.Y)*src.Stride + (sx0-src.Rect.Min.X)*4 + s01ru := uint32(src.Pix[s01i+0]) * 0x101 + s01gu := uint32(src.Pix[s01i+1]) * 0x101 + s01bu := uint32(src.Pix[s01i+2]) * 0x101 + s01au := uint32(src.Pix[s01i+3]) * 0x101 + s01r := float64(s01ru) + s01g := float64(s01gu) + s01b := float64(s01bu) + s01a := float64(s01au) + s11i := (sy1-src.Rect.Min.Y)*src.Stride + (sx1-src.Rect.Min.X)*4 + s11ru := uint32(src.Pix[s11i+0]) * 0x101 + s11gu := uint32(src.Pix[s11i+1]) * 0x101 + s11bu := uint32(src.Pix[s11i+2]) * 0x101 + s11au := uint32(src.Pix[s11i+3]) * 0x101 + s11r := float64(s11ru) + s11g := float64(s11gu) + s11b := float64(s11bu) + s11a := float64(s11au) + s11r = xFrac1*s01r + xFrac0*s11r + s11g = xFrac1*s01g + xFrac0*s11g + s11b = xFrac1*s01b + xFrac0*s11b + s11a = xFrac1*s01a + xFrac0*s11a + s11r = yFrac1*s10r + yFrac0*s11r + s11g = yFrac1*s10g + yFrac0*s11g + s11b = yFrac1*s10b + yFrac0*s11b + s11a = yFrac1*s10a + yFrac0*s11a + pr := uint32(s11r) + pg := uint32(s11g) + pb := uint32(s11b) + pa := uint32(s11a) + pa1 := (0xffff - pa) * 0x101 + dst.Pix[d+0] = uint8((uint32(dst.Pix[d+0])*pa1/0xffff + pr) >> 8) + dst.Pix[d+1] = uint8((uint32(dst.Pix[d+1])*pa1/0xffff + pg) >> 8) + dst.Pix[d+2] = uint8((uint32(dst.Pix[d+2])*pa1/0xffff + pb) >> 8) + dst.Pix[d+3] = uint8((uint32(dst.Pix[d+3])*pa1/0xffff + pa) >> 8) + } + } +} + +func (ablInterpolator) transform_RGBA_RGBA_Src(dst *image.RGBA, dr, adr image.Rectangle, d2s *f64.Aff3, src *image.RGBA, sr image.Rectangle, bias image.Point, opts *Options) { + for dy := int32(adr.Min.Y); dy < int32(adr.Max.Y); dy++ { + dyf := float64(dr.Min.Y+int(dy)) + 0.5 + d := (dr.Min.Y+int(dy)-dst.Rect.Min.Y)*dst.Stride + (dr.Min.X+adr.Min.X-dst.Rect.Min.X)*4 + for dx := int32(adr.Min.X); dx < int32(adr.Max.X); dx, d = dx+1, d+4 { + dxf := float64(dr.Min.X+int(dx)) + 0.5 + sx := d2s[0]*dxf + d2s[1]*dyf + d2s[2] + sy := d2s[3]*dxf + d2s[4]*dyf + d2s[5] + if !(image.Point{int(sx) + bias.X, int(sy) + bias.Y}).In(sr) { + continue + } + + sx -= 0.5 + sx0 := int(sx) + xFrac0 := sx - float64(sx0) + xFrac1 := 1 - xFrac0 + sx0 += bias.X + sx1 := sx0 + 1 + if sx0 < sr.Min.X { + sx0, sx1 = sr.Min.X, sr.Min.X + xFrac0, xFrac1 = 0, 1 + } else if sx1 >= sr.Max.X { + sx0, sx1 = sr.Max.X-1, sr.Max.X-1 + xFrac0, xFrac1 = 1, 0 + } + + sy -= 0.5 + sy0 := int(sy) + yFrac0 := sy - float64(sy0) + yFrac1 := 1 - yFrac0 + sy0 += bias.Y + sy1 := sy0 + 1 + if sy0 < sr.Min.Y { + sy0, sy1 = sr.Min.Y, sr.Min.Y + yFrac0, yFrac1 = 0, 1 + } else if sy1 >= sr.Max.Y { + sy0, sy1 = sr.Max.Y-1, sr.Max.Y-1 + yFrac0, yFrac1 = 1, 0 + } + + s00i := (sy0-src.Rect.Min.Y)*src.Stride + (sx0-src.Rect.Min.X)*4 + s00ru := uint32(src.Pix[s00i+0]) * 0x101 + s00gu := uint32(src.Pix[s00i+1]) * 0x101 + s00bu := uint32(src.Pix[s00i+2]) * 0x101 + s00au := uint32(src.Pix[s00i+3]) * 0x101 + s00r := float64(s00ru) + s00g := float64(s00gu) + s00b := float64(s00bu) + s00a := float64(s00au) + s10i := (sy0-src.Rect.Min.Y)*src.Stride + (sx1-src.Rect.Min.X)*4 + s10ru := uint32(src.Pix[s10i+0]) * 0x101 + s10gu := uint32(src.Pix[s10i+1]) * 0x101 + s10bu := uint32(src.Pix[s10i+2]) * 0x101 + s10au := uint32(src.Pix[s10i+3]) * 0x101 + s10r := float64(s10ru) + s10g := float64(s10gu) + s10b := float64(s10bu) + s10a := float64(s10au) + s10r = xFrac1*s00r + xFrac0*s10r + s10g = xFrac1*s00g + xFrac0*s10g + s10b = xFrac1*s00b + xFrac0*s10b + s10a = xFrac1*s00a + xFrac0*s10a + s01i := (sy1-src.Rect.Min.Y)*src.Stride + (sx0-src.Rect.Min.X)*4 + s01ru := uint32(src.Pix[s01i+0]) * 0x101 + s01gu := uint32(src.Pix[s01i+1]) * 0x101 + s01bu := uint32(src.Pix[s01i+2]) * 0x101 + s01au := uint32(src.Pix[s01i+3]) * 0x101 + s01r := float64(s01ru) + s01g := float64(s01gu) + s01b := float64(s01bu) + s01a := float64(s01au) + s11i := (sy1-src.Rect.Min.Y)*src.Stride + (sx1-src.Rect.Min.X)*4 + s11ru := uint32(src.Pix[s11i+0]) * 0x101 + s11gu := uint32(src.Pix[s11i+1]) * 0x101 + s11bu := uint32(src.Pix[s11i+2]) * 0x101 + s11au := uint32(src.Pix[s11i+3]) * 0x101 + s11r := float64(s11ru) + s11g := float64(s11gu) + s11b := float64(s11bu) + s11a := float64(s11au) + s11r = xFrac1*s01r + xFrac0*s11r + s11g = xFrac1*s01g + xFrac0*s11g + s11b = xFrac1*s01b + xFrac0*s11b + s11a = xFrac1*s01a + xFrac0*s11a + s11r = yFrac1*s10r + yFrac0*s11r + s11g = yFrac1*s10g + yFrac0*s11g + s11b = yFrac1*s10b + yFrac0*s11b + s11a = yFrac1*s10a + yFrac0*s11a + pr := uint32(s11r) + pg := uint32(s11g) + pb := uint32(s11b) + pa := uint32(s11a) + dst.Pix[d+0] = uint8(pr >> 8) + dst.Pix[d+1] = uint8(pg >> 8) + dst.Pix[d+2] = uint8(pb >> 8) + dst.Pix[d+3] = uint8(pa >> 8) + } + } +} + +func (ablInterpolator) transform_RGBA_YCbCr444_Src(dst *image.RGBA, dr, adr image.Rectangle, d2s *f64.Aff3, src *image.YCbCr, sr image.Rectangle, bias image.Point, opts *Options) { + for dy := int32(adr.Min.Y); dy < int32(adr.Max.Y); dy++ { + dyf := float64(dr.Min.Y+int(dy)) + 0.5 + d := (dr.Min.Y+int(dy)-dst.Rect.Min.Y)*dst.Stride + (dr.Min.X+adr.Min.X-dst.Rect.Min.X)*4 + for dx := int32(adr.Min.X); dx < int32(adr.Max.X); dx, d = dx+1, d+4 { + dxf := float64(dr.Min.X+int(dx)) + 0.5 + sx := d2s[0]*dxf + d2s[1]*dyf + d2s[2] + sy := d2s[3]*dxf + d2s[4]*dyf + d2s[5] + if !(image.Point{int(sx) + bias.X, int(sy) + bias.Y}).In(sr) { + continue + } + + sx -= 0.5 + sx0 := int(sx) + xFrac0 := sx - float64(sx0) + xFrac1 := 1 - xFrac0 + sx0 += bias.X + sx1 := sx0 + 1 + if sx0 < sr.Min.X { + sx0, sx1 = sr.Min.X, sr.Min.X + xFrac0, xFrac1 = 0, 1 + } else if sx1 >= sr.Max.X { + sx0, sx1 = sr.Max.X-1, sr.Max.X-1 + xFrac0, xFrac1 = 1, 0 + } + + sy -= 0.5 + sy0 := int(sy) + yFrac0 := sy - float64(sy0) + yFrac1 := 1 - yFrac0 + sy0 += bias.Y + sy1 := sy0 + 1 + if sy0 < sr.Min.Y { + sy0, sy1 = sr.Min.Y, sr.Min.Y + yFrac0, yFrac1 = 0, 1 + } else if sy1 >= sr.Max.Y { + sy0, sy1 = sr.Max.Y-1, sr.Max.Y-1 + yFrac0, yFrac1 = 1, 0 + } + + s00i := (sy0-src.Rect.Min.Y)*src.YStride + (sx0 - src.Rect.Min.X) + s00j := (sy0-src.Rect.Min.Y)*src.CStride + (sx0 - src.Rect.Min.X) + + // This is an inline version of image/color/ycbcr.go's YCbCr.RGBA method. + s00yy1 := int(src.Y[s00i]) * 0x10101 + s00cb1 := int(src.Cb[s00j]) - 128 + s00cr1 := int(src.Cr[s00j]) - 128 + s00ru := (s00yy1 + 91881*s00cr1) >> 8 + s00gu := (s00yy1 - 22554*s00cb1 - 46802*s00cr1) >> 8 + s00bu := (s00yy1 + 116130*s00cb1) >> 8 + if s00ru < 0 { + s00ru = 0 + } else if s00ru > 0xffff { + s00ru = 0xffff + } + if s00gu < 0 { + s00gu = 0 + } else if s00gu > 0xffff { + s00gu = 0xffff + } + if s00bu < 0 { + s00bu = 0 + } else if s00bu > 0xffff { + s00bu = 0xffff + } + + s00r := float64(s00ru) + s00g := float64(s00gu) + s00b := float64(s00bu) + s10i := (sy0-src.Rect.Min.Y)*src.YStride + (sx1 - src.Rect.Min.X) + s10j := (sy0-src.Rect.Min.Y)*src.CStride + (sx1 - src.Rect.Min.X) + + // This is an inline version of image/color/ycbcr.go's YCbCr.RGBA method. + s10yy1 := int(src.Y[s10i]) * 0x10101 + s10cb1 := int(src.Cb[s10j]) - 128 + s10cr1 := int(src.Cr[s10j]) - 128 + s10ru := (s10yy1 + 91881*s10cr1) >> 8 + s10gu := (s10yy1 - 22554*s10cb1 - 46802*s10cr1) >> 8 + s10bu := (s10yy1 + 116130*s10cb1) >> 8 + if s10ru < 0 { + s10ru = 0 + } else if s10ru > 0xffff { + s10ru = 0xffff + } + if s10gu < 0 { + s10gu = 0 + } else if s10gu > 0xffff { + s10gu = 0xffff + } + if s10bu < 0 { + s10bu = 0 + } else if s10bu > 0xffff { + s10bu = 0xffff + } + + s10r := float64(s10ru) + s10g := float64(s10gu) + s10b := float64(s10bu) + s10r = xFrac1*s00r + xFrac0*s10r + s10g = xFrac1*s00g + xFrac0*s10g + s10b = xFrac1*s00b + xFrac0*s10b + s01i := (sy1-src.Rect.Min.Y)*src.YStride + (sx0 - src.Rect.Min.X) + s01j := (sy1-src.Rect.Min.Y)*src.CStride + (sx0 - src.Rect.Min.X) + + // This is an inline version of image/color/ycbcr.go's YCbCr.RGBA method. + s01yy1 := int(src.Y[s01i]) * 0x10101 + s01cb1 := int(src.Cb[s01j]) - 128 + s01cr1 := int(src.Cr[s01j]) - 128 + s01ru := (s01yy1 + 91881*s01cr1) >> 8 + s01gu := (s01yy1 - 22554*s01cb1 - 46802*s01cr1) >> 8 + s01bu := (s01yy1 + 116130*s01cb1) >> 8 + if s01ru < 0 { + s01ru = 0 + } else if s01ru > 0xffff { + s01ru = 0xffff + } + if s01gu < 0 { + s01gu = 0 + } else if s01gu > 0xffff { + s01gu = 0xffff + } + if s01bu < 0 { + s01bu = 0 + } else if s01bu > 0xffff { + s01bu = 0xffff + } + + s01r := float64(s01ru) + s01g := float64(s01gu) + s01b := float64(s01bu) + s11i := (sy1-src.Rect.Min.Y)*src.YStride + (sx1 - src.Rect.Min.X) + s11j := (sy1-src.Rect.Min.Y)*src.CStride + (sx1 - src.Rect.Min.X) + + // This is an inline version of image/color/ycbcr.go's YCbCr.RGBA method. + s11yy1 := int(src.Y[s11i]) * 0x10101 + s11cb1 := int(src.Cb[s11j]) - 128 + s11cr1 := int(src.Cr[s11j]) - 128 + s11ru := (s11yy1 + 91881*s11cr1) >> 8 + s11gu := (s11yy1 - 22554*s11cb1 - 46802*s11cr1) >> 8 + s11bu := (s11yy1 + 116130*s11cb1) >> 8 + if s11ru < 0 { + s11ru = 0 + } else if s11ru > 0xffff { + s11ru = 0xffff + } + if s11gu < 0 { + s11gu = 0 + } else if s11gu > 0xffff { + s11gu = 0xffff + } + if s11bu < 0 { + s11bu = 0 + } else if s11bu > 0xffff { + s11bu = 0xffff + } + + s11r := float64(s11ru) + s11g := float64(s11gu) + s11b := float64(s11bu) + s11r = xFrac1*s01r + xFrac0*s11r + s11g = xFrac1*s01g + xFrac0*s11g + s11b = xFrac1*s01b + xFrac0*s11b + s11r = yFrac1*s10r + yFrac0*s11r + s11g = yFrac1*s10g + yFrac0*s11g + s11b = yFrac1*s10b + yFrac0*s11b + pr := uint32(s11r) + pg := uint32(s11g) + pb := uint32(s11b) + dst.Pix[d+0] = uint8(pr >> 8) + dst.Pix[d+1] = uint8(pg >> 8) + dst.Pix[d+2] = uint8(pb >> 8) + dst.Pix[d+3] = 0xff + } + } +} + +func (ablInterpolator) transform_RGBA_YCbCr422_Src(dst *image.RGBA, dr, adr image.Rectangle, d2s *f64.Aff3, src *image.YCbCr, sr image.Rectangle, bias image.Point, opts *Options) { + for dy := int32(adr.Min.Y); dy < int32(adr.Max.Y); dy++ { + dyf := float64(dr.Min.Y+int(dy)) + 0.5 + d := (dr.Min.Y+int(dy)-dst.Rect.Min.Y)*dst.Stride + (dr.Min.X+adr.Min.X-dst.Rect.Min.X)*4 + for dx := int32(adr.Min.X); dx < int32(adr.Max.X); dx, d = dx+1, d+4 { + dxf := float64(dr.Min.X+int(dx)) + 0.5 + sx := d2s[0]*dxf + d2s[1]*dyf + d2s[2] + sy := d2s[3]*dxf + d2s[4]*dyf + d2s[5] + if !(image.Point{int(sx) + bias.X, int(sy) + bias.Y}).In(sr) { + continue + } + + sx -= 0.5 + sx0 := int(sx) + xFrac0 := sx - float64(sx0) + xFrac1 := 1 - xFrac0 + sx0 += bias.X + sx1 := sx0 + 1 + if sx0 < sr.Min.X { + sx0, sx1 = sr.Min.X, sr.Min.X + xFrac0, xFrac1 = 0, 1 + } else if sx1 >= sr.Max.X { + sx0, sx1 = sr.Max.X-1, sr.Max.X-1 + xFrac0, xFrac1 = 1, 0 + } + + sy -= 0.5 + sy0 := int(sy) + yFrac0 := sy - float64(sy0) + yFrac1 := 1 - yFrac0 + sy0 += bias.Y + sy1 := sy0 + 1 + if sy0 < sr.Min.Y { + sy0, sy1 = sr.Min.Y, sr.Min.Y + yFrac0, yFrac1 = 0, 1 + } else if sy1 >= sr.Max.Y { + sy0, sy1 = sr.Max.Y-1, sr.Max.Y-1 + yFrac0, yFrac1 = 1, 0 + } + + s00i := (sy0-src.Rect.Min.Y)*src.YStride + (sx0 - src.Rect.Min.X) + s00j := (sy0-src.Rect.Min.Y)*src.CStride + ((sx0)/2 - src.Rect.Min.X/2) + + // This is an inline version of image/color/ycbcr.go's YCbCr.RGBA method. + s00yy1 := int(src.Y[s00i]) * 0x10101 + s00cb1 := int(src.Cb[s00j]) - 128 + s00cr1 := int(src.Cr[s00j]) - 128 + s00ru := (s00yy1 + 91881*s00cr1) >> 8 + s00gu := (s00yy1 - 22554*s00cb1 - 46802*s00cr1) >> 8 + s00bu := (s00yy1 + 116130*s00cb1) >> 8 + if s00ru < 0 { + s00ru = 0 + } else if s00ru > 0xffff { + s00ru = 0xffff + } + if s00gu < 0 { + s00gu = 0 + } else if s00gu > 0xffff { + s00gu = 0xffff + } + if s00bu < 0 { + s00bu = 0 + } else if s00bu > 0xffff { + s00bu = 0xffff + } + + s00r := float64(s00ru) + s00g := float64(s00gu) + s00b := float64(s00bu) + s10i := (sy0-src.Rect.Min.Y)*src.YStride + (sx1 - src.Rect.Min.X) + s10j := (sy0-src.Rect.Min.Y)*src.CStride + ((sx1)/2 - src.Rect.Min.X/2) + + // This is an inline version of image/color/ycbcr.go's YCbCr.RGBA method. + s10yy1 := int(src.Y[s10i]) * 0x10101 + s10cb1 := int(src.Cb[s10j]) - 128 + s10cr1 := int(src.Cr[s10j]) - 128 + s10ru := (s10yy1 + 91881*s10cr1) >> 8 + s10gu := (s10yy1 - 22554*s10cb1 - 46802*s10cr1) >> 8 + s10bu := (s10yy1 + 116130*s10cb1) >> 8 + if s10ru < 0 { + s10ru = 0 + } else if s10ru > 0xffff { + s10ru = 0xffff + } + if s10gu < 0 { + s10gu = 0 + } else if s10gu > 0xffff { + s10gu = 0xffff + } + if s10bu < 0 { + s10bu = 0 + } else if s10bu > 0xffff { + s10bu = 0xffff + } + + s10r := float64(s10ru) + s10g := float64(s10gu) + s10b := float64(s10bu) + s10r = xFrac1*s00r + xFrac0*s10r + s10g = xFrac1*s00g + xFrac0*s10g + s10b = xFrac1*s00b + xFrac0*s10b + s01i := (sy1-src.Rect.Min.Y)*src.YStride + (sx0 - src.Rect.Min.X) + s01j := (sy1-src.Rect.Min.Y)*src.CStride + ((sx0)/2 - src.Rect.Min.X/2) + + // This is an inline version of image/color/ycbcr.go's YCbCr.RGBA method. + s01yy1 := int(src.Y[s01i]) * 0x10101 + s01cb1 := int(src.Cb[s01j]) - 128 + s01cr1 := int(src.Cr[s01j]) - 128 + s01ru := (s01yy1 + 91881*s01cr1) >> 8 + s01gu := (s01yy1 - 22554*s01cb1 - 46802*s01cr1) >> 8 + s01bu := (s01yy1 + 116130*s01cb1) >> 8 + if s01ru < 0 { + s01ru = 0 + } else if s01ru > 0xffff { + s01ru = 0xffff + } + if s01gu < 0 { + s01gu = 0 + } else if s01gu > 0xffff { + s01gu = 0xffff + } + if s01bu < 0 { + s01bu = 0 + } else if s01bu > 0xffff { + s01bu = 0xffff + } + + s01r := float64(s01ru) + s01g := float64(s01gu) + s01b := float64(s01bu) + s11i := (sy1-src.Rect.Min.Y)*src.YStride + (sx1 - src.Rect.Min.X) + s11j := (sy1-src.Rect.Min.Y)*src.CStride + ((sx1)/2 - src.Rect.Min.X/2) + + // This is an inline version of image/color/ycbcr.go's YCbCr.RGBA method. + s11yy1 := int(src.Y[s11i]) * 0x10101 + s11cb1 := int(src.Cb[s11j]) - 128 + s11cr1 := int(src.Cr[s11j]) - 128 + s11ru := (s11yy1 + 91881*s11cr1) >> 8 + s11gu := (s11yy1 - 22554*s11cb1 - 46802*s11cr1) >> 8 + s11bu := (s11yy1 + 116130*s11cb1) >> 8 + if s11ru < 0 { + s11ru = 0 + } else if s11ru > 0xffff { + s11ru = 0xffff + } + if s11gu < 0 { + s11gu = 0 + } else if s11gu > 0xffff { + s11gu = 0xffff + } + if s11bu < 0 { + s11bu = 0 + } else if s11bu > 0xffff { + s11bu = 0xffff + } + + s11r := float64(s11ru) + s11g := float64(s11gu) + s11b := float64(s11bu) + s11r = xFrac1*s01r + xFrac0*s11r + s11g = xFrac1*s01g + xFrac0*s11g + s11b = xFrac1*s01b + xFrac0*s11b + s11r = yFrac1*s10r + yFrac0*s11r + s11g = yFrac1*s10g + yFrac0*s11g + s11b = yFrac1*s10b + yFrac0*s11b + pr := uint32(s11r) + pg := uint32(s11g) + pb := uint32(s11b) + dst.Pix[d+0] = uint8(pr >> 8) + dst.Pix[d+1] = uint8(pg >> 8) + dst.Pix[d+2] = uint8(pb >> 8) + dst.Pix[d+3] = 0xff + } + } +} + +func (ablInterpolator) transform_RGBA_YCbCr420_Src(dst *image.RGBA, dr, adr image.Rectangle, d2s *f64.Aff3, src *image.YCbCr, sr image.Rectangle, bias image.Point, opts *Options) { + for dy := int32(adr.Min.Y); dy < int32(adr.Max.Y); dy++ { + dyf := float64(dr.Min.Y+int(dy)) + 0.5 + d := (dr.Min.Y+int(dy)-dst.Rect.Min.Y)*dst.Stride + (dr.Min.X+adr.Min.X-dst.Rect.Min.X)*4 + for dx := int32(adr.Min.X); dx < int32(adr.Max.X); dx, d = dx+1, d+4 { + dxf := float64(dr.Min.X+int(dx)) + 0.5 + sx := d2s[0]*dxf + d2s[1]*dyf + d2s[2] + sy := d2s[3]*dxf + d2s[4]*dyf + d2s[5] + if !(image.Point{int(sx) + bias.X, int(sy) + bias.Y}).In(sr) { + continue + } + + sx -= 0.5 + sx0 := int(sx) + xFrac0 := sx - float64(sx0) + xFrac1 := 1 - xFrac0 + sx0 += bias.X + sx1 := sx0 + 1 + if sx0 < sr.Min.X { + sx0, sx1 = sr.Min.X, sr.Min.X + xFrac0, xFrac1 = 0, 1 + } else if sx1 >= sr.Max.X { + sx0, sx1 = sr.Max.X-1, sr.Max.X-1 + xFrac0, xFrac1 = 1, 0 + } + + sy -= 0.5 + sy0 := int(sy) + yFrac0 := sy - float64(sy0) + yFrac1 := 1 - yFrac0 + sy0 += bias.Y + sy1 := sy0 + 1 + if sy0 < sr.Min.Y { + sy0, sy1 = sr.Min.Y, sr.Min.Y + yFrac0, yFrac1 = 0, 1 + } else if sy1 >= sr.Max.Y { + sy0, sy1 = sr.Max.Y-1, sr.Max.Y-1 + yFrac0, yFrac1 = 1, 0 + } + + s00i := (sy0-src.Rect.Min.Y)*src.YStride + (sx0 - src.Rect.Min.X) + s00j := ((sy0)/2-src.Rect.Min.Y/2)*src.CStride + ((sx0)/2 - src.Rect.Min.X/2) + + // This is an inline version of image/color/ycbcr.go's YCbCr.RGBA method. + s00yy1 := int(src.Y[s00i]) * 0x10101 + s00cb1 := int(src.Cb[s00j]) - 128 + s00cr1 := int(src.Cr[s00j]) - 128 + s00ru := (s00yy1 + 91881*s00cr1) >> 8 + s00gu := (s00yy1 - 22554*s00cb1 - 46802*s00cr1) >> 8 + s00bu := (s00yy1 + 116130*s00cb1) >> 8 + if s00ru < 0 { + s00ru = 0 + } else if s00ru > 0xffff { + s00ru = 0xffff + } + if s00gu < 0 { + s00gu = 0 + } else if s00gu > 0xffff { + s00gu = 0xffff + } + if s00bu < 0 { + s00bu = 0 + } else if s00bu > 0xffff { + s00bu = 0xffff + } + + s00r := float64(s00ru) + s00g := float64(s00gu) + s00b := float64(s00bu) + s10i := (sy0-src.Rect.Min.Y)*src.YStride + (sx1 - src.Rect.Min.X) + s10j := ((sy0)/2-src.Rect.Min.Y/2)*src.CStride + ((sx1)/2 - src.Rect.Min.X/2) + + // This is an inline version of image/color/ycbcr.go's YCbCr.RGBA method. + s10yy1 := int(src.Y[s10i]) * 0x10101 + s10cb1 := int(src.Cb[s10j]) - 128 + s10cr1 := int(src.Cr[s10j]) - 128 + s10ru := (s10yy1 + 91881*s10cr1) >> 8 + s10gu := (s10yy1 - 22554*s10cb1 - 46802*s10cr1) >> 8 + s10bu := (s10yy1 + 116130*s10cb1) >> 8 + if s10ru < 0 { + s10ru = 0 + } else if s10ru > 0xffff { + s10ru = 0xffff + } + if s10gu < 0 { + s10gu = 0 + } else if s10gu > 0xffff { + s10gu = 0xffff + } + if s10bu < 0 { + s10bu = 0 + } else if s10bu > 0xffff { + s10bu = 0xffff + } + + s10r := float64(s10ru) + s10g := float64(s10gu) + s10b := float64(s10bu) + s10r = xFrac1*s00r + xFrac0*s10r + s10g = xFrac1*s00g + xFrac0*s10g + s10b = xFrac1*s00b + xFrac0*s10b + s01i := (sy1-src.Rect.Min.Y)*src.YStride + (sx0 - src.Rect.Min.X) + s01j := ((sy1)/2-src.Rect.Min.Y/2)*src.CStride + ((sx0)/2 - src.Rect.Min.X/2) + + // This is an inline version of image/color/ycbcr.go's YCbCr.RGBA method. + s01yy1 := int(src.Y[s01i]) * 0x10101 + s01cb1 := int(src.Cb[s01j]) - 128 + s01cr1 := int(src.Cr[s01j]) - 128 + s01ru := (s01yy1 + 91881*s01cr1) >> 8 + s01gu := (s01yy1 - 22554*s01cb1 - 46802*s01cr1) >> 8 + s01bu := (s01yy1 + 116130*s01cb1) >> 8 + if s01ru < 0 { + s01ru = 0 + } else if s01ru > 0xffff { + s01ru = 0xffff + } + if s01gu < 0 { + s01gu = 0 + } else if s01gu > 0xffff { + s01gu = 0xffff + } + if s01bu < 0 { + s01bu = 0 + } else if s01bu > 0xffff { + s01bu = 0xffff + } + + s01r := float64(s01ru) + s01g := float64(s01gu) + s01b := float64(s01bu) + s11i := (sy1-src.Rect.Min.Y)*src.YStride + (sx1 - src.Rect.Min.X) + s11j := ((sy1)/2-src.Rect.Min.Y/2)*src.CStride + ((sx1)/2 - src.Rect.Min.X/2) + + // This is an inline version of image/color/ycbcr.go's YCbCr.RGBA method. + s11yy1 := int(src.Y[s11i]) * 0x10101 + s11cb1 := int(src.Cb[s11j]) - 128 + s11cr1 := int(src.Cr[s11j]) - 128 + s11ru := (s11yy1 + 91881*s11cr1) >> 8 + s11gu := (s11yy1 - 22554*s11cb1 - 46802*s11cr1) >> 8 + s11bu := (s11yy1 + 116130*s11cb1) >> 8 + if s11ru < 0 { + s11ru = 0 + } else if s11ru > 0xffff { + s11ru = 0xffff + } + if s11gu < 0 { + s11gu = 0 + } else if s11gu > 0xffff { + s11gu = 0xffff + } + if s11bu < 0 { + s11bu = 0 + } else if s11bu > 0xffff { + s11bu = 0xffff + } + + s11r := float64(s11ru) + s11g := float64(s11gu) + s11b := float64(s11bu) + s11r = xFrac1*s01r + xFrac0*s11r + s11g = xFrac1*s01g + xFrac0*s11g + s11b = xFrac1*s01b + xFrac0*s11b + s11r = yFrac1*s10r + yFrac0*s11r + s11g = yFrac1*s10g + yFrac0*s11g + s11b = yFrac1*s10b + yFrac0*s11b + pr := uint32(s11r) + pg := uint32(s11g) + pb := uint32(s11b) + dst.Pix[d+0] = uint8(pr >> 8) + dst.Pix[d+1] = uint8(pg >> 8) + dst.Pix[d+2] = uint8(pb >> 8) + dst.Pix[d+3] = 0xff + } + } +} + +func (ablInterpolator) transform_RGBA_YCbCr440_Src(dst *image.RGBA, dr, adr image.Rectangle, d2s *f64.Aff3, src *image.YCbCr, sr image.Rectangle, bias image.Point, opts *Options) { + for dy := int32(adr.Min.Y); dy < int32(adr.Max.Y); dy++ { + dyf := float64(dr.Min.Y+int(dy)) + 0.5 + d := (dr.Min.Y+int(dy)-dst.Rect.Min.Y)*dst.Stride + (dr.Min.X+adr.Min.X-dst.Rect.Min.X)*4 + for dx := int32(adr.Min.X); dx < int32(adr.Max.X); dx, d = dx+1, d+4 { + dxf := float64(dr.Min.X+int(dx)) + 0.5 + sx := d2s[0]*dxf + d2s[1]*dyf + d2s[2] + sy := d2s[3]*dxf + d2s[4]*dyf + d2s[5] + if !(image.Point{int(sx) + bias.X, int(sy) + bias.Y}).In(sr) { + continue + } + + sx -= 0.5 + sx0 := int(sx) + xFrac0 := sx - float64(sx0) + xFrac1 := 1 - xFrac0 + sx0 += bias.X + sx1 := sx0 + 1 + if sx0 < sr.Min.X { + sx0, sx1 = sr.Min.X, sr.Min.X + xFrac0, xFrac1 = 0, 1 + } else if sx1 >= sr.Max.X { + sx0, sx1 = sr.Max.X-1, sr.Max.X-1 + xFrac0, xFrac1 = 1, 0 + } + + sy -= 0.5 + sy0 := int(sy) + yFrac0 := sy - float64(sy0) + yFrac1 := 1 - yFrac0 + sy0 += bias.Y + sy1 := sy0 + 1 + if sy0 < sr.Min.Y { + sy0, sy1 = sr.Min.Y, sr.Min.Y + yFrac0, yFrac1 = 0, 1 + } else if sy1 >= sr.Max.Y { + sy0, sy1 = sr.Max.Y-1, sr.Max.Y-1 + yFrac0, yFrac1 = 1, 0 + } + + s00i := (sy0-src.Rect.Min.Y)*src.YStride + (sx0 - src.Rect.Min.X) + s00j := ((sy0)/2-src.Rect.Min.Y/2)*src.CStride + (sx0 - src.Rect.Min.X) + + // This is an inline version of image/color/ycbcr.go's YCbCr.RGBA method. + s00yy1 := int(src.Y[s00i]) * 0x10101 + s00cb1 := int(src.Cb[s00j]) - 128 + s00cr1 := int(src.Cr[s00j]) - 128 + s00ru := (s00yy1 + 91881*s00cr1) >> 8 + s00gu := (s00yy1 - 22554*s00cb1 - 46802*s00cr1) >> 8 + s00bu := (s00yy1 + 116130*s00cb1) >> 8 + if s00ru < 0 { + s00ru = 0 + } else if s00ru > 0xffff { + s00ru = 0xffff + } + if s00gu < 0 { + s00gu = 0 + } else if s00gu > 0xffff { + s00gu = 0xffff + } + if s00bu < 0 { + s00bu = 0 + } else if s00bu > 0xffff { + s00bu = 0xffff + } + + s00r := float64(s00ru) + s00g := float64(s00gu) + s00b := float64(s00bu) + s10i := (sy0-src.Rect.Min.Y)*src.YStride + (sx1 - src.Rect.Min.X) + s10j := ((sy0)/2-src.Rect.Min.Y/2)*src.CStride + (sx1 - src.Rect.Min.X) + + // This is an inline version of image/color/ycbcr.go's YCbCr.RGBA method. + s10yy1 := int(src.Y[s10i]) * 0x10101 + s10cb1 := int(src.Cb[s10j]) - 128 + s10cr1 := int(src.Cr[s10j]) - 128 + s10ru := (s10yy1 + 91881*s10cr1) >> 8 + s10gu := (s10yy1 - 22554*s10cb1 - 46802*s10cr1) >> 8 + s10bu := (s10yy1 + 116130*s10cb1) >> 8 + if s10ru < 0 { + s10ru = 0 + } else if s10ru > 0xffff { + s10ru = 0xffff + } + if s10gu < 0 { + s10gu = 0 + } else if s10gu > 0xffff { + s10gu = 0xffff + } + if s10bu < 0 { + s10bu = 0 + } else if s10bu > 0xffff { + s10bu = 0xffff + } + + s10r := float64(s10ru) + s10g := float64(s10gu) + s10b := float64(s10bu) + s10r = xFrac1*s00r + xFrac0*s10r + s10g = xFrac1*s00g + xFrac0*s10g + s10b = xFrac1*s00b + xFrac0*s10b + s01i := (sy1-src.Rect.Min.Y)*src.YStride + (sx0 - src.Rect.Min.X) + s01j := ((sy1)/2-src.Rect.Min.Y/2)*src.CStride + (sx0 - src.Rect.Min.X) + + // This is an inline version of image/color/ycbcr.go's YCbCr.RGBA method. + s01yy1 := int(src.Y[s01i]) * 0x10101 + s01cb1 := int(src.Cb[s01j]) - 128 + s01cr1 := int(src.Cr[s01j]) - 128 + s01ru := (s01yy1 + 91881*s01cr1) >> 8 + s01gu := (s01yy1 - 22554*s01cb1 - 46802*s01cr1) >> 8 + s01bu := (s01yy1 + 116130*s01cb1) >> 8 + if s01ru < 0 { + s01ru = 0 + } else if s01ru > 0xffff { + s01ru = 0xffff + } + if s01gu < 0 { + s01gu = 0 + } else if s01gu > 0xffff { + s01gu = 0xffff + } + if s01bu < 0 { + s01bu = 0 + } else if s01bu > 0xffff { + s01bu = 0xffff + } + + s01r := float64(s01ru) + s01g := float64(s01gu) + s01b := float64(s01bu) + s11i := (sy1-src.Rect.Min.Y)*src.YStride + (sx1 - src.Rect.Min.X) + s11j := ((sy1)/2-src.Rect.Min.Y/2)*src.CStride + (sx1 - src.Rect.Min.X) + + // This is an inline version of image/color/ycbcr.go's YCbCr.RGBA method. + s11yy1 := int(src.Y[s11i]) * 0x10101 + s11cb1 := int(src.Cb[s11j]) - 128 + s11cr1 := int(src.Cr[s11j]) - 128 + s11ru := (s11yy1 + 91881*s11cr1) >> 8 + s11gu := (s11yy1 - 22554*s11cb1 - 46802*s11cr1) >> 8 + s11bu := (s11yy1 + 116130*s11cb1) >> 8 + if s11ru < 0 { + s11ru = 0 + } else if s11ru > 0xffff { + s11ru = 0xffff + } + if s11gu < 0 { + s11gu = 0 + } else if s11gu > 0xffff { + s11gu = 0xffff + } + if s11bu < 0 { + s11bu = 0 + } else if s11bu > 0xffff { + s11bu = 0xffff + } + + s11r := float64(s11ru) + s11g := float64(s11gu) + s11b := float64(s11bu) + s11r = xFrac1*s01r + xFrac0*s11r + s11g = xFrac1*s01g + xFrac0*s11g + s11b = xFrac1*s01b + xFrac0*s11b + s11r = yFrac1*s10r + yFrac0*s11r + s11g = yFrac1*s10g + yFrac0*s11g + s11b = yFrac1*s10b + yFrac0*s11b + pr := uint32(s11r) + pg := uint32(s11g) + pb := uint32(s11b) + dst.Pix[d+0] = uint8(pr >> 8) + dst.Pix[d+1] = uint8(pg >> 8) + dst.Pix[d+2] = uint8(pb >> 8) + dst.Pix[d+3] = 0xff + } + } +} + +func (ablInterpolator) transform_RGBA_Image_Over(dst *image.RGBA, dr, adr image.Rectangle, d2s *f64.Aff3, src image.Image, sr image.Rectangle, bias image.Point, opts *Options) { + for dy := int32(adr.Min.Y); dy < int32(adr.Max.Y); dy++ { + dyf := float64(dr.Min.Y+int(dy)) + 0.5 + d := (dr.Min.Y+int(dy)-dst.Rect.Min.Y)*dst.Stride + (dr.Min.X+adr.Min.X-dst.Rect.Min.X)*4 + for dx := int32(adr.Min.X); dx < int32(adr.Max.X); dx, d = dx+1, d+4 { + dxf := float64(dr.Min.X+int(dx)) + 0.5 + sx := d2s[0]*dxf + d2s[1]*dyf + d2s[2] + sy := d2s[3]*dxf + d2s[4]*dyf + d2s[5] + if !(image.Point{int(sx) + bias.X, int(sy) + bias.Y}).In(sr) { + continue + } + + sx -= 0.5 + sx0 := int(sx) + xFrac0 := sx - float64(sx0) + xFrac1 := 1 - xFrac0 + sx0 += bias.X + sx1 := sx0 + 1 + if sx0 < sr.Min.X { + sx0, sx1 = sr.Min.X, sr.Min.X + xFrac0, xFrac1 = 0, 1 + } else if sx1 >= sr.Max.X { + sx0, sx1 = sr.Max.X-1, sr.Max.X-1 + xFrac0, xFrac1 = 1, 0 + } + + sy -= 0.5 + sy0 := int(sy) + yFrac0 := sy - float64(sy0) + yFrac1 := 1 - yFrac0 + sy0 += bias.Y + sy1 := sy0 + 1 + if sy0 < sr.Min.Y { + sy0, sy1 = sr.Min.Y, sr.Min.Y + yFrac0, yFrac1 = 0, 1 + } else if sy1 >= sr.Max.Y { + sy0, sy1 = sr.Max.Y-1, sr.Max.Y-1 + yFrac0, yFrac1 = 1, 0 + } + + s00ru, s00gu, s00bu, s00au := src.At(sx0, sy0).RGBA() + s00r := float64(s00ru) + s00g := float64(s00gu) + s00b := float64(s00bu) + s00a := float64(s00au) + s10ru, s10gu, s10bu, s10au := src.At(sx1, sy0).RGBA() + s10r := float64(s10ru) + s10g := float64(s10gu) + s10b := float64(s10bu) + s10a := float64(s10au) + s10r = xFrac1*s00r + xFrac0*s10r + s10g = xFrac1*s00g + xFrac0*s10g + s10b = xFrac1*s00b + xFrac0*s10b + s10a = xFrac1*s00a + xFrac0*s10a + s01ru, s01gu, s01bu, s01au := src.At(sx0, sy1).RGBA() + s01r := float64(s01ru) + s01g := float64(s01gu) + s01b := float64(s01bu) + s01a := float64(s01au) + s11ru, s11gu, s11bu, s11au := src.At(sx1, sy1).RGBA() + s11r := float64(s11ru) + s11g := float64(s11gu) + s11b := float64(s11bu) + s11a := float64(s11au) + s11r = xFrac1*s01r + xFrac0*s11r + s11g = xFrac1*s01g + xFrac0*s11g + s11b = xFrac1*s01b + xFrac0*s11b + s11a = xFrac1*s01a + xFrac0*s11a + s11r = yFrac1*s10r + yFrac0*s11r + s11g = yFrac1*s10g + yFrac0*s11g + s11b = yFrac1*s10b + yFrac0*s11b + s11a = yFrac1*s10a + yFrac0*s11a + pr := uint32(s11r) + pg := uint32(s11g) + pb := uint32(s11b) + pa := uint32(s11a) + pa1 := (0xffff - pa) * 0x101 + dst.Pix[d+0] = uint8((uint32(dst.Pix[d+0])*pa1/0xffff + pr) >> 8) + dst.Pix[d+1] = uint8((uint32(dst.Pix[d+1])*pa1/0xffff + pg) >> 8) + dst.Pix[d+2] = uint8((uint32(dst.Pix[d+2])*pa1/0xffff + pb) >> 8) + dst.Pix[d+3] = uint8((uint32(dst.Pix[d+3])*pa1/0xffff + pa) >> 8) + } + } +} + +func (ablInterpolator) transform_RGBA_Image_Src(dst *image.RGBA, dr, adr image.Rectangle, d2s *f64.Aff3, src image.Image, sr image.Rectangle, bias image.Point, opts *Options) { + for dy := int32(adr.Min.Y); dy < int32(adr.Max.Y); dy++ { + dyf := float64(dr.Min.Y+int(dy)) + 0.5 + d := (dr.Min.Y+int(dy)-dst.Rect.Min.Y)*dst.Stride + (dr.Min.X+adr.Min.X-dst.Rect.Min.X)*4 + for dx := int32(adr.Min.X); dx < int32(adr.Max.X); dx, d = dx+1, d+4 { + dxf := float64(dr.Min.X+int(dx)) + 0.5 + sx := d2s[0]*dxf + d2s[1]*dyf + d2s[2] + sy := d2s[3]*dxf + d2s[4]*dyf + d2s[5] + if !(image.Point{int(sx) + bias.X, int(sy) + bias.Y}).In(sr) { + continue + } + + sx -= 0.5 + sx0 := int(sx) + xFrac0 := sx - float64(sx0) + xFrac1 := 1 - xFrac0 + sx0 += bias.X + sx1 := sx0 + 1 + if sx0 < sr.Min.X { + sx0, sx1 = sr.Min.X, sr.Min.X + xFrac0, xFrac1 = 0, 1 + } else if sx1 >= sr.Max.X { + sx0, sx1 = sr.Max.X-1, sr.Max.X-1 + xFrac0, xFrac1 = 1, 0 + } + + sy -= 0.5 + sy0 := int(sy) + yFrac0 := sy - float64(sy0) + yFrac1 := 1 - yFrac0 + sy0 += bias.Y + sy1 := sy0 + 1 + if sy0 < sr.Min.Y { + sy0, sy1 = sr.Min.Y, sr.Min.Y + yFrac0, yFrac1 = 0, 1 + } else if sy1 >= sr.Max.Y { + sy0, sy1 = sr.Max.Y-1, sr.Max.Y-1 + yFrac0, yFrac1 = 1, 0 + } + + s00ru, s00gu, s00bu, s00au := src.At(sx0, sy0).RGBA() + s00r := float64(s00ru) + s00g := float64(s00gu) + s00b := float64(s00bu) + s00a := float64(s00au) + s10ru, s10gu, s10bu, s10au := src.At(sx1, sy0).RGBA() + s10r := float64(s10ru) + s10g := float64(s10gu) + s10b := float64(s10bu) + s10a := float64(s10au) + s10r = xFrac1*s00r + xFrac0*s10r + s10g = xFrac1*s00g + xFrac0*s10g + s10b = xFrac1*s00b + xFrac0*s10b + s10a = xFrac1*s00a + xFrac0*s10a + s01ru, s01gu, s01bu, s01au := src.At(sx0, sy1).RGBA() + s01r := float64(s01ru) + s01g := float64(s01gu) + s01b := float64(s01bu) + s01a := float64(s01au) + s11ru, s11gu, s11bu, s11au := src.At(sx1, sy1).RGBA() + s11r := float64(s11ru) + s11g := float64(s11gu) + s11b := float64(s11bu) + s11a := float64(s11au) + s11r = xFrac1*s01r + xFrac0*s11r + s11g = xFrac1*s01g + xFrac0*s11g + s11b = xFrac1*s01b + xFrac0*s11b + s11a = xFrac1*s01a + xFrac0*s11a + s11r = yFrac1*s10r + yFrac0*s11r + s11g = yFrac1*s10g + yFrac0*s11g + s11b = yFrac1*s10b + yFrac0*s11b + s11a = yFrac1*s10a + yFrac0*s11a + pr := uint32(s11r) + pg := uint32(s11g) + pb := uint32(s11b) + pa := uint32(s11a) + dst.Pix[d+0] = uint8(pr >> 8) + dst.Pix[d+1] = uint8(pg >> 8) + dst.Pix[d+2] = uint8(pb >> 8) + dst.Pix[d+3] = uint8(pa >> 8) + } + } +} + +func (ablInterpolator) transform_Image_Image_Over(dst Image, dr, adr image.Rectangle, d2s *f64.Aff3, src image.Image, sr image.Rectangle, bias image.Point, opts *Options) { + srcMask, smp := opts.SrcMask, opts.SrcMaskP + dstMask, dmp := opts.DstMask, opts.DstMaskP + dstColorRGBA64 := &color.RGBA64{} + dstColor := color.Color(dstColorRGBA64) + for dy := int32(adr.Min.Y); dy < int32(adr.Max.Y); dy++ { + dyf := float64(dr.Min.Y+int(dy)) + 0.5 + for dx := int32(adr.Min.X); dx < int32(adr.Max.X); dx++ { + dxf := float64(dr.Min.X+int(dx)) + 0.5 + sx := d2s[0]*dxf + d2s[1]*dyf + d2s[2] + sy := d2s[3]*dxf + d2s[4]*dyf + d2s[5] + if !(image.Point{int(sx) + bias.X, int(sy) + bias.Y}).In(sr) { + continue + } + + sx -= 0.5 + sx0 := int(sx) + xFrac0 := sx - float64(sx0) + xFrac1 := 1 - xFrac0 + sx0 += bias.X + sx1 := sx0 + 1 + if sx0 < sr.Min.X { + sx0, sx1 = sr.Min.X, sr.Min.X + xFrac0, xFrac1 = 0, 1 + } else if sx1 >= sr.Max.X { + sx0, sx1 = sr.Max.X-1, sr.Max.X-1 + xFrac0, xFrac1 = 1, 0 + } + + sy -= 0.5 + sy0 := int(sy) + yFrac0 := sy - float64(sy0) + yFrac1 := 1 - yFrac0 + sy0 += bias.Y + sy1 := sy0 + 1 + if sy0 < sr.Min.Y { + sy0, sy1 = sr.Min.Y, sr.Min.Y + yFrac0, yFrac1 = 0, 1 + } else if sy1 >= sr.Max.Y { + sy0, sy1 = sr.Max.Y-1, sr.Max.Y-1 + yFrac0, yFrac1 = 1, 0 + } + + s00ru, s00gu, s00bu, s00au := src.At(sx0, sy0).RGBA() + if srcMask != nil { + _, _, _, ma := srcMask.At(smp.X+sx0, smp.Y+sy0).RGBA() + s00ru = s00ru * ma / 0xffff + s00gu = s00gu * ma / 0xffff + s00bu = s00bu * ma / 0xffff + s00au = s00au * ma / 0xffff + } + s00r := float64(s00ru) + s00g := float64(s00gu) + s00b := float64(s00bu) + s00a := float64(s00au) + s10ru, s10gu, s10bu, s10au := src.At(sx1, sy0).RGBA() + if srcMask != nil { + _, _, _, ma := srcMask.At(smp.X+sx1, smp.Y+sy0).RGBA() + s10ru = s10ru * ma / 0xffff + s10gu = s10gu * ma / 0xffff + s10bu = s10bu * ma / 0xffff + s10au = s10au * ma / 0xffff + } + s10r := float64(s10ru) + s10g := float64(s10gu) + s10b := float64(s10bu) + s10a := float64(s10au) + s10r = xFrac1*s00r + xFrac0*s10r + s10g = xFrac1*s00g + xFrac0*s10g + s10b = xFrac1*s00b + xFrac0*s10b + s10a = xFrac1*s00a + xFrac0*s10a + s01ru, s01gu, s01bu, s01au := src.At(sx0, sy1).RGBA() + if srcMask != nil { + _, _, _, ma := srcMask.At(smp.X+sx0, smp.Y+sy1).RGBA() + s01ru = s01ru * ma / 0xffff + s01gu = s01gu * ma / 0xffff + s01bu = s01bu * ma / 0xffff + s01au = s01au * ma / 0xffff + } + s01r := float64(s01ru) + s01g := float64(s01gu) + s01b := float64(s01bu) + s01a := float64(s01au) + s11ru, s11gu, s11bu, s11au := src.At(sx1, sy1).RGBA() + if srcMask != nil { + _, _, _, ma := srcMask.At(smp.X+sx1, smp.Y+sy1).RGBA() + s11ru = s11ru * ma / 0xffff + s11gu = s11gu * ma / 0xffff + s11bu = s11bu * ma / 0xffff + s11au = s11au * ma / 0xffff + } + s11r := float64(s11ru) + s11g := float64(s11gu) + s11b := float64(s11bu) + s11a := float64(s11au) + s11r = xFrac1*s01r + xFrac0*s11r + s11g = xFrac1*s01g + xFrac0*s11g + s11b = xFrac1*s01b + xFrac0*s11b + s11a = xFrac1*s01a + xFrac0*s11a + s11r = yFrac1*s10r + yFrac0*s11r + s11g = yFrac1*s10g + yFrac0*s11g + s11b = yFrac1*s10b + yFrac0*s11b + s11a = yFrac1*s10a + yFrac0*s11a + pr := uint32(s11r) + pg := uint32(s11g) + pb := uint32(s11b) + pa := uint32(s11a) + qr, qg, qb, qa := dst.At(dr.Min.X+int(dx), dr.Min.Y+int(dy)).RGBA() + if dstMask != nil { + _, _, _, ma := dstMask.At(dmp.X+dr.Min.X+int(dx), dmp.Y+dr.Min.Y+int(dy)).RGBA() + pr = pr * ma / 0xffff + pg = pg * ma / 0xffff + pb = pb * ma / 0xffff + pa = pa * ma / 0xffff + } + pa1 := 0xffff - pa + dstColorRGBA64.R = uint16(qr*pa1/0xffff + pr) + dstColorRGBA64.G = uint16(qg*pa1/0xffff + pg) + dstColorRGBA64.B = uint16(qb*pa1/0xffff + pb) + dstColorRGBA64.A = uint16(qa*pa1/0xffff + pa) + dst.Set(dr.Min.X+int(dx), dr.Min.Y+int(dy), dstColor) + } + } +} + +func (ablInterpolator) transform_Image_Image_Src(dst Image, dr, adr image.Rectangle, d2s *f64.Aff3, src image.Image, sr image.Rectangle, bias image.Point, opts *Options) { + srcMask, smp := opts.SrcMask, opts.SrcMaskP + dstMask, dmp := opts.DstMask, opts.DstMaskP + dstColorRGBA64 := &color.RGBA64{} + dstColor := color.Color(dstColorRGBA64) + for dy := int32(adr.Min.Y); dy < int32(adr.Max.Y); dy++ { + dyf := float64(dr.Min.Y+int(dy)) + 0.5 + for dx := int32(adr.Min.X); dx < int32(adr.Max.X); dx++ { + dxf := float64(dr.Min.X+int(dx)) + 0.5 + sx := d2s[0]*dxf + d2s[1]*dyf + d2s[2] + sy := d2s[3]*dxf + d2s[4]*dyf + d2s[5] + if !(image.Point{int(sx) + bias.X, int(sy) + bias.Y}).In(sr) { + continue + } + + sx -= 0.5 + sx0 := int(sx) + xFrac0 := sx - float64(sx0) + xFrac1 := 1 - xFrac0 + sx0 += bias.X + sx1 := sx0 + 1 + if sx0 < sr.Min.X { + sx0, sx1 = sr.Min.X, sr.Min.X + xFrac0, xFrac1 = 0, 1 + } else if sx1 >= sr.Max.X { + sx0, sx1 = sr.Max.X-1, sr.Max.X-1 + xFrac0, xFrac1 = 1, 0 + } + + sy -= 0.5 + sy0 := int(sy) + yFrac0 := sy - float64(sy0) + yFrac1 := 1 - yFrac0 + sy0 += bias.Y + sy1 := sy0 + 1 + if sy0 < sr.Min.Y { + sy0, sy1 = sr.Min.Y, sr.Min.Y + yFrac0, yFrac1 = 0, 1 + } else if sy1 >= sr.Max.Y { + sy0, sy1 = sr.Max.Y-1, sr.Max.Y-1 + yFrac0, yFrac1 = 1, 0 + } + + s00ru, s00gu, s00bu, s00au := src.At(sx0, sy0).RGBA() + if srcMask != nil { + _, _, _, ma := srcMask.At(smp.X+sx0, smp.Y+sy0).RGBA() + s00ru = s00ru * ma / 0xffff + s00gu = s00gu * ma / 0xffff + s00bu = s00bu * ma / 0xffff + s00au = s00au * ma / 0xffff + } + s00r := float64(s00ru) + s00g := float64(s00gu) + s00b := float64(s00bu) + s00a := float64(s00au) + s10ru, s10gu, s10bu, s10au := src.At(sx1, sy0).RGBA() + if srcMask != nil { + _, _, _, ma := srcMask.At(smp.X+sx1, smp.Y+sy0).RGBA() + s10ru = s10ru * ma / 0xffff + s10gu = s10gu * ma / 0xffff + s10bu = s10bu * ma / 0xffff + s10au = s10au * ma / 0xffff + } + s10r := float64(s10ru) + s10g := float64(s10gu) + s10b := float64(s10bu) + s10a := float64(s10au) + s10r = xFrac1*s00r + xFrac0*s10r + s10g = xFrac1*s00g + xFrac0*s10g + s10b = xFrac1*s00b + xFrac0*s10b + s10a = xFrac1*s00a + xFrac0*s10a + s01ru, s01gu, s01bu, s01au := src.At(sx0, sy1).RGBA() + if srcMask != nil { + _, _, _, ma := srcMask.At(smp.X+sx0, smp.Y+sy1).RGBA() + s01ru = s01ru * ma / 0xffff + s01gu = s01gu * ma / 0xffff + s01bu = s01bu * ma / 0xffff + s01au = s01au * ma / 0xffff + } + s01r := float64(s01ru) + s01g := float64(s01gu) + s01b := float64(s01bu) + s01a := float64(s01au) + s11ru, s11gu, s11bu, s11au := src.At(sx1, sy1).RGBA() + if srcMask != nil { + _, _, _, ma := srcMask.At(smp.X+sx1, smp.Y+sy1).RGBA() + s11ru = s11ru * ma / 0xffff + s11gu = s11gu * ma / 0xffff + s11bu = s11bu * ma / 0xffff + s11au = s11au * ma / 0xffff + } + s11r := float64(s11ru) + s11g := float64(s11gu) + s11b := float64(s11bu) + s11a := float64(s11au) + s11r = xFrac1*s01r + xFrac0*s11r + s11g = xFrac1*s01g + xFrac0*s11g + s11b = xFrac1*s01b + xFrac0*s11b + s11a = xFrac1*s01a + xFrac0*s11a + s11r = yFrac1*s10r + yFrac0*s11r + s11g = yFrac1*s10g + yFrac0*s11g + s11b = yFrac1*s10b + yFrac0*s11b + s11a = yFrac1*s10a + yFrac0*s11a + pr := uint32(s11r) + pg := uint32(s11g) + pb := uint32(s11b) + pa := uint32(s11a) + if dstMask != nil { + qr, qg, qb, qa := dst.At(dr.Min.X+int(dx), dr.Min.Y+int(dy)).RGBA() + _, _, _, ma := dstMask.At(dmp.X+dr.Min.X+int(dx), dmp.Y+dr.Min.Y+int(dy)).RGBA() + pr = pr * ma / 0xffff + pg = pg * ma / 0xffff + pb = pb * ma / 0xffff + pa = pa * ma / 0xffff + pa1 := 0xffff - ma + dstColorRGBA64.R = uint16(qr*pa1/0xffff + pr) + dstColorRGBA64.G = uint16(qg*pa1/0xffff + pg) + dstColorRGBA64.B = uint16(qb*pa1/0xffff + pb) + dstColorRGBA64.A = uint16(qa*pa1/0xffff + pa) + dst.Set(dr.Min.X+int(dx), dr.Min.Y+int(dy), dstColor) + } else { + dstColorRGBA64.R = uint16(pr) + dstColorRGBA64.G = uint16(pg) + dstColorRGBA64.B = uint16(pb) + dstColorRGBA64.A = uint16(pa) + dst.Set(dr.Min.X+int(dx), dr.Min.Y+int(dy), dstColor) + } + } + } +} + +func (z *kernelScaler) Scale(dst Image, dr image.Rectangle, src image.Image, sr image.Rectangle, op Op, opts *Options) { + if z.dw != int32(dr.Dx()) || z.dh != int32(dr.Dy()) || z.sw != int32(sr.Dx()) || z.sh != int32(sr.Dy()) { + z.kernel.Scale(dst, dr, src, sr, op, opts) + return + } + + var o Options + if opts != nil { + o = *opts + } + + // adr is the affected destination pixels. + adr := dst.Bounds().Intersect(dr) + adr, o.DstMask = clipAffectedDestRect(adr, o.DstMask, o.DstMaskP) + if adr.Empty() || sr.Empty() { + return + } + // Make adr relative to dr.Min. + adr = adr.Sub(dr.Min) + if op == Over && o.SrcMask == nil && opaque(src) { + op = Src + } + + if _, ok := src.(*image.Uniform); ok && o.DstMask == nil && o.SrcMask == nil && sr.In(src.Bounds()) { + Draw(dst, dr, src, src.Bounds().Min, op) + return + } + + // Create a temporary buffer: + // scaleX distributes the source image's columns over the temporary image. + // scaleY distributes the temporary image's rows over the destination image. + var tmp [][4]float64 + if z.pool.New != nil { + tmpp := z.pool.Get().(*[][4]float64) + defer z.pool.Put(tmpp) + tmp = *tmpp + } else { + tmp = z.makeTmpBuf() + } + + // sr is the source pixels. If it extends beyond the src bounds, + // we cannot use the type-specific fast paths, as they access + // the Pix fields directly without bounds checking. + // + // Similarly, the fast paths assume that the masks are nil. + if o.SrcMask != nil || !sr.In(src.Bounds()) { + z.scaleX_Image(tmp, src, sr, &o) + } else { + switch src := src.(type) { + case *image.Gray: + z.scaleX_Gray(tmp, src, sr, &o) + case *image.NRGBA: + z.scaleX_NRGBA(tmp, src, sr, &o) + case *image.RGBA: + z.scaleX_RGBA(tmp, src, sr, &o) + case *image.YCbCr: + switch src.SubsampleRatio { + default: + z.scaleX_Image(tmp, src, sr, &o) + case image.YCbCrSubsampleRatio444: + z.scaleX_YCbCr444(tmp, src, sr, &o) + case image.YCbCrSubsampleRatio422: + z.scaleX_YCbCr422(tmp, src, sr, &o) + case image.YCbCrSubsampleRatio420: + z.scaleX_YCbCr420(tmp, src, sr, &o) + case image.YCbCrSubsampleRatio440: + z.scaleX_YCbCr440(tmp, src, sr, &o) + } + default: + z.scaleX_Image(tmp, src, sr, &o) + } + } + + if o.DstMask != nil { + switch op { + case Over: + z.scaleY_Image_Over(dst, dr, adr, tmp, &o) + case Src: + z.scaleY_Image_Src(dst, dr, adr, tmp, &o) + } + } else { + switch op { + case Over: + switch dst := dst.(type) { + case *image.RGBA: + z.scaleY_RGBA_Over(dst, dr, adr, tmp, &o) + default: + z.scaleY_Image_Over(dst, dr, adr, tmp, &o) + } + case Src: + switch dst := dst.(type) { + case *image.RGBA: + z.scaleY_RGBA_Src(dst, dr, adr, tmp, &o) + default: + z.scaleY_Image_Src(dst, dr, adr, tmp, &o) + } + } + } +} + +func (q *Kernel) Transform(dst Image, s2d f64.Aff3, src image.Image, sr image.Rectangle, op Op, opts *Options) { + var o Options + if opts != nil { + o = *opts + } + + dr := transformRect(&s2d, &sr) + // adr is the affected destination pixels. + adr := dst.Bounds().Intersect(dr) + adr, o.DstMask = clipAffectedDestRect(adr, o.DstMask, o.DstMaskP) + if adr.Empty() || sr.Empty() { + return + } + if op == Over && o.SrcMask == nil && opaque(src) { + op = Src + } + d2s := invert(&s2d) + // bias is a translation of the mapping from dst coordinates to src + // coordinates such that the latter temporarily have non-negative X + // and Y coordinates. This allows us to write int(f) instead of + // int(math.Floor(f)), since "round to zero" and "round down" are + // equivalent when f >= 0, but the former is much cheaper. The X-- + // and Y-- are because the TransformLeaf methods have a "sx -= 0.5" + // adjustment. + bias := transformRect(&d2s, &adr).Min + bias.X-- + bias.Y-- + d2s[2] -= float64(bias.X) + d2s[5] -= float64(bias.Y) + // Make adr relative to dr.Min. + adr = adr.Sub(dr.Min) + + if u, ok := src.(*image.Uniform); ok && o.DstMask != nil && o.SrcMask != nil && sr.In(src.Bounds()) { + transform_Uniform(dst, dr, adr, &d2s, u, sr, bias, op) + return + } + + xscale := abs(d2s[0]) + if s := abs(d2s[1]); xscale < s { + xscale = s + } + yscale := abs(d2s[3]) + if s := abs(d2s[4]); yscale < s { + yscale = s + } + + // sr is the source pixels. If it extends beyond the src bounds, + // we cannot use the type-specific fast paths, as they access + // the Pix fields directly without bounds checking. + // + // Similarly, the fast paths assume that the masks are nil. + if o.DstMask != nil || o.SrcMask != nil || !sr.In(src.Bounds()) { + switch op { + case Over: + q.transform_Image_Image_Over(dst, dr, adr, &d2s, src, sr, bias, xscale, yscale, &o) + case Src: + q.transform_Image_Image_Src(dst, dr, adr, &d2s, src, sr, bias, xscale, yscale, &o) + } + } else { + switch op { + case Over: + switch dst := dst.(type) { + case *image.RGBA: + switch src := src.(type) { + case *image.NRGBA: + q.transform_RGBA_NRGBA_Over(dst, dr, adr, &d2s, src, sr, bias, xscale, yscale, &o) + case *image.RGBA: + q.transform_RGBA_RGBA_Over(dst, dr, adr, &d2s, src, sr, bias, xscale, yscale, &o) + default: + q.transform_RGBA_Image_Over(dst, dr, adr, &d2s, src, sr, bias, xscale, yscale, &o) + } + default: + switch src := src.(type) { + default: + q.transform_Image_Image_Over(dst, dr, adr, &d2s, src, sr, bias, xscale, yscale, &o) + } + } + case Src: + switch dst := dst.(type) { + case *image.RGBA: + switch src := src.(type) { + case *image.Gray: + q.transform_RGBA_Gray_Src(dst, dr, adr, &d2s, src, sr, bias, xscale, yscale, &o) + case *image.NRGBA: + q.transform_RGBA_NRGBA_Src(dst, dr, adr, &d2s, src, sr, bias, xscale, yscale, &o) + case *image.RGBA: + q.transform_RGBA_RGBA_Src(dst, dr, adr, &d2s, src, sr, bias, xscale, yscale, &o) + case *image.YCbCr: + switch src.SubsampleRatio { + default: + q.transform_RGBA_Image_Src(dst, dr, adr, &d2s, src, sr, bias, xscale, yscale, &o) + case image.YCbCrSubsampleRatio444: + q.transform_RGBA_YCbCr444_Src(dst, dr, adr, &d2s, src, sr, bias, xscale, yscale, &o) + case image.YCbCrSubsampleRatio422: + q.transform_RGBA_YCbCr422_Src(dst, dr, adr, &d2s, src, sr, bias, xscale, yscale, &o) + case image.YCbCrSubsampleRatio420: + q.transform_RGBA_YCbCr420_Src(dst, dr, adr, &d2s, src, sr, bias, xscale, yscale, &o) + case image.YCbCrSubsampleRatio440: + q.transform_RGBA_YCbCr440_Src(dst, dr, adr, &d2s, src, sr, bias, xscale, yscale, &o) + } + default: + q.transform_RGBA_Image_Src(dst, dr, adr, &d2s, src, sr, bias, xscale, yscale, &o) + } + default: + switch src := src.(type) { + default: + q.transform_Image_Image_Src(dst, dr, adr, &d2s, src, sr, bias, xscale, yscale, &o) + } + } + } + } +} + +func (z *kernelScaler) scaleX_Gray(tmp [][4]float64, src *image.Gray, sr image.Rectangle, opts *Options) { + t := 0 + for y := int32(0); y < z.sh; y++ { + for _, s := range z.horizontal.sources { + var pr float64 + for _, c := range z.horizontal.contribs[s.i:s.j] { + pi := (sr.Min.Y+int(y)-src.Rect.Min.Y)*src.Stride + (sr.Min.X + int(c.coord) - src.Rect.Min.X) + pru := uint32(src.Pix[pi]) * 0x101 + pr += float64(pru) * c.weight + } + pr *= s.invTotalWeightFFFF + tmp[t] = [4]float64{ + pr, + pr, + pr, + 1, + } + t++ + } + } +} + +func (z *kernelScaler) scaleX_NRGBA(tmp [][4]float64, src *image.NRGBA, sr image.Rectangle, opts *Options) { + t := 0 + for y := int32(0); y < z.sh; y++ { + for _, s := range z.horizontal.sources { + var pr, pg, pb, pa float64 + for _, c := range z.horizontal.contribs[s.i:s.j] { + pi := (sr.Min.Y+int(y)-src.Rect.Min.Y)*src.Stride + (sr.Min.X+int(c.coord)-src.Rect.Min.X)*4 + pau := uint32(src.Pix[pi+3]) * 0x101 + pru := uint32(src.Pix[pi+0]) * pau / 0xff + pgu := uint32(src.Pix[pi+1]) * pau / 0xff + pbu := uint32(src.Pix[pi+2]) * pau / 0xff + pr += float64(pru) * c.weight + pg += float64(pgu) * c.weight + pb += float64(pbu) * c.weight + pa += float64(pau) * c.weight + } + tmp[t] = [4]float64{ + pr * s.invTotalWeightFFFF, + pg * s.invTotalWeightFFFF, + pb * s.invTotalWeightFFFF, + pa * s.invTotalWeightFFFF, + } + t++ + } + } +} + +func (z *kernelScaler) scaleX_RGBA(tmp [][4]float64, src *image.RGBA, sr image.Rectangle, opts *Options) { + t := 0 + for y := int32(0); y < z.sh; y++ { + for _, s := range z.horizontal.sources { + var pr, pg, pb, pa float64 + for _, c := range z.horizontal.contribs[s.i:s.j] { + pi := (sr.Min.Y+int(y)-src.Rect.Min.Y)*src.Stride + (sr.Min.X+int(c.coord)-src.Rect.Min.X)*4 + pru := uint32(src.Pix[pi+0]) * 0x101 + pgu := uint32(src.Pix[pi+1]) * 0x101 + pbu := uint32(src.Pix[pi+2]) * 0x101 + pau := uint32(src.Pix[pi+3]) * 0x101 + pr += float64(pru) * c.weight + pg += float64(pgu) * c.weight + pb += float64(pbu) * c.weight + pa += float64(pau) * c.weight + } + tmp[t] = [4]float64{ + pr * s.invTotalWeightFFFF, + pg * s.invTotalWeightFFFF, + pb * s.invTotalWeightFFFF, + pa * s.invTotalWeightFFFF, + } + t++ + } + } +} + +func (z *kernelScaler) scaleX_YCbCr444(tmp [][4]float64, src *image.YCbCr, sr image.Rectangle, opts *Options) { + t := 0 + for y := int32(0); y < z.sh; y++ { + for _, s := range z.horizontal.sources { + var pr, pg, pb float64 + for _, c := range z.horizontal.contribs[s.i:s.j] { + pi := (sr.Min.Y+int(y)-src.Rect.Min.Y)*src.YStride + (sr.Min.X + int(c.coord) - src.Rect.Min.X) + pj := (sr.Min.Y+int(y)-src.Rect.Min.Y)*src.CStride + (sr.Min.X + int(c.coord) - src.Rect.Min.X) + + // This is an inline version of image/color/ycbcr.go's YCbCr.RGBA method. + pyy1 := int(src.Y[pi]) * 0x10101 + pcb1 := int(src.Cb[pj]) - 128 + pcr1 := int(src.Cr[pj]) - 128 + pru := (pyy1 + 91881*pcr1) >> 8 + pgu := (pyy1 - 22554*pcb1 - 46802*pcr1) >> 8 + pbu := (pyy1 + 116130*pcb1) >> 8 + if pru < 0 { + pru = 0 + } else if pru > 0xffff { + pru = 0xffff + } + if pgu < 0 { + pgu = 0 + } else if pgu > 0xffff { + pgu = 0xffff + } + if pbu < 0 { + pbu = 0 + } else if pbu > 0xffff { + pbu = 0xffff + } + + pr += float64(pru) * c.weight + pg += float64(pgu) * c.weight + pb += float64(pbu) * c.weight + } + tmp[t] = [4]float64{ + pr * s.invTotalWeightFFFF, + pg * s.invTotalWeightFFFF, + pb * s.invTotalWeightFFFF, + 1, + } + t++ + } + } +} + +func (z *kernelScaler) scaleX_YCbCr422(tmp [][4]float64, src *image.YCbCr, sr image.Rectangle, opts *Options) { + t := 0 + for y := int32(0); y < z.sh; y++ { + for _, s := range z.horizontal.sources { + var pr, pg, pb float64 + for _, c := range z.horizontal.contribs[s.i:s.j] { + pi := (sr.Min.Y+int(y)-src.Rect.Min.Y)*src.YStride + (sr.Min.X + int(c.coord) - src.Rect.Min.X) + pj := (sr.Min.Y+int(y)-src.Rect.Min.Y)*src.CStride + ((sr.Min.X+int(c.coord))/2 - src.Rect.Min.X/2) + + // This is an inline version of image/color/ycbcr.go's YCbCr.RGBA method. + pyy1 := int(src.Y[pi]) * 0x10101 + pcb1 := int(src.Cb[pj]) - 128 + pcr1 := int(src.Cr[pj]) - 128 + pru := (pyy1 + 91881*pcr1) >> 8 + pgu := (pyy1 - 22554*pcb1 - 46802*pcr1) >> 8 + pbu := (pyy1 + 116130*pcb1) >> 8 + if pru < 0 { + pru = 0 + } else if pru > 0xffff { + pru = 0xffff + } + if pgu < 0 { + pgu = 0 + } else if pgu > 0xffff { + pgu = 0xffff + } + if pbu < 0 { + pbu = 0 + } else if pbu > 0xffff { + pbu = 0xffff + } + + pr += float64(pru) * c.weight + pg += float64(pgu) * c.weight + pb += float64(pbu) * c.weight + } + tmp[t] = [4]float64{ + pr * s.invTotalWeightFFFF, + pg * s.invTotalWeightFFFF, + pb * s.invTotalWeightFFFF, + 1, + } + t++ + } + } +} + +func (z *kernelScaler) scaleX_YCbCr420(tmp [][4]float64, src *image.YCbCr, sr image.Rectangle, opts *Options) { + t := 0 + for y := int32(0); y < z.sh; y++ { + for _, s := range z.horizontal.sources { + var pr, pg, pb float64 + for _, c := range z.horizontal.contribs[s.i:s.j] { + pi := (sr.Min.Y+int(y)-src.Rect.Min.Y)*src.YStride + (sr.Min.X + int(c.coord) - src.Rect.Min.X) + pj := ((sr.Min.Y+int(y))/2-src.Rect.Min.Y/2)*src.CStride + ((sr.Min.X+int(c.coord))/2 - src.Rect.Min.X/2) + + // This is an inline version of image/color/ycbcr.go's YCbCr.RGBA method. + pyy1 := int(src.Y[pi]) * 0x10101 + pcb1 := int(src.Cb[pj]) - 128 + pcr1 := int(src.Cr[pj]) - 128 + pru := (pyy1 + 91881*pcr1) >> 8 + pgu := (pyy1 - 22554*pcb1 - 46802*pcr1) >> 8 + pbu := (pyy1 + 116130*pcb1) >> 8 + if pru < 0 { + pru = 0 + } else if pru > 0xffff { + pru = 0xffff + } + if pgu < 0 { + pgu = 0 + } else if pgu > 0xffff { + pgu = 0xffff + } + if pbu < 0 { + pbu = 0 + } else if pbu > 0xffff { + pbu = 0xffff + } + + pr += float64(pru) * c.weight + pg += float64(pgu) * c.weight + pb += float64(pbu) * c.weight + } + tmp[t] = [4]float64{ + pr * s.invTotalWeightFFFF, + pg * s.invTotalWeightFFFF, + pb * s.invTotalWeightFFFF, + 1, + } + t++ + } + } +} + +func (z *kernelScaler) scaleX_YCbCr440(tmp [][4]float64, src *image.YCbCr, sr image.Rectangle, opts *Options) { + t := 0 + for y := int32(0); y < z.sh; y++ { + for _, s := range z.horizontal.sources { + var pr, pg, pb float64 + for _, c := range z.horizontal.contribs[s.i:s.j] { + pi := (sr.Min.Y+int(y)-src.Rect.Min.Y)*src.YStride + (sr.Min.X + int(c.coord) - src.Rect.Min.X) + pj := ((sr.Min.Y+int(y))/2-src.Rect.Min.Y/2)*src.CStride + (sr.Min.X + int(c.coord) - src.Rect.Min.X) + + // This is an inline version of image/color/ycbcr.go's YCbCr.RGBA method. + pyy1 := int(src.Y[pi]) * 0x10101 + pcb1 := int(src.Cb[pj]) - 128 + pcr1 := int(src.Cr[pj]) - 128 + pru := (pyy1 + 91881*pcr1) >> 8 + pgu := (pyy1 - 22554*pcb1 - 46802*pcr1) >> 8 + pbu := (pyy1 + 116130*pcb1) >> 8 + if pru < 0 { + pru = 0 + } else if pru > 0xffff { + pru = 0xffff + } + if pgu < 0 { + pgu = 0 + } else if pgu > 0xffff { + pgu = 0xffff + } + if pbu < 0 { + pbu = 0 + } else if pbu > 0xffff { + pbu = 0xffff + } + + pr += float64(pru) * c.weight + pg += float64(pgu) * c.weight + pb += float64(pbu) * c.weight + } + tmp[t] = [4]float64{ + pr * s.invTotalWeightFFFF, + pg * s.invTotalWeightFFFF, + pb * s.invTotalWeightFFFF, + 1, + } + t++ + } + } +} + +func (z *kernelScaler) scaleX_Image(tmp [][4]float64, src image.Image, sr image.Rectangle, opts *Options) { + t := 0 + srcMask, smp := opts.SrcMask, opts.SrcMaskP + for y := int32(0); y < z.sh; y++ { + for _, s := range z.horizontal.sources { + var pr, pg, pb, pa float64 + for _, c := range z.horizontal.contribs[s.i:s.j] { + pru, pgu, pbu, pau := src.At(sr.Min.X+int(c.coord), sr.Min.Y+int(y)).RGBA() + if srcMask != nil { + _, _, _, ma := srcMask.At(smp.X+sr.Min.X+int(c.coord), smp.Y+sr.Min.Y+int(y)).RGBA() + pru = pru * ma / 0xffff + pgu = pgu * ma / 0xffff + pbu = pbu * ma / 0xffff + pau = pau * ma / 0xffff + } + pr += float64(pru) * c.weight + pg += float64(pgu) * c.weight + pb += float64(pbu) * c.weight + pa += float64(pau) * c.weight + } + tmp[t] = [4]float64{ + pr * s.invTotalWeightFFFF, + pg * s.invTotalWeightFFFF, + pb * s.invTotalWeightFFFF, + pa * s.invTotalWeightFFFF, + } + t++ + } + } +} + +func (z *kernelScaler) scaleY_RGBA_Over(dst *image.RGBA, dr, adr image.Rectangle, tmp [][4]float64, opts *Options) { + for dx := int32(adr.Min.X); dx < int32(adr.Max.X); dx++ { + d := (dr.Min.Y+adr.Min.Y-dst.Rect.Min.Y)*dst.Stride + (dr.Min.X+int(dx)-dst.Rect.Min.X)*4 + for _, s := range z.vertical.sources[adr.Min.Y:adr.Max.Y] { + var pr, pg, pb, pa float64 + for _, c := range z.vertical.contribs[s.i:s.j] { + p := &tmp[c.coord*z.dw+dx] + pr += p[0] * c.weight + pg += p[1] * c.weight + pb += p[2] * c.weight + pa += p[3] * c.weight + } + + if pr > pa { + pr = pa + } + if pg > pa { + pg = pa + } + if pb > pa { + pb = pa + } + + pr0 := uint32(ftou(pr * s.invTotalWeight)) + pg0 := uint32(ftou(pg * s.invTotalWeight)) + pb0 := uint32(ftou(pb * s.invTotalWeight)) + pa0 := uint32(ftou(pa * s.invTotalWeight)) + pa1 := (0xffff - uint32(pa0)) * 0x101 + dst.Pix[d+0] = uint8((uint32(dst.Pix[d+0])*pa1/0xffff + pr0) >> 8) + dst.Pix[d+1] = uint8((uint32(dst.Pix[d+1])*pa1/0xffff + pg0) >> 8) + dst.Pix[d+2] = uint8((uint32(dst.Pix[d+2])*pa1/0xffff + pb0) >> 8) + dst.Pix[d+3] = uint8((uint32(dst.Pix[d+3])*pa1/0xffff + pa0) >> 8) + d += dst.Stride + } + } +} + +func (z *kernelScaler) scaleY_RGBA_Src(dst *image.RGBA, dr, adr image.Rectangle, tmp [][4]float64, opts *Options) { + for dx := int32(adr.Min.X); dx < int32(adr.Max.X); dx++ { + d := (dr.Min.Y+adr.Min.Y-dst.Rect.Min.Y)*dst.Stride + (dr.Min.X+int(dx)-dst.Rect.Min.X)*4 + for _, s := range z.vertical.sources[adr.Min.Y:adr.Max.Y] { + var pr, pg, pb, pa float64 + for _, c := range z.vertical.contribs[s.i:s.j] { + p := &tmp[c.coord*z.dw+dx] + pr += p[0] * c.weight + pg += p[1] * c.weight + pb += p[2] * c.weight + pa += p[3] * c.weight + } + + if pr > pa { + pr = pa + } + if pg > pa { + pg = pa + } + if pb > pa { + pb = pa + } + + dst.Pix[d+0] = uint8(ftou(pr*s.invTotalWeight) >> 8) + dst.Pix[d+1] = uint8(ftou(pg*s.invTotalWeight) >> 8) + dst.Pix[d+2] = uint8(ftou(pb*s.invTotalWeight) >> 8) + dst.Pix[d+3] = uint8(ftou(pa*s.invTotalWeight) >> 8) + d += dst.Stride + } + } +} + +func (z *kernelScaler) scaleY_Image_Over(dst Image, dr, adr image.Rectangle, tmp [][4]float64, opts *Options) { + dstMask, dmp := opts.DstMask, opts.DstMaskP + dstColorRGBA64 := &color.RGBA64{} + dstColor := color.Color(dstColorRGBA64) + for dx := int32(adr.Min.X); dx < int32(adr.Max.X); dx++ { + for dy, s := range z.vertical.sources[adr.Min.Y:adr.Max.Y] { + var pr, pg, pb, pa float64 + for _, c := range z.vertical.contribs[s.i:s.j] { + p := &tmp[c.coord*z.dw+dx] + pr += p[0] * c.weight + pg += p[1] * c.weight + pb += p[2] * c.weight + pa += p[3] * c.weight + } + + if pr > pa { + pr = pa + } + if pg > pa { + pg = pa + } + if pb > pa { + pb = pa + } + + qr, qg, qb, qa := dst.At(dr.Min.X+int(dx), dr.Min.Y+int(adr.Min.Y+dy)).RGBA() + pr0 := uint32(ftou(pr * s.invTotalWeight)) + pg0 := uint32(ftou(pg * s.invTotalWeight)) + pb0 := uint32(ftou(pb * s.invTotalWeight)) + pa0 := uint32(ftou(pa * s.invTotalWeight)) + if dstMask != nil { + _, _, _, ma := dstMask.At(dmp.X+dr.Min.X+int(dx), dmp.Y+dr.Min.Y+int(adr.Min.Y+dy)).RGBA() + pr0 = pr0 * ma / 0xffff + pg0 = pg0 * ma / 0xffff + pb0 = pb0 * ma / 0xffff + pa0 = pa0 * ma / 0xffff + } + pa1 := 0xffff - pa0 + dstColorRGBA64.R = uint16(qr*pa1/0xffff + pr0) + dstColorRGBA64.G = uint16(qg*pa1/0xffff + pg0) + dstColorRGBA64.B = uint16(qb*pa1/0xffff + pb0) + dstColorRGBA64.A = uint16(qa*pa1/0xffff + pa0) + dst.Set(dr.Min.X+int(dx), dr.Min.Y+int(adr.Min.Y+dy), dstColor) + } + } +} + +func (z *kernelScaler) scaleY_Image_Src(dst Image, dr, adr image.Rectangle, tmp [][4]float64, opts *Options) { + dstMask, dmp := opts.DstMask, opts.DstMaskP + dstColorRGBA64 := &color.RGBA64{} + dstColor := color.Color(dstColorRGBA64) + for dx := int32(adr.Min.X); dx < int32(adr.Max.X); dx++ { + for dy, s := range z.vertical.sources[adr.Min.Y:adr.Max.Y] { + var pr, pg, pb, pa float64 + for _, c := range z.vertical.contribs[s.i:s.j] { + p := &tmp[c.coord*z.dw+dx] + pr += p[0] * c.weight + pg += p[1] * c.weight + pb += p[2] * c.weight + pa += p[3] * c.weight + } + + if pr > pa { + pr = pa + } + if pg > pa { + pg = pa + } + if pb > pa { + pb = pa + } + + if dstMask != nil { + qr, qg, qb, qa := dst.At(dr.Min.X+int(dx), dr.Min.Y+int(adr.Min.Y+dy)).RGBA() + _, _, _, ma := dstMask.At(dmp.X+dr.Min.X+int(dx), dmp.Y+dr.Min.Y+int(adr.Min.Y+dy)).RGBA() + pr := uint32(ftou(pr*s.invTotalWeight)) * ma / 0xffff + pg := uint32(ftou(pg*s.invTotalWeight)) * ma / 0xffff + pb := uint32(ftou(pb*s.invTotalWeight)) * ma / 0xffff + pa := uint32(ftou(pa*s.invTotalWeight)) * ma / 0xffff + pa1 := 0xffff - ma + dstColorRGBA64.R = uint16(qr*pa1/0xffff + pr) + dstColorRGBA64.G = uint16(qg*pa1/0xffff + pg) + dstColorRGBA64.B = uint16(qb*pa1/0xffff + pb) + dstColorRGBA64.A = uint16(qa*pa1/0xffff + pa) + dst.Set(dr.Min.X+int(dx), dr.Min.Y+int(adr.Min.Y+dy), dstColor) + } else { + dstColorRGBA64.R = ftou(pr * s.invTotalWeight) + dstColorRGBA64.G = ftou(pg * s.invTotalWeight) + dstColorRGBA64.B = ftou(pb * s.invTotalWeight) + dstColorRGBA64.A = ftou(pa * s.invTotalWeight) + dst.Set(dr.Min.X+int(dx), dr.Min.Y+int(adr.Min.Y+dy), dstColor) + } + } + } +} + +func (q *Kernel) transform_RGBA_Gray_Src(dst *image.RGBA, dr, adr image.Rectangle, d2s *f64.Aff3, src *image.Gray, sr image.Rectangle, bias image.Point, xscale, yscale float64, opts *Options) { + // When shrinking, broaden the effective kernel support so that we still + // visit every source pixel. + xHalfWidth, xKernelArgScale := q.Support, 1.0 + if xscale > 1 { + xHalfWidth *= xscale + xKernelArgScale = 1 / xscale + } + yHalfWidth, yKernelArgScale := q.Support, 1.0 + if yscale > 1 { + yHalfWidth *= yscale + yKernelArgScale = 1 / yscale + } + + xWeights := make([]float64, 1+2*int(math.Ceil(xHalfWidth))) + yWeights := make([]float64, 1+2*int(math.Ceil(yHalfWidth))) + + for dy := int32(adr.Min.Y); dy < int32(adr.Max.Y); dy++ { + dyf := float64(dr.Min.Y+int(dy)) + 0.5 + d := (dr.Min.Y+int(dy)-dst.Rect.Min.Y)*dst.Stride + (dr.Min.X+adr.Min.X-dst.Rect.Min.X)*4 + for dx := int32(adr.Min.X); dx < int32(adr.Max.X); dx, d = dx+1, d+4 { + dxf := float64(dr.Min.X+int(dx)) + 0.5 + sx := d2s[0]*dxf + d2s[1]*dyf + d2s[2] + sy := d2s[3]*dxf + d2s[4]*dyf + d2s[5] + if !(image.Point{int(sx) + bias.X, int(sy) + bias.Y}).In(sr) { + continue + } + + // TODO: adjust the bias so that we can use int(f) instead + // of math.Floor(f) and math.Ceil(f). + sx += float64(bias.X) + sx -= 0.5 + ix := int(math.Floor(sx - xHalfWidth)) + if ix < sr.Min.X { + ix = sr.Min.X + } + jx := int(math.Ceil(sx + xHalfWidth)) + if jx > sr.Max.X { + jx = sr.Max.X + } + + totalXWeight := 0.0 + for kx := ix; kx < jx; kx++ { + xWeight := 0.0 + if t := abs((sx - float64(kx)) * xKernelArgScale); t < q.Support { + xWeight = q.At(t) + } + xWeights[kx-ix] = xWeight + totalXWeight += xWeight + } + for x := range xWeights[:jx-ix] { + xWeights[x] /= totalXWeight + } + + sy += float64(bias.Y) + sy -= 0.5 + iy := int(math.Floor(sy - yHalfWidth)) + if iy < sr.Min.Y { + iy = sr.Min.Y + } + jy := int(math.Ceil(sy + yHalfWidth)) + if jy > sr.Max.Y { + jy = sr.Max.Y + } + + totalYWeight := 0.0 + for ky := iy; ky < jy; ky++ { + yWeight := 0.0 + if t := abs((sy - float64(ky)) * yKernelArgScale); t < q.Support { + yWeight = q.At(t) + } + yWeights[ky-iy] = yWeight + totalYWeight += yWeight + } + for y := range yWeights[:jy-iy] { + yWeights[y] /= totalYWeight + } + + var pr float64 + for ky := iy; ky < jy; ky++ { + if yWeight := yWeights[ky-iy]; yWeight != 0 { + for kx := ix; kx < jx; kx++ { + if w := xWeights[kx-ix] * yWeight; w != 0 { + pi := (ky-src.Rect.Min.Y)*src.Stride + (kx - src.Rect.Min.X) + pru := uint32(src.Pix[pi]) * 0x101 + pr += float64(pru) * w + } + } + } + } + out := uint8(fffftou(pr) >> 8) + dst.Pix[d+0] = out + dst.Pix[d+1] = out + dst.Pix[d+2] = out + dst.Pix[d+3] = 0xff + } + } +} + +func (q *Kernel) transform_RGBA_NRGBA_Over(dst *image.RGBA, dr, adr image.Rectangle, d2s *f64.Aff3, src *image.NRGBA, sr image.Rectangle, bias image.Point, xscale, yscale float64, opts *Options) { + // When shrinking, broaden the effective kernel support so that we still + // visit every source pixel. + xHalfWidth, xKernelArgScale := q.Support, 1.0 + if xscale > 1 { + xHalfWidth *= xscale + xKernelArgScale = 1 / xscale + } + yHalfWidth, yKernelArgScale := q.Support, 1.0 + if yscale > 1 { + yHalfWidth *= yscale + yKernelArgScale = 1 / yscale + } + + xWeights := make([]float64, 1+2*int(math.Ceil(xHalfWidth))) + yWeights := make([]float64, 1+2*int(math.Ceil(yHalfWidth))) + + for dy := int32(adr.Min.Y); dy < int32(adr.Max.Y); dy++ { + dyf := float64(dr.Min.Y+int(dy)) + 0.5 + d := (dr.Min.Y+int(dy)-dst.Rect.Min.Y)*dst.Stride + (dr.Min.X+adr.Min.X-dst.Rect.Min.X)*4 + for dx := int32(adr.Min.X); dx < int32(adr.Max.X); dx, d = dx+1, d+4 { + dxf := float64(dr.Min.X+int(dx)) + 0.5 + sx := d2s[0]*dxf + d2s[1]*dyf + d2s[2] + sy := d2s[3]*dxf + d2s[4]*dyf + d2s[5] + if !(image.Point{int(sx) + bias.X, int(sy) + bias.Y}).In(sr) { + continue + } + + // TODO: adjust the bias so that we can use int(f) instead + // of math.Floor(f) and math.Ceil(f). + sx += float64(bias.X) + sx -= 0.5 + ix := int(math.Floor(sx - xHalfWidth)) + if ix < sr.Min.X { + ix = sr.Min.X + } + jx := int(math.Ceil(sx + xHalfWidth)) + if jx > sr.Max.X { + jx = sr.Max.X + } + + totalXWeight := 0.0 + for kx := ix; kx < jx; kx++ { + xWeight := 0.0 + if t := abs((sx - float64(kx)) * xKernelArgScale); t < q.Support { + xWeight = q.At(t) + } + xWeights[kx-ix] = xWeight + totalXWeight += xWeight + } + for x := range xWeights[:jx-ix] { + xWeights[x] /= totalXWeight + } + + sy += float64(bias.Y) + sy -= 0.5 + iy := int(math.Floor(sy - yHalfWidth)) + if iy < sr.Min.Y { + iy = sr.Min.Y + } + jy := int(math.Ceil(sy + yHalfWidth)) + if jy > sr.Max.Y { + jy = sr.Max.Y + } + + totalYWeight := 0.0 + for ky := iy; ky < jy; ky++ { + yWeight := 0.0 + if t := abs((sy - float64(ky)) * yKernelArgScale); t < q.Support { + yWeight = q.At(t) + } + yWeights[ky-iy] = yWeight + totalYWeight += yWeight + } + for y := range yWeights[:jy-iy] { + yWeights[y] /= totalYWeight + } + + var pr, pg, pb, pa float64 + for ky := iy; ky < jy; ky++ { + if yWeight := yWeights[ky-iy]; yWeight != 0 { + for kx := ix; kx < jx; kx++ { + if w := xWeights[kx-ix] * yWeight; w != 0 { + pi := (ky-src.Rect.Min.Y)*src.Stride + (kx-src.Rect.Min.X)*4 + pau := uint32(src.Pix[pi+3]) * 0x101 + pru := uint32(src.Pix[pi+0]) * pau / 0xff + pgu := uint32(src.Pix[pi+1]) * pau / 0xff + pbu := uint32(src.Pix[pi+2]) * pau / 0xff + pr += float64(pru) * w + pg += float64(pgu) * w + pb += float64(pbu) * w + pa += float64(pau) * w + } + } + } + } + + if pr > pa { + pr = pa + } + if pg > pa { + pg = pa + } + if pb > pa { + pb = pa + } + + pr0 := uint32(fffftou(pr)) + pg0 := uint32(fffftou(pg)) + pb0 := uint32(fffftou(pb)) + pa0 := uint32(fffftou(pa)) + pa1 := (0xffff - uint32(pa0)) * 0x101 + dst.Pix[d+0] = uint8((uint32(dst.Pix[d+0])*pa1/0xffff + pr0) >> 8) + dst.Pix[d+1] = uint8((uint32(dst.Pix[d+1])*pa1/0xffff + pg0) >> 8) + dst.Pix[d+2] = uint8((uint32(dst.Pix[d+2])*pa1/0xffff + pb0) >> 8) + dst.Pix[d+3] = uint8((uint32(dst.Pix[d+3])*pa1/0xffff + pa0) >> 8) + } + } +} + +func (q *Kernel) transform_RGBA_NRGBA_Src(dst *image.RGBA, dr, adr image.Rectangle, d2s *f64.Aff3, src *image.NRGBA, sr image.Rectangle, bias image.Point, xscale, yscale float64, opts *Options) { + // When shrinking, broaden the effective kernel support so that we still + // visit every source pixel. + xHalfWidth, xKernelArgScale := q.Support, 1.0 + if xscale > 1 { + xHalfWidth *= xscale + xKernelArgScale = 1 / xscale + } + yHalfWidth, yKernelArgScale := q.Support, 1.0 + if yscale > 1 { + yHalfWidth *= yscale + yKernelArgScale = 1 / yscale + } + + xWeights := make([]float64, 1+2*int(math.Ceil(xHalfWidth))) + yWeights := make([]float64, 1+2*int(math.Ceil(yHalfWidth))) + + for dy := int32(adr.Min.Y); dy < int32(adr.Max.Y); dy++ { + dyf := float64(dr.Min.Y+int(dy)) + 0.5 + d := (dr.Min.Y+int(dy)-dst.Rect.Min.Y)*dst.Stride + (dr.Min.X+adr.Min.X-dst.Rect.Min.X)*4 + for dx := int32(adr.Min.X); dx < int32(adr.Max.X); dx, d = dx+1, d+4 { + dxf := float64(dr.Min.X+int(dx)) + 0.5 + sx := d2s[0]*dxf + d2s[1]*dyf + d2s[2] + sy := d2s[3]*dxf + d2s[4]*dyf + d2s[5] + if !(image.Point{int(sx) + bias.X, int(sy) + bias.Y}).In(sr) { + continue + } + + // TODO: adjust the bias so that we can use int(f) instead + // of math.Floor(f) and math.Ceil(f). + sx += float64(bias.X) + sx -= 0.5 + ix := int(math.Floor(sx - xHalfWidth)) + if ix < sr.Min.X { + ix = sr.Min.X + } + jx := int(math.Ceil(sx + xHalfWidth)) + if jx > sr.Max.X { + jx = sr.Max.X + } + + totalXWeight := 0.0 + for kx := ix; kx < jx; kx++ { + xWeight := 0.0 + if t := abs((sx - float64(kx)) * xKernelArgScale); t < q.Support { + xWeight = q.At(t) + } + xWeights[kx-ix] = xWeight + totalXWeight += xWeight + } + for x := range xWeights[:jx-ix] { + xWeights[x] /= totalXWeight + } + + sy += float64(bias.Y) + sy -= 0.5 + iy := int(math.Floor(sy - yHalfWidth)) + if iy < sr.Min.Y { + iy = sr.Min.Y + } + jy := int(math.Ceil(sy + yHalfWidth)) + if jy > sr.Max.Y { + jy = sr.Max.Y + } + + totalYWeight := 0.0 + for ky := iy; ky < jy; ky++ { + yWeight := 0.0 + if t := abs((sy - float64(ky)) * yKernelArgScale); t < q.Support { + yWeight = q.At(t) + } + yWeights[ky-iy] = yWeight + totalYWeight += yWeight + } + for y := range yWeights[:jy-iy] { + yWeights[y] /= totalYWeight + } + + var pr, pg, pb, pa float64 + for ky := iy; ky < jy; ky++ { + if yWeight := yWeights[ky-iy]; yWeight != 0 { + for kx := ix; kx < jx; kx++ { + if w := xWeights[kx-ix] * yWeight; w != 0 { + pi := (ky-src.Rect.Min.Y)*src.Stride + (kx-src.Rect.Min.X)*4 + pau := uint32(src.Pix[pi+3]) * 0x101 + pru := uint32(src.Pix[pi+0]) * pau / 0xff + pgu := uint32(src.Pix[pi+1]) * pau / 0xff + pbu := uint32(src.Pix[pi+2]) * pau / 0xff + pr += float64(pru) * w + pg += float64(pgu) * w + pb += float64(pbu) * w + pa += float64(pau) * w + } + } + } + } + + if pr > pa { + pr = pa + } + if pg > pa { + pg = pa + } + if pb > pa { + pb = pa + } + + dst.Pix[d+0] = uint8(fffftou(pr) >> 8) + dst.Pix[d+1] = uint8(fffftou(pg) >> 8) + dst.Pix[d+2] = uint8(fffftou(pb) >> 8) + dst.Pix[d+3] = uint8(fffftou(pa) >> 8) + } + } +} + +func (q *Kernel) transform_RGBA_RGBA_Over(dst *image.RGBA, dr, adr image.Rectangle, d2s *f64.Aff3, src *image.RGBA, sr image.Rectangle, bias image.Point, xscale, yscale float64, opts *Options) { + // When shrinking, broaden the effective kernel support so that we still + // visit every source pixel. + xHalfWidth, xKernelArgScale := q.Support, 1.0 + if xscale > 1 { + xHalfWidth *= xscale + xKernelArgScale = 1 / xscale + } + yHalfWidth, yKernelArgScale := q.Support, 1.0 + if yscale > 1 { + yHalfWidth *= yscale + yKernelArgScale = 1 / yscale + } + + xWeights := make([]float64, 1+2*int(math.Ceil(xHalfWidth))) + yWeights := make([]float64, 1+2*int(math.Ceil(yHalfWidth))) + + for dy := int32(adr.Min.Y); dy < int32(adr.Max.Y); dy++ { + dyf := float64(dr.Min.Y+int(dy)) + 0.5 + d := (dr.Min.Y+int(dy)-dst.Rect.Min.Y)*dst.Stride + (dr.Min.X+adr.Min.X-dst.Rect.Min.X)*4 + for dx := int32(adr.Min.X); dx < int32(adr.Max.X); dx, d = dx+1, d+4 { + dxf := float64(dr.Min.X+int(dx)) + 0.5 + sx := d2s[0]*dxf + d2s[1]*dyf + d2s[2] + sy := d2s[3]*dxf + d2s[4]*dyf + d2s[5] + if !(image.Point{int(sx) + bias.X, int(sy) + bias.Y}).In(sr) { + continue + } + + // TODO: adjust the bias so that we can use int(f) instead + // of math.Floor(f) and math.Ceil(f). + sx += float64(bias.X) + sx -= 0.5 + ix := int(math.Floor(sx - xHalfWidth)) + if ix < sr.Min.X { + ix = sr.Min.X + } + jx := int(math.Ceil(sx + xHalfWidth)) + if jx > sr.Max.X { + jx = sr.Max.X + } + + totalXWeight := 0.0 + for kx := ix; kx < jx; kx++ { + xWeight := 0.0 + if t := abs((sx - float64(kx)) * xKernelArgScale); t < q.Support { + xWeight = q.At(t) + } + xWeights[kx-ix] = xWeight + totalXWeight += xWeight + } + for x := range xWeights[:jx-ix] { + xWeights[x] /= totalXWeight + } + + sy += float64(bias.Y) + sy -= 0.5 + iy := int(math.Floor(sy - yHalfWidth)) + if iy < sr.Min.Y { + iy = sr.Min.Y + } + jy := int(math.Ceil(sy + yHalfWidth)) + if jy > sr.Max.Y { + jy = sr.Max.Y + } + + totalYWeight := 0.0 + for ky := iy; ky < jy; ky++ { + yWeight := 0.0 + if t := abs((sy - float64(ky)) * yKernelArgScale); t < q.Support { + yWeight = q.At(t) + } + yWeights[ky-iy] = yWeight + totalYWeight += yWeight + } + for y := range yWeights[:jy-iy] { + yWeights[y] /= totalYWeight + } + + var pr, pg, pb, pa float64 + for ky := iy; ky < jy; ky++ { + if yWeight := yWeights[ky-iy]; yWeight != 0 { + for kx := ix; kx < jx; kx++ { + if w := xWeights[kx-ix] * yWeight; w != 0 { + pi := (ky-src.Rect.Min.Y)*src.Stride + (kx-src.Rect.Min.X)*4 + pru := uint32(src.Pix[pi+0]) * 0x101 + pgu := uint32(src.Pix[pi+1]) * 0x101 + pbu := uint32(src.Pix[pi+2]) * 0x101 + pau := uint32(src.Pix[pi+3]) * 0x101 + pr += float64(pru) * w + pg += float64(pgu) * w + pb += float64(pbu) * w + pa += float64(pau) * w + } + } + } + } + + if pr > pa { + pr = pa + } + if pg > pa { + pg = pa + } + if pb > pa { + pb = pa + } + + pr0 := uint32(fffftou(pr)) + pg0 := uint32(fffftou(pg)) + pb0 := uint32(fffftou(pb)) + pa0 := uint32(fffftou(pa)) + pa1 := (0xffff - uint32(pa0)) * 0x101 + dst.Pix[d+0] = uint8((uint32(dst.Pix[d+0])*pa1/0xffff + pr0) >> 8) + dst.Pix[d+1] = uint8((uint32(dst.Pix[d+1])*pa1/0xffff + pg0) >> 8) + dst.Pix[d+2] = uint8((uint32(dst.Pix[d+2])*pa1/0xffff + pb0) >> 8) + dst.Pix[d+3] = uint8((uint32(dst.Pix[d+3])*pa1/0xffff + pa0) >> 8) + } + } +} + +func (q *Kernel) transform_RGBA_RGBA_Src(dst *image.RGBA, dr, adr image.Rectangle, d2s *f64.Aff3, src *image.RGBA, sr image.Rectangle, bias image.Point, xscale, yscale float64, opts *Options) { + // When shrinking, broaden the effective kernel support so that we still + // visit every source pixel. + xHalfWidth, xKernelArgScale := q.Support, 1.0 + if xscale > 1 { + xHalfWidth *= xscale + xKernelArgScale = 1 / xscale + } + yHalfWidth, yKernelArgScale := q.Support, 1.0 + if yscale > 1 { + yHalfWidth *= yscale + yKernelArgScale = 1 / yscale + } + + xWeights := make([]float64, 1+2*int(math.Ceil(xHalfWidth))) + yWeights := make([]float64, 1+2*int(math.Ceil(yHalfWidth))) + + for dy := int32(adr.Min.Y); dy < int32(adr.Max.Y); dy++ { + dyf := float64(dr.Min.Y+int(dy)) + 0.5 + d := (dr.Min.Y+int(dy)-dst.Rect.Min.Y)*dst.Stride + (dr.Min.X+adr.Min.X-dst.Rect.Min.X)*4 + for dx := int32(adr.Min.X); dx < int32(adr.Max.X); dx, d = dx+1, d+4 { + dxf := float64(dr.Min.X+int(dx)) + 0.5 + sx := d2s[0]*dxf + d2s[1]*dyf + d2s[2] + sy := d2s[3]*dxf + d2s[4]*dyf + d2s[5] + if !(image.Point{int(sx) + bias.X, int(sy) + bias.Y}).In(sr) { + continue + } + + // TODO: adjust the bias so that we can use int(f) instead + // of math.Floor(f) and math.Ceil(f). + sx += float64(bias.X) + sx -= 0.5 + ix := int(math.Floor(sx - xHalfWidth)) + if ix < sr.Min.X { + ix = sr.Min.X + } + jx := int(math.Ceil(sx + xHalfWidth)) + if jx > sr.Max.X { + jx = sr.Max.X + } + + totalXWeight := 0.0 + for kx := ix; kx < jx; kx++ { + xWeight := 0.0 + if t := abs((sx - float64(kx)) * xKernelArgScale); t < q.Support { + xWeight = q.At(t) + } + xWeights[kx-ix] = xWeight + totalXWeight += xWeight + } + for x := range xWeights[:jx-ix] { + xWeights[x] /= totalXWeight + } + + sy += float64(bias.Y) + sy -= 0.5 + iy := int(math.Floor(sy - yHalfWidth)) + if iy < sr.Min.Y { + iy = sr.Min.Y + } + jy := int(math.Ceil(sy + yHalfWidth)) + if jy > sr.Max.Y { + jy = sr.Max.Y + } + + totalYWeight := 0.0 + for ky := iy; ky < jy; ky++ { + yWeight := 0.0 + if t := abs((sy - float64(ky)) * yKernelArgScale); t < q.Support { + yWeight = q.At(t) + } + yWeights[ky-iy] = yWeight + totalYWeight += yWeight + } + for y := range yWeights[:jy-iy] { + yWeights[y] /= totalYWeight + } + + var pr, pg, pb, pa float64 + for ky := iy; ky < jy; ky++ { + if yWeight := yWeights[ky-iy]; yWeight != 0 { + for kx := ix; kx < jx; kx++ { + if w := xWeights[kx-ix] * yWeight; w != 0 { + pi := (ky-src.Rect.Min.Y)*src.Stride + (kx-src.Rect.Min.X)*4 + pru := uint32(src.Pix[pi+0]) * 0x101 + pgu := uint32(src.Pix[pi+1]) * 0x101 + pbu := uint32(src.Pix[pi+2]) * 0x101 + pau := uint32(src.Pix[pi+3]) * 0x101 + pr += float64(pru) * w + pg += float64(pgu) * w + pb += float64(pbu) * w + pa += float64(pau) * w + } + } + } + } + + if pr > pa { + pr = pa + } + if pg > pa { + pg = pa + } + if pb > pa { + pb = pa + } + + dst.Pix[d+0] = uint8(fffftou(pr) >> 8) + dst.Pix[d+1] = uint8(fffftou(pg) >> 8) + dst.Pix[d+2] = uint8(fffftou(pb) >> 8) + dst.Pix[d+3] = uint8(fffftou(pa) >> 8) + } + } +} + +func (q *Kernel) transform_RGBA_YCbCr444_Src(dst *image.RGBA, dr, adr image.Rectangle, d2s *f64.Aff3, src *image.YCbCr, sr image.Rectangle, bias image.Point, xscale, yscale float64, opts *Options) { + // When shrinking, broaden the effective kernel support so that we still + // visit every source pixel. + xHalfWidth, xKernelArgScale := q.Support, 1.0 + if xscale > 1 { + xHalfWidth *= xscale + xKernelArgScale = 1 / xscale + } + yHalfWidth, yKernelArgScale := q.Support, 1.0 + if yscale > 1 { + yHalfWidth *= yscale + yKernelArgScale = 1 / yscale + } + + xWeights := make([]float64, 1+2*int(math.Ceil(xHalfWidth))) + yWeights := make([]float64, 1+2*int(math.Ceil(yHalfWidth))) + + for dy := int32(adr.Min.Y); dy < int32(adr.Max.Y); dy++ { + dyf := float64(dr.Min.Y+int(dy)) + 0.5 + d := (dr.Min.Y+int(dy)-dst.Rect.Min.Y)*dst.Stride + (dr.Min.X+adr.Min.X-dst.Rect.Min.X)*4 + for dx := int32(adr.Min.X); dx < int32(adr.Max.X); dx, d = dx+1, d+4 { + dxf := float64(dr.Min.X+int(dx)) + 0.5 + sx := d2s[0]*dxf + d2s[1]*dyf + d2s[2] + sy := d2s[3]*dxf + d2s[4]*dyf + d2s[5] + if !(image.Point{int(sx) + bias.X, int(sy) + bias.Y}).In(sr) { + continue + } + + // TODO: adjust the bias so that we can use int(f) instead + // of math.Floor(f) and math.Ceil(f). + sx += float64(bias.X) + sx -= 0.5 + ix := int(math.Floor(sx - xHalfWidth)) + if ix < sr.Min.X { + ix = sr.Min.X + } + jx := int(math.Ceil(sx + xHalfWidth)) + if jx > sr.Max.X { + jx = sr.Max.X + } + + totalXWeight := 0.0 + for kx := ix; kx < jx; kx++ { + xWeight := 0.0 + if t := abs((sx - float64(kx)) * xKernelArgScale); t < q.Support { + xWeight = q.At(t) + } + xWeights[kx-ix] = xWeight + totalXWeight += xWeight + } + for x := range xWeights[:jx-ix] { + xWeights[x] /= totalXWeight + } + + sy += float64(bias.Y) + sy -= 0.5 + iy := int(math.Floor(sy - yHalfWidth)) + if iy < sr.Min.Y { + iy = sr.Min.Y + } + jy := int(math.Ceil(sy + yHalfWidth)) + if jy > sr.Max.Y { + jy = sr.Max.Y + } + + totalYWeight := 0.0 + for ky := iy; ky < jy; ky++ { + yWeight := 0.0 + if t := abs((sy - float64(ky)) * yKernelArgScale); t < q.Support { + yWeight = q.At(t) + } + yWeights[ky-iy] = yWeight + totalYWeight += yWeight + } + for y := range yWeights[:jy-iy] { + yWeights[y] /= totalYWeight + } + + var pr, pg, pb float64 + for ky := iy; ky < jy; ky++ { + if yWeight := yWeights[ky-iy]; yWeight != 0 { + for kx := ix; kx < jx; kx++ { + if w := xWeights[kx-ix] * yWeight; w != 0 { + pi := (ky-src.Rect.Min.Y)*src.YStride + (kx - src.Rect.Min.X) + pj := (ky-src.Rect.Min.Y)*src.CStride + (kx - src.Rect.Min.X) + + // This is an inline version of image/color/ycbcr.go's YCbCr.RGBA method. + pyy1 := int(src.Y[pi]) * 0x10101 + pcb1 := int(src.Cb[pj]) - 128 + pcr1 := int(src.Cr[pj]) - 128 + pru := (pyy1 + 91881*pcr1) >> 8 + pgu := (pyy1 - 22554*pcb1 - 46802*pcr1) >> 8 + pbu := (pyy1 + 116130*pcb1) >> 8 + if pru < 0 { + pru = 0 + } else if pru > 0xffff { + pru = 0xffff + } + if pgu < 0 { + pgu = 0 + } else if pgu > 0xffff { + pgu = 0xffff + } + if pbu < 0 { + pbu = 0 + } else if pbu > 0xffff { + pbu = 0xffff + } + + pr += float64(pru) * w + pg += float64(pgu) * w + pb += float64(pbu) * w + } + } + } + } + dst.Pix[d+0] = uint8(fffftou(pr) >> 8) + dst.Pix[d+1] = uint8(fffftou(pg) >> 8) + dst.Pix[d+2] = uint8(fffftou(pb) >> 8) + dst.Pix[d+3] = 0xff + } + } +} + +func (q *Kernel) transform_RGBA_YCbCr422_Src(dst *image.RGBA, dr, adr image.Rectangle, d2s *f64.Aff3, src *image.YCbCr, sr image.Rectangle, bias image.Point, xscale, yscale float64, opts *Options) { + // When shrinking, broaden the effective kernel support so that we still + // visit every source pixel. + xHalfWidth, xKernelArgScale := q.Support, 1.0 + if xscale > 1 { + xHalfWidth *= xscale + xKernelArgScale = 1 / xscale + } + yHalfWidth, yKernelArgScale := q.Support, 1.0 + if yscale > 1 { + yHalfWidth *= yscale + yKernelArgScale = 1 / yscale + } + + xWeights := make([]float64, 1+2*int(math.Ceil(xHalfWidth))) + yWeights := make([]float64, 1+2*int(math.Ceil(yHalfWidth))) + + for dy := int32(adr.Min.Y); dy < int32(adr.Max.Y); dy++ { + dyf := float64(dr.Min.Y+int(dy)) + 0.5 + d := (dr.Min.Y+int(dy)-dst.Rect.Min.Y)*dst.Stride + (dr.Min.X+adr.Min.X-dst.Rect.Min.X)*4 + for dx := int32(adr.Min.X); dx < int32(adr.Max.X); dx, d = dx+1, d+4 { + dxf := float64(dr.Min.X+int(dx)) + 0.5 + sx := d2s[0]*dxf + d2s[1]*dyf + d2s[2] + sy := d2s[3]*dxf + d2s[4]*dyf + d2s[5] + if !(image.Point{int(sx) + bias.X, int(sy) + bias.Y}).In(sr) { + continue + } + + // TODO: adjust the bias so that we can use int(f) instead + // of math.Floor(f) and math.Ceil(f). + sx += float64(bias.X) + sx -= 0.5 + ix := int(math.Floor(sx - xHalfWidth)) + if ix < sr.Min.X { + ix = sr.Min.X + } + jx := int(math.Ceil(sx + xHalfWidth)) + if jx > sr.Max.X { + jx = sr.Max.X + } + + totalXWeight := 0.0 + for kx := ix; kx < jx; kx++ { + xWeight := 0.0 + if t := abs((sx - float64(kx)) * xKernelArgScale); t < q.Support { + xWeight = q.At(t) + } + xWeights[kx-ix] = xWeight + totalXWeight += xWeight + } + for x := range xWeights[:jx-ix] { + xWeights[x] /= totalXWeight + } + + sy += float64(bias.Y) + sy -= 0.5 + iy := int(math.Floor(sy - yHalfWidth)) + if iy < sr.Min.Y { + iy = sr.Min.Y + } + jy := int(math.Ceil(sy + yHalfWidth)) + if jy > sr.Max.Y { + jy = sr.Max.Y + } + + totalYWeight := 0.0 + for ky := iy; ky < jy; ky++ { + yWeight := 0.0 + if t := abs((sy - float64(ky)) * yKernelArgScale); t < q.Support { + yWeight = q.At(t) + } + yWeights[ky-iy] = yWeight + totalYWeight += yWeight + } + for y := range yWeights[:jy-iy] { + yWeights[y] /= totalYWeight + } + + var pr, pg, pb float64 + for ky := iy; ky < jy; ky++ { + if yWeight := yWeights[ky-iy]; yWeight != 0 { + for kx := ix; kx < jx; kx++ { + if w := xWeights[kx-ix] * yWeight; w != 0 { + pi := (ky-src.Rect.Min.Y)*src.YStride + (kx - src.Rect.Min.X) + pj := (ky-src.Rect.Min.Y)*src.CStride + ((kx)/2 - src.Rect.Min.X/2) + + // This is an inline version of image/color/ycbcr.go's YCbCr.RGBA method. + pyy1 := int(src.Y[pi]) * 0x10101 + pcb1 := int(src.Cb[pj]) - 128 + pcr1 := int(src.Cr[pj]) - 128 + pru := (pyy1 + 91881*pcr1) >> 8 + pgu := (pyy1 - 22554*pcb1 - 46802*pcr1) >> 8 + pbu := (pyy1 + 116130*pcb1) >> 8 + if pru < 0 { + pru = 0 + } else if pru > 0xffff { + pru = 0xffff + } + if pgu < 0 { + pgu = 0 + } else if pgu > 0xffff { + pgu = 0xffff + } + if pbu < 0 { + pbu = 0 + } else if pbu > 0xffff { + pbu = 0xffff + } + + pr += float64(pru) * w + pg += float64(pgu) * w + pb += float64(pbu) * w + } + } + } + } + dst.Pix[d+0] = uint8(fffftou(pr) >> 8) + dst.Pix[d+1] = uint8(fffftou(pg) >> 8) + dst.Pix[d+2] = uint8(fffftou(pb) >> 8) + dst.Pix[d+3] = 0xff + } + } +} + +func (q *Kernel) transform_RGBA_YCbCr420_Src(dst *image.RGBA, dr, adr image.Rectangle, d2s *f64.Aff3, src *image.YCbCr, sr image.Rectangle, bias image.Point, xscale, yscale float64, opts *Options) { + // When shrinking, broaden the effective kernel support so that we still + // visit every source pixel. + xHalfWidth, xKernelArgScale := q.Support, 1.0 + if xscale > 1 { + xHalfWidth *= xscale + xKernelArgScale = 1 / xscale + } + yHalfWidth, yKernelArgScale := q.Support, 1.0 + if yscale > 1 { + yHalfWidth *= yscale + yKernelArgScale = 1 / yscale + } + + xWeights := make([]float64, 1+2*int(math.Ceil(xHalfWidth))) + yWeights := make([]float64, 1+2*int(math.Ceil(yHalfWidth))) + + for dy := int32(adr.Min.Y); dy < int32(adr.Max.Y); dy++ { + dyf := float64(dr.Min.Y+int(dy)) + 0.5 + d := (dr.Min.Y+int(dy)-dst.Rect.Min.Y)*dst.Stride + (dr.Min.X+adr.Min.X-dst.Rect.Min.X)*4 + for dx := int32(adr.Min.X); dx < int32(adr.Max.X); dx, d = dx+1, d+4 { + dxf := float64(dr.Min.X+int(dx)) + 0.5 + sx := d2s[0]*dxf + d2s[1]*dyf + d2s[2] + sy := d2s[3]*dxf + d2s[4]*dyf + d2s[5] + if !(image.Point{int(sx) + bias.X, int(sy) + bias.Y}).In(sr) { + continue + } + + // TODO: adjust the bias so that we can use int(f) instead + // of math.Floor(f) and math.Ceil(f). + sx += float64(bias.X) + sx -= 0.5 + ix := int(math.Floor(sx - xHalfWidth)) + if ix < sr.Min.X { + ix = sr.Min.X + } + jx := int(math.Ceil(sx + xHalfWidth)) + if jx > sr.Max.X { + jx = sr.Max.X + } + + totalXWeight := 0.0 + for kx := ix; kx < jx; kx++ { + xWeight := 0.0 + if t := abs((sx - float64(kx)) * xKernelArgScale); t < q.Support { + xWeight = q.At(t) + } + xWeights[kx-ix] = xWeight + totalXWeight += xWeight + } + for x := range xWeights[:jx-ix] { + xWeights[x] /= totalXWeight + } + + sy += float64(bias.Y) + sy -= 0.5 + iy := int(math.Floor(sy - yHalfWidth)) + if iy < sr.Min.Y { + iy = sr.Min.Y + } + jy := int(math.Ceil(sy + yHalfWidth)) + if jy > sr.Max.Y { + jy = sr.Max.Y + } + + totalYWeight := 0.0 + for ky := iy; ky < jy; ky++ { + yWeight := 0.0 + if t := abs((sy - float64(ky)) * yKernelArgScale); t < q.Support { + yWeight = q.At(t) + } + yWeights[ky-iy] = yWeight + totalYWeight += yWeight + } + for y := range yWeights[:jy-iy] { + yWeights[y] /= totalYWeight + } + + var pr, pg, pb float64 + for ky := iy; ky < jy; ky++ { + if yWeight := yWeights[ky-iy]; yWeight != 0 { + for kx := ix; kx < jx; kx++ { + if w := xWeights[kx-ix] * yWeight; w != 0 { + pi := (ky-src.Rect.Min.Y)*src.YStride + (kx - src.Rect.Min.X) + pj := ((ky)/2-src.Rect.Min.Y/2)*src.CStride + ((kx)/2 - src.Rect.Min.X/2) + + // This is an inline version of image/color/ycbcr.go's YCbCr.RGBA method. + pyy1 := int(src.Y[pi]) * 0x10101 + pcb1 := int(src.Cb[pj]) - 128 + pcr1 := int(src.Cr[pj]) - 128 + pru := (pyy1 + 91881*pcr1) >> 8 + pgu := (pyy1 - 22554*pcb1 - 46802*pcr1) >> 8 + pbu := (pyy1 + 116130*pcb1) >> 8 + if pru < 0 { + pru = 0 + } else if pru > 0xffff { + pru = 0xffff + } + if pgu < 0 { + pgu = 0 + } else if pgu > 0xffff { + pgu = 0xffff + } + if pbu < 0 { + pbu = 0 + } else if pbu > 0xffff { + pbu = 0xffff + } + + pr += float64(pru) * w + pg += float64(pgu) * w + pb += float64(pbu) * w + } + } + } + } + dst.Pix[d+0] = uint8(fffftou(pr) >> 8) + dst.Pix[d+1] = uint8(fffftou(pg) >> 8) + dst.Pix[d+2] = uint8(fffftou(pb) >> 8) + dst.Pix[d+3] = 0xff + } + } +} + +func (q *Kernel) transform_RGBA_YCbCr440_Src(dst *image.RGBA, dr, adr image.Rectangle, d2s *f64.Aff3, src *image.YCbCr, sr image.Rectangle, bias image.Point, xscale, yscale float64, opts *Options) { + // When shrinking, broaden the effective kernel support so that we still + // visit every source pixel. + xHalfWidth, xKernelArgScale := q.Support, 1.0 + if xscale > 1 { + xHalfWidth *= xscale + xKernelArgScale = 1 / xscale + } + yHalfWidth, yKernelArgScale := q.Support, 1.0 + if yscale > 1 { + yHalfWidth *= yscale + yKernelArgScale = 1 / yscale + } + + xWeights := make([]float64, 1+2*int(math.Ceil(xHalfWidth))) + yWeights := make([]float64, 1+2*int(math.Ceil(yHalfWidth))) + + for dy := int32(adr.Min.Y); dy < int32(adr.Max.Y); dy++ { + dyf := float64(dr.Min.Y+int(dy)) + 0.5 + d := (dr.Min.Y+int(dy)-dst.Rect.Min.Y)*dst.Stride + (dr.Min.X+adr.Min.X-dst.Rect.Min.X)*4 + for dx := int32(adr.Min.X); dx < int32(adr.Max.X); dx, d = dx+1, d+4 { + dxf := float64(dr.Min.X+int(dx)) + 0.5 + sx := d2s[0]*dxf + d2s[1]*dyf + d2s[2] + sy := d2s[3]*dxf + d2s[4]*dyf + d2s[5] + if !(image.Point{int(sx) + bias.X, int(sy) + bias.Y}).In(sr) { + continue + } + + // TODO: adjust the bias so that we can use int(f) instead + // of math.Floor(f) and math.Ceil(f). + sx += float64(bias.X) + sx -= 0.5 + ix := int(math.Floor(sx - xHalfWidth)) + if ix < sr.Min.X { + ix = sr.Min.X + } + jx := int(math.Ceil(sx + xHalfWidth)) + if jx > sr.Max.X { + jx = sr.Max.X + } + + totalXWeight := 0.0 + for kx := ix; kx < jx; kx++ { + xWeight := 0.0 + if t := abs((sx - float64(kx)) * xKernelArgScale); t < q.Support { + xWeight = q.At(t) + } + xWeights[kx-ix] = xWeight + totalXWeight += xWeight + } + for x := range xWeights[:jx-ix] { + xWeights[x] /= totalXWeight + } + + sy += float64(bias.Y) + sy -= 0.5 + iy := int(math.Floor(sy - yHalfWidth)) + if iy < sr.Min.Y { + iy = sr.Min.Y + } + jy := int(math.Ceil(sy + yHalfWidth)) + if jy > sr.Max.Y { + jy = sr.Max.Y + } + + totalYWeight := 0.0 + for ky := iy; ky < jy; ky++ { + yWeight := 0.0 + if t := abs((sy - float64(ky)) * yKernelArgScale); t < q.Support { + yWeight = q.At(t) + } + yWeights[ky-iy] = yWeight + totalYWeight += yWeight + } + for y := range yWeights[:jy-iy] { + yWeights[y] /= totalYWeight + } + + var pr, pg, pb float64 + for ky := iy; ky < jy; ky++ { + if yWeight := yWeights[ky-iy]; yWeight != 0 { + for kx := ix; kx < jx; kx++ { + if w := xWeights[kx-ix] * yWeight; w != 0 { + pi := (ky-src.Rect.Min.Y)*src.YStride + (kx - src.Rect.Min.X) + pj := ((ky)/2-src.Rect.Min.Y/2)*src.CStride + (kx - src.Rect.Min.X) + + // This is an inline version of image/color/ycbcr.go's YCbCr.RGBA method. + pyy1 := int(src.Y[pi]) * 0x10101 + pcb1 := int(src.Cb[pj]) - 128 + pcr1 := int(src.Cr[pj]) - 128 + pru := (pyy1 + 91881*pcr1) >> 8 + pgu := (pyy1 - 22554*pcb1 - 46802*pcr1) >> 8 + pbu := (pyy1 + 116130*pcb1) >> 8 + if pru < 0 { + pru = 0 + } else if pru > 0xffff { + pru = 0xffff + } + if pgu < 0 { + pgu = 0 + } else if pgu > 0xffff { + pgu = 0xffff + } + if pbu < 0 { + pbu = 0 + } else if pbu > 0xffff { + pbu = 0xffff + } + + pr += float64(pru) * w + pg += float64(pgu) * w + pb += float64(pbu) * w + } + } + } + } + dst.Pix[d+0] = uint8(fffftou(pr) >> 8) + dst.Pix[d+1] = uint8(fffftou(pg) >> 8) + dst.Pix[d+2] = uint8(fffftou(pb) >> 8) + dst.Pix[d+3] = 0xff + } + } +} + +func (q *Kernel) transform_RGBA_Image_Over(dst *image.RGBA, dr, adr image.Rectangle, d2s *f64.Aff3, src image.Image, sr image.Rectangle, bias image.Point, xscale, yscale float64, opts *Options) { + // When shrinking, broaden the effective kernel support so that we still + // visit every source pixel. + xHalfWidth, xKernelArgScale := q.Support, 1.0 + if xscale > 1 { + xHalfWidth *= xscale + xKernelArgScale = 1 / xscale + } + yHalfWidth, yKernelArgScale := q.Support, 1.0 + if yscale > 1 { + yHalfWidth *= yscale + yKernelArgScale = 1 / yscale + } + + xWeights := make([]float64, 1+2*int(math.Ceil(xHalfWidth))) + yWeights := make([]float64, 1+2*int(math.Ceil(yHalfWidth))) + + for dy := int32(adr.Min.Y); dy < int32(adr.Max.Y); dy++ { + dyf := float64(dr.Min.Y+int(dy)) + 0.5 + d := (dr.Min.Y+int(dy)-dst.Rect.Min.Y)*dst.Stride + (dr.Min.X+adr.Min.X-dst.Rect.Min.X)*4 + for dx := int32(adr.Min.X); dx < int32(adr.Max.X); dx, d = dx+1, d+4 { + dxf := float64(dr.Min.X+int(dx)) + 0.5 + sx := d2s[0]*dxf + d2s[1]*dyf + d2s[2] + sy := d2s[3]*dxf + d2s[4]*dyf + d2s[5] + if !(image.Point{int(sx) + bias.X, int(sy) + bias.Y}).In(sr) { + continue + } + + // TODO: adjust the bias so that we can use int(f) instead + // of math.Floor(f) and math.Ceil(f). + sx += float64(bias.X) + sx -= 0.5 + ix := int(math.Floor(sx - xHalfWidth)) + if ix < sr.Min.X { + ix = sr.Min.X + } + jx := int(math.Ceil(sx + xHalfWidth)) + if jx > sr.Max.X { + jx = sr.Max.X + } + + totalXWeight := 0.0 + for kx := ix; kx < jx; kx++ { + xWeight := 0.0 + if t := abs((sx - float64(kx)) * xKernelArgScale); t < q.Support { + xWeight = q.At(t) + } + xWeights[kx-ix] = xWeight + totalXWeight += xWeight + } + for x := range xWeights[:jx-ix] { + xWeights[x] /= totalXWeight + } + + sy += float64(bias.Y) + sy -= 0.5 + iy := int(math.Floor(sy - yHalfWidth)) + if iy < sr.Min.Y { + iy = sr.Min.Y + } + jy := int(math.Ceil(sy + yHalfWidth)) + if jy > sr.Max.Y { + jy = sr.Max.Y + } + + totalYWeight := 0.0 + for ky := iy; ky < jy; ky++ { + yWeight := 0.0 + if t := abs((sy - float64(ky)) * yKernelArgScale); t < q.Support { + yWeight = q.At(t) + } + yWeights[ky-iy] = yWeight + totalYWeight += yWeight + } + for y := range yWeights[:jy-iy] { + yWeights[y] /= totalYWeight + } + + var pr, pg, pb, pa float64 + for ky := iy; ky < jy; ky++ { + if yWeight := yWeights[ky-iy]; yWeight != 0 { + for kx := ix; kx < jx; kx++ { + if w := xWeights[kx-ix] * yWeight; w != 0 { + pru, pgu, pbu, pau := src.At(kx, ky).RGBA() + pr += float64(pru) * w + pg += float64(pgu) * w + pb += float64(pbu) * w + pa += float64(pau) * w + } + } + } + } + + if pr > pa { + pr = pa + } + if pg > pa { + pg = pa + } + if pb > pa { + pb = pa + } + + pr0 := uint32(fffftou(pr)) + pg0 := uint32(fffftou(pg)) + pb0 := uint32(fffftou(pb)) + pa0 := uint32(fffftou(pa)) + pa1 := (0xffff - uint32(pa0)) * 0x101 + dst.Pix[d+0] = uint8((uint32(dst.Pix[d+0])*pa1/0xffff + pr0) >> 8) + dst.Pix[d+1] = uint8((uint32(dst.Pix[d+1])*pa1/0xffff + pg0) >> 8) + dst.Pix[d+2] = uint8((uint32(dst.Pix[d+2])*pa1/0xffff + pb0) >> 8) + dst.Pix[d+3] = uint8((uint32(dst.Pix[d+3])*pa1/0xffff + pa0) >> 8) + } + } +} + +func (q *Kernel) transform_RGBA_Image_Src(dst *image.RGBA, dr, adr image.Rectangle, d2s *f64.Aff3, src image.Image, sr image.Rectangle, bias image.Point, xscale, yscale float64, opts *Options) { + // When shrinking, broaden the effective kernel support so that we still + // visit every source pixel. + xHalfWidth, xKernelArgScale := q.Support, 1.0 + if xscale > 1 { + xHalfWidth *= xscale + xKernelArgScale = 1 / xscale + } + yHalfWidth, yKernelArgScale := q.Support, 1.0 + if yscale > 1 { + yHalfWidth *= yscale + yKernelArgScale = 1 / yscale + } + + xWeights := make([]float64, 1+2*int(math.Ceil(xHalfWidth))) + yWeights := make([]float64, 1+2*int(math.Ceil(yHalfWidth))) + + for dy := int32(adr.Min.Y); dy < int32(adr.Max.Y); dy++ { + dyf := float64(dr.Min.Y+int(dy)) + 0.5 + d := (dr.Min.Y+int(dy)-dst.Rect.Min.Y)*dst.Stride + (dr.Min.X+adr.Min.X-dst.Rect.Min.X)*4 + for dx := int32(adr.Min.X); dx < int32(adr.Max.X); dx, d = dx+1, d+4 { + dxf := float64(dr.Min.X+int(dx)) + 0.5 + sx := d2s[0]*dxf + d2s[1]*dyf + d2s[2] + sy := d2s[3]*dxf + d2s[4]*dyf + d2s[5] + if !(image.Point{int(sx) + bias.X, int(sy) + bias.Y}).In(sr) { + continue + } + + // TODO: adjust the bias so that we can use int(f) instead + // of math.Floor(f) and math.Ceil(f). + sx += float64(bias.X) + sx -= 0.5 + ix := int(math.Floor(sx - xHalfWidth)) + if ix < sr.Min.X { + ix = sr.Min.X + } + jx := int(math.Ceil(sx + xHalfWidth)) + if jx > sr.Max.X { + jx = sr.Max.X + } + + totalXWeight := 0.0 + for kx := ix; kx < jx; kx++ { + xWeight := 0.0 + if t := abs((sx - float64(kx)) * xKernelArgScale); t < q.Support { + xWeight = q.At(t) + } + xWeights[kx-ix] = xWeight + totalXWeight += xWeight + } + for x := range xWeights[:jx-ix] { + xWeights[x] /= totalXWeight + } + + sy += float64(bias.Y) + sy -= 0.5 + iy := int(math.Floor(sy - yHalfWidth)) + if iy < sr.Min.Y { + iy = sr.Min.Y + } + jy := int(math.Ceil(sy + yHalfWidth)) + if jy > sr.Max.Y { + jy = sr.Max.Y + } + + totalYWeight := 0.0 + for ky := iy; ky < jy; ky++ { + yWeight := 0.0 + if t := abs((sy - float64(ky)) * yKernelArgScale); t < q.Support { + yWeight = q.At(t) + } + yWeights[ky-iy] = yWeight + totalYWeight += yWeight + } + for y := range yWeights[:jy-iy] { + yWeights[y] /= totalYWeight + } + + var pr, pg, pb, pa float64 + for ky := iy; ky < jy; ky++ { + if yWeight := yWeights[ky-iy]; yWeight != 0 { + for kx := ix; kx < jx; kx++ { + if w := xWeights[kx-ix] * yWeight; w != 0 { + pru, pgu, pbu, pau := src.At(kx, ky).RGBA() + pr += float64(pru) * w + pg += float64(pgu) * w + pb += float64(pbu) * w + pa += float64(pau) * w + } + } + } + } + + if pr > pa { + pr = pa + } + if pg > pa { + pg = pa + } + if pb > pa { + pb = pa + } + + dst.Pix[d+0] = uint8(fffftou(pr) >> 8) + dst.Pix[d+1] = uint8(fffftou(pg) >> 8) + dst.Pix[d+2] = uint8(fffftou(pb) >> 8) + dst.Pix[d+3] = uint8(fffftou(pa) >> 8) + } + } +} + +func (q *Kernel) transform_Image_Image_Over(dst Image, dr, adr image.Rectangle, d2s *f64.Aff3, src image.Image, sr image.Rectangle, bias image.Point, xscale, yscale float64, opts *Options) { + // When shrinking, broaden the effective kernel support so that we still + // visit every source pixel. + xHalfWidth, xKernelArgScale := q.Support, 1.0 + if xscale > 1 { + xHalfWidth *= xscale + xKernelArgScale = 1 / xscale + } + yHalfWidth, yKernelArgScale := q.Support, 1.0 + if yscale > 1 { + yHalfWidth *= yscale + yKernelArgScale = 1 / yscale + } + + xWeights := make([]float64, 1+2*int(math.Ceil(xHalfWidth))) + yWeights := make([]float64, 1+2*int(math.Ceil(yHalfWidth))) + + srcMask, smp := opts.SrcMask, opts.SrcMaskP + dstMask, dmp := opts.DstMask, opts.DstMaskP + dstColorRGBA64 := &color.RGBA64{} + dstColor := color.Color(dstColorRGBA64) + for dy := int32(adr.Min.Y); dy < int32(adr.Max.Y); dy++ { + dyf := float64(dr.Min.Y+int(dy)) + 0.5 + for dx := int32(adr.Min.X); dx < int32(adr.Max.X); dx++ { + dxf := float64(dr.Min.X+int(dx)) + 0.5 + sx := d2s[0]*dxf + d2s[1]*dyf + d2s[2] + sy := d2s[3]*dxf + d2s[4]*dyf + d2s[5] + if !(image.Point{int(sx) + bias.X, int(sy) + bias.Y}).In(sr) { + continue + } + + // TODO: adjust the bias so that we can use int(f) instead + // of math.Floor(f) and math.Ceil(f). + sx += float64(bias.X) + sx -= 0.5 + ix := int(math.Floor(sx - xHalfWidth)) + if ix < sr.Min.X { + ix = sr.Min.X + } + jx := int(math.Ceil(sx + xHalfWidth)) + if jx > sr.Max.X { + jx = sr.Max.X + } + + totalXWeight := 0.0 + for kx := ix; kx < jx; kx++ { + xWeight := 0.0 + if t := abs((sx - float64(kx)) * xKernelArgScale); t < q.Support { + xWeight = q.At(t) + } + xWeights[kx-ix] = xWeight + totalXWeight += xWeight + } + for x := range xWeights[:jx-ix] { + xWeights[x] /= totalXWeight + } + + sy += float64(bias.Y) + sy -= 0.5 + iy := int(math.Floor(sy - yHalfWidth)) + if iy < sr.Min.Y { + iy = sr.Min.Y + } + jy := int(math.Ceil(sy + yHalfWidth)) + if jy > sr.Max.Y { + jy = sr.Max.Y + } + + totalYWeight := 0.0 + for ky := iy; ky < jy; ky++ { + yWeight := 0.0 + if t := abs((sy - float64(ky)) * yKernelArgScale); t < q.Support { + yWeight = q.At(t) + } + yWeights[ky-iy] = yWeight + totalYWeight += yWeight + } + for y := range yWeights[:jy-iy] { + yWeights[y] /= totalYWeight + } + + var pr, pg, pb, pa float64 + for ky := iy; ky < jy; ky++ { + if yWeight := yWeights[ky-iy]; yWeight != 0 { + for kx := ix; kx < jx; kx++ { + if w := xWeights[kx-ix] * yWeight; w != 0 { + pru, pgu, pbu, pau := src.At(kx, ky).RGBA() + if srcMask != nil { + _, _, _, ma := srcMask.At(smp.X+kx, smp.Y+ky).RGBA() + pru = pru * ma / 0xffff + pgu = pgu * ma / 0xffff + pbu = pbu * ma / 0xffff + pau = pau * ma / 0xffff + } + pr += float64(pru) * w + pg += float64(pgu) * w + pb += float64(pbu) * w + pa += float64(pau) * w + } + } + } + } + + if pr > pa { + pr = pa + } + if pg > pa { + pg = pa + } + if pb > pa { + pb = pa + } + + qr, qg, qb, qa := dst.At(dr.Min.X+int(dx), dr.Min.Y+int(dy)).RGBA() + pr0 := uint32(fffftou(pr)) + pg0 := uint32(fffftou(pg)) + pb0 := uint32(fffftou(pb)) + pa0 := uint32(fffftou(pa)) + if dstMask != nil { + _, _, _, ma := dstMask.At(dmp.X+dr.Min.X+int(dx), dmp.Y+dr.Min.Y+int(dy)).RGBA() + pr0 = pr0 * ma / 0xffff + pg0 = pg0 * ma / 0xffff + pb0 = pb0 * ma / 0xffff + pa0 = pa0 * ma / 0xffff + } + pa1 := 0xffff - pa0 + dstColorRGBA64.R = uint16(qr*pa1/0xffff + pr0) + dstColorRGBA64.G = uint16(qg*pa1/0xffff + pg0) + dstColorRGBA64.B = uint16(qb*pa1/0xffff + pb0) + dstColorRGBA64.A = uint16(qa*pa1/0xffff + pa0) + dst.Set(dr.Min.X+int(dx), dr.Min.Y+int(dy), dstColor) + } + } +} + +func (q *Kernel) transform_Image_Image_Src(dst Image, dr, adr image.Rectangle, d2s *f64.Aff3, src image.Image, sr image.Rectangle, bias image.Point, xscale, yscale float64, opts *Options) { + // When shrinking, broaden the effective kernel support so that we still + // visit every source pixel. + xHalfWidth, xKernelArgScale := q.Support, 1.0 + if xscale > 1 { + xHalfWidth *= xscale + xKernelArgScale = 1 / xscale + } + yHalfWidth, yKernelArgScale := q.Support, 1.0 + if yscale > 1 { + yHalfWidth *= yscale + yKernelArgScale = 1 / yscale + } + + xWeights := make([]float64, 1+2*int(math.Ceil(xHalfWidth))) + yWeights := make([]float64, 1+2*int(math.Ceil(yHalfWidth))) + + srcMask, smp := opts.SrcMask, opts.SrcMaskP + dstMask, dmp := opts.DstMask, opts.DstMaskP + dstColorRGBA64 := &color.RGBA64{} + dstColor := color.Color(dstColorRGBA64) + for dy := int32(adr.Min.Y); dy < int32(adr.Max.Y); dy++ { + dyf := float64(dr.Min.Y+int(dy)) + 0.5 + for dx := int32(adr.Min.X); dx < int32(adr.Max.X); dx++ { + dxf := float64(dr.Min.X+int(dx)) + 0.5 + sx := d2s[0]*dxf + d2s[1]*dyf + d2s[2] + sy := d2s[3]*dxf + d2s[4]*dyf + d2s[5] + if !(image.Point{int(sx) + bias.X, int(sy) + bias.Y}).In(sr) { + continue + } + + // TODO: adjust the bias so that we can use int(f) instead + // of math.Floor(f) and math.Ceil(f). + sx += float64(bias.X) + sx -= 0.5 + ix := int(math.Floor(sx - xHalfWidth)) + if ix < sr.Min.X { + ix = sr.Min.X + } + jx := int(math.Ceil(sx + xHalfWidth)) + if jx > sr.Max.X { + jx = sr.Max.X + } + + totalXWeight := 0.0 + for kx := ix; kx < jx; kx++ { + xWeight := 0.0 + if t := abs((sx - float64(kx)) * xKernelArgScale); t < q.Support { + xWeight = q.At(t) + } + xWeights[kx-ix] = xWeight + totalXWeight += xWeight + } + for x := range xWeights[:jx-ix] { + xWeights[x] /= totalXWeight + } + + sy += float64(bias.Y) + sy -= 0.5 + iy := int(math.Floor(sy - yHalfWidth)) + if iy < sr.Min.Y { + iy = sr.Min.Y + } + jy := int(math.Ceil(sy + yHalfWidth)) + if jy > sr.Max.Y { + jy = sr.Max.Y + } + + totalYWeight := 0.0 + for ky := iy; ky < jy; ky++ { + yWeight := 0.0 + if t := abs((sy - float64(ky)) * yKernelArgScale); t < q.Support { + yWeight = q.At(t) + } + yWeights[ky-iy] = yWeight + totalYWeight += yWeight + } + for y := range yWeights[:jy-iy] { + yWeights[y] /= totalYWeight + } + + var pr, pg, pb, pa float64 + for ky := iy; ky < jy; ky++ { + if yWeight := yWeights[ky-iy]; yWeight != 0 { + for kx := ix; kx < jx; kx++ { + if w := xWeights[kx-ix] * yWeight; w != 0 { + pru, pgu, pbu, pau := src.At(kx, ky).RGBA() + if srcMask != nil { + _, _, _, ma := srcMask.At(smp.X+kx, smp.Y+ky).RGBA() + pru = pru * ma / 0xffff + pgu = pgu * ma / 0xffff + pbu = pbu * ma / 0xffff + pau = pau * ma / 0xffff + } + pr += float64(pru) * w + pg += float64(pgu) * w + pb += float64(pbu) * w + pa += float64(pau) * w + } + } + } + } + + if pr > pa { + pr = pa + } + if pg > pa { + pg = pa + } + if pb > pa { + pb = pa + } + + if dstMask != nil { + qr, qg, qb, qa := dst.At(dr.Min.X+int(dx), dr.Min.Y+int(dy)).RGBA() + _, _, _, ma := dstMask.At(dmp.X+dr.Min.X+int(dx), dmp.Y+dr.Min.Y+int(dy)).RGBA() + pr := uint32(fffftou(pr)) * ma / 0xffff + pg := uint32(fffftou(pg)) * ma / 0xffff + pb := uint32(fffftou(pb)) * ma / 0xffff + pa := uint32(fffftou(pa)) * ma / 0xffff + pa1 := 0xffff - ma + dstColorRGBA64.R = uint16(qr*pa1/0xffff + pr) + dstColorRGBA64.G = uint16(qg*pa1/0xffff + pg) + dstColorRGBA64.B = uint16(qb*pa1/0xffff + pb) + dstColorRGBA64.A = uint16(qa*pa1/0xffff + pa) + dst.Set(dr.Min.X+int(dx), dr.Min.Y+int(dy), dstColor) + } else { + dstColorRGBA64.R = fffftou(pr) + dstColorRGBA64.G = fffftou(pg) + dstColorRGBA64.B = fffftou(pb) + dstColorRGBA64.A = fffftou(pa) + dst.Set(dr.Min.X+int(dx), dr.Min.Y+int(dy), dstColor) + } + } + } +} diff --git a/vendor/golang.org/x/image/draw/scale.go b/vendor/golang.org/x/image/draw/scale.go new file mode 100644 index 00000000..00121a12 --- /dev/null +++ b/vendor/golang.org/x/image/draw/scale.go @@ -0,0 +1,525 @@ +// Copyright 2015 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:generate go run gen.go + +package draw + +import ( + "image" + "image/color" + "math" + "sync" + + "golang.org/x/image/math/f64" +) + +// Copy copies the part of the source image defined by src and sr and writes +// the result of a Porter-Duff composition to the part of the destination image +// defined by dst and the translation of sr so that sr.Min translates to dp. +func Copy(dst Image, dp image.Point, src image.Image, sr image.Rectangle, op Op, opts *Options) { + var o Options + if opts != nil { + o = *opts + } + dr := sr.Add(dp.Sub(sr.Min)) + if o.DstMask == nil { + DrawMask(dst, dr, src, sr.Min, o.SrcMask, o.SrcMaskP.Add(sr.Min), op) + } else { + NearestNeighbor.Scale(dst, dr, src, sr, op, opts) + } +} + +// Scaler scales the part of the source image defined by src and sr and writes +// the result of a Porter-Duff composition to the part of the destination image +// defined by dst and dr. +// +// A Scaler is safe to use concurrently. +type Scaler interface { + Scale(dst Image, dr image.Rectangle, src image.Image, sr image.Rectangle, op Op, opts *Options) +} + +// Transformer transforms the part of the source image defined by src and sr +// and writes the result of a Porter-Duff composition to the part of the +// destination image defined by dst and the affine transform m applied to sr. +// +// For example, if m is the matrix +// +// m00 m01 m02 +// m10 m11 m12 +// +// then the src-space point (sx, sy) maps to the dst-space point +// (m00*sx + m01*sy + m02, m10*sx + m11*sy + m12). +// +// A Transformer is safe to use concurrently. +type Transformer interface { + Transform(dst Image, m f64.Aff3, src image.Image, sr image.Rectangle, op Op, opts *Options) +} + +// Options are optional parameters to Copy, Scale and Transform. +// +// A nil *Options means to use the default (zero) values of each field. +type Options struct { + // Masks limit what parts of the dst image are drawn to and what parts of + // the src image are drawn from. + // + // A dst or src mask image having a zero alpha (transparent) pixel value in + // the respective coordinate space means that dst pixel is entirely + // unaffected or that src pixel is considered transparent black. A full + // alpha (opaque) value means that the dst pixel is maximally affected or + // the src pixel contributes maximally. The default values, nil, are + // equivalent to fully opaque, infinitely large mask images. + // + // The DstMask is otherwise known as a clip mask, and its pixels map 1:1 to + // the dst image's pixels. DstMaskP in DstMask space corresponds to + // image.Point{X:0, Y:0} in dst space. For example, when limiting + // repainting to a 'dirty rectangle', use that image.Rectangle and a zero + // image.Point as the DstMask and DstMaskP. + // + // The SrcMask's pixels map 1:1 to the src image's pixels. SrcMaskP in + // SrcMask space corresponds to image.Point{X:0, Y:0} in src space. For + // example, when drawing font glyphs in a uniform color, use an + // *image.Uniform as the src, and use the glyph atlas image and the + // per-glyph offset as SrcMask and SrcMaskP: + // Copy(dst, dp, image.NewUniform(color), image.Rect(0, 0, glyphWidth, glyphHeight), &Options{ + // SrcMask: glyphAtlas, + // SrcMaskP: glyphOffset, + // }) + DstMask image.Image + DstMaskP image.Point + SrcMask image.Image + SrcMaskP image.Point + + // TODO: a smooth vs sharp edges option, for arbitrary rotations? +} + +// Interpolator is an interpolation algorithm, when dst and src pixels don't +// have a 1:1 correspondence. +// +// Of the interpolators provided by this package: +// - NearestNeighbor is fast but usually looks worst. +// - CatmullRom is slow but usually looks best. +// - ApproxBiLinear has reasonable speed and quality. +// +// The time taken depends on the size of dr. For kernel interpolators, the +// speed also depends on the size of sr, and so are often slower than +// non-kernel interpolators, especially when scaling down. +type Interpolator interface { + Scaler + Transformer +} + +// Kernel is an interpolator that blends source pixels weighted by a symmetric +// kernel function. +type Kernel struct { + // Support is the kernel support and must be >= 0. At(t) is assumed to be + // zero when t >= Support. + Support float64 + // At is the kernel function. It will only be called with t in the + // range [0, Support). + At func(t float64) float64 +} + +// Scale implements the Scaler interface. +func (q *Kernel) Scale(dst Image, dr image.Rectangle, src image.Image, sr image.Rectangle, op Op, opts *Options) { + q.newScaler(dr.Dx(), dr.Dy(), sr.Dx(), sr.Dy(), false).Scale(dst, dr, src, sr, op, opts) +} + +// NewScaler returns a Scaler that is optimized for scaling multiple times with +// the same fixed destination and source width and height. +func (q *Kernel) NewScaler(dw, dh, sw, sh int) Scaler { + return q.newScaler(dw, dh, sw, sh, true) +} + +func (q *Kernel) newScaler(dw, dh, sw, sh int, usePool bool) Scaler { + z := &kernelScaler{ + kernel: q, + dw: int32(dw), + dh: int32(dh), + sw: int32(sw), + sh: int32(sh), + horizontal: newDistrib(q, int32(dw), int32(sw)), + vertical: newDistrib(q, int32(dh), int32(sh)), + } + if usePool { + z.pool.New = func() interface{} { + tmp := z.makeTmpBuf() + return &tmp + } + } + return z +} + +var ( + // NearestNeighbor is the nearest neighbor interpolator. It is very fast, + // but usually gives very low quality results. When scaling up, the result + // will look 'blocky'. + NearestNeighbor = Interpolator(nnInterpolator{}) + + // ApproxBiLinear is a mixture of the nearest neighbor and bi-linear + // interpolators. It is fast, but usually gives medium quality results. + // + // It implements bi-linear interpolation when upscaling and a bi-linear + // blend of the 4 nearest neighbor pixels when downscaling. This yields + // nicer quality than nearest neighbor interpolation when upscaling, but + // the time taken is independent of the number of source pixels, unlike the + // bi-linear interpolator. When downscaling a large image, the performance + // difference can be significant. + ApproxBiLinear = Interpolator(ablInterpolator{}) + + // BiLinear is the tent kernel. It is slow, but usually gives high quality + // results. + BiLinear = &Kernel{1, func(t float64) float64 { + return 1 - t + }} + + // CatmullRom is the Catmull-Rom kernel. It is very slow, but usually gives + // very high quality results. + // + // It is an instance of the more general cubic BC-spline kernel with parameters + // B=0 and C=0.5. See Mitchell and Netravali, "Reconstruction Filters in + // Computer Graphics", Computer Graphics, Vol. 22, No. 4, pp. 221-228. + CatmullRom = &Kernel{2, func(t float64) float64 { + if t < 1 { + return (1.5*t-2.5)*t*t + 1 + } + return ((-0.5*t+2.5)*t-4)*t + 2 + }} + + // TODO: a Kaiser-Bessel kernel? +) + +type nnInterpolator struct{} + +type ablInterpolator struct{} + +type kernelScaler struct { + kernel *Kernel + dw, dh, sw, sh int32 + horizontal, vertical distrib + pool sync.Pool +} + +func (z *kernelScaler) makeTmpBuf() [][4]float64 { + return make([][4]float64, z.dw*z.sh) +} + +// source is a range of contribs, their inverse total weight, and that ITW +// divided by 0xffff. +type source struct { + i, j int32 + invTotalWeight float64 + invTotalWeightFFFF float64 +} + +// contrib is the weight of a column or row. +type contrib struct { + coord int32 + weight float64 +} + +// distrib measures how source pixels are distributed over destination pixels. +type distrib struct { + // sources are what contribs each column or row in the source image owns, + // and the total weight of those contribs. + sources []source + // contribs are the contributions indexed by sources[s].i and sources[s].j. + contribs []contrib +} + +// newDistrib returns a distrib that distributes sw source columns (or rows) +// over dw destination columns (or rows). +func newDistrib(q *Kernel, dw, sw int32) distrib { + scale := float64(sw) / float64(dw) + halfWidth, kernelArgScale := q.Support, 1.0 + // When shrinking, broaden the effective kernel support so that we still + // visit every source pixel. + if scale > 1 { + halfWidth *= scale + kernelArgScale = 1 / scale + } + + // Make the sources slice, one source for each column or row, and temporarily + // appropriate its elements' fields so that invTotalWeight is the scaled + // coordinate of the source column or row, and i and j are the lower and + // upper bounds of the range of destination columns or rows affected by the + // source column or row. + n, sources := int32(0), make([]source, dw) + for x := range sources { + center := (float64(x)+0.5)*scale - 0.5 + i := int32(math.Floor(center - halfWidth)) + if i < 0 { + i = 0 + } + j := int32(math.Ceil(center + halfWidth)) + if j > sw { + j = sw + if j < i { + j = i + } + } + sources[x] = source{i: i, j: j, invTotalWeight: center} + n += j - i + } + + contribs := make([]contrib, 0, n) + for k, b := range sources { + totalWeight := 0.0 + l := int32(len(contribs)) + for coord := b.i; coord < b.j; coord++ { + t := abs((b.invTotalWeight - float64(coord)) * kernelArgScale) + if t >= q.Support { + continue + } + weight := q.At(t) + if weight == 0 { + continue + } + totalWeight += weight + contribs = append(contribs, contrib{coord, weight}) + } + totalWeight = 1 / totalWeight + sources[k] = source{ + i: l, + j: int32(len(contribs)), + invTotalWeight: totalWeight, + invTotalWeightFFFF: totalWeight / 0xffff, + } + } + + return distrib{sources, contribs} +} + +// abs is like math.Abs, but it doesn't care about negative zero, infinities or +// NaNs. +func abs(f float64) float64 { + if f < 0 { + f = -f + } + return f +} + +// ftou converts the range [0.0, 1.0] to [0, 0xffff]. +func ftou(f float64) uint16 { + i := int32(0xffff*f + 0.5) + if i > 0xffff { + return 0xffff + } + if i > 0 { + return uint16(i) + } + return 0 +} + +// fffftou converts the range [0.0, 65535.0] to [0, 0xffff]. +func fffftou(f float64) uint16 { + i := int32(f + 0.5) + if i > 0xffff { + return 0xffff + } + if i > 0 { + return uint16(i) + } + return 0 +} + +// invert returns the inverse of m. +// +// TODO: move this into the f64 package, once we work out the convention for +// matrix methods in that package: do they modify the receiver, take a dst +// pointer argument, or return a new value? +func invert(m *f64.Aff3) f64.Aff3 { + m00 := +m[3*1+1] + m01 := -m[3*0+1] + m02 := +m[3*1+2]*m[3*0+1] - m[3*1+1]*m[3*0+2] + m10 := -m[3*1+0] + m11 := +m[3*0+0] + m12 := +m[3*1+0]*m[3*0+2] - m[3*1+2]*m[3*0+0] + + det := m00*m11 - m10*m01 + + return f64.Aff3{ + m00 / det, + m01 / det, + m02 / det, + m10 / det, + m11 / det, + m12 / det, + } +} + +func matMul(p, q *f64.Aff3) f64.Aff3 { + return f64.Aff3{ + p[3*0+0]*q[3*0+0] + p[3*0+1]*q[3*1+0], + p[3*0+0]*q[3*0+1] + p[3*0+1]*q[3*1+1], + p[3*0+0]*q[3*0+2] + p[3*0+1]*q[3*1+2] + p[3*0+2], + p[3*1+0]*q[3*0+0] + p[3*1+1]*q[3*1+0], + p[3*1+0]*q[3*0+1] + p[3*1+1]*q[3*1+1], + p[3*1+0]*q[3*0+2] + p[3*1+1]*q[3*1+2] + p[3*1+2], + } +} + +// transformRect returns a rectangle dr that contains sr transformed by s2d. +func transformRect(s2d *f64.Aff3, sr *image.Rectangle) (dr image.Rectangle) { + ps := [...]image.Point{ + {sr.Min.X, sr.Min.Y}, + {sr.Max.X, sr.Min.Y}, + {sr.Min.X, sr.Max.Y}, + {sr.Max.X, sr.Max.Y}, + } + for i, p := range ps { + sxf := float64(p.X) + syf := float64(p.Y) + dx := int(math.Floor(s2d[0]*sxf + s2d[1]*syf + s2d[2])) + dy := int(math.Floor(s2d[3]*sxf + s2d[4]*syf + s2d[5])) + + // The +1 adjustments below are because an image.Rectangle is inclusive + // on the low end but exclusive on the high end. + + if i == 0 { + dr = image.Rectangle{ + Min: image.Point{dx + 0, dy + 0}, + Max: image.Point{dx + 1, dy + 1}, + } + continue + } + + if dr.Min.X > dx { + dr.Min.X = dx + } + dx++ + if dr.Max.X < dx { + dr.Max.X = dx + } + + if dr.Min.Y > dy { + dr.Min.Y = dy + } + dy++ + if dr.Max.Y < dy { + dr.Max.Y = dy + } + } + return dr +} + +func clipAffectedDestRect(adr image.Rectangle, dstMask image.Image, dstMaskP image.Point) (image.Rectangle, image.Image) { + if dstMask == nil { + return adr, nil + } + if r, ok := dstMask.(image.Rectangle); ok { + return adr.Intersect(r.Sub(dstMaskP)), nil + } + // TODO: clip to dstMask.Bounds() if the color model implies that out-of-bounds means 0 alpha? + return adr, dstMask +} + +func transform_Uniform(dst Image, dr, adr image.Rectangle, d2s *f64.Aff3, src *image.Uniform, sr image.Rectangle, bias image.Point, op Op) { + switch op { + case Over: + switch dst := dst.(type) { + case *image.RGBA: + pr, pg, pb, pa := src.C.RGBA() + pa1 := (0xffff - pa) * 0x101 + + for dy := int32(adr.Min.Y); dy < int32(adr.Max.Y); dy++ { + dyf := float64(dr.Min.Y+int(dy)) + 0.5 + d := dst.PixOffset(dr.Min.X+adr.Min.X, dr.Min.Y+int(dy)) + for dx := int32(adr.Min.X); dx < int32(adr.Max.X); dx, d = dx+1, d+4 { + dxf := float64(dr.Min.X+int(dx)) + 0.5 + sx0 := int(d2s[0]*dxf+d2s[1]*dyf+d2s[2]) + bias.X + sy0 := int(d2s[3]*dxf+d2s[4]*dyf+d2s[5]) + bias.Y + if !(image.Point{sx0, sy0}).In(sr) { + continue + } + dst.Pix[d+0] = uint8((uint32(dst.Pix[d+0])*pa1/0xffff + pr) >> 8) + dst.Pix[d+1] = uint8((uint32(dst.Pix[d+1])*pa1/0xffff + pg) >> 8) + dst.Pix[d+2] = uint8((uint32(dst.Pix[d+2])*pa1/0xffff + pb) >> 8) + dst.Pix[d+3] = uint8((uint32(dst.Pix[d+3])*pa1/0xffff + pa) >> 8) + } + } + + default: + pr, pg, pb, pa := src.C.RGBA() + pa1 := 0xffff - pa + dstColorRGBA64 := &color.RGBA64{} + dstColor := color.Color(dstColorRGBA64) + + for dy := int32(adr.Min.Y); dy < int32(adr.Max.Y); dy++ { + dyf := float64(dr.Min.Y+int(dy)) + 0.5 + for dx := int32(adr.Min.X); dx < int32(adr.Max.X); dx++ { + dxf := float64(dr.Min.X+int(dx)) + 0.5 + sx0 := int(d2s[0]*dxf+d2s[1]*dyf+d2s[2]) + bias.X + sy0 := int(d2s[3]*dxf+d2s[4]*dyf+d2s[5]) + bias.Y + if !(image.Point{sx0, sy0}).In(sr) { + continue + } + qr, qg, qb, qa := dst.At(dr.Min.X+int(dx), dr.Min.Y+int(dy)).RGBA() + dstColorRGBA64.R = uint16(qr*pa1/0xffff + pr) + dstColorRGBA64.G = uint16(qg*pa1/0xffff + pg) + dstColorRGBA64.B = uint16(qb*pa1/0xffff + pb) + dstColorRGBA64.A = uint16(qa*pa1/0xffff + pa) + dst.Set(dr.Min.X+int(dx), dr.Min.Y+int(dy), dstColor) + } + } + } + + case Src: + switch dst := dst.(type) { + case *image.RGBA: + pr, pg, pb, pa := src.C.RGBA() + pr8 := uint8(pr >> 8) + pg8 := uint8(pg >> 8) + pb8 := uint8(pb >> 8) + pa8 := uint8(pa >> 8) + + for dy := int32(adr.Min.Y); dy < int32(adr.Max.Y); dy++ { + dyf := float64(dr.Min.Y+int(dy)) + 0.5 + d := dst.PixOffset(dr.Min.X+adr.Min.X, dr.Min.Y+int(dy)) + for dx := int32(adr.Min.X); dx < int32(adr.Max.X); dx, d = dx+1, d+4 { + dxf := float64(dr.Min.X+int(dx)) + 0.5 + sx0 := int(d2s[0]*dxf+d2s[1]*dyf+d2s[2]) + bias.X + sy0 := int(d2s[3]*dxf+d2s[4]*dyf+d2s[5]) + bias.Y + if !(image.Point{sx0, sy0}).In(sr) { + continue + } + dst.Pix[d+0] = pr8 + dst.Pix[d+1] = pg8 + dst.Pix[d+2] = pb8 + dst.Pix[d+3] = pa8 + } + } + + default: + pr, pg, pb, pa := src.C.RGBA() + dstColorRGBA64 := &color.RGBA64{ + uint16(pr), + uint16(pg), + uint16(pb), + uint16(pa), + } + dstColor := color.Color(dstColorRGBA64) + + for dy := int32(adr.Min.Y); dy < int32(adr.Max.Y); dy++ { + dyf := float64(dr.Min.Y+int(dy)) + 0.5 + for dx := int32(adr.Min.X); dx < int32(adr.Max.X); dx++ { + dxf := float64(dr.Min.X+int(dx)) + 0.5 + sx0 := int(d2s[0]*dxf+d2s[1]*dyf+d2s[2]) + bias.X + sy0 := int(d2s[3]*dxf+d2s[4]*dyf+d2s[5]) + bias.Y + if !(image.Point{sx0, sy0}).In(sr) { + continue + } + dst.Set(dr.Min.X+int(dx), dr.Min.Y+int(dy), dstColor) + } + } + } + } +} + +func opaque(m image.Image) bool { + o, ok := m.(interface { + Opaque() bool + }) + return ok && o.Opaque() +} diff --git a/vendor/golang.org/x/image/font/font.go b/vendor/golang.org/x/image/font/font.go new file mode 100644 index 00000000..d1a75350 --- /dev/null +++ b/vendor/golang.org/x/image/font/font.go @@ -0,0 +1,373 @@ +// Copyright 2015 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package font defines an interface for font faces, for drawing text on an +// image. +// +// Other packages provide font face implementations. For example, a truetype +// package would provide one based on .ttf font files. +package font // import "golang.org/x/image/font" + +import ( + "image" + "image/draw" + "io" + "unicode/utf8" + + "golang.org/x/image/math/fixed" +) + +// TODO: who is responsible for caches (glyph images, glyph indices, kerns)? +// The Drawer or the Face? + +// Face is a font face. Its glyphs are often derived from a font file, such as +// "Comic_Sans_MS.ttf", but a face has a specific size, style, weight and +// hinting. For example, the 12pt and 18pt versions of Comic Sans are two +// different faces, even if derived from the same font file. +// +// A Face is not safe for concurrent use by multiple goroutines, as its methods +// may re-use implementation-specific caches and mask image buffers. +// +// To create a Face, look to other packages that implement specific font file +// formats. +type Face interface { + io.Closer + + // Glyph returns the draw.DrawMask parameters (dr, mask, maskp) to draw r's + // glyph at the sub-pixel destination location dot, and that glyph's + // advance width. + // + // It returns !ok if the face does not contain a glyph for r. + // + // The contents of the mask image returned by one Glyph call may change + // after the next Glyph call. Callers that want to cache the mask must make + // a copy. + Glyph(dot fixed.Point26_6, r rune) ( + dr image.Rectangle, mask image.Image, maskp image.Point, advance fixed.Int26_6, ok bool) + + // GlyphBounds returns the bounding box of r's glyph, drawn at a dot equal + // to the origin, and that glyph's advance width. + // + // It returns !ok if the face does not contain a glyph for r. + // + // The glyph's ascent and descent are equal to -bounds.Min.Y and + // +bounds.Max.Y. The glyph's left-side and right-side bearings are equal + // to bounds.Min.X and advance-bounds.Max.X. A visual depiction of what + // these metrics are is at + // https://developer.apple.com/library/archive/documentation/TextFonts/Conceptual/CocoaTextArchitecture/Art/glyphterms_2x.png + GlyphBounds(r rune) (bounds fixed.Rectangle26_6, advance fixed.Int26_6, ok bool) + + // GlyphAdvance returns the advance width of r's glyph. + // + // It returns !ok if the face does not contain a glyph for r. + GlyphAdvance(r rune) (advance fixed.Int26_6, ok bool) + + // Kern returns the horizontal adjustment for the kerning pair (r0, r1). A + // positive kern means to move the glyphs further apart. + Kern(r0, r1 rune) fixed.Int26_6 + + // Metrics returns the metrics for this Face. + Metrics() Metrics + + // TODO: ColoredGlyph for various emoji? + // TODO: Ligatures? Shaping? +} + +// Metrics holds the metrics for a Face. A visual depiction is at +// https://developer.apple.com/library/mac/documentation/TextFonts/Conceptual/CocoaTextArchitecture/Art/glyph_metrics_2x.png +type Metrics struct { + // Height is the recommended amount of vertical space between two lines of + // text. + Height fixed.Int26_6 + + // Ascent is the distance from the top of a line to its baseline. + Ascent fixed.Int26_6 + + // Descent is the distance from the bottom of a line to its baseline. The + // value is typically positive, even though a descender goes below the + // baseline. + Descent fixed.Int26_6 + + // XHeight is the distance from the top of non-ascending lowercase letters + // to the baseline. + XHeight fixed.Int26_6 + + // CapHeight is the distance from the top of uppercase letters to the + // baseline. + CapHeight fixed.Int26_6 + + // CaretSlope is the slope of a caret as a vector with the Y axis pointing up. + // The slope {0, 1} is the vertical caret. + CaretSlope image.Point +} + +// Drawer draws text on a destination image. +// +// A Drawer is not safe for concurrent use by multiple goroutines, since its +// Face is not. +type Drawer struct { + // Dst is the destination image. + Dst draw.Image + // Src is the source image. + Src image.Image + // Face provides the glyph mask images. + Face Face + // Dot is the baseline location to draw the next glyph. The majority of the + // affected pixels will be above and to the right of the dot, but some may + // be below or to the left. For example, drawing a 'j' in an italic face + // may affect pixels below and to the left of the dot. + Dot fixed.Point26_6 + + // TODO: Clip image.Image? + // TODO: SrcP image.Point for Src images other than *image.Uniform? How + // does it get updated during DrawString? +} + +// TODO: should DrawString return the last rune drawn, so the next DrawString +// call can kern beforehand? Or should that be the responsibility of the caller +// if they really want to do that, since they have to explicitly shift d.Dot +// anyway? What if ligatures span more than two runes? What if grapheme +// clusters span multiple runes? +// +// TODO: do we assume that the input is in any particular Unicode Normalization +// Form? +// +// TODO: have DrawRunes(s []rune)? DrawRuneReader(io.RuneReader)?? If we take +// io.RuneReader, we can't assume that we can rewind the stream. +// +// TODO: how does this work with line breaking: drawing text up until a +// vertical line? Should DrawString return the number of runes drawn? + +// DrawBytes draws s at the dot and advances the dot's location. +// +// It is equivalent to DrawString(string(s)) but may be more efficient. +func (d *Drawer) DrawBytes(s []byte) { + prevC := rune(-1) + for len(s) > 0 { + c, size := utf8.DecodeRune(s) + s = s[size:] + if prevC >= 0 { + d.Dot.X += d.Face.Kern(prevC, c) + } + dr, mask, maskp, advance, ok := d.Face.Glyph(d.Dot, c) + if !ok { + // TODO: is falling back on the U+FFFD glyph the responsibility of + // the Drawer or the Face? + // TODO: set prevC = '\ufffd'? + continue + } + draw.DrawMask(d.Dst, dr, d.Src, image.Point{}, mask, maskp, draw.Over) + d.Dot.X += advance + prevC = c + } +} + +// DrawString draws s at the dot and advances the dot's location. +func (d *Drawer) DrawString(s string) { + prevC := rune(-1) + for _, c := range s { + if prevC >= 0 { + d.Dot.X += d.Face.Kern(prevC, c) + } + dr, mask, maskp, advance, ok := d.Face.Glyph(d.Dot, c) + if !ok { + // TODO: is falling back on the U+FFFD glyph the responsibility of + // the Drawer or the Face? + // TODO: set prevC = '\ufffd'? + continue + } + draw.DrawMask(d.Dst, dr, d.Src, image.Point{}, mask, maskp, draw.Over) + d.Dot.X += advance + prevC = c + } +} + +// BoundBytes returns the bounding box of s, drawn at the drawer dot, as well as +// the advance. +// +// It is equivalent to BoundBytes(string(s)) but may be more efficient. +func (d *Drawer) BoundBytes(s []byte) (bounds fixed.Rectangle26_6, advance fixed.Int26_6) { + bounds, advance = BoundBytes(d.Face, s) + bounds.Min = bounds.Min.Add(d.Dot) + bounds.Max = bounds.Max.Add(d.Dot) + return +} + +// BoundString returns the bounding box of s, drawn at the drawer dot, as well +// as the advance. +func (d *Drawer) BoundString(s string) (bounds fixed.Rectangle26_6, advance fixed.Int26_6) { + bounds, advance = BoundString(d.Face, s) + bounds.Min = bounds.Min.Add(d.Dot) + bounds.Max = bounds.Max.Add(d.Dot) + return +} + +// MeasureBytes returns how far dot would advance by drawing s. +// +// It is equivalent to MeasureString(string(s)) but may be more efficient. +func (d *Drawer) MeasureBytes(s []byte) (advance fixed.Int26_6) { + return MeasureBytes(d.Face, s) +} + +// MeasureString returns how far dot would advance by drawing s. +func (d *Drawer) MeasureString(s string) (advance fixed.Int26_6) { + return MeasureString(d.Face, s) +} + +// BoundBytes returns the bounding box of s with f, drawn at a dot equal to the +// origin, as well as the advance. +// +// It is equivalent to BoundString(string(s)) but may be more efficient. +func BoundBytes(f Face, s []byte) (bounds fixed.Rectangle26_6, advance fixed.Int26_6) { + prevC := rune(-1) + for len(s) > 0 { + c, size := utf8.DecodeRune(s) + s = s[size:] + if prevC >= 0 { + advance += f.Kern(prevC, c) + } + b, a, ok := f.GlyphBounds(c) + if !ok { + // TODO: is falling back on the U+FFFD glyph the responsibility of + // the Drawer or the Face? + // TODO: set prevC = '\ufffd'? + continue + } + b.Min.X += advance + b.Max.X += advance + bounds = bounds.Union(b) + advance += a + prevC = c + } + return +} + +// BoundString returns the bounding box of s with f, drawn at a dot equal to the +// origin, as well as the advance. +func BoundString(f Face, s string) (bounds fixed.Rectangle26_6, advance fixed.Int26_6) { + prevC := rune(-1) + for _, c := range s { + if prevC >= 0 { + advance += f.Kern(prevC, c) + } + b, a, ok := f.GlyphBounds(c) + if !ok { + // TODO: is falling back on the U+FFFD glyph the responsibility of + // the Drawer or the Face? + // TODO: set prevC = '\ufffd'? + continue + } + b.Min.X += advance + b.Max.X += advance + bounds = bounds.Union(b) + advance += a + prevC = c + } + return +} + +// MeasureBytes returns how far dot would advance by drawing s with f. +// +// It is equivalent to MeasureString(string(s)) but may be more efficient. +func MeasureBytes(f Face, s []byte) (advance fixed.Int26_6) { + prevC := rune(-1) + for len(s) > 0 { + c, size := utf8.DecodeRune(s) + s = s[size:] + if prevC >= 0 { + advance += f.Kern(prevC, c) + } + a, ok := f.GlyphAdvance(c) + if !ok { + // TODO: is falling back on the U+FFFD glyph the responsibility of + // the Drawer or the Face? + // TODO: set prevC = '\ufffd'? + continue + } + advance += a + prevC = c + } + return advance +} + +// MeasureString returns how far dot would advance by drawing s with f. +func MeasureString(f Face, s string) (advance fixed.Int26_6) { + prevC := rune(-1) + for _, c := range s { + if prevC >= 0 { + advance += f.Kern(prevC, c) + } + a, ok := f.GlyphAdvance(c) + if !ok { + // TODO: is falling back on the U+FFFD glyph the responsibility of + // the Drawer or the Face? + // TODO: set prevC = '\ufffd'? + continue + } + advance += a + prevC = c + } + return advance +} + +// Hinting selects how to quantize a vector font's glyph nodes. +// +// Not all fonts support hinting. +type Hinting int + +const ( + HintingNone Hinting = iota + HintingVertical + HintingFull +) + +// Stretch selects a normal, condensed, or expanded face. +// +// Not all fonts support stretches. +type Stretch int + +const ( + StretchUltraCondensed Stretch = -4 + StretchExtraCondensed Stretch = -3 + StretchCondensed Stretch = -2 + StretchSemiCondensed Stretch = -1 + StretchNormal Stretch = +0 + StretchSemiExpanded Stretch = +1 + StretchExpanded Stretch = +2 + StretchExtraExpanded Stretch = +3 + StretchUltraExpanded Stretch = +4 +) + +// Style selects a normal, italic, or oblique face. +// +// Not all fonts support styles. +type Style int + +const ( + StyleNormal Style = iota + StyleItalic + StyleOblique +) + +// Weight selects a normal, light or bold face. +// +// Not all fonts support weights. +// +// The named Weight constants (e.g. WeightBold) correspond to CSS' common +// weight names (e.g. "Bold"), but the numerical values differ, so that in Go, +// the zero value means to use a normal weight. For the CSS names and values, +// see https://developer.mozilla.org/en/docs/Web/CSS/font-weight +type Weight int + +const ( + WeightThin Weight = -3 // CSS font-weight value 100. + WeightExtraLight Weight = -2 // CSS font-weight value 200. + WeightLight Weight = -1 // CSS font-weight value 300. + WeightNormal Weight = +0 // CSS font-weight value 400. + WeightMedium Weight = +1 // CSS font-weight value 500. + WeightSemiBold Weight = +2 // CSS font-weight value 600. + WeightBold Weight = +3 // CSS font-weight value 700. + WeightExtraBold Weight = +4 // CSS font-weight value 800. + WeightBlack Weight = +5 // CSS font-weight value 900. +) diff --git a/vendor/golang.org/x/image/math/f64/f64.go b/vendor/golang.org/x/image/math/f64/f64.go new file mode 100644 index 00000000..a1f7fc0e --- /dev/null +++ b/vendor/golang.org/x/image/math/f64/f64.go @@ -0,0 +1,37 @@ +// Copyright 2015 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package f64 implements float64 vector and matrix types. +package f64 // import "golang.org/x/image/math/f64" + +// Vec2 is a 2-element vector. +type Vec2 [2]float64 + +// Vec3 is a 3-element vector. +type Vec3 [3]float64 + +// Vec4 is a 4-element vector. +type Vec4 [4]float64 + +// Mat3 is a 3x3 matrix in row major order. +// +// m[3*r + c] is the element in the r'th row and c'th column. +type Mat3 [9]float64 + +// Mat4 is a 4x4 matrix in row major order. +// +// m[4*r + c] is the element in the r'th row and c'th column. +type Mat4 [16]float64 + +// Aff3 is a 3x3 affine transformation matrix in row major order, where the +// bottom row is implicitly [0 0 1]. +// +// m[3*r + c] is the element in the r'th row and c'th column. +type Aff3 [6]float64 + +// Aff4 is a 4x4 affine transformation matrix in row major order, where the +// bottom row is implicitly [0 0 0 1]. +// +// m[4*r + c] is the element in the r'th row and c'th column. +type Aff4 [12]float64 diff --git a/vendor/golang.org/x/image/math/fixed/fixed.go b/vendor/golang.org/x/image/math/fixed/fixed.go new file mode 100644 index 00000000..3d916638 --- /dev/null +++ b/vendor/golang.org/x/image/math/fixed/fixed.go @@ -0,0 +1,410 @@ +// Copyright 2015 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package fixed implements fixed-point integer types. +package fixed // import "golang.org/x/image/math/fixed" + +import ( + "fmt" +) + +// TODO: implement fmt.Formatter for %f and %g. + +// I returns the integer value i as an Int26_6. +// +// For example, passing the integer value 2 yields Int26_6(128). +func I(i int) Int26_6 { + return Int26_6(i << 6) +} + +// Int26_6 is a signed 26.6 fixed-point number. +// +// The integer part ranges from -33554432 to 33554431, inclusive. The +// fractional part has 6 bits of precision. +// +// For example, the number one-and-a-quarter is Int26_6(1<<6 + 1<<4). +type Int26_6 int32 + +// String returns a human-readable representation of a 26.6 fixed-point number. +// +// For example, the number one-and-a-quarter becomes "1:16". +func (x Int26_6) String() string { + const shift, mask = 6, 1<<6 - 1 + if x >= 0 { + return fmt.Sprintf("%d:%02d", int32(x>>shift), int32(x&mask)) + } + x = -x + if x >= 0 { + return fmt.Sprintf("-%d:%02d", int32(x>>shift), int32(x&mask)) + } + return "-33554432:00" // The minimum value is -(1<<25). +} + +// Floor returns the greatest integer value less than or equal to x. +// +// Its return type is int, not Int26_6. +func (x Int26_6) Floor() int { return int((x + 0x00) >> 6) } + +// Round returns the nearest integer value to x. Ties are rounded up. +// +// Its return type is int, not Int26_6. +func (x Int26_6) Round() int { return int((x + 0x20) >> 6) } + +// Ceil returns the least integer value greater than or equal to x. +// +// Its return type is int, not Int26_6. +func (x Int26_6) Ceil() int { return int((x + 0x3f) >> 6) } + +// Mul returns x*y in 26.6 fixed-point arithmetic. +func (x Int26_6) Mul(y Int26_6) Int26_6 { + return Int26_6((int64(x)*int64(y) + 1<<5) >> 6) +} + +// Int52_12 is a signed 52.12 fixed-point number. +// +// The integer part ranges from -2251799813685248 to 2251799813685247, +// inclusive. The fractional part has 12 bits of precision. +// +// For example, the number one-and-a-quarter is Int52_12(1<<12 + 1<<10). +type Int52_12 int64 + +// String returns a human-readable representation of a 52.12 fixed-point +// number. +// +// For example, the number one-and-a-quarter becomes "1:1024". +func (x Int52_12) String() string { + const shift, mask = 12, 1<<12 - 1 + if x >= 0 { + return fmt.Sprintf("%d:%04d", int64(x>>shift), int64(x&mask)) + } + x = -x + if x >= 0 { + return fmt.Sprintf("-%d:%04d", int64(x>>shift), int64(x&mask)) + } + return "-2251799813685248:0000" // The minimum value is -(1<<51). +} + +// Floor returns the greatest integer value less than or equal to x. +// +// Its return type is int, not Int52_12. +func (x Int52_12) Floor() int { return int((x + 0x000) >> 12) } + +// Round returns the nearest integer value to x. Ties are rounded up. +// +// Its return type is int, not Int52_12. +func (x Int52_12) Round() int { return int((x + 0x800) >> 12) } + +// Ceil returns the least integer value greater than or equal to x. +// +// Its return type is int, not Int52_12. +func (x Int52_12) Ceil() int { return int((x + 0xfff) >> 12) } + +// Mul returns x*y in 52.12 fixed-point arithmetic. +func (x Int52_12) Mul(y Int52_12) Int52_12 { + const M, N = 52, 12 + lo, hi := muli64(int64(x), int64(y)) + ret := Int52_12(hi<>N) + ret += Int52_12((lo >> (N - 1)) & 1) // Round to nearest, instead of rounding down. + return ret +} + +// muli64 multiplies two int64 values, returning the 128-bit signed integer +// result as two uint64 values. +// +// This implementation is similar to $GOROOT/src/runtime/softfloat64.go's mullu +// function, which is in turn adapted from Hacker's Delight. +func muli64(u, v int64) (lo, hi uint64) { + const ( + s = 32 + mask = 1<> s) + u0 := uint64(u & mask) + v1 := uint64(v >> s) + v0 := uint64(v & mask) + + w0 := u0 * v0 + t := u1*v0 + w0>>s + w1 := t & mask + w2 := uint64(int64(t) >> s) + w1 += u0 * v1 + return uint64(u) * uint64(v), u1*v1 + w2 + uint64(int64(w1)>>s) +} + +// P returns the integer values x and y as a Point26_6. +// +// For example, passing the integer values (2, -3) yields Point26_6{128, -192}. +func P(x, y int) Point26_6 { + return Point26_6{Int26_6(x << 6), Int26_6(y << 6)} +} + +// Point26_6 is a 26.6 fixed-point coordinate pair. +// +// It is analogous to the image.Point type in the standard library. +type Point26_6 struct { + X, Y Int26_6 +} + +// Add returns the vector p+q. +func (p Point26_6) Add(q Point26_6) Point26_6 { + return Point26_6{p.X + q.X, p.Y + q.Y} +} + +// Sub returns the vector p-q. +func (p Point26_6) Sub(q Point26_6) Point26_6 { + return Point26_6{p.X - q.X, p.Y - q.Y} +} + +// Mul returns the vector p*k. +func (p Point26_6) Mul(k Int26_6) Point26_6 { + return Point26_6{p.X * k / 64, p.Y * k / 64} +} + +// Div returns the vector p/k. +func (p Point26_6) Div(k Int26_6) Point26_6 { + return Point26_6{p.X * 64 / k, p.Y * 64 / k} +} + +// In returns whether p is in r. +func (p Point26_6) In(r Rectangle26_6) bool { + return r.Min.X <= p.X && p.X < r.Max.X && r.Min.Y <= p.Y && p.Y < r.Max.Y +} + +// Point52_12 is a 52.12 fixed-point coordinate pair. +// +// It is analogous to the image.Point type in the standard library. +type Point52_12 struct { + X, Y Int52_12 +} + +// Add returns the vector p+q. +func (p Point52_12) Add(q Point52_12) Point52_12 { + return Point52_12{p.X + q.X, p.Y + q.Y} +} + +// Sub returns the vector p-q. +func (p Point52_12) Sub(q Point52_12) Point52_12 { + return Point52_12{p.X - q.X, p.Y - q.Y} +} + +// Mul returns the vector p*k. +func (p Point52_12) Mul(k Int52_12) Point52_12 { + return Point52_12{p.X * k / 4096, p.Y * k / 4096} +} + +// Div returns the vector p/k. +func (p Point52_12) Div(k Int52_12) Point52_12 { + return Point52_12{p.X * 4096 / k, p.Y * 4096 / k} +} + +// In returns whether p is in r. +func (p Point52_12) In(r Rectangle52_12) bool { + return r.Min.X <= p.X && p.X < r.Max.X && r.Min.Y <= p.Y && p.Y < r.Max.Y +} + +// R returns the integer values minX, minY, maxX, maxY as a Rectangle26_6. +// +// For example, passing the integer values (0, 1, 2, 3) yields +// Rectangle26_6{Point26_6{0, 64}, Point26_6{128, 192}}. +// +// Like the image.Rect function in the standard library, the returned rectangle +// has minimum and maximum coordinates swapped if necessary so that it is +// well-formed. +func R(minX, minY, maxX, maxY int) Rectangle26_6 { + if minX > maxX { + minX, maxX = maxX, minX + } + if minY > maxY { + minY, maxY = maxY, minY + } + return Rectangle26_6{ + Point26_6{ + Int26_6(minX << 6), + Int26_6(minY << 6), + }, + Point26_6{ + Int26_6(maxX << 6), + Int26_6(maxY << 6), + }, + } +} + +// Rectangle26_6 is a 26.6 fixed-point coordinate rectangle. The Min bound is +// inclusive and the Max bound is exclusive. It is well-formed if Min.X <= +// Max.X and likewise for Y. +// +// It is analogous to the image.Rectangle type in the standard library. +type Rectangle26_6 struct { + Min, Max Point26_6 +} + +// Add returns the rectangle r translated by p. +func (r Rectangle26_6) Add(p Point26_6) Rectangle26_6 { + return Rectangle26_6{ + Point26_6{r.Min.X + p.X, r.Min.Y + p.Y}, + Point26_6{r.Max.X + p.X, r.Max.Y + p.Y}, + } +} + +// Sub returns the rectangle r translated by -p. +func (r Rectangle26_6) Sub(p Point26_6) Rectangle26_6 { + return Rectangle26_6{ + Point26_6{r.Min.X - p.X, r.Min.Y - p.Y}, + Point26_6{r.Max.X - p.X, r.Max.Y - p.Y}, + } +} + +// Intersect returns the largest rectangle contained by both r and s. If the +// two rectangles do not overlap then the zero rectangle will be returned. +func (r Rectangle26_6) Intersect(s Rectangle26_6) Rectangle26_6 { + if r.Min.X < s.Min.X { + r.Min.X = s.Min.X + } + if r.Min.Y < s.Min.Y { + r.Min.Y = s.Min.Y + } + if r.Max.X > s.Max.X { + r.Max.X = s.Max.X + } + if r.Max.Y > s.Max.Y { + r.Max.Y = s.Max.Y + } + // Letting r0 and s0 be the values of r and s at the time that the method + // is called, this next line is equivalent to: + // + // if max(r0.Min.X, s0.Min.X) >= min(r0.Max.X, s0.Max.X) || likewiseForY { etc } + if r.Empty() { + return Rectangle26_6{} + } + return r +} + +// Union returns the smallest rectangle that contains both r and s. +func (r Rectangle26_6) Union(s Rectangle26_6) Rectangle26_6 { + if r.Empty() { + return s + } + if s.Empty() { + return r + } + if r.Min.X > s.Min.X { + r.Min.X = s.Min.X + } + if r.Min.Y > s.Min.Y { + r.Min.Y = s.Min.Y + } + if r.Max.X < s.Max.X { + r.Max.X = s.Max.X + } + if r.Max.Y < s.Max.Y { + r.Max.Y = s.Max.Y + } + return r +} + +// Empty returns whether the rectangle contains no points. +func (r Rectangle26_6) Empty() bool { + return r.Min.X >= r.Max.X || r.Min.Y >= r.Max.Y +} + +// In returns whether every point in r is in s. +func (r Rectangle26_6) In(s Rectangle26_6) bool { + if r.Empty() { + return true + } + // Note that r.Max is an exclusive bound for r, so that r.In(s) + // does not require that r.Max.In(s). + return s.Min.X <= r.Min.X && r.Max.X <= s.Max.X && + s.Min.Y <= r.Min.Y && r.Max.Y <= s.Max.Y +} + +// Rectangle52_12 is a 52.12 fixed-point coordinate rectangle. The Min bound is +// inclusive and the Max bound is exclusive. It is well-formed if Min.X <= +// Max.X and likewise for Y. +// +// It is analogous to the image.Rectangle type in the standard library. +type Rectangle52_12 struct { + Min, Max Point52_12 +} + +// Add returns the rectangle r translated by p. +func (r Rectangle52_12) Add(p Point52_12) Rectangle52_12 { + return Rectangle52_12{ + Point52_12{r.Min.X + p.X, r.Min.Y + p.Y}, + Point52_12{r.Max.X + p.X, r.Max.Y + p.Y}, + } +} + +// Sub returns the rectangle r translated by -p. +func (r Rectangle52_12) Sub(p Point52_12) Rectangle52_12 { + return Rectangle52_12{ + Point52_12{r.Min.X - p.X, r.Min.Y - p.Y}, + Point52_12{r.Max.X - p.X, r.Max.Y - p.Y}, + } +} + +// Intersect returns the largest rectangle contained by both r and s. If the +// two rectangles do not overlap then the zero rectangle will be returned. +func (r Rectangle52_12) Intersect(s Rectangle52_12) Rectangle52_12 { + if r.Min.X < s.Min.X { + r.Min.X = s.Min.X + } + if r.Min.Y < s.Min.Y { + r.Min.Y = s.Min.Y + } + if r.Max.X > s.Max.X { + r.Max.X = s.Max.X + } + if r.Max.Y > s.Max.Y { + r.Max.Y = s.Max.Y + } + // Letting r0 and s0 be the values of r and s at the time that the method + // is called, this next line is equivalent to: + // + // if max(r0.Min.X, s0.Min.X) >= min(r0.Max.X, s0.Max.X) || likewiseForY { etc } + if r.Empty() { + return Rectangle52_12{} + } + return r +} + +// Union returns the smallest rectangle that contains both r and s. +func (r Rectangle52_12) Union(s Rectangle52_12) Rectangle52_12 { + if r.Empty() { + return s + } + if s.Empty() { + return r + } + if r.Min.X > s.Min.X { + r.Min.X = s.Min.X + } + if r.Min.Y > s.Min.Y { + r.Min.Y = s.Min.Y + } + if r.Max.X < s.Max.X { + r.Max.X = s.Max.X + } + if r.Max.Y < s.Max.Y { + r.Max.Y = s.Max.Y + } + return r +} + +// Empty returns whether the rectangle contains no points. +func (r Rectangle52_12) Empty() bool { + return r.Min.X >= r.Max.X || r.Min.Y >= r.Max.Y +} + +// In returns whether every point in r is in s. +func (r Rectangle52_12) In(s Rectangle52_12) bool { + if r.Empty() { + return true + } + // Note that r.Max is an exclusive bound for r, so that r.In(s) + // does not require that r.Max.In(s). + return s.Min.X <= r.Min.X && r.Max.X <= s.Max.X && + s.Min.Y <= r.Min.Y && r.Max.Y <= s.Max.Y +} diff --git a/vendor/golang.org/x/text/secure/bidirule/bidirule10.0.0.go b/vendor/golang.org/x/text/secure/bidirule/bidirule10.0.0.go index e4c62289..8a7392c4 100644 --- a/vendor/golang.org/x/text/secure/bidirule/bidirule10.0.0.go +++ b/vendor/golang.org/x/text/secure/bidirule/bidirule10.0.0.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build go1.10 // +build go1.10 package bidirule diff --git a/vendor/golang.org/x/text/secure/bidirule/bidirule9.0.0.go b/vendor/golang.org/x/text/secure/bidirule/bidirule9.0.0.go index 02b9e1e9..bb0a9200 100644 --- a/vendor/golang.org/x/text/secure/bidirule/bidirule9.0.0.go +++ b/vendor/golang.org/x/text/secure/bidirule/bidirule9.0.0.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build !go1.10 // +build !go1.10 package bidirule diff --git a/vendor/golang.org/x/text/unicode/bidi/bidi.go b/vendor/golang.org/x/text/unicode/bidi/bidi.go index e8edc54c..fd057601 100644 --- a/vendor/golang.org/x/text/unicode/bidi/bidi.go +++ b/vendor/golang.org/x/text/unicode/bidi/bidi.go @@ -12,15 +12,14 @@ // and without notice. package bidi // import "golang.org/x/text/unicode/bidi" -// TODO: -// The following functionality would not be hard to implement, but hinges on -// the definition of a Segmenter interface. For now this is up to the user. -// - Iterate over paragraphs -// - Segmenter to iterate over runs directly from a given text. -// Also: +// TODO // - Transformer for reordering? // - Transformer (validator, really) for Bidi Rule. +import ( + "bytes" +) + // This API tries to avoid dealing with embedding levels for now. Under the hood // these will be computed, but the question is to which extent the user should // know they exist. We should at some point allow the user to specify an @@ -49,7 +48,9 @@ const ( Neutral ) -type options struct{} +type options struct { + defaultDirection Direction +} // An Option is an option for Bidi processing. type Option func(*options) @@ -66,12 +67,62 @@ type Option func(*options) // DefaultDirection sets the default direction for a Paragraph. The direction is // overridden if the text contains directional characters. func DefaultDirection(d Direction) Option { - panic("unimplemented") + return func(opts *options) { + opts.defaultDirection = d + } } // A Paragraph holds a single Paragraph for Bidi processing. type Paragraph struct { - // buffers + p []byte + o Ordering + opts []Option + types []Class + pairTypes []bracketType + pairValues []rune + runes []rune + options options +} + +// Initialize the p.pairTypes, p.pairValues and p.types from the input previously +// set by p.SetBytes() or p.SetString(). Also limit the input up to (and including) a paragraph +// separator (bidi class B). +// +// The function p.Order() needs these values to be set, so this preparation could be postponed. +// But since the SetBytes and SetStrings functions return the length of the input up to the paragraph +// separator, the whole input needs to be processed anyway and should not be done twice. +// +// The function has the same return values as SetBytes() / SetString() +func (p *Paragraph) prepareInput() (n int, err error) { + p.runes = bytes.Runes(p.p) + bytecount := 0 + // clear slices from previous SetString or SetBytes + p.pairTypes = nil + p.pairValues = nil + p.types = nil + + for _, r := range p.runes { + props, i := LookupRune(r) + bytecount += i + cls := props.Class() + if cls == B { + return bytecount, nil + } + p.types = append(p.types, cls) + if props.IsOpeningBracket() { + p.pairTypes = append(p.pairTypes, bpOpen) + p.pairValues = append(p.pairValues, r) + } else if props.IsBracket() { + // this must be a closing bracket, + // since IsOpeningBracket is not true + p.pairTypes = append(p.pairTypes, bpClose) + p.pairValues = append(p.pairValues, r) + } else { + p.pairTypes = append(p.pairTypes, bpNone) + p.pairValues = append(p.pairValues, 0) + } + } + return bytecount, nil } // SetBytes configures p for the given paragraph text. It replaces text @@ -80,70 +131,150 @@ type Paragraph struct { // consumed from b including this separator. Error may be non-nil if options are // given. func (p *Paragraph) SetBytes(b []byte, opts ...Option) (n int, err error) { - panic("unimplemented") + p.p = b + p.opts = opts + return p.prepareInput() } -// SetString configures p for the given paragraph text. It replaces text -// previously set by SetBytes or SetString. If b contains a paragraph separator +// SetString configures s for the given paragraph text. It replaces text +// previously set by SetBytes or SetString. If s contains a paragraph separator // it will only process the first paragraph and report the number of bytes -// consumed from b including this separator. Error may be non-nil if options are +// consumed from s including this separator. Error may be non-nil if options are // given. func (p *Paragraph) SetString(s string, opts ...Option) (n int, err error) { - panic("unimplemented") + p.p = []byte(s) + p.opts = opts + return p.prepareInput() } // IsLeftToRight reports whether the principle direction of rendering for this // paragraphs is left-to-right. If this returns false, the principle direction // of rendering is right-to-left. func (p *Paragraph) IsLeftToRight() bool { - panic("unimplemented") + return p.Direction() == LeftToRight } // Direction returns the direction of the text of this paragraph. // // The direction may be LeftToRight, RightToLeft, Mixed, or Neutral. func (p *Paragraph) Direction() Direction { - panic("unimplemented") + return p.o.Direction() } +// TODO: what happens if the position is > len(input)? This should return an error. + // RunAt reports the Run at the given position of the input text. // // This method can be used for computing line breaks on paragraphs. func (p *Paragraph) RunAt(pos int) Run { - panic("unimplemented") + c := 0 + runNumber := 0 + for i, r := range p.o.runes { + c += len(r) + if pos < c { + runNumber = i + } + } + return p.o.Run(runNumber) +} + +func calculateOrdering(levels []level, runes []rune) Ordering { + var curDir Direction + + prevDir := Neutral + prevI := 0 + + o := Ordering{} + // lvl = 0,2,4,...: left to right + // lvl = 1,3,5,...: right to left + for i, lvl := range levels { + if lvl%2 == 0 { + curDir = LeftToRight + } else { + curDir = RightToLeft + } + if curDir != prevDir { + if i > 0 { + o.runes = append(o.runes, runes[prevI:i]) + o.directions = append(o.directions, prevDir) + o.startpos = append(o.startpos, prevI) + } + prevI = i + prevDir = curDir + } + } + o.runes = append(o.runes, runes[prevI:]) + o.directions = append(o.directions, prevDir) + o.startpos = append(o.startpos, prevI) + return o } // Order computes the visual ordering of all the runs in a Paragraph. func (p *Paragraph) Order() (Ordering, error) { - panic("unimplemented") + if len(p.types) == 0 { + return Ordering{}, nil + } + + for _, fn := range p.opts { + fn(&p.options) + } + lvl := level(-1) + if p.options.defaultDirection == RightToLeft { + lvl = 1 + } + para, err := newParagraph(p.types, p.pairTypes, p.pairValues, lvl) + if err != nil { + return Ordering{}, err + } + + levels := para.getLevels([]int{len(p.types)}) + + p.o = calculateOrdering(levels, p.runes) + return p.o, nil } // Line computes the visual ordering of runs for a single line starting and // ending at the given positions in the original text. func (p *Paragraph) Line(start, end int) (Ordering, error) { - panic("unimplemented") + lineTypes := p.types[start:end] + para, err := newParagraph(lineTypes, p.pairTypes[start:end], p.pairValues[start:end], -1) + if err != nil { + return Ordering{}, err + } + levels := para.getLevels([]int{len(lineTypes)}) + o := calculateOrdering(levels, p.runes[start:end]) + return o, nil } // An Ordering holds the computed visual order of runs of a Paragraph. Calling // SetBytes or SetString on the originating Paragraph invalidates an Ordering. // The methods of an Ordering should only be called by one goroutine at a time. -type Ordering struct{} +type Ordering struct { + runes [][]rune + directions []Direction + startpos []int +} // Direction reports the directionality of the runs. // // The direction may be LeftToRight, RightToLeft, Mixed, or Neutral. func (o *Ordering) Direction() Direction { - panic("unimplemented") + return o.directions[0] } // NumRuns returns the number of runs. func (o *Ordering) NumRuns() int { - panic("unimplemented") + return len(o.runes) } // Run returns the ith run within the ordering. func (o *Ordering) Run(i int) Run { - panic("unimplemented") + r := Run{ + runes: o.runes[i], + direction: o.directions[i], + startpos: o.startpos[i], + } + return r } // TODO: perhaps with options. @@ -155,16 +286,19 @@ func (o *Ordering) Run(i int) Run { // A Run is a continuous sequence of characters of a single direction. type Run struct { + runes []rune + direction Direction + startpos int } // String returns the text of the run in its original order. func (r *Run) String() string { - panic("unimplemented") + return string(r.runes) } // Bytes returns the text of the run in its original order. func (r *Run) Bytes() []byte { - panic("unimplemented") + return []byte(r.String()) } // TODO: methods for @@ -174,25 +308,52 @@ func (r *Run) Bytes() []byte { // Direction reports the direction of the run. func (r *Run) Direction() Direction { - panic("unimplemented") + return r.direction } -// Position of the Run within the text passed to SetBytes or SetString of the +// Pos returns the position of the Run within the text passed to SetBytes or SetString of the // originating Paragraph value. func (r *Run) Pos() (start, end int) { - panic("unimplemented") + return r.startpos, r.startpos + len(r.runes) - 1 } // AppendReverse reverses the order of characters of in, appends them to out, // and returns the result. Modifiers will still follow the runes they modify. // Brackets are replaced with their counterparts. func AppendReverse(out, in []byte) []byte { - panic("unimplemented") + ret := make([]byte, len(in)+len(out)) + copy(ret, out) + inRunes := bytes.Runes(in) + + for i, r := range inRunes { + prop, _ := LookupRune(r) + if prop.IsBracket() { + inRunes[i] = prop.reverseBracket(r) + } + } + + for i, j := 0, len(inRunes)-1; i < j; i, j = i+1, j-1 { + inRunes[i], inRunes[j] = inRunes[j], inRunes[i] + } + copy(ret[len(out):], string(inRunes)) + + return ret } // ReverseString reverses the order of characters in s and returns a new string. // Modifiers will still follow the runes they modify. Brackets are replaced with // their counterparts. func ReverseString(s string) string { - panic("unimplemented") + input := []rune(s) + li := len(input) + ret := make([]rune, li) + for i, r := range input { + prop, _ := LookupRune(r) + if prop.IsBracket() { + ret[li-i-1] = prop.reverseBracket(r) + } else { + ret[li-i-1] = r + } + } + return string(ret) } diff --git a/vendor/golang.org/x/text/unicode/bidi/core.go b/vendor/golang.org/x/text/unicode/bidi/core.go index 50deb660..e4c08110 100644 --- a/vendor/golang.org/x/text/unicode/bidi/core.go +++ b/vendor/golang.org/x/text/unicode/bidi/core.go @@ -4,7 +4,10 @@ package bidi -import "log" +import ( + "fmt" + "log" +) // This implementation is a port based on the reference implementation found at: // https://www.unicode.org/Public/PROGRAMS/BidiReferenceJava/ @@ -97,13 +100,20 @@ type paragraph struct { // rune (suggested is the rune of the open bracket for opening and matching // close brackets, after normalization). The embedding levels are optional, but // may be supplied to encode embedding levels of styled text. -// -// TODO: return an error. -func newParagraph(types []Class, pairTypes []bracketType, pairValues []rune, levels level) *paragraph { - validateTypes(types) - validatePbTypes(pairTypes) - validatePbValues(pairValues, pairTypes) - validateParagraphEmbeddingLevel(levels) +func newParagraph(types []Class, pairTypes []bracketType, pairValues []rune, levels level) (*paragraph, error) { + var err error + if err = validateTypes(types); err != nil { + return nil, err + } + if err = validatePbTypes(pairTypes); err != nil { + return nil, err + } + if err = validatePbValues(pairValues, pairTypes); err != nil { + return nil, err + } + if err = validateParagraphEmbeddingLevel(levels); err != nil { + return nil, err + } p := ¶graph{ initialTypes: append([]Class(nil), types...), @@ -115,7 +125,7 @@ func newParagraph(types []Class, pairTypes []bracketType, pairValues []rune, lev resultTypes: append([]Class(nil), types...), } p.run() - return p + return p, nil } func (p *paragraph) Len() int { return len(p.initialTypes) } @@ -1001,58 +1011,61 @@ func typeForLevel(level level) Class { return R } -// TODO: change validation to not panic - -func validateTypes(types []Class) { +func validateTypes(types []Class) error { if len(types) == 0 { - log.Panic("types is null") + return fmt.Errorf("types is null") } for i, t := range types[:len(types)-1] { if t == B { - log.Panicf("B type before end of paragraph at index: %d", i) + return fmt.Errorf("B type before end of paragraph at index: %d", i) } } + return nil } -func validateParagraphEmbeddingLevel(embeddingLevel level) { +func validateParagraphEmbeddingLevel(embeddingLevel level) error { if embeddingLevel != implicitLevel && embeddingLevel != 0 && embeddingLevel != 1 { - log.Panicf("illegal paragraph embedding level: %d", embeddingLevel) + return fmt.Errorf("illegal paragraph embedding level: %d", embeddingLevel) } + return nil } -func validateLineBreaks(linebreaks []int, textLength int) { +func validateLineBreaks(linebreaks []int, textLength int) error { prev := 0 for i, next := range linebreaks { if next <= prev { - log.Panicf("bad linebreak: %d at index: %d", next, i) + return fmt.Errorf("bad linebreak: %d at index: %d", next, i) } prev = next } if prev != textLength { - log.Panicf("last linebreak was %d, want %d", prev, textLength) + return fmt.Errorf("last linebreak was %d, want %d", prev, textLength) } + return nil } -func validatePbTypes(pairTypes []bracketType) { +func validatePbTypes(pairTypes []bracketType) error { if len(pairTypes) == 0 { - log.Panic("pairTypes is null") + return fmt.Errorf("pairTypes is null") } for i, pt := range pairTypes { switch pt { case bpNone, bpOpen, bpClose: default: - log.Panicf("illegal pairType value at %d: %v", i, pairTypes[i]) + return fmt.Errorf("illegal pairType value at %d: %v", i, pairTypes[i]) } } + return nil } -func validatePbValues(pairValues []rune, pairTypes []bracketType) { +func validatePbValues(pairValues []rune, pairTypes []bracketType) error { if pairValues == nil { - log.Panic("pairValues is null") + return fmt.Errorf("pairValues is null") } if len(pairTypes) != len(pairValues) { - log.Panic("pairTypes is different length from pairValues") + return fmt.Errorf("pairTypes is different length from pairValues") } + return nil } diff --git a/vendor/golang.org/x/text/unicode/bidi/tables10.0.0.go b/vendor/golang.org/x/text/unicode/bidi/tables10.0.0.go index d8c94e1b..42fa8d72 100644 --- a/vendor/golang.org/x/text/unicode/bidi/tables10.0.0.go +++ b/vendor/golang.org/x/text/unicode/bidi/tables10.0.0.go @@ -1,5 +1,6 @@ // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. +//go:build go1.10 && !go1.13 // +build go1.10,!go1.13 package bidi diff --git a/vendor/golang.org/x/text/unicode/bidi/tables11.0.0.go b/vendor/golang.org/x/text/unicode/bidi/tables11.0.0.go index 16b11db5..56a0e1ea 100644 --- a/vendor/golang.org/x/text/unicode/bidi/tables11.0.0.go +++ b/vendor/golang.org/x/text/unicode/bidi/tables11.0.0.go @@ -1,5 +1,6 @@ // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. +//go:build go1.13 && !go1.14 // +build go1.13,!go1.14 package bidi diff --git a/vendor/golang.org/x/text/unicode/bidi/tables12.0.0.go b/vendor/golang.org/x/text/unicode/bidi/tables12.0.0.go index 647f2d42..baacf32b 100644 --- a/vendor/golang.org/x/text/unicode/bidi/tables12.0.0.go +++ b/vendor/golang.org/x/text/unicode/bidi/tables12.0.0.go @@ -1,5 +1,6 @@ // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. +//go:build go1.14 && !go1.16 // +build go1.14,!go1.16 package bidi diff --git a/vendor/golang.org/x/text/unicode/bidi/tables13.0.0.go b/vendor/golang.org/x/text/unicode/bidi/tables13.0.0.go index c937d097..f248effa 100644 --- a/vendor/golang.org/x/text/unicode/bidi/tables13.0.0.go +++ b/vendor/golang.org/x/text/unicode/bidi/tables13.0.0.go @@ -1,5 +1,6 @@ // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. +//go:build go1.16 // +build go1.16 package bidi diff --git a/vendor/golang.org/x/text/unicode/bidi/tables9.0.0.go b/vendor/golang.org/x/text/unicode/bidi/tables9.0.0.go index 0ca0193e..f517fdb2 100644 --- a/vendor/golang.org/x/text/unicode/bidi/tables9.0.0.go +++ b/vendor/golang.org/x/text/unicode/bidi/tables9.0.0.go @@ -1,5 +1,6 @@ // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. +//go:build !go1.10 // +build !go1.10 package bidi diff --git a/vendor/golang.org/x/text/unicode/norm/tables10.0.0.go b/vendor/golang.org/x/text/unicode/norm/tables10.0.0.go index 26fbd55a..f5a07882 100644 --- a/vendor/golang.org/x/text/unicode/norm/tables10.0.0.go +++ b/vendor/golang.org/x/text/unicode/norm/tables10.0.0.go @@ -1,5 +1,6 @@ // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. +//go:build go1.10 && !go1.13 // +build go1.10,!go1.13 package norm diff --git a/vendor/golang.org/x/text/unicode/norm/tables11.0.0.go b/vendor/golang.org/x/text/unicode/norm/tables11.0.0.go index 2c58f09b..cb7239c4 100644 --- a/vendor/golang.org/x/text/unicode/norm/tables11.0.0.go +++ b/vendor/golang.org/x/text/unicode/norm/tables11.0.0.go @@ -1,5 +1,6 @@ // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. +//go:build go1.13 && !go1.14 // +build go1.13,!go1.14 package norm diff --git a/vendor/golang.org/x/text/unicode/norm/tables12.0.0.go b/vendor/golang.org/x/text/unicode/norm/tables12.0.0.go index 7e1ae096..11b27330 100644 --- a/vendor/golang.org/x/text/unicode/norm/tables12.0.0.go +++ b/vendor/golang.org/x/text/unicode/norm/tables12.0.0.go @@ -1,5 +1,6 @@ // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. +//go:build go1.14 && !go1.16 // +build go1.14,!go1.16 package norm diff --git a/vendor/golang.org/x/text/unicode/norm/tables13.0.0.go b/vendor/golang.org/x/text/unicode/norm/tables13.0.0.go index 9ea1b421..96a130d3 100644 --- a/vendor/golang.org/x/text/unicode/norm/tables13.0.0.go +++ b/vendor/golang.org/x/text/unicode/norm/tables13.0.0.go @@ -1,5 +1,6 @@ // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. +//go:build go1.16 // +build go1.16 package norm diff --git a/vendor/golang.org/x/text/unicode/norm/tables9.0.0.go b/vendor/golang.org/x/text/unicode/norm/tables9.0.0.go index 94290692..0175eae5 100644 --- a/vendor/golang.org/x/text/unicode/norm/tables9.0.0.go +++ b/vendor/golang.org/x/text/unicode/norm/tables9.0.0.go @@ -1,5 +1,6 @@ // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. +//go:build !go1.10 // +build !go1.10 package norm diff --git a/vendor/modules.txt b/vendor/modules.txt index 2be4b6a5..ed673af0 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -19,6 +19,9 @@ github.com/go-ping/ping # github.com/gogo/protobuf v1.3.1 github.com/gogo/protobuf/proto github.com/gogo/protobuf/sortkeys +# github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0 +github.com/golang/freetype/raster +github.com/golang/freetype/truetype # github.com/golang/protobuf v1.4.3 github.com/golang/protobuf/proto github.com/golang/protobuf/ptypes @@ -74,6 +77,12 @@ github.com/prometheus/procfs/internal/util github.com/remyoudompheng/bigfft # github.com/spf13/pflag v1.0.5 github.com/spf13/pflag +# github.com/wcharczuk/go-chart/v2 v2.1.0 +## explicit +github.com/wcharczuk/go-chart/v2 +github.com/wcharczuk/go-chart/v2/drawing +github.com/wcharczuk/go-chart/v2/matrix +github.com/wcharczuk/go-chart/v2/roboto # go.etcd.io/bbolt v1.3.5 go.etcd.io/bbolt # golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad @@ -81,6 +90,12 @@ go.etcd.io/bbolt golang.org/x/crypto/ed25519 golang.org/x/crypto/ed25519/internal/edwards25519 golang.org/x/crypto/ssh/terminal +# golang.org/x/image v0.0.0-20210628002857-a66eb6448b8d +## explicit +golang.org/x/image/draw +golang.org/x/image/font +golang.org/x/image/math/f64 +golang.org/x/image/math/fixed # golang.org/x/mod v0.4.0 golang.org/x/mod/semver # golang.org/x/net v0.0.0-20201224014010-6772e930b67b @@ -111,7 +126,7 @@ golang.org/x/sys/windows # golang.org/x/term v0.0.0-20201210144234-2321bbc49cbf ## explicit golang.org/x/term -# golang.org/x/text v0.3.4 +# golang.org/x/text v0.3.6 golang.org/x/text/secure/bidirule golang.org/x/text/transform golang.org/x/text/unicode/bidi