// Code generated by protoc-gen-go. DO NOT EDIT.
// source: envoy/config/filter/http/jwt_auth/v2alpha1/config.proto

package v2alpha1

import (
	fmt "fmt"
	proto "github.com/golang/protobuf/proto"
	duration "github.com/golang/protobuf/ptypes/duration"
	math "math"
)

// Reference imports to suppress errors if they are not otherwise used.
var _ = proto.Marshal
var _ = fmt.Errorf
var _ = math.Inf

// This is a compile-time assertion to ensure that this generated file
// is compatible with the proto package it is being compiled against.
// A compilation error at this line likely means your copy of the
// proto package needs to be updated.
const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package

// Copied from @envoy/api/envoy/api/v2/core/http_uri.proto
// Envoy external URI descriptor
type HttpUri struct {
	// The HTTP server URI. It should be a full FQDN with protocol, host and path.
	//
	// Example:
	//
	// .. code-block:: yaml
	//
	//    uri: https://www.googleapis.com/oauth2/v1/certs
	//
	Uri string `protobuf:"bytes,1,opt,name=uri,proto3" json:"uri,omitempty"`
	// Specify how `uri` is to be fetched. Today, this requires an explicit
	// cluster, but in the future we may support dynamic cluster creation or
	// inline DNS resolution. See `issue
	// <https://github.com/envoyproxy/envoy/issues/1606>`_.
	//
	// Types that are valid to be assigned to HttpUpstreamType:
	//	*HttpUri_Cluster
	HttpUpstreamType isHttpUri_HttpUpstreamType `protobuf_oneof:"http_upstream_type"`
	// Sets the maximum duration in milliseconds that a response can take to arrive upon request.
	Timeout              *duration.Duration `protobuf:"bytes,3,opt,name=timeout,proto3" json:"timeout,omitempty"`
	XXX_NoUnkeyedLiteral struct{}           `json:"-"`
	XXX_unrecognized     []byte             `json:"-"`
	XXX_sizecache        int32              `json:"-"`
}

func (m *HttpUri) Reset()         { *m = HttpUri{} }
func (m *HttpUri) String() string { return proto.CompactTextString(m) }
func (*HttpUri) ProtoMessage()    {}
func (*HttpUri) Descriptor() ([]byte, []int) {
	return fileDescriptor_7c36de3e06e3b641, []int{0}
}

func (m *HttpUri) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_HttpUri.Unmarshal(m, b)
}
func (m *HttpUri) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_HttpUri.Marshal(b, m, deterministic)
}
func (m *HttpUri) XXX_Merge(src proto.Message) {
	xxx_messageInfo_HttpUri.Merge(m, src)
}
func (m *HttpUri) XXX_Size() int {
	return xxx_messageInfo_HttpUri.Size(m)
}
func (m *HttpUri) XXX_DiscardUnknown() {
	xxx_messageInfo_HttpUri.DiscardUnknown(m)
}

var xxx_messageInfo_HttpUri proto.InternalMessageInfo

func (m *HttpUri) GetUri() string {
	if m != nil {
		return m.Uri
	}
	return ""
}

type isHttpUri_HttpUpstreamType interface {
	isHttpUri_HttpUpstreamType()
}

type HttpUri_Cluster struct {
	Cluster string `protobuf:"bytes,2,opt,name=cluster,proto3,oneof"`
}

func (*HttpUri_Cluster) isHttpUri_HttpUpstreamType() {}

func (m *HttpUri) GetHttpUpstreamType() isHttpUri_HttpUpstreamType {
	if m != nil {
		return m.HttpUpstreamType
	}
	return nil
}

func (m *HttpUri) GetCluster() string {
	if x, ok := m.GetHttpUpstreamType().(*HttpUri_Cluster); ok {
		return x.Cluster
	}
	return ""
}

func (m *HttpUri) GetTimeout() *duration.Duration {
	if m != nil {
		return m.Timeout
	}
	return nil
}

