1// Code generated by protoc-gen-go. DO NOT EDIT.
2// source: google/cloud/billing/budgets/v1beta1/budget_model.proto
3
4package budgets
5
6import (
7	fmt "fmt"
8	math "math"
9
10	proto "github.com/golang/protobuf/proto"
11	_ "google.golang.org/genproto/googleapis/api/annotations"
12	money "google.golang.org/genproto/googleapis/type/money"
13)
14
15// Reference imports to suppress errors if they are not otherwise used.
16var _ = proto.Marshal
17var _ = fmt.Errorf
18var _ = math.Inf
19
20// This is a compile-time assertion to ensure that this generated file
21// is compatible with the proto package it is being compiled against.
22// A compilation error at this line likely means your copy of the
23// proto package needs to be updated.
24const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
25
26// The type of basis used to determine if spend has passed the threshold.
27type ThresholdRule_Basis int32
28
29const (
30	// Unspecified threshold basis.
31	ThresholdRule_BASIS_UNSPECIFIED ThresholdRule_Basis = 0
32	// Use current spend as the basis for comparison against the threshold.
33	ThresholdRule_CURRENT_SPEND ThresholdRule_Basis = 1
34	// Use forecasted spend for the period as the basis for comparison against
35	// the threshold.
36	ThresholdRule_FORECASTED_SPEND ThresholdRule_Basis = 2
37)
38
39var ThresholdRule_Basis_name = map[int32]string{
40	0: "BASIS_UNSPECIFIED",
41	1: "CURRENT_SPEND",
42	2: "FORECASTED_SPEND",
43}
44
45var ThresholdRule_Basis_value = map[string]int32{
46	"BASIS_UNSPECIFIED": 0,
47	"CURRENT_SPEND":     1,
48	"FORECASTED_SPEND":  2,
49}
50
51func (x ThresholdRule_Basis) String() string {
52	return proto.EnumName(ThresholdRule_Basis_name, int32(x))
53}
54
55func (ThresholdRule_Basis) EnumDescriptor() ([]byte, []int) {
56	return fileDescriptor_1b88e381b47dbc69, []int{3, 0}
57}
58
59// Specifies how credits should be treated when determining spend for
60// threshold calculations.
61type Filter_CreditTypesTreatment int32
62
63const (
64	Filter_CREDIT_TYPES_TREATMENT_UNSPECIFIED Filter_CreditTypesTreatment = 0
65	// All types of credit are subtracted from the gross cost to determine the
66	// spend for threshold calculations.
67	Filter_INCLUDE_ALL_CREDITS Filter_CreditTypesTreatment = 1
68	// All types of credit are added to the net cost to determine the spend for
69	// threshold calculations.
70	Filter_EXCLUDE_ALL_CREDITS Filter_CreditTypesTreatment = 2
71)
72
73var Filter_CreditTypesTreatment_name = map[int32]string{
74	0: "CREDIT_TYPES_TREATMENT_UNSPECIFIED",
75	1: "INCLUDE_ALL_CREDITS",
76	2: "EXCLUDE_ALL_CREDITS",
77}
78
79var Filter_CreditTypesTreatment_value = map[string]int32{
80	"CREDIT_TYPES_TREATMENT_UNSPECIFIED": 0,
81	"INCLUDE_ALL_CREDITS":                1,
82	"EXCLUDE_ALL_CREDITS":                2,
83}
84
85func (x Filter_CreditTypesTreatment) String() string {
86	return proto.EnumName(Filter_CreditTypesTreatment_name, int32(x))
87}
88
89func (Filter_CreditTypesTreatment) EnumDescriptor() ([]byte, []int) {
90	return fileDescriptor_1b88e381b47dbc69, []int{5, 0}
91}
92
93// A budget is a plan that describes what you expect to spend on Cloud
94// projects, plus the rules to execute as spend is tracked against that plan,
95// (for example, send an alert when 90% of the target spend is met).
96// Currently all plans are monthly budgets so the usage period(s) tracked are
97// implied (calendar months of usage back-to-back).
98type Budget struct {
99	// Output only. Resource name of the budget.
100	// The resource name implies the scope of a budget. Values are of the form
101	// `billingAccounts/{billingAccountId}/budgets/{budgetId}`.
102	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
103	// User data for display name in UI.
104	// Validation: <= 60 chars.
105	DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"`
106	// Optional. Filters that define which resources are used to compute
107	// the actual spend against the budget.
108	BudgetFilter *Filter `protobuf:"bytes,3,opt,name=budget_filter,json=budgetFilter,proto3" json:"budget_filter,omitempty"`
109	// Required. Budgeted amount.
110	Amount *BudgetAmount `protobuf:"bytes,4,opt,name=amount,proto3" json:"amount,omitempty"`
111	// Optional. Rules that trigger alerts (notifications of thresholds
112	// being crossed) when spend exceeds the specified percentages of the budget.
113	ThresholdRules []*ThresholdRule `protobuf:"bytes,5,rep,name=threshold_rules,json=thresholdRules,proto3" json:"threshold_rules,omitempty"`
114	// Optional. Rules to apply to all updates to the actual spend, regardless
115	// of the thresholds set in `threshold_rules`.
116	AllUpdatesRule *AllUpdatesRule `protobuf:"bytes,6,opt,name=all_updates_rule,json=allUpdatesRule,proto3" json:"all_updates_rule,omitempty"`
117	// Optional. Etag to validate that the object is unchanged for a
118	// read-modify-write operation.
119	// An empty etag will cause an update to overwrite other changes.
120	Etag                 string   `protobuf:"bytes,7,opt,name=etag,proto3" json:"etag,omitempty"`
121	XXX_NoUnkeyedLiteral struct{} `json:"-"`
122	XXX_unrecognized     []byte   `json:"-"`
123	XXX_sizecache        int32    `json:"-"`
124}
125
126func (m *Budget) Reset()         { *m = Budget{} }
127func (m *Budget) String() string { return proto.CompactTextString(m) }
128func (*Budget) ProtoMessage()    {}
129func (*Budget) Descriptor() ([]byte, []int) {
130	return fileDescriptor_1b88e381b47dbc69, []int{0}
131}
132
133func (m *Budget) XXX_Unmarshal(b []byte) error {
134	return xxx_messageInfo_Budget.Unmarshal(m, b)
135}
136func (m *Budget) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
137	return xxx_messageInfo_Budget.Marshal(b, m, deterministic)
138}
139func (m *Budget) XXX_Merge(src proto.Message) {
140	xxx_messageInfo_Budget.Merge(m, src)
141}
142func (m *Budget) XXX_Size() int {
143	return xxx_messageInfo_Budget.Size(m)
144}
145func (m *Budget) XXX_DiscardUnknown() {
146	xxx_messageInfo_Budget.DiscardUnknown(m)
147}
148
149var xxx_messageInfo_Budget proto.InternalMessageInfo
150
151func (m *Budget) GetName() string {
152	if m != nil {
153		return m.Name
154	}
155	return ""
156}
157
158func (m *Budget) GetDisplayName() string {
159	if m != nil {
160		return m.DisplayName
161	}
162	return ""
163}
164
165func (m *Budget) GetBudgetFilter() *Filter {
166	if m != nil {
167		return m.BudgetFilter
168	}
169	return nil
170}
171
172func (m *Budget) GetAmount() *BudgetAmount {
173	if m != nil {
174		return m.Amount
175	}
176	return nil
177}
178
179func (m *Budget) GetThresholdRules() []*ThresholdRule {
180	if m != nil {
181		return m.ThresholdRules
182	}
183	return nil
184}
185
186func (m *Budget) GetAllUpdatesRule() *AllUpdatesRule {
187	if m != nil {
188		return m.AllUpdatesRule
189	}
190	return nil
191}
192
193func (m *Budget) GetEtag() string {
194	if m != nil {
195		return m.Etag
196	}
197	return ""
198}
199
200// The budgeted amount for each usage period.
201type BudgetAmount struct {
202	// Specification for what amount to use as the budget.
203	//
204	// Types that are valid to be assigned to BudgetAmount:
205	//	*BudgetAmount_SpecifiedAmount
206	//	*BudgetAmount_LastPeriodAmount
207	BudgetAmount         isBudgetAmount_BudgetAmount `protobuf_oneof:"budget_amount"`
208	XXX_NoUnkeyedLiteral struct{}                    `json:"-"`
209	XXX_unrecognized     []byte                      `json:"-"`
210	XXX_sizecache        int32                       `json:"-"`
211}
212
213func (m *BudgetAmount) Reset()         { *m = BudgetAmount{} }
214func (m *BudgetAmount) String() string { return proto.CompactTextString(m) }
215func (*BudgetAmount) ProtoMessage()    {}
216func (*BudgetAmount) Descriptor() ([]byte, []int) {
217	return fileDescriptor_1b88e381b47dbc69, []int{1}
218}
219
220func (m *BudgetAmount) XXX_Unmarshal(b []byte) error {
221	return xxx_messageInfo_BudgetAmount.Unmarshal(m, b)
222}
223func (m *BudgetAmount) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
224	return xxx_messageInfo_BudgetAmount.Marshal(b, m, deterministic)
225}
226func (m *BudgetAmount) XXX_Merge(src proto.Message) {
227	xxx_messageInfo_BudgetAmount.Merge(m, src)
228}
229func (m *BudgetAmount) XXX_Size() int {
230	return xxx_messageInfo_BudgetAmount.Size(m)
231}
232func (m *BudgetAmount) XXX_DiscardUnknown() {
233	xxx_messageInfo_BudgetAmount.DiscardUnknown(m)
234}
235
236var xxx_messageInfo_BudgetAmount proto.InternalMessageInfo
237
238type isBudgetAmount_BudgetAmount interface {
239	isBudgetAmount_BudgetAmount()
240}
241
242type BudgetAmount_SpecifiedAmount struct {
243	SpecifiedAmount *money.Money `protobuf:"bytes,1,opt,name=specified_amount,json=specifiedAmount,proto3,oneof"`
244}
245
246type BudgetAmount_LastPeriodAmount struct {
247	LastPeriodAmount *LastPeriodAmount `protobuf:"bytes,2,opt,name=last_period_amount,json=lastPeriodAmount,proto3,oneof"`
248}
249
250func (*BudgetAmount_SpecifiedAmount) isBudgetAmount_BudgetAmount() {}
251
252func (*BudgetAmount_LastPeriodAmount) isBudgetAmount_BudgetAmount() {}
253
254func (m *BudgetAmount) GetBudgetAmount() isBudgetAmount_BudgetAmount {
255	if m != nil {
256		return m.BudgetAmount
257	}
258	return nil
259}
260
261func (m *BudgetAmount) GetSpecifiedAmount() *money.Money {
262	if x, ok := m.GetBudgetAmount().(*BudgetAmount_SpecifiedAmount); ok {
263		return x.SpecifiedAmount
264	}
265	return nil
266}
267
268func (m *BudgetAmount) GetLastPeriodAmount() *LastPeriodAmount {
269	if x, ok := m.GetBudgetAmount().(*BudgetAmount_LastPeriodAmount); ok {
270		return x.LastPeriodAmount
271	}
272	return nil
273}
274
275// XXX_OneofWrappers is for the internal use of the proto package.
276func (*BudgetAmount) XXX_OneofWrappers() []interface{} {
277	return []interface{}{
278		(*BudgetAmount_SpecifiedAmount)(nil),
279		(*BudgetAmount_LastPeriodAmount)(nil),
280	}
281}
282
283// Describes a budget amount targeted to last period's spend.
284// At this time, the amount is automatically 100% of last period's spend;
285// that is, there are no other options yet.
286// Future configuration will be described here (for example, configuring a
287// percentage of last period's spend).
288type LastPeriodAmount struct {
289	XXX_NoUnkeyedLiteral struct{} `json:"-"`
290	XXX_unrecognized     []byte   `json:"-"`
291	XXX_sizecache        int32    `json:"-"`
292}
293
294func (m *LastPeriodAmount) Reset()         { *m = LastPeriodAmount{} }
295func (m *LastPeriodAmount) String() string { return proto.CompactTextString(m) }
296func (*LastPeriodAmount) ProtoMessage()    {}
297func (*LastPeriodAmount) Descriptor() ([]byte, []int) {
298	return fileDescriptor_1b88e381b47dbc69, []int{2}
299}
300
301func (m *LastPeriodAmount) XXX_Unmarshal(b []byte) error {
302	return xxx_messageInfo_LastPeriodAmount.Unmarshal(m, b)
303}
304func (m *LastPeriodAmount) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
305	return xxx_messageInfo_LastPeriodAmount.Marshal(b, m, deterministic)
306}
307func (m *LastPeriodAmount) XXX_Merge(src proto.Message) {
308	xxx_messageInfo_LastPeriodAmount.Merge(m, src)
309}
310func (m *LastPeriodAmount) XXX_Size() int {
311	return xxx_messageInfo_LastPeriodAmount.Size(m)
312}
313func (m *LastPeriodAmount) XXX_DiscardUnknown() {
314	xxx_messageInfo_LastPeriodAmount.DiscardUnknown(m)
315}
316
317var xxx_messageInfo_LastPeriodAmount proto.InternalMessageInfo
318
319// ThresholdRule contains a definition of a threshold which triggers
320// an alert (a notification of a threshold being crossed) to be sent when
321// spend goes above the specified amount.
322// Alerts are automatically e-mailed to users with the Billing Account
323// Administrator role or the Billing Account User role.
324// The thresholds here have no effect on notifications sent to anything
325// configured under `Budget.all_updates_rule`.
326type ThresholdRule struct {
327	// Required. Send an alert when this threshold is exceeded.
328	// This is a 1.0-based percentage, so 0.5 = 50%.
329	// Validation: non-negative number.
330	ThresholdPercent float64 `protobuf:"fixed64,1,opt,name=threshold_percent,json=thresholdPercent,proto3" json:"threshold_percent,omitempty"`
331	// Optional. The type of basis used to determine if spend has passed the
332	// threshold. Behavior defaults to CURRENT_SPEND if not set.
333	SpendBasis           ThresholdRule_Basis `protobuf:"varint,2,opt,name=spend_basis,json=spendBasis,proto3,enum=google.cloud.billing.budgets.v1beta1.ThresholdRule_Basis" json:"spend_basis,omitempty"`
334	XXX_NoUnkeyedLiteral struct{}            `json:"-"`
335	XXX_unrecognized     []byte              `json:"-"`
336	XXX_sizecache        int32               `json:"-"`
337}
338
339func (m *ThresholdRule) Reset()         { *m = ThresholdRule{} }
340func (m *ThresholdRule) String() string { return proto.CompactTextString(m) }
341func (*ThresholdRule) ProtoMessage()    {}
342func (*ThresholdRule) Descriptor() ([]byte, []int) {
343	return fileDescriptor_1b88e381b47dbc69, []int{3}
344}
345
346func (m *ThresholdRule) XXX_Unmarshal(b []byte) error {
347	return xxx_messageInfo_ThresholdRule.Unmarshal(m, b)
348}
349func (m *ThresholdRule) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
350	return xxx_messageInfo_ThresholdRule.Marshal(b, m, deterministic)
351}
352func (m *ThresholdRule) XXX_Merge(src proto.Message) {
353	xxx_messageInfo_ThresholdRule.Merge(m, src)
354}
355func (m *ThresholdRule) XXX_Size() int {
356	return xxx_messageInfo_ThresholdRule.Size(m)
357}
358func (m *ThresholdRule) XXX_DiscardUnknown() {
359	xxx_messageInfo_ThresholdRule.DiscardUnknown(m)
360}
361
362var xxx_messageInfo_ThresholdRule proto.InternalMessageInfo
363
364func (m *ThresholdRule) GetThresholdPercent() float64 {
365	if m != nil {
366		return m.ThresholdPercent
367	}
368	return 0
369}
370
371func (m *ThresholdRule) GetSpendBasis() ThresholdRule_Basis {
372	if m != nil {
373		return m.SpendBasis
374	}
375	return ThresholdRule_BASIS_UNSPECIFIED
376}
377
378// AllUpdatesRule defines notifications that are sent on every update to the
379// billing account's spend, regardless of the thresholds defined using
380// threshold rules.
381type AllUpdatesRule struct {
382	// Required. The name of the Cloud Pub/Sub topic where budget related messages will be
383	// published, in the form `projects/{project_id}/topics/{topic_id}`. Updates
384	// are sent at regular intervals to the topic.
385	// The topic needs to be created before the budget is created; see
386	// https://cloud.google.com/billing/docs/how-to/budgets#manage-notifications
387	// for more details.
388	// Caller is expected to have
389	// `pubsub.topics.setIamPolicy` permission on the topic when it's set for a
390	// budget, otherwise, the API call will fail with PERMISSION_DENIED. See
391	// https://cloud.google.com/pubsub/docs/access-control for more details on
392	// Pub/Sub roles and permissions.
393	PubsubTopic string `protobuf:"bytes,1,opt,name=pubsub_topic,json=pubsubTopic,proto3" json:"pubsub_topic,omitempty"`
394	// Required. The schema version of the notification.
395	// Only "1.0" is accepted. It represents the JSON schema as defined in
396	// https://cloud.google.com/billing/docs/how-to/budgets#notification_format
397	SchemaVersion        string   `protobuf:"bytes,2,opt,name=schema_version,json=schemaVersion,proto3" json:"schema_version,omitempty"`
398	XXX_NoUnkeyedLiteral struct{} `json:"-"`
399	XXX_unrecognized     []byte   `json:"-"`
400	XXX_sizecache        int32    `json:"-"`
401}
402
403func (m *AllUpdatesRule) Reset()         { *m = AllUpdatesRule{} }
404func (m *AllUpdatesRule) String() string { return proto.CompactTextString(m) }
405func (*AllUpdatesRule) ProtoMessage()    {}
406func (*AllUpdatesRule) Descriptor() ([]byte, []int) {
407	return fileDescriptor_1b88e381b47dbc69, []int{4}
408}
409
410func (m *AllUpdatesRule) XXX_Unmarshal(b []byte) error {
411	return xxx_messageInfo_AllUpdatesRule.Unmarshal(m, b)
412}
413func (m *AllUpdatesRule) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
414	return xxx_messageInfo_AllUpdatesRule.Marshal(b, m, deterministic)
415}
416func (m *AllUpdatesRule) XXX_Merge(src proto.Message) {
417	xxx_messageInfo_AllUpdatesRule.Merge(m, src)
418}
419func (m *AllUpdatesRule) XXX_Size() int {
420	return xxx_messageInfo_AllUpdatesRule.Size(m)
421}
422func (m *AllUpdatesRule) XXX_DiscardUnknown() {
423	xxx_messageInfo_AllUpdatesRule.DiscardUnknown(m)
424}
425
426var xxx_messageInfo_AllUpdatesRule proto.InternalMessageInfo
427
428func (m *AllUpdatesRule) GetPubsubTopic() string {
429	if m != nil {
430		return m.PubsubTopic
431	}
432	return ""
433}
434
435func (m *AllUpdatesRule) GetSchemaVersion() string {
436	if m != nil {
437		return m.SchemaVersion
438	}
439	return ""
440}
441
442// A filter for a budget, limiting the scope of the cost to calculate.
443type Filter struct {
444	// Optional. A set of projects of the form `projects/{project}`,
445	// specifying that usage from only this set of projects should be
446	// included in the budget. If omitted, the report will include all usage for
447	// the billing account, regardless of which project the usage occurred on.
448	// Only zero or one project can be specified currently.
449	Projects []string `protobuf:"bytes,1,rep,name=projects,proto3" json:"projects,omitempty"`
450	// Optional. If not set, default behavior is `INCLUDE_ALL_CREDITS`.
451	CreditTypesTreatment Filter_CreditTypesTreatment `protobuf:"varint,4,opt,name=credit_types_treatment,json=creditTypesTreatment,proto3,enum=google.cloud.billing.budgets.v1beta1.Filter_CreditTypesTreatment" json:"credit_types_treatment,omitempty"`
452	// Optional. A set of services of the form `services/{service_id}`,
453	// specifying that usage from only this set of services should be
454	// included in the budget. If omitted, the report will include usage for
455	// all the services.
456	// The service names are available through the Catalog API:
457	// https://cloud.google.com/billing/v1/how-tos/catalog-api.
458	Services             []string `protobuf:"bytes,3,rep,name=services,proto3" json:"services,omitempty"`
459	XXX_NoUnkeyedLiteral struct{} `json:"-"`
460	XXX_unrecognized     []byte   `json:"-"`
461	XXX_sizecache        int32    `json:"-"`
462}
463
464func (m *Filter) Reset()         { *m = Filter{} }
465func (m *Filter) String() string { return proto.CompactTextString(m) }
466func (*Filter) ProtoMessage()    {}
467func (*Filter) Descriptor() ([]byte, []int) {
468	return fileDescriptor_1b88e381b47dbc69, []int{5}
469}
470
471func (m *Filter) XXX_Unmarshal(b []byte) error {
472	return xxx_messageInfo_Filter.Unmarshal(m, b)
473}
474func (m *Filter) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
475	return xxx_messageInfo_Filter.Marshal(b, m, deterministic)
476}
477func (m *Filter) XXX_Merge(src proto.Message) {
478	xxx_messageInfo_Filter.Merge(m, src)
479}
480func (m *Filter) XXX_Size() int {
481	return xxx_messageInfo_Filter.Size(m)
482}
483func (m *Filter) XXX_DiscardUnknown() {
484	xxx_messageInfo_Filter.DiscardUnknown(m)
485}
486
487var xxx_messageInfo_Filter proto.InternalMessageInfo
488
489func (m *Filter) GetProjects() []string {
490	if m != nil {
491		return m.Projects
492	}
493	return nil
494}
495
496func (m *Filter) GetCreditTypesTreatment() Filter_CreditTypesTreatment {
497	if m != nil {
498		return m.CreditTypesTreatment
499	}
500	return Filter_CREDIT_TYPES_TREATMENT_UNSPECIFIED
501}
502
503func (m *Filter) GetServices() []string {
504	if m != nil {
505		return m.Services
506	}
507	return nil
508}
509
510func init() {
511	proto.RegisterEnum("google.cloud.billing.budgets.v1beta1.ThresholdRule_Basis", ThresholdRule_Basis_name, ThresholdRule_Basis_value)
512	proto.RegisterEnum("google.cloud.billing.budgets.v1beta1.Filter_CreditTypesTreatment", Filter_CreditTypesTreatment_name, Filter_CreditTypesTreatment_value)
513	proto.RegisterType((*Budget)(nil), "google.cloud.billing.budgets.v1beta1.Budget")
514	proto.RegisterType((*BudgetAmount)(nil), "google.cloud.billing.budgets.v1beta1.BudgetAmount")
515	proto.RegisterType((*LastPeriodAmount)(nil), "google.cloud.billing.budgets.v1beta1.LastPeriodAmount")
516	proto.RegisterType((*ThresholdRule)(nil), "google.cloud.billing.budgets.v1beta1.ThresholdRule")
517	proto.RegisterType((*AllUpdatesRule)(nil), "google.cloud.billing.budgets.v1beta1.AllUpdatesRule")
518	proto.RegisterType((*Filter)(nil), "google.cloud.billing.budgets.v1beta1.Filter")
519}
520
521func init() {
522	proto.RegisterFile("google/cloud/billing/budgets/v1beta1/budget_model.proto", fileDescriptor_1b88e381b47dbc69)
523}
524
525var fileDescriptor_1b88e381b47dbc69 = []byte{
526	// 811 bytes of a gzipped FileDescriptorProto
527	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x55, 0xd1, 0x6e, 0xe3, 0x44,
528	0x14, 0xad, 0x93, 0x6e, 0x80, 0x49, 0x9b, 0xba, 0x43, 0xa1, 0x61, 0x5f, 0xb6, 0x58, 0xab, 0x55,
529	0x85, 0x90, 0xcd, 0x66, 0x11, 0x08, 0x78, 0x40, 0x4e, 0xe2, 0xb2, 0x11, 0xdd, 0x6c, 0xe4, 0xb8,
530	0x2b, 0x58, 0x09, 0x8d, 0x26, 0xf6, 0xad, 0x3b, 0x68, 0xe2, 0xb1, 0x3c, 0xe3, 0x4a, 0xd5, 0xb2,
531	0x9f, 0xc4, 0x0f, 0xf0, 0x05, 0x7c, 0x06, 0xcf, 0xf0, 0x13, 0xc8, 0x33, 0x93, 0x34, 0x5d, 0x56,
532	0x28, 0xf0, 0x66, 0x9f, 0x73, 0xcf, 0xb9, 0x73, 0xe7, 0x5e, 0x5f, 0xa3, 0x2f, 0x73, 0x21, 0x72,
533	0x0e, 0x41, 0xca, 0x45, 0x9d, 0x05, 0x0b, 0xc6, 0x39, 0x2b, 0xf2, 0x60, 0x51, 0x67, 0x39, 0x28,
534	0x19, 0x5c, 0x3f, 0x5e, 0x80, 0xa2, 0x8f, 0xed, 0x3b, 0x59, 0x8a, 0x0c, 0xb8, 0x5f, 0x56, 0x42,
535	0x09, 0xfc, 0xd0, 0x08, 0x7d, 0x2d, 0xf4, 0xad, 0xd0, 0xb7, 0x42, 0xdf, 0x0a, 0xef, 0x3f, 0xb0,
536	0xf6, 0xb4, 0x64, 0xc1, 0x25, 0x03, 0x9e, 0x91, 0x05, 0x5c, 0xd1, 0x6b, 0x26, 0x2a, 0x63, 0x73,
537	0xff, 0xa3, 0x8d, 0x80, 0x0a, 0xa4, 0xa8, 0xab, 0x14, 0x2c, 0x75, 0x6c, 0x29, 0x75, 0x53, 0x42,
538	0xb0, 0x14, 0x05, 0xdc, 0x18, 0xc2, 0xfb, 0x75, 0x17, 0x75, 0x86, 0x3a, 0x11, 0x3e, 0x46, 0xbb,
539	0x05, 0x5d, 0x42, 0xdf, 0x39, 0x71, 0x4e, 0xdf, 0x1b, 0xb6, 0xff, 0x08, 0xdb, 0xb1, 0x06, 0xf0,
540	0xc7, 0x68, 0x2f, 0x63, 0xb2, 0xe4, 0xf4, 0x86, 0xe8, 0x80, 0x56, 0x13, 0x10, 0x77, 0x2d, 0x36,
541	0x6d, 0x42, 0x5e, 0xa0, 0x7d, 0x5b, 0xd7, 0x25, 0xe3, 0x0a, 0xaa, 0x7e, 0xfb, 0xc4, 0x39, 0xed,
542	0x0e, 0x3e, 0xf5, 0xb7, 0xa9, 0xcc, 0x3f, 0xd3, 0x9a, 0x26, 0xa5, 0x13, 0xef, 0x19, 0xd2, 0x40,
543	0xf8, 0x39, 0xea, 0xd0, 0xa5, 0xa8, 0x0b, 0xd5, 0xdf, 0xd5, 0x86, 0x83, 0xed, 0x0c, 0x4d, 0x45,
544	0xa1, 0x56, 0x36, 0xb6, 0xad, 0xd8, 0xda, 0x60, 0x8a, 0x0e, 0xd4, 0x55, 0x05, 0xf2, 0x4a, 0xf0,
545	0x8c, 0x54, 0x35, 0x07, 0xd9, 0xbf, 0x77, 0xd2, 0x3e, 0xed, 0x0e, 0x9e, 0x6c, 0xe7, 0x9c, 0xac,
546	0xc4, 0x71, 0xcd, 0xc1, 0x9c, 0xb8, 0xa7, 0x36, 0x31, 0x89, 0x53, 0xe4, 0x52, 0xce, 0x49, 0x5d,
547	0x66, 0x54, 0x81, 0xd4, 0x49, 0xfa, 0x1d, 0x7d, 0xfa, 0xcf, 0xb7, 0xcb, 0x11, 0x72, 0x7e, 0x61,
548	0xc4, 0x1b, 0x49, 0xe8, 0x1d, 0xb0, 0x69, 0x16, 0x28, 0x9a, 0xf7, 0xdf, 0x59, 0x35, 0xcb, 0x89,
549	0x35, 0xf0, 0xf5, 0x4f, 0x7f, 0x86, 0x2f, 0xd1, 0x43, 0x6b, 0xbd, 0x72, 0x36, 0x69, 0x69, 0xc9,
550	0xa4, 0x9f, 0x8a, 0x65, 0x60, 0x1b, 0x3e, 0xb0, 0x51, 0x61, 0x9a, 0x36, 0x77, 0x23, 0x83, 0x57,
551	0x16, 0x20, 0xd4, 0x20, 0xaf, 0xd7, 0xc3, 0xfb, 0xca, 0x3c, 0xbc, 0xf6, 0x7e, 0x77, 0xd0, 0xde,
552	0xe6, 0xed, 0xe2, 0x6f, 0x91, 0x2b, 0x4b, 0x48, 0xd9, 0x25, 0x83, 0x8c, 0xd8, 0x5e, 0x39, 0xba,
553	0x5a, 0xbc, 0xaa, 0xb6, 0x19, 0x3a, 0xff, 0x59, 0x33, 0x74, 0x4f, 0x77, 0xe2, 0x83, 0x75, 0xb4,
554	0x35, 0xb8, 0x44, 0x98, 0x53, 0xa9, 0x48, 0x09, 0x15, 0x13, 0x6b, 0x8b, 0x96, 0xb6, 0xf8, 0x62,
555	0xbb, 0x0b, 0x3b, 0xa7, 0x52, 0xcd, 0xb4, 0xdc, 0x78, 0x3e, 0xdd, 0x89, 0x5d, 0xfe, 0x06, 0x36,
556	0x3c, 0x58, 0x8f, 0xa8, 0x49, 0xe1, 0x61, 0xe4, 0xbe, 0x29, 0xf4, 0xfe, 0x72, 0xd0, 0xfe, 0x9d,
557	0x16, 0xe3, 0xcf, 0xd0, 0xe1, 0xed, 0xc0, 0x94, 0x50, 0xa5, 0x60, 0x0b, 0x74, 0xcc, 0x60, 0xb9,
558	0x6b, 0x76, 0x66, 0x48, 0x4c, 0x50, 0x57, 0x96, 0x50, 0x64, 0x64, 0x41, 0x25, 0x93, 0xba, 0x92,
559	0xde, 0xe0, 0xab, 0xff, 0x31, 0x5e, 0xfe, 0xb0, 0x31, 0x30, 0xcd, 0x45, 0xda, 0x52, 0x03, 0xde,
560	0x77, 0xe8, 0x9e, 0x7e, 0xc0, 0x1f, 0xa0, 0xc3, 0x61, 0x38, 0x9f, 0xcc, 0xc9, 0xc5, 0x74, 0x3e,
561	0x8b, 0x46, 0x93, 0xb3, 0x49, 0x34, 0x76, 0x77, 0xf0, 0x21, 0xda, 0x1f, 0x5d, 0xc4, 0x71, 0x34,
562	0x4d, 0xc8, 0x7c, 0x16, 0x4d, 0xc7, 0xae, 0x83, 0x8f, 0x90, 0x7b, 0xf6, 0x3c, 0x8e, 0x46, 0xe1,
563	0x3c, 0x89, 0xc6, 0x16, 0x6d, 0x79, 0x19, 0xea, 0xdd, 0x9d, 0x35, 0xfc, 0x08, 0xed, 0x95, 0xf5,
564	0x42, 0xd6, 0x0b, 0xa2, 0x44, 0xc9, 0xd2, 0xdb, 0x5d, 0xd0, 0x8a, 0xbb, 0x86, 0x48, 0x1a, 0x1c,
565	0x7f, 0x82, 0x7a, 0x32, 0xbd, 0x82, 0x25, 0x25, 0xd7, 0x50, 0x49, 0x26, 0x0a, 0xb3, 0x14, 0x4c,
566	0xe4, 0xbe, 0xa1, 0x5e, 0x18, 0xc6, 0xfb, 0xad, 0x85, 0x3a, 0xf6, 0x73, 0x7e, 0x80, 0xde, 0x2d,
567	0x2b, 0xf1, 0x33, 0xa4, 0x4a, 0xf6, 0x9d, 0x93, 0xf6, 0x6a, 0x72, 0xd7, 0x20, 0xfe, 0x05, 0x7d,
568	0x98, 0x56, 0x90, 0x31, 0x45, 0x9a, 0xa1, 0x91, 0x44, 0x55, 0x40, 0xd5, 0x12, 0xec, 0xf7, 0xdf,
569	0x1b, 0x84, 0xff, 0x65, 0xa1, 0xf8, 0x23, 0x6d, 0x95, 0x34, 0x4e, 0xc9, 0xca, 0xc8, 0x64, 0x3c,
570	0x4a, 0xdf, 0x42, 0x35, 0xc7, 0x93, 0x50, 0x5d, 0xb3, 0x14, 0x64, 0xbf, 0xbd, 0x71, 0xbc, 0x15,
571	0xe8, 0x95, 0xe8, 0xe8, 0x6d, 0x9e, 0xf8, 0x11, 0xf2, 0x46, 0x71, 0x34, 0x9e, 0x24, 0x24, 0xf9,
572	0x71, 0x16, 0xcd, 0x49, 0x12, 0x47, 0x61, 0xf2, 0xac, 0x69, 0xc0, 0xdd, 0xce, 0x1c, 0xa3, 0xf7,
573	0x27, 0xd3, 0xd1, 0xf9, 0xc5, 0x38, 0x22, 0xe1, 0xf9, 0x39, 0x31, 0x9a, 0xb9, 0xeb, 0x34, 0x44,
574	0xf4, 0xc3, 0x3f, 0x89, 0xd6, 0xf0, 0x06, 0x9d, 0xa6, 0x62, 0xb9, 0x55, 0xd5, 0x33, 0xe7, 0xe5,
575	0xf7, 0x36, 0x2e, 0x17, 0x9c, 0x16, 0xb9, 0x2f, 0xaa, 0x3c, 0xc8, 0xa1, 0xd0, 0x9b, 0x3e, 0xb8,
576	0xdd, 0x01, 0xff, 0xfe, 0x83, 0xfa, 0xc6, 0xbe, 0x2f, 0x3a, 0x5a, 0xf7, 0xe4, 0xef, 0x00, 0x00,
577	0x00, 0xff, 0xff, 0x43, 0x42, 0x54, 0x09, 0xd7, 0x06, 0x00, 0x00,
578}
579