You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: conf.go
    path of file: ./repos/cerbos/internal/audit
    
    the code of the file until where you have to start completion: // Copyright 2021-2024 Zenauth Ltd.
// SPDX-License-Identifier: Apache-2.0

package audit

import (
	"fmt"

	"gopkg.in/yaml.v3"

	"github.com/cerbos/cerbos/internal/config"
)

const (
	ConfKey = "audit"
)

// Conf is optional configuration for Audit.
type Conf struct {
	confHolder
}

type confHolder struct {
	// Backend states which backend to use for Audits.
	Backend string `yaml:"backend" conf:",example=local"`
	// IncludeMetadataKeys defines which gRPC request metadata keys should be included in the audit logs.
	IncludeMetadataKeys []string `yaml:"includeMetadataKeys" conf:",example=['content-type']"`
	// ExcludeMetadataKeys defines which gRPC request metadata keys should be excluded from 
    
func (c *Conf) UnmarshalYAML(unmarshal func(any) error) error {
	// This is a workaround to circumvent strict config parsing.
	// Consider the following:
	//
	// audit:
	//   enabled: true
	//   backend: local
	//   local:
	//     storageDirectory: /var/cerbos
	//
	// Because the config for the "local" backend is nested under the "audit" key, we will
	// need to have "local" defined as a field in the Conf struct when strict parsing is on.
	// However, backends are self-contained plugins and it is not practical to add a new field
	// definition to the audit config struct for each plugin we introduce.
	// This hack is slightly inefficient because it marshals and unmarshals YAML twice. It is an
	// acceptable sacrifice to make because config is only read once on startup.

	var confMap map[string]any
	if err := unmarshal(&confMap); err != nil {
		return fmt.Errorf("failed to unmarshal audit config: %w", err)
	}

	yamlBytes, err := yaml.Marshal(confMap)
	if err != nil {
		return fmt.Errorf("failed to marshal audit config [%v]: %w", confMap, err)
	}

	c.confHolder = confHolder{AccessLogsEnabled: true, DecisionLogsEnabled: true}
	return yaml.Unmarshal(yamlBytes, &c.confHolder)
}