// XXX_OneofWrappers is for the internal use of the proto package.
func (*HttpUri) XXX_OneofWrappers() []interface{} {
	return []interface{}{
		(*HttpUri_Cluster)(nil),
	}
}

// Copied from @envoy/api/envoy/api/v2/core/base.proto
// Data source consisting of either a file or an inline value.
type DataSource struct {
	// Types that are valid to be assigned to Specifier:
	//	*DataSource_Filename
	//	*DataSource_InlineBytes
	//	*DataSource_InlineString
	Specifier            isDataSource_Specifier `protobuf_oneof:"specifier"`
	XXX_NoUnkeyedLiteral struct{}               `json:"-"`
	XXX_unrecognized     []byte                 `json:"-"`
	XXX_sizecache        int32                  `json:"-"`
}

func (m *DataSource) Reset()         { *m = DataSource{} }
func (m *DataSource) String() string { return proto.CompactTextString(m) }
func (*DataSource) ProtoMessage()    {}
func (*DataSource) Descriptor() ([]byte, []int) {
	return fileDescriptor_7c36de3e06e3b641, []int{1}
}

func (m *DataSource) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_DataSource.Unmarshal(m, b)
}
func (m *DataSource) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_DataSource.Marshal(b, m, deterministic)
}
func (m *DataSource) XXX_Merge(src proto.Message) {
	xxx_messageInfo_DataSource.Merge(m, src)
}
func (m *DataSource) XXX_Size() int {
	return xxx_messageInfo_DataSource.Size(m)
}
func (m *DataSource) XXX_DiscardUnknown() {
	xxx_messageInfo_DataSource.DiscardUnknown(m)
}

var xxx_messageInfo_DataSource proto.InternalMessageInfo

type isDataSource_Specifier interface {
	isDataSource_Specifier()
}

type DataSource_Filename struct {
	Filename string `protobuf:"bytes,1,opt,name=filename,proto3,oneof"`
}

type DataSource_InlineBytes struct {
	InlineBytes []byte `protobuf:"bytes,2,opt,name=inline_bytes,json=inlineBytes,proto3,oneof"`
}

type DataSource_InlineString struct {
	InlineString string `protobuf:"bytes,3,opt,name=inline_string,json=inlineString,proto3,oneof"`
}

func (*DataSource_Filename) isDataSource_Specifier() {}

func (*DataSource_InlineBytes) isDataSource_Specifier() {}

func (*DataSource_InlineString) isDataSource_Specifier() {}

func (m *DataSource) GetSpecifier() isDataSource_Specifier {
	if m != nil {
		return m.Specifier
	}
	return nil
}

func (m *DataSource) GetFilename() string {
	if x, ok := m.GetSpecifier().(*DataSource_Filename); ok {
		return x.Filename
	}
	return ""
}

func (m *DataSource) GetInlineBytes() []byte {
	if x, ok := m.GetSpecifier().(*DataSource_InlineBytes); ok {
		return x.InlineBytes
	}
	return nil
}

func (m *DataSource) GetInlineString() string {
	if x, ok := m.GetSpecifier().(*DataSource_InlineString); ok {
		return x.InlineString
	}
	return ""
}

// XXX_OneofWrappers is for the internal use of the proto package.
func (*DataSource) XXX_OneofWrappers() []interface{} {
	return []interface{}{
		(*DataSource_Filename)(nil),
		(*DataSource_InlineBytes)(nil),
		(*DataSource_InlineString)(nil),
	}
}

// This message specifies how a JSON Web Token (JWT) can be verified. See the [JWT format definition](https://tools.ietf.org/html/rfc7519)
// for details. Please see [OAuth2.0](https://tools.ietf.org/html/rfc6749) and
// [OIDC1.0](http://openid.net/connect) for
// the authentication flow.
//
// Example:
//
// ```yaml
//     issuer: https://example.com
//     audiences:
//     - bookstore_android.apps.googleusercontent.com
//       bookstore_web.apps.googleusercontent.com
//     remote_jwks:
//     - http_uri:
//       - uri: https://example.com/.well-known/jwks.json
//         cluster: example_jwks_cluster
//       cache_duration:
//       - seconds: 300
// ```
type JwtRule struct {
	// Identifies the principal that issued the JWT. See `here
	//  <https://tools.ietf.org/html/rfc7519#section-4.1.1>`_. Usually a URL or an email address.
	//
	// Example: https://securetoken.google.com
	// Example: 1234567-compute@developer.gserviceaccount.com
	//
	Issuer string `protobuf:"bytes,1,opt,name=issuer,proto3" json:"issuer,omitempty"`
	// The list of JWT `audiences <https://tools.ietf.org/html/rfc7519#section-4.1.3>`_. that are
	// allowed to access. A JWT containing any of these audiences will be accepted. If not specified,
	// will not check audiences in the token.
	//
	// Example:
	//
	// .. code-block:: yaml
	//
	//     audiences:
	//     - bookstore_android.apps.googleusercontent.com
	//       bookstore_web.apps.googleusercontent.com
	//
	Audiences []string `protobuf:"bytes,2,rep,name=audiences,proto3" json:"audiences,omitempty"`
	// `JSON Web Key Set <https://tools.ietf.org/html/rfc7517#appendix-A>`_ is needed. to validate
	// signature of the JWT. This field specifies where to fetch JWKS.
	//
	// Types that are valid to be assigned to JwksSourceSpecifier:
	//	*JwtRule_RemoteJwks
	//	*JwtRule_LocalJwks
	JwksSourceSpecifier isJwtRule_JwksSourceSpecifier `protobuf_oneof:"jwks_source_specifier"`
	// If false, the JWT is removed in the request after a success verification. If true, the JWT is
	// not removed in the request. Default value is false.
	Forward bool `protobuf:"varint,5,opt,name=forward,proto3" json:"forward,omitempty"`
	// Specify the HTTP headers to extract JWT token. For examples, following config:
	//
	// .. code-block:: yaml
	//
	//   from_headers:
	//   - name: x-goog-iap-jwt-assertion
	//
	// can be used to extract token from header::
	//
	//   x-goog-iap-jwt-assertion: <JWT>.
	//
	FromHeaders []*JwtHeader `protobuf:"bytes,6,rep,name=from_headers,json=fromHeaders,proto3" json:"from_headers,omitempty"`
	// JWT is sent in a query parameter. `jwt_params` represents the query parameter names.
	//
	// For example, if config is:
	//
	// .. code-block:: yaml
	//
	//   from_params:
	//   - jwt_token
	//
	// The JWT format in query parameter is::
	//
	//    /path?jwt_token=<JWT>
	//
	FromParams []string `protobuf:"bytes,7,rep,name=from_params,json=fromParams,proto3" json:"from_params,omitempty"`
	// This field specifies the header name to forward a successfully verified JWT payload to the
	// backend. The forwarded data is::
	//
	//    base64_encoded(jwt_payload_in_JSON)
	//
	// If it is not specified, the payload will not be forwarded.
	// Multiple JWTs in a request from different issuers will be supported. Multiple JWTs from the
	// same issuer will not be supported. Each issuer can config this `forward_payload_header`. If
	// multiple JWTs from different issuers want to forward their payloads, their
	// `forward_payload_header` should be different.
	ForwardPayloadHeader string   `protobuf:"bytes,8,opt,name=forward_payload_header,json=forwardPayloadHeader,proto3" json:"forward_payload_header,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *JwtRule) Reset()         { *m = JwtRule{} }
func (m *JwtRule) String() string { return proto.CompactTextString(m) }
func (*JwtRule) ProtoMessage()    {}
func (*JwtRule) Descriptor() ([]byte, []int) {
	return fileDescriptor_7c36de3e06e3b641, []int{2}
}

func (m *JwtRule) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_JwtRule.Unmarshal(m, b)
}
func (m *JwtRule) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_JwtRule.Marshal(b, m, deterministic)
}
func (m *JwtRule) XXX_Merge(src proto.Message) {
	xxx_messageInfo_JwtRule.Merge(m, src)
}
func (m *JwtRule) XXX_Size() int {
	return xxx_messageInfo_JwtRule.Size(m)
}
func (m *JwtRule) XXX_DiscardUnknown() {
	xxx_messageInfo_JwtRule.DiscardUnknown(m)
}

var xxx_messageInfo_JwtRule proto.InternalMessageInfo

func (m *JwtRule) GetIssuer() string {
	if m != nil {
		return m.Issuer
	}
	return ""
}

func (m *JwtRule) GetAudiences() []string {
	if m != nil {
		return m.Audiences
	}
	return nil
}

type isJwtRule_JwksSourceSpecifier interface {
	isJwtRule_JwksSourceSpecifier()
}

type JwtRule_RemoteJwks struct {
	RemoteJwks *RemoteJwks `protobuf:"bytes,3,opt,name=remote_jwks,json=remoteJwks,proto3,oneof"`
}

type JwtRule_LocalJwks struct {
	LocalJwks *DataSource `protobuf:"bytes,4,opt,name=local_jwks,json=localJwks,proto3,oneof"`
}

func (*JwtRule_RemoteJwks) isJwtRule_JwksSourceSpecifier() {}

func (*JwtRule_LocalJwks) isJwtRule_JwksSourceSpecifier() {}

func (m *JwtRule) GetJwksSourceSpecifier() isJwtRule_JwksSourceSpecifier {
	if m != nil {
		return m.JwksSourceSpecifier
	}
	return nil
}

func (m *JwtRule) GetRemoteJwks() *RemoteJwks {
	if x, ok := m.GetJwksSourceSpecifier().(*JwtRule_RemoteJwks); ok {
		return x.RemoteJwks
	}
	return nil
}

func (m *JwtRule) GetLocalJwks() *DataSource {
	if x, ok := m.GetJwksSourceSpecifier().(*JwtRule_LocalJwks); ok {
		return x.LocalJwks
	}
	return nil
}

func (m *JwtRule) GetForward() bool {
	if m != nil {
		return m.Forward
	}
	return false
}

func (m *JwtRule) GetFromHeaders() []*JwtHeader {
	if m != nil {
		return m.FromHeaders
	}
	return nil
}

func (m *JwtRule) GetFromParams() []string {
	if m != nil {
		return m.FromParams
	}
	return nil
}

func (m *JwtRule) GetForwardPayloadHeader() string {
	if m != nil {
		return m.ForwardPayloadHeader
	}
	return ""
}

// XXX_OneofWrappers is for the internal use of the proto package.
func (*JwtRule) XXX_OneofWrappers() []interface{} {
	return []interface{}{
		(*JwtRule_RemoteJwks)(nil),
		(*JwtRule_LocalJwks)(nil),
	}
}

// This message specifies how to fetch JWKS from remote and how to cache it.
type RemoteJwks struct {
	// The HTTP URI to fetch the JWKS. For example:
	//
	// .. code-block:: yaml
	//
	//    http_uri:
	//    - uri: https://www.googleapis.com/oauth2/v1/certs
	//      cluster: jwt.www.googleapis.com|443
	//
	HttpUri *HttpUri `protobuf:"bytes,1,opt,name=http_uri,json=httpUri,proto3" json:"http_uri,omitempty"`
	// Duration after which the cached JWKS should be expired. If not specified, default cache
	// duration is 5 minutes.
	CacheDuration        *duration.Duration `protobuf:"bytes,2,opt,name=cache_duration,json=cacheDuration,proto3" json:"cache_duration,omitempty"`
	XXX_NoUnkeyedLiteral struct{}           `json:"-"`
	XXX_unrecognized     []byte             `json:"-"`
	XXX_sizecache        int32              `json:"-"`
}

func (m *RemoteJwks) Reset()         { *m = RemoteJwks{} }
func (m *RemoteJwks) String() string { return proto.CompactTextString(m) }
func (*RemoteJwks) ProtoMessage()    {}
func (*RemoteJwks) Descriptor() ([]byte, []int) {
	return fileDescriptor_7c36de3e06e3b641, []int{3}
}

func (m *RemoteJwks) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_RemoteJwks.Unmarshal(m, b)
}
func (m *RemoteJwks) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_RemoteJwks.Marshal(b, m, deterministic)
}
func (m *RemoteJwks) XXX_Merge(src proto.Message) {
	xxx_messageInfo_RemoteJwks.Merge(m, src)
}
func (m *RemoteJwks) XXX_Size() int {
	return xxx_messageInfo_RemoteJwks.Size(m)
}
func (m *RemoteJwks) XXX_DiscardUnknown() {
	xxx_messageInfo_RemoteJwks.DiscardUnknown(m)
}

var xxx_messageInfo_RemoteJwks proto.InternalMessageInfo

func (m *RemoteJwks) GetHttpUri() *HttpUri {
	if m != nil {
		return m.HttpUri
	}
	return nil
}

func (m *RemoteJwks) GetCacheDuration() *duration.Duration {
	if m != nil {
		return m.CacheDuration
	}
	return nil
}

// This message specifies a header location to extract JWT token.
type JwtHeader struct {
	// The HTTP header name.
	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	// The value prefix. The value format is "value_prefix<token>"
	// For example, for "Authorization: Bearer <token>", value_prefix="Bearer " with a space at the
	// end.
	ValuePrefix          string   `protobuf:"bytes,2,opt,name=value_prefix,json=valuePrefix,proto3" json:"value_prefix,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *JwtHeader) Reset()         { *m = JwtHeader{} }
func (m *JwtHeader) String() string { return proto.CompactTextString(m) }
func (*JwtHeader) ProtoMessage()    {}
func (*JwtHeader) Descriptor() ([]byte, []int) {
	return fileDescriptor_7c36de3e06e3b641, []int{4}
}

func (m *JwtHeader) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_JwtHeader.Unmarshal(m, b)
}
func (m *JwtHeader) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_JwtHeader.Marshal(b, m, deterministic)
}
func (m *JwtHeader) XXX_Merge(src proto.Message) {
	xxx_messageInfo_JwtHeader.Merge(m, src)
}
func (m *JwtHeader) XXX_Size() int {
	return xxx_messageInfo_JwtHeader.Size(m)
}
func (m *JwtHeader) XXX_DiscardUnknown() {
	xxx_messageInfo_JwtHeader.DiscardUnknown(m)
}

var xxx_messageInfo_JwtHeader proto.InternalMessageInfo

func (m *JwtHeader) GetName() string {
	if m != nil {
		return m.Name
	}
	return ""
}

func (m *JwtHeader) GetValuePrefix() string {
	if m != nil {
		return m.ValuePrefix
	}
	return ""
}

// This is the Envoy HTTP filter config for JWT authentication.
// [#not-implemented-hide:]
type JwtAuthentication struct {
	// List of JWT rules to valide.
	Rules []*JwtRule `protobuf:"bytes,1,rep,name=rules,proto3" json:"rules,omitempty"`
	// If true, the request is allowed if JWT is missing or JWT verification fails.
	// Default is false, a request without JWT or failed JWT verification is not allowed.
	AllowMissingOrFailed bool     `protobuf:"varint,2,opt,name=allow_missing_or_failed,json=allowMissingOrFailed,proto3" json:"allow_missing_or_failed,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *JwtAuthentication) Reset()         { *m = JwtAuthentication{} }
func (m *JwtAuthentication) String() string { return proto.CompactTextString(m) }
func (*JwtAuthentication) ProtoMessage()    {}
func (*JwtAuthentication) Descriptor() ([]byte, []int) {
	return fileDescriptor_7c36de3e06e3b641, []int{5}
}

func (m *JwtAuthentication) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_JwtAuthentication.Unmarshal(m, b)
}
func (m *JwtAuthentication) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_JwtAuthentication.Marshal(b, m, deterministic)
}
func (m *JwtAuthentication) XXX_Merge(src proto.Message) {
	xxx_messageInfo_JwtAuthentication.Merge(m, src)
}
func (m *JwtAuthentication) XXX_Size() int {
	return xxx_messageInfo_JwtAuthentication.Size(m)
}
func (m *JwtAuthentication) XXX_DiscardUnknown() {
	xxx_messageInfo_JwtAuthentication.DiscardUnknown(m)
}

var xxx_messageInfo_JwtAuthentication proto.InternalMessageInfo

func (m *JwtAuthentication) GetRules() []*JwtRule {
	if m != nil {
		return m.Rules
	}
	return nil
}

func (m *JwtAuthentication) GetAllowMissingOrFailed() bool {
	if m != nil {
		return m.AllowMissingOrFailed
	}
	return false
}

func init() {
	proto.RegisterType((*HttpUri)(nil), "istio.envoy.config.filter.http.jwt_auth.v2alpha1.HttpUri")
	proto.RegisterType((*DataSource)(nil), "istio.envoy.config.filter.http.jwt_auth.v2alpha1.DataSource")
	proto.RegisterType((*JwtRule)(nil), "istio.envoy.config.filter.http.jwt_auth.v2alpha1.JwtRule")
	proto.RegisterType((*RemoteJwks)(nil), "istio.envoy.config.filter.http.jwt_auth.v2alpha1.RemoteJwks")
	proto.RegisterType((*JwtHeader)(nil), "istio.envoy.config.filter.http.jwt_auth.v2alpha1.JwtHeader")
	proto.RegisterType((*JwtAuthentication)(nil), "istio.envoy.config.filter.http.jwt_auth.v2alpha1.JwtAuthentication")
}

func init() {
	proto.RegisterFile("envoy/config/filter/http/jwt_auth/v2alpha1/config.proto", fileDescriptor_7c36de3e06e3b641)
}

var fileDescriptor_7c36de3e06e3b641 = []byte{
	// 659 bytes of a gzipped FileDescriptorProto
	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x54, 0x51, 0x6f, 0xd3, 0x3c,
	0x14, 0x6d, 0xbe, 0x6e, 0x6b, 0x7b, 0xd3, 0x7d, 0x02, 0x6b, 0x6c, 0x61, 0x9a, 0xa0, 0x14, 0x21,
	0xf5, 0x29, 0x81, 0x0e, 0x34, 0x4d, 0xf0, 0x00, 0xd5, 0x84, 0xaa, 0x4a, 0x68, 0x93, 0x07, 0x2f,
	0x48, 0x60, 0x79, 0xa9, 0xd3, 0x7a, 0x73, 0xe2, 0xc8, 0x76, 0x16, 0xfa, 0x0a, 0x3f, 0x83, 0x57,
	0xfe, 0x1c, 0xff, 0x02, 0xc5, 0x71, 0xd6, 0x37, 0xc4, 0xf6, 0xe6, 0x7b, 0xae, 0xcf, 0xb9, 0x37,
	0xe7, 0xfa, 0x06, 0x8e, 0x58, 0x76, 0x2d, 0x57, 0x51, 0x2c, 0xb3, 0x84, 0x2f, 0xa2, 0x84, 0x0b,
	0xc3, 0x54, 0xb4, 0x34, 0x26, 0x8f, 0x2e, 0x4b, 0x43, 0x68, 0x61, 0x96, 0xd1, 0xf5, 0x98, 0x8a,
	0x7c, 0x49, 0x5f, 0xb8, 0x4b, 0x61, 0xae, 0xa4, 0x91, 0xe8, 0x39, 0xd7, 0x86, 0xcb, 0xd0, 0xd2,
	0x43, 0x97, 0xa9, 0xe9, 0x61, 0x45, 0x0f, 0x1b, 0x7a, 0xd8, 0xd0, 0xf7, 0x1f, 0x2d, 0xa4, 0x5c,
	0x08, 0x16, 0x59, 0xfe, 0x45, 0x91, 0x44, 0xf3, 0x42, 0x51, 0xc3, 0x65, 0x56, 0x2b, 0x0e, 0xbf,
	0x7b, 0xd0, 0x99, 0x1a, 0x93, 0x7f, 0x52, 0x1c, 0xdd, 0x83, 0x76, 0xa1, 0x78, 0xe0, 0x0d, 0xbc,
	0x51, 0x0f, 0x57, 0x47, 0xb4, 0x0f, 0x9d, 0x58, 0x14, 0xda, 0x30, 0x15, 0xfc, 0x57, 0xa1, 0xd3,
	0x16, 0x6e, 0x00, 0x74, 0x08, 0x1d, 0xc3, 0x53, 0x26, 0x0b, 0x13, 0xb4, 0x07, 0xde, 0xc8, 0x1f,
	0x3f, 0x0c, 0xeb, 0x5a, 0x61, 0x53, 0x2b, 0x3c, 0x71, 0xb5, 0x70, 0x73, 0x73, 0xb2, 0x03, 0xa8,
	0x6a, 0x94, 0x14, 0xb9, 0x36, 0x8a, 0xd1, 0x94, 0x98, 0x55, 0xce, 0x86, 0x3f, 0x3c, 0x80, 0x13,
	0x6a, 0xe8, 0xb9, 0x2c, 0x54, 0xcc, 0xd0, 0x01, 0x74, 0x13, 0x2e, 0x58, 0x46, 0x53, 0x56, 0x37,
	0x33, 0x6d, 0xe1, 0x1b, 0x04, 0x3d, 0x85, 0x3e, 0xcf, 0x04, 0xcf, 0x18, 0xb9, 0x58, 0x19, 0xa6,
	0x6d, 0x63, 0xfd, 0x69, 0x0b, 0xfb, 0x35, 0x3a, 0xa9, 0x40, 0xf4, 0x0c, 0xb6, 0xdd, 0x25, 0x6d,
	0x14, 0xcf, 0x16, 0xb6, 0xc5, 0x4a, 0xc7, 0x71, 0xcf, 0x2d, 0x3a, 0xf1, 0xa1, 0xa7, 0x73, 0x16,
	0xf3, 0x84, 0x33, 0x35, 0xfc, 0xdd, 0x86, 0xce, 0xac, 0x34, 0xb8, 0x10, 0x0c, 0xed, 0xc2, 0x16,
	0xd7, 0xba, 0x60, 0xca, 0xb9, 0xe1, 0x22, 0x74, 0x00, 0x3d, 0x5a, 0xcc, 0x39, 0xcb, 0x62, 0x5b,
	0xb9, 0x3d, 0xea, 0xe1, 0x35, 0x80, 0x08, 0xf8, 0x8a, 0xa5, 0xd2, 0x30, 0x72, 0x59, 0x5e, 0x69,
	0x67, 0xcb, 0x9b, 0xf0, 0xb6, 0x43, 0x0b, 0xb1, 0x15, 0x99, 0x95, 0x57, 0x7a, 0xda, 0xc2, 0xa0,
	0x6e, 0x22, 0xf4, 0x05, 0x40, 0xc8, 0x98, 0x8a, 0x5a, 0x7f, 0xe3, 0xae, 0xfa, 0x6b, 0xaf, 0xa7,
	0x2d, 0xdc, 0xb3, 0x8a, 0x56, 0x3e, 0x80, 0x4e, 0x22, 0x55, 0x49, 0xd5, 0x3c, 0xd8, 0x1c, 0x78,
	0xa3, 0x2e, 0x6e, 0x42, 0xf4, 0x15, 0xfa, 0x89, 0x92, 0x29, 0x59, 0x32, 0x3a, 0x67, 0x4a, 0x07,
	0x5b, 0x83, 0xf6, 0xc8, 0x1f, 0xbf, 0xbe, 0x7d, 0xe9, 0x59, 0x69, 0xa6, 0x56, 0x03, 0xfb, 0x95,
	0x60, 0x7d, 0xd6, 0xe8, 0x31, 0xd8, 0x90, 0xe4, 0x54, 0xd1, 0x54, 0x07, 0x1d, 0xeb, 0x2c, 0x54,
	0xd0, 0x99, 0x45, 0xd0, 0x4b, 0xd8, 0x75, 0xbd, 0x90, 0x9c, 0xae, 0x84, 0xa4, 0x73, 0xd7, 0x4b,
	0xd0, 0xb5, 0x03, 0xda, 0x71, 0xd9, 0xb3, 0x3a, 0x59, 0xeb, 0x4e, 0xf6, 0xe0, 0x41, 0xe5, 0x14,
	0xd1, 0xf6, 0x63, 0xc9, 0x7a, 0xd6, 0xbf, 0x3c, 0x80, 0xb5, 0xcb, 0xe8, 0x23, 0x74, 0xeb, 0x67,
	0xe9, 0x9e, 0xbf, 0x3f, 0x3e, 0xbe, 0xfd, 0xa7, 0xb9, 0x35, 0xc2, 0x9d, 0xa5, 0xdb, 0xa7, 0xb7,
	0xf0, 0x7f, 0x4c, 0xe3, 0x25, 0x23, 0xcd, 0xce, 0xd9, 0xb7, 0xfa, 0xd7, 0x45, 0xd9, 0xb6, 0x84,
	0x26, 0x1c, 0x4e, 0xa0, 0x77, 0x63, 0x18, 0x42, 0xb0, 0xb1, 0x5e, 0x09, 0x6c, 0xcf, 0xe8, 0x09,
	0xf4, 0xaf, 0xa9, 0x28, 0x18, 0xc9, 0x15, 0x4b, 0xf8, 0xb7, 0x7a, 0x4b, 0xb1, 0x6f, 0xb1, 0x33,
	0x0b, 0x0d, 0x7f, 0x7a, 0x70, 0x7f, 0x56, 0x9a, 0x77, 0x85, 0x59, 0xb2, 0xcc, 0xf0, 0xd8, 0x2a,
	0xa3, 0x53, 0xd8, 0x54, 0x85, 0x60, 0x3a, 0xf0, 0xec, 0x24, 0x8f, 0xef, 0x34, 0xc9, 0x6a, 0x55,
	0x70, 0xad, 0x83, 0x5e, 0xc1, 0x1e, 0x15, 0x42, 0x96, 0x24, 0xe5, 0x5a, 0xf3, 0x6c, 0x41, 0xa4,
	0x22, 0x09, 0xe5, 0x82, 0xcd, 0x6d, 0x53, 0x5d, 0xbc, 0x63, 0xd3, 0x1f, 0xea, 0xec, 0xa9, 0x7a,
	0x6f, 0x73, 0x93, 0xe3, 0xcf, 0x47, 0x75, 0x65, 0x2e, 0x23, 0x9a, 0xf3, 0xe8, 0xdf, 0xff, 0x8c,
	0x17, 0x5b, 0xd6, 0xbe, 0xc3, 0x3f, 0x01, 0x00, 0x00, 0xff, 0xff, 0xa6, 0xa0, 0x73, 0x7b, 0x4e,
	0x05, 0x00, 0x00,
}
